[med-svn] [visionegg] 08/10: New upstream version 1.2.1

Andreas Tille tille at debian.org
Fri Oct 6 20:51:23 UTC 2017


This is an automated email from the git hooks/post-receive script.

tille pushed a commit to branch master
in repository visionegg.

commit b534835e1bc1257455b3a97cdcd3c7655055787b
Author: Andreas Tille <tille at debian.org>
Date:   Fri Oct 6 22:40:55 2017 +0200

    New upstream version 1.2.1
---
 .gitignore                                         |    9 +
 CHANGELOG.txt                                      |  372 ++
 LICENSE.txt                                        |  509 +++
 MANIFEST.in                                        |   33 +
 PKG-INFO                                           |   47 +
 README-BINARY-DEMOS.txt                            |   85 +
 README-DEMOS.txt                                   |   67 +
 README.txt                                         |   46 +
 VisionEgg/Configuration.py                         |  253 ++
 VisionEgg/Core.py                                  | 1795 ++++++++++
 VisionEgg/Daq.py                                   |  123 +
 VisionEgg/DaqKeyboard.py                           |   85 +
 VisionEgg/DaqLPT.py                                |  209 ++
 VisionEgg/Deprecated.py                            |  113 +
 VisionEgg/Dots.py                                  |  252 ++
 VisionEgg/FlowControl.py                           | 1324 +++++++
 VisionEgg/GL.py                                    |   57 +
 VisionEgg/GLTrace.py                               |  141 +
 VisionEgg/GUI.py                                   |  753 ++++
 VisionEgg/Gratings.py                              |  712 ++++
 VisionEgg/MoreStimuli.py                           |  522 +++
 VisionEgg/ParameterTypes.py                        |  415 +++
 VisionEgg/PlatformDependent.py                     |  253 ++
 VisionEgg/PyroApps/AST_ext.py                      |  208 ++
 VisionEgg/PyroApps/ColorCalGUI.py                  |   87 +
 VisionEgg/PyroApps/ColorCalServer.py               |   89 +
 VisionEgg/PyroApps/DropinGUI.py                    |  133 +
 VisionEgg/PyroApps/DropinServer.py                 |   58 +
 VisionEgg/PyroApps/EPhysGUI.py                     | 1804 ++++++++++
 VisionEgg/PyroApps/EPhysGUIUtils.py                |  226 ++
 VisionEgg/PyroApps/EPhysServer.py                  |  312 ++
 VisionEgg/PyroApps/FlatGratingGUI.py               |  168 +
 VisionEgg/PyroApps/FlatGratingServer.py            |  127 +
 VisionEgg/PyroApps/GridGUI.py                      |   56 +
 VisionEgg/PyroApps/GridServer.py                   |  110 +
 VisionEgg/PyroApps/MouseTargetGUI.py               |   91 +
 VisionEgg/PyroApps/MouseTargetServer.py            |  249 ++
 VisionEgg/PyroApps/ScreenPositionGUI.py            |  561 +++
 VisionEgg/PyroApps/ScreenPositionServer.py         |  109 +
 VisionEgg/PyroApps/SphereGratingGUI.py             |  170 +
 VisionEgg/PyroApps/SphereGratingServer.py          |  153 +
 VisionEgg/PyroApps/SpinningDrumGUI.py              |  116 +
 VisionEgg/PyroApps/SpinningDrumServer.py           |  143 +
 VisionEgg/PyroApps/TargetGUI.py                    |  212 ++
 VisionEgg/PyroApps/TargetServer.py                 |  144 +
 VisionEgg/PyroApps/VarTypes.py                     |   32 +
 VisionEgg/PyroApps/__init__.py                     |   16 +
 VisionEgg/PyroClient.py                            |   41 +
 VisionEgg/PyroHelpers.py                           |  166 +
 VisionEgg/QuickTime.py                             |  102 +
 VisionEgg/ResponseControl.py                       |  168 +
 VisionEgg/SphereMap.py                             | 1219 +++++++
 VisionEgg/TCPController.py                         |  728 ++++
 VisionEgg/Text.py                                  |  351 ++
 VisionEgg/Textures.py                              | 2037 +++++++++++
 VisionEgg/ThreeDeeMath.py                          |   97 +
 VisionEgg/VisionEgg.cfg                            |  116 +
 VisionEgg/WrappedText.py                           |  152 +
 VisionEgg/__init__.py                              |  513 +++
 VisionEgg/_darwin_sync_swap.m                      |   47 +
 VisionEgg/_draw_in_c.c                             |   94 +
 VisionEgg/_lib3ds.c                                |  560 +++
 VisionEgg/_raw_lpt_linux.c                         |  199 ++
 VisionEgg/_raw_plp_irix.c                          |   75 +
 VisionEgg/_vegl.c                                  |  338 ++
 VisionEgg/_vegl.pyx                                |   44 +
 VisionEgg/darwin_getrefresh.m                      |   54 +
 VisionEgg/darwin_getrefresh.py                     |   41 +
 VisionEgg/darwin_getrefresh_wrap.c                 | 1743 ++++++++++
 VisionEgg/darwin_maxpriority.c                     |  523 +++
 VisionEgg/darwin_maxpriority.pyx                   |  130 +
 VisionEgg/darwinsys.pxd                            |   15 +
 VisionEgg/darwinsys_compat.h                       |   11 +
 VisionEgg/data/VisionEggTitle.xcf                  |  Bin 0 -> 33046 bytes
 VisionEgg/data/az_el.png                           |  Bin 0 -> 32037 bytes
 VisionEgg/data/monitor.xcf                         |  Bin 0 -> 590840 bytes
 VisionEgg/data/panorama.jpg                        |  Bin 0 -> 197614 bytes
 VisionEgg/data/spiral.png                          |  Bin 0 -> 22762 bytes
 VisionEgg/data/visionegg.bmp                       |  Bin 0 -> 91854 bytes
 VisionEgg/data/visionegg.tif                       |  Bin 0 -> 142004 bytes
 VisionEgg/data/water.mov                           |  Bin 0 -> 166669 bytes
 VisionEgg/gl_qt.c                                  |  248 ++
 VisionEgg/gl_qt.h                                  |   39 +
 VisionEgg/gl_qt.py                                 |   45 +
 VisionEgg/gl_qt_wrap.c                             | 2003 +++++++++++
 VisionEgg/movieconvert.c                           |   23 +
 VisionEgg/movieconvert.h                           |    9 +
 VisionEgg/posix_maxpriority.c                      |   23 +
 VisionEgg/posix_maxpriority.py                     |   47 +
 VisionEgg/posix_maxpriority_wrap.c                 | 1917 +++++++++++
 VisionEgg/qtlowlevel.py                            |  191 ++
 VisionEgg/qtmovie.py                               |   93 +
 VisionEgg/test_Core.py                             |    8 +
 VisionEgg/vegl.h                                   |    9 +
 VisionEgg/win32_getrefresh.c                       |   16 +
 VisionEgg/win32_getrefresh.py                      |   41 +
 VisionEgg/win32_getrefresh_wrap.c                  | 1730 ++++++++++
 VisionEgg/win32_load_driver.c                      |   33 +
 VisionEgg/win32_load_driver.h                      |    3 +
 VisionEgg/win32_maxpriority.c                      |   10 +
 VisionEgg/win32_maxpriority.py                     |   54 +
 VisionEgg/win32_maxpriority_wrap.c                 | 1903 +++++++++++
 VisionEgg/win32_vretrace.c                         |  625 ++++
 VisionEgg/win32_vretrace.pyx                       |  102 +
 VisionEgg/win32_vretrace_orig.h                    |   72 +
 bootstrap.py                                       |   77 +
 build-demo-dir.py                                  |   13 +
 build-win-exe-demos.py                             |   75 +
 buildout.cfg                                       |   17 +
 check-config.py                                    |  332 ++
 debian/changelog                                   |   15 -
 debian/compat                                      |    1 -
 debian/control                                     |   30 -
 debian/copyright                                   |   85 -
 debian/patches/condidtioally_impot_pil.patch       |   24 -
 debian/patches/series                              |    1 -
 debian/python-visionegg.install                    |    1 -
 debian/rules                                       |   19 -
 debian/source/format                               |    1 -
 debian/upstream/metadata                           |    9 -
 debian/watch                                       |    2 -
 demo/GUI/drumDemoGUI.py                            |  143 +
 demo/Pyro/gratingPyroGUI.py                        |  190 ++
 demo/Pyro/gratingPyroServer.py                     |   58 +
 demo/Pyro/metaPyroGUI.py                           |  231 ++
 demo/Pyro/metaPyroServer.py                        |   97 +
 demo/Pyro/simpleClient.py                          |   30 +
 demo/Pyro/simpleServer.py                          |   40 +
 demo/README.txt                                    |   81 +
 demo/alpha_texture.py                              |   73 +
 demo/az_el_grid.py                                 |   39 +
 demo/color_grating.py                              |   66 +
 demo/convert3d_to_2d.py                            |   94 +
 demo/daq/simple_lpt_out.py                         |   16 +
 demo/daq/trigger_in.py                             |   38 +
 demo/daq/trigger_out.py                            |   31 +
 demo/demo_arrow.py                                 |   54 +
 demo/demo_fixationpoint.py                         |   53 +
 demo/demo_keyboardresponse.py                      |   83 +
 demo/demo_keyboardtrigger.py                       |   53 +
 demo/displayText.py                                |   24 +
 demo/displayUnicode.py                             |   71 +
 demo/dots.py                                       |   47 +
 demo/dots_pyro_client.py                           |   37 +
 demo/dots_pyro_server.py                           |   95 +
 demo/dots_simple_loop.py                           |   52 +
 demo/ephys_gui.pyw                                 |   23 +
 demo/ephys_server.py                               |   14 +
 demo/flames_pygame.py                              |  157 +
 demo/flames_visionegg.py                           |   90 +
 demo/framecount.py                                 |   31 +
 demo/gabor.py                                      |   48 +
 demo/gamma.py                                      |   75 +
 demo/grating.py                                    |   43 +
 demo/gratings_multi.py                             |   75 +
 demo/image_sequence_fast.py                        |   62 +
 demo/image_sequence_slow.py                        |   58 +
 demo/makeMovie.py                                  |   83 +
 demo/makeMovie2.py                                 |   48 +
 demo/mouseTarget.py                                |  161 +
 demo/mouseTarget_user_loop.py                      |  144 +
 demo/mouse_gabor_2d.py                             |  137 +
 demo/mouse_gabor_perspective.py                    |  239 ++
 demo/movingPOV.py                                  |   58 +
 demo/mpeg.py                                       |  106 +
 demo/multi_stim.py                                 |  346 ++
 demo/plaid.py                                      |   61 +
 demo/project_linear_grating_on_cylinder.py         |  122 +
 demo/put_pixels.py                                 |   43 +
 demo/pygame_texture.py                             |   33 +
 demo/quicktime.py                                  |   69 +
 demo/sphereMap.py                                  |   39 +
 demo/spiral.py                                     |   58 +
 demo/target.py                                     |   67 +
 demo/targetBackground.py                           |   95 +
 demo/targetBackground2D.py                         |   96 +
 demo/tcp/gratingGUI.py                             |  787 +++++
 demo/tcp/gratingTCP.py                             |  138 +
 demo/texture.py                                    |   27 +
 demo/texture3D.py                                  |   42 +
 demo/texture3D_alpha.py                            |   49 +
 demo/textureDrum.py                                |   35 +
 demo/texture_as_numpy_array.py                     |   33 +
 demo/visual_jitter.py                              |  102 +
 demo/wrapped_text.py                               |   36 +
 doc/BUILD.sh                                       |   23 +
 doc/BUILD.txt                                      |   32 +
 doc/index.html                                     |   18 +
 doc/reference/epydoc                               |    8 +
 doc/reference/html/VisionEgg-module.html           |  533 +++
 doc/reference/html/VisionEgg-pysrc.html            |  964 ++++++
 .../html/VisionEgg.ClassWithParameters-class.html  |  395 +++
 .../html/VisionEgg.Configuration-module.html       |  278 ++
 .../html/VisionEgg.Configuration-pysrc.html        |  372 ++
 .../html/VisionEgg.Configuration.Config-class.html |  144 +
 doc/reference/html/VisionEgg.Core-module.html      |  455 +++
 doc/reference/html/VisionEgg.Core-pysrc.html       | 3466 +++++++++++++++++++
 .../html/VisionEgg.Core.FixationSpot-class.html    |  364 ++
 .../html/VisionEgg.Core.FrameTimer-class.html      |  263 ++
 .../html/VisionEgg.Core.ModelView-class.html       |  277 ++
 ...isionEgg.Core.OrthographicProjection-class.html |  297 ++
 ...g.Core.OrthographicProjectionNoZClip-class.html |  292 ++
 ...VisionEgg.Core.PerspectiveProjection-class.html |  287 ++
 .../html/VisionEgg.Core.Projection-class.html      |  277 ++
 .../VisionEgg.Core.ProjectionBaseClass-class.html  |  611 ++++
 .../html/VisionEgg.Core.Screen-class.html          |  827 +++++
 ...Egg.Core.SimplePerspectiveProjection-class.html |  283 ++
 .../html/VisionEgg.Core.Stimulus-class.html        |  367 ++
 .../html/VisionEgg.Core.Viewport-class.html        |  463 +++
 doc/reference/html/VisionEgg.Daq-module.html       |  229 ++
 doc/reference/html/VisionEgg.Daq-pysrc.html        |  822 +++++
 doc/reference/html/VisionEgg.Daq.Analog-class.html |  229 ++
 .../html/VisionEgg.Daq.Buffered-class.html         |  231 ++
 .../html/VisionEgg.Daq.Channel-class.html          |  298 ++
 .../VisionEgg.Daq.ChannelParameters-class.html     |  189 +
 .../html/VisionEgg.Daq.DaqMode-class.html          |  246 ++
 doc/reference/html/VisionEgg.Daq.Device-class.html |  156 +
 .../html/VisionEgg.Daq.Digital-class.html          |  197 ++
 .../html/VisionEgg.Daq.Functionality-class.html    |  246 ++
 .../html/VisionEgg.Daq.Immediate-class.html        |  195 ++
 doc/reference/html/VisionEgg.Daq.Input-class.html  |  211 ++
 doc/reference/html/VisionEgg.Daq.Output-class.html |  212 ++
 .../html/VisionEgg.Daq.SignalType-class.html       |  280 ++
 .../html/VisionEgg.Daq.Trigger-class.html          |  189 +
 .../html/VisionEgg.DaqKeyboard-module.html         |  161 +
 .../html/VisionEgg.DaqKeyboard-pysrc.html          |  347 ++
 .../VisionEgg.DaqKeyboard.KeyboardInput-class.html |  173 +
 ...Keyboard.KeyboardTriggerInController-class.html |  351 ++
 doc/reference/html/VisionEgg.DaqLPT-module.html    |  208 ++
 doc/reference/html/VisionEgg.DaqLPT-pysrc.html     |  852 +++++
 .../html/VisionEgg.DaqLPT.LPTChannel-class.html    |  255 ++
 .../html/VisionEgg.DaqLPT.LPTDevice-class.html     |  230 ++
 .../html/VisionEgg.DaqLPT.LPTInput-class.html      |  263 ++
 .../html/VisionEgg.DaqLPT.LPTOutput-class.html     |  268 ++
 ...ionEgg.DaqLPT.LPTTriggerInController-class.html |  348 ++
 ...onEgg.DaqLPT.LPTTriggerOutController-class.html |  357 ++
 .../html/VisionEgg.Deprecated-module.html          |  135 +
 doc/reference/html/VisionEgg.Deprecated-pysrc.html |  233 ++
 .../html/VisionEgg.Deprecated.Message-class.html   |  254 ++
 doc/reference/html/VisionEgg.Dots-module.html      |  199 ++
 doc/reference/html/VisionEgg.Dots-pysrc.html       |  537 +++
 .../html/VisionEgg.Dots.DotArea2D-class.html       |  413 +++
 .../html/VisionEgg.FlowControl-module.html         |  269 ++
 .../html/VisionEgg.FlowControl-pysrc.html          | 2510 ++++++++++++++
 ...onEgg.FlowControl.ConstantController-class.html |  415 +++
 .../VisionEgg.FlowControl.Controller-class.html    |  595 ++++
 ...g.FlowControl.EncapsulatedController-class.html |  371 ++
 ...Egg.FlowControl.EvalStringController-class.html |  433 +++
 ...Egg.FlowControl.ExecStringController-class.html |  438 +++
 ...onEgg.FlowControl.FunctionController-class.html |  368 ++
 .../VisionEgg.FlowControl.Presentation-class.html  |  635 ++++
 doc/reference/html/VisionEgg.GL-module.html        |  166 +
 doc/reference/html/VisionEgg.GL-pysrc.html         |  252 ++
 doc/reference/html/VisionEgg.GLTrace-module.html   |  286 ++
 doc/reference/html/VisionEgg.GLTrace-pysrc.html    |  260 ++
 .../html/VisionEgg.GLTrace.Wrapper-class.html      |  157 +
 doc/reference/html/VisionEgg.GUI-module.html       |  230 ++
 doc/reference/html/VisionEgg.GUI-pysrc.html        | 1992 +++++++++++
 .../html/VisionEgg.GUI.AppWindow-class.html        |  169 +
 .../VisionEgg.GUI.GetKeypressDialog-class.html     |  231 ++
 ...nEgg.GUI.GraphicsConfigurationWindow-class.html |  236 ++
 .../html/VisionEgg.GUI.InfoFrame-class.html        |  163 +
 .../html/VisionEgg.GUI.ProgressBar-class.html      |  194 ++
 .../html/VisionEgg.GUI.ToplevelDialog-class.html   |  167 +
 doc/reference/html/VisionEgg.Gratings-module.html  |  172 +
 doc/reference/html/VisionEgg.Gratings-pysrc.html   | 1191 +++++++
 ...isionEgg.Gratings.AlphaGratingCommon-class.html |  259 ++
 ...nEgg.Gratings.LuminanceGratingCommon-class.html |  257 ++
 ...Egg.Gratings.NumSamplesTooLargeError-class.html |  180 +
 .../VisionEgg.Gratings.SinGrating2D-class.html     |  422 +++
 .../VisionEgg.Gratings.SinGrating3D-class.html     |  425 +++
 .../html/VisionEgg.MoreStimuli-module.html         |  159 +
 .../html/VisionEgg.MoreStimuli-pysrc.html          | 1256 +++++++
 .../html/VisionEgg.MoreStimuli.Arrow-class.html    |  366 ++
 .../VisionEgg.MoreStimuli.FilledCircle-class.html  |  371 ++
 .../VisionEgg.MoreStimuli.Rectangle3D-class.html   |  366 ++
 .../html/VisionEgg.MoreStimuli.Target2D-class.html |  370 ++
 .../html/VisionEgg.ParameterDefinition-class.html  |  221 ++
 .../html/VisionEgg.ParameterTypes-module.html      |  421 +++
 .../html/VisionEgg.ParameterTypes-pysrc.html       | 1033 ++++++
 .../VisionEgg.ParameterTypes.AnyClass-class.html   |  243 ++
 .../VisionEgg.ParameterTypes.AnyClassMC-class.html |  238 ++
 .../html/VisionEgg.ParameterTypes.AnyOf-class.html |  317 ++
 .../VisionEgg.ParameterTypes.Boolean-class.html    |  238 ++
 .../VisionEgg.ParameterTypes.BooleanMC-class.html  |  238 ++
 .../VisionEgg.ParameterTypes.Callable-class.html   |  238 ++
 .../VisionEgg.ParameterTypes.CallableMC-class.html |  238 ++
 .../VisionEgg.ParameterTypes.Instance-class.html   |  306 ++
 .../VisionEgg.ParameterTypes.Integer-class.html    |  238 ++
 .../VisionEgg.ParameterTypes.IntegerMC-class.html  |  238 ++
 .../VisionEgg.ParameterTypes.NoneMC-class.html     |  238 ++
 .../VisionEgg.ParameterTypes.NoneType-class.html   |  238 ++
 ...nEgg.ParameterTypes.ParameterTypeDef-class.html |  191 ++
 .../html/VisionEgg.ParameterTypes.Real-class.html  |  238 ++
 .../VisionEgg.ParameterTypes.RealMC-class.html     |  238 ++
 .../VisionEgg.ParameterTypes.Sequence-class.html   |  306 ++
 .../VisionEgg.ParameterTypes.Sequence2-class.html  |  259 ++
 .../VisionEgg.ParameterTypes.Sequence3-class.html  |  259 ++
 .../VisionEgg.ParameterTypes.Sequence4-class.html  |  259 ++
 ...VisionEgg.ParameterTypes.Sequence4x4-class.html |  261 ++
 .../VisionEgg.ParameterTypes.String-class.html     |  238 ++
 .../VisionEgg.ParameterTypes.StringMC-class.html   |  238 ++
 .../VisionEgg.ParameterTypes.SubClass-class.html   |  306 ++
 .../VisionEgg.ParameterTypes.Unicode-class.html    |  238 ++
 .../VisionEgg.ParameterTypes.UnicodeMC-class.html  |  238 ++
 ...onEgg.ParameterTypes.UnsignedInteger-class.html |  240 ++
 ...Egg.ParameterTypes.UnsignedIntegerMC-class.html |  239 ++
 doc/reference/html/VisionEgg.Parameters-class.html |  119 +
 .../html/VisionEgg.PlatformDependent-module.html   |  292 ++
 .../html/VisionEgg.PlatformDependent-pysrc.html    |  373 ++
 doc/reference/html/VisionEgg.PyroApps-module.html  |  155 +
 doc/reference/html/VisionEgg.PyroApps-pysrc.html   |  135 +
 .../html/VisionEgg.PyroApps.AST_ext-module.html    |  234 ++
 .../html/VisionEgg.PyroApps.AST_ext-pysrc.html     |  327 ++
 ...sionEgg.PyroApps.AST_ext.AST_Visitor-class.html |  159 +
 .../VisionEgg.PyroApps.ColorCalGUI-module.html     |  196 ++
 .../html/VisionEgg.PyroApps.ColorCalGUI-pysrc.html |  436 +++
 ...pps.ColorCalGUI.ColorCalControlFrame-class.html |  597 ++++
 ...s.ColorCalGUI.ColorCalMetaParameters-class.html |  139 +
 .../VisionEgg.PyroApps.ColorCalServer-module.html  |  221 ++
 .../VisionEgg.PyroApps.ColorCalServer-pysrc.html   |  443 +++
 ...olorCalServer.ColorCalMetaController-class.html |  284 ++
 .../html/VisionEgg.PyroApps.DropinGUI-module.html  |  161 +
 .../html/VisionEgg.PyroApps.DropinGUI-pysrc.html   |  414 +++
 ...yroApps.DropinGUI.DropinControlFrame-class.html |  615 ++++
 ...oApps.DropinGUI.DropinMetaParameters-class.html |  139 +
 .../VisionEgg.PyroApps.DropinServer-module.html    |  186 +
 .../VisionEgg.PyroApps.DropinServer-pysrc.html     |  316 ++
 ...ps.DropinServer.DropinMetaController-class.html |  284 ++
 .../html/VisionEgg.PyroApps.EPhysGUI-module.html   |  287 ++
 .../html/VisionEgg.PyroApps.EPhysGUI-pysrc.html    | 3604 ++++++++++++++++++++
 ...isionEgg.PyroApps.EPhysGUI.AppWindow-class.html |  842 +++++
 ...isionEgg.PyroApps.EPhysGUI.BarButton-class.html |  403 +++
 ...yroApps.EPhysGUI.ContainedObjectBase-class.html |  192 ++
 ...sionEgg.PyroApps.EPhysGUI.GammaFrame-class.html |  475 +++
 ...oApps.EPhysGUI.ImageSequenceLauncher-class.html |  455 +++
 .../VisionEgg.PyroApps.EPhysGUI.Loop-class.html    |  347 ++
 ...yroApps.EPhysGUI.LoopContainedObject-class.html |  263 ++
 ...gg.PyroApps.EPhysGUI.LoopParamDialog-class.html |  584 ++++
 ...gg.PyroApps.EPhysGUI.ScrollListFrame-class.html |  663 ++++
 .../VisionEgg.PyroApps.EPhysGUIUtils-module.html   |  166 +
 .../VisionEgg.PyroApps.EPhysGUIUtils-pysrc.html    |  701 ++++
 ...s.EPhysGUIUtils.StimulusControlFrame-class.html |  702 ++++
 .../VisionEgg.PyroApps.EPhysServer-module.html     |  235 ++
 .../html/VisionEgg.PyroApps.EPhysServer-pysrc.html |  721 ++++
 ...Egg.PyroApps.EPhysServer.EPhysServer-class.html |  537 +++
 .../VisionEgg.PyroApps.FlatGratingGUI-module.html  |  196 ++
 .../VisionEgg.PyroApps.FlatGratingGUI-pysrc.html   |  519 +++
 ...atGratingGUI.FlatGratingControlFrame-class.html |  605 ++++
 ...GratingGUI.FlatGratingMetaParameters-class.html |  139 +
 ...isionEgg.PyroApps.FlatGratingServer-module.html |  221 ++
 ...VisionEgg.PyroApps.FlatGratingServer-pysrc.html |  490 +++
 ....FlatGratingExperimentMetaController-class.html |  335 ++
 .../html/VisionEgg.PyroApps.GridGUI-module.html    |  198 ++
 .../html/VisionEgg.PyroApps.GridGUI-pysrc.html     |  407 +++
 ...gg.PyroApps.GridGUI.GridControlFrame-class.html |  604 ++++
 ....PyroApps.GridGUI.GridMetaParameters-class.html |  139 +
 .../html/VisionEgg.PyroApps.GridServer-module.html |  223 ++
 .../html/VisionEgg.PyroApps.GridServer-pysrc.html  |  459 +++
 ...roApps.GridServer.GridMetaController-class.html |  284 ++
 .../VisionEgg.PyroApps.MouseTargetGUI-module.html  |  196 ++
 .../VisionEgg.PyroApps.MouseTargetGUI-pysrc.html   |  460 +++
 ...useTargetGUI.MouseTargetControlFrame-class.html |  605 ++++
 ...eTargetGUI.MouseTargetMetaParameters-class.html |  139 +
 ...isionEgg.PyroApps.MouseTargetServer-module.html |  416 +++
 ...VisionEgg.PyroApps.MouseTargetServer-pysrc.html | 1071 ++++++
 ...TargetServer.MousePositionController-class.html |  303 ++
 ....MouseTargetExperimentMetaController-class.html |  300 ++
 ...etServer.TargetOrientationController-class.html |  301 ++
 ...argetServer.TargetPositionController-class.html |  303 ++
 ...isionEgg.PyroApps.ScreenPositionGUI-module.html |  182 +
 ...VisionEgg.PyroApps.ScreenPositionGUI-pysrc.html | 1368 ++++++++
 ...Apps.ScreenPositionGUI.CallbackEntry-class.html |  436 +++
 ...sitionGUI.ScreenPositionControlFrame-class.html |  918 +++++
 ...PositionGUI.ScreenPositionParameters-class.html |  139 +
 ...onEgg.PyroApps.ScreenPositionServer-module.html |  169 +
 ...ionEgg.PyroApps.ScreenPositionServer-pysrc.html |  444 +++
 ...nServer.ScreenPositionMetaController-class.html |  287 ++
 ...VisionEgg.PyroApps.SphereGratingGUI-module.html |  196 ++
 .../VisionEgg.PyroApps.SphereGratingGUI-pysrc.html |  537 +++
 ...GratingGUI.SphereGratingControlFrame-class.html |  605 ++++
 ...atingGUI.SphereGratingMetaParameters-class.html |  139 +
 ...ionEgg.PyroApps.SphereGratingServer-module.html |  221 ++
 ...sionEgg.PyroApps.SphereGratingServer-pysrc.html |  521 +++
 ...phereGratingExperimentMetaController-class.html |  335 ++
 .../VisionEgg.PyroApps.SpinningDrumGUI-module.html |  198 ++
 .../VisionEgg.PyroApps.SpinningDrumGUI-pysrc.html  |  467 +++
 ...ningDrumGUI.SpinningDrumControlFrame-class.html |  604 ++++
 ...ngDrumGUI.SpinningDrumMetaParameters-class.html |  139 +
 ...sionEgg.PyroApps.SpinningDrumServer-module.html |  223 ++
 ...isionEgg.PyroApps.SpinningDrumServer-pysrc.html |  509 +++
 ...SpinningDrumExperimentMetaController-class.html |  366 ++
 .../html/VisionEgg.PyroApps.TargetGUI-module.html  |  196 ++
 .../html/VisionEgg.PyroApps.TargetGUI-pysrc.html   |  581 ++++
 ...yroApps.TargetGUI.TargetControlFrame-class.html |  605 ++++
 ...oApps.TargetGUI.TargetMetaParameters-class.html |  139 +
 .../VisionEgg.PyroApps.TargetServer-module.html    |  221 ++
 .../VisionEgg.PyroApps.TargetServer-pysrc.html     |  520 +++
 ...erver.TargetExperimentMetaController-class.html |  366 ++
 .../html/VisionEgg.PyroApps.VarTypes-module.html   |  154 +
 .../html/VisionEgg.PyroApps.VarTypes-pysrc.html    |  153 +
 .../html/VisionEgg.PyroClient-module.html          |  165 +
 doc/reference/html/VisionEgg.PyroClient-pysrc.html |  230 ++
 .../VisionEgg.PyroClient.PyroClient-class.html     |  164 +
 .../html/VisionEgg.PyroHelpers-module.html         |  236 ++
 .../html/VisionEgg.PyroHelpers-pysrc.html          | 1736 ++++++++++
 ...g.PyroHelpers.PyroConstantController-class.html |  281 ++
 ...roHelpers.PyroEncapsulatedController-class.html |  287 ++
 ...PyroHelpers.PyroEvalStringController-class.html |  281 ++
 ...PyroHelpers.PyroExecStringController-class.html |  281 ++
 ...Egg.PyroHelpers.PyroListenController-class.html |  351 ++
 ....PyroHelpers.PyroLocalDictController-class.html |  323 ++
 .../VisionEgg.PyroHelpers.PyroServer-class.html    |  266 ++
 doc/reference/html/VisionEgg.QuickTime-module.html |  181 +
 doc/reference/html/VisionEgg.QuickTime-pysrc.html  |  251 ++
 .../VisionEgg.QuickTime.MovieTexture-class.html    |  488 +++
 .../html/VisionEgg.ResponseControl-module.html     |  159 +
 .../html/VisionEgg.ResponseControl-pysrc.html      |  433 +++
 ...seControl.KeyboardResponseController-class.html |  354 ++
 ...g.ResponseControl.ResponseController-class.html |  569 +++
 doc/reference/html/VisionEgg.SphereMap-module.html |  175 +
 doc/reference/html/VisionEgg.SphereMap-pysrc.html  | 2015 +++++++++++
 .../html/VisionEgg.SphereMap.AzElGrid-class.html   |  435 +++
 .../VisionEgg.SphereMap.SphereGrating-class.html   |  393 +++
 .../html/VisionEgg.SphereMap.SphereMap-class.html  |  374 ++
 .../VisionEgg.SphereMap.SphereWindow-class.html    |  385 +++
 .../html/VisionEgg.TCPController-module.html       |  213 ++
 .../html/VisionEgg.TCPController-pysrc.html        | 1610 +++++++++
 ...TCPController.SocketListenController-class.html |  548 +++
 ...isionEgg.TCPController.TCPController-class.html |  314 ++
 .../VisionEgg.TCPController.TCPServer-class.html   |  169 +
 doc/reference/html/VisionEgg.Text-module.html      |  175 +
 doc/reference/html/VisionEgg.Text-pysrc.html       | 1116 ++++++
 .../html/VisionEgg.Text.BitmapText-class.html      |  345 ++
 .../html/VisionEgg.Text.GlutTextBase-class.html    |  312 ++
 .../html/VisionEgg.Text.StrokeText-class.html      |  363 ++
 doc/reference/html/VisionEgg.Text.Text-class.html  |  415 +++
 doc/reference/html/VisionEgg.Textures-module.html  |  286 ++
 doc/reference/html/VisionEgg.Textures-pysrc.html   | 2973 ++++++++++++++++
 .../VisionEgg.Textures.FixationCross-class.html    |  377 ++
 .../html/VisionEgg.Textures.Mask2D-class.html      |  350 ++
 .../VisionEgg.Textures.SpinningDrum-class.html     |  415 +++
 .../html/VisionEgg.Textures.Texture-class.html     |  461 +++
 .../VisionEgg.Textures.TextureFromFile-class.html  |  237 ++
 .../VisionEgg.Textures.TextureObject-class.html    |  623 ++++
 .../VisionEgg.Textures.TextureStimulus-class.html  |  357 ++
 ...VisionEgg.Textures.TextureStimulus3D-class.html |  347 ++
 ...gg.Textures.TextureStimulusBaseClass-class.html |  362 ++
 ...ionEgg.Textures.TextureTooLargeError-class.html |  180 +
 .../html/VisionEgg.ThreeDeeMath-module.html        |  176 +
 .../html/VisionEgg.ThreeDeeMath-pysrc.html         |  216 ++
 ...sionEgg.ThreeDeeMath.TransformMatrix-class.html |  271 ++
 .../html/VisionEgg.WrappedText-module.html         |  161 +
 .../html/VisionEgg.WrappedText-pysrc.html          |  471 +++
 .../VisionEgg.WrappedText.WrappedText-class.html   |  368 ++
 .../html/VisionEgg.darwin_getrefresh-module.html   |  128 +
 .../html/VisionEgg.darwin_getrefresh-pysrc.html    |  169 +
 doc/reference/html/VisionEgg.gl_qt-module.html     |  142 +
 doc/reference/html/VisionEgg.gl_qt-pysrc.html      |  171 +
 .../html/VisionEgg.posix_maxpriority-module.html   |  202 ++
 .../html/VisionEgg.posix_maxpriority-pysrc.html    |  173 +
 .../html/VisionEgg.qtlowlevel-module.html          | 1071 ++++++
 doc/reference/html/VisionEgg.qtlowlevel-pysrc.html |  340 ++
 ...qtlowlevel.QTNewMoviePropertyElement-class.html |  168 +
 .../html/VisionEgg.qtlowlevel.Rect-class.html      |  166 +
 ...VisionEgg.qtlowlevel.qtlowlevelError-class.html |  180 +
 doc/reference/html/VisionEgg.qtmovie-module.html   |  168 +
 doc/reference/html/VisionEgg.qtmovie-pysrc.html    |  224 ++
 .../html/VisionEgg.qtmovie.Movie-class.html        |  242 ++
 .../html/VisionEgg.qtmovie.Rect-class.html         |  142 +
 .../html/VisionEgg.win32_getrefresh-module.html    |  128 +
 .../html/VisionEgg.win32_getrefresh-pysrc.html     |  169 +
 .../html/VisionEgg.win32_maxpriority-module.html   |  384 +++
 .../html/VisionEgg.win32_maxpriority-pysrc.html    |  180 +
 doc/reference/html/api-objects.txt                 | 2457 +++++++++++++
 doc/reference/html/class-tree.html                 |  265 ++
 doc/reference/html/crarr.png                       |  Bin 0 -> 340 bytes
 doc/reference/html/epydoc.css                      |  312 ++
 doc/reference/html/epydoc.js                       |  280 ++
 doc/reference/html/float-class.html                | 1087 ++++++
 doc/reference/html/frames.html                     |   17 +
 doc/reference/html/help.html                       |  276 ++
 doc/reference/html/identifier-index.html           | 3526 +++++++++++++++++++
 doc/reference/html/index.html                      |   17 +
 doc/reference/html/int-class.html                  | 1148 +++++++
 doc/reference/html/module-tree.html                |  178 +
 doc/reference/html/redirect.html                   |   38 +
 doc/reference/html/toc-VisionEgg-module.html       |   50 +
 .../html/toc-VisionEgg.Configuration-module.html   |   35 +
 doc/reference/html/toc-VisionEgg.Core-module.html  |   59 +
 doc/reference/html/toc-VisionEgg.Daq-module.html   |   42 +
 .../html/toc-VisionEgg.DaqKeyboard-module.html     |   33 +
 .../html/toc-VisionEgg.DaqLPT-module.html          |   37 +
 .../html/toc-VisionEgg.Deprecated-module.html      |   30 +
 doc/reference/html/toc-VisionEgg.Dots-module.html  |   32 +
 .../html/toc-VisionEgg.FlowControl-module.html     |   48 +
 doc/reference/html/toc-VisionEgg.GL-module.html    |   33 +
 .../html/toc-VisionEgg.GLTrace-module.html         |   38 +
 doc/reference/html/toc-VisionEgg.GUI-module.html   |   41 +
 .../html/toc-VisionEgg.Gratings-module.html        |   34 +
 .../html/toc-VisionEgg.MoreStimuli-module.html     |   33 +
 .../html/toc-VisionEgg.ParameterTypes-module.html  |   63 +
 .../toc-VisionEgg.PlatformDependent-module.html    |   35 +
 .../html/toc-VisionEgg.PyroApps-module.html        |   28 +
 .../toc-VisionEgg.PyroApps.AST_ext-module.html     |   36 +
 .../toc-VisionEgg.PyroApps.ColorCalGUI-module.html |   36 +
 ...c-VisionEgg.PyroApps.ColorCalServer-module.html |   37 +
 .../toc-VisionEgg.PyroApps.DropinGUI-module.html   |   33 +
 ...toc-VisionEgg.PyroApps.DropinServer-module.html |   34 +
 .../toc-VisionEgg.PyroApps.EPhysGUI-module.html    |   46 +
 ...oc-VisionEgg.PyroApps.EPhysGUIUtils-module.html |   35 +
 .../toc-VisionEgg.PyroApps.EPhysServer-module.html |   38 +
 ...c-VisionEgg.PyroApps.FlatGratingGUI-module.html |   36 +
 ...isionEgg.PyroApps.FlatGratingServer-module.html |   37 +
 .../toc-VisionEgg.PyroApps.GridGUI-module.html     |   38 +
 .../toc-VisionEgg.PyroApps.GridServer-module.html  |   39 +
 ...c-VisionEgg.PyroApps.MouseTargetGUI-module.html |   36 +
 ...isionEgg.PyroApps.MouseTargetServer-module.html |   54 +
 ...isionEgg.PyroApps.ScreenPositionGUI-module.html |   36 +
 ...onEgg.PyroApps.ScreenPositionServer-module.html |   34 +
 ...VisionEgg.PyroApps.SphereGratingGUI-module.html |   36 +
 ...ionEgg.PyroApps.SphereGratingServer-module.html |   37 +
 ...-VisionEgg.PyroApps.SpinningDrumGUI-module.html |   38 +
 ...sionEgg.PyroApps.SpinningDrumServer-module.html |   39 +
 .../toc-VisionEgg.PyroApps.TargetGUI-module.html   |   36 +
 ...toc-VisionEgg.PyroApps.TargetServer-module.html |   37 +
 .../toc-VisionEgg.PyroApps.VarTypes-module.html    |   31 +
 .../html/toc-VisionEgg.PyroClient-module.html      |   33 +
 .../html/toc-VisionEgg.PyroHelpers-module.html     |   40 +
 .../html/toc-VisionEgg.QuickTime-module.html       |   34 +
 .../html/toc-VisionEgg.ResponseControl-module.html |   33 +
 .../html/toc-VisionEgg.SphereMap-module.html       |   35 +
 .../html/toc-VisionEgg.TCPController-module.html   |   36 +
 doc/reference/html/toc-VisionEgg.Text-module.html  |   35 +
 .../html/toc-VisionEgg.Textures-module.html        |   46 +
 .../html/toc-VisionEgg.ThreeDeeMath-module.html    |   33 +
 .../html/toc-VisionEgg.WrappedText-module.html     |   32 +
 .../toc-VisionEgg.darwin_getrefresh-module.html    |   30 +
 doc/reference/html/toc-VisionEgg.gl_qt-module.html |   32 +
 .../toc-VisionEgg.posix_maxpriority-module.html    |   34 +
 .../html/toc-VisionEgg.qtlowlevel-module.html      |  110 +
 .../html/toc-VisionEgg.qtmovie-module.html         |   33 +
 .../toc-VisionEgg.win32_getrefresh-module.html     |   30 +
 .../toc-VisionEgg.win32_maxpriority-module.html    |   42 +
 doc/reference/html/toc-everything.html             |  499 +++
 doc/reference/html/toc.html                        |   88 +
 doc/reference/make_epy.sh                          |   59 +
 doc/visionegg.pdf                                  |  Bin 0 -> 105314 bytes
 doc/visionegg.tex                                  |  325 ++
 doc/visionegg/about.html                           |  112 +
 doc/visionegg/contents.html                        |  113 +
 doc/visionegg/controllers.html                     |  140 +
 doc/visionegg/front.html                           |  128 +
 doc/visionegg/hierarchy.html                       |  149 +
 doc/visionegg/index.html                           |  126 +
 doc/visionegg/node3.html                           |  201 ++
 doc/visionegg/node6.html                           |  249 ++
 doc/visionegg/visionegg.css                        |  243 ++
 doc/visionegg/visionegg.html                       |  126 +
 makepimp.py                                        |   74 +
 pyz_support.py                                     |    9 +
 setup.cfg                                          |    5 +
 setup.py                                           |  309 ++
 swig_src/darwin_getrefresh.i                       |   20 +
 swig_src/darwin_getrefresh.m                       |   53 +
 swig_src/gl_qt.c                                   |  248 ++
 swig_src/gl_qt.h                                   |   39 +
 swig_src/gl_qt.i                                   |   35 +
 swig_src/make.py                                   |   76 +
 swig_src/posix_maxpriority.c                       |   23 +
 swig_src/posix_maxpriority.i                       |   29 +
 swig_src/win32_getrefresh.c                        |   12 +
 swig_src/win32_getrefresh.i                        |    3 +
 swig_src/win32_maxpriority.c                       |   10 +
 swig_src/win32_maxpriority.i                       |   90 +
 test/conform.py                                    |  649 ++++
 test/display_dc_restoration.py                     |  135 +
 test/display_voltage_regulation.py                 |  104 +
 test/font_torture.py                               |   35 +
 test/opengl_info.py                                |  172 +
 test/reopen_screen.py                              |   52 +
 test/unittests.py                                  |   10 +
 update_docstrings.py                               |  256 ++
 upload_to_pypi.sh                                  |    1 +
 vc7.bat                                            |   11 +
 visionegg.egg-info/PKG-INFO                        |   47 +
 visionegg.egg-info/SOURCES.txt                     |  576 ++++
 visionegg.egg-info/dependency_links.txt            |    1 +
 visionegg.egg-info/top_level.txt                   |    7 +
 589 files changed, 169441 insertions(+), 188 deletions(-)

diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..3feb488
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,9 @@
+*.pyc
+*.so
+.installed.cfg
+bin
+build
+dist
+*~
+VisionEgg.log
+visionegg.egg-info
diff --git a/CHANGELOG.txt b/CHANGELOG.txt
new file mode 100644
index 0000000..4524031
--- /dev/null
+++ b/CHANGELOG.txt
@@ -0,0 +1,372 @@
+Changes for 1.1.2:
+------------------
+
+* Various small bugfixes and improvements:
+  
+  - bugfix: cast to int to prevent breaking ctypes based PyOpenGL 3 (r1506)
+  
+  - make default projection retain pixel coordinates by default when
+    size changes (answers issue of Marcus Leinweber) (r1507)
+
+  - support for paletted images (r1508)
+    
+  - use numpy instead of Numeric (r1511, r1513, r1514)
+      
+  - bugfix: don't auto-adjust projection if user-specified (r1512)
+    
+  - allow conversion of pygame surface texture to image (r1518)
+
+  - allow export of texel data as numpy array. includes example (r1522)
+
+  - add depth_test_enabled parameter to Rectangle3D stimulus type (r1523)
+    
+  - make depth_test parameter compatible with TextureStimulus3D (r1524)
+    
+Changes for 1.1.1:
+------------------
+
+* Various small bugfixes and performance improvements:
+
+  - Removed old CVS cruft from VisionEgg/PyroClient.py VisionEgg/PyroHelpers.py
+
+  - Fix trivial documentation bugs to have the correct version number.
+
+  - Workaraound pygame/SDL issue when creating Font objects. (r1491, reported by Jeremy Hill)
+
+  - bugfix: allow 4D as well as 3D vectors to specify vertices (r1472, r1474)
+
+  - fix comments: improve description of coordinate system transforms (r1473)
+
+  - Use standard Python idiom (r1475)
+
+  - Further removal of 'from blah import *' (r1476, r1501)
+
+  - Minor performance improvement (r1486)
+
+  - Remove unintended print statement (r1487 thanks to Jeremy Hill)
+
+  - properly detect String and Unicode types (r1470, reported by Dav Clark)
+
+  - update license to mention other code (r1502)
+
+Changes for 1.1:
+----------------
+
+* Explicitly require Python 2.3 by removing duplicate of Python
+  standard library's logging module and assume the "True" and "False"
+  are defined. There were probably other assumptions depending on 2.3
+  creeping into the code, as well.
+
+* Removed Lib3DS module.
+
+* Workaround PyOpenGL 3.0.0a and 3.0.0b1 bug in glLoadMatrixf().
+
+* Fix SphereMap.AzElGrid() to properly draw iso elevation and azimuth
+  lines at specified intervals.
+
+* Change to use numpy at the core instead of Numeric. (Require numpy,
+  no longer require Numeric.)
+
+* Require setuptools
+
+* No longer supporting Python 2.2
+
+* Update Textures to accept numpy arrays as data source (by Martin Spacek)
+
+* Update to work with PyOpenGL 3
+
+* Changes so to reflect standard idioms on Python project layouts:
+    - src/ directory renamed to VisionEgg/
+         (but .c files need to be moved back to src/)
+    - use 'package_data' distutils argument
+  This enables setuptools to work with the Vision Egg.
+
+* QuickTime movies work in Windows (need to check on OS X).
+
+* FilledCircle stimulus is now anti-aliased. Thanks to Peter Jurica
+  and Gijs Plomp.
+
+* Added demo/texture3D_alpha.py
+
+Changes for 1.0:
+----------------
+
+* Major enhancements to the ephys server/GUI code to use normal (or
+  slightly modified) demo scripts in this environment were done by Imran
+  Ali and Lachlan Dowd in the lab of David O'Carroll at the University
+  of Adelaide.
+
+* An initial patch for stereo support sent by Yuichi Sakano and Kevin
+  J. MacKenzie at York University.
+
+* Parallel port enhancements by Hubertus Becker, University of
+  T�bingen.
+
+* Arrow and FilledCircle stimuli by Hubertus Becker, University of
+  T�bingen.
+
+* DaqKeyboard and ResponseControl by Hubertus Becker, University of T�bingen.
+
+* Full screen anti-aliasing support (FSAA) by Mark Halko, Boston
+  University.
+
+* Various patches by Tony Arkles (University of Saskatchewan),
+  including a suggestion to separate camera motions from the
+  GL_PROJECTION matrix and put them in the GL_MODELVIEW matrix, where
+  they belong.
+
+* Patch for VISIONEGG_SYSTEM_DIR by Nick Knouf, MIT.
+
+* Added win32_vretrace.WaitForRetrace() (but it's not used for much,
+  yet)
+
+* Enhancements to EPhys Server/GUI sequencer
+
+* Added 'lat-long rectangle' to available 3D masking windows
+
+* Moved controller.CONSTANTS into FlowControl module namespace
+
+* Numerous bugfixes
+
+Changes for 0.9.9:
+------------------
+
+Screen.put_pixels() method for "blitting" of raw pixel data
+Support for QuickTime movies (currently Mac OS X only)
+Redesign of type check system for accuracy and clarity
+TrueType font rendering with SDL_ttf2
+Textures with alpha--bugfixes and examples
+Positioning of viewports and 2D stimuli can use relative positioning anchors
+Now requires Python 2.2 -- new style classes used to restrict attribute acccess
+Now requires pygame 1.5
+Renamed timing_func() to time_func()
+EPhysGUI saves absolute time a trial was started (to recontruct all stimuli)
+Allow use of pygame Surfaces as source of texture data
+Mipmaps of sphere-mapped sinusoidal grating to prevent spatial aliasing
+De-emphasis on Presentation and Controller classes (moved to FlowControl module)
+Changed orientations such that 0 degrees is right and 90 degrees is up.
+Bugfix in SphereMap module -- gaussian formula produced windows too wide by 2/sqrt(2)
+Allow conversion of 3D vertices into 2D screen coordinates
+Added wireframe azimuth/elevation grid with text labels
+Allow arbitrary orientation of textures and text with angle parameter
+FrameTimer class now available for use in your own main loops
+Use Python 2.3 logging module (copy included for use with Python 2.2)
+No installation of demos or documentation (get source or demo package)
+Improved docstrings by using automatic docstring generation
+Many small enhancements and bugfixes
+
+New tests:
+high-voltage regulation test for displays (Brainard et al., 2002)
+incomplete DC restoration test for displays (Brainard et al., 2002)
+unit-test suite: among many other things, pixel accuracy of textures
+
+New demos:
+mpeg.py plays MPEG movies
+quicktime.py plays QuickTime movies (currently Mac OS X only)
+convert3d_to_2d.py converts 3D positions to 2D positions
+dots_simple_loop.py uses own loop rather than Presentation class
+makeMovie2.py makes a movie with get_framebuffer_as_image() function
+mouse_gabor_2d.py shows a gabor wavelet under mouse and keyboard control
+mouse_gabor_perspective.py is sphereGratingWindowed.py improved and renamed
+mouseTarget_user_loop.py uses own loop rather than Presentation class
+multi_stim.py shows many stimuli at once
+
+Changes for 0.9.4:
+------------------
+Major features:
+Complete electrophysiology application (see below)
+Luminance and color calibration possible
+Constant visual angle (perspective-distorted) grating stimulus added
+Constant visual angle (perspective-distorted) gaussian and circular windows added
+3D texture-mapped sphere stimulus added
+Random dot stimulus added
+Texture module re-written for ease-of-use, clarity, and support of dynamic texture updating
+Color grating stimulus added
+Support for plaids added
+Masks for gratings and textures implemented using multitexturing - uses high bit depth available there on some hardware
+Vision Egg Programmer's Manual created
+Many more minor features and bug fixes
+
+New electrophysiology application features:
+Complete application with ready-to-run experiments
+Application extendible with new experiments by modifying example experiments
+Full-screen graphics possible with "server" application, GUI client controls experiments over TCP
+Automated sequence control, including sequences-of-sequences
+Stimulus onset timing calibration / verification support
+3D position / perspective-distortion calibration support
+Parameters saved during experiments as Python or Matlab scripts
+Complete configurations can be saved and restored from file
+
+All code written for the 0.9.3 release should continue to run on the 0.9.4 release.  (There may be some slight changes in functionality due to bug fixes.)
+
+Changes for 0.9.3:
+------------------
+
+MAJOR: Added .3ds file support to load 3D models.
+
+MAJOR: Added Labview code to control gratings in a new "contrib"
+package. Thanks Jamie Theobald!
+
+Fixed texture-resizing bug.
+
+Added Rectangle3D stimulus class.
+
+Further refined log printing and other small enhancements.
+
+Changes for 0.9.2:
+------------------
+
+MAJOR: GUI enhancements.
+
+Maximum priority (with various options) can be set on Mac OS X and
+win32.
+
+Frame swap sync with vertical retrace support added to Mac OS X.
+
+Friendly binary installer for Mac OS X, especially useful since now
+Mac OS X code requires compilation.
+
+Added SYNC_SWAP, RECORD_TIMES, HIDE_MOUSE, and FRAMELESS_WINDOW
+options.
+
+Textures now use mipmaps by default.
+
+Minor: Improvements to check-config.py
+
+Changes for 0.9.1:
+------------------
+
+Windows demos now distributed in standalone directory that does not
+require python installation.
+
+TCPServer mode can print current state, prints command summary, has
+help, minor bugfixes.
+
+Lots of little GUI adjustments, including automatic pop-up of
+exception dialog box.
+
+check-config.py detects old version.
+
+Changes for 0.9.0:
+------------------
+
+MAJOR: Overall quality of code and base feature set now approaching
+1.0 status.
+
+MAJOR: Parameter control over TCP interface implemented using
+TCPController class.
+
+MAJOR: Triggering, both out and in, (re)implemented.  Same for other
+data acquisition.
+
+MAJOR: Gratings module, with SinGrating2D and SinGrating3D (with
+perspective distortion) added.
+
+MAJOR: Support for SGI IRIX now added.
+
+MAJOR: Support for variable size (including 10 bits per channel) frame
+buffers added.
+
+MAJOR: Support for gamma table setting (including greater than 8 bit)
+added. (Requires pygame 1.5.)
+
+MAJOR: ``Run forever'' mode added.
+
+MAJOR: Type-checking implemented for parameters under realtime
+control. Complete re-design and re-implementation of realtime
+controllers.
+
+MINOR: Too many to list!
+
+Changed license to LGPL from GPL.
+
+Changes for 0.8.2:
+------------------
+MAJOR: Added frame-by-frame control with realtime_frame_contoller.
+(Also renamed realtime_controller to realtime_time_controller.)  Make
+sure you set your OpenGL driver to swap buffers at vertical retrace
+sync if you use this feature!
+
+Added support for on-screen text though VisionEgg.Text module.
+Bitmapped text works pretty well, stroke fonts have a few issues still.
+
+Must specify units for stimulus duration, either seconds or frames.
+
+Created new module PlatformDependent, which houses all the platform
+dependent C code.  Re-enabled setting of maximum priority (on linux,
+at least).
+
+Made lower_left and size attributes of Viewport class part of
+parameters, so now they can be changed in realtime.
+
+Added automatic detection of all extensions in tests/opengl_info.py.
+
+Removed data acquisition stuff from distribution until I get time to
+get it working again.
+
+Re-incorporated linux (and other unix?) kernel scheduler maximum
+priority stuff.
+
+Re-incorporated collection and printing of frame-timing
+statistics. Turn on by setting "collect_timing_info" argument of
+Presentation.go() to non-zero value.
+
+Contrast control in SpinningDrum now acheived with standard OpenGL
+texture environment functions, not OpenGL extension.
+
+Changes for 0.8.1:
+------------------
+
+Fixed some Mac OS X glitches.
+
+Removed Overlay class from VisionEgg.Core.  (The Overlay class was the
+same as the Stimulus class with the inclusion of its own projection.
+Now, if your stimulus has an associated projection, as 2D stimuli
+would, you must keep track of that yourself.)
+
+Support for specifying the order in which stimuli are drawn added by
+draw_order argument to the add_stimulus method of the Viewport class.
+(Necessary to ensure any graphics that must get drawn on top of
+everything else can be drawn last.)
+
+Added remove_stimulus method to Viewport class.  Added remove
+controller methods to Presentation class.
+
+Improved auto-setting of video modes.
+
+Added GetKeypressDialog and ToplevelDialog classes to GUI module.
+
+Changes for 0.8.0:
+------------------
+
+MAJOR: Implemented new Screen, Viewport, Stimulus, Overlay, and
+Presentation classes in VisionEgg.Core to more cleanly separate
+components and allow multiple viewports on same screen.
+
+MAJOR: Implemented new Parameters class in VisionEgg.Core to allow
+more flexible control of any parameters which may change during or
+between stimulus presentations.  This paves the way for easy control
+using any imaginable means, including a local window, a remote python
+script (see below about Pyro), or from a data-acquisition card.
+
+MAJOR: Added remote execution methods, so now you can run the
+VisionEgg in fullscreen mode while controlling it from a different
+computer.  Check out the the demos in the demo/Pyro directory.
+Requires python package "Pyro" (Python Remote Objects).
+
+New configuration system added.  VisionEgg.config holds system-wide
+configuration defaults.
+
+Changed VisionEgg.py to Core.py, so now you must do "import
+VisionEgg.Core".
+
+Moved demo scripts into 'demo' directory within the main package.  Now
+there is only one package to maintain.
+
+Pulled texture stuff into Textures.py.
+
+Pulled data acquisition stuff into Daq.py
+
+Added lots of docstrings.
+
+Created this changelog.
diff --git a/LICENSE.txt b/LICENSE.txt
new file mode 100644
index 0000000..ce90ce3
--- /dev/null
+++ b/LICENSE.txt
@@ -0,0 +1,509 @@
+The Vision Egg is licensed under the GNU LGPL Version 2.1, which is
+included below. The file VisionEgg/win32_vretrace_orig.h is copyright
+by Thiadmer Riemersma and licensed under a Creative Commons
+Attribution-Share Alike 3.0 Unported license.
+
+		  GNU LESSER GENERAL PUBLIC LICENSE
+		       Version 2.1, February 1999
+
+ Copyright (C) 1991, 1999 Free Software Foundation, Inc.
+     59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+[This is the first released version of the Lesser GPL.  It also counts
+ as the successor of the GNU Library Public License, version 2, hence
+ the version number 2.1.]
+
+			    Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software--to make sure the software is free for all its users.
+
+  This license, the Lesser General Public License, applies to some
+specially designated software packages--typically libraries--of the
+Free Software Foundation and other authors who decide to use it.  You
+can use it too, but we suggest you first think carefully about whether
+this license or the ordinary General Public License is the better
+strategy to use in any particular case, based on the explanations below.
+
+  When we speak of free software, we are referring to freedom of use,
+not price.  Our General Public Licenses are designed to make sure that
+you have the freedom to distribute copies of free software (and charge
+for this service if you wish); that you receive source code or can get
+it if you want it; that you can change the software and use pieces of
+it in new free programs; and that you are informed that you can do
+these things.
+
+  To protect your rights, we need to make restrictions that forbid
+distributors to deny you these rights or to ask you to surrender these
+rights.  These restrictions translate to certain responsibilities for
+you if you distribute copies of the library or if you modify it.
+
+  For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you.  You must make sure that they, too, receive or can get the source
+code.  If you link other code with the library, you must provide
+complete object files to the recipients, so that they can relink them
+with the library after making changes to the library and recompiling
+it.  And you must show them these terms so they know their rights.
+
+  We protect your rights with a two-step method: (1) we copyright the
+library, and (2) we offer you this license, which gives you legal
+permission to copy, distribute and/or modify the library.
+
+  To protect each distributor, we want to make it very clear that
+there is no warranty for the free library.  Also, if the library is
+modified by someone else and passed on, the recipients should know
+that what they have is not the original version, so that the original
+author's reputation will not be affected by problems that might be
+introduced by others.
+

+  Finally, software patents pose a constant threat to the existence of
+any free program.  We wish to make sure that a company cannot
+effectively restrict the users of a free program by obtaining a
+restrictive license from a patent holder.  Therefore, we insist that
+any patent license obtained for a version of the library must be
+consistent with the full freedom of use specified in this license.
+
+  Most GNU software, including some libraries, is covered by the
+ordinary GNU General Public License.  This license, the GNU Lesser
+General Public License, applies to certain designated libraries, and
+is quite different from the ordinary General Public License.  We use
+this license for certain libraries in order to permit linking those
+libraries into non-free programs.
+
+  When a program is linked with a library, whether statically or using
+a shared library, the combination of the two is legally speaking a
+combined work, a derivative of the original library.  The ordinary
+General Public License therefore permits such linking only if the
+entire combination fits its criteria of freedom.  The Lesser General
+Public License permits more lax criteria for linking other code with
+the library.
+
+  We call this license the "Lesser" General Public License because it
+does Less to protect the user's freedom than the ordinary General
+Public License.  It also provides other free software developers Less
+of an advantage over competing non-free programs.  These disadvantages
+are the reason we use the ordinary General Public License for many
+libraries.  However, the Lesser license provides advantages in certain
+special circumstances.
+
+  For example, on rare occasions, there may be a special need to
+encourage the widest possible use of a certain library, so that it becomes
+a de-facto standard.  To achieve this, non-free programs must be
+allowed to use the library.  A more frequent case is that a free
+library does the same job as widely used non-free libraries.  In this
+case, there is little to gain by limiting the free library to free
+software only, so we use the Lesser General Public License.
+
+  In other cases, permission to use a particular library in non-free
+programs enables a greater number of people to use a large body of
+free software.  For example, permission to use the GNU C Library in
+non-free programs enables many more people to use the whole GNU
+operating system, as well as its variant, the GNU/Linux operating
+system.
+
+  Although the Lesser General Public License is Less protective of the
+users' freedom, it does ensure that the user of a program that is
+linked with the Library has the freedom and the wherewithal to run
+that program using a modified version of the Library.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.  Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library".  The
+former contains code derived from the library, whereas the latter must
+be combined with the library in order to run.
+

+		  GNU LESSER GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License Agreement applies to any software library or other
+program which contains a notice placed by the copyright holder or
+other authorized party saying it may be distributed under the terms of
+this Lesser General Public License (also called "this License").
+Each licensee is addressed as "you".
+
+  A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+  The "Library", below, refers to any such software library or work
+which has been distributed under these terms.  A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language.  (Hereinafter, translation is
+included without limitation in the term "modification".)
+
+  "Source code" for a work means the preferred form of the work for
+making modifications to it.  For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control compilation
+and installation of the library.
+
+  Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it).  Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+
+  1. You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+Library.
+
+  You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+

+  2. You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) The modified work must itself be a software library.
+
+    b) You must cause the files modified to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    c) You must cause the whole of the work to be licensed at no
+    charge to all third parties under the terms of this License.
+
+    d) If a facility in the modified Library refers to a function or a
+    table of data to be supplied by an application program that uses
+    the facility, other than as an argument passed when the facility
+    is invoked, then you must make a good faith effort to ensure that,
+    in the event an application does not supply such function or
+    table, the facility still operates, and performs whatever part of
+    its purpose remains meaningful.
+
+    (For example, a function in a library to compute square roots has
+    a purpose that is entirely well-defined independent of the
+    application.  Therefore, Subsection 2d requires that any
+    application-supplied function or table used by this function must
+    be optional: if the application does not supply it, the square
+    root function must still compute square roots.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library.  To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License.  (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.)  Do not make any other change in
+these notices.
+

+  Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+  This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+  4. You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+
+  If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  5. A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library".  Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+  However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library".  The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+
+  When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library.  The
+threshold for this to be true is not precisely defined by law.
+
+  If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work.  (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+  Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+

+  6. As an exception to the Sections above, you may also combine or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+  You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License.  You must supply a copy of this License.  If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License.  Also, you must do one
+of these things:
+
+    a) Accompany the work with the complete corresponding
+    machine-readable source code for the Library including whatever
+    changes were used in the work (which must be distributed under
+    Sections 1 and 2 above); and, if the work is an executable linked
+    with the Library, with the complete machine-readable "work that
+    uses the Library", as object code and/or source code, so that the
+    user can modify the Library and then relink to produce a modified
+    executable containing the modified Library.  (It is understood
+    that the user who changes the contents of definitions files in the
+    Library will not necessarily be able to recompile the application
+    to use the modified definitions.)
+
+    b) Use a suitable shared library mechanism for linking with the
+    Library.  A suitable mechanism is one that (1) uses at run time a
+    copy of the library already present on the user's computer system,
+    rather than copying library functions into the executable, and (2)
+    will operate properly with a modified version of the library, if
+    the user installs one, as long as the modified version is
+    interface-compatible with the version that the work was made with.
+
+    c) Accompany the work with a written offer, valid for at
+    least three years, to give the same user the materials
+    specified in Subsection 6a, above, for a charge no more
+    than the cost of performing this distribution.
+
+    d) If distribution of the work is made by offering access to copy
+    from a designated place, offer equivalent access to copy the above
+    specified materials from the same place.
+
+    e) Verify that the user has already received a copy of these
+    materials or that you have already sent this user a copy.
+
+  For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it.  However, as a special exception,
+the materials to be distributed need not include anything that is
+normally distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies
+the executable.
+
+  It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system.  Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+

+  7. You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+    a) Accompany the combined library with a copy of the same work
+    based on the Library, uncombined with any other library
+    facilities.  This must be distributed under the terms of the
+    Sections above.
+
+    b) Give prominent notice with the combined library of the fact
+    that part of it is a work based on the Library, and explaining
+    where to find the accompanying uncombined form of the same work.
+
+  8. You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License.  Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License.  However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+  9. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Library or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+  10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties with
+this License.
+

+  11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply,
+and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License may add
+an explicit geographical distribution limitation excluding those countries,
+so that distribution is permitted only in or among countries not thus
+excluded.  In such case, this License incorporates the limitation as if
+written in the body of this License.
+
+  13. The Free Software Foundation may publish revised and/or new
+versions of the Lesser General Public License from time to time.
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Library
+specifies a version number of this License which applies to it and
+"any later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation.  If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+

+  14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission.  For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this.  Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+			    NO WARRANTY
+
+  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+		     END OF TERMS AND CONDITIONS
+

+           How to Apply These Terms to Your New Libraries
+
+  If you develop a new library, and you want it to be of the greatest
+possible use to the public, we recommend making it free software that
+everyone can redistribute and change.  You can do so by permitting
+redistribution under these terms (or, alternatively, under the terms of the
+ordinary General Public License).
+
+  To apply these terms, attach the following notices to the library.  It is
+safest to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least the
+"copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the library's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This library is free software; you can redistribute it and/or
+    modify it under the terms of the GNU Lesser General Public
+    License as published by the Free Software Foundation; either
+    version 2.1 of the License, or (at your option) any later version.
+
+    This library is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+    Lesser General Public License for more details.
+
+    You should have received a copy of the GNU Lesser General Public
+    License along with this library; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+Also add information on how to contact you by electronic and paper mail.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the library, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the
+  library `Frob' (a library for tweaking knobs) written by James Random Hacker.
+
+  <signature of Ty Coon>, 1 April 1990
+  Ty Coon, President of Vice
+
+That's all there is to it!
+
+
diff --git a/MANIFEST.in b/MANIFEST.in
new file mode 100644
index 0000000..c5496f9
--- /dev/null
+++ b/MANIFEST.in
@@ -0,0 +1,33 @@
+include LICENSE.txt
+include CHANGELOG.txt
+include README.txt
+include README-DEMOS.txt
+include MANIFEST.in
+include VisionEgg/*.pyx
+include VisionEgg/*.c
+include VisionEgg/*.m
+include VisionEgg/*.h
+include doc/reference/html/*
+include doc/reference/epydoc
+include doc/reference/make_epy.sh
+include doc/visionegg/*
+include doc/visionegg.tex
+include doc/visionegg.pdf
+include doc/index.html
+include doc/BUILD.txt
+include demo/*.py
+include demo/*.pyw
+include demo/README.txt
+include demo/daq/*.py
+include demo/tcp/*.py
+include demo/GUI/*.py
+include demo/Pyro/*.py
+include test/*.py
+include VisionEgg/data/panorama.jpg
+include VisionEgg/data/spiral.png
+include VisionEgg/data/az_el.png
+include VisionEgg/data/visionegg.bmp
+include VisionEgg/data/visionegg.tif
+include VisionEgg/data/water.mov
+include VisionEgg/VisionEgg.cfg
+include check-config.py
diff --git a/PKG-INFO b/PKG-INFO
new file mode 100644
index 0000000..5edf297
--- /dev/null
+++ b/PKG-INFO
@@ -0,0 +1,47 @@
+Metadata-Version: 1.0
+Name: visionegg
+Version: 1.2.1
+Summary: 2D/3D visual stimulus generation
+Home-page: http://www.visionegg.org/
+Author: Andrew Straw
+Author-email: astraw at users.sourceforge.net
+License: LGPL
+Description: The Vision Egg is a programming library (with demo applications)
+        that uses standard, inexpensive computer graphics cards to produce
+        visual stimuli for vision research experiments.
+        
+        For more information, visit the website at www.visionegg.org
+        
+        Any feedback, questions, or comments, should go to the mailing list at
+        visionegg at freelists.org
+        
+        The Vision Egg is Copyright (c) by its authors and is distributed
+        under the GNU Lesser General Public License (LGPL).  This software
+        comes with absolutely no warranties, either expressed or implied.
+        
+        
+Platform: UNKNOWN
+Classifier: Development Status :: 5 - Production/Stable
+Classifier: Environment :: Win32 (MS Windows)
+Classifier: Environment :: X11 Applications
+Classifier: Environment :: MacOS X
+Classifier: Environment :: Other Environment
+Classifier: Intended Audience :: Developers
+Classifier: Intended Audience :: Science/Research
+Classifier: License :: OSI Approved :: GNU Library or Lesser General Public License (LGPL)
+Classifier: Natural Language :: English
+Classifier: Operating System :: Microsoft :: Windows
+Classifier: Operating System :: MacOS :: MacOS X
+Classifier: Operating System :: POSIX :: Linux
+Classifier: Operating System :: POSIX :: IRIX
+Classifier: Programming Language :: Python
+Classifier: Programming Language :: C
+Classifier: Topic :: Multimedia :: Graphics
+Classifier: Topic :: Multimedia :: Graphics :: 3D Rendering
+Classifier: Topic :: Multimedia :: Graphics :: Presentation
+Classifier: Topic :: Multimedia :: Video :: Display
+Classifier: Topic :: Scientific/Engineering
+Classifier: Topic :: Scientific/Engineering :: Human Machine Interfaces
+Classifier: Topic :: Scientific/Engineering :: Medical Science Apps.
+Classifier: Topic :: Scientific/Engineering :: Visualization
+Classifier: Topic :: Software Development :: Libraries
diff --git a/README-BINARY-DEMOS.txt b/README-BINARY-DEMOS.txt
new file mode 100644
index 0000000..aa5a3e6
--- /dev/null
+++ b/README-BINARY-DEMOS.txt
@@ -0,0 +1,85 @@
+WELCOME
+
+Thanks for checking out the Vision Egg!  For more information or to
+download the library, the website is http://www.visionegg.org/
+
+This directory contains Windows binary executable versions of several
+demonstration scripts included with version 0.9.9 of the Vision Egg
+library.  These programs are not meant to be used for experiments, but
+rather to demonstrate particular features of the Vision Egg.
+
+The complete source code of these programs can be downloaded from the
+Vision Egg website.
+
+Contents:
+---------
+
+check-config.exe -- Check configuration
+
+alpha_texture.exe -- Textures with alpha (transparency).
+color_grating.exe -- Colored sine wave grating in circular mask
+convert3d_to_2d.exe -- Convert 3D position to 2D position
+displayText.exe -- Display text strings
+dots.exe -- Random dot stimulus
+dots_simple_loop.exe -- Draw dots, using your own event loop
+ephys_gui.exe -- Client GUI application for electrophysiology experiments
+ephys_server.exe -- Server application for electrophysiology experiments
+flames_pygame.exe -- Flames demo from pygame code repository
+flames_visionegg.exe -- a Vision Egg implementation of pygame flames
+gabor.exe -- Sinusoidal grating in a gaussian mask
+gamma.exe -- Test whether your video drivers support setting gamma ramps
+grating.exe -- Sinusoidal grating calculated in realtime
+gratings_multi.exe -- Sinusoidal gratings calculated in realtime
+image_sequence_fast.exe -- Display a sequence of images using a pseudo-blit routine
+image_sequence_slow.exe -- Display a sequence of images
+lib3ds-demo.exe -- Demonstrate the loading of .3ds file using the lib3ds library
+makeMovie.exe -- Save movie of a black target moving across a white background
+makeMovie2.exe -- Draw dots and save movie using your own event loop
+mouseTarget.exe -- Control a target with the mouse, get SDL/pygame events
+mouseTarget_user_loop.exe -- Control a target with the mouse, using your own event loop.
+mouse_gabor_2d.exe -- sinusoidal grating in gaussian window
+mouse_gabor_perspective.exe -- Perspective-distorted sinusoidal grating in gaussian window
+movingPOV.exe -- 2 viewports, one with a changing perspective
+mpeg.exe -- play MPEG movies in the Vision Egg
+multi_stim.exe -- multiple stimulus demo
+plaid.exe -- Multiple sinusoidal gratings (with mask)
+sphereMap.exe -- Mapping of texture onto sphere
+target.exe -- A moving target
+targetBackground.exe -- Moving target over a spinning drum
+texture.exe -- Load a texture from a file
+textureDrum.exe -- A texture-mapped spinning drum
+visual_jitter.exe -- Retinal slip demonstration
+simpleServer.exe -- Very simple usage of Pyro (server)
+simpleClient.exe -- Very simple usage of Pyro (client)
+gratingPyroServer.exe -- Grating control with low-level Controllers (server)
+gratingPyroGUI.exe -- Grating control with low-level Controllers (GUI client)
+metaPyroServer.exe -- Grating control with high-level meta-controller (server)
+metaPyroGUI.exe -- Grating control with high-level meta-controller (GUI client)
+simple_lpt_out.exe -- very simple example of using the parallel port
+trigger_in.exe -- Use an external device to trigger the Vision Egg.
+trigger_out.exe -- Use the Vision Egg to trigger an external device.
+drumDemoGUI.exe -- Spinning drum with a graphical user interface (old).
+gratingTCP.exe -- Start a Vision Egg TCPServer to control a grating
+gratingGUI.exe -- Python GUI to control gratingTCP
+
+conform.exe -- Check VisionEgg operation (unit tests)
+opengl_info.exe -- Check OpenGL information (doesn't use Vision Egg)
+
+display_dc_restoration.exe -- incomplete DC restoration test for displays (Brainard et al., 2002)
+display_voltage_regulation.exe -- high-voltage regulation test for displays (Brainard et al., 2002)
+
+LEGAL MATTERS
+
+The Vision Egg is copyright (c) Andrew D. Straw, 2001-2003.  It is
+distributed under the terms of the GNU LGPL (Lesser General Public
+License.) See LICENSE.txt for more information.  This software is
+provided "as is" without any warranty of any kind, either expressed or
+implied.
+
+This binary demo distribution is only possible because of the open
+source nature of the Vision Egg's dependencies.  The source code for
+any of the software used is available from its respective website.  I
+would like to thank all of the developers for their great work.  These
+packages include Python, SDL, Numeric Python, PyOpenGL, pygame, the
+Python Imaging Library, Pyro, SDL, Dincer Aydin's winioport, Gordon
+McMillan's Python Installer, and Tcl/Tk.
diff --git a/README-DEMOS.txt b/README-DEMOS.txt
new file mode 100644
index 0000000..e6f69a4
--- /dev/null
+++ b/README-DEMOS.txt
@@ -0,0 +1,67 @@
+Welcome to the Vision Egg!
+
+RUN THE CONFIGURATION CHECK (BEFORE AND/OR AFTER INSTALLATION)
+
+Check for pre-requisites on your system by running check-config.py.
+This can be run before or after installation of the Vision Egg, and
+also displays useful information about the Vision Egg, if already
+installed.
+
+DEMO SCRIPTS
+
+For demos, see the 'demo' directory and the subdirectories therein.
+
+The current reigning champion of all the demos is the combination of
+the multi_stim demo.  This demonstrates a large fraction of what the
+Vision Egg is capable of.  If will probably push your hardware, maybe
+even breaking on older systems.
+
+DOCUMENTATION
+
+The Programmer's Manual and API Reference are available in
+doc/index.html
+
+To get started, please look at the tutorials (on the website), demo
+programs (in the "demo" directory). The ultimate authority is the
+source code.
+
+OUTPUT LOGGING
+
+The output of the Vision Egg is logged using the standard Python
+logging package.  The default log is a file named "VisionEgg.log".  If
+unspecified, or if there are problems opening the log file, the log
+will be printed to the system's standard error console.  I recommend
+examining the log after running Vision Egg scripts.
+
+You can increase the verbosity of the output by doing something like
+"VisionEgg.logger.setLevel( VisionEgg.logging.DEBUG )" in your script.
+
+WHEN SOMETHING GOES WRONG
+
+Exceptions are normally logged to the same log file as the rest of the
+Vision Egg (see above).  However, in some cases (a SyntaxError, for
+example), the Vision Egg cannot load, and the exception is only
+printed to the console (terminal window).  In this case, you will have
+to look at the console.  On Windows, the console is normally open
+during the execution of a python program, but disappers once python
+terminates.  If you run the script from the command line, however, the
+console window is not closed, and you can scroll back.
+
+On Mac OS X, a Terminal window displays this information (when the
+script ends in .py, but not .pyw).
+
+On other flavors of Unix, you probably know (and may even love) the
+console!
+
+LICENSE
+
+The Vision Egg is copyright (c) Andrew D. Straw, 2001-2003.  It is
+distributed under the terms of the GNU LGPL (Lesser General Public
+License.) See LICENSE.txt for more information.  This software is
+provided "as is" without any warranty of any kind, either expressed or
+implied.
+
+MAILING LIST
+
+Sign up for the mailing list at
+http://www.visionegg.org/mailinglist.html
\ No newline at end of file
diff --git a/README.txt b/README.txt
new file mode 100644
index 0000000..dcc3568
--- /dev/null
+++ b/README.txt
@@ -0,0 +1,46 @@
+Welcome to the Vision Egg!
+
+INSTALLATION
+
+To install from source, type this from a command line (as root, if
+necessary) from the Vision Egg base directory:
+
+python setup.py install
+
+However, the above assumes all of the prerequisites are working.  For
+blow-by-blow accounts of how I got the prerequisites for the Vision
+Egg installed on all the supported platforms, check out the website at
+http://www.visionegg.org/
+
+RUN THE CONFIGURATION CHECK (BEFORE AND/OR AFTER INSTALLATION)
+
+Check for pre-requisites on your system by running check-config.py.
+This can be run before or after installation of the Vision Egg, and
+also displays useful information about the Vision Egg, if already
+installed.
+
+DEMOS, DOCUMENTATION, ETC.
+
+The demos are no longer installed, but they are included with the
+source code and the demo packages.
+
+See the README-DEMOS.txt file in those packages.
+
+The documentation start page is doc/index.html
+
+LICENSE
+
+The Vision Egg is Copyright (c) 2001-2008 by the Vision Egg
+Authors. It is distributed under the terms of the GNU LGPL (Lesser
+General Public License.) See LICENSE.txt for more information.  This
+software is provided "as is" without any warranty of any kind, either
+expressed or implied.
+
+CREDITS (SOURCE CODE INCLUDED WITH THE VISION EGG DISTRIBUTION)
+
+See http://visionegg.org/Miscellaneous/CreditsAndThanks for more.
+
+MAILING LIST
+
+Sign up for the mailing list at
+http://visionegg.org/Miscellaneous
diff --git a/VisionEgg/Configuration.py b/VisionEgg/Configuration.py
new file mode 100644
index 0000000..40ed909
--- /dev/null
+++ b/VisionEgg/Configuration.py
@@ -0,0 +1,253 @@
+# The Vision Egg: Configuration
+#
+# Copyright (C) 2001-2003 Andrew Straw.
+# Copyright (C) 2008 California Institute of Technology
+#
+# URL: <http://www.visionegg.org/>
+#
+# Distributed under the terms of the GNU Lesser General Public License
+# (LGPL). See LICENSE.TXT that came with this file.
+
+"""
+Load config values from environment, config file, or defaults.
+
+Applications should not import this module directly.  Instead, 'import
+VisionEgg' will result in an attribute 'VisionEgg.config', which has
+the configuration options as attributes.
+
+This module searches for configuration options from the following
+places: environment variables, configuration file, generic defaults.
+Environment variables take precedence over the configuration file,
+which takes precedence over the generic defaults.
+
+This module also determines the location of the Vision Egg
+directories.  The VISIONEGG_SYSTEM_DIR directory is by default the
+'VisionEgg' directory in Python's site-packages.  VISIONEGG_USER_DIR
+is by default 'VisionEgg' in the directory specified by the
+environment variable HOME, if it exists, and os.curdir otherwise.
+
+You can create a configuration file that contains defaults for your
+system.  This should be a text file with key/value pairs.  Blank lines
+and anything after the pound symbol ('#') will be treated as a
+comment.  Each key/value pairs should be on its own line and in the
+format 'KEY=VALUE'.  By default the file 'VisionEgg.cfg' from the
+VISIONEGG_USER_DIR or VISIONEGG_SYSTEM_DIR as specified above.
+However, You can specify a different filename and directory by setting
+the environment variable VISIONEGG_CONFIG_FILE.
+
+"""
+
+# Warning: This code is a bit of a hack
+
+import VisionEgg
+import re, os, errno, sys                  # standard python packages
+import ConfigParser
+
+####################################################################
+#
+#        Default configuration variables
+#
+####################################################################
+
+defaults= {
+    'VISIONEGG_ALWAYS_START_LOGGING': 0,
+    'VISIONEGG_DOUBLE_BUFFER':        1,
+    'VISIONEGG_FRAMELESS_WINDOW':     0,
+    'VISIONEGG_FULLSCREEN':           0,
+    'VISIONEGG_GUI_INIT':             1,
+    'VISIONEGG_GAMMA_INVERT_RED':     2.1, # only used in 'invert' mode
+    'VISIONEGG_GAMMA_INVERT_GREEN':   2.1, # only used in 'invert' mode
+    'VISIONEGG_GAMMA_INVERT_BLUE':    2.1, # only used in 'invert' mode
+    'VISIONEGG_GAMMA_FILE':           'custom.ve_gamma', # only used in 'file' mode
+    'VISIONEGG_GAMMA_SOURCE':         'none', #also 'invert' or 'file'
+    'VISIONEGG_GUI_ON_ERROR':         1,
+    'VISIONEGG_HIDE_MOUSE':           1,
+    'VISIONEGG_LOG_FILE':             'VisionEgg.log',
+    'VISIONEGG_LOG_TO_STDERR':        1,
+    'VISIONEGG_MAXPRIORITY':          0,
+    'VISIONEGG_MONITOR_REFRESH_HZ':   60.0,
+    'VISIONEGG_MULTISAMPLE_SAMPLES':  0,
+    'VISIONEGG_PREFERRED_BPP':        32,
+    'VISIONEGG_REQUEST_ALPHA_BITS':   8,
+    'VISIONEGG_REQUEST_BLUE_BITS':    8,
+    'VISIONEGG_REQUEST_GREEN_BITS':   8,
+    'VISIONEGG_REQUEST_RED_BITS':     8,
+    'VISIONEGG_REQUEST_STEREO':       0,
+    'VISIONEGG_SCREEN_W':             640,
+    'VISIONEGG_SCREEN_H':             480,
+    'VISIONEGG_SYNC_SWAP':            1,
+    'VISIONEGG_TKINTER_OK':           1,
+    'SYNCLYNC_PRESENT':               0,
+    }
+if sys.platform.startswith('linux'):
+    defaults['VISIONEGG_PREFERRED_BPP']=24
+
+extra_darwin_defaults = {
+    'VISIONEGG_DARWIN_MAXPRIORITY_CONVENTIONAL_NOT_REALTIME'  : 1,
+    'VISIONEGG_DARWIN_CONVENTIONAL_PRIORITY'                  : -20, # -20 is best priority
+    'VISIONEGG_DARWIN_REALTIME_PERIOD_DENOM'                  : 120,
+    'VISIONEGG_DARWIN_REALTIME_COMPUTATION_DENOM'             : 2400,
+    'VISIONEGG_DARWIN_REALTIME_CONSTRAINT_DENOM'              : 1200,
+    'VISIONEGG_DARWIN_REALTIME_PREEMPTIBLE'                   : 0,
+    'VISIONEGG_DARWIN_PTHREAD_PRIORITY'                      : 'max',
+}
+
+class Config:
+    """Holds global Vision Egg configuration information."""
+    def __init__(self):
+        """Load global Vision Egg configuration information."""
+        cfg = ConfigParser.ConfigParser()
+
+        if sys.executable == sys.argv[0]: # Windows binary
+            self.VISIONEGG_SYSTEM_DIR = os.curdir
+            self.VISIONEGG_USER_DIR = os.curdir
+        else:
+            # non-standard VisionEgg installations
+            try:
+                self.VISIONEGG_SYSTEM_DIR = os.environ['VISIONEGG_SYSTEM_DIR']
+            except KeyError:
+                self.VISIONEGG_SYSTEM_DIR = os.path.split(__file__)[0]
+            user_dir = os.path.expanduser("~")
+            self.VISIONEGG_USER_DIR = os.path.join(user_dir,"VisionEgg")
+
+        # See if there's an environment variable for the config file
+        if 'VISIONEGG_CONFIG_FILE' in os.environ.keys():
+            configFile = os.environ['VISIONEGG_CONFIG_FILE']
+        else:
+            # Is there one in VISIONEGG_USER_DIR?
+            configFile = os.path.join(self.VISIONEGG_USER_DIR,"VisionEgg.cfg")
+            if not os.path.isfile(configFile):
+                configFile = os.path.join(self.VISIONEGG_SYSTEM_DIR,"VisionEgg.cfg")
+                if not os.path.isfile(configFile):
+                    configFile = None # No file, use defaults specified in environment variables then here
+
+        if configFile:
+            cfg.read(configFile)
+        else:
+            # pretend we have a config file
+            cfg.add_section('General')
+            for key in defaults.keys():
+                cfg.set('General',key,str(defaults[key]))
+            if sys.platform == 'darwin':
+                cfg.add_section('darwin')
+                for key in extra_darwin_defaults.keys():
+                    cfg.set('darwin',key,str(extra_darwin_defaults[key]))
+
+        # Do the general stuff first
+        # Set the default values
+        for name in defaults.keys():
+            if name in os.environ.keys():
+                value = os.environ[name]
+            else:
+                value = defaults[name]
+            if isinstance(defaults[name], int):
+		if value == 'False':
+		    value = 0
+		elif value == 'True':
+		    value = 1
+                setattr(self,name,int(value))
+            elif isinstance(defaults[name], float):
+                setattr(self,name,float(value))
+            else:
+                setattr(self,name,value)
+
+        # Get the values from the configFile
+        general_options = cfg.options('General')
+
+        self._delayed_configuration_log_warnings = [] # chick and egg problem
+        # set defaults from config file
+        for option in general_options:
+            name = option.upper()
+            if name not in defaults.keys():
+                self._delayed_configuration_log_warnings.append(
+                    "While reading %s: The variable \"%s\" is not (anymore) a Vision Egg variable."%(os.path.abspath(configFile),option))
+                continue
+            value = cfg.get('General',option)
+            if name in os.environ.keys():
+                value = os.environ[name]
+            if isinstance(defaults[name], int):
+		if value == 'False':
+		    value = 0
+		elif value == 'True':
+		    value = 1
+                setattr(self,name,int(value))
+            elif isinstance(defaults[name], float):
+                setattr(self,name,float(value))
+            else:
+                setattr(self,name,value)
+
+        # Do platform specific stuff
+        # Set the default values
+        platform_name = sys.platform
+        extra_name = "extra_%s_defaults"%(platform_name,)
+        if extra_name in globals().keys():
+            extra_defaults = globals()[extra_name]
+            for name in extra_defaults.keys():
+                setattr(self,name,extra_defaults[name])
+
+            # Get the values from the configFile
+            platform_options = cfg.options(platform_name)
+            for option in platform_options:
+                name = option.upper()
+                if name not in extra_defaults.keys():
+                    raise KeyError("No Vision Egg configuration variable \"%s\""%option)
+                value = cfg.get(platform_name,option)
+                if name in os.environ.keys():
+                    value = os.environ[name]
+                if isinstance(extra_defaults[name], int):
+		    if value == 'False':
+		        value = 0
+    		    elif value == 'True':
+		        value = 1
+                    setattr(self,name,int(value))
+                elif isinstance(extra_defaults[name], float):
+                    setattr(self,name,float(value))
+                else:
+                    setattr(self,name,value)
+
+        if(configFile):
+            self.VISIONEGG_CONFIG_FILE = os.path.abspath(configFile)
+        else:
+            self.VISIONEGG_CONFIG_FILE = None
+
+def save_settings():
+    """Save the current values to the config file, overwriting what is there."""
+
+    dont_save = ['VISIONEGG_CONFIG_FILE',
+                 'VISIONEGG_SYSTEM_DIR',
+                 'VISIONEGG_USER_DIR',
+                 ]
+
+    if not VisionEgg.config.VISIONEGG_CONFIG_FILE:
+        raise RuntimeError("No config file in use.")
+    re_setting_finder = re.compile(r"^\s?((?:VISIONEGG_[A-Z_]*)|(?:SYNCLYNC_[A-Z_]*))\s?=\s?(\S*)\s?$",re.IGNORECASE)
+
+    orig_file = open(VisionEgg.config.VISIONEGG_CONFIG_FILE,"r")
+    orig_lines = orig_file.readlines()
+
+    line_ending = orig_lines[0][-2:]
+    if line_ending[0] not in ['\r','\n','\l']:
+        line_ending = line_ending[1]
+
+    out_file_lines = []
+
+    saved_config_vars = []
+
+    for line in orig_lines:
+        out_line = line # The output is the same as the input unless there's a match
+        match = re_setting_finder.match(line)
+        if match:
+            name = match.group(1).upper()
+            if name in VisionEgg.config.__dict__.keys():
+                if name not in dont_save:
+                    # Change the output line
+                    out_line = ("%s = %s"%(name,getattr(VisionEgg.config,name,))) + line_ending
+                    saved_config_vars.append(name)
+        out_file_lines.append(out_line)
+
+    # Close and reopen orig_file in write mode
+    orig_file.close()
+    orig_file = open(VisionEgg.config.VISIONEGG_CONFIG_FILE,"w")
+    for line in out_file_lines:
+        orig_file.write(line)
+
diff --git a/VisionEgg/Core.py b/VisionEgg/Core.py
new file mode 100644
index 0000000..2fd2ab9
--- /dev/null
+++ b/VisionEgg/Core.py
@@ -0,0 +1,1795 @@
+# The Vision Egg: Core
+#
+# Copyright (C) 2001-2004 Andrew Straw
+# Copyright (C) 2004-2008 California Institute of Technology
+#
+# URL: <http://www.visionegg.org/>
+#
+# Distributed under the terms of the GNU Lesser General Public License
+# (LGPL). See LICENSE.TXT that came with this file.
+
+"""
+Core Vision Egg functionality.
+
+This module contains the architectural foundations of the Vision Egg.
+
+"""
+
+####################################################################
+#
+#        Import all the necessary packages
+#
+####################################################################
+
+import sys, types, math, time, os               # standard Python modules
+import StringIO
+
+import logging                                  # available in Python 2.3
+
+import VisionEgg                                # Vision Egg base module (__init__.py)
+import VisionEgg.PlatformDependent              # platform dependent Vision Egg C code
+import VisionEgg.ParameterTypes as ve_types     # Vision Egg type checking
+import VisionEgg.GLTrace                        # Allows tracing of all OpenGL calls
+import VisionEgg.ThreeDeeMath                   # OpenGL math simulation
+
+import pygame                                   # pygame handles OpenGL window setup
+import pygame.locals
+import pygame.display
+
+import VisionEgg.GL as gl # get all OpenGL stuff in one namespace
+
+import numpy
+import numpy as np
+
+# Define "sum" if it's not available as Python function
+try:
+    sum
+except NameError:
+    import operator
+    def sum( values ):
+        return reduce(operator.add, values )
+
+def swap_buffers():
+    VisionEgg.config._FRAMECOUNT_ABSOLUTE += 1
+    return pygame.display.flip()
+
+class PygameKeeper(object):
+    """global object that calls any cleanup functions when quitting pygame"""
+    def __init__(self):
+        self.to_call_on_quit = []
+    def register_func_to_call_on_quit(self,func):
+        if func not in self.to_call_on_quit:
+            self.to_call_on_quit.append(func)
+    def unregister_func_to_call_on_quit(self,func):
+        idx = self.to_call_on_quit.index(func)
+        del self.to_call_on_quit[idx]
+    def quit(self):
+        for func in self.to_call_on_quit:
+            func()
+        pygame.quit()
+pygame_keeper = PygameKeeper()
+
+####################################################################
+#
+#        Screen
+#
+####################################################################
+
+class Screen(VisionEgg.ClassWithParameters):
+    """An OpenGL window, possibly displayed across multiple displays.
+
+    A Screen instance is an OpenGL window for the Vision Egg to draw
+    in.  For an instance of Screen to do anything useful, it must
+    contain one or more instances of the Viewport class and one or
+    more instances of the Stimulus class.
+
+    Currently, only one OpenGL window is supported by the library with
+    which the Vision Egg initializes graphics (pygame/SDL).  However,
+    this need not limit display to a single physical display device.
+    Many video drivers, for example, allow applications to treat two
+    separate monitors as one large array of contiguous pixels.  By
+    sizing a window such that it occupies both monitors and creating
+    separate viewports for the portion of the window on each monitor,
+    a multiple screen effect can be created.
+
+    Public read-only variables
+    ==========================
+    size -- Tuple of 2 integers specifying width and height
+
+    Parameters
+    ==========
+    bgcolor -- background color (AnyOf(Sequence3 of Real or Sequence4 of Real))
+               Default: (0.5, 0.5, 0.5, 0.0)
+
+    Constant Parameters
+    ===================
+    alpha_bits          -- number of bits per pixel for alpha channel. Can be set with VISIONEGG_REQUEST_ALPHA_BITS (UnsignedInteger)
+                           Default: (determined at runtime)
+    blue_bits           -- number of bits per pixel for blue channel. Can be set with VISIONEGG_REQUEST_BLUE_BITS (UnsignedInteger)
+                           Default: (determined at runtime)
+    double_buffer       -- use double buffering? Can be set with VISIONEGG_DOUBLE_BUFFER (Boolean)
+                           Default: (determined at runtime)
+    frameless           -- remove standard window frame? Can be set with VISIONEGG_FRAMELESS_WINDOW (Boolean)
+                           Default: (determined at runtime)
+    fullscreen          -- use full screen? Can be set with VISIONEGG_FULLSCREEN (Boolean)
+                           Default: (determined at runtime)
+    green_bits          -- number of bits per pixel for green channel. Can be set with VISIONEGG_REQUEST_GREEN_BITS (UnsignedInteger)
+                           Default: (determined at runtime)
+    hide_mouse          -- hide the mouse cursor? Can be set with VISIONEGG_HIDE_MOUSE (Boolean)
+                           Default: (determined at runtime)
+    is_stereo           -- allocate stereo framebuffers? Can be set with VISIONEGG_REQUEST_STEREO (Boolean)
+                           Default: (determined at runtime)
+    maxpriority         -- raise priority? (platform dependent) Can be set with VISIONEGG_MAXPRIORITY (Boolean)
+                           Default: (determined at runtime)
+    multisample_samples -- preferred number of multisamples for FSAA (UnsignedInteger)
+                           Default: (determined at runtime)
+    preferred_bpp       -- preferred bits per pixel (bit depth) Can be set with VISIONEGG_PREFERRED_BPP (UnsignedInteger)
+                           Default: (determined at runtime)
+    red_bits            -- number of bits per pixel for red channel. Can be set with VISIONEGG_REQUEST_RED_BITS (UnsignedInteger)
+                           Default: (determined at runtime)
+    size                -- size (units: pixels) Can be set with VISIONEGG_SCREEN_W and VISIONEGG_SCREEN_H (Sequence2 of Real)
+                           Default: (determined at runtime)
+    sync_swap           -- synchronize buffer swaps to vertical sync? Can be set with VISIONEGG_SYNC_SWAP (Boolean)
+                           Default: (determined at runtime)
+    """
+
+    parameters_and_defaults = VisionEgg.ParameterDefinition({
+        'bgcolor':((0.5,0.5,0.5,0.0),
+                   ve_types.AnyOf(ve_types.Sequence3(ve_types.Real),
+                                  ve_types.Sequence4(ve_types.Real)),
+                   'background color',),
+        })
+
+    constant_parameters_and_defaults = VisionEgg.ParameterDefinition({
+        'size':(None,
+                ve_types.Sequence2(ve_types.Real),
+                'size (units: pixels) Can be set with VISIONEGG_SCREEN_W and VISIONEGG_SCREEN_H'),
+        'fullscreen':(None,
+                      ve_types.Boolean,
+                      'use full screen? Can be set with VISIONEGG_FULLSCREEN'),
+        'double_buffer':(None,
+                         ve_types.Boolean,
+                         'use double buffering? Can be set with VISIONEGG_DOUBLE_BUFFER'),
+        'preferred_bpp':(None,
+                         ve_types.UnsignedInteger,
+                         'preferred bits per pixel (bit depth) Can be set with VISIONEGG_PREFERRED_BPP'),
+        'maxpriority':(None,
+                       ve_types.Boolean,
+                       'raise priority? (platform dependent) Can be set with VISIONEGG_MAXPRIORITY'),
+        'hide_mouse':(None,
+                      ve_types.Boolean,
+                      'hide the mouse cursor? Can be set with VISIONEGG_HIDE_MOUSE'),
+        'frameless':(None,
+                     ve_types.Boolean,
+                     'remove standard window frame? Can be set with VISIONEGG_FRAMELESS_WINDOW'),
+        'sync_swap':(None,
+                     ve_types.Boolean,
+                     'synchronize buffer swaps to vertical sync? Can be set with VISIONEGG_SYNC_SWAP'),
+        'red_bits':(None,
+                    ve_types.UnsignedInteger,
+                    'number of bits per pixel for red channel. Can be set with VISIONEGG_REQUEST_RED_BITS'),
+        'green_bits':(None,
+                    ve_types.UnsignedInteger,
+                    'number of bits per pixel for green channel. Can be set with VISIONEGG_REQUEST_GREEN_BITS'),
+        'blue_bits':(None,
+                    ve_types.UnsignedInteger,
+                    'number of bits per pixel for blue channel. Can be set with VISIONEGG_REQUEST_BLUE_BITS'),
+        'alpha_bits':(None,
+                    ve_types.UnsignedInteger,
+                    'number of bits per pixel for alpha channel. Can be set with VISIONEGG_REQUEST_ALPHA_BITS'),
+        'is_stereo':(None,
+                     ve_types.Boolean,
+                     'allocate stereo framebuffers? Can be set with VISIONEGG_REQUEST_STEREO'),
+        'multisample_samples':(None, # support added by Mark Halko
+                               ve_types.UnsignedInteger,
+                               'preferred number of multisamples for FSAA'),
+        })
+
+    __slots__ = (
+        '__cursor_visible_func__',
+        '__pygame_quit__',
+        '_put_pixels_texture_stimulus',
+        '_pixel_coord_projection',
+        )
+
+    def __init__(self,**kw):
+        logger = logging.getLogger('VisionEgg.Core')
+
+        VisionEgg.ClassWithParameters.__init__(self,**kw)
+
+        cp = self.constant_parameters # shorthand
+        if cp.size is None:
+            cp.size = (VisionEgg.config.VISIONEGG_SCREEN_W,
+                       VisionEgg.config.VISIONEGG_SCREEN_H)
+        if cp.double_buffer is None:
+            cp.double_buffer = VisionEgg.config.VISIONEGG_DOUBLE_BUFFER
+        if cp.fullscreen is None:
+            cp.fullscreen = VisionEgg.config.VISIONEGG_FULLSCREEN
+        if cp.preferred_bpp is None:
+            cp.preferred_bpp = VisionEgg.config.VISIONEGG_PREFERRED_BPP
+        if cp.maxpriority is None:
+            cp.maxpriority = VisionEgg.config.VISIONEGG_MAXPRIORITY
+        if cp.hide_mouse is None:
+            cp.hide_mouse = VisionEgg.config.VISIONEGG_HIDE_MOUSE
+        if cp.frameless is None:
+            cp.frameless = VisionEgg.config.VISIONEGG_FRAMELESS_WINDOW
+        if cp.sync_swap is None:
+            cp.sync_swap = VisionEgg.config.VISIONEGG_SYNC_SWAP
+        if cp.red_bits is None:
+            cp.red_bits = VisionEgg.config.VISIONEGG_REQUEST_RED_BITS
+        if cp.green_bits is None:
+            cp.green_bits = VisionEgg.config.VISIONEGG_REQUEST_GREEN_BITS
+        if cp.blue_bits is None:
+            cp.blue_bits = VisionEgg.config.VISIONEGG_REQUEST_BLUE_BITS
+        if cp.alpha_bits is None:
+            cp.alpha_bits = VisionEgg.config.VISIONEGG_REQUEST_ALPHA_BITS
+        if cp.is_stereo is None:
+            cp.is_stereo = VisionEgg.config.VISIONEGG_REQUEST_STEREO
+        if cp.multisample_samples is None:
+             cp.multisample_samples = VisionEgg.config.VISIONEGG_MULTISAMPLE_SAMPLES
+
+        if VisionEgg.config.SYNCLYNC_PRESENT:
+            global synclync # import into global namespace
+            import synclync
+            try:
+                VisionEgg.config._SYNCLYNC_CONNECTION = synclync.SyncLyncConnection()
+            except synclync.SyncLyncError, x:
+                logger.warning( "Could not connect to SyncLync device (SyncLyncError: %s)."%str(x))
+                VisionEgg.config._SYNCLYNC_CONNECTION = None
+            else:
+                logger.info( "Connected to SyncLync device" )
+        else:
+            VisionEgg.config._SYNCLYNC_CONNECTION = None
+
+        # Attempt to synchronize buffer swapping with vertical sync
+        if cp.sync_swap:
+            sync_success = VisionEgg.PlatformDependent.sync_swap_with_vbl_pre_gl_init()
+
+        # Initialize pygame stuff
+#        if sys.platform == "darwin": # bug in Mac OS X version of pygame
+#            pygame.init()
+        pygame.display.init()
+
+        if hasattr(pygame.display,"gl_set_attribute"):
+            pygame.display.gl_set_attribute(pygame.locals.GL_RED_SIZE,cp.red_bits)
+            pygame.display.gl_set_attribute(pygame.locals.GL_GREEN_SIZE,cp.green_bits)
+            pygame.display.gl_set_attribute(pygame.locals.GL_BLUE_SIZE,cp.blue_bits)
+            pygame.display.gl_set_attribute(pygame.locals.GL_ALPHA_SIZE,cp.alpha_bits)
+	    pygame.display.gl_set_attribute(pygame.locals.GL_STEREO,cp.is_stereo)
+            #Request FSAA
+            if cp.multisample_samples > 0 :
+                pygame.display.gl_set_attribute(pygame.locals.GL_MULTISAMPLEBUFFERS,1)
+                pygame.display.gl_set_attribute(pygame.locals.GL_MULTISAMPLESAMPLES,cp.multisample_samples)
+        else:
+            logger.debug("Could not request or query exact bit depths, "
+                         "alpha or stereo because you need "
+                         "pygame release 1.4.9 or greater. This is "
+                         "only of concern if you use a stimulus that "
+                         "needs this. In that case, the stimulus "
+                         "should check for the desired feature(s).")
+
+        if not hasattr(pygame.display,"set_gamma_ramp"):
+            logger.debug("set_gamma_ramp function not available "
+                         "because you need pygame release 1.5 or "
+                         "greater. This is only of concern if you "
+                         "need this feature.")
+        pygame.display.set_caption("Vision Egg")
+
+        flags = pygame.locals.OPENGL
+        if cp.double_buffer:
+            flags = flags | pygame.locals.DOUBLEBUF
+        if cp.fullscreen:
+            flags = flags | pygame.locals.FULLSCREEN
+        if cp.frameless:
+            flags = flags | pygame.locals.NOFRAME
+
+        try_bpp = cp.preferred_bpp
+
+        append_str = ""
+        if cp.fullscreen:
+            screen_mode = "fullscreen"
+        else:
+            screen_mode = "window"
+        if hasattr(pygame.display,"gl_set_attribute"):
+            append_str = " (%d %d %d %d RGBA)."%(cp.red_bits,
+                                                 cp.green_bits,
+                                                 cp.blue_bits,
+                                                 cp.alpha_bits)
+
+        logger.info("Requesting %s %d x %d %d bpp%s"%
+                    (screen_mode,self.size[0],self.size[1],
+                     try_bpp,append_str))
+
+        pygame.display.set_mode(self.size, flags, try_bpp )
+        # set a global variable so we know workaround avoid pygame bug
+        VisionEgg.config._pygame_started = 1
+
+        try:
+            if sys.platform != 'darwin':
+                pygame.display.set_icon(pygame.transform.scale(pygame.image.load(
+                    os.path.join(VisionEgg.config.VISIONEGG_SYSTEM_DIR,
+                                 'data','visionegg.bmp')).convert(),(32,32)))
+            else:
+                import AppKit # requires PyObjC, which is required by pygame osx
+                im = AppKit.NSImage.alloc()
+                im.initWithContentsOfFile_(
+                    os.path.join(VisionEgg.config.VISIONEGG_SYSTEM_DIR,
+                                 'data','visionegg.tif'))
+                AppKit.NSApplication.setApplicationIconImage_(AppKit.NSApp(),im)
+
+        except Exception,x:
+            logger.info("Error while trying to set_icon: %s: %s"%
+                        (str(x.__class__),str(x)))
+
+        global gl_vendor, gl_renderer, gl_version
+        gl_vendor = gl.glGetString(gl.GL_VENDOR)
+        gl_renderer = gl.glGetString(gl.GL_RENDERER)
+        gl_version = gl.glGetString(gl.GL_VERSION)
+
+        logger.info("OpenGL %s, %s, %s (PyOpenGL %s)"%
+                    (gl_version, gl_renderer, gl_vendor, gl.__version__))
+
+        if gl_renderer == "GDI Generic" and gl_vendor == "Microsoft Corporation":
+            logger.warning("Using default Microsoft Windows OpenGL "
+                           "drivers.  Please (re-)install the latest "
+                           "video drivers from your video card "
+                           "manufacturer to get hardware accelerated "
+                           "performance.")
+        if gl_renderer == "Mesa GLX Indirect" and gl_vendor == "VA Linux Systems, Inc.":
+            logger.warning("Using default Mesa GLX drivers. Please "
+                           "(re-)install the latest video drivers from "
+                           "your video card manufacturer or DRI "
+                           "project to get hardware accelarated "
+                           "performance.")
+        # Set values to unknown and fill based on OpenGL values
+        cp.red_bits = None
+        cp.green_bits = None
+        cp.blue_bits = None
+        cp.alpha_bits = None
+        cp.is_stereo = None
+        got_bpp = pygame.display.Info().bitsize
+        append_str = ''
+        if hasattr(pygame.display,"gl_get_attribute"):
+            # Fill in values as known
+            cp.red_bits = pygame.display.gl_get_attribute(pygame.locals.GL_RED_SIZE)
+            cp.green_bits = pygame.display.gl_get_attribute(pygame.locals.GL_GREEN_SIZE)
+            cp.blue_bits = pygame.display.gl_get_attribute(pygame.locals.GL_BLUE_SIZE)
+            cp.alpha_bits = pygame.display.gl_get_attribute(pygame.locals.GL_ALPHA_SIZE)
+            cp.is_stereo = pygame.display.gl_get_attribute(pygame.locals.GL_STEREO)
+            if cp.is_stereo: stereo_string = ' stereo'
+            else: stereo_string = ''
+            append_str = " (%d %d %d %d RGBA%s)"%(
+                cp.red_bits,cp.green_bits,cp.blue_bits,cp.alpha_bits,
+                stereo_string)
+        logger.info("Video system reports %d bpp%s."%(got_bpp,append_str))
+        if got_bpp < try_bpp:
+            logger.warning("Video system reports %d bits per pixel, "
+                           "while your program requested %d. Can you "
+                           "adjust your video drivers?"%(got_bpp,
+                           try_bpp))
+        # Save the address of these functions so they can be called
+        # when closing the screen.
+        self.__cursor_visible_func__ = pygame.mouse.set_visible
+        self.__pygame_quit__ = pygame_keeper.quit
+
+        #Check FSAA requests
+        if cp.multisample_samples>0 :
+            if hasattr(pygame.display,"gl_set_attribute"):
+                got_ms_buf = pygame.display.gl_get_attribute(pygame.locals.GL_MULTISAMPLEBUFFERS)
+                got_ms_samp = pygame.display.gl_get_attribute(pygame.locals.GL_MULTISAMPLESAMPLES)
+                if got_ms_samp < cp.multisample_samples :
+                    logger.warning("Video system reports %d multisample samples, "
+                                   "while you requested %d.  FSAA requires "
+                                   "SDL > 1.2.6, check that it is installed."%(got_ms_samp, cp.multisample_samples))
+
+        # Attempt to synchronize buffer swapping with vertical sync again
+        if cp.sync_swap:
+            if not sync_success:
+                if not VisionEgg.PlatformDependent.sync_swap_with_vbl_post_gl_init():
+                    cp.sync_swap = False
+                    logger.warning("Unable to detect or automatically "
+                                   "synchronize buffer swapping with "
+                                   "vertical retrace. May be possible "
+                                   "by manually adjusting video "
+                                   "drivers. (Look for 'Enable "
+                                   "Vertical Sync' or similar.) If "
+                                   "buffer swapping is not "
+                                   "synchronized, frame by frame "
+                                   "control will not be possible. "
+                                   "Because of this, you will probably "
+                                   "get a warning about calculated "
+                                   "frames per second different than "
+                                   "specified.")
+        # Check previously made OpenGL assumptions now that we have OpenGL window
+        post_gl_init()
+
+        if cp.hide_mouse:
+            self.__cursor_visible_func__(0)
+
+        # Attempt to set maximum priority (This may not be the best
+        # place in the code to do it because it's an application-level
+        # thing, not a screen-level thing, but it fits reasonably well
+        # here for now.)
+        if cp.maxpriority:
+            VisionEgg.PlatformDependent.set_priority() # defaults to max priority
+
+        if hasattr(VisionEgg.config,'_open_screens'):
+            VisionEgg.config._open_screens.append(self)
+        else:
+            VisionEgg.config._open_screens = [self]
+
+    # Use Python descriptors (introduced in Python 2.2) to link size
+    # attribute to constant_parameters.size.
+    def get_size(self): return self.constant_parameters.size
+    def set_size(self, value): raise RuntimeError("Attempting to set read-only value")
+    size = property(get_size,set_size)
+
+    def get_framebuffer_as_image(self,
+                                 buffer='back',
+                                 format=gl.GL_RGB,
+                                 position=(0,0),
+                                 anchor='lowerleft',
+                                 size=None, # if None, use full screen
+                                 ):
+        """get pixel values from framebuffer to PIL image"""
+        import Image # Could import this at the beginning of the file, but it breaks sometimes.
+
+        fb_array = self.get_framebuffer_as_array(buffer=buffer,
+                                                 format=format,
+                                                 position=position,
+                                                 anchor=anchor,
+                                                 size=size,
+                                                 )
+        size = fb_array.shape[1], fb_array.shape[0]
+        if format == gl.GL_RGB:
+            pil_mode = 'RGB'
+        elif format == gl.GL_RGBA:
+            pil_mode = 'RGBA'
+        fb_image = Image.fromstring(pil_mode,size,fb_array.tostring())
+        fb_image = fb_image.transpose( Image.FLIP_TOP_BOTTOM )
+        return fb_image
+
+    def get_framebuffer_as_array(self,
+                                 buffer='back',
+                                 format=gl.GL_RGB,
+                                 position=(0,0),
+                                 anchor='lowerleft',
+                                 size=None, # if None, use full screen
+                                 ):
+        """get pixel values from framebuffer to numpy array"""# (SLOW)"""
+        if size is None:
+            size = self.size
+        lowerleft = VisionEgg._get_lowerleft(position,anchor,size)
+        if buffer == 'front':
+            gl.glReadBuffer( gl.GL_FRONT )
+        elif buffer == 'back':
+            gl.glReadBuffer( gl.GL_BACK )
+        else:
+            raise ValueError('No support for "%s" framebuffer'%buffer)
+
+        framebuffer_pixels = gl.glReadPixels(lowerleft[0],lowerleft[1],
+                                             size[0],size[1],
+                                             gl.GL_RGBA,
+                                             gl.GL_UNSIGNED_BYTE)
+        raw_format = 'RGBA'
+        fb_array = np.fromstring(framebuffer_pixels,np.uint8)
+        fb_array = np.reshape(fb_array,(size[1],size[0],4))
+        # These work, but I don't know why.  There must be something I
+        # don't understand about byte ordering!
+        if format == gl.GL_RGB:
+            if raw_format == 'BGRA':
+                fb_array = fb_array[:,:,1:]
+            elif raw_format == 'RGBA':
+                fb_array = fb_array[:,:,:3]
+        elif format == gl.GL_RGBA:
+            if raw_format == 'BGRA':
+                B = fb_array[:,:,0,np.newaxis]
+                G = fb_array[:,:,1,np.newaxis]
+                R   = fb_array[:,:,2,np.newaxis]
+                A = fb_array[:,:,3,np.newaxis]
+                fb_array = np.concatenate( (R,G,B,A), axis=2)
+            elif raw_format == 'RGBA':
+                pass
+        else:
+            raise NotImplementedError("Only RGB and RGBA formats currently supported")
+        return fb_array
+
+    def put_pixels(self,
+                   pixels=None,
+                   position=(0,0),
+                   anchor='lowerleft',
+                   scale_x=1.0, # "zoom" the pixels
+                   scale_y=1.0, # "zoom" the pixels
+                   texture_min_filter=gl.GL_NEAREST, # only used if scale < 1.0
+                   texture_mag_filter=gl.GL_NEAREST, # only used if scale > 1.0
+                   internal_format=gl.GL_RGB, # pixel data converted to this format in texture (gl.GL_RGBA also useful)
+                   ):
+        """Put pixel values to screen.
+
+        Pixel values become texture data using the VisionEgg.Textures
+        module.  Any source of texture data accepted by that module is
+        accepted here.
+
+        This function could be sped up by allocating a fixed OpenGL texture object.
+
+        """
+
+        import VisionEgg.Textures # import here to avoid import loop
+        make_new_texture_object = 0
+        if not hasattr(self, "_put_pixels_texture_stimulus"):
+            make_new_texture_object = 1
+        else:
+            if internal_format != self._put_pixels_texture_stimulus.constant_parameters.internal_format:
+                make_new_texture_object = 1
+        if make_new_texture_object:
+            # For speed, don't do this on anything other than 1st run
+            texture = VisionEgg.Textures.Texture(pixels)
+            on_screen_size = (texture.size[0]*scale_x, texture.size[1]*scale_y)
+            t = VisionEgg.Textures.TextureStimulus(texture=texture,
+                                                   position=position,
+                                                   anchor=anchor,
+                                                   size=on_screen_size,
+                                                   mipmaps_enabled=0,
+                                                   texture_min_filter=texture_min_filter,
+                                                   texture_mag_filter=texture_mag_filter,
+                                                   internal_format = internal_format,
+                                                   )
+            self._put_pixels_texture_stimulus = t # rename
+            self._pixel_coord_projection = OrthographicProjection(left=0,
+                                                                  right=self.size[0],
+                                                                  bottom=0,
+                                                                  top=self.size[1],
+                                                                  z_clip_near=0.0,
+                                                                  z_clip_far=1.0)
+        else:
+            # We've run once before and therefore already have a
+            # texture stimulus. (XXX In the future, make use of
+            # already assigned texture object and use put_sub_image
+            # for speed.)
+            self._put_pixels_texture_stimulus.parameters.texture = VisionEgg.Textures.Texture(pixels)
+
+        self._pixel_coord_projection.push_and_set_gl_projection() # Save projection
+        self._put_pixels_texture_stimulus.draw() # Draw pixels as texture
+
+        gl.glMatrixMode(gl.GL_PROJECTION) # Restore projection
+        gl.glPopMatrix()
+
+    def query_refresh_rate(self):
+        return VisionEgg.PlatformDependent.query_refresh_rate(self)
+
+    def measure_refresh_rate(self,average_over_seconds=0.1):
+        """Measure the refresh rate. Assumes swap buffers synced."""
+        start_time = VisionEgg.time_func()
+        duration_sec = 0.0
+        num_frames = 0
+        while duration_sec < average_over_seconds:
+            swap_buffers()
+            now = VisionEgg.time_func()
+            num_frames += 1
+            duration_sec = now - start_time
+        if duration_sec > 0.0:
+            fps = num_frames / duration_sec
+        else:
+            fps = 0.0
+        return fps
+
+    def clear(self):
+        """Called by Presentation instance. Clear the screen."""
+
+        c = self.parameters.bgcolor # Shorthand
+        if len(c) == 4:
+            gl.glClearColor(*c)
+        else:
+            gl.glClearColor(c[0],c[1],c[2],0.0) # set alpha to 0.0 unless specified
+        gl.glClear(gl.GL_COLOR_BUFFER_BIT | gl.GL_DEPTH_BUFFER_BIT)
+
+    def make_current(self):
+        """Called by Viewport instance. Makes screen active for drawing.
+
+        Can not be implemented until multiple screens are possible."""
+        pass
+
+    def set_gamma_ramp(self,*args,**kw):
+        """Set the gamma_ramp, if supported.
+
+        Call pygame.display.set_gamma_ramp, if available.
+
+        Returns True on success, False otherwise."""
+        if not hasattr(pygame.display,"set_gamma_ramp"):
+            logger = logging.getLogger('VisionEgg.Core')
+            logger.error("Need pygame 1.5 or greater for set_gamma_ramp function")
+            return False
+        if pygame.display.set_gamma_ramp(*args,**kw):
+            return True
+        else:
+            return False
+
+    def close(self):
+        """Close the screen.
+
+        You can call this to close the screen.  Not necessary during
+        normal operation because it gets automatically deleted."""
+        # Close pygame if possible
+        if hasattr(VisionEgg.config,'_open_screens'):
+            if self in VisionEgg.config._open_screens:
+                VisionEgg.config._open_screens.remove(self)
+            if len(VisionEgg.config._open_screens) == 0:
+                # no more open screens
+                if hasattr(self,"__cursor_visible_func__"):
+                    self.__cursor_visible_func__(1)
+                pygame_keeper.quit()
+        # No access to the cursor visible function anymore
+        if hasattr(self,"__cursor_visible_func__"):
+            del self.__cursor_visible_func__
+
+    def __del__(self):
+        # Make sure mouse is visible after screen closed.
+        if hasattr(self,"__cursor_visible_func__"):
+            try:
+                self.__cursor_visible_func__(1)
+                self.__pygame_quit__()
+            except pygame.error, x:
+                if str(x) != 'video system not initialized':
+                    raise
+
+    def create_default():
+        """Alternative constructor using configuration variables.
+
+        Most of the time you can create and instance of Screen using
+        this method.  If your script needs explicit control of the
+        Screen parameters, initialize with the normal constructor.
+
+        Uses VisionEgg.config.VISIONEGG_GUI_INIT to determine how the
+        default screen parameters should are determined.  If this
+        value is 0, the values from VisionEgg.cfg are used.  If this
+        value is 1, a GUI panel is opened and allows manual settings
+        of the screen parameters.  """
+
+        global VisionEgg # Allow "VisionEgg.config" instead of just "config"
+        if VisionEgg.config.VISIONEGG_GUI_INIT:
+            import VisionEgg.GUI # Could import in beginning, but no need if not using GUI
+            window = VisionEgg.GUI.GraphicsConfigurationWindow()
+            window.mainloop() # All this does is adjust VisionEgg.config
+            if not window.clicked_ok:
+                sys.exit() # User wants to quit
+        screen = None
+        try:
+            screen = Screen(size=(VisionEgg.config.VISIONEGG_SCREEN_W,
+                                  VisionEgg.config.VISIONEGG_SCREEN_H),
+                            fullscreen=VisionEgg.config.VISIONEGG_FULLSCREEN,
+                            preferred_bpp=VisionEgg.config.VISIONEGG_PREFERRED_BPP,
+                            bgcolor=(0.5,0.5,0.5,0.0),
+                            maxpriority=VisionEgg.config.VISIONEGG_MAXPRIORITY,
+                            frameless=VisionEgg.config.VISIONEGG_FRAMELESS_WINDOW,
+                            hide_mouse=VisionEgg.config.VISIONEGG_HIDE_MOUSE)
+        finally:
+            if screen is None:
+                # Opening screen failed.  Let's do any cleanup that Screen.__init__ missed.
+                try:
+                    pygame.mouse.set_visible(1) # make sure mouse is visible
+                    pygame_keeper.quit() # close screen
+                except pygame.error, x:
+                    if str(x) != 'video system not initialized':
+                        raise
+
+        if screen is None:
+            raise RuntimeError("Screen open failed. Check your error log for a traceback.")
+
+        gamma_source = VisionEgg.config.VISIONEGG_GAMMA_SOURCE.lower()
+        if gamma_source != 'none':
+            if gamma_source == 'invert':
+                native_red = VisionEgg.config.VISIONEGG_GAMMA_INVERT_RED
+                native_green = VisionEgg.config.VISIONEGG_GAMMA_INVERT_GREEN
+                native_blue = VisionEgg.config.VISIONEGG_GAMMA_INVERT_BLUE
+                red = screen._create_inverted_gamma_ramp( native_red )
+                green = screen._create_inverted_gamma_ramp( native_green )
+                blue = screen._create_inverted_gamma_ramp( native_blue )
+                gamma_set_string = "linearized gamma lookup tables to correct "+\
+                                   "monitor with native gammas (%f, %f, %f) RGB"%(
+                    native_red,
+                    native_green,
+                    native_blue)
+            elif gamma_source == 'file':
+                filename = VisionEgg.config.VISIONEGG_GAMMA_FILE
+                red, green, blue = screen._open_gamma_file(filename)
+                gamma_set_string = "set gamma lookup tables from data in file %s"%os.path.abspath(filename)
+            else:
+                raise ValueError("Unknown gamma source: '%s'"%gamma_source)
+            logger = logging.getLogger('VisionEgg.Core')
+            if not screen.set_gamma_ramp(red,green,blue):
+                logger.warning( "Setting gamma ramps failed." )
+            else:
+                logger.info( "Gamma set sucessfully: %s"%gamma_set_string )
+        return screen
+    create_default = staticmethod(create_default)
+
+    def _create_inverted_gamma_ramp(self, gamma):
+        # c is a constant scale factor.  It is always 1.0 when
+        # luminance is normalized to range [0.0,1.0] and input units
+        # in range [0.0,1.0], as is OpenGL standard.
+        c = 1.0
+        inc = 1.0/255
+        target_luminances = np.arange(0.0,1.0+inc,inc)
+        output_ramp = np.zeros(target_luminances.shape,dtype=np.int)
+        for i in range(len(target_luminances)):
+            L = target_luminances[i]
+            if L == 0.0:
+                v_88fp = 0
+            else:
+                v = math.exp( (math.log(L) - math.log(c)) /gamma)
+                v_88fp = int(round((v*255) * 256)) # convert to from [0.0,1.0] floating point to [0.0,255.0] 8.8 fixed point
+            output_ramp[i] = v_88fp # 8.8 fixed point format
+        return list(output_ramp) # convert to Python list
+
+    def _open_gamma_file(self, filename):
+        fd = open(filename,"r")
+        gamma_values = []
+        for line in fd.readlines():
+            line = line.strip() # remove leading/trailing whitespace
+            if line.startswith("#"): # comment, ignore
+                continue
+            gamma_values.append( map(int, line.split() ) )
+            if len(gamma_values[-1]) != 3:
+                raise ValueError("expected 3 values per gamma entry")
+        if len(gamma_values) != 256:
+            raise ValueError("expected 256 gamma entries")
+        red, green, blue = zip(*gamma_values)
+        return red,green,blue
+
+def get_default_screen():
+    """Make an instance of Screen using a GUI window or from config file."""
+    return Screen.create_default()
+
+####################################################################
+#
+#        Projection and derived classes
+#
+####################################################################
+
+class ProjectionBaseClass(VisionEgg.ClassWithParameters):
+    """Base class for 4x4 linear matrix transformation
+
+    This is an abstract base class which should be subclassed for
+    actual use.
+
+    Parameters
+    ==========
+    matrix -- matrix specifying projection (Sequence4x4 of Real)
+              Default: [[1 0 0 0]
+                        [0 1 0 0]
+                        [0 0 1 0]
+                        [0 0 0 1]]
+    """
+
+    # WARNING: This implementation should really get cleaned up and
+    # NOT use OpenGL except when purposefully setting matrices.
+
+    parameters_and_defaults = VisionEgg.ParameterDefinition({
+        'matrix':( numpy.eye(4), # 4x4 identity matrix
+                   ve_types.Sequence4x4(ve_types.Real),
+                   'matrix specifying projection'),
+        })
+
+    __slots__ = (
+        'projection_type',
+        )
+
+    def __init__(self,**kw):
+        VisionEgg.ClassWithParameters.__init__(self,**kw)
+        self.projection_type = None # derived class must override
+
+    def _get_matrix_type(self):
+        if self.projection_type == gl.GL_PROJECTION:
+            return gl.GL_PROJECTION_MATRIX
+        elif self.projection_type == gl.GL_MODELVIEW:
+            return gl.GL_MODELVIEW_MATRIX
+
+    def apply_to_gl(self):
+        """Set the OpenGL projection matrix."""
+        gl.glMatrixMode(self.projection_type)
+        gl.glLoadMatrixf(self.parameters.matrix) # Need PyOpenGL >= 2.0
+
+    def set_gl_modelview(self):
+        """Set the OpenGL modelview matrix."""
+        gl.glMatrixMode(gl.GL_MODELVIEW)
+        gl.glLoadMatrixf(self.parameters.matrix) # Need PyOpenGL >= 2.0
+
+    def set_gl_projection(self):
+        """Set the OpenGL projection matrix."""
+        gl.glMatrixMode(gl.GL_PROJECTION)
+        gl.glLoadMatrixf(self.parameters.matrix) # Need PyOpenGL >= 2.0
+
+    def push_and_set_gl_projection(self):
+        """Set the OpenGL projection matrix, pushing current projection matrix to stack."""
+        gl.glMatrixMode(self.projection_type) # Set OpenGL matrix state to modify the projection matrix
+        gl.glPushMatrix()
+        gl.glLoadMatrixf(self.parameters.matrix) # Need PyOpenGL >= 2.0
+
+    def translate(self,x,y,z):
+        """Compose a translation and set the OpenGL projection matrix."""
+        gl.glMatrixMode(self.projection_type) # Set OpenGL matrix state to modify the projection matrix
+        gl.glLoadMatrixf(self.parameters.matrix) # Need PyOpenGL >= 2.0
+        gl.glTranslatef(x,y,z)
+        self.parameters.matrix = gl.glGetFloatv(self._get_matrix_type())
+
+    def stateless_translate(self,x,y,z):
+        """Compose a translation without changing OpenGL state."""
+        M = VisionEgg.ThreeDeeMath.TransformMatrix(self.parameters.matrix)
+        M.translate(x,y,z)
+        self.parameters.matrix = M.get_matrix()
+
+    def rotate(self,angle_degrees,x,y,z):
+        """Compose a rotation and set the OpenGL projection matrix."""
+        gl.glMatrixMode(self.projection_type) # Set OpenGL matrix state to modify the projection matrix
+        gl.glLoadMatrixf(self.parameters.matrix) # Need PyOpenGL >= 2.0
+        gl.glRotatef(angle_degrees,x,y,z)
+        self.parameters.matrix = gl.glGetFloatv(self._get_matrix_type())
+
+    def stateless_rotate(self,angle_degrees,x,y,z):
+        """Compose a rotation without changing OpenGL state."""
+        M = VisionEgg.ThreeDeeMath.TransformMatrix(self.parameters.matrix)
+        M.rotate(angle_degrees,x,y,z)
+        self.parameters.matrix = M.get_matrix()
+
+    def scale(self,x,y,z):
+        """Compose a rotation and set the OpenGL projection matrix."""
+        gl.glMatrixMode(self.projection_type) # Set OpenGL matrix state to modify the projection matrix
+        gl.glLoadMatrixf(self.parameters.matrix) # Need PyOpenGL >= 2.0
+        gl.glScalef(x,y,z)
+        self.parameters.matrix = gl.glGetFloatv(self._get_matrix_type())
+
+    def stateless_scale(self,x,y,z):
+        """Compose a rotation without changing OpenGL state."""
+        M = VisionEgg.ThreeDeeMath.TransformMatrix(self.parameters.matrix)
+        M.scale(x,y,z)
+        self.parameters.matrix = M.get_matrix()
+
+    def get_matrix(self):
+        return self.parameters.matrix
+
+    def look_at(self, eye, center, up ):
+        # Basically the same as gluLookAt
+        def normalize(vec):
+            numpy_vec = numpy.asarray(vec)
+            mag = math.sqrt(numpy.sum(numpy_vec**2))
+            return numpy_vec / mag
+        def cross(vec1,vec2):
+            return ( vec1[1]*vec2[2] - vec1[2]*vec2[1],
+                     vec1[2]*vec2[0] - vec1[0]*vec2[2],
+                     vec1[0]*vec2[1] - vec1[1]*vec2[0] )
+        forward = numpy.array(( center[0] - eye[0],
+                                center[1] - eye[1],
+                                center[2] - eye[2]),'f')
+        forward = normalize(forward)
+        side = cross(forward,up)
+        side = normalize(side)
+        new_up = cross(side,forward) # recompute up
+        # XXX I might have to transpose this matrix
+        m = np.array([[side[0], new_up[0], -forward[0], 0.0],
+                      [side[1], new_up[1], -forward[1], 0.0],
+                      [side[2], new_up[2], -forward[2], 0.0],
+                      [    0.0,       0.0,         0.0, 1.0]])
+        # XXX This should get optimized -- don't do it in OpenGL
+        gl.glMatrixMode(self.projection_type) # Set OpenGL matrix state to modify the projection matrix
+        gl.glPushMatrix() # save current matrix
+        try:
+            gl.glLoadMatrixf(self.parameters.matrix) # Need PyOpenGL >= 2.0
+            gl.glMultMatrixf(m)
+            gl.glTranslatef(-eye[0],-eye[1],-eye[2])
+            self.parameters.matrix = gl.glGetFloatv(self._get_matrix_type())
+        finally:
+            gl.glPopMatrix() # save current matrix
+
+    def eye_2_clip(self,eye_coords_vertex):
+        """Transform eye coordinates to clip coordinates"""
+        m = np.array(self.parameters.matrix)
+        v = np.array(eye_coords_vertex)
+        homog = VisionEgg.ThreeDeeMath.make_homogeneous_coord_rows(v)
+        r = numpy.dot(homog,m)
+        if len(homog.shape) > len(v.shape):
+            r = np.reshape(r,(4,))
+        return r
+    def clip_2_norm_device(self,clip_coords_vertex):
+        """Transform clip coordinates to normalized device coordinates"""
+        v = numpy.array(clip_coords_vertex)
+        homog = VisionEgg.ThreeDeeMath.make_homogeneous_coord_rows(v)
+        err=numpy.seterr(all='ignore')
+        r = (homog/homog[:,3,numpy.newaxis])[:,:3]
+        numpy.seterr(**err)
+        if len(homog.shape) > len(v.shape):
+            r = np.reshape(r,(3,))
+        return r
+    def eye_2_norm_device(self,eye_coords_vertex):
+        """Transform eye coordinates to normalized device coordinates"""
+        return self.clip_2_norm_device(self.eye_2_clip(eye_coords_vertex))
+
+    def apply_to_vertex(self,vertex):
+        """Perform multiplication on vertex to get transformed result"""
+        M = VisionEgg.ThreeDeeMath.TransformMatrix(matrix=self.parameters.matrix)
+        r = M.transform_vertices([vertex])
+        return r[0]
+
+    def apply_to_vertices(self,vertices):
+        """Perform multiplication on vertex to get transformed result"""
+        M = VisionEgg.ThreeDeeMath.TransformMatrix(matrix=self.parameters.matrix)
+        r = M.transform_vertices(vertices)
+        return r
+
+class Projection(ProjectionBaseClass):
+    """for use of OpenGL PROJECTION_MATRIX
+
+    Converts eye coordinates to clip coordinates.
+
+    Parameters
+    ==========
+    matrix -- matrix specifying projection (Sequence4x4 of Real)
+              Default: [[1 0 0 0]
+                        [0 1 0 0]
+                        [0 0 1 0]
+                        [0 0 0 1]]
+    """
+
+    def __init__(self,*args,**kw):
+        ProjectionBaseClass.__init__(self,*args,**kw)
+        self.projection_type = gl.GL_PROJECTION
+
+class ModelView(ProjectionBaseClass):
+    """for use of OpenGL MODELVIEW_MATRIX
+
+    Converts object coordinates to eye coordinates.
+
+    Parameters
+    ==========
+    matrix -- matrix specifying projection (Sequence4x4 of Real)
+              Default: [[1 0 0 0]
+                        [0 1 0 0]
+                        [0 0 1 0]
+                        [0 0 0 1]]
+    """
+
+    def __init__(self,*args,**kw):
+        ProjectionBaseClass.__init__(self,*args,**kw)
+        self.projection_type = gl.GL_MODELVIEW
+
+class OrthographicProjection(Projection):
+    """An orthographic projection.
+
+    Parameters
+    ==========
+    matrix -- matrix specifying projection (Sequence4x4 of Real)
+              Default: [[1 0 0 0]
+                        [0 1 0 0]
+                        [0 0 1 0]
+                        [0 0 0 1]]
+    """
+
+    def __init__(self,left=0.0,right=640.0,bottom=0.0,top=480.0,z_clip_near=0.0,z_clip_far=1.0):
+        """Create an orthographic projection.
+
+        Defaults to map x eye coordinates in the range [0,640], y eye
+        coordinates [0,480] and clip coordinates [0,1] to [0,1].
+        Therefore, if the viewport is 640 x 480, eye coordinates
+        correspond 1:1 with window (pixel) coordinates.  Only points
+        between these clipping planes will be displayed.
+        """
+
+        # using numpy (from the OpenGL spec):
+        matrix = np.array([[ 2./(right-left), 0.,              0.,                           -(right+left)/(right-left)],
+                           [ 0.,              2./(top-bottom), 0.,                           -(top+bottom)/(top-bottom)],
+                           [ 0.,              0.,              -2./(z_clip_far-z_clip_near), -(z_clip_far+z_clip_near)/(z_clip_far-z_clip_near)],
+                           [ 0.,              0.,              0.,                           1.0]])
+        matrix = np.transpose(matrix) # convert to OpenGL format
+
+        ## same as above, but use OpenGL
+        #gl.glMatrixMode(gl.GL_PROJECTION)
+        #gl.glPushMatrix() # save current matrix
+        #gl.glLoadIdentity()
+        #gl.glOrtho(left,right,bottom,top,z_clip_near,z_clip_far)
+        #matrix = gl.glGetFloatv(gl.GL_PROJECTION_MATRIX)
+        #gl.glPopMatrix() # restore original matrix
+
+        Projection.__init__(self,**{'matrix':matrix})
+
+class OrthographicProjectionNoZClip(Projection):
+    """An orthographic projection without Z clipping.
+
+    Parameters
+    ==========
+    matrix -- matrix specifying projection (Sequence4x4 of Real)
+              Default: [[1 0 0 0]
+                        [0 1 0 0]
+                        [0 0 1 0]
+                        [0 0 0 1]]
+    """
+
+    def __init__(self,left=0.0,right=640.0,bottom=0.0,top=480.0):
+        """Create an orthographic projection without Z clipping.
+
+        Defaults to map x eye coordinates in the range [0,640] and y
+        eye coordinates [0,480] -> [0,1].  Therefore, if the viewport
+        is 640 x 480, eye coordinates correspond 1:1 with window
+        (pixel) coordinates.
+        """
+
+        # using numpy (from the OpenGL spec):
+        matrix = np.array([[ 2./(right-left), 0,               0, -(right+left)/(right-left)],
+                           [ 0,               2./(top-bottom), 0, -(top+bottom)/(top-bottom)],
+                           [ 0,               0,              -1, -1.],
+                           [ 0,               0,               0,  1]])
+        matrix = np.transpose(matrix) # convert to OpenGL format
+
+        Projection.__init__(self,**{'matrix':matrix})
+
+class SimplePerspectiveProjection(Projection):
+    """A simplified perspective projection.
+
+    Parameters
+    ==========
+    matrix -- matrix specifying projection (Sequence4x4 of Real)
+              Default: [[1 0 0 0]
+                        [0 1 0 0]
+                        [0 0 1 0]
+                        [0 0 0 1]]
+    """
+
+    def __init__(self,fov_x=45.0,z_clip_near = 0.1,z_clip_far=10000.0,aspect_ratio=4.0/3.0):
+        matrix = self._compute_matrix(fov_x,z_clip_near,z_clip_far,aspect_ratio)
+        Projection.__init__(self,**{'matrix':matrix})
+
+    def _compute_matrix(self,fov_x=45.0,z_clip_near = 0.1,z_clip_far=10000.0,aspect_ratio=4.0/3.0):
+        """Compute a 4x4 projection matrix that performs a perspective distortion."""
+        fov_y = fov_x / aspect_ratio
+        # This is a translation of what gluPerspective does:
+        #glu.gluPerspective(fov_y,aspect_ratio,z_clip_near,z_clip_far)
+        radians = fov_y / 2.0 * math.pi / 180.0
+        delta_z = z_clip_far - z_clip_near
+        sine = math.sin(radians)
+        if (delta_z == 0.0) or (sine == 0.0) or (aspect_ratio == 0.0):
+            raise ValueError("Invalid parameters passed to SimpleProjection.__init__()")
+        cotangent = math.cos(radians) / sine
+        matrix = np.zeros((4,4))
+        matrix[0][0] = cotangent/aspect_ratio
+        matrix[1][1] = cotangent
+        matrix[2][2] = -(z_clip_far + z_clip_near) / delta_z
+        matrix[2][3] = -1.0 # XXX this
+        matrix[3][2] = -2.0 * z_clip_near * z_clip_far / delta_z # XXX and this might cause the matrix to need to be transposed
+        matrix[3][3] = 0.0
+        return matrix
+
+class PerspectiveProjection(Projection):
+    """A perspective projection.
+
+    Parameters
+    ==========
+    matrix -- matrix specifying projection (Sequence4x4 of Real)
+              Default: [[1 0 0 0]
+                        [0 1 0 0]
+                        [0 0 1 0]
+                        [0 0 0 1]]
+    """
+
+    def __init__(self,left,right,bottom,top,near,far):
+        # XXX right now this is done in OpenGL, we should do it ourselves
+        gl.glMatrixMode(gl.GL_PROJECTION) # Set OpenGL matrix state to modify the projection matrix
+        gl.glPushMatrix()
+        gl.glLoadIdentity() # Clear the projection matrix
+        gl.glFrustum(left,right,bottom,top,near,far) # Let GL create a matrix and compose it
+        matrix = gl.glGetFloatv(gl.GL_PROJECTION_MATRIX)
+        gl.glPopMatrix()
+        if matrix is None:
+            # OpenGL wasn't started
+            raise RuntimeError("OpenGL matrix operations can only take place once OpenGL context started.")
+        matrix = np.asarray(matrix) # make sure it's numpy array
+        Projection.__init__(self,**{'matrix':matrix})
+
+####################################################################
+#
+#        Stimulus - Base class
+#
+####################################################################
+
+class Stimulus(VisionEgg.ClassWithParameters):
+    """Base class for a stimulus.
+
+    Any stimulus element should be a subclass of this Stimulus class.
+    The draw() method contains the code executed before every buffer
+    swap in order to render the stimulus to the frame buffer.  It
+    should execute as quickly as possible.  The init_gl() method must
+    be called before the first call to draw() so that any internal
+    data, OpenGL display lists, and OpenGL:texture objects can be
+    established.
+
+    To illustrate the concept of the Stimulus class, here is a
+    description of several methods of drawing two spots.  If your
+    experiment displays two spots simultaneously, you could create two
+    instances of (a single subclass of) Stimulus, varying parameters
+    so each draws at a different location.  Another possibility is to
+    create one instance of a subclass that draws two spots.  Another,
+    somewhat obscure, possibility is to create a single instance and
+    add it to two different viewports.  (Something that will not work
+    would be adding the same instance two times to the same viewport.
+    It would also get drawn twice, although at exactly the same
+    location.)
+
+    OpenGL is a 'state machine', meaning that it has internal
+    parameters whose values vary and affect how it operates.  Because
+    of this inherent uncertainty, there are only limited assumptions
+    about the state of OpenGL that an instance of Stimulus should
+    expect when its draw() method is called.  Because the Vision Egg
+    loops through stimuli this also imposes some important behaviors:
+
+    First, the framebuffer will contain the results of any drawing
+    operations performed since the last buffer swap by other instances
+    of (subclasses of) Stimulus. Therefore, the order in which stimuli
+    are present in the stimuli list of an instance of Viewport may be
+    important.  Additionally, if there are overlapping viewports, the
+    order in which viewports are added to an instance of Screen is
+    important.
+
+    Second, previously established OpenGL display lists and OpenGL
+    texture objects will be available.  The __init__() method should
+    establish these things.
+
+    Third, there are several OpenGL state variables which are
+    commonly set by subclasses of Stimulus, and which cannot be
+    assumed to have any particular value at the time draw() is called.
+    These state variables are: blending mode and function, texture
+    state and environment, the matrix mode (modelview or projection),
+    the modelview matrix, depth mode and settings. Therefore, if the
+    draw() method depends on specific values for any of these states,
+    it must specify its own values to OpenGL.
+
+    Finally, a well-behaved Stimulus subclass resets any OpenGL state
+    values other than those listed above to their initial state before
+    draw() and init_gl() were called.  In other words, before your
+    stimulus changes the state of an OpenGL variable, use
+    glGetBoolean, glGetInteger, glGetFloat, or a similar function to
+    query its value and restore it later.  For example, upon calling
+    the draw() method, the projection matrix will be that which was
+    set by the viewport. If the draw() method alters the projection
+    matrix, it must be restored. The glPushMatrix() and glPopMatrix()
+    commands provide an easy way to do this.
+
+    The default projection of Viewport maps eye coordinates in a 1:1
+    fashion to window coordinates (in other words, it sets eye
+    coordinates to use pixel units from the lower left corner of the
+    viewport). Therefore the default parameters for a stimulus should
+    specify pixel coordinates if possible (such as for a 2D
+    stimulus). Assuming a window size of 640 by 480 for the default
+    parameters is a pretty safe way to do things.
+
+    Also, be sure to check for any assumptions made about the system
+    in the __init__ method.  For example, if your stimulus needs alpha
+    in the framebuffer, check the value of
+    glGetIntegerv(GL_ALPHA_BITS) and raise an exception if it is not
+    available.
+    """
+
+    def __init__(self,**kw):
+        """Instantiate and get ready to draw.
+
+        Set parameter values and create anything needed to draw the
+        stimulus including OpenGL state variables such display lists
+        and texture objects.
+
+        """
+        VisionEgg.ClassWithParameters.__init__(self,**kw)
+
+    def draw(self):
+        """Draw the stimulus. (Called by Viewport instance.)
+
+        This method is called every frame.  This method actually
+        performs the OpenGL calls to draw the stimulus.
+
+        """
+        pass
+
+####################################################################
+#
+#        Viewport
+#
+####################################################################
+
+class Viewport(VisionEgg.ClassWithParameters):
+    """Connects stimuli to a screen.
+
+    A viewport defines a (possibly clipped region) of the screen on
+    which stimuli are drawn.
+
+    A screen may have multiple viewports.  The viewports may be
+    overlapping.
+
+    A viewport may have multiple stimuli.
+
+    A single stimulus may be drawn simultaneously by several
+    viewports, although this is typically useful only for 3D stimuli
+    to represent different views of the same object.
+
+    The coordinates of the stimulus are converted to screen
+    coordinates via several steps, the most important of which is the
+    projection, which is defined by an instance of the Projection
+    class.
+
+    By default, a viewport has a projection and viewport
+    transformation which maps eye coordinates to window coordinates in
+    1:1 manner.  In other words, eye coordinates specify pixel
+    location in the viewport window. For example, if the viewport was
+    640 pixels wide and 480 pixels high, the default projection would
+    take eye coordinate (320,240,0,1) and map it to normalized device
+    coordinates of (0.5,0.5,0.0). The default viewport transformation
+    would transform this to window coordinates of (320,240,0.5).
+
+    For cases where pixel units are not natural to describe
+    coordinates of a stimulus, the application should specify the a
+    projection other than the default.  This is usually the case for
+    3D stimuli.
+
+    For details of the projection and clipping process, see the
+    section 'Coordinate Transformations' in the book/online document
+    'The OpenGL Graphics System: A Specification'
+
+    Parameters
+    ==========
+    anchor        -- How position parameter is interpreted (String)
+                     Default: lowerleft
+    camera_matrix -- extrinsic camera parameter matrix (position and orientation) (Instance of <class 'VisionEgg.Core.ModelView'>)
+                     Default: (determined at runtime)
+    depth_range   -- depth range (in object units) for rendering (Sequence2 of Real)
+                     Default: (0, 1)
+    position      -- Position (in pixel units) within the screen (Sequence2 of Real)
+                     Default: (0, 0)
+    projection    -- intrinsic camera parameter matrix (field of view, focal length, aspect ratio) (Instance of <class 'VisionEgg.Core.Projection'>)
+                     Default: (determined at runtime)
+    screen        -- The screen in which this viewport is drawn (Instance of <class 'VisionEgg.Core.Screen'>)
+                     Default: (determined at runtime)
+    size          -- Size (in pixel units) (Sequence2 of Real)
+                     Default: (determined at runtime)
+    stimuli       -- sequence of stimuli to draw in screen (Sequence of Instance of <class 'VisionEgg.Core.Stimulus'>)
+                     Default: (determined at runtime)
+    """
+
+    parameters_and_defaults = VisionEgg.ParameterDefinition({
+        'screen':(None,
+                  ve_types.Instance(Screen),
+                  'The screen in which this viewport is drawn'),
+        'position':((0,0),
+                    ve_types.Sequence2(ve_types.Real),
+                    'Position (in pixel units) within the screen'),
+        'anchor':('lowerleft',
+                  ve_types.String,
+                  'How position parameter is interpreted'),
+        'depth_range':((0,1),
+                       ve_types.Sequence2(ve_types.Real),
+                       'depth range (in object units) for rendering'),
+        'size':(None, # will use screen.size if not specified
+                ve_types.Sequence2(ve_types.Real),
+                'Size (in pixel units)'),
+        'projection':(None,
+                      ve_types.Instance(Projection),
+                      'intrinsic camera parameter matrix (field of view, focal length, aspect ratio)'),
+        'auto_pixel_projection':(None,
+                                 ve_types.Boolean,
+                                 'reset the projection when the size changes to maintain pixel coordinates'),
+        'camera_matrix':(None,
+                         ve_types.Instance(ModelView),
+                         'extrinsic camera parameter matrix (position and orientation)'),
+        'stimuli':(None,
+                   ve_types.Sequence(ve_types.Instance(Stimulus)),
+                   'sequence of stimuli to draw in screen'),
+        'lowerleft':(None,  # DEPRECATED -- don't use
+                     ve_types.Sequence2(ve_types.Real),
+                     'position (in pixel units) of lower-left viewport corner',
+                     VisionEgg.ParameterDefinition.DEPRECATED),
+        })
+
+    __slots__ = (
+        '_is_drawing',
+        '_cached_size',
+        )
+
+    def __init__(self,**kw):
+        """Create a new instance.
+
+        Required arguments:
+
+        screen
+
+        Optional arguments (specify parameter value other than default):
+
+        position -- defaults to (0,0), position relative to screen by anchor (see below)
+        anchor -- defaults to 'lowerleft'
+        size -- defaults to screen.size
+        projection -- defaults to self.make_new_pixel_coord_projection()
+        stimuli -- defaults to empty list
+
+        """
+        VisionEgg.ClassWithParameters.__init__(self,**kw)
+
+        if self.parameters.screen is None:
+            raise ValueError("Must specify screen when creating an instance of Viewport.")
+
+        p = self.parameters # shorthand
+        if p.size is None:
+            p.size = p.screen.constant_parameters.size
+        self._cached_size = None
+        if p.projection is None:
+            # Default projection maps eye coordinates 1:1 on window (pixel) coordinates
+            p.projection = self.make_new_pixel_coord_projection()
+            if p.auto_pixel_projection is None:
+                # default to maintaining pixel coordinates
+                p.auto_pixel_projection = True
+                self._cached_size = p.size
+        else:
+            # If the user *did* specify a projection, it is likely
+            # that they want that to be maintained.
+            if p.auto_pixel_projection is None:
+                # default to not maintaining
+                p.auto_pixel_projection = False
+        if p.camera_matrix is None:
+            p.camera_matrix = ModelView()
+        if p.stimuli is None:
+            p.stimuli = []
+        self._is_drawing = False
+
+    def make_new_pixel_coord_projection(self):
+        """Create instance of Projection mapping eye coordinates 1:1 with pixel coordinates."""
+        return OrthographicProjectionNoZClip(left=0,right=self.parameters.size[0],
+                                             bottom=0,top=self.parameters.size[1])
+
+    def make_current(self):
+        p = self.parameters # shorthand
+        p.screen.make_current()
+
+        if p.auto_pixel_projection and self._cached_size != p.size:
+            p.projection = self.make_new_pixel_coord_projection()
+            self._cached_size = p.size
+
+        if p.lowerleft != None:
+            if not hasattr(Viewport,"_gave_lowerleft_warning"):
+                logger = logging.getLogger('VisionEgg.Core')
+                logger.warning("lowerleft parameter of Viewport class "
+                               "will stop being supported. Use "
+                               "'position' instead with anchor set to "
+                               "'lowerleft'.")
+                Viewport._gave_lowerleft_warning = True
+            p.anchor = 'lowerleft'
+            p.position = p.lowerleft[0], p.lowerleft[1] # copy values (don't copy ref to tuple)
+
+        lowerleft = VisionEgg._get_lowerleft(p.position,p.anchor,p.size)
+
+        gl.glViewport(int(lowerleft[0]),
+                      int(lowerleft[1]),
+                      int(p.size[0]),
+                      int(p.size[1]))
+        gl.glDepthRange(p.depth_range[0],p.depth_range[1])
+
+        p.projection.apply_to_gl()
+        p.camera_matrix.apply_to_gl()
+
+    def draw(self):
+        """Set the viewport and draw stimuli."""
+        self.make_current()
+        self._is_drawing = True
+        for stimulus in self.parameters.stimuli:
+            stimulus.draw()
+        self._is_drawing = False
+
+    def norm_device_2_window(self,norm_device_vertex):
+        """Transform normalized device coordinates to window coordinates"""
+        v = np.asarray(norm_device_vertex)
+        homog = VisionEgg.ThreeDeeMath.make_homogeneous_coord_rows(v)
+        xd = homog[:,0,np.newaxis]
+        yd = homog[:,1,np.newaxis]
+        zd = homog[:,2,np.newaxis]
+
+        p = self.parameters # shorthand
+        lowerleft = VisionEgg._get_lowerleft(p.position,p.anchor,p.size)
+        x,y = lowerleft
+        w,h = p.size
+        n,f = p.depth_range
+
+        # clamp n and f
+        n = min(1.0,max(0.0,n))
+        f = min(1.0,max(0.0,f))
+
+        ox = x + w/2.0
+        oy = y + h/2.0
+        px = w
+        py = h
+        xw = (px/2.0)*xd + ox
+        yw = (py/2.0)*yd + oy
+        zw = ((f-n)/2.0)*zd + (n+f)/2.0
+        # XXX I think zw (or zd) is clamped in OpenGL, but I can't
+        # find it in any spec!
+        #zw = np.clip(zw,0.0,1.0) # clamp
+        r = np.concatenate((xw,yw,zw),axis=1)
+        if len(homog.shape) > len(v.shape):
+            r = np.reshape(r,(3,))
+        return r
+    def clip_2_window(self,eye_coords_vertex):
+        """Transform clip coordinates to window coordinates"""
+        my_proj = self.parameters.projection
+        return self.norm_device_2_window( my_proj.clip_2_norm_device( eye_coords_vertex ) )
+    def eye_2_window(self,eye_coords_vertex):
+        """Transform eye coordinates to window coordinates"""
+        my_proj = self.parameters.projection
+        return self.norm_device_2_window( my_proj.eye_2_norm_device( eye_coords_vertex ) )
+
+####################################################################
+#
+#        FixationSpot
+#
+####################################################################
+
+class FixationSpot(Stimulus):
+    """A rectangle stimulus, typically used as a fixation spot.
+
+    Parameters
+    ==========
+    anchor   -- how position parameter is used (String)
+                Default: center
+    color    -- color (AnyOf(Sequence3 of Real or Sequence4 of Real))
+                Default: (1.0, 1.0, 1.0)
+    on       -- draw? (Boolean)
+                Default: True
+    position -- position in eye coordinates (AnyOf(Sequence2 of Real or Sequence3 of Real or Sequence4 of Real))
+                Default: (320.0, 240.0)
+    size     -- size in eye coordinates (Sequence2 of Real)
+                Default: (4.0, 4.0)
+    """
+
+    parameters_and_defaults = VisionEgg.ParameterDefinition({
+        'on':(True,
+              ve_types.Boolean,
+              'draw?'),
+        'color':((1.0,1.0,1.0),
+                 ve_types.AnyOf(ve_types.Sequence3(ve_types.Real),
+                                ve_types.Sequence4(ve_types.Real)),
+                 'color'),
+        'position' : ( ( 320.0, 240.0 ), # in eye coordinates
+                       ve_types.AnyOf(ve_types.Sequence2(ve_types.Real),
+                                      ve_types.Sequence3(ve_types.Real),
+                                      ve_types.Sequence4(ve_types.Real)),
+                       'position in eye coordinates'),
+        'anchor' : ('center',
+                    ve_types.String,
+                    'how position parameter is used'),
+        'size':((4.0,4.0), # horiz and vertical size
+                ve_types.Sequence2(ve_types.Real),
+                'size in eye coordinates'),
+        'center' : (None,  # DEPRECATED -- don't use
+                    ve_types.Sequence2(ve_types.Real),
+                    'position in eye coordinates',
+                    VisionEgg.ParameterDefinition.DEPRECATED),
+        })
+
+    def __init__(self,**kw):
+        Stimulus.__init__(self,**kw)
+
+    def draw(self):
+        p = self.parameters # shorthand
+        if p.center is not None:
+            if not hasattr(VisionEgg.config,"_GAVE_CENTER_DEPRECATION"):
+                logger = logging.getLogger('VisionEgg.Core')
+                logger.warning("Specifying FixationSpot by deprecated "
+                               "'center' parameter deprecated.  Use "
+                               "'position' parameter instead.  (Allows "
+                               "use of 'anchor' parameter to set to "
+                               "other values.)")
+                VisionEgg.config._GAVE_CENTER_DEPRECATION = 1
+            p.anchor = 'center'
+            p.position = p.center[0], p.center[1] # copy values (don't copy ref to tuple)
+        if p.on:
+            # calculate center
+            center = VisionEgg._get_center(p.position,p.anchor,p.size)
+            gl.glDisable(gl.GL_DEPTH_TEST)
+            gl.glDisable(gl.GL_TEXTURE_2D)
+            gl.glDisable(gl.GL_BLEND)
+
+            if len(p.color)==3:
+                gl.glColor3f(*p.color)
+            elif len(p.color)==4:
+                gl.glColor4f(*p.color)
+
+            # This could go in a display list to speed it up, but then
+            # size wouldn't be dynamically adjustable this way.  Could
+            # still use one of the matrices to make it change size.
+            x_size = self.parameters.size[0]/2.0
+            y_size = self.parameters.size[1]/2.0
+            x,y = center[0],center[1]
+            x1 = x-x_size; x2 = x+x_size
+            y1 = y-y_size; y2 = y+y_size
+            gl.glBegin(gl.GL_QUADS)
+            gl.glVertex2f(x1,y1)
+            gl.glVertex2f(x2,y1)
+            gl.glVertex2f(x2,y2)
+            gl.glVertex2f(x1,y2)
+            gl.glEnd() # GL_QUADS
+
+####################################################################
+#
+#        Frame timing information
+#
+####################################################################
+
+class FrameTimer:
+    """Time inter frame intervals and compute frames per second."""
+    def __init__(self, bin_start_msec=2, bin_stop_msec=28, bin_width_msec=2, running_average_num_frames=0,save_all_frametimes=False):
+        """Create instance of FrameTimer."""
+        self.bins = np.arange( bin_start_msec, bin_stop_msec, bin_width_msec )
+        self.bin_width_msec = float(bin_width_msec)
+        self.timing_histogram = np.zeros(self.bins.shape)
+        self._true_time_last_frame = None # no frames yet
+        self.longest_frame_draw_time_sec = None
+        self.first_tick_sec = None
+        self.total_frames = 0
+        self.running_average_num_frames = running_average_num_frames
+        if self.running_average_num_frames:
+            self.last_n_frame_times_sec = [None]*self.running_average_num_frames
+        self.save_all_frametimes = save_all_frametimes
+        if self.save_all_frametimes:
+            self.all_frametimes = []
+
+    def tick(self):
+        """Declare a frame has just been drawn."""
+        true_time_now = VisionEgg.true_time_func()
+        if self._true_time_last_frame != None:
+            this_frame_draw_time_sec = true_time_now - self._true_time_last_frame
+            index = int(math.ceil(this_frame_draw_time_sec*1000.0/self.bin_width_msec))-1
+            if index > (len(self.timing_histogram)-1):
+                index = -1
+            self.timing_histogram[index] += 1
+            self.longest_frame_draw_time_sec = max(self.longest_frame_draw_time_sec,this_frame_draw_time_sec)
+            if self.running_average_num_frames:
+                self.last_n_frame_times_sec.append(true_time_now)
+                self.last_n_frame_times_sec.pop(0)
+        else:
+            self.first_tick_sec = true_time_now
+        self._true_time_last_frame = true_time_now # set for next frame
+
+        if self.save_all_frametimes:
+            self.all_frametimes.append( true_time_now )
+
+    def get_all_frametimes(self):
+        if self.save_all_frametimes:
+            return self.all_frametimes
+        else:
+            raise ValueError("must set save_all_frametimes")
+
+    def get_longest_frame_duration_sec(self):
+        return self.longest_frame_draw_time_sec
+
+    def get_running_average_ifi_sec(self):
+        if self.running_average_num_frames:
+            frame_times = []
+            for frame_time in self.last_n_frame_times_sec:
+                if frame_time is not None:
+                    frame_times.append( frame_time )
+            if len(frame_times) >= 2:
+                return (frame_times[-1] - frame_times[0]) / len(frame_times)
+        else:
+            raise RuntimeError("running_average_num_frames not set when creating FrameTimer instance")
+
+    def get_average_ifi_sec(self):
+        if self._true_time_last_frame is None:
+            raise RuntimeError("No frames were drawn, can't calculate average IFI")
+        return (self._true_time_last_frame - self.first_tick_sec) / sum( self.timing_histogram )
+
+    def print_histogram(self):
+        logger = logging.getLogger('VisionEgg.Core')
+        logger.warning("print_histogram() method of FrameTimer is "
+                       "deprecated will stop being supported. Use "
+                       "log_histogram() instead.")
+        self.log_histogram()
+
+    def log_histogram(self):
+        """Send histogram to logger."""
+        buffer = StringIO.StringIO()
+
+        n_frames = sum( self.timing_histogram )+1
+        if n_frames < 2:
+            print >> buffer, '%d frames were drawn.'%n_frames
+            return
+        average_ifi_sec = self.get_average_ifi_sec()
+        print >> buffer, '%d frames were drawn.'%int(n_frames)
+        print >> buffer, 'Mean IFI was %.2f msec (%.2f fps), longest IFI was %.2f msec.'%(
+            average_ifi_sec*1000.0,1.0/average_ifi_sec,self.longest_frame_draw_time_sec*1000.0)
+
+        h = hist = self.timing_histogram # shorthand
+        maxhist = float(max(h))
+        if maxhist == 0:
+            print >> buffer, "No frames were drawn."
+            return
+        lines = min(10,int(math.ceil(maxhist)))
+        hist = hist/maxhist*float(lines) # normalize to number of lines
+        print >> buffer, "histogram:"
+        for line in range(lines):
+            val = float(lines)-1.0-float(line)
+            timing_string = "%6d   "%(round(maxhist*val/lines),)
+            q = np.greater(hist,val)
+            for qi in q:
+                s = ' '
+                if qi:
+                    s = '*'
+                timing_string += "%4s "%(s,)
+            print >> buffer, timing_string
+        timing_string = " Time: "
+        timing_string += "%4d "%(0,)
+        for bin in self.bins[:-1]:
+            timing_string += "%4d "%(bin,)
+        timing_string += "+(msec)\n"
+        timing_string += "Total:    "
+        for hi in h:
+            if hi <= 999:
+                num_str = str(int(hi)).center(5)
+            else:
+                num_str = " +++ "
+            timing_string += num_str
+        print >> buffer, timing_string
+
+        buffer.seek(0)
+        logger = logging.getLogger('VisionEgg.Core')
+        logger.info(buffer.read())
+
+####################################################################
+#
+#        Error handling and assumption checking
+#
+####################################################################
+
+import VisionEgg.Deprecated
+Message = VisionEgg.Deprecated.Message
+
+message = VisionEgg.Deprecated.Message() # create instance of Message class for everything to use
+
+gl_assumptions = []
+
+def add_gl_assumption(gl_variable,required_value,failure_callback):
+    """Save assumptions for later checking once OpenGL context created."""
+    if type(failure_callback) != types.FunctionType:
+        raise ValueError("failure_callback must be a function!")
+    gl_assumptions.append((gl_variable,required_value,failure_callback))
+
+def init_gl_extension(prefix,name):
+    global gl # interpreter knows when we're up to something funny with GLTrace
+    logger = logging.getLogger('VisionEgg.Core')
+
+    if gl is VisionEgg.GLTrace:
+        watched = True
+        gl = VisionEgg.GLTrace.gl # manipulate original module for now
+    else:
+        watched = False
+
+    module_name = "OpenGL.GL.%(prefix)s.%(name)s"%locals()
+    try:
+        exec "import "+module_name
+    except ImportError:
+        logger.warning("Could not import %s -- some features will be "
+                       "missing."%(module_name,))
+        return False
+    module = eval(module_name)
+    init_function_name = "glInit"+name.title().replace('_','')+prefix
+    init_function = getattr(module,init_function_name)
+    if not init_function():
+        logger.warning("Could not initialize %s -- some features will "
+                       "be missing."%(module_name,))
+        return False
+    for attr_name in dir(module):
+        # put attributes from module into "gl" module dictionary
+        # (Namespace overlap as you'd get OpenGL apps written in C)
+        attr = getattr(module,attr_name)
+        # reject unwanted attributes
+        if attr_name.startswith('__'):
+            continue
+        elif attr_name == init_function_name:
+            continue
+        elif attr_name == 'gl':
+            continue
+        elif type(attr) == type(VisionEgg): # module type
+            continue
+
+        gl_attr_name = attr_name
+        setattr(gl,gl_attr_name,attr)
+
+    if watched:
+        VisionEgg.GLTrace.gl_trace_attach() # (re)scan namespace
+        gl = VisionEgg.GLTrace # reinstall GLTrace
+    return True # success!
+
+def post_gl_init():
+    """Called by Screen instance. Requires OpenGL context to be created."""
+    global gl_vendor, gl_renderer, gl_version # set above
+    logger = logging.getLogger('VisionEgg.Core')
+
+    if gl_version < '1.3':
+        if not init_gl_extension('ARB','multitexture'):
+            logger.warning("multitexturing not available.  Some features "
+                           "will not be available")
+    else:
+        if not hasattr(gl,'glActiveTexture'):
+            logger.debug("PyOpenGL bug: OpenGL multitexturing not available "
+                         "even though OpenGL is 1.3 or greater. "
+                         "Attempting ctypes-based workaround.")
+            VisionEgg.PlatformDependent.attempt_to_load_multitexturing()
+        if hasattr(gl,'glActiveTexture'): # the above worked or PyOpenGL fixed
+            # OpenGL 1.3 has this extension built-in,
+            # but doing this allows use of ARB names.
+            gl.glActiveTextureARB = gl.glActiveTexture
+            gl.glMultiTexCoord2fARB = gl.glMultiTexCoord2f
+            gl.GL_TEXTURE0_ARB = gl.GL_TEXTURE0
+            gl.GL_TEXTURE1_ARB = gl.GL_TEXTURE1
+
+    if gl_version < '1.2':
+        if init_gl_extension('EXT','bgra'):
+            # make sure gl.GL_BRGA is defined
+            gl.GL_BGRA = gl.GL_BGRA_EXT
+
+    for gl_variable,required_value,failure_callback in gl_assumptions:
+        # Code required for each variable to be checked
+        if gl_variable == "__SPECIAL__":
+            if required_value == "linux_nvidia_or_new_ATI":
+                ok = 0
+                # Test for nVidia
+                if "nvidia" == gl_vendor.split()[0].lower():
+                    ok = 1 # yes it is
+                if gl_renderer.startswith('Mesa DRI Radeon'):
+                    date = gl_renderer.split()[3]
+                    if date > "20021216": # not sure about exact date
+                        ok=1
+                if not ok:
+                    failure_callback()
+            else:
+                raise RuntimeError, "Unknown gl_assumption: %s == %s"%(gl_variable,required_value)
+
+        elif gl_variable.upper() == "GL_VERSION":
+            value_str = gl_version.split()[0]
+            value_ints = map(int,value_str.split('.'))
+            value = float( str(value_ints[0]) + "." + ''.join(map(str,value_ints[1:])))
+            if value < required_value:
+                failure_callback()
+        else:
+            raise RuntimeError, "Unknown gl_assumption"
+
+    # Do we have gl.GL_CLAMP_TO_EDGE ?
+    try:
+        gl.GL_CLAMP_TO_EDGE
+    except AttributeError:
+        if gl_version >= '1.2':
+            # If OpenGL version >= 1.2, this should be defined
+            # It seems to be a PyOpenGL bug that it's not.
+            logger.debug("GL_CLAMP_TO_EDGE is not defined. "
+                         "Because you have OpenGL version 1.2 or "
+                         "greater, this is probably a bug in "
+                         "PyOpenGL.  Assigning GL_CLAMP_TO_EDGE to "
+                         "the value that is usually used.")
+            gl.GL_CLAMP_TO_EDGE = 0x812F
+        else:
+            try:
+                init_gl_extension('SGIS','texture_edge_clamp')
+                gl.GL_CLAMP_TO_EDGE = gl.GL_CLAMP_TO_EDGE_SGIS
+            except:
+
+                logger.warning("GL_CLAMP_TO_EDGE is not "
+                               "available.  OpenGL version is "
+                               "less than 1.2, and the "
+                               "texture_edge_clamp_SGIS extension "
+                               "failed to load. It may be impossible to "
+                               "get exact 1:1 reproduction of "
+                               "textures.  Using GL_CLAMP instead of "
+                               "GL_CLAMP_TO_EDGE.")
+                gl.GL_CLAMP_TO_EDGE = gl.GL_CLAMP
+
+#########################################################################
+#
+#       Moved to FlowControl.py -- here only for backwards compatibility
+#
+#########################################################################
+
+import VisionEgg.FlowControl
+Presentation = VisionEgg.FlowControl.Presentation
+Controller = VisionEgg.FlowControl.Controller
+ConstantController = VisionEgg.FlowControl.ConstantController
+EvalStringController = VisionEgg.FlowControl.EvalStringController
+ExecStringController = VisionEgg.FlowControl.ExecStringController
+FunctionController = VisionEgg.FlowControl.FunctionController
+EncapsulatedController = VisionEgg.FlowControl.EncapsulatedController
diff --git a/VisionEgg/Daq.py b/VisionEgg/Daq.py
new file mode 100644
index 0000000..ebcdd5a
--- /dev/null
+++ b/VisionEgg/Daq.py
@@ -0,0 +1,123 @@
+# The Vision Egg: Daq
+#
+# Copyright (C) 2001-2003 Andrew Straw.
+# Author: Andrew Straw <astraw at users.sourceforge.net>
+# URL: <http://www.visionegg.org/>
+#
+# Distributed under the terms of the GNU Lesser General Public License
+# (LGPL). See LICENSE.TXT that came with this file.
+
+"""
+Definition of data acquisition and triggering interfaces.
+
+This module provides an interface to abstract data acquisition
+devices.  To interface with real data acquisition devices, use a
+module that subclasses the classes defined here.
+
+*WARNING* This module has not been extensively tested or used, and should be
+considered unstable.
+
+"""
+
+import VisionEgg
+import VisionEgg.ParameterTypes as ve_types
+
+__version__ = VisionEgg.release_name
+
+class Trigger(VisionEgg.ClassWithParameters):
+    pass
+
+class ChannelParameters(VisionEgg.ClassWithParameters):
+    pass
+
+class SignalType(ChannelParameters):
+    constant_parameters_and_defaults = {
+        'units':('Unknown units',
+                 ve_types.String),
+        }
+    def __init__(self,**kw):
+        if self.__class__ == SignalType:
+            raise RuntimeError("Trying to instantiate abstract base class.")
+        else:
+            ChannelParameters.__init__(self,**kw)
+
+class Analog(SignalType):
+    constant_parameters_and_defaults = {
+        'gain':(1.0,
+                ve_types.Real),
+        'offset':(0.0,
+                  ve_types.Real)}
+
+class Digital(SignalType):
+    pass
+
+class DaqMode(ChannelParameters):
+    def __init__(self,**kw):
+        if self.__class__ == DaqMode:
+            raise RuntimeError("Trying to instantiate abstract base class.")
+        else:
+            ChannelParameters.__init__(self,**kw)
+
+class Buffered(DaqMode):
+    parameters_and_defaults = {
+        'sample_rate_hz':(5000.0,
+                          ve_types.Real),
+        'duration_sec':(5.0,
+                        ve_types.Real),
+        'trigger':(None,
+                   ve_types.Instance(Trigger)),
+        }
+
+class Immediate(DaqMode):
+    pass
+
+class Functionality(ChannelParameters):
+    def __init__(self,**kw):
+        if self.__class__ == Functionality:
+            raise RuntimeError("Trying to instantiate abstract base class.")
+        else:
+            ChannelParameters.__init__(self,**kw)
+
+class Input(Functionality):
+    def get_data(self):
+        raise RuntimeError("Must override get_data method with daq implementation!")
+
+class Output(Functionality):
+    def put_data(self,data):
+        raise RuntimeError("Must override put_data method with daq implementation!")
+
+class Channel(VisionEgg.ClassWithParameters):
+    constant_parameters_and_defaults = {
+        'signal_type' : (None,
+                         ve_types.Instance(SignalType)),
+        'daq_mode' : (None,
+                      ve_types.Instance(DaqMode)),
+        'functionality' : (None,
+                           ve_types.Instance(Functionality)),
+        }
+    def __init__(self,**kw):
+        VisionEgg.ClassWithParameters.__init__(self,**kw)
+        self.constant_parameters.signal_type.channel = self
+        self.constant_parameters.daq_mode.channel = self
+        self.constant_parameters.functionality.channel = self
+        self.device = None # Not set yet
+
+    def arm_trigger(self):
+        raise NotImpelemetedError("This method must be overridden.")
+
+class Device:
+    def __init__(self, channels = None):
+        self.channels = []
+        if channels is not None:
+            if type(channels) is not types.ListType:
+                raise ValueError("channels must be a list of channels")
+            for channel in channels:
+                self.add_channel( channel )
+
+    def add_channel(self,channel):
+        # override this method if you need to do error checking
+        if isinstance(channel,Channel):
+            self.channels.append(channel)
+        else:
+            raise ValueError("%s not instance of VisionEgg.Daq.Channel"%channel)
+        channel.device = self
diff --git a/VisionEgg/DaqKeyboard.py b/VisionEgg/DaqKeyboard.py
new file mode 100644
index 0000000..313d398
--- /dev/null
+++ b/VisionEgg/DaqKeyboard.py
@@ -0,0 +1,85 @@
+# The Vision Egg: DaqKeyboard
+#
+# Author(s): Hubertus Becker <hubertus.becker at uni-tuebingen.de>
+# Copyright: (C) 2005 by Hertie Institute for Clinical Brain Research,
+#            Department of Cognitive Neurology, University of Tuebingen
+# URL:       http://www.hubertus-becker.de/resources/visionegg/
+#
+# This library is free software; you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License as
+# published by the Free Software Foundation; either version 2.1 of
+# the License, or (at your option) any later version.
+
+"""
+Data acquisition and triggering over the keyboard.
+
+This module was programmed using information from the web site
+http://www.pygame.org/docs/ref/pygame_key.html
+
+"""
+
+####################################################################
+#
+#        Import all the necessary packages
+#
+####################################################################
+
+import VisionEgg
+import VisionEgg.Core
+import VisionEgg.FlowControl
+import VisionEgg.ParameterTypes as ve_types
+import sys
+import pygame
+
+__version__ = VisionEgg.release_name
+
+####################################################################
+#
+#        KeyboardInput
+#
+####################################################################
+
+class KeyboardInput:
+
+    def get_pygame_data(self):
+        """Get keyboard input (return values are in pygame.locals.* notation)."""
+        keys = pygame.key.get_pressed()
+        return [k for k, v in enumerate(keys) if v]
+
+    def get_string_data(self):
+        """Get keyboard input (return values are converted to keyboard symbols (strings))."""
+        pressed = self.get_pygame_data()
+        keys_pressed = []
+        for k in pressed: # Convert integers to keyboard symbols (strings)
+            keys_pressed.append(pygame.key.name(k))
+        return keys_pressed
+
+    get_data = get_string_data # Create alias
+
+####################################################################
+#
+#        KeyboardTriggerInController
+#
+####################################################################
+
+class KeyboardTriggerInController(VisionEgg.FlowControl.Controller):
+    """Use the keyboard to trigger the presentation."""
+
+    def __init__(self,key=pygame.locals.K_1):
+        VisionEgg.FlowControl.Controller.__init__(
+            self,
+            return_type=ve_types.Integer,
+            eval_frequency=VisionEgg.FlowControl.Controller.EVERY_FRAME)
+        self.key = key
+
+    def during_go_eval(self):
+        return 1
+
+    def between_go_eval(self):
+        for event in pygame.event.get():
+#           if (event.type == pygame.locals.KEYUP) or (event.type == pygame.locals.KEYDOWN):
+            if event.type == pygame.locals.KEYDOWN:
+                if event.key == self.key:
+                    return 1
+                else:
+                    return 0
diff --git a/VisionEgg/DaqLPT.py b/VisionEgg/DaqLPT.py
new file mode 100644
index 0000000..24c10f3
--- /dev/null
+++ b/VisionEgg/DaqLPT.py
@@ -0,0 +1,209 @@
+# The Vision Egg: DaqLPT
+#
+# Copyright (C) 2001-2003 Andrew Straw.
+# Copyright (C) 2005 Hubertus Becker
+# Author: Andrew Straw <astraw at users.sourceforge.net>
+# URL: <http://www.visionegg.org/>
+#
+# Distributed under the terms of the GNU Lesser General Public License
+# (LGPL). See LICENSE.TXT that came with this file.
+
+"""
+Data acquisition and triggering over the parallel port.
+
+This module was programmed using information from "Interfacing the
+Standard Parallel Port" by Craig Peacock,
+http://www.senet.com.au/~cpeacock.
+
+You may also be interested in http://www.lvr.com/files/ibmlpt.txt.
+
+This module only uses the Standard Parallel Port (SPP) protocol, not
+ECP or EPP.  You may have to set your computer's BIOS accordingly.
+
+You may need to be root or otherwise have permission to access the
+parallel port.
+
+Example usage:
+
+>>> from VisionEgg.DaqLPT import raw_lpt_module
+>>> address = 0x378
+>>> out_value = 0
+>>> raw_lpt_module.out( address, out_value )
+>>> in_value = raw_lpt_module.inp( address+1 )
+
+"""
+
+####################################################################
+#
+#        Import all the necessary packages
+#
+####################################################################
+
+import VisionEgg
+import VisionEgg.Core
+import VisionEgg.FlowControl
+import VisionEgg.Daq
+import VisionEgg.ParameterTypes as ve_types
+import sys
+
+# See the raw LPT module for your platform for direct LPT access
+# without VisionEgg DAQ overhead.  In particular, the inp and out
+# functions are useful.
+
+if sys.platform == 'win32':
+    try:
+        # Dincer Aydin's module http://www.geocities.com/dinceraydin
+        import winioport as raw_lpt_module
+    except ImportError:
+        # Andrew Straw's module http://www.its.caltech.edu/~astraw/coding.html
+        import dlportio as raw_lpt_module
+elif sys.platform.startswith('linux'):
+    import VisionEgg._raw_lpt_linux as raw_lpt_module
+elif sys.platform.startswith('irix'):
+### IRIX implementation not done, but possible
+    raise NotImplementedError("VisionEgg.DaqLPT not implemented on IRIX")
+##    import VisionEgg._raw_plp_irix
+##    raw_lpt_module = VisionEgg._raw_plp_irix
+else:
+    raise RuntimeError("VisionEgg.DaqLPT not supported on this platform")
+
+__version__ = VisionEgg.release_name
+
+class LPTInput(VisionEgg.Daq.Input):
+    def get_data(self):
+        """Get status bits 0-7 of the LPT port.
+
+        The status bits were not meant for high speed digital input.
+        Nevertheless, for sampling one or two digital inputs at slow
+        rates, they work fine.
+
+        Bits 4 and 5 (pins 13 and 12, respectively) should be first
+        choice to sample a digital voltage.  The other bits have some
+        oddities. Bits 0 and 1 are designated reserved. Others are
+        "active low"; they show a logic 0 when +5v is applied.
+
+        bit3 = value & 0x08
+        bit4 = value & 0x10
+        bit5 = value & 0x20
+        bit6 = value & 0x40
+        """
+        return raw_lpt_module.inp(self.channel.device.base_address+1)
+
+class LPTOutput(VisionEgg.Daq.Output):
+    def put_data(self,data):
+        """Set output bits 0-7 (pins 2-9) on the LPT port."""
+        raw_lpt_module.out(self.channel.device.base_address,data)
+    def __del__(self):
+        """Set output bits low when closing."""
+        raw_lpt_module.out(self.channel.device.base_address,0)
+
+class LPTChannel(VisionEgg.Daq.Channel):
+    """A data acquisition channel using the parallel port."""
+    def __init__(self,**kw):
+        if not 'raw_lpt_module' in globals().keys():
+            raise RuntimeError("LPT output not supported on this platform.")
+        VisionEgg.Daq.Channel.__init__(self,**kw)
+        signal_type = self.constant_parameters.signal_type
+        if not isinstance(signal_type,VisionEgg.Daq.Digital):
+            raise ValueError("Channel must be digital.")
+        daq_mode = self.constant_parameters.daq_mode
+        if not isinstance(daq_mode,VisionEgg.Daq.Immediate):
+            raise ValueError("Channel must be immediate mode.")
+        functionality = self.constant_parameters.functionality
+        if not isinstance(functionality,LPTInput):
+            if not isinstance(functionality,LPTOutput):
+                raise ValueError("Channel functionality must be instance of LPTInput or LPTOutput.")
+
+class LPTDevice(VisionEgg.Daq.Device):
+    """A single parallel port. (Line PrinTer port.)
+
+    Typically, LPT1 has a base address of 0x0378, and LPT2 has a base
+    address of 0x0278."""
+
+    def __init__(self,base_address=0x378,**kw):
+        if not 'raw_lpt_module' in globals().keys():
+            raise RuntimeError("LPT output not supported on this platform.")
+        VisionEgg.Daq.Device.__init__(self,**kw)
+        for channel in self.channels:
+            if not isinstance(channel,LPTChannel):
+                raise ValueError("LPTDevice only has LPTChannels.")
+        self.base_address = base_address
+
+    def add_channel(self,channel):
+        if not isinstance(channel,LPTChannel):
+            raise ValueError("LPTDevice only has LPTChannels.")
+        VisionEgg.Daq.Device.add_channel(self,channel)
+
+class LPTTriggerOutController(VisionEgg.FlowControl.Controller):
+    """Use 8 bits of digital output for triggering and frame timing verification.
+
+    Bit 0 (pin 2) goes high when the go loop begins and low when the
+    loop ends.  Bits 1-7 (pins 3-9) count the frame_number (modulo
+    2^7) in binary.  Looking at any one of these pins therefore
+    provides verification that your stimulus is not skipping
+    frames."""
+
+    def __init__(self,lpt_device=None):
+        if not 'raw_lpt_module' in globals().keys():
+            raise RuntimeError("LPT output not supported on this platform.")
+        VisionEgg.FlowControl.Controller.__init__(self,
+                                           return_type=ve_types.NoneType,
+                                           eval_frequency=VisionEgg.FlowControl.Controller.EVERY_FRAME)
+        # Initialize DAQ stuff:
+        self.trigger_out_channel = LPTChannel(signal_type = VisionEgg.Daq.Digital(),
+                                              daq_mode = VisionEgg.Daq.Immediate(),
+                                              functionality = LPTOutput())
+        if lpt_device is None:
+            self.device = LPTDevice()
+        else:
+            if not isinstance(lpt_device,LPTDevice):
+                raise ValueError("lpt_device must be instance of LPTDevice.")
+            self.device = lpt_device
+        self.device.add_channel(self.trigger_out_channel)
+
+        self.total_frames = 0
+    def during_go_eval(self):
+        self.total_frames = (self.total_frames + 1) % (2**7)
+        value = self.total_frames*2 + 1
+        self.trigger_out_channel.constant_parameters.functionality.put_data(value)
+    def between_go_eval(self):
+        self.total_frames = (self.total_frames + 1) % (2**7)
+        value = self.total_frames*2 + 0
+        self.trigger_out_channel.constant_parameters.functionality.put_data(value)
+
+class LPTTriggerInController(VisionEgg.FlowControl.Controller):
+    def __init__(self,lpt_device=None,pin=13):
+        if not 'raw_lpt_module' in globals().keys():
+            raise RuntimeError("LPT input not supported on this platform.")
+        VisionEgg.FlowControl.Controller.__init__(self,
+                                           return_type=ve_types.Integer,
+                                           eval_frequency=VisionEgg.FlowControl.Controller.EVERY_FRAME)
+        # Initialize DAQ stuff:
+        self.trigger_in_channel = LPTChannel(signal_type = VisionEgg.Daq.Digital(),
+                                             daq_mode = VisionEgg.Daq.Immediate(),
+                                             functionality = LPTInput())
+        if lpt_device is None:
+            self.device = LPTDevice()
+        else:
+            if not isinstance(lpt_device,LPTDevice):
+                raise ValueError("lpt_device must be instance of LPTDevice.")
+            self.device = lpt_device
+        self.device.add_channel(self.trigger_in_channel)
+        if pin==15:
+            bit = 3
+        elif pin==13:
+            bit = 4
+        elif pin==12:
+            bit = 5
+        elif pin==10:
+            bit = 6
+        elif pin==11:
+            bit = 7
+        else:
+            raise ValueError("Only pins 10, 11, 12, 13 and 15 supported at this time.")
+        self.mask = 2**bit
+    def during_go_eval(self):
+        return 1
+    def between_go_eval(self):
+        value = self.trigger_in_channel.constant_parameters.functionality.get_data()
+        return (value & self.mask)
diff --git a/VisionEgg/Deprecated.py b/VisionEgg/Deprecated.py
new file mode 100644
index 0000000..780b7de
--- /dev/null
+++ b/VisionEgg/Deprecated.py
@@ -0,0 +1,113 @@
+# The Vision Egg: Deprecated
+#
+# Copyright (C) 2001-2003 Andrew Straw.
+# Copyright (C) 2008 California Institute of Technology
+#
+# URL: <http://www.visionegg.org/>
+#
+# Distributed under the terms of the GNU Lesser General Public License
+# (LGPL). See LICENSE.TXT that came with this file.
+
+"""
+Bits of code which will be removed in the future.
+
+"""
+
+import VisionEgg
+import sys, os
+import logging                              # available in Python 2.3
+
+####################################################################
+#
+#        Error handling and assumption checking
+#
+####################################################################
+
+class Message:
+    """DEPRECATED Handles message/warning/error printing, exception raising."""
+
+    # Levels are:
+    TRIVIAL = 0
+    NAG = 1
+    INFO = 2
+    DEPRECATION = 3
+    WARNING = 4
+    ERROR = 5
+    FATAL = 6
+
+    def __init__(self):
+##        script_name = sys.argv[0]
+##        if not script_name:
+##            script_name = "(interactive shell)"
+        self.pid = os.getpid()
+##        self.logger.info("Script "+script_name+" started Vision Egg %s with process id %d."%(VisionEgg.release_name,self.pid))
+
+    def add(self,message,level=INFO,preserve_formatting=0,no_sys_stderr=0):
+        level_translate = {
+            # convert from old VisionEgg levels to new logging module levels
+            Message.TRIVIAL     : logging.DEBUG,
+            Message.NAG         : logging.DEBUG,
+            Message.INFO        : logging.INFO,
+            Message.DEPRECATION : logging.WARNING,
+            Message.WARNING     : logging.WARNING,
+            Message.ERROR       : logging.ERROR,
+            Message.FATAL       : logging.CRITICAL,
+            }
+        new_level = level_translate[ level ]
+        if not hasattr(self,"logger"):
+            self.logger = logging.getLogger('VisionEgg.Deprecated')
+        self.logger.log(new_level,message + '\n(sent using deprecated VisionEgg.Core.Message class)')
+
+    def format_string(self,in_str):
+        # This probably a slow way to do things, but it works!
+        min_line_length = 70
+        in_list = in_str.split()
+        out_str = ""
+        cur_line = ""
+        for word in in_list:
+            cur_line = cur_line + word + " "
+            if len(cur_line) > min_line_length:
+                out_str = out_str + cur_line[:-1] + "\n"
+                cur_line = "    "
+        if cur_line.strip():
+            # only add another newline if the last line done is non-empty
+            out_str = out_str + cur_line + "\n"
+        return out_str
+
+    def handle(self):
+        if not self._sent_initial_newline:
+            self.output_stream.write("\n",_no_sys_stderr=1)
+            self.output_stream.flush()
+            self._sent_initial_newline = 1
+        while len(self.message_queue) > 0:
+            my_str = ""
+            level,text,preserve_formatting,date_str,no_sys_stderr = self.message_queue.pop(0)
+            if level >= self.print_level:
+                my_str= my_str+date_str+" "
+                if self.pid:
+                    my_str += "(%d) "%(self.pid,)
+                #my_str=my_str+self.prefix+" "
+                if level == Message.TRIVIAL:
+                    my_str=my_str+"trivial"
+                elif level == Message.INFO:
+                    my_str=my_str+"info"
+                elif level == Message.NAG:
+                    my_str=my_str+"nag"
+                elif level == Message.DEPRECATION:
+                    my_str=my_str+"DEPRECATION WARNING"
+                elif level == Message.WARNING:
+                    my_str=my_str+"WARNING"
+                elif level == Message.ERROR:
+                    my_str=my_str+"ERROR"
+                elif level == Message.FATAL:
+                    my_str=my_str+"FATAL"
+                my_str += ": "
+                my_str += text
+                if not preserve_formatting:
+                    my_str = self.format_string(my_str)
+                self.output_stream.write(my_str,_no_sys_stderr=no_sys_stderr)
+                self.output_stream.flush()
+            if level >= self.exception_level:
+                raise RuntimeError(text)
+            if level == Message.FATAL:
+                sys.exit(-1)
diff --git a/VisionEgg/Dots.py b/VisionEgg/Dots.py
new file mode 100755
index 0000000..b511af3
--- /dev/null
+++ b/VisionEgg/Dots.py
@@ -0,0 +1,252 @@
+# The Vision Egg: Dots
+#
+# Copyright (C) 2001-2003 Andrew Straw.
+# Copyright (C) 2005,2008 California Institute of Technology
+#
+# URL: <http://www.visionegg.org/>
+#
+# Distributed under the terms of the GNU Lesser General Public License
+# (LGPL). See LICENSE.TXT that came with this file.
+
+"""
+Random dot stimuli.
+
+"""
+
+####################################################################
+#
+#        Import all the necessary packages
+#
+####################################################################
+
+import logging
+
+import VisionEgg
+import VisionEgg.Core
+import VisionEgg.ParameterTypes as ve_types
+
+import numpy.oldnumeric as Numeric, numpy.oldnumeric.random_array as RandomArray
+import math, types, string
+
+import VisionEgg.GL as gl # get all OpenGL stuff in one namespace
+
+### C version of draw_dots() isn't (yet) as fast as Python version:
+##import VisionEgg._draw_in_c
+##draw_dots = VisionEgg._draw_in_c.draw_dots # draw in C for speed
+
+def draw_dots(xs,ys,zs):
+    """Python method for drawing dots.  May be replaced by a faster C version."""
+    if not (len(xs) == len(ys) == len(zs)):
+        raise ValueError("All input arguments must be same length")
+    gl.glBegin(gl.GL_POINTS)
+    for i in xrange(len(xs)):
+        gl.glVertex3f(xs[i],ys[i],zs[i])
+    gl.glEnd()
+
+class DotArea2D(VisionEgg.Core.Stimulus):
+    """Random dots of constant velocity
+
+    Every dot has the same velocity. Some fraction of the dots all
+    move in the one direction, while the rest move in random
+    directions. Dots wrap around edges. Each dot has a lifespan.
+
+    This is just one example of the endless variations on drawing random dots.
+
+    Parameters
+    ==========
+    anchor                  -- (String)
+                               Default: center
+    anti_aliasing           -- (Boolean)
+                               Default: True
+    color                   -- (AnyOf(Sequence3 of Real or Sequence4 of Real))
+                               Default: (1.0, 1.0, 1.0)
+    depth                   -- (Real)
+                               Default: (determined at runtime)
+    dot_lifespan_sec        -- (Real)
+                               Default: 5.0
+    dot_size                -- (Real)
+                               Default: 4.0
+    on                      -- (Boolean)
+                               Default: True
+    position                -- (Sequence2 of Real)
+                               Default: (320.0, 240.0)
+    signal_direction_deg    -- (Real)
+                               Default: 90.0
+    signal_fraction         -- (Real)
+                               Default: 0.5
+    size                    -- (Sequence2 of Real)
+                               Default: (300.0, 300.0)
+    velocity_pixels_per_sec -- (Real)
+                               Default: 10.0
+
+    Constant Parameters
+    ===================
+    num_dots -- (UnsignedInteger)
+                Default: 100
+    """
+
+    parameters_and_defaults = {
+        'on' : ( True,
+                 ve_types.Boolean ),
+        'position' : ( ( 320.0, 240.0 ), # in eye coordinates
+                       ve_types.Sequence2(ve_types.Real) ),
+        'anchor' : ('center',
+                    ve_types.String),
+        'size' :   ( ( 300.0, 300.0 ), # in eye coordinates
+                     ve_types.Sequence2(ve_types.Real) ),
+        'signal_fraction' : ( 0.5,
+                              ve_types.Real ),
+        'signal_direction_deg' : ( 90.0,
+                                   ve_types.Real ),
+        'velocity_pixels_per_sec' : ( 10.0,
+                                      ve_types.Real ),
+        'dot_lifespan_sec' : ( 5.0,
+                               ve_types.Real ),
+        'color' : ((1.0,1.0,1.0),
+                   ve_types.AnyOf(ve_types.Sequence3(ve_types.Real),
+                                  ve_types.Sequence4(ve_types.Real))),
+        'dot_size' : (4.0, # pixels
+                      ve_types.Real),
+        'anti_aliasing' : ( True,
+                            ve_types.Boolean ),
+        'depth' : ( None, # set for depth testing
+                    ve_types.Real ),
+        'center' : (None,  # DEPRECATED -- don't use
+                    ve_types.Sequence2(ve_types.Real),
+                    "",
+                    VisionEgg.ParameterDefinition.DEPRECATED),
+        }
+
+    constant_parameters_and_defaults = {
+        'num_dots' : ( 100,
+                       ve_types.UnsignedInteger ),
+        }
+
+    __slots__ = (
+        'x_positions',
+        'y_positions',
+        'random_directions_radians',
+        'last_time_sec',
+        'start_times_sec',
+        '_gave_alpha_warning',
+        )
+
+    def __init__(self, **kw):
+        VisionEgg.Core.Stimulus.__init__(self,**kw)
+        # store positions normalized between 0 and 1 so that re-sizing is ok
+        num_dots = self.constant_parameters.num_dots # shorthand
+        self.x_positions = RandomArray.uniform(0.0,1.0,(num_dots,))
+        self.y_positions = RandomArray.uniform(0.0,1.0,(num_dots,))
+        self.random_directions_radians = RandomArray.uniform(0.0,2*math.pi,(num_dots,))
+        self.last_time_sec = VisionEgg.time_func()
+        self.start_times_sec = None # setup variable, assign later
+        self._gave_alpha_warning = 0
+
+    def draw(self):
+        # XXX This method is not speed-optimized. I just wrote it to
+        # get the job done. (Nonetheless, it seems faster than the C
+        # version commented out above.)
+
+        p = self.parameters # shorthand
+        if p.center is not None:
+            if not hasattr(VisionEgg.config,"_GAVE_CENTER_DEPRECATION"):
+                logger = logging.getLogger('VisionEgg.Dots')
+                logger.warning("Specifying DotArea2D by deprecated "
+                               "'center' parameter deprecated.  Use "
+                               "'position' parameter instead.  (Allows "
+                               "use of 'anchor' parameter to set to "
+                               "other values.)")
+                VisionEgg.config._GAVE_CENTER_DEPRECATION = 1
+            p.anchor = 'center'
+            p.position = p.center[0], p.center[1] # copy values (don't copy ref to tuple)
+        if p.on:
+            # calculate center
+            center = VisionEgg._get_center(p.position,p.anchor,p.size)
+
+            if p.anti_aliasing:
+                if len(p.color) == 4 and not self._gave_alpha_warning:
+                    if p.color[3] != 1.0:
+                        logger = logging.getLogger('VisionEgg.Dots')
+                        logger.warning("The parameter anti_aliasing is "
+                                       "set to true in the DotArea2D "
+                                       "stimulus class, but the color "
+                                       "parameter specifies an alpha "
+                                       "value other than 1.0.  To "
+                                       "acheive the best anti-aliasing, "
+                                       "ensure that the alpha value for "
+                                       "the color parameter is 1.0.")
+                        self._gave_alpha_warning = 1
+                gl.glEnable( gl.GL_POINT_SMOOTH )
+                # allow max_alpha value to control blending
+                gl.glEnable( gl.GL_BLEND )
+                gl.glBlendFunc( gl.GL_SRC_ALPHA, gl.GL_ONE_MINUS_SRC_ALPHA )
+            else:
+                gl.glDisable( gl.GL_BLEND )
+
+            now_sec = VisionEgg.time_func()
+            if self.start_times_sec is not None:
+                # compute extinct dots and generate new positions
+                replace_indices = Numeric.nonzero( Numeric.greater( now_sec - self.start_times_sec, p.dot_lifespan_sec) )
+                Numeric.put( self.start_times_sec, replace_indices, now_sec )
+
+                new_x_positions = RandomArray.uniform(0.0,1.0,
+                                                      (len(replace_indices),))
+                Numeric.put( self.x_positions, replace_indices, new_x_positions )
+
+                new_y_positions = RandomArray.uniform(0.0,1.0,
+                                                      (len(replace_indices),))
+                Numeric.put( self.y_positions, replace_indices, new_y_positions )
+
+                new_random_directions_radians = RandomArray.uniform(0.0,2*math.pi,
+                                                                    (len(replace_indices),))
+                Numeric.put( self.random_directions_radians, replace_indices, new_random_directions_radians )
+            else:
+                # initialize dot extinction values to random (uniform) distribution
+                self.start_times_sec = RandomArray.uniform( now_sec - p.dot_lifespan_sec, now_sec,
+                                                            (self.constant_parameters.num_dots,))
+
+            signal_num_dots = int(round(p.signal_fraction * self.constant_parameters.num_dots))
+            time_delta_sec = now_sec - self.last_time_sec
+            self.last_time_sec = now_sec # reset for next loop
+            x_increment_normalized =  math.cos(p.signal_direction_deg/180.0*math.pi) * p.velocity_pixels_per_sec / p.size[0] * time_delta_sec
+            y_increment_normalized = -math.sin(p.signal_direction_deg/180.0*math.pi) * p.velocity_pixels_per_sec / p.size[1] * time_delta_sec
+            self.x_positions[:signal_num_dots] += x_increment_normalized
+            self.y_positions[:signal_num_dots] += y_increment_normalized
+
+            num_random_dots = self.constant_parameters.num_dots - signal_num_dots
+            random_x_increment_normalized =  Numeric.cos(self.random_directions_radians[signal_num_dots:]) * p.velocity_pixels_per_sec / p.size[0] * time_delta_sec
+            random_y_increment_normalized = -Numeric.sin(self.random_directions_radians[signal_num_dots:]) * p.velocity_pixels_per_sec / p.size[1] * time_delta_sec
+            self.x_positions[signal_num_dots:] += random_x_increment_normalized
+            self.y_positions[signal_num_dots:] += random_y_increment_normalized
+
+            self.x_positions = Numeric.fmod( self.x_positions, 1.0 ) # wrap
+            self.y_positions = Numeric.fmod( self.y_positions, 1.0 )
+
+            self.x_positions = Numeric.fmod( self.x_positions+1, 1.0 ) # wrap again for values < 1
+            self.y_positions = Numeric.fmod( self.y_positions+1, 1.0 )
+
+            xs = (self.x_positions - 0.5) * p.size[0] + center[0]
+            ys = (self.y_positions - 0.5) * p.size[1] + center[1]
+
+            if len(p.color)==3:
+                gl.glColor3f(*p.color)
+            elif len(p.color)==4:
+                gl.glColor4f(*p.color)
+            gl.glPointSize(p.dot_size)
+
+            # Clear the modeview matrix
+            gl.glMatrixMode(gl.GL_MODELVIEW)
+            gl.glPushMatrix()
+
+            gl.glDisable(gl.GL_TEXTURE_2D)
+
+            if p.depth is None:
+                depth = 0.0
+            else:
+                gl.glEnable(gl.GL_DEPTH_TEST)
+                depth = p.depth
+            zs = (depth,)*len(xs) # make N tuple with repeat value of depth
+            draw_dots(xs,ys,zs)
+            if p.anti_aliasing:
+                gl.glDisable( gl.GL_POINT_SMOOTH ) # turn off
+            gl.glPopMatrix()
diff --git a/VisionEgg/FlowControl.py b/VisionEgg/FlowControl.py
new file mode 100644
index 0000000..de82667
--- /dev/null
+++ b/VisionEgg/FlowControl.py
@@ -0,0 +1,1324 @@
+# The Vision Egg: FlowControl
+#
+# Copyright (C) 2001-2004 Andrew Straw.
+# Copyright (C) 2008 California Institute of Technology
+#
+# URL: <http://www.visionegg.org/>
+#
+# Distributed under the terms of the GNU Lesser General Public License
+# (LGPL). See LICENSE.TXT that came with this file.
+
+"""
+Flow control for the Vision Egg.
+
+"""
+
+import logging
+import logging.handlers
+
+import VisionEgg
+import VisionEgg.GL as gl # get all OpenGL stuff in one namespace
+import VisionEgg.ParameterTypes as ve_types
+import numpy.oldnumeric as Numeric, math, types
+import pygame
+
+####################################################################
+#
+#        Presentation
+#
+####################################################################
+
+class Presentation(VisionEgg.ClassWithParameters):
+    """Handles the timing and coordination of stimulus presentation.
+
+    This class is the key to the real-time operation of the Vision
+    Egg. It contains the main 'go' loop, and maintains the association
+    between 'controllers', instances of the Controller class, and the
+    parameters they control.
+
+    During the main 'go' loop and at other specific times, the
+    parameters are updated via function calls to the controllers.
+
+    Between entries into the 'go' loop, a Vision Egg application
+    should call the method between_presentations as often as possible
+    to ensure parameter values are kept up to date and any
+    housekeeping done by controllers is done.
+
+    No OpenGL environment I know of can guarantee that a new frame is
+    drawn and the double buffers swapped before the monitor's next
+    vertical retrace sync pulse.  Still, although one can worry
+    endlessly about this problem, it works.  In other words, on a fast
+    computer with a fast graphics card running even a pre-emptive
+    multi-tasking operating system (see below for specific
+    information), a new frame is drawn before every monitor update. If
+    this did become a problem, the go() method could be re-implemented
+    in C, along with the functions it calls.  This would probably
+    result in speed gains, but without skipping frames at 200 Hz, why
+    bother?
+
+    Parameters
+    ==========
+    check_events                 -- allow input event checking during 'go' loop? (Boolean)
+                                    Default: True
+    collect_timing_info          -- log timing statistics during go loop? (Boolean)
+                                    Default: True
+    enter_go_loop                -- test used by run_forever() to enter go loop (Boolean)
+                                    Default: False
+    go_duration                  -- Tuple to specify 'go' loop duration. Either (value,units) or ('forever',) (Sequence of AnyOf(Real or String))
+                                    Default: (5.0, 'seconds')
+    handle_event_callbacks       -- List of tuples to handle events. (event_type,event_callback_func) (Sequence of Sequence2 of AnyOf(Integer or Callable))
+                                    Default: (determined at runtime)
+    override_t_abs_sec           -- Override t_abs. Set only when reconstructing experiments. (units: seconds) (Real)
+                                    Default: (determined at runtime)
+    quit                         -- quit the run_forever loop? (Boolean)
+                                    Default: False
+    trigger_armed                -- test trigger on go loop? (Boolean)
+                                    Default: True
+    trigger_go_if_armed          -- trigger go loop? (Boolean)
+                                    Default: True
+    viewports                    -- list of Viewport instances to draw. Order is important. (Sequence of Instance of <class 'VisionEgg.ClassWithParameters'>)
+                                    Default: (determined at runtime)
+    warn_longest_frame_threshold -- threshold to print frame skipped warning (units: factor of inter-frame-interval) (Real)
+                                    Default: 2.0
+    warn_mean_fps_threshold      -- threshold to print observered vs. expected frame rate warning (fraction units) (Real)
+                                    Default: 0.01
+    """
+    parameters_and_defaults = {
+        'viewports' : (None,
+                       # XXX should really require VisionEgg.Core.Viewport
+                       # but that would lead to circular import problem
+                       ve_types.Sequence(ve_types.Instance(VisionEgg.ClassWithParameters)),
+                       'list of Viewport instances to draw. Order is important.'),
+        'collect_timing_info' : (True,
+                                 ve_types.Boolean,
+                                 'log timing statistics during go loop?'),
+        'go_duration' : ((5.0,'seconds'),
+                         ve_types.Sequence(ve_types.AnyOf(ve_types.Real,
+                                                          ve_types.String)),
+                         "Tuple to specify 'go' loop duration. Either (value,units) or ('forever',)"),
+        'check_events' : (True, # May cause slight performance hit, but probably negligible
+                          ve_types.Boolean,
+                          "allow input event checking during 'go' loop?"),
+        'handle_event_callbacks' : (None,
+                                    ve_types.Sequence(ve_types.Sequence2(ve_types.AnyOf(ve_types.Integer,ve_types.Callable))),
+                                    "List of tuples to handle events. (event_type,event_callback_func)"),
+        'trigger_armed':(True,
+                         ve_types.Boolean,
+                         "test trigger on go loop?"),
+        'trigger_go_if_armed':(True,
+                               ve_types.Boolean,
+                               "trigger go loop?"),
+        'enter_go_loop':(False,
+                         ve_types.Boolean,
+                         "test used by run_forever() to enter go loop"),
+        'quit':(False,
+                ve_types.Boolean,
+                "quit the run_forever loop?"),
+        'warn_mean_fps_threshold':(0.01, # fraction (0.1 = 10%)
+                                   ve_types.Real,
+                                   "threshold to print observered vs. expected frame rate warning (fraction units)"),
+        'warn_longest_frame_threshold': (2.0, # fraction (set to 2.0 for no false positives)
+                                         ve_types.Real,
+                                         "threshold to print frame skipped warning (units: factor of inter-frame-interval)"),
+        'override_t_abs_sec':(None, # override t_abs (in seconds) -- set only when reconstructing experiments
+                              ve_types.Real,
+                              "Override t_abs. Set only when reconstructing experiments. (units: seconds)"),
+        }
+
+    __slots__ = (
+        'controllers',
+        'num_frame_controllers',
+        'frame_draw_times',
+        'time_sec_absolute',
+        'frames_absolute',
+        'in_go_loop',
+        'frames_dropped_in_last_go_loop',
+        'last_go_loop_start_time_absolute_sec',
+        'time_sec_since_go',
+        'frames_since_go',
+        )
+
+    def __init__(self,**kw):
+        VisionEgg.ClassWithParameters.__init__(self,**kw)
+
+        if self.parameters.viewports is None:
+            self.parameters.viewports = []
+
+        if self.parameters.handle_event_callbacks is None:
+            self.parameters.handle_event_callbacks = []
+
+        self.controllers = []
+        self.num_frame_controllers = 0 # reference counter for controllers that are called on frame by frame basis
+
+        # A list that optionally records when frames were drawn by go() method.
+        self.frame_draw_times = []
+
+        self.time_sec_absolute=VisionEgg.time_func()
+        self.frames_absolute=0
+
+        self.in_go_loop = False
+        self.frames_dropped_in_last_go_loop = False
+        self.last_go_loop_start_time_absolute_sec = None
+
+    def add_controller( self, class_with_parameters, parameter_name, controller ):
+        """Add a controller"""
+        # Check if type checking needed
+        if type(class_with_parameters) != types.NoneType and type(parameter_name) != types.NoneType:
+            # Check if return type of controller eval is same as parameter type
+            if class_with_parameters.is_constant_parameter(parameter_name):
+                raise TypeError("Attempt to control constant parameter '%s' of class %s."%(parameter_name,class_with_parameters))
+            require_type = class_with_parameters.get_specified_type(parameter_name)
+            try:
+                ve_types.assert_type(controller.returns_type(),require_type)
+            except TypeError:
+                raise TypeError("Attempting to control parameter '%s' of type %s with controller that returns type %s"%(
+                    parameter_name,
+                    require_type,
+                    controller.returns_type()))
+            if not hasattr(class_with_parameters.parameters,parameter_name):
+                raise AttributeError("%s has no instance '%s'"%parameter_name)
+            self.controllers.append( (class_with_parameters.parameters,parameter_name, controller) )
+        else: # At least one of class_with_parameters or parameter_name is None.
+            # Make sure they both are None.
+            if not (type(class_with_parameters) == types.NoneType and type(parameter_name) == types.NoneType):
+                raise ValueError("Neither or both of class_with_parameters and parameter_name must be None.")
+            self.controllers.append( (None,None,controller) )
+        if controller.temporal_variables & (FRAMES_SINCE_GO|FRAMES_ABSOLUTE):
+            self.num_frame_controllers = self.num_frame_controllers + 1
+
+    def remove_controller( self, class_with_parameters, parameter_name, controller=None ):
+        """Remove one (or more--see below) controller(s).
+
+        If controller is None, all controllers affecting the
+        specified parameter are removed.
+
+        If class_with_parameters and paramter_name are None, the
+        controller is removed completely
+
+        If class_with_parameters, paramter_name, and controller are
+        all None, all controllers are removed.
+
+        """
+
+        if class_with_parameters is None and parameter_name is None:
+            if not isinstance(controller,Controller) and controller != None:
+
+                raise TypeError( "When deleting a controller, specify an "
+                                 "instance of VisionEgg.FlowControl.Controller class!")
+
+            if controller == None: #Added by Tony, May30/2005
+                self.controllers = []
+
+            i = 0
+            while i < len(self.controllers):
+                orig_parameters,orig_parameter_name,orig_controller = self.controllers[i]
+                if controller == orig_controller:
+                    del self.controllers[i]
+                else:
+                    i = i + 1
+            return
+        if controller is None:
+            # The controller function is not specified:
+            # Delete all controllers that control the parameter specified.
+            if class_with_parameters is None or parameter_name is None:
+                raise ValueError("Must specify parameter from which controller should be removed.")
+            i = 0
+            while i < len(self.controllers):
+                orig_parameters,orig_parameter_name,orig_controller = self.controllers[i]
+                if (orig_parameters == class_with_parameters.parameters and
+                    orig_parameter_name == parameter_name):
+                    controller = self.controllers[i][2]
+                    if controller.temporal_variables & (FRAMES_SINCE_GO|FRAMES_ABSOLUTE):
+                        self.num_frame_controllers = self.num_frame_controllers - 1
+                    del self.controllers[i]
+                else:
+                    i = i + 1
+        else: # controller is specified
+            # Delete only that specific controller
+            i = 0
+            while i < len(self.controllers):
+                orig_parameters,orig_parameter_name,orig_controller = self.controllers[i]
+                if (orig_parameters == class_with_parameters.parameters and
+                    orig_parameter_name == parameter_name and
+                    orig_controller == controller):
+                    if controller.temporal_variables & (FRAMES_SINCE_GO|FRAMES_ABSOLUTE):
+                        self.num_frame_controllers = self.num_frame_controllers - 1
+                else:
+                    i = i + 1
+
+    def __call_controllers(self,
+                         go_started=None,
+                         doing_transition=None):
+        done_once = [] # list of ONCE contollers to switch status of
+        for (parameters_instance, parameter_name, controller) in self.controllers:
+            evaluate = 0
+            if controller.eval_frequency & ONCE:
+                evaluate = 1
+                done_once.append(controller)
+            elif doing_transition and (controller.eval_frequency & TRANSITIONS):
+                evaluate = 1
+            elif controller.eval_frequency & EVERY_FRAME:
+                evaluate = 1
+
+            if evaluate:
+                if controller.temporal_variables & TIME_SEC_ABSOLUTE:
+                    controller.time_sec_absolute = self.time_sec_absolute
+                if controller.temporal_variables & FRAMES_ABSOLUTE:
+                    controller.frames_absolute = self.frames_absolute
+
+                if go_started:
+                    if not (controller.eval_frequency & NOT_DURING_GO):
+                        if controller.temporal_variables & TIME_SEC_SINCE_GO:
+                            controller.time_sec_since_go = self.time_sec_since_go
+                        if controller.temporal_variables & FRAMES_SINCE_GO:
+                            controller.frames_since_go = self.frames_since_go
+                        result = controller.during_go_eval()
+                        if parameter_name is not None:
+                            setattr(parameters_instance, parameter_name, result)
+                else:
+                    if not (controller.eval_frequency & NOT_BETWEEN_GO):
+                        if controller.temporal_variables & TIME_SEC_SINCE_GO:
+                            controller.time_sec_since_go = None
+                        if controller.temporal_variables & FRAMES_SINCE_GO:
+                            controller.frames_since_go = None
+                        result = controller.between_go_eval()
+                        if parameter_name is not None:
+                            setattr(parameters_instance, parameter_name, result)
+
+        for controller in done_once:
+            #Unset ONCE flag
+            controller.eval_frequency = controller.eval_frequency & ~ONCE
+            if isinstance(controller,EncapsulatedController):
+                controller.contained_controller.eval_frequency = controller.contained_controller.eval_frequency & ~ONCE
+
+    def is_in_go_loop(self):
+        """Queries if the presentation is in a go loop.
+
+        This is useful to check the state of the Vision Egg
+        application from a remote client over Pyro."""
+        return self.in_go_loop
+
+    def were_frames_dropped_in_last_go_loop(self):
+        return self.frames_dropped_in_last_go_loop
+
+    def get_last_go_loop_start_time_absolute_sec(self):
+        return self.last_go_loop_start_time_absolute_sec
+
+    def go(self):
+        """Main control loop during stimulus presentation.
+
+        This is the heart of realtime control in the Vision Egg, and
+        contains the main loop during a stimulus presentation. This
+        coordinates the timing of calling the controllers.
+
+        In the main loop, the current time (in absolute seconds,
+        go-loop-start-relative seconds, and go-loop-start-relative
+        frames) is computed, the appropriate controllers are called
+        with this information, the screen is cleared, each viewport is
+        drawn to the back buffer (while the video card continues
+        painting the front buffer on the display), and the buffers are
+        swapped.
+
+        """
+        import VisionEgg.Core # here to prevent circular import
+        self.in_go_loop = 1
+
+        swap_buffers = VisionEgg.Core.swap_buffers # shorthand
+
+        # Clear boolean indicator
+        self.frames_dropped_in_last_go_loop = False
+
+        # Create shorthand notation, which speeds the main loop
+        # slightly by not performing name lookup each time.
+        p = self.parameters
+
+        if p.collect_timing_info:
+            frame_timer = VisionEgg.Core.FrameTimer()
+
+        while (not p.trigger_armed) or (not p.trigger_go_if_armed):
+            self.between_presentations()
+
+        # Go!
+
+        self.time_sec_absolute=VisionEgg.time_func()
+
+        if p.override_t_abs_sec is not None:
+            raise NotImplementedError("Cannot override absolute time yet")
+
+        self.last_go_loop_start_time_absolute_sec = self.time_sec_absolute
+        self.time_sec_since_go = 0.0
+        self.frames_since_go = 0
+
+        synclync_connection = VisionEgg.config._SYNCLYNC_CONNECTION # create shorthand
+        if synclync_connection:
+            import synclync
+            synclync_connection.next_control_packet.action_flags += (synclync.SL_CLEAR_VSYNC_COUNT +
+                                                                     synclync.SL_CLEAR_NOTIFY_SWAPPED_COUNT +
+                                                                     synclync.SL_CLEAR_FRAMESKIP_COUNT)
+            synclync_hack_done_once = 0
+
+        # Tell transitional controllers a presentation is starting
+        self.__call_controllers(
+            go_started=1,
+            doing_transition=1)
+
+        # Do the main loop
+        start_time_absolute = self.time_sec_absolute
+        if p.go_duration[0] == 'forever': # forever
+            current_duration_value = 0
+        elif p.go_duration[1] == 'seconds': # duration units
+            current_duration_value = self.time_sec_since_go
+        elif p.go_duration[1] == 'frames': # duration units
+            current_duration_value = self.frames_since_go
+        else:
+            raise RuntimeError("Unknown duration unit '%s'"%p.go_duration[1])
+
+        while (current_duration_value < p.go_duration[0]):
+            # Get list of screens
+            screens = []
+            for viewport in p.viewports:
+                s = viewport.parameters.screen
+                if s not in screens:
+                    screens.append(s)
+
+            # Clear the screen(s)
+            for screen in screens:
+                screen.clear()
+
+            # Update all the realtime parameters
+            self.__call_controllers(
+                go_started=1,
+                doing_transition=0)
+
+            # Draw each viewport
+            for viewport in p.viewports:
+                viewport.draw()
+
+            # Swap the buffers
+            if synclync_connection:
+                if not synclync_hack_done_once:
+                    synclync_connection.next_control_packet.action_flags += (synclync.SL_NOTIFY_SWAPPED_BUFFERS +
+                                                                             synclync.SL_NOTIFY_IN_GO_LOOP)
+                    synclync_connection.send_control_packet()
+                    synclync_hack_done_once = 1
+                data_packet = synclync_connection.get_latest_data_packet()
+            swap_buffers()
+
+            # Set the time variables for the next frame
+            self.time_sec_absolute=VisionEgg.time_func()
+            last_time_sec_since_go = self.time_sec_since_go
+            self.time_sec_since_go = self.time_sec_absolute - start_time_absolute
+            self.frames_absolute += 1
+            self.frames_since_go += 1
+
+            if p.collect_timing_info:
+                frame_timer.tick()
+
+            # Make sure we use the right value to check if we're done
+            if p.go_duration[0] == 'forever': # forever
+                pass # current_duration_value already set to 0
+            elif p.go_duration[1] == 'seconds':
+                current_duration_value = self.time_sec_since_go
+            elif p.go_duration[1] == 'frames':
+                current_duration_value = self.frames_since_go
+            else:
+                raise RuntimeError("Unknown duration unit '%s'"%p.go_duration[1])
+
+            # Check events if requested
+            if p.check_events:
+                for event in pygame.event.get():
+                    for event_type, event_callback in p.handle_event_callbacks:
+                        if event.type is event_type:
+                            event_callback(event)
+
+        # Tell transitional controllers a presentation has ended
+        self.__call_controllers(
+            go_started=0,
+            doing_transition=1)
+
+        # Tell SyncLync we're not in go loop anymore
+        if synclync_connection:
+            synclync_connection.send_control_packet() # nothing in action_flags -- finishes go loop
+
+        # Check to see if frame by frame control was desired
+        # but OpenGL not syncing to vertical retrace
+        try:
+            mean_frame_time_sec = frame_timer.get_average_ifi_sec()
+            calculated_fps = 1.0/mean_frame_time_sec
+        except:
+            # the above fails when no frames were drawn
+            mean_frame_time_sec = 0.0
+            calculated_fps = 0.0
+
+        if self.num_frame_controllers: # Frame by frame control desired
+            impossibly_fast_frame_rate = 210.0
+            if calculated_fps > impossibly_fast_frame_rate: # Let's assume no monitor can exceed impossibly_fast_frame_rate
+                logger = logging.getLogger('VisionEgg.FlowControl')
+                logger.error("Frame by frame control desired, but "
+                             "average frame rate was %.2f frames per "
+                             "second-- faster than any display device "
+                             "(that I know of).  Set your drivers to "
+                             "sync buffer swapping to vertical "
+                             "retrace. (platform/driver "
+                             "dependent)"%(calculated_fps))
+        # Warn if > warn_mean_fps_threshold error in frame rate
+        if abs(calculated_fps-VisionEgg.config.VISIONEGG_MONITOR_REFRESH_HZ) / float(VisionEgg.config.VISIONEGG_MONITOR_REFRESH_HZ) > self.parameters.warn_mean_fps_threshold:
+            logger = logging.getLogger('VisionEgg.FlowControl')
+            logger.warning("Calculated frames per second was %.3f, "
+                           "while the VISIONEGG_MONITOR_REFRESH_HZ "
+                           "variable is %s."%(calculated_fps,
+                           VisionEgg.config.VISIONEGG_MONITOR_REFRESH_HZ))
+        frame_skip_fraction = self.parameters.warn_longest_frame_threshold
+        inter_frame_inteval = 1.0/VisionEgg.config.VISIONEGG_MONITOR_REFRESH_HZ
+
+        if p.collect_timing_info:
+            longest_frame_draw_time_sec = frame_timer.get_longest_frame_duration_sec()
+            if longest_frame_draw_time_sec is not None:
+                logger = logging.getLogger('VisionEgg.FlowControl')
+                if longest_frame_draw_time_sec >= (frame_skip_fraction*inter_frame_inteval):
+                    self.frames_dropped_in_last_go_loop = True
+                    logger.warning("One or more frames took %.1f msec, "
+                                   "which is signficantly longer than the "
+                                   "expected inter frame interval of %.1f "
+                                   "msec for your frame rate (%.1f Hz)."%(
+                                   longest_frame_draw_time_sec*1000.0,
+                                   inter_frame_inteval*1000.0,
+                                   VisionEgg.config.VISIONEGG_MONITOR_REFRESH_HZ))
+                else:
+                    logger.debug("Longest frame update was %.1f msec. "
+                                 "Your expected inter frame interval is "
+                                 "%f msec."%(longest_frame_draw_time_sec*1000.0,
+                                 inter_frame_inteval*1000.0))
+            frame_timer.log_histogram()
+
+        self.in_go_loop = 0
+
+    def export_movie_go(self, frames_per_sec=12.0, filename_suffix=".tif", filename_base="visionegg_movie", path="."):
+        """Emulates method 'go' but saves a movie."""
+        import VisionEgg.Core # here to prevent circular import
+        import Image # Could import this at the beginning of the file, but it breaks sometimes!
+        import os # Could also import this, but this is the only place its needed
+
+        # Create shorthand notation, which speeds the main loop
+        # slightly by not performing name lookup each time.
+        p = self.parameters
+
+        # Switch function VisionEgg.time_func
+        self.time_sec_absolute=VisionEgg.time_func() # Set for real once
+        true_time_func = VisionEgg.time_func
+        def fake_time_func():
+            return self.time_sec_absolute
+        VisionEgg.time_func = fake_time_func
+
+        logger = logging.getLogger('VisionEgg.FlowControl')
+
+        # Go!
+
+        self.time_sec_absolute=VisionEgg.time_func()
+        self.time_sec_since_go = 0.0
+        self.frames_since_go = 0
+
+        # Tell transitional controllers a presentation is starting
+        self.__call_controllers(
+            go_started=1,
+            doing_transition=1)
+
+        # Do the main loop
+        image_no = 1
+        if p.go_duration[0] == 'forever': # forever
+            current_duration_value = 0
+        elif p.go_duration[1] == 'seconds': # duration units
+            current_duration_value = self.time_sec_since_go
+        elif p.go_duration[1] == 'frames': # duration units
+            current_duration_value = self.frames_since_go
+        else:
+            raise RuntimeError("Unknown duration unit '%s'"%p.go_duration[1])
+        while (current_duration_value < p.go_duration[0]):
+            # Get list of screens
+            screens = []
+            for viewport in p.viewports:
+                s = viewport.parameters.screen
+                if s not in screens:
+                    screens.append(s)
+
+            # Clear the screen(s)
+            for screen in screens:
+                screen.clear()
+
+            # Update all the realtime parameters
+            self.__call_controllers(
+                go_started=1,
+                doing_transition=0)
+
+            # Draw each viewport
+            for viewport in p.viewports:
+                viewport.draw()
+
+            # Swap the buffers
+            VisionEgg.Core.swap_buffers()
+
+            # Now save the contents of the framebuffer
+            fb_image = screen.get_framebuffer_as_image(buffer='front',format=gl.GL_RGB)
+            filename = "%s%04d%s"%(filename_base,image_no,filename_suffix)
+            savepath = os.path.join( path, filename )
+            logger.info("Saving '%s'"%filename)
+            fb_image.save( savepath )
+            image_no = image_no + 1
+
+            # Set the time variables for the next frame
+            self.time_sec_absolute += 1.0/frames_per_sec
+            self.time_sec_since_go += 1.0/frames_per_sec
+            self.frames_absolute += 1
+            self.frames_since_go += 1
+
+            # Make sure we use the right value to check if we're done
+            if p.go_duration[0] == 'forever':
+                pass # current_duration_value already set to 0
+            elif p.go_duration[1] == 'seconds':
+                current_duration_value = self.time_sec_since_go
+            elif p.go_duration[1] == 'frames':
+                current_duration_value = self.frames_since_go
+            else:
+                raise RuntimeError("Unknown duration unit '%s'"%p.go_duration[1])
+
+            # Check events if requested
+            if p.check_events:
+                for event in pygame.event.get():
+                    for event_type, event_callback in p.handle_event_callbacks:
+                        if event.type is event_type:
+                            event_callback(event)
+
+        # Tell transitional controllers a presentation has ended
+        self.__call_controllers(
+            go_started=0,
+            doing_transition=1)
+
+        if len(screens) > 1:
+            logger.warning("Only saved movie from last screen.")
+
+        scp = screen.constant_parameters
+        if scp.red_bits is not None:
+            warn_about_movie_depth = 0
+            if scp.red_bits > 8:
+                warn_about_movie_depth = 1
+            elif scp.green_bits > 8:
+                warn_about_movie_depth = 1
+            elif scp.blue_bits > 8:
+                warn_about_movie_depth = 1
+            if warn_about_movie_depth:
+                logger.warning("Only saved 8 bit per pixel movie, even "
+                               "though your framebuffer supports more!")
+        # Restore VisionEgg.time_func
+        VisionEgg.time_func = true_time_func
+
+    def run_forever(self):
+        """Main control loop between go loops."""
+        p = self.parameters
+        # enter with transitional contoller call
+        self.__call_controllers(
+            go_started=0,
+            doing_transition=1)
+        while not p.quit:
+            self.between_presentations()
+            if self.parameters.enter_go_loop:
+                self.parameters.enter_go_loop = False
+                self.go()
+            if p.check_events:
+                for event in pygame.event.get():
+                    for event_type, event_callback in p.handle_event_callbacks:
+                        if event.type is event_type:
+                            event_callback(event)
+
+    def between_presentations(self):
+        """Maintain display while between stimulus presentations.
+
+        This function gets called as often as possible when in the
+        'run_forever' loop except when execution has shifted to the
+        'go' loop.
+
+        Other than the difference in the time variable passed to the
+        controllers, this routine is very similar to the inside of the
+        main loop in the go method.
+        """
+        import VisionEgg.Core # here to prevent circular import
+
+        self.time_sec_absolute=VisionEgg.time_func()
+
+        self.__call_controllers(
+            go_started=0,
+            doing_transition=0)
+
+        viewports = self.parameters.viewports
+
+        # Get list of screens
+        screens = []
+        for viewport in viewports:
+            s = viewport.parameters.screen
+            if s not in screens:
+                screens.append(s)
+
+        # Clear the screen(s)
+        for screen in screens:
+            screen.clear()
+        # Draw each viewport, including each stimulus
+        for viewport in viewports:
+            viewport.draw()
+        VisionEgg.Core.swap_buffers()
+        self.frames_absolute += 1
+
+####################################################################
+#
+#        Controller
+#
+####################################################################
+
+class Controller(object):
+    """Control parameters.
+
+    This abstract base class defines the interface to any controller.
+
+    Methods:
+
+    returns_type() -- Get the type of the value returned by the eval functions
+    during_go_eval() -- Evaluate controller during the main 'go' loop.
+    between_go_eval() -- Evaluate controller between runs of the main 'go' loop.
+
+    The during_go_eval() and between_go_eval() methods are called to
+    update a particular parameter such as the position of a stimulus
+    on the screen.  These methods must return a value specified by the
+    returns_type() method.  These methods are called at particular
+    intervals as specified by eval_frequency and with temporal
+    parameters specified by temporal_variables (see below for more
+    details).  Also, see the documentation for the Presentation class.
+
+    Attributes:
+
+    return_type -- type of the value returned by the eval functions
+    eval_frequency -- when eval functions called (see above)
+    temporal_variables -- what time variables used (see above)
+
+    A Controller instance's attribute "eval_frequency" controls when a
+    controller is evaluated. This variable is a bitwise "or" (the |
+    operator) of the following flags:
+
+    EVERY_FRAME    -- every frame
+    TRANSITIONS    -- on enter and exit from go loop
+    ONCE           -- at the next chance possible (see below)
+    NOT_DURING_GO  -- as above, but never during go loop (see below)
+    NOT_BETWEEN_GO -- as above, but never between go loops (see below)
+
+    The ONCE flag is automatically unset after evaluation,
+    hence its name. As an example, if eval_frequency is set to
+    ONCE | TRANSITIONS, it will be evaluated
+    before drawing the next frame and then only before and after the
+    go loop.
+
+    NOT_DURING_GO and NOT_BETWEEN_GO modify other behavior. For
+    example, to evaluate a controller on every frame during go loops
+    but not between go loops:
+
+    eval_frequency = EVERY_FRAME | NOT_BETWEEN_GO
+
+    If none of the above flags is set, the value is:
+
+    NEVER          -- this controller is never called
+
+    A Controller instance's attribute "temporal_variables" controls
+    what time variables are set for use. This variable is a bitwise
+    "or" of the following flags:
+
+    TIME_SEC_ABSOLUTE -- seconds, continuously increasing
+    TIME_SEC_SINCE_GO -- seconds, reset to 0.0 each go loop
+    FRAMES_ABSOLUTE   -- frames, continuously increasing
+    FRAMES_SINCE_GO   -- frames, reset to 0 each go loop
+
+    If none of these flags is set, the value is:
+
+    TIME_INDEPENDENT -- No temporal variables.
+
+    When the eval methods (during_go_eval and between_go_eval) are
+    called, attributes are set depending on the temporal variables
+    used:
+
+    temporal_variable   attribute set
+    -----------------   -------------
+    TIME_SEC_ABSOLUTE   self.time_sec_absolute
+    TIME_SEC_SINCE_GO   self.time_sec_since_go
+    FRAMES_ABSOLUTE     self.frames_absolute
+    FRAMES_SINCE_GO     self.frames_since_go
+
+    Other information:
+
+    Instances of Controller are called by instances of the
+    Presentation class.  during_go_eval() is called during a go()
+    loop, and between_go_eval() is called by between_presentations()
+    (during run_forever(), for example).  Before calling these
+    methods, attributes of the controller are set accoring to
+    \attribute{temporal_variables}.
+
+    """
+    # temporal_variables flags:
+    TIME_INDEPENDENT  = 0x00
+    TIME_SEC_ABSOLUTE = 0x01
+    TIME_SEC_SINCE_GO = 0x02
+    FRAMES_ABSOLUTE   = 0x04
+    FRAMES_SINCE_GO   = 0x08
+
+    # eval_frequency flags:
+    NEVER          = 0x00
+    EVERY_FRAME    = 0x01
+    TRANSITIONS    = 0x02
+    ONCE           = 0x04
+    NOT_DURING_GO  = 0x08
+    NOT_BETWEEN_GO = 0x10
+
+    flag_dictionary = {
+        'TIME_INDEPENDENT'  : TIME_INDEPENDENT,
+        'TIME_SEC_ABSOLUTE' : TIME_SEC_ABSOLUTE,
+        'TIME_SEC_SINCE_GO' : TIME_SEC_SINCE_GO,
+        'FRAMES_ABSOLUTE'   : FRAMES_ABSOLUTE,
+        'FRAMES_SINCE_GO'   : FRAMES_SINCE_GO,
+
+        'NEVER'             : NEVER,
+        'EVERY_FRAME'       : EVERY_FRAME,
+        'TRANSITIONS'       : TRANSITIONS,
+        'ONCE'              : ONCE,
+        'NOT_DURING_GO'     : NOT_DURING_GO,
+        'NOT_BETWEEN_GO'    : NOT_BETWEEN_GO}
+
+    def __init__(self,
+                 eval_frequency = EVERY_FRAME,
+                 temporal_variables = TIME_SEC_SINCE_GO,
+                 return_type = None):
+        """Create instance of Controller.
+
+        Keyword arguments:
+
+        eval_frequency -- Int, bitwise "or" of flags
+        temporal_variables -- Int, bitwise "or" of flags
+        return_type -- a VisionEgg.ParameterTypes.ParameterTypeDef subclass
+
+        If return_type is not set, it calls the function once to get a
+        return value and then attempts to guess its type.
+
+        """
+        if return_type is None:
+            raise ValueError("Must set argument 'return_type' in Controller.")
+        if not ve_types.is_parameter_type_def(return_type):
+            raise TypeError("Argument 'return_type' in Controller must be a "
+                            "VisionEgg parameter type definition. Hint: use "
+                            "VisionEgg.ParameterTypes.get_type() to get the "
+                            "type of your value")
+        self.return_type = return_type
+
+        self.temporal_variables = temporal_variables
+        self.eval_frequency = eval_frequency
+
+    def evaluate_now(self):
+        """Call this after updating the values of a controller if it's not evaluated EVERY_FRAME."""
+        self.eval_frequency = self.eval_frequency | ONCE
+
+    def set_eval_frequency(self,eval_frequency):
+        self.eval_frequency = eval_frequency
+
+    def returns_type(self):
+        """Called by Presentation. Get the return type of this controller."""
+        return self.return_type
+
+    def during_go_eval(self):
+        """Called by Presentation. Evaluate during the main 'go' loop.
+
+        Override this method in subclasses."""
+        raise RuntimeError("%s: Definition of during_go_eval() in abstract base class Contoller must be overriden."%(str(self),))
+
+    def between_go_eval(self):
+        """Called by Presentation. Evaluate between runs of the main 'go' loop.
+
+        Override this method in subclasses."""
+        raise RuntimeError("%s: Definition of between_go_eval() in abstract base class Controller must be overriden."%(str(self),))
+
+    def _test_self(self,go_started):
+        """Test whether a controller works.
+
+        This method performs everything the Presentation go() or
+        run_forever() methods do when calling controllers, except that
+        the temporal variables are set to -1 and that the return value
+        is not used to set parameters."""
+
+        if self.temporal_variables & TIME_SEC_ABSOLUTE:
+            self.time_sec_absolute = -1.0
+        if self.temporal_variables & FRAMES_ABSOLUTE:
+            self.frames_absolute = -1
+
+        if go_started:
+            if not (self.eval_frequency & NOT_DURING_GO):
+                if self.temporal_variables & TIME_SEC_SINCE_GO:
+                    self.time_sec_since_go = -1.0
+                if self.temporal_variables & FRAMES_SINCE_GO:
+                    self.frames_since_go = -1
+                return self.during_go_eval()
+        else:
+            if not (self.eval_frequency & NOT_BETWEEN_GO):
+                if self.temporal_variables & TIME_SEC_SINCE_GO:
+                    self.time_sec_since_go = None
+                if self.temporal_variables & FRAMES_SINCE_GO:
+                    self.frames_since_go = None
+                return self.between_go_eval()
+
+class ConstantController(Controller):
+    """Set parameters to a constant value."""
+    def __init__(self,
+                 during_go_value = None,
+                 between_go_value = None,
+                 **kw
+                 ):
+        if kw.get('return_type',None) is None:
+            kw.setdefault('return_type',ve_types.get_type(during_go_value))
+        kw.setdefault('eval_frequency',ONCE | TRANSITIONS)
+        Controller.__init__(self,**kw)
+        if self.return_type is not types.NoneType and during_go_value is None:
+            raise ValueError("Must specify during_go_value")
+        if between_go_value is None:
+            between_go_value = during_go_value
+        ve_types.assert_type(ve_types.get_type(during_go_value),self.return_type)
+        ve_types.assert_type(ve_types.get_type(between_go_value),self.return_type)
+        self.during_go_value = during_go_value
+        self.between_go_value = between_go_value
+
+    def set_during_go_value(self,during_go_value):
+        ve_types.assert_type(ve_types.get_type(during_go_value),self.return_type)
+        self.during_go_value = during_go_value
+
+    def get_during_go_value(self):
+        return self.during_go_value
+
+    def set_between_go_value(self,between_go_value):
+        ve_types.assert_type(ve_types.get_type(between_go_value),self.return_type)
+        self.between_go_value = between_go_value
+
+    def get_between_go_value(self):
+        return self.between_go_value
+
+    def during_go_eval(self):
+        """Called by Presentation. Overrides method in Controller base class."""
+        return self.during_go_value
+
+    def between_go_eval(self):
+        """Called by Presentation. Overrides method in Controller base class."""
+        return self.between_go_value
+
+class EvalStringController(Controller):
+    """Set parameters using dynamically interpreted Python string.
+
+    The string, when evaluated as Python code, becomes the value used.
+    For example, the string "1.0" would set parameter values to 1.0.
+
+    To increase speed, the string is compiled to Python's bytecode
+    format.
+
+    The string can make use of temporal variables, which are made
+    available depending on the controller's temporal_variables
+    attribute. Note that only the absolute temporal variables are
+    available when the go loop is not running.
+
+    flag(s) present    variable  description
+
+    TIME_SEC_ABSOLUTE  t_abs     seconds, continuously increasing
+    TIME_SEC_SINCE_GO  t         seconds, reset to 0.0 each go loop
+    FRAMES_ABSOLUTE    f_abs     frames, continuously increasing
+    FRAMES_SINCE_GO    f         frames, reset to 0 each go loop
+
+    """
+    def __init__(self,
+                 during_go_eval_string = None,
+                 between_go_eval_string = None,
+                 **kw
+                 ):
+        import VisionEgg.Core # here to prevent circular import
+
+        # Create a namespace for eval_strings to use
+        self.eval_globals = {}
+
+        if during_go_eval_string is None:
+            raise ValueError("'during_go_eval_string' is a required argument")
+
+        # Make Numeric and math modules available
+        self.eval_globals['Numeric'] = Numeric
+        self.eval_globals['math'] = math
+        # Make Numeric and math modules available without module name
+        for key in dir(Numeric):
+            self.eval_globals[key] = getattr(Numeric,key)
+        for key in dir(math):
+            self.eval_globals[key] = getattr(math,key)
+
+        self.during_go_eval_code = compile(during_go_eval_string,'<string>','eval')
+        self.during_go_eval_string = during_go_eval_string
+        not_between_go = 0
+        if between_go_eval_string is None:
+            not_between_go = 1
+        else:
+            self.between_go_eval_code = compile(between_go_eval_string,'<string>','eval')
+            self.between_go_eval_string = between_go_eval_string
+
+        # Check to make sure return_type is set
+        set_return_type = 0
+        if kw.get('return_type',None) is None:
+            set_return_type = 1
+            kw['return_type'] = types.NoneType
+
+        # Call base class __init__
+        Controller.__init__(self,**kw)
+        if not_between_go:
+            self.eval_frequency = self.eval_frequency|NOT_BETWEEN_GO
+        if set_return_type:
+            logger = logging.getLogger('VisionEgg.FlowControl')
+            if not (self.eval_frequency & NOT_DURING_GO):
+                logger.debug( 'Executing "%s" to test for return type.'%(during_go_eval_string,))
+                self.return_type = ve_types.get_type(self._test_self(go_started=1))
+            elif not (self.eval_frequency & NOT_BETWEEN_GO):
+                logger.debug('Executing "%s" to test for return type.'%(between_go_eval_string,))
+                self.return_type = ve_types.get_type(self._test_self(go_started=0))
+
+    def set_during_go_eval_string(self,during_go_eval_string):
+        self.during_go_eval_code = compile(during_go_eval_string,'<string>','eval')
+        self.during_go_eval_string = during_go_eval_string
+
+    def get_during_go_eval_string(self):
+        return self.during_go_eval_string
+
+    def set_between_go_eval_string(self,between_go_eval_string):
+        self.between_go_eval_code = compile(between_go_eval_string,'<string>','eval')
+        self.between_go_eval_string = between_go_eval_string
+        self.eval_frequency = self.eval_frequency & ~NOT_BETWEEN_GO
+
+    def get_between_go_eval_string(self):
+        if hasattr(self,"between_go_eval_string"):
+            return self.between_go_eval_string
+        else:
+            return None
+
+    def during_go_eval(self):
+        """Called by Presentation. Overrides method in Controller base class."""
+        eval_locals = {}
+        if self.temporal_variables & TIME_SEC_ABSOLUTE:
+            eval_locals['t_abs'] = self.time_sec_absolute
+        if self.temporal_variables & TIME_SEC_SINCE_GO:
+            eval_locals['t'] = self.time_sec_since_go
+        if self.temporal_variables & FRAMES_ABSOLUTE:
+            eval_locals['f_abs'] = self.frames_absolute
+        if self.temporal_variables & FRAMES_SINCE_GO:
+            eval_locals['f'] = self.frames_since_go
+        return eval(self.during_go_eval_code,self.eval_globals,eval_locals)
+
+    def between_go_eval(self):
+        """Called by Presentation. Overrides method in Controller base class."""
+        eval_locals = {}
+        if self.temporal_variables & TIME_SEC_ABSOLUTE:
+            eval_locals['t_abs'] = self.time_sec_absolute
+        if self.temporal_variables & FRAMES_ABSOLUTE:
+            eval_locals['f_abs'] = self.frames_absolute
+        return eval(self.between_go_eval_code,self.eval_globals,eval_locals)
+
+class ExecStringController(Controller):
+    """Set parameters using potentially complex Python string.
+
+    You can execute arbitrarily complex Python code with this
+    controller.  The return value must be contained within the
+    variable "x".  In other words, this string must assign the
+    variable x, so setting the string to "x=1.0" would set the
+    parameter under control to 1.0.
+
+    To increase speed, the string is compiled to Python's
+    bytecode format.
+
+    The string can make use of temporal variables, which are made
+    available depending on the controller's temporal_variables
+    attribute. Note that only the absolute temporal variables are
+    available when the go loop is not running.
+
+    flag(s) present    variable  description
+    -----------------  --------  ----------------------------------
+    TIME_SEC_ABSOLUTE  t_abs     seconds, continuously increasing
+    TIME_SEC_SINCE_GO  t         seconds, reset to 0.0 each go loop
+    FRAMES_ABSOLUTE    f_abs     frames, continuously increasing
+    FRAMES_SINCE_GO    f         frames, reset to 0 each go loop
+
+    """
+    def __init__(self,
+                 during_go_exec_string = None,
+                 between_go_exec_string = None,
+                 restricted_namespace = 1,
+                 **kw
+                 ):
+        import VisionEgg.Core # here to prevent circular import
+
+        # Create a namespace for eval_strings to use
+        self.eval_globals = {}
+
+        if during_go_exec_string is None:
+            raise ValueError, "'during_go_exec_string' is a required argument"
+
+        self.restricted_namespace = restricted_namespace
+
+        if self.restricted_namespace:
+            # Make Numeric and math modules available
+            self.eval_globals['Numeric'] = Numeric
+            self.eval_globals['math'] = math
+            # Make Numeric and math modules available without module name
+            for key in dir(Numeric):
+                self.eval_globals[key] = getattr(Numeric,key)
+            for key in dir(math):
+                self.eval_globals[key] = getattr(math,key)
+
+        self.during_go_exec_code = compile(during_go_exec_string,'<string>','exec')
+        self.during_go_exec_string = during_go_exec_string
+        not_between_go = 0
+        if between_go_exec_string is None:
+            not_between_go = 1
+        else:
+            self.between_go_exec_code = compile(between_go_exec_string,'<string>','exec')
+            self.between_go_exec_string = between_go_exec_string
+
+        # Check to make sure return_type is set
+        set_return_type = 0
+        if kw.get('return_type',None) is None:
+            set_return_type = 1
+            kw['return_type'] = types.NoneType
+
+        # Call base class __init__
+        Controller.__init__(self,**kw)
+        if not_between_go:
+            self.eval_frequency = self.eval_frequency|NOT_BETWEEN_GO
+        if set_return_type:
+            logger = logging.getLogger('VisionEgg.FlowControl')
+            if not (self.eval_frequency & NOT_DURING_GO):
+                logger.debug('Executing "%s" to test for return type.'%(during_go_exec_string,))
+                self.return_type = ve_types.get_type(self._test_self(go_started=1))
+            elif not (self.eval_frequency & NOT_BETWEEN_GO):
+                logger.debug('Executing "%s" to test for return type.'%(between_go_exec_string,))
+                self.return_type = ve_types.get_type(self._test_self(go_started=0))
+
+    def set_during_go_exec_string(self,during_go_exec_string):
+        self.during_go_exec_code = compile(during_go_exec_string,'<string>','exec')
+        self.during_go_exec_string = during_go_exec_string
+
+    def get_during_go_exec_string(self):
+        return self.during_go_exec_string
+
+    def set_between_go_exec_string(self,between_go_exec_string):
+        self.between_go_exec_code = compile(between_go_exec_string,'<string>','exec')
+        self.between_go_exec_string = between_go_exec_string
+        self.eval_frequency = self.eval_frequency & ~NOT_BETWEEN_GO
+
+    def get_between_go_exec_string(self):
+        if hasattr(self,"between_go_exec_string"):
+            return self.between_go_exec_string
+        else:
+            return None
+
+    def during_go_eval(self):
+        """Called by Presentation. Overrides method in Controller base class."""
+        eval_locals = {}
+        if self.temporal_variables & TIME_SEC_ABSOLUTE:
+            eval_locals['t_abs'] = self.time_sec_absolute
+        if self.temporal_variables & TIME_SEC_SINCE_GO:
+            eval_locals['t'] = self.time_sec_since_go
+        if self.temporal_variables & FRAMES_ABSOLUTE:
+            eval_locals['f_abs'] = self.frames_absolute
+        if self.temporal_variables & FRAMES_SINCE_GO:
+            eval_locals['f'] = self.frames_since_go
+        if self.restricted_namespace:
+            exec self.during_go_exec_code in self.eval_globals,eval_locals
+            return eval_locals['x']
+        else:
+            setup_locals_str = "\n"
+            for local_variable_name in eval_locals.keys():
+                setup_locals_str = setup_locals_str + local_variable_name + "=" + repr(eval_locals[local_variable_name]) + "\n"
+                exec setup_locals_str
+            exec self.during_go_exec_code
+            return x
+
+    def between_go_eval(self):
+        """Called by Presentation. Overrides method in Controller base class."""
+        eval_locals = {}
+        if self.temporal_variables & TIME_SEC_ABSOLUTE:
+            eval_locals['t_abs'] = self.time_sec_absolute
+        if self.temporal_variables & FRAMES_ABSOLUTE:
+            eval_locals['f_abs'] = self.frames_absolute
+        if self.restricted_namespace:
+            exec self.between_go_exec_code in self.eval_globals,eval_locals
+            return eval_locals['x']
+        else:
+            setup_locals_str = "\n"
+            for local_variable_name in eval_locals.keys():
+                setup_locals_str = setup_locals_str + local_variable_name + "=" + repr(eval_locals[local_variable_name]) + "\n"
+                exec setup_locals_str
+            exec self.between_go_exec_code
+            return x # x should be assigned by the exec string
+
+class FunctionController(Controller):
+    """Set parameters using a Python function.
+
+    This is a very commonly used subclass of Controller, because it is
+    very intuitive and requires a minimum of code to set up.  Many of
+    the Vision Egg demo programs create instances of
+    FunctionController.
+
+    A number of parameters are passed to the function depending on the
+    value of temporal_variables:
+
+    The function can make use of temporal variables, which are made
+    available by passing keyword argument(s) depending on the
+    controller's temporal_variables attribute. Note that only the
+    absolute temporal variables are available when the go loop is not
+    running.
+
+    flag(s) present    argument  description
+    -----------------  --------  ----------------------------------
+    TIME_SEC_ABSOLUTE  t_abs     seconds, continuously increasing
+    TIME_SEC_SINCE_GO  t         seconds, reset to 0.0 each go loop
+    FRAMES_ABSOLUTE    f_abs     frames, continuously increasing
+    FRAMES_SINCE_GO    f         frames, reset to 0 each go loop
+
+    """
+    def __init__(self,
+                 during_go_func = None,
+                 between_go_func = None,
+                 **kw
+                 ):
+        """Create an instance of FunctionController.
+
+        Arguments:
+
+        during_go_func -- function evaluted during go loop
+        between_go_func -- function evaluted not during go loop
+
+        Keyword arguments:
+
+        temporal_variables -- a bitwise mask of constants
+        return_type -- a VisionEgg.ParameterTypes.ParameterTypeDef subclass
+
+        temporal_variables defaults to TIME_SEC_SINCE_GO.
+
+        If return_type is not set, it calls the function once to get a
+        return value and then attempts to guess its type.
+
+        """
+        import VisionEgg.Core # here to prevent circular import
+
+        if during_go_func is None:
+            raise ValueError("Must specify during_go_func")
+
+        # Set default value if not set
+        kw.setdefault('temporal_variables',TIME_SEC_SINCE_GO) # default value
+
+        # Check to make sure return_type is set
+        if kw.get('return_type',None) is None:
+            logger = logging.getLogger('VisionEgg.FlowControl')
+            logger.debug('Evaluating %s to test for return type.'%(str(during_go_func),))
+            call_args = {}
+            if kw['temporal_variables'] & TIME_SEC_ABSOLUTE:
+                call_args['t_abs'] = VisionEgg.time_func()
+            if kw['temporal_variables'] & TIME_SEC_SINCE_GO:
+                call_args['t'] = 0.0
+            if kw['temporal_variables'] & FRAMES_ABSOLUTE:
+                call_args['f_abs'] = 0
+            if kw['temporal_variables'] & FRAMES_SINCE_GO:
+                call_args['f'] = 0
+            # Call the function with time variables
+            kw['return_type'] = ve_types.get_type(during_go_func(**call_args))
+        Controller.__init__(self,**kw)
+        self.during_go_func = during_go_func
+        self.between_go_func = between_go_func
+        if between_go_func is None:
+            self.eval_frequency = self.eval_frequency|NOT_BETWEEN_GO
+
+    def during_go_eval(self):
+        """Called by Presentation. Overrides method in Controller base class."""
+        call_args = {}
+        if self.temporal_variables & TIME_SEC_ABSOLUTE:
+            call_args['t_abs'] = self.time_sec_absolute
+        if self.temporal_variables & TIME_SEC_SINCE_GO:
+            call_args['t'] = self.time_sec_since_go
+        if self.temporal_variables & FRAMES_ABSOLUTE:
+            call_args['f_abs'] = self.frames_absolute
+        if self.temporal_variables & FRAMES_SINCE_GO:
+            call_args['f'] = self.frames_since_go
+        return self.during_go_func(**call_args)
+
+    def between_go_eval(self):
+        """Called by Presentation. Overrides method in Controller base class."""
+        call_args = {}
+        if self.temporal_variables & TIME_SEC_ABSOLUTE:
+            call_args['t_abs'] = self.time_sec_absolute
+        if self.temporal_variables & FRAMES_ABSOLUTE:
+            call_args['f_abs'] = self.frames_absolute
+        return self.between_go_func(**call_args)
+
+class EncapsulatedController(Controller):
+    """Set parameters by encapsulating another Controller.
+
+    Allows a new instance of Controller to control the same parameter
+    as an old instance.
+
+    You probably won't ever have to use this class directly.  Both the
+    VisionEgg.TCPController.TCPController and
+    VisionEgg.PyroHelpers.PyroEncapsulatedController classes subclass
+    this class.
+
+    """
+    def __init__(self,initial_controller):
+        # Initialize base class without raising error for no return_type
+        Controller.__init__(self,**{'return_type':types.NoneType})
+        self.contained_controller = initial_controller
+        self.__sync_mimic()
+
+    def __sync_mimic(self):
+        self.return_type = self.contained_controller.return_type
+        self.temporal_variables = self.contained_controller.temporal_variables
+        self.eval_frequency = self.contained_controller.eval_frequency
+
+    def set_new_controller(self,new_controller):
+        """Call this to encapsulate a (new) controller."""
+        self.contained_controller = new_controller
+        self.__sync_mimic()
+
+    def during_go_eval(self):
+        """Called by Presentation. Overrides method in Controller base class."""
+        import VisionEgg.Core # here to prevent circular import
+        if self.temporal_variables & TIME_SEC_ABSOLUTE:
+            self.contained_controller.time_sec_absolute = self.time_sec_absolute
+        if self.temporal_variables & TIME_SEC_SINCE_GO:
+            self.contained_controller.time_sec_since_go = self.time_sec_since_go
+        if self.temporal_variables & FRAMES_ABSOLUTE:
+            self.contained_controller.frames_absolute = self.frames_absolute
+        if self.temporal_variables & FRAMES_SINCE_GO:
+            self.contained_controller.frames_since_go = self.frames_since_go
+        return self.contained_controller.during_go_eval()
+
+    def between_go_eval(self):
+        """Called by Presentation. Overrides method in Controller base class."""
+        import VisionEgg.Core # here to prevent circular import
+        import VisionEgg.FlowControl
+        if self.temporal_variables & TIME_SEC_ABSOLUTE:
+            self.contained_controller.time_sec_absolute = self.time_sec_absolute
+        if self.temporal_variables & FRAMES_ABSOLUTE:
+            self.contained_controller.frames_absolute = self.frames_absolute
+        return self.contained_controller.between_go_eval()
+
+# Constants (These are a copy of the static class variables from the
+# Controller class into the module-level namespace. This is done for
+# convenience.)
+#     temporal_variables flags:
+TIME_INDEPENDENT  = Controller.TIME_INDEPENDENT
+TIME_SEC_ABSOLUTE = Controller.TIME_SEC_ABSOLUTE
+TIME_SEC_SINCE_GO = Controller.TIME_SEC_SINCE_GO
+FRAMES_ABSOLUTE   = Controller.FRAMES_ABSOLUTE
+FRAMES_SINCE_GO   = Controller.FRAMES_SINCE_GO
+#     eval_frequency flags:
+NEVER          = Controller.NEVER
+EVERY_FRAME    = Controller.EVERY_FRAME
+TRANSITIONS    = Controller.TRANSITIONS
+ONCE           = Controller.ONCE
+NOT_DURING_GO  = Controller.NOT_DURING_GO
+NOT_BETWEEN_GO = Controller.NOT_BETWEEN_GO
diff --git a/VisionEgg/GL.py b/VisionEgg/GL.py
new file mode 100644
index 0000000..7106714
--- /dev/null
+++ b/VisionEgg/GL.py
@@ -0,0 +1,57 @@
+# The Vision Egg: GL
+#
+# Copyright (C) 2001-2003 Andrew Straw.
+# Author: Andrew Straw <astraw at users.sourceforge.net>
+# URL: <http://www.visionegg.org/>
+#
+# Distributed under the terms of the GNU Lesser General Public License
+# (LGPL). See LICENSE.TXT that came with this file.
+#
+# $Id$
+
+"""
+Vision Egg GL module -- lump all OpenGL names in one namespace.
+
+"""
+
+from OpenGL.GL import * # get everything from OpenGL.GL
+import OpenGL
+import numpy
+if OpenGL.__version__.startswith('3.0.0b'):
+    raise RuntimeError('PyOpenGL 3beta has known incompatibilities '
+                       'with the Vision Egg. Please upgrade to PyOpenGL 3.')
+
+__version__ = OpenGL.__version__
+
+# tell py2exe we want these modules
+try:
+    import OpenGL.GL.GL__init___
+except:
+    pass
+try:
+    import OpenGL.GL.ARB.multitexture
+except:
+    pass
+try:
+    import OpenGL.GL.EXT.bgra
+except:
+    pass
+try:
+    import SGIS.texture_edge_clamp
+except:
+    pass
+
+# why doesn't PyOpenGL define this?!
+try:
+    GL_UNSIGNED_INT_8_8_8_8_REV
+except NameError:
+    GL_UNSIGNED_INT_8_8_8_8_REV = 0x8367
+
+if OpenGL.__version__[0] == '3':
+    if (OpenGL.__version__.startswith('3.0.0a')) or (OpenGL.__version__ == '3.0.0b1'):
+
+        # A bug in early PyOpenGL 3.x had problems with some arrays
+        _orig_glLoadMatrixf = glLoadMatrixf
+        def glLoadMatrixf(M):
+            M = numpy.array([ Mi for Mi in M ])
+            return _orig_glLoadMatrixf(M)
diff --git a/VisionEgg/GLTrace.py b/VisionEgg/GLTrace.py
new file mode 100755
index 0000000..3511488
--- /dev/null
+++ b/VisionEgg/GLTrace.py
@@ -0,0 +1,141 @@
+# The Vision Egg: GLTrace
+#
+# Copyright (C) 2001-2004 Andrew Straw
+# Copyright (C) 2004,2008 California Institute of Technology
+#
+# URL: <http://www.visionegg.org/>
+#
+# Distributed under the terms of the GNU Lesser General Public License
+# (LGPL). See LICENSE.TXT that came with this file.
+
+"""
+Trace calls to OpenGL
+
+With this module, you can trace all calls made to OpenGL through PyOpenGL.
+To do this, substitute
+
+import OpenGL.GL as gl
+
+with
+
+import VisionEgg.GLTrace as gl
+
+in your code.
+
+Also, trace another module's use of OpenGL by changing its reference
+to OpenGL.GL to a reference to VisionEgg.GLTrace.
+
+"""
+
+# Copyright (c) 2003 Andrew Straw.  Distributed under the terms of the
+# GNU Lesser General Public License (LGPL).
+
+####################################################################
+#
+#        Import all the necessary packages
+#
+####################################################################
+
+import OpenGL.GL as gl
+
+gl_constants = {}
+
+# functions which we don't want to translate arguments to gl constant
+raw_args_by_function = {
+    'glColor':[0,1,2,3],
+    'glColorf':[0,1,2,3],
+    'glDepthRange':[0,1],
+    'glGenTextures':[0],
+    'glGetTexLevelParameteriv':[1],
+    'glOrtho':[0,1,2,3,4,5],
+    'glPixelStorei':[1],
+    'glReadPixels':[0,1,2,3],
+    'glRotate':[0,1,2,3],
+    'glTexCoord2f':[0,1],
+    'glTexImage1D':[1,3,4],
+    'glTexImage2D':[1,3,4,5],
+    'glTexSubImage1D':[1,2,3],
+    'glTranslate':[0,1,2],
+    'glVertex2f':[0,1],
+    'glVertex3f':[0,1,2],
+    'glViewport':[0,1,2,3],
+    }
+
+bitmasks_by_function = {
+    'glClear':[0],
+    }
+
+bitmask_names_by_value = {
+    gl.GL_COLOR_BUFFER_BIT : 'GL_COLOR_BUFFER_BIT',
+    gl.GL_DEPTH_BUFFER_BIT : 'GL_DEPTH_BUFFER_BIT',
+    }
+
+def arg_to_str( arg ):
+    if isinstance(arg, int):
+        if arg in gl_constants.keys():
+            return gl_constants[arg]
+    elif type(arg) == str and len(arg) > 30:
+            return "'<string>'"
+    return repr(arg)
+
+class Wrapper:
+    def __init__(self, function_name):
+        self.function_name = function_name
+        self.orig_func = getattr(gl,self.function_name)
+    def run(self,*args,**kw):
+        if kw: kw_str = " AND KEYWORDS"
+        else: kw_str = ""
+        if 1:
+##        if self.function_name in raw_args_by_function:
+            arg_str = []
+            for i in range(len(args)):
+                if self.function_name in raw_args_by_function and i in raw_args_by_function[self.function_name]:
+                    arg_str.append(str(args[i])) # don't convert to name of OpenGL constant
+                elif self.function_name in bitmasks_by_function and i in bitmasks_by_function[self.function_name]:
+                    bitmask_strs = []
+                    value = args[i]
+                    for bit_value in bitmask_names_by_value:
+                        if value & bit_value:
+                            value = value & ~bit_value
+                            bitmask_strs.append( bitmask_names_by_value[bit_value] )
+                    if value != 0:
+                        bitmask_strs.append( arg_to_str(args[i]) )
+                    arg_str.append( '|'.join(bitmask_strs) )
+                else:
+                    arg_str.append(arg_to_str(args[i])) # convert to name of OpenGL constant
+            arg_str = ','.join( arg_str )
+        try:
+            result = self.orig_func(*args,**kw)
+        except:
+            print "%s(%s)%s"%(self.function_name,arg_str,kw_str)
+            raise
+
+        if result is not None:
+            result_str = "%s = "%(arg_to_str(result),)
+        else:
+            result_str = ''
+        print "%s%s(%s)%s"%(result_str,self.function_name,arg_str,kw_str)
+        return result
+
+def gl_trace_attach():
+    for attr_name in dir(gl):
+        if callable( getattr(gl,attr_name) ):
+            wrapper = Wrapper(attr_name)
+            globals()[attr_name] = wrapper.run
+        else:
+            attr = getattr(gl,attr_name)
+            globals()[attr_name] = attr
+            if not attr_name.startswith('__') and not attr_name.startswith('__'):
+                if type(getattr(gl,attr_name)) == int:
+                    gl_constants[getattr(gl,attr_name)] = attr_name
+    if not hasattr(gl,'GL_CLAMP_TO_EDGE'):
+        # XXX This hack requires opengl >= 1.2. See Core.py for more info.
+        globals()['GL_CLAMP_TO_EDGE'] = 0x812F
+    if hasattr(gl,'glActiveTexture'):
+        # XXX Another, similar hack.
+        globals()['glActiveTextureARB'] = gl.glActiveTexture
+        globals()['glMultiTexCoord2fARB'] = gl.glMultiTexCoord2f
+        globals()['GL_TEXTURE0_ARB'] = gl.GL_TEXTURE0
+        globals()['GL_TEXTURE1_ARB'] = gl.GL_TEXTURE1
+
+gl_trace_attach() # attach when imported
diff --git a/VisionEgg/GUI.py b/VisionEgg/GUI.py
new file mode 100644
index 0000000..84ae1a2
--- /dev/null
+++ b/VisionEgg/GUI.py
@@ -0,0 +1,753 @@
+# The Vision Egg: GUI
+#
+# Copyright (C) 2001-2003 Andrew Straw.
+# Copyright (C) 2008 California Institute of Technology
+#
+# URL: <http://www.visionegg.org/>
+#
+# Distributed under the terms of the GNU Lesser General Public License
+# (LGPL). See LICENSE.TXT that came with this file.
+
+"""
+Graphical user interface classes and functions.
+
+"""
+
+import VisionEgg
+
+####################################################################
+#
+#        Import all the necessary packages
+#
+####################################################################
+
+
+import logging                              # available in Python 2.3
+
+import VisionEgg
+import os
+import sys
+
+class _delay_import_error:
+    """Defer import errors until they cause problems."""
+    def __init__(self,orig_traceback):
+        self.orig_traceback = orig_traceback
+    def __getattr__(self,name):
+        raise self.orig_traceback # ImportError deferred from earlier failure
+
+try:
+    import Tkinter
+except ImportError, x: # don't fail on this until it becomes a problem...
+    Tkinter = _delay_import_error(x)
+
+try:
+    import tkMessageBox
+except ImportError, x: # don't fail on this until it becomes a problem...
+    tkMessageBox = _delay_import_error(x)
+
+try:
+    import tkFileDialog
+except ImportError, x: # don't fail on this until it becomes a problem...
+    tkFileDialog = _delay_import_error(x)
+
+def showexception(exc_type, exc_value, traceback_str):
+    # private subclass of Tkinter.Frame
+    class ShowExceptionFrame(Tkinter.Frame):
+        """A window that shows a string and has a quit button."""
+        def __init__(self,master,exc_type, exc_value, traceback_str):
+            VisionEgg.config._Tkinter_used = True
+            Tkinter.Frame.__init__(self,master,borderwidth=20)
+            title="Vision Egg: exception caught"
+            first_str = "An unhandled exception was caught."
+            type_value_str = "%s: %s"%(str(exc_type),str(exc_value))
+
+            frame = self
+
+            top = frame.winfo_toplevel()
+            top.title(title)
+            top.protocol("WM_DELETE_WINDOW",self.close_window)
+
+            Tkinter.Label(frame,text=first_str).pack()
+            Tkinter.Label(frame,text=type_value_str).pack()
+            if traceback_str:
+                Tkinter.Label(frame,text="Traceback (most recent call last):").pack()
+                Tkinter.Label(frame,text=traceback_str).pack()
+
+            b = Tkinter.Button(frame,text="OK",command=self.close_window)
+            b.pack()
+            b.focus_set()
+	    b.grab_set()
+            b.bind('<Return>',self.close_window)
+
+        def close_window(self,dummy_arg=None):
+            self.quit()
+    # create instance of class
+    parent = Tkinter._default_root
+    if parent:
+        top = Tkinter.Toplevel(parent)
+        top.transient(parent)
+    else:
+        top = None
+    f = ShowExceptionFrame(top, exc_type, exc_value, traceback_str)
+    f.pack()
+    f.mainloop()
+    f.winfo_toplevel().destroy()
+
+class AppWindow(Tkinter.Frame):
+    """A GUI Window that can be subclassed for a main application window"""
+    def __init__(self,master=None,idle_func=lambda: None,**cnf):
+        VisionEgg.config._Tkinter_used = True
+        Tkinter.Frame.__init__(self,master,**cnf)
+        self.winfo_toplevel().title('Vision Egg')
+
+        self.info_frame = InfoFrame(self)
+        self.info_frame.pack()
+
+        self.idle_func = idle_func
+        self.after(1,self.idle) # register idle function with Tkinter
+
+    def idle(self):
+        self.idle_func()
+        self.after(1,self.idle) # (re)register idle function with Tkinter
+
+class ProgressBar(Tkinter.Frame):
+    def __init__(self, master=None, orientation="horizontal",
+                 min=0, max=100, width=100, height=18,
+                 doLabel=1, fillColor="LightSteelBlue1", background="gray",
+                 labelColor="black", labelFont="Helvetica",
+                 labelText="", labelFormat="%d%%",
+                 value=50, **cnf):
+        Tkinter.Frame.__init__(self,master)
+        # preserve various values
+        self.master=master
+        self.orientation=orientation
+        self.min=min
+        self.max=max
+        self.width=width
+        self.height=height
+        self.doLabel=doLabel
+        self.fillColor=fillColor
+        self.labelFont= labelFont
+        self.labelColor=labelColor
+        self.background=background
+        self.labelText=labelText
+        self.labelFormat=labelFormat
+        self.value=value
+        self.canvas=Tkinter.Canvas(self, height=height, width=width, bd=0,
+                                    highlightthickness=0, background=background)
+        self.scale=self.canvas.create_rectangle(0, 0, width, height,
+                                                fill=fillColor)
+        self.label=self.canvas.create_text(self.canvas.winfo_reqwidth() / 2,
+                                           height / 2, text=labelText,
+                                           anchor="c", fill=labelColor,
+                                           font=self.labelFont)
+        self.update()
+        self.canvas.pack(side='top', fill='x', expand='no')
+
+    def updateProgress(self, newValue, newMax=None):
+        if newMax:
+            self.max = newMax
+        self.value = newValue
+        self.update()
+
+    def update(self):
+        # Trim the values to be between min and max
+        value=self.value
+        if value > self.max:
+            value = self.max
+        if value < self.min:
+            value = self.min
+        # Adjust the rectangle
+        if self.orientation == "horizontal":
+            self.canvas.coords(self.scale, 0, 0,
+              float(value) / self.max * self.width, self.height)
+        else:
+            self.canvas.coords(self.scale, 0,
+                               self.height - (float(value) /
+                                              self.max*self.height),
+                               self.width, self.height)
+        # Now update the colors
+        self.canvas.itemconfig(self.scale, fill=self.fillColor)
+        self.canvas.itemconfig(self.label, fill=self.labelColor)
+        # And update the label
+        if self.doLabel:
+            if value:
+                if value >= 0:
+                    pvalue = int((float(value) / float(self.max)) *
+                                   100.0)
+                else:
+                    pvalue = 0
+                self.canvas.itemconfig(self.label, text=self.labelFormat
+                                         % pvalue)
+            else:
+                self.canvas.itemconfig(self.label, text='')
+        else:
+            self.canvas.itemconfig(self.label, text=self.labelFormat %
+                                   self.labelText)
+        self.canvas.update_idletasks()
+
+class GraphicsConfigurationWindow(Tkinter.Frame):
+    """Graphics Configuration Window"""
+    def __init__(self,master=None,**cnf):
+        VisionEgg.config._Tkinter_used = True
+        Tkinter.Frame.__init__(self,master,**cnf)
+        self.winfo_toplevel().title('Vision Egg - Graphics configuration')
+        self.pack()
+
+        self.clicked_ok = 0 # So we can distinguish between clicking OK and closing the window
+
+        row = 0
+        Tkinter.Label(self,
+                      text="Vision Egg - Graphics configuration",
+                      font=("Helvetica",14,"bold")).grid(row=row,columnspan=2)
+        row += 1
+
+        ################## begin topframe ##############################
+
+        topframe = Tkinter.Frame(self)
+        topframe.grid(row=row,column=0,columnspan=2)
+        topframe_row = 0
+
+        Tkinter.Label(topframe,
+                      text=self.format_string("The default value for these variables and the presence of this dialog window can be controlled via the Vision Egg config file. If this file exists in the Vision Egg user directory, that file is used.  Otherwise, the configuration file found in the Vision Egg system directory is used."),
+                      ).grid(row=topframe_row,column=1,columnspan=2,sticky=Tkinter.W)
+        topframe_row += 1
+
+        try:
+            import _imaging, _imagingtk
+            import ImageFile, ImageFileIO, BmpImagePlugin, JpegImagePlugin
+            import Image,ImageTk
+            im = Image.open(os.path.join(VisionEgg.config.VISIONEGG_SYSTEM_DIR,'data','visionegg.bmp'))
+            self.tk_im=ImageTk.PhotoImage(im)
+            Tkinter.Label(topframe,image=self.tk_im).grid(row=0,rowspan=topframe_row,column=0)
+        except Exception,x:
+            logger = logging.getLogger('VisionEgg.GUI')
+            logger.info("No Vision Egg logo :( because of error while "
+                        "trying to display image in "
+                        "GUI.GraphicsConfigurationWindow: %s: "
+                        "%s"%(str(x.__class__),str(x)))
+
+        ################## end topframe ##############################
+
+        row += 1
+
+        ################## begin file_frame ##############################
+
+        file_frame = Tkinter.Frame(self)
+        file_frame.grid(row=row,columnspan=2,sticky=Tkinter.W+Tkinter.E,pady=5)
+
+        # Script name and location
+        file_row = 0
+        Tkinter.Label(file_frame,
+                      text="This script:").grid(row=file_row,column=0,sticky=Tkinter.E)
+        Tkinter.Label(file_frame,
+                      text="%s"%(os.path.abspath(sys.argv[0]),)).grid(row=file_row,column=1,sticky=Tkinter.W)
+        file_row += 1
+        # Vision Egg system dir
+        Tkinter.Label(file_frame,
+                      text="Vision Egg system directory:").grid(row=file_row,column=0,sticky=Tkinter.E)
+        Tkinter.Label(file_frame,
+                      text="%s"%(os.path.abspath(VisionEgg.config.VISIONEGG_SYSTEM_DIR),)).grid(row=file_row,column=1,sticky=Tkinter.W)
+        file_row += 1
+
+        # Vision Egg user dir
+        Tkinter.Label(file_frame,
+                      text="Vision Egg user directory:").grid(row=file_row,column=0,sticky=Tkinter.E)
+        Tkinter.Label(file_frame,
+                      text="%s"%(os.path.abspath(VisionEgg.config.VISIONEGG_USER_DIR),)).grid(row=file_row,column=1,sticky=Tkinter.W)
+        file_row += 1
+
+        # Config file
+        Tkinter.Label(file_frame,
+                      text="Config file location:").grid(row=file_row,column=0,sticky=Tkinter.E)
+        if VisionEgg.config.VISIONEGG_CONFIG_FILE:
+            Tkinter.Label(file_frame,
+                          text="%s"%(os.path.abspath(VisionEgg.config.VISIONEGG_CONFIG_FILE),)).grid(row=file_row,column=1,sticky=Tkinter.W)
+        else:
+            Tkinter.Label(file_frame,
+                          text="(None)").grid(row=file_row,column=1,sticky=Tkinter.W)
+        file_row += 1
+
+        # Log file location
+        Tkinter.Label(file_frame,
+                      text="Log file location:").grid(row=file_row,column=0,sticky=Tkinter.E)
+        if VisionEgg.config.VISIONEGG_LOG_FILE:
+            Tkinter.Label(file_frame,
+                          text="%s"%(os.path.abspath(VisionEgg.config.VISIONEGG_LOG_FILE),)).grid(row=file_row,column=1,sticky=Tkinter.W)
+        else:
+            Tkinter.Label(file_frame,
+                          text="(stderr console)").grid(row=file_row,column=1,sticky=Tkinter.W)
+
+        ################## end file_frame ##############################
+
+        row += 1
+
+        ################## begin cf ##############################
+
+        cf = Tkinter.Frame(self)
+        cf.grid(row=row,column=0,padx=10)
+
+        cf_row = 0
+        # Fullscreen
+        self.fullscreen = Tkinter.BooleanVar()
+        self.fullscreen.set(VisionEgg.config.VISIONEGG_FULLSCREEN)
+        Tkinter.Checkbutton(cf,
+                            text='Fullscreen',
+                            variable=self.fullscreen,
+                            relief=Tkinter.FLAT).grid(row=cf_row,column=0,sticky=Tkinter.W)
+
+        cf_row += 1
+        self.synclync_present = Tkinter.BooleanVar()
+        self.synclync_present.set(VisionEgg.config.SYNCLYNC_PRESENT)
+        try:
+            import synclync
+            self.show_synclync_option = 1
+        except:
+            self.show_synclync_option = 0
+
+        if self.show_synclync_option:
+            Tkinter.Checkbutton(cf,
+                                text='SyncLync device present',
+                                variable=self.synclync_present,
+                                relief=Tkinter.FLAT).grid(row=cf_row,column=0,sticky=Tkinter.W)
+
+
+        cf_row += 1
+        # Maximum priority
+        self.maxpriority = Tkinter.BooleanVar()
+        self.maxpriority.set(VisionEgg.config.VISIONEGG_MAXPRIORITY)
+
+        Tkinter.Checkbutton(cf,
+                            text='Maximum priority (use with caution)',
+                            variable=self.maxpriority,
+                            relief=Tkinter.FLAT).grid(row=cf_row,column=0,sticky=Tkinter.W)
+        cf_row += 1
+
+        if sys.platform=='darwin':
+            # Only used on darwin platform
+            self.darwin_conventional = Tkinter.IntVar()
+            self.darwin_conventional.set(VisionEgg.config.VISIONEGG_DARWIN_MAXPRIORITY_CONVENTIONAL_NOT_REALTIME)
+            self.darwin_priority = Tkinter.StringVar()
+            self.darwin_priority.set(str(VisionEgg.config.VISIONEGG_DARWIN_CONVENTIONAL_PRIORITY))
+            self.darwin_realtime_period_denom = Tkinter.StringVar()
+            self.darwin_realtime_period_denom.set(str(VisionEgg.config.VISIONEGG_DARWIN_REALTIME_PERIOD_DENOM))
+            self.darwin_realtime_computation_denom = Tkinter.StringVar()
+            self.darwin_realtime_computation_denom.set(str(VisionEgg.config.VISIONEGG_DARWIN_REALTIME_COMPUTATION_DENOM))
+            self.darwin_realtime_constraint_denom = Tkinter.StringVar()
+            self.darwin_realtime_constraint_denom.set(str(VisionEgg.config.VISIONEGG_DARWIN_REALTIME_CONSTRAINT_DENOM))
+            self.darwin_realtime_preemptible = Tkinter.BooleanVar()
+            self.darwin_realtime_preemptible.set(not VisionEgg.config.VISIONEGG_DARWIN_REALTIME_PREEMPTIBLE)
+            Tkinter.Button(cf,text="Maximum priority options...",
+                           command=self.darwin_maxpriority_tune).grid(row=cf_row,column=0)
+            cf_row += 1
+
+        # Sync swap
+        self.sync_swap = Tkinter.BooleanVar()
+        self.sync_swap.set(VisionEgg.config.VISIONEGG_SYNC_SWAP)
+        Tkinter.Checkbutton(cf,
+                            text='Attempt vsync',
+                            variable=self.sync_swap,
+                            relief=Tkinter.FLAT).grid(row=cf_row,column=0,sticky=Tkinter.W)
+        cf_row += 1
+
+        # Frameless window
+        self.frameless = Tkinter.BooleanVar()
+        self.frameless.set(VisionEgg.config.VISIONEGG_FRAMELESS_WINDOW)
+        Tkinter.Checkbutton(cf,
+                            text='No frame around window',
+                            variable=self.frameless,
+                            relief=Tkinter.FLAT).grid(row=cf_row,column=0,sticky=Tkinter.W)
+        cf_row += 1
+
+        # Hide mouse
+        self.mouse_visible = Tkinter.BooleanVar()
+        self.mouse_visible.set(not VisionEgg.config.VISIONEGG_HIDE_MOUSE)
+        Tkinter.Checkbutton(cf,
+                            text='Mouse cursor visible',
+                            variable=self.mouse_visible,
+                            relief=Tkinter.FLAT).grid(row=cf_row,column=0,sticky=Tkinter.W)
+        cf_row += 1
+
+        # Stereo
+        self.stereo = Tkinter.BooleanVar()
+        self.stereo.set(VisionEgg.config.VISIONEGG_REQUEST_STEREO)
+        Tkinter.Checkbutton(cf,
+                            text='Stereo',
+                            variable=self.stereo,
+                            relief=Tkinter.FLAT).grid(row=cf_row,column=0,sticky=Tkinter.W)
+        cf_row += 1
+
+        if sys.platform == 'darwin':
+            if sys.version == '2.2 (#11, Jan  6 2002, 01:00:42) \n[GCC 2.95.2 19991024 (release)]':
+                if Tkinter.TkVersion == 8.4:
+                    # The Tk in Bob Ippolito's kitchensink distro had
+                    # a bug in Checkbutton
+                    Tkinter.Label(cf,text="If you want to check any buttons\n(Mac OS X Tk 8.4a4 bug workaround):").grid(row=cf_row,column=0)
+                    cf_row += 1
+                    Tkinter.Button(cf,text="PRESS ME FIRST").grid(row=cf_row,column=0)
+                    cf_row += 1
+
+        ################## end cf ##############################
+
+        ################## begin entry_frame ###################
+
+        entry_frame = Tkinter.Frame(self)
+        entry_frame.grid(row=row,column=1,padx=10,sticky="n")
+        row += 1
+        ef_row = 0
+
+        # frame rate
+        Tkinter.Label(entry_frame,text="What will your monitor refresh's rate be (Hz):").grid(row=ef_row,column=0,sticky=Tkinter.E)
+        self.frame_rate = Tkinter.StringVar()
+        self.frame_rate.set("%s"%str(VisionEgg.config.VISIONEGG_MONITOR_REFRESH_HZ))
+        Tkinter.Entry(entry_frame,textvariable=self.frame_rate).grid(row=ef_row,column=1,sticky=Tkinter.W)
+        ef_row += 1
+
+        # width
+        Tkinter.Label(entry_frame,text="Window width (pixels):").grid(row=ef_row,column=0,sticky=Tkinter.E)
+        self.width = Tkinter.StringVar()
+        self.width.set("%s"%str(VisionEgg.config.VISIONEGG_SCREEN_W))
+        Tkinter.Entry(entry_frame,textvariable=self.width).grid(row=ef_row,column=1,sticky=Tkinter.W)
+        ef_row += 1
+
+        # height
+        Tkinter.Label(entry_frame,text="Window height (pixels):").grid(row=ef_row,column=0,sticky=Tkinter.E)
+        self.height = Tkinter.StringVar()
+        self.height.set("%s"%str(VisionEgg.config.VISIONEGG_SCREEN_H))
+        Tkinter.Entry(entry_frame,textvariable=self.height).grid(row=ef_row,column=1,sticky=Tkinter.W)
+        ef_row += 1
+
+        # color depth
+        Tkinter.Label(entry_frame,text="Requested total color depth (bits per pixel):").grid(row=ef_row,column=0,sticky=Tkinter.E)
+        self.color_depth = Tkinter.StringVar()
+        self.color_depth.set(str(VisionEgg.config.VISIONEGG_PREFERRED_BPP))
+        Tkinter.Entry(entry_frame,textvariable=self.color_depth).grid(row=ef_row,column=1,sticky=Tkinter.W)
+        ef_row += 1
+
+        # red depth
+        Tkinter.Label(entry_frame,text="Requested red bits per pixel:").grid(row=ef_row,column=0,sticky=Tkinter.E)
+        self.red_depth = Tkinter.StringVar()
+        self.red_depth.set(str(VisionEgg.config.VISIONEGG_REQUEST_RED_BITS))
+        Tkinter.Entry(entry_frame,textvariable=self.red_depth).grid(row=ef_row,column=1,sticky=Tkinter.W)
+        ef_row += 1
+
+        # green depth
+        Tkinter.Label(entry_frame,text="Requested green bits per pixel:").grid(row=ef_row,column=0,sticky=Tkinter.E)
+        self.green_depth = Tkinter.StringVar()
+        self.green_depth.set(str(VisionEgg.config.VISIONEGG_REQUEST_GREEN_BITS))
+        Tkinter.Entry(entry_frame,textvariable=self.green_depth).grid(row=ef_row,column=1,sticky=Tkinter.W)
+        ef_row += 1
+
+        # blue depth
+        Tkinter.Label(entry_frame,text="Requested blue bits per pixel:").grid(row=ef_row,column=0,sticky=Tkinter.E)
+        self.blue_depth = Tkinter.StringVar()
+        self.blue_depth.set(str(VisionEgg.config.VISIONEGG_REQUEST_BLUE_BITS))
+        Tkinter.Entry(entry_frame,textvariable=self.blue_depth).grid(row=ef_row,column=1,sticky=Tkinter.W)
+        ef_row += 1
+
+        # alpha depth
+        Tkinter.Label(entry_frame,text="Requested alpha bits per pixel:").grid(row=ef_row,column=0,sticky=Tkinter.E)
+        self.alpha_depth = Tkinter.StringVar()
+        self.alpha_depth.set(str(VisionEgg.config.VISIONEGG_REQUEST_ALPHA_BITS))
+        Tkinter.Entry(entry_frame,textvariable=self.alpha_depth).grid(row=ef_row,column=1,sticky=Tkinter.W)
+        ef_row += 1
+
+        ################## end entry_frame ###################
+
+        ################## gamma_frame ###################
+
+        # gamma stuff
+        row += 1
+        gamma_frame = Tkinter.Frame(self)
+        gamma_frame.grid(row=row,columnspan=2,sticky="we")
+        self.gamma_source = Tkinter.StringVar()
+        self.gamma_source.set(str(VisionEgg.config.VISIONEGG_GAMMA_SOURCE).lower()) # can be 'none', 'invert', or 'file'
+        Tkinter.Label(gamma_frame,
+                      text="Gamma:").grid(row=0,column=0)
+        Tkinter.Radiobutton(gamma_frame,
+                            text="Native",
+                            value="none",
+                            variable = self.gamma_source).grid(row=0,column=1,padx=1)
+        Tkinter.Radiobutton(gamma_frame,
+                            text="Quick",
+                            value="invert",
+                            variable = self.gamma_source).grid(row=0,column=2)
+        Tkinter.Label(gamma_frame,
+                      text="R:").grid(row=0,column=3)
+        self.gamma_invert_red = Tkinter.DoubleVar()
+        self.gamma_invert_red.set( VisionEgg.config.VISIONEGG_GAMMA_INVERT_RED )
+        Tkinter.Entry(gamma_frame,
+                      textvariable=self.gamma_invert_red,
+                      width=3).grid(row=0,column=4)
+        Tkinter.Label(gamma_frame,
+                      text="G:").grid(row=0,column=5)
+        self.gamma_invert_green = Tkinter.DoubleVar()
+        self.gamma_invert_green.set( VisionEgg.config.VISIONEGG_GAMMA_INVERT_GREEN )
+        Tkinter.Entry(gamma_frame,
+                      textvariable=self.gamma_invert_green,
+                      width=3).grid(row=0,column=6)
+        Tkinter.Label(gamma_frame,
+                      text="B:").grid(row=0,column=7)
+        self.gamma_invert_blue = Tkinter.DoubleVar()
+        self.gamma_invert_blue.set( VisionEgg.config.VISIONEGG_GAMMA_INVERT_BLUE )
+        Tkinter.Entry(gamma_frame,
+                      textvariable=self.gamma_invert_blue,
+                      width=3).grid(row=0,column=8)
+        Tkinter.Radiobutton(gamma_frame,
+                            text="Custom:",
+                            value="file",
+                            variable = self.gamma_source).grid(row=0,column=9)
+        self.gamma_file = Tkinter.StringVar()
+        if os.path.isfile(VisionEgg.config.VISIONEGG_GAMMA_FILE):
+            self.gamma_file.set( VisionEgg.config.VISIONEGG_GAMMA_FILE )
+        else:
+            self.gamma_file.set("")
+        Tkinter.Entry(gamma_frame,
+                      textvariable=self.gamma_file,
+                      width=15).grid(row=0,column=10)
+        Tkinter.Button(gamma_frame,
+                       command=self.set_gamma_file,
+                       text="Set...").grid(row=0,column=11)
+
+        ################## end gamma_frame ###################
+
+        row += 1
+        bf = Tkinter.Frame(self)
+        bf.grid(row=row,columnspan=2,sticky=Tkinter.W+Tkinter.E)
+
+        # Save settings to config file
+        b = Tkinter.Button(bf,text="Save current settings to config file",command=self.save)
+        b.grid(row=0,column=0,padx=20)
+        b.bind('<Return>',self.start)
+
+        # Start button
+        b2 = Tkinter.Button(bf,text="ok",command=self.start)
+        b2.grid(row=0,column=1,padx=20)
+        b2.focus_force()
+        b2.bind('<Return>',self.start)
+
+        # Raise our application on darwin
+        if sys.platform == 'darwin':
+            try:
+                # from Jack Jansen email 20 April 2003
+                # WMAvailable() returns true if you can use the window
+                # manager, and as a side #effect it raises the
+                # application to the foreground.
+                import MacOS
+                if not MacOS.WMAvailable():
+                    raise "Cannot reach the window manager"
+            except:
+                pass
+
+    def set_gamma_file(self,dummy_arg=None):
+        filename = tkFileDialog.askopenfilename(
+            parent=self,
+            defaultextension=".ve_gamma",
+            filetypes=[('Configuration file','*.ve_gamma')],
+            initialdir=VisionEgg.config.VISIONEGG_USER_DIR)
+        if not filename:
+            return
+        self.gamma_file.set(filename)
+
+    def format_string(self,in_str):
+        # This probably a slow way to do things, but it works!
+        min_line_length = 60
+        in_list = in_str.split()
+        out_str = ""
+        cur_line = ""
+        for word in in_list:
+            cur_line = cur_line + word + " "
+            if len(cur_line) > min_line_length:
+                out_str = out_str + cur_line[:-1] + "\n"
+                cur_line = "    "
+        out_str = out_str + cur_line + "\n"
+        return out_str
+
+    def darwin_maxpriority_tune(self):
+        class DarwinFineTuneDialog(ToplevelDialog):
+            def __init__(self,parent,**cnf):
+                # Bugs in Tk 8.4a4 for Darwin seem to prevent use of "grid" in this dialog
+                ToplevelDialog.__init__(self,**cnf)
+                self.title("Fine tune maximum priority")
+                f = Tkinter.Frame(self)
+                f.pack(expand=1,fill=Tkinter.BOTH,ipadx=2,ipady=2)
+                row = 0
+                Tkinter.Label(f,
+                              text=parent.format_string(
+
+                    """This information is used by the Vision Egg when
+                    in "maximum priority" mode.  These values fine
+                    tune this behavior on the Mac OS X ("darwin")
+                    platform. For conventional priority, the valid
+                    values range from -20 (highest priority) to 20
+                    (worst priority).  In the realtime settings, the
+                    numerical values represent a fraction of the total
+                    cycles available on the computer. For more
+                    information, please refer to
+                    http://developer.apple.com/ techpubs/ macosx/
+                    Darwin/ General/ KernelProgramming/ scheduler/
+                    Using_Mach__pplications.html Hint: Try the
+                    realtime task method with the framerate as the
+                    denominator.  """
+
+                    )).grid(row=row,columnspan=4,column=0)
+                row = 1
+#                Tkinter.Checkbutton(f,text="Use conventional priority",variable=parent.darwin_conventional).grid(row=row,column=0,columnspan=4)
+                row = 2
+#                Tkinter.Label(f,text="Conventional priority settings").grid(row=row,column=0,columnspan=2)
+                Tkinter.Radiobutton(f,
+                              text="Conventional priority method",
+                              variable=parent.darwin_conventional,
+                              value=1).grid(row=row,column=0,columnspan=2)
+                row += 1
+                Tkinter.Label(f,text="Priority").grid(row=row,column=0,sticky=Tkinter.E)
+                Tkinter.Entry(f,textvariable=parent.darwin_priority).grid(row=row,column=1,sticky=Tkinter.W)
+                row = 2
+                Tkinter.Radiobutton(f,
+                              text="Realtime task method",
+                              variable=parent.darwin_conventional,
+                              value=0).grid(row=row,column=2,columnspan=2)
+#                Tkinter.Label(f,text="Realtime settings").grid(row=row,column=2,columnspan=2)
+                row += 1
+                Tkinter.Label(f,text="Realtime period denominator").grid(row=row,column=2,sticky=Tkinter.E)
+                Tkinter.Entry(f,textvariable=parent.darwin_realtime_period_denom).grid(row=row,column=3,sticky=Tkinter.W)
+                row += 1
+                Tkinter.Label(f,text="Realtime computation denominator").grid(row=row,column=2,sticky=Tkinter.E)
+                Tkinter.Entry(f,textvariable=parent.darwin_realtime_computation_denom).grid(row=row,column=3,sticky=Tkinter.W)
+                row += 1
+                Tkinter.Label(f,text="Realtime constraint denominator").grid(row=row,column=2,sticky=Tkinter.E)
+                Tkinter.Entry(f,textvariable=parent.darwin_realtime_constraint_denom).grid(row=row,column=3,sticky=Tkinter.W)
+                row += 1
+                Tkinter.Checkbutton(f,text="Do not preempt",variable=parent.darwin_realtime_preemptible).grid(row=row,column=2,columnspan=2)
+                row += 1
+                Tkinter.Button(f, text="ok",command=self.ok).grid(row=row,column=0,columnspan=4)
+                self.wait_window(self)
+
+            def ok(self):
+                self.destroy()
+
+        DarwinFineTuneDialog(parent=self)
+
+    def _set_config_values(self):
+        VisionEgg.config.VISIONEGG_MONITOR_REFRESH_HZ = float(self.frame_rate.get())
+        VisionEgg.config.VISIONEGG_FULLSCREEN = self.fullscreen.get()
+        VisionEgg.config.VISIONEGG_GAMMA_SOURCE = self.gamma_source.get()
+        VisionEgg.config.VISIONEGG_GAMMA_INVERT_RED = self.gamma_invert_red.get()
+        VisionEgg.config.VISIONEGG_GAMMA_INVERT_GREEN = self.gamma_invert_green.get()
+        VisionEgg.config.VISIONEGG_GAMMA_INVERT_BLUE = self.gamma_invert_blue.get()
+        VisionEgg.config.VISIONEGG_GAMMA_FILE = self.gamma_file.get()
+        VisionEgg.config.VISIONEGG_MAXPRIORITY = self.maxpriority.get()
+        VisionEgg.config.VISIONEGG_SYNC_SWAP = self.sync_swap.get()
+        VisionEgg.config.VISIONEGG_FRAMELESS_WINDOW = self.frameless.get()
+        VisionEgg.config.VISIONEGG_HIDE_MOUSE = not self.mouse_visible.get()
+        VisionEgg.config.VISIONEGG_REQUEST_STEREO = self.stereo.get()
+        VisionEgg.config.VISIONEGG_SCREEN_W = int(self.width.get())
+        VisionEgg.config.VISIONEGG_SCREEN_H = int(self.height.get())
+        VisionEgg.config.VISIONEGG_PREFERRED_BPP = int(self.color_depth.get())
+        VisionEgg.config.VISIONEGG_REQUEST_RED_BITS = int(self.red_depth.get())
+        VisionEgg.config.VISIONEGG_REQUEST_GREEN_BITS = int(self.green_depth.get())
+        VisionEgg.config.VISIONEGG_REQUEST_BLUE_BITS = int(self.blue_depth.get())
+        VisionEgg.config.VISIONEGG_REQUEST_ALPHA_BITS = int(self.alpha_depth.get())
+
+        if sys.platform=='darwin':
+            # Only used on darwin platform
+            VisionEgg.config.VISIONEGG_DARWIN_MAXPRIORITY_CONVENTIONAL_NOT_REALTIME = self.darwin_conventional.get()
+            VisionEgg.config.VISIONEGG_DARWIN_CONVENTIONAL_PRIORITY = int(self.darwin_priority.get())
+            VisionEgg.config.VISIONEGG_DARWIN_REALTIME_PERIOD_DENOM = int(self.darwin_realtime_period_denom.get())
+            VisionEgg.config.VISIONEGG_DARWIN_REALTIME_COMPUTATION_DENOM = int(self.darwin_realtime_computation_denom.get())
+            VisionEgg.config.VISIONEGG_DARWIN_REALTIME_CONSTRAINT_DENOM = int(self.darwin_realtime_constraint_denom.get())
+            VisionEgg.config.VISIONEGG_DARWIN_REALTIME_PREEMPTIBLE = int(not self.darwin_realtime_preemptible.get())
+
+        if self.show_synclync_option:
+            VisionEgg.config.SYNCLYNC_PRESENT = self.synclync_present.get()
+
+    def save(self,dummy_arg=None):
+        self._set_config_values()
+        try:
+            VisionEgg.Configuration.save_settings()
+        except IOError, x:
+            try:
+                import tkMessageBox
+                if str(x).find('Permission denied') != -1:
+                    tkMessageBox.showerror(title="Permission denied",
+                                           message="Permission denied when trying to save settings.\n\nTry making a copy of the config file in the Vision Egg user directory %s and making sure you have write permission."%(os.path.abspath(VisionEgg.config.VISIONEGG_USER_DIR),))
+            except:
+                raise x
+
+    def start(self,dummy_arg=None):
+        self.clicked_ok = 1
+        self._set_config_values()
+        for child in self.children.values():
+            child.destroy()
+        Tkinter.Tk.destroy(self.master) # OK, now close myself
+
+class InfoFrame(Tkinter.Frame):
+    def __init__(self,master=None,**cnf):
+        VisionEgg.config._Tkinter_used = True
+        Tkinter.Frame.__init__(self,master,**cnf)
+
+        Tkinter.Label(self,text="Vision Egg information:").pack()
+        self.sub_frame = Tkinter.Frame(self,relief=Tkinter.GROOVE)
+        self.sub_frame.pack()
+        self.update()
+
+    def update(self):
+        for child in self.sub_frame.children.values():
+            child.destroy()
+        if VisionEgg.config.VISIONEGG_FULLSCREEN:
+            Tkinter.Label(self.sub_frame,text="fullscreen mode").pack()
+        else:
+            Tkinter.Label(self.sub_frame,text="window mode").pack()
+##        if VisionEgg.config.VISIONEGG_TEXTURE_COMPRESSION:
+##            Tkinter.Label(self.sub_frame,text="Texture compression on").pack()
+##        else:
+##            Tkinter.Label(self.sub_frame,text="Texture compression off").pack()
+
+        #Tkinter.Button(self.sub_frame,text="Update information",command=self.update).pack()
+
+class ToplevelDialog(Tkinter.Toplevel):
+    """Base class for a dialog that runs on the top level."""
+    def __init__(self,**kw):
+        VisionEgg.config._Tkinter_used = True
+        Tkinter.Toplevel.__init__(self,**kw)
+        self.transient(self)
+
+    def destroy(self):
+        Tkinter.Toplevel.destroy(self)
+
+class GetKeypressDialog(ToplevelDialog):
+    """Open a dialog box which returns when a valid key is pressed.
+
+    Arguments are:
+    master - a Tkinter widget (defaults to None)
+    title - a string for the title bar of the widget
+    text - a string to display as the text in the body of the dialog
+    key_list - a list of acceptable keys, e.g. ['q','1','2','<Return>']
+
+    The following example will print whatever character was pressed:
+    d = GetKeypressDialog(key_list=['q','1','2','<Return>','<Escape>'])
+    print d.result
+
+    The implementation is somewhat obscure because a new Tk/Tcl
+    interpreter may be created if this Dialog is called with no
+    master widget."""
+    def __init__(self,
+                 title="Press a key",
+                 text="Press a key",
+                 key_list=[],
+                 **kw):
+
+        ToplevelDialog.__init__(self,**kw)
+        self.title(title)
+        self.result = None
+
+        # The dialog box body
+        Tkinter.Label(self.frame, text=text).pack()
+
+        for key in key_list:
+            self.bind(key,self.keypress)
+        self.wait_window(self)
+
+    def keypress(self,tkinter_event):
+        self.result = tkinter_event.keysym
+        self.destroy()
diff --git a/VisionEgg/Gratings.py b/VisionEgg/Gratings.py
new file mode 100644
index 0000000..ddec8fa
--- /dev/null
+++ b/VisionEgg/Gratings.py
@@ -0,0 +1,712 @@
+# The Vision Egg: Gratings
+#
+# Copyright (C) 2001-2003 Andrew Straw.
+# Copyright (C) 2005,2008 California Institute of Technology
+#
+# URL: <http://www.visionegg.org/>
+#
+# Distributed under the terms of the GNU Lesser General Public License
+# (LGPL). See LICENSE.TXT that came with this file.
+
+"""
+Grating stimuli.
+
+"""
+
+####################################################################
+#
+#        Import all the necessary packages
+#
+####################################################################
+
+import logging                              # available in Python 2.3
+
+import VisionEgg
+import VisionEgg.Core
+import VisionEgg.Textures
+import VisionEgg.ParameterTypes as ve_types
+import numpy
+import math, types, string
+import VisionEgg.GL as gl # get all OpenGL stuff in one namespace
+import _vegl
+
+def _get_type_info( bitdepth ):
+    """Private helper function to calculate type info based on bit depth"""
+    if bitdepth == 8:
+        gl_type = gl.GL_UNSIGNED_BYTE
+        numpy_dtype = numpy.uint8
+        max_int_val = float((2**8)-1)
+    elif bitdepth == 12:
+        gl_type = gl.GL_SHORT
+        numpy_dtype = numpy.int16
+        max_int_val = float((2**15)-1)
+    elif bitdepth == 16:
+        gl_type = gl.GL_INT
+        numpy_dtype = numpy.int32
+        max_int_val = float((2.**31.)-1) # do as float to avoid overflow
+    else:
+        raise ValueError("supported bitdepths are 8, 12, and 16.")
+    return gl_type, numpy_dtype, max_int_val
+
+class LuminanceGratingCommon(VisionEgg.Core.Stimulus):
+    """Base class with common code to all ways of drawing luminance gratings.
+
+    Parameters
+    ==========
+    bit_depth -- precision with which grating is calculated and sent to OpenGL (UnsignedInteger)
+                 Default: 8
+    """
+
+    parameters_and_defaults = VisionEgg.ParameterDefinition({
+        'bit_depth':(8,
+                     ve_types.UnsignedInteger,
+                     'precision with which grating is calculated and sent to OpenGL'),
+        })
+
+    __slots__ = (
+        'gl_internal_format',
+        'format',
+        'gl_type',
+        'numpy_dtype',
+        'max_int_val',
+        'cached_bit_depth',
+        )
+
+    def calculate_bit_depth_dependencies(self):
+        """Calculate a number of parameters dependent on bit depth."""
+        bit_depth_warning = False
+        p = self.parameters # shorthand
+
+        red_bits = gl.glGetIntegerv( gl.GL_RED_BITS )
+        green_bits = gl.glGetIntegerv( gl.GL_GREEN_BITS )
+        blue_bits = gl.glGetIntegerv( gl.GL_BLUE_BITS )
+        min_bits = min( (red_bits,green_bits,blue_bits) )
+        if min_bits < p.bit_depth:
+            logger = logging.getLogger('VisionEgg.Gratings')
+            logger.warning("Requested bit depth of %d in "
+                           "LuminanceGratingCommon, which is "
+                           "greater than your current OpenGL context "
+                           "supports (%d)."% (p.bit_depth,min_bits))
+        self.gl_internal_format = gl.GL_LUMINANCE
+        self.format = gl.GL_LUMINANCE
+        self.gl_type, self.numpy_dtype, self.max_int_val = _get_type_info( p.bit_depth )
+        self.cached_bit_depth = p.bit_depth
+
+class AlphaGratingCommon(VisionEgg.Core.Stimulus):
+    """Base class with common code to all ways of drawing gratings in alpha.
+
+    This class is currently not used by any other classes.
+
+    Parameters
+    ==========
+    bit_depth -- precision with which grating is calculated and sent to OpenGL (UnsignedInteger)
+                 Default: 8
+    """
+
+    parameters_and_defaults = VisionEgg.ParameterDefinition({
+        'bit_depth':(8,
+                     ve_types.UnsignedInteger,
+                     'precision with which grating is calculated and sent to OpenGL'),
+        })
+
+    __slots__ = (
+        'gl_internal_format',
+        'format',
+        'gl_type',
+        'numpy_dtype',
+        'max_int_val',
+        'cached_bit_depth',
+        )
+
+    def calculate_bit_depth_dependencies(self):
+        """Calculate a number of parameters dependent on bit depth."""
+        p = self.parameters # shorthand
+        alpha_bit_depth = gl.glGetIntegerv( gl.GL_ALPHA_BITS )
+        if alpha_bit_depth < p.bit_depth:
+            logger = logging.getLogger('VisionEgg.Gratings')
+            logger.warning("Requested bit depth of %d, which is "
+                           "greater than your current OpenGL context "
+                           "supports (%d)."% (p.bit_depth,min_bits))
+        self.gl_internal_format = gl.GL_ALPHA
+        self.format = gl.GL_ALPHA
+        self.gl_type, self.numpy_dtype, self.max_int_val = _get_type_info( p.bit_depth )
+        self.cached_bit_depth = p.bit_depth
+
+class SinGrating2D(LuminanceGratingCommon):
+    """Sine wave grating stimulus
+
+    This is a general-purpose, realtime sine-wave luminace grating
+    generator. To acheive an arbitrary orientation, this class rotates
+    a textured quad.  To draw a grating with sides that always remain
+    horizontal and vertical, draw a large grating in a small viewport.
+    (The viewport will clip anything beyond its edges.)
+
+    Parameters
+    ==========
+    anchor                      -- specifies how position parameter is interpreted (String)
+                                   Default: center
+    bit_depth                   -- precision with which grating is calculated and sent to OpenGL (UnsignedInteger)
+                                   Inherited from LuminanceGratingCommon
+                                   Default: 8
+    color1                      -- (AnyOf(Sequence3 of Real or Sequence4 of Real))
+                                   Default: (1.0, 1.0, 1.0)
+    color2                      -- optional color with which to perform interpolation with color1 in RGB space (AnyOf(Sequence3 of Real or Sequence4 of Real))
+                                   Default: (determined at runtime)
+    contrast                    -- (Real)
+                                   Default: 1.0
+    depth                       -- (Real)
+                                   Default: (determined at runtime)
+    ignore_time                 -- (Boolean)
+                                   Default: False
+    mask                        -- optional masking function (Instance of <class 'VisionEgg.Textures.Mask2D'>)
+                                   Default: (determined at runtime)
+    max_alpha                   -- (Real)
+                                   Default: 1.0
+    num_samples                 -- (UnsignedInteger)
+                                   Default: 512
+    on                          -- draw stimulus? (Boolean)
+                                   Default: True
+    orientation                 -- (Real)
+                                   Default: 0.0
+    pedestal                    -- (Real)
+                                   Default: 0.5
+    phase_at_t0                 -- (Real)
+                                   Default: 0.0
+    position                    -- (units: eye coordinates) (Sequence2 of Real)
+                                   Default: (320.0, 240.0)
+    recalculate_phase_tolerance -- (Real)
+                                   Default: (determined at runtime)
+    size                        -- defines coordinate size of grating (in eye coordinates) (Sequence2 of Real)
+                                   Default: (640.0, 480.0)
+    spatial_freq                -- frequency defined relative to coordinates defined in size parameter (units: cycles/eye_coord_unit) (Real)
+                                   Default: 0.0078125
+    t0_time_sec_absolute        -- (Real)
+                                   Default: (determined at runtime)
+    temporal_freq_hz            -- (Real)
+                                   Default: 5.0
+    """
+
+    parameters_and_defaults = VisionEgg.ParameterDefinition({
+        'on':(True,
+              ve_types.Boolean,
+              "draw stimulus?"),
+        'mask':(None, # allows window onto otherwise (tilted) rectangular grating
+                ve_types.Instance(VisionEgg.Textures.Mask2D),
+                "optional masking function"),
+        'contrast':(1.0,
+                    ve_types.Real),
+        'pedestal':(0.5,
+                    ve_types.Real),
+        'position':((320.0,240.0), # in eye coordinates
+                    ve_types.Sequence2(ve_types.Real),
+                    "(units: eye coordinates)"),
+        'anchor':('center',
+                  ve_types.String,
+                  "specifies how position parameter is interpreted"),
+        'depth':(None, # if not None, turns on depth testing and allows for occlusion
+                 ve_types.Real),
+        'size':((640.0,480.0),
+                ve_types.Sequence2(ve_types.Real),
+                "defines coordinate size of grating (in eye coordinates)",
+                ),
+        'spatial_freq':(1.0/128.0, # cycles/eye coord units
+                        ve_types.Real,
+                        "frequency defined relative to coordinates defined in size parameter (units: cycles/eye_coord_unit)",
+                        ),
+        'temporal_freq_hz':(5.0, # hz
+                            ve_types.Real),
+        't0_time_sec_absolute':(None, # Will be assigned during first call to draw()
+                                ve_types.Real),
+        'ignore_time':(False, # ignore temporal frequency variable - allow control purely with phase_at_t0
+                       ve_types.Boolean),
+        'phase_at_t0':(0.0, # degrees [0.0-360.0]
+                       ve_types.Real),
+        'orientation':(0.0, # 0=right, 90=up
+                       ve_types.Real),
+        'num_samples':(512, # number of spatial samples, should be a power of 2
+                       ve_types.UnsignedInteger),
+        'max_alpha':(1.0, # controls "opacity": 1.0 = completely opaque, 0.0 = completely transparent
+                     ve_types.Real),
+        'color1':((1.0, 1.0, 1.0), # alpha is ignored (if given) -- use max_alpha parameter
+                  ve_types.AnyOf(ve_types.Sequence3(ve_types.Real),
+                                 ve_types.Sequence4(ve_types.Real))),
+        'color2':(None, # perform interpolation with color1 in RGB space.
+                  ve_types.AnyOf(ve_types.Sequence3(ve_types.Real),
+                                 ve_types.Sequence4(ve_types.Real)),
+                  "optional color with which to perform interpolation with color1 in RGB space"),
+        'recalculate_phase_tolerance':(None, # only recalculate texture when phase is changed by more than this amount, None for always recalculate. (Saves time.)
+                                       ve_types.Real),
+        })
+
+    __slots__ = (
+        '_texture_object_id',
+        '_last_phase',
+        )
+
+    def __init__(self,**kw):
+        LuminanceGratingCommon.__init__(self,**kw)
+
+        p = self.parameters # shorthand
+
+        self._texture_object_id = gl.glGenTextures(1)
+        if p.mask:
+            gl.glActiveTextureARB(gl.GL_TEXTURE0_ARB)
+        gl.glBindTexture(gl.GL_TEXTURE_1D,self._texture_object_id)
+
+        # Do error-checking on texture to make sure it will load
+        max_dim = gl.glGetIntegerv(gl.GL_MAX_TEXTURE_SIZE)
+        if p.num_samples > max_dim:
+            raise NumSamplesTooLargeError("Grating num_samples too large for video system.\nOpenGL reports maximum size of %d"%(max_dim,))
+
+        self.calculate_bit_depth_dependencies()
+
+        w = p.size[0]
+        inc = w/float(p.num_samples)
+        phase = 0.0 # this data won't get used - don't care about phase
+        self._last_phase = phase
+        floating_point_sin = numpy.sin(2.0*math.pi*p.spatial_freq*numpy.arange(0.0,w,inc,dtype=numpy.float)+(phase/180.0*math.pi))*0.5*p.contrast+p.pedestal
+        floating_point_sin = numpy.clip(floating_point_sin,0.0,1.0) # allow square wave generation if contrast > 1
+        texel_data = (floating_point_sin*self.max_int_val).astype(self.numpy_dtype).tostring()
+
+        # Because the MAX_TEXTURE_SIZE method is insensitive to the current
+        # state of the video system, another check must be done using
+        # "proxy textures".
+        gl.glTexImage1D(gl.GL_PROXY_TEXTURE_1D,            # target
+                        0,                                 # level
+                        self.gl_internal_format,           # video RAM internal format
+                        p.num_samples,                     # width
+                        0,                                 # border
+                        self.format,                       # format of texel data
+                        self.gl_type,                      # type of texel data
+                        texel_data)                        # texel data (irrelevant for proxy)
+        if gl.glGetTexLevelParameteriv(gl.GL_PROXY_TEXTURE_1D, # Need PyOpenGL >= 2.0
+                                       0,
+                                       gl.GL_TEXTURE_WIDTH) == 0:
+            raise NumSamplesTooLargeError("Grating num_samples is too wide for your video system!")
+
+        # If we got here, it worked and we can load the texture for real.
+        gl.glTexImage1D(gl.GL_TEXTURE_1D,                  # target
+                        0,                                 # level
+                        self.gl_internal_format,           # video RAM internal format
+                        p.num_samples,                     # width
+                        0,                                 # border
+                        self.format,                       # format of texel data
+                        self.gl_type,                      # type of texel data
+                        texel_data)                        # texel data
+
+        # Set texture object defaults
+        gl.glTexParameteri(gl.GL_TEXTURE_1D,gl.GL_TEXTURE_WRAP_S,gl.GL_CLAMP_TO_EDGE)
+        gl.glTexParameteri(gl.GL_TEXTURE_1D,gl.GL_TEXTURE_WRAP_T,gl.GL_CLAMP_TO_EDGE)
+        gl.glTexParameteri(gl.GL_TEXTURE_1D,gl.GL_TEXTURE_MAG_FILTER,gl.GL_LINEAR)
+        gl.glTexParameteri(gl.GL_TEXTURE_1D,gl.GL_TEXTURE_MIN_FILTER,gl.GL_LINEAR)
+
+        if p.color2 is not None:
+            if VisionEgg.Core.gl_renderer == 'ATi Rage 128 Pro OpenGL Engine' and VisionEgg.Core.gl_version == '1.1 ATI-1.2.22':
+                logger = logging.getLogger('VisionEgg.Gratings')
+                logger.warning("Your video card and driver have known "
+                               "bugs which prevent them from rendering "
+                               "color gratings properly.")
+
+    def __del__(self):
+        gl.glDeleteTextures( [self._texture_object_id] )
+
+    def draw(self):
+        p = self.parameters # shorthand
+        if p.on:
+            # calculate center
+            center = VisionEgg._get_center(p.position,p.anchor,p.size)
+            if p.mask:
+                gl.glActiveTextureARB(gl.GL_TEXTURE0_ARB)
+            gl.glBindTexture(gl.GL_TEXTURE_1D,self._texture_object_id)
+
+            gl.glEnable(gl.GL_TEXTURE_1D)
+            gl.glDisable(gl.GL_TEXTURE_2D)
+            if p.bit_depth != self.cached_bit_depth:
+                self.calculate_bit_depth_dependencies()
+
+            # Clear the modeview matrix
+            gl.glMatrixMode(gl.GL_MODELVIEW)
+            gl.glPushMatrix()
+
+            # Rotate about the center of the texture
+            gl.glTranslate(center[0],
+                           center[1],
+                           0)
+            gl.glRotate(p.orientation,0,0,1)
+
+            if p.depth is None:
+                gl.glDisable(gl.GL_DEPTH_TEST)
+                depth = 0.0
+            else:
+                gl.glEnable(gl.GL_DEPTH_TEST)
+                depth = p.depth
+
+            # allow max_alpha value to control blending
+            gl.glEnable( gl.GL_BLEND )
+            gl.glBlendFunc( gl.GL_SRC_ALPHA, gl.GL_ONE_MINUS_SRC_ALPHA )
+
+            if p.color2:
+                gl.glTexEnvi(gl.GL_TEXTURE_ENV, gl.GL_TEXTURE_ENV_MODE, gl.GL_BLEND)
+                gl.glTexEnvfv(gl.GL_TEXTURE_ENV, gl.GL_TEXTURE_ENV_COLOR, p.color2)
+                ## alpha is ignored because the texture base internal format is luminance
+            else:
+                gl.glTexEnvi(gl.GL_TEXTURE_ENV, gl.GL_TEXTURE_ENV_MODE, gl.GL_MODULATE)
+
+            if p.t0_time_sec_absolute is None and not p.ignore_time:
+                p.t0_time_sec_absolute = VisionEgg.time_func()
+
+            w = p.size[0]
+            inc = w/float(p.num_samples)
+            if p.ignore_time:
+                phase = p.phase_at_t0
+            else:
+                t_var = VisionEgg.time_func() - p.t0_time_sec_absolute
+                phase = t_var*p.temporal_freq_hz*-360.0 + p.phase_at_t0
+            if p.recalculate_phase_tolerance is None or abs(self._last_phase - phase) > p.recalculate_phase_tolerance:
+                self._last_phase = phase # we're re-drawing the phase at this angle
+                floating_point_sin = numpy.sin(2.0*math.pi*p.spatial_freq*numpy.arange(0.0,w,inc,dtype=numpy.float)+(phase/180.0*math.pi))*0.5*p.contrast+p.pedestal
+                floating_point_sin = numpy.clip(floating_point_sin,0.0,1.0) # allow square wave generation if contrast > 1
+                texel_data = (floating_point_sin*self.max_int_val).astype(self.numpy_dtype)
+                # PyOpenGL 2.0.1.09 has a bug, so use our own wrapper
+                _vegl.veglTexSubImage1D(gl.GL_TEXTURE_1D, # target
+                                        0,                # level
+                                        0,                # x offset
+                                        p.num_samples,    # width
+                                        self.format,      # format of new texel data
+                                        self.gl_type,     # type of new texel data
+                                        texel_data)       # new texel data
+                if 0:
+                    compare_array = numpy.empty(texel_data.shape,dtype=texel_data.dtype)
+                    pixels = _vegl.veglGetTexImage(gl.GL_TEXTURE_1D, # target
+                                                   0, # level
+                                                   self.format, # format
+                                                   self.gl_type, # type
+                                                   compare_array)
+                    assert numpy.allclose( compare_array, texel_data )
+
+            h_w = p.size[0]/2.0
+            h_h = p.size[1]/2.0
+
+            l = -h_w
+            r = h_w
+            b = -h_h
+            t = h_h
+
+            # in the case of only color1,
+            # the texel data multiplies color1 to produce a color
+
+            # with color2,
+            # the texel data linearly interpolates between color1 and color2
+
+            gl.glColor4f(p.color1[0],p.color1[1],p.color1[2],p.max_alpha)
+
+            if p.mask:
+                p.mask.draw_masked_quad(0.0,1.0,0.0,1.0, # l,r,b,t for texture coordinates
+                                        l,r,b,t, # l,r,b,t in eye coordinates
+                                        depth ) # also in eye coordinates
+            else:
+                # draw unmasked quad
+                gl.glBegin(gl.GL_QUADS)
+
+                gl.glTexCoord2f(0.0,0.0)
+                gl.glVertex3f(l,b,depth)
+
+                gl.glTexCoord2f(1.0,0.0)
+                gl.glVertex3f(r,b,depth)
+
+                gl.glTexCoord2f(1.0,1.0)
+                gl.glVertex3f(r,t,depth)
+
+                gl.glTexCoord2f(0.0,1.0)
+                gl.glVertex3f(l,t,depth)
+                gl.glEnd() # GL_QUADS
+
+            gl.glDisable(gl.GL_TEXTURE_1D)
+            gl.glPopMatrix()
+
+class SinGrating3D(LuminanceGratingCommon):
+    """Sine wave grating stimulus texture mapped onto quad in 3D
+
+    This is a general-purpose, realtime sine-wave luminace grating
+    generator. This 3D version doesn't support an orientation
+    parameter.  This could be implemented, but for now should be done
+    by orienting the quad in 3D.
+
+    Parameters
+    ==========
+    bit_depth                   -- precision with which grating is calculated and sent to OpenGL (UnsignedInteger)
+                                   Inherited from LuminanceGratingCommon
+                                   Default: 8
+    color1                      -- (AnyOf(Sequence3 of Real or Sequence4 of Real))
+                                   Default: (1.0, 1.0, 1.0)
+    color2                      -- optional color with which to perform interpolation with color1 in RGB space (AnyOf(Sequence3 of Real or Sequence4 of Real))
+                                   Default: (determined at runtime)
+    contrast                    -- (Real)
+                                   Default: 1.0
+    depth                       -- (Real)
+                                   Default: (determined at runtime)
+    depth_test                  -- perform depth test? (Boolean)
+                                   Default: True
+    ignore_time                 -- (Boolean)
+                                   Default: False
+    lowerleft                   -- vertex position (units: eye coordinates) (AnyOf(Sequence3 of Real or Sequence4 of Real))
+                                   Default: (0.0, 0.0, -1.0)
+    lowerright                  -- vertex position (units: eye coordinates) (AnyOf(Sequence3 of Real or Sequence4 of Real))
+                                   Default: (1.0, 0.0, -1.0)
+    mask                        -- optional masking function (Instance of <class 'VisionEgg.Textures.Mask2D'>)
+                                   Default: (determined at runtime)
+    max_alpha                   -- (Real)
+                                   Default: 1.0
+    num_samples                 -- (UnsignedInteger)
+                                   Default: 512
+    on                          -- draw stimulus? (Boolean)
+                                   Default: True
+    pedestal                    -- (Real)
+                                   Default: 0.5
+    phase_at_t0                 -- (Real)
+                                   Default: 0.0
+    recalculate_phase_tolerance -- (Real)
+                                   Default: (determined at runtime)
+    size                        -- defines coordinate size of grating (in eye coordinates) (Sequence2 of Real)
+                                   Default: (1.0, 1.0)
+    spatial_freq                -- frequency defined relative to coordinates defined in size parameter (units; cycles/eye_coord_unit) (Real)
+                                   Default: 4.0
+    t0_time_sec_absolute        -- (Real)
+                                   Default: (determined at runtime)
+    temporal_freq_hz            -- (Real)
+                                   Default: 5.0
+    upperleft                   -- vertex position (units: eye coordinates) (AnyOf(Sequence3 of Real or Sequence4 of Real))
+                                   Default: (0.0, 1.0, -1.0)
+    upperright                  -- vertex position (units: eye coordinates) (AnyOf(Sequence3 of Real or Sequence4 of Real))
+                                   Default: (1.0, 1.0, -1.0)
+    """
+
+    parameters_and_defaults = VisionEgg.ParameterDefinition({
+        'on':(True,
+              ve_types.Boolean,
+              "draw stimulus?"),
+        'mask':(None, # allows window onto otherwise (tilted) rectangular grating
+                ve_types.Instance(VisionEgg.Textures.Mask2D),
+                "optional masking function"),
+        'contrast':(1.0,
+                    ve_types.Real),
+        'pedestal':(0.5,
+                    ve_types.Real),
+        'depth':(None, # if not None, turns on depth testing and allows for occlusion
+                 ve_types.Real),
+        'size':((1.0,1.0), # in eye coordinates
+                ve_types.Sequence2(ve_types.Real),
+                "defines coordinate size of grating (in eye coordinates)"),
+        'spatial_freq':(4.0, # cycles/eye coord units
+                        ve_types.Real,
+                        "frequency defined relative to coordinates defined in size parameter (units; cycles/eye_coord_unit)"),
+        'temporal_freq_hz':(5.0, # hz
+                            ve_types.Real),
+        't0_time_sec_absolute':(None, # Will be assigned during first call to draw()
+                                ve_types.Real),
+        'ignore_time':(False, # ignore temporal frequency variable - allow control purely with phase_at_t0
+                       ve_types.Boolean),
+        'phase_at_t0':(0.0, # degrees [0.0-360.0]
+                       ve_types.Real),
+        'num_samples':(512, # number of spatial samples, should be a power of 2
+                       ve_types.UnsignedInteger),
+        'max_alpha':(1.0, # controls "opacity": 1.0 = completely opaque, 0.0 = completely transparent
+                     ve_types.Real),
+        'color1':((1.0, 1.0, 1.0), # alpha is ignored (if given) -- use max_alpha parameter
+                  ve_types.AnyOf(ve_types.Sequence3(ve_types.Real),
+                                 ve_types.Sequence4(ve_types.Real))),
+        'color2':(None, # perform interpolation with color1 in RGB space.
+                  ve_types.AnyOf(ve_types.Sequence3(ve_types.Real),
+                                 ve_types.Sequence4(ve_types.Real)),
+                  "optional color with which to perform interpolation with color1 in RGB space"),
+        'recalculate_phase_tolerance':(None, # only recalculate texture when phase is changed by more than this amount, None for always recalculate. (Saves time.)
+                                       ve_types.Real),
+        'depth_test':(True,
+                      ve_types.Boolean,
+                      "perform depth test?"),
+        'lowerleft':((0.0,0.0,-1.0), # in eye coordinates
+                     ve_types.AnyOf(ve_types.Sequence3(ve_types.Real),
+                                    ve_types.Sequence4(ve_types.Real)),
+                     "vertex position (units: eye coordinates)"),
+        'lowerright':((1.0,0.0,-1.0), # in eye coordinates
+                      ve_types.AnyOf(ve_types.Sequence3(ve_types.Real),
+                                     ve_types.Sequence4(ve_types.Real)),
+                      "vertex position (units: eye coordinates)"),
+        'upperleft':((0.0,1.0,-1.0), # in eye coordinates
+                     ve_types.AnyOf(ve_types.Sequence3(ve_types.Real),
+                                    ve_types.Sequence4(ve_types.Real)),
+                     "vertex position (units: eye coordinates)"),
+        'upperright':((1.0,1.0,-1.0), # in eye coordinates
+                      ve_types.AnyOf(ve_types.Sequence3(ve_types.Real),
+                                     ve_types.Sequence4(ve_types.Real)),
+                      "vertex position (units: eye coordinates)"),
+        'polygon_offset_enabled':(False,
+                                  ve_types.Boolean,
+                                  "perform polygon offset?"),
+        'polygon_offset_factor':(1.0,
+                                 ve_types.Real,
+                                 "polygon factor"),
+        'polygon_offset_units':(1.0,
+                                ve_types.Real,
+                                "polygon units"),
+        })
+
+    __slots__ = (
+        '_texture_object_id',
+        '_last_phase',
+        )
+
+    def __init__(self,**kw):
+        LuminanceGratingCommon.__init__(self,**kw)
+
+        p = self.parameters # shorthand
+
+        self._texture_object_id = gl.glGenTextures(1)
+        if p.mask:
+            gl.glActiveTextureARB(gl.GL_TEXTURE0_ARB)
+        gl.glBindTexture(gl.GL_TEXTURE_1D,self._texture_object_id)
+
+        # Do error-checking on texture to make sure it will load
+        max_dim = gl.glGetIntegerv(gl.GL_MAX_TEXTURE_SIZE)
+        if p.num_samples > max_dim:
+            raise NumSamplesTooLargeError("Grating num_samples too large for video system.\nOpenGL reports maximum size of %d"%(max_dim,))
+
+        self.calculate_bit_depth_dependencies()
+
+        w = p.size[0]
+        inc = w/float(p.num_samples)
+        phase = 0.0 # this data won't get used - don't care about phase
+        self._last_phase = phase
+        floating_point_sin = numpy.sin(2.0*math.pi*p.spatial_freq*numpy.arange(0.0,w,inc,dtype=numpy.float)+(phase/180.0*math.pi))*0.5*p.contrast+p.pedestal
+        floating_point_sin = numpy.clip(floating_point_sin,0.0,1.0) # allow square wave generation if contrast > 1
+        texel_data = (floating_point_sin*self.max_int_val).astype(self.numpy_dtype).tostring()
+
+        # Because the MAX_TEXTURE_SIZE method is insensitive to the current
+        # state of the video system, another check must be done using
+        # "proxy textures".
+        gl.glTexImage1D(gl.GL_PROXY_TEXTURE_1D,            # target
+                        0,                                 # level
+                        self.gl_internal_format,           # video RAM internal format
+                        p.num_samples,                     # width
+                        0,                                 # border
+                        self.format,                       # format of texel data
+                        self.gl_type,                      # type of texel data
+                        texel_data)                        # texel data (irrelevant for proxy)
+        if gl.glGetTexLevelParameteriv(gl.GL_PROXY_TEXTURE_1D, # Need PyOpenGL >= 2.0
+                                       0,
+                                       gl.GL_TEXTURE_WIDTH) == 0:
+            raise NumSamplesTooLargeError("Grating num_samples is too wide for your video system!")
+
+        # If we got here, it worked and we can load the texture for real.
+        gl.glTexImage1D(gl.GL_TEXTURE_1D,                  # target
+                        0,                                 # level
+                        self.gl_internal_format,           # video RAM internal format
+                        p.num_samples,                     # width
+                        0,                                 # border
+                        self.format,                       # format of texel data
+                        self.gl_type,                      # type of texel data
+                        texel_data)                        # texel data
+
+        # Set texture object defaults
+        gl.glTexParameteri(gl.GL_TEXTURE_1D,gl.GL_TEXTURE_WRAP_S,gl.GL_CLAMP_TO_EDGE)
+        gl.glTexParameteri(gl.GL_TEXTURE_1D,gl.GL_TEXTURE_WRAP_T,gl.GL_CLAMP_TO_EDGE)
+        gl.glTexParameteri(gl.GL_TEXTURE_1D,gl.GL_TEXTURE_MAG_FILTER,gl.GL_LINEAR)
+        gl.glTexParameteri(gl.GL_TEXTURE_1D,gl.GL_TEXTURE_MIN_FILTER,gl.GL_LINEAR)
+
+        if p.color2 is not None:
+            if VisionEgg.Core.gl_renderer == 'ATi Rage 128 Pro OpenGL Engine' and VisionEgg.Core.gl_version == '1.1 ATI-1.2.22':
+                logger = logging.getLogger('VisionEgg.Gratings')
+                logger.warning("Your video card and driver have known "
+                               "bugs which prevent them from rendering "
+                               "color gratings properly.")
+
+    def __del__(self):
+        gl.glDeleteTextures( [self._texture_object_id] )
+
+    def draw(self):
+        p = self.parameters # shorthand
+        if p.on:
+            if p.mask:
+                gl.glActiveTextureARB(gl.GL_TEXTURE0_ARB)
+            if p.depth_test:
+                gl.glEnable(gl.GL_DEPTH_TEST)
+            else:
+                gl.glDisable(gl.GL_DEPTH_TEST)
+            if p.polygon_offset_enabled:
+                gl.glEnable(gl.GL_POLYGON_OFFSET_EXT)
+                gl.glPolygonOffset(p.polygon_offset_factor, p.polygon_offset_units)
+            gl.glBindTexture(gl.GL_TEXTURE_1D,self._texture_object_id)
+            gl.glEnable(gl.GL_TEXTURE_1D)
+            gl.glDisable(gl.GL_TEXTURE_2D)
+            if p.bit_depth != self.cached_bit_depth:
+                self.calculate_bit_depth_dependencies()
+
+            # allow max_alpha value to control blending
+            gl.glEnable( gl.GL_BLEND )
+            gl.glBlendFunc( gl.GL_SRC_ALPHA, gl.GL_ONE_MINUS_SRC_ALPHA )
+
+            if p.color2:
+                gl.glTexEnvi(gl.GL_TEXTURE_ENV, gl.GL_TEXTURE_ENV_MODE, gl.GL_BLEND)
+                gl.glTexEnvfv(gl.GL_TEXTURE_ENV, gl.GL_TEXTURE_ENV_COLOR, p.color2)
+                ## alpha is ignored because the texture base internal format is luminance
+            else:
+                gl.glTexEnvi(gl.GL_TEXTURE_ENV, gl.GL_TEXTURE_ENV_MODE, gl.GL_MODULATE)
+
+            if p.t0_time_sec_absolute is None and not p.ignore_time:
+                p.t0_time_sec_absolute = VisionEgg.time_func()
+
+            w = p.size[0]
+            inc = w/float(p.num_samples)
+            if p.ignore_time:
+                phase = p.phase_at_t0
+            else:
+                t_var = VisionEgg.time_func() - p.t0_time_sec_absolute
+                phase = t_var*p.temporal_freq_hz*-360.0 + p.phase_at_t0
+            if p.recalculate_phase_tolerance is None or abs(self._last_phase - phase) > p.recalculate_phase_tolerance:
+                self._last_phase = phase # we're re-drawing the phase at this angle
+                floating_point_sin = numpy.sin(2.0*math.pi*p.spatial_freq*numpy.arange(0.0,w,inc,dtype=numpy.float)+(phase/180.0*math.pi))*0.5*p.contrast+p.pedestal
+                floating_point_sin = numpy.clip(floating_point_sin,0.0,1.0) # allow square wave generation if contrast > 1
+                texel_data = (floating_point_sin*self.max_int_val).astype(self.numpy_dtype).tostring()
+
+                gl.glTexSubImage1D(gl.GL_TEXTURE_1D, # target
+                                   0,                # level
+                                   0,                # x offset
+                                   p.num_samples,    # width
+                                   self.format,      # format of new texel data
+                                   self.gl_type,     # type of new texel data
+                                   texel_data)       # new texel data
+
+            # in the case of only color1,
+            # the texel data multiplies color1 to produce a color
+
+            # with color2,
+            # the texel data linearly interpolates between color1 and color2
+
+            gl.glColor4f(p.color1[0],p.color1[1],p.color1[2],p.max_alpha)
+
+            if p.mask:
+                p.mask.draw_masked_quad_3d(0.0,1.0,0.0,1.0, # for texture coordinates
+                                           p.lowerleft,p.lowerright,p.upperright,p.upperleft)
+            else:
+                # draw unmasked quad
+                gl.glBegin(gl.GL_QUADS)
+
+                gl.glTexCoord2f(0.0,0.0)
+                gl.glVertex(*p.lowerleft)
+
+                gl.glTexCoord2f(1.0,0.0)
+                gl.glVertex(*p.lowerright)
+
+                gl.glTexCoord2f(1.0,1.0)
+                gl.glVertex(*p.upperright)
+
+                gl.glTexCoord2f(0.0,1.0)
+                gl.glVertex(*p.upperleft)
+                gl.glEnd() # GL_QUADS
+
+            gl.glDisable(gl.GL_TEXTURE_1D)
+            if p.polygon_offset_enabled:
+                gl.glDisable(gl.GL_POLYGON_OFFSET_EXT)
+
+class NumSamplesTooLargeError( RuntimeError ):
+    pass
diff --git a/VisionEgg/MoreStimuli.py b/VisionEgg/MoreStimuli.py
new file mode 100644
index 0000000..9f2105d
--- /dev/null
+++ b/VisionEgg/MoreStimuli.py
@@ -0,0 +1,522 @@
+# The Vision Egg: MoreStimuli
+#
+# Copyright (C) 2001-2003 Andrew Straw.
+#           (C) 2005 by Hertie Institute for Clinical Brain Research,
+#            Department of Cognitive Neurology, University of Tuebingen
+#           (C) 2005,2008 California Institute of Technology
+#           (C) 2006 Peter Jurica and Gijs Plomp
+#
+# URL: http://www.visionegg.org
+#
+# Distributed under the terms of the GNU Lesser General Public License
+# (LGPL). See LICENSE.TXT that came with this file.
+
+"""
+Assorted stimuli.
+
+"""
+
+####################################################################
+#
+#        Import all the necessary packages
+#
+####################################################################
+
+import logging
+
+import VisionEgg
+import VisionEgg.Core
+import VisionEgg.ParameterTypes as ve_types
+
+import numpy.oldnumeric as Numeric
+
+import math
+
+import VisionEgg.GL as gl # get all OpenGL stuff in one namespace
+
+class Target2D(VisionEgg.Core.Stimulus):
+    """Rectanglular stimulus.
+
+    Parameters
+    ==========
+    anchor        -- specifies how position parameter is interpreted (String)
+                     Default: center
+    anti_aliasing -- (Boolean)
+                     Default: True
+    center        -- DEPRECATED: don't use (Sequence2 of Real)
+                     Default: (determined at runtime)
+    color         -- (AnyOf(Sequence3 of Real or Sequence4 of Real))
+                     Default: (1.0, 1.0, 1.0)
+    on            -- draw stimulus? (Boolean) (Boolean)
+                     Default: True
+    orientation   -- (Real)
+                     Default: 0.0
+    position      -- units: eye coordinates (AnyOf(Sequence2 of Real or Sequence3 of Real or Sequence4 of Real))
+                     Default: (320.0, 240.0)
+    size          -- units: eye coordinates (Sequence2 of Real)
+                     Default: (64.0, 16.0)
+    """
+
+    parameters_and_defaults = {
+        'on':(True,
+              ve_types.Boolean,
+              "draw stimulus? (Boolean)"),
+        'color':((1.0,1.0,1.0),
+                 ve_types.AnyOf(ve_types.Sequence3(ve_types.Real),
+                                ve_types.Sequence4(ve_types.Real))),
+        'anti_aliasing':(True,
+                         ve_types.Boolean),
+        'orientation':(0.0,
+                       ve_types.Real),
+        'position' : ( ( 320.0, 240.0 ),
+                       ve_types.AnyOf(ve_types.Sequence2(ve_types.Real),
+                                      ve_types.Sequence3(ve_types.Real),
+                                      ve_types.Sequence4(ve_types.Real)),
+                       "units: eye coordinates"),
+        'anchor' : ('center',
+                    ve_types.String,
+                    "specifies how position parameter is interpreted"),
+        'size':((64.0,16.0),
+                ve_types.Sequence2(ve_types.Real),
+                "units: eye coordinates"),
+        'center' : (None,
+                    ve_types.Sequence2(ve_types.Real),
+                    "DEPRECATED: don't use"),
+        }
+
+    __slots__ = (
+        '_gave_alpha_warning',
+        )
+
+    def __init__(self,**kw):
+        VisionEgg.Core.Stimulus.__init__(self,**kw)
+        self._gave_alpha_warning = 0
+
+    def draw(self):
+        p = self.parameters # shorthand
+        if p.center is not None:
+            if not hasattr(VisionEgg.config,"_GAVE_CENTER_DEPRECATION"):
+                logger = logging.getLogger('VisionEgg.MoreStimuli')
+                logger.warning("Specifying Target2D by deprecated "
+                               "'center' parameter deprecated.  Use "
+                               "'position' parameter instead.  (Allows "
+                               "use of 'anchor' parameter to set to "
+                               "other values.)")
+                VisionEgg.config._GAVE_CENTER_DEPRECATION = 1
+            p.anchor = 'center'
+            p.position = p.center[0], p.center[1] # copy values (don't copy ref to tuple)
+        if p.on:
+            # calculate center
+            center = VisionEgg._get_center(p.position,p.anchor,p.size)
+            gl.glMatrixMode(gl.GL_MODELVIEW)
+            gl.glPushMatrix()
+            gl.glTranslate(center[0],center[1],0.0)
+            gl.glRotate(p.orientation,0.0,0.0,1.0)
+
+            if len(p.color)==3:
+                gl.glColor3f(*p.color)
+            elif len(p.color)==4:
+                gl.glColor4f(*p.color)
+            gl.glDisable(gl.GL_DEPTH_TEST)
+            gl.glDisable(gl.GL_TEXTURE_2D)
+            gl.glBlendFunc(gl.GL_SRC_ALPHA,gl.GL_ONE_MINUS_SRC_ALPHA)
+            gl.glEnable(gl.GL_BLEND)
+
+            w = p.size[0]/2.0
+            h = p.size[1]/2.0
+
+            gl.glBegin(gl.GL_QUADS)
+            gl.glVertex3f(-w,-h, 0.0)
+            gl.glVertex3f( w,-h, 0.0)
+            gl.glVertex3f( w, h, 0.0)
+            gl.glVertex3f(-w, h, 0.0)
+            gl.glEnd() # GL_QUADS
+
+            if p.anti_aliasing:
+                if not self._gave_alpha_warning:
+                    if len(p.color) > 3 and p.color[3] != 1.0:
+                        logger = logging.getLogger('VisionEgg.MoreStimuli')
+                        logger.warning("The parameter anti_aliasing is "
+                                       "set to true in the Target2D "
+                                       "stimulus class, but the color "
+                                       "parameter specifies an alpha "
+                                       "value other than 1.0.  To "
+                                       "acheive anti-aliasing, ensure "
+                                       "that the alpha value for the "
+                                       "color parameter is 1.0.")
+                        self._gave_alpha_warning = 1
+
+                # We've already drawn a filled polygon (aliased), now
+                # redraw the outline of the polygon (with
+                # anti-aliasing).  (Using GL_POLYGON_SMOOTH results in
+                # artifactual lines where triangles were joined to
+                # create quad, at least on some OpenGL
+                # implementations.)
+
+                # Calculate coverage value for each pixel of outline
+                # and store as alpha
+                gl.glEnable(gl.GL_LINE_SMOOTH)
+                # Now specify how to use the alpha value
+                gl.glBlendFunc(gl.GL_SRC_ALPHA,gl.GL_ONE_MINUS_SRC_ALPHA)
+                gl.glEnable(gl.GL_BLEND)
+
+                # Draw a second polygon in line mode, so the edges are anti-aliased
+                gl.glPolygonMode(gl.GL_FRONT_AND_BACK,gl.GL_LINE)
+                gl.glBegin(gl.GL_QUADS)
+                gl.glVertex3f(-w,-h, 0.0);
+                gl.glVertex3f( w,-h, 0.0);
+                gl.glVertex3f( w, h, 0.0);
+                gl.glVertex3f(-w, h, 0.0);
+                gl.glEnd() # GL_QUADS
+
+                # Set the polygon mode back to fill mode
+                gl.glPolygonMode(gl.GL_FRONT_AND_BACK,gl.GL_FILL)
+                gl.glDisable(gl.GL_LINE_SMOOTH)
+            gl.glPopMatrix()
+
+class Rectangle3D(VisionEgg.Core.Stimulus):
+    """Solid color rectangle positioned explicitly by four vertices.
+
+    Parameters
+    ==========
+    color   -- (AnyOf(Sequence3 of Real or Sequence4 of Real))
+               Default: (1.0, 1.0, 1.0, 1.0)
+    on      -- (Boolean)
+               Default: True
+    vertex1 -- units: eye coordinates (AnyOf(Sequence3 of Real or Sequence4 of Real))
+               Default: (-10.0, 0.0, -10.0)
+    vertex2 -- units: eye coordinates (AnyOf(Sequence3 of Real or Sequence4 of Real))
+               Default: (-10.0, 0.0, 10.0)
+    vertex3 -- units: eye coordinates (AnyOf(Sequence3 of Real or Sequence4 of Real))
+               Default: (10.0, 0.0, 10.0)
+    vertex4 -- units: eye coordinates (AnyOf(Sequence3 of Real or Sequence4 of Real))
+               Default: (10.0, 0.0, -10.0)
+    """
+
+    parameters_and_defaults = {
+        'on':(True,
+              ve_types.Boolean),
+
+        'blending_enabled':(False,
+                    ve_types.Boolean),
+
+        # different default than TextureStimulus3D due to not break backwards compatibility
+        'depth_test':(False,
+                      ve_types.Boolean),
+
+        'color':((1.0,1.0,1.0,1.0),
+                 ve_types.AnyOf(ve_types.Sequence3(ve_types.Real),
+                                ve_types.Sequence4(ve_types.Real))),
+        'vertex1':(( -10.0, 0.0, -10.0),
+                   ve_types.AnyOf(ve_types.Sequence3(ve_types.Real),
+                                  ve_types.Sequence4(ve_types.Real)),
+                 "units: eye coordinates"),
+        'vertex2':(( -10.0, 0.0,  10.0),
+                   ve_types.AnyOf(ve_types.Sequence3(ve_types.Real),
+                                  ve_types.Sequence4(ve_types.Real)),
+                 "units: eye coordinates"),
+        'vertex3':((  10.0, 0.0,  10.0),
+                   ve_types.AnyOf(ve_types.Sequence3(ve_types.Real),
+                                  ve_types.Sequence4(ve_types.Real)),
+                 "units: eye coordinates"),
+        'vertex4':((  10.0, 0.0, -10.0),
+                   ve_types.AnyOf(ve_types.Sequence3(ve_types.Real),
+                                  ve_types.Sequence4(ve_types.Real)),
+                 "units: eye coordinates"),
+        }
+
+    def __init__(self,**kw):
+        VisionEgg.Core.Stimulus.__init__(self,**kw)
+
+    def draw(self):
+        p = self.parameters # shorthand
+        if p.on:
+            if len(p.color)==3:
+                gl.glColor3f(*p.color)
+            elif len(p.color)==4:
+                gl.glColor4f(*p.color)
+
+            gl.glDisable(gl.GL_TEXTURE_2D)
+            if p.depth_test:
+                gl.glEnable(gl.GL_DEPTH_TEST)
+            else:
+                gl.glDisable(gl.GL_DEPTH_TEST)
+            if p.blending_enabled:
+                gl.glEnable(gl.GL_BLEND)
+            else:
+                gl.glDisable(gl.GL_BLEND)
+
+            gl.glBegin(gl.GL_QUADS)
+            gl.glVertex(*p.vertex1)
+            gl.glVertex(*p.vertex2)
+            gl.glVertex(*p.vertex3)
+            gl.glVertex(*p.vertex4)
+            gl.glEnd() # GL_QUADS
+
+class Arrow(VisionEgg.Core.Stimulus):
+    """Arrow stimulus.
+
+    Parameters
+    ==========
+    anchor        -- (String)
+                     Default: center
+    anti_aliasing -- (Boolean)
+                     Default: True
+    color         -- (AnyOf(Sequence3 of Real or Sequence4 of Real))
+                     Default: (1.0, 1.0, 1.0)
+    on            -- (Boolean)
+                     Default: True
+    orientation   -- (Real)
+                     Default: 0.0
+    position      -- units: eye coordinates (AnyOf(Sequence2 of Real or Sequence3 of Real or Sequence4 of Real))
+                     Default: (320.0, 240.0)
+    size          -- (Sequence2 of Real)
+                     Default: (64.0, 16.0)
+    """
+
+    parameters_and_defaults = {
+        'on':(True,
+              ve_types.Boolean),
+        'color':((1.0,1.0,1.0),
+                 ve_types.AnyOf(ve_types.Sequence3(ve_types.Real),
+                                ve_types.Sequence4(ve_types.Real))),
+        'anti_aliasing':(True,
+                         ve_types.Boolean),
+        'orientation':(0.0, # 0.0 degrees = right, 90.0 degrees = up
+                       ve_types.Real),
+        'position' : ( ( 320.0, 240.0 ), # In eye coordinates
+                       ve_types.AnyOf(ve_types.Sequence2(ve_types.Real),
+                                      ve_types.Sequence3(ve_types.Real),
+                                      ve_types.Sequence4(ve_types.Real)),
+                       "units: eye coordinates"),
+        'anchor' : ('center',
+                    ve_types.String),
+        'size':((64.0,16.0), # In eye coordinates
+                ve_types.Sequence2(ve_types.Real)),
+        }
+
+    __slots__ = VisionEgg.Core.Stimulus.__slots__ + (
+        '_gave_alpha_warning',
+        )
+
+    def __init__(self,**kw):
+        VisionEgg.Core.Stimulus.__init__(self,**kw)
+        self._gave_alpha_warning = 0
+
+    def draw(self):
+        p = self.parameters # Shorthand
+        if p.on:
+            # Calculate center
+            center = VisionEgg._get_center(p.position,p.anchor,p.size)
+            gl.glMatrixMode(gl.GL_MODELVIEW)
+            gl.glPushMatrix()
+            gl.glTranslate(center[0],center[1],0.0)
+            gl.glRotate(-p.orientation,0.0,0.0,1.0)
+
+            if len(p.color)==3:
+                gl.glColor3f(*p.color)
+            elif len(p.color)==4:
+                gl.glColor4f(*p.color)
+            gl.glDisable(gl.GL_DEPTH_TEST)
+            gl.glDisable(gl.GL_TEXTURE_2D)
+            gl.glBlendFunc(gl.GL_SRC_ALPHA,gl.GL_ONE_MINUS_SRC_ALPHA)
+            gl.glEnable(gl.GL_BLEND)
+
+            w = p.size[0]/2.0
+            h = p.size[1]/2.0
+
+            gl.glBegin(gl.GL_QUADS) # Draw Rectangle
+            gl.glVertex3f( 0.25*w, h, 0.0)
+            gl.glVertex3f(-w, h, 0.0)
+            gl.glVertex3f(-w,-h, 0.0)
+            gl.glVertex3f( 0.25*w, -h, 0.0)
+            gl.glEnd() # GL_QUADS
+
+            gl.glBegin(gl.GL_TRIANGLES) # Draw Triangle
+            gl.glVertex3f( 1.00*w, 0.0*h, 0.0) # Top
+            gl.glVertex3f( 0.25*w,-3.0*h, 0.0)
+            gl.glVertex3f( 0.25*w, 3.0*h, 0.0)
+            gl.glEnd() # GL_QUADS
+
+            if p.anti_aliasing:
+                if not self._gave_alpha_warning:
+                    if len(p.color) > 3 and p.color[3] != 1.0:
+                        logger = logging.getLogger('VisionEgg.Arrow')
+                        logger.warning("The parameter anti_aliasing is "
+                                       "set to true in the Arrow "
+                                       "stimulus class, but the color "
+                                       "parameter specifies an alpha "
+                                       "value other than 1.0.  To "
+                                       "acheive anti-aliasing, ensure "
+                                       "that the alpha value for the "
+                                       "color parameter is 1.0.")
+                        self._gave_alpha_warning = 1
+
+                # We've already drawn a filled polygon (aliased), now redraw
+                # the outline of the polygon (with anti-aliasing). (Using
+                # GL_POLYGON_SMOOTH results in artifactual lines where
+                # triangles were joined to create quad, at least on some OpenGL
+                # implementations.)
+
+                # Calculate coverage value for each pixel of outline
+                # and store as alpha
+                gl.glEnable(gl.GL_LINE_SMOOTH)
+                # Now specify how to use the alpha value
+                gl.glBlendFunc(gl.GL_SRC_ALPHA,gl.GL_ONE_MINUS_SRC_ALPHA)
+                gl.glEnable(gl.GL_BLEND)
+
+                # Draw a second polygon in line mode, so the edges are anti-aliased
+                gl.glPolygonMode(gl.GL_FRONT_AND_BACK,gl.GL_LINE)
+                gl.glBegin(gl.GL_QUADS)
+
+                gl.glVertex3f( 0.25*w, h, 0.0) # Draw Rectangle
+                gl.glVertex3f(-w, h, 0.0)
+                gl.glVertex3f(-w,-h, 0.0)
+                gl.glVertex3f( 0.25*w, -h, 0.0)
+                gl.glVertex3f( 1.00*w, 0.0*h, 0.0) # Draw Triangle
+                gl.glVertex3f( 0.25*w,-3.0*h, 0.0)
+                gl.glVertex3f( 0.25*w, 3.0*h, 0.0)
+                gl.glEnd() # GL_QUADS
+
+                # Set the polygon mode back to fill mode
+                gl.glPolygonMode(gl.GL_FRONT_AND_BACK,gl.GL_FILL)
+                gl.glDisable(gl.GL_LINE_SMOOTH)
+            gl.glPopMatrix()
+
+class FilledCircle(VisionEgg.Core.Stimulus):
+    """  A circular stimulus, typically used as a fixation point.
+
+    (Note, this implementation almost certainly could be made faster
+    using display lists.)
+
+    Parameters
+    ==========
+    anchor        -- how position parameter is used (String)
+                     Default: center
+    anti_aliasing -- (Boolean)
+                     Default: True
+    color         -- color (AnyOf(Sequence3 of Real or Sequence4 of Real))
+                     Default: (1.0, 1.0, 1.0)
+    num_triangles -- number of triangles used to draw circle (Integer)
+                     Default: 51
+    on            -- draw? (Boolean)
+                     Default: True
+    position      -- position in eye coordinates (AnyOf(Sequence2 of Real or Sequence3 of Real or Sequence4 of Real))
+                     Default: (320.0, 240.0)
+    radius        -- radius in eye coordinates (Real)
+                     Default: 2.0
+    """
+
+    parameters_and_defaults = VisionEgg.ParameterDefinition({
+        'on':(True,
+              ve_types.Boolean,
+              'draw?'),
+        'color':((1.0,1.0,1.0),
+                 ve_types.AnyOf(ve_types.Sequence3(ve_types.Real),
+                                ve_types.Sequence4(ve_types.Real)),
+                 'color'),
+        'anti_aliasing':(True,
+                         ve_types.Boolean),
+        'position' : ( ( 320.0, 240.0 ), # in eye coordinates
+                       ve_types.AnyOf(ve_types.Sequence2(ve_types.Real),
+                                      ve_types.Sequence3(ve_types.Real),
+                                      ve_types.Sequence4(ve_types.Real)),
+                       'position in eye coordinates'),
+        'anchor' : ('center',
+                    ve_types.String,
+                    'how position parameter is used'),
+        'radius':(2.0,
+                  ve_types.Real,
+                  'radius in eye coordinates'),
+        'num_triangles':(51,
+                         ve_types.Integer,
+                         'number of triangles used to draw circle'),
+        })
+    __slots__ = VisionEgg.Core.Stimulus.__slots__ + (
+        '_gave_alpha_warning',
+        )
+
+    def __init__(self,**kw):
+        VisionEgg.Core.Stimulus.__init__(self,**kw)
+        self._gave_alpha_warning = 0
+
+    def draw(self):
+        p = self.parameters # shorthand
+        if p.on:
+            # calculate center
+            center = VisionEgg._get_center(p.position,p.anchor,(p.radius, p.radius))
+            gl.glDisable(gl.GL_DEPTH_TEST)
+            gl.glDisable(gl.GL_TEXTURE_2D)
+            gl.glDisable(gl.GL_BLEND)
+
+            if len(p.color)==3:
+                gl.glColor3f(*p.color)
+            elif len(p.color)==4:
+                gl.glColor4f(*p.color)
+
+          # Build filled circle from points
+#           gl.glBegin(gl.GL_POINTS)
+#           radius = int(math.ceil(p.radius))
+#           for i in range(-radius, radius):
+#               for j in range(-radius, radius):
+#                   if(i * i + j * j < radius * radius):
+#                       gl.glVertex3f(p.position[0] + i, p.position[1] + j, 0.0)
+#           gl.glEnd() # GL_POINTS
+
+            # Build filled circle from triangles (this is typically faster
+            # then the commented code above with the points)
+            gl.glBegin(gl.GL_TRIANGLE_FAN)
+            gl.glVertex3f(p.position[0], p.position[1], 0.0)
+            angles = Numeric.arange(p.num_triangles)/float(p.num_triangles)*2.0*math.pi
+            verts = Numeric.zeros( (p.num_triangles,2), Numeric.Float )
+            verts[:,0] = p.position[0] + p.radius * Numeric.cos(angles)
+            verts[:,1] = p.position[1] + p.radius * Numeric.sin(angles)
+            for i in range(verts.shape[0]):
+                gl.glVertex2fv(verts[i])
+            gl.glVertex2fv(verts[0])
+
+            gl.glEnd() # GL_TRIANGLE_FAN
+            if p.anti_aliasing:
+                if not self._gave_alpha_warning:
+                    if len(p.color) > 3 and p.color[3] != 1.0:
+                        logger = logging.getLogger('VisionEgg.Arrow')
+                        logger.warning("The parameter anti_aliasing is "
+                                       "set to true in the Arrow "
+                                       "stimulus class, but the color "
+                                       "parameter specifies an alpha "
+                                       "value other than 1.0.  To "
+                                       "acheive anti-aliasing, ensure "
+                                       "that the alpha value for the "
+                                       "color parameter is 1.0.")
+                        self._gave_alpha_warning = 1
+
+                        # We've already drawn a filled polygon (aliased), now redraw
+                        # the outline of the polygon (with anti-aliasing). (Using
+                        # GL_POLYGON_SMOOTH results in artifactual lines where
+                        # triangles were joined to create quad, at least on some OpenGL
+                        # implementations.)
+
+                # Calculate coverage value for each pixel of outline
+                # and store as alpha
+                gl.glEnable(gl.GL_LINE_SMOOTH)
+                # Now specify how to use the alpha value
+                gl.glBlendFunc(gl.GL_SRC_ALPHA,gl.GL_ONE_MINUS_SRC_ALPHA)
+                gl.glEnable(gl.GL_BLEND)
+
+                # Draw a second polygon in line mode, so the edges are anti-aliased
+                gl.glPolygonMode(gl.GL_FRONT_AND_BACK,gl.GL_LINE)
+                gl.glBegin(gl.GL_TRIANGLE_FAN)
+                gl.glVertex3f(p.position[0], p.position[1], 0.0)
+                angles = Numeric.arange(p.num_triangles)/float(p.num_triangles)*2.0*math.pi
+                verts = Numeric.zeros( (p.num_triangles,2), Numeric.Float )
+                verts[:,0] = p.position[0] + p.radius * Numeric.cos(angles)
+                verts[:,1] = p.position[1] + p.radius * Numeric.sin(angles)
+                for i in range(verts.shape[0]):
+                    gl.glVertex2fv(verts[i])
+                gl.glVertex2fv(verts[0])
+                gl.glEnd() # GL_TRIANGLE_FAN
+
+                # Set the polygon mode back to fill mode
+                gl.glPolygonMode(gl.GL_FRONT_AND_BACK,gl.GL_FILL)
+                gl.glDisable(gl.GL_LINE_SMOOTH)
+
diff --git a/VisionEgg/ParameterTypes.py b/VisionEgg/ParameterTypes.py
new file mode 100644
index 0000000..41de650
--- /dev/null
+++ b/VisionEgg/ParameterTypes.py
@@ -0,0 +1,415 @@
+# The Vision Egg: ParameterTypes
+#
+# Copyright (C) 2001-2003 Andrew Straw
+# Copyright (C) 2005,2008 California Insitute of Technology
+#
+# URL: <http://www.visionegg.org/>
+#
+# Distributed under the terms of the GNU Lesser General Public License
+# (LGPL). See LICENSE.TXT that came with this file.
+
+"""
+Type checking for the Vision Egg.
+
+"""
+
+import VisionEgg
+
+import types, warnings
+import numpy
+import numpy.oldnumeric as numpyNumeric
+
+array_types = [numpy.ndarray]
+# Allow use of numarray and original Numeric Texture data without requiring either
+try:
+    import numarray
+    array_types.append( numarray.numarraycore.NumArray )
+except ImportError:
+    pass
+try:
+    import Numeric as orig_Numeric
+    array_types.append( orig_Numeric.ArrayType )
+except ImportError:
+    pass
+
+class ParameterTypeDef(object):
+    """Base class for all parameter type definitions"""
+    def verify(value):
+        # override this method with type-checking code
+        raise RuntimeError('must override base class method verify')
+    verify = staticmethod(verify)
+
+def get_all_classes_list(klass):
+    #assert(type(klass) == types.ClassType)
+    result = [klass]
+    for base_klass in klass.__bases__:
+        result.extend(get_all_classes_list(base_klass))
+    return result
+
+def is_parameter_type_def(item_type):
+    if type(item_type) == types.ClassType:
+        if Sequence in get_all_classes_list(item_type):
+            raise TypeError("Sequence definition must be an instance (with a contained type).")
+        else:
+            return ParameterTypeDef in get_all_classes_list(item_type)
+    elif isinstance(item_type,ParameterTypeDef):
+        return True
+    elif issubclass(item_type,ParameterTypeDef): # for new style classes
+        return True
+    elif item_type == types.NoneType:
+        warnings.warn("types.NoneType will stop being a supported type "+\
+                      "argument.  Please call "+\
+                      "VisionEgg.ParameterTypes.get_type(None) to get the "+\
+                      "supported value",DeprecationWarning,stacklevel=2)
+        return True
+    else:
+        return False
+
+class AnyOf(ParameterTypeDef):
+    def __init__(self,*item_types):
+        for item_type in item_types:
+            if not is_parameter_type_def(item_type):
+                raise TypeError("%s is not a valid type definition")
+        self.item_types = item_types
+    def __str__(self):
+        return 'AnyOf(%s)'%(' or '.join(map(str,self.item_types)))
+    def verify(self,is_any_of):
+        for item_type in self.item_types:
+            if item_type.verify(is_any_of):
+                return True
+        return False
+    def get_item_types(self):
+        return self.item_types
+
+class NoneMC(type):
+    """metaclass for NoneType"""
+    def __str__(self):
+        return 'None'
+
+class NoneType(ParameterTypeDef):
+    __metaclass__ = NoneMC
+    def verify(is_none):
+        return is_none is None
+    verify = staticmethod(verify)
+
+class BooleanMC(type):
+    """metaclass for Boolean"""
+    def __str__(self):
+        return 'Boolean'
+
+class Boolean(ParameterTypeDef):
+    __metaclass__ = BooleanMC
+    def verify(is_boolean):
+        if isinstance(is_boolean,(bool,int,numpy.integer)):
+            return True
+        else:
+            return False
+    verify = staticmethod(verify)
+
+class CallableMC(type):
+    """metaclass for Callable"""
+    def __str__(self):
+        return 'Callable'
+
+class Callable(ParameterTypeDef):
+    __metaclass__ = CallableMC
+    def verify(is_callable):
+        return callable(is_callable)
+    verify = staticmethod(verify)
+
+class AnyClassMC(type):
+    """metaclass for AnyClass"""
+    def __str__(self):
+        return 'AnyClass'
+
+class AnyClass(ParameterTypeDef):
+    """parameter is a class"""
+    __metaclass__ = AnyClassMC
+    def verify(is_class):
+        return type(is_class) == types.ClassType
+    verify = staticmethod(verify)
+
+class SubClass(ParameterTypeDef):
+    """parameter is derived from base_class"""
+    def __init__(self,base_class):
+        if type(base_class) != types.ClassType:
+            raise TypeError("base_class must be ClassType")
+        self.base_class = base_class
+    def verify(self,is_class):
+        if type(self.base_class) != types.ClassType:
+            return False
+        return self.base_class in get_all_classes_list(is_class)
+    def __str__(self):
+        return 'SubClass of %s'%str(self.base_class)
+
+class Instance(ParameterTypeDef):
+    """parameter is an instance of class_type"""
+    def __init__(self,class_type):
+        if type(class_type) not in (types.ClassType, types.TypeType):
+            raise TypeError("expected a class type")
+        self.class_type = class_type
+    def __str__(self):
+        contained_string = str(self.class_type)
+        return 'Instance of %s'%contained_string
+    def verify(self,is_instance):
+        return isinstance(is_instance,self.class_type)
+
+class IntegerMC(type):
+    """metaclass for Integer"""
+    def __str__(self):
+        return 'Integer'
+
+class Integer(ParameterTypeDef):
+    __metaclass__ = IntegerMC
+    def verify(is_integer):
+        return isinstance(is_integer,(int,numpy.integer))
+    verify = staticmethod(verify)
+
+class UnsignedIntegerMC(IntegerMC):
+    """metaclass for UnsignedInteger"""
+    def __str__(self):
+        return 'UnsignedInteger'
+
+class UnsignedInteger(Integer):
+    __metaclass__ = UnsignedIntegerMC
+    def verify(is_unsigned_integer):
+        if not Integer.verify(is_unsigned_integer):
+            return False
+        return is_unsigned_integer >= 0
+    verify = staticmethod(verify)
+
+class RealMC(type):
+    """metaclass for Real"""
+    def __str__(self):
+        return 'Real'
+
+class Real(ParameterTypeDef):
+    __metaclass__ = RealMC
+    def verify(is_real):
+        if isinstance(is_real, (int, float, numpy.floating, numpy.integer)):
+            return True
+        elif type(is_real) in array_types:
+            # scalars can be Numeric arrays
+            if len(is_real.shape)==0:
+                try:
+                    float(is_real)
+                    return True
+                except:
+                    return False
+        return False
+    verify = staticmethod(verify)
+
+class Sequence(ParameterTypeDef):
+    """A tuple, list or Numeric array"""
+    def __init__(self,item_type):
+        if not is_parameter_type_def(item_type):
+            raise TypeError("%s is not a valid type definition"%item_type)
+        self.item_type = item_type
+    def __str__(self):
+        contained_string = str(self.item_type)
+        return 'Sequence of %s'%contained_string
+    def verify(self,is_sequence):
+        try:
+            len(is_sequence)
+        except TypeError:
+            return False
+        for i in xrange(len(is_sequence)):
+            if not self.item_type.verify(is_sequence[i]):
+                return False
+        return True
+
+class Sequence2(Sequence):
+    def __str__(self):
+        contained_string = str(self.item_type)
+        return 'Sequence2 of %s'%contained_string
+    def verify(self,is_sequence2):
+        if not Sequence.verify(self,is_sequence2):
+            return False
+        if not len(is_sequence2) == 2:
+            return False
+        return True
+
+class Sequence3(Sequence):
+    def __str__(self):
+        contained_string = str(self.item_type)
+        return 'Sequence3 of %s'%contained_string
+    def verify(self,is_sequence3):
+        if not Sequence.verify(self,is_sequence3):
+            return False
+        if not len(is_sequence3) == 3:
+            return False
+        return True
+
+class Sequence4(Sequence):
+    def __str__(self):
+        contained_string = str(self.item_type)
+        return 'Sequence4 of %s'%contained_string
+    def verify(self,is_sequence4):
+        if not Sequence.verify(self,is_sequence4):
+            return False
+        if not len(is_sequence4) == 4:
+            return False
+        return True
+
+class Sequence4x4(Sequence4):
+    def __str__(self):
+        contained_string = str(self.item_type)
+        return 'Sequence4x4 of %s'%contained_string
+    def verify(self,is_sequence4x4):
+        try:
+            len(is_sequence4x4)
+        except TypeError:
+            return False
+        if not len(is_sequence4x4) == 4:
+            return False
+        for i in range(4):
+            if not Sequence4.verify(self,is_sequence4x4[i]):
+                return False
+        return True
+
+class StringMC(type):
+    """metaclass for String"""
+    def __str__(self):
+        return 'String'
+
+class String(ParameterTypeDef):
+    __metaclass__ = StringMC
+    def verify(is_string):
+        if isinstance(is_string,str):
+            return True
+        else:
+            return False
+    verify = staticmethod(verify)
+
+class UnicodeMC(type):
+    """metaclass for Unicode"""
+    def __str__(self):
+        return 'Unicode'
+
+class Unicode(ParameterTypeDef):
+    __metaclass__ = UnicodeMC
+    def verify(is_unicode):
+        if isinstance(is_unicode,unicode):
+            return True
+        else:
+            return False
+    verify = staticmethod(verify)
+
+def get_type(value):
+    """Take a value and return best guess of ParameterTypeDef it is."""
+    py_type = type(value)
+
+    if isinstance(value,bool):
+        return Boolean
+    elif value is None:
+        return NoneType
+    elif isinstance(value,(int,numpy.integer)):
+        if py_type >= 0:
+            return UnsignedInteger
+        else:
+            return Integer
+    elif isinstance(value,(float,numpy.floating)):
+        return Real
+    elif py_type == types.InstanceType:
+        # hmm, impossible to figure out appropriate class of all possible base classes
+        return Instance(value.__class__)
+    elif callable(value):
+        return Callable
+    elif isinstance(value,str):
+        return String
+    elif isinstance(value,unicode):
+        return Unicode
+    else:
+        try:
+            len(value)
+        except TypeError:
+            is_sequence = False
+        else:
+            is_sequence = True
+        if is_sequence:
+            if len(value) == 4:
+                # see if it's a 4x4 sequence
+                is_sequence4x4 = True
+                for i in range(4):
+                    try:
+                        len(value[i])
+                    except TypeError:
+                        is_sequence4x4 = False
+                if is_sequence4x4:
+                    sequence4x4_type = get_type(value[0][0]) # XXX assume all same types
+                    return Sequence4x4(sequence4x4_type)
+            if type(value) == str:
+                return String
+            lcd_type = get_type(value[0]) # lowest common denominator type
+            for i in range(len(value)):
+                this_type = get_type(value[i])
+                if lcd_type != this_type:
+                    # find lowest common denominator type
+                    if lcd_type.verify( this_type ):
+                        continue # covered by lowest common denominator
+                    elif this_type.verify( lcd_type ):
+                        lcd_type = this_type # new lowest common denominator
+                    else:
+                        lcd_type = AnyOf( lcd_type, this_type ) # make new lowest common denominator
+            sequence_type = lcd_type
+            if len(value) == 2:
+                return Sequence2(sequence_type)
+            elif len(value) == 3:
+                return Sequence3(sequence_type)
+            elif len(value) == 4:
+                return Sequence4(sequence_type)
+            else:
+                return Sequence(sequence_type)
+    # finally, one last check:
+    if isinstance(value, object):
+        # new style class
+        # hmm, impossible to figure out appropriate class of all possible base classes
+        return Instance(value.__class__)
+    else:
+        raise TypeError("Unable to determine type for '%s'"%value)
+
+def assert_type(check_type,require_type):
+    if not is_parameter_type_def(check_type):
+        raise ValueError("require a ParameterTypeDef as argument (not %s)"%check_type)
+    if not is_parameter_type_def(require_type):
+        raise ValueError("require a ParameterTypeDef as argument (not %s)"%require_type)
+    if check_type == require_type:
+        return
+
+    if check_type in (Integer,UnsignedInteger) and require_type == Boolean:
+        return # let integers pass as booleans
+    # XXX doesn't check if Instance is actually instance of proper class
+    if isinstance(check_type,ParameterTypeDef):
+        check_class = check_type.__class__
+    else:
+        check_class = check_type
+
+    if isinstance(require_type,ParameterTypeDef):
+        if isinstance(require_type,AnyOf):
+            passed = False
+            for ok_type in require_type.get_item_types():
+                try:
+                    assert_type(check_type, ok_type )
+                    return # it's ok
+                except:
+                    pass
+            raise TypeError("%s not of type %s"%(check_type,require_type))
+        else:
+            require_class = require_type.__class__
+    else:
+        require_class = require_type
+
+    if require_class in get_all_classes_list(check_class):
+        return
+
+    if issubclass(require_class,Real):
+        if issubclass(check_class,Boolean):
+            return
+        elif issubclass(check_class,Integer):
+            return
+
+    if issubclass(require_class,Integer):
+        if issubclass(check_class,Boolean):
+            return
+
+    raise TypeError("%s not of type %s"%(check_type,require_type))
diff --git a/VisionEgg/PlatformDependent.py b/VisionEgg/PlatformDependent.py
new file mode 100644
index 0000000..e466b87
--- /dev/null
+++ b/VisionEgg/PlatformDependent.py
@@ -0,0 +1,253 @@
+# The Vision Egg: PlatformDependent
+#
+# Copyright (C) 2001-2003 Andrew Straw.
+# Copyright (C) 2008 California Institute of Technology
+#
+# URL: <http://www.visionegg.org/>
+#
+# Distributed under the terms of the GNU Lesser General Public License
+# (LGPL). See LICENSE.TXT that came with this file.
+
+"""
+Implementations of functions which vary by platform.
+
+"""
+
+####################################################################
+#
+#        Import all the necessary packages
+#
+####################################################################
+
+import logging
+
+import sys, os
+import VisionEgg
+import VisionEgg.Core
+
+import VisionEgg.GL as gl # get all OpenGL stuff in one namespace
+
+def set_priority(*args,**kw):
+    """Set the priority of the Vision Egg application.
+
+    Defaults to maximum priority, but can be changed via keyword
+    arguments.
+
+    Raises an exception on failure.
+    """
+
+    # potential keywords
+    parse_me = ["darwin_realtime_period_denom",
+                "darwin_realtime_computation_denom",
+                "darwin_realtime_constraint_denom",
+                "darwin_realtime_preemptible",
+                "darwin_maxpriority_conventional_not_realtime",
+                "darwin_conventional_priority",
+                "darwin_pthread_priority"]
+
+    logger = logging.getLogger('VisionEgg.PlatformDependent')
+    params = {}
+
+    # set variable in local namespace
+    for word in parse_me:
+        # set the value from VisionEgg.config
+        config_name = "VISIONEGG_"+word.upper()
+        if hasattr(VisionEgg.config,config_name):
+            value = getattr(VisionEgg.config,config_name)
+        else:
+            value = None
+        # override default value if present in keyword arguments
+        if word in kw.keys():
+            value = kw[word]
+        if value is not None:
+            params[word] = value
+
+    if sys.platform == 'darwin':
+
+        # Everything to support realtime in Apple Mac OS X is based on
+        # the following two things:
+        #
+        # 1) http://developer.apple.com/techpubs/macosx/Darwin/General/KernelProgramming/scheduler/Using_Mach__pplications.html
+        #
+        # 2) The Mac OS X port of the Esound daemon.
+
+        import darwin_maxpriority
+
+        if params['darwin_maxpriority_conventional_not_realtime']:
+            process = darwin_maxpriority.PRIO_PROCESS
+            policy = darwin_maxpriority.SCHED_RR
+
+            logger.info("Setting max priority mode for darwin platform "
+                        "using conventional priority %d."%(
+                        params['darwin_conventional_priority'],))
+
+            # set the priority of the current process
+            darwin_maxpriority.setpriority(process,0,params['darwin_conventional_priority'])
+
+            # This sets the pthread priority, which only prioritizes
+            # threads in the process.  Might as well do it, but it
+            # shouldn't matter unless we're running multi-threaded.
+            darwin_pthread_priority = params['darwin_pthread_priority']
+            if darwin_pthread_priority == "max": # should otherwise be an int
+                darwin_pthread_priority = darwin_maxpriority.sched_get_priority_max(policy)
+
+            if darwin_maxpriority.set_self_pthread_priority(policy,
+                                                            darwin_pthread_priority) == -1:
+                raise RuntimeError("set_self_pthread failed.")
+
+        else:
+            bus_speed = darwin_maxpriority.get_bus_speed()
+            logger.info("Setting max priority mode for darwin platform "
+                        "using realtime threads. ( period = %d / %d, "
+                        "computation = %d / %d, constraint = %d / %d, "
+                        "preemptible = %d )" % (
+                        bus_speed, params['darwin_realtime_period_denom'],
+                        bus_speed, params['darwin_realtime_computation_denom'],
+                        bus_speed, params['darwin_realtime_constraint_denom'],
+                        params['darwin_realtime_preemptible'] ))
+            period = bus_speed / params['darwin_realtime_period_denom']
+            computation = bus_speed / params['darwin_realtime_computation_denom']
+            constraint = bus_speed / params['darwin_realtime_constraint_denom']
+            preemptible = params['darwin_realtime_preemptible']
+
+            darwin_maxpriority.set_self_thread_time_constraint_policy( period, computation, constraint, preemptible )
+    elif sys.platform == 'win32':
+        import win32_maxpriority
+        logger.info("Setting priority for win32 platform to "
+                    "HIGH_PRIORITY_CLASS, THREAD_PRIORITY_HIGHEST. "
+                    "(This is Microsoft's maximum recommended priority, "
+                    "but you could still raise it higher.)")
+        win32_maxpriority.set_self_process_priority_class(
+            win32_maxpriority.HIGH_PRIORITY_CLASS )
+        win32_maxpriority.set_self_thread_priority(
+            win32_maxpriority.THREAD_PRIORITY_HIGHEST)
+
+    elif sys.platform.startswith('irix') or sys.platform.startswith('linux') or sys.platform.startswith('posix'):
+        import posix_maxpriority
+        policy = posix_maxpriority.SCHED_FIFO
+        max_priority = posix_maxpriority.sched_get_priority_max( policy )
+        logger.info("Setting priority for POSIX-compatible platform to "
+                    "policy SCHED_FIFO and priority to "
+                    "%d"%max_priority)
+        posix_maxpriority.set_self_policy_priority( policy, max_priority ) # Fails if you don't have permission (try running as root)
+        posix_maxpriority.stop_memory_paging()
+    else:
+        raise RuntimeError("Cannot change priority.  Unknown platform '%s'"%sys.platform)
+
+def linux_but_unknown_drivers():
+    """Warn that platform is linux, but drivers not known."""
+    # If you've added support for other drivers to sync with VBLANK under
+    # linux, please let me know how!
+    logger = logging.getLogger('VisionEgg.PlatformDependent')
+    logger.warning("Could not sync buffer swapping to vblank because "
+                   "you are running linux but not known/supported "
+                   "drivers (only nVidia and recent Mesa DRI Radeon "
+                   "currently supported).")
+
+def sync_swap_with_vbl_pre_gl_init():
+    """Try to synchronize buffer swapping and vertical retrace before starting OpenGL."""
+    success = 0
+    if sys.platform.startswith("linux"):
+        # Unfotunately, cannot check do glGetString(GL_VENDOR) to
+        # check if drivers are nVidia because we have to do that requires
+        # OpenGL context started, but this variable must be set
+        # before OpenGL context started!
+
+        # Assume drivers are nVidia or recent ATI
+        VisionEgg.Core.add_gl_assumption("__SPECIAL__","linux_nvidia_or_new_ATI",linux_but_unknown_drivers)
+        # Set for nVidia linux
+        os.environ["__GL_SYNC_TO_VBLANK"] = "1"
+        # Set for recent linux Mesa DRI Radeon
+        os.environ["LIBGL_SYNC_REFRESH"] = "1"
+        success = 1
+    elif sys.platform.startswith("irix"):
+        # I think this is set using the GLX swap_control SGI
+        # extension.  A C extension could be to be written to change
+        # this value. (It probably cannot be set through an OpenGL
+        # extension or an SDL/pygame feature.)
+        logger = logging.getLogger('VisionEgg.PlatformDependent')
+        logger.info("IRIX platform detected, assuming retrace sync.")
+    return success
+
+def sync_swap_with_vbl_post_gl_init():
+    """Try to synchronize buffer swapping and vertical retrace after starting OpenGL."""
+    success = 0
+    try:
+        if sys.platform == "win32":
+            import OpenGL.WGL.EXT.swap_control
+            if OpenGL.WGL.EXT.swap_control.wglInitSwapControlARB(): # Returns 1 if it's working
+                OpenGL.WGL.EXT.swap_control.wglSwapIntervalEXT(1) # Swap only at frame syncs
+                if OpenGL.WGL.EXT.swap_control.wglGetSwapIntervalEXT() == 1:
+                    success = 1
+        elif sys.platform == "darwin":
+            try:
+                import _darwin_sync_swap
+                _darwin_sync_swap.sync_swap()
+                success = 1
+            except Exception,x:
+                logger = logging.getLogger('VisionEgg.PlatformDependent')
+                logger.warning("Failed trying to synchronize buffer "
+                               "swapping on darwin: %s: %s"%(str(x.__class__),str(x)))
+    except:
+        pass
+
+    return success
+
+def query_refresh_rate(screen):
+    if sys.platform == 'win32':
+        import win32_getrefresh
+        return win32_getrefresh.getrefresh()
+    elif sys.platform == 'darwin':
+        import darwin_getrefresh
+        return darwin_getrefresh.getrefresh()
+    else:
+        raise NotImplementedError("Platform dependent code to query frame rate not implemented on this platform.")
+
+def attempt_to_load_multitexturing():
+    """Attempt to load multitexturing functions and constants.
+
+    Inserts the results into the gl module, which makes them globally
+    available."""
+    logger = logging.getLogger('VisionEgg.PlatformDependent')
+    try:
+        import ctypes
+        if sys.platform.startswith('linux'):
+            libGL = ctypes.cdll.LoadLibrary('/usr/lib/libGL.so')
+        elif sys.platform == 'win32':
+            libGL = ctypes.cdll.LoadLibrary('opengl32.dll')
+        else:
+            raise NotImplementedError("ctypes support not added for this platform")
+
+        # make sure libGL has the appropriate functions
+        libGL.glGetString.restype = ctypes.c_char_p
+        vers = libGL.glGetString( ctypes.c_int( gl.GL_VERSION ) )
+        logger.debug("ctypes loaded OpenGL %s"%vers)
+
+        gl.glActiveTexture = libGL.glActiveTexture
+        gl.glActiveTexture.argtypes = [ctypes.c_int]
+
+        gl.glMultiTexCoord2f = libGL.glMultiTexCoord2f
+        gl.glMultiTexCoord2f.argtypes = [ctypes.c_int, ctypes.c_float, ctypes.c_float]
+
+        # assign constants found by looking at gl.h
+        gl.GL_TEXTURE0 = 0x84C0
+        gl.GL_TEXTURE1 = 0x84C1
+
+        logger.debug("ctypes loaded OpenGL library and multitexture names "
+                     "are present.  Workaround appears successful. ")
+    except Exception, x:
+        logger.debug("ctypes loading of OpenGL library failed %s: "
+                     "%s"%(x.__class__, str(x)))
+
+        if VisionEgg.Core.init_gl_extension('ARB','multitexture'):
+            # copy from extenstion
+            gl.glActiveTexture = gl.glActiveTextureARB
+            gl.glMultiTexCoord2f = gl.glMultiTexCoord2fARB
+            gl.GL_TEXTURE0 = gl.GL_TEXTURE0_ARB
+            gl.GL_TEXTURE1 = gl.GL_TEXTURE1_ARB
+            logger.debug("loaded multitexturing ARB extension")
+        else:
+            logger.warning("multitexturing not available after trying "
+                           "ctypes and the OpenGL ARB extension. Some "
+                           "features will not be available")
+
diff --git a/VisionEgg/PyroApps/AST_ext.py b/VisionEgg/PyroApps/AST_ext.py
new file mode 100644
index 0000000..42281e2
--- /dev/null
+++ b/VisionEgg/PyroApps/AST_ext.py
@@ -0,0 +1,208 @@
+## Automatically adapted for numpy.oldnumeric Jun 18, 2007 by alter_code1.py
+
+# The Vision Egg: AST_ext
+#
+# Copyright (C) 2004 Imran S. Ali, Lachlan Dowd
+#
+# Authors: Imran S. Ali, Lachlan Dowd
+# URL: <http://www.visionegg.org/>
+#
+# Distributed under the terms of the GNU Lesser General Public License
+# (LGPL). See LICENSE.TXT that came with this file.
+#
+# $Id$
+
+# This "AST extensions" module works for Python 2.2.1
+# Because the structure of code trees changes with different Python versions, this module may not work with some
+# previous Python releases, or future releases.
+
+import pprint
+import parser
+import symbol
+import token
+import tokenize
+import sys
+
+# Hopefully, the node ID numbers in the name sequence is all that
+# needs to be changed in order to get this module working with
+# different Python release versions.
+
+name_sequence = [292, 293, 294, 295, 297, 298, 299, 300, 301, 302,
+303, 304, 305]
+
+# Method for generating an AST sub tree (in list form) suitable for a
+def gen_assign_val_subtree(assign_val, assign_val_type):
+    name_sequence.reverse()
+    sublist = []
+    if assign_val_type == 2:
+        sublist = [2, '%(assign_val)d' % vars()]
+    elif assign_val_type == 1:
+        sublist = [2, '%(assign_val)f' % vars()]
+    elif assign_val_type == 3:
+        sublist = [3, '"%(assign_val)s"' % vars()]
+    for val in name_sequence[0:len(name_sequence) - 1]:
+        sublist = [val, sublist]
+    name_sequence.reverse()
+    return sublist
+
+
+class AST_Visitor:
+    def __init__(self, modifying_AST):
+        # Flags:
+
+        # Checking assignment name (ie. "x = ..." where we are
+        # checking if 'x' == 'assign_name'):
+        self.checking_assign_name = 0
+
+        # Setting assignment value (we are changing a found occurrence
+        # of "assign_name = x" to "assign_name = assign_val"):
+        self.setting_assign_val = 0
+
+        # Index of where the AST visitor is currently at in the
+        # 'name_sequence' defined earlier:
+        self.name_seq_index = 0
+
+        # AST visitor expects a subtree associated with
+        # assignment/"=":
+        self.expecting_equals = 0
+
+        # Extracting assignment value (we are extracting the 'x' from
+        # a found occurrence of "assign_name = x"):
+        self.extracting_assign_val = 0
+
+        # Extracted assignment value:
+        self.extracted_val = "not found"
+
+        # Are we modifying an AST? Otherwise we're extracting
+        # information from an AST:
+        self.modifying_AST = modifying_AST
+
+    def traverse(self, AST_sublist, assign_name, assign_val_subtree):
+
+        # If we have a single element (terminating leaf node):
+        if type(AST_sublist) != list:
+            return AST_sublist
+
+        # If we have a sub tree of the form [x, [....]]:
+        elif len(AST_sublist) == 2:
+
+            # If we are somewhere in the 'name_sequence' defined
+            # earlier: [292, [293, [294, [295, [297, [298, [299, [300,
+            # [301, [302, [303, [304, [305, ...
+
+            if self.name_seq_index > 0:
+                # If we are at the end of the 'name_sequence':
+                if self.name_seq_index == len(name_sequence) - 1 and AST_sublist[0] == name_sequence[self.name_seq_index]:
+                    if len(AST_sublist[1]) == 3:
+                        if self.extracting_assign_val == 1:
+                            extracted_val = AST_sublist[1][1]
+                            self.extracted_val = extracted_val
+                            self.extracting_assign_val = 0
+                        else:
+                            # Enter new mode: AST visitor will check
+                            # the name associated with the
+                            # 'name_sequence' to see if it will match
+                            # 'assign_name':
+                            self.checking_assign_name = 1
+                    self.name_seq_index = 0
+
+                else:
+                    expected_val = name_sequence[self.name_seq_index]
+                    if AST_sublist[0] == expected_val:
+                        # Update position in 'name_sequence':
+                        self.name_seq_index = self.name_seq_index + 1
+                    else:
+                        self.name_seq_index = 0
+                return AST_sublist[0:1] + [self.traverse(AST_sublist[1], assign_name, assign_val_subtree)]
+
+            # Else we are in some arbitrary sequence:
+            # [a, [b, [c, [d, [e, [...
+            else:
+                # If we are at the start of the 'name_sequence':
+                if AST_sublist[0] == 292:
+                    if self.setting_assign_val == 1:
+                        AST_sublist[1] = assign_val_subtree
+                        self.setting_assign_val = 0
+                    else:
+                        # Enter new mode: AST visitor will check to
+                        # see if we are progressing through the
+                        # 'name_sequence' defined earlier:
+                        self.name_seq_index = 1
+                    return AST_sublist[0:1] + [self.traverse(AST_sublist[1], assign_name, assign_val_subtree)]
+                else:
+                    return AST_sublist[0:1] + [self.traverse(AST_sublist[1], assign_name, assign_val_subtree)]
+
+        # If we have a sub tree with 3 parent nodes:
+        elif len(AST_sublist) == 3:
+
+            # If the second parent node is a single element
+            # (terminating leaf node):
+            if type(AST_sublist[1]) != list:
+                # If the current AST visitor mode is set to checking
+                # for equality with "assign_name" (ie. "x = ..." where
+                # we are checking if 'x' == 'assign_name')::
+                if self.checking_assign_name == 1:
+                    # If 'x' == 'assign_name' (see above):
+                    if AST_sublist[1] == assign_name:
+                        # Enter new mode: AST visitor will check to
+                        # see if the current sub tree is associated
+                        # with assignment/"=":
+                        self.expecting_equals = 1
+                    self.checking_assign_name = 0
+
+                # If the current AST visitor mode is set to check if
+                # the current sub tree is associated with
+                # assignment/"=":
+                elif self.expecting_equals == 1:
+                    # If the current AST sub tree is associated with
+                    # assignment/"=":
+                    if AST_sublist[1] == '=':
+                        if self.modifying_AST == 1:
+                            # Enter new mode: AST visitor will change
+                            # the assignment value to
+                            # "assign_val_subtree":
+                            self.setting_assign_val = 1
+                        elif self.modifying_AST == 0:
+                            # Enter new mode: AST visitor will extract
+                            # the assignment value of "assign_name":
+                            self.extracting_assign_val = 1
+                    self.expecting_equals = 0
+
+                return AST_sublist[0:2]
+
+        # If we are somewhere within the 'name_sequence':
+        if self.name_seq_index > 0 or self.name_seq_index < len(name_sequence) - 1:
+            # If the AST visitor is extracting the value of "assign_name":
+            if self.extracting_assign_val == 1:
+                self.extracted_val = "compound"
+                self.extracting_assign_val = 0
+
+
+        # For all other types of sub trees, AST visitor will traverse
+        # in a depth first search pattern:
+        sub_list = []
+        for x in AST_sublist:
+            sub_list = sub_list + [self.traverse(x, assign_name, assign_val_subtree)]
+        return sub_list
+
+def modify_AST(myAST, assign_name, assign_val):
+    myAST_Visitor = AST_Visitor(1)
+    old_AST_list = myAST.tolist(1)
+    assign_val_type = 0
+    if isinstance(assign_val, int):
+        assign_val_type = 2
+    elif isinstance(assign_val, float):
+        assign_val_type = 1
+    elif type(assign_val) == str:
+        assign_val_type = 3
+    new_AST_list = myAST_Visitor.traverse(old_AST_list, assign_name, gen_assign_val_subtree(assign_val, assign_val_type))
+    myNewAST = parser.sequence2ast(new_AST_list)
+    return myNewAST
+
+# Extract the assigned value of a variable from an AST. Retains the type.
+def extract_from_AST(myAST, assign_name):
+    myAST_Visitor = AST_Visitor(0)
+    old_AST_list = myAST.tolist(1)
+    new_AST_list = myAST_Visitor.traverse(old_AST_list, assign_name, 0)
+    return myAST_Visitor.extracted_val
+
diff --git a/VisionEgg/PyroApps/ColorCalGUI.py b/VisionEgg/PyroApps/ColorCalGUI.py
new file mode 100644
index 0000000..81c573c
--- /dev/null
+++ b/VisionEgg/PyroApps/ColorCalGUI.py
@@ -0,0 +1,87 @@
+#!/usr/bin/env python
+#
+# The Vision Egg: ColorCalGUI
+#
+# Copyright (C) 2001-2003 Andrew Straw.
+# Author: Andrew Straw <astraw at users.sourceforge.net>
+# URL: <http://www.visionegg.org/>
+#
+# Distributed under the terms of the GNU Lesser General Public License
+# (LGPL). See LICENSE.TXT that came with this file.
+#
+# $Id$
+
+"""Handle luminance and color calibration stimulus (client-side)"""
+
+import VisionEgg, string
+
+import sys, os
+import Tkinter
+import VisionEgg.PyroApps.EPhysGUIUtils as client_utils
+
+def get_control_list():
+    return [("color_cal_server",ColorCalControlFrame,ColorCalControlFrame.title)]
+
+class ColorCalMetaParameters:
+    def __init__(self):
+        self.color = (1.0, 1.0, 1.0, 0.0)
+
+class ColorCalControlFrame(client_utils.StimulusControlFrame):
+    title = "Color Calibration"
+    def __init__(self, master=None, suppress_go_buttons=0,**kw):
+        client_utils.StimulusControlFrame.__init__(self,
+                                                   master,
+                                                   suppress_go_buttons,
+                                                   ColorCalControlFrame.title,
+                                                   ColorCalMetaParameters,
+                                                   **kw)
+
+        param_frame = self.param_frame # shorthand for self.param_frame created in base class
+
+        # Allow columns to expand
+        param_frame.columnconfigure(0,weight=1)
+        param_frame.columnconfigure(1,weight=1)
+
+        pf_row = 0
+        Tkinter.Label(param_frame,text="Red:").grid(row=pf_row,column=0)
+        self.red_tk_var = Tkinter.DoubleVar()
+        self.red_tk_var.set(self.meta_params.color[0])
+        self.make_callback_entry(textvariable=self.red_tk_var).grid(row=pf_row,column=1)
+
+        pf_row += 1
+        Tkinter.Label(param_frame,text="Green:").grid(row=pf_row,column=0)
+        self.green_tk_var = Tkinter.DoubleVar()
+        self.green_tk_var.set(self.meta_params.color[1])
+        self.make_callback_entry(textvariable=self.green_tk_var).grid(row=pf_row,column=1)
+
+        pf_row += 1
+        Tkinter.Label(param_frame,text="Blue:").grid(row=pf_row,column=0)
+        self.blue_tk_var = Tkinter.DoubleVar()
+        self.blue_tk_var.set(self.meta_params.color[2])
+        self.make_callback_entry(textvariable=self.blue_tk_var).grid(row=pf_row,column=1)
+
+    def get_shortname(self):
+        return "color_cal"
+
+    def update_tk_vars(self):
+        self.red_tk_var.set( self.meta_params.color[0] )
+        self.green_tk_var.set( self.meta_params.color[1] )
+        self.blue_tk_var.set( self.meta_params.color[2] )
+
+    def send_values(self,dummy_arg=None):
+        self.meta_params.color =  ( self.red_tk_var.get(),
+                                    self.green_tk_var.get(),
+                                    self.blue_tk_var.get(),
+                                    0.0 )
+
+        if self.connected:
+            self.meta_controller.set_parameters( self.meta_params )
+
+    def get_duration_sec(self):
+        return 0.0
+
+if __name__=='__main__':
+    frame = ColorCalControlFrame()
+    frame.pack(expand=1,fill=Tkinter.BOTH)
+    frame.winfo_toplevel().title("%s"%(os.path.basename(os.path.splitext(sys.argv[0])[0]),))
+    frame.mainloop()
diff --git a/VisionEgg/PyroApps/ColorCalServer.py b/VisionEgg/PyroApps/ColorCalServer.py
new file mode 100644
index 0000000..2a06c52
--- /dev/null
+++ b/VisionEgg/PyroApps/ColorCalServer.py
@@ -0,0 +1,89 @@
+#!/usr/bin/env python
+#
+# The Vision Egg: ColorCalServer
+#
+# Copyright (C) 2001-2003 Andrew Straw.
+# Author: Andrew Straw <astraw at users.sourceforge.net>
+# URL: <http://www.visionegg.org/>
+#
+# Distributed under the terms of the GNU Lesser General Public License
+# (LGPL). See LICENSE.TXT that came with this file.
+#
+# $Id$
+
+"""Handle luminance and color calibration stimulus (server-side)"""
+
+import VisionEgg, string
+
+import sys, os, math
+import VisionEgg.Core
+import VisionEgg.FlowControl
+import VisionEgg.PyroHelpers
+import Pyro.core
+import pygame, pygame.locals
+
+from VisionEgg.PyroApps.ColorCalGUI import ColorCalMetaParameters
+
+class ColorCalMetaController( Pyro.core.ObjBase ):
+    def __init__(self,screen,presentation,stimuli):
+        Pyro.core.ObjBase.__init__(self)
+        self.meta_params = ColorCalMetaParameters()
+        if not isinstance(screen,VisionEgg.Core.Screen):
+            raise ValueError("Expecting instance of VisionEgg.Core.Screen")
+        if not isinstance(presentation,VisionEgg.FlowControl.Presentation):
+            raise ValueError("Expecting instance of VisionEgg.FlowControl.Presentation")
+
+        self.screen = screen
+        self.p = presentation
+
+        self.update() # set stimulus parameters to initial defaults
+
+    def get_parameters(self):
+        return self.meta_params
+
+    def set_parameters(self, new_parameters):
+        if isinstance(new_parameters, ColorCalMetaParameters):
+            self.meta_params = new_parameters
+        else:
+            raise ValueError("Argument to set_parameters must be instance of ColorCalMetaParameters")
+        self.update()
+
+    def update(self):
+        self.screen.parameters.bgcolor = self.meta_params.color
+
+    def go(self):
+        pass
+
+    def quit_server(self):
+        self.p.parameters.quit = 1
+
+def get_meta_controller_class():
+    return ColorCalMetaController
+
+def make_stimuli():
+    return []
+
+def get_meta_controller_stimkey():
+    return "color_cal_server"
+
+# Don't do anything unless this script is being run
+if __name__ == '__main__':
+
+    pyro_server = VisionEgg.PyroHelpers.PyroServer()
+
+    screen = VisionEgg.Core.Screen.create_default()
+
+    # get Vision Egg stimulus ready to go
+    p = VisionEgg.FlowControl.Presentation()
+
+    stimuli = make_stimuli()
+
+    # now hand over control of grating and mask to FlatGratingExperimentMetaController
+    meta_controller = ColorCalMetaController(screen,p,stimuli)
+    pyro_server.connect(meta_controller,get_meta_controller_stimkey())
+
+    # get listener controller and register it
+    p.add_controller(None,None, pyro_server.create_listener_controller())
+
+    # enter endless loop
+    p.run_forever()
diff --git a/VisionEgg/PyroApps/DropinGUI.py b/VisionEgg/PyroApps/DropinGUI.py
new file mode 100644
index 0000000..089a489
--- /dev/null
+++ b/VisionEgg/PyroApps/DropinGUI.py
@@ -0,0 +1,133 @@
+# The Vision Egg: DropinGUI
+#
+# Copyright (C) 2004 Imran S. Ali, Lachlan Dowd, Andrew Straw
+# Copyright (C) 2004 California Institute of Technology
+#
+# Authors: Imran S. Ali, Lachlan Dowd, Andrew Straw
+# URL: <http://www.visionegg.org/>
+#
+# Distributed under the terms of the GNU Lesser General Public License
+# (LGPL). See LICENSE.TXT that came with this file.
+#
+# $Id$
+
+import VisionEgg, string
+import sys, os
+import Tkinter
+import tkMessageBox
+import VisionEgg.PyroApps.VarTypes as VarTypes
+import VisionEgg.PyroApps.EPhysGUIUtils as client_utils
+
+def get_control_list():
+   return [("dropin_server",DropinControlFrame,DropinControlFrame.title)]
+
+class DropinMetaParameters:
+   def __init__(self):
+      self.vars_list = []
+
+class DropinControlFrame(client_utils.StimulusControlFrame):
+   title = "Vision Egg Script"
+
+   def __init__(self, master=None, suppress_go_buttons=0,**kw):
+      client_utils.StimulusControlFrame.__init__(self,
+                                                 master,
+                                                 suppress_go_buttons,
+                                                 DropinControlFrame.title,
+                                                 DropinMetaParameters,
+                                                 **kw)
+
+      param_frame = self.param_frame # shorthand for self.param_frame created in base class
+      param_frame.columnconfigure(0,weight=1)
+      param_frame.columnconfigure(1,weight=1)
+      self.vars_list = []
+      self.error_names = []
+
+   def get_shortname(self):
+      return "dropin"
+
+   def update_tk_vars(self):
+      pass
+
+
+   def send_values(self,dummy_arg=None):
+
+      self.meta_params.vars_list = []
+      self.error_names = []
+
+      if self.vars_list is None:
+         return 0
+
+      for var in self.vars_list:
+         if len(var) == 3:
+            var_type = var[0]
+            var_name = var[1]
+            var_val_holder = var[2]
+            var_val = var_val_holder.get()
+            try:
+               if var_val == "compound":
+                  pass
+               else:
+                  if VarTypes.getType(var_type) == "float":
+                     var_typed_val = float(var_val)
+                  elif VarTypes.getType(var_type) == "integer":
+                     var_typed_val = int(float(var_val))
+                  elif VarTypes.getType(var_type) == "string":
+                     var_typed_val = var_val
+                  else:
+                     raise ValueError()
+                  self.meta_params.vars_list.append([var_name, var_typed_val])
+            except ValueError:
+               self.error_names.append(var_name)
+
+
+
+      if len(self.error_names) == 0:
+         self.meta_controller.set_parameters( self.meta_params )
+         return 1
+      else:
+         all_error_names = "Invalid value(s) for the following variable(s):\n"
+         for error_name in self.error_names:
+            all_error_names = all_error_names + error_name + "\n"
+         tkMessageBox.showerror("Invalid value(s)", all_error_names)
+         return 0
+
+   def get_duration_sec(self):
+      # XXX not implemented yet
+      return -1
+
+   # Creates the variable Entry and Label widgets:
+   def gen_var_widgets(self, demoscript_filename, vars_list):
+      self.vars_list = vars_list
+      param_frame = self.param_frame # shorthand for self.param_frame created in base class
+      if demoscript_filename is None:
+         label = "No demo file loaded"
+      else:
+         label = demoscript_filename
+      Tkinter.Label(param_frame,
+                    text=label,
+                    font=("Helvetica",8,"bold")).grid(row=0,columnspan=2)
+      row_num = 1
+
+      if self.vars_list is None:
+         return
+      for var in self.vars_list:
+         var_label = Tkinter.Label(param_frame,text=var[1]).grid(row=row_num,column=0)
+         # Create a Tkinter string variable holder:
+         var_val_holder = Tkinter.StringVar()
+         # Set to its value:
+         var_val_holder.set(var[2])
+         # Create (indirectly) Entry widgets:
+         # Render variables which were "not found" as non-modifiable for user:
+         if var[2] == "not found":
+            self.make_callback_entry(textvariable=var_val_holder, state="disabled").grid(row=row_num,column=1)
+            del var[2]
+         else:
+            self.make_callback_entry(textvariable=var_val_holder).grid(row=row_num,column=1)
+            var[2] = var_val_holder
+         row_num = row_num + 1
+
+if __name__=='__main__':
+   frame = DropinControlFrame()
+   frame.pack(expand=1,fill=Tkinter.BOTH)
+   frame.winfo_toplevel().title("%s"%(os.path.basename(os.path.splitext(sys.argv[0])[0]),))
+   frame.mainloop()
diff --git a/VisionEgg/PyroApps/DropinServer.py b/VisionEgg/PyroApps/DropinServer.py
new file mode 100644
index 0000000..eb77f95
--- /dev/null
+++ b/VisionEgg/PyroApps/DropinServer.py
@@ -0,0 +1,58 @@
+# The Vision Egg: DropinServer
+#
+# Copyright (C) 2004 Imran S. Ali, Lachlan Dowd, Andrew Straw
+# Copyright (C) 2004 California Institute of Technology
+#
+# Authors: Imran S. Ali, Lachlan Dowd, Andrew Straw
+# URL: <http://www.visionegg.org/>
+#
+# Distributed under the terms of the GNU Lesser General Public License
+# (LGPL). See LICENSE.TXT that came with this file.
+#
+# $Id$
+
+import VisionEgg, string
+
+import sys, os, math
+import VisionEgg.Core
+import VisionEgg.FlowControl
+import VisionEgg.Textures
+import VisionEgg.SphereMap
+import VisionEgg.PyroHelpers
+import Pyro.core
+
+from VisionEgg.PyroApps.ScreenPositionServer import ScreenPositionMetaController
+from VisionEgg.PyroApps.ScreenPositionGUI import ScreenPositionParameters
+from VisionEgg.PyroApps.DropinGUI import DropinMetaParameters
+
+class DropinMetaController( Pyro.core.ObjBase ):
+    def __init__(self,screen,presentation,stimuli):
+        Pyro.core.ObjBase.__init__(self)
+        self.meta_params = DropinMetaParameters()
+        self.p = presentation
+        print 'DropinMetaController presentation',self.p
+
+    def get_parameters(self):
+        return self.meta_params
+
+    def set_parameters(self, new_parameters):
+        self.meta_params = new_parameters
+        self.update()
+
+    def update(self):
+        pass
+
+    def go(self):
+        self.p.parameters.enter_go_loop = 1
+
+    def quit_server(self):
+        self.p.parameters.quit = 1
+
+def get_meta_controller_class():
+    return DropinMetaController
+
+def make_stimuli():
+    pass
+
+def get_meta_controller_stimkey():
+    return "dropin_server"
diff --git a/VisionEgg/PyroApps/EPhysGUI.py b/VisionEgg/PyroApps/EPhysGUI.py
new file mode 100755
index 0000000..505b553
--- /dev/null
+++ b/VisionEgg/PyroApps/EPhysGUI.py
@@ -0,0 +1,1804 @@
+#!/usr/bin/env python
+#
+# The Vision Egg: EPhysGUI
+#
+# Copyright (C) 2001-2004 Andrew Straw.
+# Copyright (C) 2004 Imran S. Ali, Lachlan Dowd
+# Copyright (C) 2004, 2008 California Institute of Technology
+#
+# Author: Andrew Straw <astraw at users.sourceforge.net>
+# URL: <http://www.visionegg.org/>
+#
+# Distributed under the terms of the GNU Lesser General Public License
+# (LGPL). See LICENSE.TXT that came with this file.
+#
+
+import VisionEgg
+
+import sys, socket, re, time, string, types, os
+import parser, symbol, token, compiler
+import pickle, random, math, threading
+import Tkinter, tkMessageBox, tkSimpleDialog, tkFileDialog
+import StringIO
+import Pyro
+import numpy
+
+import VisionEgg
+import VisionEgg.PyroClient
+import VisionEgg.PyroApps.ScreenPositionGUI
+import VisionEgg.GUI
+import VisionEgg.ParameterTypes as ve_types
+
+# Add your client modules here
+import VisionEgg.PyroApps.TargetGUI
+import VisionEgg.PyroApps.MouseTargetGUI
+import VisionEgg.PyroApps.FlatGratingGUI
+import VisionEgg.PyroApps.SphereGratingGUI
+import VisionEgg.PyroApps.SpinningDrumGUI
+import VisionEgg.PyroApps.GridGUI
+import VisionEgg.PyroApps.ColorCalGUI
+
+import VisionEgg.PyroApps.DropinGUI
+import VisionEgg.PyroApps.AST_ext as AST_ext
+import VisionEgg.PyroApps.VarTypes as VarTypes
+
+client_list = []
+client_list.extend( VisionEgg.PyroApps.TargetGUI.get_control_list() )
+client_list.extend( VisionEgg.PyroApps.MouseTargetGUI.get_control_list() )
+client_list.extend( VisionEgg.PyroApps.FlatGratingGUI.get_control_list() )
+client_list.extend( VisionEgg.PyroApps.SphereGratingGUI.get_control_list() )
+client_list.extend( VisionEgg.PyroApps.SpinningDrumGUI.get_control_list() )
+client_list.extend( VisionEgg.PyroApps.GridGUI.get_control_list() )
+client_list.extend( VisionEgg.PyroApps.ColorCalGUI.get_control_list() )
+client_list.extend( VisionEgg.PyroApps.DropinGUI.get_control_list() )
+
+class ContainedObjectBase:
+    """Base class to encapsulate objects, provides useful methods when used in GUI"""
+    def __init__(self):
+        raise RuntimeError("Abstract base class!")
+    def get_str_30(self):
+        return "**** this is a generic str_30 ****"
+    def get_contained(self):
+        return self.contained
+    header = "unknown parameters"
+
+class ScrollListFrame(Tkinter.Frame):
+    def __init__(self,master=None,list_of_contained_objects=None,contained_objectbject_maker=None,
+                 container_class=ContainedObjectBase,
+                 **cnf):
+        Tkinter.Frame.__init__(self, master, **cnf)
+        if list_of_contained_objects is None:
+            self.list = []
+        else:
+            self.list = list_of_contained_objects
+        self.container_class = container_class
+
+        # allow column to expand
+        self.columnconfigure(0,weight=1)
+
+        # The frame that has the list and the vscroll
+        self.frame = Tkinter.Frame(self,borderwidth=2)
+        self.frame.grid(row=0,sticky="nwes")
+
+        # allow column to expand
+        self.frame.columnconfigure(0,weight=1)
+
+        self.frame.vscroll = Tkinter.Scrollbar(self.frame,orient=Tkinter.VERTICAL)
+        self.frame.hscroll = Tkinter.Scrollbar(self.frame,orient=Tkinter.HORIZONTAL)
+        self.frame.title = Tkinter.Listbox(
+            self.frame,
+            relief=Tkinter.FLAT,
+            font=('courier',10,'bold'),
+            height=1,
+#            selectbackground='#eed5b7',
+#            selectborderwidth=0,
+#            selectmode=None,
+            exportselection=0)
+        self.frame.title.insert(Tkinter.END, self.container_class.header)
+        self.frame.list = Tkinter.Listbox(
+            self.frame,
+            relief=Tkinter.SUNKEN,
+            font=('courier',10,'normal'),
+            width=40, height=10,
+            selectbackground='#eed5b7',
+            selectborderwidth=0,
+            selectmode=Tkinter.BROWSE,
+            xscroll=self.frame.hscroll.set,
+            yscroll=self.frame.vscroll.set,
+            exportselection=0)
+
+        self.frame.hscroll['command'] = self.delegate_hscroll
+        self.frame.hscroll.grid(row=3,column=0,sticky='we')
+        self.frame.vscroll['command'] = self.frame.list.yview
+        self.frame.vscroll.grid(row=2,column=1,sticky='ns')
+        self.frame.title.grid(row=1,column=0,ipady=0,pady=0,sticky='we')
+        self.frame.list.grid(row=2,column=0,sticky='nwes')
+        self.frame.list.bind('<Double-Button-1>',self.edit_selected)
+
+        # The buttons on bottom
+        self.bar = Tkinter.Frame(self,borderwidth=2)
+        self.bar.grid(row=1,sticky="we")
+        self.bar.add = Tkinter.Button(self.bar,text='Add...',command=self.add_new)
+        self.bar.add.grid(row=0,column=0,sticky='we')
+        self.bar.edit = Tkinter.Button(self.bar,text='Edit...',command=self.edit_selected)
+        self.bar.edit.grid(row=0,column=1,sticky='we')
+        self.bar.remove = Tkinter.Button(self.bar,text='Remove',command=self.remove_selected)
+        self.bar.remove.grid(row=0,column=2,sticky='we')
+        self.bar.move_up = Tkinter.Button(self.bar,text='Up',command=self.move_selected_up)
+        self.bar.move_up.grid(row=0,column=3,sticky='we')
+        self.bar.move_down = Tkinter.Button(self.bar,text='Down',command=self.move_selected_down)
+        self.bar.move_down.grid(row=0,column=4,sticky='we')
+        self.bar.tk_menuBar(self.bar.add,self.bar.remove)
+        #Lachie- My bar for setting parent
+        self.bar.merge = Tkinter.Button(self.bar,text='Merge/Unmerge',command=self.make_merge)
+        self.bar.merge.grid(row=0,column=5,sticky='we')
+        self.bar.tk_menuBar(self.bar.add,self.bar.remove)
+        self.update_now()
+
+    def list2D_coordinates(self, main_index, main_list):
+        # This is a function for finding the 2-d
+        # list coordinates of an element which may be inside a
+        # list-nested-list.
+        # eg. if x = [[e, e, e], [e], [e, e]]
+        # Then the coordinates of the element at index 4 is: (2, 0)
+        #
+        # Initialization:
+        i = -1
+        j = -1
+        element_count = 0
+        # Main body:
+        for nested_list in main_list:
+            j = -1
+            i = i + 1
+            for element in nested_list:
+                j = j + 1
+                element_count = element_count + 1
+                if (element_count - 1) == main_index:
+                    return [i, j]
+        # Unsuccessful exit:
+        return [-1, -1]
+
+    def delegate_hscroll(self,*args,**kw):
+        self.frame.title.xview(*args,**kw)
+        self.frame.list.xview(*args,**kw)
+
+    def get_list_uncontained(self):
+        results = []
+        for contained_object_item in self.list:
+            #results.append( contained_object_item.get_contained() )
+            results.append( contained_object_item )
+        return results
+
+    def update_now(self):
+        self.frame.list.delete(0,Tkinter.END)
+        max_len = 0
+        for loop_container in self.list:
+            for loop in loop_container:
+                item_str_30 = loop.get_str_30()
+                max_len = max(max_len,len(item_str_30))
+                self.frame.list.insert(Tkinter.END,item_str_30)
+            self.frame.list.insert(Tkinter.END,"")
+        self.frame.title.delete(0,Tkinter.END)
+        self.frame.title.insert(Tkinter.END, self.container_class.header.ljust(max_len))
+
+    def add_new(self):
+        contained_object = self.make_contained_object(self.container_class)
+        if contained_object:
+            self.list.append( [contained_object] )
+        self.update_now()
+
+    def edit_selected(self,dummy_arg=None):
+        selected = self.get_selected()
+        # Get 2-D list coordinates of selected object of class "LoopContainedObject":
+        loop_coordinates = self.list2D_coordinates(selected, self.list)
+        main_list_index = loop_coordinates[0]
+        loop_list_index = loop_coordinates[1]
+        if selected is not None:
+            if len(self.list[main_list_index]) == 1:
+                orig_contained_object = self.list[main_list_index][loop_list_index]
+                modified_contained_object = self.edit_contained_object( orig_contained_object )
+                if modified_contained_object is not None: # "Cancel" press results in None
+                    self.list[main_list_index][loop_list_index] = modified_contained_object
+                self.update_now()
+            else:
+                tkMessageBox.showerror("Cannot edit this variable", "This variable needs to be isolated/unmerged")
+
+    def remove_selected(self):
+        selected = self.get_selected()
+        # Get 2-D list coordinates of selected object of class "LoopContainedObject":
+        loop_coordinates = self.list2D_coordinates(selected, self.list)
+        main_list_index = loop_coordinates[0]
+        loop_list_index = loop_coordinates[1]
+        if selected is not None:
+            del self.list[main_list_index][loop_list_index]
+            if self.list[main_list_index] == []:
+                del self.list[main_list_index]
+            self.update_now()
+
+    def move_selected_up(self,dummy_arg=None):
+        selected = self.get_selected()
+        # Get 2-D list coordinates of selected object of class "LoopContainedObject":
+        loop_coordinates = self.list2D_coordinates(selected, self.list)
+        main_list_index = loop_coordinates[0]
+        loop_list_index = loop_coordinates[1]
+        new_selected_index = selected
+        if selected is not None:
+            # If the selected variable is first in its "loop_list":
+            if loop_list_index == 0:
+                # If not the first "loop_list":
+                if main_list_index != 0:
+                    # Then we move up the entire "loop_list":
+                    selected_loop_list = self.list[main_list_index]
+                    del self.list[main_list_index]
+                    new_main_list_index = main_list_index - 1
+                    self.list.insert(new_main_list_index, selected_loop_list)
+                    new_selected_index = selected - len(self.list[main_list_index])
+                    self.update_now()
+
+            # Else we just move up a variable within a "loop_list":
+            else:
+                selected_loop_container = self.list[main_list_index][loop_list_index]
+                del self.list[main_list_index][loop_list_index]
+                new_loop_list_index = loop_list_index - 1
+                self.list[main_list_index].insert(new_loop_list_index, selected_loop_container)
+                new_selected_index = selected - 1
+                self.update_now()
+
+            new_selected_index = self.map_to_listbox_index(new_selected_index)
+            self.frame.list.selection_set(new_selected_index)
+
+    def move_selected_down(self,dummy_arg=None):
+        selected = self.get_selected()
+        # Get 2-D list coordinates of selected object of class "LoopContainedObject":
+        loop_coordinates = self.list2D_coordinates(selected, self.list)
+        main_list_index = loop_coordinates[0]
+        loop_list_index = loop_coordinates[1]
+        new_selected_index = selected
+        if selected is not None:
+            # If the selected variable is last in its "loop_list":
+            if loop_list_index == (len(self.list[main_list_index]) - 1):
+                # If not the last "loop_list":
+                if main_list_index != (len(self.list) - 1):
+                    # Then we move down the entire "loop_list":
+                    selected_loop_list = self.list[main_list_index]
+                    del self.list[main_list_index]
+                    new_main_list_index = main_list_index + 1
+                    self.list.insert(new_main_list_index, selected_loop_list)
+                    new_selected_index = selected + len(self.list[main_list_index])
+                    self.update_now()
+
+            # Else we just move down a variable within a "loop_list":
+            #elif loop_list_index != (len(self.list[main_list_index]) - 1):
+            else:
+                selected_loop_container = self.list[main_list_index][loop_list_index]
+                del self.list[main_list_index][loop_list_index]
+                new_loop_list_index = loop_list_index + 1
+                self.list[main_list_index].insert(new_loop_list_index, selected_loop_container)
+                new_selected_index = selected + 1
+                self.update_now()
+            #else:
+                #tkMessageBox.showerror("Cannot move this variable down", "Select unmerge instead")
+
+            new_selected_index = self.map_to_listbox_index(new_selected_index)
+            self.frame.list.selection_set(new_selected_index)
+
+
+
+
+
+
+
+    def make_merge(self):
+        # Notes:
+        # "self.list" is a list of lists, each of which, a
+        # "loop_list", contains "LoopContainedObject" class objects:
+        # eg. [[a], [b, c], [d]]
+        selected = self.get_selected()
+
+        merge_error = 0
+        merge_error_msg = ""
+
+        # The purpose of this function is to "merge" selected objects of class
+        # "LoopContainedObject" into a preceding list:
+        # eg. [[a], [b, c], [d]] => [[a], [b, c, d]]]
+        # where selected 'd' was "merged" into preceding list.
+        # Note, this function can also perform the reverse, provided that the
+        # the selected object of class "LoopContainedObject" is the LAST one
+        # in its "loop_list".
+        # Supported cases:
+        # [[a], [b*, c], [d]] => [[a, b, c], [d]] merge
+        # [[a], [b, c*], [d]] => [[a], [b], [c, d]] unmerge
+        # Unsupported cases:
+        # [[a], [b, c*, d], [e]] => cannot unmerge!
+
+        # Get 2-D list coordinates of selected object of class "LoopContainedObject":
+        loop_coordinates = self.list2D_coordinates(selected, self.list)
+        main_list_index = loop_coordinates[0]
+        loop_list_index = loop_coordinates[1]
+
+        # Checking that an item is actually selected:
+        if selected is not None:
+
+            selected_loop_list = self.list[main_list_index]
+            selected_loop_container = selected_loop_list[loop_list_index]
+            preceding_loop_container = self.list[main_list_index - 1][0]
+
+            # Trying to perform merge?
+            if loop_list_index == 0:
+
+                # Ensure selected "LoopContainerObject" is not in first "loop_list":
+                if main_list_index > 0:
+
+                    # Can only carry out merge if "Loop" object sequence lengths are
+                    # the same length within a "loop_list":
+                    if len(selected_loop_container.contained.parameters.sequence) == len(preceding_loop_container.contained.parameters.sequence):
+
+                        # Perform the merge. All variables that are currently merged with the selected variable,
+                        # are merged with the new variable(s) as well.
+                        i = 0
+                        max_index = len(selected_loop_list)
+                        while i < max_index:
+                            dummy_loop_container = selected_loop_list[0]
+                            del self.list[main_list_index][0]
+                            self.list[main_list_index - 1].append(dummy_loop_container)
+                            i = i + 1
+
+                        # Remove the selected "loop_list" if it is now empty:
+                        if self.list[main_list_index] == []:
+                            del self.list[main_list_index]
+
+                    else:
+                        merge_error = 1
+                        merge_error_msg = "Cannot merge variables with different sequence lengths"
+
+                else:
+                    merge_error = 3
+                    #merge_error_msg = "Variable is at the top level"
+
+            # Trying to perform an "unmerge":
+            else:
+
+                # Ensure selected "LoopContainerObject" is last object in its "loop_list":
+                if loop_list_index == (len(selected_loop_list) - 1):
+
+                    # Perform the unmerge:
+                    del self.list[main_list_index][loop_list_index]
+                    self.list.insert((main_list_index + 1), [selected_loop_container])
+
+                else:
+                    merge_error = 2
+                    merge_error_msg = "Unmerge lowest variable in this cluster first"
+
+        if merge_error == 1:
+            tkMessageBox.showerror("Cannot perform merge", merge_error_msg)
+        elif merge_error == 2:
+            tkMessageBox.showerror("Cannot perform unmerge", merge_error_msg)
+        elif merge_error == 3:
+            # non critical errors
+            pass
+        else:
+            #debugger:
+            #print len(self.list)
+            #print ""
+            #for x in self.list:
+            #    print len(x)
+            #print "--------------"
+            self.update_now()
+
+
+
+    def make_contained_object(self, container_class):
+        """Factory function for ContainedObjectBase"""
+        if container_class == LoopContainedObject:
+            return self.make_loop_contained_object()
+        params = {}
+        p = container_class.contained_class.parameters_and_defaults
+        keys = p.keys()
+        keys.sort()
+        for pname in keys:
+            if p[pname][1] == ve_types.String:
+                params[pname] = tkSimpleDialog.askstring(pname,pname,initialvalue=p[pname][0])
+            elif p[pname][1] == ve_types.Integer:
+                params[pname] = tkSimpleDialog.askinteger(pname,pname,initialvalue=p[pname][0])
+            elif p[pname][1] == ve_types.Real:
+                params[pname] = tkSimpleDialog.askfloat(pname,pname,initialvalue=p[pname][0])
+            elif p[pname][1] == ve_types.Sequence:
+                params[pname] = eval("["+tkSimpleDialog.askstring(pname,pname,initialvalue="1,2,3")+"]")
+                if type(params[pname]) is not types.ListType:
+                    raise ValueError("You must enter a list in the form of '[1,2,3]'")
+            else:
+                raise NotImplementedError("Don't know about type %s"%(p[pname][1],))
+            if params[pname] is None:
+                raise RuntimeError("Input cancelled")
+        contained = container_class.contained_class(**params) # call constructor
+        return container_class(contained)
+
+    def edit_contained_object(self, contained_object):
+        if not isinstance(contained_object,LoopContainedObject):
+            raise NotImplementedError("")
+        orig_contained = contained_object.get_contained()
+        d = LoopParamDialog(self, title="Loop Parameters", orig_values=orig_contained )
+        if d.result:
+            return LoopContainedObject(d.result)
+        else:
+            return
+
+    def make_loop_contained_object(self):
+        d = LoopParamDialog(self, title="Loop Parameters" )
+        if d.result:
+            return LoopContainedObject(d.result)
+        else:
+            return
+
+    # Returns index of selected item ignoring blank listbox entries:
+    # eg. if listbox had:
+    #
+    # 0 a
+    # 1 b
+    # 2
+    # 3 c
+    # 4 d
+    #
+    # Then the index of element 'c' would be 2
+    def get_selected(self):
+        items = self.frame.list.curselection()
+        try:
+            items = map(int, items)
+
+        except ValueError: pass
+        if len(items) > 0:
+            selected_item_index = items[0]
+            if self.frame.list.get(selected_item_index) != "":
+                blankentrycount = 0
+                i = 0
+                while i < selected_item_index:
+                    if self.frame.list.get(i) == "":
+                        blankentrycount = blankentrycount + 1
+                    i = i + 1
+                return (selected_item_index - blankentrycount)
+
+        return None
+
+
+    # Performs reverse of above:
+    # eg. if listbox had:
+    #
+    # 0 a
+    # 1 b
+    # 2
+    # 3 c
+    # 4 d
+    #
+    # Then "mapping" of given index 2 would result in return value of 3
+    def map_to_listbox_index(self, index):
+        validentrycount = 0
+        i = 0
+        while i < self.frame.list.size():
+            if self.frame.list.get(i) != "":
+                validentrycount = validentrycount + 1
+            if validentrycount == (index + 1):
+                return i
+            i = i + 1
+        return -1
+###################################################
+
+class Loop(VisionEgg.ClassWithParameters):
+    parameters_and_defaults = {'variable':('<repeat>',
+                                           ve_types.String),
+                               'sequence':([1, 1, 1],
+                                           ve_types.Sequence(ve_types.Real)),
+                               'rest_duration_sec':(1.0,
+                                                    ve_types.Real)}
+    __slots__ = (
+        'num_done',
+        )
+
+
+    def __init__(self,**kw):
+        VisionEgg.ClassWithParameters.__init__(self,**kw)
+        self.num_done = 0
+    def is_done(self):
+        return self.num_done >= len(self.parameters.sequence)
+    def get_current(self):
+        return self.parameters.sequence[self.num_done]
+    def advance(self):
+        self.num_done += 1
+    def reset(self):
+        self.num_done = 0
+
+class LoopContainedObject(ContainedObjectBase):
+    """Container for Loop class"""
+    contained_class = Loop
+    header = "     variable    rest   N  values"
+    def __init__(self,contained):
+        self.contained = contained
+    def get_str_30(self):
+        p = self.contained.parameters
+        seq_str = ""
+        for val in p.sequence:
+            seq_str += str(val) + " "
+        name_str = p.variable
+        if len(name_str) > 15:
+            name_str = name_str[:15]
+        return "% 15s % 4s % 4d  % 4s"%(name_str, str(p.rest_duration_sec), len(p.sequence), seq_str)
+
+class LoopParamDialog(tkSimpleDialog.Dialog):
+    def __init__(self,*args,**kw):
+        #intercept orig_values argument
+        if kw.has_key('orig_values'):
+            self.orig_values = kw['orig_values']
+            del kw['orig_values']
+        else:
+            self.orig_values = None
+        return tkSimpleDialog.Dialog.__init__(self, *args, **kw )
+
+    def body(self,master):
+        Tkinter.Label(master,
+                      text="Add sequence of automatic variable values",
+                      font=("Helvetica",12,"bold"),).grid(row=0,column=0,columnspan=2)
+
+        var_frame = Tkinter.Frame(master,
+                                  relief=Tkinter.GROOVE,
+                                  borderwidth=2)
+        var_frame.grid(row=1,column=0)
+
+        sequence_frame = Tkinter.Frame(master)
+        sequence_frame.grid(row=1,column=1)
+
+        rest_dur_frame = Tkinter.Frame(master)
+        rest_dur_frame.grid(row=2,column=0,columnspan=2)
+
+        # loopable variable frame stuff
+        global loopable_variables
+        num_cols = int(math.ceil(len(loopable_variables)/10.0)) # 10 variables per column
+
+        var_frame_row = 0
+        Tkinter.Label(var_frame,
+                      text="Select a variable",
+                      font=("Helvetica",12,"bold"),).grid(row=var_frame_row,
+                                                          column=0,
+                                                          columnspan=num_cols)
+
+        self.var_name = Tkinter.StringVar()
+        self.var_name.set("<repeat>")
+        var_names = loopable_variables[:] # copy
+        var_names.sort()
+
+        var_frame_row += 1
+        Tkinter.Radiobutton( var_frame,
+                     text="Repeat (Average)",
+                     variable=self.var_name,
+                     value="<repeat>",
+                     anchor=Tkinter.W).grid(row=var_frame_row,
+                                            column=0,
+                                            sticky="w")
+        var_frame_row += 1
+        for var_name in var_names:
+            use_row = var_frame_row%10+1
+            Tkinter.Radiobutton( var_frame,
+                                 text=var_name,
+                                 variable=self.var_name,
+                                 value=var_name,
+                                 anchor=Tkinter.W).grid(row=use_row,
+                                                        column=int(math.floor(var_frame_row/10.)),
+                                                        sticky="w")
+            var_frame_row += 1
+
+        # sequence entry frame
+        seq_row = 0
+        Tkinter.Label(sequence_frame,
+                      text="Sequence values",
+                      font=("Helvetica",12,"bold"),).grid(row=seq_row,column=0,columnspan=2)
+
+        seq_row += 1
+        self.sequence_type = Tkinter.StringVar()
+        self.sequence_type.set("manual")
+
+        Tkinter.Radiobutton( sequence_frame,
+                     text="Manual:",
+                     variable=self.sequence_type,
+                     value="manual",
+                     anchor=Tkinter.W).grid(row=seq_row,column=0,sticky="w")
+
+        self.sequence_manual_string = Tkinter.StringVar()
+        self.sequence_manual_string.set("[1,2,3]")
+        Tkinter.Entry(sequence_frame,
+                      textvariable=self.sequence_manual_string).grid(row=seq_row,column=1)
+
+        seq_row += 1
+        Tkinter.Radiobutton( sequence_frame,
+                     text="Linear:",
+                     variable=self.sequence_type,
+                     value="linear",
+                     anchor=Tkinter.W).grid(row=seq_row,column=0,sticky="w")
+
+        self.lin_start_tk = Tkinter.DoubleVar()
+        self.lin_start_tk.set(1.0)
+        self.lin_stop_tk = Tkinter.DoubleVar()
+        self.lin_stop_tk.set(100.0)
+        self.lin_n_tk = Tkinter.IntVar()
+        self.lin_n_tk.set(3)
+
+        lin_frame = Tkinter.Frame( sequence_frame)
+        lin_frame.grid(row=seq_row,column=1)
+        Tkinter.Label(lin_frame,text="start:").grid(row=0,column=0)
+        Tkinter.Entry(lin_frame,textvariable=self.lin_start_tk,width=6).grid(row=0,column=1)
+        Tkinter.Label(lin_frame,text="  stop:").grid(row=0,column=2)
+        Tkinter.Entry(lin_frame,textvariable=self.lin_stop_tk,width=6).grid(row=0,column=3)
+        Tkinter.Label(lin_frame,text="  N:").grid(row=0,column=4)
+        Tkinter.Entry(lin_frame,textvariable=self.lin_n_tk,width=6).grid(row=0,column=5)
+
+        seq_row += 1
+        Tkinter.Radiobutton( sequence_frame,
+                     text="Log:",
+                     variable=self.sequence_type,
+                     value="log",
+                     anchor=Tkinter.W).grid(row=seq_row,column=0,sticky="w")
+
+        self.log_start_tk = Tkinter.DoubleVar()
+        self.log_start_tk.set(-1.0)
+        self.log_stop_tk = Tkinter.DoubleVar()
+        self.log_stop_tk.set(2.0)
+        self.log_n_tk = Tkinter.IntVar()
+        self.log_n_tk.set(5)
+
+        log_frame = Tkinter.Frame( sequence_frame)
+        log_frame.grid(row=seq_row,column=1)
+        Tkinter.Label(log_frame,text="start: 10^").grid(row=0,column=0)
+        Tkinter.Entry(log_frame,textvariable=self.log_start_tk,width=6).grid(row=0,column=1)
+        Tkinter.Label(log_frame,text="  stop: 10^").grid(row=0,column=2)
+        Tkinter.Entry(log_frame,textvariable=self.log_stop_tk,width=6).grid(row=0,column=3)
+        Tkinter.Label(log_frame,text="  N:").grid(row=0,column=4)
+        Tkinter.Entry(log_frame,textvariable=self.log_n_tk,width=6).grid(row=0,column=5)
+
+        seq_row += 1
+        Tkinter.Radiobutton( sequence_frame,
+                     text="Log:",
+                     variable=self.sequence_type,
+                     value="logb",
+                     anchor=Tkinter.W).grid(row=seq_row,column=0,sticky="w")
+
+        self.logb_start_tk = Tkinter.DoubleVar()
+        self.logb_start_tk.set(0.1)
+        self.logb_stop_tk = Tkinter.DoubleVar()
+        self.logb_stop_tk.set(100.0)
+        self.logb_n_tk = Tkinter.IntVar()
+        self.logb_n_tk.set(5)
+
+        logb_frame = Tkinter.Frame( sequence_frame)
+        logb_frame.grid(row=seq_row,column=1)
+        Tkinter.Label(logb_frame,text="start:").grid(row=0,column=0)
+        Tkinter.Entry(logb_frame,textvariable=self.logb_start_tk,width=6).grid(row=0,column=1)
+        Tkinter.Label(logb_frame,text="  stop:").grid(row=0,column=2)
+        Tkinter.Entry(logb_frame,textvariable=self.logb_stop_tk,width=6).grid(row=0,column=3)
+        Tkinter.Label(logb_frame,text="  N:").grid(row=0,column=4)
+        Tkinter.Entry(logb_frame,textvariable=self.logb_n_tk,width=6).grid(row=0,column=5)
+
+        # rest duration frame
+        Tkinter.Label(rest_dur_frame,
+                      text="Other sequence parameters",
+                      font=("Helvetica",12,"bold"),).grid(row=0,column=0,columnspan=2)
+
+        Tkinter.Label(rest_dur_frame,
+                      text="Interval duration (seconds)").grid(row=1,column=0)
+        self.rest_dur = Tkinter.DoubleVar()
+        self.rest_dur.set(0.5)
+        Tkinter.Entry(rest_dur_frame,
+                      textvariable=self.rest_dur,
+                      width=10).grid(row=1,column=1)
+
+        self.shuffle_tk_var = Tkinter.BooleanVar()
+        self.shuffle_tk_var.set(0)
+        Tkinter.Checkbutton( rest_dur_frame,
+                             text="Shuffle sequence order",
+                             variable=self.shuffle_tk_var).grid(row=2,column=0,columnspan=2)
+
+        if self.orig_values is not None:
+            self.var_name.set( self.orig_values.parameters.variable )
+
+            self.sequence_manual_string.set( str(self.orig_values.parameters.sequence) )
+
+            self.rest_dur.set( self.orig_values.parameters.rest_duration_sec )
+
+
+    def validate(self):
+        if self.sequence_type.get() == "manual":
+            try:
+                seq = eval(self.sequence_manual_string.get())
+            except Exception, x:
+                tkMessageBox.showwarning("Invalid sequence parameters",
+                                         "Manual sequence entry: %s"%(str(x),),
+                                         parent=self)
+                return 0
+            if type(seq) != types.ListType:
+                tkMessageBox.showwarning("Invalid sequence parameters",
+                                         "Manual sequence entry: Not a list",
+                                         parent=self)
+                return 0
+        elif self.sequence_type.get() == "linear":
+            start = self.lin_start_tk.get()
+            stop = self.lin_stop_tk.get()
+            n = self.lin_n_tk.get()
+            if n < 2:
+                tkMessageBox.showwarning("Invalid sequence parameters",
+                                         "Must have n >= 2.",
+                                         parent=self)
+                return 0
+
+            incr = (stop-start)/float(n-1)
+            seq = range(n)
+            for i in range(n):
+                seq[i] = i*incr + start
+        elif self.sequence_type.get() == "log":
+            start = self.log_start_tk.get()
+            stop = self.log_stop_tk.get()
+            n = self.log_n_tk.get()
+            if n < 2:
+                tkMessageBox.showwarning("Invalid sequence parameters",
+                                         "Must have n >= 2.",
+                                         parent=self)
+                return 0
+
+            incr = (stop-start)/float(n-1)
+            seq = range(n)
+            for i in range(n):
+                seq[i] = 10.0**( i*incr + start )
+        elif self.sequence_type.get() == "logb":
+            start = self.logb_start_tk.get()
+            stop = self.logb_stop_tk.get()
+            start = math.log10(start)
+            stop = math.log10(stop)
+            n = self.logb_n_tk.get()
+            if n < 2:
+                tkMessageBox.showwarning("Invalid sequence parameters",
+                                         "Must have n >= 2.",
+                                         parent=self)
+                return 0
+            incr = (stop-start)/float(n-1)
+            seq = range(n)
+            for i in range(n):
+                seq[i] = 10.0**( i*incr + start )
+        else:
+            tkMessageBox.showwarning("Invalid sequence parameters",
+                                     "Invalid sequence type.",
+                                     parent=self)
+            return 0
+        rest_dur_sec = self.rest_dur.get()
+
+        if self.shuffle_tk_var.get():
+            random.shuffle(seq)
+
+        self.result = Loop(variable=self.var_name.get(),
+                           sequence=seq,
+                           rest_duration_sec=rest_dur_sec)
+        return 1
+
+    def destroy(self):
+        # clear tk variables
+        self.var_name = None
+        self.sequence_type = None
+        self.sequence_manual_string = None
+        self.rest_dur = None
+        # call master's destroy method
+        tkSimpleDialog.Dialog.destroy(self)
+
+def get_server(hostname="",port=7766):
+    class ConnectWindow(Tkinter.Frame):
+        def __init__(self,master=None,hostname="",port=7766,**kw):
+            # Allow VisionEgg Tkinter exception window
+            VisionEgg.config._Tkinter_used = True
+
+            Tkinter.Frame.__init__(self,master, **kw)
+            self.winfo_toplevel().title("EPhysGUI Connect - Vision Egg")
+            current_row = 0
+            Tkinter.Message(self,\
+                          text='Welcome to the "EPhys GUI" of the Vision Egg!\n\n'+\
+                          'Please enter the hostname '+\
+                          'and port number '+\
+                          'of the computer on which you have the '+\
+                          '"EPhys server" running.').grid(row=current_row,column=0,columnspan=2)
+            hostname = 'localhost'
+
+            self.hostname_tk = Tkinter.StringVar()
+            self.hostname_tk.set(hostname)
+            current_row += 1
+            Tkinter.Label(self,text="Hostname:").grid(row=current_row, column=0)
+            Tkinter.Entry(self,textvariable=self.hostname_tk).grid(row=current_row, column=1)
+
+            self.port_tk = Tkinter.IntVar()
+            self.port_tk.set(port)
+            current_row += 1
+            Tkinter.Label(self,text="Port:").grid(row=current_row, column=0)
+            Tkinter.Entry(self,textvariable=self.port_tk).grid(row=current_row, column=1)
+
+            current_row += 1
+            bf = Tkinter.Frame(self)
+            bf.grid(row=current_row,column=0,columnspan=2)
+            ok=Tkinter.Button(bf,text="OK",command=self.ok)
+            ok.grid(row=0,column=0)
+            ok.focus_force()
+            ok.bind('<Return>',self.ok)
+            Tkinter.Button(bf,text="Cancel",command=self.quit).grid(row=0,column=1)
+            self.result = None
+
+        def ok(self,dummy_arg=None):
+            self.result = (self.hostname_tk.get(),self.port_tk.get())
+            self.destroy()
+            self.quit()
+
+    connect_win = ConnectWindow(hostname=hostname,port=port)
+    connect_win.pack()
+    connect_win.mainloop()
+    return connect_win.result
+
+class GammaFrame(Tkinter.Frame):
+    def __init__(self,
+                 master=None,
+                 ephys_server=None,**kw):
+        Tkinter.Frame.__init__(self,master,**kw)
+        self.winfo_toplevel().title("Gamma - Vision Egg")
+        self.ephys_server = ephys_server
+
+        self.columnconfigure(0,weight=1)
+
+        row = 0
+        Tkinter.Label(self,
+                      font=("Helvetica",12,"bold"),
+                      text="Load Gamma Table").grid(row=row)
+
+        row += 1
+        Tkinter.Button(self,
+                       text="Set from .ve_gamma file...",
+                       command=self.set_from_file).grid(row=row,sticky="w")
+
+        row += 1
+        Tkinter.Button(self,
+                       text="Set to monitor default (linear gamma table)",
+                       command=self.set_monitor_default).grid(row=row,sticky="w")
+
+        row += 1
+        invert_frame = Tkinter.Frame(self)
+        invert_frame.grid(row=row,sticky="we")
+
+        Tkinter.Button(invert_frame,
+                       text="Linearize luminance for gammas",
+                       command=self.linearize).grid(row=0,column=0)
+
+        Tkinter.Label(invert_frame,
+                      text="Red:").grid(row=0,column=1)
+
+        self.red_gamma = Tkinter.DoubleVar()
+        self.red_gamma.set(2.2)
+
+        Tkinter.Entry(invert_frame,
+                      textvariable=self.red_gamma,
+                      width=5).grid(row=0,column=2)
+
+        Tkinter.Label(invert_frame,
+                      text="Green:").grid(row=0,column=3)
+
+        self.green_gamma = Tkinter.DoubleVar()
+        self.green_gamma.set(2.2)
+
+        Tkinter.Entry(invert_frame,
+                      textvariable=self.green_gamma,
+                      width=5).grid(row=0,column=4)
+
+        Tkinter.Label(invert_frame,
+                      text="Blue:").grid(row=0,column=5)
+
+        self.blue_gamma = Tkinter.DoubleVar()
+        self.blue_gamma.set(2.2)
+
+        Tkinter.Entry(invert_frame,
+                      textvariable=self.blue_gamma,
+                      width=5).grid(row=0,column=6)
+
+        row += 1
+        self.success_label = Tkinter.Label(self)
+        self.success_label.grid(row=row)
+
+    def get_corrected_gamma_table(self,gamma):
+        # c is a constant scale factor.  It is always 1.0 when
+        # luminance is normalized to range [0.0,1.0] and input units
+        # in range [0.0,1.0], as is OpenGL standard.
+        c = 1.0
+        inc = 1.0/255
+        target_luminances = numpy.arange(0.0,1.0+inc,inc)
+        output_ramp = numpy.zeros(target_luminances.shape,dtype=numpy.int32)
+        for i in range(len(target_luminances)):
+            L = target_luminances[i]
+            if L == 0.0:
+                v_88fp = 0
+            else:
+                v = math.exp( (math.log(L) - math.log(c)) /gamma)
+                v_88fp = int(round((v*255) * 256)) # convert to from [0.0,1.0] floating point to [0.0,255.0] 8.8 fixed point
+            output_ramp[i] = v_88fp # 8.8 fixed point format
+        return list(output_ramp) # convert to Python list
+
+    def linearize(self, dummy_arg=None):
+        self.success_label.configure(text="Setting...")
+        try:
+            red = self.get_corrected_gamma_table(self.red_gamma.get())
+            green = self.get_corrected_gamma_table(self.green_gamma.get())
+            blue = self.get_corrected_gamma_table(self.blue_gamma.get())
+        except:
+            self.success_label.configure(text="Calculation error")
+            raise
+        try:
+            if self.ephys_server.set_gamma_ramp(red,green,blue):
+                self.success_label.configure(text="Success")
+            else:
+                self.success_label.configure(text="Failed: Invalid gamma values?")
+        except Exception,x:
+            self.success_label.configure(text="Failed: %s: %s"%(x.__class__,str(x)))
+            raise
+
+    def set_monitor_default(self, dummy_arg=None):
+        self.success_label.configure(text="Setting...")
+        try:
+            red = self.get_corrected_gamma_table(1.0) # linear gamma table
+        except:
+            self.success_label.configure(text="Calculation error")
+            raise
+        green = red
+        blue = red
+        try:
+            if self.ephys_server.set_gamma_ramp(red,green,blue):
+                self.success_label.configure(text="Success")
+            else:
+                self.success_label.configure(text="Failed: Invalid gamma values?")
+        except Exception,x:
+            self.success_label.configure(text="Failed: %s: %s"%(x.__class__,str(x)))
+            raise
+
+    def set_from_file(self):
+        self.success_label.configure(text="Setting...")
+        filename = tkFileDialog.askopenfilename(
+            parent=self,
+            defaultextension=".ve_gamma",
+            filetypes=[('Configuration file','*.ve_gamma')],
+            initialdir=VisionEgg.config.VISIONEGG_USER_DIR)
+        if not filename:
+            self.success_label.configure(text="No file given")
+            return
+        fd = open(filename,"r")
+        gamma_values = []
+        for line in fd.readlines():
+            line = line.strip() # remove leading/trailing whitespace
+            if line.startswith("#"): # comment, ignore
+                continue
+            try:
+                gamma_values.append( map(int, line.split() ) )
+            except Exception, x:
+                self.success_label.configure(text="File error")
+                raise
+            if len(gamma_values[-1]) != 3:
+                self.success_label.configure(text="File error")
+                raise RuntimeError("expected 3 values per gamma entry")
+        if len(gamma_values) != 256:
+            self.success_label.configure(text="File error")
+            raise RuntimeError("expected 256 gamma entries")
+        red, green, blue = zip(*gamma_values)
+        try:
+            if self.ephys_server.set_gamma_ramp(red,green,blue):
+                self.success_label.configure(text="Success")
+            else:
+                self.success_label.configure(text="Failed: Invalid gamma values?")
+        except Exception,x:
+            self.success_label.configure(text="Failed: %s: %s"%(x.__class__,str(x)))
+            raise
+
+class ImageSequenceLauncher(Tkinter.Toplevel):
+    def __init__(self,master=None,ephys_server=None,**cnf):
+        Tkinter.Toplevel.__init__(self,master,**cnf)
+        if ephys_server is None:
+            raise ValueError("Must specify ephys_server")
+        self.ephys_server = ephys_server
+
+        self.columnconfigure(1,weight=1)
+
+        row = 0
+        Tkinter.Label(self,text="Frames per second").grid(row=row,column=0)
+        self.fps_var = Tkinter.DoubleVar()
+        self.fps_var.set(12.0)
+        Tkinter.Entry(self,textvariable=self.fps_var).grid(row=row,column=1,sticky="we")
+        row += 1
+        Tkinter.Label(self,text="Filename base").grid(row=row,column=0)
+        self.filename_base = Tkinter.StringVar()
+        self.filename_base.set("im")
+        Tkinter.Entry(self,textvariable=self.filename_base).grid(row=row,column=1,sticky="we")
+        row += 1
+        Tkinter.Label(self,text="Filename suffix").grid(row=row,column=0)
+        self.filename_suffix = Tkinter.StringVar()
+        self.filename_suffix.set(".tif")
+        Tkinter.Entry(self,textvariable=self.filename_suffix).grid(row=row,column=1,sticky="we")
+        row += 1
+        Tkinter.Label(self,text="Save directory on server").grid(row=row,column=0)
+        self.server_save_dir = Tkinter.StringVar()
+        server_dir = self.ephys_server.get_cwd()
+        self.server_save_dir.set(server_dir)
+        Tkinter.Entry(self,textvariable=self.server_save_dir).grid(row=row,column=1,sticky="we")
+        row += 1
+        Tkinter.Button(self,text="Save movie",command=self.do_it).grid(row=row,column=0,columnspan=2)
+        self.focus_set()
+        self.grab_set()
+    def do_it(self):
+        fps = self.fps_var.get()
+        filename_base = self.filename_base.get()
+        filename_suffix = self.filename_suffix.get()
+        server_save_dir = self.server_save_dir.get()
+        self.ephys_server.save_image_sequence(fps=fps,
+                                              filename_base=filename_base,
+                                              filename_suffix=filename_suffix,
+                                              save_dir=server_save_dir)
+        self.destroy()
+
+class AppWindow(Tkinter.Frame):
+    def __init__(self,
+                 master=None,
+                 client_list=None,
+                 server_hostname='',
+                 server_port=7766,
+                 **cnf):
+
+        if hasattr(VisionEgg, '_exception_hook_keeper'):
+            # Keep original exception handler
+            self._orig_report_callback_exception = Tkinter.Tk.report_callback_exception
+            self._tk = Tkinter.Tk
+            # Use Vision Egg exception handler
+            Tkinter.Tk.report_callback_exception = VisionEgg._exception_hook_keeper.handle_exception
+
+        # Allow VisionEgg Tkinter exception window
+        VisionEgg.config._Tkinter_used = True
+
+        # create myself
+        Tkinter.Frame.__init__(self,master, **cnf)
+        self.winfo_toplevel().title("EPhysGUI - Vision Egg")
+
+        self.client_list = client_list
+
+        self.server_hostname = server_hostname
+        self.server_port = server_port
+
+        self.pyro_client = VisionEgg.PyroClient.PyroClient(self.server_hostname,self.server_port)
+        self.ephys_server = self.pyro_client.get("ephys_server")
+        self.ephys_server.first_connection()
+
+        self.stim_onset_cal_tk_var = Tkinter.BooleanVar()
+        self.stim_onset_cal_tk_var.set(0)
+
+        self.autosave_dir = Tkinter.StringVar()
+        self.autosave_dir.set( os.path.abspath(os.curdir) )
+
+        self.autosave_basename = Tkinter.StringVar()
+
+        # create menu bar
+        self.bar = Tkinter.Menu(tearoff=0)
+        top = self.winfo_toplevel()
+        top.configure(menu=self.bar)
+
+        self.bar.file_menu = Tkinter.Menu(self.bar, name="file_menu")
+        self.bar.add_cascade(label="File",menu=self.bar.file_menu)
+
+        self.bar.file_menu.add_command(label='Save image sequence...', command=self.save_image_sequence)
+        self.bar.file_menu.add_command(label='Save configuration file...', command=self.save_config)
+        self.bar.file_menu.add_command(label='Load configuration file...', command=self.load_config)
+        self.bar.file_menu.add_command(label='Load auto-saved .py parameter file...', command=self.load_params)
+        self.bar.file_menu.add_separator()
+        self.bar.file_menu.add_command(label='Load Vision Egg script...', command=self.load_demoscript)
+        self.bar.file_menu.add_separator()
+
+        self.quit_server_too = Tkinter.BooleanVar()
+        self.quit_server_too.set(1)
+        self.bar.file_menu.add_checkbutton(label='Quit server too',
+                                           variable=self.quit_server_too)
+        self.bar.file_menu.add_command(label='Quit',
+                                       command=self.quit,
+                                       )
+
+        stimkey = self.ephys_server.get_stimkey()
+        self.stimulus_tk_var = Tkinter.StringVar()
+        self.stimulus_tk_var.set( stimkey )
+
+        self.bar.stimuli_menu = Tkinter.Menu(self.bar, name="stimuli_menu")
+        self.bar.add_cascade(label="Stimuli",menu=self.bar.stimuli_menu)
+        for maybe_stimkey, maybe_control_frame, maybe_title in self.client_list:
+            if maybe_title != "Vision Egg Script":
+                self.bar.stimuli_menu.add_radiobutton(label=maybe_title,
+                                                      command=self.change_stimulus,
+                                                      variable=self.stimulus_tk_var,
+                                                      value=maybe_stimkey)
+
+        self.bar.calibration_menu = Tkinter.Menu(self.bar, name="calibration_menu")
+        self.bar.add_cascade(label="Configure/Calibrate",
+                             menu=self.bar.calibration_menu)
+
+        self.bar.calibration_menu.add_command(label='3D Perspective...', command=self.launch_screen_pos)
+        self.bar.calibration_menu.add_command(label='Stimulus onset timing...', command=self.launch_stim_onset_cal)
+        self.bar.calibration_menu.add_command(label='Load gamma table...', command=self.launch_gamma_panel)
+        self.notify_on_dropped_frames = Tkinter.BooleanVar()
+        self.notify_on_dropped_frames.set(1)
+        self.bar.calibration_menu.add_checkbutton(label='Warn on frame skip',
+                                                  variable=self.notify_on_dropped_frames)
+
+        self.override_t_abs_sec = Tkinter.StringVar() # Tkinter DoubleVar loses precision
+        self.override_t_abs_sec.set("0.0")
+
+        self.override_t_abs_on = Tkinter.BooleanVar()
+        self.override_t_abs_on.set(0)
+        self.bar.calibration_menu.add_checkbutton(label='Override server absolute time (CAUTION)',
+                                                  variable=self.override_t_abs_on)
+
+        row = 0
+
+        # options for self.stim_frame in grid layout manager
+        self.stim_frame_cnf = {'row':row,
+                               'column':0,
+                               'columnspan':2,
+                               'sticky':'nwes'}
+
+        row += 1
+        Tkinter.Label(self,
+                      text="Sequence information",
+                      font=("Helvetica",12,"bold")).grid(row=row,column=0)
+        row += 1
+        # options for self.loop_frame in grid layout manager
+        self.loop_frame_cnf = {'row':row,
+                               'column':0,
+                               'sticky':'nwes'}
+
+        row -= 1
+        Tkinter.Label(self,
+                      text="Parameter Save Options",
+                      font=("Helvetica",12,"bold")).grid(row=row,column=1)
+        row += 1
+        self.auto_save_frame = Tkinter.Frame(self)
+        asf = self.auto_save_frame # shorthand
+        asf.grid(row=row,column=1,sticky="nwes")
+        asf.columnconfigure(1,weight=1)
+
+        asf.grid_row = 0
+        self.autosave = Tkinter.BooleanVar()
+        self.autosave.set(1)
+        self.auto_save_button = Tkinter.Checkbutton(asf,
+                                                    text="Auto save trial parameters",
+                                                    variable=self.autosave)
+        self.auto_save_button.grid(row=asf.grid_row,column=0,columnspan=2)
+
+        self.param_file_type_tk_var = Tkinter.StringVar()
+        self.param_file_type_tk_var.set("Python format")
+        filetype_bar = Tkinter.Menubutton(asf,
+                                 textvariable=self.param_file_type_tk_var,
+                                 relief=Tkinter.RAISED)
+        filetype_bar.grid(row=asf.grid_row,column=2)
+        filetype_bar.menu = Tkinter.Menu(filetype_bar,tearoff=0)
+        filetype_bar.menu.add_radiobutton(label="Python format",
+                                 value="Python format",
+                                 variable=self.param_file_type_tk_var)
+        filetype_bar.menu.add_radiobutton(label="Matlab format",
+                                 value="Matlab format",
+                                 variable=self.param_file_type_tk_var)
+        filetype_bar['menu'] = filetype_bar.menu
+
+        asf.grid_row += 1
+        Tkinter.Label(asf,
+                      text="Parameter file directory:").grid(row=asf.grid_row,column=0,sticky="e")
+        Tkinter.Entry(asf,
+                      textvariable=self.autosave_dir).grid(row=asf.grid_row,column=1,sticky="we")
+        Tkinter.Button(asf,
+                       text="Set...",command=self.set_autosave_dir).grid(row=asf.grid_row,column=2)
+        asf.grid_row += 1
+        Tkinter.Label(asf,
+                      text="Parameter file basename:").grid(row=asf.grid_row,column=0,sticky="e")
+        Tkinter.Entry(asf,
+                      textvariable=self.autosave_basename).grid(row=asf.grid_row,column=1,sticky="we")
+        Tkinter.Button(asf,
+                       text="Reset",command=self.reset_autosave_basename).grid(row=asf.grid_row,column=2)
+
+        row += 1
+        Tkinter.Button(self, text='Do single trial', command=self.do_single_trial).grid(row=row,column=0)
+        Tkinter.Button(self, text='Do sequence', command=self.do_loops).grid(row=row,column=1)
+
+        row += 1
+        self.progress = VisionEgg.GUI.ProgressBar(self,
+                                                  width=300,
+                                                  relief="sunken",
+                                                  doLabel=0,
+                                                  labelFormat="%s")
+        self.progress.labelText = "Starting..."
+        self.progress.updateProgress(0)
+        self.progress.grid(row=row,column=0,columnspan=2)#,sticky='we')
+
+        # Allow rows and columns to expand
+        for i in range(2):
+            self.columnconfigure(i,weight=1)
+        for i in range(row+1):
+            self.rowconfigure(i,weight=1)
+
+        self.switch_to_stimkey( stimkey )
+
+        self.config_dir = None
+        self.demoscript_filename = None
+        self.vars_list = None
+
+    def __del__( self ):
+        if hasattr(self,'_orig_report_callback_exception'):
+            self._tk.report_callback_exception = self._orig_report_callback_exception
+
+    def switch_to_stimkey( self, stimkey ):
+        success = 0
+        for maybe_stimkey, maybe_control_frame, maybe_title in self.client_list:
+            if stimkey == maybe_stimkey:
+                control_frame_klass = maybe_control_frame
+                success = 1
+
+        if not success:
+            raise RuntimeError("Could not find valid client for server stimkey %s"%stimkey)
+
+        if hasattr(self, 'stim_frame'):
+            # clear old frame
+            self.stim_frame.destroy()
+            del self.stim_frame
+
+        self.stim_frame = control_frame_klass(self,suppress_go_buttons=1)
+        if stimkey == "dropin_server":
+            self.stim_frame.gen_var_widgets(self.demoscript_filename, self.vars_list)
+        self.stim_frame.connect(self.server_hostname,self.server_port)
+        self.stim_frame.grid( **self.stim_frame_cnf )
+
+        global loopable_variables
+        loopable_variables = self.stim_frame.get_loopable_variable_names()
+        if hasattr(self, 'loop_frame'):
+            # clear old frame
+            self.loop_frame.destroy()
+            del self.loop_frame
+        self.loop_frame = ScrollListFrame(master=self,
+                                          container_class=LoopContainedObject)
+        self.loop_frame.grid( **self.loop_frame_cnf )
+
+        self.autosave_basename.set( self.stim_frame.get_shortname() )
+
+        self.stimulus_tk_var.set( self.stim_frame.get_shortname() ) # set menuitem
+
+        self.progress.labelText = "Ready"
+        self.progress.updateProgress(0)
+
+    def change_stimulus(self, dummy_arg=None, new_stimkey=None ):
+        # if new_stimkey is None, get from the tk variable
+        if new_stimkey is None:
+            new_stimkey = self.stimulus_tk_var.get()
+
+        found = 0
+        for maybe_stimkey, maybe_control_frame, maybe_title in self.client_list:
+            if new_stimkey == maybe_stimkey:
+                new_control_frame_klass = maybe_control_frame
+                new_stimkey = maybe_stimkey
+                found = 1
+                break
+
+        if not found:
+            raise RuntimeError("Don't know about stimkey %s"%new_stimkey)
+
+        if new_control_frame_klass != self.stim_frame.__class__ or new_stimkey == "dropin_server":
+            # make wait cursor
+            root = self.winfo_toplevel()
+            old_cursor = root["cursor"]
+            root["cursor"] = "watch"
+            root.update()
+            try:
+
+                self.progress.labelText = "Changing stimulus..."
+                self.progress.updateProgress(0)
+
+                self.ephys_server.set_next_stimkey( new_stimkey )
+
+                # new stimulus type
+                self.stim_frame.quit_server() # disconnect
+
+                # in case of loaded Vision Egg script, quit_server()
+                # sends a signal to stop the "wait" loop, WITHOUT
+                # raising a flag to run the script
+
+                self.ephys_server.get_stimkey() # wait for server to load
+
+                self.switch_to_stimkey( new_stimkey)
+            finally:
+                #restore cursor
+                root["cursor"] = old_cursor
+                root.update()
+
+    def save_image_sequence(self):
+        ImageSequenceLauncher(self,ephys_server=self.ephys_server)
+
+    def save_config(self):
+        self.stim_frame.send_values() # copy values from Tkinter to self.stim_frame.meta_params and send to server
+        if self.config_dir is not None:
+            initialdir = self.config_dir
+        else:
+            initialdir = VisionEgg.config.VISIONEGG_USER_DIR
+        filename = tkFileDialog.asksaveasfilename(
+            parent=self,
+            defaultextension=".ve_cfg",
+            filetypes=[('Configuration file','*.ve_cfg')],
+            initialdir=initialdir)
+        if not filename:
+            return
+        fd = open(filename,"wb")
+        save_dict = {'stim_type':self.stim_frame.get_shortname(),
+                     'loop_list':self.loop_frame.list,
+                     'stim_frame_dict':self.stim_frame.get_parameters_dict(),
+                     'autosave':self.autosave.get(),
+                     'autosave_dir':self.autosave_dir.get(),
+                     'autosave_basename':self.autosave_basename.get()}
+        pickle.dump( save_dict, fd )
+        self.config_dir = os.path.split(filename)[0] # get dir
+
+    def load_config(self):
+        if self.config_dir is not None:
+            initialdir = self.config_dir
+        else:
+            initialdir = VisionEgg.config.VISIONEGG_USER_DIR
+        filename = tkFileDialog.askopenfilename(
+            parent=self,
+            defaultextension=".ve_cfg",
+            filetypes=[('Configuration file','*.ve_cfg')],
+            initialdir=initialdir,
+            )
+        if not filename:
+            return
+        self.config_dir = os.path.split(filename)[0] # get dir
+        fd = open(filename,"rb")
+        file_contents = fd.read()
+        file_contents = file_contents.replace('\r\n','\n') # deal with Windows newlines
+        memory_file = StringIO.StringIO(file_contents)
+        load_dict = pickle.load(memory_file)
+        if load_dict['stim_type'] != self.stim_frame.get_shortname():
+            self.change_stimulus(new_stimkey=load_dict['stim_type']+"_server")
+        self.loop_frame.list = load_dict['loop_list']
+        self.loop_frame.update_now()
+        self.stim_frame.set_parameters_dict( load_dict['stim_frame_dict'] )
+        self.autosave.set(load_dict['autosave'])
+        self.autosave_dir.set(load_dict['autosave_dir'])
+        self.autosave_basename.set(load_dict['autosave_basename'])
+
+        self.stim_frame.update_tk_vars()
+
+    def load_params(self,orig_load_dict={}):
+        filename = tkFileDialog.askopenfilename(
+            parent=self,
+            defaultextension=".py",
+            filetypes=[('Auto-saved parameter file','*.py')])
+        if not filename:
+            return
+        locals = {}
+        load_dict = orig_load_dict.copy() # make copy of default values
+        execfile(filename,locals,load_dict) # execute the file
+        if load_dict['stim_type'] != self.stim_frame.get_shortname():
+            self.change_stimulus(new_stimkey=load_dict['stim_type']+"_server")
+        self.loop_frame.list = [] # clear loop list
+        self.loop_frame.update_now()
+        new_params = {}
+        exception_info = []
+        for param_name in dir(self.stim_frame.meta_params):
+            if param_name[:2] != "__":
+                try:
+                    new_params[param_name] = load_dict[param_name]
+                except Exception, x:
+                    exception_info.append(sys.exc_info()) # don't die on exception
+                else:
+                    del load_dict[param_name]
+        for exc_type, exc_value, exc_traceback in exception_info:
+            # ignore actual traceback
+            VisionEgg.GUI.showexception(exc_type,exc_value,"")
+        self.stim_frame.set_parameters_dict( new_params )
+        self.autosave_basename.set(load_dict['stim_type'])
+
+        try:
+            override_t_abs_sec = load_dict['go_loop_start_time_abs_sec']
+        except Exception, x:
+            tkMessageBox.showwarning("No absolute time parameter",
+                                     "No absolute time parameter when loading file",
+                                     parent=self)
+        else:
+            if not self.override_t_abs_on.get():
+                self.override_t_abs_on.set(1)
+                tkMessageBox.showwarning("Overriding absolute time parameter",
+                                         "Overriding absolute time parameter on server. "+\
+                                         "Remember to turn this option off (in Configure "+\
+                                         "/ Calibrate menu) when done.",
+                                         parent=self)
+            self.override_t_abs_sec.set(repr(override_t_abs_sec)) # make string
+
+        self.stim_frame.update_tk_vars()
+        return load_dict # return unused variables
+
+    def load_demoscript(self):
+        self.demoscript_filename = tkFileDialog.askopenfilename(
+            parent=self,
+            defaultextension=".py",
+            filetypes=[('Vision Egg Demo Script','*.py')])
+
+        if not self.demoscript_filename:
+            return
+        else:
+            # make wait cursor
+            root = self.winfo_toplevel()
+            old_cursor = root["cursor"]
+            root["cursor"] = "watch"
+            root.update()
+            try:
+                fd1 = open(self.demoscript_filename, 'r')
+                demoscript = ""
+
+                # List of all variables.
+                # Each variable is a tuple of the form [x, y, z] where:
+                # x: variable type ID,
+                # y: variable name,
+                # z: variable value.
+                self.vars_list = []
+
+                lines = fd1.read().splitlines()
+                keep_lines = []
+                while len(lines):
+                    myString = lines.pop(0)
+                    if myString.find("get_default_screen()") != -1:
+                        append_flag = 0
+                    elif myString.find("watch_exceptions()") != -1:
+                        append_flag = 0
+                    elif myString.find("start_default_logging()") != -1:
+                        append_flag = 0
+                    elif myString.find("#%f") == 0:
+                        self.vars_list.append([VarTypes.getID("float"), myString.replace("#%f", "").split()[0]])
+                        append_flag = 0
+                    elif myString.find("#%i") == 0:
+                        self.vars_list.append([VarTypes.getID("integer"), myString.replace("#%i", "").split()[0]])
+                        append_flag = 0
+                    elif myString.find("#%s") == 0:
+                        self.vars_list.append([VarTypes.getID("string"), myString.replace("#%s", "").split()[0]])
+                        append_flag = 0
+                    else:
+                        append_flag = 1
+
+                    if append_flag == 1:
+                        keep_lines.append( myString )
+
+                fd1.close()
+                demoscript = '\n'.join(keep_lines)
+
+                # Client side AST. Only used to extract default values
+                # of elected variables:
+                try:
+                    AST = parser.suite(demoscript)
+
+                    for var in self.vars_list:
+                        var_val = AST_ext.extract_from_AST(AST, var[1])
+                        if var[0] == VarTypes.getID("string"):
+                            var_val = var_val[1:len(var_val) - 1]
+                        var.append(var_val)
+
+                    del AST # save memory
+
+                    # unfortunately, sending an AST object over a Pyro
+                    # connection has its complications... so we don't
+                    # do it
+                    self.ephys_server.build_AST(demoscript)
+
+                    self.change_stimulus(new_stimkey="dropin_server")
+
+                except (parser.ParserError, SyntaxError):
+                    tkMessageBox.showerror("Error", "Invalid demo script!")
+                    err_fd = file('/home/astraw/tmp/err.py',mode='w')
+                    err_fd.write(demoscript)
+            finally:
+                #restore cursor
+                root["cursor"] = old_cursor
+                root.update()
+
+    def launch_screen_pos(self, dummy_arg=None):
+        dialog = Tkinter.Toplevel(self)
+        frame = VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame(dialog,
+                                                                                auto_connect=1,
+                                                                                server_hostname=self.server_hostname,
+                                                                                server_port=self.server_port)
+        frame.winfo_toplevel().title("3D Calibration - Vision Egg")
+        frame.pack(expand=1,fill=Tkinter.BOTH)
+
+    def launch_stim_onset_cal(self, dummy_arg=None):
+        dialog = Tkinter.Toplevel(self)
+        frame = Tkinter.Frame(dialog)
+        frame.winfo_toplevel().title("Timing Calibration - Vision Egg")
+        Tkinter.Label(frame,
+                      font=("Helvetica",12,"bold"),
+                      text="Stimulus onset timing").grid(row=0,column=0)
+        Tkinter.Label(frame,
+                      text="Use a light detector to verify the onset of a trial."
+                      ).grid(row=1,column=0)
+        Tkinter.Checkbutton( frame,
+                             text="Black box (always) with white box (during trial)",
+                             variable=self.stim_onset_cal_tk_var,
+                             command=self.update_stim_onset_cal).grid(row=2,column=0)
+
+        x,y,width,height = self.ephys_server.get_stim_onset_cal_location()
+
+        location_frame = Tkinter.Frame(frame)
+        location_frame.grid(row=3,column=0)
+        self.stim_onset_x = Tkinter.DoubleVar()
+        self.stim_onset_x.set(x)
+        self.stim_onset_y = Tkinter.DoubleVar()
+        self.stim_onset_y.set(y)
+        self.stim_onset_width = Tkinter.DoubleVar()
+        self.stim_onset_width.set(width)
+        self.stim_onset_height = Tkinter.DoubleVar()
+        self.stim_onset_height.set(height)
+
+        Tkinter.Label( location_frame, text="Center X:").grid(row=0,column=0)
+        Tkinter.Entry( location_frame, textvariable=self.stim_onset_x,width=5).grid(row=0,column=1)
+        Tkinter.Label( location_frame, text="Center Y:").grid(row=0,column=2)
+        Tkinter.Entry( location_frame, textvariable=self.stim_onset_y,width=5).grid(row=0,column=3)
+        Tkinter.Label( location_frame, text="Width:").grid(row=1,column=0)
+        Tkinter.Entry( location_frame, textvariable=self.stim_onset_width,width=5).grid(row=1,column=1)
+        Tkinter.Label( location_frame, text="Height:").grid(row=1,column=2)
+        Tkinter.Entry( location_frame, textvariable=self.stim_onset_height,width=5).grid(row=1,column=3)
+
+        Tkinter.Button( frame,
+                        text="update position and size",
+                        command=self.set_stim_onset_cal_position).grid(row=4,column=0)
+        self.set_stim_onset_cal_position() # call it once to send server our initial values
+        frame.pack(expand=1,fill=Tkinter.BOTH)
+
+    def launch_gamma_panel(self, dummy_arg=None):
+        dialog = Tkinter.Toplevel(self)
+        frame = GammaFrame(dialog,
+                           self.ephys_server)
+        frame.pack(expand=1,fill=Tkinter.BOTH)
+
+    def set_autosave_dir(self):
+        self.autosave_dir.set( os.path.abspath( tkFileDialog.askdirectory() ) )
+
+    def reset_autosave_basename(self):
+        self.autosave_basename.set( self.stim_frame.get_shortname() )
+
+    def update_stim_onset_cal(self, dummy_arg=None):
+        on = self.stim_onset_cal_tk_var.get()
+        self.ephys_server.set_stim_onset_cal(on)
+
+    def set_stim_onset_cal_position(self, dummy_arg=None):
+        x = self.stim_onset_x.get()
+        y = self.stim_onset_y.get()
+        width = self.stim_onset_width.get()
+        height = self.stim_onset_height.get()
+        self.ephys_server.set_stim_onset_cal_location(center=(x,y),size=(width,height))
+
+
+    def do_loops(self):
+        super_loop_list = self.loop_frame.get_list_uncontained()
+        # "super_loop_list" is a list of lists, each of which, a
+        # "loop_list", contains "loop" class objects
+        # eg. [[a], [b, c], [d]]
+        # Need to test that "get_list_uncontained()" is returning a list of lists!
+        global need_rest_period
+        need_rest_period = 0
+
+        if not len(super_loop_list):
+            return
+
+        ############################################################
+        def process_loops(depth): # recursive processing of loops
+
+            class LoopInfoFrame(Tkinter.Frame):
+                def __init__(self, master=None, **kw):
+                    Tkinter.Frame.__init__(self,master,**kw)
+                    Tkinter.Label(self,
+                        text="Doing sequence").grid(row=0,column=0)
+                    self.status_tk_var = Tkinter.StringVar()
+                    Tkinter.Label(self,
+                        textvariable = self.status_tk_var).grid(row=1, column=0)
+                    self.cancel_asap = 0
+                    Tkinter.Button(self,
+                        text="Cancel",command=self.cancel).grid(row=2,column=0)
+                    self.focus_set()
+                    self.grab_set()
+                def cancel(self, dummy_arg=None):
+                    self.cancel_asap = 1
+
+            global need_rest_period
+
+            global loop_info_frame
+            if depth == 0: # only make one LoopInfoFrame (when depth is 0, ie. first time)
+                top = Tkinter.Toplevel(self)
+                loop_info_frame = LoopInfoFrame(top)
+                loop_info_frame.pack()
+
+            loop_list = super_loop_list[depth]
+            #print "current depth"
+            #print depth
+            #print "Loop?"
+            #print loop
+            max_depth = len(super_loop_list)-1
+            #print "max_depth"
+            #print max_depth
+
+            loop = loop_list[0].get_contained()
+            # "loop_list" is, for example: [a, b, c]
+            # ie. each element is an object of class "loop".
+            # If one element is done, then all other elements are effectively done, the way we've structured the lists to
+            # be (they all have same 'N' value).
+
+            while not loop.is_done() and not loop_info_frame.cancel_asap:
+                for loop_element in loop_list:
+                    if loop_element.get_contained().parameters.variable != "<repeat>":
+                        self.stim_frame.set_loopable_variable(loop_element.get_contained().parameters.variable,loop_element.get_contained().get_current())
+                if depth < max_depth:
+                    process_loops(depth+1)
+                elif depth == max_depth: # deepest level -- do the trial
+                    if need_rest_period:
+                        self.progress.labelText = "Resting"
+                        self.sleep_with_progress(loop.parameters.rest_duration_sec)
+                    self.do_single_trial()
+                    need_rest_period = 1
+                else:
+                    raise RuntimeError("Called with max_depth==-1:")
+                for loop_element in loop_list:
+                    loop_element.get_contained().advance()
+            for loop_element in loop_list:
+                loop_element.get_contained().reset()
+            if depth == 0: # destroy LoopInfoFrame
+                top.destroy()
+
+        ############################################################
+        process_loops(0) # start recursion on top level
+
+    def do_single_trial(self):
+        # Get filename to save parameters
+        if not self.autosave.get():
+            file_stream = None # not saving file
+        else:
+            duration_sec = self.stim_frame.get_duration_sec()
+            (year,month,day,hour24,min,sec) = time.localtime(time.time()+duration_sec)[:6]
+            trial_time_str = "%04d%02d%02d_%02d%02d%02d"%(year,month,day,hour24,min,sec)
+            if self.param_file_type_tk_var.get() == "Python format":
+                # Figure out filename to save parameters in
+                filename = self.autosave_basename.get() + trial_time_str + "_params.py"
+                fullpath_filename = os.path.join( self.autosave_dir.get(), filename)
+                file_stream = open(fullpath_filename,"w")
+            elif self.param_file_type_tk_var.get() == "Matlab format":
+                # Figure out filename to save results in
+                filename = self.autosave_basename.get() + trial_time_str + "_params.m"
+                fullpath_filename = os.path.join( self.autosave_dir.get(), filename)
+                file_stream = open(fullpath_filename,"w")
+            else:
+                raise ValueError('Unknown file format: "%s"'%(self.param_file_type_tk_var.get(),))
+
+        # this class is broken into parts so it can be subclassed more easily
+        self.do_single_trial_pre(file_stream)
+        self.do_single_trial_work()
+        self.do_single_trial_post(file_stream)
+
+        # Close parameter save file
+        if self.autosave.get():
+            file_stream.close()
+
+    def do_single_trial_pre(self, file_stream):
+        # Ensure that we have the most up-to-date values
+        self.stim_frame.send_values() # copy values from Tkinter to self.stim_frame.meta_params and send to server
+
+        # if file_stream is None, open default file
+        if self.autosave.get():
+            duration_sec = self.stim_frame.get_duration_sec()
+            (year,month,day,hour24,min,sec) = time.localtime(time.time()+duration_sec)[:6]
+            if self.param_file_type_tk_var.get() == "Python format":
+                file_stream.write("stim_type = '%s'\n"%self.stim_frame.get_shortname())
+                file_stream.write("finished_time = %04d%02d%02d%02d%02d%02d\n"%(year,month,day,hour24,min,sec))
+                parameter_list = self.stim_frame.get_parameters_as_py_strings()
+                for parameter_name, parameter_value in parameter_list:
+                    file_stream.write("%s = %s\n"%(parameter_name, parameter_value))
+            elif self.param_file_type_tk_var.get() == "Matlab format":
+                file_stream.write("stim_type = '%s';\n"%self.stim_frame.get_shortname())
+                file_stream.write("finished_time = %04d%02d%02d%02d%02d%02d;\n"%(year,month,day,hour24,min,sec))
+                parameter_list = self.stim_frame.get_parameters_as_m_strings()
+                for parameter_name, parameter_value in parameter_list:
+                    file_stream.write("%s = %s;\n"%(parameter_name, parameter_value))
+            else:
+                raise RuntimeError("Unknown parameter file type") # Should never get here
+
+    def do_single_trial_work(self):
+        # make wait cursor
+        root = self.winfo_toplevel()
+        self.old_cursor = root["cursor"]
+        root["cursor"] = "watch"
+        root.update()
+        try:
+
+            self.progress.labelText = "Doing trial..."
+            self.progress.updateProgress(0)
+
+            duration_sec = self.stim_frame.get_duration_sec()
+            if duration_sec > 0:
+                if self.override_t_abs_on.get():
+                    new_t_abs_str = self.override_t_abs_sec.get()
+                    self.ephys_server.set_override_t_abs_sec( new_t_abs_str )
+
+                self.stim_frame.go() # start server going, but this return control immediately
+                self.sleep_with_progress(duration_sec)
+                while self.ephys_server.is_in_go_loop(): # make sure go loop is really done
+                    time.sleep(0.1) # wait 100 msec for end of go loop and try again
+
+                if self.notify_on_dropped_frames.get():
+                    if self.ephys_server.were_frames_dropped_in_last_go_loop():
+                        tkMessageBox.showwarning("Dropped frame(s)",
+                                                 "During the last trial, at least 1 frame was dropped.",
+                                                  parent=self)
+            else:
+                if self.stim_frame.send_values():
+                    self.ephys_server.run_demoscript()
+                    self.stim_frame.quit_server()
+        finally:
+            root["cursor"] = self.old_cursor
+            root.update()
+
+            # restore status bar
+            self.progress.labelText = "Ready"
+            self.progress.updateProgress(0)
+
+    def do_single_trial_post(self, file_stream):
+        # if file_stream is None, open default file
+        if self.autosave.get():
+            frames_dropped = self.ephys_server.were_frames_dropped_in_last_go_loop()
+            go_loop_start_time = self.ephys_server.get_last_go_loop_start_time_absolute_sec()
+            if self.param_file_type_tk_var.get() == "Python format":
+                file_stream.write("frames_dropped = %s # boolean\n"%str(frames_dropped))
+                file_stream.write("go_loop_start_time_abs_sec = %s\n"%repr(go_loop_start_time))
+            elif self.param_file_type_tk_var.get() == "Matlab format":
+                file_stream.write("frames_dropped = %s; %% boolean\n"%str(frames_dropped))
+                file_stream.write("go_loop_start_time_abs_sec = %s;\n"%repr(go_loop_start_time))
+            else:
+                raise RuntimeError("Unknown parameter file type") # Should never get here
+
+    def sleep_with_progress(self, duration_sec):
+        if duration_sec == 0.0:
+            return # don't do anything
+        start_time = time.time()
+        stop_time = start_time + duration_sec
+        percent_done = 0
+        while percent_done < 100:
+            if sys.platform != 'darwin': # Mac OS X Tk bug... sigh...
+                self.progress.updateProgress(percent_done)
+            time.sleep(0.01) # wait 10 msec
+            percent_done = (time.time() - start_time)/duration_sec*100
+
+    def quit(self):
+        if self.quit_server_too.get():
+            self.ephys_server.set_quit_status(1)
+        # call parent class
+        Tkinter.Frame.quit(self)
+
+    def destroy(self):
+        try:
+            if self.quit_server_too.get():
+                self.ephys_server.set_quit_status(1)
+        except:
+            pass
+        Tkinter.Frame.destroy(self)
+
+class BarButton(Tkinter.Menubutton):
+    # Taken from Guido van Rossum's Tkinter svkill demo
+        def __init__(self, master=None, **cnf):
+            Tkinter.Menubutton.__init__(self, master, **cnf)
+            self.pack(side=Tkinter.LEFT)
+            self.menu = Tkinter.Menu(self, name='menu', tearoff=0)
+            self['menu'] = self.menu
+
+if __name__ == '__main__':
+    hostname = os.getenv("ephys_server_hostname","")
+    port = int(os.getenv("ephys_server_port","7766"))
+    result = get_server(hostname=hostname,port=port)
+    if result:
+        hostname,port = result
+        app_window = AppWindow(client_list=client_list,
+                               server_hostname=hostname,
+                               server_port=port)
+
+        app_window.winfo_toplevel().wm_iconbitmap()
+        app_window.pack(expand=1,fill=Tkinter.BOTH)
+        app_window.mainloop()
diff --git a/VisionEgg/PyroApps/EPhysGUIUtils.py b/VisionEgg/PyroApps/EPhysGUIUtils.py
new file mode 100755
index 0000000..598040a
--- /dev/null
+++ b/VisionEgg/PyroApps/EPhysGUIUtils.py
@@ -0,0 +1,226 @@
+#!/usr/bin/env python
+#
+# The Vision Egg: EPhysGUIUtils
+#
+# Copyright (C) 2001-2003 Andrew Straw.
+# Author: Andrew Straw <astraw at users.sourceforge.net>
+# URL: <http://www.visionegg.org/>
+#
+# Distributed under the terms of the GNU Lesser General Public License
+# (LGPL). See LICENSE.TXT that came with this file.
+
+import sys, os, time, types, socket
+import Tkinter
+import Pyro.core
+
+import VisionEgg.PyroClient
+
+class StimulusControlFrame(Tkinter.Frame):
+    def __init__(self,
+                 master=None,
+                 suppress_go_buttons=0,
+                 title="Stimulus Control",
+                 meta_params_class=None,
+                 **kw):
+        Tkinter.Frame.__init__(self,master,**kw)
+        self.pyro_client = None
+        self.entry_width = 10
+        self.connected = 0
+        if meta_params_class is not None:
+            self.meta_params = meta_params_class()
+        self.loopable_variables = {}
+
+        Tkinter.Label(self,
+                      text=title,
+                      font=("Helvetica",12,"bold")).pack(expand=Tkinter.YES,
+                                                         fill=Tkinter.X)
+
+        if not suppress_go_buttons:
+            connected_frame = Tkinter.Frame(self)
+            connected_frame.pack(expand=Tkinter.YES,
+                                 fill=Tkinter.X)
+
+            self.connected_text = Tkinter.StringVar()
+            self.connected_text.set("Server status: Not connected")
+            self.server_hostname = Tkinter.StringVar()
+            self.server_hostname.set( socket.getfqdn('') )
+            self.server_port = Tkinter.IntVar()
+            self.server_port.set( 7766 )
+
+            Tkinter.Label(connected_frame,
+                          text="Server hostname").grid(row=0,
+                                                       column=0)
+            Tkinter.Entry(connected_frame,
+                          textvariable=self.server_hostname).grid(row=0,
+                                                                  column=1,
+                                                                  columnspan=2)
+            Tkinter.Label(connected_frame,
+                          textvariable=self.connected_text).grid(row=1,
+                                                                 column=0)
+            Tkinter.Button(connected_frame,
+                           text="Connect",
+                           command=self.standalone_connect).grid(row=1,
+                                                                 column=1)
+            Tkinter.Button(connected_frame,
+                           text="Quit server",
+                           command=self.quit_server).grid(row=1,
+                                                          column=2)
+
+        self.param_frame = Tkinter.Frame(self)
+        self.param_frame.pack(expand=Tkinter.YES,fill=Tkinter.BOTH)
+
+        if not suppress_go_buttons:
+            Tkinter.Button(self,text="Begin Trial",command=self.go).pack()#expand=Tkinter.YES,fill=Tkinter.BOTH)
+
+    def make_callback_entry(self, master=None, **kw):
+        if 'width' not in kw.keys():
+            kw['width'] = self.entry_width
+        if master==None:
+            master=self.param_frame
+        e = Tkinter.Entry(master,**kw)
+        e.bind('<Return>',self.send_values)
+        e.bind('<Tab>',self.send_values)
+        return e
+
+    def get_shortname(self):
+        """Used as basename for saving parameter files and other ID purposes"""
+        raise NotImplementedError("Must be overriden by derived class")
+
+    def set_param_dict(self,new_param_dict):
+        orig_params = dir(self.meta_params)
+        for new_param_name in new_param_dict.keys():
+            if new_param_name[:2] != '__' and new_param_name[-2:] != '__':
+                if new_param_name not in orig_params:
+                    raise ValueError('Gave parameter "%s", which I do not know about.'%(new_param_name,))
+                setattr(self.meta_params,new_param_name,new_param_dict[new_param_name])
+        self.update_tk_vars()
+        self.update() # update screen with new tk_var value
+
+    def update_tk_vars(self):
+        """Update Tkinter variables with (new) values from meta_params"""
+        raise NotImplementedError("Must be overriden by derived class")
+
+    def get_parameters_dict(self):
+        result = {}
+        for param_name in dir(self.meta_params):
+            if param_name[:2] != '__' and param_name[-2:] != '__':
+                result[param_name] = getattr(self.meta_params,param_name)
+        return result
+
+    def get_parameters_as_py_strings(self):
+        """Return parameter values as Python-executable strings"""
+        result = []
+        for param_name in dir(self.meta_params):
+            if param_name[:2] != '__' and param_name[-2:] != '__':
+                value = getattr(self.meta_params,param_name)
+                value_string = repr(value)
+                result.append((param_name,value_string))
+        return result
+
+    def get_parameters_as_m_strings(self):
+        """Return parameter values as Matlab-executable strings"""
+        result = []
+        for param_name in dir(self.meta_params):
+            if param_name[:2] != '__' and param_name[-2:] != '__':
+                value = getattr(self.meta_params,param_name)
+                value_string = self.get_matlab_string(value)
+                result.append((param_name,value_string))
+        return result
+
+    def get_matlab_string(self, value):
+        # I'm no Matlab whiz, so you may have to modify this!!
+        if type(value) in [types.IntType, types.FloatType]:
+            return str(value)
+        elif type(value) in [types.ListType, types.TupleType]:
+            s = "[ "
+            for v in value:
+                s += str(v) + " "
+            s += "]"
+            return s
+        elif type(value) == types.StringType:
+            s = "'%s'"%value
+            return s
+        else:
+            raise NotImplementedError("No support for converting %s to Matlab format."%str(type(value)))
+
+    def set_parameters_dict(self, dict):
+        for key in dict.keys():
+            if not key in dir(self.meta_params):
+                raise RuntimeError("Parameter %s not in %s"%(key, str(self.meta_params)))
+            setattr(self.meta_params,key,dict[key])
+
+    def get_loopable_variable_names(self):
+        return self.loopable_variables.keys()
+
+    def set_loopable_variable(self,easy_name,value):
+        meta_param_var_name,tk_var = self.loopable_variables[easy_name]
+        setattr(self.meta_params,meta_param_var_name,value)
+        tk_var.set(value)
+        self.update() # update screen with new tk_var value
+
+    def send_values(self,dummy_arg=None):
+        """Update meta_params variables with values from Tkinter fields"""
+        raise NotImplementedError("Must be overriden by derived class")
+
+    def get_duration_sec(self):
+        """Calculate total duration in go loop"""
+        raise NotImplementedError("Must be overriden by derived class")
+
+    def go(self,dummy_arg=None):
+        self.send_values()
+        if not self.connected:
+            raise RuntimeError("must be connected to run trial")
+
+        root = self.winfo_toplevel()
+        old_cursor = root["cursor"]
+
+        root["cursor"] = "watch"
+        root.update()
+        self.meta_controller.go()
+        root["cursor"] = old_cursor
+        root.update()
+
+    def standalone_connect(self):
+        self.connect(self.server_hostname.get(),self.server_port.get())
+
+    def connect(self,server_hostname,server_port):
+        self.pyro_client = VisionEgg.PyroClient.PyroClient(server_hostname,server_port)
+
+        shortname = self.get_shortname()
+        meta_controller_name = shortname + "_server"
+        timeout_seconds = 60.0
+        retry_interval_seconds = 0.1
+        start_time = time.time()
+        if hasattr(self,"meta_controller"):
+            del self.meta_controller # get rid of old meta_controller
+
+        # get new meta_controller
+        while not hasattr(self,"meta_controller"):
+            try:
+                self.meta_controller = self.pyro_client.get(meta_controller_name)
+            except Pyro.errors.NamingError, x:
+                if str(x) == "name not found":
+                    if (time.time()-start_time) >= timeout_seconds:
+                        raise # Couldn't find experiment controller on Pyro network
+                    time.sleep(retry_interval_seconds)
+                else:
+                    raise # unknown error
+
+        # attribute error: check: stimkey == short_name + "_server"
+        self.meta_params = self.meta_controller.get_parameters()
+
+        self.connected = 1
+        if hasattr(self,'connected_text'): # EPhysGUI client suppresses this
+            self.connected_text.set("Server status: Connected")
+
+    def quit_server(self,dummy=None):
+        self.meta_controller.quit_server()
+        self.connected = 0
+        if hasattr(self,'connected_text'): # EPhysGUI client suppresses this label
+            self.connected_text.set("Server status: Not connected")
+
+if __name__=='__main__':
+    frame = StimulusControlFrame()
+    frame.pack(expand=Tkinter.YES,fill=Tkinter.BOTH)
+    frame.winfo_toplevel().title("%s"%(os.path.basename(os.path.splitext(sys.argv[0])[0]),))
+    frame.mainloop()
diff --git a/VisionEgg/PyroApps/EPhysServer.py b/VisionEgg/PyroApps/EPhysServer.py
new file mode 100755
index 0000000..6bf8c83
--- /dev/null
+++ b/VisionEgg/PyroApps/EPhysServer.py
@@ -0,0 +1,312 @@
+#!/usr/bin/env python
+#
+# The Vision Egg: EPhysServer
+#
+# Copyright (C) 2001-2004 Andrew Straw,
+# Copyright (C) 2004 Imran S. Ali, Lachlan Dowd
+# Copyright (C) 2004 California Institute of Technology
+#
+# Author: Andrew Straw <astraw at users.sourceforge.net>
+# URL: <http://www.visionegg.org/>
+#
+# Distributed under the terms of the GNU Lesser General Public License
+# (LGPL). See LICENSE.TXT that came with this file.
+
+import VisionEgg
+
+import sys, os, math
+import parser, symbol, token, compiler
+import tkMessageBox
+import pygame.display
+import VisionEgg.Core
+import VisionEgg.FlowControl
+import VisionEgg.SphereMap
+import VisionEgg.Text
+import VisionEgg.Textures
+import VisionEgg.PyroHelpers
+import Pyro, Pyro.core
+
+# AST extensions:
+import VisionEgg.PyroApps.AST_ext as AST_ext
+
+# Add your stimulus modules here
+import VisionEgg.PyroApps.TargetServer
+import VisionEgg.PyroApps.MouseTargetServer
+import VisionEgg.PyroApps.FlatGratingServer
+import VisionEgg.PyroApps.SphereGratingServer
+import VisionEgg.PyroApps.SpinningDrumServer
+import VisionEgg.PyroApps.GridServer
+import VisionEgg.PyroApps.ColorCalServer
+import VisionEgg.PyroApps.DropinServer
+
+server_modules = [ VisionEgg.PyroApps.TargetServer,
+                   VisionEgg.PyroApps.MouseTargetServer,
+                   VisionEgg.PyroApps.FlatGratingServer,
+                   VisionEgg.PyroApps.SphereGratingServer,
+                   VisionEgg.PyroApps.SpinningDrumServer,
+                   VisionEgg.PyroApps.GridServer,
+                   VisionEgg.PyroApps.ColorCalServer,
+                   VisionEgg.PyroApps.DropinServer
+                   ]
+
+# 3D screen positioning parameters
+from VisionEgg.PyroApps.ScreenPositionServer import ScreenPositionMetaController
+from VisionEgg.PyroApps.ScreenPositionGUI import ScreenPositionParameters
+
+class EPhysServer(  Pyro.core.ObjBase ):
+    def __init__(self, presentation, server_modules ):
+        Pyro.core.ObjBase.__init__(self)
+        self.stimdict = {}
+        self.stimkey = server_modules[0].get_meta_controller_stimkey() # first stimulus will be this
+        self.quit_status = False
+        self.exec_demoscript_flag = False
+        self.presentation = presentation
+        # target for stimulus onset calibration
+        self.onset_cal_bg = VisionEgg.MoreStimuli.Target2D(color=(0.0,0.0,0.0,1.0),
+                                                           position=(30.0,30.0),
+                                                           anchor='center',
+                                                           size=(50.0,50.0))
+        self.onset_cal_fg = VisionEgg.MoreStimuli.Target2D(on=0,
+                                                           color=(1.0,1.0,1.0,1.0),
+                                                           position=(30.0,30.0),
+                                                           anchor='center',
+                                                           size=(50.0,50.0))
+        self.presentation.add_controller(self.onset_cal_fg,'on',VisionEgg.FlowControl.ConstantController(during_go_value=1,
+                                                                                                  between_go_value=0))
+        # get screen (hack)
+        self.onset_cal_screen = self.presentation.parameters.viewports[0].parameters.screen
+        self.onset_cal_viewport = VisionEgg.Core.Viewport(screen=self.onset_cal_screen,
+                                                          stimuli=[self.onset_cal_bg,
+                                                                   self.onset_cal_fg]
+                                                          )
+
+        for server_module in server_modules:
+            stimkey = server_module.get_meta_controller_stimkey()
+            klass = server_module.get_meta_controller_class()
+            make_stimuli = server_module.make_stimuli
+            self.stimdict[stimkey] = (klass, make_stimuli)
+
+    def __del__(self):
+        self.presentation.remove_controller(self.onset_cal_fg,'on')
+        Pyro.core.ObjBase.__del__(self)
+
+    def get_quit_status(self):
+        return self.quit_status
+
+    def set_quit_status(self,quit_status):
+        self.quit_status = quit_status
+        self.presentation.parameters.quit = quit_status
+
+    def first_connection(self):
+        # break out of initial run_forever loop
+        self.presentation.parameters.quit = True
+
+    def set_stim_onset_cal(self, on):
+        if on:
+            if self.onset_cal_viewport not in self.presentation.parameters.viewports:
+                self.presentation.parameters.viewports.append(self.onset_cal_viewport)
+        else:
+            if self.onset_cal_viewport in self.presentation.parameters.viewports:
+                self.presentation.parameters.viewports.remove(self.onset_cal_viewport)
+
+    def set_stim_onset_cal_location(self, center, size):
+        self.onset_cal_bg.parameters.position = center
+        self.onset_cal_fg.parameters.position = center
+        self.onset_cal_bg.parameters.size = size
+        self.onset_cal_fg.parameters.size = size[0]-2,size[1]-2
+
+    def get_stim_onset_cal_location(self):
+        x,y = self.onset_cal_bg.parameters.position
+        width,height = self.onset_cal_bg.parameters.size
+        return x,y,width,height
+
+    def set_gamma_ramp(self, red, blue, green):
+        return pygame.display.set_gamma_ramp(red,green,blue)
+
+    def is_in_go_loop(self):
+        return self.presentation.is_in_go_loop()
+
+    def were_frames_dropped_in_last_go_loop(self):
+        return self.presentation.were_frames_dropped_in_last_go_loop()
+
+    def get_last_go_loop_start_time_absolute_sec(self):
+        return self.presentation.get_last_go_loop_start_time_absolute_sec()
+
+    def set_override_t_abs_sec(self, value_sec_string):
+        value_sec = float(value_sec_string) # Pyro loses precision
+        self.presentation.parameters.override_t_abs_sec = value_sec
+
+    def get_next_stimulus_meta_controller(self):
+        if self.stimkey:
+            klass, make_stimuli = self.stimdict[self.stimkey]
+            stimuli = make_stimuli()
+            return self.stimkey, klass, stimuli
+        else:
+            raise RuntimeError("No stimkey")
+
+    def get_stimkey(self):
+        return self.stimkey
+
+    def set_next_stimkey(self,stimkey):
+        self.stimkey = stimkey
+
+    def get_cwd(self):
+        return os.path.abspath(os.curdir)
+
+    def save_image_sequence(self,fps=12.0,filename_base="im",filename_suffix=".tif",save_dir="."):
+        try:
+            self.presentation.export_movie_go(frames_per_sec=fps,
+                                              filename_base=filename_base,
+                                              filename_suffix=filename_suffix,
+                                              path=save_dir
+                                              )
+        except Exception,x:
+            # do this because Pyro doesn't (by default) print a traceback
+            import traceback
+            traceback.print_exc()
+            raise
+
+    def build_AST(self, source):
+        AST = parser.suite(source)
+        self.AST = AST
+
+    def exec_AST(self, screen, dropin_meta_params):
+
+        if dropin_meta_params.vars_list is not None:
+            for var in dropin_meta_params.vars_list:
+                self.AST = AST_ext.modify_AST(self.AST, var[0], var[1])
+
+        code_module = self.AST.compile()
+        exec code_module in locals()
+        self.script_dropped_frames = p.were_frames_dropped_in_last_go_loop()
+        self.presentation.last_go_loop_start_time_absolute_sec = p.last_go_loop_start_time_absolute_sec # evil hack...
+        self.exec_demoscript_flag = False
+
+    def run_demoscript(self):
+        self.exec_demoscript_flag = True
+
+def start_server( server_modules, server_class=EPhysServer ):
+
+    loadNewExpr = True
+    pyro_server = VisionEgg.PyroHelpers.PyroServer()
+
+    # get Vision Egg stimulus ready to go
+    screen = VisionEgg.Core.Screen.create_default()
+
+    temp = ScreenPositionParameters()
+
+    projection = VisionEgg.Core.PerspectiveProjection(temp.left,
+                                                      temp.right,
+                                                      temp.bottom,
+                                                      temp.top,
+                                                      temp.near,
+                                                      temp.far)
+    perspective_viewport = VisionEgg.Core.Viewport(screen=screen,
+                                                      projection=projection)
+    overlay2D_viewport = VisionEgg.Core.Viewport(screen=screen)
+    p = VisionEgg.FlowControl.Presentation(viewports=[perspective_viewport, overlay2D_viewport]) # 2D overlay on top
+    print 'main Presentation',p
+
+    wait_text = VisionEgg.Text.Text(
+        text = "Starting up...",
+        position = (screen.size[0]/2.0,5),
+        anchor='bottom',
+        color = (1.0,0.0,0.0,0.0))
+
+    overlay2D_viewport.parameters.stimuli = [wait_text]
+    p.between_presentations() # draw wait_text
+
+    # now hand over control of projection to ScreenPositionMetaController
+    projection_controller = ScreenPositionMetaController(p,projection)
+    pyro_server.connect(projection_controller,"projection_controller")
+
+    ephys_server = server_class(p, server_modules)
+    pyro_server.connect(ephys_server,"ephys_server")
+    hostname,port = pyro_server.get_hostname_and_port()
+
+    wait_text.parameters.text = "Waiting for connection at %s port %d"%(hostname,port)
+
+    # get listener controller and register it
+    p.add_controller(None,None, pyro_server.create_listener_controller())
+
+    p.run_forever() # run until we get first connnection, which breaks out immmediately
+
+    wait_text.parameters.text = "Loading new experiment, please wait."
+
+    while not ephys_server.get_quit_status():
+        # this flow control configuration SEEMS to be stable for
+        # contiguously loaded scripts more rigorous testing would be
+        # appreciated
+        if loadNewExpr:
+            wait_text.parameters.text = "Loading new experiment, please wait."
+            perspective_viewport.parameters.stimuli = []
+            overlay2D_viewport.parameters.stimuli = [wait_text]
+            p.between_presentations() # draw wait_text
+            pyro_name, meta_controller_class, stimulus_list = ephys_server.get_next_stimulus_meta_controller()
+            stimulus_meta_controller = meta_controller_class(screen, p, stimulus_list) # instantiate meta_controller
+            pyro_server.connect(stimulus_meta_controller, pyro_name)
+
+        if ephys_server.get_stimkey() == "dropin_server":
+            wait_text.parameters.text = "Vision Egg script mode"
+
+            p.parameters.enter_go_loop = False
+            p.parameters.quit = False
+            p.run_forever()
+
+            # At this point quit signal was sent by client to either:
+
+            # 1) Execute the script (ie. "exec_demoscript_flag" has
+            # been set)
+
+            # 2) Load a DIFFERENT script ("loadNewExpr" should be set
+            # to False in this event)
+
+            # 3) Load a BUILT IN experiment ("loadNewExpr" should be
+            # set to True in this event)
+
+            if ephys_server.exec_demoscript_flag:
+                dropin_meta_params = stimulus_meta_controller.get_parameters()
+                ephys_server.exec_AST(screen, dropin_meta_params)
+
+            if ephys_server.get_stimkey() == "dropin_server":
+                # Either:
+                # 1) Same script (just finished executing)
+                # 2) Loading a new script
+                loadNewExpr = False
+            else:
+                # 3) load a BUILT IN experiment
+                pyro_server.disconnect(stimulus_meta_controller)
+                del stimulus_meta_controller # we have to do this explicitly because Pyro keeps a copy of the reference
+                loadNewExpr = True
+        else:
+            overlay2D_viewport.parameters.stimuli = [] # clear wait_text
+            for stim in stimulus_list:
+                if stim[0] == '3d_perspective':
+                    perspective_viewport.parameters.stimuli.append(stim[1])
+                elif stim[0] == '3d_perspective_with_set_viewport_callback':
+                    key, stimulus, callback_function = stim
+                    callback_function(perspective_viewport)
+                    perspective_viewport.parameters.stimuli.append(stimulus)
+                elif stim[0] == '2d_overlay':
+                    overlay2D_viewport.parameters.stimuli.append(stim[1])
+                else:
+                    raise RuntimeError("Unknown viewport id %s"%stim[0])
+
+            # enter loop
+            p.parameters.enter_go_loop = False
+            p.parameters.quit = False
+            p.run_forever()
+
+            # At this point quit signal was sent by client to either:
+
+            # 1) Load a script ("loadNewExpr" should be set to 1 in
+            # this event)
+
+            # 2) Load a BUILT IN experiment ("loadNewExpr" should be
+            # set to 1 in this event)
+
+            pyro_server.disconnect(stimulus_meta_controller)
+            del stimulus_meta_controller # we have to do this explicitly because Pyro keeps a copy of the reference
+
+if __name__ == '__main__':
+    start_server( server_modules )
diff --git a/VisionEgg/PyroApps/FlatGratingGUI.py b/VisionEgg/PyroApps/FlatGratingGUI.py
new file mode 100755
index 0000000..f46aa93
--- /dev/null
+++ b/VisionEgg/PyroApps/FlatGratingGUI.py
@@ -0,0 +1,168 @@
+#!/usr/bin/env python
+#
+# The Vision Egg: FlatGratingGUI
+#
+# Copyright (C) 2001-2003 Andrew Straw.
+# Author: Andrew Straw <astraw at users.sourceforge.net>
+# URL: <http://www.visionegg.org/>
+#
+# Distributed under the terms of the GNU Lesser General Public License
+# (LGPL). See LICENSE.TXT that came with this file.
+
+"""Handle sinusoidal gratings (client-side)"""
+
+import VisionEgg, string
+
+import sys, os
+import Tkinter
+import VisionEgg.PyroApps.EPhysGUIUtils as client_utils
+
+def get_control_list():
+    return [("flat_grating_server",FlatGratingControlFrame,FlatGratingControlFrame.title)]
+
+class FlatGratingMetaParameters:
+    def __init__(self):
+        self.contrast = 1.0
+        self.orient = 0.0
+        self.sf = 0.01 # cycles per pixel
+        self.tf = 1.0
+        self.size_x = 200.0
+        self.size_y = 200.0
+        self.center_x = 320.0
+        self.center_y = 240.0
+        self.pre_stim_sec = 1.0
+        self.stim_sec = 2.0
+        self.post_stim_sec = 1.0
+
+class FlatGratingControlFrame(client_utils.StimulusControlFrame):
+    title = "Grating (2D) Experiment"
+    def __init__(self, master=None, suppress_go_buttons=0,**kw):
+        client_utils.StimulusControlFrame.__init__(self,
+                                                   master,
+                                                   suppress_go_buttons,
+                                                   FlatGratingControlFrame.title,
+                                                   FlatGratingMetaParameters,
+                                                   **kw)
+
+        param_frame = self.param_frame # shorthand for self.param_frame created in base class
+
+        # Allow columns to expand
+        param_frame.columnconfigure(0,weight=1)
+        param_frame.columnconfigure(1,weight=1)
+
+        pf_row = 0
+        Tkinter.Label(param_frame,text="Contrast:").grid(row=pf_row,column=0)
+        self.contrast_tk_var = Tkinter.DoubleVar()
+        self.contrast_tk_var.set(self.meta_params.contrast)
+        self.make_callback_entry(textvariable=self.contrast_tk_var).grid(row=pf_row,column=1)
+        self.loopable_variables["Contrast"] = ("contrast",self.contrast_tk_var)
+
+        pf_row += 1
+        Tkinter.Label(param_frame,text="Orientation (deg):").grid(row=pf_row,column=0)
+        self.orient_tk_var = Tkinter.DoubleVar()
+        self.orient_tk_var.set(self.meta_params.orient)
+        self.make_callback_entry(textvariable=self.orient_tk_var).grid(row=pf_row,column=1)
+        self.loopable_variables["Orientation"] = ("orient",self.orient_tk_var)
+
+        pf_row += 1
+        Tkinter.Label(param_frame,text="Spatial frequency (Cpp):").grid(row=pf_row,column=0)
+        self.sf_tk_var = Tkinter.DoubleVar()
+        self.sf_tk_var.set(self.meta_params.sf)
+        self.make_callback_entry(textvariable=self.sf_tk_var).grid(row=pf_row,column=1)
+        self.loopable_variables["Spatial frequency"] = ("sf",self.sf_tk_var)
+
+        pf_row += 1
+        Tkinter.Label(param_frame,text="Temporal frequency (Hz):").grid(row=pf_row,column=0)
+        self.tf_tk_var = Tkinter.DoubleVar()
+        self.tf_tk_var.set(self.meta_params.tf)
+        self.make_callback_entry(textvariable=self.tf_tk_var).grid(row=pf_row,column=1)
+        self.loopable_variables["Temporal frequency"] = ("tf",self.tf_tk_var)
+
+        pf_row += 1
+        Tkinter.Label(param_frame,text="Size X (pixels):").grid(row=pf_row,column=0)
+        self.size_x_tk_var = Tkinter.DoubleVar()
+        self.size_x_tk_var.set(self.meta_params.size_x)
+        self.make_callback_entry(textvariable=self.size_x_tk_var).grid(row=pf_row,column=1)
+        self.loopable_variables["Size X"] = ("size_x",self.size_x_tk_var)
+
+        pf_row += 1
+        Tkinter.Label(param_frame,text="Size Y (pixels):").grid(row=pf_row,column=0)
+        self.size_y_tk_var = Tkinter.DoubleVar()
+        self.size_y_tk_var.set(self.meta_params.size_y)
+        self.make_callback_entry(textvariable=self.size_y_tk_var).grid(row=pf_row,column=1)
+        self.loopable_variables["Size Y"] = ("size_y",self.size_y_tk_var)
+
+        pf_row += 1
+        Tkinter.Label(param_frame,text="Center X (pixels):").grid(row=pf_row,column=0)
+        self.center_x_tk_var = Tkinter.DoubleVar()
+        self.center_x_tk_var.set(self.meta_params.center_x)
+        self.make_callback_entry(textvariable=self.center_x_tk_var).grid(row=pf_row,column=1)
+        self.loopable_variables["Center X"] = ("center_x",self.center_x_tk_var)
+
+        pf_row += 1
+        Tkinter.Label(param_frame,text="Center Y (pixels):").grid(row=pf_row,column=0)
+        self.center_y_tk_var = Tkinter.DoubleVar()
+        self.center_y_tk_var.set(self.meta_params.center_y)
+        self.make_callback_entry(textvariable=self.center_y_tk_var).grid(row=pf_row,column=1)
+        self.loopable_variables["Center Y"] = ("center_y",self.center_y_tk_var)
+
+        pf_row += 1
+        Tkinter.Label(param_frame,text="Pre stimulus duration (sec):").grid(row=pf_row,column=0)
+        self.prestim_dur_tk_var = Tkinter.DoubleVar()
+        self.prestim_dur_tk_var.set(self.meta_params.pre_stim_sec)
+        self.make_callback_entry(textvariable=self.prestim_dur_tk_var).grid(row=pf_row,column=1)
+
+        pf_row += 1
+        Tkinter.Label(param_frame,text="Stimulus duration (sec):").grid(row=pf_row,column=0)
+        self.stim_dur_tk_var = Tkinter.DoubleVar()
+        self.stim_dur_tk_var.set(self.meta_params.stim_sec)
+        self.make_callback_entry(textvariable=self.stim_dur_tk_var).grid(row=pf_row,column=1)
+
+        pf_row += 1
+        Tkinter.Label(param_frame,text="Post stimulus duration (sec):").grid(row=pf_row,column=0)
+        self.poststim_dur_tk_var = Tkinter.DoubleVar()
+        self.poststim_dur_tk_var.set(self.meta_params.post_stim_sec)
+        self.make_callback_entry(textvariable=self.poststim_dur_tk_var).grid(row=pf_row,column=1)
+
+    def get_shortname(self):
+        return "flat_grating"
+
+    def update_tk_vars(self):
+        self.contrast_tk_var.set( self.meta_params.contrast )
+        self.orient_tk_var.set( self.meta_params.orient )
+        self.sf_tk_var.set( self.meta_params.sf )
+        self.tf_tk_var.set( self.meta_params.tf )
+        self.size_x_tk_var.set( self.meta_params.size_x )
+        self.size_y_tk_var.set( self.meta_params.size_y )
+        self.center_x_tk_var.set( self.meta_params.center_x )
+        self.center_y_tk_var.set( self.meta_params.center_y )
+        self.prestim_dur_tk_var.set( self.meta_params.pre_stim_sec )
+        self.stim_dur_tk_var.set( self.meta_params.stim_sec )
+        self.poststim_dur_tk_var.set( self.meta_params.post_stim_sec )
+
+    def send_values(self,dummy_arg=None):
+        self.meta_params.contrast = self.contrast_tk_var.get()
+        self.meta_params.orient = self.orient_tk_var.get()
+        self.meta_params.sf = self.sf_tk_var.get()
+        self.meta_params.tf = self.tf_tk_var.get()
+        self.meta_params.size_x = self.size_x_tk_var.get()
+        self.meta_params.size_y = self.size_y_tk_var.get()
+        self.meta_params.center_x = self.center_x_tk_var.get()
+        self.meta_params.center_y = self.center_y_tk_var.get()
+        self.meta_params.pre_stim_sec = self.prestim_dur_tk_var.get()
+        self.meta_params.stim_sec = self.stim_dur_tk_var.get()
+        self.meta_params.post_stim_sec = self.poststim_dur_tk_var.get()
+        if self.connected:
+            self.meta_controller.set_parameters( self.meta_params )
+
+    def get_duration_sec(self):
+        self.meta_params.pre_stim_sec = self.prestim_dur_tk_var.get()
+        self.meta_params.stim_sec = self.stim_dur_tk_var.get()
+        self.meta_params.post_stim_sec = self.poststim_dur_tk_var.get()
+        return self.meta_params.pre_stim_sec + self.meta_params.stim_sec + self.meta_params.post_stim_sec
+
+if __name__=='__main__':
+    frame = FlatGratingControlFrame()
+    frame.pack(expand=1,fill=Tkinter.BOTH)
+    frame.winfo_toplevel().title("%s"%(os.path.basename(os.path.splitext(sys.argv[0])[0]),))
+    frame.mainloop()
diff --git a/VisionEgg/PyroApps/FlatGratingServer.py b/VisionEgg/PyroApps/FlatGratingServer.py
new file mode 100755
index 0000000..01908a3
--- /dev/null
+++ b/VisionEgg/PyroApps/FlatGratingServer.py
@@ -0,0 +1,127 @@
+#!/usr/bin/env python
+#
+# The Vision Egg: FlatGratingServer
+#
+# Copyright (C) 2001-2003 Andrew Straw.
+# Author: Andrew Straw <astraw at users.sourceforge.net>
+# URL: <http://www.visionegg.org/>
+#
+# Distributed under the terms of the GNU Lesser General Public License
+# (LGPL). See LICENSE.TXT that came with this file.
+
+"""Handle sinusoidal gratings (server-side)"""
+
+import VisionEgg, string
+
+import sys, os, math
+import VisionEgg.Core
+import VisionEgg.FlowControl
+import VisionEgg.Gratings
+import VisionEgg.PyroHelpers
+import Pyro.core
+
+from VisionEgg.PyroApps.FlatGratingGUI import FlatGratingMetaParameters
+
+class FlatGratingExperimentMetaController( Pyro.core.ObjBase ):
+    def __init__(self,screen,presentation,stimuli):
+
+        # get stimulus
+        assert( stimuli[0][0] == '2d_overlay')
+        grating = stimuli[0][1]
+
+        Pyro.core.ObjBase.__init__(self)
+        self.meta_params = FlatGratingMetaParameters()
+        if not isinstance(screen,VisionEgg.Core.Screen):
+            raise ValueError("Expecting instance of VisionEgg.Core.Screen")
+        if not isinstance(presentation,VisionEgg.FlowControl.Presentation):
+            raise ValueError("Expecting instance of VisionEgg.FlowControl.Presentation")
+        if not isinstance(grating,VisionEgg.Gratings.SinGrating2D):
+            raise ValueError("Expecting instance of VisionEgg.Gratings.SinGrating2D")
+        self.p = presentation
+        self.stim = grating
+
+        screen.parameters.bgcolor = (0.5, 0.5, 0.5, 0.0)
+
+        self.p.add_controller(self.stim,'on',VisionEgg.FlowControl.FunctionController(
+            during_go_func=self.on_function_during_go,
+            between_go_func=self.on_function_between_go))
+
+    def __del__(self):
+        self.p.remove_controller(self.stim,'on')
+        Pyro.core.ObjBase.__del__(self) # call base class
+
+    def on_function_during_go(self,t):
+        """Compute when the grating is on"""
+        if t <= self.meta_params.pre_stim_sec:
+            return 0 # not on yet
+        elif t <= (self.meta_params.pre_stim_sec + self.meta_params.stim_sec):
+            return 1 # on
+        else:
+            return 0 # off again
+
+    def on_function_between_go(self):
+        """Compute when the grating is off"""
+        return 0 # off again
+
+    def get_parameters(self):
+        return self.meta_params
+
+    def set_parameters(self, new_parameters):
+        if isinstance(new_parameters, FlatGratingMetaParameters):
+            self.meta_params = new_parameters
+        else:
+            raise ValueError("Argument to set_parameters must be instance of FlatGratingMetaParameters")
+        self.update()
+
+    def update(self):
+        stim_params = self.stim.parameters # shorthand
+        meta_params = self.meta_params # shorthand
+        stim_params.contrast = meta_params.contrast
+        stim_params.orientation = meta_params.orient
+        stim_params.spatial_freq = meta_params.sf
+        stim_params.temporal_freq_hz = meta_params.tf
+        stim_params.size = (meta_params.size_x, meta_params.size_y)
+        stim_params.position = (meta_params.center_x, meta_params.center_y)
+        self.p.parameters.go_duration = ( meta_params.pre_stim_sec + meta_params.stim_sec + meta_params.post_stim_sec, 'seconds')
+
+    def go(self):
+        self.p.parameters.enter_go_loop = 1
+
+    def quit_server(self):
+        self.p.parameters.quit = 1
+
+def get_meta_controller_class():
+    return FlatGratingExperimentMetaController
+
+def make_stimuli():
+    stimulus = VisionEgg.Gratings.SinGrating2D( spatial_freq=1.0/100.0, # wavelength = 100 pixels
+                                                temporal_freq_hz = 1.0,
+                                                anchor='center',
+                                                )
+    return [('2d_overlay',stimulus)]
+
+def get_meta_controller_stimkey():
+    return "flat_grating_server"
+
+# Don't do anything unless this script is being run
+if __name__ == '__main__':
+
+    pyro_server = VisionEgg.PyroHelpers.PyroServer()
+
+    screen = VisionEgg.Core.Screen.create_default()
+
+    # get Vision Egg stimulus ready to go
+    stimuli = make_stimuli()
+    stimulus = stimuli[0][1]
+    viewport = VisionEgg.Core.Viewport(screen=screen,stimuli=[stimulus])
+    p = VisionEgg.FlowControl.Presentation(viewports=[viewport])
+
+    # now hand over control of grating and mask to FlatGratingExperimentMetaController
+    meta_controller = FlatGratingExperimentMetaController(screen,p,stimuli)
+    pyro_server.connect(meta_controller,get_meta_controller_stimkey())
+
+    # get listener controller and register it
+    p.add_controller(None,None, pyro_server.create_listener_controller())
+
+    # enter endless loop
+    p.run_forever()
diff --git a/VisionEgg/PyroApps/GridGUI.py b/VisionEgg/PyroApps/GridGUI.py
new file mode 100755
index 0000000..3355fe7
--- /dev/null
+++ b/VisionEgg/PyroApps/GridGUI.py
@@ -0,0 +1,56 @@
+#!/usr/bin/env python
+#
+# The Vision Egg: GridGUI
+#
+# Copyright (C) 2001-2003 Andrew Straw.
+# Author: Andrew Straw <astraw at users.sourceforge.net>
+# URL: <http://www.visionegg.org/>
+#
+# Distributed under the terms of the GNU Lesser General Public License
+# (LGPL). See LICENSE.TXT that came with this file.
+
+import VisionEgg, string
+
+import sys, os
+import Tkinter
+import VisionEgg.PyroApps.EPhysGUIUtils as client_utils
+
+def get_control_list():
+    return [("grid_server",GridControlFrame,GridControlFrame.title)]
+
+class GridMetaParameters:
+    def __init__(self):
+        pass
+
+class GridControlFrame(client_utils.StimulusControlFrame):
+    title = "Grid for 3D calibration"
+    def __init__(self, master=None, suppress_go_buttons=0,**kw):
+        client_utils.StimulusControlFrame.__init__(self,
+                                                   master,
+                                                   suppress_go_buttons,
+                                                   GridControlFrame.title,
+                                                   GridMetaParameters,
+                                                   **kw)
+        Tkinter.Label( self.param_frame,
+                       text="No variables to control" ).grid()
+
+    def get_shortname(self):
+        """Used as basename for saving parameter files"""
+        return "grid"
+
+    def update_tk_vars(self):
+        pass
+
+    def send_values(self,dummy_arg=None):
+        pass
+        if self.connected:
+            self.meta_controller.set_parameters( self.meta_params )
+
+    def get_duration_sec(self):
+        return 0.0
+
+if __name__=='__main__':
+    frame = GridControlFrame()
+    frame.pack(expand=1,fill=Tkinter.BOTH)
+    frame.winfo_toplevel().title("%s"%(os.path.basename(os.path.splitext(sys.argv[0])[0]),))
+    frame.mainloop()
diff --git a/VisionEgg/PyroApps/GridServer.py b/VisionEgg/PyroApps/GridServer.py
new file mode 100755
index 0000000..fd0f9f7
--- /dev/null
+++ b/VisionEgg/PyroApps/GridServer.py
@@ -0,0 +1,110 @@
+#!/usr/bin/env python
+#
+# The Vision Egg: GridServer
+#
+# Copyright (C) 2001-2003 Andrew Straw.
+# Author: Andrew Straw <astraw at users.sourceforge.net>
+# URL: <http://www.visionegg.org/>
+#
+# Distributed under the terms of the GNU Lesser General Public License
+# (LGPL). See LICENSE.TXT that came with this file.
+
+import VisionEgg, string
+
+import sys, os, math
+import VisionEgg.Core
+import VisionEgg.FlowControl
+import VisionEgg.Textures
+import VisionEgg.SphereMap
+import VisionEgg.PyroHelpers
+import Pyro.core
+
+from VisionEgg.PyroApps.ScreenPositionServer import ScreenPositionMetaController
+from VisionEgg.PyroApps.ScreenPositionGUI import ScreenPositionParameters
+from VisionEgg.PyroApps.GridGUI import GridMetaParameters
+
+class GridMetaController( Pyro.core.ObjBase ):
+    def __init__(self,screen,presentation,stimuli):
+
+        # get the instance of Stimulus that was created
+        assert( stimuli[0][0] == '3d_perspective_with_set_viewport_callback' )
+        grid = stimuli[0][1]
+
+        Pyro.core.ObjBase.__init__(self)
+        self.meta_params = GridMetaParameters()
+        if not isinstance(screen,VisionEgg.Core.Screen):
+            raise ValueError("Expecting instance of VisionEgg.Core.Screen")
+        if not isinstance(presentation,VisionEgg.FlowControl.Presentation):
+            raise ValueError("Expecting instance of VisionEgg.FlowControl.Presentation")
+        if not isinstance(grid,VisionEgg.SphereMap.AzElGrid):
+            raise ValueError("Expecting instance of VisionEgg.SphereMap.SphereMap")
+        self.p = presentation
+        self.stim = grid
+
+        screen.parameters.bgcolor = (1.0, 1.0, 1.0, 0.0)
+
+    def get_parameters(self):
+        return self.meta_params
+
+    def set_parameters(self, new_parameters):
+        if isinstance(new_parameters, GridMetaParameters):
+            self.meta_params = new_parameters
+        else:
+            raise ValueError("Argument to set_parameters must be instance of GridMetaParameters")
+        self.update()
+
+    def update(self):
+        self.p.parameters.go_duration = ( 0.0, 'seconds')
+
+    def go(self):
+        self.p.parameters.enter_go_loop = 1
+
+    def quit_server(self):
+        self.p.parameters.quit = 1
+
+def get_meta_controller_class():
+    return GridMetaController
+
+def make_stimuli():
+    stimulus = VisionEgg.SphereMap.AzElGrid()
+    def set_az_el_grid_viewport(viewport):
+        stimulus.parameters.my_viewport = viewport
+    return [('3d_perspective_with_set_viewport_callback',stimulus,set_az_el_grid_viewport)] # return ordered list of tuples
+
+def get_meta_controller_stimkey():
+    return "grid_server"
+
+# Don't do anything unless this script is being run
+if __name__ == '__main__':
+
+    pyro_server = VisionEgg.PyroHelpers.PyroServer()
+
+    screen = VisionEgg.Core.Screen.create_default()
+
+    # get Vision Egg stimulus ready to go
+    stimuli = make_stimuli()
+    stimulus = stimuli[0][1]
+    temp = ScreenPositionParameters()
+
+    projection = VisionEgg.Core.PerspectiveProjection(temp.left,
+                                                      temp.right,
+                                                      temp.bottom,
+                                                      temp.top,
+                                                      temp.near,
+                                                      temp.far)
+    viewport = VisionEgg.Core.Viewport(screen=screen,stimuli=[stimulus],projection=projection)
+    p = VisionEgg.FlowControl.Presentation(viewports=[viewport])
+
+    # now hand over control of projection to ScreenPositionMetaController
+    projection_controller = ScreenPositionMetaController(p,projection)
+    pyro_server.connect(projection_controller,"projection_controller")
+
+    # now hand over control of drum to GridMetaController
+    meta_controller = GridMetaController(screen,p,stimuli)
+    pyro_server.connect(meta_controller,get_meta_controller_stimkey())
+
+    # get listener controller and register it
+    p.add_controller(None,None, pyro_server.create_listener_controller())
+
+    # enter endless loop
+    p.run_forever()
diff --git a/VisionEgg/PyroApps/MouseTargetGUI.py b/VisionEgg/PyroApps/MouseTargetGUI.py
new file mode 100755
index 0000000..4f8f36a
--- /dev/null
+++ b/VisionEgg/PyroApps/MouseTargetGUI.py
@@ -0,0 +1,91 @@
+#!/usr/bin/env python
+#
+# The Vision Egg: MouseTargetGUI
+#
+# Copyright (C) 2001-2003 Andrew Straw.
+# Author: Andrew Straw <astraw at users.sourceforge.net>
+# URL: <http://www.visionegg.org/>
+#
+# Distributed under the terms of the GNU Lesser General Public License
+# (LGPL). See LICENSE.TXT that came with this file.
+
+"""Handle mouse controlled small target stimulus (client-side)"""
+
+import VisionEgg, string
+
+import sys, os
+import Tkinter
+import VisionEgg.PyroApps.EPhysGUIUtils as client_utils
+
+def get_control_list():
+    return [("mouse_target_server",MouseTargetControlFrame,MouseTargetControlFrame.title)]
+
+class MouseTargetMetaParameters:
+    def __init__(self):
+        # colors
+        self.color = (0.0, 0.0, 0.0, 1.0)
+        self.bgcolor = (1.0, 1.0, 1.0, 0.0)
+
+class MouseTargetControlFrame(client_utils.StimulusControlFrame):
+    title = "Mouse Controlled Moving Target"
+    def __init__(self, master=None, suppress_go_buttons=0,**kw):
+        client_utils.StimulusControlFrame.__init__(self,
+                                                   master,
+                                                   suppress_go_buttons,
+                                                   MouseTargetControlFrame.title,
+                                                   MouseTargetMetaParameters,
+                                                   **kw)
+
+        param_frame = self.param_frame # shorthand for self.param_frame created in base class
+
+        # Allow columns to expand
+        param_frame.columnconfigure(0,weight=1)
+        param_frame.columnconfigure(1,weight=1)
+
+        pf_row = 0
+        Tkinter.Label(param_frame,text="Color:").grid(row=pf_row,column=0)
+        self.color_tk_var = Tkinter.StringVar()
+        self.color_tk_var.set("black on white")
+        bar = Tkinter.Menubutton(param_frame, textvariable=self.color_tk_var, relief=Tkinter.RAISED)
+        bar.grid(row=pf_row, column=2, sticky=Tkinter.W+Tkinter.E, pady=2, padx=2)
+        bar.menu = Tkinter.Menu(bar,tearoff=0)
+        bar.menu.add_radiobutton(label="white on black",
+                                 value="white on black",
+                                 variable=self.color_tk_var,
+                                 command=self.send_values)
+        bar.menu.add_radiobutton(label="black on white",
+                                 value="black on white",
+                                 variable=self.color_tk_var,
+                                 command=self.send_values)
+        bar['menu'] = bar.menu
+
+    def get_shortname(self):
+        return "mouse_target"
+
+    def update_tk_vars(self):
+        if self.meta_params.color == (0.0,0.0,0.0,1.0) and self.meta_params.bgcolor == (1.0,1.0,1.0,0.0):
+            self.color_tk_var.set( "black on white" )
+        elif self.meta_params.color == (1.0,1.0,1.0,1.0) and self.meta_params.bgcolor == (0.0,0.0,0.0,0.0):
+            self.color_tk_var.set( "white on black" )
+        else:
+            raise RuntimeError("Cannot set tk variable for color")
+
+    def send_values(self,dummy_arg=None):
+        if self.color_tk_var.get() == "black on white":
+            self.meta_params.color = (0.0,0.0,0.0,1.0)
+            self.meta_params.bgcolor = (1.0,1.0,1.0,0.0)
+        elif self.color_tk_var.get() == "white on black":
+            self.meta_params.color = (1.0,1.0,1.0,1.0)
+            self.meta_params.bgcolor = (0.0,0.0,0.0,0.0)
+
+        if self.connected:
+            self.meta_controller.set_parameters( self.meta_params )
+
+    def get_duration_sec(self):
+        return 0.0
+
+if __name__=='__main__':
+    frame = MouseTargetControlFrame()
+    frame.pack(expand=1,fill=Tkinter.BOTH)
+    frame.winfo_toplevel().title("%s"%(os.path.basename(os.path.splitext(sys.argv[0])[0]),))
+    frame.mainloop()
diff --git a/VisionEgg/PyroApps/MouseTargetServer.py b/VisionEgg/PyroApps/MouseTargetServer.py
new file mode 100755
index 0000000..5a514e1
--- /dev/null
+++ b/VisionEgg/PyroApps/MouseTargetServer.py
@@ -0,0 +1,249 @@
+#!/usr/bin/env python
+#
+# The Vision Egg: MouseTargetServer
+#
+# Copyright (C) 2001-2003 Andrew Straw.
+# Author: Andrew Straw <astraw at users.sourceforge.net>
+# URL: <http://www.visionegg.org/>
+#
+# Distributed under the terms of the GNU Lesser General Public License
+# (LGPL). See LICENSE.TXT that came with this file.
+
+"""Handle mouse-controlled small targets (server-side)"""
+
+import VisionEgg, string
+import VisionEgg.ParameterTypes as ve_types
+
+import sys, os, math
+import VisionEgg.Core
+import VisionEgg.FlowControl
+import VisionEgg.MoreStimuli
+import VisionEgg.PyroHelpers
+import Pyro.core
+import pygame, pygame.locals
+
+from VisionEgg.PyroApps.MouseTargetGUI import MouseTargetMetaParameters
+
+# Variables to store the mouse position
+mouse_position = (320.0, 240.0)
+last_mouse_position = (0.0,0.0)
+
+# target size global variables
+target_w = 50.0
+target_h = 10.0
+
+# key state global variables
+up = 0
+down = 0
+left = 0
+right = 0
+
+def keydown(event):
+    global up, down, left, right
+    if event.key == pygame.locals.K_UP:
+        up = 1
+    elif event.key == pygame.locals.K_DOWN:
+        down = 1
+    elif event.key == pygame.locals.K_RIGHT:
+        right = 1
+    elif event.key == pygame.locals.K_LEFT:
+        left = 1
+
+def keyup(event):
+    global up, down, left, right
+    if event.key == pygame.locals.K_UP:
+        up = 0
+    elif event.key == pygame.locals.K_DOWN:
+        down = 0
+    elif event.key == pygame.locals.K_RIGHT:
+        right = 0
+    elif event.key == pygame.locals.K_LEFT:
+        left = 0
+
+handle_event_callbacks = [(pygame.locals.KEYDOWN, keydown),
+                          (pygame.locals.KEYUP, keyup)]
+
+class MouseTargetExperimentMetaController( Pyro.core.ObjBase ):
+    def __init__(self,screen,presentation,stimuli):
+        global screen_global
+        screen_global = screen
+        # get stimulus
+        assert( stimuli[0][0] == '2d_overlay')
+        target = stimuli[0][1]
+
+        Pyro.core.ObjBase.__init__(self)
+        self.meta_params = MouseTargetMetaParameters()
+        if not isinstance(screen,VisionEgg.Core.Screen):
+            raise ValueError("Expecting instance of VisionEgg.Core.Screen")
+        if not isinstance(presentation,VisionEgg.FlowControl.Presentation):
+            raise ValueError("Expecting instance of VisionEgg.FlowControl.Presentation")
+        if not isinstance(target,VisionEgg.MoreStimuli.Target2D):
+            raise ValueError("Expecting instance of VisionEgg.MoreStimuli.Target2D")
+
+        self.screen = screen
+        self.p = presentation
+        self.stim = target
+
+        self.p.add_controller(target,'position', TargetPositionController())
+        self.p.add_controller(target,'size', VisionEgg.FlowControl.FunctionController(during_go_func=get_target_size,
+                                                                between_go_func=get_target_size) )
+        self.p.add_controller(target,'orientation', TargetOrientationController() )
+        self.mouse_position_controller = MousePositionController()
+        self.p.add_controller(None,None,self.mouse_position_controller)
+        self.orig_event_handlers = self.p.parameters.handle_event_callbacks
+        self.p.parameters.handle_event_callbacks = handle_event_callbacks
+
+        self.update() # set stimulus parameters to initial defaults
+
+    def __del__(self):
+        self.p.parameters.handle_event_callbacks = self.orig_event_handlers
+        self.p.remove_controller(None,None,self.mouse_position_controller)
+        self.p.remove_controller(self.stim,'position')
+        self.p.remove_controller(self.stim,'size')
+        self.p.remove_controller(self.stim,'orientation')
+
+    def get_parameters(self):
+        return self.meta_params
+
+    def set_parameters(self, new_parameters):
+        if isinstance(new_parameters, MouseTargetMetaParameters):
+            self.meta_params = new_parameters
+        else:
+            raise ValueError("Argument to set_parameters must be instance of MouseTargetMetaParameters")
+        self.update()
+
+    def update(self):
+        stim_params = self.stim.parameters # shorthand
+        meta_params = self.meta_params # shorthand
+
+        # colors
+        stim_params.color = meta_params.color
+        self.screen.parameters.bgcolor = meta_params.bgcolor
+
+    def go(self):
+        pass
+        #self.p.parameters.enter_go_loop = 1
+
+    def quit_server(self):
+        self.p.parameters.quit = 1
+
+def get_meta_controller_class():
+    return MouseTargetExperimentMetaController
+
+def make_stimuli():
+    stimulus = VisionEgg.MoreStimuli.Target2D(anchor='center')
+    return [('2d_overlay',stimulus)]
+
+def get_meta_controller_stimkey():
+    return "mouse_target_server"
+
+########################
+#  Define controllers  #
+########################
+
+class MousePositionController( VisionEgg.FlowControl.Controller ):
+    def __init__(self):
+        global mouse_position
+        VisionEgg.FlowControl.Controller.__init__(self,
+                            return_type=ve_types.get_type(None),
+                            eval_frequency=VisionEgg.FlowControl.Controller.EVERY_FRAME)
+        self.between_go_eval = self.during_go_eval
+
+    def during_go_eval(self,t=None):
+        # Convert pygame mouse position to OpenGL position
+        global mouse_position, last_mouse_position, screen_global
+        just_current_pos = mouse_position
+        (x,y) = pygame.mouse.get_pos()
+        y = screen_global.size[1]-y
+        mouse_position = (x,y)
+        if just_current_pos != mouse_position:
+            last_mouse_position = just_current_pos
+        return None
+
+class TargetPositionController( VisionEgg.FlowControl.Controller ):
+    def __init__(self):
+        global mouse_position
+        VisionEgg.FlowControl.Controller.__init__(self,
+                            return_type=ve_types.Sequence2(ve_types.Real),
+                            eval_frequency=VisionEgg.FlowControl.Controller.EVERY_FRAME)
+        self.between_go_eval = self.during_go_eval
+
+    def during_go_eval(self,t=None):
+        global mouse_position
+        return mouse_position
+
+def cross_product(b,c):
+    """Cross product between vectors, represented as tuples of length 3."""
+    det_i = b[1]*c[2] - b[2]*c[1]
+    det_j = b[0]*c[2] - b[2]*c[0]
+    det_k = b[0]*c[1] - b[1]*c[0]
+    return (det_i,-det_j,det_k)
+
+def mag(b):
+    """Magnitude of a vector."""
+    return b[0]**2.0 + b[1]**2.0 + b[2]**2.0
+
+class TargetOrientationController( VisionEgg.FlowControl.Controller ):
+    def __init__(self):
+        VisionEgg.FlowControl.Controller.__init__(self,
+                            return_type=ve_types.Real,
+                            eval_frequency=VisionEgg.FlowControl.Controller.EVERY_FRAME)
+        self.c = (0.0,0.0,1.0)
+        self.last_orientation = 0.0
+        self.between_go_eval = self.during_go_eval
+
+    def during_go_eval(self):
+        global mouse_position, last_mouse_position
+
+        b = (float(last_mouse_position[0]-mouse_position[0]),
+             float(last_mouse_position[1]-mouse_position[1]),
+             0.0)
+
+        if mag(b) > 1.0: # Must mouse 1 pixel before changing orientation (supposed to reject noise)
+            # find cross product b x c. assume b and c are 3-vecs, b has
+            # 3rd component 0.
+            orientation_vector = cross_product(b,self.c)
+            self.last_orientation = math.atan2(orientation_vector[1],orientation_vector[0])/math.pi*180.0
+        return self.last_orientation
+
+def get_target_size(t=None):
+    global target_w, target_h
+    global up, down, left, right
+
+    amount = 0.02
+
+    if up:
+        target_w = target_w+(amount*target_w)
+    elif down:
+        target_w = target_w-(amount*target_w)
+    elif right:
+        target_h = target_h+(amount*target_h)
+    elif left:
+        target_h = target_h-(amount*target_h)
+    target_w = max(target_w,0.0)
+    target_h = max(target_h,0.0)
+
+    return (target_w, target_h)
+
+# Don't do anything unless this script is being run
+if __name__ == '__main__':
+
+    pyro_server = VisionEgg.PyroHelpers.PyroServer()
+
+    screen = VisionEgg.Core.Screen.create_default()
+
+    # get Vision Egg stimulus ready to go
+    stimuli = make_stimuli()
+    stimulus = stimuli[0][1]
+    viewport = VisionEgg.Core.Viewport(screen=screen,stimuli=[stimulus])
+    p = VisionEgg.FlowControl.Presentation(viewports=[viewport])
+
+    # now hand over control of grating and mask to FlatGratingExperimentMetaController
+    meta_controller = MouseTargetExperimentMetaController(screen,p,stimuli)
+    pyro_server.connect(meta_controller,get_meta_controller_stimkey())
+
+    # get listener controller and register it
+    p.add_controller(None,None, pyro_server.create_listener_controller())
+
+    # enter endless loop
+    p.run_forever()
diff --git a/VisionEgg/PyroApps/ScreenPositionGUI.py b/VisionEgg/PyroApps/ScreenPositionGUI.py
new file mode 100755
index 0000000..df49021
--- /dev/null
+++ b/VisionEgg/PyroApps/ScreenPositionGUI.py
@@ -0,0 +1,561 @@
+#!/usr/bin/env python
+#
+# The Vision Egg: ScreenPositionGUI
+#
+# Copyright (C) 2001-2003 Andrew Straw.
+# Author: Andrew Straw <astraw at users.sourceforge.net>
+# URL: <http://www.visionegg.org/>
+#
+# Distributed under the terms of the GNU Lesser General Public License
+# (LGPL). See LICENSE.TXT that came with this file.
+
+"""Handle 3D perspective projection (client-side)"""
+
+import sys, os, pickle, math, string
+import Tkinter, tkFileDialog
+import Pyro.core
+import VisionEgg.PyroClient
+import StringIO
+
+class ScreenPositionParameters:
+    def __init__(self):
+
+        # frustum (initial values - view portion of unit sphere)
+        self.left = -0.2
+        self.right = 0.2
+        self.top = 0.2
+        self.bottom = -0.2
+        self.near = 0.2
+        self.far = 20.0
+
+        # position/orientation
+        self.eye = (0.0, 0.0, 0.0) # observer position
+        self.center = (0.0, 0.0, -1.0) # center of gaze
+        self.up = (0.0, 1.0, 0.0) # up vector
+
+class CallbackEntry(Tkinter.Entry):
+    def __init__(self,master=None,callback=None,**kw):
+        Tkinter.Entry.__init__(self,master, **kw)
+        self.bind('<Return>',callback)
+        self.bind('<Tab>',callback)
+
+class ScreenPositionControlFrame(Tkinter.Frame):
+    def __init__(self, master=None, auto_connect=0, server_hostname='', server_port=7766, **kw):
+        Tkinter.Frame.__init__(self,master,**kw)
+        self.pyro_client = None
+        self.entry_width = 10
+        self.connected = 0
+        self.meta_params = ScreenPositionParameters()
+        self.loopable_variables = {}
+
+        row = 0
+        Tkinter.Label(self,
+                      text="3D Perspective Calibration",
+                      font=("Helvetica",12,"bold")).grid(row=row,column=0,columnspan=2)
+
+        row += 1
+        Tkinter.Label(self,
+                      text="This dialog allows you to enter acheive "+\
+                      "the proper perspective distortion for 3D scenes."
+                      ).grid(row=row,column=0,columnspan=2)
+
+        if not auto_connect:
+            row += 1
+            # let columns expand
+            connected_frame = Tkinter.Frame(self)
+            connected_frame.grid(row=row,column=0,columnspan=2,sticky=Tkinter.W+Tkinter.E)
+            connected_frame.columnconfigure(0,weight=1)
+            connected_frame.columnconfigure(1,weight=1)
+            connected_frame.columnconfigure(2,weight=1)
+
+            self.connected_label = Tkinter.Label(connected_frame,text="Server status: Not connected")
+            self.connected_label.grid(row=0,column=0)
+            Tkinter.Button(connected_frame,text="Connect",command=self.connect).grid(row=0,column=1)
+            Tkinter.Button(connected_frame,text="Quit server",command=self.quit_server).grid(row=0,column=2)
+
+        row += 1
+        param_frame = Tkinter.Frame(self)
+        param_frame.grid(row=row,column=0,sticky=Tkinter.N)
+        param_frame.columnconfigure(0,weight=1)
+        param_frame.columnconfigure(1,weight=1)
+
+        pf_row = 0
+        frustum_frame = Tkinter.Frame(param_frame)
+        frustum_frame.grid(row=pf_row,column=0,columnspan=2,ipady=5)
+
+        ff_row = 0
+        Tkinter.Label(frustum_frame,
+                      text="Viewing volume size",
+                      font=("Helvetica",12,"bold")).grid(row=ff_row,column=0,columnspan=3,ipady=5)
+
+        ff_row += 1
+        Tkinter.Label(frustum_frame,text="Left:").grid(row=ff_row,column=0)
+        self.left_tk_var = Tkinter.DoubleVar()
+        self.left_tk_var.set(self.meta_params.left)
+        CallbackEntry(frustum_frame,
+                      self.send_values,
+                      width=self.entry_width,
+                      textvariable=self.left_tk_var).grid(row=ff_row,column=1)
+
+        ff_row += 1
+        Tkinter.Label(frustum_frame,text="Right:").grid(row=ff_row,column=0)
+        self.right_tk_var = Tkinter.DoubleVar()
+        self.right_tk_var.set(self.meta_params.right)
+        CallbackEntry(frustum_frame,
+                      self.send_values,
+                      width=self.entry_width,
+                      textvariable=self.right_tk_var).grid(row=ff_row,column=1)
+
+        ff_row += 1
+        Tkinter.Label(frustum_frame,text="Top:").grid(row=ff_row,column=0)
+        self.top_tk_var = Tkinter.DoubleVar()
+        self.top_tk_var.set(self.meta_params.top)
+        CallbackEntry(frustum_frame,
+                      self.send_values,
+                      width=self.entry_width,
+                      textvariable=self.top_tk_var).grid(row=ff_row,column=1)
+
+        ff_row += 1
+        Tkinter.Label(frustum_frame,text="Bottom:").grid(row=ff_row,column=0)
+        self.bottom_tk_var = Tkinter.DoubleVar()
+        self.bottom_tk_var.set(self.meta_params.bottom)
+        CallbackEntry(frustum_frame,
+                      self.send_values,
+                      width=self.entry_width,
+                      textvariable=self.bottom_tk_var).grid(row=ff_row,column=1)
+
+        ff_row += 1
+        Tkinter.Label(frustum_frame,text="Near:").grid(row=ff_row,column=0)
+        self.near_tk_var = Tkinter.DoubleVar()
+        self.near_tk_var.set(self.meta_params.near)
+        CallbackEntry(frustum_frame,
+                      self.send_values,
+                      width=self.entry_width,
+                      textvariable=self.near_tk_var).grid(row=ff_row,column=1)
+
+        ff_row += 1
+        Tkinter.Label(frustum_frame,text="Far:").grid(row=ff_row,column=0)
+        self.far_tk_var = Tkinter.DoubleVar()
+        self.far_tk_var.set(self.meta_params.far)
+        CallbackEntry(frustum_frame,
+                      self.send_values,
+                      width=self.entry_width,
+                      textvariable=self.far_tk_var).grid(row=ff_row,column=1)
+
+        # quick frustum frame
+        qf_frame = Tkinter.Frame(frustum_frame)
+        qf_frame.grid(row=1,column=2,rowspan=ff_row)
+
+        qf_row = 0
+        Tkinter.Button(qf_frame,text="Taller",command=self.frustum_taller).grid(row=qf_row,column=0,columnspan=2)
+        qf_row += 1
+        Tkinter.Button(qf_frame,text="Narrower",command=self.frustum_narrower).grid(row=qf_row,column=0)
+        Tkinter.Button(qf_frame,text="Wider",command=self.frustum_wider).grid(row=qf_row,column=1)
+        qf_row += 1
+        Tkinter.Button(qf_frame,text="Shorter",command=self.frustum_shorter).grid(row=qf_row,column=0,columnspan=2)
+
+        qf_row = 0
+        Tkinter.Button(qf_frame,text="Up",command=self.frustum_up).grid(row=qf_row,column=2,columnspan=2)
+        qf_row += 1
+        Tkinter.Button(qf_frame,text="Left",command=self.frustum_left).grid(row=qf_row,column=2)
+        Tkinter.Button(qf_frame,text="Right",command=self.frustum_right).grid(row=qf_row,column=3)
+        qf_row += 1
+        Tkinter.Button(qf_frame,text="Down",command=self.frustum_down).grid(row=qf_row,column=2,columnspan=2)
+
+        pf_row += 1
+        lookat_frame = Tkinter.Frame(param_frame)
+        lookat_frame.grid(row=pf_row,column=0,columnspan=2,ipady=5)
+
+        la_row = 0
+        Tkinter.Label(lookat_frame,
+                      text="Viewing volume orientation",
+                      font=("Helvetica",12,"bold")).grid(row=la_row,column=0,columnspan=3,ipady=5)
+
+        la_row += 1
+        Tkinter.Label(lookat_frame,text="eye X:").grid(row=la_row,column=0)
+        self.eye_x_tk_var = Tkinter.DoubleVar()
+        self.eye_x_tk_var.set(self.meta_params.eye[0])
+        CallbackEntry(lookat_frame,
+                      self.send_values,
+                      width=self.entry_width,
+                      textvariable=self.eye_x_tk_var).grid(row=la_row,column=1)
+
+        la_row += 1
+        Tkinter.Label(lookat_frame,text="eye Y:").grid(row=la_row,column=0)
+        self.eye_y_tk_var = Tkinter.DoubleVar()
+        self.eye_y_tk_var.set(self.meta_params.eye[1])
+        CallbackEntry(lookat_frame,
+                      self.send_values,
+                      width=self.entry_width,
+                      textvariable=self.eye_y_tk_var).grid(row=la_row,column=1)
+
+        la_row += 1
+        Tkinter.Label(lookat_frame,text="eye Z:").grid(row=la_row,column=0)
+        self.eye_z_tk_var = Tkinter.DoubleVar()
+        self.eye_z_tk_var.set(self.meta_params.eye[2])
+        CallbackEntry(lookat_frame,
+                      self.send_values,
+                      width=self.entry_width,
+                      textvariable=self.eye_z_tk_var).grid(row=la_row,column=1)
+
+        la_row += 1
+        Tkinter.Label(lookat_frame,text="look at X:").grid(row=la_row,column=0)
+        self.center_x_tk_var = Tkinter.DoubleVar()
+        self.center_x_tk_var.set(self.meta_params.center[0])
+        CallbackEntry(lookat_frame,
+                      self.send_values,
+                      width=self.entry_width,
+                      textvariable=self.center_x_tk_var).grid(row=la_row,column=1)
+
+        quick_la_frame = Tkinter.Frame(lookat_frame)
+        quick_la_frame.grid(row=la_row,column=2,rowspan=3)
+        qla_row = 0
+        Tkinter.Button(quick_la_frame,text="Look at az -",command=self.az_decrease).grid(row=qla_row,column=0)
+        Tkinter.Button(quick_la_frame,text="Look at az +",command=self.az_increase).grid(row=qla_row,column=1)
+        self.look_at_az_str = Tkinter.StringVar()
+        Tkinter.Label(quick_la_frame,textvariable=self.look_at_az_str).grid(row=qla_row,column=2)
+
+        qla_row += 1
+        Tkinter.Button(quick_la_frame,text="Look at el -",command=self.el_decrease).grid(row=qla_row,column=0)
+        Tkinter.Button(quick_la_frame,text="Look at el +",command=self.el_increase).grid(row=qla_row,column=1)
+        self.look_at_el_str = Tkinter.StringVar()
+        Tkinter.Label(quick_la_frame,textvariable=self.look_at_el_str).grid(row=qla_row,column=2)
+
+        az,el = self.get_az_el(self.meta_params.center)
+        self.look_at_az_str.set("%.1f"%az)
+        self.look_at_el_str.set("%.1f"%el)
+
+        la_row += 1
+        Tkinter.Label(lookat_frame,text="look at Y:").grid(row=la_row,column=0)
+        self.center_y_tk_var = Tkinter.DoubleVar()
+        self.center_y_tk_var.set(self.meta_params.center[1])
+        CallbackEntry(lookat_frame,
+                      self.send_values,
+                      width=self.entry_width,
+                      textvariable=self.center_y_tk_var).grid(row=la_row,column=1)
+
+        la_row += 1
+        Tkinter.Label(lookat_frame,text="look at Z:").grid(row=la_row,column=0)
+        self.center_z_tk_var = Tkinter.DoubleVar()
+        self.center_z_tk_var.set(self.meta_params.center[2])
+        CallbackEntry(lookat_frame,
+                      self.send_values,
+                      width=self.entry_width,
+                      textvariable=self.center_z_tk_var).grid(row=la_row,column=1)
+
+        la_row += 1
+        Tkinter.Label(lookat_frame,text="up X:").grid(row=la_row,column=0)
+        self.up_x_tk_var = Tkinter.DoubleVar()
+        self.up_x_tk_var.set(self.meta_params.up[0])
+        CallbackEntry(lookat_frame,
+                      self.send_values,
+                      width=self.entry_width,
+                      textvariable=self.up_x_tk_var).grid(row=la_row,column=1)
+
+        quick_up_frame = Tkinter.Frame(lookat_frame)
+        quick_up_frame.grid(row=la_row,column=2,rowspan=3)
+        qup_row = 0
+        Tkinter.Button(quick_up_frame,text="Up az -",command=self.up_az_decrease).grid(row=qup_row,column=0)
+        Tkinter.Button(quick_up_frame,text="Up az +",command=self.up_az_increase).grid(row=qup_row,column=1)
+        self.up_az_str = Tkinter.StringVar()
+        Tkinter.Label(quick_up_frame,textvariable=self.up_az_str).grid(row=qup_row,column=2)
+        qup_row += 1
+        Tkinter.Button(quick_up_frame,text="Up el -",command=self.up_el_decrease).grid(row=qup_row,column=0)
+        Tkinter.Button(quick_up_frame,text="Up el +",command=self.up_el_increase).grid(row=qup_row,column=1)
+        self.up_el_str = Tkinter.StringVar()
+        Tkinter.Label(quick_up_frame,textvariable=self.up_el_str).grid(row=qup_row,column=2)
+
+        az,el = self.get_az_el(self.meta_params.up)
+        self.up_az_str.set("%.1f"%az)
+        self.up_el_str.set("%.1f"%el)
+
+        la_row += 1
+        Tkinter.Label(lookat_frame,text="up Y:").grid(row=la_row,column=0)
+        self.up_y_tk_var = Tkinter.DoubleVar()
+        self.up_y_tk_var.set(self.meta_params.up[1])
+        CallbackEntry(lookat_frame,
+                      self.send_values,
+                      width=self.entry_width,
+                      textvariable=self.up_y_tk_var).grid(row=la_row,column=1)
+
+        la_row += 1
+        Tkinter.Label(lookat_frame,text="up Z:").grid(row=la_row,column=0)
+        self.up_z_tk_var = Tkinter.DoubleVar()
+        self.up_z_tk_var.set(self.meta_params.up[2])
+        CallbackEntry(lookat_frame,
+                      self.send_values,
+                      width=self.entry_width,
+                      textvariable=self.up_z_tk_var).grid(row=la_row,column=1)
+
+        row += 1
+        button_row_frame = Tkinter.Frame(self)
+        button_row_frame.grid(row=row,column=0,ipady=5)
+        Tkinter.Label(button_row_frame,
+                      text="File operations",
+                      font=("Helvetica",12,"bold")).grid(row=0,column=0,columnspan=2,ipady=5)
+        Tkinter.Button(button_row_frame,text="Save...",command=self.save).grid(row=1,column=0)
+        Tkinter.Button(button_row_frame,text="Load...",command=self.load).grid(row=1,column=1)
+
+        if auto_connect:
+            self.connect(server_hostname,server_port)
+
+    def frustum_narrower(self,dummy_arg=None): # callback
+        self.left_tk_var.set(self.meta_params.left*(1.0/1.05))
+        self.right_tk_var.set(self.meta_params.right*(1.0/1.05))
+        self.send_values()
+
+    def frustum_wider(self,dummy_arg=None): # callback
+        self.left_tk_var.set(self.meta_params.left*1.05)
+        self.right_tk_var.set(self.meta_params.right*1.05)
+        self.send_values()
+
+    def frustum_shorter(self,dummy_arg=None): # callback
+        self.bottom_tk_var.set(self.meta_params.bottom*(1.0/1.05))
+        self.top_tk_var.set(self.meta_params.top*(1.0/1.05))
+        self.send_values()
+
+    def frustum_taller(self,dummy_arg=None): # callback
+        self.bottom_tk_var.set(self.meta_params.bottom*1.05)
+        self.top_tk_var.set(self.meta_params.top*1.05)
+        self.send_values()
+
+    def frustum_left(self,dummy_arg=None): # callback
+        self.left_tk_var.set(self.meta_params.left*1.025)
+        self.right_tk_var.set(self.meta_params.right*(1.0/1.025))
+        self.send_values()
+
+    def frustum_right(self,dummy_arg=None): # callback
+        self.left_tk_var.set(self.meta_params.left*(1.0/1.025))
+        self.right_tk_var.set(self.meta_params.right*1.025)
+        self.send_values()
+
+    def frustum_down(self,dummy_arg=None): # callback
+        self.bottom_tk_var.set(self.meta_params.bottom*1.025)
+        self.top_tk_var.set(self.meta_params.top*(1.0/1.025))
+        self.send_values()
+
+    def frustum_up(self,dummy_arg=None): # callback
+        self.bottom_tk_var.set(self.meta_params.bottom*(1.0/1.025))
+        self.top_tk_var.set(self.meta_params.top*1.025)
+        self.send_values()
+
+    def get_az_el(self,xyz_tuple):
+        x,y,z = xyz_tuple
+        r = math.sqrt(x*x + y*y + z*z)
+        theta = math.acos(-y/r)
+        rh = r * math.sin(theta)
+        phi = math.atan2(-z,x)
+        az = -(phi * 180.0/math.pi - 90.0)
+        el = theta * 180.0/math.pi - 90.0
+        return az,el
+
+    def get_xyz(self,az_el):
+        az,el = az_el
+        theta = (el + 90.0) / 180.0 * math.pi
+        phi = (az + 90.0) / 180.0 * math.pi
+        y = -math.cos(theta)
+        rh = math.sin(theta)
+        x = -rh * math.cos(phi)
+        z = -rh * math.sin(phi)
+        return x,y,z
+
+    def az_increase(self,dummy_arg=None): # callback
+        az,el = self.get_az_el(self.meta_params.center)
+        az = az + 5.0
+        self.look_at_az_str.set("%.1f"%az)
+        x,y,z = self.get_xyz((az,el))
+        self.center_x_tk_var.set("%.4f"%x)
+        self.center_y_tk_var.set("%.4f"%y)
+        self.center_z_tk_var.set("%.4f"%z)
+        self.send_values()
+
+    def az_decrease(self,dummy_arg=None): # callback
+        az,el = self.get_az_el(self.meta_params.center)
+        az = az - 5.0
+        self.look_at_az_str.set("%.1f"%az)
+        x,y,z = self.get_xyz((az,el))
+        self.center_x_tk_var.set("%.4f"%x)
+        self.center_y_tk_var.set("%.4f"%y)
+        self.center_z_tk_var.set("%.4f"%z)
+        self.send_values()
+
+    def el_increase(self,dummy_arg=None): # callback
+        az,el = self.get_az_el(self.meta_params.center)
+        el = el + 5.0
+        el = min(el,90.0)
+        self.look_at_el_str.set("%.1f"%el)
+        x,y,z = self.get_xyz((az,el))
+        self.center_x_tk_var.set("%.4f"%x)
+        self.center_y_tk_var.set("%.4f"%y)
+        self.center_z_tk_var.set("%.4f"%z)
+        self.send_values()
+
+    def el_decrease(self,dummy_arg=None): # callback
+        az,el = self.get_az_el(self.meta_params.center)
+        el = el - 5.0
+        el = max(el,-90.0)
+        self.look_at_el_str.set("%.1f"%el)
+        x,y,z = self.get_xyz((az,el))
+        self.center_x_tk_var.set("%.4f"%x)
+        self.center_y_tk_var.set("%.4f"%y)
+        self.center_z_tk_var.set("%.4f"%z)
+        self.send_values()
+
+    def up_az_increase(self,dummy_arg=None): # callback
+        az,el = self.get_az_el(self.meta_params.up)
+        az = az + 5.0
+        self.up_az_str.set("%.1f"%az)
+        x,y,z = self.get_xyz((az,el))
+        self.up_x_tk_var.set("%.4f"%x)
+        self.up_y_tk_var.set("%.4f"%y)
+        self.up_z_tk_var.set("%.4f"%z)
+        self.send_values()
+
+    def up_az_decrease(self,dummy_arg=None): # callback
+        az,el = self.get_az_el(self.meta_params.up)
+        az = az - 5.0
+        self.up_az_str.set("%.1f"%az)
+        x,y,z = self.get_xyz((az,el))
+        self.up_x_tk_var.set("%.4f"%x)
+        self.up_y_tk_var.set("%.4f"%y)
+        self.up_z_tk_var.set("%.4f"%z)
+        self.send_values()
+
+    def up_el_increase(self,dummy_arg=None): # callback
+        az,el = self.get_az_el(self.meta_params.up)
+        el = el + 5.0
+        el = min(el,90.0)
+        self.up_el_str.set("%.1f"%el)
+        x,y,z = self.get_xyz((az,el))
+        self.up_x_tk_var.set("%.4f"%x)
+        self.up_y_tk_var.set("%.4f"%y)
+        self.up_z_tk_var.set("%.4f"%z)
+        self.send_values()
+
+    def up_el_decrease(self,dummy_arg=None): # callback
+        az,el = self.get_az_el(self.meta_params.up)
+        el = el - 5.0
+        el = max(el,-90.0)
+        self.up_el_str.set("%.1f"%el)
+        x,y,z = self.get_xyz((az,el))
+        self.up_x_tk_var.set("%.4f"%x)
+        self.up_y_tk_var.set("%.4f"%y)
+        self.up_z_tk_var.set("%.4f"%z)
+        self.send_values()
+
+    def save(self):
+        filename = tkFileDialog.asksaveasfilename(defaultextension=".ve_3dproj",filetypes=[('Projection file','*.ve_3dproj')])
+        fd = open(filename,"wb")
+        save_dict = self.get_param_dict()
+        pickle.dump( save_dict, fd )
+
+    def load(self):
+        filename = tkFileDialog.askopenfilename(defaultextension=".ve_3dproj",filetypes=[('Projection file','*.ve_3dproj')])
+        if not filename:
+            return
+        fd = open(filename,"rb")
+        file_contents = fd.read()
+        file_contents = file_contents.replace('\r\n','\n') # deal with Windows newlines
+        memory_file = StringIO.StringIO(file_contents)
+        load_dict = pickle.load(memory_file)
+        self.set_param_dict( load_dict )
+        self.send_values()
+
+    def get_shortname(self):
+        """Used as basename for saving parameter files"""
+        return "screen_position"
+
+    def get_param_dict(self):
+        result = {}
+        for param_name in dir(self.meta_params):
+            if param_name[:2] != '__' and param_name[-2:] != '__':
+                result[param_name] = getattr(self.meta_params,param_name)
+        return result
+
+    def get_type(self):
+        return "screenPositionGUI"
+
+    def set_param_dict(self,new_param_dict):
+        orig_params = dir(self.meta_params)
+        for new_param_name in new_param_dict.keys():
+            if new_param_name[:2] != '__' and new_param_name[-2:] != '__':
+                if new_param_name not in orig_params:
+                    raise ValueError('Gave parameter "%s", which I do not know about.'%(new_param_name,))
+                setattr(self.meta_params,new_param_name,new_param_dict[new_param_name])
+        self.left_tk_var.set( self.meta_params.left )
+        self.right_tk_var.set( self.meta_params.right )
+        self.top_tk_var.set( self.meta_params.top )
+        self.bottom_tk_var.set( self.meta_params.bottom )
+        self.near_tk_var.set( self.meta_params.near )
+        self.far_tk_var.set( self.meta_params.far )
+        self.eye_x_tk_var.set( self.meta_params.eye[0] )
+        self.eye_y_tk_var.set( self.meta_params.eye[1] )
+        self.eye_z_tk_var.set( self.meta_params.eye[2] )
+        self.center_x_tk_var.set( self.meta_params.center[0] )
+        self.center_y_tk_var.set( self.meta_params.center[1] )
+        self.center_z_tk_var.set( self.meta_params.center[2] )
+        self.up_x_tk_var.set( self.meta_params.up[0] )
+        self.up_y_tk_var.set( self.meta_params.up[1] )
+        self.up_z_tk_var.set( self.meta_params.up[2] )
+
+    def get_parameters_as_strings(self):
+        result = []
+        for param_name in dir(self.meta_params):
+            if param_name[:2] != '__' and param_name[-2:] != '__':
+                value = getattr(self.meta_params,param_name)
+                value_string = str(value)
+                result.append((param_name,value_string))
+        return result
+
+    def get_loopable_variable_names(self):
+        return self.loopable_variables.keys()
+
+    def set_loopable_variable(self,easy_name,value):
+        meta_param_var_name,tk_var = self.loopable_variables[easy_name]
+        setattr(self.meta_params,meta_param_var_name,value)
+        tk_var.set(value)
+        self.update() # update screen with new tk_var value
+
+    def send_values(self,dummy_arg=None):
+        self.meta_params.left = self.left_tk_var.get()
+        self.meta_params.right = self.right_tk_var.get()
+        self.meta_params.top = self.top_tk_var.get()
+        self.meta_params.bottom = self.bottom_tk_var.get()
+        self.meta_params.near = self.near_tk_var.get()
+        self.meta_params.far = self.far_tk_var.get()
+        self.meta_params.eye = (self.eye_x_tk_var.get(),
+                                self.eye_y_tk_var.get(),
+                                self.eye_z_tk_var.get())
+        self.meta_params.center = (self.center_x_tk_var.get(),
+                                self.center_y_tk_var.get(),
+                                self.center_z_tk_var.get())
+        self.meta_params.up = (self.up_x_tk_var.get(),
+                                self.up_y_tk_var.get(),
+                                self.up_z_tk_var.get())
+
+        if self.connected:
+            self.projection_controller.set_parameters( self.meta_params )
+
+    def connect(self,server_hostname='',server_port=7766):
+        self.pyro_client = VisionEgg.PyroClient.PyroClient(server_hostname,server_port)
+
+        self.projection_controller = self.pyro_client.get("projection_controller")
+
+        self.connected = 1
+        if hasattr(self, 'connected_label'):
+            self.connected_label.config(text="Server status: Connected")
+            self.send_values() # send values only when running this way, otherwise get values
+        else:
+            self.meta_params = self.projection_controller.get_parameters()
+            self.set_param_dict( {} ) # updates screen values to self.meta_params
+
+    def quit_server(self,dummy=None):
+        self.projection_controller.quit_server()
+        self.connected = 0
+        self.connected_label.config(text="Server status: Not connected")
+
+if __name__=='__main__':
+    frame = ScreenPositionControlFrame()
+    frame.pack(expand=1,fill=Tkinter.BOTH)
+    frame.winfo_toplevel().title("%s"%(os.path.basename(os.path.splitext(sys.argv[0])[0]),))
+    frame.mainloop()
diff --git a/VisionEgg/PyroApps/ScreenPositionServer.py b/VisionEgg/PyroApps/ScreenPositionServer.py
new file mode 100755
index 0000000..69a940a
--- /dev/null
+++ b/VisionEgg/PyroApps/ScreenPositionServer.py
@@ -0,0 +1,109 @@
+#!/usr/bin/env python
+#
+# The Vision Egg: ScreenPositionServer
+#
+# Copyright (C) 2001-2003 Andrew Straw.
+# Author: Andrew Straw <astraw at users.sourceforge.net>
+# URL: <http://www.visionegg.org/>
+#
+# Distributed under the terms of the GNU Lesser General Public License
+# (LGPL). See LICENSE.TXT that came with this file.
+
+"""Handle 3D perspective projection (server-side)"""
+
+import Pyro.core
+
+import sys, os, string
+import VisionEgg.Core
+import VisionEgg.FlowControl
+import VisionEgg.SphereMap
+import VisionEgg.Textures
+import VisionEgg.PyroHelpers
+
+from VisionEgg.PyroApps.ScreenPositionGUI import ScreenPositionParameters
+
+class ScreenPositionMetaController( Pyro.core.ObjBase ):
+    """Encapsulates all parameters controlling screen position"""
+    def __init__(self,presentation,projection):
+        Pyro.core.ObjBase.__init__(self)
+        self.meta_params = ScreenPositionParameters()
+        if not isinstance(presentation,VisionEgg.FlowControl.Presentation):
+            raise ValueError("Expecting instance of VisionEgg.FlowControl.Presentation")
+        if not isinstance(projection,VisionEgg.Core.PerspectiveProjection):
+            raise ValueError("Expecting instance of VisionEgg.Core.PerspectiveProjection")
+        self.p = presentation
+        self.proj = projection
+
+    def get_parameters(self):
+        return self.meta_params
+
+    def set_parameters(self, new_parameters):
+        if isinstance(new_parameters, ScreenPositionParameters):
+            self.meta_params = new_parameters
+        else:
+            raise ValueError("Argument to set_parameters must be instance of ScreenPositionParameters")
+        self.update()
+
+    def update(self):
+        left = self.meta_params.left
+        right = self.meta_params.right
+        bottom = self.meta_params.bottom
+        top = self.meta_params.top
+        near = self.meta_params.near
+        far = self.meta_params.far
+
+        eye = (self.meta_params.eye[0],
+               self.meta_params.eye[1],
+               self.meta_params.eye[2])
+
+        center = (self.meta_params.center[0],
+               self.meta_params.center[1],
+               self.meta_params.center[2])
+
+        up = (self.meta_params.up[0],
+               self.meta_params.up[1],
+               self.meta_params.up[2])
+
+        temp = VisionEgg.Core.PerspectiveProjection(left,right,bottom,top,near,far)
+        temp.look_at(eye,center,up)
+        self.proj.parameters.matrix = temp.get_matrix()
+
+    def go(self):
+        self.p.parameters.enter_go_loop = 1
+
+    def quit_server(self):
+        self.p.parameters.quit = 1
+
+# Don't do anything unless this script is being run
+if __name__ == '__main__':
+
+    pyro_server = VisionEgg.PyroHelpers.PyroServer()
+
+    # get Vision Egg stimulus ready to go
+    screen = VisionEgg.Core.Screen.create_default()
+    filename = os.path.join(VisionEgg.config.VISIONEGG_SYSTEM_DIR,"data/az_el.png")
+    texture = VisionEgg.Textures.Texture(filename)
+    sphere_map = VisionEgg.SphereMap.SphereMap(texture=texture,
+                                               shrink_texture_ok=1,
+                                               stacks=100,
+                                               slices=100)
+    temp = ScreenPositionParameters()
+
+    projection = VisionEgg.Core.PerspectiveProjection(temp.left,
+                                                      temp.right,
+                                                      temp.bottom,
+                                                      temp.top,
+                                                      temp.near,
+                                                      temp.far)
+    viewport = VisionEgg.Core.Viewport(screen=screen,stimuli=[sphere_map],projection=projection)
+    p = VisionEgg.FlowControl.Presentation(viewports=[viewport])
+
+    # now hand over control of stimulus to GratingExperimentMetaController
+    projection_controller = ScreenPositionMetaController(p,projection)
+    pyro_server.connect(projection_controller,"projection_controller")
+
+    # get listener controller and register it
+    p.add_controller(None,None, pyro_server.create_listener_controller())
+
+    # enter endless loop
+    p.run_forever()
diff --git a/VisionEgg/PyroApps/SphereGratingGUI.py b/VisionEgg/PyroApps/SphereGratingGUI.py
new file mode 100755
index 0000000..acdb5a8
--- /dev/null
+++ b/VisionEgg/PyroApps/SphereGratingGUI.py
@@ -0,0 +1,170 @@
+#!/usr/bin/env python
+"""Handle perspective-distorted sinusoidal gratings (client-side)"""
+
+# Copyright (c) 2002-2003 Andrew Straw.  Distributed under the terms
+# of the GNU Lesser General Public License (LGPL).
+
+import VisionEgg, string
+
+import sys, os
+import Tkinter
+import VisionEgg.PyroApps.EPhysGUIUtils as client_utils
+
+def get_control_list():
+    return [("sphere_grating_server",SphereGratingControlFrame,SphereGratingControlFrame.title)]
+
+class SphereGratingMetaParameters:
+    def __init__(self):
+        self.contrast = 1.0
+        self.orient = 0.0
+        self.sf = 0.1 # cycles per degree
+        self.tf = 1.0
+        self.pre_stim_sec = 1.0
+        self.stim_sec = 2.0
+        self.post_stim_sec = 1.0
+        self.window_func = 'gaussian'
+        self.window_radius = 10.0
+        self.window_az = 0.0
+        self.window_el = 0.0
+
+class SphereGratingControlFrame(client_utils.StimulusControlFrame):
+    title = "Grating (Perspective-distorted) Experiment"
+    def __init__(self, master=None, suppress_go_buttons=0,**kw):
+        client_utils.StimulusControlFrame.__init__(self,
+                                                   master,
+                                                   suppress_go_buttons,
+                                                   SphereGratingControlFrame.title,
+                                                   SphereGratingMetaParameters,
+                                                   **kw)
+
+        param_frame = self.param_frame # shorthand for self.param_frame created in base class
+
+        # Allow columns to expand
+        param_frame.columnconfigure(0,weight=1)
+        param_frame.columnconfigure(1,weight=1)
+
+        pf_row = 0
+        Tkinter.Label(param_frame,text="Contrast:").grid(row=pf_row,column=0)
+        self.contrast_tk_var = Tkinter.DoubleVar()
+        self.contrast_tk_var.set(self.meta_params.contrast)
+        self.make_callback_entry(textvariable=self.contrast_tk_var).grid(row=pf_row,column=1)
+        self.loopable_variables["Contrast"] = ("contrast",self.contrast_tk_var)
+
+        pf_row += 1
+        Tkinter.Label(param_frame,text="Orientation (deg):").grid(row=pf_row,column=0)
+        self.orient_tk_var = Tkinter.DoubleVar()
+        self.orient_tk_var.set(self.meta_params.orient)
+        self.make_callback_entry(textvariable=self.orient_tk_var).grid(row=pf_row,column=1)
+        self.loopable_variables["Orientation"] = ("orient",self.orient_tk_var)
+
+        pf_row += 1
+        Tkinter.Label(param_frame,text="Spatial frequency (Cpd):").grid(row=pf_row,column=0)
+        self.sf_tk_var = Tkinter.DoubleVar()
+        self.sf_tk_var.set(self.meta_params.sf)
+        self.make_callback_entry(textvariable=self.sf_tk_var).grid(row=pf_row,column=1)
+        self.loopable_variables["Spatial frequency"] = ("sf",self.sf_tk_var)
+
+        pf_row += 1
+        Tkinter.Label(param_frame,text="Temporal frequency (Hz):").grid(row=pf_row,column=0)
+        self.tf_tk_var = Tkinter.DoubleVar()
+        self.tf_tk_var.set(self.meta_params.tf)
+        self.make_callback_entry(textvariable=self.tf_tk_var).grid(row=pf_row,column=1)
+        self.loopable_variables["Temporal frequency"] = ("tf",self.tf_tk_var)
+
+        pf_row += 1
+        Tkinter.Label(param_frame,text="Pre stimulus duration (sec):").grid(row=pf_row,column=0)
+        self.prestim_dur_tk_var = Tkinter.DoubleVar()
+        self.prestim_dur_tk_var.set(self.meta_params.pre_stim_sec)
+        self.make_callback_entry(textvariable=self.prestim_dur_tk_var).grid(row=pf_row,column=1)
+
+        pf_row += 1
+        Tkinter.Label(param_frame,text="Stimulus duration (sec):").grid(row=pf_row,column=0)
+        self.stim_dur_tk_var = Tkinter.DoubleVar()
+        self.stim_dur_tk_var.set(self.meta_params.stim_sec)
+        self.make_callback_entry(textvariable=self.stim_dur_tk_var).grid(row=pf_row,column=1)
+
+        pf_row += 1
+        Tkinter.Label(param_frame,text="Post stimulus duration (sec):").grid(row=pf_row,column=0)
+        self.poststim_dur_tk_var = Tkinter.DoubleVar()
+        self.poststim_dur_tk_var.set(self.meta_params.post_stim_sec)
+        self.make_callback_entry(textvariable=self.poststim_dur_tk_var).grid(row=pf_row,column=1)
+
+        pf_row += 1
+        Tkinter.Label(param_frame,text="Window function:").grid(row=pf_row,column=0)
+        self.window_func_tk_var = Tkinter.StringVar()
+        self.window_func_tk_var.set(self.meta_params.window_func)
+        bar = Tkinter.Menubutton(param_frame, textvariable=self.window_func_tk_var, relief=Tkinter.RAISED)
+        bar.grid(row=pf_row, column=1, sticky=Tkinter.W+Tkinter.E, pady=2, padx=2)
+        bar.menu = Tkinter.Menu(bar,tearoff=0)
+        bar.menu.add_radiobutton(label='circle',
+                                 value='circle',
+                                 variable=self.window_func_tk_var,
+                                 command=self.send_values)
+        bar.menu.add_radiobutton(label='gaussian',
+                                 value='gaussian',
+                                 variable=self.window_func_tk_var,
+                                 command=self.send_values)
+        bar['menu'] = bar.menu
+
+        pf_row += 1
+        Tkinter.Label(param_frame,text="Window radius/sigma (deg):").grid(row=pf_row,column=0)
+        self.window_radius_tk_var = Tkinter.DoubleVar()
+        self.window_radius_tk_var.set(self.meta_params.window_radius)
+        self.make_callback_entry(textvariable=self.window_radius_tk_var).grid(row=pf_row,column=1)
+
+        pf_row += 1
+        Tkinter.Label(param_frame,text="Window azimuth (deg):").grid(row=pf_row,column=0)
+        self.window_az_tk_var = Tkinter.DoubleVar()
+        self.window_az_tk_var.set(self.meta_params.window_az)
+        self.make_callback_entry(textvariable=self.window_az_tk_var).grid(row=pf_row,column=1)
+        self.loopable_variables["Window azimuth"] = ("window_az",self.window_az_tk_var)
+
+        pf_row += 1
+        Tkinter.Label(param_frame,text="Window elevation (deg):").grid(row=pf_row,column=0)
+        self.window_el_tk_var = Tkinter.DoubleVar()
+        self.window_el_tk_var.set(self.meta_params.window_el)
+        self.make_callback_entry(textvariable=self.window_el_tk_var).grid(row=pf_row,column=1)
+        self.loopable_variables["Window elevation"] = ("window_el",self.window_el_tk_var)
+
+    def get_shortname(self):
+        return "sphere_grating"
+
+    def update_tk_vars(self):
+        self.contrast_tk_var.set( self.meta_params.contrast )
+        self.orient_tk_var.set( self.meta_params.orient )
+        self.sf_tk_var.set( self.meta_params.sf )
+        self.tf_tk_var.set( self.meta_params.tf )
+        self.prestim_dur_tk_var.set( self.meta_params.pre_stim_sec )
+        self.stim_dur_tk_var.set( self.meta_params.stim_sec )
+        self.poststim_dur_tk_var.set( self.meta_params.post_stim_sec )
+        self.window_func_tk_var.set( self.meta_params.window_func )
+        self.window_radius_tk_var.set( self.meta_params.window_radius )
+        self.window_az_tk_var.set( self.meta_params.window_az )
+        self.window_el_tk_var.set( self.meta_params.window_el )
+
+    def send_values(self,dummy_arg=None):
+        self.meta_params.contrast = self.contrast_tk_var.get()
+        self.meta_params.orient = self.orient_tk_var.get()
+        self.meta_params.sf = self.sf_tk_var.get()
+        self.meta_params.tf = self.tf_tk_var.get()
+        self.meta_params.pre_stim_sec = self.prestim_dur_tk_var.get()
+        self.meta_params.stim_sec = self.stim_dur_tk_var.get()
+        self.meta_params.post_stim_sec = self.poststim_dur_tk_var.get()
+        self.meta_params.window_func = self.window_func_tk_var.get()
+        self.meta_params.window_radius = self.window_radius_tk_var.get()
+        self.meta_params.window_az = self.window_az_tk_var.get()
+        self.meta_params.window_el = self.window_el_tk_var.get()
+        if self.connected:
+            self.meta_controller.set_parameters( self.meta_params )
+
+    def get_duration_sec(self):
+        self.meta_params.pre_stim_sec = self.prestim_dur_tk_var.get()
+        self.meta_params.stim_sec = self.stim_dur_tk_var.get()
+        self.meta_params.post_stim_sec = self.poststim_dur_tk_var.get()
+        return self.meta_params.pre_stim_sec + self.meta_params.stim_sec + self.meta_params.post_stim_sec
+
+if __name__=='__main__':
+    frame = SphereGratingControlFrame()
+    frame.pack(expand=1,fill=Tkinter.BOTH)
+    frame.winfo_toplevel().title("%s"%(os.path.basename(os.path.splitext(sys.argv[0])[0]),))
+    frame.mainloop()
diff --git a/VisionEgg/PyroApps/SphereGratingServer.py b/VisionEgg/PyroApps/SphereGratingServer.py
new file mode 100755
index 0000000..0758bf4
--- /dev/null
+++ b/VisionEgg/PyroApps/SphereGratingServer.py
@@ -0,0 +1,153 @@
+#!/usr/bin/env python
+"""Handle perspective-distorted sinusoidal gratings (server-side)"""
+
+# Copyright (c) 2002-2003 Andrew Straw.  Distributed under the terms
+# of the GNU Lesser General Public License (LGPL).
+
+import VisionEgg, string
+
+import sys, os, math
+import VisionEgg.Core
+import VisionEgg.FlowControl
+import VisionEgg.SphereMap
+import VisionEgg.PyroHelpers
+import Pyro.core
+
+from VisionEgg.PyroApps.ScreenPositionServer import ScreenPositionMetaController
+from VisionEgg.PyroApps.ScreenPositionGUI import ScreenPositionParameters
+from VisionEgg.PyroApps.SphereGratingGUI import SphereGratingMetaParameters
+
+class SphereGratingExperimentMetaController( Pyro.core.ObjBase ):
+    def __init__(self,screen,presentation,stimuli):
+
+        # get stimuli
+        assert( stimuli[0][0] == '3d_perspective')
+        assert( stimuli[1][0] == '3d_perspective')
+        sphere_grating = stimuli[0][1]
+        sphere_window = stimuli[1][1]
+
+        Pyro.core.ObjBase.__init__(self)
+        self.meta_params = SphereGratingMetaParameters()
+        if not isinstance(screen,VisionEgg.Core.Screen):
+            raise ValueError("Expecting instance of VisionEgg.Core.Screen")
+        if not isinstance(presentation,VisionEgg.FlowControl.Presentation):
+            raise ValueError("Expecting instance of VisionEgg.FlowControl.Presentation")
+        if not isinstance(sphere_grating,VisionEgg.SphereMap.SphereGrating):
+            raise ValueError("Expecting instance of VisionEgg.SphereMap.SphereGrating")
+        if not isinstance(sphere_window,VisionEgg.SphereMap.SphereWindow):
+            raise ValueError("Expecting instance of VisionEgg.SphereMap.SphereWindow")
+        self.p = presentation
+        self.stim = sphere_grating
+        self.window = sphere_window
+
+        screen.parameters.bgcolor = (0.5, 0.5, 0.5, 0.0)
+
+        self.p.add_controller(self.stim,'on',VisionEgg.FlowControl.FunctionController(
+            during_go_func=self.on_function_during_go,
+            between_go_func=self.on_function_between_go))
+
+    def __del__(self):
+        self.p.remove_controller(self.stim,'on')
+        Pyro.core.ObjBase.__del__(self) # call base class
+
+    def on_function_during_go(self,t):
+        """Compute when the grating is on"""
+        if t <= self.meta_params.pre_stim_sec:
+            return 0 # not on yet
+        elif t <= (self.meta_params.pre_stim_sec + self.meta_params.stim_sec):
+            return 1 # on
+        else:
+            return 0 # off again
+
+    def on_function_between_go(self):
+        """Compute when the grating is off"""
+        return 0 # off again
+
+    def get_parameters(self):
+        return self.meta_params
+
+    def set_parameters(self, new_parameters):
+        if isinstance(new_parameters, SphereGratingMetaParameters):
+            self.meta_params = new_parameters
+        else:
+            raise ValueError("Argument to set_parameters must be instance of SphereGratingMetaParameters")
+#        self.meta_params = new_parameters
+        self.update()
+
+    def update(self):
+        stim_params = self.stim.parameters # shorthand
+        window_params = self.window.parameters # shorthand
+        meta_params = self.meta_params # shorthand
+        stim_params.contrast = meta_params.contrast
+        stim_params.orientation = meta_params.orient
+        stim_params.spatial_freq_cpd = meta_params.sf
+        stim_params.temporal_freq_hz = meta_params.tf
+        stim_params.grating_center_azimuth = meta_params.window_az
+        stim_params.grating_center_elevation = meta_params.window_el
+        self.p.parameters.go_duration = ( meta_params.pre_stim_sec + meta_params.stim_sec + meta_params.post_stim_sec, 'seconds')
+        window_params.window_shape = meta_params.window_func
+        window_params.window_shape_radius_parameter = meta_params.window_radius
+        window_params.window_center_azimuth = meta_params.window_az
+        window_params.window_center_elevation = meta_params.window_el
+
+    def go(self):
+        self.p.parameters.enter_go_loop = 1
+
+    def quit_server(self):
+        self.p.parameters.quit = 1
+
+def get_meta_controller_class():
+    return SphereGratingExperimentMetaController
+
+def make_stimuli():
+    stimulus = VisionEgg.SphereMap.SphereGrating(radius=1.0,
+                                                 spatial_freq_cpd=1.0/9.0,
+                                                 temporal_freq_hz = 1.0)
+    mask = VisionEgg.SphereMap.SphereWindow(radius=0.95)
+    return [('3d_perspective',stimulus),('3d_perspective',mask)]
+
+def get_meta_controller_stimkey():
+    return "sphere_grating_server"
+
+# Don't do anything unless this script is being run
+if __name__ == '__main__':
+
+    pyro_server = VisionEgg.PyroHelpers.PyroServer()
+
+    screen = VisionEgg.Core.Screen.create_default()
+
+    # get Vision Egg stimulus ready to go
+    stimuli = make_stimuli()
+    stimulus = stimuli[0][1]
+    mask = stimuli[1][1]
+
+    temp = ScreenPositionParameters()
+
+    left = temp.left
+    right = temp.right
+    bottom = temp.bottom
+    top = temp.top
+    near = temp.near
+    far = temp.far
+    projection = VisionEgg.Core.PerspectiveProjection(left,
+                                                      right,
+                                                      bottom,
+                                                      top,
+                                                      near,
+                                                      far)
+    viewport = VisionEgg.Core.Viewport(screen=screen,stimuli=[stimulus,mask],projection=projection)
+    p = VisionEgg.FlowControl.Presentation(viewports=[viewport])
+
+    # now hand over control of projection to ScreenPositionMetaController
+    projection_controller = ScreenPositionMetaController(p,projection)
+    pyro_server.connect(projection_controller,"projection_controller")
+
+    # now hand over control of grating and mask to SphereGratingExperimentMetaController
+    meta_controller = SphereGratingExperimentMetaController(screen,p,stimuli)
+    pyro_server.connect(meta_controller,get_meta_controller_stimkey())
+
+    # get listener controller and register it
+    p.add_controller(None,None, pyro_server.create_listener_controller())
+
+    # enter endless loop
+    p.run_forever()
diff --git a/VisionEgg/PyroApps/SpinningDrumGUI.py b/VisionEgg/PyroApps/SpinningDrumGUI.py
new file mode 100755
index 0000000..af442ec
--- /dev/null
+++ b/VisionEgg/PyroApps/SpinningDrumGUI.py
@@ -0,0 +1,116 @@
+#!/usr/bin/env python
+#
+# The Vision Egg: SpinningDrumGUI
+#
+# Copyright (C) 2001-2003 Andrew Straw.
+# Author: Andrew Straw <astraw at users.sourceforge.net>
+# URL: <http://www.visionegg.org/>
+#
+# Distributed under the terms of the GNU Lesser General Public License
+# (LGPL). See LICENSE.TXT that came with this file.
+
+import VisionEgg, string
+
+import sys, os
+import Tkinter
+import VisionEgg.PyroApps.EPhysGUIUtils as client_utils
+
+def get_control_list():
+    return [("spinning_drum_server",SpinningDrumControlFrame,SpinningDrumControlFrame.title)]
+
+class SpinningDrumMetaParameters:
+    def __init__(self):
+        self.contrast = 1.0
+        self.velocity_dps = 100.0
+        self.startpos_deg = 0.0
+        self.pre_stim_sec = 1.0
+        self.stim_sec = 5.0
+        self.post_stim_sec = 1.0
+
+class SpinningDrumControlFrame(client_utils.StimulusControlFrame):
+    title = "Spinning Drum Experiment"
+    def __init__(self, master=None, suppress_go_buttons=0,**kw):
+        client_utils.StimulusControlFrame.__init__(self,
+                                                   master,
+                                                   suppress_go_buttons,
+                                                   SpinningDrumControlFrame.title,
+                                                   SpinningDrumMetaParameters,
+                                                   **kw)
+
+        param_frame = self.param_frame # shorthand for self.param_frame created in base class
+
+        # Allow columns to expand
+        param_frame.columnconfigure(0,weight=1)
+        param_frame.columnconfigure(1,weight=1)
+
+        pf_row = 0
+        Tkinter.Label(param_frame,text="Contrast:").grid(row=pf_row,column=0)
+        self.contrast_tk_var = Tkinter.DoubleVar()
+        self.contrast_tk_var.set(self.meta_params.contrast)
+        self.make_callback_entry(textvariable=self.contrast_tk_var).grid(row=pf_row,column=1)
+        self.loopable_variables["Contrast"] = ("contrast",self.contrast_tk_var)
+
+        pf_row += 1
+        Tkinter.Label(param_frame,text="Velocity (dps):").grid(row=pf_row,column=0)
+        self.velocity_tk_var = Tkinter.DoubleVar()
+        self.velocity_tk_var.set(self.meta_params.velocity_dps)
+        self.make_callback_entry(textvariable=self.velocity_tk_var).grid(row=pf_row,column=1)
+        self.loopable_variables["Velocity"] = ("velocity_dps",self.velocity_tk_var)
+
+        pf_row += 1
+        Tkinter.Label(param_frame,text="Start position (deg):").grid(row=pf_row,column=0)
+        self.startpos_tk_var = Tkinter.DoubleVar()
+        self.startpos_tk_var.set(self.meta_params.startpos_deg)
+        self.make_callback_entry(textvariable=self.startpos_tk_var).grid(row=pf_row,column=1)
+        self.loopable_variables["Start position"] = ("startpos_deg",self.startpos_tk_var)
+
+        pf_row += 1
+        Tkinter.Label(param_frame,text="Pre stimulus duration (sec):").grid(row=pf_row,column=0)
+        self.prestim_dur_tk_var = Tkinter.DoubleVar()
+        self.prestim_dur_tk_var.set(self.meta_params.pre_stim_sec)
+        self.make_callback_entry(textvariable=self.prestim_dur_tk_var).grid(row=pf_row,column=1)
+
+        pf_row += 1
+        Tkinter.Label(param_frame,text="Stimulus duration (sec):").grid(row=pf_row,column=0)
+        self.stim_dur_tk_var = Tkinter.DoubleVar()
+        self.stim_dur_tk_var.set(self.meta_params.stim_sec)
+        self.make_callback_entry(textvariable=self.stim_dur_tk_var).grid(row=pf_row,column=1)
+
+        pf_row += 1
+        Tkinter.Label(param_frame,text="Post stimulus duration (sec):").grid(row=pf_row,column=0)
+        self.poststim_dur_tk_var = Tkinter.DoubleVar()
+        self.poststim_dur_tk_var.set(self.meta_params.post_stim_sec)
+        self.make_callback_entry(textvariable=self.poststim_dur_tk_var).grid(row=pf_row,column=1)
+
+    def get_shortname(self):
+        """Used as basename for saving parameter files"""
+        return "spinning_drum"
+
+    def update_tk_vars(self):
+        self.contrast_tk_var.set( self.meta_params.contrast )
+        self.velocity_tk_var.set( self.meta_params.velocity_dps )
+        self.startpos_tk_var.set( self.meta_params.startpos_deg )
+        self.stim_dur_tk_var.set( self.meta_params.stim_sec )
+        self.poststim_dur_tk_var.set( self.meta_params.post_stim_sec )
+
+    def send_values(self,dummy_arg=None):
+        self.meta_params.contrast = self.contrast_tk_var.get()
+        self.meta_params.velocity_dps = self.velocity_tk_var.get()
+        self.meta_params.startpos_deg = self.startpos_tk_var.get()
+        self.meta_params.pre_stim_sec = self.prestim_dur_tk_var.get()
+        self.meta_params.stim_sec = self.stim_dur_tk_var.get()
+        self.meta_params.post_stim_sec = self.poststim_dur_tk_var.get()
+        if self.connected:
+            self.meta_controller.set_parameters( self.meta_params )
+
+    def get_duration_sec(self):
+        self.meta_params.pre_stim_sec = self.prestim_dur_tk_var.get()
+        self.meta_params.stim_sec = self.stim_dur_tk_var.get()
+        self.meta_params.post_stim_sec = self.poststim_dur_tk_var.get()
+        return self.meta_params.pre_stim_sec + self.meta_params.stim_sec + self.meta_params.post_stim_sec
+
+if __name__=='__main__':
+    frame = SpinningDrumControlFrame()
+    frame.pack(expand=1,fill=Tkinter.BOTH)
+    frame.winfo_toplevel().title("%s"%(os.path.basename(os.path.splitext(sys.argv[0])[0]),))
+    frame.mainloop()
diff --git a/VisionEgg/PyroApps/SpinningDrumServer.py b/VisionEgg/PyroApps/SpinningDrumServer.py
new file mode 100755
index 0000000..5ab2db1
--- /dev/null
+++ b/VisionEgg/PyroApps/SpinningDrumServer.py
@@ -0,0 +1,143 @@
+#!/usr/bin/env python
+#
+# The Vision Egg: SpinningDrumServer
+#
+# Copyright (C) 2001-2003 Andrew Straw.
+# Author: Andrew Straw <astraw at users.sourceforge.net>
+# URL: <http://www.visionegg.org/>
+#
+# Distributed under the terms of the GNU Lesser General Public License
+# (LGPL). See LICENSE.TXT that came with this file.
+
+import VisionEgg, string
+
+import sys, os, math
+import VisionEgg.Core
+import VisionEgg.FlowControl
+import VisionEgg.Textures
+import VisionEgg.PyroHelpers
+import Pyro.core
+
+from VisionEgg.PyroApps.ScreenPositionServer import ScreenPositionMetaController
+from VisionEgg.PyroApps.ScreenPositionGUI import ScreenPositionParameters
+from VisionEgg.PyroApps.SpinningDrumGUI import SpinningDrumMetaParameters
+
+class SpinningDrumExperimentMetaController( Pyro.core.ObjBase ):
+    def __init__(self,screen,presentation,stimuli):
+
+        # get the instance of Stimulus that was created
+        assert( stimuli[0][0] == '3d_perspective' )
+        spinning_drum = stimuli[0][1]
+
+        Pyro.core.ObjBase.__init__(self)
+        self.meta_params = SpinningDrumMetaParameters()
+        if not isinstance(screen,VisionEgg.Core.Screen):
+            raise ValueError("Expecting instance of VisionEgg.Core.Screen")
+        if not isinstance(presentation,VisionEgg.FlowControl.Presentation):
+            raise ValueError("Expecting instance of VisionEgg.FlowControl.Presentation")
+        if not isinstance(spinning_drum,VisionEgg.Textures.SpinningDrum):
+            raise ValueError("Expecting instance of VisionEgg.Textures.SpinningDrum")
+        self.p = presentation
+        self.stim = spinning_drum
+
+        screen.parameters.bgcolor = (0.5, 0.5, 0.5, 0.0)
+
+        self.p.add_controller(self.stim,'on',VisionEgg.FlowControl.FunctionController(
+            during_go_func=self.on_function_during_go,
+            between_go_func=self.on_function_between_go))
+
+        self.p.add_controller(self.stim,'angular_position',VisionEgg.FlowControl.FunctionController(
+            during_go_func=self.angular_position_during_go,
+            between_go_func=self.angular_position_between_go))
+
+    def __del__(self):
+        self.p.remove_controller(self.stim,'on')
+        self.p.remove_controller(self.stim,'angular_position')
+        Pyro.core.ObjBase.__del__(self) # call base class
+
+    def on_function_during_go(self,t):
+        if t <= self.meta_params.pre_stim_sec:
+            return 0 # not on yet
+        elif t <= (self.meta_params.pre_stim_sec + self.meta_params.stim_sec):
+            return 1 # on
+        else:
+            return 0 # off again
+
+    def on_function_between_go(self):
+        return 0 # off
+
+    def angular_position_during_go(self,t):
+        adjusted_t = t - self.meta_params.pre_stim_sec
+        return (adjusted_t * self.meta_params.velocity_dps) + self.meta_params.startpos_deg
+
+    def angular_position_between_go(self):
+        return 0.0 # doesn't matter -- stimulus off
+
+    def get_parameters(self):
+        return self.meta_params
+
+    def set_parameters(self, new_parameters):
+        if isinstance(new_parameters, SpinningDrumMetaParameters):
+            self.meta_params = new_parameters
+        else:
+            raise ValueError("Argument to set_parameters must be instance of SpinningDrumMetaParameters")
+        self.update()
+
+    def update(self):
+        stim_params = self.stim.parameters # shorthand
+        meta_params = self.meta_params # shorthand
+        stim_params.contrast = meta_params.contrast
+        self.p.parameters.go_duration = ( meta_params.pre_stim_sec + meta_params.stim_sec + meta_params.post_stim_sec, 'seconds')
+
+    def go(self):
+        self.p.parameters.enter_go_loop = 1
+
+    def quit_server(self):
+        self.p.parameters.quit = 1
+
+def get_meta_controller_class():
+    return SpinningDrumExperimentMetaController
+
+def make_stimuli():
+    filename = os.path.join(VisionEgg.config.VISIONEGG_SYSTEM_DIR,"data/panorama.jpg")
+    texture = VisionEgg.Textures.Texture(filename)
+    stimulus = VisionEgg.Textures.SpinningDrum(texture=texture) # could add shrink_texture_ok=1
+    return [('3d_perspective',stimulus)] # return ordered list of tuples
+
+def get_meta_controller_stimkey():
+    return "spinning_drum_server"
+
+# Don't do anything unless this script is being run
+if __name__ == '__main__':
+
+    pyro_server = VisionEgg.PyroHelpers.PyroServer()
+
+    screen = VisionEgg.Core.Screen.create_default()
+
+    # get Vision Egg stimulus ready to go
+    stimuli = make_stimuli()
+    stimulus = stimuli[0][1]
+    temp = ScreenPositionParameters()
+
+    projection = VisionEgg.Core.PerspectiveProjection(temp.left,
+                                                      temp.right,
+                                                      temp.bottom,
+                                                      temp.top,
+                                                      temp.near,
+                                                      temp.far)
+    viewport = VisionEgg.Core.Viewport(screen=screen,stimuli=[stimulus],projection=projection)
+    p = VisionEgg.FlowControl.Presentation(viewports=[viewport])
+
+    # now hand over control of projection to ScreenPositionMetaController
+    projection_controller = ScreenPositionMetaController(p,projection)
+    pyro_server.connect(projection_controller,"projection_controller")
+
+    # now hand over control of drum to SpinningDrumExperimentMetaController
+    meta_controller = SpinningDrumExperimentMetaController(screen,p,stimuli)
+    pyro_server.connect(meta_controller,get_meta_controller_stimkey())
+
+    # get listener controller and register it
+    p.add_controller(None,None, pyro_server.create_listener_controller())
+
+    # enter endless loop
+    p.run_forever()
diff --git a/VisionEgg/PyroApps/TargetGUI.py b/VisionEgg/PyroApps/TargetGUI.py
new file mode 100755
index 0000000..ccbe1da
--- /dev/null
+++ b/VisionEgg/PyroApps/TargetGUI.py
@@ -0,0 +1,212 @@
+#!/usr/bin/env python
+#
+# The Vision Egg: TargetGUI
+#
+# Copyright (C) 2001-2003 Andrew Straw.
+# Author: Andrew Straw <astraw at users.sourceforge.net>
+# URL: <http://www.visionegg.org/>
+#
+# Distributed under the terms of the GNU Lesser General Public License
+# (LGPL). See LICENSE.TXT that came with this file.
+
+"""Handle small target stimulus (client-side)"""
+
+import VisionEgg
+
+import sys, os, math
+import Tkinter
+import VisionEgg.PyroApps.EPhysGUIUtils as client_utils
+
+def get_control_list():
+    return [("target_server",TargetControlFrame,TargetControlFrame.title)]
+
+class TargetMetaParameters:
+    def __init__(self):
+        # colors
+        self.color = (0.0, 0.0, 0.0, 1.0)
+        self.bgcolor = (1.0, 1.0, 1.0, 0.0)
+
+        # motion parameters
+        self.start_x = 10.0
+        self.start_y = 50.0
+        self.velocity_pps = 100.0 # pixels per second
+        self.direction_deg = 0.0
+
+        # size and orientation
+        self.width = 10.0
+        self.height = 30.0
+        self.orientation_deg = 0.0
+
+        self.pre_stim_sec = 1.0
+        self.stim_sec = 2.0
+        self.post_stim_sec = 1.0
+
+class TargetControlFrame(client_utils.StimulusControlFrame):
+    title = "Moving Target Experiment"
+    def __init__(self, master=None, suppress_go_buttons=0,**kw):
+        client_utils.StimulusControlFrame.__init__(self,
+                                                   master,
+                                                   suppress_go_buttons,
+                                                   TargetControlFrame.title,
+                                                   TargetMetaParameters,
+                                                   **kw)
+
+        param_frame = self.param_frame # shorthand for self.param_frame created in base class
+
+        pf_row = 0
+        Tkinter.Label(param_frame,text="Start X (pixels):").grid(row=pf_row,column=0,sticky=Tkinter.E)
+        self.start_x_tk_var = Tkinter.DoubleVar()
+        self.start_x_tk_var.set(self.meta_params.start_x)
+        self.make_callback_entry(textvariable=self.start_x_tk_var).grid(row=pf_row,column=2)
+        self.loopable_variables["Start X"] = ("start_x",self.start_x_tk_var)
+
+        pf_row += 1
+        Tkinter.Label(param_frame,text="Start Y (pixels):").grid(row=pf_row,column=0,sticky=Tkinter.E)
+        self.start_y_tk_var = Tkinter.DoubleVar()
+        self.start_y_tk_var.set(self.meta_params.start_y)
+        self.make_callback_entry(textvariable=self.start_y_tk_var).grid(row=pf_row,column=2)
+        self.loopable_variables["Start Y"] = ("start_y",self.start_y_tk_var)
+
+        pf_row += 1
+        Tkinter.Label(param_frame,text="Velocity (pixels/sec):").grid(row=pf_row,column=0,sticky=Tkinter.E)
+        self.velocity_tk_var = Tkinter.DoubleVar()
+        self.velocity_tk_var.set(self.meta_params.velocity_pps)
+        self.make_callback_entry(textvariable=self.velocity_tk_var).grid(row=pf_row,column=2)
+        self.loopable_variables["Velocity"] = ("velocity_pps",self.velocity_tk_var)
+
+        pf_row += 1
+        Tkinter.Label(param_frame,text="Direction (degrees):").grid(row=pf_row,column=0,sticky=Tkinter.E)
+        self.direction_tk_var = Tkinter.DoubleVar()
+        self.direction_tk_var.set(self.meta_params.direction_deg)
+        self.make_callback_entry(textvariable=self.direction_tk_var).grid(row=pf_row,column=2)
+        self.loopable_variables["Direction"] = ("direction_deg",self.direction_tk_var)
+
+        pf_row += 1
+        Tkinter.Label(param_frame,text="Color:").grid(row=pf_row,column=0,sticky=Tkinter.E)
+        self.color_tk_var = Tkinter.StringVar()
+        self.color_tk_var.set("black on white")
+        bar = Tkinter.Menubutton(param_frame, textvariable=self.color_tk_var, relief=Tkinter.RAISED)
+        bar.grid(row=pf_row, column=2, sticky=Tkinter.W+Tkinter.E, pady=2, padx=2)
+        bar.menu = Tkinter.Menu(bar,tearoff=0)
+        bar.menu.add_radiobutton(label="white on black",
+                                 value="white on black",
+                                 variable=self.color_tk_var,
+                                 command=self.send_values)
+        bar.menu.add_radiobutton(label="black on white",
+                                 value="black on white",
+                                 variable=self.color_tk_var,
+                                 command=self.send_values)
+        bar['menu'] = bar.menu
+
+        pf_row += 1
+        Tkinter.Label(param_frame,text="Orientation (degrees):").grid(row=pf_row,column=0,sticky=Tkinter.E)
+        self.ortho_tk_var = Tkinter.StringVar()
+        self.ortho_tk_var.set("ortho")
+
+        manual = Tkinter.Radiobutton( param_frame, text="Manual",
+                                      variable=self.ortho_tk_var, value="manual")
+        manual.grid(row=pf_row,column=1)
+
+        self.orient_tk_var = Tkinter.DoubleVar()
+        self.orient_tk_var.set(self.meta_params.orientation_deg)
+
+        manual_entry = Tkinter.Entry( param_frame,
+                                      textvariable=self.orient_tk_var,
+                                      width=self.entry_width )
+        manual_entry.grid(row=pf_row,column=2)
+
+        ortho = Tkinter.Radiobutton( param_frame, text="Orthogonal to motion",
+                                     variable=self.ortho_tk_var, value="ortho")
+        ortho.grid(row=pf_row,column=3)
+        self.loopable_variables["Orientation"] = ("orientation_deg",self.orient_tk_var)
+
+        pf_row += 1
+        Tkinter.Label(param_frame,text="Width (pixels):").grid(row=pf_row,column=0,sticky=Tkinter.E)
+        self.width_tk_var = Tkinter.DoubleVar()
+        self.width_tk_var.set(self.meta_params.width)
+        self.make_callback_entry(textvariable=self.width_tk_var).grid(row=pf_row,column=2)
+        self.loopable_variables["Width"] = ("width",self.width_tk_var)
+
+        pf_row += 1
+        Tkinter.Label(param_frame,text="Height (pixels):").grid(row=pf_row,column=0,sticky=Tkinter.E)
+        self.height_tk_var = Tkinter.DoubleVar()
+        self.height_tk_var.set(self.meta_params.height)
+        self.make_callback_entry(textvariable=self.height_tk_var).grid(row=pf_row,column=2)
+        self.loopable_variables["Height"] = ("height",self.height_tk_var)
+
+        pf_row += 1
+        Tkinter.Label(param_frame,text="Pre stimulus duration (sec):").grid(row=pf_row,column=0,sticky=Tkinter.E)
+        self.prestim_dur_tk_var = Tkinter.DoubleVar()
+        self.prestim_dur_tk_var.set(self.meta_params.pre_stim_sec)
+        self.make_callback_entry(textvariable=self.prestim_dur_tk_var).grid(row=pf_row,column=2)
+
+        pf_row += 1
+        Tkinter.Label(param_frame,text="Stimulus duration (sec):").grid(row=pf_row,column=0,sticky=Tkinter.E)
+        self.stim_dur_tk_var = Tkinter.DoubleVar()
+        self.stim_dur_tk_var.set(self.meta_params.stim_sec)
+        self.make_callback_entry(textvariable=self.stim_dur_tk_var).grid(row=pf_row,column=2)
+        self.loopable_variables["Duration"] = ("stim_sec",self.stim_dur_tk_var)
+
+        pf_row += 1
+        Tkinter.Label(param_frame,text="Post stimulus duration (sec):").grid(row=pf_row,column=0,sticky=Tkinter.E)
+        self.poststim_dur_tk_var = Tkinter.DoubleVar()
+        self.poststim_dur_tk_var.set(self.meta_params.post_stim_sec)
+        self.make_callback_entry(textvariable=self.poststim_dur_tk_var).grid(row=pf_row,column=2)
+
+    def get_shortname(self):
+        return "target"
+
+    def update_tk_vars(self):
+        self.start_x_tk_var.set( self.meta_params.start_x )
+        self.start_y_tk_var.set( self.meta_params.start_y )
+        self.velocity_tk_var.set( self.meta_params.velocity_pps )
+        self.direction_tk_var.set( self.meta_params.direction_deg )
+        self.orient_tk_var.set( self.meta_params.orientation_deg )
+        self.width_tk_var.set( self.meta_params.width )
+        self.height_tk_var.set( self.meta_params.height )
+        self.prestim_dur_tk_var.set( self.meta_params.pre_stim_sec )
+        self.stim_dur_tk_var.set( self.meta_params.stim_sec )
+        self.poststim_dur_tk_var.set( self.meta_params.post_stim_sec )
+
+        if self.meta_params.color == (0.0,0.0,0.0,1.0) and self.meta_params.bgcolor == (1.0,1.0,1.0,0.0):
+            self.color_tk_var.set( "black on white" )
+        elif self.meta_params.color == (1.0,1.0,1.0,1.0) and self.meta_params.bgcolor == (0.0,0.0,0.0,0.0):
+            self.color_tk_var.set( "white on black" )
+        else:
+            raise RuntimeError("Cannot set tk variable for color")
+
+    def send_values(self,dummy_arg=None):
+        self.meta_params.start_x = self.start_x_tk_var.get()
+        self.meta_params.start_y = self.start_y_tk_var.get()
+        self.meta_params.velocity_pps = self.velocity_tk_var.get()
+        self.meta_params.direction_deg = self.direction_tk_var.get()
+        if self.color_tk_var.get() == "black on white":
+            self.meta_params.color = (0.0,0.0,0.0,1.0)
+            self.meta_params.bgcolor = (1.0,1.0,1.0,0.0)
+        elif self.color_tk_var.get() == "white on black":
+            self.meta_params.color = (1.0,1.0,1.0,1.0)
+            self.meta_params.bgcolor = (0.0,0.0,0.0,0.0)
+
+        if self.ortho_tk_var.get() == "ortho":
+            self.meta_params.orientation_deg = math.fmod(self.meta_params.direction_deg,360.0)
+        else: # it's "manual"
+            self.meta_params.orientation_deg = self.orient_tk_var.get()
+        self.meta_params.width = self.width_tk_var.get()
+        self.meta_params.height = self.height_tk_var.get()
+        self.meta_params.pre_stim_sec = self.prestim_dur_tk_var.get()
+        self.meta_params.stim_sec = self.stim_dur_tk_var.get()
+        self.meta_params.post_stim_sec = self.poststim_dur_tk_var.get()
+        if self.connected:
+            self.meta_controller.set_parameters( self.meta_params )
+
+    def get_duration_sec(self):
+        self.meta_params.pre_stim_sec = self.prestim_dur_tk_var.get()
+        self.meta_params.stim_sec = self.stim_dur_tk_var.get()
+        self.meta_params.post_stim_sec = self.poststim_dur_tk_var.get()
+        return self.meta_params.pre_stim_sec + self.meta_params.stim_sec + self.meta_params.post_stim_sec
+
+if __name__=='__main__':
+    frame = TargetControlFrame()
+    frame.pack(expand=Tkinter.YES,fill=Tkinter.BOTH)
+    frame.winfo_toplevel().title("%s"%(os.path.basename(os.path.splitext(sys.argv[0])[0]),))
+    frame.mainloop()
diff --git a/VisionEgg/PyroApps/TargetServer.py b/VisionEgg/PyroApps/TargetServer.py
new file mode 100755
index 0000000..494d115
--- /dev/null
+++ b/VisionEgg/PyroApps/TargetServer.py
@@ -0,0 +1,144 @@
+#!/usr/bin/env python
+#
+# The Vision Egg: TargetServer
+#
+# Copyright (C) 2001-2003 Andrew Straw.
+# Author: Andrew Straw <astraw at users.sourceforge.net>
+# URL: <http://www.visionegg.org/>
+#
+# Distributed under the terms of the GNU Lesser General Public License
+# (LGPL). See LICENSE.TXT that came with this file.
+
+"""Handle small targets gratings (server-side)"""
+
+import VisionEgg
+
+import sys, os, math
+import VisionEgg.Core
+import VisionEgg.FlowControl
+import VisionEgg.MoreStimuli
+import VisionEgg.PyroHelpers
+import Pyro.core
+
+from VisionEgg.PyroApps.TargetGUI import TargetMetaParameters
+
+class TargetExperimentMetaController( Pyro.core.ObjBase ):
+    def __init__(self,screen,presentation,stimuli):
+        Pyro.core.ObjBase.__init__(self)
+
+        # get stimulus
+        assert( stimuli[0][0] == '2d_overlay')
+        target = stimuli[0][1]
+
+        self.meta_params = TargetMetaParameters()
+        if not isinstance(screen,VisionEgg.Core.Screen):
+            raise ValueError("Expecting instance of VisionEgg.Core.Screen")
+        if not isinstance(presentation,VisionEgg.FlowControl.Presentation):
+            raise ValueError("Expecting instance of VisionEgg.FlowControl.Presentation")
+        if not isinstance(target,VisionEgg.MoreStimuli.Target2D):
+            raise ValueError("Expecting instance of VisionEgg.MoreStimuli.Target2D")
+
+        self.screen = screen
+        self.p = presentation
+        self.stim = target
+
+        self.p.add_controller(self.stim,'on',VisionEgg.FlowControl.FunctionController(
+            during_go_func=self.on_function_during_go,
+            between_go_func=self.on_function_between_go))
+
+        self.p.add_controller(self.stim,'position',VisionEgg.FlowControl.FunctionController(
+            during_go_func=self.center_during_go,
+            between_go_func=self.center_between_go))
+
+        self.update() # set stimulus parameters to initial defaults
+
+    def __del__(self):
+        self.p.remove_controller(self.stim,'on')
+        self.p.remove_controller(self.stim,'position')
+        Pyro.core.ObjBase.__del__(self) # call base class
+
+    def on_function_during_go(self,t):
+        if t <= self.meta_params.pre_stim_sec:
+            return 0 # not on yet
+        elif t <= (self.meta_params.pre_stim_sec + self.meta_params.stim_sec):
+            return 1 # on
+        else:
+            return 0 # off again
+
+    def on_function_between_go(self):
+        return 0
+
+    def center_during_go(self,t):
+        t_adjusted = t - self.meta_params.pre_stim_sec
+        distance = self.meta_params.velocity_pps * t_adjusted
+        x_offset = math.cos(self.meta_params.direction_deg / 180.0 * math.pi)*distance
+        y_offset = math.sin(self.meta_params.direction_deg / 180.0 * math.pi)*distance
+
+        return (self.meta_params.start_x + x_offset,
+                self.meta_params.start_y + y_offset)
+
+    def center_between_go(self):
+        return (0.0, 0.0) # doesn't matter -- it's off
+
+    def get_parameters(self):
+        return self.meta_params
+
+    def set_parameters(self, new_parameters):
+        if isinstance(new_parameters, TargetMetaParameters):
+            self.meta_params = new_parameters
+        else:
+            raise ValueError("Argument to set_parameters must be instance of TargetMetaParameters")
+        self.update()
+
+    def update(self):
+        stim_params = self.stim.parameters # shorthand
+        meta_params = self.meta_params # shorthand
+
+        # colors
+        stim_params.color = meta_params.color
+        self.screen.parameters.bgcolor = meta_params.bgcolor
+
+        # size and orientation
+        stim_params.size = (meta_params.width, meta_params.height)
+        stim_params.orientation = meta_params.orientation_deg
+
+        self.p.parameters.go_duration = ( meta_params.pre_stim_sec + meta_params.stim_sec + meta_params.post_stim_sec, 'seconds')
+
+    def go(self):
+        self.p.parameters.enter_go_loop = 1
+
+    def quit_server(self):
+        self.p.parameters.quit = 1
+
+def get_meta_controller_class():
+    return TargetExperimentMetaController
+
+def make_stimuli():
+    stimulus = VisionEgg.MoreStimuli.Target2D(anchor='center')
+    return [('2d_overlay',stimulus)]
+
+def get_meta_controller_stimkey():
+    return "target_server"
+
+# Don't do anything unless this script is being run
+if __name__ == '__main__':
+
+    pyro_server = VisionEgg.PyroHelpers.PyroServer()
+
+    screen = VisionEgg.Core.Screen.create_default()
+
+    # get Vision Egg stimulus ready to go
+    stimuli = make_stimuli()
+    stimulus = stimuli[0][1]
+    viewport = VisionEgg.Core.Viewport(screen=screen,stimuli=[stimulus])
+    p = VisionEgg.FlowControl.Presentation(viewports=[viewport])
+
+    # now hand over control of grating and mask to FlatGratingExperimentMetaController
+    meta_controller = TargetExperimentMetaController(screen,p,stimuli)
+    pyro_server.connect(meta_controller,get_meta_controller_stimkey())
+
+    # get listener controller and register it
+    p.add_controller(None,None, pyro_server.create_listener_controller())
+
+    # enter endless loop
+    p.run_forever()
diff --git a/VisionEgg/PyroApps/VarTypes.py b/VisionEgg/PyroApps/VarTypes.py
new file mode 100644
index 0000000..966b733
--- /dev/null
+++ b/VisionEgg/PyroApps/VarTypes.py
@@ -0,0 +1,32 @@
+# The Vision Egg: VarTypes
+#
+# Copyright (C) 2004 Imran S. Ali, Lachlan Dowd
+#
+# Author: Imran S. Ali, Lachlan Dowd
+# URL: <http://www.visionegg.org/>
+#
+# Distributed under the terms of the GNU Lesser General Public License
+# (LGPL). See LICENSE.TXT that came with this file.
+
+# Add your supported supported demo script "variable types" here:
+
+def getID(var_type):
+    if var_type == "float":
+	return 1
+    elif var_type == "int" or var_type == "integer":
+	return 2
+    elif var_type == "string" or var_type == "str":
+        return 3
+    else:
+	return -1
+
+def getType(ID):
+    if ID == 1:
+	return "float"
+    elif ID == 2:
+	return "integer"
+    elif ID == 3:
+	return "string"
+    else:
+	return "undefined type"
+
diff --git a/VisionEgg/PyroApps/__init__.py b/VisionEgg/PyroApps/__init__.py
new file mode 100755
index 0000000..a8b93a7
--- /dev/null
+++ b/VisionEgg/PyroApps/__init__.py
@@ -0,0 +1,16 @@
+#
+# The Vision Egg: PyroApps
+#
+# Copyright (C) 2001-2003 Andrew Straw.
+# Author: Andrew Straw <astraw at users.sourceforge.net>
+# URL: <http://www.visionegg.org/>
+#
+# Distributed under the terms of the GNU Lesser General Public License
+# (LGPL). See LICENSE.TXT that came with this file.
+#
+# $Id$
+
+"""
+VisionEgg subpackage providing support for demo applications based on Pyro
+
+"""
diff --git a/VisionEgg/PyroClient.py b/VisionEgg/PyroClient.py
new file mode 100755
index 0000000..df709fa
--- /dev/null
+++ b/VisionEgg/PyroClient.py
@@ -0,0 +1,41 @@
+# The Vision Egg: PyroClient
+#
+# Copyright (C) 2001-2003 Andrew Straw.
+# Copyright (C) 2008 California Insitute of Technology
+# Author: Andrew Straw <astraw at users.sourceforge.net>
+# URL: <http://www.visionegg.org/>
+#
+# Distributed under the terms of the GNU Lesser General Public License
+# (LGPL). See LICENSE.TXT that came with this file.
+#
+# $Id$
+
+"""
+Python Remote Objects support - Client side.
+
+"""
+
+import socket
+import VisionEgg
+
+import logging                              # available in Python 2.3
+import Pyro.core
+
+class PyroClient:
+    """Simplifies getting PyroControllers from a remote computer."""
+    def __init__(self,server_hostname='',server_port=7766):
+        """Initialize Pyro client."""
+        Pyro.core.initClient()
+        try:
+            self.server_hostname = socket.getfqdn(server_hostname)
+        except Exception, x:
+            logger = logging.getLogger('VisionEgg.PyroClient')
+            logger.warning("while getting fully qualified domain name: %s: %s"%
+                           (str(x.__class__),str(x)))
+            self.server_hostname = server_hostname
+        self.server_port = server_port
+
+    def get(self,name):
+        """Return a remote Pyro object being served by Pyro server."""
+        URI = "PYROLOC://%s:%d/%s" % (self.server_hostname, self.server_port, name)
+        return Pyro.core.getProxyForURI(URI)
diff --git a/VisionEgg/PyroHelpers.py b/VisionEgg/PyroHelpers.py
new file mode 100644
index 0000000..74c4a91
--- /dev/null
+++ b/VisionEgg/PyroHelpers.py
@@ -0,0 +1,166 @@
+# The Vision Egg: PyroHelpers
+#
+# Copyright (C) 2001-2003 Andrew Straw.
+# Author: Andrew Straw <astraw at users.sourceforge.net>
+# URL: <http://www.visionegg.org/>
+#
+# Distributed under the terms of the GNU Lesser General Public License
+# (LGPL). See LICENSE.TXT that came with this file.
+#
+# $Id$
+
+"""
+Python Remote Objects support.
+
+Use this class if you don't want to deal with TCP directly and Python
+is the program on both ends of the network.
+
+The module provides some Vision Egg specific code for Pyro.  Pyro
+allows you to call python objects on remote machines just like they
+are on the local machine.  This makes the task of writing a two
+computer Vision Egg application quite easy, because one can mostly
+ignore the network-based intermediate stage.
+
+PyroControllers are run on the computer performing the presentation.
+The PyroServer class also runs on this computer, and allows these
+controllers to be changed from a computer running PyroClient. To
+listen to the network PyroListenerController must be instantiated by
+the PyroServer -- this checks for any requests coming over the
+network, but only at times specified because it is a subclass of
+VisionEgg.FlowControl.Controller.
+
+Just like TCPControllers, don't use this class for realtime control
+unless you think your network is that fast and reliable.  It's great
+for setting up parameters in advance and sending a trigger pulse,
+though!"""
+
+import VisionEgg
+import VisionEgg.Core
+import VisionEgg.FlowControl
+import VisionEgg.ParameterTypes as ve_types
+
+import Pyro.core
+import Pyro.errors
+
+Pyro.config.PYRO_MULTITHREADED = 0 # No multithreading!
+
+class PyroServer:
+    """Set up a Pyro server for your PyroControllers and PyroGoClass.
+
+    This class is analagous to VisionEgg.TCPController.TCPServer.
+
+    """
+    def __init__(self):
+        # Start Pyro
+        Pyro.core.initServer()
+        self.daemon = Pyro.core.Daemon()
+        self.ok_to_run = 1
+
+    def get_hostname_and_port(self):
+        return self.daemon.hostname, self.daemon.port
+
+    def connect(self,object,name):
+        """Serve an object under a name"""
+        URI=self.daemon.connect(object,name)
+        return URI
+
+    def disconnect(self,object):
+        if Pyro.core.constants.VERSION >= '3.2':
+            self.daemon.disconnect(object)
+        else:
+            # workaround bug in Pyro pre-3.2
+            del self.daemon.implementations[object.GUID()]
+            object.setDaemon(None)
+
+    def create_listener_controller(self):
+        if hasattr(self,'listen_controller'):
+            raise RuntimeError("Only one pyro listen controller allowed per server!")
+        self.listen_controller = PyroListenController(self)
+        return self.listen_controller
+
+    def handleRequests(self, timeout=0):
+        """Only use this if you don't use the PyroListenerController.
+
+        A timeout of 0 specifies return immediately."""
+        self.daemon.handleRequests(timeout)
+
+class PyroConstantController(VisionEgg.FlowControl.ConstantController,Pyro.core.ObjBase):
+    def __init__(self, **kw):
+        VisionEgg.FlowControl.ConstantController.__init__(self,**kw)
+        Pyro.core.ObjBase.__init__(self)
+
+class PyroEvalStringController(VisionEgg.FlowControl.EvalStringController,Pyro.core.ObjBase):
+    def __init__(self, **kw):
+        VisionEgg.FlowControl.EvalStringController.__init__(self,**kw)
+        Pyro.core.ObjBase.__init__(self)
+
+class PyroExecStringController(VisionEgg.FlowControl.ExecStringController,Pyro.core.ObjBase):
+    def __init__(self, **kw):
+        VisionEgg.FlowControl.ExecStringController.__init__(self,**kw)
+        Pyro.core.ObjBase.__init__(self)
+
+class PyroEncapsulatedController(VisionEgg.FlowControl.EncapsulatedController,Pyro.core.ObjBase):
+    """Create the instance of Controller on client, and send it to server.
+
+    This class is analagous to VisionEgg.TCPController.TCPController.
+    """
+    def __init__(self,initial_controller=None,**kw):
+        VisionEgg.FlowControl.EncapsulatedController.__init__(self,initial_controller)
+        Pyro.core.ObjBase.__init__(self)
+
+class PyroLocalDictController(VisionEgg.FlowControl.EncapsulatedController,Pyro.core.ObjBase):
+    """Contain several dictionary entries, set controller accordingly.
+    """
+    def __init__(self, dict=None, key=None, **kw):
+        if dict is None:
+            self.dict = {}
+            initial_controller = VisionEgg.FlowControl.ConstantController(during_go_value=0,
+                                                                   between_go_value=0,
+                                                                   eval_frequency=VisionEgg.FlowControl.Controller.NEVER)
+        else:
+            self.dict = dict
+        if key is None:
+            if len(self.dict.keys()):
+                key = self.dict.keys()[0]
+                initial_controller = self.dict[key]
+            else:
+                initial_controller = VisionEgg.FlowControl.ConstantController(during_go_value=0,
+                                                                       between_go_value=0,
+                                                                       eval_frequency=VisionEgg.FlowControl.Controller.NEVER)
+        else:
+            initial_controller = dict[key]
+        VisionEgg.FlowControl.EncapsulatedController.__init__(self,initial_controller)
+        Pyro.core.ObjBase.__init__(self)
+    def use_controller(self,key):
+        self.set_new_controller(self.dict[key])
+    def add_controller(self,key,new_controller):
+        self.dict[key] = new_controller
+
+class PyroListenController(VisionEgg.FlowControl.Controller):
+    """Handle connection from remote machine, control PyroControllers.
+
+    This meta controller handles a Pyro daemon, which checks the TCP
+    socket for new input and acts accordingly.
+
+    This class is analagous to VisionEgg.TCPController.SocketListenController.
+
+    """
+
+    def __init__(self,server=None,**kw):
+        """Called by PyroServer. Creates a PyroListenerController instance."""
+        if not isinstance(server,PyroServer):
+            raise ValueError("Must specify a Pyro Server.")
+        if 'eval_frequency' not in kw.keys():
+            kw['eval_frequency'] = VisionEgg.FlowControl.Controller.EVERY_FRAME
+        if 'return_type' not in kw.keys():
+            kw['return_type'] = ve_types.get_type(None)
+        VisionEgg.FlowControl.Controller.__init__(self,**kw)
+        self.server=server
+
+    def during_go_eval(self):
+        # setting timeout = 0 means return ASAP
+        self.server.daemon.handleRequests(timeout=0)
+
+    def between_go_eval(self):
+        # setting timeout = 0 means return ASAP
+        self.server.daemon.handleRequests(timeout=0)
diff --git a/VisionEgg/QuickTime.py b/VisionEgg/QuickTime.py
new file mode 100644
index 0000000..8199c3a
--- /dev/null
+++ b/VisionEgg/QuickTime.py
@@ -0,0 +1,102 @@
+# The Vision Egg: QuickTime
+#
+# Copyright (C) 2001-2003, 2006 Andrew Straw.
+# Author: Andrew Straw <astraw at users.sourceforge.net>
+# URL: <http://www.visionegg.org/>
+#
+# Distributed under the terms of the GNU Lesser General Public License
+# (LGPL). See LICENSE.TXT that came with this file.
+
+"""
+QuickTime movies in the Vision Egg.
+
+"""
+
+import VisionEgg
+import VisionEgg.gl_qt # C implementation of GL/QT interface
+import VisionEgg.qtmovie as qtmovie
+import VisionEgg.Textures
+
+import numpy.oldnumeric as Numeric
+import os
+
+import VisionEgg.GL as gl # get all OpenGL stuff in one namespace
+
+__version__ = VisionEgg.release_name
+__author__ = 'Andrew Straw <astraw at users.sourceforge.net>'
+
+#######################################################
+
+new_movie_from_filename = qtmovie.new_movie_from_filename
+    
+class MovieTexture(VisionEgg.Textures.Texture):
+
+    __slots__ = (
+        'movie',
+        'size',
+        'scale',
+        'gl_qt_renderer',
+        )
+    
+    def __init__(self,
+                 movie=None,
+                 texture_size=None, # be default will be big enough for full movie, otherwise 2-tuple
+                 ):
+        if not isinstance(movie,qtmovie.Movie):
+            if isinstance(movie,str) or isinstance(movie,unicode):
+                movie = new_movie_from_filename(filename=movie)
+        self.movie = movie
+        bounds = self.movie.GetMovieBox()
+        height = bounds.bottom-bounds.top
+        width = bounds.right-bounds.left
+        self.movie.SetMovieBox(qtmovie.Rect(top=0,left=0,bottom=height,right=width))
+        self.size = (width,height)
+        self.scale = 1.0
+
+    def make_half_size(self):
+        self.size = self.size[0]/2, self.size[1]/2
+        self.scale = self.scale/2
+
+    def unload(self):
+        raise NotImplementedError('')
+
+    def get_texels_as_image(self):
+        raise NotImplementedError('')
+    
+    def load(self, texture_object,
+             build_mipmaps=False,
+             rescale_original_to_fill_texture_object = False,
+             internal_format=gl.GL_RGB,
+             ):
+        if build_mipmaps:
+            raise ValueError('cannot build mipmaps for QuickTime movies')
+        if rescale_original_to_fill_texture_object:
+            raise NotImplementedError('')
+        width,height = self.size
+        tex_shape = VisionEgg.Textures.next_power_of_2(max(width,height))
+        # fractional coverage
+        self.buf_lf = 0.0
+        self.buf_rf = float(width)/tex_shape
+        self.buf_bf = 0.0
+        self.buf_tf = float(height)/tex_shape
+
+        # absolute (texel units) coverage
+        self._buf_l = 0
+        self._buf_r = width
+        self._buf_b = 0
+        self._buf_t = height
+        
+        buffer = Numeric.zeros( (tex_shape,tex_shape), Numeric.UInt8 )
+        texture_object.put_new_image( buffer,
+                                      internal_format=gl.GL_RGB,
+                                      mipmap_level=0 )
+        self.texture_object = texture_object
+
+        self.gl_qt_renderer = VisionEgg.gl_qt.gl_qt_renderer_create(self.movie,tex_shape,self.scale)
+
+    def update(self):
+        # only call this when my texture unit is active
+        VisionEgg.gl_qt.gl_qt_renderer_update(self.gl_qt_renderer)
+
+    def __del__(self):
+        VisionEgg.gl_qt.gl_qt_renderer_delete(self.gl_qt_renderer)
diff --git a/VisionEgg/ResponseControl.py b/VisionEgg/ResponseControl.py
new file mode 100644
index 0000000..bb90a32
--- /dev/null
+++ b/VisionEgg/ResponseControl.py
@@ -0,0 +1,168 @@
+# The Vision Egg: ResponseControl
+#
+# Author(s): Hubertus Becker <hubertus.becker at uni-tuebingen.de>
+# Copyright: (C) 2005 by Hertie Institute for Clinical Brain Research,
+#            Department of Cognitive Neurology, University of Tuebingen
+# URL:       http://www.hubertus-becker.de/resources/visionegg/
+#
+# This library is free software; you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License as
+# published by the Free Software Foundation; either version 2.1 of
+# the License, or (at your option) any later version.
+
+"""
+Response control during a presentation is running.
+
+"""
+
+####################################################################
+#
+#        Import all the necessary packages
+#
+####################################################################
+
+import logging
+import logging.handlers
+
+import VisionEgg
+import VisionEgg.Core
+import VisionEgg.FlowControl
+import VisionEgg.DaqKeyboard
+import VisionEgg.ParameterTypes as ve_types
+import pygame
+
+__version__ = VisionEgg.release_name
+
+####################################################################
+#
+#        ResponseController
+#
+####################################################################
+
+class ResponseController(VisionEgg.FlowControl.Controller):
+    """This abstract base class defines the interface to any ResponseController.
+
+    This module provides an interface to collect responses during a
+    presentation is running. To interface with real data acquisition devices,
+    use a module that subclasses the classes defined here.
+
+    """
+
+    def _reset(self):
+        self.responses = []
+        self.responses_since_go = []
+        self.time_responses_since_go = []
+        self.first_responses_since_go = []
+        self.time_first_responses_since_go = None
+        self.status_first_responses_since_go = False
+        self.last_responses_since_go = []
+        self.time_last_responses_since_go = None
+
+    def __init__(self, **kw):
+        self._reset()
+
+    def get_responses(self):
+        """Returns the responses in the current frame."""
+        return self.responses
+
+    get_data = get_responses # For backward compatibility
+
+    def get_responses_since_go(self):
+        """Returns all responses since the main 'go' loop has been
+        started."""
+        return self.responses_since_go
+
+    def get_time_responses_since_go(self):
+        """Returns the time stamps for all responses since the main 'go'
+        loop has been started."""
+        return self.time_responses_since_go
+
+    def get_first_response_since_go(self, index=0):
+        """Returns the first response since the main 'go' loop has been
+        started."""
+        if self.first_responses_since_go == []:
+            return []
+        else:
+            return self.first_responses_since_go[index]
+
+    def get_first_responses_since_go(self):
+        """Returns the first responses since the main 'go' loop has been
+        started."""
+        return self.first_responses_since_go
+
+    def get_time_first_response_since_go(self):
+        """Returns the time stamp for first responses since the main 'go'
+        loop has been started."""
+        return self.time_first_responses_since_go
+
+    get_time_first_responses_since_go = get_time_first_response_since_go
+
+    def get_last_response_since_go(self, index=0):
+        """Returns the last response since the main 'go' loop has been
+        started."""
+        if self.last_responses_since_go == []:
+            return []
+        else:
+            return self.last_responses_since_go[index]
+
+    def get_last_responses_since_go(self):
+        """Returns the last responses since the main 'go' loop has been
+        started."""
+        return self.last_responses_since_go
+
+    def get_time_last_response_since_go(self):
+        """Returns the time stamp for last response since the main 'go'
+        loop has been started."""
+        return self.time_last_responses_since_go
+
+    get_time_last_responses_since_go = get_time_last_response_since_go
+
+    def between_go_eval(self):
+        """Evaluate between runs of the main 'go' loop.
+
+        Override this method in subclasses."""
+        raise RuntimeError("%s: Definition of between_go_eval() in abstract base class ResponseController must be overriden."%(str(self),))
+
+    def during_go_eval(self):
+        """Evaluate during the main 'go' loop.
+
+        Override this method in subclasses."""
+        raise RuntimeError("%s: Definition of during_go_eval() in abstract base class ResponseController must be overriden."%(str(self),))
+
+
+####################################################################
+#
+#        KeyboardResponseController
+#
+####################################################################
+
+#class KeyboardResponseController(VisionEgg.ReponseController):
+class KeyboardResponseController(ResponseController):
+    """Use the keyboard to collect responses during a presentation is running."""
+
+    def __init__(self):
+        VisionEgg.FlowControl.Controller.__init__(self,
+            return_type=ve_types.get_type(None),
+            eval_frequency=VisionEgg.FlowControl.Controller.EVERY_FRAME,
+            temporal_variables=VisionEgg.FlowControl.Controller.TIME_SEC_SINCE_GO
+        )
+        self.input = VisionEgg.DaqKeyboard.KeyboardInput()
+
+    def between_go_eval(self):
+        return None # Ignore keyboard
+
+    def during_go_eval(self):
+        if self.time_sec_since_go <= 0.01: # Reset it every presentation
+            self._reset()
+#       self.responses = self.input.get_pygame_data()
+        self.responses = self.input.get_string_data()
+        if len(self.responses) > 0:
+            self.responses_since_go.append(self.responses)
+            self.time_responses_since_go.append(self.time_sec_since_go)
+            if self.status_first_responses_since_go == False:
+                self.time_first_responses_since_go = self.time_sec_since_go
+                self.first_responses_since_go = self.responses
+                self.status_first_responses_since_go = True
+            self.time_last_responses_since_go = self.time_sec_since_go
+            self.last_responses_since_go = self.responses
+        return None
diff --git a/VisionEgg/SphereMap.py b/VisionEgg/SphereMap.py
new file mode 100644
index 0000000..c377c3b
--- /dev/null
+++ b/VisionEgg/SphereMap.py
@@ -0,0 +1,1219 @@
+# The Vision Egg: SphereMap
+#
+# Copyright (C) 2001-2004 Andrew Straw.
+# Copyright (C) 2005-2008 California Institute of Technology
+#
+# Author: Andrew Straw <astraw at users.sourceforge.net>
+# URL: <http://www.visionegg.org/>
+#
+# Distributed under the terms of the GNU Lesser General Public License
+# (LGPL). See LICENSE.TXT that came with this file.
+
+"""
+Stimuli on spheres, including texture maps.
+
+"""
+
+import math, types
+
+import logging
+
+import VisionEgg.Core
+import VisionEgg.Textures
+import VisionEgg.Text
+import VisionEgg.Gratings
+import VisionEgg.ThreeDeeMath
+import VisionEgg.ParameterTypes as ve_types
+
+import numpy
+import numpy.oldnumeric as Numeric
+import Image
+
+import VisionEgg.GL as gl # get all OpenGL stuff in one namespace
+
+__version__ = VisionEgg.release_name
+
+class AzElGrid(VisionEgg.Core.Stimulus):
+    """Spherical grid of iso-azimuth and iso-elevation lines.
+
+    Parameters
+    ==========
+    anti_aliasing    -- (Boolean)
+                        Default: True
+    center_azimuth   -- (Real)
+                        Default: 0.0
+    center_elevation -- (Real)
+                        Default: 0.0
+    major_line_color -- (AnyOf(Sequence3 of Real or Sequence4 of Real))
+                        Default: (0.0, 0.0, 0.0)
+    major_line_width -- (Real)
+                        Default: 2.0
+    minor_line_color -- (AnyOf(Sequence3 of Real or Sequence4 of Real))
+                        Default: (0.0, 0.0, 1.0)
+    minor_line_width -- (Real)
+                        Default: 1.0
+    my_viewport      -- (Instance of <class 'VisionEgg.Core.Viewport'>)
+                        Default: (determined at runtime)
+    on               -- (Boolean)
+                        Default: True
+    text_offset      -- (Sequence2 of Real)
+                        Default: (3, -2)
+
+    Constant Parameters
+    ===================
+    az_major_spacing       -- (Real)
+                              Default: 30.0
+    az_minor_spacing       -- (Real)
+                              Default: 10.0
+    el_major_spacing       -- (Real)
+                              Default: 30.0
+    el_minor_spacing       -- (Real)
+                              Default: 10.0
+    font_size              -- (UnsignedInteger)
+                              Default: 24
+    num_samples_per_circle -- (UnsignedInteger)
+                              Default: 100
+    radius                 -- (Real)
+                              Default: 1.0
+    text_anchor            -- (String)
+                              Default: lowerleft
+    text_color             -- (AnyOf(Sequence3 of Real or Sequence4 of Real))
+                              Default: (0.0, 0.0, 0.0)
+    use_text               -- (Boolean)
+                              Default: True
+    """
+
+    parameters_and_defaults = {
+        'on':(True,
+              ve_types.Boolean),
+        'center_azimuth':(0.0, # 0=right, 90=right
+                          ve_types.Real),
+        'center_elevation':(0.0, # 0=right, 90=up
+                            ve_types.Real),
+        'minor_line_width':(1.0,
+                            ve_types.Real),
+        'major_line_width':(2.0,
+                            ve_types.Real),
+        'minor_line_color':((0.0,0.0,1.0),
+                            ve_types.AnyOf(ve_types.Sequence3(ve_types.Real),
+                                           ve_types.Sequence4(ve_types.Real))),
+        'major_line_color':((0.0,0.0,0.0),
+                            ve_types.AnyOf(ve_types.Sequence3(ve_types.Real),
+                                           ve_types.Sequence4(ve_types.Real))),
+        'my_viewport':(None, # viewport I'm in
+                       ve_types.Instance(VisionEgg.Core.Viewport)),
+        'text_offset':((3,-2), # offset (x,y) to nudge text labels
+                       ve_types.Sequence2(ve_types.Real)),
+        'anti_aliasing' : ( True,
+                            ve_types.Boolean ),
+        }
+
+    constant_parameters_and_defaults = {
+        'use_text':(True,
+                    ve_types.Boolean),
+        'radius':(1.0,
+                  ve_types.Real),
+        'az_minor_spacing':(10.0,
+                            ve_types.Real),
+        'az_major_spacing':(30.0,
+                            ve_types.Real),
+        'el_minor_spacing':(10.0,
+                            ve_types.Real),
+        'el_major_spacing':(30.0,
+                            ve_types.Real),
+        'num_samples_per_circle':(100,
+                                  ve_types.UnsignedInteger),
+        'font_size':(24,
+                     ve_types.UnsignedInteger),
+        'text_color':((0.0,0.0,0.0),
+                      ve_types.AnyOf(ve_types.Sequence3(ve_types.Real),
+                                     ve_types.Sequence4(ve_types.Real))),
+        'text_anchor':('lowerleft',
+                       ve_types.String),
+        }
+
+    __slots__ = (
+        'cached_minor_lines_display_list',
+        'cached_major_lines_display_list',
+        'text_viewport',
+        'text_viewport_orig',
+        '_gave_alpha_warning',
+        'labels',
+        'labels_xyz',
+        )
+
+    def __init__(self,**kw):
+        VisionEgg.Core.Stimulus.__init__(self,**kw)
+        self.cached_minor_lines_display_list = gl.glGenLists(1) # Allocate a new display list
+        self.cached_major_lines_display_list = gl.glGenLists(1) # Allocate a new display list
+        self.__rebuild_display_lists()
+        self.text_viewport = None # not set yet
+        self._gave_alpha_warning = False
+
+    def __rebuild_display_lists(self):
+        def get_xyz(theta,phi,radius):
+            # theta normally between 0 and pi (north pole to south pole)
+            # phi between -pi and pi
+            y = radius * math.cos( theta )
+            w = radius * math.sin( theta )
+            x = w * math.cos( phi )
+            z = w * math.sin( phi )
+            return x,y,z
+        def draw_half_great_circle(az):
+            for i in range(cp.num_samples_per_circle/2):
+                # let theta exceed 1 pi to draw 2nd half of circle
+                theta_start = i/float(cp.num_samples_per_circle)*2*math.pi
+                theta_stop = (i+1)/float(cp.num_samples_per_circle)*2*math.pi
+                phi_start = phi_stop = (az-90.0)/180.0*math.pi
+                x_start,y_start,z_start = get_xyz(theta_start,phi_start,cp.radius)
+                x_stop,y_stop,z_stop = get_xyz(theta_stop,phi_stop,cp.radius)
+                gl.glVertex3f(x_start, y_start, z_start)
+                gl.glVertex3f(x_stop, y_stop, z_stop)
+        def draw_iso_elevation_circle(el):
+            # el from -90 = pi to el 90 = 0
+            theta_start = theta_stop = -(el-90) / 180.0 * math.pi
+            for i in range(cp.num_samples_per_circle):
+                phi_start = i/float(cp.num_samples_per_circle)*2*math.pi
+                phi_stop = (i+1)/float(cp.num_samples_per_circle)*2*math.pi
+                x_start,y_start,z_start = get_xyz(theta_start,phi_start,cp.radius)
+                x_stop,y_stop,z_stop = get_xyz(theta_stop,phi_stop,cp.radius)
+                gl.glVertex3f(x_start, y_start, z_start)
+                gl.glVertex3f(x_stop, y_stop, z_stop)
+
+        cp = self.constant_parameters
+        # Weird range construction to be sure to include zero.
+        azs_major = numpy.concatenate((
+            numpy.arange(0.0,180.0,cp.az_major_spacing),
+            -numpy.arange(0.0,180.0,cp.az_major_spacing)[1:]))
+        azs_minor = numpy.concatenate((
+            numpy.arange(0.0,180.0,cp.az_minor_spacing),
+            -numpy.arange(0.0,180.0,cp.az_minor_spacing)[1:]))
+        els_major = numpy.concatenate((
+            numpy.arange(0.0,90.0,cp.el_major_spacing),
+            -numpy.arange(0.0,90.0,cp.el_major_spacing)[1:]))
+        els_minor = numpy.concatenate((
+            numpy.arange(0.0,90.0,cp.el_minor_spacing),
+            -numpy.arange(0.0,90.0,cp.el_minor_spacing)[1:]))
+
+        gl.glNewList(self.cached_minor_lines_display_list,gl.GL_COMPILE)
+        gl.glBegin(gl.GL_LINES)
+        # az minor
+        for az in azs_minor:
+            if az in azs_major:
+                continue # draw only once as major
+            draw_half_great_circle(az)
+        for el in els_minor:
+            if el in els_major:
+                continue # draw only once as major
+            draw_iso_elevation_circle(el)
+        gl.glEnd()
+        gl.glEndList()
+
+        gl.glNewList(self.cached_major_lines_display_list,gl.GL_COMPILE)
+        gl.glBegin(gl.GL_LINES)
+        for az in azs_major:
+            draw_half_great_circle(az)
+        for el in els_major:
+            draw_iso_elevation_circle(el)
+        gl.glEnd()
+        gl.glEndList()
+
+        if cp.use_text:
+            self.labels = []
+            self.labels_xyz = []
+            els_major = list(els_major)+[90.0] # make sure we have north pole
+            for el in els_major:
+                for az in azs_major:
+                    theta = -(el-90) / 180.0 * math.pi
+                    phi = (az-90.0)/180.0*math.pi
+                    x,y,z = get_xyz(theta,phi,cp.radius)
+                    self.labels_xyz.append((x,y,z))
+                    self.labels.append(
+                        VisionEgg.Text.Text( text = '%.0f, %.0f'%(az,el),
+                                             font_size = cp.font_size,
+                                             color = cp.text_color,
+                                             anchor = cp.text_anchor,
+                                             )
+                        )
+                    if (el == -90) or (el == 90):
+                        self.labels[-1].parameters.text = 'x, %.0f'%(el,)
+                        break # only one label at the poles
+
+            self.labels_xyz = Numeric.array(self.labels_xyz)
+
+    def draw(self):
+        p = self.parameters
+        cp = self.constant_parameters
+        if p.on:
+            # Set OpenGL state variables
+            gl.glDisable( gl.GL_DEPTH_TEST )
+            gl.glDisable( gl.GL_TEXTURE_2D )  # Make sure textures are not drawn
+            gl.glMatrixMode(gl.GL_MODELVIEW)
+            gl.glPushMatrix()
+            gl.glRotatef(p.center_azimuth,0.0,-1.0,0.0)
+            gl.glRotatef(p.center_elevation,1.0,0.0,0.0)
+
+            if p.anti_aliasing:
+                if len(p.minor_line_color) == 4 and not self._gave_alpha_warning:
+                    if p.minor_line_color[3] != 1.0:
+                        logger = logging.getLogger('VisionEgg.SphereMap')
+                        logger.warning("The parameter anti_aliasing is "
+                                       "set to true in the AzElGrid "
+                                       "stimulus class, but the color "
+                                       "parameter specifies an alpha "
+                                       "value other than 1.0.  To "
+                                       "acheive the best anti-aliasing, "
+                                       "ensure that the alpha value for "
+                                       "the color parameter is 1.0.")
+                        self._gave_alpha_warning = 1
+                if len(p.major_line_color) == 4 and not self._gave_alpha_warning:
+                    if p.major_line_color[3] != 1.0:
+                        logger = logging.getLogger('VisionEgg.SphereMap')
+                        logger.warning("The parameter anti_aliasing is "
+                                       "set to true in the AzElGrid "
+                                       "stimulus class, but the color "
+                                       "parameter specifies an alpha "
+                                       "value other than 1.0.  To "
+                                       "acheive the best anti-aliasing, "
+                                       "ensure that the alpha value for "
+                                       "the color parameter is 1.0.")
+                        self._gave_alpha_warning = 1
+                gl.glEnable( gl.GL_LINE_SMOOTH )
+                # allow max_alpha value to control blending
+                gl.glEnable( gl.GL_BLEND )
+                gl.glBlendFunc( gl.GL_SRC_ALPHA, gl.GL_ONE_MINUS_SRC_ALPHA )
+            else:
+                gl.glDisable( gl.GL_BLEND )
+
+            if len(p.minor_line_color)==3:
+                gl.glColor3f(*p.minor_line_color)
+            elif len(p.minor_line_color)==4:
+                gl.glColor4f(*p.minor_line_color)
+            gl.glLineWidth(p.minor_line_width)
+            gl.glCallList(self.cached_minor_lines_display_list)
+
+            if len(p.major_line_color)==3:
+                gl.glColor3f(*p.major_line_color)
+            elif len(p.major_line_color)==4:
+                gl.glColor4f(*p.major_line_color)
+            gl.glLineWidth(p.major_line_width)
+            gl.glCallList(self.cached_major_lines_display_list)
+
+            if p.anti_aliasing:
+                gl.glDisable( gl.GL_LINE_SMOOTH ) # turn off
+
+            if cp.use_text:
+                my_view = p.my_viewport
+                if (my_view is None) or (not my_view._is_drawing):
+                    raise ValueError('use_text is True, but my_viewport not (properly) assigned')
+
+                if self.text_viewport is None or self.text_viewport_orig != my_view:
+                    # make viewport for text (uses default orthographic projection)
+                    vp = my_view.parameters
+                    self.text_viewport = VisionEgg.Core.Viewport(screen=vp.screen,
+                                                                 position=vp.position,
+                                                                 size=vp.size,
+                                                                 anchor=vp.anchor,
+                                                                 )
+                    lowerleft = VisionEgg._get_lowerleft(vp.position,vp.anchor,vp.size)
+                    self.text_viewport.parameters.projection.stateless_translate(-lowerleft[0],-lowerleft[1],0)
+                    self.text_viewport_orig = p.my_viewport # in case my_viewport changes, change text_viewport
+
+                # draw text labels
+                my_proj = my_view.parameters.projection
+
+                xyz = self.labels_xyz
+
+                t = VisionEgg.ThreeDeeMath.TransformMatrix()
+                t.rotate( p.center_azimuth,0.0,-1.0,0.0  ) # acheive same transforms as the lines
+                t.rotate( p.center_elevation,1.0,0.0,0.0 )
+
+                xyz = t.transform_vertices(self.labels_xyz)
+
+                clip = my_proj.eye_2_clip(xyz)
+                try:
+                    # this is much faster when no OverflowError...
+                    window_coords = my_view.clip_2_window(clip)
+                    all_at_once = True
+                except OverflowError:
+                    all_at_once = False
+                draw_labels = []
+                for i in range(len(self.labels)):
+                    if clip[i,3] < 0: continue # this vertex is not on screen
+                    label = self.labels[i]
+                    if all_at_once:
+                        this_pos = window_coords[i,:2]
+                    else:
+                        try:
+                            window_coords = my_view.clip_2_window(clip[i,:])
+                        except OverflowError:
+                            continue # not much we can do with this vertex, either
+                        this_pos = window_coords[:2]
+                    label.parameters.position = (this_pos[0] + p.text_offset[0],
+                                                 this_pos[1] + p.text_offset[1])
+                    draw_labels.append(label)
+                self.text_viewport.parameters.stimuli = draw_labels
+                self.text_viewport.draw()
+                my_view.make_current() # restore viewport
+            gl.glPopMatrix()
+
+class SphereMap(VisionEgg.Textures.TextureStimulusBaseClass):
+    """Mercator mapping of rectangular texture onto sphere.
+
+    Parameters
+    ==========
+    center_azimuth     -- (Real)
+                          Default: 0.0
+    center_elevation   -- (Real)
+                          Default: 0.0
+    contrast           -- (Real)
+                          Default: 1.0
+    on                 -- (Boolean)
+                          Default: True
+    radius             -- (Real)
+                          Default: 1.0
+    slices             -- (UnsignedInteger)
+                          Default: 30
+    stacks             -- (UnsignedInteger)
+                          Default: 30
+    texture            -- source of texture data (Instance of <class 'VisionEgg.Textures.Texture'>)
+                          Inherited from VisionEgg.Textures.TextureStimulusBaseClass
+                          Default: (determined at runtime)
+    texture_mag_filter -- OpenGL filter enum (Integer)
+                          Inherited from VisionEgg.Textures.TextureStimulusBaseClass
+                          Default: GL_LINEAR (9729)
+    texture_min_filter -- OpenGL filter enum (Integer)
+                          Inherited from VisionEgg.Textures.TextureStimulusBaseClass
+                          Default: (GL enum determined at runtime)
+    texture_wrap_s     -- OpenGL texture wrap enum (Integer)
+                          Inherited from VisionEgg.Textures.TextureStimulusBaseClass
+                          Default: (GL enum determined at runtime)
+    texture_wrap_t     -- OpenGL texture wrap enum (Integer)
+                          Inherited from VisionEgg.Textures.TextureStimulusBaseClass
+                          Default: (GL enum determined at runtime)
+
+    Constant Parameters
+    ===================
+    internal_format   -- format with which OpenGL uses texture data (OpenGL data type enum) (Integer)
+                         Default: GL_RGB (6407)
+    mipmaps_enabled   -- Are mipmaps enabled? (Boolean)
+                         Default: True
+    shrink_texture_ok -- Allow automatic shrinking of texture if too big? (Boolean)
+                         Default: False
+    """
+
+    parameters_and_defaults = {
+        'on':(True,
+              ve_types.Boolean),
+        'contrast':(1.0,
+                    ve_types.Real),
+        'center_azimuth':(0.0, # 0=right, 90=right
+                          ve_types.Real),
+        'center_elevation':(0.0, # 0=right, 90=up
+                            ve_types.Real),
+
+        # Changing these parameters will cause re-computation of display list (may cause frame skip)
+        'radius':(1.0,
+                  ve_types.Real),
+        'slices':(30,
+                  ve_types.UnsignedInteger),
+        'stacks':(30,
+                  ve_types.UnsignedInteger)}
+
+    __slots__ = (
+        'cached_display_list',
+        '_cached_radius',
+        '_cached_slices',
+        '_cached_stacks',
+        )
+
+    def __init__(self,**kw):
+        VisionEgg.Textures.TextureStimulusBaseClass.__init__(self,**kw)
+        self.cached_display_list = gl.glGenLists(1) # Allocate a new display list
+        self.__rebuild_display_list()
+
+    def __rebuild_display_list(self):
+        p = self.parameters
+
+        s_gain = p.texture.buf_rf - p.texture.buf_lf
+        t_gain = p.texture.buf_bf - p.texture.buf_tf
+
+        s_offs = p.texture.buf_lf
+        t_offs = p.texture.buf_tf
+
+        gl.glNewList(self.cached_display_list,gl.GL_COMPILE)
+        gl.glBegin(gl.GL_QUADS)
+
+        for stack in range(p.stacks):
+            stack_upper_frac = float(stack+1)/p.stacks
+            stack_lower_frac = float(stack)/p.stacks
+            theta_upper = stack_upper_frac * math.pi
+            theta_lower = stack_lower_frac * math.pi
+            y_upper = p.radius * math.cos( theta_upper )
+            w_upper = p.radius * math.sin( theta_upper )
+            y_lower = p.radius * math.cos( theta_lower )
+            w_lower = p.radius * math.sin( theta_lower )
+            for slice in range(p.slices):
+                slice_start_frac = float(slice)/p.slices
+                slice_stop_frac = float(slice+1)/p.slices
+                phi_start = slice_start_frac * 2 * math.pi
+                phi_stop = slice_stop_frac * 2 * math.pi
+                x_start_upper = w_upper * math.cos(phi_start)
+                x_start_lower = w_lower * math.cos(phi_start)
+                x_stop_upper = w_upper * math.cos(phi_stop)
+                x_stop_lower = w_lower * math.cos(phi_stop)
+                z_start_upper = w_upper * math.sin(phi_start)
+                z_start_lower = w_lower * math.sin(phi_start)
+                z_stop_upper = w_upper * math.sin(phi_stop)
+                z_stop_lower = w_lower * math.sin(phi_stop)
+
+                tex_l = slice_start_frac*s_gain+s_offs
+                tex_r = slice_stop_frac*s_gain+s_offs
+                tex_b = stack_lower_frac*t_gain+t_offs
+                tex_t = stack_upper_frac*t_gain+t_offs
+
+                gl.glTexCoord2f(tex_l,tex_t)
+                gl.glVertex3f(x_start_upper, y_upper, z_start_upper)
+
+                gl.glTexCoord2f(tex_r,tex_t)
+                gl.glVertex3f(x_stop_upper, y_upper, z_stop_upper)
+
+                gl.glTexCoord2f(tex_r,tex_b)
+                gl.glVertex3f(x_stop_lower, y_lower, z_stop_lower)
+
+                gl.glTexCoord2f(tex_l,tex_b)
+                gl.glVertex3f(x_start_lower, y_lower, z_start_lower)
+
+        gl.glEnd()
+        gl.glEndList()
+        self._cached_radius = p.radius
+        self._cached_slices = p.slices
+        self._cached_stacks = p.stacks
+
+    def draw(self):
+    	"""Redraw the scene on every frame.
+        """
+        p = self.parameters
+
+        if self._cached_radius != p.radius or self._cached_slices != p.slices or self._cached_stacks != p.stacks:
+            self.__rebuild_display_list()
+
+        if p.on:
+            # Set OpenGL state variables
+            gl.glEnable( gl.GL_DEPTH_TEST )
+            gl.glEnable( gl.GL_TEXTURE_2D )  # Make sure textures are drawn
+            gl.glEnable( gl.GL_BLEND ) # Contrast control implemented through blending
+
+            # All of the contrast control stuff is somewhat arcane and
+            # not very clear from reading the code, so here is how it
+            # works in English. (Not that it makes it any more clear!)
+            #
+            # In the final "textured fragment" (before being blended
+            # to the framebuffer), the color values are equal to those
+            # of the texture (with the exception of pixels around the
+            # edges which have their amplitudes reduced due to
+            # anti-aliasing and are intermediate between the color of
+            # the texture and mid-gray), and the alpha value is set to
+            # the contrast.  Blending occurs, and by choosing the
+            # appropriate values for glBlendFunc, adds the product of
+            # fragment alpha (contrast) and fragment color to the
+            # product of one minus fragment alpha (contrast) and what
+            # was already in the framebuffer.
+
+            gl.glBlendFunc( gl.GL_SRC_ALPHA, gl.GL_ONE_MINUS_SRC_ALPHA )
+
+            gl.glTexEnvi(gl.GL_TEXTURE_ENV, gl.GL_TEXTURE_ENV_MODE, gl.GL_DECAL)
+
+            # clear modelview matrix
+            gl.glMatrixMode(gl.GL_MODELVIEW)
+            gl.glPushMatrix()
+            gl.glColor4f(0.5,0.5,0.5,p.contrast) # Set the polygons' fragment color (implements contrast)
+
+            if not self.constant_parameters.mipmaps_enabled:
+                if p.texture_min_filter in VisionEgg.Textures.TextureStimulusBaseClass._mipmap_modes:
+                    raise RuntimeError("Specified a mipmap mode in texture_min_filter, but mipmaps not enabled.")
+            self.texture_object.set_min_filter( p.texture_min_filter )
+            self.texture_object.set_mag_filter( p.texture_mag_filter )
+            self.texture_object.set_wrap_mode_s( p.texture_wrap_s )
+            self.texture_object.set_wrap_mode_t( p.texture_wrap_t )
+
+            # center the texture map
+            gl.glRotatef(p.center_azimuth,0.0,-1.0,0.0)
+            gl.glRotatef(p.center_elevation,1.0,0.0,0.0)
+
+            gl.glCallList(self.cached_display_list)
+            gl.glPopMatrix()
+
+class SphereGrating(VisionEgg.Gratings.LuminanceGratingCommon):
+    """Map 2D sinusoidal grating onto sphere.
+
+    Parameters
+    ==========
+    bit_depth                       -- precision with which grating is calculated and sent to OpenGL (UnsignedInteger)
+                                       Inherited from VisionEgg.Gratings.LuminanceGratingCommon
+                                       Default: 8
+    check_texture_size              -- (Boolean)
+                                       Default: True
+    contrast                        -- (Real)
+                                       Default: 1.0
+    grating_center_azimuth          -- (Real)
+                                       Default: 0.0
+    grating_center_elevation        -- (Real)
+                                       Default: 0.0
+    ignore_time                     -- (Boolean)
+                                       Default: False
+    lowpass_cutoff_cycles_per_texel -- helps prevent spatial aliasing (Real)
+                                       Default: 0.5
+    min_filter                      -- OpenGL filter enum (Integer)
+                                       Default: GL_LINEAR (9729)
+    num_samples                     -- (UnsignedInteger)
+                                       Default: 1024
+    on                              -- (Boolean)
+                                       Default: True
+    orientation                     -- (Real)
+                                       Default: 0.0
+    phase_at_t0                     -- (Real)
+                                       Default: 0.0
+    radius                          -- (Real)
+                                       Default: 1.0
+    slices                          -- (UnsignedInteger)
+                                       Default: 30
+    spatial_freq_cpd                -- (Real)
+                                       Default: 0.0277777777778
+    stacks                          -- (UnsignedInteger)
+                                       Default: 30
+    t0_time_sec_absolute            -- (Real)
+                                       Default: (determined at runtime)
+    temporal_freq_hz                -- (Real)
+                                       Default: 5.0
+    """
+
+    parameters_and_defaults = {
+        'on':(True,
+              ve_types.Boolean),
+        'contrast':(1.0,
+                    ve_types.Real),
+        'spatial_freq_cpd':(1.0/36.0, # cycles/degree
+                            ve_types.Real),
+        'temporal_freq_hz':(5.0, # hz
+                            ve_types.Real),
+        't0_time_sec_absolute':(None,
+                                ve_types.Real),
+        'ignore_time':(False, # ignore temporal frequency variable - allow control purely with phase_at_t0
+                       ve_types.Boolean),
+        'phase_at_t0':(0.0,  # degrees
+                       ve_types.Real),
+        'orientation':(0.0,  # 0=right, 90=up
+                       ve_types.Real),
+        'grating_center_azimuth':(0.0, # 0=right, 90=down
+                                  ve_types.Real),
+        'grating_center_elevation':(0.0, # 0=right, 90=down
+                                    ve_types.Real),
+        'check_texture_size':(True, # slows down drawing but catches errors
+                              ve_types.Boolean),
+        'lowpass_cutoff_cycles_per_texel':(0.5,
+                                           ve_types.Real,
+                                           'helps prevent spatial aliasing'),
+        'min_filter':(gl.GL_LINEAR,
+                      ve_types.Integer,
+                      "OpenGL filter enum",
+                      VisionEgg.ParameterDefinition.OPENGL_ENUM),
+        # changing this parameters causes re-drawing of the texture object and may cause frame skipping
+        'num_samples':(1024,  # number of spatial samples, should be a power of 2
+                       ve_types.UnsignedInteger),
+        # Changing these parameters will cause re-computation of display list (may cause frame skip)
+        'radius':(1.0,
+                  ve_types.Real),
+        'slices':(30,
+                  ve_types.UnsignedInteger),
+        'stacks':(30,
+                  ve_types.UnsignedInteger),
+        }
+
+    __slots__ = (
+        'texture_object_id',
+        'cached_display_list_id',
+        '_cached_num_samples',
+        '_cached_radius',
+        '_cached_slices',
+        '_cached_stacks',
+        )
+
+    def __init__(self,**kw):
+        VisionEgg.Gratings.LuminanceGratingCommon.__init__(self,**kw)
+
+        if self.parameters.t0_time_sec_absolute is None:
+            self.parameters.t0_time_sec_absolute = VisionEgg.time_func()
+
+        self.texture_object_id = gl.glGenTextures(1) # Allocate a new texture object
+        self.__rebuild_texture_object()
+
+        self.cached_display_list_id = gl.glGenLists(1) # Allocate a new display list
+        self.__rebuild_display_list()
+
+    def __rebuild_texture_object(self):
+        gl.glBindTexture(gl.GL_TEXTURE_1D,self.texture_object_id)
+        p = self.parameters # shorthand
+
+        # Do error-checking on texture to make sure it will load
+        max_dim = gl.glGetIntegerv(gl.GL_MAX_TEXTURE_SIZE)
+        if p.num_samples > max_dim:
+            raise VisionEgg.Gratings.NumSamplesTooLargeError("Grating num_samples too large for video system.\nOpenGL reports maximum size of %d"%(max_dim,))
+
+        self.calculate_bit_depth_dependencies()
+
+        l = 0.0
+        r = 360.0
+
+        mipmap_level = 0
+        this_mipmap_level_num_samples = p.num_samples
+        while this_mipmap_level_num_samples >= 1:
+            inc = 360.0/float(this_mipmap_level_num_samples) # degrees per pixel
+            cycles_per_texel = p.spatial_freq_cpd * inc
+            if cycles_per_texel < p.lowpass_cutoff_cycles_per_texel: # sharp cutoff lowpass filter
+                # below cutoff frequency - draw sine wave
+                if p.ignore_time:
+                    phase = p.phase_at_t0
+                else:
+                    t_var = VisionEgg.time_func() - p.t0_time_sec_absolute
+                    phase = t_var*p.temporal_freq_hz*360.0 + p.phase_at_t0
+                floating_point_sin = Numeric.sin(2.0*math.pi*p.spatial_freq_cpd*Numeric.arange(l,r,inc,'d')-(phase/180.0*math.pi))*0.5*p.contrast+0.5
+                floating_point_sin = Numeric.clip(floating_point_sin,0.0,1.0) # allow square wave generation if contrast > 1
+                texel_data = (floating_point_sin*self.max_int_val).astype(self.numpy_dtype).tostring()
+            else:
+                # above cutoff frequency - blank
+                texel_data = (self.max_int_val*0.5)*Numeric.ones((this_mipmap_level_num_samples,),self.numpy_dtype)
+
+            if p.check_texture_size:
+                # Because the MAX_TEXTURE_SIZE method is insensitive to the current
+                # state of the video system, another check must be done using
+                # "proxy textures".
+                gl.glTexImage1D(gl.GL_PROXY_TEXTURE_1D,  # target
+                                mipmap_level,            # level
+                                self.gl_internal_format, # video RAM internal format: RGB
+                                this_mipmap_level_num_samples,        # width
+                                0,                       # border
+                                self.format,             # format of image data
+                                self.gl_type,            # type of image data
+                                texel_data)              # texel data
+                if gl.glGetTexLevelParameteriv(gl.GL_PROXY_TEXTURE_1D,0,gl.GL_TEXTURE_WIDTH) == 0:
+                    raise NumSamplesTooLargeError("Grating num_samples is too wide for your video system!")
+
+            # If we got here, it worked and we can load the texture for real.
+            gl.glTexImage1D(gl.GL_TEXTURE_1D,        # target
+                            mipmap_level,            # level
+                            self.gl_internal_format, # video RAM internal format: RGB
+                            this_mipmap_level_num_samples,        # width
+                            0,                       # border
+                            self.format,             # format of image data
+                            self.gl_type,            # type of image data
+                            texel_data)              # texel data
+
+            # prepare for next mipmap level
+            this_mipmap_level_num_samples = this_mipmap_level_num_samples/2 # integer division
+            mipmap_level += 1
+
+        # Set some texture object defaults
+        gl.glTexParameteri(gl.GL_TEXTURE_1D,gl.GL_TEXTURE_WRAP_S,gl.GL_REPEAT)
+        gl.glTexParameteri(gl.GL_TEXTURE_1D,gl.GL_TEXTURE_WRAP_T,gl.GL_REPEAT)
+        gl.glTexParameteri(gl.GL_TEXTURE_1D,gl.GL_TEXTURE_MAG_FILTER,gl.GL_LINEAR)
+        gl.glTexParameteri(gl.GL_TEXTURE_1D,gl.GL_TEXTURE_MIN_FILTER,p.min_filter)
+        self._cached_num_samples = p.num_samples
+
+    def __rebuild_display_list(self):
+        gl.glNewList(self.cached_display_list_id,gl.GL_COMPILE)
+
+        p = self.parameters
+        gl.glBegin(gl.GL_QUADS)
+
+        for stack in range(p.stacks):
+            stack_upper_frac = float(stack+1)/p.stacks
+            stack_lower_frac = float(stack)/p.stacks
+            theta_upper = stack_upper_frac * math.pi
+            theta_lower = stack_lower_frac * math.pi
+            y_upper = p.radius * math.cos( theta_upper )
+            w_upper = p.radius * math.sin( theta_upper )
+            y_lower = p.radius * math.cos( theta_lower )
+            w_lower = p.radius * math.sin( theta_lower )
+            for slice in range(p.slices):
+                slice_start_frac = float(slice)/p.slices
+                slice_stop_frac = float(slice+1)/p.slices
+                phi_start = slice_start_frac * 2 * math.pi
+                phi_stop = slice_stop_frac * 2 * math.pi
+                x_start_upper = w_upper * math.cos(phi_start)
+                x_start_lower = w_lower * math.cos(phi_start)
+                x_stop_upper = w_upper * math.cos(phi_stop)
+                x_stop_lower = w_lower * math.cos(phi_stop)
+                z_start_upper = w_upper * math.sin(phi_start)
+                z_start_lower = w_lower * math.sin(phi_start)
+                z_stop_upper = w_upper * math.sin(phi_stop)
+                z_stop_lower = w_lower * math.sin(phi_stop)
+
+                tex_l = slice_start_frac
+                tex_r = slice_stop_frac
+                tex_b = 0.0#stack_lower_frac
+                tex_t = 1.0#stack_upper_frac
+
+                gl.glTexCoord2f(tex_l,tex_t)
+                gl.glVertex3f(x_start_upper, y_upper, z_start_upper)
+
+                gl.glTexCoord2f(tex_r,tex_t)
+                gl.glVertex3f(x_stop_upper, y_upper, z_stop_upper)
+
+                gl.glTexCoord2f(tex_r,tex_b)
+                gl.glVertex3f(x_stop_lower, y_lower, z_stop_lower)
+
+                gl.glTexCoord2f(tex_l,tex_b)
+                gl.glVertex3f(x_start_lower, y_lower, z_start_lower)
+
+        gl.glEnd()
+        gl.glEndList()
+        self._cached_radius = p.radius
+        self._cached_slices = p.slices
+        self._cached_stacks = p.stacks
+
+    def draw(self):
+    	"""Redraw the scene on every frame.
+        """
+        p = self.parameters
+
+        if self._cached_radius != p.radius or self._cached_slices != p.slices or self._cached_stacks != p.stacks:
+            self.__rebuild_display_list()
+
+        if self._cached_num_samples != p.num_samples:
+            self.__rebuild_texture_object()
+
+        if p.on:
+            if p.bit_depth != self.cached_bit_depth:
+                self.calculate_bit_depth_dependencies()
+            # Set OpenGL state variables
+            gl.glEnable( gl.GL_DEPTH_TEST )
+            gl.glEnable( gl.GL_TEXTURE_1D )  # Make sure textures are drawn
+            gl.glDisable( gl.GL_TEXTURE_2D )
+            gl.glDisable( gl.GL_BLEND )
+
+            gl.glBindTexture(gl.GL_TEXTURE_1D,self.texture_object_id)
+            gl.glTexParameteri(gl.GL_TEXTURE_1D,gl.GL_TEXTURE_MIN_FILTER,p.min_filter)
+
+            l = 0.0
+            r = 360.0
+
+            mipmap_level = 0
+            this_mipmap_level_num_samples = p.num_samples
+            while this_mipmap_level_num_samples >= 1:
+                inc = 360.0/float(this_mipmap_level_num_samples)# degrees per pixel
+                cycles_per_texel = p.spatial_freq_cpd * inc
+                if cycles_per_texel < p.lowpass_cutoff_cycles_per_texel: # sharp cutoff lowpass filter
+                    if p.ignore_time:
+                        phase = p.phase_at_t0
+                    else:
+                        t_var = VisionEgg.time_func() - p.t0_time_sec_absolute
+                        phase = t_var*p.temporal_freq_hz*360.0 + p.phase_at_t0
+                    floating_point_sin = Numeric.sin(2.0*math.pi*p.spatial_freq_cpd*Numeric.arange(l,r,inc,'d')-(phase/180.0*math.pi))*0.5*p.contrast+0.5
+                    floating_point_sin = Numeric.clip(floating_point_sin,0.0,1.0) # allow square wave generation if contrast > 1
+                    texel_data = (floating_point_sin*self.max_int_val).astype(self.numpy_dtype).tostring()
+                else:
+                    blank = 0.5*Numeric.ones((this_mipmap_level_num_samples,),'d')
+                    texel_data = (blank*self.max_int_val).astype(self.numpy_dtype).tostring()
+
+                gl.glTexSubImage1D(gl.GL_TEXTURE_1D,           # target
+                                mipmap_level,                  # level
+                                0,                             # x offset
+                                this_mipmap_level_num_samples, # width
+                                self.format,                   # data format
+                                self.gl_type,                  # data type
+                                texel_data)
+
+                # prepare for next mipmap level
+                this_mipmap_level_num_samples = this_mipmap_level_num_samples/2 # integer division
+                mipmap_level += 1
+
+            gl.glTexEnvi(gl.GL_TEXTURE_ENV, gl.GL_TEXTURE_ENV_MODE, gl.GL_REPLACE)
+
+            # clear modelview matrix
+            gl.glMatrixMode(gl.GL_MODELVIEW)
+            gl.glPushMatrix()
+            # center the grating
+            gl.glRotatef(p.grating_center_azimuth,0.0,-1.0,0.0)
+            gl.glRotatef(p.grating_center_elevation,1.0,0.0,0.0)
+
+            # do the orientation
+            gl.glRotatef(p.orientation,0.0,0.0,1.0)
+
+            gl.glCallList(self.cached_display_list_id)
+
+            gl.glDisable( gl.GL_TEXTURE_1D )
+            gl.glPopMatrix()
+
+class SphereWindow(VisionEgg.Gratings.LuminanceGratingCommon):
+    """This draws an opaque sphere with a single window in it.
+
+    This is useful when you need to have a viewport on a 3D scene.
+
+    Parameters
+    ==========
+    bit_depth                     -- precision with which grating is calculated and sent to OpenGL (UnsignedInteger)
+                                     Inherited from VisionEgg.Gratings.LuminanceGratingCommon
+                                     Default: 8
+    num_s_samples                 -- (UnsignedInteger)
+                                     Default: 512
+    num_t_samples                 -- (UnsignedInteger)
+                                     Default: 512
+    on                            -- (Boolean)
+                                     Default: True
+    opaque_color                  -- (Sequence4 of Real)
+                                     Default: (0.5, 0.5, 0.5, 0.0)
+    radius                        -- (Real)
+                                     Default: 1.0
+    slices                        -- (UnsignedInteger)
+                                     Default: 30
+    stacks                        -- (UnsignedInteger)
+                                     Default: 30
+    window_center_azimuth         -- (Real)
+                                     Default: 0.0
+    window_center_elevation       -- (Real)
+                                     Default: 0.0
+    window_shape                  -- can be 'circle', 'gaussian', or 'lat-long rectangle' (String)
+                                     Default: gaussian
+    window_shape_parameter2       -- (currently only used for) height of lat-long rectangle (in degrees) (Real)
+                                     Default: 30.0
+    window_shape_radius_parameter -- radius of circle, sigma of gaussian, width of lat-long rectangle (in degrees) (Real)
+                                     Default: 36.0
+    """
+
+    parameters_and_defaults = {
+        'on':(True,
+              ve_types.Boolean),
+        'window_center_elevation':(0.0,
+                                   ve_types.Real),
+        'window_center_azimuth':(0.0,
+                                 ve_types.Real),
+        'opaque_color':((0.5,0.5,0.5,0.0),
+                        ve_types.Sequence4(ve_types.Real)),
+        # changing these parameters causes re-drawing of the texture object and may cause frame skipping
+        'window_shape':('gaussian', # can be 'circle' or 'gaussian'
+                        ve_types.String,
+                        "can be 'circle', 'gaussian', or 'lat-long rectangle'",
+                        ),
+        'window_shape_radius_parameter':(36.0,
+                                         ve_types.Real,
+                                         'radius of circle, sigma of gaussian, width of lat-long rectangle (in degrees)',
+                                         ),
+        'window_shape_parameter2':(30.0,
+                                   ve_types.Real,
+                                   '(currently only used for) height of lat-long rectangle (in degrees)',
+                                   ),
+        'num_s_samples':(512,  # number of horizontal spatial samples, should be a power of 2
+                         ve_types.UnsignedInteger),
+        'num_t_samples':(512,  # number of vertical spatial samples, should be a power of 2
+                         ve_types.UnsignedInteger),
+        # Changing these parameters will cause re-computation of display list (may cause frame skip)
+        'radius':(1.0, # XXX could modify code below to use scaling, thus avoiding need for recomputation
+                  ve_types.Real),
+        'slices':(30,
+                  ve_types.UnsignedInteger),
+        'stacks':(30,
+                  ve_types.UnsignedInteger),
+        }
+
+    __slots__ = (
+        'texture_object_id',
+        'windowed_display_list_id',
+        'opaque_display_list_id',
+        '_cached_window_shape',
+        '_cached_shape_radius_parameter',
+        '_cached_shape_parameter2',
+        '_cached_num_s_samples',
+        '_cached_num_t_samples',
+        '_cached_radius',
+        '_cached_slices',
+        '_cached_stacks',
+        '_texture_s_is_azimuth',
+        )
+
+    def __init__(self, **kw):
+        VisionEgg.Gratings.LuminanceGratingCommon.__init__(self, **kw )
+
+        p = self.parameters
+
+        # set self._texture_s_is_azimuth in advance
+        if p.window_shape == 'lat-long rectangle':
+            self._texture_s_is_azimuth = True
+        else:
+            self._texture_s_is_azimuth = False
+
+        self.texture_object_id = gl.glGenTextures(1)
+        self.__rebuild_texture_object()
+
+        self.windowed_display_list_id = gl.glGenLists(1) # Allocate a new display list
+        self.opaque_display_list_id = gl.glGenLists(1) # Allocate a new display list
+        self.__rebuild_display_lists()
+
+    def __rebuild_texture_object(self):
+        gl.glBindTexture(gl.GL_TEXTURE_2D,self.texture_object_id)
+        p = self.parameters
+
+        # Do error-checking on texture to make sure it will load
+        max_dim = gl.glGetIntegerv(gl.GL_MAX_TEXTURE_SIZE)
+        if p.num_s_samples > max_dim:
+            raise VisionEgg.Gratings.NumSamplesTooLargeError("SphereWindow num_s_samples too large for video system.\nOpenGL reports maximum size of %d"%(max_dim,))
+        if p.num_t_samples > max_dim:
+            raise VisionEgg.Gratings.NumSamplesTooLargeError("SphereWindow num_t_samples too large for video system.\nOpenGL reports maximum size of %d"%(max_dim,))
+
+        self.calculate_bit_depth_dependencies()
+        self.gl_internal_format = gl.GL_ALPHA # change from luminance to alpha
+        self.format = gl.GL_ALPHA
+
+        # texture coordinates are Mercator: (determined when building display list)
+        #   s: x within sphere
+        #   t: z within sphere
+
+        if p.window_shape == 'circle':
+            if self._texture_s_is_azimuth:
+                self.__rebuild_display_lists()
+
+            # XXX this is aliased
+            s_axis = (Numeric.arange(p.num_s_samples)/float(p.num_s_samples)-0.5)**2
+            t_axis = (Numeric.arange(p.num_t_samples)/float(p.num_t_samples)-0.5)**2
+            mask = s_axis[Numeric.NewAxis,:] + t_axis[:,Numeric.NewAxis]
+            angle_deg = min(180,p.window_shape_radius_parameter) # clip angle
+            cartesian_radius = 0.5*math.sin(p.window_shape_radius_parameter/180.0*math.pi)
+            floating_point_window = Numeric.less(mask,cartesian_radius**2)
+        elif p.window_shape == 'gaussian':
+            if self._texture_s_is_azimuth:
+                self.__rebuild_display_lists()
+
+            MIN_EXP = -745.0
+            MAX_EXP =  709.0
+
+            s = Numeric.arange(0.0,p.num_s_samples,1.0,'f')/p.num_s_samples
+            t = Numeric.arange(0.0,p.num_t_samples,1.0,'f')/p.num_t_samples
+            sigma_normalized = p.window_shape_radius_parameter / 90.0 * 0.5
+
+            check_s = -((s-0.5)**2/(2.0*sigma_normalized**2))
+            try:
+                # some platforms raise OverflowError when doing this on small numbers
+                val_s = Numeric.exp( check_s )
+            except OverflowError:
+                check_s = Numeric.clip(check_s,MIN_EXP,MAX_EXP)
+                val_s = Numeric.exp( check_s )
+
+            check_t = -((t-0.5)**2/(2.0*sigma_normalized**2))
+            try:
+                val_t = Numeric.exp( check_t )
+            except OverflowError:
+                check_t = Numeric.clip(check_t,MIN_EXP,MAX_EXP)
+                val_t = Numeric.exp( check_t )
+            floating_point_window = Numeric.outerproduct(val_t,val_s)
+        elif  p.window_shape == 'lat-long rectangle':
+            if not self._texture_s_is_azimuth:
+                self.__rebuild_display_lists()
+
+            # s coordinate represents -90 to +90 degrees (azimuth).
+            s_axis = (Numeric.arange(p.num_s_samples)/float(p.num_s_samples)-0.5)*180
+            s_axis = Numeric.less( abs(s_axis), p.window_shape_radius_parameter*0.5 )
+
+            # t coordinate represents height.
+            # Convert angle to height.
+            angle_deg = min(90,p.window_shape_parameter2*0.5) # clip angle
+            desired_height = math.sin(angle_deg/180.0*math.pi)*0.5
+            t_axis = Numeric.arange(p.num_t_samples)/float(p.num_t_samples)-0.5
+            t_axis = Numeric.less(abs(t_axis),desired_height)
+            floating_point_window = Numeric.outerproduct(t_axis,s_axis)
+        else:
+            raise RuntimeError('Unknown window_shape "%s"'%(p.window_shape,))
+        texel_data = (floating_point_window * self.max_int_val).astype(self.numpy_dtype).tostring()
+
+        # Because the MAX_TEXTURE_SIZE method is insensitive to the current
+        # state of the video system, another check must be done using
+        # "proxy textures".
+        gl.glTexImage2D(gl.GL_PROXY_TEXTURE_2D,      # target
+                     0,                              # mipmap_level
+                     self.gl_internal_format,        # video RAM internal format
+                     p.num_s_samples,  # width
+                     p.num_t_samples,  # height
+                     0,                              # border
+                     self.format,                    # format of image data
+                     self.gl_type,                   # type of image data
+                     texel_data)                     # texel data
+        if (gl.glGetTexLevelParameteriv(gl.GL_PROXY_TEXTURE_2D, # Need PyOpenGL >= 2.0
+                                        0,
+                                        gl.GL_TEXTURE_WIDTH) == 0) or (
+            gl.glGetTexLevelParameteriv(gl.GL_PROXY_TEXTURE_2D,
+                                        0,
+                                        gl.GL_TEXTURE_HEIGHT) == 0):
+            raise VisionEgg.Gratings.NumSamplesTooLargeError("SphereWindow num_s_samples or num_t_samples is too large for your video system!")
+
+        gl.glTexImage2D(gl.GL_TEXTURE_2D,      # target
+                        0,                              # mipmap_level
+                        self.gl_internal_format,        # video RAM internal format
+                        p.num_s_samples,  # width
+                        p.num_t_samples,  # height
+                        0,                              # border
+                        self.format,                    # format of image data
+                        self.gl_type,                   # type of image data
+                        texel_data)                     # texel data
+
+        # Set some texture object defaults
+        gl.glTexParameteri(gl.GL_TEXTURE_2D,gl.GL_TEXTURE_WRAP_S,gl.GL_CLAMP_TO_EDGE)
+        gl.glTexParameteri(gl.GL_TEXTURE_2D,gl.GL_TEXTURE_WRAP_T,gl.GL_CLAMP_TO_EDGE)
+        gl.glTexParameteri(gl.GL_TEXTURE_2D,gl.GL_TEXTURE_MAG_FILTER,gl.GL_LINEAR)
+        gl.glTexParameteri(gl.GL_TEXTURE_2D,gl.GL_TEXTURE_MIN_FILTER,gl.GL_LINEAR)
+
+        self._cached_window_shape = p.window_shape
+        self._cached_shape_radius_parameter = p.window_shape_radius_parameter
+        self._cached_shape_parameter2 = p.window_shape_parameter2
+        self._cached_num_s_samples = p.num_s_samples
+        self._cached_num_t_samples = p.num_t_samples
+
+    def __rebuild_display_lists(self):
+        gl.glMatrixMode(gl.GL_MODELVIEW)
+        gl.glPushMatrix()
+
+        p = self.parameters
+
+        if p.window_shape == 'lat-long rectangle':
+            self._texture_s_is_azimuth = True
+        else:
+            self._texture_s_is_azimuth = False
+
+        gl.glNewList(self.windowed_display_list_id,gl.GL_COMPILE)
+
+        gl.glBegin(gl.GL_QUADS)
+
+        for stack in range(p.stacks):
+            stack_upper_frac = float(stack+1)/p.stacks
+            stack_lower_frac = float(stack)/p.stacks
+            theta_upper = stack_upper_frac * math.pi
+            theta_lower = stack_lower_frac * math.pi
+            y_upper = p.radius * math.cos( theta_upper )
+            w_upper = p.radius * math.sin( theta_upper )
+            y_lower = p.radius * math.cos( theta_lower )
+            w_lower = p.radius * math.sin( theta_lower )
+            for slice in range(p.slices/2,p.slices): # only do half of sphere (other half has no window)
+                slice_start_frac = float(slice)/p.slices
+                slice_stop_frac = float(slice+1)/p.slices
+                phi_start = slice_start_frac * 2 * math.pi
+                phi_stop = slice_stop_frac * 2 * math.pi
+                x_start_upper = w_upper * math.cos(phi_start)
+                x_start_lower = w_lower * math.cos(phi_start)
+                x_stop_upper = w_upper * math.cos(phi_stop)
+                x_stop_lower = w_lower * math.cos(phi_stop)
+                z_start_upper = w_upper * math.sin(phi_start)
+                z_start_lower = w_lower * math.sin(phi_start)
+                z_stop_upper = w_upper * math.sin(phi_stop)
+                z_stop_lower = w_lower * math.sin(phi_stop)
+
+                o = 0.5
+                g = 0.5 / p.radius
+
+                if self._texture_s_is_azimuth:
+                    tex_s_start = slice_start_frac*2-1
+                    tex_s_stop = slice_stop_frac*2-1
+                else:
+                    tex_s_start = x_start_upper*g+o
+                    tex_s_stop = x_stop_upper*g+o
+
+                gl.glTexCoord2f(tex_s_start,y_upper*g+o)
+                gl.glVertex3f(x_start_upper, y_upper, z_start_upper)
+
+                gl.glTexCoord2f(tex_s_stop,y_upper*g+o)
+                gl.glVertex3f(x_stop_upper, y_upper, z_stop_upper)
+
+                gl.glTexCoord2f(tex_s_stop,y_lower*g+o)
+                gl.glVertex3f(x_stop_lower, y_lower, z_stop_lower)
+
+                gl.glTexCoord2f(tex_s_start,y_lower*g+o)
+                gl.glVertex3f(x_start_lower, y_lower, z_start_lower)
+
+        gl.glEnd()
+        gl.glEndList()
+
+        gl.glNewList(self.opaque_display_list_id,gl.GL_COMPILE)
+
+        gl.glBegin(gl.GL_QUADS)
+
+        for stack in range(p.stacks):
+            stack_upper_frac = float(stack+1)/p.stacks
+            stack_lower_frac = float(stack)/p.stacks
+            theta_upper = stack_upper_frac * math.pi
+            theta_lower = stack_lower_frac * math.pi
+            y_upper = p.radius * math.cos( theta_upper )
+            w_upper = p.radius * math.sin( theta_upper )
+            y_lower = p.radius * math.cos( theta_lower )
+            w_lower = p.radius * math.sin( theta_lower )
+            for slice in range(p.slices/2): # half of sphere with no window
+                slice_start_frac = float(slice)/p.slices
+                slice_stop_frac = float(slice+1)/p.slices
+                phi_start = slice_start_frac * 2 * math.pi
+                phi_stop = slice_stop_frac * 2 * math.pi
+                x_start_upper = w_upper * math.cos(phi_start)
+                x_start_lower = w_lower * math.cos(phi_start)
+                x_stop_upper = w_upper * math.cos(phi_stop)
+                x_stop_lower = w_lower * math.cos(phi_stop)
+                z_start_upper = w_upper * math.sin(phi_start)
+                z_start_lower = w_lower * math.sin(phi_start)
+                z_stop_upper = w_upper * math.sin(phi_stop)
+                z_stop_lower = w_lower * math.sin(phi_stop)
+
+                gl.glVertex3f(x_start_upper, y_upper, z_start_upper)
+
+                gl.glVertex3f(x_stop_upper, y_upper, z_stop_upper)
+
+                gl.glVertex3f(x_stop_lower, y_lower, z_stop_lower)
+
+                gl.glVertex3f(x_start_lower, y_lower, z_start_lower)
+
+        gl.glEnd()
+        gl.glEndList()
+        self._cached_radius = p.radius
+        self._cached_slices = p.slices
+        self._cached_stacks = p.stacks
+        gl.glPopMatrix()
+
+    def draw(self):
+    	"""Redraw the scene on every frame.
+        """
+        p = self.parameters
+
+        if self._cached_radius != p.radius or self._cached_slices != p.slices or self._cached_stacks != p.stacks:
+            self.__rebuild_display_lists()
+
+        if self._cached_window_shape != p.window_shape or self._cached_shape_radius_parameter != p.window_shape_radius_parameter:
+            self.__rebuild_texture_object()
+
+        if p.window_shape == 'lat-long rectangle' and self._cached_shape_parameter2 != p.window_shape_parameter2:
+            self.__rebuild_texture_object()
+
+        if self._cached_num_s_samples != p.num_s_samples or self._cached_num_t_samples != p.num_t_samples:
+            self.__rebuild_texture_object()
+
+        if p.on:
+            #gl.glPolygonMode( gl.GL_FRONT_AND_BACK, gl.GL_LINE )
+            if p.bit_depth != self.cached_bit_depth:
+                self.calculate_bit_depth_dependencies()
+                self.gl_internal_format = gl.GL_ALPHA # change from luminance to alpha
+                self.format = gl.GL_ALPHA
+            # Set OpenGL state variables
+            gl.glEnable( gl.GL_DEPTH_TEST )
+            gl.glEnable( gl.GL_TEXTURE_2D )
+            gl.glEnable( gl.GL_BLEND )
+
+            gl.glBlendFunc( gl.GL_ONE_MINUS_SRC_ALPHA, gl.GL_SRC_ALPHA ) # alpha 1.0 = transparent
+
+            gl.glBindTexture(gl.GL_TEXTURE_2D,self.texture_object_id)
+            gl.glColor4f( *p.opaque_color )
+            gl.glTexEnvi(gl.GL_TEXTURE_ENV, gl.GL_TEXTURE_ENV_MODE, gl.GL_REPLACE)
+
+            # clear modelview matrix
+            gl.glMatrixMode(gl.GL_MODELVIEW)
+            gl.glPushMatrix()
+
+            # do the window position
+            gl.glRotatef(p.window_center_azimuth,0.0,-1.0,0.0)
+            gl.glRotatef(p.window_center_elevation,1.0,0.0,0.0)
+
+            gl.glCallList(self.windowed_display_list_id)
+            gl.glCallList(self.opaque_display_list_id)
+            gl.glPopMatrix()
+
diff --git a/VisionEgg/TCPController.py b/VisionEgg/TCPController.py
new file mode 100644
index 0000000..3e5ada3
--- /dev/null
+++ b/VisionEgg/TCPController.py
@@ -0,0 +1,728 @@
+# The Vision Egg: TCPController
+#
+# Copyright (C) 2001-2003 Andrew Straw.
+# Author: Andrew Straw <astraw at users.sourceforge.net>
+# URL: <http://www.visionegg.org/>
+#
+# Distributed under the terms of the GNU Lesser General Public License
+# (LGPL). See LICENSE.TXT that came with this file.
+#
+# $Id$
+
+"""
+Allows control of parameter values over the network.
+
+Don't use for realtime control unless you think your network is that
+fast and reliable. Also, this code has not been optimized for speed,
+and I think it is unwise to attempt to change the value of controllers
+in realtime.  In other words, do not design an experiment where, on a
+remote computer, you have determined that a certain amount of time has
+passed, and you require a certain new controller value NOW.  In this
+case, it would be better to use parameter=eval_str() with an if
+statement involving time.
+
+To control parameters over a network, start a server with an instance
+of TCPServer.  The server spawns an instance of SocketListenController
+for each connected socket.  (Most commonly you will only want
+connection over a single socket.)  The instance of
+SocketListenController handles all communication for that connection
+and serves as a container and (meta) controller for instances of
+TCPController.
+
+This module contains ABSOLUTELY NO SECURITY FEATURES, and could easily
+allow arbitrary execution of code on your computer. For this reason,
+if you use this module, I recommend operating behind a firewall. This
+could be an inexpensive "routing switch" used for cable modems, which
+would provide the added benefit that your local network would be
+isolated.  This would elimate all traffic not to or from computers on
+the switch and therefore reduce/eliminate packet collisions, decrease
+latency, and providing a network performance and reliability. To
+address security concerns, you could also write code that implements
+IP address checking or other security features.
+
+"""
+
+import VisionEgg
+import VisionEgg.Core
+import VisionEgg.FlowControl
+import VisionEgg.ParameterTypes as ve_types
+import socket, select, re, string, types
+import numpy.oldnumeric as Numeric, math # for eval
+
+try:
+    import Tkinter
+except:
+    pass
+
+import logging
+
+__version__ = VisionEgg.release_name
+
+class TCPServer:
+    """TCP server creates SocketListenController upon connection.
+
+    This class is analagous to VisionEgg.PyroHelpers.PyroServer.
+
+    """
+    def __init__(self,
+                 hostname="",
+                 port=7834,
+                 single_socket_but_reconnect_ok=0,
+                 dialog_ok=1,
+                 confirm_address_with_gui=1):
+        """Bind to hostname and port, but don't listen yet.
+
+        """
+        server_address = (socket.getfqdn(hostname),port)
+        self.dialog_ok = dialog_ok
+        self.single_socket_but_reconnect_ok = single_socket_but_reconnect_ok
+        self.buffer = ""
+        self.server_socket=None
+        if not globals().has_key("Tkinter") or (VisionEgg.config.VISIONEGG_TKINTER_OK==0):
+            self.dialog_ok = 0
+
+        class GetServerAddressWindow(Tkinter.Frame):
+            def __init__(self,server_address,**kw):
+                try:
+                    Tkinter.Frame.__init__(self,**kw)
+                except AttributeError,x:
+                    tk=Tkinter.Tk() # restart Tk and see if that helps
+                    Tkinter.Frame.__init__(self,tk,**kw)
+                self.winfo_toplevel().title("Vision Egg: TCP Server get address")
+                self.server_address = server_address
+                hostname,port = self.server_address
+                self.clicked_ok = 0
+                self.hostname = Tkinter.StringVar()
+                self.hostname.set(hostname)
+                self.port = Tkinter.StringVar()
+                self.port.set(port)
+                row = 0
+                Tkinter.Label(self,
+                              text="Please enter the hostname and port you would like to listen for connections on.",
+                              ).grid(row=row,columnspan=2)
+                row += 1
+                Tkinter.Label(self,
+                              text="Hostname (blank means localhost):",
+                              ).grid(row=row,column=0,sticky=Tkinter.E)
+                Tkinter.Entry(self,textvariable=self.hostname).grid(row=row,column=1,sticky=Tkinter.W+Tkinter.E,padx=10)
+                row += 1
+                Tkinter.Label(self,
+                              text="Port:",
+                              ).grid(row=row,column=0,sticky=Tkinter.E)
+                Tkinter.Entry(self,textvariable=self.port).grid(row=row,column=1,sticky=Tkinter.W+Tkinter.E,padx=10)
+                row += 1
+                b = Tkinter.Button(self,
+                                   text="Bind port and listen for connections",
+                                   command=self.click_ok)
+                b.grid(row=row,columnspan=2)
+                b.focus_force()
+                b.bind('<Return>',self.click_ok)
+            def click_ok(self,dummy_arg=None):
+                hostname = self.hostname.get()
+                try:
+                    port = int(self.port.get())
+                except:
+                    port = self.port.get()
+                self.server_address = (hostname,port)
+                self.clicked_ok = 1
+                self.winfo_toplevel().destroy()
+
+        bound = 0
+        if not bound:
+#        while not bound: # don't loop until the code is cleaner
+            if confirm_address_with_gui and self.dialog_ok:
+                window = GetServerAddressWindow(server_address)
+                window.pack()
+                window.mainloop()
+                if not window.clicked_ok:
+                    return # User wants to quit
+                server_address = window.server_address
+            self.server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
+            self.server_socket.bind(server_address)
+            bound = 1
+
+    def create_listener_once_connected(self,eval_frequency=None):
+        """Wait for connection and spawn instance of SocketListenController."""
+        if eval_frequency is None:
+            # Don't listen to socket during go loop -- especially don't want to skip frames then
+            eval_frequency = VisionEgg.FlowControl.Controller.EVERY_FRAME | VisionEgg.FlowControl.Controller.NOT_DURING_GO
+        host,port = self.server_socket.getsockname()
+        fqdn = socket.getfqdn(host)
+        logger = logging.getLogger('VisionEgg.TCPController')
+        logger.info("Awaiting connection to TCP Server at '%s', port %d"%(fqdn,port))
+        self.server_socket.listen(1)
+        if self.dialog_ok:
+            # Make a Tkinter dialog box
+            class WaitingDialog(Tkinter.Frame):
+                def __init__(self,server_socket=None,**kw):
+                    Tkinter.Frame.__init__(self,**kw)
+                    self.winfo_toplevel().title('Vision Egg TCP Server')
+                    self.server_socket = server_socket
+                    host,port = self.server_socket.getsockname()
+                    fqdn = socket.getfqdn(host)
+                    spacer = Tkinter.Frame(self,borderwidth=30)
+                    spacer.pack()
+                    Tkinter.Label(spacer,text=
+                                  """Awaiting connection to TCP Server at "%s", port %d"""%(fqdn,port)
+                                  ).pack()
+                    b = Tkinter.Button(self,text="Cancel",command=self.stop_listening)
+                    b.pack(side=Tkinter.BOTTOM)
+                    b.focus_force()
+                    b.bind('<Return>',self.stop_listening)
+                    self.winfo_toplevel().protocol("WM_DELETE_WINDOW", self.stop_listening)
+                    self.server_socket.setblocking(0)
+                    self.after(1,self.idle_func)
+                def stop_listening(self,dummy=None):
+                    raise SystemExit
+                def idle_func(self):
+                    try:
+                        # This line raises an exception unless there's an incoming connection
+                        self.accepted = self.server_socket.accept()
+                        self.quit()
+                    except socket.error, x:
+                        self.after(1,self.idle_func)
+            dialog = WaitingDialog(server_socket = self.server_socket)
+            dialog.pack()
+            dialog.mainloop()
+            client, client_address = dialog.accepted
+            dialog.winfo_toplevel().destroy()
+        else:
+            client, client_address = self.server_socket.accept()
+        if self.single_socket_but_reconnect_ok:
+            return SocketListenController(client,
+                                          disconnect_ok = 1,
+                                          server_socket = self.server_socket)
+        else:
+            return SocketListenController(client)
+
+class SocketListenController(VisionEgg.FlowControl.Controller):
+    r"""Handle connection from remote machine, control TCPControllers.
+
+    This meta controller handles a TCP socket to control zero to many
+    instances of TCPController.  As a subclass of Controller, it gets
+    called at specified moments in time via the Presentation
+    class. When called in this way, it checks for any strings from the
+    TCP socket.  It parses this information into a command or fails
+    and sends an error.
+
+    This class is analagous to VisionEgg.PyroHelpers.PyroListenController.
+
+    TCP commands (sent over network socket)
+    =======================================
+
+    close -- close the connection
+    exit -- close the connection
+    quit -- quit the server program
+    help -- print help message
+    <name> -- show the value of the controller of <name>
+    <name>=const(<args>) -- assign a new ConstantController to <name>
+    <name>=eval_str(<args>) -- assign a new EvalStringController to <name>
+    <name>=exec_str(<args>) -- assign a new ExecStringController to <name>
+    <name>=exec_str(*<args>) -- assign a new unrestricted namespace ExecStringController to <name>
+
+    TCP commands are always on a single line.  (Newlines in string
+    literals can be specified by using "\n" without the quotes.)
+
+    The assignment commands share common behavior:
+
+    <name> -- value passed as argument "tcp_name" to method create_tcp_controller
+    <args> -- during_go [, between_go [, eval_frequency [, temporal_variables [, return_type ]]]]
+
+    The <args> string is parsed by the Python's eval() function.  If
+    you don't want to explicitly set an argument early in the argument
+    list, but you need to set one late in the list, use "None".  If
+    not set, the optional arguments default to:
+
+    eval_frequency = EVERY_FRAME
+    temporal_variables = TIME_SEC_SINCE_GO
+    return_type = (evaluates during_go function to find)
+    between_go = (see below, depends on assignment type)
+
+    The only difference between the assignment commands are in the
+    first two arguments.  For "const(...)", the first two arguments
+    are constant values, for "eval_str(...)" they are strings that
+    evaluate to a single variable, and for "exec_str(...)", they are
+    strings that set the variable "x" in their local namespace, which
+    is then returned.  (An unrestricted namespace is available with
+    "exec_str(*...)".)  If the argument between_go is set to None or
+    is not defined, the behavior depends on the assignment command.
+    If this is a <name>=const(...) assignment, between_go_value is set
+    to during_go_value.  If this is a <name>=eval_str(...) or
+    <name>=exec_str(...) assignment, the correct value cannot be
+    guessed, and therefore the between_go_eval function will never be
+    called (the eval_frequency flag NOT_BETWEEN_GO is set).
+
+    Because the default value for temporal_variables is
+    TIME_SEC_SINCE_GO, the variable "t" may be safely used in the
+    during_go string for the eval_str or exec_str assignment commands.
+    See the documentation for VisionEgg.FlowControl.EvalStringController for
+    more information.
+
+    Example commands from TCP port (try with telnet):
+
+    <name>=const(1.0)
+    <name>=eval_str("t*360.0")
+    <name>=exec_str("x=t*360.0")
+
+    <name>=const(0.,1.,EVERY_FRAME)
+    <name>=const(1,None,ONCE)
+
+    <name>=const(1.0,0.0,EVERY_FRAME,TIME_INDEPENDENT,types.FloatType)
+    <name>=eval_str("t*360.0","t_abs*360.0",None,TIME_SEC_ABSOLUTE|TIME_SEC_SINCE_GO)
+    <name>=eval_str("t_abs*360.0","t_abs*360.0",EVERY_FRAME,TIME_SEC_ABSOLUTE,types.FloatType)
+    <name>=exec_str("x=t*360.0","x=0.0",EVERY_FRAME,TIME_SEC_SINCE_GO)
+    <name>=exec_str("print 'Time since go=%f'%(t,)\nx=t*360.0","x=0.0",EVERY_FRAME,TIME_SEC_SINCE_GO)
+
+    """
+
+    help_string = r"""    TCP commands (sent over network socket):
+
+    close -- close the connection
+    exit -- close the connection
+    quit -- quit the server program
+    help -- print this message
+    <name> -- show the value of the controller of <name>
+    <name>=const(<args>) -- assign a new ConstantController to <name>
+    <name>=eval_str(<args>) -- assign a new EvalStringController to <name>
+    <name>=exec_str(<args>) -- assign a new ExecStringController to <name>
+    <name>=exec_str(*<args>) -- assign a new unrestricted namespace ExecStringController to <name>
+
+    TCP commands are always on a single line.  (Newlines in string
+    literals can be specified by using "\n" without the quotes.)
+
+    The assignment commands share common behavior:
+
+    <name> -- value passed as argument "tcp_name" to method create_tcp_controller
+    <args> -- during_go [, between_go [, eval_frequency [, temporal_variables [, return_type ]]]]
+    """
+
+    _re_line = re.compile(r"^(.*)\n",re.MULTILINE)
+    _re_x_finder = re.compile(r'\A|\Wx\s?=[^=]')
+    # The real newlines have already been parsed by the time the buffer gets to these statements:
+    _re_const = re.compile(r'^const\(\s?(.*)\s?\)$',re.DOTALL)
+    _re_eval_str = re.compile(r'^eval_str\(\s?(.*)\s?\)$',re.DOTALL)
+    _re_exec_str = re.compile(r'^exec_str\(\s?(\*)?\s?(.*)\s?\)$',re.DOTALL)
+    _parse_args_globals = {'types':types}
+    _parse_args_locals = VisionEgg.FlowControl.Controller.flag_dictionary
+    def __init__(self,
+                 socket,
+                 disconnect_ok = 0,
+                 server_socket = None, # Only needed if reconnecting ok
+                 temporal_variables = VisionEgg.FlowControl.Controller.TIME_INDEPENDENT,
+                 eval_frequency = VisionEgg.FlowControl.Controller.EVERY_FRAME):
+        """Instantiated by TCPServer."""
+        VisionEgg.FlowControl.Controller.__init__(self,
+                                           return_type = types.NoneType,
+                                           temporal_variables = temporal_variables,
+                                           eval_frequency = eval_frequency)
+        self.socket = socket
+        self.disconnect_ok = disconnect_ok
+        if self.disconnect_ok and server_socket is None:
+            # Warning -- no ability to accept further incoming sockets...
+            pass
+        self.server_socket = server_socket
+
+        logger = logging.getLogger('VisionEgg.TCPController')
+        logger.info("Handling connection from %s"%(self.socket.getsockname(),))
+        self.socket.setblocking(0) # don't block on this socket
+
+        self.socket.send("Hello. This is %s version %s.\n"%(self.__class__,__version__))
+        self.socket.send(SocketListenController.help_string+"\n")
+        self.socket.send("Begin sending commands now.\n")
+
+        self.buffer = ""
+
+        self.last_command = {}
+
+        self.names = {} # ( controller, name_re, parser, require_type )
+
+    def send_raw_text(self,text):
+        """Send text over the TCP socket."""
+        self.socket.send(text)
+
+    def __check_socket(self):
+        if self.socket is not None: # Normal, connected behavior
+            # First, update the buffer
+            ready_to_read, temp, temp2 = select.select([self.socket],[],[],0)
+            new_info = 0
+            while len(ready_to_read):
+                try:
+                    new = self.socket.recv(1024) # When disconnected, this fails on Win32
+                except socket.error, x:
+                    if not self.disconnect_ok:
+                        raise
+                    else:
+                        self.socket.close()
+                        self.socket = None
+                        if self.server_socket is not None:
+                            self.server_socket.setblocking(0)
+                        return
+                if len(new) == 0: # When disconnected, this happens on unix
+                    # Disconnected
+                    self.socket.close() # close socket
+                    self.socket = None
+                    if not self.disconnect_ok:
+                        raise RuntimeError("Socket disconnected!")
+                    else:
+                        if self.server_socket is not None:
+                            self.server_socket.setblocking(0)
+                    return # don't do any more
+                #assert(ready_to_read[0] == self.socket)
+                self.buffer += new
+                new_info = 1
+                ready_to_read, temp, temp2 = select.select([self.socket],[],[],0)
+
+            # Second, convert the buffer to command_queue entries
+            if new_info:
+                # Handle variations on newlines:
+                self.buffer = string.replace(self.buffer,chr(0x0D),"") # no CR
+                self.buffer = string.replace(self.buffer,chr(0x0A),"\n") # LF = newline
+                # Handle each line for which we have a tcp_name
+                for tcp_name in self.names.keys():
+                    (controller, name_re_str, parser, require_type) = self.names[tcp_name]
+
+                    # If the following line makes a match, it
+                    # sticks the result in self.last_command[tcp_name] by calling the parser function.
+                    self.buffer = name_re_str.sub(parser,self.buffer)
+                    # Now act based on the command parsed
+                    command = self.last_command[tcp_name]
+                    if command is not None:
+                        self.__do_assignment_command(tcp_name,command,require_type)
+                        self.last_command[tcp_name] = None
+                # Clear any complete lines for which we don't have a tcp_name
+                self.buffer = SocketListenController._re_line.sub(self.__unprocessed_line,self.buffer)
+        elif self.server_socket is not None:
+            # Not connected on self.socket, check self.server_socket for new connection
+            try:
+                # This line raises an exception unless there's an incoming connection (if server is not blocking, which it shouldn't be)
+                (client, client_address) = self.server_socket.accept()
+                self.socket = client
+                self.socket.send("Hello. This is %s version %s.\n"%(self.__class__,__version__))
+                self.socket.send(SocketListenController.help_string+"\n")
+                self.socket.send("Begin sending commands now.\n")
+                for tcp_name in self.names.keys():
+                    (controller, name_re_str, parser, require_type) = self.names[tcp_name]
+                    self.socket.send('"%s" controllable with this connection.\n'%tcp_name)
+            except socket.error, x:
+                pass
+
+    def __unprocessed_line(self,match):
+        text = match.group(1)
+        text = string.strip(text).lower()
+        if text=="quit": # this a hack, really (should be a controller in charge of Presentation.parameters.quit)
+            raise SystemExit
+        elif text=="close" or text=="exit":
+            self.socket = None # close socket
+            if not self.disconnect_ok:
+                raise RuntimeError("Socket disconnected!")
+            else:
+                if self.server_socket is not None:
+                    self.server_socket.setblocking(0)
+            return ""
+        elif text=="help":
+            self.socket.send(SocketListenController.help_string+"\n")
+            return ""
+        elif text in self.names.keys():
+            (controller, name_re_str, parser, require_type) = self.names[text]
+            self.socket.send(text+"="+str(controller)+"\n")
+            return ""
+        self.socket.send("Error: Invalid command line \""+text+"\"\n")
+        logger = logging.getLogger('VisionEgg.TCPController')
+        logger.warning('Invalid command line: "%s"'%(text,))
+        return ''
+
+    def create_tcp_controller(self,
+                              tcp_name=None,
+                              initial_controller=None,
+                              require_type=None):
+        """Create new instance of TCPController.
+
+        Arguments:
+
+        tcp_name -- String to reference new TCPController over TCP
+
+        Optional arguments:
+
+        initial_controller -- Initial value of TCPController instance
+        require_type -- force this as TCPController instance's return_type
+        """
+        class Parser:
+            def __init__(self,tcp_name,most_recent_command):
+                self.tcp_name = tcp_name
+                self.most_recent_command = most_recent_command
+
+            def parse_func(self,match):
+                # Could make this into a lambda function
+                self.most_recent_command[self.tcp_name] = match.groups()[-1]
+                return ""
+        if tcp_name is None:
+            raise ValueError("Must specify tcp_name")
+        if tcp_name in self.names.keys():
+            raise ValueError('tcp_name "%s" already in use.'%tcp_name)
+        if string.count(tcp_name,' '):
+            raise ValueError('tcp_name "%s" cannot have spaces.'%tcp_name)
+        if tcp_name == "quit":
+            raise ValueError('tcp_name "%s" conflicts with reserved word.'%tcp_name)
+        if initial_controller is None:
+            # create default controller
+            initial_controller = VisionEgg.FlowControl.ConstantController(
+                during_go_value=1.0,
+                between_go_value=0.0)
+        else:
+            if not isinstance(initial_controller,VisionEgg.FlowControl.Controller):
+                print initial_controller
+                raise ValueError('initial_controller not an instance of VisionEgg.FlowControl.Controller')
+        if require_type is None:
+            require_type = initial_controller.returns_type()
+        # Create initial None value for self.last_command dict
+        self.last_command[tcp_name] = None
+        # Create values for self.names dict tuple ( controller, name_re, most_recent_command, parser )
+        controller = TCPController(
+            tcp_name=tcp_name,
+            initial_controller=initial_controller
+            )
+        name_re_str = re.compile("^"+tcp_name+r"\s*=\s*(.*)\s*\n$",re.MULTILINE)
+        parser = Parser(tcp_name,self.last_command).parse_func
+        self.names[tcp_name] = (controller, name_re_str, parser, require_type)
+        self.socket.send('"%s" controllable with this connection.\n'%tcp_name)
+        return controller
+
+    def __get_five_args(self,arg_string):
+        args = eval("("+arg_string+",)",SocketListenController._parse_args_globals,SocketListenController._parse_args_locals)
+        num_args = len(args)
+        if num_args == 0:
+            args = (None,None,None,None,None)
+        elif num_args == 1:
+            args = (args[0],None,None,None,None)
+        elif num_args == 2:
+            args = (args[0],args[1],None,None,None)
+        elif num_args == 3:
+            args = (args[0],args[1],args[2],None,None)
+        elif num_args == 4:
+            args = (args[0],args[1],args[2],args[3],None)
+        elif num_args > 5:
+            raise ValueError("Too many arguments!")
+        if args[0] is None:
+            raise ValueError("First argument must be set.")
+        return args
+
+    def __process_common_args(self,kw_args,match_groups):
+        if match_groups[2] is not None:
+            kw_args['eval_frequency'] = match_groups[2]
+        if match_groups[3] is not None:
+            kw_args['temporal_variables'] = match_groups[3]
+        if match_groups[4] is not None:
+            kw_args['return_type'] = match_groups[4]
+
+    def __do_assignment_command(self,tcp_name,command,require_type):
+        new_contained_controller = None
+        match = SocketListenController._re_const.match(command)
+        if match is not None:
+            try:
+                match_groups = self.__get_five_args(match.group(1))
+                kw_args = {}
+                kw_args['during_go_value'] = match_groups[0]
+                if match_groups[1] is not None:
+                    kw_args['between_go_value'] = match_groups[1]
+                self.__process_common_args(kw_args,match_groups)
+                kw_args.setdefault('return_type',require_type)
+                new_contained_controller = VisionEgg.FlowControl.ConstantController(**kw_args)
+                new_type = new_contained_controller.returns_type()
+                ve_types.assert_type( new_type, require_type)
+            except Exception, x:
+                import traceback
+                traceback.print_exc()
+                self.socket.send("Error %s parsing const for %s: %s\n"%(x.__class__,tcp_name,x))
+                logger = logging.getLogger('VisionEgg.TCPController')
+                logger.info("%s parsing const for %s: %s"%(x.__class__,tcp_name,x))
+        else:
+            match = SocketListenController._re_eval_str.match(command)
+            if match is not None:
+                try:
+                    match_groups = self.__get_five_args(match.group(1))
+                    kw_args = {}
+                    kw_args['during_go_eval_string'] = string.replace(match_groups[0],r"\n","\n")
+                    if match_groups[1] is not None:
+                        kw_args['between_go_eval_string'] = string.replace(match_groups[1],r"\n","\n")
+                    self.__process_common_args(kw_args,match_groups)
+                    kw_args.setdefault('return_type',require_type)
+                    new_contained_controller = VisionEgg.FlowControl.EvalStringController(**kw_args)
+                    if not (new_contained_controller.eval_frequency & VisionEgg.FlowControl.Controller.NOT_DURING_GO):
+                        logger = logging.getLogger('VisionEgg.TCPController')
+                        logger.debug('Executing "%s" as safety check.'%(kw_args['during_go_eval_string'],))
+                        new_contained_controller._test_self(1)
+                    if not (new_contained_controller.eval_frequency & VisionEgg.FlowControl.Controller.NOT_BETWEEN_GO):
+                        logger = logging.getLogger('VisionEgg.TCPController')
+                        logger.debug('Executing "%s" as safety check.'%(kw_args['between_go_eval_string'],))
+                        new_contained_controller._test_self(0)
+                    new_type = new_contained_controller.returns_type()
+                    ve_types.assert_type( new_type, require_type)
+                except Exception, x:
+                    new_contained_controller = None
+                    self.socket.send("Error %s parsing eval_str for %s: %s\n"%(x.__class__,tcp_name,x))
+                    logger = logging.getLogger('VisionEgg.TCPController')
+                    logger.info("%s parsing eval_str for %s: %s"%(x.__class__,tcp_name,x))
+            else:
+                match = SocketListenController._re_exec_str.match(command)
+                if match is not None:
+                    try:
+                        kw_args = {}
+                        match_groups = match.groups()
+                        if match_groups[0] == '*':
+                            kw_args['restricted_namespace'] = 0
+                        else:
+                            kw_args['restricted_namespace'] = 1
+                        match_groups = self.__get_five_args(match_groups[1])
+                        tmp = string.replace(match_groups[0],r"\n","\n")
+                        if not SocketListenController._re_x_finder.match(tmp):
+                            raise ValueError("x is not defined for during_go_exec_string")
+                        kw_args['during_go_exec_string'] = tmp
+                        if match_groups[1] is not None:
+                            tmp = string.replace(match_groups[1],r"\n","\n")
+                            if not SocketListenController._re_x_finder.match(tmp):
+                                raise ValueError("x is not defined for between_go_exec_string")
+                            kw_args['between_go_exec_string'] = tmp
+                        self.__process_common_args(kw_args,match_groups)
+                        kw_args.setdefault('return_type',require_type)
+                        new_contained_controller = VisionEgg.FlowControl.ExecStringController(**kw_args)
+                        if not (new_contained_controller.eval_frequency & VisionEgg.FlowControl.Controller.NOT_DURING_GO):
+                            logger = logging.getLogger('VisionEgg.TCPController')
+                            logger.debug('Executing "%s" as safety check.'%(kw_args['during_go_exec_string'],))
+                            new_contained_controller._test_self(1)
+                        if not (new_contained_controller.eval_frequency & VisionEgg.FlowControl.Controller.NOT_BETWEEN_GO):
+                            logger = logging.getLogger('VisionEgg.TCPController')
+                            logger.debug('Executing "%s" as safety check.'%(kw_args['between_go_exec_string'],))
+                            new_contained_controller._test_self(0)
+                        new_type = new_contained_controller.returns_type()
+                        ve_types.assert_type( new_type, require_type)
+                    except Exception, x:
+                        new_contained_controller = None
+                        self.socket.send("Error %s parsing exec_str for %s: %s\n"%(x.__class__,tcp_name,x))
+                        logger = logging.getLogger('VisionEgg.TCPController')
+                        logger.debug("%s parsing exec_str for %s: %s"%(x.__class__,tcp_name,x))
+                else:
+                    self.socket.send("Error: Invalid assignment command for %s: %s\n"%(tcp_name,command))
+                    logger = logging.getLogger('VisionEgg.TCPController')
+                    logger.info("Invalid assignment command for %s: %s"%(tcp_name,command))
+        # create controller based on last command_queue
+        if new_contained_controller is not None:
+            (controller, name_re_str, parser, require_type) = self.names[tcp_name]
+            controller.set_new_controller(new_contained_controller)
+
+    def during_go_eval(self):
+        """Check socket and act accordingly. Called by instance of Presentation.
+
+        Overrides base class Controller method."""
+        self.__check_socket()
+        return None
+
+    def between_go_eval(self):
+        """Check socket and act accordingly. Called by instance of Presentation.
+
+        Overrides base class Controller method."""
+        self.__check_socket()
+        return None
+
+class TCPController(VisionEgg.FlowControl.EncapsulatedController):
+    """Control a parameter from a network (TCP) connection.
+
+    Subclass of Controller to allow control of Parameters via the
+    network.
+
+    This class is analagous to VisionEgg.PyroHelpers.PyroEncapsulatedController.
+    """
+    # Contains another controller...
+    def __init__(self, tcp_name, initial_controller):
+        """Instantiated by SocketListenController.
+
+        Users should create instance by using method
+        create_tcp_controller of class SocketListenController."""
+        VisionEgg.FlowControl.EncapsulatedController.__init__(self,initial_controller)
+        self.tcp_name = tcp_name
+
+    def __str__(self):
+        value = ""
+        my_class = self.contained_controller.__class__
+        if my_class == VisionEgg.FlowControl.ConstantController:
+            value += "const( "
+            value += str(self.contained_controller.get_during_go_value()) + ", "
+            value += str(self.contained_controller.get_between_go_value()) + ", "
+        elif my_class == VisionEgg.FlowControl.EvalStringController:
+            value += "eval_str( "
+            str_val = self.contained_controller.get_during_go_eval_string()
+            if str_val is None:
+                value += "None, "
+            else:
+                value += '"' + string.replace(str_val,"\n",r"\n") + '", '
+            str_val = self.contained_controller.get_between_go_eval_string()
+            if str_val is None:
+                value += "None, "
+            else:
+                value += '"' + string.replace(str_val,"\n",r"\n") + '", '
+        elif my_class == VisionEgg.FlowControl.ExecStringController:
+            value += "exec_str("
+            if self.contained_controller.restricted_namespace:
+                value += " "
+            else: # unrestricted
+                value += "* "
+            str_val = self.contained_controller.get_during_go_exec_string()
+            if str_val is None:
+                value += "None, "
+            else:
+                value += '"' + string.replace(str_val,"\n",r"\n") + '", '
+            str_val = self.contained_controller.get_between_go_exec_string()
+            if str_val is None:
+                value += "None, "
+            else:
+                value += '"' + string.replace(str_val,"\n",r"\n") + '", '
+        never = 1
+        ef = self.contained_controller.eval_frequency
+        if ef & VisionEgg.FlowControl.Controller.EVERY_FRAME:
+            value += "EVERY_FRAME | "
+            never = 0
+        if ef & VisionEgg.FlowControl.Controller.TRANSITIONS:
+            value += "TRANSITIONS | "
+            never = 0
+        if ef & VisionEgg.FlowControl.Controller.ONCE:
+            value += "ONCE | "
+            never = 0
+        if ef & VisionEgg.FlowControl.Controller.NOT_DURING_GO:
+            value += "NOT_DURING_GO | "
+            never = 0
+        if ef & VisionEgg.FlowControl.Controller.NOT_BETWEEN_GO:
+            value += "NOT_BETWEEN_GO | "
+            never = 0
+        if never:
+            value += "NEVER"
+        else:
+            value = value[:-3] # get rid of trailing "| "
+        value += ", "
+        time_indep = 1
+        tv = self.contained_controller.temporal_variables
+        if tv & VisionEgg.FlowControl.Controller.TIME_SEC_ABSOLUTE:
+            value += "TIME_SEC_ABSOLUTE | "
+            time_indep = 0
+        if tv & VisionEgg.FlowControl.Controller.TIME_SEC_SINCE_GO:
+            value += "TIME_SEC_SINCE_GO | "
+            time_indep = 0
+        if tv & VisionEgg.FlowControl.Controller.FRAMES_ABSOLUTE:
+            value += "FRAMES_ABSOLUTE | "
+            time_indep = 0
+        if tv & VisionEgg.FlowControl.Controller.FRAMES_SINCE_GO:
+            value += "FRAMES_SINCE_GO | "
+            time_indep = 0
+        if time_indep:
+            value += "TIME_INDEPENDENT"
+        else:
+            value = value[:-3] # get rid of trailing "| "
+        value += ", "
+        my_type = self.contained_controller.returns_type()
+        if my_type == types.ClassType:
+            value += str(my_type)
+        else:
+            for t in dir(types):
+                if my_type == getattr(types,t):
+                    value += "types."+t
+                    break
+        value += " )"
+        return value
diff --git a/VisionEgg/Text.py b/VisionEgg/Text.py
new file mode 100644
index 0000000..251c55c
--- /dev/null
+++ b/VisionEgg/Text.py
@@ -0,0 +1,351 @@
+# The Vision Egg: Text
+#
+# Copyright (C) 2001-2003 Andrew Straw.
+# Copyright (C) 2005,2008 California Institute of Technology
+#
+# URL: <http://www.visionegg.org/>
+#
+# Distributed under the terms of the GNU Lesser General Public License
+# (LGPL). See LICENSE.TXT that came with this file.
+
+"""
+Text stimuli.
+
+"""
+
+####################################################################
+#
+#        Import all the necessary packages
+#
+####################################################################
+
+import logging
+import logging.handlers
+
+import VisionEgg.Core
+import VisionEgg.Textures
+import VisionEgg.ParameterTypes as ve_types
+
+import VisionEgg.GL as gl # get all OpenGL stuff in one namespace
+
+import pygame
+
+try:
+    import OpenGL.GLUT as glut
+    have_glut = True
+except:
+    have_glut = False
+
+_font_objects = {} # global variable to cache pygame font objects
+
+def delete_font_objects():
+    for key in _font_objects.keys():
+        del _font_objects[key]
+
+VisionEgg.Core.pygame_keeper.register_func_to_call_on_quit(delete_font_objects)
+
+class Text(VisionEgg.Textures.TextureStimulus):
+    """Single line of text rendered using pygame/SDL true type fonts.
+
+    Parameters
+    ==========
+    anchor                -- specifies how position parameter is interpreted (String)
+                             Inherited from VisionEgg.Textures.TextureStimulus
+                             Default: lowerleft
+    angle                 -- units: degrees, 0=right, 90=up (Real)
+                             Inherited from VisionEgg.Textures.TextureStimulus
+                             Default: 0.0
+    color                 -- texture environment color. alpha ignored (if given) for max_alpha parameter (AnyOf(Sequence3 of Real or Sequence4 of Real))
+                             Inherited from VisionEgg.Textures.TextureStimulus
+                             Default: (1.0, 1.0, 1.0)
+    depth_test            -- perform depth test? (Boolean)
+                             Inherited from VisionEgg.Textures.TextureStimulus
+                             Default: False
+    ignore_size_parameter -- (Boolean)
+                             Default: True
+    mask                  -- optional masking function (Instance of <class 'VisionEgg.Textures.Mask2D'>)
+                             Inherited from VisionEgg.Textures.TextureStimulus
+                             Default: (determined at runtime)
+    max_alpha             -- controls opacity. 1.0=copletely opaque, 0.0=completely transparent (Real)
+                             Inherited from VisionEgg.Textures.TextureStimulus
+                             Default: 1.0
+    on                    -- draw stimulus? (Boolean)
+                             Inherited from VisionEgg.Textures.TextureStimulus
+                             Default: True
+    position              -- units: eye coordinates (AnyOf(Sequence2 of Real or Sequence3 of Real or Sequence4 of Real))
+                             Inherited from VisionEgg.Textures.TextureStimulus
+                             Default: (0.0, 0.0)
+    size                  -- defaults to texture data size (units: eye coordinates) (Sequence2 of Real)
+                             Inherited from VisionEgg.Textures.TextureStimulus
+                             Default: (determined at runtime)
+    text                  -- (AnyOf(String or Unicode))
+                             Default: the string to display
+    texture               -- source of texture data (Instance of <class 'VisionEgg.Textures.Texture'>)
+                             Inherited from VisionEgg.Textures.TextureStimulusBaseClass
+                             Default: (determined at runtime)
+    texture_mag_filter    -- OpenGL filter enum (Integer)
+                             Inherited from VisionEgg.Textures.TextureStimulusBaseClass
+                             Default: GL_LINEAR (9729)
+    texture_min_filter    -- OpenGL filter enum (Integer)
+                             Inherited from VisionEgg.Textures.TextureStimulusBaseClass
+                             Default: (GL enum determined at runtime)
+    texture_wrap_s        -- OpenGL texture wrap enum (Integer)
+                             Inherited from VisionEgg.Textures.TextureStimulusBaseClass
+                             Default: (GL enum determined at runtime)
+    texture_wrap_t        -- OpenGL texture wrap enum (Integer)
+                             Inherited from VisionEgg.Textures.TextureStimulusBaseClass
+                             Default: (GL enum determined at runtime)
+
+    Constant Parameters
+    ===================
+    font_name         -- (AnyOf(String or Unicode))
+                         Default: (determined at runtime)
+    font_size         -- (UnsignedInteger)
+                         Default: 30
+    internal_format   -- format with which OpenGL uses texture data (OpenGL data type enum) (Integer)
+                         Inherited from VisionEgg.Textures.TextureStimulus
+                         Default: GL_RGB (6407)
+    mipmaps_enabled   -- Are mipmaps enabled? (Boolean)
+                         Inherited from VisionEgg.Textures.TextureStimulus
+                         Default: True
+    shrink_texture_ok -- Allow automatic shrinking of texture if too big? (Boolean)
+                         Inherited from VisionEgg.Textures.TextureStimulus
+                         Default: False
+    """
+
+    parameters_and_defaults = {
+        'text': ( 'the string to display', #changing this redraws texture, may cause slowdown
+                  ve_types.AnyOf(ve_types.String,ve_types.Unicode)),
+        'ignore_size_parameter':(True, # when true, draws text at 100% size
+                                 ve_types.Boolean),
+        }
+
+    constant_parameters_and_defaults = {
+        'font_size':(30,
+                     ve_types.UnsignedInteger),
+        'font_name':(None, # None = use default font
+                     ve_types.AnyOf(ve_types.String,ve_types.Unicode)),
+        }
+
+    __slots__ = (
+        'font',
+        '_text',
+        )
+
+    def __init__(self,**kw):
+        if not pygame.font:
+            raise RuntimeError("no pygame font module")
+        if not pygame.font.get_init():
+            pygame.font.init()
+            if not pygame.font.get_init():
+                raise RuntimeError("pygame doesn't init")
+        # override some defaults
+        if 'internal_format' not in kw.keys():
+            kw['internal_format'] = gl.GL_RGBA
+        if 'mipmaps_enabled' not in kw.keys():
+            kw['mipmaps_enabled'] = 0
+        if 'texture_min_filter' not in kw.keys():
+            kw['texture_min_filter'] = gl.GL_LINEAR
+        VisionEgg.Textures.TextureStimulus.__init__(self,**kw)
+        cp = self.constant_parameters
+        fontobject_args = (cp.font_name,cp.font_size)
+        if fontobject_args not in _font_objects:
+            # make global cache of font objects
+            fontobject = pygame.font.Font(*fontobject_args)
+            _font_objects[fontobject_args] = fontobject
+        # get font object from global cache
+        self.font = _font_objects[fontobject_args]
+        self._render_text()
+
+    def _render_text(self):
+        p = self.parameters
+        rendered_surf = self.font.render(p.text, 1, (255,255,255)) # pygame.Surface object
+
+        # we could use put_new_image for speed (or put_sub_image for more)
+        p.texture = VisionEgg.Textures.Texture(rendered_surf)
+        self._reload_texture()
+        self._text = p.text # cache string so we know when to re-render
+        if p.ignore_size_parameter:
+            p.size = p.texture.size
+
+    def draw(self):
+        p = self.parameters
+        if p.texture != self._using_texture: # self._using_texture is from TextureStimulusBaseClass
+            raise RuntimeError("my texture has been modified, but it shouldn't be")
+        if p.text != self._text: # new text
+            self._render_text()
+        if p.ignore_size_parameter:
+            p.size = p.texture.size
+        VisionEgg.Textures.TextureStimulus.draw(self) # call base class
+
+if have_glut:
+
+    class GlutTextBase(VisionEgg.Core.Stimulus):
+        """DEPRECATED. Base class: don't instantiate this class directly.
+
+        Base class that defines the common interface between the
+        other glut-based text stimuli.
+
+        Parameters
+        ==========
+        color     -- (AnyOf(Sequence3 of Real or Sequence4 of Real))
+                     Default: (1.0, 1.0, 1.0)
+        lowerleft -- (Sequence2 of Real)
+                     Default: (320, 240)
+        on        -- (Boolean)
+                     Default: True
+        text      -- (String)
+                     Default: the string to display
+        """
+
+        parameters_and_defaults = {
+            'on':(True,
+                  ve_types.Boolean),
+            'color':((1.0,1.0,1.0),
+                     ve_types.AnyOf(ve_types.Sequence3(ve_types.Real),
+                                    ve_types.Sequence4(ve_types.Real))),
+            'lowerleft':((320,240),
+                         ve_types.Sequence2(ve_types.Real)),
+            'text':('the string to display',
+                    ve_types.String)}
+
+        def __init__(self,**kw):
+            if not hasattr(VisionEgg.config,"_GAVE_GLUT_TEXT_DEPRECATION"):
+                logger = logging.getLogger('VisionEgg.Text')
+                logger.warning("Using GlutTextBase class.  This will be "
+                               "removed in a future release. Use "
+                               "VisionEgg.Text.Text instead.")
+                VisionEgg.config._GAVE_GLUT_TEXT_DEPRECATION = 1
+                VisionEgg.Core.Stimulus.__init__(self,**kw)
+
+    class BitmapText(GlutTextBase):
+        """DEPRECATED. Bitmap fonts from GLUT.
+
+        Parameters
+        ==========
+        color     -- (AnyOf(Sequence3 of Real or Sequence4 of Real))
+                     Inherited from GlutTextBase
+                     Default: (1.0, 1.0, 1.0)
+        font      -- (Integer)
+                     Default: 5
+        lowerleft -- (Sequence2 of Real)
+                     Inherited from GlutTextBase
+                     Default: (320, 240)
+        on        -- (Boolean)
+                     Inherited from GlutTextBase
+                     Default: True
+        text      -- (String)
+                     Inherited from GlutTextBase
+                     Default: the string to display
+        """
+
+        parameters_and_defaults = {
+            'font':(glut.GLUT_BITMAP_TIMES_ROMAN_24,
+                    ve_types.Integer),
+            }
+
+        def __init__(self,**kw):
+            GlutTextBase.__init__(self,**kw)
+
+        def draw(self):
+            if self.parameters.on:
+                gl.glDisable(gl.GL_TEXTURE_2D)
+                gl.glDisable(gl.GL_BLEND)
+                gl.glDisable(gl.GL_DEPTH_TEST)
+
+                gl.glMatrixMode(gl.GL_MODELVIEW)
+                gl.glPushMatrix()
+                gl.glTranslate(self.parameters.lowerleft[0],self.parameters.lowerleft[1],0.0)
+
+                c = self.parameters.color
+
+                if len(c)==3:
+                    gl.glColor3f(*c)
+                elif len(c)==4:
+                    gl.glColor4f(*c)
+                gl.glDisable(gl.GL_TEXTURE_2D)
+
+                gl.glRasterPos3f(0.0,0.0,0.0)
+                for char in self.parameters.text:
+                    glut.glutBitmapCharacter(self.parameters.font,ord(char))
+                gl.glPopMatrix()
+
+    class StrokeText(GlutTextBase):
+        """DEPRECATED. Text rendered by GLUT using stroke fonts.
+
+        Parameters
+        ==========
+        anti_aliasing -- (Boolean)
+                         Default: True
+        color         -- (AnyOf(Sequence3 of Real or Sequence4 of Real))
+                         Inherited from GlutTextBase
+                         Default: (1.0, 1.0, 1.0)
+        font          -- (Integer)
+                         Default: 0
+        linewidth     -- (Real)
+                         Default: 3.0
+        lowerleft     -- (Sequence2 of Real)
+                         Inherited from GlutTextBase
+                         Default: (320, 240)
+        on            -- (Boolean)
+                         Inherited from GlutTextBase
+                         Default: True
+        orientation   -- (Real)
+                         Default: 0.0
+        text          -- (String)
+                         Inherited from GlutTextBase
+                         Default: the string to display
+        """
+
+        parameters_and_defaults = {
+            'font':(glut.GLUT_STROKE_ROMAN,
+                    ve_types.Integer),
+            'orientation':(0.0,
+                           ve_types.Real),
+            'linewidth':(3.0, # pixels
+                         ve_types.Real),
+            'anti_aliasing':(True,
+                             ve_types.Boolean),
+            }
+
+        def __init__(self,**kw):
+            raise NotImplementedError("There's something broken with StrokeText, and I haven't figured it out yet!")
+            GlutTextBase.__init__(self,**kw)
+
+        def draw(self):
+            if self.parameters.on:
+                gl.glDisable(gl.GL_TEXTURE_2D)
+                gl.glDisable(gl.GL_DEPTH_TEST)
+
+                gl.glMatrixMode(gl.GL_MODELVIEW)
+                gl.glPushMatrix()
+                gl.glTranslate(self.parameters.lowerleft[0],self.parameters.lowerleft[1],0.0)
+                gl.glRotate(self.parameters.orientation,0.0,0.0,1.0)
+
+                c = self.parameters.color
+                if len(c)==3:
+                    gl.glColor3f(*c)
+                elif len(c)==4:
+                    gl.glColor4f(*c)
+
+                gl.glLineWidth(self.parameters.linewidth)
+
+                if self.parameters.anti_aliasing:
+                    gl.glEnable(gl.GL_BLEND)
+                    gl.glBlendFunc(gl.GL_SRC_ALPHA,gl.GL_ONE_MINUS_SRC_ALPHA)
+                    gl.glEnable(gl.GL_LINE_SMOOTH)
+                else:
+                    gl.glDisable(gl.GL_BLEND)
+
+    ##            # This code successfully draws a box...
+    ##            gl.glBegin(gl.GL_QUADS)
+    ##            gl.glVertex2f(0.0,0.0)
+    ##            gl.glVertex2f(0.0,0.1)
+    ##            gl.glVertex2f(0.1,0.1)
+    ##            gl.glVertex2f(0.1,0.0)
+    ##            gl.glEnd()
+
+                # But this code does not draw the string!?!
+                for char in self.parameters.text:
+                    glut.glutStrokeCharacter(self.parameters.font,ord(char))
+                gl.glPopMatrix()
diff --git a/VisionEgg/Textures.py b/VisionEgg/Textures.py
new file mode 100644
index 0000000..37665b4
--- /dev/null
+++ b/VisionEgg/Textures.py
@@ -0,0 +1,2037 @@
+# The Vision Egg: Textures
+#
+# Copyright (C) 2001-2004 Andrew Straw
+# Copyright (C) 2004-2008 California Institute of Technology
+#
+# URL: <http://www.visionegg.org/>
+#
+# Distributed under the terms of the GNU Lesser General Public License
+# (LGPL). See LICENSE.TXT that came with this file.
+
+"""
+Texture (images mapped onto polygons) stimuli.
+
+"""
+
+####################################################################
+#
+#        Import all the necessary packages
+#
+####################################################################
+
+import logging                              # available in Python 2.3
+
+import VisionEgg
+import VisionEgg.Core
+import VisionEgg.ParameterTypes as ve_types
+
+import Image, ImageDraw                         # Python Imaging Library packages
+import pygame.surface, pygame.image             # pygame
+import math, types, os
+import numpy
+import numpy.oldnumeric as numpyNumeric, numpy.oldnumeric.mlab as MLab
+
+import VisionEgg.GL as gl # get all OpenGL stuff in one namespace
+import OpenGL.GLU as glu
+
+# These modules are part of PIL and get loaded as needed by Image.
+# They are listed here so that Gordon McMillan's Installer properly
+# locates them.  You will not hurt anything other than your ability to
+# make executables using Intaller if you remove these lines.
+import _imaging
+import ImageFile, ImageFileIO, BmpImagePlugin, JpegImagePlugin, PngImagePlugin
+
+if Image.VERSION >= '1.1.3':
+    shrink_filter = Image.ANTIALIAS # Added in PIL 1.1.3
+else:
+    shrink_filter = Image.BICUBIC # Fallback filtering
+
+array_types = [numpy.ndarray]
+# Allow use of numarray and original Numeric texels without requiring either
+try:
+    import numarray
+    array_types.append( numarray.numarraycore.NumArray )
+except ImportError:
+    pass
+try:
+    import Numeric as orig_Numeric
+    array_types.append( orig_Numeric.ArrayType )
+except ImportError:
+    pass
+
+def convert_to_numpy_if_array(A):
+    if type(A) in array_types:
+        # with late release Numeric and numarray this is a view of the data
+        return numpy.asarray(A)
+    else:
+        return A
+
+####################################################################
+#
+# XXX ToDo:
+
+# The main remaining feature to add to this module is automatic
+# management of texture objects.  This would allow many small images
+# (e.g. a bit of text) to live in one large texture object.  This
+# would be much faster when many small textures are drawn in rapid
+# succession. (Apparently this might not be such a big improvement on
+# OS X. (See http://crystal.sourceforge.net/phpwiki/index.php?MacXGL)
+
+# Here's a sample from Apple's TextureRange demo which is supposed
+# to speed up texture transfers.
+# glBindTextures( target, &texID);
+# glPixelStorei(GL_UNPACK_CLIENT_STORAGE_APPLE, 1);
+# glTexImage2D(target, 0, GL_RGBA, width, height, 0, GL_BGRA, GL_UNSIGNED_INT_8_8_8_8_REV,image_ptr);
+# Update the texture with:
+# glTexSubImage2D(target, 0, 0, 0, width, height, GL_BGRA, GL_UNSIGNED_INT_8_8_8_8_REV,image_ptr);
+
+####################################################################
+
+####################################################################
+#
+#        Textures
+#
+####################################################################
+
+def next_power_of_2(f):
+    return int(math.pow(2.0,math.ceil(math.log(f)/math.log(2.0))))
+
+def is_power_of_2(f):
+    return f == next_power_of_2(f)
+
+class Texture(object):
+    """A 2 dimensional texture.
+
+    The pixel data can come from an image file, an image file stream,
+    an instance of Image from the Python Imaging Library, a numpy
+    array, or None.
+
+    If the data is a numpy array, floating point numbers are assumed
+    to be in the range 0.0 to 1.0, and integers are assumed to be in
+    the range 0 to 255.  The first index is the row (y position), the
+    second index is the column (x position), and if it's RGB or RGBA
+    data, the third index specifies the color band.  Thus, if the
+    texel data was 640 pixels wide by 480 pixels tall, the array would
+    have shape (480,640) for luminance information, (480,640,3) for
+    RGB information, and (480,640,4) for RGBA information.
+
+    The 2D texture data is not sent to OpenGL (video texture memory)
+    until the load() method is called.  The unload() method may be
+    used to remove the data from OpenGL.
+
+    A reference to the original image data is maintained."""
+
+    __slots__ = ('texels',
+                 'texture_object',
+                 'size',
+                 '_filename',
+                 '_file_stream',
+                 'buf_lf',
+                 'buf_rf',
+                 'buf_bf',
+                 'buf_tf',
+                 '_buf_l',
+                 '_buf_r',
+                 '_buf_b',
+                 '_buf_t',
+                 )
+
+    def __init__(self,texels=None,size=None):
+        """Creates instance of Texture object.
+
+        texels -- Texture data. If not specified, a blank white
+                  texture is created.
+        size -- If a tuple, force size of texture data if possible,
+                raising an exception if not. If None, has no effect.
+        """
+
+        if texels is None: # no texel data: make default
+            if size is None:
+                size = (256,256) # an arbitrary default size
+            texels = Image.new("RGB",size,(255,255,255)) # white
+
+        if type(texels) == types.FileType:
+            texels = Image.open(texels) # Attempt to open as an image file
+        elif type(texels) in (types.StringType,types.UnicodeType):
+            # is this string a filename or raw image data?
+            if os.path.isfile(texels):
+                # cache filename and file stream for later use (if possible)
+                self._filename = texels
+                self._file_stream = open(texels,"rb")
+            texels = Image.open(texels) # Attempt to open as an image stream
+
+        texels = convert_to_numpy_if_array(texels)
+
+        if isinstance(texels, Image.Image): # PIL Image
+            if texels.mode == 'P': # convert from paletted
+                texels = texels.convert('RGBX')
+            self.size = texels.size
+        elif isinstance(texels, pygame.surface.Surface): # pygame surface
+            self.size = texels.get_size()
+        elif isinstance(texels,numpy.ndarray): # numpy array
+            if len(texels.shape) == 3:
+                if texels.shape[2] not in [3,4]:
+                    raise ValueError("Only luminance (rank 2), and RGB, RGBA (rank 3) arrays allowed")
+            elif len(texels.shape) != 2:
+                raise ValueError("Only luminance (rank 2), and RGB, RGBA (rank 3) arrays allowed")
+            self.size = ( texels.shape[1], texels.shape[0] )
+        else:
+            raise TypeError("texel data could not be recognized. (Use a PIL Image, numpy array, or pygame surface.)")
+
+        self.texels = texels
+        self.texture_object = None
+
+        if size is not None and size != self.size:
+            raise ValueError("size was specified, but data could not be rescaled")
+
+    def update(self):
+        """Update texture data
+
+        This method does nothing, but may be overriden in classes that
+        need to update their texture data whenever drawn.
+
+        It it called by the draw() method of any stimuli using
+        textures when its texture object is active, so it can safely
+        use put_sub_image() to manipulate its own texture data.
+        """
+        pass
+
+    def make_half_size(self):
+        if self.texture_object is not None:
+            raise RuntimeError("make_half_size() only available BEFORE texture loaded to OpenGL.")
+
+        if isinstance(self.texels,Image.Image):
+            w = self.size[0]/2
+            h = self.size[1]/2
+            small_texels = self.texels.resize((w,h),shrink_filter)
+            self.texels = small_texels
+            self.size = (w,h)
+        else:
+            raise NotImplementedError("Texture too large, but rescaling only implemented for PIL images.")
+
+    def unload(self):
+        """Unload texture data from video texture memory.
+
+        This only removes data from the video texture memory if there
+        are no other references to the TextureObject instance.  To
+        ensure this, all references to the texture_object argument
+        passed to the load() method should be deleted."""
+
+        self.texture_object = None
+
+    def get_texels_as_image(self):
+        """Return texel data as PIL image"""
+        if isinstance(self.texels,numpy.ndarray):
+            if len(self.texels.shape) == 2:
+                a = self.texels
+                if a.dtype == numpy.uint8:
+                    mode = "L"
+                elif a.dtype == numpy.float32:
+                    mode = "F"
+                else:
+                    raise ValueError("unsupported image mode")
+                return Image.fromstring(mode, (a.shape[1], a.shape[0]), a.tostring())
+            else:
+                raise NotImplementedError("Currently only luminance data can be converted to images")
+        elif isinstance(self.texels, Image.Image):
+            return self.texels
+        elif isinstance(self.texels, pygame.surface.Surface):
+            width, height = self.texels.get_size()
+            if self.texels.get_alpha():
+                raw_data = pygame.image.tostring(self.texels,'RGBA',1)
+                return Image.fromstring('RGBA', (width, height), raw_data)
+            else:
+                raw_data = pygame.image.tostring(self.texels,'RGB',1)
+                return Image.fromstring('RGB', (width, height), raw_data)
+        else:
+            raise NotImplementedError("Don't know how to convert texel data %s "
+                                      "to PIL image"%(self.texels,))
+
+    def get_texels_as_array(self):
+        """Return texel data as numpy array"""
+        if isinstance(self.texels,numpy.ndarray):
+            return self.texels
+        elif isinstance(self.texels, Image.Image):
+            width, height = self.texels.size
+
+            if self.texels.mode == 'P':
+                texel_data=self.texels.convert('RGBA') # convert to RGBA from paletted
+                data_format = gl.GL_RGBA
+            else:
+                texel_data = self.texels
+
+            raw_data = texel_data.tostring('raw',texel_data.mode,0,-1)
+            if texel_data.mode == 'L':
+                shape = (height,width)
+            elif texel_data.mode == 'RGB':
+                shape = (height,width,3)
+            elif texel_data.mode in ('RGBA','RGBX'):
+                shape = (height,width,4)
+            else:
+                raise NotImplementedError('mode %s not supported'%(
+                    texel_data.mode,))
+            arr = numpy.fromstring( raw_data, dtype=numpy.uint8 )
+            arr.shape = shape
+            return arr
+        elif isinstance(self.texels, pygame.surface.Surface):
+            width, height = self.texels.get_size()
+            if self.texels.get_alpha():
+                raw_data = pygame.image.tostring(self.texels,'RGBA',1)
+                arr = numpy.fromstring( raw_data, dtype=numpy.uint8 )
+                arr.shape = (height,width,4)
+                return arr
+            else:
+                raw_data = pygame.image.tostring(self.texels,'RGB',1)
+                arr = numpy.fromstring( raw_data, dtype=numpy.uint8 )
+                arr.shape = (height,width,3)
+                return arr
+        else:
+            raise NotImplementedError("Don't know how to convert texel data %s "
+                                      "to numpy array"%(self.texels,))
+
+    def get_pixels_as_image(self):
+        logger = logging.getLogger('VisionEgg.Textures')
+        logger.warning("Using deprecated method get_pixels_as_image(). "
+                       "Use get_texels_as_image() instead.")
+        return self.get_texels_as_image()
+
+    def load(self,
+             texture_object,
+             build_mipmaps = True,
+             rescale_original_to_fill_texture_object = False,
+             internal_format=gl.GL_RGB):
+        """Load texture data to video texture memory.
+
+        This will cause the texture data to become resident in OpenGL
+        video texture memory, enabling fast drawing.
+
+        The texture_object argument is used to specify an instance of
+        the TextureObject class, which is a wrapper for the OpenGL
+        texture object holding the resident texture.
+
+        To remove a texture from OpenGL's resident textures:       TextureObject passed as the texture_object argument and 2)
+        call the unload() method"""
+
+        assert( isinstance( texture_object, TextureObject ))
+        assert( texture_object.dimensions == 2 )
+
+        width, height = self.size
+
+        width_pow2  = next_power_of_2(width)
+        height_pow2  = next_power_of_2(height)
+
+        if rescale_original_to_fill_texture_object:
+            if not isinstance(self.texels,Image.Image):
+                raise NotImplementedError("Automatic rescaling not implemented for this texel data type.")
+
+        # fractional coverage
+        self.buf_lf = 0.0
+        self.buf_rf = float(width)/width_pow2
+        self.buf_bf = 0.0
+        self.buf_tf = float(height)/height_pow2
+
+        # absolute (texel units) coverage
+        self._buf_l = 0
+        self._buf_r = width
+        self._buf_b = 0
+        self._buf_t = height
+
+        if width != width_pow2 or height != height_pow2:
+            if isinstance(self.texels,numpy.ndarray):
+                if len(self.texels.shape) == 2:
+                    buffer = numpy.zeros( (height_pow2,width_pow2), dtype=self.texels.dtype )
+                    buffer[0:height,0:width] = self.texels
+                elif len(self.texels.shape) == 3:
+                    buffer = numpy.zeros( (height_pow2,width_pow2,self.texels.shape[2]), dtype=self.texels.dtype )
+                    buffer[0:height,0:width,:] = self.texels
+                else:
+                    raise RuntimeError("Unexpected shape for self.texels")
+
+            elif isinstance(self.texels, Image.Image): # PIL Image
+                if rescale_original_to_fill_texture_object:
+                    # reset coverage values
+                    self.buf_lf = 0.0
+                    self.buf_rf = 1.0
+                    self.buf_bf = 0.0
+                    self.buf_tf = 1.0
+
+                    self._buf_l = 0
+                    self._buf_r = width_pow2
+                    self._buf_t = 0
+                    self._buf_b = height_pow2
+
+                    buffer = self.texels.resize((width_pow2,height_pow2),shrink_filter)
+
+                    self.size = (width_pow2, height_pow2)
+                else:
+                    buffer = Image.new(self.texels.mode,(width_pow2, height_pow2))
+                    buffer.paste( self.texels, (0,height_pow2-height,width,height_pow2))
+            elif isinstance(self.texels, pygame.surface.Surface): # pygame surface
+                buffer = pygame.surface.Surface( (width_pow2, height_pow2),
+                                                 self.texels.get_flags(),
+                                                 self.texels.get_bitsize() )
+                buffer.blit( self.texels, (0,height_pow2-height) )
+            else:
+                raise RuntimeError("texel data not recognized - changed?")
+        else:
+            buffer = self.texels
+
+        # Put data in texture object
+        if not build_mipmaps:
+            texture_object.put_new_image( buffer, internal_format=internal_format, mipmap_level=0 )
+        else:
+            if 0:
+                # Build mipmaps with GLU (faster, but currently broken)
+                texture_object.put_new_image_build_mipmaps( buffer, internal_format=internal_format )
+            else:
+                # Build mipmaps in PIL
+                texture_object.put_new_image( buffer, internal_format=internal_format, mipmap_level=0 )
+                if not isinstance(self.texels, Image.Image): # PIL Image
+                    raise NotImplementedError(
+                        "Building of mipmaps not implemented for this texel "+\
+                        "data type. (Use PIL Images or set parameter "+\
+                        "mipmaps_enabled = False.)")
+                this_width, this_height = self.size
+                biggest_dim = max(this_width,this_height)
+                mipmap_level = 1
+                while biggest_dim > 1:
+                    this_width = this_width/2.0
+                    this_height = this_height/2.0
+
+                    width_pix = int(math.ceil(this_width))
+                    height_pix = int(math.ceil(this_height))
+                    shrunk = self.texels.resize((width_pix,height_pix),shrink_filter)
+
+                    width_pow2  = next_power_of_2(width_pix)
+                    height_pow2  = next_power_of_2(height_pix)
+
+                    im = Image.new(shrunk.mode,(width_pow2,height_pow2))
+                    im.paste(shrunk,(0,height_pow2-height_pix,width_pix,height_pow2))
+
+                    texture_object.put_new_image( im,
+                                                  mipmap_level=mipmap_level,
+                                                  internal_format = internal_format,
+                                                  check_opengl_errors = False, # no point -- we've already seen biggest texture work, we're just making mipmap
+                                                  )
+
+                    mipmap_level += 1
+                    biggest_dim = max(this_width,this_height)
+
+        # Keep reference to texture_object
+        self.texture_object = texture_object
+
+    def get_texture_object(self):
+        return self.texture_object
+
+class TextureFromFile( Texture ):
+    """DEPRECATED."""
+    def __init__(self, filename ):
+        logger = logging.getLogger('VisionEgg.Textures')
+        logger.warning("class TextureFromFile deprecated, use class "
+                       "Texture instead.")
+        Texture.__init__(self, filename)
+
+class TextureObject(object):
+    """Texture data in OpenGL. Potentially resident in video texture memory.
+
+    This class encapsulates the state variables in OpenGL texture objects.  Do not
+    change attribute values directly.  Use the methods provided instead."""
+
+    __slots__ = (
+        'min_filter',
+        'mag_filter',
+        'wrap_mode_r', # if dimensions > 2
+        'wrap_mode_s',
+        'wrap_mode_t', # if dimensions > 1
+        'border_color',
+        'target',
+        'dimensions',
+        'gl_id',
+        '__gl_module__',
+        )
+
+    _cube_map_side_names = ['positive_x', 'negative_x',
+                            'positive_y', 'negative_y',
+                            'positive_z', 'negative_z']
+
+    def __init__(self,
+                 dimensions = 2):
+        if dimensions not in [1,2,3,'cube']:
+            raise ValueError("TextureObject dimensions must be 1,2,3, or 'cube'")
+        # default OpenGL values for these values
+        self.min_filter = gl.GL_NEAREST_MIPMAP_LINEAR
+        self.mag_filter = gl.GL_LINEAR
+        self.wrap_mode_s = gl.GL_REPEAT
+        if dimensions != 1:
+            self.wrap_mode_t = gl.GL_REPEAT
+        if dimensions == 3:
+            self.wrap_mode_r = gl.GL_REPEAT
+        self.border_color = (0, 0, 0, 0)
+
+        if dimensions == 1:
+            self.target = gl.GL_TEXTURE_1D
+        elif dimensions == 2:
+            self.target = gl.GL_TEXTURE_2D
+        elif dimensions == 3:
+            self.target = gl.GL_TEXTURE_3D
+        elif dimensions == 'cube':
+            self.target = gl.GL_TEXTURE_CUBE
+
+        self.dimensions = dimensions
+        self.gl_id = gl.glGenTextures(1)
+        self.__gl_module__ = gl # keep so we there's no error in __del__
+
+    def __del__(self):
+        self.__gl_module__.glDeleteTextures(self.gl_id)
+
+    def is_resident(self):
+        return gl.glAreTexturesResident( self.gl_id )
+
+    def set_priority(self, priority):
+        gl.glPrioritizeTextures( [self.gl_id], [priority] )
+
+    def set_min_filter(self, filter):
+        gl.glBindTexture(self.target, self.gl_id)
+        gl.glTexParameteri( self.target, gl.GL_TEXTURE_MIN_FILTER,filter)
+        self.min_filter = filter
+
+    def set_mag_filter(self, filter):
+        gl.glBindTexture( self.target, self.gl_id)
+        gl.glTexParameteri( self.target, gl.GL_TEXTURE_MAG_FILTER, filter)
+        self.mag_filter = filter
+
+    def set_wrap_mode_s(self, wrap_mode):
+        """Set to GL_CLAMP, GL_CLAMP_TO_EDGE, GL_REPEAT, or GL_CLAMP_TO_BORDER"""
+        gl.glBindTexture( self.target, self.gl_id)
+        gl.glTexParameteri( self.target, gl.GL_TEXTURE_WRAP_S, wrap_mode)
+        self.wrap_mode_s = wrap_mode
+
+    def set_wrap_mode_t(self, wrap_mode):
+        """Set to GL_CLAMP, GL_CLAMP_TO_EDGE, GL_REPEAT, or GL_CLAMP_TO_BORDER"""
+        gl.glBindTexture( self.target, self.gl_id)
+        gl.glTexParameteri( self.target, gl.GL_TEXTURE_WRAP_T, wrap_mode)
+        self.wrap_mode_t = wrap_mode
+
+    def set_wrap_mode_r(self, wrap_mode):
+        """Set to GL_CLAMP, GL_CLAMP_TO_EDGE, GL_REPEAT, or GL_CLAMP_TO_BORDER"""
+        gl.glBindTexture( self.target, self.gl_id)
+        gl.glTexParameteri( self.target, gl.GL_TEXTURE_WRAP_R, wrap_mode)
+        self.wrap_mode_r = wrap_mode
+
+    def set_border_color(self, border_color):
+        """Set to a sequence of 4 floats in the range 0.0 to 1.0"""
+        gl.glBindTexture( self.target, self.gl_id)
+        gl.glTexParameteriv( self.target, gl.GL_TEXTURE_BORDER_COLOR, border_color)
+        self.border_color = border_color
+
+    def put_new_image(self,
+                      texel_data,
+                      mipmap_level = 0,
+                      border = 0,
+                      check_opengl_errors = True,
+                      internal_format = gl.GL_RGB,
+                      data_format = None, # automatic guess unless set explicitly
+                      data_type = None, # automatic guess unless set explicitly
+                      cube_side = None,
+                      ):
+
+        """Put numpy array or PIL Image into OpenGL as texture data.
+
+        The texel_data parameter contains the texture data.  If it is
+        a numpy array, it must be 1D, 2D, or 3D data in grayscale or
+        color (RGB or RGBA).  Remember that OpenGL begins its textures
+        from the lower left corner, so texel_data[0,:] = 1.0 would set
+        the bottom line of the texture to white, while texel_data[:,0]
+        = 1.0 would set the left line of the texture to white.
+
+        The mipmap_level parameter specifies which of the texture
+        object's mipmap arrays you are filling.
+
+        The border parameter specifies the width of the border.
+
+        The check_opengl_errors parameter turns on (more
+        comprehensible) error messages when something goes wrong.  It
+        also slows down performance a little bit.
+
+        The internal_format parameter specifies the format in which
+        the image data is stored on the video card.  See the OpenGL
+        specification for all possible values.
+
+        If the data_format parameter is None (the default), an attempt
+        is made to guess data_format according to the following
+        description. For numpy arrays: If texel_data.shape is equal
+        to the dimensions of the texture object, texel_data is assumed
+        to contain luminance (grayscale) information and data_format
+        is set to GL_LUMINANCE.  If texel_data.shape is equal to one
+        plus the dimensions of the texture object, texel_data is
+        assumed to contain color information.  If texel_data.shape[-1]
+        is 3, this is assumed to be RGB data and data_format is set to
+        GL_RGB.  If, texel_data.shape[-1] is 4, this is assumed to be
+        RGBA data and data_format is set to GL_RGBA. For PIL images:
+        the "mode" attribute is queried.
+
+        If the data_type parameter is None (the default), it is set to
+        GL_UNSIGNED_BYTE. For numpy arrays: texel_data is (re)cast
+        to UInt8 and, if it is a floating point type, values are
+        assumed to be in the range 0.0-1.0 and are scaled to the range
+        0-255.  If the data_type parameter is not None, the texel_data
+        is not rescaled or recast.  Currently only GL_UNSIGNED_BYTE is
+        supported. For PIL images: texel_data is used as unsigned
+        bytes.  This is the usual format for common computer graphics
+        files."""
+
+        texel_data = convert_to_numpy_if_array(texel_data)
+        if isinstance(texel_data,numpy.ndarray):
+            if self.dimensions != 'cube':
+                assert(cube_side == None)
+                data_dimensions = len(texel_data.shape)
+                assert((data_dimensions == self.dimensions) or (data_dimensions == self.dimensions+1))
+            else:
+                assert(cube_side in TextureObject._cube_map_side_names)
+        elif isinstance(texel_data,Image.Image):
+            assert( self.dimensions == 2 )
+        elif isinstance(texel_data,pygame.surface.Surface):
+            assert( self.dimensions == 2 )
+        else:
+            raise TypeError("Expecting numpy array, PIL image, or pygame surface")
+
+        # make myself the active texture
+        gl.glBindTexture(self.target, self.gl_id)
+
+        # Determine the data_format, data_type and rescale the data if needed
+        if data_format is None: # guess the format of the data
+            if isinstance(texel_data,numpy.ndarray):
+                if len(texel_data.shape) == self.dimensions:
+                    data_format = gl.GL_LUMINANCE
+                elif len(texel_data.shape) == (self.dimensions+1):
+                    if texel_data.shape[-1] == 3:
+                        data_format = gl.GL_RGB
+                    elif texel_data.shape[-1] == 4:
+                        data_format = gl.GL_RGBA
+                    else:
+                        raise RuntimeError("Couldn't determine a format for your texel_data.")
+                else:
+                    raise RuntimeError("Couldn't determine a format for your texel_data.")
+            elif isinstance(texel_data,Image.Image):
+                if texel_data.mode == 'L':
+                    data_format = gl.GL_LUMINANCE
+                elif texel_data.mode == 'RGB':
+                    data_format = gl.GL_RGB
+                elif texel_data.mode in ('RGBA','RGBX'):
+                    data_format = gl.GL_RGBA
+                elif texel_data.mode == 'P':
+                    texel_data=texel_data.convert('RGBA') # convert to RGBA from paletted
+                    data_format = gl.GL_RGBA
+                else:
+                    raise RuntimeError("Couldn't determine format for your texel_data. (PIL mode = '%s')"%texel_data.mode)
+            elif isinstance(texel_data,pygame.surface.Surface):
+                if texel_data.get_alpha():
+                    data_format = gl.GL_RGBA
+                else:
+                    data_format = gl.GL_RGB
+
+        if data_type is None: # guess the data type
+            data_type = gl.GL_UNSIGNED_BYTE
+            if isinstance(texel_data,numpy.ndarray):
+                if texel_data.dtype == numpy.float:
+                    texel_data = texel_data*255.0
+
+        if data_type == gl.GL_UNSIGNED_BYTE:
+            if isinstance(texel_data,numpy.ndarray):
+                texel_data = texel_data.astype(numpy.uint8) # (re)cast if necessary
+        else:
+            raise NotImplementedError("Only data_type GL_UNSIGNED_BYTE currently supported")
+
+        # determine size and make sure its power of 2
+        if self.dimensions == 1:
+            # must be numpy array
+            width = texel_data.shape[0]
+            if not is_power_of_2(width): raise ValueError("texel_data does not have all dimensions == n^2")
+        else:
+            if isinstance(texel_data,numpy.ndarray):
+                width = texel_data.shape[1]
+                height = texel_data.shape[0]
+            elif isinstance(texel_data,Image.Image):
+                width, height = texel_data.size
+            elif isinstance(texel_data,pygame.surface.Surface):
+                width, height = texel_data.get_size()
+            if not is_power_of_2(width): raise ValueError("texel_data does not have all dimensions == n^2")
+            if not is_power_of_2(height): raise ValueError("texel_data does not have all dimensions == n^2")
+            if self.dimensions == 3:
+                # must be numpy array
+                depth = texel_data.shape[2]
+                if not is_power_of_2(depth): raise ValueError("texel_data does not have all dimensions == n^2")
+
+        if self.dimensions in [2,'cube']:
+            if isinstance(texel_data,numpy.ndarray):
+                raw_data = texel_data.tostring()
+            elif isinstance(texel_data,Image.Image):
+                raw_data = texel_data.tostring('raw',texel_data.mode,0,-1)
+            elif isinstance(texel_data,pygame.surface.Surface):
+                if texel_data.get_alpha():
+                    raw_data = pygame.image.tostring(texel_data,'RGBA',1)
+                else:
+                    raw_data = pygame.image.tostring(texel_data,'RGB',1)
+
+        # check for OpenGL errors
+        if check_opengl_errors:
+            max_dim = gl.glGetIntegerv( gl.GL_MAX_TEXTURE_SIZE )
+            if width > max_dim:
+                raise TextureTooLargeError("texel_data is too wide for your video system.")
+            if self.dimensions == 1:
+                gl.glTexImage1Dub(gl.GL_PROXY_TEXTURE_1D,
+                                mipmap_level,
+                                internal_format,
+                                border,
+                                data_format,
+                                texel_data)
+                if gl.glGetTexLevelParameteriv(gl.GL_PROXY_TEXTURE_1D,mipmap_level,gl.GL_TEXTURE_WIDTH) == 0:
+                    raise TextureTooLargeError("texel_data is too wide for your video system.")
+            elif self.dimensions in [2,'cube']:
+                if height > max_dim:
+                    raise TextureTooLargeError("texel_data is too tall for your video system.")
+                if self.dimensions == 2:
+                    target = gl.GL_PROXY_TEXTURE_2D
+                else:
+                    target = gl.GL_PROXY_CUBE_MAP
+                gl.glTexImage2D(target,
+                                mipmap_level,
+                                internal_format,
+                                width,
+                                height,
+                                border,
+                                data_format,
+                                data_type,
+                                raw_data)
+                if gl.glGetTexLevelParameteriv(target, # Need PyOpenGL >= 2.0
+                                               mipmap_level,
+                                               gl.GL_TEXTURE_WIDTH) == 0:
+                    raise TextureTooLargeError("texel_data is too wide for your video system.")
+                if gl.glGetTexLevelParameteriv(target,mipmap_level,gl.GL_TEXTURE_HEIGHT) == 0:
+                    raise TextureTooLargeError("texel_data is too tall for your video system.")
+            elif self.dimensions == 3:
+                if max(height,depth) > max_dim:
+                    raise TextureTooLargeError("texel_data is too large for your video system.")
+                gl.glTexImage3Dub(gl.GL_PROXY_TEXTURE_3D,
+                                  mipmap_level,
+                                  internal_format,
+                                  border,
+                                  data_format,
+                                  texel_data)
+                if gl.glGetTexLevelParameteriv(gl.GL_PROXY_TEXTURE_3D,mipmap_level,gl.GL_TEXTURE_WIDTH) == 0:
+                    raise TextureTooLargeError("texel_data is too wide for your video system.")
+                if gl.glGetTexLevelParameteriv(gl.GL_PROXY_TEXTURE_3D,mipmap_level,gl.GL_TEXTURE_HEIGHT) == 0:
+                    raise TextureTooLargeError("texel_data is too tall for your video system.")
+                if gl.glGetTexLevelParameteriv(gl.GL_PROXY_TEXTURE_3D,mipmap_level,gl.GL_TEXTURE_DEPTH) == 0:
+                    raise TextureTooLargeError("texel_data is too deep for your video system.")
+            else:
+                raise RuntimeError("Unknown number of dimensions.")
+
+        # No OpenGL error, put the texture in!
+        if self.dimensions == 1:
+            gl.glTexImage1Dub(gl.GL_TEXTURE_1D,
+                              mipmap_level,
+                              internal_format,
+                              border,
+                              data_format,
+                              texel_data)
+        elif self.dimensions in [2,'cube']:
+            if self.dimensions == 2:
+                target = gl.GL_TEXTURE_2D
+            else:
+                target_name = 'GL_CUBE_MAP_'+cube_side.upper()
+                target = getattr(gl,target_name)
+            gl.glTexImage2D(target,
+                            mipmap_level,
+                            internal_format,
+                            width,
+                            height,
+                            border,
+                            data_format,
+                            data_type,
+                            raw_data)
+        elif self.dimensions == 3:
+            gl.glTexImage3Dub(gl.GL_TEXTURE_3D,
+                              mipmap_level,
+                              internal_format,
+                              border,
+                              data_format,
+                              texel_data)
+        else:
+            raise RuntimeError("Unknown number of dimensions.")
+
+    def put_new_image_build_mipmaps(self,
+                                    texel_data,
+                                    internal_format = gl.GL_RGB,
+                                    data_format = None, # automatic guess unless set explicitly
+                                    data_type = None,   # automatic guess unless set explicitly
+                                    cube_side = None,
+                                    ):
+
+        """Similar to put_new_image(), but builds mipmaps."""
+
+        if self.dimensions != 2:
+            raise ValueError("can only handle 2D texel data for automatic mipmap building")
+        texel_data = convert_to_numpy_if_array(texel_data)
+        if isinstance(texel_data,numpy.ndarray):
+            assert(cube_side == None)
+            data_dimensions = len(texel_data.shape)
+            assert((data_dimensions == self.dimensions) or (data_dimensions == self.dimensions+1))
+        elif isinstance(texel_data,Image.Image):
+            assert( self.dimensions == 2 )
+        elif isinstance(texel_data,pygame.surface.Surface):
+            assert( self.dimensions == 2 )
+        else:
+            raise TypeError("Expecting numpy array, PIL image, or pygame surface")
+
+        # make myself the active texture
+        gl.glBindTexture(self.target, self.gl_id)
+
+        # Determine the data_format, data_type and rescale the data if needed
+        if data_format is None: # guess the format of the data
+            if isinstance(texel_data,numpy.ndarray):
+                if len(texel_data.shape) == self.dimensions:
+                    data_format = gl.GL_LUMINANCE
+                elif len(texel_data.shape) == (self.dimensions+1):
+                    if texel_data.shape[-1] == 3:
+                        data_format = gl.GL_RGB
+                    elif texel_data.shape[-1] == 4:
+                        data_format = gl.GL_RGBA
+                    else:
+                        raise RuntimeError("Couldn't determine a format for your texel_data.")
+                else:
+                    raise RuntimeError("Couldn't determine a format for your texel_data.")
+            elif isinstance(texel_data,Image.Image):
+                if texel_data.mode == 'L':
+                    data_format = gl.GL_LUMINANCE
+                elif texel_data.mode == 'RGB':
+                    data_format = gl.GL_RGB
+                elif texel_data.mode in ['RGBA','RGBX']:
+                    data_format = gl.GL_RGBA
+                elif texel_data.mode == 'P':
+                    texel_data=texel_data.convert('RGBA') # convert to RGBA from paletted
+                    data_format = gl.GL_RGBA
+                else:
+                    raise RuntimeError("Couldn't determine format for your texel_data. (PIL mode = '%s')"%texel_data.mode)
+            elif isinstance(texel_data,pygame.surface.Surface):
+                if texel_data.get_alpha():
+                    data_format = gl.GL_RGBA
+                else:
+                    data_format = gl.GL_RGB
+
+        if data_type is None: # guess the data type
+            data_type = gl.GL_UNSIGNED_BYTE
+            if isinstance(texel_data,numpy.ndarray):
+                if texel_data.dtype == numpy.float:
+                    texel_data = texel_data*255.0
+
+        if data_type == gl.GL_UNSIGNED_BYTE:
+            if isinstance(texel_data,numpy.ndarray):
+                texel_data = texel_data.astype(numpy.uint8) # (re)cast if necessary
+        else:
+            raise NotImplementedError("Only data_type GL_UNSIGNED_BYTE currently supported")
+
+        if isinstance(texel_data,numpy.ndarray):
+            width = texel_data.shape[1]
+            height = texel_data.shape[0]
+        elif isinstance(texel_data,Image.Image):
+            width, height = texel_data.size
+        elif isinstance(texel_data,pygame.surface.Surface):
+            width, height = texel_data.get_size()
+        if not is_power_of_2(width): raise ValueError("texel_data does not have all dimensions == n^2")
+        if not is_power_of_2(height): raise ValueError("texel_data does not have all dimensions == n^2")
+
+        if isinstance(texel_data,numpy.ndarray):
+            raw_data = texel_data.tostring()
+        elif isinstance(texel_data,Image.Image):
+            raw_data = texel_data.tostring('raw',texel_data.mode,0,-1)
+        elif isinstance(texel_data,pygame.surface.Surface):
+            if texel_data.get_alpha():
+                raw_data = pygame.image.tostring(texel_data,'RGBA',1)
+            else:
+                raw_data = pygame.image.tostring(texel_data,'RGB',1)
+
+        args = (self.target,
+                              internal_format,
+                              width, # XXX should be width_pow2?
+                              height,# XXX should be height_pow2?
+                              data_format,
+                              data_type)
+                              #raw_data)
+        print 'args',args
+
+        glu.gluBuild2DMipmaps(self.target,
+                              internal_format,
+                              width, # XXX should be width_pow2?
+                              height,# XXX should be height_pow2?
+                              data_format,
+                              data_type,
+                              raw_data)
+
+    def put_sub_image(self,
+                      texel_data,
+                      mipmap_level = 0,
+                      offset_tuple = None,
+                      data_format = None, # automatic guess unless set explicitly
+                      data_type = None, # automatic guess unless set explicitly
+                      cube_side = None,
+                      ):
+
+        """Replace all or part of a texture object.
+
+        This is faster that put_new_image(), and can be used to
+        rapidly update textures.
+
+        The offset_tuple parameter determines the lower left corner
+        (for 2D textures) of your data in pixel units.  For example,
+        (0,0) would be no offset and thus the new data would be placed
+        in the lower left of the texture.
+
+        For an explanation of most parameters, see the
+        put_new_image() method."""
+
+        texel_data = convert_to_numpy_if_array(texel_data)
+        if isinstance(texel_data,numpy.ndarray):
+            if self.dimensions != 'cube':
+                assert(cube_side == None)
+                data_dimensions = len(texel_data.shape)
+                assert((data_dimensions == self.dimensions) or (data_dimensions == self.dimensions+1))
+            else:
+                assert(cube_side in TextureObject._cube_map_side_names)
+        elif isinstance(texel_data,Image.Image):
+            assert( self.dimensions == 2 )
+        elif isinstance(texel_data,pygame.surface.Surface):
+            assert( self.dimensions == 2 )
+        else:
+            raise TypeError("Expecting numpy array, PIL image, or pygame surface")
+
+        # make myself the active texture
+        gl.glBindTexture(self.target, self.gl_id)
+
+        # Determine the data_format, data_type and rescale the data if needed
+
+        if data_format is None: # guess the format of the data
+            if isinstance(texel_data,numpy.ndarray):
+                if len(texel_data.shape) == self.dimensions:
+                    data_format = gl.GL_LUMINANCE
+                elif len(texel_data.shape) == (self.dimensions+1):
+                    if texel_data.shape[-1] == 3:
+                        data_format = gl.GL_RGB
+                    elif texel_data.shape[-1] == 4:
+                        data_format = gl.GL_RGBA
+                    else:
+                        raise RuntimeError("Couldn't determine a format for your texel_data.")
+                else:
+                    raise RuntimeError("Couldn't determine a format for your texel_data.")
+            elif isinstance(texel_data,Image.Image):
+                if texel_data.mode == 'L':
+                    data_format = gl.GL_LUMINANCE
+                elif texel_data.mode == 'RGB':
+                    data_format = gl.GL_RGB
+                elif texel_data.mode in ['RGBA','RGBX']:
+                    data_format = gl.GL_RGBA
+                elif texel_data.mode == 'P':
+                    texel_data=texel_data.convert('RGBA') # convert to RGBA from paletted
+                    data_format = gl.GL_RGBA
+                else:
+                    raise RuntimeError("Couldn't determine format for your texel_data. (PIL mode = '%s')"%texel_data.mode)
+            elif isinstance(texel_data,pygame.surface.Surface):
+                if texel_data.get_alpha():
+                    data_format = gl.GL_RGBA
+                else:
+                    data_format = gl.GL_RGB
+
+        if data_type is None: # guess the data type
+            data_type = gl.GL_UNSIGNED_BYTE
+            if isinstance(texel_data,numpy.ndarray):
+                if texel_data.dtype == numpy.float:
+                    texel_data = texel_data*255.0
+
+        if data_type == gl.GL_UNSIGNED_BYTE:
+            if isinstance(texel_data,numpy.ndarray):
+                texel_data = texel_data.astype(numpy.uint8) # (re)cast if necessary
+        else:
+            raise NotImplementedError("Only data_type GL_UNSIGNED_BYTE currently supported")
+
+        if self.dimensions == 1:
+            if offset_tuple is None:
+                x_offset = 0
+            else:
+                x_offset = offset_tuple[0]
+            width = texel_data.shape[0]
+            raw_data = texel_data.astype(numpy.uint8).tostring()
+            gl.glTexSubImage1D(gl.GL_TEXTURE_1D,
+                               mipmap_level,
+                               x_offset,
+                               width,
+                               data_format,
+                               data_type,
+                               raw_data)
+        elif self.dimensions in [2,'cube']:
+            if self.dimensions == 2:
+                target = gl.GL_TEXTURE_2D
+            else:
+                target_name = 'GL_CUBE_MAP_'+cube_side.upper()
+                target = getattr(gl,target_name)
+            if offset_tuple is None:
+                x_offset = y_offset = 0
+            else:
+                x_offset, y_offset = offset_tuple
+            if isinstance(texel_data,numpy.ndarray):
+                width = texel_data.shape[1]
+                height = texel_data.shape[0]
+                raw_data = texel_data.astype(numpy.uint8).tostring()
+            elif isinstance(texel_data,Image.Image):
+                width = texel_data.size[0]
+                height = texel_data.size[1]
+                raw_data = texel_data.tostring('raw',texel_data.mode,0,-1)
+            elif isinstance(texel_data,pygame.surface.Surface):
+                width, height = texel_data.get_size()
+                if texel_data.get_alpha():
+                    raw_data = pygame.image.tostring(texel_data,'RGBA',1)
+                else:
+                    raw_data = pygame.image.tostring(texel_data,'RGB',1)
+            gl.glTexSubImage2D(target,
+                               mipmap_level,
+                               x_offset,
+                               y_offset,
+                               width,
+                               height,
+                               data_format,
+                               data_type,
+                               raw_data)
+        elif self.dimensions == 3:
+            raise RuntimeError("Cannot put_sub_image on 3D texture_object.")
+        else:
+            raise RuntimeError("Unknown number of dimensions.")
+
+    def put_new_framebuffer(self,
+                            buffer='back',
+                            mipmap_level = 0,
+                            border = 0,
+                            framebuffer_lowerleft = None,
+                            size = None,
+                            internal_format = gl.GL_RGB,
+                            cube_side = None,
+                            ):
+
+        """Replace texture object with the framebuffer contents.
+
+        The framebuffer_lowerleft parameter determines the lower left
+        corner of the framebuffer region from which to copy texel data
+        in pixel units.  For example, (0,0) would be no offset and
+        thus the new data would be placed from the lower left of the
+        framebuffer.
+
+        For an explanation of most parameters, see the
+        put_new_image() method."""
+
+        if self.dimensions != 2:
+            raise RuntimeError("put_new_framebuffer only supported for 2D textures.")
+
+        if buffer == 'front':
+            gl.glReadBuffer( gl.GL_FRONT )
+        elif buffer == 'back':
+            gl.glReadBuffer( gl.GL_BACK )
+        else:
+            raise ValueError('No support for "%s" framebuffer'%buffer)
+
+        # make myself the active texture
+        gl.glBindTexture(self.target, self.gl_id)
+
+        if framebuffer_lowerleft is None:
+            framebuffer_lowerleft = (0,0)
+        x,y = framebuffer_lowerleft
+
+        if size is None:
+            raise ValueError("Must specify size for put_new_framebuffer(): cannot guess")
+
+        # determine size and make sure its power of 2
+        width, height = size
+        if not is_power_of_2(width): raise ValueError("texel_data does not have all dimensions == n^2")
+        if not is_power_of_2(height): raise ValueError("texel_data does not have all dimensions == n^2")
+
+        target = gl.GL_TEXTURE_2D
+        gl.glCopyTexImage2D(target,
+                            mipmap_level,
+                            internal_format,
+                            x,
+                            y,
+                            width,
+                            height,
+                            border)
+
+####################################################################
+#
+#        Stimulus - TextureStimulus
+#
+####################################################################
+
+class TextureStimulusBaseClass(VisionEgg.Core.Stimulus):
+    """Parameters common to all stimuli that use textures.
+
+    Don't instantiate this class directly.
+
+    Parameters
+    ==========
+    texture            -- source of texture data (Instance of <class 'VisionEgg.Textures.Texture'>)
+                          Default: (determined at runtime)
+    texture_mag_filter -- OpenGL filter enum (Integer)
+                          Default: GL_LINEAR (9729)
+    texture_min_filter -- OpenGL filter enum (Integer)
+                          Default: (GL enum determined at runtime)
+    texture_wrap_s     -- OpenGL texture wrap enum (Integer)
+                          Default: (GL enum determined at runtime)
+    texture_wrap_t     -- OpenGL texture wrap enum (Integer)
+                          Default: (GL enum determined at runtime)
+
+    Constant Parameters
+    ===================
+    internal_format   -- format with which OpenGL uses texture data (OpenGL data type enum) (Integer)
+                         Default: GL_RGB (6407)
+    mipmaps_enabled   -- Are mipmaps enabled? (Boolean)
+                         Default: True
+    shrink_texture_ok -- Allow automatic shrinking of texture if too big? (Boolean)
+                         Default: False
+    """
+
+    parameters_and_defaults = {
+        'texture':(None,
+                   ve_types.Instance(Texture),
+                   "source of texture data"),
+        'texture_mag_filter':(gl.GL_LINEAR,
+                              ve_types.Integer,
+                              "OpenGL filter enum",
+                              VisionEgg.ParameterDefinition.OPENGL_ENUM),
+        'texture_min_filter':(None, # defaults to gl.GL_LINEAR_MIPMAP_LINEAR (unless mipmaps_enabled False, then gl.GL_LINEAR)
+                              ve_types.Integer,
+                              "OpenGL filter enum",
+                              VisionEgg.ParameterDefinition.OPENGL_ENUM),
+        'texture_wrap_s':(None, # set to gl.GL_CLAMP_TO_EDGE below
+                          ve_types.Integer,
+                          "OpenGL texture wrap enum",
+                          VisionEgg.ParameterDefinition.OPENGL_ENUM),
+        'texture_wrap_t':(None, # set to gl.GL_CLAMP_TO_EDGE below
+                          ve_types.Integer,
+                          "OpenGL texture wrap enum",
+                          VisionEgg.ParameterDefinition.OPENGL_ENUM),
+        }
+
+    constant_parameters_and_defaults = {
+        'internal_format':(gl.GL_RGB,#None,
+                           ve_types.Integer,
+                           "format with which OpenGL uses texture data (OpenGL data type enum)",
+                           VisionEgg.ParameterDefinition.OPENGL_ENUM),
+        'mipmaps_enabled':(True,
+                           ve_types.Boolean,
+                           "Are mipmaps enabled?"),
+        'shrink_texture_ok':(False,
+                             ve_types.Boolean,
+                             "Allow automatic shrinking of texture if too big?"),
+        }
+
+    __slots__ = (
+        'texture_object',
+        '_using_texture',
+        )
+
+    _mipmap_modes = [gl.GL_LINEAR_MIPMAP_LINEAR,gl.GL_LINEAR_MIPMAP_NEAREST,
+                     gl.GL_NEAREST_MIPMAP_LINEAR,gl.GL_NEAREST_MIPMAP_NEAREST]
+
+    def __init__(self,**kw):
+        VisionEgg.Core.Stimulus.__init__(self,**kw)
+
+        if self.parameters.texture is None:
+            # generate default texture
+            self.parameters.texture = Texture()
+
+        if self.parameters.texture_min_filter is None:
+            # generate default texture minimization filter
+            if self.constant_parameters.mipmaps_enabled:
+                self.parameters.texture_min_filter = gl.GL_LINEAR_MIPMAP_LINEAR
+            else:
+                self.parameters.texture_min_filter = gl.GL_LINEAR
+
+        if not self.constant_parameters.mipmaps_enabled:
+            if self.parameters.texture_min_filter in TextureStimulusBaseClass._mipmap_modes:
+                raise ValueError("texture_min_filter cannot be a mipmap type if mipmaps not enabled.")
+        # We have to set these parameters here because we may have
+        # re-assigned gl.GL_CLAMP_TO_EDGE.  This allows us to use
+        # symbol gl.GL_CLAMP_TO_EDGE even if our version of OpenGL
+        # doesn't support it.
+        if self.parameters.texture_wrap_s is None:
+            self.parameters.texture_wrap_s = gl.GL_CLAMP_TO_EDGE
+        if self.parameters.texture_wrap_t is None:
+            self.parameters.texture_wrap_t = gl.GL_CLAMP_TO_EDGE
+
+        # Create an OpenGL texture object this instance "owns"
+        self.texture_object = TextureObject(dimensions=2)
+
+        self._reload_texture()
+
+    def _reload_texture(self):
+        """(Re)load texture to OpenGL"""
+        p = self.parameters
+        self._using_texture = p.texture
+
+        if not self.constant_parameters.shrink_texture_ok:
+            # send texture to OpenGL
+            p.texture.load( self.texture_object,
+                            internal_format = self.constant_parameters.internal_format,
+                            build_mipmaps = self.constant_parameters.mipmaps_enabled )
+        else:
+            max_dim = gl.glGetIntegerv( gl.GL_MAX_TEXTURE_SIZE )
+            resized = 0
+            while max(p.texture.size) > max_dim:
+                p.texture.make_half_size()
+                resized = 1
+            loaded_ok = 0
+            while not loaded_ok:
+                try:
+                    # send texture to OpenGL
+                    p.texture.load( self.texture_object,
+                                    internal_format = self.constant_parameters.internal_format,
+                                    build_mipmaps = self.constant_parameters.mipmaps_enabled )
+                except TextureTooLargeError:
+                    p.texture.make_half_size()
+                    resized = 1
+                else:
+                    loaded_ok = 1
+            if resized:
+                logger = logging.getLogger('VisionEgg.Textures')
+                logger.warning("Resized texture in %s to %d x %d"%(
+                    str(self),p.texture.size[0],p.texture.size[1]))
+
+class Mask2D(VisionEgg.ClassWithParameters):
+    """A mask for windowing a portion of a texture.
+
+    Thanks to the author, Jon Peirce, of the AlphaStim class from the
+    PsychoPy package from which the idea to do this came.
+
+    Constant Parameters
+    ===================
+    function         -- 'gaussian' or 'circle' (String)
+                        Default: gaussian
+    num_samples      -- size of mask texture data (units: number of texels) (Sequence2 of Real)
+                        Default: (256, 256)
+    radius_parameter -- radius for circle, sigma for gaussian (Real)
+                        Default: 25.0
+    """
+
+    # All of these parameters are constant -- if you need a new mask, create a new instance
+    constant_parameters_and_defaults = {
+        'function':('gaussian', # can be 'gaussian' or 'circle'
+                    ve_types.String,
+                    "'gaussian' or 'circle'"),
+        'radius_parameter':(25.0, # radius for circle, sigma for gaussian, same units as num_samples
+                            ve_types.Real,
+                            "radius for circle, sigma for gaussian"),
+        'num_samples':((256,256), # size of mask data in texels
+                       ve_types.Sequence2(ve_types.Real),
+                       "size of mask texture data (units: number of texels)"),
+        }
+    def __init__(self,**kw):
+        VisionEgg.ClassWithParameters.__init__(self,**kw)
+
+        cp = self.constant_parameters # shorthand
+        width,height = cp.num_samples
+        if width != next_power_of_2(width):
+            raise RuntimeError("Mask must have width num_samples power of 2")
+        if height != next_power_of_2(height):
+            raise RuntimeError("Mask must have height num_samples power of 2")
+
+        gl.glActiveTextureARB(gl.GL_TEXTURE1_ARB) # Need PyOpenGL >= 2.0
+        self.texture_object = TextureObject(dimensions=2)
+
+        if cp.function == "gaussian":
+            xx = numpyNumeric.outerproduct(numpyNumeric.ones((1,cp.num_samples[1])),
+                                      numpyNumeric.arange(0,cp.num_samples[0],1.0)-cp.num_samples[0]/2)
+            yy = numpyNumeric.outerproduct(numpyNumeric.arange(0,cp.num_samples[1],1.0)-cp.num_samples[1]/2,
+                                      numpyNumeric.ones((1,cp.num_samples[0])))
+            dist_from_center = numpyNumeric.sqrt(xx**2 + yy**2)
+            sigma = cp.radius_parameter
+            data = numpyNumeric.exp( -dist_from_center**2.0 / (2.0*sigma**2.0) )
+        elif cp.function == "circle":
+            data = numpyNumeric.zeros(cp.num_samples,numpyNumeric.Float)
+            # perform anti-aliasing in circle computation by computing
+            # at several slightly different locations and averaging
+            oversamples = 4
+            x_offsets = numpyNumeric.arange(0.0,1.0,1.0/oversamples)
+            x_offsets = x_offsets - MLab.mean(x_offsets)
+            y_offsets = x_offsets
+            for x_offset in x_offsets:
+                for y_offset in y_offsets:
+                    xx = numpyNumeric.outerproduct(numpyNumeric.ones((1,cp.num_samples[1])),
+                                              numpyNumeric.arange(0,cp.num_samples[0],1.0)-cp.num_samples[0]/2+0.5)+x_offset
+                    yy = numpyNumeric.outerproduct(numpyNumeric.arange(0,cp.num_samples[1],1.0)-cp.num_samples[1]/2+0.5,
+                                              numpyNumeric.ones((1,cp.num_samples[0])))+y_offset
+                    dist_from_center = numpyNumeric.sqrt(xx**2 + yy**2)
+                    data += dist_from_center <= cp.radius_parameter
+            data = data / float( len(x_offsets)*len(y_offsets) )
+        else:
+            raise RuntimeError("Don't know about window function %s"%self.constant_parameters.function)
+
+        self.texture_object.put_new_image(data,
+                                          data_format=gl.GL_ALPHA,
+                                          internal_format=gl.GL_ALPHA)
+        self.texture_object.set_min_filter(gl.GL_LINEAR) # turn off mipmaps for mask
+        self.texture_object.set_wrap_mode_s(gl.GL_CLAMP_TO_EDGE)
+        self.texture_object.set_wrap_mode_t(gl.GL_CLAMP_TO_EDGE)
+        gl.glTexEnvi(gl.GL_TEXTURE_ENV, gl.GL_TEXTURE_ENV_MODE, gl.GL_MODULATE)
+
+        # reset active texture unit to 0
+        gl.glActiveTextureARB(gl.GL_TEXTURE0_ARB)
+
+    def draw_masked_quad_3d(self,lt,rt,bt,tt,v1,v2,v3,v4):
+        # The *t parameters are the texture coordinates.
+
+        # By the time this method is called, GL_TEXTURE0_ARB should be
+        # loaded as the texture object to be masked.
+
+        gl.glActiveTextureARB(gl.GL_TEXTURE1_ARB) # bind 2nd texture unit to mask texture
+        gl.glBindTexture(gl.GL_TEXTURE_2D, self.texture_object.gl_id)
+        gl.glEnable(gl.GL_TEXTURE_2D)
+
+        # The normal TEXTURE2D object is the 1st (TEXTURE0) texture unit
+        gl.glBegin(gl.GL_QUADS)
+
+        gl.glMultiTexCoord2fARB(gl.GL_TEXTURE0_ARB,lt,bt)
+        gl.glMultiTexCoord2fARB(gl.GL_TEXTURE1_ARB,0.0,0.0)
+        gl.glVertex(*v1)
+
+        gl.glMultiTexCoord2fARB(gl.GL_TEXTURE0_ARB,rt,bt)
+        gl.glMultiTexCoord2fARB(gl.GL_TEXTURE1_ARB,1.0,0.0)
+        gl.glVertex(*v2)
+
+        gl.glMultiTexCoord2fARB(gl.GL_TEXTURE0_ARB,rt,tt)
+        gl.glMultiTexCoord2fARB(gl.GL_TEXTURE1_ARB,1.0,1.0)
+        gl.glVertex(*v3)
+
+        gl.glMultiTexCoord2fARB(gl.GL_TEXTURE0_ARB,lt,tt)
+        gl.glMultiTexCoord2fARB(gl.GL_TEXTURE1_ARB,0.0,1.0)
+        gl.glVertex(*v4)
+
+        gl.glEnd() # GL_QUADS
+        gl.glDisable(gl.GL_TEXTURE_2D) # turn off texturing in this texture unit
+        gl.glActiveTextureARB(gl.GL_TEXTURE0_ARB) # return to 1st texture unit
+
+    def draw_masked_quad(self,lt,rt,bt,tt,le,re,be,te,depth):
+        # The *t parameters are the texture coordinates. The *e
+        # parameters are the eye coordinates for the vertices of the
+        # quad.
+        v1 = (le,be,depth)
+        v2 = (re,be,depth)
+        v3 = (re,te,depth)
+        v4 = (le,te,depth)
+        self.draw_masked_quad_3d(lt,rt,bt,tt,v1,v2,v3,v4)
+
+class TextureStimulus(TextureStimulusBaseClass):
+    """A textured rectangle.
+
+    This is mainly for 2D use (z coordinate fixed to 0.0 and w
+    coordinated fixed to 1.0 if not given).
+
+
+    Parameters
+    ==========
+    anchor             -- specifies how position parameter is interpreted (String)
+                          Default: lowerleft
+    angle              -- units: degrees, 0=right, 90=up (Real)
+                          Default: 0.0
+    color              -- texture environment color. alpha ignored (if given) for max_alpha parameter (AnyOf(Sequence3 of Real or Sequence4 of Real))
+                          Default: (1.0, 1.0, 1.0)
+    depth_test         -- perform depth test? (Boolean)
+                          Default: False
+    mask               -- optional masking function (Instance of <class 'VisionEgg.Textures.Mask2D'>)
+                          Default: (determined at runtime)
+    max_alpha          -- controls opacity. 1.0=copletely opaque, 0.0=completely transparent (Real)
+                          Default: 1.0
+    on                 -- draw stimulus? (Boolean)
+                          Default: True
+    position           -- units: eye coordinates (AnyOf(Sequence2 of Real or Sequence3 of Real or Sequence4 of Real))
+                          Default: (0.0, 0.0)
+    size               -- defaults to texture data size (units: eye coordinates) (Sequence2 of Real)
+                          Default: (determined at runtime)
+    texture            -- source of texture data (Instance of <class 'VisionEgg.Textures.Texture'>)
+                          Inherited from TextureStimulusBaseClass
+                          Default: (determined at runtime)
+    texture_mag_filter -- OpenGL filter enum (Integer)
+                          Inherited from TextureStimulusBaseClass
+                          Default: GL_LINEAR (9729)
+    texture_min_filter -- OpenGL filter enum (Integer)
+                          Inherited from TextureStimulusBaseClass
+                          Default: (GL enum determined at runtime)
+    texture_wrap_s     -- OpenGL texture wrap enum (Integer)
+                          Inherited from TextureStimulusBaseClass
+                          Default: (GL enum determined at runtime)
+    texture_wrap_t     -- OpenGL texture wrap enum (Integer)
+                          Inherited from TextureStimulusBaseClass
+                          Default: (GL enum determined at runtime)
+
+    Constant Parameters
+    ===================
+    internal_format   -- format with which OpenGL uses texture data (OpenGL data type enum) (Integer)
+                         Default: GL_RGB (6407)
+    mipmaps_enabled   -- Are mipmaps enabled? (Boolean)
+                         Default: True
+    shrink_texture_ok -- Allow automatic shrinking of texture if too big? (Boolean)
+                         Default: False
+    """
+
+    parameters_and_defaults = {
+        'on':(True,
+              ve_types.Boolean,
+              "draw stimulus?"),
+        'mask':(None, # texture mask
+                ve_types.Instance(Mask2D),
+                "optional masking function"),
+        'position':((0.0,0.0), # in eye coordinates
+                    ve_types.AnyOf(ve_types.Sequence2(ve_types.Real),
+                                   ve_types.Sequence3(ve_types.Real),
+                                   ve_types.Sequence4(ve_types.Real)),
+                    "units: eye coordinates"),
+        'anchor':('lowerleft',
+                  ve_types.String,
+                  "specifies how position parameter is interpreted"),
+        'lowerleft':(None,  # DEPRECATED -- don't use
+                     ve_types.Sequence2(ve_types.Real),
+                     "",
+                     VisionEgg.ParameterDefinition.DEPRECATED),
+        'angle':(0.0, # in degrees
+                 ve_types.Real,
+                 "units: degrees, 0=right, 90=up"),
+        'size':(None,
+                ve_types.Sequence2(ve_types.Real),
+                "defaults to texture data size (units: eye coordinates)"),
+        'max_alpha':(1.0, # controls "opacity": 1.0 = completely opaque, 0.0 = completely transparent
+                     ve_types.Real,
+                     "controls opacity. 1.0=copletely opaque, 0.0=completely transparent"),
+        'color':((1.0,1.0,1.0), # texture environment color. alpha is ignored (if given) -- use max_alpha parameter
+                 ve_types.AnyOf(ve_types.Sequence3(ve_types.Real),
+                                ve_types.Sequence4(ve_types.Real)),
+                 "texture environment color. alpha ignored (if given) for max_alpha parameter"),
+        'depth_test':(False,
+                      ve_types.Boolean,
+                      "perform depth test?"),
+        }
+
+    def draw(self):
+        p = self.parameters
+        if p.texture != self._using_texture: # self._using_texture is from TextureStimulusBaseClass
+            self._reload_texture()
+        if p.lowerleft != None:
+            if not hasattr(VisionEgg.config,"_GAVE_LOWERLEFT_DEPRECATION"):
+                logger = logging.getLogger('VisionEgg.Textures')
+                logger.warning("Specifying texture by 'lowerleft' "
+                               "deprecated parameter deprecated.  Use "
+                               "'position' parameter instead.  (Allows "
+                               "use of 'anchor' parameter to set to "
+                               "other values.)")
+                VisionEgg.config._GAVE_LOWERLEFT_DEPRECATION = 1
+            p.anchor = 'lowerleft'
+            p.position = p.lowerleft[0], p.lowerleft[1] # copy values (don't copy ref to tuple)
+        if p.on:
+            tex = p.texture
+
+            if p.size is None:
+                # Note: 'size' attribute is not supposed to be part of the API,
+                # so this is naughty.
+                size = tex.size
+            else:
+                size = p.size
+
+            # calculate lowerleft corner
+            lowerleft = VisionEgg._get_lowerleft(p.position,p.anchor,size)
+
+            # Clear the modelview matrix
+            gl.glMatrixMode(gl.GL_MODELVIEW)
+            gl.glPushMatrix()
+            try:
+                if p.depth_test:
+                    gl.glEnable(gl.GL_DEPTH_TEST)
+                else:
+                    gl.glDisable(gl.GL_DEPTH_TEST)
+                gl.glEnable( gl.GL_TEXTURE_2D )
+
+                # allow max_alpha value to control blending
+                gl.glEnable( gl.GL_BLEND )
+                gl.glBlendFunc( gl.GL_SRC_ALPHA, gl.GL_ONE_MINUS_SRC_ALPHA )
+
+                if not self.constant_parameters.mipmaps_enabled:
+                    if p.texture_min_filter in TextureStimulusBaseClass._mipmap_modes:
+                        raise RuntimeError("Specified a mipmap mode in texture_min_filter, but mipmaps not enabled.")
+                self.texture_object.set_min_filter( p.texture_min_filter )
+                self.texture_object.set_mag_filter( p.texture_mag_filter )
+                self.texture_object.set_wrap_mode_s( p.texture_wrap_s )
+                self.texture_object.set_wrap_mode_t( p.texture_wrap_t )
+                gl.glTexEnvi(gl.GL_TEXTURE_ENV, gl.GL_TEXTURE_ENV_MODE, gl.GL_MODULATE)
+
+                translate_vector = p.position
+                if len(translate_vector) == 2:
+                    translate_vector = translate_vector[0], translate_vector[1], 0
+                gl.glTranslate(*translate_vector)
+                gl.glRotate(p.angle,0,0,1)
+
+                gl.glColor4f(p.color[0],p.color[1],p.color[2],p.max_alpha)
+
+                # Test to draw only if all values are finite is
+                # disabled for performance reasons.
+                #if numpy.alltrue( numpy.isfinite( numpy.concatenate((lowerleft,p.position)) ) ):
+                try:
+                    l = lowerleft[0] - p.position[0]
+                    r = l + size[0]
+                    b = lowerleft[1] - p.position[1]
+                    t = b + size[1]
+                except FloatingPointError:
+                    # don't draw texture
+                    return
+
+                tex.update()
+
+                if p.mask:
+                    p.mask.draw_masked_quad(tex.buf_lf,tex.buf_rf,tex.buf_bf,tex.buf_tf, # l,r,b,t for texture coordinates
+                                            l,r,b,t,0.0) # l,r,b,t in eye coordinates
+                else:
+                    gl.glBegin(gl.GL_QUADS)
+                    gl.glTexCoord2f(tex.buf_lf,tex.buf_bf)
+                    gl.glVertex2f(l,b)
+
+                    gl.glTexCoord2f(tex.buf_rf,tex.buf_bf)
+                    gl.glVertex2f(r,b)
+
+                    gl.glTexCoord2f(tex.buf_rf,tex.buf_tf)
+                    gl.glVertex2f(r,t)
+
+                    gl.glTexCoord2f(tex.buf_lf,tex.buf_tf)
+                    gl.glVertex2f(l,t)
+                    gl.glEnd() # GL_QUADS
+            finally:
+                gl.glPopMatrix()
+
+class TextureStimulus3D(TextureStimulusBaseClass):
+    """A textured rectangle placed arbitrarily in 3 space.
+
+    Parameters
+    ==========
+    depth_test         -- perform depth test? (Boolean)
+                          Default: True
+    lowerleft          -- vertex position (units: eye coordinates) (AnyOf(Sequence3 of Real or Sequence4 of Real))
+                          Default: (0.0, 0.0, -1.0)
+    lowerright         -- vertex position (units: eye coordinates) (AnyOf(Sequence3 of Real or Sequence4 of Real))
+                          Default: (1.0, 0.0, -1.0)
+    on                 -- (Boolean)
+                          Default: True
+    texture            -- source of texture data (Instance of <class 'VisionEgg.Textures.Texture'>)
+                          Inherited from TextureStimulusBaseClass
+                          Default: (determined at runtime)
+    texture_mag_filter -- OpenGL filter enum (Integer)
+                          Inherited from TextureStimulusBaseClass
+                          Default: GL_LINEAR (9729)
+    texture_min_filter -- OpenGL filter enum (Integer)
+                          Inherited from TextureStimulusBaseClass
+                          Default: (GL enum determined at runtime)
+    texture_wrap_s     -- OpenGL texture wrap enum (Integer)
+                          Inherited from TextureStimulusBaseClass
+                          Default: (GL enum determined at runtime)
+    texture_wrap_t     -- OpenGL texture wrap enum (Integer)
+                          Inherited from TextureStimulusBaseClass
+                          Default: (GL enum determined at runtime)
+    upperleft          -- vertex position (units: eye coordinates) (AnyOf(Sequence3 of Real or Sequence4 of Real))
+                          Default: (0.0, 1.0, -1.0)
+    upperright         -- vertex position (units: eye coordinates) (AnyOf(Sequence3 of Real or Sequence4 of Real))
+                          Default: (1.0, 1.0, -1.0)
+
+    Constant Parameters
+    ===================
+    internal_format   -- format with which OpenGL uses texture data (OpenGL data type enum) (Integer)
+                         Default: GL_RGB (6407)
+    mipmaps_enabled   -- Are mipmaps enabled? (Boolean)
+                         Default: True
+    shrink_texture_ok -- Allow automatic shrinking of texture if too big? (Boolean)
+                         Default: False
+    """
+
+    parameters_and_defaults = {'on':(True,
+                                     ve_types.Boolean),
+                               'lowerleft':((0.0,0.0,-1.0), # in eye coordinates
+                                            ve_types.AnyOf(ve_types.Sequence3(ve_types.Real),
+                                                           ve_types.Sequence4(ve_types.Real)),
+                                            "vertex position (units: eye coordinates)"),
+                               'lowerright':((1.0,0.0,-1.0), # in eye coordinates
+                                             ve_types.AnyOf(ve_types.Sequence3(ve_types.Real),
+                                                            ve_types.Sequence4(ve_types.Real)),
+                                            "vertex position (units: eye coordinates)"),
+                               'upperleft':((0.0,1.0,-1.0), # in eye coordinates
+                                            ve_types.AnyOf(ve_types.Sequence3(ve_types.Real),
+                                                           ve_types.Sequence4(ve_types.Real)),
+                                            "vertex position (units: eye coordinates)"),
+                               'upperright':((1.0,1.0,-1.0), # in eye coordinates
+                                             ve_types.AnyOf(ve_types.Sequence3(ve_types.Real),
+                                                            ve_types.Sequence4(ve_types.Real)),
+                                            "vertex position (units: eye coordinates)"),
+                               'depth_test':(True,
+                                             ve_types.Boolean,
+                                             "perform depth test?"),
+                               }
+
+    def draw(self):
+        p = self.parameters
+        if p.texture != self._using_texture: # self._using_texture is from TextureStimulusBaseClass
+            self._reload_texture()
+        if p.on:
+            if p.depth_test:
+                gl.glEnable(gl.GL_DEPTH_TEST)
+            else:
+                gl.glDisable(gl.GL_DEPTH_TEST)
+
+            gl.glEnable(gl.GL_TEXTURE_2D)
+            gl.glBindTexture(gl.GL_TEXTURE_2D,self.texture_object.gl_id)
+            gl.glColor4f(1,1,1,1) # set fragment color to white
+
+            if not self.constant_parameters.mipmaps_enabled:
+                if p.texture_min_filter in TextureStimulusBaseClass._mipmap_modes:
+                    raise RuntimeError("Specified a mipmap mode in texture_min_filter, but mipmaps not enabled.")
+            self.texture_object.set_min_filter( p.texture_min_filter )
+            self.texture_object.set_mag_filter( p.texture_mag_filter )
+            self.texture_object.set_wrap_mode_s( p.texture_wrap_s )
+            self.texture_object.set_wrap_mode_t( p.texture_wrap_t )
+
+            # allow max_alpha value to control blending
+            gl.glEnable( gl.GL_BLEND )
+            gl.glBlendFunc( gl.GL_SRC_ALPHA, gl.GL_ONE_MINUS_SRC_ALPHA )
+            gl.glTexEnvi(gl.GL_TEXTURE_ENV, gl.GL_TEXTURE_ENV_MODE, gl.GL_MODULATE)
+
+            tex = self.parameters.texture
+            tex.update()
+
+            gl.glBegin(gl.GL_QUADS)
+            gl.glTexCoord2f(tex.buf_lf,tex.buf_bf)
+            gl.glVertex(*p.lowerleft)
+
+            gl.glTexCoord2f(tex.buf_rf,tex.buf_bf)
+            gl.glVertex(*p.lowerright)
+
+            gl.glTexCoord2f(tex.buf_rf,tex.buf_tf)
+            gl.glVertex(*p.upperright)
+
+            gl.glTexCoord2f(tex.buf_lf,tex.buf_tf)
+            gl.glVertex(*p.upperleft)
+            gl.glEnd() # GL_QUADS
+
+####################################################################
+#
+#        Stimulus - Spinning Drum
+#
+####################################################################
+
+class SpinningDrum(TextureStimulusBaseClass):
+    """Panoramic image texture mapped onto flat rectangle or 3D cylinder.
+
+
+    Parameters
+    ==========
+    anchor                -- only used when flat: same as anchor parameter of TextureStimulus (String)
+                             Default: center
+    angular_position      -- may be best to clamp in range [0.0,360.0] (Real)
+                             Default: 0.0
+    contrast              -- (Real)
+                             Default: 1.0
+    drum_center_azimuth   -- changes orientation of drum in space (Real)
+                             Default: 0.0
+    drum_center_elevation -- changes orientation of drum in space (Real)
+                             Default: 0.0
+    flat                  -- toggles flat vs. cylinder (Boolean)
+                             Default: False
+    flat_size             -- defaults to texture data size (units: eye coordinates) (Sequence2 of Real)
+                             Default: (determined at runtime)
+    flip_image            -- toggles normal vs. horizonally flipped image (Boolean)
+                             Default: False
+    height                -- height of cyliner, automatically set by texel aspect ratio if < 0. (Real)
+                             Default: -1
+    num_sides             -- (UnsignedInteger)
+                             Default: 50
+    on                    -- (Boolean)
+                             Default: True
+    orientation           -- 0=right, 90=up (Real)
+                             Default: 0.0
+    position              -- 3D: position of drum center, 2D (flat): same as position parameter for TextureStimulus (AnyOf(Sequence2 of Real or Sequence3 of Real))
+                             Default: (0.0, 0.0, 0.0)
+    radius                -- radius if cylinder (not used if flat) (Real)
+                             Default: 1.0
+    texture               -- source of texture data (Instance of <class 'VisionEgg.Textures.Texture'>)
+                             Inherited from TextureStimulusBaseClass
+                             Default: (determined at runtime)
+    texture_mag_filter    -- OpenGL filter enum (Integer)
+                             Inherited from TextureStimulusBaseClass
+                             Default: GL_LINEAR (9729)
+    texture_min_filter    -- OpenGL filter enum (Integer)
+                             Inherited from TextureStimulusBaseClass
+                             Default: (GL enum determined at runtime)
+    texture_wrap_s        -- OpenGL texture wrap enum (Integer)
+                             Inherited from TextureStimulusBaseClass
+                             Default: (GL enum determined at runtime)
+    texture_wrap_t        -- OpenGL texture wrap enum (Integer)
+                             Inherited from TextureStimulusBaseClass
+                             Default: (GL enum determined at runtime)
+
+    Constant Parameters
+    ===================
+    internal_format   -- format with which OpenGL uses texture data (OpenGL data type enum) (Integer)
+                         Default: GL_RGB (6407)
+    mipmaps_enabled   -- Are mipmaps enabled? (Boolean)
+                         Default: True
+    shrink_texture_ok -- Allow automatic shrinking of texture if too big? (Boolean)
+                         Default: False
+    """
+
+    parameters_and_defaults = {
+        'on':(True,
+              ve_types.Boolean),
+        'height':(-1,
+                  ve_types.Real,
+                  'height of cyliner, automatically set by texel aspect ratio if < 0.',
+                  ),
+        'num_sides':(50,
+                     ve_types.UnsignedInteger),
+        'angular_position':(0.0, # may be best to clamp [0.0,360.0]
+                            ve_types.Real,
+                            'may be best to clamp in range [0.0,360.0]'),
+        'contrast':(1.0,
+                    ve_types.Real),
+        'flat':(False,
+                ve_types.Boolean,
+                'toggles flat vs. cylinder'),
+        'flat_size':(None,
+                     ve_types.Sequence2(ve_types.Real),
+                     "defaults to texture data size (units: eye coordinates)"),
+        'flip_image':(False,
+                      ve_types.Boolean,
+                      'toggles normal vs. horizonally flipped image'),
+        'radius':(1.0,
+                  ve_types.Real,
+                  'radius if cylinder (not used if flat)'),
+        'position':( (0.0,0.0,0.0),
+                     ve_types.AnyOf(ve_types.Sequence2(ve_types.Real),
+                                    ve_types.Sequence3(ve_types.Real)),
+                     '3D: position of drum center, 2D (flat): same as position parameter for TextureStimulus'),
+        'anchor':( 'center',
+                   ve_types.String,
+                   'only used when flat: same as anchor parameter of TextureStimulus',
+                   ),
+        'drum_center_azimuth':(0.0,
+                               ve_types.Real,
+                               'changes orientation of drum in space',
+                               ),
+        'drum_center_elevation':(0.0,
+                                 ve_types.Real,
+                                 'changes orientation of drum in space'),
+        'orientation':(0.0,
+                       ve_types.Real,
+                       '0=right, 90=up'),
+        }
+
+    __slots__ = (
+        'cached_display_list_normal',
+        'cached_display_list_mirror',
+        'cached_display_list_num_sides',
+        'cached_display_list_radius',
+        'cached_display_list_height',
+        'texture_stimulus',
+        )
+
+    def __init__(self,**kw):
+        TextureStimulusBaseClass.__init__(self,**kw)
+        self.cached_display_list_normal = gl.glGenLists(1) # Allocate a new display list
+        self.cached_display_list_mirror = gl.glGenLists(1) # Allocate a new display list
+        self.rebuild_display_list()
+
+    def draw(self):
+    	"""Redraw the stimulus on every frame.
+        """
+        p = self.parameters
+        if p.texture != self._using_texture: # self._using_texture is from TextureStimulusBaseClass
+            self._reload_texture()
+            self.rebuild_display_list()
+        if p.on:
+            # Set OpenGL state variables
+            gl.glEnable( gl.GL_DEPTH_TEST )
+            gl.glEnable( gl.GL_TEXTURE_2D )  # Make sure textures are drawn
+            gl.glEnable( gl.GL_BLEND ) # Contrast control implemented through blending
+
+            # All of the contrast control stuff is somewhat arcane and
+            # not very clear from reading the code, so here is how it
+            # works in English. (Not that it makes it any more clear!)
+            #
+            # In the final "textured fragment" (before being blended
+            # to the framebuffer), the color values are equal to those
+            # of the texture (with the exception of texels around the
+            # edges which have their amplitudes reduced due to
+            # anti-aliasing and are intermediate between the color of
+            # the texture and mid-gray), and the alpha value is set to
+            # the contrast.  Blending occurs, and by choosing the
+            # appropriate values for glBlendFunc, adds the product of
+            # fragment alpha (contrast) and fragment color to the
+            # product of one minus fragment alpha (contrast) and what
+            # was already in the framebuffer.
+
+            gl.glBlendFunc( gl.GL_SRC_ALPHA, gl.GL_ONE_MINUS_SRC_ALPHA )
+
+            gl.glTexEnvi(gl.GL_TEXTURE_ENV, gl.GL_TEXTURE_ENV_MODE, gl.GL_DECAL)
+
+            # clear modelview matrix
+            gl.glMatrixMode(gl.GL_MODELVIEW)
+            gl.glPushMatrix()
+            try:
+                gl.glColor4f(0.5,0.5,0.5,p.contrast) # Set the polygons' fragment color (implements contrast)
+
+                if not self.constant_parameters.mipmaps_enabled:
+                    if p.texture_min_filter in TextureStimulusBaseClass._mipmap_modes:
+                        raise RuntimeError("Specified a mipmap mode in texture_min_filter, but mipmaps not enabled.")
+                self.texture_object.set_min_filter( p.texture_min_filter )
+                self.texture_object.set_mag_filter( p.texture_mag_filter )
+                self.texture_object.set_wrap_mode_s( p.texture_wrap_s )
+                self.texture_object.set_wrap_mode_t( p.texture_wrap_t )
+
+                if p.flat: # draw as flat texture on a rectange
+                    lowerleft = VisionEgg._get_lowerleft(p.position,p.anchor,p.texture.size)
+
+                    translate_vector = p.position
+                    if len(translate_vector) == 2:
+                        translate_vector = translate_vector[0], translate_vector[1], 0
+                    gl.glTranslate(*translate_vector)
+                    gl.glRotatef(p.orientation,0,0,1)
+
+                    if p.flip_image:
+                        raise NotImplementedError("flip_image not yet supported for flat spinning drums.")
+                    w,h = p.texture.size
+
+                    # calculate texture coordinates based on current angle
+                    tex_phase = p.angular_position/360.0 + 0.5 # offset to match non-flat
+                    tex_phase = tex_phase % 1.0 # make 0 <= tex_phase < 1.0
+
+                    TINY = 1.0e-10
+                    tex = p.texture
+                    tex.update()
+
+                    if p.flat_size is None:
+                        size = tex.size
+                    else:
+                        size = p.flat_size
+
+                    l = lowerleft[0] - p.position[0]
+                    r = l + size[0]
+                    b = lowerleft[1] - p.position[1]
+                    t = b + size[1]
+
+                    #tex_phase = 0.0
+                    if tex_phase < TINY: # it's effectively zero
+
+                        gl.glBegin(gl.GL_QUADS)
+                        gl.glTexCoord2f(tex.buf_lf,tex.buf_bf)
+                        gl.glVertex2f(l,b)
+
+                        gl.glTexCoord2f(tex.buf_rf,tex.buf_bf)
+                        gl.glVertex2f(r,b)
+
+                        gl.glTexCoord2f(tex.buf_rf,tex.buf_tf)
+                        gl.glVertex2f(r,t)
+
+                        gl.glTexCoord2f(tex.buf_lf,tex.buf_tf)
+                        gl.glVertex2f(l,t)
+                        gl.glEnd() # GL_QUADS
+
+                    else:
+                        # Convert tex_phase into texture buffer fraction
+                        buf_break_f = ( (tex.buf_rf - tex.buf_lf) * (1.0-tex_phase) ) + tex.buf_lf
+
+                        # Convert tex_phase into object coords value
+                        quad_x_break = (r-l) * tex_phase + l
+    ##                    quad_x_break = w * tex_phase
+
+                        gl.glBegin(gl.GL_QUADS)
+
+                        # First quad
+
+                        gl.glTexCoord2f(buf_break_f,tex.buf_bf)
+                        gl.glVertex2f(l,b)
+
+                        gl.glTexCoord2f(tex.buf_rf,tex.buf_bf)
+                        gl.glVertex2f(quad_x_break,b)
+
+                        gl.glTexCoord2f(tex.buf_rf,tex.buf_tf)
+                        gl.glVertex2f(quad_x_break,t)
+
+                        gl.glTexCoord2f(buf_break_f,tex.buf_tf)
+                        gl.glVertex2f(l,t)
+
+                        # Second quad
+
+                        gl.glTexCoord2f(tex.buf_lf,tex.buf_bf)
+                        gl.glVertex2f(quad_x_break,b)
+
+                        gl.glTexCoord2f(buf_break_f,tex.buf_bf)
+                        gl.glVertex2f(r,b)
+
+                        gl.glTexCoord2f(buf_break_f,tex.buf_tf)
+                        gl.glVertex2f(r,t)
+
+                        gl.glTexCoord2f(tex.buf_lf,tex.buf_tf)
+                        gl.glVertex2f(quad_x_break,t)
+                        gl.glEnd() # GL_QUADS
+
+                else: # draw as cylinder
+                    gl.glTranslatef(p.position[0],p.position[1],p.position[2])
+
+                    # center the drum on new coordinates
+                    gl.glRotatef(p.drum_center_azimuth,0,-1,0)
+                    gl.glRotatef(p.drum_center_elevation,1,0,0)
+
+                    # do the orientation
+                    gl.glRotatef(p.orientation,0,0,1)
+
+                    # turn the coordinate system so we don't have to deal with
+                    # figuring out where to draw the texture relative to drum
+                    gl.glRotatef(p.angular_position,0,-1,0)
+
+                    if ((p.num_sides != self.cached_display_list_num_sides) or
+                        (p.radius != self.cached_display_list_radius) or
+                        (p.height != self.cached_display_list_height)):
+                        self.rebuild_display_list()
+
+                    if not p.flip_image:
+                        gl.glCallList(self.cached_display_list_normal)
+                    else:
+                        gl.glCallList(self.cached_display_list_mirror)
+            finally:
+                gl.glMatrixMode(gl.GL_MODELVIEW)
+                gl.glPopMatrix()
+
+    def rebuild_display_list(self):
+        # (Re)build the display list
+        #
+        # A "display list" is a series of OpenGL commands that is
+        # cached in a list for rapid re-drawing of the same object.
+        #
+        # This draws a display list for an approximation of a cylinder.
+        # The cylinder has "num_sides" sides. The following code
+        # generates a list of vertices and the texture coordinates
+        # to be used by those vertices.
+        r = self.parameters.radius # in OpenGL (arbitrary) units
+        circum = 2.0*math.pi*r
+        tex = self.parameters.texture
+        if self.parameters.height < 0:
+            h = circum/float(tex.size[0])*float(tex.size[1])/2.0
+        else:
+            h = self.parameters.height
+
+        num_sides = self.parameters.num_sides
+        self.cached_display_list_num_sides = num_sides
+        self.cached_display_list_radius = r
+        self.cached_display_list_height = self.parameters.height
+
+        deltaTheta = 2.0*math.pi / num_sides
+        for direction in ['normal','mirror']:
+            if direction == 'normal':
+                gl.glNewList(self.cached_display_list_normal,gl.GL_COMPILE)
+            else:
+                gl.glNewList(self.cached_display_list_mirror,gl.GL_COMPILE)
+            gl.glBegin(gl.GL_QUADS)
+            for i in range(num_sides):
+                # angle of sides
+                theta1 = i*deltaTheta
+                theta2 = (i+1)*deltaTheta
+                # fraction of texture
+                if direction == 'normal':
+                    frac1 = (tex.buf_lf + (float(i)/num_sides*tex.size[0]))/float(tex.size[0])
+                    frac2 = (tex.buf_lf + (float(i+1)/num_sides*tex.size[0]))/float(tex.size[0])
+                else:
+                    j = num_sides-i-1
+                    frac1 = (tex.buf_lf + (float(j+1)/num_sides*tex.size[0]))/float(tex.size[0])
+                    frac2 = (tex.buf_lf + (float(j)/num_sides*tex.size[0]))/float(tex.size[0])
+                # location of sides
+                x1 = r*math.cos(theta1)
+                z1 = r*math.sin(theta1)
+                x2 = r*math.cos(theta2)
+                z2 = r*math.sin(theta2)
+
+                #Bottom left of quad
+                gl.glTexCoord2f(frac1, tex.buf_bf)
+                gl.glVertex4f( x1, -h, z1, 1.0 )
+
+                #Bottom right of quad
+                gl.glTexCoord2f(frac2, tex.buf_bf)
+                gl.glVertex4f( x2, -h, z2, 1.0 )
+                #Top right of quad
+                gl.glTexCoord2f(frac2, tex.buf_tf);
+                gl.glVertex4f( x2,  h, z2, 1.0 )
+                #Top left of quad
+                gl.glTexCoord2f(frac1, tex.buf_tf)
+                gl.glVertex4f( x1,  h, z1, 1.0 )
+            gl.glEnd()
+            gl.glEndList()
+
+class FixationCross(VisionEgg.Core.Stimulus):
+    """Cross useful for fixation point.
+
+    Parameters
+    ==========
+    on       -- (Boolean)
+                Default: True
+    position -- (Sequence2 of Real)
+                Default: (320, 240)
+    size     -- (Sequence2 of Real)
+                Default: (64, 64)
+
+    Constant Parameters
+    ===================
+    texture_size -- (Sequence2 of Real)
+                    Default: (64, 64)
+    """
+
+    parameters_and_defaults = {
+        'on':(True,
+              ve_types.Boolean),
+        'position':((320,240),
+                    ve_types.Sequence2(ve_types.Real)),
+        'size':((64,64),
+                ve_types.Sequence2(ve_types.Real)),
+        }
+    constant_parameters_and_defaults = {
+        'texture_size':((64,64),
+                        ve_types.Sequence2(ve_types.Real)),
+        }
+
+    __slots__ = (
+        'texture_stimulus',
+        )
+
+    def __init__(self,**kw):
+        VisionEgg.Core.Stimulus.__init__(self,**kw)
+        s = self.constant_parameters.texture_size
+        mid_x = s[0]/2.0
+        mid_y = s[1]/2.0
+        texels = Image.new("RGBX",s,(0,0,0,0))
+        texels_draw = ImageDraw.Draw(texels)
+        texels_draw.rectangle( (mid_x-1, 0, mid_x+1, s[1]), fill=(0,0,0,255) )
+        texels_draw.rectangle( (0, mid_y-1, s[0], mid_y+1), fill=(0,0,0,255) )
+        texels_draw.line( (mid_x, 0, mid_x, s[1]), fill=(255,255,255,255) )
+        texels_draw.line( (0, mid_y, s[0], mid_y), fill=(255,255,255,255) )
+        self.texture_stimulus = TextureStimulus( texture = Texture(texels),
+                                                 position = self.parameters.position,
+                                                 anchor = 'center',
+                                                 size = self.parameters.size,
+                                                 internal_format = gl.GL_RGBA,
+                                                 mipmaps_enabled = False,
+                                                 texture_min_filter = gl.GL_NEAREST,
+                                                 texture_mag_filter = gl.GL_NEAREST,
+                                                 )
+    def draw(self):
+        contained = self.texture_stimulus.parameters #shorthand
+        my = self.parameters #shorthand
+        contained.position = my.position
+        contained.size = my.size
+        contained.on = my.on
+        self.texture_stimulus.draw()
+
+class TextureTooLargeError( RuntimeError ):
+    pass
diff --git a/VisionEgg/ThreeDeeMath.py b/VisionEgg/ThreeDeeMath.py
new file mode 100644
index 0000000..43096a7
--- /dev/null
+++ b/VisionEgg/ThreeDeeMath.py
@@ -0,0 +1,97 @@
+# The Vision Egg: ThreeDeeMath
+#
+# Copyright (C) 2001-2003 Andrew Straw.
+# Copyright (C) 2008 California Institute of Technology
+#
+# URL: <http://www.visionegg.org/>
+#
+# Distributed under the terms of the GNU Lesser General Public License
+# (LGPL). See LICENSE.TXT that came with this file.
+
+"""
+Vertex and matrix operations - simulate OpenGL transforms.
+
+"""
+
+import math
+import numpy
+import numpy.oldnumeric as Numeric, numpy.oldnumeric.mlab as MLab
+
+def make_homogeneous_coord_rows(v):
+    """Convert vertex (or row-wise vertices) into homogeneous coordinates."""
+    v = Numeric.array(v,typecode=Numeric.Float) # copy
+    if len(v.shape) == 1:
+        v = v[Numeric.NewAxis,:] # make a rank-2 array
+    if v.shape[1] == 3:
+        ws = Numeric.ones((v.shape[0],1),typecode=Numeric.Float)
+        v = Numeric.concatenate( (v,ws), axis=1 )
+    return v
+
+def normalize_homogeneous_rows(v):
+    v = Numeric.asarray(v)
+    homog = make_homogeneous_coord_rows(v)
+    r = (homog/homog[:,3,Numeric.NewAxis])[:,:3]
+    if len(homog.shape) > len(v.shape):
+        r = Numeric.reshape(r,(3,))
+    return r
+
+class TransformMatrix:
+    def __init__(self,matrix=None):
+        if matrix is None:
+            self.matrix = MLab.eye(4,typecode=Numeric.Float)
+        else:
+            self.matrix = matrix
+
+    def __make_normalized_vert3(self, x, y, z ):
+        mag = math.sqrt( x**2 + y**2 + z**2 )
+        return Numeric.array((x,y,z))/mag
+
+    def rotate(self, angle_degrees, axis_x, axis_y, axis_z ):
+        """Follows the right hand rule.
+
+        I visualize the right hand rule most easily as follows:
+        Naturally, using your right hand, wrap it around the axis of
+        rotation. Your fingers now point in the direction of rotation.
+
+        """
+        angleRadians = angle_degrees / 180.0 * math.pi
+        u = self.__make_normalized_vert3(axis_x, axis_y, axis_z )
+        u=-u #follow right hand rule
+        S = Numeric.zeros( (3,3), Numeric.Float )
+        S[0,1] = -u[2]
+        S[0,2] = u[1]
+        S[1,0] = u[2]
+        S[1,2] = -u[0]
+        S[2,0] = -u[1]
+        S[2,1] = u[0]
+        U = Numeric.outerproduct(u,u)
+        R = U + math.cos(angleRadians)*(MLab.eye(3)-U) + math.sin(angleRadians)*S
+        R = Numeric.concatenate( (R,Numeric.zeros( (3,1), Numeric.Float)), axis=1)
+        R = Numeric.concatenate( (R,Numeric.zeros( (1,4), Numeric.Float)), axis=0)
+        R[3,3] = 1.0
+        self.matrix = numpy.dot(R,self.matrix)
+
+    def translate(self, x, y, z):
+        T = MLab.eye(4,typecode=Numeric.Float)
+        T[3,0] = x
+        T[3,1] = y
+        T[3,2] = z
+        self.matrix = numpy.dot(T,self.matrix)
+
+    def scale(self, x, y, z):
+        T = MLab.eye(4,typecode=Numeric.Float)
+        T[0,0] = x
+        T[1,1] = y
+        T[2,2] = z
+        self.matrix = numpy.dot(T,self.matrix)
+
+    def get_matrix(self):
+        return self.matrix
+
+    def transform_vertices(self,verts):
+        v = Numeric.asarray(verts)
+        homog = make_homogeneous_coord_rows(v)
+        r = numpy.dot(homog,self.matrix)
+        if len(homog.shape) > len(v.shape):
+            r = Numeric.reshape(r,(4,))
+        return r
diff --git a/VisionEgg/VisionEgg.cfg b/VisionEgg/VisionEgg.cfg
new file mode 100644
index 0000000..1b116c1
--- /dev/null
+++ b/VisionEgg/VisionEgg.cfg
@@ -0,0 +1,116 @@
+# This is the default Vision Egg configuration file
+# Edit these values to something appropriate for your
+# system.
+
+[General]
+# Use a GUI to configure window/screen parameters
+VISIONEGG_GUI_INIT = 1
+
+# What will the monitor's vertical refresh rate be when initialized
+# into this video mode?  IMPORTANT - The VisionEgg has no way to
+# access this value or set it.  If frame rate is significant in
+# calculating your stimulus presentations, set this value to what the
+# display gives you.
+VISIONEGG_MONITOR_REFRESH_HZ = 60.0
+
+# Attempt to synchronize buffer swaps with vertical retrace?  This is
+# necessary for controlling stimuli on a frame-by-frame basis and
+# prevents "tearing" of the display. Not implemented on all platforms,
+# and on Windows, this can be set from the Display control panel.
+VISIONEGG_SYNC_SWAP = 1
+
+# Screen width/height
+VISIONEGG_SCREEN_W = 640
+VISIONEGG_SCREEN_H = 480
+
+# Number of samples for full-screen anti-aliasing (0 = No FSAA)
+VISIONEGG_MULTISAMPLE_SAMPLES = 0
+
+# Use fullscreen?
+VISIONEGG_FULLSCREEN = 0
+
+# Automatically call VisionEgg.start_default_logging() and watch_exceptions()
+VISIONEGG_ALWAYS_START_LOGGING = 0
+
+# Source of gamma information
+VISIONEGG_GAMMA_SOURCE = none
+
+# Only used if VISIONEGG_GAMMA_SOURCE is "invert"
+VISIONEGG_GAMMA_INVERT_RED = 2.1
+VISIONEGG_GAMMA_INVERT_GREEN = 2.1
+VISIONEGG_GAMMA_INVERT_BLUE = 2.1
+
+# Only used if VISIONEGG_GAMMA_SOURCE is "file"
+VISIONEGG_GAMMA_FILE = custom.ve_gamma
+
+# Make the mouse cursor invisible
+VISIONEGG_HIDE_MOUSE = 1
+
+# Open a window without a surrounding frame?
+VISIONEGG_FRAMELESS_WINDOW = 0
+
+# Request maximum priority from the OS?  Only supported on some
+# platforms, only necessary on some platforms.
+VISIONEGG_MAXPRIORITY = 0
+
+# Request framebuffer depth, channel by channel.  The more bits the
+# better, especially on the RGB channels. The Vision Egg specifies
+# color in floating point values, and OpenGL quantizes this color
+# depth.
+
+VISIONEGG_REQUEST_RED_BITS = 8
+VISIONEGG_REQUEST_GREEN_BITS = 8
+VISIONEGG_REQUEST_BLUE_BITS = 8
+VISIONEGG_REQUEST_ALPHA_BITS = 0
+
+# Request OpenGL stereo
+
+VISIONEGG_REQUEST_STEREO = 0
+
+# Is it OK to ever open a GUI window with Tkinter?
+VISIONEGG_TKINTER_OK = 1
+
+# Threshold for message printing -- decrease to print more
+VISIONEGG_MESSAGE_LEVEL = 1
+
+# Log to the console? Log messages can still go to the log file.
+VISIONEGG_LOG_TO_STDERR = 1
+
+# Where is the log file saved? This can be an absolute path. If this
+# is set to nothing ("" without the quotes), no log file is used (but
+# the log messages can still go to the console.)
+VISIONEGG_LOG_FILE = VisionEgg.log
+
+# Do errors open a GUI window or only to the log file?
+VISIONEGG_GUI_ON_ERROR = 1
+
+# Use double buffering
+VISIONEGG_DOUBLE_BUFFER = 1
+
+# Look for SyncLync USB device?
+SYNCLYNC_PRESENT = 0
+
+[darwin]
+# This determines whether conventional priority setting is used or the
+# Mach realtime method.
+VISIONEGG_DARWIN_MAXPRIORITY_CONVENTIONAL_NOT_REALTIME = 1
+
+# The lower this value, the higher the priority.
+VISIONEGG_DARWIN_CONVENTIONAL_PRIORITY = -20
+
+# These variables are used to set the thread policy for the Vision Egg
+# See this URL for more info:
+# http://developer.apple.com/techpubs/macosx/Darwin/General/KernelProgramming/scheduler/Using_Mach__pplications.html
+VISIONEGG_DARWIN_REALTIME_PERIOD_DENOM = 120
+VISIONEGG_DARWIN_REALTIME_COMPUTATION_DENOM = 2400
+VISIONEGG_DARWIN_REALTIME_CONSTRAINT_DENOM = 1200
+VISIONEGG_DARWIN_REALTIME_PREEMPTIBLE = 0
+
+# This value can be "max" (without the quotes) or a number
+VISIONEGG_DARWIN_PTHREAD_PRIORITY = max
+
+[win32]
+# No win32 specific options in this release
+
+[linux2]
+# No linux specific options in this release
diff --git a/VisionEgg/WrappedText.py b/VisionEgg/WrappedText.py
new file mode 100644
index 0000000..9125673
--- /dev/null
+++ b/VisionEgg/WrappedText.py
@@ -0,0 +1,152 @@
+#!/usr/bin/env python
+"""Module containing the Multi-line text stimulus class WrappedText, as well
+as a simple example of its use."""
+# Copyright (c) 2007 Eamon Caddigan, University of Illinois
+# License: LGPL (see LICENSE.txt distributed with this file)
+# Created on 2007-11-15
+# 
+# TODO: (more of a wishlist)
+#   * anchor parameter
+#   * angle parameter (I dunno, maybe you want some paragraphs tilted)
+#   * more robust line length calculation
+#   * wholesale replacement of this module with *real* formatted text (e.g.,
+#     ghostscript). The kerning of pygame's text is atrocious.
+
+import VisionEgg.Core
+import VisionEgg.Text
+import VisionEgg.Textures
+import VisionEgg.ParameterTypes as ve_types
+import textwrap
+
+class WrappedText(VisionEgg.Core.Stimulus):
+  """Multi-line text stimulus. No fancy formatting, but line breaks ('\\n')
+  are preserved, and text is wrapped to fit within the stimulus
+  boundaries."""
+
+  parameters_and_defaults = {
+    'on':(True, ve_types.Boolean),
+    'position':((0.0,0.0), 
+        ve_types.AnyOf(ve_types.Sequence2(ve_types.Real),
+          ve_types.Sequence3(ve_types.Real),
+          ve_types.Sequence4(ve_types.Real))),
+    'size':(None, ve_types.Sequence2(ve_types.Real),
+        """Defaults to the size of the screen."""),
+    'text':('hello', ve_types.AnyOf(ve_types.String,ve_types.Unicode)),
+    'color':((1.0,1.0,1.0),
+        ve_types.AnyOf(ve_types.Sequence3(ve_types.Real),
+          ve_types.Sequence4(ve_types.Real)))
+  }
+
+  constant_parameters_and_defaults = {
+    'font_name':(None, ve_types.AnyOf(ve_types.String,ve_types.Unicode),
+        "Name of font to use. If None, use the default font"),
+    'font_size':(30, ve_types.UnsignedInteger)
+  }
+
+  def __init__(self, **kw):
+    """Initialize the object, perform the initial line-splitting"""
+    VisionEgg.Core.Stimulus.__init__(self, **kw)
+
+    if self.parameters.size is None:
+      self.parameters.size = (VisionEgg.config.VISIONEGG_SCREEN_W,
+          VisionEgg.config.VISIONEGG_SCREEN_H)
+
+    self._splitText()
+
+  def _splitText(self):
+    """Split a single string into multiple lines of text, storing each as a
+    VisionEgg.Text.Text instance"""
+    p = self.parameters
+    cp = self.constant_parameters
+
+    self._text = p.text
+
+    textAreaWidth = None
+    maxLineLength = len(self._text)
+    minLineLength = 1
+    lineLength = maxLineLength
+    while ((textAreaWidth > p.size[0]) or 
+        ((maxLineLength-minLineLength) > 1)) and (maxLineLength > 1):
+      nextPosition = p.position
+      self._textLines = []
+
+      try:
+        textLineList = []
+        for text in self._text.split("\n"):
+          if text == "":
+            textLineList.append("")
+          else:
+            textLineList.extend(textwrap.wrap(text, lineLength))
+
+        textAreaWidth = None
+        for textLine in textLineList:
+          if textLine != "":
+            line = VisionEgg.Text.Text(text=textLine,
+                position = nextPosition,
+                anchor = "upperleft",
+                ignore_size_parameter = True,
+                color = p.color,
+                font_name = cp.font_name,
+                font_size = cp.font_size)
+            textAreaWidth = max(textAreaWidth, line.parameters.size[0])
+            self._textLines.append(line)
+
+          nextPosition = (nextPosition[0],
+              nextPosition[1]-line.parameters.size[1])
+
+          # Stop adding lines if the text area's height has been reached
+          if (p.position[1] - nextPosition[1]) > p.size[1]:
+            break
+
+      except VisionEgg.Textures.TextureTooLargeError:
+        textAreaWidth = p.size[0]+1
+
+      if textAreaWidth > p.size[0]:
+        maxLineLength = lineLength
+      else:
+        minLineLength = lineLength
+      lineLength = (maxLineLength+minLineLength)/2
+
+  def draw(self):
+    """Draw the lines of text on the screen"""
+    p = self.parameters
+
+    if p.on:
+      if p.text != self._text:
+        self._splitText()
+
+      for line in self._textLines:
+        line.parameters.color = p.color
+        line.draw()
+
+def main():
+  """Launch VisionEgg and demo the WrappedText object"""
+  import VisionEgg
+  VisionEgg.start_default_logging(); VisionEgg.watch_exceptions()
+  import VisionEgg.FlowControl
+
+  screen = VisionEgg.Core.get_default_screen()
+
+  message="""Hello.
+
+This is a demonstration of the WrappedText object, which was created to allow users of VisionEgg to include large blocks of text in their programs. While this stimulus has many limitations, it should be useful for presenting on-screen instructions in experiments.
+
+While you are welcome to modify this file to extend its functionality, I hope you consider sharing any such modifications with the VisionEgg community.
+
+Eamon Caddigan,\nUniversity of Illinois\n15 November 2007"""
+
+  wt = WrappedText(text=message, position=(50,screen.size[1]-50), 
+    size=(screen.size[0]-100, screen.size[1]-100))
+
+  viewport = VisionEgg.Core.Viewport(screen=screen, stimuli=[wt])
+
+  # Frame-based presentation duration makes it easier to use pdb
+  p = VisionEgg.FlowControl.Presentation(viewports=[viewport],
+      go_duration=(VisionEgg.config.VISIONEGG_MONITOR_REFRESH_HZ*30,'frames'))
+  p.go()
+
+  screen.close() # Called explicitly to behave better in interactive shells
+
+if __name__ == "__main__":
+  main()
+
diff --git a/VisionEgg/__init__.py b/VisionEgg/__init__.py
new file mode 100644
index 0000000..6374b00
--- /dev/null
+++ b/VisionEgg/__init__.py
@@ -0,0 +1,513 @@
+# The Vision Egg
+#
+# Copyright (C) 2001-2004 Andrew Straw
+# Copyright (C) 2004-2009 California Institute of Technology
+#
+# URL: <http://www.visionegg.org/>
+#
+# Distributed under the terms of the GNU Lesser General Public License
+# (LGPL). See LICENSE.TXT that came with this file.
+#
+
+"""
+The Vision Egg package.
+
+The Vision Egg is a programming library (with demo applications) that
+uses standard, inexpensive computer graphics cards to produce visual
+stimuli for vision research experiments.
+
+Today's consumer computer graphics cards, thanks to the demands of
+computer gamers, are capable of drawing and updating computer graphics
+suitable for producing research-quality visual stimuli. The Vision Egg
+allows the vision scientist (or anyone else) to program these cards
+using OpenGL, the standard in computer graphics
+programming. Potentially difficult tasks, such as initializing
+graphics, getting precise timing information, controlling stimulus
+parameters in real-time, and synchronizing with data acquisition are
+greatly eased by routines within the Vision Egg.
+
+See the 'Core' module for the fundamental Vision Egg classes.
+
+"""
+release_name = '1.2.1' # keep in sync with ../setup.py
+
+__version__ = release_name
+
+import VisionEgg.Configuration
+import VisionEgg.ParameterTypes as ve_types
+import os, sys, time, types # standard python modules
+import numpy
+import numpy.oldnumeric as Numeric
+import warnings
+import traceback
+import StringIO
+
+import logging  # available in Python 2.3
+import logging.handlers
+
+if not hasattr(Numeric,'UInt8'):
+    Numeric.UInt8 = 'b'
+if not hasattr(Numeric,'Float32'):
+    Numeric.UInt8 = 'f'
+
+# Make sure we don't have an old version of the VisionEgg installed.
+# (There used to be a module named VisionEgg.VisionEgg.  If it still
+# exists, it will randomly crash things.)
+if not hasattr(sys,'frozen'):
+    # don't do this if frozen:
+    try:
+        __import__('VisionEgg.VisionEgg')
+    except ImportError:
+        pass # It's OK, the old version isn't there
+    else:
+        # If we can import it, report error
+        raise RuntimeError('Outdated "VisionEgg.py" and/or "VisionEgg.pyc" found.  Please delete from your VisionEgg package directory.')
+
+############# Get config defaults #############
+config = VisionEgg.Configuration.Config()
+
+############# Logging #############
+
+logger = logging.getLogger('VisionEgg')
+logger.setLevel( logging.INFO )
+log_formatter = logging.Formatter('%(asctime)s (%(process)d) %(levelname)s: %(message)s')
+_default_logging_started = False
+
+def start_default_logging(maxBytes=100000):
+    """Create and add log handlers"""
+    global _default_logging_started
+    if _default_logging_started:
+        return # default logging already started
+
+    if config.VISIONEGG_LOG_TO_STDERR:
+        log_handler_stderr = logging.StreamHandler()
+        log_handler_stderr.setFormatter( log_formatter )
+        logger.addHandler( log_handler_stderr )
+
+    if config.VISIONEGG_LOG_FILE:
+        if hasattr(logging, 'handlers'):
+            log_handler_logfile = logging.handlers.RotatingFileHandler( config.VISIONEGG_LOG_FILE,
+                                                                        maxBytes=maxBytes )
+        else:
+            log_handler_logfile = logging.FileHandler( config.VISIONEGG_LOG_FILE )
+        log_handler_logfile.setFormatter( log_formatter )
+        logger.addHandler( log_handler_logfile )
+
+    script_name = sys.argv[0]
+    if not script_name:
+        script_name = "(interactive shell)"
+    logger.info("Script "+script_name+" started Vision Egg %s with process id %d."%(VisionEgg.release_name,os.getpid()))
+    _default_logging_started = True
+
+
+############# Default exception handler #############
+
+if not sys.argv[0]: # Interactive mode
+    config.VISIONEGG_GUI_ON_ERROR = 0
+
+class _ExceptionHookKeeper:
+    def handle_exception(self, exc_type, exc_value, exc_traceback):
+        global config
+
+        traceback_stream = StringIO.StringIO()
+        traceback.print_exception(exc_type,exc_value,exc_traceback,None,traceback_stream)
+        traceback_stream.seek(0)
+
+        try:
+            # don't send to stderr here (original exception handler does it)
+            logger.removeHandler( log_handler_stderr )
+            removed_stderr = True
+        except:
+            removed_stderr = False
+
+        logger.critical(traceback_stream.read())
+
+        if removed_stderr:
+            logger.addHandler( log_handler_stderr )
+
+        if config is not None:
+            if config.VISIONEGG_GUI_ON_ERROR and config.VISIONEGG_TKINTER_OK:
+                # Should really check if any GUI windows are open and only do this then
+
+                # close any open screens
+                if hasattr(config,'_open_screens'):
+                    for screen in config._open_screens:
+                        screen.close()
+
+                traceback_stream = StringIO.StringIO()
+                traceback.print_tb(exc_traceback,None,traceback_stream)
+                traceback_stream.seek(0)
+
+                pygame_bug_workaround = False # do we need to workaround pygame bug?
+                if hasattr(config,"_pygame_started"):
+                    if config._pygame_started:
+                        pygame_bug_workaround = True
+                if sys.platform.startswith('linux'): # doesn't affect linux for some reason
+                    pygame_bug_workaround = False
+                if not pygame_bug_workaround:
+                    if hasattr(config,'_Tkinter_used'):
+                        if config._Tkinter_used:
+                            import GUI
+                            GUI.showexception(exc_type, exc_value, traceback_stream.getvalue())
+
+        # continue on with normal exception processing:
+        __keep_config__ = config # bizarre that the exception handler changes our values...
+        self.orig_hook(exc_type, exc_value, exc_traceback)
+        config = __keep_config__ # but we work around it!
+
+    def __init__(self):
+        self._sys = sys # preserve ref to sys module
+        self.orig_hook = self._sys.excepthook # keep copy
+        sys.excepthook = self.handle_exception
+
+    def __del__(self):
+        self._sys.excepthook = self.orig_hook # restore original
+
+def watch_exceptions():
+    """Catch exceptions, log them, and optionally open GUI."""
+    global _exception_hook_keeper
+    _exception_hook_keeper = _ExceptionHookKeeper()
+
+def stop_watching_exceptions():
+    """Stop catching exceptions, returning to previous state."""
+    global _exception_hook_keeper
+    del _exception_hook_keeper
+
+if config.VISIONEGG_ALWAYS_START_LOGGING:
+    start_default_logging()
+    watch_exceptions()
+    if len(config._delayed_configuration_log_warnings) != 0:
+        logger = logging.getLogger('VisionEgg.Configuration')
+        for msg in config._delayed_configuration_log_warnings:
+            logger.warning( msg )
+
+############ A base class finder utility function ###########
+
+def recursive_base_class_finder(klass):
+    """A function to find all base classes."""
+    result = [klass]
+    for base_class in klass.__bases__:
+        for base_base_class in recursive_base_class_finder(base_class):
+            result.append(base_base_class)
+    # Make only a single copy of each class found
+    result2 = []
+    for r in result:
+        if r not in result2:
+            result2.append(r)
+    return result2
+
+############# Setup timing functions #############
+
+if sys.platform == "win32":
+    # on win32, time.clock() theoretically has better resolution than time.time()
+    true_time_func = time.clock
+else:
+    true_time_func = time.time
+    # XXX Possible To-Do:
+    #  On MacOSX use AudioGetCurrentHostTime() and
+    #  AudioConvertHostTimeToNanos() #
+
+config._FRAMECOUNT_ABSOLUTE = 0 # initialize global variable
+def time_func_locked_to_frames():
+    return config._FRAMECOUNT_ABSOLUTE / float(config.VISIONEGG_MONITOR_REFRESH_HZ)
+
+time_func = true_time_func # name of time function Vision Egg programs should use
+
+def set_time_func_to_true_time():
+    time_func = true_time_func
+
+def set_time_func_to_frame_locked():
+    time_func = time_func_locked_to_frames
+
+def timing_func():
+    """DEPRECATED.  Use time_func instead"""
+    warnings.warn("timing_func() has been changed to time_func(). "
+                  "This warning will only be issued once, but each call to "
+                  "timing_func() will be slower than if you called time_func() "
+                  "directly", DeprecationWarning, stacklevel=2)
+    return time_func()
+
+####################################################################
+#
+#        Parameters
+#
+####################################################################
+
+class Parameters:
+    """Parameter container.
+
+    Simple empty class to act something like a C struct."""
+    pass
+
+class ParameterDefinition( dict ):
+    """Define parameters used in ClassWithParameters
+    """
+    DEPRECATED = 1
+    OPENGL_ENUM = 2
+
+class ClassWithParameters( object ):
+    """Base class for any class that uses parameters.
+
+    Any class that uses parameters potentially modifiable in realtime
+    should be a subclass of ClassWithParameters.  This class enforces
+    type checking and sets default values.
+
+    Any subclass of ClassWithParameters can define two class (not
+    instance) attributes, "parameters_and_defaults" and
+    "constant_parameters_and_defaults". These are dictionaries where
+    the key is a string containing the name of the parameter and the
+    the value is a tuple of length 2 containing the default value and
+    the type.  For example, an acceptable dictionary would be
+    {"parameter1" : (1.0, ve_types.Real)}
+
+    See the ParameterTypes module for more information about types.
+
+    """
+
+    parameters_and_defaults = ParameterDefinition({}) # empty for base class
+    constant_parameters_and_defaults = ParameterDefinition({}) # empty for base class
+
+    __slots__ = ('parameters','constant_parameters') # limit access only to specified attributes
+
+    def __getstate__(self):
+        """support for being pickled"""
+        result = {}
+        classes = recursive_base_class_finder(self.__class__)
+        for klass in classes:
+            if hasattr(klass,'__slots__'):
+                for attr in klass.__slots__:
+                    if hasattr(self,attr):
+                        result[attr] = getattr(self,attr)
+        return result
+
+    def __setstate__(self,dict):
+        """support for being unpickled"""
+        for attr in dict.keys():
+            setattr(self,attr,dict[attr])
+
+    __safe_for_unpickling__ = True # tell python 2.2 we know what we're doing
+
+    def __init__(self,**kw):
+        """Create self.parameters and set values."""
+        self.constant_parameters = Parameters() # create self.constant_parameters
+        self.parameters = Parameters() # create self.parameters
+
+        # Get a list of all classes this instance is derived from
+        classes = recursive_base_class_finder(self.__class__)
+
+        done_constant_parameters_and_defaults = []
+        done_parameters_and_defaults = []
+        done_kw = []
+
+        # Fill self.parameters with parameter names and set to default values
+        for klass in classes:
+            if klass == object:
+                continue # base class of new style classes - ignore
+            # Create self.parameters and set values to keyword argument if found,
+            # otherwise to default value.
+            #
+            # If a class didn't override base class's parameters_and_defaults dictionary, don't deal with it twice
+            if hasattr(klass, 'parameters_and_defaults') and klass.parameters_and_defaults not in done_parameters_and_defaults:
+                for parameter_name in klass.parameters_and_defaults.keys():
+                    # Make sure this parameter key/value pair doesn't exist already
+                    if hasattr(self.parameters,parameter_name):
+                        raise ValueError("More than one definition of parameter '%s'"%parameter_name)
+                    # Get default value and the type
+                    value,tipe = klass.parameters_and_defaults[parameter_name][:2]
+                    # Check tipe is valid
+                    if not ve_types.is_parameter_type_def(tipe):
+                        raise ValueError("In definition of parameter '%s', %s is not a valid type declaration."%(parameter_name,tipe))
+                    # Was a non-default value passed for this parameter?
+                    if kw.has_key(parameter_name):
+                        value = kw[parameter_name]
+                        done_kw.append(parameter_name)
+                    # Allow None to pass as acceptable value -- lets __init__ set own defaults
+                    if value is not None:
+                        # Check anything other than None
+                        if not tipe.verify(value):
+                            print 'parameter_name',parameter_name
+                            print 'value',value
+                            print 'type value',type(value)
+                            print 'isinstance(value, numpy.ndarray)',isinstance(value, numpy.ndarray)
+                            print 'tipe',tipe
+
+                            if not isinstance(value, numpy.ndarray):
+                                value_str = str(value)
+                            else:
+                                if Numeric.multiply.reduce(value.shape) < 10:
+                                    value_str = str(value) # print array if it's smallish
+                                else:
+                                    value_str = "(array data)" # don't pring if it's big
+                            raise TypeError("Parameter '%s' value %s is type %s (not type %s) in %s"%(parameter_name,value_str,type(value),tipe,self))
+                    setattr(self.parameters,parameter_name,value)
+                done_parameters_and_defaults.append(klass.parameters_and_defaults)
+
+            # Same thing as above for self.constant_parameters:
+            #
+            # Create self.constant_parameters and set values to keyword argument if found,
+            # otherwise to default value.
+            #
+            # If a class didn't override base class's parameters_and_defaults dictionary, don't deal with it twice
+            if hasattr(klass, 'constant_parameters_and_defaults') and klass.constant_parameters_and_defaults not in done_constant_parameters_and_defaults:
+                for parameter_name in klass.constant_parameters_and_defaults.keys():
+                    # Make sure this parameter key/value pair doesn't exist already
+                    if hasattr(self.parameters,parameter_name):
+                        raise ValueError("Definition of '%s' as variable parameter and constant parameter."%parameter_name)
+                    if hasattr(self.constant_parameters,parameter_name):
+                        raise ValueError("More than one definition of constant parameter '%s'"%parameter_name)
+                    # Get default value and the type
+                    value,tipe = klass.constant_parameters_and_defaults[parameter_name][:2]
+
+                    if not ve_types.is_parameter_type_def(tipe):
+                        raise ValueError("In definition of constant parameter '%s', %s is not a valid type declaration."%(parameter_name,tipe))
+                    # Was a non-default value passed for this parameter?
+                    if kw.has_key(parameter_name):
+                        value = kw[parameter_name]
+                        done_kw.append(parameter_name)
+                    # Allow None to pass as acceptable value -- lets __init__ set own default
+                    if type(value) != type(None):
+                        # Check anything other than None
+                        if not tipe.verify(value):
+                            if type(value) != Numeric.ArrayType:
+                                value_str = str(value)
+                            else:
+                                if Numeric.multiply.reduce(value.shape) < 10:
+                                    value_str = str(value) # print array if it's smallish
+                                else:
+                                    value_str = "(array data)" # don't pring if it's big
+                            raise TypeError("Constant parameter '%s' value %s is type %s (not type %s) in %s"%(parameter_name,value_str,type(value),tipe,self))
+                    setattr(self.constant_parameters,parameter_name,value)
+                done_constant_parameters_and_defaults.append(klass.constant_parameters_and_defaults)
+
+        # Set self.parameters to the value in "kw"
+        for kw_parameter_name in kw.keys():
+            if kw_parameter_name not in done_kw:
+                raise ValueError("parameter '%s' passed as keyword argument, but not specified by %s (or subclasses) as potential parameter"%(kw_parameter_name,self.__class__))
+
+    def is_constant_parameter(self,parameter_name):
+        # Get a list of all classes this instance is derived from
+        classes = recursive_base_class_finder(self.__class__)
+        for klass in classes:
+            if klass == object:
+                continue # base class of new style classes - ignore
+            if klass.constant_parameters_and_defaults.has_key(parameter_name):
+                return True
+        # The for loop only completes if parameter_name is not in any subclass
+        return False
+
+    def get_specified_type(self,parameter_name):
+        # Get a list of all classes this instance is derived from
+        classes = recursive_base_class_finder(self.__class__)
+        for klass in classes:
+            if klass == object:
+                continue # base class of new style classes - ignore
+            if klass.parameters_and_defaults.has_key(parameter_name):
+                return klass.parameters_and_defaults[parameter_name][1]
+        # The for loop only completes if parameter_name is not in any subclass
+        raise AttributeError("%s has no parameter named '%s'"%(self.__class__,parameter_name))
+
+    def verify_parameters(self):
+        """Perform type check on all parameters"""
+        for parameter_name in dir(self.parameters):
+            if parameter_name.startswith('__'):
+                continue
+            require_type = self.get_specified_type(parameter_name)
+            this_type = ve_types.get_type(getattr(self.parameters,parameter_name))
+            ve_types.assert_type(this_type,require_type)
+
+    def set(self,**kw):
+        """Set a parameter with type-checked value
+
+        This is the slow but safe way to set parameters.  It is recommended to
+        use this method in all but speed-critical portions of code.
+        """
+        # Note that we don't overload __setattr__ because that would always slow
+        # down assignment, not just when it was convenient.
+        #
+        # (We could make a checked_parameters attribute though.)
+        for parameter_name in kw.keys():
+            setattr(self.parameters,parameter_name,kw[parameter_name])
+            require_type = self.get_specified_type(parameter_name)
+            value = kw[parameter_name]
+            this_type = ve_types.get_type(value)
+            ve_types.assert_type(this_type,require_type)
+            setattr(self.parameters,parameter_name,value)
+
+def get_type(value):
+    warnings.warn("VisionEgg.get_type() has been moved to "+\
+                  "VisionEgg.ParameterTypes.get_type()",
+                  DeprecationWarning, stacklevel=2)
+    return  ve_types.get_type(value)
+
+def assert_type(*args):
+    warnings.warn("VisionEgg.assert_type() has been moved to "+\
+                  "VisionEgg.ParameterTypes.assert_type()",
+                  DeprecationWarning, stacklevel=2)
+    return ve_types.assert_type(*args)
+
+def _get_lowerleft(position,anchor,size):
+    """Private helper function
+
+    size is (width, height)
+    """
+    if anchor == 'lowerleft':
+        lowerleft = position
+    else:
+        if len(position) > 2: z = position[2]
+        else: z = 0.0
+        if len(position) > 3: w = position[3]
+        else: w = 1.0
+        if z != 0.0: warnings.warn( "z coordinate (other than 0.0) specificed where anchor not 'lowerleft' -- cannot compute")
+        if w != 1.0: warnings.warn("w coordinate (other than 1.0) specificed where anchor not 'lowerleft' -- cannot compute")
+        if anchor == 'center':
+            lowerleft = (position[0] - size[0]/2.0, position[1] - size[1]/2.0)
+        elif anchor == 'lowerright':
+            lowerleft = (position[0] - size[0],position[1])
+        elif anchor == 'upperright':
+            lowerleft = (position[0] - size[0],position[1] - size[1])
+        elif anchor == 'upperleft':
+            lowerleft = (position[0],position[1] - size[1])
+        elif anchor == 'left':
+            lowerleft = (position[0],position[1] - size[1]/2.0)
+        elif anchor == 'right':
+            lowerleft = (position[0] - size[0],position[1] - size[1]/2.0)
+        elif anchor == 'bottom':
+            lowerleft = (position[0] - size[0]/2.0,position[1])
+        elif anchor == 'top':
+            lowerleft = (position[0] - size[0]/2.0,position[1] - size[1])
+        else:
+            raise ValueError("No anchor position %s"%anchor)
+    return lowerleft
+
+def _get_center(position,anchor,size):
+    """Private helper function"""
+    if anchor == 'center':
+        center = position
+    else:
+        if len(position) > 2: z = position[2]
+        else: z = 0.0
+        if len(position) > 3: w = position[3]
+        else: w = 1.0
+        if z != 0.0: raise ValueError("z coordinate (other than 0.0) specificed where anchor not 'center' -- cannot compute")
+        if w != 1.0: raise ValueError("w coordinate (other than 1.0) specificed where anchor not 'center' -- cannot compute")
+        if anchor == 'lowerleft':
+            center = (position[0] + size[0]/2.0, position[1] + size[1]/2.0)
+        elif anchor == 'lowerright':
+            center = (position[0] - size[0]/2.0, position[1] + size[1]/2.0)
+        elif anchor == 'upperright':
+            center = (position[0] - size[0]/2.0, position[1] - size[1]/2.0)
+        elif anchor == 'upperleft':
+            center = (position[0] + size[0]/2.0, position[1] - size[1]/2.0)
+        elif anchor == 'left':
+            center = (position[0] + size[0]/2.0, position[1])
+        elif anchor == 'right':
+            center = (position[0] - size[0]/2.0, position[1])
+        elif anchor == 'bottom':
+            center = (position[0],position[1] + size[1]/2.0)
+        elif anchor == 'top':
+            center = (position[0],position[1] - size[1]/2.0)
+        else:
+            raise ValueError("No anchor position %s"%anchor)
+    return center
+
+
diff --git a/VisionEgg/_darwin_sync_swap.m b/VisionEgg/_darwin_sync_swap.m
new file mode 100644
index 0000000..a9b7a11
--- /dev/null
+++ b/VisionEgg/_darwin_sync_swap.m
@@ -0,0 +1,47 @@
+#include "Python.h"
+
+/*
+ * This is the Objective C source code for synchronizing frame buffer
+ * swapping with vertical retrace pulse on the darwin platform.
+ *
+ * Copyright (c) 2002 Andrew Straw.  Distributed under the terms of
+ * the GNU Lesser General Public License (LGPL).
+ *
+ * $Revision$
+ * $Date$
+ * Author = Andrew Straw <astraw at users.sourceforge.net>
+ *
+ */
+
+#include <Cocoa/Cocoa.h>
+#include <OpenGL/OpenGL.h>
+
+#define TRY(E)     if(! (E)) return NULL
+
+static char sync_swap__doc__[] = 
+"Synchronize framebuffer swapping with vertical retrace sync pulse.";
+
+static PyObject *sync_swap(PyObject * self, PyObject * args)
+{
+  CGLContextObj context;
+  long params[] = { 1 ? 1 : 0};
+
+  context = CGLGetCurrentContext();
+  CGLSetParameter(context,  kCGLCPSwapInterval, params);
+
+  Py_INCREF(Py_None);
+  return Py_None;
+}
+
+static PyMethodDef
+_darwin_sync_swap_methods[] = {
+  { "sync_swap", sync_swap, METH_VARARGS, sync_swap__doc__},
+  { NULL, NULL} /* sentinel */
+};
+
+DL_EXPORT(void)
+init_darwin_sync_swap(void)
+{
+  Py_InitModule("_darwin_sync_swap", _darwin_sync_swap_methods);
+  return;
+}
diff --git a/VisionEgg/_draw_in_c.c b/VisionEgg/_draw_in_c.c
new file mode 100644
index 0000000..a56b700
--- /dev/null
+++ b/VisionEgg/_draw_in_c.c
@@ -0,0 +1,94 @@
+/*
+ * Copyright (c) 2003 Andrew Straw.  Distributed under the terms of
+ * the GNU Lesser General Public License (LGPL).
+ *
+ * $Revision$
+ * $Date$
+ * Author: Andrew Straw <astraw at users.sourceforge.net>
+ *
+ */
+
+#include "Python.h"
+#include "numpy/oldnumeric.h"
+
+#if defined(MS_WINDOWS)
+#  include <windows.h>
+#endif
+
+#include "vegl.h"
+
+static char draw_dots__doc__[] =
+"VisionEgg._draw_in_c._draw_dots(x,y,z) -> None";
+
+static PyObject *
+draw_dots(PyObject *self, PyObject *args)
+{
+  PyObject *input1, *input2, *input3;
+  PyArrayObject *x=NULL;
+  PyArrayObject *y=NULL;
+  PyArrayObject *z=NULL;
+  int i, n;
+
+  if (!PyArg_ParseTuple(args, "OOO", &input1, &input2, &input3))
+    return NULL;
+  x = (PyArrayObject *)
+    PyArray_ContiguousFromObject(input1, PyArray_DOUBLE, 1, 1);
+  if (x == NULL)
+    goto fail;
+  y = (PyArrayObject *)
+    PyArray_ContiguousFromObject(input2, PyArray_DOUBLE, 1, 1);
+  if (y == NULL)
+    goto fail;
+  z = (PyArrayObject *)
+    PyArray_ContiguousFromObject(input3, PyArray_DOUBLE, 1, 1);
+  if (z == NULL)
+    goto fail;
+
+  n = x->dimensions[0];
+
+  if (n != y->dimensions[0]) {
+    PyErr_SetString(PyExc_ValueError,"All three arguments must be same length");
+    goto fail;
+  }
+
+  if (n != z->dimensions[0]) {
+    PyErr_SetString(PyExc_ValueError,"All three arguments must be same length");
+    goto fail;
+  }
+
+  glBegin(GL_POINTS);
+  for (i = 0; i < n; i++) {
+    glVertex3f( *(double *)(x->data + i*x->strides[0]),
+		*(double *)(y->data + i*y->strides[0]),
+		*(double *)(z->data + i*z->strides[0]));
+  }
+  glEnd();
+
+  Py_DECREF(x);
+  Py_DECREF(y);
+  Py_DECREF(z);
+
+  Py_INCREF(Py_None);
+  return Py_None;
+
+ fail:
+  Py_XDECREF(x);
+  Py_XDECREF(y);
+  Py_XDECREF(z);
+
+  return NULL;
+}
+
+static PyMethodDef
+_draw_in_c_methods[] = {
+  { "draw_dots", draw_dots, METH_VARARGS, draw_dots__doc__},
+  { NULL, NULL} /* sentinel */
+};
+
+DL_EXPORT(void)
+init_draw_in_c(void)
+{
+  Py_InitModule("_draw_in_c", _draw_in_c_methods);
+  import_array();
+  return;
+}
diff --git a/VisionEgg/_lib3ds.c b/VisionEgg/_lib3ds.c
new file mode 100644
index 0000000..0746c4e
--- /dev/null
+++ b/VisionEgg/_lib3ds.c
@@ -0,0 +1,560 @@
+/*
+ * This is the C source code for interfacing with the Vision Egg with
+ * the lib3ds library
+ *
+ * Copyright (C) 2002 Andrew Straw
+ * Copyright (C) 2005 California Institute of Technology
+ *
+ * Distributed under the terms of the GNU Lesser General Public
+ * License (LGPL).
+ *
+ * $Id$
+ * Author = Andrew Straw <astraw at users.sourceforge.net>
+ *
+ */
+
+#include "Python.h"
+
+#include <lib3ds/file.h>
+#include <lib3ds/mesh.h>
+#include <lib3ds/node.h>
+#include <lib3ds/material.h>
+#include <lib3ds/matrix.h>
+#include <lib3ds/vector.h>
+#include <lib3ds/light.h>
+#include <string.h>
+#include <stdlib.h>
+#include <math.h>
+
+#if defined(MS_WINDOWS)
+#  include <windows.h>
+#endif
+
+#include "vegl.h"
+
+#define PY_CHECK(X,LINENO) if (!(X)) { fprintf(stderr,"Python exception _lib3ds.c line %d\n",LINENO); goto error; }
+#define L3DCK(X,LINENO) if (!(X)) { fprintf(stderr,"_lib3ds error on line %d",LINENO); goto error; }
+
+#define MAX_WARN_STR 255
+#define _LIB3DS_WARN_IF_MATERIAL_TEX_IS_NOT_NULL(X) if (m->X.name[0]) { snprintf(warn_str,MAX_WARN_STR,"Ignoring data in %s because .3ds file support is incomplete. (" #X " \"%s\" for material \"%s\" was not loaded)",filename,&m->X.name[0],&m->name[0]); if (!warn_python(warn_str)) {goto error;} }
+
+static PyObject *g_logger_warning = NULL;
+
+// forward declarations
+static PyObject*
+render_node(Lib3dsFile *file, PyObject *tex_dict, Lib3dsNode *node);
+
+static PyObject*
+get_logger_warning( void );
+
+int warn_python(char *text);
+
+//////////////////////////////////////////////
+
+static char draw__doc__[] =
+"Draw a model loaded from a .3ds file.\n";
+
+static PyObject *draw(PyObject *self, PyObject *args)
+{
+  PyObject *py_c_file;
+  Lib3dsFile *file=NULL;
+
+  PyObject *tex_dict=NULL;
+
+  float scale_x, scale_y, scale_z;
+  float pos_x, pos_y, pos_z;
+  float orient_angle;
+  float orient_x,orient_y,orient_z;
+
+  PY_CHECK(PyArg_ParseTuple(args,"OOffffffffff",
+			    &py_c_file,
+			    &tex_dict,
+			    &scale_x,&scale_y,&scale_z,
+			    &pos_x,&pos_y,&pos_z,
+			    &orient_angle,
+			    &orient_x,&orient_y,&orient_z
+			    ),__LINE__);
+
+  if (!PyCObject_Check(py_c_file)) {
+    PyErr_SetString(PyExc_ValueError,"Must pass PyCObject as 1st argument");
+    return NULL;
+  }
+
+  if (!PyDict_Check(tex_dict)) {
+    PyErr_SetString(PyExc_ValueError,"Must pass PyDict as 2nd argument");
+    return NULL;
+  }
+
+  file = (Lib3dsFile*)PyCObject_AsVoidPtr(py_c_file);
+
+  glEnable(GL_TEXTURE_2D);
+  //glShadeModel(GL_SMOOTH);
+  //glEnable(GL_LIGHTING);
+  //glDepthFunc(GL_LEQUAL);
+  glEnable(GL_DEPTH_TEST);
+  //glEnable(GL_CULL_FACE);
+  //glCullFace(GL_BACK);
+
+  //glClear(GL_DEPTH_BUFFER_BIT);
+
+  if (!file) {
+    return NULL;
+  }
+
+  glMatrixMode(GL_MODELVIEW);
+  glPushMatrix();
+  glTranslatef(pos_x,pos_y,pos_z);
+  glRotatef(orient_angle,orient_x,orient_y,orient_z);
+  glRotatef(-90, 1.0,0,0);
+  glScalef(scale_x,scale_y,scale_z);
+
+  // added to prevent other things from messing up the texture colouring.
+  glColor3f(1.0, 1.0, 1.0);
+  {
+    Lib3dsNode *p;
+    for (p=file->nodes; p!=0; p=p->next) {
+      PY_CHECK(render_node(file,tex_dict,p),__LINE__);
+    }
+  }
+
+  glPopMatrix();
+
+  //glDisable(GL_LIGHTING);
+
+  Py_INCREF(Py_None);
+  return Py_None;
+ error:
+  return NULL;
+}
+
+//////////////////////////////////////////////
+
+static PyObject *get_logger_warning( void ) {
+  PyObject *loggingModule = NULL;
+  PyObject *logging_getLogger = NULL;
+  PyObject *logger = NULL;
+  PyObject *logger_warning = NULL;
+
+  // Now get VisionEgg.Core.message to pass message
+  loggingModule = PyImport_ImportModule("logging"); // New ref
+  if (!loggingModule) {
+    loggingModule = PyImport_ImportModule("VisionEgg.py_logging");
+  }
+  PY_CHECK(loggingModule,__LINE__);
+
+  logging_getLogger = PyObject_GetAttrString(loggingModule,"getLogger"); // new ref
+  PY_CHECK(logging_getLogger,__LINE__);
+
+  logger = PyObject_CallObject(logging_getLogger,Py_BuildValue("(s)","VisionEgg._lib3ds")); // new ref
+  PY_CHECK(logger,__LINE__);
+
+  logger_warning = PyObject_GetAttrString(logger,"warning"); // new ref
+  PY_CHECK(logger_warning,__LINE__);
+
+  g_logger_warning = logger_warning;
+
+  Py_DECREF(logger);
+  Py_DECREF(logging_getLogger);
+  Py_DECREF(loggingModule);
+  return g_logger_warning;
+
+ error:
+  Py_XDECREF(logger);
+  Py_XDECREF(logging_getLogger);
+  Py_XDECREF(loggingModule);
+  return NULL;
+}
+
+int warn_python(char *text) {
+  PyObject* temp = NULL;
+
+  if (!g_logger_warning) { // make sure can write to the log
+    g_logger_warning = get_logger_warning();
+    PY_CHECK(g_logger_warning,__LINE__);
+  }
+  temp = PyObject_CallObject(g_logger_warning,Py_BuildValue("(s)",text)); // new ref
+  PY_CHECK(temp,__LINE__);
+  Py_XDECREF(temp);
+  return 1;
+ error:
+  Py_XDECREF(temp);
+  return 0;
+}
+
+static char c_init__doc__[] =
+"C helper for Model3DS.__init__.\n";
+
+static PyObject *c_init(PyObject *dummy_self, PyObject *args)
+{
+  char * filename=NULL;
+  char * warn_str=NULL;
+  Lib3dsFile *file=NULL;
+  Lib3dsMaterial* m;
+  Lib3dsLight *light;
+  Lib3dsNode* new_node=NULL;
+  Lib3dsNode* last_node=NULL;
+  Lib3dsMesh* mesh;
+  Lib3dsTextureMap texmap;
+  PyObject *self=NULL;
+  PyObject *self_draw=NULL;
+  PyObject *self_dict=NULL;
+  PyObject *py_c_file=NULL;
+
+  PyObject *tex_dict=NULL;
+  PyObject *tex_dict_value=NULL;
+
+  warn_str = (char *)malloc(MAX_WARN_STR*sizeof(char));
+  if (!warn_str) {
+    PyErr_SetString(PyExc_SystemError,"malloc failed in _lib3ds.c");
+    goto error;
+  }
+
+  PY_CHECK(PyArg_ParseTuple(args,"Os",
+			    &self,
+			    &filename),__LINE__);
+
+  self_dict = PyObject_GetAttrString( self, "__dict__" ); // new ref
+  PY_CHECK(self_dict,__LINE__);
+
+  file=lib3ds_file_load(filename);
+  if (!file) {
+    PyErr_SetString(PyExc_RuntimeError,"lib3ds_file_load failed");
+    return NULL;
+  }
+
+  lib3ds_file_eval(file,0);
+
+  //  gFile = file;
+
+  // Now do self._lib3ds_file = file
+  // XXX should build destructor before here
+  py_c_file = PyCObject_FromVoidPtr((void*)file,NULL); // new ref
+  PY_CHECK(py_c_file,__LINE__);
+
+  PY_CHECK(!PyDict_SetItemString(self_dict,"_lib3ds_file",py_c_file),__LINE__);
+
+  // Get a list of the texture files to load
+
+  tex_dict = PyDict_New(); // new ref
+  PY_CHECK(tex_dict,__LINE__);
+
+  for (m=file->materials; m!=0; m=m->next ) {
+    texmap = m->texture1_map;
+    if (texmap.name[0]) {
+      //printf("c_init texture1_map %s: %s\n",&m->name[0],&texmap.name[0]);
+
+      tex_dict_value = Py_BuildValue("i",-1); // new ref
+      PY_CHECK(tex_dict_value,__LINE__);
+      PY_CHECK(!PyDict_SetItemString(tex_dict,&texmap.name[0],tex_dict_value),__LINE__);
+      Py_DECREF(tex_dict_value);
+
+    }
+    // we don't handle these yet, at least let the user know...
+    _LIB3DS_WARN_IF_MATERIAL_TEX_IS_NOT_NULL( texture1_mask);
+    _LIB3DS_WARN_IF_MATERIAL_TEX_IS_NOT_NULL( texture2_map);
+    _LIB3DS_WARN_IF_MATERIAL_TEX_IS_NOT_NULL( texture2_mask);
+    _LIB3DS_WARN_IF_MATERIAL_TEX_IS_NOT_NULL( opacity_map);
+    _LIB3DS_WARN_IF_MATERIAL_TEX_IS_NOT_NULL( opacity_mask);
+    _LIB3DS_WARN_IF_MATERIAL_TEX_IS_NOT_NULL( bump_map);
+    _LIB3DS_WARN_IF_MATERIAL_TEX_IS_NOT_NULL( bump_mask);
+    _LIB3DS_WARN_IF_MATERIAL_TEX_IS_NOT_NULL( specular_map);
+    _LIB3DS_WARN_IF_MATERIAL_TEX_IS_NOT_NULL( specular_mask);
+    _LIB3DS_WARN_IF_MATERIAL_TEX_IS_NOT_NULL( shininess_map);
+    _LIB3DS_WARN_IF_MATERIAL_TEX_IS_NOT_NULL( shininess_mask);
+    _LIB3DS_WARN_IF_MATERIAL_TEX_IS_NOT_NULL( self_illum_map);
+    _LIB3DS_WARN_IF_MATERIAL_TEX_IS_NOT_NULL( self_illum_mask);
+    _LIB3DS_WARN_IF_MATERIAL_TEX_IS_NOT_NULL( reflection_map);
+    _LIB3DS_WARN_IF_MATERIAL_TEX_IS_NOT_NULL( reflection_mask);
+  }
+
+  for (light=file->lights; light; light=light->next) {
+    snprintf(warn_str,MAX_WARN_STR,"Ignoring data in %s because .3ds file support is incompelte. (Light \"%s\" not used because light support not implemented.)",filename,&light->name[0]);
+    if (!warn_python(warn_str)) {
+      goto error;
+    }
+  }
+
+  Py_XDECREF(py_c_file);
+
+  // If no nodes, warn and make one for each mesh
+  if (file->nodes == 0) {
+    if (file->meshes == 0) {
+      if (!warn_python(".3ds file has no nodes and no meshes, not drawing anything.")) {
+	goto error;
+      }
+    }
+    for (mesh=file->meshes; mesh!=0; mesh=mesh->next) {
+      snprintf(warn_str,MAX_WARN_STR,".3ds file has no nodes, making one for mesh \"%s\"",&mesh->name[0]);
+      if (!warn_python(warn_str)) {
+	goto error;
+      }
+      new_node = lib3ds_node_new_object();
+      strncpy(&new_node->name[0],&mesh->name[0],64);
+      if (file->nodes == 0) {
+	file->nodes = new_node;
+      } else {
+	last_node->next = new_node;
+      }
+      last_node = new_node;
+      //file->nodes->name = &file->meshes->name[0];
+    }
+  }
+
+  free((void*)warn_str);
+  return tex_dict;
+
+ error:
+  free((void*)warn_str);
+
+  Py_XDECREF(tex_dict);
+  Py_XDECREF(tex_dict_value);
+  Py_XDECREF(self_dict);
+  Py_XDECREF(self_draw);
+  Py_XDECREF(py_c_file);
+  return NULL;
+}
+
+/////////////////////////////////////////////
+
+static PyObject*
+render_node(Lib3dsFile *file, PyObject *tex_dict, Lib3dsNode *node)
+{
+  PyObject *tex_dict_value=NULL;
+  /*
+  Lib3dsRgba a;
+  Lib3dsRgba d;
+  Lib3dsRgba s;
+  */
+  ASSERT(file);
+
+  {
+    Lib3dsNode *p;
+    for (p=node->childs; p!=0; p=p->next) {
+      PY_CHECK(render_node(file,tex_dict,p),__LINE__);
+    }
+  }
+  if (node->type==LIB3DS_OBJECT_NODE) {
+    if (strcmp(node->name,"$$$DUMMY")==0) {
+      L3DCK(0,__LINE__);
+    }
+
+    if (!node->user.d) {
+      Lib3dsMesh *mesh;
+
+      mesh=lib3ds_file_mesh_by_name(file, node->name);
+      ASSERT(mesh);
+      if (!mesh) {
+	L3DCK(0,__LINE__);
+      }
+
+      node->user.d=glGenLists(1);
+      glNewList(node->user.d, GL_COMPILE);
+
+      {
+        unsigned p;
+        Lib3dsVector *normalL=malloc(3*sizeof(Lib3dsVector)*mesh->faces);
+
+        {
+          Lib3dsMatrix M;
+          lib3ds_matrix_copy(M, mesh->matrix);
+          lib3ds_matrix_inv(M);
+          glMultMatrixf(&M[0][0]);
+        }
+        lib3ds_mesh_calculate_normals(mesh, normalL);
+
+        for (p=0; p<mesh->faces; ++p) {
+          Lib3dsFace *f=&mesh->faceL[p];
+          Lib3dsMaterial *mat=0;
+          if (f->material[0]) {
+            mat=lib3ds_file_material_by_name(file, f->material);
+          }
+
+          if (mat) {
+
+	    /*
+	    /////////////////////
+            static GLfloat a[4]={0,0,0,1};
+            float s;
+            glMaterialfv(GL_FRONT, GL_AMBIENT, a);
+            glMaterialfv(GL_FRONT, GL_DIFFUSE, mat->diffuse);
+            glMaterialfv(GL_FRONT, GL_SPECULAR, mat->specular);
+            s = (float)pow(2, 10.0*mat->shininess);
+            if (s>128.0) {
+              s=128.0;
+            }
+            glMaterialf(GL_FRONT, GL_SHININESS, s);
+	    /////////////////////
+	    */
+
+	    if (mat->texture1_map.name[0]) { // use texture
+
+	      tex_dict_value = PyDict_GetItemString(tex_dict,&mat->texture1_map.name[0]); // borrowed ref
+	      PY_CHECK(tex_dict_value,__LINE__);
+
+
+	      if (!PyLong_Check(tex_dict_value)) {
+		PyErr_SetString(PyExc_ValueError,"dictionary value must be int");
+		goto error;
+	      }
+
+	      glBindTexture( GL_TEXTURE_2D, PyInt_AsLong(tex_dict_value) );
+
+	    } else {
+	      // no texture...
+	    }
+          } else {
+	    /*
+	    ////////////////////////
+            a[0]=0.2f; a[1]=0.2f; a[2]=0.2f; a[3]=1.0f;
+            d[0]=0.8f; d[1]=0.8f; d[2]=0.8f; d[3]=1.0f;
+            s[0]=0.0f; s[1]=0.0f; s[2]=0.0f; s[3]=1.0f;
+            glMaterialfv(GL_FRONT, GL_AMBIENT, a);
+            glMaterialfv(GL_FRONT, GL_DIFFUSE, d);
+            glMaterialfv(GL_FRONT, GL_SPECULAR, s);
+	    ////////////////////////
+	    */
+          }
+          {
+            int i;
+            glBegin(GL_TRIANGLES);
+              glNormal3fv(f->normal);
+              for (i=0; i<3; ++i) {
+                glNormal3fv(normalL[3*p+i]);
+		if (mesh->texels) {
+		  glTexCoord2fv(mesh->texelL[f->points[i]]);
+		}
+                glVertex3fv(mesh->pointL[f->points[i]].pos);
+              }
+            glEnd();
+          }
+        }
+
+        free(normalL);
+      }
+
+      glEndList();
+    }
+
+    if (node->user.d) {
+      Lib3dsObjectData *d;
+
+      glPushMatrix();
+      d=&node->data.object;
+      glMultMatrixf(&node->matrix[0][0]);
+      glTranslatef(-d->pivot[0], -d->pivot[1], -d->pivot[2]);
+      glCallList(node->user.d);
+      glPopMatrix();
+    }
+  }
+
+  Py_INCREF(Py_None);
+  return Py_None;
+ error:
+  return NULL;
+}
+
+//////////////////////////////////////////////
+
+static char dump_materials__doc__[] =
+"Print the materials of a .3ds file.\n";
+
+static PyObject *dump_materials(PyObject *self, PyObject *args)
+{
+  PyObject *py_c_file;
+  Lib3dsFile *file=NULL;
+
+  PY_CHECK(PyArg_ParseTuple(args,"O",
+			    &py_c_file),__LINE__);
+
+  if (!PyCObject_Check(py_c_file)) {
+    PyErr_SetString(PyExc_ValueError,"Must pass PyCObject");
+    return NULL;
+  }
+
+  file = (Lib3dsFile*)PyCObject_AsVoidPtr(py_c_file);
+
+  lib3ds_file_dump_materials(file);
+
+  Py_INCREF(Py_None);
+  return Py_None;
+
+ error:
+  return NULL;
+}
+
+//////////////////////////////////////////////
+
+static char dump_nodes__doc__[] =
+"Print the nodes of a .3ds file.\n";
+
+static PyObject *dump_nodes(PyObject *self, PyObject *args)
+{
+  PyObject *py_c_file;
+  Lib3dsFile *file=NULL;
+
+  PY_CHECK(PyArg_ParseTuple(args,"O",
+			    &py_c_file),__LINE__);
+
+  if (!PyCObject_Check(py_c_file)) {
+    PyErr_SetString(PyExc_ValueError,"Must pass PyCObject");
+    return NULL;
+  }
+
+  file = (Lib3dsFile*)PyCObject_AsVoidPtr(py_c_file);
+
+  lib3ds_file_dump_nodes(file);
+
+  Py_INCREF(Py_None);
+  return Py_None;
+
+ error:
+  return NULL;
+}
+
+//////////////////////////////////////////////
+
+static char dump_meshes__doc__[] =
+"Print the meshes of a .3ds file.\n";
+
+static PyObject *dump_meshes(PyObject *self, PyObject *args)
+{
+  PyObject *py_c_file;
+  Lib3dsFile *file=NULL;
+
+  PY_CHECK(PyArg_ParseTuple(args,"O",
+			    &py_c_file),__LINE__);
+
+  if (!PyCObject_Check(py_c_file)) {
+    PyErr_SetString(PyExc_ValueError,"Must pass PyCObject");
+    return NULL;
+  }
+
+  file = (Lib3dsFile*)PyCObject_AsVoidPtr(py_c_file);
+
+  lib3ds_file_dump_meshes(file);
+
+  Py_INCREF(Py_None);
+  return Py_None;
+
+ error:
+  return NULL;
+}
+
+//////////////////////////////////////////////
+
+static PyMethodDef
+lib3ds_c_methods[] = {
+  { "c_init", (PyCFunction)c_init, METH_VARARGS, c_init__doc__},
+  { "draw", (PyCFunction)draw, METH_VARARGS, draw__doc__},
+  { "dump_materials", (PyCFunction)dump_materials, METH_VARARGS, dump_materials__doc__},
+  { "dump_nodes", (PyCFunction)dump_nodes, METH_VARARGS, dump_nodes__doc__},
+  { "dump_meshes", (PyCFunction)dump_meshes, METH_VARARGS, dump_meshes__doc__},
+  { NULL, NULL, 0, NULL} /* sentinel */
+};
+
+DL_EXPORT(void)
+init_lib3ds(void)
+{
+  Py_InitModule("_lib3ds", lib3ds_c_methods);
+  return;
+}
diff --git a/VisionEgg/_raw_lpt_linux.c b/VisionEgg/_raw_lpt_linux.c
new file mode 100644
index 0000000..fbb052b
--- /dev/null
+++ b/VisionEgg/_raw_lpt_linux.c
@@ -0,0 +1,199 @@
+#include "Python.h"
+
+/*
+ * Copyright (c) 2001-2003 Andrew Straw.  Distributed under the terms of
+ * the GNU Lesser General Public License (LGPL).
+ *
+ * $Revision$
+ * $Date$
+ * Author: Andrew Straw <astraw at users.sourceforge.net>
+ *
+ */
+ 
+
+/*
+ * NOTE:  If I had to re-implement this, I would use SWIG!
+ *
+ */
+
+#include <sys/io.h> // for ioperm (glibc) (use unistd.h for libc5) and inb
+
+#define TRY(E)     if(! (E)) return NULL
+#define MAX_BASE_ADDRESSES 4
+
+static long int ok_base_addresses[MAX_BASE_ADDRESSES];
+static long int not_ok_base_addresses[MAX_BASE_ADDRESSES];
+static unsigned short num_ok_base_addresses;
+static unsigned short num_not_ok_base_addresses;
+
+static short c_ok(long int base_address)
+{
+  unsigned short i;
+
+  for (i=0; i<num_ok_base_addresses; i++) {
+    if (base_address == ok_base_addresses[i]) {
+      return 1;
+    }
+  }
+
+  for (i=0; i<num_not_ok_base_addresses; i++) {
+    if (base_address == not_ok_base_addresses[i]) {
+      return 0;
+    }
+  }
+
+  return -1; // unchecked
+}
+
+static short int c_check(long int base_address, short raise_ex)
+{
+  short ok;
+
+  ok = c_ok(base_address);
+  if (ok==-1) {
+    if (ioperm(base_address, 8, 1) >= 0) {
+      // it's OK
+      ok_base_addresses[num_ok_base_addresses] = base_address;
+      if (num_ok_base_addresses < MAX_BASE_ADDRESSES) {
+	num_ok_base_addresses++;
+      }
+      return 1;
+    }
+    else {
+      not_ok_base_addresses[num_not_ok_base_addresses] = base_address;
+      if (num_not_ok_base_addresses < MAX_BASE_ADDRESSES) {
+	num_not_ok_base_addresses++;
+      }
+      if (raise_ex) {
+	PyErr_SetString(PyExc_IOError,"Cannot open LPT.  (Do you have permission?)");
+      }
+      return 0;
+    } 
+  }
+  else {
+    if (ok==0 && raise_ex) {
+      PyErr_SetString(PyExc_IOError,"Cannot open LPT.  (Do you have permission?)");
+    }
+    return ok;
+  }
+}
+
+static char base_address_ok__doc__[] = 
+"VisionEgg._raw_lpt_linux.base_address_ok(base_address) -> bool";
+
+static PyObject *base_address_ok(PyObject * self, PyObject * args)
+{
+  long int base_address;
+  short ok;
+
+  TRY(PyArg_ParseTuple(args,"l",&base_address));
+  ok = c_ok(base_address);
+  if (ok==-1) {
+    return PyInt_FromLong((long)c_check(base_address,0));
+  }
+  else {
+    return PyInt_FromLong((long)ok);
+  }
+}
+
+static char inp__doc__[] = 
+"inp(base_address) -> value\n"
+"Get status bits 0-7 of the LPT port.\n"
+"\n"
+"For LPT0, base_address should be 0x379\n"
+"\n"
+"The status bits were not meant for high speed data input\n"
+"Nevertheless, for sampling one or two digital inputs, they\n"
+"work fine.\n"
+"\n"
+"Bits 4 and 5 (pins 13 and 12, respectively) should be first\n"
+"choice to sample a digital voltage.  The other bits have some\n"
+"oddities. Bits 0 and 1 are designated reserved. Others are\n"
+"'active low'; they show a logic 0 when +5v is applied.\n"
+"\n"
+"bit4 = value & 0x10\n"
+"bit5 = value & 0x20\n";
+
+static PyObject *inp(PyObject * self, PyObject * args)
+{
+  long int base_address;
+  unsigned short i;
+  short ok;
+
+  TRY(PyArg_ParseTuple(args,"l",&base_address));
+
+  // Fast check on port
+  ok = 0;
+  for (i=0; i<num_ok_base_addresses; i++) {
+    if (base_address == ok_base_addresses[i]) {
+      ok = 1;
+      break;
+    }
+  }
+
+  // Port not known to be OK, check it
+  if (!ok) {
+    if (!c_check(base_address,1)) {
+      return NULL;
+    }
+  }
+
+  return PyInt_FromLong((long)inb(base_address));
+}
+
+static char out__doc__[] = 
+"VisionEgg._raw_lpt_linux.out(base_address, value) -> None\n"
+"Write output bits 0-7 (pins 2-9) on the parallel port LPT0\n"
+"\n"
+"For LPT0, base_address should be 0x378\n";
+
+static PyObject *out(PyObject * self, PyObject * args)
+{
+  long int base_address;
+  short int value;
+  unsigned short i;
+  short ok;
+
+  TRY(PyArg_ParseTuple(args,"lh",&base_address,&value));
+  
+  // Fast check on port
+  ok = 0;
+  for (i=0; i<num_ok_base_addresses; i++) {
+    if (base_address == ok_base_addresses[i]) {
+      ok = 1;
+      break;
+    }
+  }
+
+  // Port not known to be OK, check it
+  if (!ok) {
+    if (!c_check(base_address,1)) {
+      return NULL;
+    }
+  }
+
+  outb(value,base_address);
+
+  Py_INCREF(Py_None);
+  return Py_None;
+}
+
+static PyMethodDef
+_raw_lpt_linux_methods[] = {
+  { "base_address_ok", base_address_ok, METH_VARARGS, base_address_ok__doc__},
+  { "inp", inp, METH_VARARGS, inp__doc__},
+  { "out", out, METH_VARARGS, out__doc__},
+  { NULL, NULL} /* sentinel */
+};
+
+DL_EXPORT(void)
+init_raw_lpt_linux(void)
+{
+  Py_InitModule("_raw_lpt_linux", _raw_lpt_linux_methods);
+  num_ok_base_addresses = 0;
+  num_not_ok_base_addresses = 0;
+
+  c_check(0x0378,0);
+
+  return;
+}
diff --git a/VisionEgg/_raw_plp_irix.c b/VisionEgg/_raw_plp_irix.c
new file mode 100644
index 0000000..ad81b12
--- /dev/null
+++ b/VisionEgg/_raw_plp_irix.c
@@ -0,0 +1,75 @@
+#include "Python.h"
+
+/*
+ * This code is a skeleton with no functionality. I don't have
+ * the time to get the parallel port working under IRIX, but
+ * it looks like it's possible.  I've included the relevant
+ * header files below.
+ * 
+ * Copyright (c) 2001, 2002 Andrew Straw.  Distributed under the terms of
+ * the GNU Lesser General Public License (LGPL).
+ *
+ * $Revision$
+ * $Date$
+ * Author: Andrew Straw <astraw at users.sourceforge.net>
+ *
+ */
+
+#include <sys/plp.h>
+#include <sys/ioctl.h>
+
+#define TRY(E)     if(! (E)) return NULL
+
+#define ERRSTR "Parallel port possible but not implemented on IRIX."
+
+static char base_address_ok__doc__[] = 
+"VisionEgg._raw_plp_irix.base_address_ok(base_address) -> bool";
+
+static PyObject *base_address_ok(PyObject * self, PyObject * args)
+{
+  long int base_address;
+
+  TRY(PyArg_ParseTuple(args,"l",&base_address));
+  PyErr_SetString(PyExc_NotImplementedError,ERRSTR);
+  return NULL;
+}
+
+static char inp__doc__[] = 
+"VisionEgg._raw_plp_irix.inp(base_address) -> value";
+
+static PyObject *inp(PyObject * self, PyObject * args)
+{
+  long int base_address;
+
+  TRY(PyArg_ParseTuple(args,"l",&base_address));
+  PyErr_SetString(PyExc_NotImplementedError,ERRSTR);
+  return NULL;
+}
+
+static char out__doc__[] = 
+"VisionEgg._raw_plp_irix.out(base_address, value) -> None";
+
+static PyObject *out(PyObject * self, PyObject * args)
+{
+  long int base_address;
+  short int value;
+
+  TRY(PyArg_ParseTuple(args,"lh",&base_address,&value));
+  PyErr_SetString(PyExc_NotImplementedError,ERRSTR);
+  return NULL;
+}
+
+static PyMethodDef
+_raw_plp_irix_methods[] = {
+  { "base_address_ok", base_address_ok, METH_VARARGS, base_address_ok__doc__},
+  { "inp", inp, METH_VARARGS, inp__doc__},
+  { "out", out, METH_VARARGS, out__doc__},
+  { NULL, NULL} /* sentinel */
+};
+
+DL_EXPORT(void)
+init_raw_plp_irix(void)
+{
+  Py_InitModule("_raw_plp_irix", _raw_plp_irix_methods);
+  return;
+}
diff --git a/VisionEgg/_vegl.c b/VisionEgg/_vegl.c
new file mode 100644
index 0000000..50f34a8
--- /dev/null
+++ b/VisionEgg/_vegl.c
@@ -0,0 +1,338 @@
+/* Generated by Pyrex 0.9.5.1a on Sun Jan 20 20:09:41 2008 */
+
+#include "Python.h"
+#include "structmember.h"
+#ifndef PY_LONG_LONG
+  #define PY_LONG_LONG LONG_LONG
+#endif
+#ifdef __cplusplus
+#define __PYX_EXTERN_C extern "C"
+#else
+#define __PYX_EXTERN_C extern
+#endif
+__PYX_EXTERN_C double pow(double, double);
+#include "vegl.h"
+
+
+typedef struct {PyObject **p; char *s;} __Pyx_InternTabEntry; /*proto*/
+typedef struct {PyObject **p; char *s; long n;} __Pyx_StringTabEntry; /*proto*/
+
+static PyObject *__pyx_m;
+static PyObject *__pyx_b;
+static int __pyx_lineno;
+static char *__pyx_filename;
+static char **__pyx_f;
+
+static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list); /*proto*/
+
+static int __Pyx_InternStrings(__Pyx_InternTabEntry *t); /*proto*/
+
+static void __Pyx_AddTraceback(char *funcname); /*proto*/
+
+/* Declarations from _vegl */
+
+typedef struct {
+  int two;
+  int nd;
+  char typekind;
+  int itemsize;
+  int flags;
+  Py_intptr_t (*shape);
+  Py_intptr_t (*strides);
+  void (*data);
+} __pyx_t_5_vegl_PyArrayInterface;
+
+
+
+/* Implementation of _vegl */
+
+
+static PyObject *__pyx_n_numpy;
+static PyObject *__pyx_n_veglGetTexImage;
+static PyObject *__pyx_n_veglTexSubImage1D;
+
+static PyObject *__pyx_n___array_struct__;
+
+static PyObject *__pyx_f_5_vegl_veglGetTexImage(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_f_5_vegl_veglGetTexImage(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_target = 0;
+  PyObject *__pyx_v_level = 0;
+  PyObject *__pyx_v_format = 0;
+  PyObject *__pyx_v_type = 0;
+  PyObject *__pyx_v_buf = 0;
+  __pyx_t_5_vegl_PyArrayInterface (*__pyx_v_inter);
+  PyObject *__pyx_v_hold_onto_until_done_with_array;
+  PyObject *__pyx_r;
+  PyObject *__pyx_1 = 0;
+  int __pyx_2;
+  int __pyx_3;
+  int __pyx_4;
+  int __pyx_5;
+  static char *__pyx_argnames[] = {"target","level","format","type","buf",0};
+  if (!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "OOOOO", __pyx_argnames, &__pyx_v_target, &__pyx_v_level, &__pyx_v_format, &__pyx_v_type, &__pyx_v_buf)) return 0;
+  Py_INCREF(__pyx_v_target);
+  Py_INCREF(__pyx_v_level);
+  Py_INCREF(__pyx_v_format);
+  Py_INCREF(__pyx_v_type);
+  Py_INCREF(__pyx_v_buf);
+  __pyx_v_hold_onto_until_done_with_array = Py_None; Py_INCREF(Py_None);
+
+  /* "/home/astraw/src/ve/visionegg-devel.root/trunk/visionegg/VisionEgg/_vegl.pyx":30 */
+  __pyx_1 = PyObject_GetAttr(__pyx_v_buf, __pyx_n___array_struct__); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 30; goto __pyx_L1;}
+  Py_DECREF(__pyx_v_hold_onto_until_done_with_array);
+  __pyx_v_hold_onto_until_done_with_array = __pyx_1;
+  __pyx_1 = 0;
+
+  /* "/home/astraw/src/ve/visionegg-devel.root/trunk/visionegg/VisionEgg/_vegl.pyx":31 */
+  __pyx_v_inter = ((__pyx_t_5_vegl_PyArrayInterface (*))PyCObject_AsVoidPtr(__pyx_v_hold_onto_until_done_with_array));
+
+  /* "/home/astraw/src/ve/visionegg-devel.root/trunk/visionegg/VisionEgg/_vegl.pyx":32 */
+  if (!(__pyx_v_inter->two == 2)) {
+    PyErr_SetNone(PyExc_AssertionError);
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 32; goto __pyx_L1;}
+  }
+
+  /* "/home/astraw/src/ve/visionegg-devel.root/trunk/visionegg/VisionEgg/_vegl.pyx":34 */
+  __pyx_2 = PyInt_AsLong(__pyx_v_target); if (PyErr_Occurred()) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 34; goto __pyx_L1;}
+  __pyx_3 = PyInt_AsLong(__pyx_v_level); if (PyErr_Occurred()) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 34; goto __pyx_L1;}
+  __pyx_4 = PyInt_AsLong(__pyx_v_format); if (PyErr_Occurred()) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 34; goto __pyx_L1;}
+  __pyx_5 = PyInt_AsLong(__pyx_v_type); if (PyErr_Occurred()) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 34; goto __pyx_L1;}
+  glGetTexImage(__pyx_2,__pyx_3,__pyx_4,__pyx_5,__pyx_v_inter->data);
+
+  __pyx_r = Py_None; Py_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1:;
+  Py_XDECREF(__pyx_1);
+  __Pyx_AddTraceback("_vegl.veglGetTexImage");
+  __pyx_r = 0;
+  __pyx_L0:;
+  Py_DECREF(__pyx_v_hold_onto_until_done_with_array);
+  Py_DECREF(__pyx_v_target);
+  Py_DECREF(__pyx_v_level);
+  Py_DECREF(__pyx_v_format);
+  Py_DECREF(__pyx_v_type);
+  Py_DECREF(__pyx_v_buf);
+  return __pyx_r;
+}
+
+static PyObject *__pyx_f_5_vegl_veglTexSubImage1D(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_f_5_vegl_veglTexSubImage1D(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_target = 0;
+  PyObject *__pyx_v_level = 0;
+  PyObject *__pyx_v_xoffset = 0;
+  PyObject *__pyx_v_width = 0;
+  PyObject *__pyx_v_format = 0;
+  PyObject *__pyx_v_type = 0;
+  PyObject *__pyx_v_data = 0;
+  __pyx_t_5_vegl_PyArrayInterface (*__pyx_v_inter);
+  PyObject *__pyx_v_hold_onto_until_done_with_array;
+  PyObject *__pyx_r;
+  PyObject *__pyx_1 = 0;
+  int __pyx_2;
+  int __pyx_3;
+  int __pyx_4;
+  int __pyx_5;
+  int __pyx_6;
+  int __pyx_7;
+  static char *__pyx_argnames[] = {"target","level","xoffset","width","format","type","data",0};
+  if (!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "OOOOOOO", __pyx_argnames, &__pyx_v_target, &__pyx_v_level, &__pyx_v_xoffset, &__pyx_v_width, &__pyx_v_format, &__pyx_v_type, &__pyx_v_data)) return 0;
+  Py_INCREF(__pyx_v_target);
+  Py_INCREF(__pyx_v_level);
+  Py_INCREF(__pyx_v_xoffset);
+  Py_INCREF(__pyx_v_width);
+  Py_INCREF(__pyx_v_format);
+  Py_INCREF(__pyx_v_type);
+  Py_INCREF(__pyx_v_data);
+  __pyx_v_hold_onto_until_done_with_array = Py_None; Py_INCREF(Py_None);
+
+  /* "/home/astraw/src/ve/visionegg-devel.root/trunk/visionegg/VisionEgg/_vegl.pyx":40 */
+  __pyx_1 = PyObject_GetAttr(__pyx_v_data, __pyx_n___array_struct__); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 40; goto __pyx_L1;}
+  Py_DECREF(__pyx_v_hold_onto_until_done_with_array);
+  __pyx_v_hold_onto_until_done_with_array = __pyx_1;
+  __pyx_1 = 0;
+
+  /* "/home/astraw/src/ve/visionegg-devel.root/trunk/visionegg/VisionEgg/_vegl.pyx":41 */
+  __pyx_v_inter = ((__pyx_t_5_vegl_PyArrayInterface (*))PyCObject_AsVoidPtr(__pyx_v_hold_onto_until_done_with_array));
+
+  /* "/home/astraw/src/ve/visionegg-devel.root/trunk/visionegg/VisionEgg/_vegl.pyx":42 */
+  if (!(__pyx_v_inter->two == 2)) {
+    PyErr_SetNone(PyExc_AssertionError);
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 42; goto __pyx_L1;}
+  }
+
+  /* "/home/astraw/src/ve/visionegg-devel.root/trunk/visionegg/VisionEgg/_vegl.pyx":44 */
+  __pyx_2 = PyInt_AsLong(__pyx_v_target); if (PyErr_Occurred()) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 44; goto __pyx_L1;}
+  __pyx_3 = PyInt_AsLong(__pyx_v_level); if (PyErr_Occurred()) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 44; goto __pyx_L1;}
+  __pyx_4 = PyInt_AsLong(__pyx_v_xoffset); if (PyErr_Occurred()) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 44; goto __pyx_L1;}
+  __pyx_5 = PyInt_AsLong(__pyx_v_width); if (PyErr_Occurred()) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 44; goto __pyx_L1;}
+  __pyx_6 = PyInt_AsLong(__pyx_v_format); if (PyErr_Occurred()) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 44; goto __pyx_L1;}
+  __pyx_7 = PyInt_AsLong(__pyx_v_type); if (PyErr_Occurred()) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 44; goto __pyx_L1;}
+  glTexSubImage1D(__pyx_2,__pyx_3,__pyx_4,__pyx_5,__pyx_6,__pyx_7,__pyx_v_inter->data);
+
+  __pyx_r = Py_None; Py_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1:;
+  Py_XDECREF(__pyx_1);
+  __Pyx_AddTraceback("_vegl.veglTexSubImage1D");
+  __pyx_r = 0;
+  __pyx_L0:;
+  Py_DECREF(__pyx_v_hold_onto_until_done_with_array);
+  Py_DECREF(__pyx_v_target);
+  Py_DECREF(__pyx_v_level);
+  Py_DECREF(__pyx_v_xoffset);
+  Py_DECREF(__pyx_v_width);
+  Py_DECREF(__pyx_v_format);
+  Py_DECREF(__pyx_v_type);
+  Py_DECREF(__pyx_v_data);
+  return __pyx_r;
+}
+
+static __Pyx_InternTabEntry __pyx_intern_tab[] = {
+  {&__pyx_n___array_struct__, "__array_struct__"},
+  {&__pyx_n_numpy, "numpy"},
+  {&__pyx_n_veglGetTexImage, "veglGetTexImage"},
+  {&__pyx_n_veglTexSubImage1D, "veglTexSubImage1D"},
+  {0, 0}
+};
+
+static struct PyMethodDef __pyx_methods[] = {
+  {"veglGetTexImage", (PyCFunction)__pyx_f_5_vegl_veglGetTexImage, METH_VARARGS|METH_KEYWORDS, 0},
+  {"veglTexSubImage1D", (PyCFunction)__pyx_f_5_vegl_veglTexSubImage1D, METH_VARARGS|METH_KEYWORDS, 0},
+  {0, 0, 0, 0}
+};
+
+static void __pyx_init_filenames(void); /*proto*/
+
+PyMODINIT_FUNC init_vegl(void); /*proto*/
+PyMODINIT_FUNC init_vegl(void) {
+  PyObject *__pyx_1 = 0;
+  __pyx_init_filenames();
+  __pyx_m = Py_InitModule4("_vegl", __pyx_methods, 0, 0, PYTHON_API_VERSION);
+  if (!__pyx_m) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2; goto __pyx_L1;};
+  __pyx_b = PyImport_AddModule("__builtin__");
+  if (!__pyx_b) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2; goto __pyx_L1;};
+  if (PyObject_SetAttrString(__pyx_m, "__builtins__", __pyx_b) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2; goto __pyx_L1;};
+  if (__Pyx_InternStrings(__pyx_intern_tab) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2; goto __pyx_L1;};
+
+  /* "/home/astraw/src/ve/visionegg-devel.root/trunk/visionegg/VisionEgg/_vegl.pyx":2 */
+  __pyx_1 = __Pyx_Import(__pyx_n_numpy, 0); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2; goto __pyx_L1;}
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_numpy, __pyx_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2; goto __pyx_L1;}
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
+
+  /* "/home/astraw/src/ve/visionegg-devel.root/trunk/visionegg/VisionEgg/_vegl.pyx":36 */
+  return;
+  __pyx_L1:;
+  Py_XDECREF(__pyx_1);
+  __Pyx_AddTraceback("_vegl");
+}
+
+static char *__pyx_filenames[] = {
+  "_vegl.pyx",
+};
+
+/* Runtime support code */
+
+static void __pyx_init_filenames(void) {
+  __pyx_f = __pyx_filenames;
+}
+
+static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list) {
+    PyObject *__import__ = 0;
+    PyObject *empty_list = 0;
+    PyObject *module = 0;
+    PyObject *global_dict = 0;
+    PyObject *empty_dict = 0;
+    PyObject *list;
+    __import__ = PyObject_GetAttrString(__pyx_b, "__import__");
+    if (!__import__)
+        goto bad;
+    if (from_list)
+        list = from_list;
+    else {
+        empty_list = PyList_New(0);
+        if (!empty_list)
+            goto bad;
+        list = empty_list;
+    }
+    global_dict = PyModule_GetDict(__pyx_m);
+    if (!global_dict)
+        goto bad;
+    empty_dict = PyDict_New();
+    if (!empty_dict)
+        goto bad;
+    module = PyObject_CallFunction(__import__, "OOOO",
+        name, global_dict, empty_dict, list);
+bad:
+    Py_XDECREF(empty_list);
+    Py_XDECREF(__import__);
+    Py_XDECREF(empty_dict);
+    return module;
+}
+
+static int __Pyx_InternStrings(__Pyx_InternTabEntry *t) {
+    while (t->p) {
+        *t->p = PyString_InternFromString(t->s);
+        if (!*t->p)
+            return -1;
+        ++t;
+    }
+    return 0;
+}
+
+#include "compile.h"
+#include "frameobject.h"
+#include "traceback.h"
+
+static void __Pyx_AddTraceback(char *funcname) {
+    PyObject *py_srcfile = 0;
+    PyObject *py_funcname = 0;
+    PyObject *py_globals = 0;
+    PyObject *empty_tuple = 0;
+    PyObject *empty_string = 0;
+    PyCodeObject *py_code = 0;
+    PyFrameObject *py_frame = 0;
+    
+    py_srcfile = PyString_FromString(__pyx_filename);
+    if (!py_srcfile) goto bad;
+    py_funcname = PyString_FromString(funcname);
+    if (!py_funcname) goto bad;
+    py_globals = PyModule_GetDict(__pyx_m);
+    if (!py_globals) goto bad;
+    empty_tuple = PyTuple_New(0);
+    if (!empty_tuple) goto bad;
+    empty_string = PyString_FromString("");
+    if (!empty_string) goto bad;
+    py_code = PyCode_New(
+        0,            /*int argcount,*/
+        0,            /*int nlocals,*/
+        0,            /*int stacksize,*/
+        0,            /*int flags,*/
+        empty_string, /*PyObject *code,*/
+        empty_tuple,  /*PyObject *consts,*/
+        empty_tuple,  /*PyObject *names,*/
+        empty_tuple,  /*PyObject *varnames,*/
+        empty_tuple,  /*PyObject *freevars,*/
+        empty_tuple,  /*PyObject *cellvars,*/
+        py_srcfile,   /*PyObject *filename,*/
+        py_funcname,  /*PyObject *name,*/
+        __pyx_lineno,   /*int firstlineno,*/
+        empty_string  /*PyObject *lnotab*/
+    );
+    if (!py_code) goto bad;
+    py_frame = PyFrame_New(
+        PyThreadState_Get(), /*PyThreadState *tstate,*/
+        py_code,             /*PyCodeObject *code,*/
+        py_globals,          /*PyObject *globals,*/
+        0                    /*PyObject *locals*/
+    );
+    if (!py_frame) goto bad;
+    py_frame->f_lineno = __pyx_lineno;
+    PyTraceBack_Here(py_frame);
+bad:
+    Py_XDECREF(py_srcfile);
+    Py_XDECREF(py_funcname);
+    Py_XDECREF(empty_tuple);
+    Py_XDECREF(empty_string);
+    Py_XDECREF(py_code);
+    Py_XDECREF(py_frame);
+}
diff --git a/VisionEgg/_vegl.pyx b/VisionEgg/_vegl.pyx
new file mode 100644
index 0000000..5a15355
--- /dev/null
+++ b/VisionEgg/_vegl.pyx
@@ -0,0 +1,44 @@
+#emacs, this is -*-Python-*- mode
+import numpy
+
+ctypedef int GLenum
+ctypedef int GLint
+ctypedef int GLsizei
+
+cdef extern from "vegl.h":
+    void glGetTexImage( int, int, int, int, void* )
+    void glTexSubImage1D( GLenum, GLint, GLint, GLsizei, GLenum, GLenum, void* )
+
+cdef extern from "Python.h":
+    ctypedef int Py_intptr_t
+    void* PyCObject_AsVoidPtr(object)
+
+# numpy's __array_struct__ interface:
+ctypedef struct PyArrayInterface:
+    int two                       # contains the integer 2 as a sanity check
+    int nd                        # number of dimensions
+    char typekind                 # kind in array --- character code of typestr
+    int itemsize                  # size of each element
+    int flags                     # flags indicating how the data should be interpreted
+    Py_intptr_t *shape            # A length-nd array of shape information
+    Py_intptr_t *strides          # A length-nd array of stride information
+    void *data                    # A pointer to the first element of the array
+
+def veglGetTexImage(target, level, format, type, buf):
+    cdef PyArrayInterface* inter
+
+    hold_onto_until_done_with_array = buf.__array_struct__
+    inter = <PyArrayInterface*>PyCObject_AsVoidPtr( hold_onto_until_done_with_array )
+    assert inter.two == 2
+
+    glGetTexImage(target, level, format, type, inter.data )
+
+def veglTexSubImage1D( target, level, xoffset, width, format, type, data ):
+    # PyOpenGL 2.0.1.09 has a bug, so use our own wrapper
+    cdef PyArrayInterface* inter
+
+    hold_onto_until_done_with_array = data.__array_struct__
+    inter = <PyArrayInterface*>PyCObject_AsVoidPtr( hold_onto_until_done_with_array )
+    assert inter.two == 2
+
+    glTexSubImage1D( target, level, xoffset, width, format, type, inter.data)
diff --git a/VisionEgg/darwin_getrefresh.m b/VisionEgg/darwin_getrefresh.m
new file mode 100644
index 0000000..fc3c712
--- /dev/null
+++ b/VisionEgg/darwin_getrefresh.m
@@ -0,0 +1,54 @@
+#include <stdlib.h>
+#import <Cocoa/Cocoa.h>
+
+int darwin_getrefresh_error = 0;
+const char * darwin_getrefresh_error_str= NULL;
+
+int darwin_getrefresh_err_occurred( void ) {
+  return darwin_getrefresh_error;
+}
+const char * darwin_getrefresh_err_message( void ) {
+  return darwin_getrefresh_error_str;
+}
+void darwin_getrefresh_set_error(const char * errmsg) {
+  darwin_getrefresh_error = 1;
+  darwin_getrefresh_error_str = errmsg;
+}
+
+double getrefresh( void ) {            
+  // This is based on SDL12 http://www.libsdl.org/ 
+
+  CFDictionaryRef mode = NULL;
+  CFNumberRef refreshRateCFNumber = NULL;
+  double refreshRate;
+            
+  mode = CGDisplayCurrentMode(kCGDirectMainDisplay);
+  if ( NULL == mode ) {
+    darwin_getrefresh_set_error("Cannot get display mode");
+    goto ERROR;
+  }
+  refreshRateCFNumber = CFDictionaryGetValue (mode, kCGDisplayRefreshRate);
+  if ( NULL == refreshRateCFNumber ) {
+    darwin_getrefresh_set_error("Mode has no refresh rate");
+    goto ERROR;
+  }
+  if ( 0 == CFNumberGetValue (refreshRateCFNumber, kCFNumberDoubleType, &refreshRate) ) {
+    // From CGDirectDisplay.h: (Mac OS X 10.2.6, Dec 2002 Developer Tools:
+    //
+    // Some display systems may not conventional video vertical and
+    // horizontal sweep in painting.  These displays report a
+    // kCGDisplayRefreshRate of 0 in the CFDictionaryRef returned by
+    // CGDisplayCurrentMode().  On such displays, this function
+    // returns at once.
+    darwin_getrefresh_set_error("Error getting refresh rate - no conventional video sweep?");
+    goto ERROR;
+  }
+  if ( 0 == refreshRate ) {
+    // 
+    darwin_getrefresh_set_error("Error getting refresh rate - no conventional video sweep?");
+    goto ERROR;
+  }
+  return refreshRate;
+ ERROR:
+  return 0;
+}
diff --git a/VisionEgg/darwin_getrefresh.py b/VisionEgg/darwin_getrefresh.py
new file mode 100644
index 0000000..7cb2936
--- /dev/null
+++ b/VisionEgg/darwin_getrefresh.py
@@ -0,0 +1,41 @@
+# This file was created automatically by SWIG.
+# Don't modify this file, modify the SWIG interface instead.
+# This file is compatible with both classic and new-style classes.
+
+import _darwin_getrefresh
+
+def _swig_setattr_nondynamic(self,class_type,name,value,static=1):
+    if (name == "this"):
+        if isinstance(value, class_type):
+            self.__dict__[name] = value.this
+            if hasattr(value,"thisown"): self.__dict__["thisown"] = value.thisown
+            del value.thisown
+            return
+    method = class_type.__swig_setmethods__.get(name,None)
+    if method: return method(self,value)
+    if (not static) or hasattr(self,name) or (name == "thisown"):
+        self.__dict__[name] = value
+    else:
+        raise AttributeError("You cannot add attributes to %s" % self)
+
+def _swig_setattr(self,class_type,name,value):
+    return _swig_setattr_nondynamic(self,class_type,name,value,0)
+
+def _swig_getattr(self,class_type,name):
+    method = class_type.__swig_getmethods__.get(name,None)
+    if method: return method(self)
+    raise AttributeError,name
+
+import types
+try:
+    _object = types.ObjectType
+    _newclass = 1
+except AttributeError:
+    class _object : pass
+    _newclass = 0
+del types
+
+
+
+getrefresh = _darwin_getrefresh.getrefresh
+
diff --git a/VisionEgg/darwin_getrefresh_wrap.c b/VisionEgg/darwin_getrefresh_wrap.c
new file mode 100644
index 0000000..ecd016f
--- /dev/null
+++ b/VisionEgg/darwin_getrefresh_wrap.c
@@ -0,0 +1,1743 @@
+/* ----------------------------------------------------------------------------
+ * This file was automatically generated by SWIG (http://www.swig.org).
+ * Version 1.3.24
+ * 
+ * This file is not intended to be easily readable and contains a number of 
+ * coding conventions designed to improve portability and efficiency. Do not make
+ * changes to this file unless you know what you are doing--modify the SWIG 
+ * interface file instead. 
+ * ----------------------------------------------------------------------------- */
+
+#define SWIGPYTHON
+
+#ifndef SWIG_TEMPLATE_DISAMBIGUATOR
+#  if defined(__SUNPRO_CC) 
+#    define SWIG_TEMPLATE_DISAMBIGUATOR template
+#  else
+#    define SWIG_TEMPLATE_DISAMBIGUATOR 
+#  endif
+#endif
+
+
+#include <Python.h>
+
+/***********************************************************************
+ * swigrun.swg
+ *
+ *     This file contains generic CAPI SWIG runtime support for pointer
+ *     type checking.
+ *
+ ************************************************************************/
+
+/* This should only be incremented when either the layout of swig_type_info changes,
+   or for whatever reason, the runtime changes incompatibly */
+#define SWIG_RUNTIME_VERSION "1"
+
+/* define SWIG_TYPE_TABLE_NAME as "SWIG_TYPE_TABLE" */
+#ifdef SWIG_TYPE_TABLE
+#define SWIG_QUOTE_STRING(x) #x
+#define SWIG_EXPAND_AND_QUOTE_STRING(x) SWIG_QUOTE_STRING(x)
+#define SWIG_TYPE_TABLE_NAME SWIG_EXPAND_AND_QUOTE_STRING(SWIG_TYPE_TABLE)
+#else
+#define SWIG_TYPE_TABLE_NAME
+#endif
+
+#include <string.h>
+
+#ifndef SWIGINLINE
+#if defined(__cplusplus) || (defined(__GNUC__) && !defined(__STRICT_ANSI__))
+#  define SWIGINLINE inline
+#else
+#  define SWIGINLINE
+#endif
+#endif
+
+/*
+  You can use the SWIGRUNTIME and SWIGRUNTIMEINLINE macros for
+  creating a static or dynamic library from the swig runtime code.
+  In 99.9% of the cases, swig just needs to declare them as 'static'.
+  
+  But only do this if is strictly necessary, ie, if you have problems
+  with your compiler or so.
+*/
+#ifndef SWIGRUNTIME
+#define SWIGRUNTIME static
+#endif
+#ifndef SWIGRUNTIMEINLINE
+#define SWIGRUNTIMEINLINE SWIGRUNTIME SWIGINLINE
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef void *(*swig_converter_func)(void *);
+typedef struct swig_type_info *(*swig_dycast_func)(void **);
+
+typedef struct swig_type_info {
+  const char             *name;
+  swig_converter_func     converter;
+  const char             *str;
+  void                   *clientdata;
+  swig_dycast_func        dcast;
+  struct swig_type_info  *next;
+  struct swig_type_info  *prev;
+} swig_type_info;
+
+/* 
+  Compare two type names skipping the space characters, therefore
+  "char*" == "char *" and "Class<int>" == "Class<int >", etc.
+
+  Return 0 when the two name types are equivalent, as in
+  strncmp, but skipping ' '.
+*/
+SWIGRUNTIME int
+SWIG_TypeNameComp(const char *f1, const char *l1,
+		  const char *f2, const char *l2) {
+  for (;(f1 != l1) && (f2 != l2); ++f1, ++f2) {
+    while ((*f1 == ' ') && (f1 != l1)) ++f1;
+    while ((*f2 == ' ') && (f2 != l2)) ++f2;
+    if (*f1 != *f2) return *f1 - *f2;
+  }
+  return (l1 - f1) - (l2 - f2);
+}
+
+/*
+  Check type equivalence in a name list like <name1>|<name2>|...
+*/
+SWIGRUNTIME int
+SWIG_TypeEquiv(const char *nb, const char *tb) {
+  int equiv = 0;
+  const char* te = tb + strlen(tb);
+  const char* ne = nb;
+  while (!equiv && *ne) {
+    for (nb = ne; *ne; ++ne) {
+      if (*ne == '|') break;
+    }
+    equiv = SWIG_TypeNameComp(nb, ne, tb, te) == 0;
+    if (*ne) ++ne;
+  }
+  return equiv;
+}
+
+/*
+  Register a type mapping with the type-checking
+*/
+SWIGRUNTIME swig_type_info *
+SWIG_TypeRegisterTL(swig_type_info **tl, swig_type_info *ti) {
+  swig_type_info *tc, *head, *ret, *next;
+  /* Check to see if this type has already been registered */
+  tc = *tl;
+  while (tc) {
+    /* check simple type equivalence */
+    int typeequiv = (strcmp(tc->name, ti->name) == 0);   
+    /* check full type equivalence, resolving typedefs */
+    if (!typeequiv) {
+      /* only if tc is not a typedef (no '|' on it) */
+      if (tc->str && ti->str && !strstr(tc->str,"|")) {
+	typeequiv = SWIG_TypeEquiv(ti->str,tc->str);
+      }
+    }
+    if (typeequiv) {
+      /* Already exists in the table.  Just add additional types to the list */
+      if (ti->clientdata) tc->clientdata = ti->clientdata;
+      head = tc;
+      next = tc->next;
+      goto l1;
+    }
+    tc = tc->prev;
+  }
+  head = ti;
+  next = 0;
+
+  /* Place in list */
+  ti->prev = *tl;
+  *tl = ti;
+
+  /* Build linked lists */
+  l1:
+  ret = head;
+  tc = ti + 1;
+  /* Patch up the rest of the links */
+  while (tc->name) {
+    head->next = tc;
+    tc->prev = head;
+    head = tc;
+    tc++;
+  }
+  if (next) next->prev = head;
+  head->next = next;
+
+  return ret;
+}
+
+/*
+  Check the typename
+*/
+SWIGRUNTIME swig_type_info *
+SWIG_TypeCheck(const char *c, swig_type_info *ty) {
+  swig_type_info *s;
+  if (!ty) return 0;        /* Void pointer */
+  s = ty->next;             /* First element always just a name */
+  do {
+    if (strcmp(s->name,c) == 0) {
+      if (s == ty->next) return s;
+      /* Move s to the top of the linked list */
+      s->prev->next = s->next;
+      if (s->next) {
+        s->next->prev = s->prev;
+      }
+      /* Insert s as second element in the list */
+      s->next = ty->next;
+      if (ty->next) ty->next->prev = s;
+      ty->next = s;
+      s->prev = ty;
+      return s;
+    }
+    s = s->next;
+  } while (s && (s != ty->next));
+  return 0;
+}
+
+/*
+  Cast a pointer up an inheritance hierarchy
+*/
+SWIGRUNTIMEINLINE void *
+SWIG_TypeCast(swig_type_info *ty, void *ptr) {
+  return ((!ty) || (!ty->converter)) ? ptr : (*ty->converter)(ptr);
+}
+
+/* 
+   Dynamic pointer casting. Down an inheritance hierarchy
+*/
+SWIGRUNTIME swig_type_info *
+SWIG_TypeDynamicCast(swig_type_info *ty, void **ptr) {
+  swig_type_info *lastty = ty;
+  if (!ty || !ty->dcast) return ty;
+  while (ty && (ty->dcast)) {
+    ty = (*ty->dcast)(ptr);
+    if (ty) lastty = ty;
+  }
+  return lastty;
+}
+
+/*
+  Return the name associated with this type
+*/
+SWIGRUNTIMEINLINE const char *
+SWIG_TypeName(const swig_type_info *ty) {
+  return ty->name;
+}
+
+/*
+  Return the pretty name associated with this type,
+  that is an unmangled type name in a form presentable to the user.
+*/
+SWIGRUNTIME const char *
+SWIG_TypePrettyName(const swig_type_info *type) {
+  /* The "str" field contains the equivalent pretty names of the
+     type, separated by vertical-bar characters.  We choose
+     to print the last name, as it is often (?) the most
+     specific. */
+  if (type->str != NULL) {
+    const char *last_name = type->str;
+    const char *s;
+    for (s = type->str; *s; s++)
+      if (*s == '|') last_name = s+1;
+    return last_name;
+  }
+  else
+    return type->name;
+}
+
+/*
+  Search for a swig_type_info structure
+*/
+SWIGRUNTIME swig_type_info *
+SWIG_TypeQueryTL(swig_type_info *tl, const char *name) {
+  swig_type_info *ty = tl;
+  while (ty) {
+    if (ty->str && (SWIG_TypeEquiv(ty->str,name))) return ty;
+    if (ty->name && (strcmp(name,ty->name) == 0)) return ty;
+    ty = ty->prev;
+  }
+  return 0;
+}
+
+/* 
+   Set the clientdata field for a type
+*/
+SWIGRUNTIME void
+SWIG_TypeClientDataTL(swig_type_info *tl, swig_type_info *ti, void *clientdata) {
+  swig_type_info *tc, *equiv;
+  if (ti->clientdata) return;
+  /* if (ti->clientdata == clientdata) return; */
+  ti->clientdata = clientdata;
+  equiv = ti->next;
+  while (equiv) {
+    if (!equiv->converter) {
+      tc = tl;
+      while (tc) {
+        if ((strcmp(tc->name, equiv->name) == 0))
+          SWIG_TypeClientDataTL(tl,tc,clientdata);
+        tc = tc->prev;
+      }
+    }
+    equiv = equiv->next;
+  }
+}
+
+/* 
+   Pack binary data into a string
+*/
+SWIGRUNTIME char *
+SWIG_PackData(char *c, void *ptr, size_t sz) {
+  static char hex[17] = "0123456789abcdef";
+  unsigned char *u = (unsigned char *) ptr;
+  const unsigned char *eu =  u + sz;
+  register unsigned char uu;
+  for (; u != eu; ++u) {
+    uu = *u;
+    *(c++) = hex[(uu & 0xf0) >> 4];
+    *(c++) = hex[uu & 0xf];
+  }
+  return c;
+}
+
+/* 
+   Unpack binary data from a string
+*/
+SWIGRUNTIME const char *
+SWIG_UnpackData(const char *c, void *ptr, size_t sz) {
+  register unsigned char *u = (unsigned char *) ptr;
+  register const unsigned char *eu =  u + sz;
+  for (; u != eu; ++u) {
+    register int d = *(c++);
+    register unsigned char uu = 0;
+    if ((d >= '0') && (d <= '9'))
+      uu = ((d - '0') << 4);
+    else if ((d >= 'a') && (d <= 'f'))
+      uu = ((d - ('a'-10)) << 4);
+    else 
+      return (char *) 0;
+    d = *(c++);
+    if ((d >= '0') && (d <= '9'))
+      uu |= (d - '0');
+    else if ((d >= 'a') && (d <= 'f'))
+      uu |= (d - ('a'-10));
+    else 
+      return (char *) 0;
+    *u = uu;
+  }
+  return c;
+}
+
+/*
+  This function will propagate the clientdata field of type to any new
+  swig_type_info structures that have been added into the list of
+  equivalent types.  It is like calling SWIG_TypeClientData(type,
+  clientdata) a second time.
+*/
+SWIGRUNTIME void
+SWIG_PropagateClientDataTL(swig_type_info *tl, swig_type_info *type) {
+  swig_type_info *equiv = type->next;
+  swig_type_info *tc;
+  if (!type->clientdata) return;
+  while (equiv) {
+    if (!equiv->converter) {
+      tc = tl;
+      while (tc) {
+        if ((strcmp(tc->name, equiv->name) == 0) && !tc->clientdata)
+          SWIG_TypeClientDataTL(tl,tc, type->clientdata);
+        tc = tc->prev;
+      }
+    }
+    equiv = equiv->next;
+  }
+}
+
+/* 
+   Pack 'void *' into a string buffer.
+*/
+SWIGRUNTIME char *
+SWIG_PackVoidPtr(char *buff, void *ptr, const char *name, size_t bsz) {
+  char *r = buff;
+  if ((2*sizeof(void *) + 2) > bsz) return 0;
+  *(r++) = '_';
+  r = SWIG_PackData(r,&ptr,sizeof(void *));
+  if (strlen(name) + 1 > (bsz - (r - buff))) return 0;
+  strcpy(r,name);
+  return buff;
+}
+
+SWIGRUNTIME const char *
+SWIG_UnpackVoidPtr(const char *c, void **ptr, const char *name) {
+  if (*c != '_') {
+    if (strcmp(c,"NULL") == 0) {
+      *ptr = (void *) 0;
+      return name;
+    } else {
+      return 0;
+    }
+  }
+  return SWIG_UnpackData(++c,ptr,sizeof(void *));
+}
+
+SWIGRUNTIME char *
+SWIG_PackDataName(char *buff, void *ptr, size_t sz, const char *name, size_t bsz) {
+  char *r = buff;
+  size_t lname = (name ? strlen(name) : 0);
+  if ((2*sz + 2 + lname) > bsz) return 0;
+  *(r++) = '_';
+  r = SWIG_PackData(r,ptr,sz);
+  if (lname) {
+    strncpy(r,name,lname+1);
+  } else {
+    *r = 0;
+  }
+  return buff;
+}
+
+SWIGRUNTIME const char *
+SWIG_UnpackDataName(const char *c, void *ptr, size_t sz, const char *name) {
+  if (*c != '_') {
+    if (strcmp(c,"NULL") == 0) {
+      memset(ptr,0,sz);
+      return name;
+    } else {
+      return 0;
+    }
+  }
+  return SWIG_UnpackData(++c,ptr,sz);
+}
+
+#ifdef __cplusplus
+}
+#endif
+
+/***********************************************************************
+ * common.swg
+ *
+ *     This file contains generic SWIG runtime support for pointer
+ *     type checking as well as a few commonly used macros to control
+ *     external linkage.
+ *
+ * Author : David Beazley (beazley at cs.uchicago.edu)
+ *
+ * Copyright (c) 1999-2000, The University of Chicago
+ * 
+ * This file may be freely redistributed without license or fee provided
+ * this copyright message remains intact.
+ ************************************************************************/
+
+
+#if defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__)
+#  if !defined(STATIC_LINKED)
+#    define SWIGEXPORT(a) __declspec(dllexport) a
+#  else
+#    define SWIGEXPORT(a) a
+#  endif
+#else
+#  define SWIGEXPORT(a) a
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/*************************************************************************/
+
+
+/* The static type info list */
+
+static swig_type_info *swig_type_list = 0;
+static swig_type_info **swig_type_list_handle = &swig_type_list;
+  
+
+/* Register a type mapping with the type-checking */
+static swig_type_info *
+SWIG_TypeRegister(swig_type_info *ti) {
+  return SWIG_TypeRegisterTL(swig_type_list_handle, ti);
+}
+
+/* Search for a swig_type_info structure */
+static swig_type_info *
+SWIG_TypeQuery(const char *name) {
+  return SWIG_TypeQueryTL(*swig_type_list_handle, name);
+}
+
+/* Set the clientdata field for a type */
+static void
+SWIG_TypeClientData(swig_type_info *ti, void *clientdata) {
+  SWIG_TypeClientDataTL(*swig_type_list_handle, ti, clientdata);
+}
+
+/* This function will propagate the clientdata field of type to
+* any new swig_type_info structures that have been added into the list
+* of equivalent types.  It is like calling
+* SWIG_TypeClientData(type, clientdata) a second time.
+*/
+static void
+SWIG_PropagateClientData(swig_type_info *type) {
+  SWIG_PropagateClientDataTL(*swig_type_list_handle, type);
+}
+
+#ifdef __cplusplus
+}
+#endif
+
+/* -----------------------------------------------------------------------------
+ * SWIG API. Portion that goes into the runtime
+ * ----------------------------------------------------------------------------- */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* -----------------------------------------------------------------------------
+ * for internal method declarations
+ * ----------------------------------------------------------------------------- */
+
+#ifndef SWIGINTERN
+#define SWIGINTERN static 
+#endif
+
+#ifndef SWIGINTERNSHORT
+#ifdef __cplusplus
+#define SWIGINTERNSHORT static inline 
+#else /* C case */
+#define SWIGINTERNSHORT static 
+#endif /* __cplusplus */
+#endif
+
+
+/*
+  Exception handling in wrappers
+*/
+#define SWIG_fail                goto fail
+#define SWIG_arg_fail(arg)       SWIG_Python_ArgFail(arg)
+#define SWIG_append_errmsg(msg)   SWIG_Python_AddErrMesg(msg,0)
+#define SWIG_preppend_errmsg(msg) SWIG_Python_AddErrMesg(msg,1)
+#define SWIG_type_error(type,obj) SWIG_Python_TypeError(type,obj)
+#define SWIG_null_ref(type)       SWIG_Python_NullRef(type)
+
+/*
+  Contract support
+*/
+#define SWIG_contract_assert(expr, msg) \
+ if (!(expr)) { PyErr_SetString(PyExc_RuntimeError, (char *) msg ); goto fail; } else
+
+/* -----------------------------------------------------------------------------
+ * Constant declarations
+ * ----------------------------------------------------------------------------- */
+
+/* Constant Types */
+#define SWIG_PY_INT     1
+#define SWIG_PY_FLOAT   2
+#define SWIG_PY_STRING  3
+#define SWIG_PY_POINTER 4
+#define SWIG_PY_BINARY  5
+
+/* Constant information structure */
+typedef struct swig_const_info {
+    int type;
+    char *name;
+    long lvalue;
+    double dvalue;
+    void   *pvalue;
+    swig_type_info **ptype;
+} swig_const_info;
+
+
+/* -----------------------------------------------------------------------------
+ * Alloc. memory flags
+ * ----------------------------------------------------------------------------- */
+#define SWIG_OLDOBJ  1
+#define SWIG_NEWOBJ  SWIG_OLDOBJ + 1
+#define SWIG_PYSTR   SWIG_NEWOBJ + 1
+
+#ifdef __cplusplus
+}
+#endif
+
+
+/***********************************************************************
+ * pyrun.swg
+ *
+ *     This file contains the runtime support for Python modules
+ *     and includes code for managing global variables and pointer
+ *     type checking.
+ *
+ * Author : David Beazley (beazley at cs.uchicago.edu)
+ ************************************************************************/
+
+/* Common SWIG API */
+#define SWIG_ConvertPtr(obj, pp, type, flags)    SWIG_Python_ConvertPtr(obj, pp, type, flags)
+#define SWIG_NewPointerObj(p, type, flags)       SWIG_Python_NewPointerObj(p, type, flags)
+#define SWIG_MustGetPtr(p, type, argnum, flags)  SWIG_Python_MustGetPtr(p, type, argnum, flags)
+ 
+
+/* Python-specific SWIG API */
+#define SWIG_ConvertPacked(obj, ptr, sz, ty, flags)   SWIG_Python_ConvertPacked(obj, ptr, sz, ty, flags)
+#define SWIG_NewPackedObj(ptr, sz, type)              SWIG_Python_NewPackedObj(ptr, sz, type)
+
+
+/* -----------------------------------------------------------------------------
+ * Pointer declarations
+ * ----------------------------------------------------------------------------- */
+/*
+  Use SWIG_NO_COBJECT_TYPES to force the use of strings to represent
+  C/C++ pointers in the python side. Very useful for debugging, but
+  not always safe.
+*/
+#if !defined(SWIG_NO_COBJECT_TYPES) && !defined(SWIG_COBJECT_TYPES)
+#  define SWIG_COBJECT_TYPES
+#endif
+
+/* Flags for pointer conversion */
+#define SWIG_POINTER_EXCEPTION     0x1
+#define SWIG_POINTER_DISOWN        0x2
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* -----------------------------------------------------------------------------
+ * Create a new pointer string 
+ * ----------------------------------------------------------------------------- */
+
+#ifndef SWIG_BUFFER_SIZE
+#define SWIG_BUFFER_SIZE 1024
+#endif
+
+#if defined(SWIG_COBJECT_TYPES)
+#if !defined(SWIG_COBJECT_PYTHON)
+/* -----------------------------------------------------------------------------
+ * Implements a simple Swig Object type, and use it instead of PyCObject
+ * ----------------------------------------------------------------------------- */
+
+typedef struct {
+  PyObject_HEAD
+  void *ptr;
+  const char *desc;
+} PySwigObject;
+
+/* Declarations for objects of type PySwigObject */
+
+SWIGRUNTIME int
+PySwigObject_print(PySwigObject *v, FILE *fp, int flags)
+{
+  char result[SWIG_BUFFER_SIZE];
+  if (SWIG_PackVoidPtr(result, v->ptr, v->desc, sizeof(result))) {
+    fputs("<Swig Object at ", fp); fputs(result, fp); fputs(">", fp);
+    return 0; 
+  } else {
+    return 1; 
+  }
+}
+  
+SWIGRUNTIME PyObject *
+PySwigObject_repr(PySwigObject *v)
+{
+  char result[SWIG_BUFFER_SIZE];
+  return SWIG_PackVoidPtr(result, v->ptr, v->desc, sizeof(result)) ?
+    PyString_FromFormat("<Swig Object at %s>", result) : 0;
+}
+
+SWIGRUNTIME PyObject *
+PySwigObject_str(PySwigObject *v)
+{
+  char result[SWIG_BUFFER_SIZE];
+  return SWIG_PackVoidPtr(result, v->ptr, v->desc, sizeof(result)) ?
+    PyString_FromString(result) : 0;
+}
+
+SWIGRUNTIME PyObject *
+PySwigObject_long(PySwigObject *v)
+{
+  return PyLong_FromUnsignedLong((unsigned long) v->ptr);
+}
+
+SWIGRUNTIME PyObject *
+PySwigObject_oct(PySwigObject *v)
+{
+  char buf[100];
+  unsigned long x = (unsigned long)v->ptr;
+  if (x == 0)
+    strcpy(buf, "0");
+  else
+    PyOS_snprintf(buf, sizeof(buf), "0%lo", x);
+  return PyString_FromString(buf);
+}
+
+SWIGRUNTIME PyObject *
+PySwigObject_hex(PySwigObject *v)
+{
+  char buf[100];
+  PyOS_snprintf(buf, sizeof(buf), "0x%lx", (unsigned long)v->ptr);
+  return PyString_FromString(buf);
+}
+
+SWIGRUNTIME int
+PySwigObject_compare(PySwigObject *v, PySwigObject *w)
+{
+  int c = strcmp(v->desc, w->desc);
+  if (c) {
+    return c;
+  } else {
+    void *i = v->ptr;
+    void *j = w->ptr;
+    return (i < j) ? -1 : (i > j) ? 1 : 0;
+  }
+}
+
+SWIGRUNTIME void
+PySwigObject_dealloc(PySwigObject *self)
+{
+  PyObject_DEL(self);
+}
+
+SWIGRUNTIME PyTypeObject*
+PySwigObject_GetType() {
+  static char PySwigObject_Type__doc__[] = 
+    "Swig object carries a C/C++ instance pointer";
+  
+  static PyNumberMethods PySwigObject_as_number = {
+    (binaryfunc)0, /*nb_add*/
+    (binaryfunc)0, /*nb_subtract*/
+    (binaryfunc)0, /*nb_multiply*/
+    (binaryfunc)0, /*nb_divide*/
+    (binaryfunc)0, /*nb_remainder*/
+    (binaryfunc)0, /*nb_divmod*/
+    (ternaryfunc)0,/*nb_power*/
+    (unaryfunc)0,  /*nb_negative*/
+    (unaryfunc)0,  /*nb_positive*/
+    (unaryfunc)0,  /*nb_absolute*/
+    (inquiry)0,    /*nb_nonzero*/
+    0,		   /*nb_invert*/
+    0,		   /*nb_lshift*/
+    0,		   /*nb_rshift*/
+    0,		   /*nb_and*/
+    0,		   /*nb_xor*/
+    0,		   /*nb_or*/
+    (coercion)0,   /*nb_coerce*/
+    (unaryfunc)PySwigObject_long, /*nb_int*/
+    (unaryfunc)PySwigObject_long, /*nb_long*/
+    (unaryfunc)0,                 /*nb_float*/
+    (unaryfunc)PySwigObject_oct,  /*nb_oct*/
+    (unaryfunc)PySwigObject_hex,  /*nb_hex*/
+#if PY_VERSION_HEX >= 0x02000000
+    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 /* nb_inplace_add -> nb_inplace_true_divide */ 
+#endif
+  };
+
+  static int type_init = 0;  
+  static PyTypeObject PySwigObject_Type;
+
+  if (!type_init) {
+    PyTypeObject tmp = {
+    PyObject_HEAD_INIT(&PyType_Type)
+    0,					/*ob_size*/
+    "PySwigObject",			/*tp_name*/
+    sizeof(PySwigObject),		/*tp_basicsize*/
+    0,					/*tp_itemsize*/
+    /* methods */
+    (destructor)PySwigObject_dealloc,	/*tp_dealloc*/
+    (printfunc)PySwigObject_print,	/*tp_print*/
+    (getattrfunc)0,			/*tp_getattr*/
+    (setattrfunc)0,			/*tp_setattr*/
+    (cmpfunc)PySwigObject_compare,	/*tp_compare*/
+    (reprfunc)PySwigObject_repr,	/*tp_repr*/
+    &PySwigObject_as_number,	        /*tp_as_number*/
+    0,					/*tp_as_sequence*/
+    0,					/*tp_as_mapping*/
+    (hashfunc)0,			/*tp_hash*/
+    (ternaryfunc)0,			/*tp_call*/
+    (reprfunc)PySwigObject_str,		/*tp_str*/
+    /* Space for future expansion */
+    0L,0L,0L,0L,
+    PySwigObject_Type__doc__, 	        /* Documentation string */
+#if PY_VERSION_HEX >= 0x02000000
+    0,                                  /* tp_traverse */
+    0,                                  /* tp_clear */
+#endif
+#if PY_VERSION_HEX >= 0x02010000
+    0,                                  /* tp_richcompare */
+    0,                                  /* tp_weaklistoffset */
+#endif
+#if PY_VERSION_HEX >= 0x02020000
+    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* tp_iter -> tp_weaklist */
+#endif
+#if PY_VERSION_HEX >= 0x02030000
+    0,                                  /* tp_del */
+#endif
+#ifdef COUNT_ALLOCS
+    0,0,0,0                             /* tp_alloc -> tp_next */
+#endif
+    };
+
+    PySwigObject_Type = tmp;
+    type_init = 1;
+  }
+
+  return &PySwigObject_Type;
+}
+
+SWIGRUNTIME PyObject *
+PySwigObject_FromVoidPtrAndDesc(void *ptr, const char *desc)
+{
+  PySwigObject *self = PyObject_NEW(PySwigObject, PySwigObject_GetType());
+  if (self == NULL) return NULL;
+  self->ptr = ptr;
+  self->desc = desc;
+  return (PyObject *)self;
+}
+
+SWIGRUNTIMEINLINE void *
+PySwigObject_AsVoidPtr(PyObject *self)
+{
+  return ((PySwigObject *)self)->ptr;
+}
+
+SWIGRUNTIMEINLINE const char *
+PySwigObject_GetDesc(PyObject *self)
+{
+  return ((PySwigObject *)self)->desc;
+}
+
+SWIGRUNTIMEINLINE int
+PySwigObject_Check(PyObject *op) {
+  return ((op)->ob_type == PySwigObject_GetType()) 
+    || (strcmp((op)->ob_type->tp_name,"PySwigObject") == 0);
+}
+
+/* -----------------------------------------------------------------------------
+ * Implements a simple Swig Packed type, and use it instead of string
+ * ----------------------------------------------------------------------------- */
+
+typedef struct {
+  PyObject_HEAD
+  void *pack;
+  const char *desc;
+  size_t size;
+} PySwigPacked;
+
+SWIGRUNTIME int
+PySwigPacked_print(PySwigPacked *v, FILE *fp, int flags)
+{
+  char result[SWIG_BUFFER_SIZE];
+  fputs("<Swig Packed ", fp); 
+  if (SWIG_PackDataName(result, v->pack, v->size, 0, sizeof(result))) {
+    fputs("at ", fp); 
+    fputs(result, fp); 
+  }
+  fputs(v->desc,fp); 
+  fputs(">", fp);
+  return 0; 
+}
+  
+SWIGRUNTIME PyObject *
+PySwigPacked_repr(PySwigPacked *v)
+{
+  char result[SWIG_BUFFER_SIZE];
+  if (SWIG_PackDataName(result, v->pack, v->size, 0, sizeof(result))) {
+    return PyString_FromFormat("<Swig Packed at %s%s>", result, v->desc);
+  } else {
+    return PyString_FromFormat("<Swig Packed %s>", v->desc);
+  }  
+}
+
+SWIGRUNTIME PyObject *
+PySwigPacked_str(PySwigPacked *v)
+{
+  char result[SWIG_BUFFER_SIZE];
+  if (SWIG_PackDataName(result, v->pack, v->size, 0, sizeof(result))){
+    return PyString_FromFormat("%s%s", result, v->desc);
+  } else {
+    return PyString_FromFormat("%s", v->desc);
+  }  
+}
+
+SWIGRUNTIME int
+PySwigPacked_compare(PySwigPacked *v, PySwigPacked *w)
+{
+  int c = strcmp(v->desc, w->desc);
+  if (c) {
+    return c;
+  } else {
+    size_t i = v->size;
+    size_t j = w->size;
+    int s = (i < j) ? -1 : (i > j) ? 1 : 0;
+    return s ? s : strncmp((char *)v->pack, (char *)w->pack, 2*v->size);
+  }
+}
+
+SWIGRUNTIME void
+PySwigPacked_dealloc(PySwigPacked *self)
+{
+  free(self->pack);
+  PyObject_DEL(self);
+}
+
+SWIGRUNTIME PyTypeObject*
+PySwigPacked_GetType() {
+  static char PySwigPacked_Type__doc__[] = 
+    "Swig object carries a C/C++ instance pointer";
+  static int type_init = 0;
+  
+  static PyTypeObject PySwigPacked_Type;
+  if (!type_init) {
+    PyTypeObject tmp = {
+    PyObject_HEAD_INIT(&PyType_Type)
+    0,					/*ob_size*/
+    "PySwigPacked",			/*tp_name*/
+    sizeof(PySwigPacked),		/*tp_basicsize*/
+    0,					/*tp_itemsize*/
+    /* methods */
+    (destructor)PySwigPacked_dealloc,	/*tp_dealloc*/
+    (printfunc)PySwigPacked_print,	/*tp_print*/
+    (getattrfunc)0,			/*tp_getattr*/
+    (setattrfunc)0,			/*tp_setattr*/
+    (cmpfunc)PySwigPacked_compare,	/*tp_compare*/
+    (reprfunc)PySwigPacked_repr,	/*tp_repr*/
+    0,	                                /*tp_as_number*/
+    0,					/*tp_as_sequence*/
+    0,					/*tp_as_mapping*/
+    (hashfunc)0,			/*tp_hash*/
+    (ternaryfunc)0,			/*tp_call*/
+    (reprfunc)PySwigPacked_str,		/*tp_str*/
+    /* Space for future expansion */
+    0L,0L,0L,0L,
+    PySwigPacked_Type__doc__, 	        /* Documentation string */
+#if PY_VERSION_HEX >= 0x02000000
+    0,                                  /* tp_traverse */
+    0,                                  /* tp_clear */
+#endif
+#if PY_VERSION_HEX >= 0x02010000
+    0,                                  /* tp_richcompare */
+    0,                                  /* tp_weaklistoffset */
+#endif
+#if PY_VERSION_HEX >= 0x02020000         
+    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* tp_iter -> tp_weaklist */
+#endif
+#if PY_VERSION_HEX >= 0x02030000
+    0,                                  /* tp_del */
+#endif
+#ifdef COUNT_ALLOCS
+    0,0,0,0                             /* tp_alloc -> tp_next */
+#endif
+    };
+
+    PySwigPacked_Type = tmp;
+    type_init = 1;
+  }
+  
+      
+
+  return &PySwigPacked_Type;
+}
+
+SWIGRUNTIME PyObject *
+PySwigPacked_FromDataAndDesc(void *ptr, size_t size, const char *desc)
+{
+  PySwigPacked *self = PyObject_NEW(PySwigPacked, PySwigPacked_GetType());
+  if (self == NULL) {
+    return NULL;
+  } else {
+    void *pack = malloc(size);
+    memcpy(pack, ptr, size);
+    self->pack = pack;
+    self->desc = desc;
+    self->size = size;
+    return (PyObject *) self;
+  }
+}
+
+SWIGRUNTIMEINLINE const char *
+PySwigPacked_UnpackData(PyObject *obj, void *ptr, size_t size)
+{
+  PySwigPacked *self = (PySwigPacked *)obj;
+  if (self->size != size) return 0;
+  memcpy(ptr, self->pack, size);
+  return self->desc;
+}
+
+SWIGRUNTIMEINLINE const char *
+PySwigPacked_GetDesc(PyObject *self)
+{
+  return ((PySwigPacked *)self)->desc;
+}
+
+SWIGRUNTIMEINLINE int
+PySwigPacked_Check(PyObject *op) {
+  return ((op)->ob_type == PySwigPacked_GetType()) 
+    || (strcmp((op)->ob_type->tp_name,"PySwigPacked") == 0);
+}
+
+#else
+/* -----------------------------------------------------------------------------
+ * Use the old Python PyCObject instead of PySwigObject
+ * ----------------------------------------------------------------------------- */
+
+#define PySwigObject_GetDesc(obj)	           PyCObject_GetDesc(obj)
+#define PySwigObject_Check(obj)	           PyCObject_Check(obj)
+#define PySwigObject_AsVoidPtr(obj)	   PyCObject_AsVoidPtr(obj)
+#define PySwigObject_FromVoidPtrAndDesc(p, d)  PyCObject_FromVoidPtrAndDesc(p, d, NULL)
+
+#endif
+
+#endif
+
+/* -----------------------------------------------------------------------------
+ * errors manipulation
+ * ----------------------------------------------------------------------------- */
+
+SWIGRUNTIME void
+SWIG_Python_TypeError(const char *type, PyObject *obj)
+{
+  if (type) {
+#if defined(SWIG_COBJECT_TYPES)
+    if (PySwigObject_Check(obj)) {
+      const char *otype = (const char *) PySwigObject_GetDesc(obj);
+      if (otype) {
+	PyErr_Format(PyExc_TypeError, "a '%s' is expected, 'PySwigObject(%s)' is received",
+		     type, otype);
+	return;
+      }
+    } else 
+#endif      
+    {
+      const char *otype = (obj ? obj->ob_type->tp_name : 0); 
+      if (otype) {
+	PyObject *str = PyObject_Str(obj);
+	const char *cstr = str ? PyString_AsString(str) : 0;
+	if (cstr) {
+	  PyErr_Format(PyExc_TypeError, "a '%s' is expected, '%s(%s)' is received",
+		       type, otype, cstr);
+	} else {
+	  PyErr_Format(PyExc_TypeError, "a '%s' is expected, '%s' is received",
+		       type, otype);
+	}
+	Py_DECREF(str);
+	return;
+      }
+    }   
+    PyErr_Format(PyExc_TypeError, "a '%s' is expected", type);
+  } else {
+    PyErr_Format(PyExc_TypeError, "unexpected type is received");
+  }
+}
+
+SWIGRUNTIMEINLINE void
+SWIG_Python_NullRef(const char *type)
+{
+  if (type) {
+    PyErr_Format(PyExc_TypeError, "null reference of type '%s' was received",type);
+  } else {
+    PyErr_Format(PyExc_TypeError, "null reference was received");
+  }
+}
+
+SWIGRUNTIME int
+SWIG_Python_AddErrMesg(const char* mesg, int infront)
+{
+  if (PyErr_Occurred()) {
+    PyObject *type = 0;
+    PyObject *value = 0;
+    PyObject *traceback = 0;
+    PyErr_Fetch(&type, &value, &traceback);
+    if (value) {
+      PyObject *old_str = PyObject_Str(value);
+      Py_XINCREF(type);
+      PyErr_Clear();
+      if (infront) {
+	PyErr_Format(type, "%s %s", mesg, PyString_AsString(old_str));
+      } else {
+	PyErr_Format(type, "%s %s", PyString_AsString(old_str), mesg);
+      }
+      Py_DECREF(old_str);
+    }
+    return 1;
+  } else {
+    return 0;
+  }
+}
+
+SWIGRUNTIME int
+SWIG_Python_ArgFail(int argnum)
+{
+  if (PyErr_Occurred()) {
+    /* add information about failing argument */
+    char mesg[256];
+    sprintf(mesg, "argument number %d:", argnum);
+    return SWIG_Python_AddErrMesg(mesg, 1);
+  } else {
+    return 0;
+  }
+}
+
+
+/* -----------------------------------------------------------------------------
+ * pointers/data manipulation
+ * ----------------------------------------------------------------------------- */
+
+/* Convert a pointer value */
+SWIGRUNTIME int
+SWIG_Python_ConvertPtr(PyObject *obj, void **ptr, swig_type_info *ty, int flags) {
+  swig_type_info *tc;
+  const char *c = 0;
+  static PyObject *SWIG_this = 0;
+  int    newref = 0;
+  PyObject  *pyobj = 0;
+  void *vptr;
+  
+  if (!obj) return 0;
+  if (obj == Py_None) {
+    *ptr = 0;
+    return 0;
+  }
+
+#ifdef SWIG_COBJECT_TYPES
+  if (!(PySwigObject_Check(obj))) {
+    if (!SWIG_this)
+      SWIG_this = PyString_FromString("this");
+    pyobj = obj;
+    obj = PyObject_GetAttr(obj,SWIG_this);
+    newref = 1;
+    if (!obj) goto type_error;
+    if (!PySwigObject_Check(obj)) {
+      Py_DECREF(obj);
+      goto type_error;
+    }
+  }  
+  vptr = PySwigObject_AsVoidPtr(obj);
+  c = (const char *) PySwigObject_GetDesc(obj);
+  if (newref) { Py_DECREF(obj); }
+  goto type_check;
+#else
+  if (!(PyString_Check(obj))) {
+    if (!SWIG_this)
+      SWIG_this = PyString_FromString("this");
+    pyobj = obj;
+    obj = PyObject_GetAttr(obj,SWIG_this);
+    newref = 1;
+    if (!obj) goto type_error;
+    if (!PyString_Check(obj)) {
+      Py_DECREF(obj);
+      goto type_error;
+    }
+  } 
+  c = PyString_AS_STRING(obj);
+  /* Pointer values must start with leading underscore */
+  c = SWIG_UnpackVoidPtr(c, &vptr, ty->name);
+  if (newref) { Py_DECREF(obj); }
+  if (!c) goto type_error;
+#endif
+
+type_check:
+
+  if (ty) {
+    tc = SWIG_TypeCheck(c,ty);
+    if (!tc) goto type_error;
+    *ptr = SWIG_TypeCast(tc,vptr);
+  } else {
+    *ptr = vptr;
+  }
+
+  if ((pyobj) && (flags & SWIG_POINTER_DISOWN)) {
+    PyObject_SetAttrString(pyobj,(char*)"thisown",Py_False);
+  }
+  return 0;
+
+type_error:
+  PyErr_Clear();
+  if (pyobj && !obj) {    
+    obj = pyobj;
+    if (PyCFunction_Check(obj)) {
+      /* here we get the method pointer for callbacks */
+      char *doc = (((PyCFunctionObject *)obj) -> m_ml -> ml_doc);
+      c = doc ? strstr(doc, "swig_ptr: ") : 0;
+      if (c) {
+	c = SWIG_UnpackVoidPtr(c + 10, &vptr, ty->name);
+	if (!c) goto type_error;
+	goto type_check;
+      }
+    }
+  }
+  if (flags & SWIG_POINTER_EXCEPTION) {
+    if (ty) {
+      SWIG_Python_TypeError(SWIG_TypePrettyName(ty), obj);
+    } else {
+      SWIG_Python_TypeError("C/C++ pointer", obj);
+    }
+  }
+  return -1;
+}
+
+/* Convert a pointer value, signal an exception on a type mismatch */
+SWIGRUNTIME void *
+SWIG_Python_MustGetPtr(PyObject *obj, swig_type_info *ty, int argnum, int flags) {
+  void *result;
+  if (SWIG_Python_ConvertPtr(obj, &result, ty, flags) == -1) {
+    PyErr_Clear();
+    if (flags & SWIG_POINTER_EXCEPTION) {
+      SWIG_Python_TypeError(SWIG_TypePrettyName(ty), obj);
+      SWIG_Python_ArgFail(argnum);
+    }
+  }
+  return result;
+}
+
+/* Convert a packed value value */
+SWIGRUNTIME int
+SWIG_Python_ConvertPacked(PyObject *obj, void *ptr, size_t sz, swig_type_info *ty, int flags) {
+  swig_type_info *tc;
+  const char *c = 0;
+
+#if defined(SWIG_COBJECT_TYPES) && !defined(SWIG_COBJECT_PYTHON)
+  c = PySwigPacked_UnpackData(obj, ptr, sz);
+#else
+  if ((!obj) || (!PyString_Check(obj))) goto type_error;
+  c = PyString_AS_STRING(obj);
+  /* Pointer values must start with leading underscore */
+  c = SWIG_UnpackDataName(c, ptr, sz, ty->name);
+#endif
+  if (!c) goto type_error;
+  if (ty) {
+    tc = SWIG_TypeCheck(c,ty);
+    if (!tc) goto type_error;
+  }
+  return 0;
+
+type_error:
+  PyErr_Clear();
+  if (flags & SWIG_POINTER_EXCEPTION) {
+    if (ty) {
+      SWIG_Python_TypeError(SWIG_TypePrettyName(ty), obj);
+    } else {
+      SWIG_Python_TypeError("C/C++ packed data", obj);
+    }
+  }
+  return -1;
+}  
+
+/* Create a new array object */
+SWIGRUNTIME PyObject *
+SWIG_Python_NewPointerObj(void *ptr, swig_type_info *type, int own) {
+  PyObject *robj = 0;
+  if (!ptr) {
+    Py_INCREF(Py_None);
+    return Py_None;
+  }
+#ifdef SWIG_COBJECT_TYPES
+  robj = PySwigObject_FromVoidPtrAndDesc((void *) ptr, (char *)type->name);
+#else
+  {
+    char result[SWIG_BUFFER_SIZE];
+    robj = SWIG_PackVoidPtr(result, ptr, type->name, sizeof(result)) ?
+      PyString_FromString(result) : 0;
+  }
+#endif
+  if (!robj || (robj == Py_None)) return robj;
+  if (type->clientdata) {
+    PyObject *inst;
+    PyObject *args = Py_BuildValue((char*)"(O)", robj);
+    Py_DECREF(robj);
+    inst = PyObject_CallObject((PyObject *) type->clientdata, args);
+    Py_DECREF(args);
+    if (inst) {
+      if (own) {
+        PyObject_SetAttrString(inst,(char*)"thisown",Py_True);
+      }
+      robj = inst;
+    }
+  }
+  return robj;
+}
+
+SWIGRUNTIME PyObject *
+SWIG_Python_NewPackedObj(void *ptr, size_t sz, swig_type_info *type) {
+  PyObject *robj = 0;
+  if (!ptr) {
+    Py_INCREF(Py_None);
+    return Py_None;
+  }
+#if defined(SWIG_COBJECT_TYPES) && !defined(SWIG_COBJECT_PYTHON)
+  robj = PySwigPacked_FromDataAndDesc((void *) ptr, sz, (char *)type->name);
+#else
+  {
+    char result[SWIG_BUFFER_SIZE];
+    robj = SWIG_PackDataName(result, ptr, sz, type->name, sizeof(result)) ?
+      PyString_FromString(result) : 0;
+  }
+#endif
+  return robj;
+}
+
+/* -----------------------------------------------------------------------------*
+ *  Get type list 
+ * -----------------------------------------------------------------------------*/
+
+#ifdef SWIG_LINK_RUNTIME
+void *SWIG_ReturnGlobalTypeList(void *);
+#endif
+
+SWIGRUNTIME swig_type_info **
+SWIG_Python_GetTypeListHandle() {
+  static void *type_pointer = (void *)0;
+  /* first check if module already created */
+  if (!type_pointer) {
+#ifdef SWIG_LINK_RUNTIME
+    type_pointer = SWIG_ReturnGlobalTypeList((void *)0);
+#else
+    type_pointer = PyCObject_Import((char*)"swig_runtime_data" SWIG_RUNTIME_VERSION,
+				    (char*)"type_pointer" SWIG_TYPE_TABLE_NAME);
+    if (PyErr_Occurred()) {
+      PyErr_Clear();
+      type_pointer = (void *)0;
+    }
+  }
+#endif
+  return (swig_type_info **) type_pointer;
+}
+
+/*
+  Search for a swig_type_info structure
+ */
+SWIGRUNTIMEINLINE swig_type_info *
+SWIG_Python_GetTypeList() {
+  swig_type_info **tlh = SWIG_Python_GetTypeListHandle();
+  return tlh ? *tlh : (swig_type_info*)0;
+}
+
+#define SWIG_Runtime_GetTypeList SWIG_Python_GetTypeList 
+
+#ifdef __cplusplus
+}
+#endif
+
+
+/* -------- TYPES TABLE (BEGIN) -------- */
+
+#define  SWIGTYPE_p_char swig_types[0] 
+#define  SWIGTYPE_size_t swig_types[1] 
+#define  SWIGTYPE_ptrdiff_t swig_types[2] 
+static swig_type_info *swig_types[4];
+
+/* -------- TYPES TABLE (END) -------- */
+
+
+/*-----------------------------------------------
+              @(target):= _darwin_getrefresh.so
+  ------------------------------------------------*/
+#define SWIG_init    init_darwin_getrefresh
+
+#define SWIG_name    "_darwin_getrefresh"
+
+PyObject *PyErr_DarwinGetRefreshError;
+
+
+  /*@/usr/share/swig1.3/python/pymacros.swg,66,SWIG_define@*/
+#define SWIG_From_double PyFloat_FromDouble
+/*@@*/
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+static PyObject *_wrap_getrefresh(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    double result;
+    
+    if(!PyArg_ParseTuple(args,(char *)":getrefresh")) goto fail;
+    {
+        result = (double)getrefresh();
+        
+        if (darwin_getrefresh_err_occurred()) {
+            PyErr_SetString(PyErr_DarwinGetRefreshError, (const char *)darwin_getrefresh_err_message());
+            return NULL;
+        }
+    }
+    {
+        resultobj = SWIG_From_double((double)(result)); 
+    }
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyMethodDef SwigMethods[] = {
+	 { (char *)"getrefresh", _wrap_getrefresh, METH_VARARGS, NULL},
+	 { NULL, NULL, 0, NULL }
+};
+
+
+/* -------- TYPE CONVERSION AND EQUIVALENCE RULES (BEGIN) -------- */
+
+static swig_type_info _swigt__p_char[] = {{"_p_char", 0, "char *", 0, 0, 0, 0},{"_p_char", 0, 0, 0, 0, 0, 0},{0, 0, 0, 0, 0, 0, 0}};
+static swig_type_info _swigt__size_t[] = {{"_size_t", 0, "size_t", 0, 0, 0, 0},{"_size_t", 0, 0, 0, 0, 0, 0},{0, 0, 0, 0, 0, 0, 0}};
+static swig_type_info _swigt__ptrdiff_t[] = {{"_ptrdiff_t", 0, "ptrdiff_t", 0, 0, 0, 0},{"_ptrdiff_t", 0, 0, 0, 0, 0, 0},{0, 0, 0, 0, 0, 0, 0}};
+
+static swig_type_info *swig_types_initial[] = {
+_swigt__p_char, 
+_swigt__size_t, 
+_swigt__ptrdiff_t, 
+0
+};
+
+
+/* -------- TYPE CONVERSION AND EQUIVALENCE RULES (END) -------- */
+
+static swig_const_info swig_const_table[] = {
+{0, 0, 0, 0.0, 0, 0}};
+
+#ifdef __cplusplus
+}
+#endif
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+    
+    /* Python-specific SWIG API */
+#define SWIG_newvarlink()                             SWIG_Python_newvarlink()
+#define SWIG_addvarlink(p, name, get_attr, set_attr)  SWIG_Python_addvarlink(p, name, get_attr, set_attr)
+#define SWIG_InstallConstants(d, constants)           SWIG_Python_InstallConstants(d, constants)
+    
+    /* -----------------------------------------------------------------------------
+     * global variable support code.
+     * ----------------------------------------------------------------------------- */
+    
+    typedef struct swig_globalvar {
+        char       *name;                  /* Name of global variable */
+        PyObject *(*get_attr)();           /* Return the current value */
+        int       (*set_attr)(PyObject *); /* Set the value */
+        struct swig_globalvar *next;
+    } swig_globalvar;
+    
+    typedef struct swig_varlinkobject {
+        PyObject_HEAD
+        swig_globalvar *vars;
+    } swig_varlinkobject;
+    
+    static PyObject *
+    swig_varlink_repr(swig_varlinkobject *v) {
+        v = v;
+        return PyString_FromString("<Swig global variables>");
+    }
+    
+    static int
+    swig_varlink_print(swig_varlinkobject *v, FILE *fp, int flags) {
+        swig_globalvar  *var;
+        flags = flags;
+        fprintf(fp,"Swig global variables { ");
+        for (var = v->vars; var; var=var->next) {
+            fprintf(fp,"%s", var->name);
+            if (var->next) fprintf(fp,", ");
+        }
+        fprintf(fp," }\n");
+        return 0;
+    }
+    
+    static PyObject *
+    swig_varlink_getattr(swig_varlinkobject *v, char *n) {
+        swig_globalvar *var = v->vars;
+        while (var) {
+            if (strcmp(var->name,n) == 0) {
+                return (*var->get_attr)();
+            }
+            var = var->next;
+        }
+        PyErr_SetString(PyExc_NameError,"Unknown C global variable");
+        return NULL;
+    }
+    
+    static int
+    swig_varlink_setattr(swig_varlinkobject *v, char *n, PyObject *p) {
+        swig_globalvar *var = v->vars;
+        while (var) {
+            if (strcmp(var->name,n) == 0) {
+                return (*var->set_attr)(p);
+            }
+            var = var->next;
+        }
+        PyErr_SetString(PyExc_NameError,"Unknown C global variable");
+        return 1;
+    }
+    
+    static PyTypeObject varlinktype = {
+        PyObject_HEAD_INIT(0)              
+        0,                                  /* Number of items in variable part (ob_size) */
+        (char *)"swigvarlink",              /* Type name (tp_name) */
+        sizeof(swig_varlinkobject),         /* Basic size (tp_basicsize) */
+        0,                                  /* Itemsize (tp_itemsize) */
+        0,                                  /* Deallocator (tp_dealloc) */ 
+        (printfunc) swig_varlink_print,     /* Print (tp_print) */
+        (getattrfunc) swig_varlink_getattr, /* get attr (tp_getattr) */
+        (setattrfunc) swig_varlink_setattr, /* Set attr (tp_setattr) */
+        0,                                  /* tp_compare */
+        (reprfunc) swig_varlink_repr,       /* tp_repr */
+        0,                                  /* tp_as_number */
+        0,                                  /* tp_as_sequence */
+        0,                                  /* tp_as_mapping */
+        0,                                  /* tp_hash */
+        0,                                  /* tp_call */
+        0,                                  /* tp_str */
+        0,                                  /* tp_getattro */
+        0,                                  /* tp_setattro */
+        0,                                  /* tp_as_buffer */
+        0,                                  /* tp_flags */
+        0,                                  /* tp_doc */
+#if PY_VERSION_HEX >= 0x02000000
+        0,                                  /* tp_traverse */
+        0,                                  /* tp_clear */
+#endif
+#if PY_VERSION_HEX >= 0x02010000
+        0,                                  /* tp_richcompare */
+        0,                                  /* tp_weaklistoffset */
+#endif
+#if PY_VERSION_HEX >= 0x02020000
+        0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* tp_iter -> tp_weaklist */
+#endif
+#if PY_VERSION_HEX >= 0x02030000
+        0,                                  /* tp_del */
+#endif
+#ifdef COUNT_ALLOCS
+        0,0,0,0                             /* tp_alloc -> tp_next */
+#endif
+    };
+    
+    /* Create a variable linking object for use later */
+    static PyObject *
+    SWIG_Python_newvarlink(void) {
+        swig_varlinkobject *result = 0;
+        result = PyMem_NEW(swig_varlinkobject,1);
+        varlinktype.ob_type = &PyType_Type;    /* Patch varlinktype into a PyType */
+        result->ob_type = &varlinktype;
+        result->vars = 0;
+        result->ob_refcnt = 0;
+        Py_XINCREF((PyObject *) result);
+        return ((PyObject*) result);
+    }
+    
+    static void
+    SWIG_Python_addvarlink(PyObject *p, char *name, PyObject *(*get_attr)(void), int (*set_attr)(PyObject *p)) {
+        swig_varlinkobject *v;
+        swig_globalvar *gv;
+        v= (swig_varlinkobject *) p;
+        gv = (swig_globalvar *) malloc(sizeof(swig_globalvar));
+        gv->name = (char *) malloc(strlen(name)+1);
+        strcpy(gv->name,name);
+        gv->get_attr = get_attr;
+        gv->set_attr = set_attr;
+        gv->next = v->vars;
+        v->vars = gv;
+    }
+    
+    /* -----------------------------------------------------------------------------
+     * constants/methods manipulation
+     * ----------------------------------------------------------------------------- */
+    
+    /* Install Constants */
+    static void
+    SWIG_Python_InstallConstants(PyObject *d, swig_const_info constants[]) {
+        PyObject *obj = 0;
+        size_t i;
+        for (i = 0; constants[i].type; i++) {
+            switch(constants[i].type) {
+                case SWIG_PY_INT:
+                obj = PyInt_FromLong(constants[i].lvalue);
+                break;
+                case SWIG_PY_FLOAT:
+                obj = PyFloat_FromDouble(constants[i].dvalue);
+                break;
+                case SWIG_PY_STRING:
+                if (constants[i].pvalue) {
+                    obj = PyString_FromString((char *) constants[i].pvalue);
+                } else {
+                    Py_INCREF(Py_None);
+                    obj = Py_None;
+                }
+                break;
+                case SWIG_PY_POINTER:
+                obj = SWIG_NewPointerObj(constants[i].pvalue, *(constants[i]).ptype,0);
+                break;
+                case SWIG_PY_BINARY:
+                obj = SWIG_NewPackedObj(constants[i].pvalue, constants[i].lvalue, *(constants[i].ptype));
+                break;
+                default:
+                obj = 0;
+                break;
+            }
+            if (obj) {
+                PyDict_SetItemString(d,constants[i].name,obj);
+                Py_DECREF(obj);
+            }
+        }
+    }
+    
+    /* -----------------------------------------------------------------------------*/
+    /* Fix SwigMethods to carry the callback ptrs when needed */
+    /* -----------------------------------------------------------------------------*/
+    
+    static void
+    SWIG_Python_FixMethods(PyMethodDef *methods,
+    swig_const_info *const_table,
+    swig_type_info **types,
+    swig_type_info **types_initial) {
+        size_t i;
+        for (i = 0; methods[i].ml_name; ++i) {
+            char *c = methods[i].ml_doc;
+            if (c && (c = strstr(c, "swig_ptr: "))) {
+                int j;
+                swig_const_info *ci = 0;
+                char *name = c + 10;
+                for (j = 0; const_table[j].type; j++) {
+                    if (strncmp(const_table[j].name, name, 
+                    strlen(const_table[j].name)) == 0) {
+                        ci = &(const_table[j]);
+                        break;
+                    }
+                }
+                if (ci) {
+                    size_t shift = (ci->ptype) - types;
+                    swig_type_info *ty = types_initial[shift];
+                    size_t ldoc = (c - methods[i].ml_doc);
+                    size_t lptr = strlen(ty->name)+2*sizeof(void*)+2;
+                    char *ndoc = (char*)malloc(ldoc + lptr + 10);
+                    char *buff = ndoc;
+                    void *ptr = (ci->type == SWIG_PY_POINTER) ? ci->pvalue: (void *)(ci->lvalue);
+                    strncpy(buff, methods[i].ml_doc, ldoc);
+                    buff += ldoc;
+                    strncpy(buff, "swig_ptr: ", 10);
+                    buff += 10;
+                    SWIG_PackVoidPtr(buff, ptr, ty->name, lptr);
+                    methods[i].ml_doc = ndoc;
+                }
+            }
+        }
+    }
+    
+    /* -----------------------------------------------------------------------------*
+     *  Initialize type list
+     * -----------------------------------------------------------------------------*/
+    
+#if PY_MAJOR_VERSION < 2
+    /* PyModule_AddObject function was introduced in Python 2.0.  The following function
+    is copied out of Python/modsupport.c in python version 2.3.4 */
+    static int
+    PyModule_AddObject(PyObject *m, char *name, PyObject *o)
+    {
+        PyObject *dict;
+        if (!PyModule_Check(m)) {
+            PyErr_SetString(PyExc_TypeError,
+            "PyModule_AddObject() needs module as first arg");
+            return -1;
+        }
+        if (!o) {
+            PyErr_SetString(PyExc_TypeError,
+            "PyModule_AddObject() needs non-NULL value");
+            return -1;
+        }
+        
+        dict = PyModule_GetDict(m);
+        if (dict == NULL) {
+            /* Internal error -- modules must have a dict! */
+            PyErr_Format(PyExc_SystemError, "module '%s' has no __dict__",
+            PyModule_GetName(m));
+            return -1;
+        }
+        if (PyDict_SetItemString(dict, name, o))
+        return -1;
+        Py_DECREF(o);
+        return 0;
+    }
+#endif
+    
+    static swig_type_info **
+    SWIG_Python_SetTypeListHandle(swig_type_info **type_list_handle) {
+        static PyMethodDef swig_empty_runtime_method_table[] = {
+            {
+                NULL, NULL, 0, NULL
+            } 
+        };/* Sentinel */
+        
+        PyObject *module = Py_InitModule((char*)"swig_runtime_data" SWIG_RUNTIME_VERSION,
+        swig_empty_runtime_method_table);
+        PyObject *pointer = PyCObject_FromVoidPtr((void *) type_list_handle, NULL);
+        if (pointer && module) {
+            PyModule_AddObject(module, (char*)"type_pointer" SWIG_TYPE_TABLE_NAME, pointer);
+        }
+        return type_list_handle;
+    } 
+    
+    static swig_type_info **
+    SWIG_Python_LookupTypePointer(swig_type_info **type_list_handle) {
+        swig_type_info **type_pointer;
+        
+        /* first check if module already created */
+        type_pointer = SWIG_Python_GetTypeListHandle();
+        if (type_pointer) {
+            return type_pointer;
+        } else {
+            /* create a new module and variable */
+            return SWIG_Python_SetTypeListHandle(type_list_handle);
+        }
+    }
+    
+#ifdef __cplusplus
+}
+#endif
+
+/* -----------------------------------------------------------------------------*
+ *  Partial Init method
+ * -----------------------------------------------------------------------------*/
+
+#ifdef SWIG_LINK_RUNTIME
+#ifdef __cplusplus
+extern "C"
+#endif
+SWIGEXPORT(void *) SWIG_ReturnGlobalTypeList(void *);
+#endif
+
+#ifdef __cplusplus
+extern "C"
+#endif
+SWIGEXPORT(void) SWIG_init(void) {
+    static PyObject *SWIG_globals = 0; 
+    static int       typeinit = 0;
+    PyObject *m, *d;
+    int       i;
+    if (!SWIG_globals) SWIG_globals = SWIG_newvarlink();
+    
+    /* Fix SwigMethods to carry the callback ptrs when needed */
+    SWIG_Python_FixMethods(SwigMethods, swig_const_table, swig_types, swig_types_initial);
+    
+    m = Py_InitModule((char *) SWIG_name, SwigMethods);
+    d = PyModule_GetDict(m);
+    
+    if (!typeinit) {
+#ifdef SWIG_LINK_RUNTIME
+        swig_type_list_handle = (swig_type_info **) SWIG_ReturnGlobalTypeList(swig_type_list_handle);
+#else
+#  ifndef SWIG_STATIC_RUNTIME
+        swig_type_list_handle = SWIG_Python_LookupTypePointer(swig_type_list_handle);
+#  endif
+#endif
+        for (i = 0; swig_types_initial[i]; i++) {
+            swig_types[i] = SWIG_TypeRegister(swig_types_initial[i]);
+        }
+        typeinit = 1;
+    }
+    SWIG_InstallConstants(d,swig_const_table);
+    
+    
+    /* New exception */
+    PyErr_DarwinGetRefreshError = PyErr_NewException( "VisionEgg.DarwinGetRefreshError", NULL, NULL ); // New reference
+    Py_INCREF(PyErr_DarwinGetRefreshError);
+    
+}
+
diff --git a/VisionEgg/darwin_maxpriority.c b/VisionEgg/darwin_maxpriority.c
new file mode 100644
index 0000000..e1c0a29
--- /dev/null
+++ b/VisionEgg/darwin_maxpriority.c
@@ -0,0 +1,523 @@
+/* Generated by Pyrex 0.9.3 on Mon Jan  2 16:34:18 2006 */
+
+#include "Python.h"
+#include "structmember.h"
+#ifndef PY_LONG_LONG
+  #define PY_LONG_LONG LONG_LONG
+#endif
+#include "darwinsys_compat.h"
+#include "stdlib.h"
+#include "errno.h"
+#include "sys/sysctl.h"
+#include "mach/mach.h"
+#include "sched.h"
+#include "pthread.h"
+#include "sys/resource.h"
+
+
+typedef struct {PyObject **p; char *s;} __Pyx_InternTabEntry; /*proto*/
+typedef struct {PyObject **p; char *s; long n;} __Pyx_StringTabEntry; /*proto*/
+static PyObject *__Pyx_UnpackItem(PyObject *, int); /*proto*/
+static int __Pyx_EndUnpack(PyObject *, int); /*proto*/
+static int __Pyx_PrintItem(PyObject *); /*proto*/
+static int __Pyx_PrintNewline(void); /*proto*/
+static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb); /*proto*/
+static void __Pyx_ReRaise(void); /*proto*/
+static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list); /*proto*/
+static PyObject *__Pyx_GetExcValue(void); /*proto*/
+static int __Pyx_ArgTypeTest(PyObject *obj, PyTypeObject *type, int none_allowed, char *name); /*proto*/
+static int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type); /*proto*/
+static int __Pyx_GetStarArgs(PyObject **args, PyObject **kwds, char *kwd_list[], int nargs, PyObject **args2, PyObject **kwds2); /*proto*/
+static void __Pyx_WriteUnraisable(char *name); /*proto*/
+static void __Pyx_AddTraceback(char *funcname); /*proto*/
+static PyTypeObject *__Pyx_ImportType(char *module_name, char *class_name, long size);  /*proto*/
+static int __Pyx_SetVtable(PyObject *dict, void *vtable); /*proto*/
+static int __Pyx_GetVtable(PyObject *dict, void *vtabptr); /*proto*/
+static PyObject *__Pyx_CreateClass(PyObject *bases, PyObject *dict, PyObject *name, char *modname); /*proto*/
+static int __Pyx_InternStrings(__Pyx_InternTabEntry *t); /*proto*/
+static int __Pyx_InitStrings(__Pyx_StringTabEntry *t); /*proto*/
+static PyObject *__Pyx_GetName(PyObject *dict, PyObject *name); /*proto*/
+
+static PyObject *__pyx_m;
+static PyObject *__pyx_b;
+static int __pyx_lineno;
+static char *__pyx_filename;
+staticforward char **__pyx_f;
+
+/* Declarations from darwinsys */
+
+
+/* Declarations from darwin_maxpriority */
+
+
+/* Implementation of darwin_maxpriority */
+
+static PyObject *__pyx_n_darwinsys;
+static PyObject *__pyx_n_PRIO_PROCESS;
+static PyObject *__pyx_n_SCHED_OTHER;
+static PyObject *__pyx_n_SCHED_RR;
+static PyObject *__pyx_n_SCHED_FIFO;
+static PyObject *__pyx_n_get_bus_speed;
+static PyObject *__pyx_n_set_self_thread_time_constraint_policy;
+static PyObject *__pyx_n_set_self_pthread_priority;
+static PyObject *__pyx_n_getpriority;
+static PyObject *__pyx_n_sched_get_priority_max;
+static PyObject *__pyx_n_setpriority;
+
+static PyObject *__pyx_f_18darwin_maxpriority_get_bus_speed(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_f_18darwin_maxpriority_get_bus_speed(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  int __pyx_v_bus_speed;
+  int (__pyx_v_mlib[2]);
+  size_t __pyx_v_len;
+  PyObject *__pyx_r;
+  PyObject *__pyx_1 = 0;
+  static char *__pyx_argnames[] = {0};
+  if (!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "", __pyx_argnames)) return 0;
+
+  /* "/Volumes/astraw/src/ve/visionegg-devel.clean/src/darwin_maxpriority.pyx":73 */
+  (__pyx_v_mlib[0]) = CTL_HW;
+
+  /* "/Volumes/astraw/src/ve/visionegg-devel.clean/src/darwin_maxpriority.pyx":74 */
+  (__pyx_v_mlib[1]) = HW_BUS_FREQ;
+
+  /* "/Volumes/astraw/src/ve/visionegg-devel.clean/src/darwin_maxpriority.pyx":76 */
+  __pyx_v_len = (sizeof(__pyx_v_bus_speed));
+
+  /* "/Volumes/astraw/src/ve/visionegg-devel.clean/src/darwin_maxpriority.pyx":77 */
+  sysctl(__pyx_v_mlib,2,(&__pyx_v_bus_speed),(&__pyx_v_len),0,0);
+
+  /* "/Volumes/astraw/src/ve/visionegg-devel.clean/src/darwin_maxpriority.pyx":79 */
+  __pyx_1 = PyInt_FromLong(__pyx_v_bus_speed); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 79; goto __pyx_L1;}
+  __pyx_r = __pyx_1;
+  __pyx_1 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; Py_INCREF(__pyx_r);
+  goto __pyx_L0;
+  __pyx_L1:;
+  Py_XDECREF(__pyx_1);
+  __Pyx_AddTraceback("darwin_maxpriority.get_bus_speed");
+  __pyx_r = 0;
+  __pyx_L0:;
+  return __pyx_r;
+}
+
+static PyObject *__pyx_f_18darwin_maxpriority_set_self_thread_time_constraint_policy(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_f_18darwin_maxpriority_set_self_thread_time_constraint_policy(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_period = 0;
+  PyObject *__pyx_v_computation = 0;
+  PyObject *__pyx_v_constraint = 0;
+  PyObject *__pyx_v_preemptible = 0;
+  thread_time_constraint_policy_data_t __pyx_v_ttcpolicy;
+  PyObject *__pyx_r;
+  uint32_t __pyx_1;
+  boolean_t __pyx_2;
+  PyObject *__pyx_3 = 0;
+  static char *__pyx_argnames[] = {"period","computation","constraint","preemptible",0};
+  if (!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "OOOO", __pyx_argnames, &__pyx_v_period, &__pyx_v_computation, &__pyx_v_constraint, &__pyx_v_preemptible)) return 0;
+  Py_INCREF(__pyx_v_period);
+  Py_INCREF(__pyx_v_computation);
+  Py_INCREF(__pyx_v_constraint);
+  Py_INCREF(__pyx_v_preemptible);
+
+  /* "/Volumes/astraw/src/ve/visionegg-devel.clean/src/darwin_maxpriority.pyx":88 */
+  __pyx_1 = PyInt_AsLong(__pyx_v_period); if (PyErr_Occurred()) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 88; goto __pyx_L1;}
+  __pyx_v_ttcpolicy.period = __pyx_1;
+
+  /* "/Volumes/astraw/src/ve/visionegg-devel.clean/src/darwin_maxpriority.pyx":89 */
+  __pyx_1 = PyInt_AsLong(__pyx_v_computation); if (PyErr_Occurred()) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 89; goto __pyx_L1;}
+  __pyx_v_ttcpolicy.computation = __pyx_1;
+
+  /* "/Volumes/astraw/src/ve/visionegg-devel.clean/src/darwin_maxpriority.pyx":90 */
+  __pyx_1 = PyInt_AsLong(__pyx_v_constraint); if (PyErr_Occurred()) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 90; goto __pyx_L1;}
+  __pyx_v_ttcpolicy.constraint = __pyx_1;
+
+  /* "/Volumes/astraw/src/ve/visionegg-devel.clean/src/darwin_maxpriority.pyx":91 */
+  __pyx_2 = PyInt_AsLong(__pyx_v_preemptible); if (PyErr_Occurred()) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 91; goto __pyx_L1;}
+  __pyx_v_ttcpolicy.preemptible = __pyx_2;
+
+  /* "/Volumes/astraw/src/ve/visionegg-devel.clean/src/darwin_maxpriority.pyx":93 */
+  __pyx_3 = PyInt_FromLong(thread_policy_set(mach_thread_self(),THREAD_TIME_CONSTRAINT_POLICY,((thread_policy_t )(&__pyx_v_ttcpolicy)),THREAD_TIME_CONSTRAINT_POLICY_COUNT)); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 93; goto __pyx_L1;}
+  __pyx_r = __pyx_3;
+  __pyx_3 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; Py_INCREF(__pyx_r);
+  goto __pyx_L0;
+  __pyx_L1:;
+  Py_XDECREF(__pyx_3);
+  __Pyx_AddTraceback("darwin_maxpriority.set_self_thread_time_constraint_policy");
+  __pyx_r = 0;
+  __pyx_L0:;
+  Py_DECREF(__pyx_v_period);
+  Py_DECREF(__pyx_v_computation);
+  Py_DECREF(__pyx_v_constraint);
+  Py_DECREF(__pyx_v_preemptible);
+  return __pyx_r;
+}
+
+static PyObject *__pyx_f_18darwin_maxpriority_set_self_pthread_priority(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_f_18darwin_maxpriority_set_self_pthread_priority(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_policy = 0;
+  PyObject *__pyx_v_priority = 0;
+  struct sched_param __pyx_v_sp;
+  PyObject *__pyx_r;
+  int __pyx_1;
+  PyObject *__pyx_2 = 0;
+  static char *__pyx_argnames[] = {"policy","priority",0};
+  if (!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "OO", __pyx_argnames, &__pyx_v_policy, &__pyx_v_priority)) return 0;
+  Py_INCREF(__pyx_v_policy);
+  Py_INCREF(__pyx_v_priority);
+
+  /* "/Volumes/astraw/src/ve/visionegg-devel.clean/src/darwin_maxpriority.pyx":101 */
+  memset((&__pyx_v_sp),0,(sizeof(struct sched_param )));
+
+  /* "/Volumes/astraw/src/ve/visionegg-devel.clean/src/darwin_maxpriority.pyx":102 */
+  __pyx_1 = PyInt_AsLong(__pyx_v_priority); if (PyErr_Occurred()) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 102; goto __pyx_L1;}
+  __pyx_v_sp.sched_priority = __pyx_1;
+
+  /* "/Volumes/astraw/src/ve/visionegg-devel.clean/src/darwin_maxpriority.pyx":103 */
+  __pyx_1 = PyInt_AsLong(__pyx_v_policy); if (PyErr_Occurred()) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 103; goto __pyx_L1;}
+  __pyx_2 = PyInt_FromLong(pthread_setschedparam(pthread_self(),__pyx_1,(&__pyx_v_sp))); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 103; goto __pyx_L1;}
+  __pyx_r = __pyx_2;
+  __pyx_2 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; Py_INCREF(__pyx_r);
+  goto __pyx_L0;
+  __pyx_L1:;
+  Py_XDECREF(__pyx_2);
+  __Pyx_AddTraceback("darwin_maxpriority.set_self_pthread_priority");
+  __pyx_r = 0;
+  __pyx_L0:;
+  Py_DECREF(__pyx_v_policy);
+  Py_DECREF(__pyx_v_priority);
+  return __pyx_r;
+}
+
+static PyObject *__pyx_n_OSError;
+
+static PyObject *__pyx_f_18darwin_maxpriority_getpriority(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_f_18darwin_maxpriority_getpriority(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_arg0 = 0;
+  PyObject *__pyx_v_arg1 = 0;
+  int __pyx_v_result;
+  PyObject *__pyx_v_errno;
+  PyObject *__pyx_r;
+  PyObject *__pyx_1 = 0;
+  int __pyx_2;
+  PyObject *__pyx_3 = 0;
+  static char *__pyx_argnames[] = {"arg0","arg1",0};
+  if (!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "OO", __pyx_argnames, &__pyx_v_arg0, &__pyx_v_arg1)) return 0;
+  Py_INCREF(__pyx_v_arg0);
+  Py_INCREF(__pyx_v_arg1);
+  __pyx_v_errno = Py_None; Py_INCREF(__pyx_v_errno);
+
+  /* "/Volumes/astraw/src/ve/visionegg-devel.clean/src/darwin_maxpriority.pyx":107 */
+  __pyx_1 = PyInt_FromLong(0); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 107; goto __pyx_L1;}
+  Py_DECREF(__pyx_v_errno);
+  __pyx_v_errno = __pyx_1;
+  __pyx_1 = 0;
+
+  /* "/Volumes/astraw/src/ve/visionegg-devel.clean/src/darwin_maxpriority.pyx":108 */
+  __pyx_2 = PyInt_AsLong(__pyx_v_arg0); if (PyErr_Occurred()) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 108; goto __pyx_L1;}
+  __pyx_v_result = getpriority(__pyx_2,__pyx_v_arg1);
+
+  /* "/Volumes/astraw/src/ve/visionegg-devel.clean/src/darwin_maxpriority.pyx":109 */
+  __pyx_2 = PyObject_IsTrue(__pyx_v_errno); if (__pyx_2 < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 109; goto __pyx_L1;}
+  if (__pyx_2) {
+
+    /* "/Volumes/astraw/src/ve/visionegg-devel.clean/src/darwin_maxpriority.pyx":110 */
+    __pyx_1 = __Pyx_GetName(__pyx_b, __pyx_n_OSError); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 110; goto __pyx_L1;}
+    __pyx_3 = PyErr_SetFromErrno(__pyx_1); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 110; goto __pyx_L1;}
+    Py_DECREF(__pyx_1); __pyx_1 = 0;
+    Py_DECREF(__pyx_3); __pyx_3 = 0;
+    goto __pyx_L2;
+  }
+  __pyx_L2:;
+
+  /* "/Volumes/astraw/src/ve/visionegg-devel.clean/src/darwin_maxpriority.pyx":111 */
+  __pyx_1 = PyInt_FromLong(__pyx_v_result); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 111; goto __pyx_L1;}
+  __pyx_r = __pyx_1;
+  __pyx_1 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; Py_INCREF(__pyx_r);
+  goto __pyx_L0;
+  __pyx_L1:;
+  Py_XDECREF(__pyx_1);
+  Py_XDECREF(__pyx_3);
+  __Pyx_AddTraceback("darwin_maxpriority.getpriority");
+  __pyx_r = 0;
+  __pyx_L0:;
+  Py_DECREF(__pyx_v_errno);
+  Py_DECREF(__pyx_v_arg0);
+  Py_DECREF(__pyx_v_arg1);
+  return __pyx_r;
+}
+
+static PyObject *__pyx_f_18darwin_maxpriority_sched_get_priority_max(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_f_18darwin_maxpriority_sched_get_priority_max(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_arg0 = 0;
+  int __pyx_v_result;
+  PyObject *__pyx_v_errno;
+  PyObject *__pyx_r;
+  PyObject *__pyx_1 = 0;
+  int __pyx_2;
+  PyObject *__pyx_3 = 0;
+  static char *__pyx_argnames[] = {"arg0",0};
+  if (!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "O", __pyx_argnames, &__pyx_v_arg0)) return 0;
+  Py_INCREF(__pyx_v_arg0);
+  __pyx_v_errno = Py_None; Py_INCREF(__pyx_v_errno);
+
+  /* "/Volumes/astraw/src/ve/visionegg-devel.clean/src/darwin_maxpriority.pyx":115 */
+  __pyx_1 = PyInt_FromLong(0); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 115; goto __pyx_L1;}
+  Py_DECREF(__pyx_v_errno);
+  __pyx_v_errno = __pyx_1;
+  __pyx_1 = 0;
+
+  /* "/Volumes/astraw/src/ve/visionegg-devel.clean/src/darwin_maxpriority.pyx":116 */
+  __pyx_2 = PyInt_AsLong(__pyx_v_arg0); if (PyErr_Occurred()) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 116; goto __pyx_L1;}
+  __pyx_v_result = sched_get_priority_max(__pyx_2);
+
+  /* "/Volumes/astraw/src/ve/visionegg-devel.clean/src/darwin_maxpriority.pyx":117 */
+  __pyx_2 = PyObject_IsTrue(__pyx_v_errno); if (__pyx_2 < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 117; goto __pyx_L1;}
+  if (__pyx_2) {
+
+    /* "/Volumes/astraw/src/ve/visionegg-devel.clean/src/darwin_maxpriority.pyx":118 */
+    __pyx_1 = __Pyx_GetName(__pyx_b, __pyx_n_OSError); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 118; goto __pyx_L1;}
+    __pyx_3 = PyErr_SetFromErrno(__pyx_1); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 118; goto __pyx_L1;}
+    Py_DECREF(__pyx_1); __pyx_1 = 0;
+    Py_DECREF(__pyx_3); __pyx_3 = 0;
+    goto __pyx_L2;
+  }
+  __pyx_L2:;
+
+  /* "/Volumes/astraw/src/ve/visionegg-devel.clean/src/darwin_maxpriority.pyx":119 */
+  __pyx_1 = PyInt_FromLong(__pyx_v_result); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 119; goto __pyx_L1;}
+  __pyx_r = __pyx_1;
+  __pyx_1 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; Py_INCREF(__pyx_r);
+  goto __pyx_L0;
+  __pyx_L1:;
+  Py_XDECREF(__pyx_1);
+  Py_XDECREF(__pyx_3);
+  __Pyx_AddTraceback("darwin_maxpriority.sched_get_priority_max");
+  __pyx_r = 0;
+  __pyx_L0:;
+  Py_DECREF(__pyx_v_errno);
+  Py_DECREF(__pyx_v_arg0);
+  return __pyx_r;
+}
+
+static PyObject *__pyx_f_18darwin_maxpriority_setpriority(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_f_18darwin_maxpriority_setpriority(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_arg0 = 0;
+  PyObject *__pyx_v_arg1 = 0;
+  PyObject *__pyx_v_arg2 = 0;
+  int __pyx_v_result;
+  PyObject *__pyx_v_errno;
+  PyObject *__pyx_r;
+  PyObject *__pyx_1 = 0;
+  int __pyx_2;
+  int __pyx_3;
+  PyObject *__pyx_4 = 0;
+  static char *__pyx_argnames[] = {"arg0","arg1","arg2",0};
+  if (!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "OOO", __pyx_argnames, &__pyx_v_arg0, &__pyx_v_arg1, &__pyx_v_arg2)) return 0;
+  Py_INCREF(__pyx_v_arg0);
+  Py_INCREF(__pyx_v_arg1);
+  Py_INCREF(__pyx_v_arg2);
+  __pyx_v_errno = Py_None; Py_INCREF(__pyx_v_errno);
+
+  /* "/Volumes/astraw/src/ve/visionegg-devel.clean/src/darwin_maxpriority.pyx":123 */
+  __pyx_1 = PyInt_FromLong(0); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 123; goto __pyx_L1;}
+  Py_DECREF(__pyx_v_errno);
+  __pyx_v_errno = __pyx_1;
+  __pyx_1 = 0;
+
+  /* "/Volumes/astraw/src/ve/visionegg-devel.clean/src/darwin_maxpriority.pyx":124 */
+  __pyx_2 = PyInt_AsLong(__pyx_v_arg0); if (PyErr_Occurred()) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 124; goto __pyx_L1;}
+  __pyx_3 = PyInt_AsLong(__pyx_v_arg2); if (PyErr_Occurred()) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 124; goto __pyx_L1;}
+  __pyx_v_result = setpriority(__pyx_2,__pyx_v_arg1,__pyx_3);
+
+  /* "/Volumes/astraw/src/ve/visionegg-devel.clean/src/darwin_maxpriority.pyx":125 */
+  __pyx_2 = PyObject_IsTrue(__pyx_v_errno); if (__pyx_2 < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 125; goto __pyx_L1;}
+  if (__pyx_2) {
+
+    /* "/Volumes/astraw/src/ve/visionegg-devel.clean/src/darwin_maxpriority.pyx":126 */
+    __pyx_1 = __Pyx_GetName(__pyx_b, __pyx_n_OSError); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 126; goto __pyx_L1;}
+    __pyx_4 = PyErr_SetFromErrno(__pyx_1); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 126; goto __pyx_L1;}
+    Py_DECREF(__pyx_1); __pyx_1 = 0;
+    Py_DECREF(__pyx_4); __pyx_4 = 0;
+    goto __pyx_L2;
+  }
+  __pyx_L2:;
+
+  /* "/Volumes/astraw/src/ve/visionegg-devel.clean/src/darwin_maxpriority.pyx":127 */
+  __pyx_1 = PyInt_FromLong(__pyx_v_result); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 127; goto __pyx_L1;}
+  __pyx_r = __pyx_1;
+  __pyx_1 = 0;
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; Py_INCREF(__pyx_r);
+  goto __pyx_L0;
+  __pyx_L1:;
+  Py_XDECREF(__pyx_1);
+  Py_XDECREF(__pyx_4);
+  __Pyx_AddTraceback("darwin_maxpriority.setpriority");
+  __pyx_r = 0;
+  __pyx_L0:;
+  Py_DECREF(__pyx_v_errno);
+  Py_DECREF(__pyx_v_arg0);
+  Py_DECREF(__pyx_v_arg1);
+  Py_DECREF(__pyx_v_arg2);
+  return __pyx_r;
+}
+
+static __Pyx_InternTabEntry __pyx_intern_tab[] = {
+  {&__pyx_n_OSError, "OSError"},
+  {&__pyx_n_PRIO_PROCESS, "PRIO_PROCESS"},
+  {&__pyx_n_SCHED_FIFO, "SCHED_FIFO"},
+  {&__pyx_n_SCHED_OTHER, "SCHED_OTHER"},
+  {&__pyx_n_SCHED_RR, "SCHED_RR"},
+  {&__pyx_n_darwinsys, "darwinsys"},
+  {&__pyx_n_get_bus_speed, "get_bus_speed"},
+  {&__pyx_n_getpriority, "getpriority"},
+  {&__pyx_n_sched_get_priority_max, "sched_get_priority_max"},
+  {&__pyx_n_set_self_pthread_priority, "set_self_pthread_priority"},
+  {&__pyx_n_set_self_thread_time_constraint_policy, "set_self_thread_time_constraint_policy"},
+  {&__pyx_n_setpriority, "setpriority"},
+  {0, 0}
+};
+
+static struct PyMethodDef __pyx_methods[] = {
+  {"get_bus_speed", (PyCFunction)__pyx_f_18darwin_maxpriority_get_bus_speed, METH_VARARGS|METH_KEYWORDS, 0},
+  {"set_self_thread_time_constraint_policy", (PyCFunction)__pyx_f_18darwin_maxpriority_set_self_thread_time_constraint_policy, METH_VARARGS|METH_KEYWORDS, 0},
+  {"set_self_pthread_priority", (PyCFunction)__pyx_f_18darwin_maxpriority_set_self_pthread_priority, METH_VARARGS|METH_KEYWORDS, 0},
+  {"getpriority", (PyCFunction)__pyx_f_18darwin_maxpriority_getpriority, METH_VARARGS|METH_KEYWORDS, 0},
+  {"sched_get_priority_max", (PyCFunction)__pyx_f_18darwin_maxpriority_sched_get_priority_max, METH_VARARGS|METH_KEYWORDS, 0},
+  {"setpriority", (PyCFunction)__pyx_f_18darwin_maxpriority_setpriority, METH_VARARGS|METH_KEYWORDS, 0},
+  {0, 0, 0, 0}
+};
+
+DL_EXPORT(void) initdarwin_maxpriority(void); /*proto*/
+DL_EXPORT(void) initdarwin_maxpriority(void) {
+  PyObject *__pyx_1 = 0;
+  __pyx_m = Py_InitModule4("darwin_maxpriority", __pyx_methods, 0, 0, PYTHON_API_VERSION);
+  if (!__pyx_m) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3; goto __pyx_L1;};
+  __pyx_b = PyImport_AddModule("__builtin__");
+  if (!__pyx_b) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3; goto __pyx_L1;};
+  if (PyObject_SetAttrString(__pyx_m, "__builtins__", __pyx_b) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3; goto __pyx_L1;};
+  if (__Pyx_InternStrings(__pyx_intern_tab) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3; goto __pyx_L1;};
+
+  /* "/Volumes/astraw/src/ve/visionegg-devel.clean/src/darwin_maxpriority.pyx":62 */
+  __pyx_1 = PyInt_FromLong(PRIO_PROCESS); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 62; goto __pyx_L1;}
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_PRIO_PROCESS, __pyx_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 62; goto __pyx_L1;}
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
+
+  /* "/Volumes/astraw/src/ve/visionegg-devel.clean/src/darwin_maxpriority.pyx":64 */
+  __pyx_1 = PyInt_FromLong(SCHED_OTHER); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 64; goto __pyx_L1;}
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_SCHED_OTHER, __pyx_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 64; goto __pyx_L1;}
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
+
+  /* "/Volumes/astraw/src/ve/visionegg-devel.clean/src/darwin_maxpriority.pyx":65 */
+  __pyx_1 = PyInt_FromLong(SCHED_RR); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 65; goto __pyx_L1;}
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_SCHED_RR, __pyx_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 65; goto __pyx_L1;}
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
+
+  /* "/Volumes/astraw/src/ve/visionegg-devel.clean/src/darwin_maxpriority.pyx":66 */
+  __pyx_1 = PyInt_FromLong(SCHED_FIFO); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 66; goto __pyx_L1;}
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_SCHED_FIFO, __pyx_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 66; goto __pyx_L1;}
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
+
+  /* "/Volumes/astraw/src/ve/visionegg-devel.clean/src/darwin_maxpriority.pyx":121 */
+  return;
+  __pyx_L1:;
+  Py_XDECREF(__pyx_1);
+  __Pyx_AddTraceback("darwin_maxpriority");
+}
+
+static char *__pyx_filenames[] = {
+  "darwin_maxpriority.pyx",
+};
+statichere char **__pyx_f = __pyx_filenames;
+
+/* Runtime support code */
+
+static PyObject *__Pyx_GetName(PyObject *dict, PyObject *name) {
+    PyObject *result;
+    result = PyObject_GetAttr(dict, name);
+    if (!result)
+        PyErr_SetObject(PyExc_NameError, name);
+    return result;
+}
+
+static int __Pyx_InternStrings(__Pyx_InternTabEntry *t) {
+    while (t->p) {
+        *t->p = PyString_InternFromString(t->s);
+        if (!*t->p)
+            return -1;
+        ++t;
+    }
+    return 0;
+}
+
+#include "compile.h"
+#include "frameobject.h"
+#include "traceback.h"
+
+static void __Pyx_AddTraceback(char *funcname) {
+    PyObject *py_srcfile = 0;
+    PyObject *py_funcname = 0;
+    PyObject *py_globals = 0;
+    PyObject *empty_tuple = 0;
+    PyObject *empty_string = 0;
+    PyCodeObject *py_code = 0;
+    PyFrameObject *py_frame = 0;
+    
+    py_srcfile = PyString_FromString(__pyx_filename);
+    if (!py_srcfile) goto bad;
+    py_funcname = PyString_FromString(funcname);
+    if (!py_funcname) goto bad;
+    py_globals = PyModule_GetDict(__pyx_m);
+    if (!py_globals) goto bad;
+    empty_tuple = PyTuple_New(0);
+    if (!empty_tuple) goto bad;
+    empty_string = PyString_FromString("");
+    if (!empty_string) goto bad;
+    py_code = PyCode_New(
+        0,            /*int argcount,*/
+        0,            /*int nlocals,*/
+        0,            /*int stacksize,*/
+        0,            /*int flags,*/
+        empty_string, /*PyObject *code,*/
+        empty_tuple,  /*PyObject *consts,*/
+        empty_tuple,  /*PyObject *names,*/
+        empty_tuple,  /*PyObject *varnames,*/
+        empty_tuple,  /*PyObject *freevars,*/
+        empty_tuple,  /*PyObject *cellvars,*/
+        py_srcfile,   /*PyObject *filename,*/
+        py_funcname,  /*PyObject *name,*/
+        __pyx_lineno,   /*int firstlineno,*/
+        empty_string  /*PyObject *lnotab*/
+    );
+    if (!py_code) goto bad;
+    py_frame = PyFrame_New(
+        PyThreadState_Get(), /*PyThreadState *tstate,*/
+        py_code,             /*PyCodeObject *code,*/
+        py_globals,          /*PyObject *globals,*/
+        0                    /*PyObject *locals*/
+    );
+    if (!py_frame) goto bad;
+    py_frame->f_lineno = __pyx_lineno;
+    PyTraceBack_Here(py_frame);
+bad:
+    Py_XDECREF(py_srcfile);
+    Py_XDECREF(py_funcname);
+    Py_XDECREF(empty_tuple);
+    Py_XDECREF(empty_string);
+    Py_XDECREF(py_code);
+    Py_XDECREF(py_frame);
+}
diff --git a/VisionEgg/darwin_maxpriority.pyx b/VisionEgg/darwin_maxpriority.pyx
new file mode 100755
index 0000000..b9900b9
--- /dev/null
+++ b/VisionEgg/darwin_maxpriority.pyx
@@ -0,0 +1,130 @@
+#emacs, this is -*-Python-*- mode
+# Copyright (C) 2005-2006 California Institute of Technology
+# Distributed under the terms of the GNU Lesser General Public License
+# (LGPL).
+
+cimport darwinsys # for exported symbols
+
+cdef extern from "darwinsys_compat.h":
+    ctypedef int id_t
+
+cdef extern from "Python.h":
+    cdef object PyErr_SetFromErrno(object)
+
+cdef extern from "stdlib.h":
+    ctypedef int size_t
+    cdef void* memset(void*, int, size_t)
+
+cdef extern from "errno.h":
+    cdef int errno
+
+cdef extern from "sys/sysctl.h":
+    cdef int CTL_HW
+    cdef int HW_BUS_FREQ
+    ctypedef unsigned int u_int
+    cdef int sysctl(int *, u_int, void*, size_t*, void*, size_t)
+
+cdef extern from "mach/mach.h":
+    ctypedef unsigned int uint32_t
+    ctypedef int boolean_t
+    cdef struct thread_time_constraint_policy:
+        uint32_t period
+        uint32_t computation
+        uint32_t constraint
+        boolean_t preemptible
+    ctypedef thread_time_constraint_policy thread_time_constraint_policy_data_t
+    ctypedef thread_time_constraint_policy* thread_time_constraint_policy_t
+    cdef int THREAD_TIME_CONSTRAINT_POLICY
+    cdef size_t THREAD_TIME_CONSTRAINT_POLICY_COUNT
+    ctypedef int kern_return_t
+    ctypedef int thread_act_t
+    ctypedef int thread_policy_flavor_t
+    ctypedef int integer_t
+    ctypedef integer_t* thread_policy_t
+    ctypedef int mach_msg_type_number_t
+    cdef kern_return_t thread_policy_set( thread_act_t,
+                                          thread_policy_flavor_t,
+                                          thread_policy_t,
+                                          mach_msg_type_number_t)
+    ctypedef int mach_port_t
+    cdef mach_port_t mach_task_self()
+    cdef mach_port_t mach_thread_self()
+
+cdef extern from "sched.h":
+    cdef struct sched_param:
+        int sched_priority
+
+cdef extern from "pthread.h":
+    ctypedef int pthread_t
+    cdef pthread_t pthread_self()
+    cdef int pthread_setschedparam(pthread_t thread, 
+                                   int policy,
+                                   sched_param *)
+    
+# export symbols to Python
+PRIO_PROCESS = darwinsys.PRIO_PROCESS
+
+SCHED_OTHER = darwinsys.SCHED_OTHER
+SCHED_RR = darwinsys.SCHED_RR
+SCHED_FIFO = darwinsys.SCHED_FIFO
+
+def get_bus_speed():
+    cdef int bus_speed
+    cdef int mlib[2]
+    cdef size_t len
+    
+    mlib[0] = CTL_HW
+    mlib[1] = HW_BUS_FREQ
+    
+    len = sizeof(bus_speed)
+    sysctl(mlib, 2, &bus_speed, &len, NULL, 0)
+
+    return bus_speed
+
+def set_self_thread_time_constraint_policy( period,
+                                            computation,
+                                            constraint,
+                                            preemptible ):
+    
+    cdef thread_time_constraint_policy_data_t ttcpolicy
+    
+    ttcpolicy.period = period
+    ttcpolicy.computation = computation
+    ttcpolicy.constraint = constraint
+    ttcpolicy.preemptible = preemptible
+
+    return thread_policy_set( mach_thread_self(),
+                              THREAD_TIME_CONSTRAINT_POLICY,
+                              <thread_policy_t>&ttcpolicy,
+                              THREAD_TIME_CONSTRAINT_POLICY_COUNT)
+
+def set_self_pthread_priority( policy, priority ):
+    cdef sched_param sp
+
+    memset(&sp,0,sizeof(sched_param))
+    sp.sched_priority=priority
+    return pthread_setschedparam(pthread_self(), policy, &sp)
+
+def getpriority(arg0,arg1):
+    cdef int result
+    errno=0
+    result = darwinsys.getpriority(arg0,arg1)
+    if errno:
+        PyErr_SetFromErrno(OSError)    
+    return result
+
+def sched_get_priority_max( arg0 ):
+    cdef int result
+    errno=0
+    result = darwinsys.sched_get_priority_max(arg0)
+    if errno:
+        PyErr_SetFromErrno(OSError)    
+    return result
+
+def setpriority(arg0, arg1, arg2):
+    cdef int result
+    errno=0
+    result = darwinsys.setpriority(arg0,arg1,arg2)
+    if errno:
+        PyErr_SetFromErrno(OSError)    
+    return result
diff --git a/VisionEgg/darwinsys.pxd b/VisionEgg/darwinsys.pxd
new file mode 100755
index 0000000..b8992a5
--- /dev/null
+++ b/VisionEgg/darwinsys.pxd
@@ -0,0 +1,15 @@
+#emacs, this is -*-Python-*- mode
+# Copyright (C) 2005-2006 California Institute of Technology
+# Distributed under the terms of the GNU Lesser General Public License
+# (LGPL).
+
+cdef extern from "sys/resource.h":
+    cdef int PRIO_PROCESS
+    cdef int getpriority(int, id_t)
+    cdef int setpriority( int, id_t, int )
+    cdef int sched_get_priority_max(int)
+
+cdef extern from "pthread.h":
+    cdef int SCHED_OTHER
+    cdef int SCHED_RR
+    cdef int SCHED_FIFO
diff --git a/VisionEgg/darwinsys_compat.h b/VisionEgg/darwinsys_compat.h
new file mode 100644
index 0000000..3cf2b9a
--- /dev/null
+++ b/VisionEgg/darwinsys_compat.h
@@ -0,0 +1,11 @@
+/*
+  Copyright (C) 2006 California Institute of Technology
+  Distributed under the terms of the GNU Lesser General Public License
+  (LGPL).
+*/
+
+/* Mac OS X 10.3 does not define "id_t" so we have to do it here */
+
+#ifndef id_t
+#define id_t int
+#endif
diff --git a/VisionEgg/data/VisionEggTitle.xcf b/VisionEgg/data/VisionEggTitle.xcf
new file mode 100644
index 0000000..a71c6e7
Binary files /dev/null and b/VisionEgg/data/VisionEggTitle.xcf differ
diff --git a/VisionEgg/data/az_el.png b/VisionEgg/data/az_el.png
new file mode 100644
index 0000000..fb68d29
Binary files /dev/null and b/VisionEgg/data/az_el.png differ
diff --git a/VisionEgg/data/monitor.xcf b/VisionEgg/data/monitor.xcf
new file mode 100644
index 0000000..e17fbb8
Binary files /dev/null and b/VisionEgg/data/monitor.xcf differ
diff --git a/VisionEgg/data/panorama.jpg b/VisionEgg/data/panorama.jpg
new file mode 100644
index 0000000..52fbf94
Binary files /dev/null and b/VisionEgg/data/panorama.jpg differ
diff --git a/VisionEgg/data/spiral.png b/VisionEgg/data/spiral.png
new file mode 100755
index 0000000..f4218c4
Binary files /dev/null and b/VisionEgg/data/spiral.png differ
diff --git a/VisionEgg/data/visionegg.bmp b/VisionEgg/data/visionegg.bmp
new file mode 100644
index 0000000..c1fba75
Binary files /dev/null and b/VisionEgg/data/visionegg.bmp differ
diff --git a/VisionEgg/data/visionegg.tif b/VisionEgg/data/visionegg.tif
new file mode 100644
index 0000000..defbeb4
Binary files /dev/null and b/VisionEgg/data/visionegg.tif differ
diff --git a/VisionEgg/data/water.mov b/VisionEgg/data/water.mov
new file mode 100644
index 0000000..792e4a6
Binary files /dev/null and b/VisionEgg/data/water.mov differ
diff --git a/VisionEgg/gl_qt.c b/VisionEgg/gl_qt.c
new file mode 100644
index 0000000..e6a98df
--- /dev/null
+++ b/VisionEgg/gl_qt.c
@@ -0,0 +1,248 @@
+/*
+ * Copyright (c) 2003, 2006 Andrew Straw.  Distributed under the terms
+ * of the GNU Lesser General Public License (LGPL).
+ *
+ * Author: Andrew Straw <astraw at users.sourceforge.net>
+ *
+ */
+
+#include "Python.h"
+
+#if defined(MS_WINDOWS)
+#  include <windows.h>
+#endif
+
+#include <stdlib.h>
+#include <stdio.h>
+
+#if defined(__APPLE__)
+#  include <OpenGL/gl.h>
+#  include <QuickTime/Movies.h>
+#  include <Carbon/Carbon.h>
+#else
+#  include <GL/gl.h>
+#  include <Movies.h>
+#endif
+
+#include "gl_qt.h"
+
+int gl_qt_error = 0;
+const char * gl_qt_error_str= NULL;
+static char mac_err_str[256];
+
+const char * MAC_OSERR_TO_STR ( int OSErr ) {
+  // XXX could make this lookup the error using mac Estr resources
+  snprintf(mac_err_str,256,"Mac OS error %d",OSErr);
+  return mac_err_str;
+}
+int gl_qt_err_occurred( void ) {
+  return gl_qt_error;
+}
+const char * gl_qt_err_message( void ) {
+  return gl_qt_error_str;
+}
+void gl_qt_set_error(const char * errmsg) {
+  gl_qt_error = 1;
+  gl_qt_error_str = errmsg;
+}
+
+gl_qt_renderer* gl_qt_renderer_create( Movie theMovie, short tex_shape, float tex_scale ) {
+  gl_qt_renderer * render_info = NULL;
+
+  short gMovieWidth, gMovieHeight;
+  int wOffScreenDepth;
+
+  long sizeTexture;
+
+  // Movie
+  Rect gMovieRect = {0, 0, 0, 0};
+  Rect rectNewMovie;
+  MatrixRecord 	movieMatrix;
+
+  /// XXX todo: should check tex_shape is power of 2
+  render_info = malloc(sizeof(gl_qt_renderer));
+  if (render_info == NULL) {
+    gl_qt_set_error("memory allocation failure (render_info)");
+    return NULL;
+  }
+
+  render_info->gl_texel_data = NULL;
+  render_info->qt_pixel_data = NULL;
+  render_info->offscreen_gworld = NULL;
+
+  render_info->my_movie = theMovie;
+
+  GetMovieBox(render_info->my_movie, &gMovieRect);
+
+  gMovieRect.bottom = gMovieRect.bottom-gMovieRect.top;
+  gMovieRect.top = 0;
+  gMovieRect.right = gMovieRect.right-gMovieRect.left;
+  gMovieRect.left = 0;
+
+  SetMovieBox(render_info->my_movie, &gMovieRect);
+
+  gMovieWidth = (short) (gMovieRect.right - gMovieRect.left);
+  gMovieHeight = (short) (gMovieRect.bottom - gMovieRect.top);
+
+  render_info->tex_shape=tex_shape; // on both sides (square)
+  wOffScreenDepth=32; // if packed pixel implemented, this could be reduced
+  
+  // allocate RGB 888 texture buffer
+  sizeTexture = 3 * tex_shape * tex_shape; // size of texture in bytes
+
+  render_info->gl_texel_data = (GLubyte *)malloc(sizeTexture);
+  if (render_info->gl_texel_data == NULL) {
+    gl_qt_set_error("memory allocation failure (render_info->gl_texel_data)");
+    goto fail;
+  }
+
+  if (tex_scale == 0.0) { // auto-scale
+    if (gMovieWidth > gMovieHeight) {
+      tex_scale = (float)tex_shape / (float) gMovieWidth;
+    }
+    else {
+      tex_scale = (float)tex_shape / (float) gMovieHeight;
+    }
+  }
+
+  render_info->tex_width = (short) ((float)gMovieWidth * tex_scale);	
+  render_info->tex_height = (short) ((float)gMovieHeight * tex_scale);
+
+  if ((render_info->tex_width > tex_shape) || (render_info->tex_height > tex_shape)) {
+    gl_qt_set_error("movie too big for assigned texture shape");
+    goto fail;
+  }
+
+  SetIdentityMatrix (&movieMatrix);
+  ScaleMatrix(&movieMatrix, 
+	      X2Fix(tex_scale),  // XXX where is X2Fix defined?
+	      X2Fix(tex_scale), 
+	      X2Fix(0.0), 
+	      X2Fix(0.0));
+  SetMovieMatrix(render_info->my_movie, &movieMatrix);
+
+  rectNewMovie.top = 0;
+  rectNewMovie.left = 0;
+  rectNewMovie.bottom = render_info->tex_height;
+  rectNewMovie.right = render_info->tex_width;
+  
+  render_info->row_stride = render_info->tex_width * wOffScreenDepth / 8;
+  render_info->qt_pixel_data = (unsigned char *) malloc(render_info->row_stride * render_info->tex_height);
+  if (render_info->qt_pixel_data == NULL) {
+    gl_qt_set_error("memory allocation failure (render_info->qt_pixel_data)");
+    goto fail;
+  }
+  memset(render_info->qt_pixel_data, 0, render_info->row_stride * render_info->tex_height);
+
+  QTNewGWorldFromPtr (&(render_info->offscreen_gworld), k32ARGBPixelFormat, 
+		      &rectNewMovie, NULL, NULL, 0, 
+		      render_info->qt_pixel_data, render_info->row_stride);
+  if (render_info->offscreen_gworld == NULL) {
+    gl_qt_set_error("error allocating offscreen GWorld");
+    goto fail;
+  }
+
+  SetMovieGWorld(render_info->my_movie, (CGrafPtr)render_info->offscreen_gworld, NULL);
+  render_info->offscreen_pixmap = GetGWorldPixMap(render_info->offscreen_gworld);
+  if (!render_info->offscreen_pixmap) {
+    gl_qt_set_error("Could not GetGWorldPixMap");
+    goto fail;
+  }
+
+  if (!LockPixels(render_info->offscreen_pixmap)) {
+    gl_qt_set_error("Could not LockPixels");
+    goto fail;
+  }
+
+  render_info->qt_pixel_data = (unsigned char *) GetPixBaseAddr(render_info->offscreen_pixmap);
+  //render_info->row_stride = (unsigned long) GetPixRowBytes(render_info->offscreen_pixmap);
+
+  return render_info;
+
+ fail:
+  if (render_info->gl_texel_data != NULL) {
+    free(render_info->gl_texel_data);
+  }
+  if (render_info->qt_pixel_data != NULL) {
+    free(render_info->qt_pixel_data);
+  }
+ 
+  if (render_info->offscreen_gworld != NULL) {
+    DisposeGWorld(render_info->offscreen_gworld);
+  }
+
+  if (render_info != NULL) {
+    free(render_info);
+  }
+  return NULL;
+}
+
+void gl_qt_renderer_delete( gl_qt_renderer * render_info ) {
+  int free_warning = 0;
+
+  if (render_info->offscreen_gworld != NULL) DisposeGWorld(render_info->offscreen_gworld);
+  else free_warning = 1;
+
+  if (render_info->gl_texel_data != NULL) free(render_info->gl_texel_data);
+  else free_warning = 1;
+
+  if (render_info->qt_pixel_data != NULL) free(render_info->qt_pixel_data);
+  else free_warning = 1;
+
+  if (render_info != NULL) free(render_info);
+  else free_warning = 1;
+  
+  if (free_warning) {
+    gl_qt_set_error("gl_qt_renderer_delete() called, but something was already deleted!");
+  }
+}
+
+void gl_qt_renderer_update(gl_qt_renderer * render_info) {
+
+  // Despite the swizzeling, this is faster (on my PowerBook G4 ATI
+  // Rage 128 OS X 10.2.6, anyway) than sending the data as GL_ABGR
+  // direct to OpenGL.
+
+  // Also, this way we can flip the image 'right side up' (according
+  // to OpenGL) for free.
+
+  // Step 1 - 'swizzle' data (convert ABGR to RGB)
+  register int i,j;
+  register unsigned char * pos;
+  register unsigned char * pTextile;
+  register int row;
+
+  GLenum error;
+  const char *this_msg;
+
+  row = render_info->tex_height;
+  for (j = 0; j < render_info->tex_height; j++)
+    {
+      row--;
+      pTextile = render_info->gl_texel_data + row*render_info->tex_width*3;
+      //      pTextile = render_info->gl_texel_data + row*render_info->tex_shape*3;
+      for (i = 0; i < render_info->tex_width; i++)
+	{
+	  pos = (unsigned char *)(render_info->qt_pixel_data + (j * render_info->row_stride) + (i * 4));
+	  *(pTextile++) = *(pos + 1);
+	  *(pTextile++) = *(pos + 2);
+	  *(pTextile++) = *(pos + 3);
+	}
+    }
+  // Step 2 - send to OpenGL active 2D texture object
+  glTexSubImage2D(GL_TEXTURE_2D, 
+		  0, 
+		  0, 
+		  0, 
+		  render_info->tex_width, 
+		  render_info->tex_height, 
+		  GL_RGB, 
+		  GL_UNSIGNED_BYTE, 
+		  render_info->gl_texel_data);
+  error = glGetError();
+  if (GL_NO_ERROR != error) {
+    //this_msg = gluErrorString(error);
+    this_msg = "unknown error";
+    gl_qt_set_error(this_msg);
+  }
+}
diff --git a/VisionEgg/gl_qt.h b/VisionEgg/gl_qt.h
new file mode 100644
index 0000000..676fb92
--- /dev/null
+++ b/VisionEgg/gl_qt.h
@@ -0,0 +1,39 @@
+#ifndef _QUICKTIME_C_H_
+#define _QUICKTIME_C_H_
+
+#include "vegl.h"
+
+#if defined(__APPLE__)
+#  include <QuickTime/Movies.h>
+#else
+#  include <Movies.h>
+#endif
+
+typedef struct {
+  Movie my_movie;
+
+  // OpenGL info
+  GLubyte * gl_texel_data;
+  short tex_shape;
+  short tex_height;
+  short tex_width;
+
+  // QuickTime offscreen info
+  unsigned char * qt_pixel_data;
+  unsigned long row_stride;
+  GWorldPtr offscreen_gworld;
+  PixMapHandle offscreen_pixmap;
+} gl_qt_renderer;
+
+/* Error checking */
+
+int gl_qt_err_occurred(void);
+const char * gl_qt_err_message(void);
+
+/* Standard functions */
+
+gl_qt_renderer* gl_qt_renderer_create( Movie theMovie, short tex_shape, float tex_scale ); // tex_scale = 0.0 is auto
+void gl_qt_renderer_delete( gl_qt_renderer *);
+void gl_qt_renderer_update( gl_qt_renderer *);
+
+#endif
diff --git a/VisionEgg/gl_qt.py b/VisionEgg/gl_qt.py
new file mode 100644
index 0000000..c4f99ab
--- /dev/null
+++ b/VisionEgg/gl_qt.py
@@ -0,0 +1,45 @@
+# This file was created automatically by SWIG.
+# Don't modify this file, modify the SWIG interface instead.
+# This file is compatible with both classic and new-style classes.
+
+import _gl_qt
+
+def _swig_setattr_nondynamic(self,class_type,name,value,static=1):
+    if (name == "this"):
+        if isinstance(value, class_type):
+            self.__dict__[name] = value.this
+            if hasattr(value,"thisown"): self.__dict__["thisown"] = value.thisown
+            del value.thisown
+            return
+    method = class_type.__swig_setmethods__.get(name,None)
+    if method: return method(self,value)
+    if (not static) or hasattr(self,name) or (name == "thisown"):
+        self.__dict__[name] = value
+    else:
+        raise AttributeError("You cannot add attributes to %s" % self)
+
+def _swig_setattr(self,class_type,name,value):
+    return _swig_setattr_nondynamic(self,class_type,name,value,0)
+
+def _swig_getattr(self,class_type,name):
+    method = class_type.__swig_getmethods__.get(name,None)
+    if method: return method(self)
+    raise AttributeError,name
+
+import types
+try:
+    _object = types.ObjectType
+    _newclass = 1
+except AttributeError:
+    class _object : pass
+    _newclass = 0
+del types
+
+
+
+gl_qt_renderer_create = _gl_qt.gl_qt_renderer_create
+
+gl_qt_renderer_delete = _gl_qt.gl_qt_renderer_delete
+
+gl_qt_renderer_update = _gl_qt.gl_qt_renderer_update
+
diff --git a/VisionEgg/gl_qt_wrap.c b/VisionEgg/gl_qt_wrap.c
new file mode 100644
index 0000000..d86994a
--- /dev/null
+++ b/VisionEgg/gl_qt_wrap.c
@@ -0,0 +1,2003 @@
+/* ----------------------------------------------------------------------------
+ * This file was automatically generated by SWIG (http://www.swig.org).
+ * Version 1.3.24
+ * 
+ * This file is not intended to be easily readable and contains a number of 
+ * coding conventions designed to improve portability and efficiency. Do not make
+ * changes to this file unless you know what you are doing--modify the SWIG 
+ * interface file instead. 
+ * ----------------------------------------------------------------------------- */
+
+#define SWIGPYTHON
+
+#ifndef SWIG_TEMPLATE_DISAMBIGUATOR
+#  if defined(__SUNPRO_CC) 
+#    define SWIG_TEMPLATE_DISAMBIGUATOR template
+#  else
+#    define SWIG_TEMPLATE_DISAMBIGUATOR 
+#  endif
+#endif
+
+
+#include <Python.h>
+
+/***********************************************************************
+ * swigrun.swg
+ *
+ *     This file contains generic CAPI SWIG runtime support for pointer
+ *     type checking.
+ *
+ ************************************************************************/
+
+/* This should only be incremented when either the layout of swig_type_info changes,
+   or for whatever reason, the runtime changes incompatibly */
+#define SWIG_RUNTIME_VERSION "1"
+
+/* define SWIG_TYPE_TABLE_NAME as "SWIG_TYPE_TABLE" */
+#ifdef SWIG_TYPE_TABLE
+#define SWIG_QUOTE_STRING(x) #x
+#define SWIG_EXPAND_AND_QUOTE_STRING(x) SWIG_QUOTE_STRING(x)
+#define SWIG_TYPE_TABLE_NAME SWIG_EXPAND_AND_QUOTE_STRING(SWIG_TYPE_TABLE)
+#else
+#define SWIG_TYPE_TABLE_NAME
+#endif
+
+#include <string.h>
+
+#ifndef SWIGINLINE
+#if defined(__cplusplus) || (defined(__GNUC__) && !defined(__STRICT_ANSI__))
+#  define SWIGINLINE inline
+#else
+#  define SWIGINLINE
+#endif
+#endif
+
+/*
+  You can use the SWIGRUNTIME and SWIGRUNTIMEINLINE macros for
+  creating a static or dynamic library from the swig runtime code.
+  In 99.9% of the cases, swig just needs to declare them as 'static'.
+  
+  But only do this if is strictly necessary, ie, if you have problems
+  with your compiler or so.
+*/
+#ifndef SWIGRUNTIME
+#define SWIGRUNTIME static
+#endif
+#ifndef SWIGRUNTIMEINLINE
+#define SWIGRUNTIMEINLINE SWIGRUNTIME SWIGINLINE
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef void *(*swig_converter_func)(void *);
+typedef struct swig_type_info *(*swig_dycast_func)(void **);
+
+typedef struct swig_type_info {
+  const char             *name;
+  swig_converter_func     converter;
+  const char             *str;
+  void                   *clientdata;
+  swig_dycast_func        dcast;
+  struct swig_type_info  *next;
+  struct swig_type_info  *prev;
+} swig_type_info;
+
+/* 
+  Compare two type names skipping the space characters, therefore
+  "char*" == "char *" and "Class<int>" == "Class<int >", etc.
+
+  Return 0 when the two name types are equivalent, as in
+  strncmp, but skipping ' '.
+*/
+SWIGRUNTIME int
+SWIG_TypeNameComp(const char *f1, const char *l1,
+		  const char *f2, const char *l2) {
+  for (;(f1 != l1) && (f2 != l2); ++f1, ++f2) {
+    while ((*f1 == ' ') && (f1 != l1)) ++f1;
+    while ((*f2 == ' ') && (f2 != l2)) ++f2;
+    if (*f1 != *f2) return *f1 - *f2;
+  }
+  return (l1 - f1) - (l2 - f2);
+}
+
+/*
+  Check type equivalence in a name list like <name1>|<name2>|...
+*/
+SWIGRUNTIME int
+SWIG_TypeEquiv(const char *nb, const char *tb) {
+  int equiv = 0;
+  const char* te = tb + strlen(tb);
+  const char* ne = nb;
+  while (!equiv && *ne) {
+    for (nb = ne; *ne; ++ne) {
+      if (*ne == '|') break;
+    }
+    equiv = SWIG_TypeNameComp(nb, ne, tb, te) == 0;
+    if (*ne) ++ne;
+  }
+  return equiv;
+}
+
+/*
+  Register a type mapping with the type-checking
+*/
+SWIGRUNTIME swig_type_info *
+SWIG_TypeRegisterTL(swig_type_info **tl, swig_type_info *ti) {
+  swig_type_info *tc, *head, *ret, *next;
+  /* Check to see if this type has already been registered */
+  tc = *tl;
+  while (tc) {
+    /* check simple type equivalence */
+    int typeequiv = (strcmp(tc->name, ti->name) == 0);   
+    /* check full type equivalence, resolving typedefs */
+    if (!typeequiv) {
+      /* only if tc is not a typedef (no '|' on it) */
+      if (tc->str && ti->str && !strstr(tc->str,"|")) {
+	typeequiv = SWIG_TypeEquiv(ti->str,tc->str);
+      }
+    }
+    if (typeequiv) {
+      /* Already exists in the table.  Just add additional types to the list */
+      if (ti->clientdata) tc->clientdata = ti->clientdata;
+      head = tc;
+      next = tc->next;
+      goto l1;
+    }
+    tc = tc->prev;
+  }
+  head = ti;
+  next = 0;
+
+  /* Place in list */
+  ti->prev = *tl;
+  *tl = ti;
+
+  /* Build linked lists */
+  l1:
+  ret = head;
+  tc = ti + 1;
+  /* Patch up the rest of the links */
+  while (tc->name) {
+    head->next = tc;
+    tc->prev = head;
+    head = tc;
+    tc++;
+  }
+  if (next) next->prev = head;
+  head->next = next;
+
+  return ret;
+}
+
+/*
+  Check the typename
+*/
+SWIGRUNTIME swig_type_info *
+SWIG_TypeCheck(const char *c, swig_type_info *ty) {
+  swig_type_info *s;
+  if (!ty) return 0;        /* Void pointer */
+  s = ty->next;             /* First element always just a name */
+  do {
+    if (strcmp(s->name,c) == 0) {
+      if (s == ty->next) return s;
+      /* Move s to the top of the linked list */
+      s->prev->next = s->next;
+      if (s->next) {
+        s->next->prev = s->prev;
+      }
+      /* Insert s as second element in the list */
+      s->next = ty->next;
+      if (ty->next) ty->next->prev = s;
+      ty->next = s;
+      s->prev = ty;
+      return s;
+    }
+    s = s->next;
+  } while (s && (s != ty->next));
+  return 0;
+}
+
+/*
+  Cast a pointer up an inheritance hierarchy
+*/
+SWIGRUNTIMEINLINE void *
+SWIG_TypeCast(swig_type_info *ty, void *ptr) {
+  return ((!ty) || (!ty->converter)) ? ptr : (*ty->converter)(ptr);
+}
+
+/* 
+   Dynamic pointer casting. Down an inheritance hierarchy
+*/
+SWIGRUNTIME swig_type_info *
+SWIG_TypeDynamicCast(swig_type_info *ty, void **ptr) {
+  swig_type_info *lastty = ty;
+  if (!ty || !ty->dcast) return ty;
+  while (ty && (ty->dcast)) {
+    ty = (*ty->dcast)(ptr);
+    if (ty) lastty = ty;
+  }
+  return lastty;
+}
+
+/*
+  Return the name associated with this type
+*/
+SWIGRUNTIMEINLINE const char *
+SWIG_TypeName(const swig_type_info *ty) {
+  return ty->name;
+}
+
+/*
+  Return the pretty name associated with this type,
+  that is an unmangled type name in a form presentable to the user.
+*/
+SWIGRUNTIME const char *
+SWIG_TypePrettyName(const swig_type_info *type) {
+  /* The "str" field contains the equivalent pretty names of the
+     type, separated by vertical-bar characters.  We choose
+     to print the last name, as it is often (?) the most
+     specific. */
+  if (type->str != NULL) {
+    const char *last_name = type->str;
+    const char *s;
+    for (s = type->str; *s; s++)
+      if (*s == '|') last_name = s+1;
+    return last_name;
+  }
+  else
+    return type->name;
+}
+
+/*
+  Search for a swig_type_info structure
+*/
+SWIGRUNTIME swig_type_info *
+SWIG_TypeQueryTL(swig_type_info *tl, const char *name) {
+  swig_type_info *ty = tl;
+  while (ty) {
+    if (ty->str && (SWIG_TypeEquiv(ty->str,name))) return ty;
+    if (ty->name && (strcmp(name,ty->name) == 0)) return ty;
+    ty = ty->prev;
+  }
+  return 0;
+}
+
+/* 
+   Set the clientdata field for a type
+*/
+SWIGRUNTIME void
+SWIG_TypeClientDataTL(swig_type_info *tl, swig_type_info *ti, void *clientdata) {
+  swig_type_info *tc, *equiv;
+  if (ti->clientdata) return;
+  /* if (ti->clientdata == clientdata) return; */
+  ti->clientdata = clientdata;
+  equiv = ti->next;
+  while (equiv) {
+    if (!equiv->converter) {
+      tc = tl;
+      while (tc) {
+        if ((strcmp(tc->name, equiv->name) == 0))
+          SWIG_TypeClientDataTL(tl,tc,clientdata);
+        tc = tc->prev;
+      }
+    }
+    equiv = equiv->next;
+  }
+}
+
+/* 
+   Pack binary data into a string
+*/
+SWIGRUNTIME char *
+SWIG_PackData(char *c, void *ptr, size_t sz) {
+  static char hex[17] = "0123456789abcdef";
+  unsigned char *u = (unsigned char *) ptr;
+  const unsigned char *eu =  u + sz;
+  register unsigned char uu;
+  for (; u != eu; ++u) {
+    uu = *u;
+    *(c++) = hex[(uu & 0xf0) >> 4];
+    *(c++) = hex[uu & 0xf];
+  }
+  return c;
+}
+
+/* 
+   Unpack binary data from a string
+*/
+SWIGRUNTIME const char *
+SWIG_UnpackData(const char *c, void *ptr, size_t sz) {
+  register unsigned char *u = (unsigned char *) ptr;
+  register const unsigned char *eu =  u + sz;
+  for (; u != eu; ++u) {
+    register int d = *(c++);
+    register unsigned char uu = 0;
+    if ((d >= '0') && (d <= '9'))
+      uu = ((d - '0') << 4);
+    else if ((d >= 'a') && (d <= 'f'))
+      uu = ((d - ('a'-10)) << 4);
+    else 
+      return (char *) 0;
+    d = *(c++);
+    if ((d >= '0') && (d <= '9'))
+      uu |= (d - '0');
+    else if ((d >= 'a') && (d <= 'f'))
+      uu |= (d - ('a'-10));
+    else 
+      return (char *) 0;
+    *u = uu;
+  }
+  return c;
+}
+
+/*
+  This function will propagate the clientdata field of type to any new
+  swig_type_info structures that have been added into the list of
+  equivalent types.  It is like calling SWIG_TypeClientData(type,
+  clientdata) a second time.
+*/
+SWIGRUNTIME void
+SWIG_PropagateClientDataTL(swig_type_info *tl, swig_type_info *type) {
+  swig_type_info *equiv = type->next;
+  swig_type_info *tc;
+  if (!type->clientdata) return;
+  while (equiv) {
+    if (!equiv->converter) {
+      tc = tl;
+      while (tc) {
+        if ((strcmp(tc->name, equiv->name) == 0) && !tc->clientdata)
+          SWIG_TypeClientDataTL(tl,tc, type->clientdata);
+        tc = tc->prev;
+      }
+    }
+    equiv = equiv->next;
+  }
+}
+
+/* 
+   Pack 'void *' into a string buffer.
+*/
+SWIGRUNTIME char *
+SWIG_PackVoidPtr(char *buff, void *ptr, const char *name, size_t bsz) {
+  char *r = buff;
+  if ((2*sizeof(void *) + 2) > bsz) return 0;
+  *(r++) = '_';
+  r = SWIG_PackData(r,&ptr,sizeof(void *));
+  if (strlen(name) + 1 > (bsz - (r - buff))) return 0;
+  strcpy(r,name);
+  return buff;
+}
+
+SWIGRUNTIME const char *
+SWIG_UnpackVoidPtr(const char *c, void **ptr, const char *name) {
+  if (*c != '_') {
+    if (strcmp(c,"NULL") == 0) {
+      *ptr = (void *) 0;
+      return name;
+    } else {
+      return 0;
+    }
+  }
+  return SWIG_UnpackData(++c,ptr,sizeof(void *));
+}
+
+SWIGRUNTIME char *
+SWIG_PackDataName(char *buff, void *ptr, size_t sz, const char *name, size_t bsz) {
+  char *r = buff;
+  size_t lname = (name ? strlen(name) : 0);
+  if ((2*sz + 2 + lname) > bsz) return 0;
+  *(r++) = '_';
+  r = SWIG_PackData(r,ptr,sz);
+  if (lname) {
+    strncpy(r,name,lname+1);
+  } else {
+    *r = 0;
+  }
+  return buff;
+}
+
+SWIGRUNTIME const char *
+SWIG_UnpackDataName(const char *c, void *ptr, size_t sz, const char *name) {
+  if (*c != '_') {
+    if (strcmp(c,"NULL") == 0) {
+      memset(ptr,0,sz);
+      return name;
+    } else {
+      return 0;
+    }
+  }
+  return SWIG_UnpackData(++c,ptr,sz);
+}
+
+#ifdef __cplusplus
+}
+#endif
+
+/***********************************************************************
+ * common.swg
+ *
+ *     This file contains generic SWIG runtime support for pointer
+ *     type checking as well as a few commonly used macros to control
+ *     external linkage.
+ *
+ * Author : David Beazley (beazley at cs.uchicago.edu)
+ *
+ * Copyright (c) 1999-2000, The University of Chicago
+ * 
+ * This file may be freely redistributed without license or fee provided
+ * this copyright message remains intact.
+ ************************************************************************/
+
+
+#if defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__)
+#  if !defined(STATIC_LINKED)
+#    define SWIGEXPORT(a) __declspec(dllexport) a
+#  else
+#    define SWIGEXPORT(a) a
+#  endif
+#else
+#  define SWIGEXPORT(a) a
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/*************************************************************************/
+
+
+/* The static type info list */
+
+static swig_type_info *swig_type_list = 0;
+static swig_type_info **swig_type_list_handle = &swig_type_list;
+  
+
+/* Register a type mapping with the type-checking */
+static swig_type_info *
+SWIG_TypeRegister(swig_type_info *ti) {
+  return SWIG_TypeRegisterTL(swig_type_list_handle, ti);
+}
+
+/* Search for a swig_type_info structure */
+static swig_type_info *
+SWIG_TypeQuery(const char *name) {
+  return SWIG_TypeQueryTL(*swig_type_list_handle, name);
+}
+
+/* Set the clientdata field for a type */
+static void
+SWIG_TypeClientData(swig_type_info *ti, void *clientdata) {
+  SWIG_TypeClientDataTL(*swig_type_list_handle, ti, clientdata);
+}
+
+/* This function will propagate the clientdata field of type to
+* any new swig_type_info structures that have been added into the list
+* of equivalent types.  It is like calling
+* SWIG_TypeClientData(type, clientdata) a second time.
+*/
+static void
+SWIG_PropagateClientData(swig_type_info *type) {
+  SWIG_PropagateClientDataTL(*swig_type_list_handle, type);
+}
+
+#ifdef __cplusplus
+}
+#endif
+
+/* -----------------------------------------------------------------------------
+ * SWIG API. Portion that goes into the runtime
+ * ----------------------------------------------------------------------------- */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* -----------------------------------------------------------------------------
+ * for internal method declarations
+ * ----------------------------------------------------------------------------- */
+
+#ifndef SWIGINTERN
+#define SWIGINTERN static 
+#endif
+
+#ifndef SWIGINTERNSHORT
+#ifdef __cplusplus
+#define SWIGINTERNSHORT static inline 
+#else /* C case */
+#define SWIGINTERNSHORT static 
+#endif /* __cplusplus */
+#endif
+
+
+/*
+  Exception handling in wrappers
+*/
+#define SWIG_fail                goto fail
+#define SWIG_arg_fail(arg)       SWIG_Python_ArgFail(arg)
+#define SWIG_append_errmsg(msg)   SWIG_Python_AddErrMesg(msg,0)
+#define SWIG_preppend_errmsg(msg) SWIG_Python_AddErrMesg(msg,1)
+#define SWIG_type_error(type,obj) SWIG_Python_TypeError(type,obj)
+#define SWIG_null_ref(type)       SWIG_Python_NullRef(type)
+
+/*
+  Contract support
+*/
+#define SWIG_contract_assert(expr, msg) \
+ if (!(expr)) { PyErr_SetString(PyExc_RuntimeError, (char *) msg ); goto fail; } else
+
+/* -----------------------------------------------------------------------------
+ * Constant declarations
+ * ----------------------------------------------------------------------------- */
+
+/* Constant Types */
+#define SWIG_PY_INT     1
+#define SWIG_PY_FLOAT   2
+#define SWIG_PY_STRING  3
+#define SWIG_PY_POINTER 4
+#define SWIG_PY_BINARY  5
+
+/* Constant information structure */
+typedef struct swig_const_info {
+    int type;
+    char *name;
+    long lvalue;
+    double dvalue;
+    void   *pvalue;
+    swig_type_info **ptype;
+} swig_const_info;
+
+
+/* -----------------------------------------------------------------------------
+ * Alloc. memory flags
+ * ----------------------------------------------------------------------------- */
+#define SWIG_OLDOBJ  1
+#define SWIG_NEWOBJ  SWIG_OLDOBJ + 1
+#define SWIG_PYSTR   SWIG_NEWOBJ + 1
+
+#ifdef __cplusplus
+}
+#endif
+
+
+/***********************************************************************
+ * pyrun.swg
+ *
+ *     This file contains the runtime support for Python modules
+ *     and includes code for managing global variables and pointer
+ *     type checking.
+ *
+ * Author : David Beazley (beazley at cs.uchicago.edu)
+ ************************************************************************/
+
+/* Common SWIG API */
+#define SWIG_ConvertPtr(obj, pp, type, flags)    SWIG_Python_ConvertPtr(obj, pp, type, flags)
+#define SWIG_NewPointerObj(p, type, flags)       SWIG_Python_NewPointerObj(p, type, flags)
+#define SWIG_MustGetPtr(p, type, argnum, flags)  SWIG_Python_MustGetPtr(p, type, argnum, flags)
+ 
+
+/* Python-specific SWIG API */
+#define SWIG_ConvertPacked(obj, ptr, sz, ty, flags)   SWIG_Python_ConvertPacked(obj, ptr, sz, ty, flags)
+#define SWIG_NewPackedObj(ptr, sz, type)              SWIG_Python_NewPackedObj(ptr, sz, type)
+
+
+/* -----------------------------------------------------------------------------
+ * Pointer declarations
+ * ----------------------------------------------------------------------------- */
+/*
+  Use SWIG_NO_COBJECT_TYPES to force the use of strings to represent
+  C/C++ pointers in the python side. Very useful for debugging, but
+  not always safe.
+*/
+#if !defined(SWIG_NO_COBJECT_TYPES) && !defined(SWIG_COBJECT_TYPES)
+#  define SWIG_COBJECT_TYPES
+#endif
+
+/* Flags for pointer conversion */
+#define SWIG_POINTER_EXCEPTION     0x1
+#define SWIG_POINTER_DISOWN        0x2
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* -----------------------------------------------------------------------------
+ * Create a new pointer string 
+ * ----------------------------------------------------------------------------- */
+
+#ifndef SWIG_BUFFER_SIZE
+#define SWIG_BUFFER_SIZE 1024
+#endif
+
+#if defined(SWIG_COBJECT_TYPES)
+#if !defined(SWIG_COBJECT_PYTHON)
+/* -----------------------------------------------------------------------------
+ * Implements a simple Swig Object type, and use it instead of PyCObject
+ * ----------------------------------------------------------------------------- */
+
+typedef struct {
+  PyObject_HEAD
+  void *ptr;
+  const char *desc;
+} PySwigObject;
+
+/* Declarations for objects of type PySwigObject */
+
+SWIGRUNTIME int
+PySwigObject_print(PySwigObject *v, FILE *fp, int flags)
+{
+  char result[SWIG_BUFFER_SIZE];
+  if (SWIG_PackVoidPtr(result, v->ptr, v->desc, sizeof(result))) {
+    fputs("<Swig Object at ", fp); fputs(result, fp); fputs(">", fp);
+    return 0; 
+  } else {
+    return 1; 
+  }
+}
+  
+SWIGRUNTIME PyObject *
+PySwigObject_repr(PySwigObject *v)
+{
+  char result[SWIG_BUFFER_SIZE];
+  return SWIG_PackVoidPtr(result, v->ptr, v->desc, sizeof(result)) ?
+    PyString_FromFormat("<Swig Object at %s>", result) : 0;
+}
+
+SWIGRUNTIME PyObject *
+PySwigObject_str(PySwigObject *v)
+{
+  char result[SWIG_BUFFER_SIZE];
+  return SWIG_PackVoidPtr(result, v->ptr, v->desc, sizeof(result)) ?
+    PyString_FromString(result) : 0;
+}
+
+SWIGRUNTIME PyObject *
+PySwigObject_long(PySwigObject *v)
+{
+  return PyLong_FromUnsignedLong((unsigned long) v->ptr);
+}
+
+SWIGRUNTIME PyObject *
+PySwigObject_oct(PySwigObject *v)
+{
+  char buf[100];
+  unsigned long x = (unsigned long)v->ptr;
+  if (x == 0)
+    strcpy(buf, "0");
+  else
+    PyOS_snprintf(buf, sizeof(buf), "0%lo", x);
+  return PyString_FromString(buf);
+}
+
+SWIGRUNTIME PyObject *
+PySwigObject_hex(PySwigObject *v)
+{
+  char buf[100];
+  PyOS_snprintf(buf, sizeof(buf), "0x%lx", (unsigned long)v->ptr);
+  return PyString_FromString(buf);
+}
+
+SWIGRUNTIME int
+PySwigObject_compare(PySwigObject *v, PySwigObject *w)
+{
+  int c = strcmp(v->desc, w->desc);
+  if (c) {
+    return c;
+  } else {
+    void *i = v->ptr;
+    void *j = w->ptr;
+    return (i < j) ? -1 : (i > j) ? 1 : 0;
+  }
+}
+
+SWIGRUNTIME void
+PySwigObject_dealloc(PySwigObject *self)
+{
+  PyObject_DEL(self);
+}
+
+SWIGRUNTIME PyTypeObject*
+PySwigObject_GetType() {
+  static char PySwigObject_Type__doc__[] = 
+    "Swig object carries a C/C++ instance pointer";
+  
+  static PyNumberMethods PySwigObject_as_number = {
+    (binaryfunc)0, /*nb_add*/
+    (binaryfunc)0, /*nb_subtract*/
+    (binaryfunc)0, /*nb_multiply*/
+    (binaryfunc)0, /*nb_divide*/
+    (binaryfunc)0, /*nb_remainder*/
+    (binaryfunc)0, /*nb_divmod*/
+    (ternaryfunc)0,/*nb_power*/
+    (unaryfunc)0,  /*nb_negative*/
+    (unaryfunc)0,  /*nb_positive*/
+    (unaryfunc)0,  /*nb_absolute*/
+    (inquiry)0,    /*nb_nonzero*/
+    0,		   /*nb_invert*/
+    0,		   /*nb_lshift*/
+    0,		   /*nb_rshift*/
+    0,		   /*nb_and*/
+    0,		   /*nb_xor*/
+    0,		   /*nb_or*/
+    (coercion)0,   /*nb_coerce*/
+    (unaryfunc)PySwigObject_long, /*nb_int*/
+    (unaryfunc)PySwigObject_long, /*nb_long*/
+    (unaryfunc)0,                 /*nb_float*/
+    (unaryfunc)PySwigObject_oct,  /*nb_oct*/
+    (unaryfunc)PySwigObject_hex,  /*nb_hex*/
+#if PY_VERSION_HEX >= 0x02000000
+    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 /* nb_inplace_add -> nb_inplace_true_divide */ 
+#endif
+  };
+
+  static int type_init = 0;  
+  static PyTypeObject PySwigObject_Type;
+
+  if (!type_init) {
+    PyTypeObject tmp = {
+    PyObject_HEAD_INIT(&PyType_Type)
+    0,					/*ob_size*/
+    "PySwigObject",			/*tp_name*/
+    sizeof(PySwigObject),		/*tp_basicsize*/
+    0,					/*tp_itemsize*/
+    /* methods */
+    (destructor)PySwigObject_dealloc,	/*tp_dealloc*/
+    (printfunc)PySwigObject_print,	/*tp_print*/
+    (getattrfunc)0,			/*tp_getattr*/
+    (setattrfunc)0,			/*tp_setattr*/
+    (cmpfunc)PySwigObject_compare,	/*tp_compare*/
+    (reprfunc)PySwigObject_repr,	/*tp_repr*/
+    &PySwigObject_as_number,	        /*tp_as_number*/
+    0,					/*tp_as_sequence*/
+    0,					/*tp_as_mapping*/
+    (hashfunc)0,			/*tp_hash*/
+    (ternaryfunc)0,			/*tp_call*/
+    (reprfunc)PySwigObject_str,		/*tp_str*/
+    /* Space for future expansion */
+    0L,0L,0L,0L,
+    PySwigObject_Type__doc__, 	        /* Documentation string */
+#if PY_VERSION_HEX >= 0x02000000
+    0,                                  /* tp_traverse */
+    0,                                  /* tp_clear */
+#endif
+#if PY_VERSION_HEX >= 0x02010000
+    0,                                  /* tp_richcompare */
+    0,                                  /* tp_weaklistoffset */
+#endif
+#if PY_VERSION_HEX >= 0x02020000
+    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* tp_iter -> tp_weaklist */
+#endif
+#if PY_VERSION_HEX >= 0x02030000
+    0,                                  /* tp_del */
+#endif
+#ifdef COUNT_ALLOCS
+    0,0,0,0                             /* tp_alloc -> tp_next */
+#endif
+    };
+
+    PySwigObject_Type = tmp;
+    type_init = 1;
+  }
+
+  return &PySwigObject_Type;
+}
+
+SWIGRUNTIME PyObject *
+PySwigObject_FromVoidPtrAndDesc(void *ptr, const char *desc)
+{
+  PySwigObject *self = PyObject_NEW(PySwigObject, PySwigObject_GetType());
+  if (self == NULL) return NULL;
+  self->ptr = ptr;
+  self->desc = desc;
+  return (PyObject *)self;
+}
+
+SWIGRUNTIMEINLINE void *
+PySwigObject_AsVoidPtr(PyObject *self)
+{
+  return ((PySwigObject *)self)->ptr;
+}
+
+SWIGRUNTIMEINLINE const char *
+PySwigObject_GetDesc(PyObject *self)
+{
+  return ((PySwigObject *)self)->desc;
+}
+
+SWIGRUNTIMEINLINE int
+PySwigObject_Check(PyObject *op) {
+  return ((op)->ob_type == PySwigObject_GetType()) 
+    || (strcmp((op)->ob_type->tp_name,"PySwigObject") == 0);
+}
+
+/* -----------------------------------------------------------------------------
+ * Implements a simple Swig Packed type, and use it instead of string
+ * ----------------------------------------------------------------------------- */
+
+typedef struct {
+  PyObject_HEAD
+  void *pack;
+  const char *desc;
+  size_t size;
+} PySwigPacked;
+
+SWIGRUNTIME int
+PySwigPacked_print(PySwigPacked *v, FILE *fp, int flags)
+{
+  char result[SWIG_BUFFER_SIZE];
+  fputs("<Swig Packed ", fp); 
+  if (SWIG_PackDataName(result, v->pack, v->size, 0, sizeof(result))) {
+    fputs("at ", fp); 
+    fputs(result, fp); 
+  }
+  fputs(v->desc,fp); 
+  fputs(">", fp);
+  return 0; 
+}
+  
+SWIGRUNTIME PyObject *
+PySwigPacked_repr(PySwigPacked *v)
+{
+  char result[SWIG_BUFFER_SIZE];
+  if (SWIG_PackDataName(result, v->pack, v->size, 0, sizeof(result))) {
+    return PyString_FromFormat("<Swig Packed at %s%s>", result, v->desc);
+  } else {
+    return PyString_FromFormat("<Swig Packed %s>", v->desc);
+  }  
+}
+
+SWIGRUNTIME PyObject *
+PySwigPacked_str(PySwigPacked *v)
+{
+  char result[SWIG_BUFFER_SIZE];
+  if (SWIG_PackDataName(result, v->pack, v->size, 0, sizeof(result))){
+    return PyString_FromFormat("%s%s", result, v->desc);
+  } else {
+    return PyString_FromFormat("%s", v->desc);
+  }  
+}
+
+SWIGRUNTIME int
+PySwigPacked_compare(PySwigPacked *v, PySwigPacked *w)
+{
+  int c = strcmp(v->desc, w->desc);
+  if (c) {
+    return c;
+  } else {
+    size_t i = v->size;
+    size_t j = w->size;
+    int s = (i < j) ? -1 : (i > j) ? 1 : 0;
+    return s ? s : strncmp((char *)v->pack, (char *)w->pack, 2*v->size);
+  }
+}
+
+SWIGRUNTIME void
+PySwigPacked_dealloc(PySwigPacked *self)
+{
+  free(self->pack);
+  PyObject_DEL(self);
+}
+
+SWIGRUNTIME PyTypeObject*
+PySwigPacked_GetType() {
+  static char PySwigPacked_Type__doc__[] = 
+    "Swig object carries a C/C++ instance pointer";
+  static int type_init = 0;
+  
+  static PyTypeObject PySwigPacked_Type;
+  if (!type_init) {
+    PyTypeObject tmp = {
+    PyObject_HEAD_INIT(&PyType_Type)
+    0,					/*ob_size*/
+    "PySwigPacked",			/*tp_name*/
+    sizeof(PySwigPacked),		/*tp_basicsize*/
+    0,					/*tp_itemsize*/
+    /* methods */
+    (destructor)PySwigPacked_dealloc,	/*tp_dealloc*/
+    (printfunc)PySwigPacked_print,	/*tp_print*/
+    (getattrfunc)0,			/*tp_getattr*/
+    (setattrfunc)0,			/*tp_setattr*/
+    (cmpfunc)PySwigPacked_compare,	/*tp_compare*/
+    (reprfunc)PySwigPacked_repr,	/*tp_repr*/
+    0,	                                /*tp_as_number*/
+    0,					/*tp_as_sequence*/
+    0,					/*tp_as_mapping*/
+    (hashfunc)0,			/*tp_hash*/
+    (ternaryfunc)0,			/*tp_call*/
+    (reprfunc)PySwigPacked_str,		/*tp_str*/
+    /* Space for future expansion */
+    0L,0L,0L,0L,
+    PySwigPacked_Type__doc__, 	        /* Documentation string */
+#if PY_VERSION_HEX >= 0x02000000
+    0,                                  /* tp_traverse */
+    0,                                  /* tp_clear */
+#endif
+#if PY_VERSION_HEX >= 0x02010000
+    0,                                  /* tp_richcompare */
+    0,                                  /* tp_weaklistoffset */
+#endif
+#if PY_VERSION_HEX >= 0x02020000         
+    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* tp_iter -> tp_weaklist */
+#endif
+#if PY_VERSION_HEX >= 0x02030000
+    0,                                  /* tp_del */
+#endif
+#ifdef COUNT_ALLOCS
+    0,0,0,0                             /* tp_alloc -> tp_next */
+#endif
+    };
+
+    PySwigPacked_Type = tmp;
+    type_init = 1;
+  }
+  
+      
+
+  return &PySwigPacked_Type;
+}
+
+SWIGRUNTIME PyObject *
+PySwigPacked_FromDataAndDesc(void *ptr, size_t size, const char *desc)
+{
+  PySwigPacked *self = PyObject_NEW(PySwigPacked, PySwigPacked_GetType());
+  if (self == NULL) {
+    return NULL;
+  } else {
+    void *pack = malloc(size);
+    memcpy(pack, ptr, size);
+    self->pack = pack;
+    self->desc = desc;
+    self->size = size;
+    return (PyObject *) self;
+  }
+}
+
+SWIGRUNTIMEINLINE const char *
+PySwigPacked_UnpackData(PyObject *obj, void *ptr, size_t size)
+{
+  PySwigPacked *self = (PySwigPacked *)obj;
+  if (self->size != size) return 0;
+  memcpy(ptr, self->pack, size);
+  return self->desc;
+}
+
+SWIGRUNTIMEINLINE const char *
+PySwigPacked_GetDesc(PyObject *self)
+{
+  return ((PySwigPacked *)self)->desc;
+}
+
+SWIGRUNTIMEINLINE int
+PySwigPacked_Check(PyObject *op) {
+  return ((op)->ob_type == PySwigPacked_GetType()) 
+    || (strcmp((op)->ob_type->tp_name,"PySwigPacked") == 0);
+}
+
+#else
+/* -----------------------------------------------------------------------------
+ * Use the old Python PyCObject instead of PySwigObject
+ * ----------------------------------------------------------------------------- */
+
+#define PySwigObject_GetDesc(obj)	           PyCObject_GetDesc(obj)
+#define PySwigObject_Check(obj)	           PyCObject_Check(obj)
+#define PySwigObject_AsVoidPtr(obj)	   PyCObject_AsVoidPtr(obj)
+#define PySwigObject_FromVoidPtrAndDesc(p, d)  PyCObject_FromVoidPtrAndDesc(p, d, NULL)
+
+#endif
+
+#endif
+
+/* -----------------------------------------------------------------------------
+ * errors manipulation
+ * ----------------------------------------------------------------------------- */
+
+SWIGRUNTIME void
+SWIG_Python_TypeError(const char *type, PyObject *obj)
+{
+  if (type) {
+#if defined(SWIG_COBJECT_TYPES)
+    if (PySwigObject_Check(obj)) {
+      const char *otype = (const char *) PySwigObject_GetDesc(obj);
+      if (otype) {
+	PyErr_Format(PyExc_TypeError, "a '%s' is expected, 'PySwigObject(%s)' is received",
+		     type, otype);
+	return;
+      }
+    } else 
+#endif      
+    {
+      const char *otype = (obj ? obj->ob_type->tp_name : 0); 
+      if (otype) {
+	PyObject *str = PyObject_Str(obj);
+	const char *cstr = str ? PyString_AsString(str) : 0;
+	if (cstr) {
+	  PyErr_Format(PyExc_TypeError, "a '%s' is expected, '%s(%s)' is received",
+		       type, otype, cstr);
+	} else {
+	  PyErr_Format(PyExc_TypeError, "a '%s' is expected, '%s' is received",
+		       type, otype);
+	}
+	Py_DECREF(str);
+	return;
+      }
+    }   
+    PyErr_Format(PyExc_TypeError, "a '%s' is expected", type);
+  } else {
+    PyErr_Format(PyExc_TypeError, "unexpected type is received");
+  }
+}
+
+SWIGRUNTIMEINLINE void
+SWIG_Python_NullRef(const char *type)
+{
+  if (type) {
+    PyErr_Format(PyExc_TypeError, "null reference of type '%s' was received",type);
+  } else {
+    PyErr_Format(PyExc_TypeError, "null reference was received");
+  }
+}
+
+SWIGRUNTIME int
+SWIG_Python_AddErrMesg(const char* mesg, int infront)
+{
+  if (PyErr_Occurred()) {
+    PyObject *type = 0;
+    PyObject *value = 0;
+    PyObject *traceback = 0;
+    PyErr_Fetch(&type, &value, &traceback);
+    if (value) {
+      PyObject *old_str = PyObject_Str(value);
+      Py_XINCREF(type);
+      PyErr_Clear();
+      if (infront) {
+	PyErr_Format(type, "%s %s", mesg, PyString_AsString(old_str));
+      } else {
+	PyErr_Format(type, "%s %s", PyString_AsString(old_str), mesg);
+      }
+      Py_DECREF(old_str);
+    }
+    return 1;
+  } else {
+    return 0;
+  }
+}
+
+SWIGRUNTIME int
+SWIG_Python_ArgFail(int argnum)
+{
+  if (PyErr_Occurred()) {
+    /* add information about failing argument */
+    char mesg[256];
+    sprintf(mesg, "argument number %d:", argnum);
+    return SWIG_Python_AddErrMesg(mesg, 1);
+  } else {
+    return 0;
+  }
+}
+
+
+/* -----------------------------------------------------------------------------
+ * pointers/data manipulation
+ * ----------------------------------------------------------------------------- */
+
+/* Convert a pointer value */
+SWIGRUNTIME int
+SWIG_Python_ConvertPtr(PyObject *obj, void **ptr, swig_type_info *ty, int flags) {
+  swig_type_info *tc;
+  const char *c = 0;
+  static PyObject *SWIG_this = 0;
+  int    newref = 0;
+  PyObject  *pyobj = 0;
+  void *vptr;
+  
+  if (!obj) return 0;
+  if (obj == Py_None) {
+    *ptr = 0;
+    return 0;
+  }
+
+#ifdef SWIG_COBJECT_TYPES
+  if (!(PySwigObject_Check(obj))) {
+    if (!SWIG_this)
+      SWIG_this = PyString_FromString("this");
+    pyobj = obj;
+    obj = PyObject_GetAttr(obj,SWIG_this);
+    newref = 1;
+    if (!obj) goto type_error;
+    if (!PySwigObject_Check(obj)) {
+      Py_DECREF(obj);
+      goto type_error;
+    }
+  }  
+  vptr = PySwigObject_AsVoidPtr(obj);
+  c = (const char *) PySwigObject_GetDesc(obj);
+  if (newref) { Py_DECREF(obj); }
+  goto type_check;
+#else
+  if (!(PyString_Check(obj))) {
+    if (!SWIG_this)
+      SWIG_this = PyString_FromString("this");
+    pyobj = obj;
+    obj = PyObject_GetAttr(obj,SWIG_this);
+    newref = 1;
+    if (!obj) goto type_error;
+    if (!PyString_Check(obj)) {
+      Py_DECREF(obj);
+      goto type_error;
+    }
+  } 
+  c = PyString_AS_STRING(obj);
+  /* Pointer values must start with leading underscore */
+  c = SWIG_UnpackVoidPtr(c, &vptr, ty->name);
+  if (newref) { Py_DECREF(obj); }
+  if (!c) goto type_error;
+#endif
+
+type_check:
+
+  if (ty) {
+    tc = SWIG_TypeCheck(c,ty);
+    if (!tc) goto type_error;
+    *ptr = SWIG_TypeCast(tc,vptr);
+  } else {
+    *ptr = vptr;
+  }
+
+  if ((pyobj) && (flags & SWIG_POINTER_DISOWN)) {
+    PyObject_SetAttrString(pyobj,(char*)"thisown",Py_False);
+  }
+  return 0;
+
+type_error:
+  PyErr_Clear();
+  if (pyobj && !obj) {    
+    obj = pyobj;
+    if (PyCFunction_Check(obj)) {
+      /* here we get the method pointer for callbacks */
+      char *doc = (((PyCFunctionObject *)obj) -> m_ml -> ml_doc);
+      c = doc ? strstr(doc, "swig_ptr: ") : 0;
+      if (c) {
+	c = SWIG_UnpackVoidPtr(c + 10, &vptr, ty->name);
+	if (!c) goto type_error;
+	goto type_check;
+      }
+    }
+  }
+  if (flags & SWIG_POINTER_EXCEPTION) {
+    if (ty) {
+      SWIG_Python_TypeError(SWIG_TypePrettyName(ty), obj);
+    } else {
+      SWIG_Python_TypeError("C/C++ pointer", obj);
+    }
+  }
+  return -1;
+}
+
+/* Convert a pointer value, signal an exception on a type mismatch */
+SWIGRUNTIME void *
+SWIG_Python_MustGetPtr(PyObject *obj, swig_type_info *ty, int argnum, int flags) {
+  void *result;
+  if (SWIG_Python_ConvertPtr(obj, &result, ty, flags) == -1) {
+    PyErr_Clear();
+    if (flags & SWIG_POINTER_EXCEPTION) {
+      SWIG_Python_TypeError(SWIG_TypePrettyName(ty), obj);
+      SWIG_Python_ArgFail(argnum);
+    }
+  }
+  return result;
+}
+
+/* Convert a packed value value */
+SWIGRUNTIME int
+SWIG_Python_ConvertPacked(PyObject *obj, void *ptr, size_t sz, swig_type_info *ty, int flags) {
+  swig_type_info *tc;
+  const char *c = 0;
+
+#if defined(SWIG_COBJECT_TYPES) && !defined(SWIG_COBJECT_PYTHON)
+  c = PySwigPacked_UnpackData(obj, ptr, sz);
+#else
+  if ((!obj) || (!PyString_Check(obj))) goto type_error;
+  c = PyString_AS_STRING(obj);
+  /* Pointer values must start with leading underscore */
+  c = SWIG_UnpackDataName(c, ptr, sz, ty->name);
+#endif
+  if (!c) goto type_error;
+  if (ty) {
+    tc = SWIG_TypeCheck(c,ty);
+    if (!tc) goto type_error;
+  }
+  return 0;
+
+type_error:
+  PyErr_Clear();
+  if (flags & SWIG_POINTER_EXCEPTION) {
+    if (ty) {
+      SWIG_Python_TypeError(SWIG_TypePrettyName(ty), obj);
+    } else {
+      SWIG_Python_TypeError("C/C++ packed data", obj);
+    }
+  }
+  return -1;
+}  
+
+/* Create a new array object */
+SWIGRUNTIME PyObject *
+SWIG_Python_NewPointerObj(void *ptr, swig_type_info *type, int own) {
+  PyObject *robj = 0;
+  if (!ptr) {
+    Py_INCREF(Py_None);
+    return Py_None;
+  }
+#ifdef SWIG_COBJECT_TYPES
+  robj = PySwigObject_FromVoidPtrAndDesc((void *) ptr, (char *)type->name);
+#else
+  {
+    char result[SWIG_BUFFER_SIZE];
+    robj = SWIG_PackVoidPtr(result, ptr, type->name, sizeof(result)) ?
+      PyString_FromString(result) : 0;
+  }
+#endif
+  if (!robj || (robj == Py_None)) return robj;
+  if (type->clientdata) {
+    PyObject *inst;
+    PyObject *args = Py_BuildValue((char*)"(O)", robj);
+    Py_DECREF(robj);
+    inst = PyObject_CallObject((PyObject *) type->clientdata, args);
+    Py_DECREF(args);
+    if (inst) {
+      if (own) {
+        PyObject_SetAttrString(inst,(char*)"thisown",Py_True);
+      }
+      robj = inst;
+    }
+  }
+  return robj;
+}
+
+SWIGRUNTIME PyObject *
+SWIG_Python_NewPackedObj(void *ptr, size_t sz, swig_type_info *type) {
+  PyObject *robj = 0;
+  if (!ptr) {
+    Py_INCREF(Py_None);
+    return Py_None;
+  }
+#if defined(SWIG_COBJECT_TYPES) && !defined(SWIG_COBJECT_PYTHON)
+  robj = PySwigPacked_FromDataAndDesc((void *) ptr, sz, (char *)type->name);
+#else
+  {
+    char result[SWIG_BUFFER_SIZE];
+    robj = SWIG_PackDataName(result, ptr, sz, type->name, sizeof(result)) ?
+      PyString_FromString(result) : 0;
+  }
+#endif
+  return robj;
+}
+
+/* -----------------------------------------------------------------------------*
+ *  Get type list 
+ * -----------------------------------------------------------------------------*/
+
+#ifdef SWIG_LINK_RUNTIME
+void *SWIG_ReturnGlobalTypeList(void *);
+#endif
+
+SWIGRUNTIME swig_type_info **
+SWIG_Python_GetTypeListHandle() {
+  static void *type_pointer = (void *)0;
+  /* first check if module already created */
+  if (!type_pointer) {
+#ifdef SWIG_LINK_RUNTIME
+    type_pointer = SWIG_ReturnGlobalTypeList((void *)0);
+#else
+    type_pointer = PyCObject_Import((char*)"swig_runtime_data" SWIG_RUNTIME_VERSION,
+				    (char*)"type_pointer" SWIG_TYPE_TABLE_NAME);
+    if (PyErr_Occurred()) {
+      PyErr_Clear();
+      type_pointer = (void *)0;
+    }
+  }
+#endif
+  return (swig_type_info **) type_pointer;
+}
+
+/*
+  Search for a swig_type_info structure
+ */
+SWIGRUNTIMEINLINE swig_type_info *
+SWIG_Python_GetTypeList() {
+  swig_type_info **tlh = SWIG_Python_GetTypeListHandle();
+  return tlh ? *tlh : (swig_type_info*)0;
+}
+
+#define SWIG_Runtime_GetTypeList SWIG_Python_GetTypeList 
+
+#ifdef __cplusplus
+}
+#endif
+
+
+/* -------- TYPES TABLE (BEGIN) -------- */
+
+#define  SWIGTYPE_p_gl_qt_renderer swig_types[0] 
+#define  SWIGTYPE_p_char swig_types[1] 
+#define  SWIGTYPE_size_t swig_types[2] 
+#define  SWIGTYPE_ptrdiff_t swig_types[3] 
+#define  SWIGTYPE_p_Movie swig_types[4] 
+static swig_type_info *swig_types[6];
+
+/* -------- TYPES TABLE (END) -------- */
+
+
+/*-----------------------------------------------
+              @(target):= _gl_qt.so
+  ------------------------------------------------*/
+#define SWIG_init    init_gl_qt
+
+#define SWIG_name    "_gl_qt"
+
+
+#if defined(MS_WINDOWS)
+#  include <windows.h>
+#endif
+
+#include "gl_qt.h"
+#include "movieconvert.h"
+
+PyObject *PyErr_GL_QTError; /* Errors generated by OpenGL/QuickTime code */
+
+
+#include <limits.h>
+
+
+SWIGINTERN int
+  SWIG_CheckLongInRange(long value, long min_value, long max_value,
+			const char *errmsg)
+{
+  if (value < min_value) {
+    if (errmsg) {
+      PyErr_Format(PyExc_OverflowError, 
+		   "value %ld is less than '%s' minimum %ld", 
+		   value, errmsg, min_value);
+    }
+    return 0;    
+  } else if (value > max_value) {
+    if (errmsg) {
+      PyErr_Format(PyExc_OverflowError,
+		   "value %ld is greater than '%s' maximum %ld", 
+		   value, errmsg, max_value);
+    }
+    return 0;
+  }
+  return 1;
+}
+
+
+SWIGINTERN int
+  SWIG_AsVal_long(PyObject * obj, long* val)
+{
+  if (PyInt_Check(obj)) {
+    if (val) *val = PyInt_AS_LONG(obj);
+    return 1;
+  }
+  if (PyLong_Check(obj)) {
+    long v = PyLong_AsLong(obj);
+    if (!PyErr_Occurred()) {
+      if (val) *val = v;
+      return 1;
+    } else {
+      if (!val) PyErr_Clear();
+      return 0;
+    }
+  }
+  if (val) {
+    SWIG_type_error("long", obj);
+  }
+  return 0;
+ }
+
+
+SWIGINTERN int
+  SWIG_AsVal_short(PyObject *obj, short *val)
+{ 
+  const char* errmsg = val ? "short" : (char*)0;
+  long v;
+  if (SWIG_AsVal_long(obj, &v)) {
+    if (SWIG_CheckLongInRange(v, SHRT_MIN, SHRT_MAX, errmsg)) {
+      if (val) *val = (short)(v);
+      return 1;
+    } else {
+      return 0;
+    }    
+  } else {
+    PyErr_Clear();
+  }
+  if (val) {
+    SWIG_type_error(errmsg, obj);
+  }
+  return 0;    
+}
+
+
+SWIGINTERNSHORT short
+SWIG_As_short(PyObject* obj)
+{
+  short v;
+  if (!SWIG_AsVal_short(obj, &v)) {
+    /*
+      this is needed to make valgrind/purify happier. 
+     */
+    memset((void*)&v, 0, sizeof(short));
+  }
+  return v;
+}
+
+
+#include <float.h>
+SWIGINTERN int
+  SWIG_CheckDoubleInRange(double value, double min_value, 
+			  double max_value, const char* errmsg)
+{
+  if (value < min_value) {
+    if (errmsg) {
+      PyErr_Format(PyExc_OverflowError, 
+		   "value %g is less than %s minimum %g", 
+		   value, errmsg, min_value);
+    }
+    return 0;
+  } else if (value > max_value) {
+    if (errmsg) {
+      PyErr_Format(PyExc_OverflowError, 
+		   "value %g is greater than %s maximum %g", 
+		   value, errmsg, max_value);
+    }
+    return 0;
+  }
+  return 1;
+}
+
+
+SWIGINTERN int
+  SWIG_AsVal_double(PyObject *obj, double *val)
+{
+  if (PyFloat_Check(obj)) {
+    if (val) *val = PyFloat_AS_DOUBLE(obj);
+    return 1;
+  }  
+  if (PyInt_Check(obj)) {
+    if (val) *val = PyInt_AS_LONG(obj);
+    return 1;
+  }
+  if (PyLong_Check(obj)) {
+    double v = PyLong_AsDouble(obj);
+    if (!PyErr_Occurred()) {
+      if (val) *val = v;
+      return 1;
+    } else {
+      if (!val) PyErr_Clear();
+      return 0;
+    }
+  }
+  if (val) {
+    SWIG_type_error("double", obj);
+  }
+  return 0;
+}
+
+
+SWIGINTERN int
+  SWIG_AsVal_float(PyObject *obj, float *val)
+{
+  const char* errmsg = val ? "float" : (char*)0;
+  double v;
+  if (SWIG_AsVal_double(obj, &v)) {
+    if (SWIG_CheckDoubleInRange(v, -FLT_MAX, FLT_MAX, errmsg)) {
+      if (val) *val = (float)(v);
+      return 1;
+    } else {
+      return 0;
+    }
+  } else {
+    PyErr_Clear();
+  }
+  if (val) {
+    SWIG_type_error(errmsg, obj);
+  }
+  return 0;
+}
+
+
+SWIGINTERNSHORT float
+SWIG_As_float(PyObject* obj)
+{
+  float v;
+  if (!SWIG_AsVal_float(obj, &v)) {
+    /*
+      this is needed to make valgrind/purify happier. 
+     */
+    memset((void*)&v, 0, sizeof(float));
+  }
+  return v;
+}
+
+  
+SWIGINTERNSHORT int
+SWIG_Check_short(PyObject* obj)
+{
+  return SWIG_AsVal_short(obj, (short*)0);
+}
+
+  
+SWIGINTERNSHORT int
+SWIG_Check_float(PyObject* obj)
+{
+  return SWIG_AsVal_float(obj, (float*)0);
+}
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+static PyObject *_wrap_gl_qt_renderer_create(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    Movie arg1 ;
+    short arg2 ;
+    float arg3 ;
+    gl_qt_renderer *result;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    PyObject * obj2 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OOO:gl_qt_renderer_create",&obj0,&obj1,&obj2)) goto fail;
+    {
+        MovieObj_Convert(obj0,&arg1);
+    }
+    {
+        arg2 = (short)(SWIG_As_short(obj1)); 
+        if (SWIG_arg_fail(2)) SWIG_fail;
+    }
+    {
+        arg3 = (float)(SWIG_As_float(obj2)); 
+        if (SWIG_arg_fail(3)) SWIG_fail;
+    }
+    {
+        result = (gl_qt_renderer *)gl_qt_renderer_create(arg1,arg2,arg3);
+        
+        if (gl_qt_err_occurred()) {
+            PyErr_SetString(PyErr_GL_QTError, gl_qt_err_message());
+            return NULL;
+        }
+    }
+    resultobj = SWIG_NewPointerObj((void*)(result), SWIGTYPE_p_gl_qt_renderer, 0);
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_gl_qt_renderer_delete(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    gl_qt_renderer *arg1 = (gl_qt_renderer *) 0 ;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"O:gl_qt_renderer_delete",&obj0)) goto fail;
+    SWIG_Python_ConvertPtr(obj0, (void **)&arg1, SWIGTYPE_p_gl_qt_renderer, SWIG_POINTER_EXCEPTION | 0);
+    if (SWIG_arg_fail(1)) SWIG_fail;
+    {
+        gl_qt_renderer_delete(arg1);
+        
+        if (gl_qt_err_occurred()) {
+            PyErr_SetString(PyErr_GL_QTError, gl_qt_err_message());
+            return NULL;
+        }
+    }
+    Py_INCREF(Py_None); resultobj = Py_None;
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_gl_qt_renderer_update(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    gl_qt_renderer *arg1 = (gl_qt_renderer *) 0 ;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"O:gl_qt_renderer_update",&obj0)) goto fail;
+    SWIG_Python_ConvertPtr(obj0, (void **)&arg1, SWIGTYPE_p_gl_qt_renderer, SWIG_POINTER_EXCEPTION | 0);
+    if (SWIG_arg_fail(1)) SWIG_fail;
+    {
+        gl_qt_renderer_update(arg1);
+        
+        if (gl_qt_err_occurred()) {
+            PyErr_SetString(PyErr_GL_QTError, gl_qt_err_message());
+            return NULL;
+        }
+    }
+    Py_INCREF(Py_None); resultobj = Py_None;
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyMethodDef SwigMethods[] = {
+	 { (char *)"gl_qt_renderer_create", _wrap_gl_qt_renderer_create, METH_VARARGS, NULL},
+	 { (char *)"gl_qt_renderer_delete", _wrap_gl_qt_renderer_delete, METH_VARARGS, NULL},
+	 { (char *)"gl_qt_renderer_update", _wrap_gl_qt_renderer_update, METH_VARARGS, NULL},
+	 { NULL, NULL, 0, NULL }
+};
+
+
+/* -------- TYPE CONVERSION AND EQUIVALENCE RULES (BEGIN) -------- */
+
+static swig_type_info _swigt__p_gl_qt_renderer[] = {{"_p_gl_qt_renderer", 0, "gl_qt_renderer *", 0, 0, 0, 0},{"_p_gl_qt_renderer", 0, 0, 0, 0, 0, 0},{0, 0, 0, 0, 0, 0, 0}};
+static swig_type_info _swigt__p_char[] = {{"_p_char", 0, "char *", 0, 0, 0, 0},{"_p_char", 0, 0, 0, 0, 0, 0},{0, 0, 0, 0, 0, 0, 0}};
+static swig_type_info _swigt__size_t[] = {{"_size_t", 0, "size_t", 0, 0, 0, 0},{"_size_t", 0, 0, 0, 0, 0, 0},{0, 0, 0, 0, 0, 0, 0}};
+static swig_type_info _swigt__ptrdiff_t[] = {{"_ptrdiff_t", 0, "ptrdiff_t", 0, 0, 0, 0},{"_ptrdiff_t", 0, 0, 0, 0, 0, 0},{0, 0, 0, 0, 0, 0, 0}};
+static swig_type_info _swigt__p_Movie[] = {{"_p_Movie", 0, "Movie *", 0, 0, 0, 0},{"_p_Movie", 0, 0, 0, 0, 0, 0},{0, 0, 0, 0, 0, 0, 0}};
+
+static swig_type_info *swig_types_initial[] = {
+_swigt__p_gl_qt_renderer, 
+_swigt__p_char, 
+_swigt__size_t, 
+_swigt__ptrdiff_t, 
+_swigt__p_Movie, 
+0
+};
+
+
+/* -------- TYPE CONVERSION AND EQUIVALENCE RULES (END) -------- */
+
+static swig_const_info swig_const_table[] = {
+{0, 0, 0, 0.0, 0, 0}};
+
+#ifdef __cplusplus
+}
+#endif
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+    
+    /* Python-specific SWIG API */
+#define SWIG_newvarlink()                             SWIG_Python_newvarlink()
+#define SWIG_addvarlink(p, name, get_attr, set_attr)  SWIG_Python_addvarlink(p, name, get_attr, set_attr)
+#define SWIG_InstallConstants(d, constants)           SWIG_Python_InstallConstants(d, constants)
+    
+    /* -----------------------------------------------------------------------------
+     * global variable support code.
+     * ----------------------------------------------------------------------------- */
+    
+    typedef struct swig_globalvar {
+        char       *name;                  /* Name of global variable */
+        PyObject *(*get_attr)();           /* Return the current value */
+        int       (*set_attr)(PyObject *); /* Set the value */
+        struct swig_globalvar *next;
+    } swig_globalvar;
+    
+    typedef struct swig_varlinkobject {
+        PyObject_HEAD
+        swig_globalvar *vars;
+    } swig_varlinkobject;
+    
+    static PyObject *
+    swig_varlink_repr(swig_varlinkobject *v) {
+        v = v;
+        return PyString_FromString("<Swig global variables>");
+    }
+    
+    static int
+    swig_varlink_print(swig_varlinkobject *v, FILE *fp, int flags) {
+        swig_globalvar  *var;
+        flags = flags;
+        fprintf(fp,"Swig global variables { ");
+        for (var = v->vars; var; var=var->next) {
+            fprintf(fp,"%s", var->name);
+            if (var->next) fprintf(fp,", ");
+        }
+        fprintf(fp," }\n");
+        return 0;
+    }
+    
+    static PyObject *
+    swig_varlink_getattr(swig_varlinkobject *v, char *n) {
+        swig_globalvar *var = v->vars;
+        while (var) {
+            if (strcmp(var->name,n) == 0) {
+                return (*var->get_attr)();
+            }
+            var = var->next;
+        }
+        PyErr_SetString(PyExc_NameError,"Unknown C global variable");
+        return NULL;
+    }
+    
+    static int
+    swig_varlink_setattr(swig_varlinkobject *v, char *n, PyObject *p) {
+        swig_globalvar *var = v->vars;
+        while (var) {
+            if (strcmp(var->name,n) == 0) {
+                return (*var->set_attr)(p);
+            }
+            var = var->next;
+        }
+        PyErr_SetString(PyExc_NameError,"Unknown C global variable");
+        return 1;
+    }
+    
+    static PyTypeObject varlinktype = {
+        PyObject_HEAD_INIT(0)              
+        0,                                  /* Number of items in variable part (ob_size) */
+        (char *)"swigvarlink",              /* Type name (tp_name) */
+        sizeof(swig_varlinkobject),         /* Basic size (tp_basicsize) */
+        0,                                  /* Itemsize (tp_itemsize) */
+        0,                                  /* Deallocator (tp_dealloc) */ 
+        (printfunc) swig_varlink_print,     /* Print (tp_print) */
+        (getattrfunc) swig_varlink_getattr, /* get attr (tp_getattr) */
+        (setattrfunc) swig_varlink_setattr, /* Set attr (tp_setattr) */
+        0,                                  /* tp_compare */
+        (reprfunc) swig_varlink_repr,       /* tp_repr */
+        0,                                  /* tp_as_number */
+        0,                                  /* tp_as_sequence */
+        0,                                  /* tp_as_mapping */
+        0,                                  /* tp_hash */
+        0,                                  /* tp_call */
+        0,                                  /* tp_str */
+        0,                                  /* tp_getattro */
+        0,                                  /* tp_setattro */
+        0,                                  /* tp_as_buffer */
+        0,                                  /* tp_flags */
+        0,                                  /* tp_doc */
+#if PY_VERSION_HEX >= 0x02000000
+        0,                                  /* tp_traverse */
+        0,                                  /* tp_clear */
+#endif
+#if PY_VERSION_HEX >= 0x02010000
+        0,                                  /* tp_richcompare */
+        0,                                  /* tp_weaklistoffset */
+#endif
+#if PY_VERSION_HEX >= 0x02020000
+        0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* tp_iter -> tp_weaklist */
+#endif
+#if PY_VERSION_HEX >= 0x02030000
+        0,                                  /* tp_del */
+#endif
+#ifdef COUNT_ALLOCS
+        0,0,0,0                             /* tp_alloc -> tp_next */
+#endif
+    };
+    
+    /* Create a variable linking object for use later */
+    static PyObject *
+    SWIG_Python_newvarlink(void) {
+        swig_varlinkobject *result = 0;
+        result = PyMem_NEW(swig_varlinkobject,1);
+        varlinktype.ob_type = &PyType_Type;    /* Patch varlinktype into a PyType */
+        result->ob_type = &varlinktype;
+        result->vars = 0;
+        result->ob_refcnt = 0;
+        Py_XINCREF((PyObject *) result);
+        return ((PyObject*) result);
+    }
+    
+    static void
+    SWIG_Python_addvarlink(PyObject *p, char *name, PyObject *(*get_attr)(void), int (*set_attr)(PyObject *p)) {
+        swig_varlinkobject *v;
+        swig_globalvar *gv;
+        v= (swig_varlinkobject *) p;
+        gv = (swig_globalvar *) malloc(sizeof(swig_globalvar));
+        gv->name = (char *) malloc(strlen(name)+1);
+        strcpy(gv->name,name);
+        gv->get_attr = get_attr;
+        gv->set_attr = set_attr;
+        gv->next = v->vars;
+        v->vars = gv;
+    }
+    
+    /* -----------------------------------------------------------------------------
+     * constants/methods manipulation
+     * ----------------------------------------------------------------------------- */
+    
+    /* Install Constants */
+    static void
+    SWIG_Python_InstallConstants(PyObject *d, swig_const_info constants[]) {
+        PyObject *obj = 0;
+        size_t i;
+        for (i = 0; constants[i].type; i++) {
+            switch(constants[i].type) {
+                case SWIG_PY_INT:
+                obj = PyInt_FromLong(constants[i].lvalue);
+                break;
+                case SWIG_PY_FLOAT:
+                obj = PyFloat_FromDouble(constants[i].dvalue);
+                break;
+                case SWIG_PY_STRING:
+                if (constants[i].pvalue) {
+                    obj = PyString_FromString((char *) constants[i].pvalue);
+                } else {
+                    Py_INCREF(Py_None);
+                    obj = Py_None;
+                }
+                break;
+                case SWIG_PY_POINTER:
+                obj = SWIG_NewPointerObj(constants[i].pvalue, *(constants[i]).ptype,0);
+                break;
+                case SWIG_PY_BINARY:
+                obj = SWIG_NewPackedObj(constants[i].pvalue, constants[i].lvalue, *(constants[i].ptype));
+                break;
+                default:
+                obj = 0;
+                break;
+            }
+            if (obj) {
+                PyDict_SetItemString(d,constants[i].name,obj);
+                Py_DECREF(obj);
+            }
+        }
+    }
+    
+    /* -----------------------------------------------------------------------------*/
+    /* Fix SwigMethods to carry the callback ptrs when needed */
+    /* -----------------------------------------------------------------------------*/
+    
+    static void
+    SWIG_Python_FixMethods(PyMethodDef *methods,
+    swig_const_info *const_table,
+    swig_type_info **types,
+    swig_type_info **types_initial) {
+        size_t i;
+        for (i = 0; methods[i].ml_name; ++i) {
+            char *c = methods[i].ml_doc;
+            if (c && (c = strstr(c, "swig_ptr: "))) {
+                int j;
+                swig_const_info *ci = 0;
+                char *name = c + 10;
+                for (j = 0; const_table[j].type; j++) {
+                    if (strncmp(const_table[j].name, name, 
+                    strlen(const_table[j].name)) == 0) {
+                        ci = &(const_table[j]);
+                        break;
+                    }
+                }
+                if (ci) {
+                    size_t shift = (ci->ptype) - types;
+                    swig_type_info *ty = types_initial[shift];
+                    size_t ldoc = (c - methods[i].ml_doc);
+                    size_t lptr = strlen(ty->name)+2*sizeof(void*)+2;
+                    char *ndoc = (char*)malloc(ldoc + lptr + 10);
+                    char *buff = ndoc;
+                    void *ptr = (ci->type == SWIG_PY_POINTER) ? ci->pvalue: (void *)(ci->lvalue);
+                    strncpy(buff, methods[i].ml_doc, ldoc);
+                    buff += ldoc;
+                    strncpy(buff, "swig_ptr: ", 10);
+                    buff += 10;
+                    SWIG_PackVoidPtr(buff, ptr, ty->name, lptr);
+                    methods[i].ml_doc = ndoc;
+                }
+            }
+        }
+    }
+    
+    /* -----------------------------------------------------------------------------*
+     *  Initialize type list
+     * -----------------------------------------------------------------------------*/
+    
+#if PY_MAJOR_VERSION < 2
+    /* PyModule_AddObject function was introduced in Python 2.0.  The following function
+    is copied out of Python/modsupport.c in python version 2.3.4 */
+    static int
+    PyModule_AddObject(PyObject *m, char *name, PyObject *o)
+    {
+        PyObject *dict;
+        if (!PyModule_Check(m)) {
+            PyErr_SetString(PyExc_TypeError,
+            "PyModule_AddObject() needs module as first arg");
+            return -1;
+        }
+        if (!o) {
+            PyErr_SetString(PyExc_TypeError,
+            "PyModule_AddObject() needs non-NULL value");
+            return -1;
+        }
+        
+        dict = PyModule_GetDict(m);
+        if (dict == NULL) {
+            /* Internal error -- modules must have a dict! */
+            PyErr_Format(PyExc_SystemError, "module '%s' has no __dict__",
+            PyModule_GetName(m));
+            return -1;
+        }
+        if (PyDict_SetItemString(dict, name, o))
+        return -1;
+        Py_DECREF(o);
+        return 0;
+    }
+#endif
+    
+    static swig_type_info **
+    SWIG_Python_SetTypeListHandle(swig_type_info **type_list_handle) {
+        static PyMethodDef swig_empty_runtime_method_table[] = {
+            {
+                NULL, NULL, 0, NULL
+            } 
+        };/* Sentinel */
+        
+        PyObject *module = Py_InitModule((char*)"swig_runtime_data" SWIG_RUNTIME_VERSION,
+        swig_empty_runtime_method_table);
+        PyObject *pointer = PyCObject_FromVoidPtr((void *) type_list_handle, NULL);
+        if (pointer && module) {
+            PyModule_AddObject(module, (char*)"type_pointer" SWIG_TYPE_TABLE_NAME, pointer);
+        }
+        return type_list_handle;
+    } 
+    
+    static swig_type_info **
+    SWIG_Python_LookupTypePointer(swig_type_info **type_list_handle) {
+        swig_type_info **type_pointer;
+        
+        /* first check if module already created */
+        type_pointer = SWIG_Python_GetTypeListHandle();
+        if (type_pointer) {
+            return type_pointer;
+        } else {
+            /* create a new module and variable */
+            return SWIG_Python_SetTypeListHandle(type_list_handle);
+        }
+    }
+    
+#ifdef __cplusplus
+}
+#endif
+
+/* -----------------------------------------------------------------------------*
+ *  Partial Init method
+ * -----------------------------------------------------------------------------*/
+
+#ifdef SWIG_LINK_RUNTIME
+#ifdef __cplusplus
+extern "C"
+#endif
+SWIGEXPORT(void *) SWIG_ReturnGlobalTypeList(void *);
+#endif
+
+#ifdef __cplusplus
+extern "C"
+#endif
+SWIGEXPORT(void) SWIG_init(void) {
+    static PyObject *SWIG_globals = 0; 
+    static int       typeinit = 0;
+    PyObject *m, *d;
+    int       i;
+    if (!SWIG_globals) SWIG_globals = SWIG_newvarlink();
+    
+    /* Fix SwigMethods to carry the callback ptrs when needed */
+    SWIG_Python_FixMethods(SwigMethods, swig_const_table, swig_types, swig_types_initial);
+    
+    m = Py_InitModule((char *) SWIG_name, SwigMethods);
+    d = PyModule_GetDict(m);
+    
+    if (!typeinit) {
+#ifdef SWIG_LINK_RUNTIME
+        swig_type_list_handle = (swig_type_info **) SWIG_ReturnGlobalTypeList(swig_type_list_handle);
+#else
+#  ifndef SWIG_STATIC_RUNTIME
+        swig_type_list_handle = SWIG_Python_LookupTypePointer(swig_type_list_handle);
+#  endif
+#endif
+        for (i = 0; swig_types_initial[i]; i++) {
+            swig_types[i] = SWIG_TypeRegister(swig_types_initial[i]);
+        }
+        typeinit = 1;
+    }
+    SWIG_InstallConstants(d,swig_const_table);
+    
+    
+    /* New exception for GL_QT code */
+    PyErr_GL_QTError = PyErr_NewException( "VisionEgg.QuickTime.GL_QTError", NULL, NULL ); // New reference
+    Py_INCREF(PyErr_GL_QTError);
+    
+}
+
diff --git a/VisionEgg/movieconvert.c b/VisionEgg/movieconvert.c
new file mode 100755
index 0000000..75c8243
--- /dev/null
+++ b/VisionEgg/movieconvert.c
@@ -0,0 +1,23 @@
+#include "Python.h"
+
+#if defined(__APPLE__)
+#  include <QuickTime/Movies.h>
+#else
+#  include <Movies.h>
+#endif
+
+void MovieObj_Convert(PyObject* MovieObj, Movie* outMovie) {
+  PyObject* MovieObj_theMovie;
+  PyObject* MovieObj_theMovie_value;
+  Py_intptr_t ptr_as_int;
+
+  MovieObj_theMovie = PyObject_GetAttrString(MovieObj,"theMovie");
+  if (!MovieObj_theMovie) return;
+
+  MovieObj_theMovie_value = PyObject_GetAttrString(MovieObj_theMovie,"value");
+  if (!MovieObj_theMovie_value) return;
+  
+  // convert python int -> Movie*
+  ptr_as_int = PyLong_AsLong(MovieObj_theMovie_value);
+  (*outMovie) = (Movie)ptr_as_int;
+}
diff --git a/VisionEgg/movieconvert.h b/VisionEgg/movieconvert.h
new file mode 100755
index 0000000..48ed4aa
--- /dev/null
+++ b/VisionEgg/movieconvert.h
@@ -0,0 +1,9 @@
+#include "Python.h"
+
+#if defined(__APPLE__)
+#  include <QuickTime/Movies.h>
+#else
+#  include <Movies.h>
+#endif
+
+void MovieObj_Convert(PyObject* MovieObj, Movie* outMovie);
diff --git a/VisionEgg/posix_maxpriority.c b/VisionEgg/posix_maxpriority.c
new file mode 100644
index 0000000..298e27d
--- /dev/null
+++ b/VisionEgg/posix_maxpriority.c
@@ -0,0 +1,23 @@
+#include <sys/mman.h>
+#include <sched.h>
+#include <errno.h>
+
+int set_self_policy_priority( int policy, int priority );
+int stop_memory_paging( void );
+
+int set_self_policy_priority( int policy, int priority ) {
+  struct sched_param params;
+
+  params.sched_priority = priority;
+  return sched_setscheduler(0,policy,&params);
+}
+
+int stop_memory_paging( void ) {
+
+#if defined(MCL_CURRENT) && defined(MCL_FUTURE)
+  return mlockall( MCL_CURRENT | MCL_FUTURE );
+#else
+  return 0;
+#endif
+
+}
diff --git a/VisionEgg/posix_maxpriority.py b/VisionEgg/posix_maxpriority.py
new file mode 100644
index 0000000..968caf2
--- /dev/null
+++ b/VisionEgg/posix_maxpriority.py
@@ -0,0 +1,47 @@
+# This file was created automatically by SWIG.
+# Don't modify this file, modify the SWIG interface instead.
+# This file is compatible with both classic and new-style classes.
+
+import _posix_maxpriority
+
+def _swig_setattr_nondynamic(self,class_type,name,value,static=1):
+    if (name == "this"):
+        if isinstance(value, class_type):
+            self.__dict__[name] = value.this
+            if hasattr(value,"thisown"): self.__dict__["thisown"] = value.thisown
+            del value.thisown
+            return
+    method = class_type.__swig_setmethods__.get(name,None)
+    if method: return method(self,value)
+    if (not static) or hasattr(self,name) or (name == "thisown"):
+        self.__dict__[name] = value
+    else:
+        raise AttributeError("You cannot add attributes to %s" % self)
+
+def _swig_setattr(self,class_type,name,value):
+    return _swig_setattr_nondynamic(self,class_type,name,value,0)
+
+def _swig_getattr(self,class_type,name):
+    method = class_type.__swig_getmethods__.get(name,None)
+    if method: return method(self)
+    raise AttributeError,name
+
+import types
+try:
+    _object = types.ObjectType
+    _newclass = 1
+except AttributeError:
+    class _object : pass
+    _newclass = 0
+del types
+
+
+SCHED_RR = _posix_maxpriority.SCHED_RR
+SCHED_FIFO = _posix_maxpriority.SCHED_FIFO
+
+set_self_policy_priority = _posix_maxpriority.set_self_policy_priority
+
+stop_memory_paging = _posix_maxpriority.stop_memory_paging
+
+sched_get_priority_max = _posix_maxpriority.sched_get_priority_max
+
diff --git a/VisionEgg/posix_maxpriority_wrap.c b/VisionEgg/posix_maxpriority_wrap.c
new file mode 100644
index 0000000..b9df45f
--- /dev/null
+++ b/VisionEgg/posix_maxpriority_wrap.c
@@ -0,0 +1,1917 @@
+/* ----------------------------------------------------------------------------
+ * This file was automatically generated by SWIG (http://www.swig.org).
+ * Version 1.3.24
+ * 
+ * This file is not intended to be easily readable and contains a number of 
+ * coding conventions designed to improve portability and efficiency. Do not make
+ * changes to this file unless you know what you are doing--modify the SWIG 
+ * interface file instead. 
+ * ----------------------------------------------------------------------------- */
+
+#define SWIGPYTHON
+
+#ifndef SWIG_TEMPLATE_DISAMBIGUATOR
+#  if defined(__SUNPRO_CC) 
+#    define SWIG_TEMPLATE_DISAMBIGUATOR template
+#  else
+#    define SWIG_TEMPLATE_DISAMBIGUATOR 
+#  endif
+#endif
+
+
+#include <Python.h>
+
+/***********************************************************************
+ * swigrun.swg
+ *
+ *     This file contains generic CAPI SWIG runtime support for pointer
+ *     type checking.
+ *
+ ************************************************************************/
+
+/* This should only be incremented when either the layout of swig_type_info changes,
+   or for whatever reason, the runtime changes incompatibly */
+#define SWIG_RUNTIME_VERSION "1"
+
+/* define SWIG_TYPE_TABLE_NAME as "SWIG_TYPE_TABLE" */
+#ifdef SWIG_TYPE_TABLE
+#define SWIG_QUOTE_STRING(x) #x
+#define SWIG_EXPAND_AND_QUOTE_STRING(x) SWIG_QUOTE_STRING(x)
+#define SWIG_TYPE_TABLE_NAME SWIG_EXPAND_AND_QUOTE_STRING(SWIG_TYPE_TABLE)
+#else
+#define SWIG_TYPE_TABLE_NAME
+#endif
+
+#include <string.h>
+
+#ifndef SWIGINLINE
+#if defined(__cplusplus) || (defined(__GNUC__) && !defined(__STRICT_ANSI__))
+#  define SWIGINLINE inline
+#else
+#  define SWIGINLINE
+#endif
+#endif
+
+/*
+  You can use the SWIGRUNTIME and SWIGRUNTIMEINLINE macros for
+  creating a static or dynamic library from the swig runtime code.
+  In 99.9% of the cases, swig just needs to declare them as 'static'.
+  
+  But only do this if is strictly necessary, ie, if you have problems
+  with your compiler or so.
+*/
+#ifndef SWIGRUNTIME
+#define SWIGRUNTIME static
+#endif
+#ifndef SWIGRUNTIMEINLINE
+#define SWIGRUNTIMEINLINE SWIGRUNTIME SWIGINLINE
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef void *(*swig_converter_func)(void *);
+typedef struct swig_type_info *(*swig_dycast_func)(void **);
+
+typedef struct swig_type_info {
+  const char             *name;
+  swig_converter_func     converter;
+  const char             *str;
+  void                   *clientdata;
+  swig_dycast_func        dcast;
+  struct swig_type_info  *next;
+  struct swig_type_info  *prev;
+} swig_type_info;
+
+/* 
+  Compare two type names skipping the space characters, therefore
+  "char*" == "char *" and "Class<int>" == "Class<int >", etc.
+
+  Return 0 when the two name types are equivalent, as in
+  strncmp, but skipping ' '.
+*/
+SWIGRUNTIME int
+SWIG_TypeNameComp(const char *f1, const char *l1,
+		  const char *f2, const char *l2) {
+  for (;(f1 != l1) && (f2 != l2); ++f1, ++f2) {
+    while ((*f1 == ' ') && (f1 != l1)) ++f1;
+    while ((*f2 == ' ') && (f2 != l2)) ++f2;
+    if (*f1 != *f2) return *f1 - *f2;
+  }
+  return (l1 - f1) - (l2 - f2);
+}
+
+/*
+  Check type equivalence in a name list like <name1>|<name2>|...
+*/
+SWIGRUNTIME int
+SWIG_TypeEquiv(const char *nb, const char *tb) {
+  int equiv = 0;
+  const char* te = tb + strlen(tb);
+  const char* ne = nb;
+  while (!equiv && *ne) {
+    for (nb = ne; *ne; ++ne) {
+      if (*ne == '|') break;
+    }
+    equiv = SWIG_TypeNameComp(nb, ne, tb, te) == 0;
+    if (*ne) ++ne;
+  }
+  return equiv;
+}
+
+/*
+  Register a type mapping with the type-checking
+*/
+SWIGRUNTIME swig_type_info *
+SWIG_TypeRegisterTL(swig_type_info **tl, swig_type_info *ti) {
+  swig_type_info *tc, *head, *ret, *next;
+  /* Check to see if this type has already been registered */
+  tc = *tl;
+  while (tc) {
+    /* check simple type equivalence */
+    int typeequiv = (strcmp(tc->name, ti->name) == 0);   
+    /* check full type equivalence, resolving typedefs */
+    if (!typeequiv) {
+      /* only if tc is not a typedef (no '|' on it) */
+      if (tc->str && ti->str && !strstr(tc->str,"|")) {
+	typeequiv = SWIG_TypeEquiv(ti->str,tc->str);
+      }
+    }
+    if (typeequiv) {
+      /* Already exists in the table.  Just add additional types to the list */
+      if (ti->clientdata) tc->clientdata = ti->clientdata;
+      head = tc;
+      next = tc->next;
+      goto l1;
+    }
+    tc = tc->prev;
+  }
+  head = ti;
+  next = 0;
+
+  /* Place in list */
+  ti->prev = *tl;
+  *tl = ti;
+
+  /* Build linked lists */
+  l1:
+  ret = head;
+  tc = ti + 1;
+  /* Patch up the rest of the links */
+  while (tc->name) {
+    head->next = tc;
+    tc->prev = head;
+    head = tc;
+    tc++;
+  }
+  if (next) next->prev = head;
+  head->next = next;
+
+  return ret;
+}
+
+/*
+  Check the typename
+*/
+SWIGRUNTIME swig_type_info *
+SWIG_TypeCheck(const char *c, swig_type_info *ty) {
+  swig_type_info *s;
+  if (!ty) return 0;        /* Void pointer */
+  s = ty->next;             /* First element always just a name */
+  do {
+    if (strcmp(s->name,c) == 0) {
+      if (s == ty->next) return s;
+      /* Move s to the top of the linked list */
+      s->prev->next = s->next;
+      if (s->next) {
+        s->next->prev = s->prev;
+      }
+      /* Insert s as second element in the list */
+      s->next = ty->next;
+      if (ty->next) ty->next->prev = s;
+      ty->next = s;
+      s->prev = ty;
+      return s;
+    }
+    s = s->next;
+  } while (s && (s != ty->next));
+  return 0;
+}
+
+/*
+  Cast a pointer up an inheritance hierarchy
+*/
+SWIGRUNTIMEINLINE void *
+SWIG_TypeCast(swig_type_info *ty, void *ptr) {
+  return ((!ty) || (!ty->converter)) ? ptr : (*ty->converter)(ptr);
+}
+
+/* 
+   Dynamic pointer casting. Down an inheritance hierarchy
+*/
+SWIGRUNTIME swig_type_info *
+SWIG_TypeDynamicCast(swig_type_info *ty, void **ptr) {
+  swig_type_info *lastty = ty;
+  if (!ty || !ty->dcast) return ty;
+  while (ty && (ty->dcast)) {
+    ty = (*ty->dcast)(ptr);
+    if (ty) lastty = ty;
+  }
+  return lastty;
+}
+
+/*
+  Return the name associated with this type
+*/
+SWIGRUNTIMEINLINE const char *
+SWIG_TypeName(const swig_type_info *ty) {
+  return ty->name;
+}
+
+/*
+  Return the pretty name associated with this type,
+  that is an unmangled type name in a form presentable to the user.
+*/
+SWIGRUNTIME const char *
+SWIG_TypePrettyName(const swig_type_info *type) {
+  /* The "str" field contains the equivalent pretty names of the
+     type, separated by vertical-bar characters.  We choose
+     to print the last name, as it is often (?) the most
+     specific. */
+  if (type->str != NULL) {
+    const char *last_name = type->str;
+    const char *s;
+    for (s = type->str; *s; s++)
+      if (*s == '|') last_name = s+1;
+    return last_name;
+  }
+  else
+    return type->name;
+}
+
+/*
+  Search for a swig_type_info structure
+*/
+SWIGRUNTIME swig_type_info *
+SWIG_TypeQueryTL(swig_type_info *tl, const char *name) {
+  swig_type_info *ty = tl;
+  while (ty) {
+    if (ty->str && (SWIG_TypeEquiv(ty->str,name))) return ty;
+    if (ty->name && (strcmp(name,ty->name) == 0)) return ty;
+    ty = ty->prev;
+  }
+  return 0;
+}
+
+/* 
+   Set the clientdata field for a type
+*/
+SWIGRUNTIME void
+SWIG_TypeClientDataTL(swig_type_info *tl, swig_type_info *ti, void *clientdata) {
+  swig_type_info *tc, *equiv;
+  if (ti->clientdata) return;
+  /* if (ti->clientdata == clientdata) return; */
+  ti->clientdata = clientdata;
+  equiv = ti->next;
+  while (equiv) {
+    if (!equiv->converter) {
+      tc = tl;
+      while (tc) {
+        if ((strcmp(tc->name, equiv->name) == 0))
+          SWIG_TypeClientDataTL(tl,tc,clientdata);
+        tc = tc->prev;
+      }
+    }
+    equiv = equiv->next;
+  }
+}
+
+/* 
+   Pack binary data into a string
+*/
+SWIGRUNTIME char *
+SWIG_PackData(char *c, void *ptr, size_t sz) {
+  static char hex[17] = "0123456789abcdef";
+  unsigned char *u = (unsigned char *) ptr;
+  const unsigned char *eu =  u + sz;
+  register unsigned char uu;
+  for (; u != eu; ++u) {
+    uu = *u;
+    *(c++) = hex[(uu & 0xf0) >> 4];
+    *(c++) = hex[uu & 0xf];
+  }
+  return c;
+}
+
+/* 
+   Unpack binary data from a string
+*/
+SWIGRUNTIME const char *
+SWIG_UnpackData(const char *c, void *ptr, size_t sz) {
+  register unsigned char *u = (unsigned char *) ptr;
+  register const unsigned char *eu =  u + sz;
+  for (; u != eu; ++u) {
+    register int d = *(c++);
+    register unsigned char uu = 0;
+    if ((d >= '0') && (d <= '9'))
+      uu = ((d - '0') << 4);
+    else if ((d >= 'a') && (d <= 'f'))
+      uu = ((d - ('a'-10)) << 4);
+    else 
+      return (char *) 0;
+    d = *(c++);
+    if ((d >= '0') && (d <= '9'))
+      uu |= (d - '0');
+    else if ((d >= 'a') && (d <= 'f'))
+      uu |= (d - ('a'-10));
+    else 
+      return (char *) 0;
+    *u = uu;
+  }
+  return c;
+}
+
+/*
+  This function will propagate the clientdata field of type to any new
+  swig_type_info structures that have been added into the list of
+  equivalent types.  It is like calling SWIG_TypeClientData(type,
+  clientdata) a second time.
+*/
+SWIGRUNTIME void
+SWIG_PropagateClientDataTL(swig_type_info *tl, swig_type_info *type) {
+  swig_type_info *equiv = type->next;
+  swig_type_info *tc;
+  if (!type->clientdata) return;
+  while (equiv) {
+    if (!equiv->converter) {
+      tc = tl;
+      while (tc) {
+        if ((strcmp(tc->name, equiv->name) == 0) && !tc->clientdata)
+          SWIG_TypeClientDataTL(tl,tc, type->clientdata);
+        tc = tc->prev;
+      }
+    }
+    equiv = equiv->next;
+  }
+}
+
+/* 
+   Pack 'void *' into a string buffer.
+*/
+SWIGRUNTIME char *
+SWIG_PackVoidPtr(char *buff, void *ptr, const char *name, size_t bsz) {
+  char *r = buff;
+  if ((2*sizeof(void *) + 2) > bsz) return 0;
+  *(r++) = '_';
+  r = SWIG_PackData(r,&ptr,sizeof(void *));
+  if (strlen(name) + 1 > (bsz - (r - buff))) return 0;
+  strcpy(r,name);
+  return buff;
+}
+
+SWIGRUNTIME const char *
+SWIG_UnpackVoidPtr(const char *c, void **ptr, const char *name) {
+  if (*c != '_') {
+    if (strcmp(c,"NULL") == 0) {
+      *ptr = (void *) 0;
+      return name;
+    } else {
+      return 0;
+    }
+  }
+  return SWIG_UnpackData(++c,ptr,sizeof(void *));
+}
+
+SWIGRUNTIME char *
+SWIG_PackDataName(char *buff, void *ptr, size_t sz, const char *name, size_t bsz) {
+  char *r = buff;
+  size_t lname = (name ? strlen(name) : 0);
+  if ((2*sz + 2 + lname) > bsz) return 0;
+  *(r++) = '_';
+  r = SWIG_PackData(r,ptr,sz);
+  if (lname) {
+    strncpy(r,name,lname+1);
+  } else {
+    *r = 0;
+  }
+  return buff;
+}
+
+SWIGRUNTIME const char *
+SWIG_UnpackDataName(const char *c, void *ptr, size_t sz, const char *name) {
+  if (*c != '_') {
+    if (strcmp(c,"NULL") == 0) {
+      memset(ptr,0,sz);
+      return name;
+    } else {
+      return 0;
+    }
+  }
+  return SWIG_UnpackData(++c,ptr,sz);
+}
+
+#ifdef __cplusplus
+}
+#endif
+
+/***********************************************************************
+ * common.swg
+ *
+ *     This file contains generic SWIG runtime support for pointer
+ *     type checking as well as a few commonly used macros to control
+ *     external linkage.
+ *
+ * Author : David Beazley (beazley at cs.uchicago.edu)
+ *
+ * Copyright (c) 1999-2000, The University of Chicago
+ * 
+ * This file may be freely redistributed without license or fee provided
+ * this copyright message remains intact.
+ ************************************************************************/
+
+
+#if defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__)
+#  if !defined(STATIC_LINKED)
+#    define SWIGEXPORT(a) __declspec(dllexport) a
+#  else
+#    define SWIGEXPORT(a) a
+#  endif
+#else
+#  define SWIGEXPORT(a) a
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/*************************************************************************/
+
+
+/* The static type info list */
+
+static swig_type_info *swig_type_list = 0;
+static swig_type_info **swig_type_list_handle = &swig_type_list;
+  
+
+/* Register a type mapping with the type-checking */
+static swig_type_info *
+SWIG_TypeRegister(swig_type_info *ti) {
+  return SWIG_TypeRegisterTL(swig_type_list_handle, ti);
+}
+
+/* Search for a swig_type_info structure */
+static swig_type_info *
+SWIG_TypeQuery(const char *name) {
+  return SWIG_TypeQueryTL(*swig_type_list_handle, name);
+}
+
+/* Set the clientdata field for a type */
+static void
+SWIG_TypeClientData(swig_type_info *ti, void *clientdata) {
+  SWIG_TypeClientDataTL(*swig_type_list_handle, ti, clientdata);
+}
+
+/* This function will propagate the clientdata field of type to
+* any new swig_type_info structures that have been added into the list
+* of equivalent types.  It is like calling
+* SWIG_TypeClientData(type, clientdata) a second time.
+*/
+static void
+SWIG_PropagateClientData(swig_type_info *type) {
+  SWIG_PropagateClientDataTL(*swig_type_list_handle, type);
+}
+
+#ifdef __cplusplus
+}
+#endif
+
+/* -----------------------------------------------------------------------------
+ * SWIG API. Portion that goes into the runtime
+ * ----------------------------------------------------------------------------- */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* -----------------------------------------------------------------------------
+ * for internal method declarations
+ * ----------------------------------------------------------------------------- */
+
+#ifndef SWIGINTERN
+#define SWIGINTERN static 
+#endif
+
+#ifndef SWIGINTERNSHORT
+#ifdef __cplusplus
+#define SWIGINTERNSHORT static inline 
+#else /* C case */
+#define SWIGINTERNSHORT static 
+#endif /* __cplusplus */
+#endif
+
+
+/*
+  Exception handling in wrappers
+*/
+#define SWIG_fail                goto fail
+#define SWIG_arg_fail(arg)       SWIG_Python_ArgFail(arg)
+#define SWIG_append_errmsg(msg)   SWIG_Python_AddErrMesg(msg,0)
+#define SWIG_preppend_errmsg(msg) SWIG_Python_AddErrMesg(msg,1)
+#define SWIG_type_error(type,obj) SWIG_Python_TypeError(type,obj)
+#define SWIG_null_ref(type)       SWIG_Python_NullRef(type)
+
+/*
+  Contract support
+*/
+#define SWIG_contract_assert(expr, msg) \
+ if (!(expr)) { PyErr_SetString(PyExc_RuntimeError, (char *) msg ); goto fail; } else
+
+/* -----------------------------------------------------------------------------
+ * Constant declarations
+ * ----------------------------------------------------------------------------- */
+
+/* Constant Types */
+#define SWIG_PY_INT     1
+#define SWIG_PY_FLOAT   2
+#define SWIG_PY_STRING  3
+#define SWIG_PY_POINTER 4
+#define SWIG_PY_BINARY  5
+
+/* Constant information structure */
+typedef struct swig_const_info {
+    int type;
+    char *name;
+    long lvalue;
+    double dvalue;
+    void   *pvalue;
+    swig_type_info **ptype;
+} swig_const_info;
+
+
+/* -----------------------------------------------------------------------------
+ * Alloc. memory flags
+ * ----------------------------------------------------------------------------- */
+#define SWIG_OLDOBJ  1
+#define SWIG_NEWOBJ  SWIG_OLDOBJ + 1
+#define SWIG_PYSTR   SWIG_NEWOBJ + 1
+
+#ifdef __cplusplus
+}
+#endif
+
+
+/***********************************************************************
+ * pyrun.swg
+ *
+ *     This file contains the runtime support for Python modules
+ *     and includes code for managing global variables and pointer
+ *     type checking.
+ *
+ * Author : David Beazley (beazley at cs.uchicago.edu)
+ ************************************************************************/
+
+/* Common SWIG API */
+#define SWIG_ConvertPtr(obj, pp, type, flags)    SWIG_Python_ConvertPtr(obj, pp, type, flags)
+#define SWIG_NewPointerObj(p, type, flags)       SWIG_Python_NewPointerObj(p, type, flags)
+#define SWIG_MustGetPtr(p, type, argnum, flags)  SWIG_Python_MustGetPtr(p, type, argnum, flags)
+ 
+
+/* Python-specific SWIG API */
+#define SWIG_ConvertPacked(obj, ptr, sz, ty, flags)   SWIG_Python_ConvertPacked(obj, ptr, sz, ty, flags)
+#define SWIG_NewPackedObj(ptr, sz, type)              SWIG_Python_NewPackedObj(ptr, sz, type)
+
+
+/* -----------------------------------------------------------------------------
+ * Pointer declarations
+ * ----------------------------------------------------------------------------- */
+/*
+  Use SWIG_NO_COBJECT_TYPES to force the use of strings to represent
+  C/C++ pointers in the python side. Very useful for debugging, but
+  not always safe.
+*/
+#if !defined(SWIG_NO_COBJECT_TYPES) && !defined(SWIG_COBJECT_TYPES)
+#  define SWIG_COBJECT_TYPES
+#endif
+
+/* Flags for pointer conversion */
+#define SWIG_POINTER_EXCEPTION     0x1
+#define SWIG_POINTER_DISOWN        0x2
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* -----------------------------------------------------------------------------
+ * Create a new pointer string 
+ * ----------------------------------------------------------------------------- */
+
+#ifndef SWIG_BUFFER_SIZE
+#define SWIG_BUFFER_SIZE 1024
+#endif
+
+#if defined(SWIG_COBJECT_TYPES)
+#if !defined(SWIG_COBJECT_PYTHON)
+/* -----------------------------------------------------------------------------
+ * Implements a simple Swig Object type, and use it instead of PyCObject
+ * ----------------------------------------------------------------------------- */
+
+typedef struct {
+  PyObject_HEAD
+  void *ptr;
+  const char *desc;
+} PySwigObject;
+
+/* Declarations for objects of type PySwigObject */
+
+SWIGRUNTIME int
+PySwigObject_print(PySwigObject *v, FILE *fp, int flags)
+{
+  char result[SWIG_BUFFER_SIZE];
+  if (SWIG_PackVoidPtr(result, v->ptr, v->desc, sizeof(result))) {
+    fputs("<Swig Object at ", fp); fputs(result, fp); fputs(">", fp);
+    return 0; 
+  } else {
+    return 1; 
+  }
+}
+  
+SWIGRUNTIME PyObject *
+PySwigObject_repr(PySwigObject *v)
+{
+  char result[SWIG_BUFFER_SIZE];
+  return SWIG_PackVoidPtr(result, v->ptr, v->desc, sizeof(result)) ?
+    PyString_FromFormat("<Swig Object at %s>", result) : 0;
+}
+
+SWIGRUNTIME PyObject *
+PySwigObject_str(PySwigObject *v)
+{
+  char result[SWIG_BUFFER_SIZE];
+  return SWIG_PackVoidPtr(result, v->ptr, v->desc, sizeof(result)) ?
+    PyString_FromString(result) : 0;
+}
+
+SWIGRUNTIME PyObject *
+PySwigObject_long(PySwigObject *v)
+{
+  return PyLong_FromUnsignedLong((unsigned long) v->ptr);
+}
+
+SWIGRUNTIME PyObject *
+PySwigObject_oct(PySwigObject *v)
+{
+  char buf[100];
+  unsigned long x = (unsigned long)v->ptr;
+  if (x == 0)
+    strcpy(buf, "0");
+  else
+    PyOS_snprintf(buf, sizeof(buf), "0%lo", x);
+  return PyString_FromString(buf);
+}
+
+SWIGRUNTIME PyObject *
+PySwigObject_hex(PySwigObject *v)
+{
+  char buf[100];
+  PyOS_snprintf(buf, sizeof(buf), "0x%lx", (unsigned long)v->ptr);
+  return PyString_FromString(buf);
+}
+
+SWIGRUNTIME int
+PySwigObject_compare(PySwigObject *v, PySwigObject *w)
+{
+  int c = strcmp(v->desc, w->desc);
+  if (c) {
+    return c;
+  } else {
+    void *i = v->ptr;
+    void *j = w->ptr;
+    return (i < j) ? -1 : (i > j) ? 1 : 0;
+  }
+}
+
+SWIGRUNTIME void
+PySwigObject_dealloc(PySwigObject *self)
+{
+  PyObject_DEL(self);
+}
+
+SWIGRUNTIME PyTypeObject*
+PySwigObject_GetType() {
+  static char PySwigObject_Type__doc__[] = 
+    "Swig object carries a C/C++ instance pointer";
+  
+  static PyNumberMethods PySwigObject_as_number = {
+    (binaryfunc)0, /*nb_add*/
+    (binaryfunc)0, /*nb_subtract*/
+    (binaryfunc)0, /*nb_multiply*/
+    (binaryfunc)0, /*nb_divide*/
+    (binaryfunc)0, /*nb_remainder*/
+    (binaryfunc)0, /*nb_divmod*/
+    (ternaryfunc)0,/*nb_power*/
+    (unaryfunc)0,  /*nb_negative*/
+    (unaryfunc)0,  /*nb_positive*/
+    (unaryfunc)0,  /*nb_absolute*/
+    (inquiry)0,    /*nb_nonzero*/
+    0,		   /*nb_invert*/
+    0,		   /*nb_lshift*/
+    0,		   /*nb_rshift*/
+    0,		   /*nb_and*/
+    0,		   /*nb_xor*/
+    0,		   /*nb_or*/
+    (coercion)0,   /*nb_coerce*/
+    (unaryfunc)PySwigObject_long, /*nb_int*/
+    (unaryfunc)PySwigObject_long, /*nb_long*/
+    (unaryfunc)0,                 /*nb_float*/
+    (unaryfunc)PySwigObject_oct,  /*nb_oct*/
+    (unaryfunc)PySwigObject_hex,  /*nb_hex*/
+#if PY_VERSION_HEX >= 0x02000000
+    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 /* nb_inplace_add -> nb_inplace_true_divide */ 
+#endif
+  };
+
+  static int type_init = 0;  
+  static PyTypeObject PySwigObject_Type;
+
+  if (!type_init) {
+    PyTypeObject tmp = {
+    PyObject_HEAD_INIT(&PyType_Type)
+    0,					/*ob_size*/
+    "PySwigObject",			/*tp_name*/
+    sizeof(PySwigObject),		/*tp_basicsize*/
+    0,					/*tp_itemsize*/
+    /* methods */
+    (destructor)PySwigObject_dealloc,	/*tp_dealloc*/
+    (printfunc)PySwigObject_print,	/*tp_print*/
+    (getattrfunc)0,			/*tp_getattr*/
+    (setattrfunc)0,			/*tp_setattr*/
+    (cmpfunc)PySwigObject_compare,	/*tp_compare*/
+    (reprfunc)PySwigObject_repr,	/*tp_repr*/
+    &PySwigObject_as_number,	        /*tp_as_number*/
+    0,					/*tp_as_sequence*/
+    0,					/*tp_as_mapping*/
+    (hashfunc)0,			/*tp_hash*/
+    (ternaryfunc)0,			/*tp_call*/
+    (reprfunc)PySwigObject_str,		/*tp_str*/
+    /* Space for future expansion */
+    0L,0L,0L,0L,
+    PySwigObject_Type__doc__, 	        /* Documentation string */
+#if PY_VERSION_HEX >= 0x02000000
+    0,                                  /* tp_traverse */
+    0,                                  /* tp_clear */
+#endif
+#if PY_VERSION_HEX >= 0x02010000
+    0,                                  /* tp_richcompare */
+    0,                                  /* tp_weaklistoffset */
+#endif
+#if PY_VERSION_HEX >= 0x02020000
+    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* tp_iter -> tp_weaklist */
+#endif
+#if PY_VERSION_HEX >= 0x02030000
+    0,                                  /* tp_del */
+#endif
+#ifdef COUNT_ALLOCS
+    0,0,0,0                             /* tp_alloc -> tp_next */
+#endif
+    };
+
+    PySwigObject_Type = tmp;
+    type_init = 1;
+  }
+
+  return &PySwigObject_Type;
+}
+
+SWIGRUNTIME PyObject *
+PySwigObject_FromVoidPtrAndDesc(void *ptr, const char *desc)
+{
+  PySwigObject *self = PyObject_NEW(PySwigObject, PySwigObject_GetType());
+  if (self == NULL) return NULL;
+  self->ptr = ptr;
+  self->desc = desc;
+  return (PyObject *)self;
+}
+
+SWIGRUNTIMEINLINE void *
+PySwigObject_AsVoidPtr(PyObject *self)
+{
+  return ((PySwigObject *)self)->ptr;
+}
+
+SWIGRUNTIMEINLINE const char *
+PySwigObject_GetDesc(PyObject *self)
+{
+  return ((PySwigObject *)self)->desc;
+}
+
+SWIGRUNTIMEINLINE int
+PySwigObject_Check(PyObject *op) {
+  return ((op)->ob_type == PySwigObject_GetType()) 
+    || (strcmp((op)->ob_type->tp_name,"PySwigObject") == 0);
+}
+
+/* -----------------------------------------------------------------------------
+ * Implements a simple Swig Packed type, and use it instead of string
+ * ----------------------------------------------------------------------------- */
+
+typedef struct {
+  PyObject_HEAD
+  void *pack;
+  const char *desc;
+  size_t size;
+} PySwigPacked;
+
+SWIGRUNTIME int
+PySwigPacked_print(PySwigPacked *v, FILE *fp, int flags)
+{
+  char result[SWIG_BUFFER_SIZE];
+  fputs("<Swig Packed ", fp); 
+  if (SWIG_PackDataName(result, v->pack, v->size, 0, sizeof(result))) {
+    fputs("at ", fp); 
+    fputs(result, fp); 
+  }
+  fputs(v->desc,fp); 
+  fputs(">", fp);
+  return 0; 
+}
+  
+SWIGRUNTIME PyObject *
+PySwigPacked_repr(PySwigPacked *v)
+{
+  char result[SWIG_BUFFER_SIZE];
+  if (SWIG_PackDataName(result, v->pack, v->size, 0, sizeof(result))) {
+    return PyString_FromFormat("<Swig Packed at %s%s>", result, v->desc);
+  } else {
+    return PyString_FromFormat("<Swig Packed %s>", v->desc);
+  }  
+}
+
+SWIGRUNTIME PyObject *
+PySwigPacked_str(PySwigPacked *v)
+{
+  char result[SWIG_BUFFER_SIZE];
+  if (SWIG_PackDataName(result, v->pack, v->size, 0, sizeof(result))){
+    return PyString_FromFormat("%s%s", result, v->desc);
+  } else {
+    return PyString_FromFormat("%s", v->desc);
+  }  
+}
+
+SWIGRUNTIME int
+PySwigPacked_compare(PySwigPacked *v, PySwigPacked *w)
+{
+  int c = strcmp(v->desc, w->desc);
+  if (c) {
+    return c;
+  } else {
+    size_t i = v->size;
+    size_t j = w->size;
+    int s = (i < j) ? -1 : (i > j) ? 1 : 0;
+    return s ? s : strncmp((char *)v->pack, (char *)w->pack, 2*v->size);
+  }
+}
+
+SWIGRUNTIME void
+PySwigPacked_dealloc(PySwigPacked *self)
+{
+  free(self->pack);
+  PyObject_DEL(self);
+}
+
+SWIGRUNTIME PyTypeObject*
+PySwigPacked_GetType() {
+  static char PySwigPacked_Type__doc__[] = 
+    "Swig object carries a C/C++ instance pointer";
+  static int type_init = 0;
+  
+  static PyTypeObject PySwigPacked_Type;
+  if (!type_init) {
+    PyTypeObject tmp = {
+    PyObject_HEAD_INIT(&PyType_Type)
+    0,					/*ob_size*/
+    "PySwigPacked",			/*tp_name*/
+    sizeof(PySwigPacked),		/*tp_basicsize*/
+    0,					/*tp_itemsize*/
+    /* methods */
+    (destructor)PySwigPacked_dealloc,	/*tp_dealloc*/
+    (printfunc)PySwigPacked_print,	/*tp_print*/
+    (getattrfunc)0,			/*tp_getattr*/
+    (setattrfunc)0,			/*tp_setattr*/
+    (cmpfunc)PySwigPacked_compare,	/*tp_compare*/
+    (reprfunc)PySwigPacked_repr,	/*tp_repr*/
+    0,	                                /*tp_as_number*/
+    0,					/*tp_as_sequence*/
+    0,					/*tp_as_mapping*/
+    (hashfunc)0,			/*tp_hash*/
+    (ternaryfunc)0,			/*tp_call*/
+    (reprfunc)PySwigPacked_str,		/*tp_str*/
+    /* Space for future expansion */
+    0L,0L,0L,0L,
+    PySwigPacked_Type__doc__, 	        /* Documentation string */
+#if PY_VERSION_HEX >= 0x02000000
+    0,                                  /* tp_traverse */
+    0,                                  /* tp_clear */
+#endif
+#if PY_VERSION_HEX >= 0x02010000
+    0,                                  /* tp_richcompare */
+    0,                                  /* tp_weaklistoffset */
+#endif
+#if PY_VERSION_HEX >= 0x02020000         
+    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* tp_iter -> tp_weaklist */
+#endif
+#if PY_VERSION_HEX >= 0x02030000
+    0,                                  /* tp_del */
+#endif
+#ifdef COUNT_ALLOCS
+    0,0,0,0                             /* tp_alloc -> tp_next */
+#endif
+    };
+
+    PySwigPacked_Type = tmp;
+    type_init = 1;
+  }
+  
+      
+
+  return &PySwigPacked_Type;
+}
+
+SWIGRUNTIME PyObject *
+PySwigPacked_FromDataAndDesc(void *ptr, size_t size, const char *desc)
+{
+  PySwigPacked *self = PyObject_NEW(PySwigPacked, PySwigPacked_GetType());
+  if (self == NULL) {
+    return NULL;
+  } else {
+    void *pack = malloc(size);
+    memcpy(pack, ptr, size);
+    self->pack = pack;
+    self->desc = desc;
+    self->size = size;
+    return (PyObject *) self;
+  }
+}
+
+SWIGRUNTIMEINLINE const char *
+PySwigPacked_UnpackData(PyObject *obj, void *ptr, size_t size)
+{
+  PySwigPacked *self = (PySwigPacked *)obj;
+  if (self->size != size) return 0;
+  memcpy(ptr, self->pack, size);
+  return self->desc;
+}
+
+SWIGRUNTIMEINLINE const char *
+PySwigPacked_GetDesc(PyObject *self)
+{
+  return ((PySwigPacked *)self)->desc;
+}
+
+SWIGRUNTIMEINLINE int
+PySwigPacked_Check(PyObject *op) {
+  return ((op)->ob_type == PySwigPacked_GetType()) 
+    || (strcmp((op)->ob_type->tp_name,"PySwigPacked") == 0);
+}
+
+#else
+/* -----------------------------------------------------------------------------
+ * Use the old Python PyCObject instead of PySwigObject
+ * ----------------------------------------------------------------------------- */
+
+#define PySwigObject_GetDesc(obj)	           PyCObject_GetDesc(obj)
+#define PySwigObject_Check(obj)	           PyCObject_Check(obj)
+#define PySwigObject_AsVoidPtr(obj)	   PyCObject_AsVoidPtr(obj)
+#define PySwigObject_FromVoidPtrAndDesc(p, d)  PyCObject_FromVoidPtrAndDesc(p, d, NULL)
+
+#endif
+
+#endif
+
+/* -----------------------------------------------------------------------------
+ * errors manipulation
+ * ----------------------------------------------------------------------------- */
+
+SWIGRUNTIME void
+SWIG_Python_TypeError(const char *type, PyObject *obj)
+{
+  if (type) {
+#if defined(SWIG_COBJECT_TYPES)
+    if (PySwigObject_Check(obj)) {
+      const char *otype = (const char *) PySwigObject_GetDesc(obj);
+      if (otype) {
+	PyErr_Format(PyExc_TypeError, "a '%s' is expected, 'PySwigObject(%s)' is received",
+		     type, otype);
+	return;
+      }
+    } else 
+#endif      
+    {
+      const char *otype = (obj ? obj->ob_type->tp_name : 0); 
+      if (otype) {
+	PyObject *str = PyObject_Str(obj);
+	const char *cstr = str ? PyString_AsString(str) : 0;
+	if (cstr) {
+	  PyErr_Format(PyExc_TypeError, "a '%s' is expected, '%s(%s)' is received",
+		       type, otype, cstr);
+	} else {
+	  PyErr_Format(PyExc_TypeError, "a '%s' is expected, '%s' is received",
+		       type, otype);
+	}
+	Py_DECREF(str);
+	return;
+      }
+    }   
+    PyErr_Format(PyExc_TypeError, "a '%s' is expected", type);
+  } else {
+    PyErr_Format(PyExc_TypeError, "unexpected type is received");
+  }
+}
+
+SWIGRUNTIMEINLINE void
+SWIG_Python_NullRef(const char *type)
+{
+  if (type) {
+    PyErr_Format(PyExc_TypeError, "null reference of type '%s' was received",type);
+  } else {
+    PyErr_Format(PyExc_TypeError, "null reference was received");
+  }
+}
+
+SWIGRUNTIME int
+SWIG_Python_AddErrMesg(const char* mesg, int infront)
+{
+  if (PyErr_Occurred()) {
+    PyObject *type = 0;
+    PyObject *value = 0;
+    PyObject *traceback = 0;
+    PyErr_Fetch(&type, &value, &traceback);
+    if (value) {
+      PyObject *old_str = PyObject_Str(value);
+      Py_XINCREF(type);
+      PyErr_Clear();
+      if (infront) {
+	PyErr_Format(type, "%s %s", mesg, PyString_AsString(old_str));
+      } else {
+	PyErr_Format(type, "%s %s", PyString_AsString(old_str), mesg);
+      }
+      Py_DECREF(old_str);
+    }
+    return 1;
+  } else {
+    return 0;
+  }
+}
+
+SWIGRUNTIME int
+SWIG_Python_ArgFail(int argnum)
+{
+  if (PyErr_Occurred()) {
+    /* add information about failing argument */
+    char mesg[256];
+    sprintf(mesg, "argument number %d:", argnum);
+    return SWIG_Python_AddErrMesg(mesg, 1);
+  } else {
+    return 0;
+  }
+}
+
+
+/* -----------------------------------------------------------------------------
+ * pointers/data manipulation
+ * ----------------------------------------------------------------------------- */
+
+/* Convert a pointer value */
+SWIGRUNTIME int
+SWIG_Python_ConvertPtr(PyObject *obj, void **ptr, swig_type_info *ty, int flags) {
+  swig_type_info *tc;
+  const char *c = 0;
+  static PyObject *SWIG_this = 0;
+  int    newref = 0;
+  PyObject  *pyobj = 0;
+  void *vptr;
+  
+  if (!obj) return 0;
+  if (obj == Py_None) {
+    *ptr = 0;
+    return 0;
+  }
+
+#ifdef SWIG_COBJECT_TYPES
+  if (!(PySwigObject_Check(obj))) {
+    if (!SWIG_this)
+      SWIG_this = PyString_FromString("this");
+    pyobj = obj;
+    obj = PyObject_GetAttr(obj,SWIG_this);
+    newref = 1;
+    if (!obj) goto type_error;
+    if (!PySwigObject_Check(obj)) {
+      Py_DECREF(obj);
+      goto type_error;
+    }
+  }  
+  vptr = PySwigObject_AsVoidPtr(obj);
+  c = (const char *) PySwigObject_GetDesc(obj);
+  if (newref) { Py_DECREF(obj); }
+  goto type_check;
+#else
+  if (!(PyString_Check(obj))) {
+    if (!SWIG_this)
+      SWIG_this = PyString_FromString("this");
+    pyobj = obj;
+    obj = PyObject_GetAttr(obj,SWIG_this);
+    newref = 1;
+    if (!obj) goto type_error;
+    if (!PyString_Check(obj)) {
+      Py_DECREF(obj);
+      goto type_error;
+    }
+  } 
+  c = PyString_AS_STRING(obj);
+  /* Pointer values must start with leading underscore */
+  c = SWIG_UnpackVoidPtr(c, &vptr, ty->name);
+  if (newref) { Py_DECREF(obj); }
+  if (!c) goto type_error;
+#endif
+
+type_check:
+
+  if (ty) {
+    tc = SWIG_TypeCheck(c,ty);
+    if (!tc) goto type_error;
+    *ptr = SWIG_TypeCast(tc,vptr);
+  } else {
+    *ptr = vptr;
+  }
+
+  if ((pyobj) && (flags & SWIG_POINTER_DISOWN)) {
+    PyObject_SetAttrString(pyobj,(char*)"thisown",Py_False);
+  }
+  return 0;
+
+type_error:
+  PyErr_Clear();
+  if (pyobj && !obj) {    
+    obj = pyobj;
+    if (PyCFunction_Check(obj)) {
+      /* here we get the method pointer for callbacks */
+      char *doc = (((PyCFunctionObject *)obj) -> m_ml -> ml_doc);
+      c = doc ? strstr(doc, "swig_ptr: ") : 0;
+      if (c) {
+	c = SWIG_UnpackVoidPtr(c + 10, &vptr, ty->name);
+	if (!c) goto type_error;
+	goto type_check;
+      }
+    }
+  }
+  if (flags & SWIG_POINTER_EXCEPTION) {
+    if (ty) {
+      SWIG_Python_TypeError(SWIG_TypePrettyName(ty), obj);
+    } else {
+      SWIG_Python_TypeError("C/C++ pointer", obj);
+    }
+  }
+  return -1;
+}
+
+/* Convert a pointer value, signal an exception on a type mismatch */
+SWIGRUNTIME void *
+SWIG_Python_MustGetPtr(PyObject *obj, swig_type_info *ty, int argnum, int flags) {
+  void *result;
+  if (SWIG_Python_ConvertPtr(obj, &result, ty, flags) == -1) {
+    PyErr_Clear();
+    if (flags & SWIG_POINTER_EXCEPTION) {
+      SWIG_Python_TypeError(SWIG_TypePrettyName(ty), obj);
+      SWIG_Python_ArgFail(argnum);
+    }
+  }
+  return result;
+}
+
+/* Convert a packed value value */
+SWIGRUNTIME int
+SWIG_Python_ConvertPacked(PyObject *obj, void *ptr, size_t sz, swig_type_info *ty, int flags) {
+  swig_type_info *tc;
+  const char *c = 0;
+
+#if defined(SWIG_COBJECT_TYPES) && !defined(SWIG_COBJECT_PYTHON)
+  c = PySwigPacked_UnpackData(obj, ptr, sz);
+#else
+  if ((!obj) || (!PyString_Check(obj))) goto type_error;
+  c = PyString_AS_STRING(obj);
+  /* Pointer values must start with leading underscore */
+  c = SWIG_UnpackDataName(c, ptr, sz, ty->name);
+#endif
+  if (!c) goto type_error;
+  if (ty) {
+    tc = SWIG_TypeCheck(c,ty);
+    if (!tc) goto type_error;
+  }
+  return 0;
+
+type_error:
+  PyErr_Clear();
+  if (flags & SWIG_POINTER_EXCEPTION) {
+    if (ty) {
+      SWIG_Python_TypeError(SWIG_TypePrettyName(ty), obj);
+    } else {
+      SWIG_Python_TypeError("C/C++ packed data", obj);
+    }
+  }
+  return -1;
+}  
+
+/* Create a new array object */
+SWIGRUNTIME PyObject *
+SWIG_Python_NewPointerObj(void *ptr, swig_type_info *type, int own) {
+  PyObject *robj = 0;
+  if (!ptr) {
+    Py_INCREF(Py_None);
+    return Py_None;
+  }
+#ifdef SWIG_COBJECT_TYPES
+  robj = PySwigObject_FromVoidPtrAndDesc((void *) ptr, (char *)type->name);
+#else
+  {
+    char result[SWIG_BUFFER_SIZE];
+    robj = SWIG_PackVoidPtr(result, ptr, type->name, sizeof(result)) ?
+      PyString_FromString(result) : 0;
+  }
+#endif
+  if (!robj || (robj == Py_None)) return robj;
+  if (type->clientdata) {
+    PyObject *inst;
+    PyObject *args = Py_BuildValue((char*)"(O)", robj);
+    Py_DECREF(robj);
+    inst = PyObject_CallObject((PyObject *) type->clientdata, args);
+    Py_DECREF(args);
+    if (inst) {
+      if (own) {
+        PyObject_SetAttrString(inst,(char*)"thisown",Py_True);
+      }
+      robj = inst;
+    }
+  }
+  return robj;
+}
+
+SWIGRUNTIME PyObject *
+SWIG_Python_NewPackedObj(void *ptr, size_t sz, swig_type_info *type) {
+  PyObject *robj = 0;
+  if (!ptr) {
+    Py_INCREF(Py_None);
+    return Py_None;
+  }
+#if defined(SWIG_COBJECT_TYPES) && !defined(SWIG_COBJECT_PYTHON)
+  robj = PySwigPacked_FromDataAndDesc((void *) ptr, sz, (char *)type->name);
+#else
+  {
+    char result[SWIG_BUFFER_SIZE];
+    robj = SWIG_PackDataName(result, ptr, sz, type->name, sizeof(result)) ?
+      PyString_FromString(result) : 0;
+  }
+#endif
+  return robj;
+}
+
+/* -----------------------------------------------------------------------------*
+ *  Get type list 
+ * -----------------------------------------------------------------------------*/
+
+#ifdef SWIG_LINK_RUNTIME
+void *SWIG_ReturnGlobalTypeList(void *);
+#endif
+
+SWIGRUNTIME swig_type_info **
+SWIG_Python_GetTypeListHandle() {
+  static void *type_pointer = (void *)0;
+  /* first check if module already created */
+  if (!type_pointer) {
+#ifdef SWIG_LINK_RUNTIME
+    type_pointer = SWIG_ReturnGlobalTypeList((void *)0);
+#else
+    type_pointer = PyCObject_Import((char*)"swig_runtime_data" SWIG_RUNTIME_VERSION,
+				    (char*)"type_pointer" SWIG_TYPE_TABLE_NAME);
+    if (PyErr_Occurred()) {
+      PyErr_Clear();
+      type_pointer = (void *)0;
+    }
+  }
+#endif
+  return (swig_type_info **) type_pointer;
+}
+
+/*
+  Search for a swig_type_info structure
+ */
+SWIGRUNTIMEINLINE swig_type_info *
+SWIG_Python_GetTypeList() {
+  swig_type_info **tlh = SWIG_Python_GetTypeListHandle();
+  return tlh ? *tlh : (swig_type_info*)0;
+}
+
+#define SWIG_Runtime_GetTypeList SWIG_Python_GetTypeList 
+
+#ifdef __cplusplus
+}
+#endif
+
+
+/* -------- TYPES TABLE (BEGIN) -------- */
+
+#define  SWIGTYPE_p_char swig_types[0] 
+#define  SWIGTYPE_size_t swig_types[1] 
+#define  SWIGTYPE_ptrdiff_t swig_types[2] 
+static swig_type_info *swig_types[4];
+
+/* -------- TYPES TABLE (END) -------- */
+
+
+/*-----------------------------------------------
+              @(target):= _posix_maxpriority.so
+  ------------------------------------------------*/
+#define SWIG_init    init_posix_maxpriority
+
+#define SWIG_name    "_posix_maxpriority"
+
+#include <sys/mman.h>
+#include <sched.h>
+#include <errno.h>
+
+
+  /*@/usr/share/swig1.3/python/pymacros.swg,66,SWIG_define@*/
+#define SWIG_From_int PyInt_FromLong
+/*@@*/
+
+int set_self_policy_priority(int,int);
+
+#include <limits.h>
+
+
+SWIGINTERN int
+  SWIG_CheckLongInRange(long value, long min_value, long max_value,
+			const char *errmsg)
+{
+  if (value < min_value) {
+    if (errmsg) {
+      PyErr_Format(PyExc_OverflowError, 
+		   "value %ld is less than '%s' minimum %ld", 
+		   value, errmsg, min_value);
+    }
+    return 0;    
+  } else if (value > max_value) {
+    if (errmsg) {
+      PyErr_Format(PyExc_OverflowError,
+		   "value %ld is greater than '%s' maximum %ld", 
+		   value, errmsg, max_value);
+    }
+    return 0;
+  }
+  return 1;
+}
+
+
+SWIGINTERN int
+  SWIG_AsVal_long(PyObject * obj, long* val)
+{
+  if (PyInt_Check(obj)) {
+    if (val) *val = PyInt_AS_LONG(obj);
+    return 1;
+  }
+  if (PyLong_Check(obj)) {
+    long v = PyLong_AsLong(obj);
+    if (!PyErr_Occurred()) {
+      if (val) *val = v;
+      return 1;
+    } else {
+      if (!val) PyErr_Clear();
+      return 0;
+    }
+  }
+  if (val) {
+    SWIG_type_error("long", obj);
+  }
+  return 0;
+ }
+
+
+#if INT_MAX != LONG_MAX
+SWIGINTERN int
+  SWIG_AsVal_int(PyObject *obj, int *val)
+{ 
+  const char* errmsg = val ? "int" : (char*)0;
+  long v;
+  if (SWIG_AsVal_long(obj, &v)) {
+    if (SWIG_CheckLongInRange(v, INT_MIN,INT_MAX, errmsg)) {
+      if (val) *val = (int)(v);
+      return 1;
+    } else {
+      return 0;
+    }
+  } else {
+    PyErr_Clear();
+  }
+  if (val) {
+    SWIG_type_error(errmsg, obj);
+  }
+  return 0;    
+}
+#else
+SWIGINTERNSHORT int
+  SWIG_AsVal_int(PyObject *obj, int *val)
+{
+  return SWIG_AsVal_long(obj,(long*)val);
+}
+#endif
+
+
+SWIGINTERNSHORT int
+SWIG_As_int(PyObject* obj)
+{
+  int v;
+  if (!SWIG_AsVal_int(obj, &v)) {
+    /*
+      this is needed to make valgrind/purify happier. 
+     */
+    memset((void*)&v, 0, sizeof(int));
+  }
+  return v;
+}
+
+  
+SWIGINTERNSHORT int
+SWIG_Check_int(PyObject* obj)
+{
+  return SWIG_AsVal_int(obj, (int*)0);
+}
+
+int stop_memory_paging();
+int sched_get_priority_max(int);
+#ifdef __cplusplus
+extern "C" {
+#endif
+static PyObject *_wrap_set_self_policy_priority(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    int arg1 ;
+    int arg2 ;
+    int result;
+    PyObject * obj0 = 0 ;
+    PyObject * obj1 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"OO:set_self_policy_priority",&obj0,&obj1)) goto fail;
+    {
+        arg1 = (int)(SWIG_As_int(obj0)); 
+        if (SWIG_arg_fail(1)) SWIG_fail;
+    }
+    {
+        arg2 = (int)(SWIG_As_int(obj1)); 
+        if (SWIG_arg_fail(2)) SWIG_fail;
+    }
+    {
+        errno = 0;
+        result = (int)set_self_policy_priority(arg1,arg2);
+        
+        if (errno) {
+            PyErr_SetFromErrno(PyExc_OSError);
+            goto fail; // this line supported on swig 1.3.17
+        }
+    }
+    {
+        resultobj = SWIG_From_int((int)(result)); 
+    }
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_stop_memory_paging(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    int result;
+    
+    if(!PyArg_ParseTuple(args,(char *)":stop_memory_paging")) goto fail;
+    {
+        errno = 0;
+        result = (int)stop_memory_paging();
+        
+        if (errno) {
+            PyErr_SetFromErrno(PyExc_OSError);
+            goto fail; // this line supported on swig 1.3.17
+        }
+    }
+    {
+        resultobj = SWIG_From_int((int)(result)); 
+    }
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_sched_get_priority_max(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    int arg1 ;
+    int result;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"O:sched_get_priority_max",&obj0)) goto fail;
+    {
+        arg1 = (int)(SWIG_As_int(obj0)); 
+        if (SWIG_arg_fail(1)) SWIG_fail;
+    }
+    {
+        errno = 0;
+        result = (int)sched_get_priority_max(arg1);
+        
+        if (errno) {
+            PyErr_SetFromErrno(PyExc_OSError);
+            goto fail; // this line supported on swig 1.3.17
+        }
+    }
+    {
+        resultobj = SWIG_From_int((int)(result)); 
+    }
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyMethodDef SwigMethods[] = {
+	 { (char *)"set_self_policy_priority", _wrap_set_self_policy_priority, METH_VARARGS, NULL},
+	 { (char *)"stop_memory_paging", _wrap_stop_memory_paging, METH_VARARGS, NULL},
+	 { (char *)"sched_get_priority_max", _wrap_sched_get_priority_max, METH_VARARGS, NULL},
+	 { NULL, NULL, 0, NULL }
+};
+
+
+/* -------- TYPE CONVERSION AND EQUIVALENCE RULES (BEGIN) -------- */
+
+static swig_type_info _swigt__p_char[] = {{"_p_char", 0, "char *", 0, 0, 0, 0},{"_p_char", 0, 0, 0, 0, 0, 0},{0, 0, 0, 0, 0, 0, 0}};
+static swig_type_info _swigt__size_t[] = {{"_size_t", 0, "size_t", 0, 0, 0, 0},{"_size_t", 0, 0, 0, 0, 0, 0},{0, 0, 0, 0, 0, 0, 0}};
+static swig_type_info _swigt__ptrdiff_t[] = {{"_ptrdiff_t", 0, "ptrdiff_t", 0, 0, 0, 0},{"_ptrdiff_t", 0, 0, 0, 0, 0, 0},{0, 0, 0, 0, 0, 0, 0}};
+
+static swig_type_info *swig_types_initial[] = {
+_swigt__p_char, 
+_swigt__size_t, 
+_swigt__ptrdiff_t, 
+0
+};
+
+
+/* -------- TYPE CONVERSION AND EQUIVALENCE RULES (END) -------- */
+
+static swig_const_info swig_const_table[] = {
+{0, 0, 0, 0.0, 0, 0}};
+
+#ifdef __cplusplus
+}
+#endif
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+    
+    /* Python-specific SWIG API */
+#define SWIG_newvarlink()                             SWIG_Python_newvarlink()
+#define SWIG_addvarlink(p, name, get_attr, set_attr)  SWIG_Python_addvarlink(p, name, get_attr, set_attr)
+#define SWIG_InstallConstants(d, constants)           SWIG_Python_InstallConstants(d, constants)
+    
+    /* -----------------------------------------------------------------------------
+     * global variable support code.
+     * ----------------------------------------------------------------------------- */
+    
+    typedef struct swig_globalvar {
+        char       *name;                  /* Name of global variable */
+        PyObject *(*get_attr)();           /* Return the current value */
+        int       (*set_attr)(PyObject *); /* Set the value */
+        struct swig_globalvar *next;
+    } swig_globalvar;
+    
+    typedef struct swig_varlinkobject {
+        PyObject_HEAD
+        swig_globalvar *vars;
+    } swig_varlinkobject;
+    
+    static PyObject *
+    swig_varlink_repr(swig_varlinkobject *v) {
+        v = v;
+        return PyString_FromString("<Swig global variables>");
+    }
+    
+    static int
+    swig_varlink_print(swig_varlinkobject *v, FILE *fp, int flags) {
+        swig_globalvar  *var;
+        flags = flags;
+        fprintf(fp,"Swig global variables { ");
+        for (var = v->vars; var; var=var->next) {
+            fprintf(fp,"%s", var->name);
+            if (var->next) fprintf(fp,", ");
+        }
+        fprintf(fp," }\n");
+        return 0;
+    }
+    
+    static PyObject *
+    swig_varlink_getattr(swig_varlinkobject *v, char *n) {
+        swig_globalvar *var = v->vars;
+        while (var) {
+            if (strcmp(var->name,n) == 0) {
+                return (*var->get_attr)();
+            }
+            var = var->next;
+        }
+        PyErr_SetString(PyExc_NameError,"Unknown C global variable");
+        return NULL;
+    }
+    
+    static int
+    swig_varlink_setattr(swig_varlinkobject *v, char *n, PyObject *p) {
+        swig_globalvar *var = v->vars;
+        while (var) {
+            if (strcmp(var->name,n) == 0) {
+                return (*var->set_attr)(p);
+            }
+            var = var->next;
+        }
+        PyErr_SetString(PyExc_NameError,"Unknown C global variable");
+        return 1;
+    }
+    
+    static PyTypeObject varlinktype = {
+        PyObject_HEAD_INIT(0)              
+        0,                                  /* Number of items in variable part (ob_size) */
+        (char *)"swigvarlink",              /* Type name (tp_name) */
+        sizeof(swig_varlinkobject),         /* Basic size (tp_basicsize) */
+        0,                                  /* Itemsize (tp_itemsize) */
+        0,                                  /* Deallocator (tp_dealloc) */ 
+        (printfunc) swig_varlink_print,     /* Print (tp_print) */
+        (getattrfunc) swig_varlink_getattr, /* get attr (tp_getattr) */
+        (setattrfunc) swig_varlink_setattr, /* Set attr (tp_setattr) */
+        0,                                  /* tp_compare */
+        (reprfunc) swig_varlink_repr,       /* tp_repr */
+        0,                                  /* tp_as_number */
+        0,                                  /* tp_as_sequence */
+        0,                                  /* tp_as_mapping */
+        0,                                  /* tp_hash */
+        0,                                  /* tp_call */
+        0,                                  /* tp_str */
+        0,                                  /* tp_getattro */
+        0,                                  /* tp_setattro */
+        0,                                  /* tp_as_buffer */
+        0,                                  /* tp_flags */
+        0,                                  /* tp_doc */
+#if PY_VERSION_HEX >= 0x02000000
+        0,                                  /* tp_traverse */
+        0,                                  /* tp_clear */
+#endif
+#if PY_VERSION_HEX >= 0x02010000
+        0,                                  /* tp_richcompare */
+        0,                                  /* tp_weaklistoffset */
+#endif
+#if PY_VERSION_HEX >= 0x02020000
+        0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* tp_iter -> tp_weaklist */
+#endif
+#if PY_VERSION_HEX >= 0x02030000
+        0,                                  /* tp_del */
+#endif
+#ifdef COUNT_ALLOCS
+        0,0,0,0                             /* tp_alloc -> tp_next */
+#endif
+    };
+    
+    /* Create a variable linking object for use later */
+    static PyObject *
+    SWIG_Python_newvarlink(void) {
+        swig_varlinkobject *result = 0;
+        result = PyMem_NEW(swig_varlinkobject,1);
+        varlinktype.ob_type = &PyType_Type;    /* Patch varlinktype into a PyType */
+        result->ob_type = &varlinktype;
+        result->vars = 0;
+        result->ob_refcnt = 0;
+        Py_XINCREF((PyObject *) result);
+        return ((PyObject*) result);
+    }
+    
+    static void
+    SWIG_Python_addvarlink(PyObject *p, char *name, PyObject *(*get_attr)(void), int (*set_attr)(PyObject *p)) {
+        swig_varlinkobject *v;
+        swig_globalvar *gv;
+        v= (swig_varlinkobject *) p;
+        gv = (swig_globalvar *) malloc(sizeof(swig_globalvar));
+        gv->name = (char *) malloc(strlen(name)+1);
+        strcpy(gv->name,name);
+        gv->get_attr = get_attr;
+        gv->set_attr = set_attr;
+        gv->next = v->vars;
+        v->vars = gv;
+    }
+    
+    /* -----------------------------------------------------------------------------
+     * constants/methods manipulation
+     * ----------------------------------------------------------------------------- */
+    
+    /* Install Constants */
+    static void
+    SWIG_Python_InstallConstants(PyObject *d, swig_const_info constants[]) {
+        PyObject *obj = 0;
+        size_t i;
+        for (i = 0; constants[i].type; i++) {
+            switch(constants[i].type) {
+                case SWIG_PY_INT:
+                obj = PyInt_FromLong(constants[i].lvalue);
+                break;
+                case SWIG_PY_FLOAT:
+                obj = PyFloat_FromDouble(constants[i].dvalue);
+                break;
+                case SWIG_PY_STRING:
+                if (constants[i].pvalue) {
+                    obj = PyString_FromString((char *) constants[i].pvalue);
+                } else {
+                    Py_INCREF(Py_None);
+                    obj = Py_None;
+                }
+                break;
+                case SWIG_PY_POINTER:
+                obj = SWIG_NewPointerObj(constants[i].pvalue, *(constants[i]).ptype,0);
+                break;
+                case SWIG_PY_BINARY:
+                obj = SWIG_NewPackedObj(constants[i].pvalue, constants[i].lvalue, *(constants[i].ptype));
+                break;
+                default:
+                obj = 0;
+                break;
+            }
+            if (obj) {
+                PyDict_SetItemString(d,constants[i].name,obj);
+                Py_DECREF(obj);
+            }
+        }
+    }
+    
+    /* -----------------------------------------------------------------------------*/
+    /* Fix SwigMethods to carry the callback ptrs when needed */
+    /* -----------------------------------------------------------------------------*/
+    
+    static void
+    SWIG_Python_FixMethods(PyMethodDef *methods,
+    swig_const_info *const_table,
+    swig_type_info **types,
+    swig_type_info **types_initial) {
+        size_t i;
+        for (i = 0; methods[i].ml_name; ++i) {
+            char *c = methods[i].ml_doc;
+            if (c && (c = strstr(c, "swig_ptr: "))) {
+                int j;
+                swig_const_info *ci = 0;
+                char *name = c + 10;
+                for (j = 0; const_table[j].type; j++) {
+                    if (strncmp(const_table[j].name, name, 
+                    strlen(const_table[j].name)) == 0) {
+                        ci = &(const_table[j]);
+                        break;
+                    }
+                }
+                if (ci) {
+                    size_t shift = (ci->ptype) - types;
+                    swig_type_info *ty = types_initial[shift];
+                    size_t ldoc = (c - methods[i].ml_doc);
+                    size_t lptr = strlen(ty->name)+2*sizeof(void*)+2;
+                    char *ndoc = (char*)malloc(ldoc + lptr + 10);
+                    char *buff = ndoc;
+                    void *ptr = (ci->type == SWIG_PY_POINTER) ? ci->pvalue: (void *)(ci->lvalue);
+                    strncpy(buff, methods[i].ml_doc, ldoc);
+                    buff += ldoc;
+                    strncpy(buff, "swig_ptr: ", 10);
+                    buff += 10;
+                    SWIG_PackVoidPtr(buff, ptr, ty->name, lptr);
+                    methods[i].ml_doc = ndoc;
+                }
+            }
+        }
+    }
+    
+    /* -----------------------------------------------------------------------------*
+     *  Initialize type list
+     * -----------------------------------------------------------------------------*/
+    
+#if PY_MAJOR_VERSION < 2
+    /* PyModule_AddObject function was introduced in Python 2.0.  The following function
+    is copied out of Python/modsupport.c in python version 2.3.4 */
+    static int
+    PyModule_AddObject(PyObject *m, char *name, PyObject *o)
+    {
+        PyObject *dict;
+        if (!PyModule_Check(m)) {
+            PyErr_SetString(PyExc_TypeError,
+            "PyModule_AddObject() needs module as first arg");
+            return -1;
+        }
+        if (!o) {
+            PyErr_SetString(PyExc_TypeError,
+            "PyModule_AddObject() needs non-NULL value");
+            return -1;
+        }
+        
+        dict = PyModule_GetDict(m);
+        if (dict == NULL) {
+            /* Internal error -- modules must have a dict! */
+            PyErr_Format(PyExc_SystemError, "module '%s' has no __dict__",
+            PyModule_GetName(m));
+            return -1;
+        }
+        if (PyDict_SetItemString(dict, name, o))
+        return -1;
+        Py_DECREF(o);
+        return 0;
+    }
+#endif
+    
+    static swig_type_info **
+    SWIG_Python_SetTypeListHandle(swig_type_info **type_list_handle) {
+        static PyMethodDef swig_empty_runtime_method_table[] = {
+            {
+                NULL, NULL, 0, NULL
+            } 
+        };/* Sentinel */
+        
+        PyObject *module = Py_InitModule((char*)"swig_runtime_data" SWIG_RUNTIME_VERSION,
+        swig_empty_runtime_method_table);
+        PyObject *pointer = PyCObject_FromVoidPtr((void *) type_list_handle, NULL);
+        if (pointer && module) {
+            PyModule_AddObject(module, (char*)"type_pointer" SWIG_TYPE_TABLE_NAME, pointer);
+        }
+        return type_list_handle;
+    } 
+    
+    static swig_type_info **
+    SWIG_Python_LookupTypePointer(swig_type_info **type_list_handle) {
+        swig_type_info **type_pointer;
+        
+        /* first check if module already created */
+        type_pointer = SWIG_Python_GetTypeListHandle();
+        if (type_pointer) {
+            return type_pointer;
+        } else {
+            /* create a new module and variable */
+            return SWIG_Python_SetTypeListHandle(type_list_handle);
+        }
+    }
+    
+#ifdef __cplusplus
+}
+#endif
+
+/* -----------------------------------------------------------------------------*
+ *  Partial Init method
+ * -----------------------------------------------------------------------------*/
+
+#ifdef SWIG_LINK_RUNTIME
+#ifdef __cplusplus
+extern "C"
+#endif
+SWIGEXPORT(void *) SWIG_ReturnGlobalTypeList(void *);
+#endif
+
+#ifdef __cplusplus
+extern "C"
+#endif
+SWIGEXPORT(void) SWIG_init(void) {
+    static PyObject *SWIG_globals = 0; 
+    static int       typeinit = 0;
+    PyObject *m, *d;
+    int       i;
+    if (!SWIG_globals) SWIG_globals = SWIG_newvarlink();
+    
+    /* Fix SwigMethods to carry the callback ptrs when needed */
+    SWIG_Python_FixMethods(SwigMethods, swig_const_table, swig_types, swig_types_initial);
+    
+    m = Py_InitModule((char *) SWIG_name, SwigMethods);
+    d = PyModule_GetDict(m);
+    
+    if (!typeinit) {
+#ifdef SWIG_LINK_RUNTIME
+        swig_type_list_handle = (swig_type_info **) SWIG_ReturnGlobalTypeList(swig_type_list_handle);
+#else
+#  ifndef SWIG_STATIC_RUNTIME
+        swig_type_list_handle = SWIG_Python_LookupTypePointer(swig_type_list_handle);
+#  endif
+#endif
+        for (i = 0; swig_types_initial[i]; i++) {
+            swig_types[i] = SWIG_TypeRegister(swig_types_initial[i]);
+        }
+        typeinit = 1;
+    }
+    SWIG_InstallConstants(d,swig_const_table);
+    
+    {
+        PyDict_SetItemString(d,"SCHED_RR", SWIG_From_int((int)(SCHED_RR))); 
+    }
+    {
+        PyDict_SetItemString(d,"SCHED_FIFO", SWIG_From_int((int)(SCHED_FIFO))); 
+    }
+}
+
diff --git a/VisionEgg/qtlowlevel.py b/VisionEgg/qtlowlevel.py
new file mode 100755
index 0000000..d910473
--- /dev/null
+++ b/VisionEgg/qtlowlevel.py
@@ -0,0 +1,191 @@
+import os, sys
+import ctypes
+
+if os.name=='nt':
+    QTMLClient = ctypes.CDLL(r'C:\Program Files\QuickTime\QTSystem\QTMLClient.dll')
+elif sys.platform.startswith('darwin'):
+    # There was once a functional Mac QuickTime implementation, but it
+    # used a combination of the Python stdlib's quicktime module and
+    # some C extensions based on the Carbon QuickTime interface. Given
+    # the inevitable long-term ultimate demise of Carbon, it would be
+    # foolish to spend much time on the Carbon implementation. On the
+    # other hand, the newer implementation will require someone who
+    # knows or learns the new QTKit bindings, which come included with PyObjC.
+    raise NotImplementedError('QuickTime support is not implemented for Mac OS X.')
+
+# OSErr SInt16 MacTypes.h
+# OSStatus SInt32 MacTypes.h
+# ItemCount UInt32 MacTypes.h
+# FourCharCode SInt32 MacTypes.h
+# OSType FourCharCode MacTypes.h
+# QTNewMoviePropertyElement struct Movies.h
+# QTPropertyClass OSType Movies.h
+# QTPropertyID OSType Movies.h
+# ByteCount UInt32 MacTypes.h
+# QTPropertyValuePtr void* Movies.h
+# Movie
+
+OSErr = ctypes.c_short
+OSStatus = ctypes.c_int
+ItemCount = ctypes.c_uint
+FourCharCode = ctypes.c_int
+OSType = FourCharCode
+QTPropertyClass = OSType
+QTPropertyID = OSType
+ByteCount = ctypes.c_uint
+QTPropertyValuePtr = ctypes.c_void_p
+QTVisualContextRef = ctypes.c_void_p
+class Rect(ctypes.Structure):
+    _fields_ = [("top",   ctypes.c_short),
+                ("left",  ctypes.c_short),
+                ("bottom",ctypes.c_short),
+                ("right", ctypes.c_short)]
+
+Movie = ctypes.c_void_p # not done
+
+class QTNewMoviePropertyElement(ctypes.Structure):
+    _fields_ = [("propClass",QTPropertyClass),
+                ("propID",QTPropertyID),
+                ("propValueSize",ByteCount),
+                ("propValueAddress",QTPropertyValuePtr),
+                ("propStatus",OSStatus)]
+
+def FOUR_CHAR_CODE(code):
+    assert isinstance(code,str)
+    assert len(code)==4
+    val = 0
+    for i in range(4):
+        c = code[i]
+        ordc = ord(c)
+        addval = ordc << (3-i)*8
+        #print '%d: %s %x %x'%(i,c,ordc,addval)
+        val += addval
+    #print '%x\n'%val
+    return val
+
+if 1:
+    kQTPropertyClass_DataLocation = FOUR_CHAR_CODE('dloc')
+    kQTDataLocationPropertyID_DataReference = FOUR_CHAR_CODE('dref') # DataReferenceRecord (for semantics of NewMovieFromDataRef)
+    kQTDataLocationPropertyID_CFStringNativePath = FOUR_CHAR_CODE('cfnp')
+    kQTDataLocationPropertyID_CFStringPosixPath = FOUR_CHAR_CODE('cfpp')
+    kQTDataLocationPropertyID_CFStringHFSPath = FOUR_CHAR_CODE('cfhp')
+    kQTDataLocationPropertyID_CFStringWindowsPath = FOUR_CHAR_CODE('cfwp')
+    kQTDataLocationPropertyID_CFURL = FOUR_CHAR_CODE('cfur')
+    kQTDataLocationPropertyID_QTDataHandler = FOUR_CHAR_CODE('qtdh') # for semantics of NewMovieFromStorageOffset
+    kQTDataLocationPropertyID_Scrap = FOUR_CHAR_CODE('scrp')
+    kQTDataLocationPropertyID_LegacyMovieResourceHandle = FOUR_CHAR_CODE('rezh') # QTNewMovieUserProcInfo * (for semantics of NewMovieFromHandle)
+    kQTDataLocationPropertyID_MovieUserProc = FOUR_CHAR_CODE('uspr') # for semantics of NewMovieFromUserProc
+    kQTDataLocationPropertyID_ResourceFork = FOUR_CHAR_CODE('rfrk') # for semantics of NewMovieFromFile
+    kQTDataLocationPropertyID_DataFork = FOUR_CHAR_CODE('dfrk') # for semantics of NewMovieFromDataFork64
+    kQTPropertyClass_Context      = FOUR_CHAR_CODE('ctxt') # Media Contexts
+    kQTContextPropertyID_AudioContext = FOUR_CHAR_CODE('audi')
+    kQTContextPropertyID_VisualContext = FOUR_CHAR_CODE('visu')
+    kQTPropertyClass_MovieResourceLocator = FOUR_CHAR_CODE('rloc')
+    kQTMovieResourceLocatorPropertyID_LegacyResID = FOUR_CHAR_CODE('rezi') # (input/result property)
+    kQTMovieResourceLocatorPropertyID_LegacyResName = FOUR_CHAR_CODE('rezn') # (result property)
+    kQTMovieResourceLocatorPropertyID_FileOffset = FOUR_CHAR_CODE('foff') # NewMovieFromDataFork[64]
+    kQTMovieResourceLocatorPropertyID_Callback = FOUR_CHAR_CODE('calb') # NewMovieFromUserProc(getProcrefcon)
+                                        # Uses kQTMovieDefaultDataRefPropertyID for default dataref
+    kQTPropertyClass_MovieInstantiation = FOUR_CHAR_CODE('mins')
+    kQTMovieInstantiationPropertyID_DontResolveDataRefs = FOUR_CHAR_CODE('rdrn')
+    kQTMovieInstantiationPropertyID_DontAskUnresolvedDataRefs = FOUR_CHAR_CODE('aurn')
+    kQTMovieInstantiationPropertyID_DontAutoAlternates = FOUR_CHAR_CODE('aaln')
+    kQTMovieInstantiationPropertyID_DontUpdateForeBackPointers = FOUR_CHAR_CODE('fbpn')
+    kQTMovieInstantiationPropertyID_AsyncOK = FOUR_CHAR_CODE('asok')
+    kQTMovieInstantiationPropertyID_IdleImportOK = FOUR_CHAR_CODE('imok')
+    kQTMovieInstantiationPropertyID_DontAutoUpdateClock = FOUR_CHAR_CODE('aucl')
+    kQTMovieInstantiationPropertyID_ResultDataLocationChanged = FOUR_CHAR_CODE('dlch') # (result property)
+    kQTPropertyClass_NewMovieProperty = FOUR_CHAR_CODE('mprp')
+    kQTNewMoviePropertyID_DefaultDataRef = FOUR_CHAR_CODE('ddrf') # DataReferenceRecord
+    kQTNewMoviePropertyID_Active  = FOUR_CHAR_CODE('actv')
+    kQTNewMoviePropertyID_DontInteractWithUser = FOUR_CHAR_CODE('intn')
+    
+class qtlowlevelError(RuntimeError):
+    pass
+
+noErr = 0
+paramErr = -50
+movieToolboxUninitialized = -2020
+def GetErrorString(value):
+    if value == paramErr:
+        return 'paramErr'
+    elif value == movieToolboxUninitialized:
+        return 'movieToolboxUninitialized'
+    elif value != noErr:
+        return 'error value: %d'%value
+    else:
+        return 'noErr'
+    
+def CheckOSStatus(value):
+    if value != noErr:
+        raise qtlowlevelError(GetErrorString(value))
+    return value
+
+NewMovieFromFile = QTMLClient.NewMovieFromFile
+
+NewMovieFromProperties = QTMLClient.NewMovieFromProperties
+#NewMovieFromProperties.restype = OSStatus
+NewMovieFromProperties.restype = CheckOSStatus
+NewMovieFromProperties.argtypes = [ItemCount,
+                                   ctypes.POINTER(QTNewMoviePropertyElement),
+                                   ItemCount,
+                                   ctypes.POINTER(QTNewMoviePropertyElement),
+                                   ctypes.POINTER(Movie)]
+
+InitializeQTML = QTMLClient.InitializeQTML
+EnterMovies = QTMLClient.EnterMovies
+
+QTGetCFConstant = QTMLClient.QTGetCFConstant
+
+GetMovieBox = QTMLClient.GetMovieBox
+GetMovieBox.argtypes = [Movie,
+                        ctypes.POINTER(Rect)]
+SetMovieBox = QTMLClient.SetMovieBox
+SetMovieBox.argtypes = [Movie,
+                        ctypes.POINTER(Rect)]
+
+StartMovie = QTMLClient.StartMovie
+StartMovie.argtypes = [Movie]
+
+MoviesTask = QTMLClient.MoviesTask
+MoviesTask.argtypes = [Movie,ctypes.c_long]
+
+IsMovieDone = QTMLClient.IsMovieDone
+IsMovieDone.argtypes = [Movie]
+
+GoToBeginningOfMovie = QTMLClient.GoToBeginningOfMovie
+GoToBeginningOfMovie.argtypes = [Movie]
+
+FSSpec = ctypes.c_void_p
+CFStringRef = ctypes.c_void_p
+CFStringEncoding = ctypes.c_uint
+CFAllocatorRef = ctypes.c_void_p
+CFIndex = ctypes.c_int
+if 1:
+    CFStringCreateWithCharacters = QTMLClient.CFStringCreateWithCharacters
+    CFStringCreateWithCharacters.restype = CFStringRef
+    CFStringCreateWithCharacters.argtypes = [CFAllocatorRef,
+                                             ctypes.c_wchar_p,
+                                             CFIndex]
+    
+    CFStringCreateWithCString = QTMLClient.CFStringCreateWithCString
+    CFStringCreateWithCString.restype = CFStringRef
+    CFStringCreateWithCString.argtypes = [CFAllocatorRef,
+                                          ctypes.c_char_p,
+                                          CFStringEncoding]
+
+    CFStringGetCString = QTMLClient.CFStringGetCString
+    CFStringGetCStringPtr = QTMLClient.CFStringGetCStringPtr
+    CFStringGetCStringPtr.restype = ctypes.c_char_p
+
+    NativePathNameToFSSpec = QTMLClient.NativePathNameToFSSpec
+    NativePathNameToFSSpec.restype = OSErr
+    NativePathNameToFSSpec.argtypes = [ctypes.c_char_p,
+                                       ctypes.POINTER(FSSpec),
+                                       ctypes.c_long]
+
+    OpenMovieFile = QTMLClient.OpenMovieFile
+    
+if 1:
+    kCFAllocatorDefault = 0
+    kCFStringEncodingMacRoman = 0 # CoreFoundation/CFString.h
diff --git a/VisionEgg/qtmovie.py b/VisionEgg/qtmovie.py
new file mode 100755
index 0000000..819e338
--- /dev/null
+++ b/VisionEgg/qtmovie.py
@@ -0,0 +1,93 @@
+"""high level QuickTime Movie wrapper"""
+import qtlowlevel
+import ctypes
+
+qtlowlevel.InitializeQTML(0)
+qtlowlevel.EnterMovies()
+
+def new_movie_from_filename(filename, MAX_PATH=255):
+    """create a Movie from filename"""
+    movieProps = (qtlowlevel.QTNewMoviePropertyElement * 5)()
+    filename = unicode(filename)
+
+    movieFilePathRef = qtlowlevel.CFStringRef()
+    movieFilePathRef.value = qtlowlevel.CFStringCreateWithCharacters(qtlowlevel.kCFAllocatorDefault,
+                                                                     filename,
+                                                                     len(filename))
+
+    moviePropCount = 0
+
+    movieProps[moviePropCount].propClass = qtlowlevel.kQTPropertyClass_DataLocation
+    movieProps[moviePropCount].propID = qtlowlevel.kQTDataLocationPropertyID_CFStringWindowsPath
+    movieProps[moviePropCount].propValueSize = ctypes.sizeof(ctypes.c_void_p)
+    movieProps[moviePropCount].propValueAddress = ctypes.cast(ctypes.byref(movieFilePathRef),ctypes.c_void_p)
+    movieProps[moviePropCount].propStatus = 0
+
+    moviePropCount += 1
+
+    boolTrue = ctypes.c_ubyte(1)
+    movieProps[moviePropCount].propClass = qtlowlevel.kQTPropertyClass_MovieInstantiation
+    movieProps[moviePropCount].propID = qtlowlevel.kQTMovieInstantiationPropertyID_DontAskUnresolvedDataRefs
+    movieProps[moviePropCount].propValueSize = ctypes.sizeof(boolTrue)
+    movieProps[moviePropCount].propValueAddress = ctypes.cast(ctypes.pointer(boolTrue),ctypes.c_void_p)
+    movieProps[moviePropCount].propStatus = 0
+
+    moviePropCount += 1
+
+    movieProps[moviePropCount].propClass = qtlowlevel.kQTPropertyClass_NewMovieProperty
+    movieProps[moviePropCount].propID = qtlowlevel.kQTNewMoviePropertyID_Active
+    movieProps[moviePropCount].propValueSize = ctypes.sizeof(boolTrue)
+    movieProps[moviePropCount].propValueAddress = ctypes.cast(ctypes.pointer(boolTrue),ctypes.c_void_p)
+    movieProps[moviePropCount].propStatus = 0
+
+    moviePropCount += 1
+
+    movieProps[moviePropCount].propClass = qtlowlevel.kQTPropertyClass_NewMovieProperty
+    movieProps[moviePropCount].propID = qtlowlevel.kQTNewMoviePropertyID_DontInteractWithUser
+    movieProps[moviePropCount].propValueSize = ctypes.sizeof(boolTrue)
+    movieProps[moviePropCount].propValueAddress = ctypes.cast(ctypes.pointer(boolTrue),ctypes.c_void_p)
+    movieProps[moviePropCount].propStatus = 0
+
+    moviePropCount += 1
+
+    theMovie = qtlowlevel.Movie()
+    qtlowlevel.NewMovieFromProperties( moviePropCount, movieProps, 0, None, ctypes.byref(theMovie))
+    return Movie(theMovie)
+
+class Rect:
+    def __init__(self,top=0,left=0,bottom=0,right=0):
+        self.top = top
+        self.left = left
+        self.bottom = bottom
+        self.right = right
+
+class Movie:
+    """An encapsulated QuickTime Movie"""
+    def __init__(self,theMovie):
+        self.theMovie = theMovie
+    def GetMovieBox(self):
+        movieBounds = qtlowlevel.Rect()
+        qtlowlevel.GetMovieBox(self.theMovie, ctypes.byref(movieBounds))
+        return Rect(top=movieBounds.top,
+                    left=movieBounds.left,
+                    bottom=movieBounds.bottom,
+                    right=movieBounds.right)
+    
+    def SetMovieBox(self,bounds):
+        if not isinstance(bounds,Rect):
+            raise ValueError('bounds argument must be instance of VisionEgg.qtmovie.Rect')
+        b = qtlowlevel.Rect()
+        (b.top, b.left, b.bottom, b.right) = (bounds.top, bounds.left,
+                                              bounds.bottom, bounds.right)
+        qtlowlevel.SetMovieBox(self.theMovie, ctypes.byref(b))
+    def StartMovie(self):
+        qtlowlevel.StartMovie(self.theMovie)
+
+    def MoviesTask(self,value):
+        qtlowlevel.MoviesTask(self.theMovie, value)
+
+    def IsMovieDone(self):
+        return qtlowlevel.IsMovieDone(self.theMovie)
+
+    def GoToBeginningOfMovie(self):
+        qtlowlevel.GoToBeginningOfMovie(self.theMovie)
diff --git a/VisionEgg/test_Core.py b/VisionEgg/test_Core.py
new file mode 100644
index 0000000..aaff151
--- /dev/null
+++ b/VisionEgg/test_Core.py
@@ -0,0 +1,8 @@
+from VisionEgg.Core import FrameTimer
+
+def test_FrameTimer():
+    ft = FrameTimer()
+    ft.tick()
+    ft.tick()
+    result = ft.get_longest_frame_duration_sec()
+
diff --git a/VisionEgg/vegl.h b/VisionEgg/vegl.h
new file mode 100644
index 0000000..75fdfe9
--- /dev/null
+++ b/VisionEgg/vegl.h
@@ -0,0 +1,9 @@
+#if defined(MS_WINDOWS)
+#  include <windows.h>
+#endif
+
+#if defined(__APPLE__)
+#  include <OpenGL/gl.h>
+#else
+#  include <GL/gl.h>
+#endif
diff --git a/VisionEgg/win32_getrefresh.c b/VisionEgg/win32_getrefresh.c
new file mode 100644
index 0000000..b56c803
--- /dev/null
+++ b/VisionEgg/win32_getrefresh.c
@@ -0,0 +1,16 @@
+#include <WINDOWS.H>
+
+#ifndef ENUM_CURRENT_SETTINGS 
+#define ENUM_CURRENT_SETTINGS       ((DWORD)-1) 
+#endif
+
+double getrefresh() {
+  DEVMODE DevMode;
+
+  DevMode.dmDriverExtra = 0;
+  if (EnumDisplaySettings(NULL,ENUM_CURRENT_SETTINGS,&DevMode)) {
+    return (double)DevMode.dmDisplayFrequency;
+  } else {
+    return 0;
+  }
+}
diff --git a/VisionEgg/win32_getrefresh.py b/VisionEgg/win32_getrefresh.py
new file mode 100644
index 0000000..689e1a4
--- /dev/null
+++ b/VisionEgg/win32_getrefresh.py
@@ -0,0 +1,41 @@
+# This file was created automatically by SWIG.
+# Don't modify this file, modify the SWIG interface instead.
+# This file is compatible with both classic and new-style classes.
+
+import _win32_getrefresh
+
+def _swig_setattr_nondynamic(self,class_type,name,value,static=1):
+    if (name == "this"):
+        if isinstance(value, class_type):
+            self.__dict__[name] = value.this
+            if hasattr(value,"thisown"): self.__dict__["thisown"] = value.thisown
+            del value.thisown
+            return
+    method = class_type.__swig_setmethods__.get(name,None)
+    if method: return method(self,value)
+    if (not static) or hasattr(self,name) or (name == "thisown"):
+        self.__dict__[name] = value
+    else:
+        raise AttributeError("You cannot add attributes to %s" % self)
+
+def _swig_setattr(self,class_type,name,value):
+    return _swig_setattr_nondynamic(self,class_type,name,value,0)
+
+def _swig_getattr(self,class_type,name):
+    method = class_type.__swig_getmethods__.get(name,None)
+    if method: return method(self)
+    raise AttributeError,name
+
+import types
+try:
+    _object = types.ObjectType
+    _newclass = 1
+except AttributeError:
+    class _object : pass
+    _newclass = 0
+del types
+
+
+
+getrefresh = _win32_getrefresh.getrefresh
+
diff --git a/VisionEgg/win32_getrefresh_wrap.c b/VisionEgg/win32_getrefresh_wrap.c
new file mode 100644
index 0000000..8c4e5d4
--- /dev/null
+++ b/VisionEgg/win32_getrefresh_wrap.c
@@ -0,0 +1,1730 @@
+/* ----------------------------------------------------------------------------
+ * This file was automatically generated by SWIG (http://www.swig.org).
+ * Version 1.3.24
+ * 
+ * This file is not intended to be easily readable and contains a number of 
+ * coding conventions designed to improve portability and efficiency. Do not make
+ * changes to this file unless you know what you are doing--modify the SWIG 
+ * interface file instead. 
+ * ----------------------------------------------------------------------------- */
+
+#define SWIGPYTHON
+
+#ifndef SWIG_TEMPLATE_DISAMBIGUATOR
+#  if defined(__SUNPRO_CC) 
+#    define SWIG_TEMPLATE_DISAMBIGUATOR template
+#  else
+#    define SWIG_TEMPLATE_DISAMBIGUATOR 
+#  endif
+#endif
+
+
+#include <Python.h>
+
+/***********************************************************************
+ * swigrun.swg
+ *
+ *     This file contains generic CAPI SWIG runtime support for pointer
+ *     type checking.
+ *
+ ************************************************************************/
+
+/* This should only be incremented when either the layout of swig_type_info changes,
+   or for whatever reason, the runtime changes incompatibly */
+#define SWIG_RUNTIME_VERSION "1"
+
+/* define SWIG_TYPE_TABLE_NAME as "SWIG_TYPE_TABLE" */
+#ifdef SWIG_TYPE_TABLE
+#define SWIG_QUOTE_STRING(x) #x
+#define SWIG_EXPAND_AND_QUOTE_STRING(x) SWIG_QUOTE_STRING(x)
+#define SWIG_TYPE_TABLE_NAME SWIG_EXPAND_AND_QUOTE_STRING(SWIG_TYPE_TABLE)
+#else
+#define SWIG_TYPE_TABLE_NAME
+#endif
+
+#include <string.h>
+
+#ifndef SWIGINLINE
+#if defined(__cplusplus) || (defined(__GNUC__) && !defined(__STRICT_ANSI__))
+#  define SWIGINLINE inline
+#else
+#  define SWIGINLINE
+#endif
+#endif
+
+/*
+  You can use the SWIGRUNTIME and SWIGRUNTIMEINLINE macros for
+  creating a static or dynamic library from the swig runtime code.
+  In 99.9% of the cases, swig just needs to declare them as 'static'.
+  
+  But only do this if is strictly necessary, ie, if you have problems
+  with your compiler or so.
+*/
+#ifndef SWIGRUNTIME
+#define SWIGRUNTIME static
+#endif
+#ifndef SWIGRUNTIMEINLINE
+#define SWIGRUNTIMEINLINE SWIGRUNTIME SWIGINLINE
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef void *(*swig_converter_func)(void *);
+typedef struct swig_type_info *(*swig_dycast_func)(void **);
+
+typedef struct swig_type_info {
+  const char             *name;
+  swig_converter_func     converter;
+  const char             *str;
+  void                   *clientdata;
+  swig_dycast_func        dcast;
+  struct swig_type_info  *next;
+  struct swig_type_info  *prev;
+} swig_type_info;
+
+/* 
+  Compare two type names skipping the space characters, therefore
+  "char*" == "char *" and "Class<int>" == "Class<int >", etc.
+
+  Return 0 when the two name types are equivalent, as in
+  strncmp, but skipping ' '.
+*/
+SWIGRUNTIME int
+SWIG_TypeNameComp(const char *f1, const char *l1,
+		  const char *f2, const char *l2) {
+  for (;(f1 != l1) && (f2 != l2); ++f1, ++f2) {
+    while ((*f1 == ' ') && (f1 != l1)) ++f1;
+    while ((*f2 == ' ') && (f2 != l2)) ++f2;
+    if (*f1 != *f2) return *f1 - *f2;
+  }
+  return (l1 - f1) - (l2 - f2);
+}
+
+/*
+  Check type equivalence in a name list like <name1>|<name2>|...
+*/
+SWIGRUNTIME int
+SWIG_TypeEquiv(const char *nb, const char *tb) {
+  int equiv = 0;
+  const char* te = tb + strlen(tb);
+  const char* ne = nb;
+  while (!equiv && *ne) {
+    for (nb = ne; *ne; ++ne) {
+      if (*ne == '|') break;
+    }
+    equiv = SWIG_TypeNameComp(nb, ne, tb, te) == 0;
+    if (*ne) ++ne;
+  }
+  return equiv;
+}
+
+/*
+  Register a type mapping with the type-checking
+*/
+SWIGRUNTIME swig_type_info *
+SWIG_TypeRegisterTL(swig_type_info **tl, swig_type_info *ti) {
+  swig_type_info *tc, *head, *ret, *next;
+  /* Check to see if this type has already been registered */
+  tc = *tl;
+  while (tc) {
+    /* check simple type equivalence */
+    int typeequiv = (strcmp(tc->name, ti->name) == 0);   
+    /* check full type equivalence, resolving typedefs */
+    if (!typeequiv) {
+      /* only if tc is not a typedef (no '|' on it) */
+      if (tc->str && ti->str && !strstr(tc->str,"|")) {
+	typeequiv = SWIG_TypeEquiv(ti->str,tc->str);
+      }
+    }
+    if (typeequiv) {
+      /* Already exists in the table.  Just add additional types to the list */
+      if (ti->clientdata) tc->clientdata = ti->clientdata;
+      head = tc;
+      next = tc->next;
+      goto l1;
+    }
+    tc = tc->prev;
+  }
+  head = ti;
+  next = 0;
+
+  /* Place in list */
+  ti->prev = *tl;
+  *tl = ti;
+
+  /* Build linked lists */
+  l1:
+  ret = head;
+  tc = ti + 1;
+  /* Patch up the rest of the links */
+  while (tc->name) {
+    head->next = tc;
+    tc->prev = head;
+    head = tc;
+    tc++;
+  }
+  if (next) next->prev = head;
+  head->next = next;
+
+  return ret;
+}
+
+/*
+  Check the typename
+*/
+SWIGRUNTIME swig_type_info *
+SWIG_TypeCheck(const char *c, swig_type_info *ty) {
+  swig_type_info *s;
+  if (!ty) return 0;        /* Void pointer */
+  s = ty->next;             /* First element always just a name */
+  do {
+    if (strcmp(s->name,c) == 0) {
+      if (s == ty->next) return s;
+      /* Move s to the top of the linked list */
+      s->prev->next = s->next;
+      if (s->next) {
+        s->next->prev = s->prev;
+      }
+      /* Insert s as second element in the list */
+      s->next = ty->next;
+      if (ty->next) ty->next->prev = s;
+      ty->next = s;
+      s->prev = ty;
+      return s;
+    }
+    s = s->next;
+  } while (s && (s != ty->next));
+  return 0;
+}
+
+/*
+  Cast a pointer up an inheritance hierarchy
+*/
+SWIGRUNTIMEINLINE void *
+SWIG_TypeCast(swig_type_info *ty, void *ptr) {
+  return ((!ty) || (!ty->converter)) ? ptr : (*ty->converter)(ptr);
+}
+
+/* 
+   Dynamic pointer casting. Down an inheritance hierarchy
+*/
+SWIGRUNTIME swig_type_info *
+SWIG_TypeDynamicCast(swig_type_info *ty, void **ptr) {
+  swig_type_info *lastty = ty;
+  if (!ty || !ty->dcast) return ty;
+  while (ty && (ty->dcast)) {
+    ty = (*ty->dcast)(ptr);
+    if (ty) lastty = ty;
+  }
+  return lastty;
+}
+
+/*
+  Return the name associated with this type
+*/
+SWIGRUNTIMEINLINE const char *
+SWIG_TypeName(const swig_type_info *ty) {
+  return ty->name;
+}
+
+/*
+  Return the pretty name associated with this type,
+  that is an unmangled type name in a form presentable to the user.
+*/
+SWIGRUNTIME const char *
+SWIG_TypePrettyName(const swig_type_info *type) {
+  /* The "str" field contains the equivalent pretty names of the
+     type, separated by vertical-bar characters.  We choose
+     to print the last name, as it is often (?) the most
+     specific. */
+  if (type->str != NULL) {
+    const char *last_name = type->str;
+    const char *s;
+    for (s = type->str; *s; s++)
+      if (*s == '|') last_name = s+1;
+    return last_name;
+  }
+  else
+    return type->name;
+}
+
+/*
+  Search for a swig_type_info structure
+*/
+SWIGRUNTIME swig_type_info *
+SWIG_TypeQueryTL(swig_type_info *tl, const char *name) {
+  swig_type_info *ty = tl;
+  while (ty) {
+    if (ty->str && (SWIG_TypeEquiv(ty->str,name))) return ty;
+    if (ty->name && (strcmp(name,ty->name) == 0)) return ty;
+    ty = ty->prev;
+  }
+  return 0;
+}
+
+/* 
+   Set the clientdata field for a type
+*/
+SWIGRUNTIME void
+SWIG_TypeClientDataTL(swig_type_info *tl, swig_type_info *ti, void *clientdata) {
+  swig_type_info *tc, *equiv;
+  if (ti->clientdata) return;
+  /* if (ti->clientdata == clientdata) return; */
+  ti->clientdata = clientdata;
+  equiv = ti->next;
+  while (equiv) {
+    if (!equiv->converter) {
+      tc = tl;
+      while (tc) {
+        if ((strcmp(tc->name, equiv->name) == 0))
+          SWIG_TypeClientDataTL(tl,tc,clientdata);
+        tc = tc->prev;
+      }
+    }
+    equiv = equiv->next;
+  }
+}
+
+/* 
+   Pack binary data into a string
+*/
+SWIGRUNTIME char *
+SWIG_PackData(char *c, void *ptr, size_t sz) {
+  static char hex[17] = "0123456789abcdef";
+  unsigned char *u = (unsigned char *) ptr;
+  const unsigned char *eu =  u + sz;
+  register unsigned char uu;
+  for (; u != eu; ++u) {
+    uu = *u;
+    *(c++) = hex[(uu & 0xf0) >> 4];
+    *(c++) = hex[uu & 0xf];
+  }
+  return c;
+}
+
+/* 
+   Unpack binary data from a string
+*/
+SWIGRUNTIME const char *
+SWIG_UnpackData(const char *c, void *ptr, size_t sz) {
+  register unsigned char *u = (unsigned char *) ptr;
+  register const unsigned char *eu =  u + sz;
+  for (; u != eu; ++u) {
+    register int d = *(c++);
+    register unsigned char uu = 0;
+    if ((d >= '0') && (d <= '9'))
+      uu = ((d - '0') << 4);
+    else if ((d >= 'a') && (d <= 'f'))
+      uu = ((d - ('a'-10)) << 4);
+    else 
+      return (char *) 0;
+    d = *(c++);
+    if ((d >= '0') && (d <= '9'))
+      uu |= (d - '0');
+    else if ((d >= 'a') && (d <= 'f'))
+      uu |= (d - ('a'-10));
+    else 
+      return (char *) 0;
+    *u = uu;
+  }
+  return c;
+}
+
+/*
+  This function will propagate the clientdata field of type to any new
+  swig_type_info structures that have been added into the list of
+  equivalent types.  It is like calling SWIG_TypeClientData(type,
+  clientdata) a second time.
+*/
+SWIGRUNTIME void
+SWIG_PropagateClientDataTL(swig_type_info *tl, swig_type_info *type) {
+  swig_type_info *equiv = type->next;
+  swig_type_info *tc;
+  if (!type->clientdata) return;
+  while (equiv) {
+    if (!equiv->converter) {
+      tc = tl;
+      while (tc) {
+        if ((strcmp(tc->name, equiv->name) == 0) && !tc->clientdata)
+          SWIG_TypeClientDataTL(tl,tc, type->clientdata);
+        tc = tc->prev;
+      }
+    }
+    equiv = equiv->next;
+  }
+}
+
+/* 
+   Pack 'void *' into a string buffer.
+*/
+SWIGRUNTIME char *
+SWIG_PackVoidPtr(char *buff, void *ptr, const char *name, size_t bsz) {
+  char *r = buff;
+  if ((2*sizeof(void *) + 2) > bsz) return 0;
+  *(r++) = '_';
+  r = SWIG_PackData(r,&ptr,sizeof(void *));
+  if (strlen(name) + 1 > (bsz - (r - buff))) return 0;
+  strcpy(r,name);
+  return buff;
+}
+
+SWIGRUNTIME const char *
+SWIG_UnpackVoidPtr(const char *c, void **ptr, const char *name) {
+  if (*c != '_') {
+    if (strcmp(c,"NULL") == 0) {
+      *ptr = (void *) 0;
+      return name;
+    } else {
+      return 0;
+    }
+  }
+  return SWIG_UnpackData(++c,ptr,sizeof(void *));
+}
+
+SWIGRUNTIME char *
+SWIG_PackDataName(char *buff, void *ptr, size_t sz, const char *name, size_t bsz) {
+  char *r = buff;
+  size_t lname = (name ? strlen(name) : 0);
+  if ((2*sz + 2 + lname) > bsz) return 0;
+  *(r++) = '_';
+  r = SWIG_PackData(r,ptr,sz);
+  if (lname) {
+    strncpy(r,name,lname+1);
+  } else {
+    *r = 0;
+  }
+  return buff;
+}
+
+SWIGRUNTIME const char *
+SWIG_UnpackDataName(const char *c, void *ptr, size_t sz, const char *name) {
+  if (*c != '_') {
+    if (strcmp(c,"NULL") == 0) {
+      memset(ptr,0,sz);
+      return name;
+    } else {
+      return 0;
+    }
+  }
+  return SWIG_UnpackData(++c,ptr,sz);
+}
+
+#ifdef __cplusplus
+}
+#endif
+
+/***********************************************************************
+ * common.swg
+ *
+ *     This file contains generic SWIG runtime support for pointer
+ *     type checking as well as a few commonly used macros to control
+ *     external linkage.
+ *
+ * Author : David Beazley (beazley at cs.uchicago.edu)
+ *
+ * Copyright (c) 1999-2000, The University of Chicago
+ * 
+ * This file may be freely redistributed without license or fee provided
+ * this copyright message remains intact.
+ ************************************************************************/
+
+
+#if defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__)
+#  if !defined(STATIC_LINKED)
+#    define SWIGEXPORT(a) __declspec(dllexport) a
+#  else
+#    define SWIGEXPORT(a) a
+#  endif
+#else
+#  define SWIGEXPORT(a) a
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/*************************************************************************/
+
+
+/* The static type info list */
+
+static swig_type_info *swig_type_list = 0;
+static swig_type_info **swig_type_list_handle = &swig_type_list;
+  
+
+/* Register a type mapping with the type-checking */
+static swig_type_info *
+SWIG_TypeRegister(swig_type_info *ti) {
+  return SWIG_TypeRegisterTL(swig_type_list_handle, ti);
+}
+
+/* Search for a swig_type_info structure */
+static swig_type_info *
+SWIG_TypeQuery(const char *name) {
+  return SWIG_TypeQueryTL(*swig_type_list_handle, name);
+}
+
+/* Set the clientdata field for a type */
+static void
+SWIG_TypeClientData(swig_type_info *ti, void *clientdata) {
+  SWIG_TypeClientDataTL(*swig_type_list_handle, ti, clientdata);
+}
+
+/* This function will propagate the clientdata field of type to
+* any new swig_type_info structures that have been added into the list
+* of equivalent types.  It is like calling
+* SWIG_TypeClientData(type, clientdata) a second time.
+*/
+static void
+SWIG_PropagateClientData(swig_type_info *type) {
+  SWIG_PropagateClientDataTL(*swig_type_list_handle, type);
+}
+
+#ifdef __cplusplus
+}
+#endif
+
+/* -----------------------------------------------------------------------------
+ * SWIG API. Portion that goes into the runtime
+ * ----------------------------------------------------------------------------- */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* -----------------------------------------------------------------------------
+ * for internal method declarations
+ * ----------------------------------------------------------------------------- */
+
+#ifndef SWIGINTERN
+#define SWIGINTERN static 
+#endif
+
+#ifndef SWIGINTERNSHORT
+#ifdef __cplusplus
+#define SWIGINTERNSHORT static inline 
+#else /* C case */
+#define SWIGINTERNSHORT static 
+#endif /* __cplusplus */
+#endif
+
+
+/*
+  Exception handling in wrappers
+*/
+#define SWIG_fail                goto fail
+#define SWIG_arg_fail(arg)       SWIG_Python_ArgFail(arg)
+#define SWIG_append_errmsg(msg)   SWIG_Python_AddErrMesg(msg,0)
+#define SWIG_preppend_errmsg(msg) SWIG_Python_AddErrMesg(msg,1)
+#define SWIG_type_error(type,obj) SWIG_Python_TypeError(type,obj)
+#define SWIG_null_ref(type)       SWIG_Python_NullRef(type)
+
+/*
+  Contract support
+*/
+#define SWIG_contract_assert(expr, msg) \
+ if (!(expr)) { PyErr_SetString(PyExc_RuntimeError, (char *) msg ); goto fail; } else
+
+/* -----------------------------------------------------------------------------
+ * Constant declarations
+ * ----------------------------------------------------------------------------- */
+
+/* Constant Types */
+#define SWIG_PY_INT     1
+#define SWIG_PY_FLOAT   2
+#define SWIG_PY_STRING  3
+#define SWIG_PY_POINTER 4
+#define SWIG_PY_BINARY  5
+
+/* Constant information structure */
+typedef struct swig_const_info {
+    int type;
+    char *name;
+    long lvalue;
+    double dvalue;
+    void   *pvalue;
+    swig_type_info **ptype;
+} swig_const_info;
+
+
+/* -----------------------------------------------------------------------------
+ * Alloc. memory flags
+ * ----------------------------------------------------------------------------- */
+#define SWIG_OLDOBJ  1
+#define SWIG_NEWOBJ  SWIG_OLDOBJ + 1
+#define SWIG_PYSTR   SWIG_NEWOBJ + 1
+
+#ifdef __cplusplus
+}
+#endif
+
+
+/***********************************************************************
+ * pyrun.swg
+ *
+ *     This file contains the runtime support for Python modules
+ *     and includes code for managing global variables and pointer
+ *     type checking.
+ *
+ * Author : David Beazley (beazley at cs.uchicago.edu)
+ ************************************************************************/
+
+/* Common SWIG API */
+#define SWIG_ConvertPtr(obj, pp, type, flags)    SWIG_Python_ConvertPtr(obj, pp, type, flags)
+#define SWIG_NewPointerObj(p, type, flags)       SWIG_Python_NewPointerObj(p, type, flags)
+#define SWIG_MustGetPtr(p, type, argnum, flags)  SWIG_Python_MustGetPtr(p, type, argnum, flags)
+ 
+
+/* Python-specific SWIG API */
+#define SWIG_ConvertPacked(obj, ptr, sz, ty, flags)   SWIG_Python_ConvertPacked(obj, ptr, sz, ty, flags)
+#define SWIG_NewPackedObj(ptr, sz, type)              SWIG_Python_NewPackedObj(ptr, sz, type)
+
+
+/* -----------------------------------------------------------------------------
+ * Pointer declarations
+ * ----------------------------------------------------------------------------- */
+/*
+  Use SWIG_NO_COBJECT_TYPES to force the use of strings to represent
+  C/C++ pointers in the python side. Very useful for debugging, but
+  not always safe.
+*/
+#if !defined(SWIG_NO_COBJECT_TYPES) && !defined(SWIG_COBJECT_TYPES)
+#  define SWIG_COBJECT_TYPES
+#endif
+
+/* Flags for pointer conversion */
+#define SWIG_POINTER_EXCEPTION     0x1
+#define SWIG_POINTER_DISOWN        0x2
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* -----------------------------------------------------------------------------
+ * Create a new pointer string 
+ * ----------------------------------------------------------------------------- */
+
+#ifndef SWIG_BUFFER_SIZE
+#define SWIG_BUFFER_SIZE 1024
+#endif
+
+#if defined(SWIG_COBJECT_TYPES)
+#if !defined(SWIG_COBJECT_PYTHON)
+/* -----------------------------------------------------------------------------
+ * Implements a simple Swig Object type, and use it instead of PyCObject
+ * ----------------------------------------------------------------------------- */
+
+typedef struct {
+  PyObject_HEAD
+  void *ptr;
+  const char *desc;
+} PySwigObject;
+
+/* Declarations for objects of type PySwigObject */
+
+SWIGRUNTIME int
+PySwigObject_print(PySwigObject *v, FILE *fp, int flags)
+{
+  char result[SWIG_BUFFER_SIZE];
+  if (SWIG_PackVoidPtr(result, v->ptr, v->desc, sizeof(result))) {
+    fputs("<Swig Object at ", fp); fputs(result, fp); fputs(">", fp);
+    return 0; 
+  } else {
+    return 1; 
+  }
+}
+  
+SWIGRUNTIME PyObject *
+PySwigObject_repr(PySwigObject *v)
+{
+  char result[SWIG_BUFFER_SIZE];
+  return SWIG_PackVoidPtr(result, v->ptr, v->desc, sizeof(result)) ?
+    PyString_FromFormat("<Swig Object at %s>", result) : 0;
+}
+
+SWIGRUNTIME PyObject *
+PySwigObject_str(PySwigObject *v)
+{
+  char result[SWIG_BUFFER_SIZE];
+  return SWIG_PackVoidPtr(result, v->ptr, v->desc, sizeof(result)) ?
+    PyString_FromString(result) : 0;
+}
+
+SWIGRUNTIME PyObject *
+PySwigObject_long(PySwigObject *v)
+{
+  return PyLong_FromUnsignedLong((unsigned long) v->ptr);
+}
+
+SWIGRUNTIME PyObject *
+PySwigObject_oct(PySwigObject *v)
+{
+  char buf[100];
+  unsigned long x = (unsigned long)v->ptr;
+  if (x == 0)
+    strcpy(buf, "0");
+  else
+    PyOS_snprintf(buf, sizeof(buf), "0%lo", x);
+  return PyString_FromString(buf);
+}
+
+SWIGRUNTIME PyObject *
+PySwigObject_hex(PySwigObject *v)
+{
+  char buf[100];
+  PyOS_snprintf(buf, sizeof(buf), "0x%lx", (unsigned long)v->ptr);
+  return PyString_FromString(buf);
+}
+
+SWIGRUNTIME int
+PySwigObject_compare(PySwigObject *v, PySwigObject *w)
+{
+  int c = strcmp(v->desc, w->desc);
+  if (c) {
+    return c;
+  } else {
+    void *i = v->ptr;
+    void *j = w->ptr;
+    return (i < j) ? -1 : (i > j) ? 1 : 0;
+  }
+}
+
+SWIGRUNTIME void
+PySwigObject_dealloc(PySwigObject *self)
+{
+  PyObject_DEL(self);
+}
+
+SWIGRUNTIME PyTypeObject*
+PySwigObject_GetType() {
+  static char PySwigObject_Type__doc__[] = 
+    "Swig object carries a C/C++ instance pointer";
+  
+  static PyNumberMethods PySwigObject_as_number = {
+    (binaryfunc)0, /*nb_add*/
+    (binaryfunc)0, /*nb_subtract*/
+    (binaryfunc)0, /*nb_multiply*/
+    (binaryfunc)0, /*nb_divide*/
+    (binaryfunc)0, /*nb_remainder*/
+    (binaryfunc)0, /*nb_divmod*/
+    (ternaryfunc)0,/*nb_power*/
+    (unaryfunc)0,  /*nb_negative*/
+    (unaryfunc)0,  /*nb_positive*/
+    (unaryfunc)0,  /*nb_absolute*/
+    (inquiry)0,    /*nb_nonzero*/
+    0,		   /*nb_invert*/
+    0,		   /*nb_lshift*/
+    0,		   /*nb_rshift*/
+    0,		   /*nb_and*/
+    0,		   /*nb_xor*/
+    0,		   /*nb_or*/
+    (coercion)0,   /*nb_coerce*/
+    (unaryfunc)PySwigObject_long, /*nb_int*/
+    (unaryfunc)PySwigObject_long, /*nb_long*/
+    (unaryfunc)0,                 /*nb_float*/
+    (unaryfunc)PySwigObject_oct,  /*nb_oct*/
+    (unaryfunc)PySwigObject_hex,  /*nb_hex*/
+#if PY_VERSION_HEX >= 0x02000000
+    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 /* nb_inplace_add -> nb_inplace_true_divide */ 
+#endif
+  };
+
+  static int type_init = 0;  
+  static PyTypeObject PySwigObject_Type;
+
+  if (!type_init) {
+    PyTypeObject tmp = {
+    PyObject_HEAD_INIT(&PyType_Type)
+    0,					/*ob_size*/
+    "PySwigObject",			/*tp_name*/
+    sizeof(PySwigObject),		/*tp_basicsize*/
+    0,					/*tp_itemsize*/
+    /* methods */
+    (destructor)PySwigObject_dealloc,	/*tp_dealloc*/
+    (printfunc)PySwigObject_print,	/*tp_print*/
+    (getattrfunc)0,			/*tp_getattr*/
+    (setattrfunc)0,			/*tp_setattr*/
+    (cmpfunc)PySwigObject_compare,	/*tp_compare*/
+    (reprfunc)PySwigObject_repr,	/*tp_repr*/
+    &PySwigObject_as_number,	        /*tp_as_number*/
+    0,					/*tp_as_sequence*/
+    0,					/*tp_as_mapping*/
+    (hashfunc)0,			/*tp_hash*/
+    (ternaryfunc)0,			/*tp_call*/
+    (reprfunc)PySwigObject_str,		/*tp_str*/
+    /* Space for future expansion */
+    0L,0L,0L,0L,
+    PySwigObject_Type__doc__, 	        /* Documentation string */
+#if PY_VERSION_HEX >= 0x02000000
+    0,                                  /* tp_traverse */
+    0,                                  /* tp_clear */
+#endif
+#if PY_VERSION_HEX >= 0x02010000
+    0,                                  /* tp_richcompare */
+    0,                                  /* tp_weaklistoffset */
+#endif
+#if PY_VERSION_HEX >= 0x02020000
+    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* tp_iter -> tp_weaklist */
+#endif
+#if PY_VERSION_HEX >= 0x02030000
+    0,                                  /* tp_del */
+#endif
+#ifdef COUNT_ALLOCS
+    0,0,0,0                             /* tp_alloc -> tp_next */
+#endif
+    };
+
+    PySwigObject_Type = tmp;
+    type_init = 1;
+  }
+
+  return &PySwigObject_Type;
+}
+
+SWIGRUNTIME PyObject *
+PySwigObject_FromVoidPtrAndDesc(void *ptr, const char *desc)
+{
+  PySwigObject *self = PyObject_NEW(PySwigObject, PySwigObject_GetType());
+  if (self == NULL) return NULL;
+  self->ptr = ptr;
+  self->desc = desc;
+  return (PyObject *)self;
+}
+
+SWIGRUNTIMEINLINE void *
+PySwigObject_AsVoidPtr(PyObject *self)
+{
+  return ((PySwigObject *)self)->ptr;
+}
+
+SWIGRUNTIMEINLINE const char *
+PySwigObject_GetDesc(PyObject *self)
+{
+  return ((PySwigObject *)self)->desc;
+}
+
+SWIGRUNTIMEINLINE int
+PySwigObject_Check(PyObject *op) {
+  return ((op)->ob_type == PySwigObject_GetType()) 
+    || (strcmp((op)->ob_type->tp_name,"PySwigObject") == 0);
+}
+
+/* -----------------------------------------------------------------------------
+ * Implements a simple Swig Packed type, and use it instead of string
+ * ----------------------------------------------------------------------------- */
+
+typedef struct {
+  PyObject_HEAD
+  void *pack;
+  const char *desc;
+  size_t size;
+} PySwigPacked;
+
+SWIGRUNTIME int
+PySwigPacked_print(PySwigPacked *v, FILE *fp, int flags)
+{
+  char result[SWIG_BUFFER_SIZE];
+  fputs("<Swig Packed ", fp); 
+  if (SWIG_PackDataName(result, v->pack, v->size, 0, sizeof(result))) {
+    fputs("at ", fp); 
+    fputs(result, fp); 
+  }
+  fputs(v->desc,fp); 
+  fputs(">", fp);
+  return 0; 
+}
+  
+SWIGRUNTIME PyObject *
+PySwigPacked_repr(PySwigPacked *v)
+{
+  char result[SWIG_BUFFER_SIZE];
+  if (SWIG_PackDataName(result, v->pack, v->size, 0, sizeof(result))) {
+    return PyString_FromFormat("<Swig Packed at %s%s>", result, v->desc);
+  } else {
+    return PyString_FromFormat("<Swig Packed %s>", v->desc);
+  }  
+}
+
+SWIGRUNTIME PyObject *
+PySwigPacked_str(PySwigPacked *v)
+{
+  char result[SWIG_BUFFER_SIZE];
+  if (SWIG_PackDataName(result, v->pack, v->size, 0, sizeof(result))){
+    return PyString_FromFormat("%s%s", result, v->desc);
+  } else {
+    return PyString_FromFormat("%s", v->desc);
+  }  
+}
+
+SWIGRUNTIME int
+PySwigPacked_compare(PySwigPacked *v, PySwigPacked *w)
+{
+  int c = strcmp(v->desc, w->desc);
+  if (c) {
+    return c;
+  } else {
+    size_t i = v->size;
+    size_t j = w->size;
+    int s = (i < j) ? -1 : (i > j) ? 1 : 0;
+    return s ? s : strncmp((char *)v->pack, (char *)w->pack, 2*v->size);
+  }
+}
+
+SWIGRUNTIME void
+PySwigPacked_dealloc(PySwigPacked *self)
+{
+  free(self->pack);
+  PyObject_DEL(self);
+}
+
+SWIGRUNTIME PyTypeObject*
+PySwigPacked_GetType() {
+  static char PySwigPacked_Type__doc__[] = 
+    "Swig object carries a C/C++ instance pointer";
+  static int type_init = 0;
+  
+  static PyTypeObject PySwigPacked_Type;
+  if (!type_init) {
+    PyTypeObject tmp = {
+    PyObject_HEAD_INIT(&PyType_Type)
+    0,					/*ob_size*/
+    "PySwigPacked",			/*tp_name*/
+    sizeof(PySwigPacked),		/*tp_basicsize*/
+    0,					/*tp_itemsize*/
+    /* methods */
+    (destructor)PySwigPacked_dealloc,	/*tp_dealloc*/
+    (printfunc)PySwigPacked_print,	/*tp_print*/
+    (getattrfunc)0,			/*tp_getattr*/
+    (setattrfunc)0,			/*tp_setattr*/
+    (cmpfunc)PySwigPacked_compare,	/*tp_compare*/
+    (reprfunc)PySwigPacked_repr,	/*tp_repr*/
+    0,	                                /*tp_as_number*/
+    0,					/*tp_as_sequence*/
+    0,					/*tp_as_mapping*/
+    (hashfunc)0,			/*tp_hash*/
+    (ternaryfunc)0,			/*tp_call*/
+    (reprfunc)PySwigPacked_str,		/*tp_str*/
+    /* Space for future expansion */
+    0L,0L,0L,0L,
+    PySwigPacked_Type__doc__, 	        /* Documentation string */
+#if PY_VERSION_HEX >= 0x02000000
+    0,                                  /* tp_traverse */
+    0,                                  /* tp_clear */
+#endif
+#if PY_VERSION_HEX >= 0x02010000
+    0,                                  /* tp_richcompare */
+    0,                                  /* tp_weaklistoffset */
+#endif
+#if PY_VERSION_HEX >= 0x02020000         
+    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* tp_iter -> tp_weaklist */
+#endif
+#if PY_VERSION_HEX >= 0x02030000
+    0,                                  /* tp_del */
+#endif
+#ifdef COUNT_ALLOCS
+    0,0,0,0                             /* tp_alloc -> tp_next */
+#endif
+    };
+
+    PySwigPacked_Type = tmp;
+    type_init = 1;
+  }
+  
+      
+
+  return &PySwigPacked_Type;
+}
+
+SWIGRUNTIME PyObject *
+PySwigPacked_FromDataAndDesc(void *ptr, size_t size, const char *desc)
+{
+  PySwigPacked *self = PyObject_NEW(PySwigPacked, PySwigPacked_GetType());
+  if (self == NULL) {
+    return NULL;
+  } else {
+    void *pack = malloc(size);
+    memcpy(pack, ptr, size);
+    self->pack = pack;
+    self->desc = desc;
+    self->size = size;
+    return (PyObject *) self;
+  }
+}
+
+SWIGRUNTIMEINLINE const char *
+PySwigPacked_UnpackData(PyObject *obj, void *ptr, size_t size)
+{
+  PySwigPacked *self = (PySwigPacked *)obj;
+  if (self->size != size) return 0;
+  memcpy(ptr, self->pack, size);
+  return self->desc;
+}
+
+SWIGRUNTIMEINLINE const char *
+PySwigPacked_GetDesc(PyObject *self)
+{
+  return ((PySwigPacked *)self)->desc;
+}
+
+SWIGRUNTIMEINLINE int
+PySwigPacked_Check(PyObject *op) {
+  return ((op)->ob_type == PySwigPacked_GetType()) 
+    || (strcmp((op)->ob_type->tp_name,"PySwigPacked") == 0);
+}
+
+#else
+/* -----------------------------------------------------------------------------
+ * Use the old Python PyCObject instead of PySwigObject
+ * ----------------------------------------------------------------------------- */
+
+#define PySwigObject_GetDesc(obj)	           PyCObject_GetDesc(obj)
+#define PySwigObject_Check(obj)	           PyCObject_Check(obj)
+#define PySwigObject_AsVoidPtr(obj)	   PyCObject_AsVoidPtr(obj)
+#define PySwigObject_FromVoidPtrAndDesc(p, d)  PyCObject_FromVoidPtrAndDesc(p, d, NULL)
+
+#endif
+
+#endif
+
+/* -----------------------------------------------------------------------------
+ * errors manipulation
+ * ----------------------------------------------------------------------------- */
+
+SWIGRUNTIME void
+SWIG_Python_TypeError(const char *type, PyObject *obj)
+{
+  if (type) {
+#if defined(SWIG_COBJECT_TYPES)
+    if (PySwigObject_Check(obj)) {
+      const char *otype = (const char *) PySwigObject_GetDesc(obj);
+      if (otype) {
+	PyErr_Format(PyExc_TypeError, "a '%s' is expected, 'PySwigObject(%s)' is received",
+		     type, otype);
+	return;
+      }
+    } else 
+#endif      
+    {
+      const char *otype = (obj ? obj->ob_type->tp_name : 0); 
+      if (otype) {
+	PyObject *str = PyObject_Str(obj);
+	const char *cstr = str ? PyString_AsString(str) : 0;
+	if (cstr) {
+	  PyErr_Format(PyExc_TypeError, "a '%s' is expected, '%s(%s)' is received",
+		       type, otype, cstr);
+	} else {
+	  PyErr_Format(PyExc_TypeError, "a '%s' is expected, '%s' is received",
+		       type, otype);
+	}
+	Py_DECREF(str);
+	return;
+      }
+    }   
+    PyErr_Format(PyExc_TypeError, "a '%s' is expected", type);
+  } else {
+    PyErr_Format(PyExc_TypeError, "unexpected type is received");
+  }
+}
+
+SWIGRUNTIMEINLINE void
+SWIG_Python_NullRef(const char *type)
+{
+  if (type) {
+    PyErr_Format(PyExc_TypeError, "null reference of type '%s' was received",type);
+  } else {
+    PyErr_Format(PyExc_TypeError, "null reference was received");
+  }
+}
+
+SWIGRUNTIME int
+SWIG_Python_AddErrMesg(const char* mesg, int infront)
+{
+  if (PyErr_Occurred()) {
+    PyObject *type = 0;
+    PyObject *value = 0;
+    PyObject *traceback = 0;
+    PyErr_Fetch(&type, &value, &traceback);
+    if (value) {
+      PyObject *old_str = PyObject_Str(value);
+      Py_XINCREF(type);
+      PyErr_Clear();
+      if (infront) {
+	PyErr_Format(type, "%s %s", mesg, PyString_AsString(old_str));
+      } else {
+	PyErr_Format(type, "%s %s", PyString_AsString(old_str), mesg);
+      }
+      Py_DECREF(old_str);
+    }
+    return 1;
+  } else {
+    return 0;
+  }
+}
+
+SWIGRUNTIME int
+SWIG_Python_ArgFail(int argnum)
+{
+  if (PyErr_Occurred()) {
+    /* add information about failing argument */
+    char mesg[256];
+    sprintf(mesg, "argument number %d:", argnum);
+    return SWIG_Python_AddErrMesg(mesg, 1);
+  } else {
+    return 0;
+  }
+}
+
+
+/* -----------------------------------------------------------------------------
+ * pointers/data manipulation
+ * ----------------------------------------------------------------------------- */
+
+/* Convert a pointer value */
+SWIGRUNTIME int
+SWIG_Python_ConvertPtr(PyObject *obj, void **ptr, swig_type_info *ty, int flags) {
+  swig_type_info *tc;
+  const char *c = 0;
+  static PyObject *SWIG_this = 0;
+  int    newref = 0;
+  PyObject  *pyobj = 0;
+  void *vptr;
+  
+  if (!obj) return 0;
+  if (obj == Py_None) {
+    *ptr = 0;
+    return 0;
+  }
+
+#ifdef SWIG_COBJECT_TYPES
+  if (!(PySwigObject_Check(obj))) {
+    if (!SWIG_this)
+      SWIG_this = PyString_FromString("this");
+    pyobj = obj;
+    obj = PyObject_GetAttr(obj,SWIG_this);
+    newref = 1;
+    if (!obj) goto type_error;
+    if (!PySwigObject_Check(obj)) {
+      Py_DECREF(obj);
+      goto type_error;
+    }
+  }  
+  vptr = PySwigObject_AsVoidPtr(obj);
+  c = (const char *) PySwigObject_GetDesc(obj);
+  if (newref) { Py_DECREF(obj); }
+  goto type_check;
+#else
+  if (!(PyString_Check(obj))) {
+    if (!SWIG_this)
+      SWIG_this = PyString_FromString("this");
+    pyobj = obj;
+    obj = PyObject_GetAttr(obj,SWIG_this);
+    newref = 1;
+    if (!obj) goto type_error;
+    if (!PyString_Check(obj)) {
+      Py_DECREF(obj);
+      goto type_error;
+    }
+  } 
+  c = PyString_AS_STRING(obj);
+  /* Pointer values must start with leading underscore */
+  c = SWIG_UnpackVoidPtr(c, &vptr, ty->name);
+  if (newref) { Py_DECREF(obj); }
+  if (!c) goto type_error;
+#endif
+
+type_check:
+
+  if (ty) {
+    tc = SWIG_TypeCheck(c,ty);
+    if (!tc) goto type_error;
+    *ptr = SWIG_TypeCast(tc,vptr);
+  } else {
+    *ptr = vptr;
+  }
+
+  if ((pyobj) && (flags & SWIG_POINTER_DISOWN)) {
+    PyObject_SetAttrString(pyobj,(char*)"thisown",Py_False);
+  }
+  return 0;
+
+type_error:
+  PyErr_Clear();
+  if (pyobj && !obj) {    
+    obj = pyobj;
+    if (PyCFunction_Check(obj)) {
+      /* here we get the method pointer for callbacks */
+      char *doc = (((PyCFunctionObject *)obj) -> m_ml -> ml_doc);
+      c = doc ? strstr(doc, "swig_ptr: ") : 0;
+      if (c) {
+	c = SWIG_UnpackVoidPtr(c + 10, &vptr, ty->name);
+	if (!c) goto type_error;
+	goto type_check;
+      }
+    }
+  }
+  if (flags & SWIG_POINTER_EXCEPTION) {
+    if (ty) {
+      SWIG_Python_TypeError(SWIG_TypePrettyName(ty), obj);
+    } else {
+      SWIG_Python_TypeError("C/C++ pointer", obj);
+    }
+  }
+  return -1;
+}
+
+/* Convert a pointer value, signal an exception on a type mismatch */
+SWIGRUNTIME void *
+SWIG_Python_MustGetPtr(PyObject *obj, swig_type_info *ty, int argnum, int flags) {
+  void *result;
+  if (SWIG_Python_ConvertPtr(obj, &result, ty, flags) == -1) {
+    PyErr_Clear();
+    if (flags & SWIG_POINTER_EXCEPTION) {
+      SWIG_Python_TypeError(SWIG_TypePrettyName(ty), obj);
+      SWIG_Python_ArgFail(argnum);
+    }
+  }
+  return result;
+}
+
+/* Convert a packed value value */
+SWIGRUNTIME int
+SWIG_Python_ConvertPacked(PyObject *obj, void *ptr, size_t sz, swig_type_info *ty, int flags) {
+  swig_type_info *tc;
+  const char *c = 0;
+
+#if defined(SWIG_COBJECT_TYPES) && !defined(SWIG_COBJECT_PYTHON)
+  c = PySwigPacked_UnpackData(obj, ptr, sz);
+#else
+  if ((!obj) || (!PyString_Check(obj))) goto type_error;
+  c = PyString_AS_STRING(obj);
+  /* Pointer values must start with leading underscore */
+  c = SWIG_UnpackDataName(c, ptr, sz, ty->name);
+#endif
+  if (!c) goto type_error;
+  if (ty) {
+    tc = SWIG_TypeCheck(c,ty);
+    if (!tc) goto type_error;
+  }
+  return 0;
+
+type_error:
+  PyErr_Clear();
+  if (flags & SWIG_POINTER_EXCEPTION) {
+    if (ty) {
+      SWIG_Python_TypeError(SWIG_TypePrettyName(ty), obj);
+    } else {
+      SWIG_Python_TypeError("C/C++ packed data", obj);
+    }
+  }
+  return -1;
+}  
+
+/* Create a new array object */
+SWIGRUNTIME PyObject *
+SWIG_Python_NewPointerObj(void *ptr, swig_type_info *type, int own) {
+  PyObject *robj = 0;
+  if (!ptr) {
+    Py_INCREF(Py_None);
+    return Py_None;
+  }
+#ifdef SWIG_COBJECT_TYPES
+  robj = PySwigObject_FromVoidPtrAndDesc((void *) ptr, (char *)type->name);
+#else
+  {
+    char result[SWIG_BUFFER_SIZE];
+    robj = SWIG_PackVoidPtr(result, ptr, type->name, sizeof(result)) ?
+      PyString_FromString(result) : 0;
+  }
+#endif
+  if (!robj || (robj == Py_None)) return robj;
+  if (type->clientdata) {
+    PyObject *inst;
+    PyObject *args = Py_BuildValue((char*)"(O)", robj);
+    Py_DECREF(robj);
+    inst = PyObject_CallObject((PyObject *) type->clientdata, args);
+    Py_DECREF(args);
+    if (inst) {
+      if (own) {
+        PyObject_SetAttrString(inst,(char*)"thisown",Py_True);
+      }
+      robj = inst;
+    }
+  }
+  return robj;
+}
+
+SWIGRUNTIME PyObject *
+SWIG_Python_NewPackedObj(void *ptr, size_t sz, swig_type_info *type) {
+  PyObject *robj = 0;
+  if (!ptr) {
+    Py_INCREF(Py_None);
+    return Py_None;
+  }
+#if defined(SWIG_COBJECT_TYPES) && !defined(SWIG_COBJECT_PYTHON)
+  robj = PySwigPacked_FromDataAndDesc((void *) ptr, sz, (char *)type->name);
+#else
+  {
+    char result[SWIG_BUFFER_SIZE];
+    robj = SWIG_PackDataName(result, ptr, sz, type->name, sizeof(result)) ?
+      PyString_FromString(result) : 0;
+  }
+#endif
+  return robj;
+}
+
+/* -----------------------------------------------------------------------------*
+ *  Get type list 
+ * -----------------------------------------------------------------------------*/
+
+#ifdef SWIG_LINK_RUNTIME
+void *SWIG_ReturnGlobalTypeList(void *);
+#endif
+
+SWIGRUNTIME swig_type_info **
+SWIG_Python_GetTypeListHandle() {
+  static void *type_pointer = (void *)0;
+  /* first check if module already created */
+  if (!type_pointer) {
+#ifdef SWIG_LINK_RUNTIME
+    type_pointer = SWIG_ReturnGlobalTypeList((void *)0);
+#else
+    type_pointer = PyCObject_Import((char*)"swig_runtime_data" SWIG_RUNTIME_VERSION,
+				    (char*)"type_pointer" SWIG_TYPE_TABLE_NAME);
+    if (PyErr_Occurred()) {
+      PyErr_Clear();
+      type_pointer = (void *)0;
+    }
+  }
+#endif
+  return (swig_type_info **) type_pointer;
+}
+
+/*
+  Search for a swig_type_info structure
+ */
+SWIGRUNTIMEINLINE swig_type_info *
+SWIG_Python_GetTypeList() {
+  swig_type_info **tlh = SWIG_Python_GetTypeListHandle();
+  return tlh ? *tlh : (swig_type_info*)0;
+}
+
+#define SWIG_Runtime_GetTypeList SWIG_Python_GetTypeList 
+
+#ifdef __cplusplus
+}
+#endif
+
+
+/* -------- TYPES TABLE (BEGIN) -------- */
+
+#define  SWIGTYPE_p_char swig_types[0] 
+#define  SWIGTYPE_size_t swig_types[1] 
+#define  SWIGTYPE_ptrdiff_t swig_types[2] 
+static swig_type_info *swig_types[4];
+
+/* -------- TYPES TABLE (END) -------- */
+
+
+/*-----------------------------------------------
+              @(target):= _win32_getrefresh.so
+  ------------------------------------------------*/
+#define SWIG_init    init_win32_getrefresh
+
+#define SWIG_name    "_win32_getrefresh"
+double getrefresh();
+
+  /*@/usr/share/swig1.3/python/pymacros.swg,66,SWIG_define@*/
+#define SWIG_From_double PyFloat_FromDouble
+/*@@*/
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+static PyObject *_wrap_getrefresh(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    double result;
+    
+    if(!PyArg_ParseTuple(args,(char *)":getrefresh")) goto fail;
+    result = (double)getrefresh();
+    
+    {
+        resultobj = SWIG_From_double((double)(result)); 
+    }
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyMethodDef SwigMethods[] = {
+	 { (char *)"getrefresh", _wrap_getrefresh, METH_VARARGS, NULL},
+	 { NULL, NULL, 0, NULL }
+};
+
+
+/* -------- TYPE CONVERSION AND EQUIVALENCE RULES (BEGIN) -------- */
+
+static swig_type_info _swigt__p_char[] = {{"_p_char", 0, "char *", 0, 0, 0, 0},{"_p_char", 0, 0, 0, 0, 0, 0},{0, 0, 0, 0, 0, 0, 0}};
+static swig_type_info _swigt__size_t[] = {{"_size_t", 0, "size_t", 0, 0, 0, 0},{"_size_t", 0, 0, 0, 0, 0, 0},{0, 0, 0, 0, 0, 0, 0}};
+static swig_type_info _swigt__ptrdiff_t[] = {{"_ptrdiff_t", 0, "ptrdiff_t", 0, 0, 0, 0},{"_ptrdiff_t", 0, 0, 0, 0, 0, 0},{0, 0, 0, 0, 0, 0, 0}};
+
+static swig_type_info *swig_types_initial[] = {
+_swigt__p_char, 
+_swigt__size_t, 
+_swigt__ptrdiff_t, 
+0
+};
+
+
+/* -------- TYPE CONVERSION AND EQUIVALENCE RULES (END) -------- */
+
+static swig_const_info swig_const_table[] = {
+{0, 0, 0, 0.0, 0, 0}};
+
+#ifdef __cplusplus
+}
+#endif
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+    
+    /* Python-specific SWIG API */
+#define SWIG_newvarlink()                             SWIG_Python_newvarlink()
+#define SWIG_addvarlink(p, name, get_attr, set_attr)  SWIG_Python_addvarlink(p, name, get_attr, set_attr)
+#define SWIG_InstallConstants(d, constants)           SWIG_Python_InstallConstants(d, constants)
+    
+    /* -----------------------------------------------------------------------------
+     * global variable support code.
+     * ----------------------------------------------------------------------------- */
+    
+    typedef struct swig_globalvar {
+        char       *name;                  /* Name of global variable */
+        PyObject *(*get_attr)();           /* Return the current value */
+        int       (*set_attr)(PyObject *); /* Set the value */
+        struct swig_globalvar *next;
+    } swig_globalvar;
+    
+    typedef struct swig_varlinkobject {
+        PyObject_HEAD
+        swig_globalvar *vars;
+    } swig_varlinkobject;
+    
+    static PyObject *
+    swig_varlink_repr(swig_varlinkobject *v) {
+        v = v;
+        return PyString_FromString("<Swig global variables>");
+    }
+    
+    static int
+    swig_varlink_print(swig_varlinkobject *v, FILE *fp, int flags) {
+        swig_globalvar  *var;
+        flags = flags;
+        fprintf(fp,"Swig global variables { ");
+        for (var = v->vars; var; var=var->next) {
+            fprintf(fp,"%s", var->name);
+            if (var->next) fprintf(fp,", ");
+        }
+        fprintf(fp," }\n");
+        return 0;
+    }
+    
+    static PyObject *
+    swig_varlink_getattr(swig_varlinkobject *v, char *n) {
+        swig_globalvar *var = v->vars;
+        while (var) {
+            if (strcmp(var->name,n) == 0) {
+                return (*var->get_attr)();
+            }
+            var = var->next;
+        }
+        PyErr_SetString(PyExc_NameError,"Unknown C global variable");
+        return NULL;
+    }
+    
+    static int
+    swig_varlink_setattr(swig_varlinkobject *v, char *n, PyObject *p) {
+        swig_globalvar *var = v->vars;
+        while (var) {
+            if (strcmp(var->name,n) == 0) {
+                return (*var->set_attr)(p);
+            }
+            var = var->next;
+        }
+        PyErr_SetString(PyExc_NameError,"Unknown C global variable");
+        return 1;
+    }
+    
+    static PyTypeObject varlinktype = {
+        PyObject_HEAD_INIT(0)              
+        0,                                  /* Number of items in variable part (ob_size) */
+        (char *)"swigvarlink",              /* Type name (tp_name) */
+        sizeof(swig_varlinkobject),         /* Basic size (tp_basicsize) */
+        0,                                  /* Itemsize (tp_itemsize) */
+        0,                                  /* Deallocator (tp_dealloc) */ 
+        (printfunc) swig_varlink_print,     /* Print (tp_print) */
+        (getattrfunc) swig_varlink_getattr, /* get attr (tp_getattr) */
+        (setattrfunc) swig_varlink_setattr, /* Set attr (tp_setattr) */
+        0,                                  /* tp_compare */
+        (reprfunc) swig_varlink_repr,       /* tp_repr */
+        0,                                  /* tp_as_number */
+        0,                                  /* tp_as_sequence */
+        0,                                  /* tp_as_mapping */
+        0,                                  /* tp_hash */
+        0,                                  /* tp_call */
+        0,                                  /* tp_str */
+        0,                                  /* tp_getattro */
+        0,                                  /* tp_setattro */
+        0,                                  /* tp_as_buffer */
+        0,                                  /* tp_flags */
+        0,                                  /* tp_doc */
+#if PY_VERSION_HEX >= 0x02000000
+        0,                                  /* tp_traverse */
+        0,                                  /* tp_clear */
+#endif
+#if PY_VERSION_HEX >= 0x02010000
+        0,                                  /* tp_richcompare */
+        0,                                  /* tp_weaklistoffset */
+#endif
+#if PY_VERSION_HEX >= 0x02020000
+        0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* tp_iter -> tp_weaklist */
+#endif
+#if PY_VERSION_HEX >= 0x02030000
+        0,                                  /* tp_del */
+#endif
+#ifdef COUNT_ALLOCS
+        0,0,0,0                             /* tp_alloc -> tp_next */
+#endif
+    };
+    
+    /* Create a variable linking object for use later */
+    static PyObject *
+    SWIG_Python_newvarlink(void) {
+        swig_varlinkobject *result = 0;
+        result = PyMem_NEW(swig_varlinkobject,1);
+        varlinktype.ob_type = &PyType_Type;    /* Patch varlinktype into a PyType */
+        result->ob_type = &varlinktype;
+        result->vars = 0;
+        result->ob_refcnt = 0;
+        Py_XINCREF((PyObject *) result);
+        return ((PyObject*) result);
+    }
+    
+    static void
+    SWIG_Python_addvarlink(PyObject *p, char *name, PyObject *(*get_attr)(void), int (*set_attr)(PyObject *p)) {
+        swig_varlinkobject *v;
+        swig_globalvar *gv;
+        v= (swig_varlinkobject *) p;
+        gv = (swig_globalvar *) malloc(sizeof(swig_globalvar));
+        gv->name = (char *) malloc(strlen(name)+1);
+        strcpy(gv->name,name);
+        gv->get_attr = get_attr;
+        gv->set_attr = set_attr;
+        gv->next = v->vars;
+        v->vars = gv;
+    }
+    
+    /* -----------------------------------------------------------------------------
+     * constants/methods manipulation
+     * ----------------------------------------------------------------------------- */
+    
+    /* Install Constants */
+    static void
+    SWIG_Python_InstallConstants(PyObject *d, swig_const_info constants[]) {
+        PyObject *obj = 0;
+        size_t i;
+        for (i = 0; constants[i].type; i++) {
+            switch(constants[i].type) {
+                case SWIG_PY_INT:
+                obj = PyInt_FromLong(constants[i].lvalue);
+                break;
+                case SWIG_PY_FLOAT:
+                obj = PyFloat_FromDouble(constants[i].dvalue);
+                break;
+                case SWIG_PY_STRING:
+                if (constants[i].pvalue) {
+                    obj = PyString_FromString((char *) constants[i].pvalue);
+                } else {
+                    Py_INCREF(Py_None);
+                    obj = Py_None;
+                }
+                break;
+                case SWIG_PY_POINTER:
+                obj = SWIG_NewPointerObj(constants[i].pvalue, *(constants[i]).ptype,0);
+                break;
+                case SWIG_PY_BINARY:
+                obj = SWIG_NewPackedObj(constants[i].pvalue, constants[i].lvalue, *(constants[i].ptype));
+                break;
+                default:
+                obj = 0;
+                break;
+            }
+            if (obj) {
+                PyDict_SetItemString(d,constants[i].name,obj);
+                Py_DECREF(obj);
+            }
+        }
+    }
+    
+    /* -----------------------------------------------------------------------------*/
+    /* Fix SwigMethods to carry the callback ptrs when needed */
+    /* -----------------------------------------------------------------------------*/
+    
+    static void
+    SWIG_Python_FixMethods(PyMethodDef *methods,
+    swig_const_info *const_table,
+    swig_type_info **types,
+    swig_type_info **types_initial) {
+        size_t i;
+        for (i = 0; methods[i].ml_name; ++i) {
+            char *c = methods[i].ml_doc;
+            if (c && (c = strstr(c, "swig_ptr: "))) {
+                int j;
+                swig_const_info *ci = 0;
+                char *name = c + 10;
+                for (j = 0; const_table[j].type; j++) {
+                    if (strncmp(const_table[j].name, name, 
+                    strlen(const_table[j].name)) == 0) {
+                        ci = &(const_table[j]);
+                        break;
+                    }
+                }
+                if (ci) {
+                    size_t shift = (ci->ptype) - types;
+                    swig_type_info *ty = types_initial[shift];
+                    size_t ldoc = (c - methods[i].ml_doc);
+                    size_t lptr = strlen(ty->name)+2*sizeof(void*)+2;
+                    char *ndoc = (char*)malloc(ldoc + lptr + 10);
+                    char *buff = ndoc;
+                    void *ptr = (ci->type == SWIG_PY_POINTER) ? ci->pvalue: (void *)(ci->lvalue);
+                    strncpy(buff, methods[i].ml_doc, ldoc);
+                    buff += ldoc;
+                    strncpy(buff, "swig_ptr: ", 10);
+                    buff += 10;
+                    SWIG_PackVoidPtr(buff, ptr, ty->name, lptr);
+                    methods[i].ml_doc = ndoc;
+                }
+            }
+        }
+    }
+    
+    /* -----------------------------------------------------------------------------*
+     *  Initialize type list
+     * -----------------------------------------------------------------------------*/
+    
+#if PY_MAJOR_VERSION < 2
+    /* PyModule_AddObject function was introduced in Python 2.0.  The following function
+    is copied out of Python/modsupport.c in python version 2.3.4 */
+    static int
+    PyModule_AddObject(PyObject *m, char *name, PyObject *o)
+    {
+        PyObject *dict;
+        if (!PyModule_Check(m)) {
+            PyErr_SetString(PyExc_TypeError,
+            "PyModule_AddObject() needs module as first arg");
+            return -1;
+        }
+        if (!o) {
+            PyErr_SetString(PyExc_TypeError,
+            "PyModule_AddObject() needs non-NULL value");
+            return -1;
+        }
+        
+        dict = PyModule_GetDict(m);
+        if (dict == NULL) {
+            /* Internal error -- modules must have a dict! */
+            PyErr_Format(PyExc_SystemError, "module '%s' has no __dict__",
+            PyModule_GetName(m));
+            return -1;
+        }
+        if (PyDict_SetItemString(dict, name, o))
+        return -1;
+        Py_DECREF(o);
+        return 0;
+    }
+#endif
+    
+    static swig_type_info **
+    SWIG_Python_SetTypeListHandle(swig_type_info **type_list_handle) {
+        static PyMethodDef swig_empty_runtime_method_table[] = {
+            {
+                NULL, NULL, 0, NULL
+            } 
+        };/* Sentinel */
+        
+        PyObject *module = Py_InitModule((char*)"swig_runtime_data" SWIG_RUNTIME_VERSION,
+        swig_empty_runtime_method_table);
+        PyObject *pointer = PyCObject_FromVoidPtr((void *) type_list_handle, NULL);
+        if (pointer && module) {
+            PyModule_AddObject(module, (char*)"type_pointer" SWIG_TYPE_TABLE_NAME, pointer);
+        }
+        return type_list_handle;
+    } 
+    
+    static swig_type_info **
+    SWIG_Python_LookupTypePointer(swig_type_info **type_list_handle) {
+        swig_type_info **type_pointer;
+        
+        /* first check if module already created */
+        type_pointer = SWIG_Python_GetTypeListHandle();
+        if (type_pointer) {
+            return type_pointer;
+        } else {
+            /* create a new module and variable */
+            return SWIG_Python_SetTypeListHandle(type_list_handle);
+        }
+    }
+    
+#ifdef __cplusplus
+}
+#endif
+
+/* -----------------------------------------------------------------------------*
+ *  Partial Init method
+ * -----------------------------------------------------------------------------*/
+
+#ifdef SWIG_LINK_RUNTIME
+#ifdef __cplusplus
+extern "C"
+#endif
+SWIGEXPORT(void *) SWIG_ReturnGlobalTypeList(void *);
+#endif
+
+#ifdef __cplusplus
+extern "C"
+#endif
+SWIGEXPORT(void) SWIG_init(void) {
+    static PyObject *SWIG_globals = 0; 
+    static int       typeinit = 0;
+    PyObject *m, *d;
+    int       i;
+    if (!SWIG_globals) SWIG_globals = SWIG_newvarlink();
+    
+    /* Fix SwigMethods to carry the callback ptrs when needed */
+    SWIG_Python_FixMethods(SwigMethods, swig_const_table, swig_types, swig_types_initial);
+    
+    m = Py_InitModule((char *) SWIG_name, SwigMethods);
+    d = PyModule_GetDict(m);
+    
+    if (!typeinit) {
+#ifdef SWIG_LINK_RUNTIME
+        swig_type_list_handle = (swig_type_info **) SWIG_ReturnGlobalTypeList(swig_type_list_handle);
+#else
+#  ifndef SWIG_STATIC_RUNTIME
+        swig_type_list_handle = SWIG_Python_LookupTypePointer(swig_type_list_handle);
+#  endif
+#endif
+        for (i = 0; swig_types_initial[i]; i++) {
+            swig_types[i] = SWIG_TypeRegister(swig_types_initial[i]);
+        }
+        typeinit = 1;
+    }
+    SWIG_InstallConstants(d,swig_const_table);
+    
+}
+
diff --git a/VisionEgg/win32_load_driver.c b/VisionEgg/win32_load_driver.c
new file mode 100644
index 0000000..4643e38
--- /dev/null
+++ b/VisionEgg/win32_load_driver.c
@@ -0,0 +1,33 @@
+/* This file modified from the original distribution available at
+   http://www.compuphase.com/vretrace.htm */
+
+#include <windows.h>
+
+HANDLE LoadDriver(LPSTR DriverName)
+{
+  OSVERSIONINFO VerInfo;
+  char          DevicePath[64];
+
+  // Check operating system
+  VerInfo.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
+  GetVersionEx(&VerInfo);
+  if (VerInfo.dwPlatformId == VER_PLATFORM_WIN32_NT) {
+
+    wsprintf(DevicePath, "\\\\.\\%s", (LPSTR)DriverName);
+    return CreateFile(DevicePath,
+                      GENERIC_READ | GENERIC_WRITE,
+                      FILE_SHARE_READ | FILE_SHARE_WRITE,
+                      0,                     // Default security
+                      OPEN_EXISTING,
+                      FILE_FLAG_OVERLAPPED,  // Perform asynchronous I/O
+                      0);                    // No template
+
+  } else {
+
+    // Otherwise, assume Windows95/98
+    wsprintf(DevicePath, "\\\\.\\%s.vxd", (LPSTR)DriverName);
+    return CreateFile(DevicePath, 0,0,0,
+                      CREATE_NEW,
+                      FILE_FLAG_DELETE_ON_CLOSE | FILE_FLAG_OVERLAPPED, 0);
+  }
+}
diff --git a/VisionEgg/win32_load_driver.h b/VisionEgg/win32_load_driver.h
new file mode 100644
index 0000000..d79d6e3
--- /dev/null
+++ b/VisionEgg/win32_load_driver.h
@@ -0,0 +1,3 @@
+#include <windows.h>
+
+HANDLE LoadDriver(LPSTR DriverName);
diff --git a/VisionEgg/win32_maxpriority.c b/VisionEgg/win32_maxpriority.c
new file mode 100644
index 0000000..35d6fa9
--- /dev/null
+++ b/VisionEgg/win32_maxpriority.c
@@ -0,0 +1,10 @@
+#include <WINDOWS.H> // winbase.h is all we really want, but it doesn't include all the headers it needs
+#include <WINBASE.H>
+
+unsigned short set_self_process_priority_class( int priority_class ) {
+  return (unsigned short)SetPriorityClass( GetCurrentProcess(), priority_class );
+}
+
+unsigned short set_self_thread_priority( int priority ) {
+  return (unsigned short)SetThreadPriority( GetCurrentThread(), priority );
+}
diff --git a/VisionEgg/win32_maxpriority.py b/VisionEgg/win32_maxpriority.py
new file mode 100644
index 0000000..eeaf654
--- /dev/null
+++ b/VisionEgg/win32_maxpriority.py
@@ -0,0 +1,54 @@
+# This file was created automatically by SWIG.
+# Don't modify this file, modify the SWIG interface instead.
+# This file is compatible with both classic and new-style classes.
+
+import _win32_maxpriority
+
+def _swig_setattr_nondynamic(self,class_type,name,value,static=1):
+    if (name == "this"):
+        if isinstance(value, class_type):
+            self.__dict__[name] = value.this
+            if hasattr(value,"thisown"): self.__dict__["thisown"] = value.thisown
+            del value.thisown
+            return
+    method = class_type.__swig_setmethods__.get(name,None)
+    if method: return method(self,value)
+    if (not static) or hasattr(self,name) or (name == "thisown"):
+        self.__dict__[name] = value
+    else:
+        raise AttributeError("You cannot add attributes to %s" % self)
+
+def _swig_setattr(self,class_type,name,value):
+    return _swig_setattr_nondynamic(self,class_type,name,value,0)
+
+def _swig_getattr(self,class_type,name):
+    method = class_type.__swig_getmethods__.get(name,None)
+    if method: return method(self)
+    raise AttributeError,name
+
+import types
+try:
+    _object = types.ObjectType
+    _newclass = 1
+except AttributeError:
+    class _object : pass
+    _newclass = 0
+del types
+
+
+IDLE_PRIORITY_CLASS = _win32_maxpriority.IDLE_PRIORITY_CLASS
+NORMAL_PRIORITY_CLASS = _win32_maxpriority.NORMAL_PRIORITY_CLASS
+HIGH_PRIORITY_CLASS = _win32_maxpriority.HIGH_PRIORITY_CLASS
+REALTIME_PRIORITY_CLASS = _win32_maxpriority.REALTIME_PRIORITY_CLASS
+THREAD_PRIORITY_IDLE = _win32_maxpriority.THREAD_PRIORITY_IDLE
+THREAD_PRIORITY_LOWEST = _win32_maxpriority.THREAD_PRIORITY_LOWEST
+THREAD_PRIORITY_BELOW_NORMAL = _win32_maxpriority.THREAD_PRIORITY_BELOW_NORMAL
+THREAD_PRIORITY_NORMAL = _win32_maxpriority.THREAD_PRIORITY_NORMAL
+THREAD_PRIORITY_ABOVE_NORMAL = _win32_maxpriority.THREAD_PRIORITY_ABOVE_NORMAL
+THREAD_PRIORITY_HIGHEST = _win32_maxpriority.THREAD_PRIORITY_HIGHEST
+THREAD_PRIORITY_TIME_CRITICAL = _win32_maxpriority.THREAD_PRIORITY_TIME_CRITICAL
+
+set_self_process_priority_class = _win32_maxpriority.set_self_process_priority_class
+
+set_self_thread_priority = _win32_maxpriority.set_self_thread_priority
+
diff --git a/VisionEgg/win32_maxpriority_wrap.c b/VisionEgg/win32_maxpriority_wrap.c
new file mode 100644
index 0000000..efd6de3
--- /dev/null
+++ b/VisionEgg/win32_maxpriority_wrap.c
@@ -0,0 +1,1903 @@
+/* ----------------------------------------------------------------------------
+ * This file was automatically generated by SWIG (http://www.swig.org).
+ * Version 1.3.24
+ * 
+ * This file is not intended to be easily readable and contains a number of 
+ * coding conventions designed to improve portability and efficiency. Do not make
+ * changes to this file unless you know what you are doing--modify the SWIG 
+ * interface file instead. 
+ * ----------------------------------------------------------------------------- */
+
+#define SWIGPYTHON
+
+#ifndef SWIG_TEMPLATE_DISAMBIGUATOR
+#  if defined(__SUNPRO_CC) 
+#    define SWIG_TEMPLATE_DISAMBIGUATOR template
+#  else
+#    define SWIG_TEMPLATE_DISAMBIGUATOR 
+#  endif
+#endif
+
+
+#include <Python.h>
+
+/***********************************************************************
+ * swigrun.swg
+ *
+ *     This file contains generic CAPI SWIG runtime support for pointer
+ *     type checking.
+ *
+ ************************************************************************/
+
+/* This should only be incremented when either the layout of swig_type_info changes,
+   or for whatever reason, the runtime changes incompatibly */
+#define SWIG_RUNTIME_VERSION "1"
+
+/* define SWIG_TYPE_TABLE_NAME as "SWIG_TYPE_TABLE" */
+#ifdef SWIG_TYPE_TABLE
+#define SWIG_QUOTE_STRING(x) #x
+#define SWIG_EXPAND_AND_QUOTE_STRING(x) SWIG_QUOTE_STRING(x)
+#define SWIG_TYPE_TABLE_NAME SWIG_EXPAND_AND_QUOTE_STRING(SWIG_TYPE_TABLE)
+#else
+#define SWIG_TYPE_TABLE_NAME
+#endif
+
+#include <string.h>
+
+#ifndef SWIGINLINE
+#if defined(__cplusplus) || (defined(__GNUC__) && !defined(__STRICT_ANSI__))
+#  define SWIGINLINE inline
+#else
+#  define SWIGINLINE
+#endif
+#endif
+
+/*
+  You can use the SWIGRUNTIME and SWIGRUNTIMEINLINE macros for
+  creating a static or dynamic library from the swig runtime code.
+  In 99.9% of the cases, swig just needs to declare them as 'static'.
+  
+  But only do this if is strictly necessary, ie, if you have problems
+  with your compiler or so.
+*/
+#ifndef SWIGRUNTIME
+#define SWIGRUNTIME static
+#endif
+#ifndef SWIGRUNTIMEINLINE
+#define SWIGRUNTIMEINLINE SWIGRUNTIME SWIGINLINE
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef void *(*swig_converter_func)(void *);
+typedef struct swig_type_info *(*swig_dycast_func)(void **);
+
+typedef struct swig_type_info {
+  const char             *name;
+  swig_converter_func     converter;
+  const char             *str;
+  void                   *clientdata;
+  swig_dycast_func        dcast;
+  struct swig_type_info  *next;
+  struct swig_type_info  *prev;
+} swig_type_info;
+
+/* 
+  Compare two type names skipping the space characters, therefore
+  "char*" == "char *" and "Class<int>" == "Class<int >", etc.
+
+  Return 0 when the two name types are equivalent, as in
+  strncmp, but skipping ' '.
+*/
+SWIGRUNTIME int
+SWIG_TypeNameComp(const char *f1, const char *l1,
+		  const char *f2, const char *l2) {
+  for (;(f1 != l1) && (f2 != l2); ++f1, ++f2) {
+    while ((*f1 == ' ') && (f1 != l1)) ++f1;
+    while ((*f2 == ' ') && (f2 != l2)) ++f2;
+    if (*f1 != *f2) return *f1 - *f2;
+  }
+  return (l1 - f1) - (l2 - f2);
+}
+
+/*
+  Check type equivalence in a name list like <name1>|<name2>|...
+*/
+SWIGRUNTIME int
+SWIG_TypeEquiv(const char *nb, const char *tb) {
+  int equiv = 0;
+  const char* te = tb + strlen(tb);
+  const char* ne = nb;
+  while (!equiv && *ne) {
+    for (nb = ne; *ne; ++ne) {
+      if (*ne == '|') break;
+    }
+    equiv = SWIG_TypeNameComp(nb, ne, tb, te) == 0;
+    if (*ne) ++ne;
+  }
+  return equiv;
+}
+
+/*
+  Register a type mapping with the type-checking
+*/
+SWIGRUNTIME swig_type_info *
+SWIG_TypeRegisterTL(swig_type_info **tl, swig_type_info *ti) {
+  swig_type_info *tc, *head, *ret, *next;
+  /* Check to see if this type has already been registered */
+  tc = *tl;
+  while (tc) {
+    /* check simple type equivalence */
+    int typeequiv = (strcmp(tc->name, ti->name) == 0);   
+    /* check full type equivalence, resolving typedefs */
+    if (!typeequiv) {
+      /* only if tc is not a typedef (no '|' on it) */
+      if (tc->str && ti->str && !strstr(tc->str,"|")) {
+	typeequiv = SWIG_TypeEquiv(ti->str,tc->str);
+      }
+    }
+    if (typeequiv) {
+      /* Already exists in the table.  Just add additional types to the list */
+      if (ti->clientdata) tc->clientdata = ti->clientdata;
+      head = tc;
+      next = tc->next;
+      goto l1;
+    }
+    tc = tc->prev;
+  }
+  head = ti;
+  next = 0;
+
+  /* Place in list */
+  ti->prev = *tl;
+  *tl = ti;
+
+  /* Build linked lists */
+  l1:
+  ret = head;
+  tc = ti + 1;
+  /* Patch up the rest of the links */
+  while (tc->name) {
+    head->next = tc;
+    tc->prev = head;
+    head = tc;
+    tc++;
+  }
+  if (next) next->prev = head;
+  head->next = next;
+
+  return ret;
+}
+
+/*
+  Check the typename
+*/
+SWIGRUNTIME swig_type_info *
+SWIG_TypeCheck(const char *c, swig_type_info *ty) {
+  swig_type_info *s;
+  if (!ty) return 0;        /* Void pointer */
+  s = ty->next;             /* First element always just a name */
+  do {
+    if (strcmp(s->name,c) == 0) {
+      if (s == ty->next) return s;
+      /* Move s to the top of the linked list */
+      s->prev->next = s->next;
+      if (s->next) {
+        s->next->prev = s->prev;
+      }
+      /* Insert s as second element in the list */
+      s->next = ty->next;
+      if (ty->next) ty->next->prev = s;
+      ty->next = s;
+      s->prev = ty;
+      return s;
+    }
+    s = s->next;
+  } while (s && (s != ty->next));
+  return 0;
+}
+
+/*
+  Cast a pointer up an inheritance hierarchy
+*/
+SWIGRUNTIMEINLINE void *
+SWIG_TypeCast(swig_type_info *ty, void *ptr) {
+  return ((!ty) || (!ty->converter)) ? ptr : (*ty->converter)(ptr);
+}
+
+/* 
+   Dynamic pointer casting. Down an inheritance hierarchy
+*/
+SWIGRUNTIME swig_type_info *
+SWIG_TypeDynamicCast(swig_type_info *ty, void **ptr) {
+  swig_type_info *lastty = ty;
+  if (!ty || !ty->dcast) return ty;
+  while (ty && (ty->dcast)) {
+    ty = (*ty->dcast)(ptr);
+    if (ty) lastty = ty;
+  }
+  return lastty;
+}
+
+/*
+  Return the name associated with this type
+*/
+SWIGRUNTIMEINLINE const char *
+SWIG_TypeName(const swig_type_info *ty) {
+  return ty->name;
+}
+
+/*
+  Return the pretty name associated with this type,
+  that is an unmangled type name in a form presentable to the user.
+*/
+SWIGRUNTIME const char *
+SWIG_TypePrettyName(const swig_type_info *type) {
+  /* The "str" field contains the equivalent pretty names of the
+     type, separated by vertical-bar characters.  We choose
+     to print the last name, as it is often (?) the most
+     specific. */
+  if (type->str != NULL) {
+    const char *last_name = type->str;
+    const char *s;
+    for (s = type->str; *s; s++)
+      if (*s == '|') last_name = s+1;
+    return last_name;
+  }
+  else
+    return type->name;
+}
+
+/*
+  Search for a swig_type_info structure
+*/
+SWIGRUNTIME swig_type_info *
+SWIG_TypeQueryTL(swig_type_info *tl, const char *name) {
+  swig_type_info *ty = tl;
+  while (ty) {
+    if (ty->str && (SWIG_TypeEquiv(ty->str,name))) return ty;
+    if (ty->name && (strcmp(name,ty->name) == 0)) return ty;
+    ty = ty->prev;
+  }
+  return 0;
+}
+
+/* 
+   Set the clientdata field for a type
+*/
+SWIGRUNTIME void
+SWIG_TypeClientDataTL(swig_type_info *tl, swig_type_info *ti, void *clientdata) {
+  swig_type_info *tc, *equiv;
+  if (ti->clientdata) return;
+  /* if (ti->clientdata == clientdata) return; */
+  ti->clientdata = clientdata;
+  equiv = ti->next;
+  while (equiv) {
+    if (!equiv->converter) {
+      tc = tl;
+      while (tc) {
+        if ((strcmp(tc->name, equiv->name) == 0))
+          SWIG_TypeClientDataTL(tl,tc,clientdata);
+        tc = tc->prev;
+      }
+    }
+    equiv = equiv->next;
+  }
+}
+
+/* 
+   Pack binary data into a string
+*/
+SWIGRUNTIME char *
+SWIG_PackData(char *c, void *ptr, size_t sz) {
+  static char hex[17] = "0123456789abcdef";
+  unsigned char *u = (unsigned char *) ptr;
+  const unsigned char *eu =  u + sz;
+  register unsigned char uu;
+  for (; u != eu; ++u) {
+    uu = *u;
+    *(c++) = hex[(uu & 0xf0) >> 4];
+    *(c++) = hex[uu & 0xf];
+  }
+  return c;
+}
+
+/* 
+   Unpack binary data from a string
+*/
+SWIGRUNTIME const char *
+SWIG_UnpackData(const char *c, void *ptr, size_t sz) {
+  register unsigned char *u = (unsigned char *) ptr;
+  register const unsigned char *eu =  u + sz;
+  for (; u != eu; ++u) {
+    register int d = *(c++);
+    register unsigned char uu = 0;
+    if ((d >= '0') && (d <= '9'))
+      uu = ((d - '0') << 4);
+    else if ((d >= 'a') && (d <= 'f'))
+      uu = ((d - ('a'-10)) << 4);
+    else 
+      return (char *) 0;
+    d = *(c++);
+    if ((d >= '0') && (d <= '9'))
+      uu |= (d - '0');
+    else if ((d >= 'a') && (d <= 'f'))
+      uu |= (d - ('a'-10));
+    else 
+      return (char *) 0;
+    *u = uu;
+  }
+  return c;
+}
+
+/*
+  This function will propagate the clientdata field of type to any new
+  swig_type_info structures that have been added into the list of
+  equivalent types.  It is like calling SWIG_TypeClientData(type,
+  clientdata) a second time.
+*/
+SWIGRUNTIME void
+SWIG_PropagateClientDataTL(swig_type_info *tl, swig_type_info *type) {
+  swig_type_info *equiv = type->next;
+  swig_type_info *tc;
+  if (!type->clientdata) return;
+  while (equiv) {
+    if (!equiv->converter) {
+      tc = tl;
+      while (tc) {
+        if ((strcmp(tc->name, equiv->name) == 0) && !tc->clientdata)
+          SWIG_TypeClientDataTL(tl,tc, type->clientdata);
+        tc = tc->prev;
+      }
+    }
+    equiv = equiv->next;
+  }
+}
+
+/* 
+   Pack 'void *' into a string buffer.
+*/
+SWIGRUNTIME char *
+SWIG_PackVoidPtr(char *buff, void *ptr, const char *name, size_t bsz) {
+  char *r = buff;
+  if ((2*sizeof(void *) + 2) > bsz) return 0;
+  *(r++) = '_';
+  r = SWIG_PackData(r,&ptr,sizeof(void *));
+  if (strlen(name) + 1 > (bsz - (r - buff))) return 0;
+  strcpy(r,name);
+  return buff;
+}
+
+SWIGRUNTIME const char *
+SWIG_UnpackVoidPtr(const char *c, void **ptr, const char *name) {
+  if (*c != '_') {
+    if (strcmp(c,"NULL") == 0) {
+      *ptr = (void *) 0;
+      return name;
+    } else {
+      return 0;
+    }
+  }
+  return SWIG_UnpackData(++c,ptr,sizeof(void *));
+}
+
+SWIGRUNTIME char *
+SWIG_PackDataName(char *buff, void *ptr, size_t sz, const char *name, size_t bsz) {
+  char *r = buff;
+  size_t lname = (name ? strlen(name) : 0);
+  if ((2*sz + 2 + lname) > bsz) return 0;
+  *(r++) = '_';
+  r = SWIG_PackData(r,ptr,sz);
+  if (lname) {
+    strncpy(r,name,lname+1);
+  } else {
+    *r = 0;
+  }
+  return buff;
+}
+
+SWIGRUNTIME const char *
+SWIG_UnpackDataName(const char *c, void *ptr, size_t sz, const char *name) {
+  if (*c != '_') {
+    if (strcmp(c,"NULL") == 0) {
+      memset(ptr,0,sz);
+      return name;
+    } else {
+      return 0;
+    }
+  }
+  return SWIG_UnpackData(++c,ptr,sz);
+}
+
+#ifdef __cplusplus
+}
+#endif
+
+/***********************************************************************
+ * common.swg
+ *
+ *     This file contains generic SWIG runtime support for pointer
+ *     type checking as well as a few commonly used macros to control
+ *     external linkage.
+ *
+ * Author : David Beazley (beazley at cs.uchicago.edu)
+ *
+ * Copyright (c) 1999-2000, The University of Chicago
+ * 
+ * This file may be freely redistributed without license or fee provided
+ * this copyright message remains intact.
+ ************************************************************************/
+
+
+#if defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__)
+#  if !defined(STATIC_LINKED)
+#    define SWIGEXPORT(a) __declspec(dllexport) a
+#  else
+#    define SWIGEXPORT(a) a
+#  endif
+#else
+#  define SWIGEXPORT(a) a
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/*************************************************************************/
+
+
+/* The static type info list */
+
+static swig_type_info *swig_type_list = 0;
+static swig_type_info **swig_type_list_handle = &swig_type_list;
+  
+
+/* Register a type mapping with the type-checking */
+static swig_type_info *
+SWIG_TypeRegister(swig_type_info *ti) {
+  return SWIG_TypeRegisterTL(swig_type_list_handle, ti);
+}
+
+/* Search for a swig_type_info structure */
+static swig_type_info *
+SWIG_TypeQuery(const char *name) {
+  return SWIG_TypeQueryTL(*swig_type_list_handle, name);
+}
+
+/* Set the clientdata field for a type */
+static void
+SWIG_TypeClientData(swig_type_info *ti, void *clientdata) {
+  SWIG_TypeClientDataTL(*swig_type_list_handle, ti, clientdata);
+}
+
+/* This function will propagate the clientdata field of type to
+* any new swig_type_info structures that have been added into the list
+* of equivalent types.  It is like calling
+* SWIG_TypeClientData(type, clientdata) a second time.
+*/
+static void
+SWIG_PropagateClientData(swig_type_info *type) {
+  SWIG_PropagateClientDataTL(*swig_type_list_handle, type);
+}
+
+#ifdef __cplusplus
+}
+#endif
+
+/* -----------------------------------------------------------------------------
+ * SWIG API. Portion that goes into the runtime
+ * ----------------------------------------------------------------------------- */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* -----------------------------------------------------------------------------
+ * for internal method declarations
+ * ----------------------------------------------------------------------------- */
+
+#ifndef SWIGINTERN
+#define SWIGINTERN static 
+#endif
+
+#ifndef SWIGINTERNSHORT
+#ifdef __cplusplus
+#define SWIGINTERNSHORT static inline 
+#else /* C case */
+#define SWIGINTERNSHORT static 
+#endif /* __cplusplus */
+#endif
+
+
+/*
+  Exception handling in wrappers
+*/
+#define SWIG_fail                goto fail
+#define SWIG_arg_fail(arg)       SWIG_Python_ArgFail(arg)
+#define SWIG_append_errmsg(msg)   SWIG_Python_AddErrMesg(msg,0)
+#define SWIG_preppend_errmsg(msg) SWIG_Python_AddErrMesg(msg,1)
+#define SWIG_type_error(type,obj) SWIG_Python_TypeError(type,obj)
+#define SWIG_null_ref(type)       SWIG_Python_NullRef(type)
+
+/*
+  Contract support
+*/
+#define SWIG_contract_assert(expr, msg) \
+ if (!(expr)) { PyErr_SetString(PyExc_RuntimeError, (char *) msg ); goto fail; } else
+
+/* -----------------------------------------------------------------------------
+ * Constant declarations
+ * ----------------------------------------------------------------------------- */
+
+/* Constant Types */
+#define SWIG_PY_INT     1
+#define SWIG_PY_FLOAT   2
+#define SWIG_PY_STRING  3
+#define SWIG_PY_POINTER 4
+#define SWIG_PY_BINARY  5
+
+/* Constant information structure */
+typedef struct swig_const_info {
+    int type;
+    char *name;
+    long lvalue;
+    double dvalue;
+    void   *pvalue;
+    swig_type_info **ptype;
+} swig_const_info;
+
+
+/* -----------------------------------------------------------------------------
+ * Alloc. memory flags
+ * ----------------------------------------------------------------------------- */
+#define SWIG_OLDOBJ  1
+#define SWIG_NEWOBJ  SWIG_OLDOBJ + 1
+#define SWIG_PYSTR   SWIG_NEWOBJ + 1
+
+#ifdef __cplusplus
+}
+#endif
+
+
+/***********************************************************************
+ * pyrun.swg
+ *
+ *     This file contains the runtime support for Python modules
+ *     and includes code for managing global variables and pointer
+ *     type checking.
+ *
+ * Author : David Beazley (beazley at cs.uchicago.edu)
+ ************************************************************************/
+
+/* Common SWIG API */
+#define SWIG_ConvertPtr(obj, pp, type, flags)    SWIG_Python_ConvertPtr(obj, pp, type, flags)
+#define SWIG_NewPointerObj(p, type, flags)       SWIG_Python_NewPointerObj(p, type, flags)
+#define SWIG_MustGetPtr(p, type, argnum, flags)  SWIG_Python_MustGetPtr(p, type, argnum, flags)
+ 
+
+/* Python-specific SWIG API */
+#define SWIG_ConvertPacked(obj, ptr, sz, ty, flags)   SWIG_Python_ConvertPacked(obj, ptr, sz, ty, flags)
+#define SWIG_NewPackedObj(ptr, sz, type)              SWIG_Python_NewPackedObj(ptr, sz, type)
+
+
+/* -----------------------------------------------------------------------------
+ * Pointer declarations
+ * ----------------------------------------------------------------------------- */
+/*
+  Use SWIG_NO_COBJECT_TYPES to force the use of strings to represent
+  C/C++ pointers in the python side. Very useful for debugging, but
+  not always safe.
+*/
+#if !defined(SWIG_NO_COBJECT_TYPES) && !defined(SWIG_COBJECT_TYPES)
+#  define SWIG_COBJECT_TYPES
+#endif
+
+/* Flags for pointer conversion */
+#define SWIG_POINTER_EXCEPTION     0x1
+#define SWIG_POINTER_DISOWN        0x2
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* -----------------------------------------------------------------------------
+ * Create a new pointer string 
+ * ----------------------------------------------------------------------------- */
+
+#ifndef SWIG_BUFFER_SIZE
+#define SWIG_BUFFER_SIZE 1024
+#endif
+
+#if defined(SWIG_COBJECT_TYPES)
+#if !defined(SWIG_COBJECT_PYTHON)
+/* -----------------------------------------------------------------------------
+ * Implements a simple Swig Object type, and use it instead of PyCObject
+ * ----------------------------------------------------------------------------- */
+
+typedef struct {
+  PyObject_HEAD
+  void *ptr;
+  const char *desc;
+} PySwigObject;
+
+/* Declarations for objects of type PySwigObject */
+
+SWIGRUNTIME int
+PySwigObject_print(PySwigObject *v, FILE *fp, int flags)
+{
+  char result[SWIG_BUFFER_SIZE];
+  if (SWIG_PackVoidPtr(result, v->ptr, v->desc, sizeof(result))) {
+    fputs("<Swig Object at ", fp); fputs(result, fp); fputs(">", fp);
+    return 0; 
+  } else {
+    return 1; 
+  }
+}
+  
+SWIGRUNTIME PyObject *
+PySwigObject_repr(PySwigObject *v)
+{
+  char result[SWIG_BUFFER_SIZE];
+  return SWIG_PackVoidPtr(result, v->ptr, v->desc, sizeof(result)) ?
+    PyString_FromFormat("<Swig Object at %s>", result) : 0;
+}
+
+SWIGRUNTIME PyObject *
+PySwigObject_str(PySwigObject *v)
+{
+  char result[SWIG_BUFFER_SIZE];
+  return SWIG_PackVoidPtr(result, v->ptr, v->desc, sizeof(result)) ?
+    PyString_FromString(result) : 0;
+}
+
+SWIGRUNTIME PyObject *
+PySwigObject_long(PySwigObject *v)
+{
+  return PyLong_FromUnsignedLong((unsigned long) v->ptr);
+}
+
+SWIGRUNTIME PyObject *
+PySwigObject_oct(PySwigObject *v)
+{
+  char buf[100];
+  unsigned long x = (unsigned long)v->ptr;
+  if (x == 0)
+    strcpy(buf, "0");
+  else
+    PyOS_snprintf(buf, sizeof(buf), "0%lo", x);
+  return PyString_FromString(buf);
+}
+
+SWIGRUNTIME PyObject *
+PySwigObject_hex(PySwigObject *v)
+{
+  char buf[100];
+  PyOS_snprintf(buf, sizeof(buf), "0x%lx", (unsigned long)v->ptr);
+  return PyString_FromString(buf);
+}
+
+SWIGRUNTIME int
+PySwigObject_compare(PySwigObject *v, PySwigObject *w)
+{
+  int c = strcmp(v->desc, w->desc);
+  if (c) {
+    return c;
+  } else {
+    void *i = v->ptr;
+    void *j = w->ptr;
+    return (i < j) ? -1 : (i > j) ? 1 : 0;
+  }
+}
+
+SWIGRUNTIME void
+PySwigObject_dealloc(PySwigObject *self)
+{
+  PyObject_DEL(self);
+}
+
+SWIGRUNTIME PyTypeObject*
+PySwigObject_GetType() {
+  static char PySwigObject_Type__doc__[] = 
+    "Swig object carries a C/C++ instance pointer";
+  
+  static PyNumberMethods PySwigObject_as_number = {
+    (binaryfunc)0, /*nb_add*/
+    (binaryfunc)0, /*nb_subtract*/
+    (binaryfunc)0, /*nb_multiply*/
+    (binaryfunc)0, /*nb_divide*/
+    (binaryfunc)0, /*nb_remainder*/
+    (binaryfunc)0, /*nb_divmod*/
+    (ternaryfunc)0,/*nb_power*/
+    (unaryfunc)0,  /*nb_negative*/
+    (unaryfunc)0,  /*nb_positive*/
+    (unaryfunc)0,  /*nb_absolute*/
+    (inquiry)0,    /*nb_nonzero*/
+    0,		   /*nb_invert*/
+    0,		   /*nb_lshift*/
+    0,		   /*nb_rshift*/
+    0,		   /*nb_and*/
+    0,		   /*nb_xor*/
+    0,		   /*nb_or*/
+    (coercion)0,   /*nb_coerce*/
+    (unaryfunc)PySwigObject_long, /*nb_int*/
+    (unaryfunc)PySwigObject_long, /*nb_long*/
+    (unaryfunc)0,                 /*nb_float*/
+    (unaryfunc)PySwigObject_oct,  /*nb_oct*/
+    (unaryfunc)PySwigObject_hex,  /*nb_hex*/
+#if PY_VERSION_HEX >= 0x02000000
+    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 /* nb_inplace_add -> nb_inplace_true_divide */ 
+#endif
+  };
+
+  static int type_init = 0;  
+  static PyTypeObject PySwigObject_Type;
+
+  if (!type_init) {
+    PyTypeObject tmp = {
+    PyObject_HEAD_INIT(&PyType_Type)
+    0,					/*ob_size*/
+    "PySwigObject",			/*tp_name*/
+    sizeof(PySwigObject),		/*tp_basicsize*/
+    0,					/*tp_itemsize*/
+    /* methods */
+    (destructor)PySwigObject_dealloc,	/*tp_dealloc*/
+    (printfunc)PySwigObject_print,	/*tp_print*/
+    (getattrfunc)0,			/*tp_getattr*/
+    (setattrfunc)0,			/*tp_setattr*/
+    (cmpfunc)PySwigObject_compare,	/*tp_compare*/
+    (reprfunc)PySwigObject_repr,	/*tp_repr*/
+    &PySwigObject_as_number,	        /*tp_as_number*/
+    0,					/*tp_as_sequence*/
+    0,					/*tp_as_mapping*/
+    (hashfunc)0,			/*tp_hash*/
+    (ternaryfunc)0,			/*tp_call*/
+    (reprfunc)PySwigObject_str,		/*tp_str*/
+    /* Space for future expansion */
+    0L,0L,0L,0L,
+    PySwigObject_Type__doc__, 	        /* Documentation string */
+#if PY_VERSION_HEX >= 0x02000000
+    0,                                  /* tp_traverse */
+    0,                                  /* tp_clear */
+#endif
+#if PY_VERSION_HEX >= 0x02010000
+    0,                                  /* tp_richcompare */
+    0,                                  /* tp_weaklistoffset */
+#endif
+#if PY_VERSION_HEX >= 0x02020000
+    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* tp_iter -> tp_weaklist */
+#endif
+#if PY_VERSION_HEX >= 0x02030000
+    0,                                  /* tp_del */
+#endif
+#ifdef COUNT_ALLOCS
+    0,0,0,0                             /* tp_alloc -> tp_next */
+#endif
+    };
+
+    PySwigObject_Type = tmp;
+    type_init = 1;
+  }
+
+  return &PySwigObject_Type;
+}
+
+SWIGRUNTIME PyObject *
+PySwigObject_FromVoidPtrAndDesc(void *ptr, const char *desc)
+{
+  PySwigObject *self = PyObject_NEW(PySwigObject, PySwigObject_GetType());
+  if (self == NULL) return NULL;
+  self->ptr = ptr;
+  self->desc = desc;
+  return (PyObject *)self;
+}
+
+SWIGRUNTIMEINLINE void *
+PySwigObject_AsVoidPtr(PyObject *self)
+{
+  return ((PySwigObject *)self)->ptr;
+}
+
+SWIGRUNTIMEINLINE const char *
+PySwigObject_GetDesc(PyObject *self)
+{
+  return ((PySwigObject *)self)->desc;
+}
+
+SWIGRUNTIMEINLINE int
+PySwigObject_Check(PyObject *op) {
+  return ((op)->ob_type == PySwigObject_GetType()) 
+    || (strcmp((op)->ob_type->tp_name,"PySwigObject") == 0);
+}
+
+/* -----------------------------------------------------------------------------
+ * Implements a simple Swig Packed type, and use it instead of string
+ * ----------------------------------------------------------------------------- */
+
+typedef struct {
+  PyObject_HEAD
+  void *pack;
+  const char *desc;
+  size_t size;
+} PySwigPacked;
+
+SWIGRUNTIME int
+PySwigPacked_print(PySwigPacked *v, FILE *fp, int flags)
+{
+  char result[SWIG_BUFFER_SIZE];
+  fputs("<Swig Packed ", fp); 
+  if (SWIG_PackDataName(result, v->pack, v->size, 0, sizeof(result))) {
+    fputs("at ", fp); 
+    fputs(result, fp); 
+  }
+  fputs(v->desc,fp); 
+  fputs(">", fp);
+  return 0; 
+}
+  
+SWIGRUNTIME PyObject *
+PySwigPacked_repr(PySwigPacked *v)
+{
+  char result[SWIG_BUFFER_SIZE];
+  if (SWIG_PackDataName(result, v->pack, v->size, 0, sizeof(result))) {
+    return PyString_FromFormat("<Swig Packed at %s%s>", result, v->desc);
+  } else {
+    return PyString_FromFormat("<Swig Packed %s>", v->desc);
+  }  
+}
+
+SWIGRUNTIME PyObject *
+PySwigPacked_str(PySwigPacked *v)
+{
+  char result[SWIG_BUFFER_SIZE];
+  if (SWIG_PackDataName(result, v->pack, v->size, 0, sizeof(result))){
+    return PyString_FromFormat("%s%s", result, v->desc);
+  } else {
+    return PyString_FromFormat("%s", v->desc);
+  }  
+}
+
+SWIGRUNTIME int
+PySwigPacked_compare(PySwigPacked *v, PySwigPacked *w)
+{
+  int c = strcmp(v->desc, w->desc);
+  if (c) {
+    return c;
+  } else {
+    size_t i = v->size;
+    size_t j = w->size;
+    int s = (i < j) ? -1 : (i > j) ? 1 : 0;
+    return s ? s : strncmp((char *)v->pack, (char *)w->pack, 2*v->size);
+  }
+}
+
+SWIGRUNTIME void
+PySwigPacked_dealloc(PySwigPacked *self)
+{
+  free(self->pack);
+  PyObject_DEL(self);
+}
+
+SWIGRUNTIME PyTypeObject*
+PySwigPacked_GetType() {
+  static char PySwigPacked_Type__doc__[] = 
+    "Swig object carries a C/C++ instance pointer";
+  static int type_init = 0;
+  
+  static PyTypeObject PySwigPacked_Type;
+  if (!type_init) {
+    PyTypeObject tmp = {
+    PyObject_HEAD_INIT(&PyType_Type)
+    0,					/*ob_size*/
+    "PySwigPacked",			/*tp_name*/
+    sizeof(PySwigPacked),		/*tp_basicsize*/
+    0,					/*tp_itemsize*/
+    /* methods */
+    (destructor)PySwigPacked_dealloc,	/*tp_dealloc*/
+    (printfunc)PySwigPacked_print,	/*tp_print*/
+    (getattrfunc)0,			/*tp_getattr*/
+    (setattrfunc)0,			/*tp_setattr*/
+    (cmpfunc)PySwigPacked_compare,	/*tp_compare*/
+    (reprfunc)PySwigPacked_repr,	/*tp_repr*/
+    0,	                                /*tp_as_number*/
+    0,					/*tp_as_sequence*/
+    0,					/*tp_as_mapping*/
+    (hashfunc)0,			/*tp_hash*/
+    (ternaryfunc)0,			/*tp_call*/
+    (reprfunc)PySwigPacked_str,		/*tp_str*/
+    /* Space for future expansion */
+    0L,0L,0L,0L,
+    PySwigPacked_Type__doc__, 	        /* Documentation string */
+#if PY_VERSION_HEX >= 0x02000000
+    0,                                  /* tp_traverse */
+    0,                                  /* tp_clear */
+#endif
+#if PY_VERSION_HEX >= 0x02010000
+    0,                                  /* tp_richcompare */
+    0,                                  /* tp_weaklistoffset */
+#endif
+#if PY_VERSION_HEX >= 0x02020000         
+    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* tp_iter -> tp_weaklist */
+#endif
+#if PY_VERSION_HEX >= 0x02030000
+    0,                                  /* tp_del */
+#endif
+#ifdef COUNT_ALLOCS
+    0,0,0,0                             /* tp_alloc -> tp_next */
+#endif
+    };
+
+    PySwigPacked_Type = tmp;
+    type_init = 1;
+  }
+  
+      
+
+  return &PySwigPacked_Type;
+}
+
+SWIGRUNTIME PyObject *
+PySwigPacked_FromDataAndDesc(void *ptr, size_t size, const char *desc)
+{
+  PySwigPacked *self = PyObject_NEW(PySwigPacked, PySwigPacked_GetType());
+  if (self == NULL) {
+    return NULL;
+  } else {
+    void *pack = malloc(size);
+    memcpy(pack, ptr, size);
+    self->pack = pack;
+    self->desc = desc;
+    self->size = size;
+    return (PyObject *) self;
+  }
+}
+
+SWIGRUNTIMEINLINE const char *
+PySwigPacked_UnpackData(PyObject *obj, void *ptr, size_t size)
+{
+  PySwigPacked *self = (PySwigPacked *)obj;
+  if (self->size != size) return 0;
+  memcpy(ptr, self->pack, size);
+  return self->desc;
+}
+
+SWIGRUNTIMEINLINE const char *
+PySwigPacked_GetDesc(PyObject *self)
+{
+  return ((PySwigPacked *)self)->desc;
+}
+
+SWIGRUNTIMEINLINE int
+PySwigPacked_Check(PyObject *op) {
+  return ((op)->ob_type == PySwigPacked_GetType()) 
+    || (strcmp((op)->ob_type->tp_name,"PySwigPacked") == 0);
+}
+
+#else
+/* -----------------------------------------------------------------------------
+ * Use the old Python PyCObject instead of PySwigObject
+ * ----------------------------------------------------------------------------- */
+
+#define PySwigObject_GetDesc(obj)	           PyCObject_GetDesc(obj)
+#define PySwigObject_Check(obj)	           PyCObject_Check(obj)
+#define PySwigObject_AsVoidPtr(obj)	   PyCObject_AsVoidPtr(obj)
+#define PySwigObject_FromVoidPtrAndDesc(p, d)  PyCObject_FromVoidPtrAndDesc(p, d, NULL)
+
+#endif
+
+#endif
+
+/* -----------------------------------------------------------------------------
+ * errors manipulation
+ * ----------------------------------------------------------------------------- */
+
+SWIGRUNTIME void
+SWIG_Python_TypeError(const char *type, PyObject *obj)
+{
+  if (type) {
+#if defined(SWIG_COBJECT_TYPES)
+    if (PySwigObject_Check(obj)) {
+      const char *otype = (const char *) PySwigObject_GetDesc(obj);
+      if (otype) {
+	PyErr_Format(PyExc_TypeError, "a '%s' is expected, 'PySwigObject(%s)' is received",
+		     type, otype);
+	return;
+      }
+    } else 
+#endif      
+    {
+      const char *otype = (obj ? obj->ob_type->tp_name : 0); 
+      if (otype) {
+	PyObject *str = PyObject_Str(obj);
+	const char *cstr = str ? PyString_AsString(str) : 0;
+	if (cstr) {
+	  PyErr_Format(PyExc_TypeError, "a '%s' is expected, '%s(%s)' is received",
+		       type, otype, cstr);
+	} else {
+	  PyErr_Format(PyExc_TypeError, "a '%s' is expected, '%s' is received",
+		       type, otype);
+	}
+	Py_DECREF(str);
+	return;
+      }
+    }   
+    PyErr_Format(PyExc_TypeError, "a '%s' is expected", type);
+  } else {
+    PyErr_Format(PyExc_TypeError, "unexpected type is received");
+  }
+}
+
+SWIGRUNTIMEINLINE void
+SWIG_Python_NullRef(const char *type)
+{
+  if (type) {
+    PyErr_Format(PyExc_TypeError, "null reference of type '%s' was received",type);
+  } else {
+    PyErr_Format(PyExc_TypeError, "null reference was received");
+  }
+}
+
+SWIGRUNTIME int
+SWIG_Python_AddErrMesg(const char* mesg, int infront)
+{
+  if (PyErr_Occurred()) {
+    PyObject *type = 0;
+    PyObject *value = 0;
+    PyObject *traceback = 0;
+    PyErr_Fetch(&type, &value, &traceback);
+    if (value) {
+      PyObject *old_str = PyObject_Str(value);
+      Py_XINCREF(type);
+      PyErr_Clear();
+      if (infront) {
+	PyErr_Format(type, "%s %s", mesg, PyString_AsString(old_str));
+      } else {
+	PyErr_Format(type, "%s %s", PyString_AsString(old_str), mesg);
+      }
+      Py_DECREF(old_str);
+    }
+    return 1;
+  } else {
+    return 0;
+  }
+}
+
+SWIGRUNTIME int
+SWIG_Python_ArgFail(int argnum)
+{
+  if (PyErr_Occurred()) {
+    /* add information about failing argument */
+    char mesg[256];
+    sprintf(mesg, "argument number %d:", argnum);
+    return SWIG_Python_AddErrMesg(mesg, 1);
+  } else {
+    return 0;
+  }
+}
+
+
+/* -----------------------------------------------------------------------------
+ * pointers/data manipulation
+ * ----------------------------------------------------------------------------- */
+
+/* Convert a pointer value */
+SWIGRUNTIME int
+SWIG_Python_ConvertPtr(PyObject *obj, void **ptr, swig_type_info *ty, int flags) {
+  swig_type_info *tc;
+  const char *c = 0;
+  static PyObject *SWIG_this = 0;
+  int    newref = 0;
+  PyObject  *pyobj = 0;
+  void *vptr;
+  
+  if (!obj) return 0;
+  if (obj == Py_None) {
+    *ptr = 0;
+    return 0;
+  }
+
+#ifdef SWIG_COBJECT_TYPES
+  if (!(PySwigObject_Check(obj))) {
+    if (!SWIG_this)
+      SWIG_this = PyString_FromString("this");
+    pyobj = obj;
+    obj = PyObject_GetAttr(obj,SWIG_this);
+    newref = 1;
+    if (!obj) goto type_error;
+    if (!PySwigObject_Check(obj)) {
+      Py_DECREF(obj);
+      goto type_error;
+    }
+  }  
+  vptr = PySwigObject_AsVoidPtr(obj);
+  c = (const char *) PySwigObject_GetDesc(obj);
+  if (newref) { Py_DECREF(obj); }
+  goto type_check;
+#else
+  if (!(PyString_Check(obj))) {
+    if (!SWIG_this)
+      SWIG_this = PyString_FromString("this");
+    pyobj = obj;
+    obj = PyObject_GetAttr(obj,SWIG_this);
+    newref = 1;
+    if (!obj) goto type_error;
+    if (!PyString_Check(obj)) {
+      Py_DECREF(obj);
+      goto type_error;
+    }
+  } 
+  c = PyString_AS_STRING(obj);
+  /* Pointer values must start with leading underscore */
+  c = SWIG_UnpackVoidPtr(c, &vptr, ty->name);
+  if (newref) { Py_DECREF(obj); }
+  if (!c) goto type_error;
+#endif
+
+type_check:
+
+  if (ty) {
+    tc = SWIG_TypeCheck(c,ty);
+    if (!tc) goto type_error;
+    *ptr = SWIG_TypeCast(tc,vptr);
+  } else {
+    *ptr = vptr;
+  }
+
+  if ((pyobj) && (flags & SWIG_POINTER_DISOWN)) {
+    PyObject_SetAttrString(pyobj,(char*)"thisown",Py_False);
+  }
+  return 0;
+
+type_error:
+  PyErr_Clear();
+  if (pyobj && !obj) {    
+    obj = pyobj;
+    if (PyCFunction_Check(obj)) {
+      /* here we get the method pointer for callbacks */
+      char *doc = (((PyCFunctionObject *)obj) -> m_ml -> ml_doc);
+      c = doc ? strstr(doc, "swig_ptr: ") : 0;
+      if (c) {
+	c = SWIG_UnpackVoidPtr(c + 10, &vptr, ty->name);
+	if (!c) goto type_error;
+	goto type_check;
+      }
+    }
+  }
+  if (flags & SWIG_POINTER_EXCEPTION) {
+    if (ty) {
+      SWIG_Python_TypeError(SWIG_TypePrettyName(ty), obj);
+    } else {
+      SWIG_Python_TypeError("C/C++ pointer", obj);
+    }
+  }
+  return -1;
+}
+
+/* Convert a pointer value, signal an exception on a type mismatch */
+SWIGRUNTIME void *
+SWIG_Python_MustGetPtr(PyObject *obj, swig_type_info *ty, int argnum, int flags) {
+  void *result;
+  if (SWIG_Python_ConvertPtr(obj, &result, ty, flags) == -1) {
+    PyErr_Clear();
+    if (flags & SWIG_POINTER_EXCEPTION) {
+      SWIG_Python_TypeError(SWIG_TypePrettyName(ty), obj);
+      SWIG_Python_ArgFail(argnum);
+    }
+  }
+  return result;
+}
+
+/* Convert a packed value value */
+SWIGRUNTIME int
+SWIG_Python_ConvertPacked(PyObject *obj, void *ptr, size_t sz, swig_type_info *ty, int flags) {
+  swig_type_info *tc;
+  const char *c = 0;
+
+#if defined(SWIG_COBJECT_TYPES) && !defined(SWIG_COBJECT_PYTHON)
+  c = PySwigPacked_UnpackData(obj, ptr, sz);
+#else
+  if ((!obj) || (!PyString_Check(obj))) goto type_error;
+  c = PyString_AS_STRING(obj);
+  /* Pointer values must start with leading underscore */
+  c = SWIG_UnpackDataName(c, ptr, sz, ty->name);
+#endif
+  if (!c) goto type_error;
+  if (ty) {
+    tc = SWIG_TypeCheck(c,ty);
+    if (!tc) goto type_error;
+  }
+  return 0;
+
+type_error:
+  PyErr_Clear();
+  if (flags & SWIG_POINTER_EXCEPTION) {
+    if (ty) {
+      SWIG_Python_TypeError(SWIG_TypePrettyName(ty), obj);
+    } else {
+      SWIG_Python_TypeError("C/C++ packed data", obj);
+    }
+  }
+  return -1;
+}  
+
+/* Create a new array object */
+SWIGRUNTIME PyObject *
+SWIG_Python_NewPointerObj(void *ptr, swig_type_info *type, int own) {
+  PyObject *robj = 0;
+  if (!ptr) {
+    Py_INCREF(Py_None);
+    return Py_None;
+  }
+#ifdef SWIG_COBJECT_TYPES
+  robj = PySwigObject_FromVoidPtrAndDesc((void *) ptr, (char *)type->name);
+#else
+  {
+    char result[SWIG_BUFFER_SIZE];
+    robj = SWIG_PackVoidPtr(result, ptr, type->name, sizeof(result)) ?
+      PyString_FromString(result) : 0;
+  }
+#endif
+  if (!robj || (robj == Py_None)) return robj;
+  if (type->clientdata) {
+    PyObject *inst;
+    PyObject *args = Py_BuildValue((char*)"(O)", robj);
+    Py_DECREF(robj);
+    inst = PyObject_CallObject((PyObject *) type->clientdata, args);
+    Py_DECREF(args);
+    if (inst) {
+      if (own) {
+        PyObject_SetAttrString(inst,(char*)"thisown",Py_True);
+      }
+      robj = inst;
+    }
+  }
+  return robj;
+}
+
+SWIGRUNTIME PyObject *
+SWIG_Python_NewPackedObj(void *ptr, size_t sz, swig_type_info *type) {
+  PyObject *robj = 0;
+  if (!ptr) {
+    Py_INCREF(Py_None);
+    return Py_None;
+  }
+#if defined(SWIG_COBJECT_TYPES) && !defined(SWIG_COBJECT_PYTHON)
+  robj = PySwigPacked_FromDataAndDesc((void *) ptr, sz, (char *)type->name);
+#else
+  {
+    char result[SWIG_BUFFER_SIZE];
+    robj = SWIG_PackDataName(result, ptr, sz, type->name, sizeof(result)) ?
+      PyString_FromString(result) : 0;
+  }
+#endif
+  return robj;
+}
+
+/* -----------------------------------------------------------------------------*
+ *  Get type list 
+ * -----------------------------------------------------------------------------*/
+
+#ifdef SWIG_LINK_RUNTIME
+void *SWIG_ReturnGlobalTypeList(void *);
+#endif
+
+SWIGRUNTIME swig_type_info **
+SWIG_Python_GetTypeListHandle() {
+  static void *type_pointer = (void *)0;
+  /* first check if module already created */
+  if (!type_pointer) {
+#ifdef SWIG_LINK_RUNTIME
+    type_pointer = SWIG_ReturnGlobalTypeList((void *)0);
+#else
+    type_pointer = PyCObject_Import((char*)"swig_runtime_data" SWIG_RUNTIME_VERSION,
+				    (char*)"type_pointer" SWIG_TYPE_TABLE_NAME);
+    if (PyErr_Occurred()) {
+      PyErr_Clear();
+      type_pointer = (void *)0;
+    }
+  }
+#endif
+  return (swig_type_info **) type_pointer;
+}
+
+/*
+  Search for a swig_type_info structure
+ */
+SWIGRUNTIMEINLINE swig_type_info *
+SWIG_Python_GetTypeList() {
+  swig_type_info **tlh = SWIG_Python_GetTypeListHandle();
+  return tlh ? *tlh : (swig_type_info*)0;
+}
+
+#define SWIG_Runtime_GetTypeList SWIG_Python_GetTypeList 
+
+#ifdef __cplusplus
+}
+#endif
+
+
+/* -------- TYPES TABLE (BEGIN) -------- */
+
+#define  SWIGTYPE_p_char swig_types[0] 
+#define  SWIGTYPE_size_t swig_types[1] 
+#define  SWIGTYPE_ptrdiff_t swig_types[2] 
+static swig_type_info *swig_types[4];
+
+/* -------- TYPES TABLE (END) -------- */
+
+
+/*-----------------------------------------------
+              @(target):= _win32_maxpriority.so
+  ------------------------------------------------*/
+#define SWIG_init    init_win32_maxpriority
+
+#define SWIG_name    "_win32_maxpriority"
+
+#include <WINDOWS.H> // winbase.h is all we really want, but it doesn't include all the headers it needs
+#include <WINBASE.H>
+
+
+  /*@/usr/share/swig1.3/python/pymacros.swg,66,SWIG_define@*/
+#define SWIG_From_int PyInt_FromLong
+/*@@*/
+
+unsigned short set_self_process_priority_class(int);
+
+#include <limits.h>
+
+
+SWIGINTERN int
+  SWIG_CheckLongInRange(long value, long min_value, long max_value,
+			const char *errmsg)
+{
+  if (value < min_value) {
+    if (errmsg) {
+      PyErr_Format(PyExc_OverflowError, 
+		   "value %ld is less than '%s' minimum %ld", 
+		   value, errmsg, min_value);
+    }
+    return 0;    
+  } else if (value > max_value) {
+    if (errmsg) {
+      PyErr_Format(PyExc_OverflowError,
+		   "value %ld is greater than '%s' maximum %ld", 
+		   value, errmsg, max_value);
+    }
+    return 0;
+  }
+  return 1;
+}
+
+
+SWIGINTERN int
+  SWIG_AsVal_long(PyObject * obj, long* val)
+{
+  if (PyInt_Check(obj)) {
+    if (val) *val = PyInt_AS_LONG(obj);
+    return 1;
+  }
+  if (PyLong_Check(obj)) {
+    long v = PyLong_AsLong(obj);
+    if (!PyErr_Occurred()) {
+      if (val) *val = v;
+      return 1;
+    } else {
+      if (!val) PyErr_Clear();
+      return 0;
+    }
+  }
+  if (val) {
+    SWIG_type_error("long", obj);
+  }
+  return 0;
+ }
+
+
+#if INT_MAX != LONG_MAX
+SWIGINTERN int
+  SWIG_AsVal_int(PyObject *obj, int *val)
+{ 
+  const char* errmsg = val ? "int" : (char*)0;
+  long v;
+  if (SWIG_AsVal_long(obj, &v)) {
+    if (SWIG_CheckLongInRange(v, INT_MIN,INT_MAX, errmsg)) {
+      if (val) *val = (int)(v);
+      return 1;
+    } else {
+      return 0;
+    }
+  } else {
+    PyErr_Clear();
+  }
+  if (val) {
+    SWIG_type_error(errmsg, obj);
+  }
+  return 0;    
+}
+#else
+SWIGINTERNSHORT int
+  SWIG_AsVal_int(PyObject *obj, int *val)
+{
+  return SWIG_AsVal_long(obj,(long*)val);
+}
+#endif
+
+
+SWIGINTERNSHORT int
+SWIG_As_int(PyObject* obj)
+{
+  int v;
+  if (!SWIG_AsVal_int(obj, &v)) {
+    /*
+      this is needed to make valgrind/purify happier. 
+     */
+    memset((void*)&v, 0, sizeof(int));
+  }
+  return v;
+}
+
+  
+SWIGINTERNSHORT int
+SWIG_Check_int(PyObject* obj)
+{
+  return SWIG_AsVal_int(obj, (int*)0);
+}
+
+
+  /*@/usr/share/swig1.3/python/pymacros.swg,66,SWIG_define@*/
+#define SWIG_From_unsigned_SS_short PyInt_FromLong
+/*@@*/
+
+unsigned short set_self_thread_priority(int);
+#ifdef __cplusplus
+extern "C" {
+#endif
+static PyObject *_wrap_set_self_process_priority_class(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    int arg1 ;
+    unsigned short result;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"O:set_self_process_priority_class",&obj0)) goto fail;
+    {
+        arg1 = (int)(SWIG_As_int(obj0)); 
+        if (SWIG_arg_fail(1)) SWIG_fail;
+    }
+    result = (unsigned short)set_self_process_priority_class(arg1);
+    
+    {
+        resultobj = SWIG_From_unsigned_SS_short((unsigned short)(result)); 
+    }
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyObject *_wrap_set_self_thread_priority(PyObject *self, PyObject *args) {
+    PyObject *resultobj;
+    int arg1 ;
+    unsigned short result;
+    PyObject * obj0 = 0 ;
+    
+    if(!PyArg_ParseTuple(args,(char *)"O:set_self_thread_priority",&obj0)) goto fail;
+    {
+        arg1 = (int)(SWIG_As_int(obj0)); 
+        if (SWIG_arg_fail(1)) SWIG_fail;
+    }
+    result = (unsigned short)set_self_thread_priority(arg1);
+    
+    {
+        resultobj = SWIG_From_unsigned_SS_short((unsigned short)(result)); 
+    }
+    return resultobj;
+    fail:
+    return NULL;
+}
+
+
+static PyMethodDef SwigMethods[] = {
+	 { (char *)"set_self_process_priority_class", _wrap_set_self_process_priority_class, METH_VARARGS, NULL},
+	 { (char *)"set_self_thread_priority", _wrap_set_self_thread_priority, METH_VARARGS, NULL},
+	 { NULL, NULL, 0, NULL }
+};
+
+
+/* -------- TYPE CONVERSION AND EQUIVALENCE RULES (BEGIN) -------- */
+
+static swig_type_info _swigt__p_char[] = {{"_p_char", 0, "char *", 0, 0, 0, 0},{"_p_char", 0, 0, 0, 0, 0, 0},{0, 0, 0, 0, 0, 0, 0}};
+static swig_type_info _swigt__size_t[] = {{"_size_t", 0, "size_t", 0, 0, 0, 0},{"_size_t", 0, 0, 0, 0, 0, 0},{0, 0, 0, 0, 0, 0, 0}};
+static swig_type_info _swigt__ptrdiff_t[] = {{"_ptrdiff_t", 0, "ptrdiff_t", 0, 0, 0, 0},{"_ptrdiff_t", 0, 0, 0, 0, 0, 0},{0, 0, 0, 0, 0, 0, 0}};
+
+static swig_type_info *swig_types_initial[] = {
+_swigt__p_char, 
+_swigt__size_t, 
+_swigt__ptrdiff_t, 
+0
+};
+
+
+/* -------- TYPE CONVERSION AND EQUIVALENCE RULES (END) -------- */
+
+static swig_const_info swig_const_table[] = {
+{0, 0, 0, 0.0, 0, 0}};
+
+#ifdef __cplusplus
+}
+#endif
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+    
+    /* Python-specific SWIG API */
+#define SWIG_newvarlink()                             SWIG_Python_newvarlink()
+#define SWIG_addvarlink(p, name, get_attr, set_attr)  SWIG_Python_addvarlink(p, name, get_attr, set_attr)
+#define SWIG_InstallConstants(d, constants)           SWIG_Python_InstallConstants(d, constants)
+    
+    /* -----------------------------------------------------------------------------
+     * global variable support code.
+     * ----------------------------------------------------------------------------- */
+    
+    typedef struct swig_globalvar {
+        char       *name;                  /* Name of global variable */
+        PyObject *(*get_attr)();           /* Return the current value */
+        int       (*set_attr)(PyObject *); /* Set the value */
+        struct swig_globalvar *next;
+    } swig_globalvar;
+    
+    typedef struct swig_varlinkobject {
+        PyObject_HEAD
+        swig_globalvar *vars;
+    } swig_varlinkobject;
+    
+    static PyObject *
+    swig_varlink_repr(swig_varlinkobject *v) {
+        v = v;
+        return PyString_FromString("<Swig global variables>");
+    }
+    
+    static int
+    swig_varlink_print(swig_varlinkobject *v, FILE *fp, int flags) {
+        swig_globalvar  *var;
+        flags = flags;
+        fprintf(fp,"Swig global variables { ");
+        for (var = v->vars; var; var=var->next) {
+            fprintf(fp,"%s", var->name);
+            if (var->next) fprintf(fp,", ");
+        }
+        fprintf(fp," }\n");
+        return 0;
+    }
+    
+    static PyObject *
+    swig_varlink_getattr(swig_varlinkobject *v, char *n) {
+        swig_globalvar *var = v->vars;
+        while (var) {
+            if (strcmp(var->name,n) == 0) {
+                return (*var->get_attr)();
+            }
+            var = var->next;
+        }
+        PyErr_SetString(PyExc_NameError,"Unknown C global variable");
+        return NULL;
+    }
+    
+    static int
+    swig_varlink_setattr(swig_varlinkobject *v, char *n, PyObject *p) {
+        swig_globalvar *var = v->vars;
+        while (var) {
+            if (strcmp(var->name,n) == 0) {
+                return (*var->set_attr)(p);
+            }
+            var = var->next;
+        }
+        PyErr_SetString(PyExc_NameError,"Unknown C global variable");
+        return 1;
+    }
+    
+    static PyTypeObject varlinktype = {
+        PyObject_HEAD_INIT(0)              
+        0,                                  /* Number of items in variable part (ob_size) */
+        (char *)"swigvarlink",              /* Type name (tp_name) */
+        sizeof(swig_varlinkobject),         /* Basic size (tp_basicsize) */
+        0,                                  /* Itemsize (tp_itemsize) */
+        0,                                  /* Deallocator (tp_dealloc) */ 
+        (printfunc) swig_varlink_print,     /* Print (tp_print) */
+        (getattrfunc) swig_varlink_getattr, /* get attr (tp_getattr) */
+        (setattrfunc) swig_varlink_setattr, /* Set attr (tp_setattr) */
+        0,                                  /* tp_compare */
+        (reprfunc) swig_varlink_repr,       /* tp_repr */
+        0,                                  /* tp_as_number */
+        0,                                  /* tp_as_sequence */
+        0,                                  /* tp_as_mapping */
+        0,                                  /* tp_hash */
+        0,                                  /* tp_call */
+        0,                                  /* tp_str */
+        0,                                  /* tp_getattro */
+        0,                                  /* tp_setattro */
+        0,                                  /* tp_as_buffer */
+        0,                                  /* tp_flags */
+        0,                                  /* tp_doc */
+#if PY_VERSION_HEX >= 0x02000000
+        0,                                  /* tp_traverse */
+        0,                                  /* tp_clear */
+#endif
+#if PY_VERSION_HEX >= 0x02010000
+        0,                                  /* tp_richcompare */
+        0,                                  /* tp_weaklistoffset */
+#endif
+#if PY_VERSION_HEX >= 0x02020000
+        0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* tp_iter -> tp_weaklist */
+#endif
+#if PY_VERSION_HEX >= 0x02030000
+        0,                                  /* tp_del */
+#endif
+#ifdef COUNT_ALLOCS
+        0,0,0,0                             /* tp_alloc -> tp_next */
+#endif
+    };
+    
+    /* Create a variable linking object for use later */
+    static PyObject *
+    SWIG_Python_newvarlink(void) {
+        swig_varlinkobject *result = 0;
+        result = PyMem_NEW(swig_varlinkobject,1);
+        varlinktype.ob_type = &PyType_Type;    /* Patch varlinktype into a PyType */
+        result->ob_type = &varlinktype;
+        result->vars = 0;
+        result->ob_refcnt = 0;
+        Py_XINCREF((PyObject *) result);
+        return ((PyObject*) result);
+    }
+    
+    static void
+    SWIG_Python_addvarlink(PyObject *p, char *name, PyObject *(*get_attr)(void), int (*set_attr)(PyObject *p)) {
+        swig_varlinkobject *v;
+        swig_globalvar *gv;
+        v= (swig_varlinkobject *) p;
+        gv = (swig_globalvar *) malloc(sizeof(swig_globalvar));
+        gv->name = (char *) malloc(strlen(name)+1);
+        strcpy(gv->name,name);
+        gv->get_attr = get_attr;
+        gv->set_attr = set_attr;
+        gv->next = v->vars;
+        v->vars = gv;
+    }
+    
+    /* -----------------------------------------------------------------------------
+     * constants/methods manipulation
+     * ----------------------------------------------------------------------------- */
+    
+    /* Install Constants */
+    static void
+    SWIG_Python_InstallConstants(PyObject *d, swig_const_info constants[]) {
+        PyObject *obj = 0;
+        size_t i;
+        for (i = 0; constants[i].type; i++) {
+            switch(constants[i].type) {
+                case SWIG_PY_INT:
+                obj = PyInt_FromLong(constants[i].lvalue);
+                break;
+                case SWIG_PY_FLOAT:
+                obj = PyFloat_FromDouble(constants[i].dvalue);
+                break;
+                case SWIG_PY_STRING:
+                if (constants[i].pvalue) {
+                    obj = PyString_FromString((char *) constants[i].pvalue);
+                } else {
+                    Py_INCREF(Py_None);
+                    obj = Py_None;
+                }
+                break;
+                case SWIG_PY_POINTER:
+                obj = SWIG_NewPointerObj(constants[i].pvalue, *(constants[i]).ptype,0);
+                break;
+                case SWIG_PY_BINARY:
+                obj = SWIG_NewPackedObj(constants[i].pvalue, constants[i].lvalue, *(constants[i].ptype));
+                break;
+                default:
+                obj = 0;
+                break;
+            }
+            if (obj) {
+                PyDict_SetItemString(d,constants[i].name,obj);
+                Py_DECREF(obj);
+            }
+        }
+    }
+    
+    /* -----------------------------------------------------------------------------*/
+    /* Fix SwigMethods to carry the callback ptrs when needed */
+    /* -----------------------------------------------------------------------------*/
+    
+    static void
+    SWIG_Python_FixMethods(PyMethodDef *methods,
+    swig_const_info *const_table,
+    swig_type_info **types,
+    swig_type_info **types_initial) {
+        size_t i;
+        for (i = 0; methods[i].ml_name; ++i) {
+            char *c = methods[i].ml_doc;
+            if (c && (c = strstr(c, "swig_ptr: "))) {
+                int j;
+                swig_const_info *ci = 0;
+                char *name = c + 10;
+                for (j = 0; const_table[j].type; j++) {
+                    if (strncmp(const_table[j].name, name, 
+                    strlen(const_table[j].name)) == 0) {
+                        ci = &(const_table[j]);
+                        break;
+                    }
+                }
+                if (ci) {
+                    size_t shift = (ci->ptype) - types;
+                    swig_type_info *ty = types_initial[shift];
+                    size_t ldoc = (c - methods[i].ml_doc);
+                    size_t lptr = strlen(ty->name)+2*sizeof(void*)+2;
+                    char *ndoc = (char*)malloc(ldoc + lptr + 10);
+                    char *buff = ndoc;
+                    void *ptr = (ci->type == SWIG_PY_POINTER) ? ci->pvalue: (void *)(ci->lvalue);
+                    strncpy(buff, methods[i].ml_doc, ldoc);
+                    buff += ldoc;
+                    strncpy(buff, "swig_ptr: ", 10);
+                    buff += 10;
+                    SWIG_PackVoidPtr(buff, ptr, ty->name, lptr);
+                    methods[i].ml_doc = ndoc;
+                }
+            }
+        }
+    }
+    
+    /* -----------------------------------------------------------------------------*
+     *  Initialize type list
+     * -----------------------------------------------------------------------------*/
+    
+#if PY_MAJOR_VERSION < 2
+    /* PyModule_AddObject function was introduced in Python 2.0.  The following function
+    is copied out of Python/modsupport.c in python version 2.3.4 */
+    static int
+    PyModule_AddObject(PyObject *m, char *name, PyObject *o)
+    {
+        PyObject *dict;
+        if (!PyModule_Check(m)) {
+            PyErr_SetString(PyExc_TypeError,
+            "PyModule_AddObject() needs module as first arg");
+            return -1;
+        }
+        if (!o) {
+            PyErr_SetString(PyExc_TypeError,
+            "PyModule_AddObject() needs non-NULL value");
+            return -1;
+        }
+        
+        dict = PyModule_GetDict(m);
+        if (dict == NULL) {
+            /* Internal error -- modules must have a dict! */
+            PyErr_Format(PyExc_SystemError, "module '%s' has no __dict__",
+            PyModule_GetName(m));
+            return -1;
+        }
+        if (PyDict_SetItemString(dict, name, o))
+        return -1;
+        Py_DECREF(o);
+        return 0;
+    }
+#endif
+    
+    static swig_type_info **
+    SWIG_Python_SetTypeListHandle(swig_type_info **type_list_handle) {
+        static PyMethodDef swig_empty_runtime_method_table[] = {
+            {
+                NULL, NULL, 0, NULL
+            } 
+        };/* Sentinel */
+        
+        PyObject *module = Py_InitModule((char*)"swig_runtime_data" SWIG_RUNTIME_VERSION,
+        swig_empty_runtime_method_table);
+        PyObject *pointer = PyCObject_FromVoidPtr((void *) type_list_handle, NULL);
+        if (pointer && module) {
+            PyModule_AddObject(module, (char*)"type_pointer" SWIG_TYPE_TABLE_NAME, pointer);
+        }
+        return type_list_handle;
+    } 
+    
+    static swig_type_info **
+    SWIG_Python_LookupTypePointer(swig_type_info **type_list_handle) {
+        swig_type_info **type_pointer;
+        
+        /* first check if module already created */
+        type_pointer = SWIG_Python_GetTypeListHandle();
+        if (type_pointer) {
+            return type_pointer;
+        } else {
+            /* create a new module and variable */
+            return SWIG_Python_SetTypeListHandle(type_list_handle);
+        }
+    }
+    
+#ifdef __cplusplus
+}
+#endif
+
+/* -----------------------------------------------------------------------------*
+ *  Partial Init method
+ * -----------------------------------------------------------------------------*/
+
+#ifdef SWIG_LINK_RUNTIME
+#ifdef __cplusplus
+extern "C"
+#endif
+SWIGEXPORT(void *) SWIG_ReturnGlobalTypeList(void *);
+#endif
+
+#ifdef __cplusplus
+extern "C"
+#endif
+SWIGEXPORT(void) SWIG_init(void) {
+    static PyObject *SWIG_globals = 0; 
+    static int       typeinit = 0;
+    PyObject *m, *d;
+    int       i;
+    if (!SWIG_globals) SWIG_globals = SWIG_newvarlink();
+    
+    /* Fix SwigMethods to carry the callback ptrs when needed */
+    SWIG_Python_FixMethods(SwigMethods, swig_const_table, swig_types, swig_types_initial);
+    
+    m = Py_InitModule((char *) SWIG_name, SwigMethods);
+    d = PyModule_GetDict(m);
+    
+    if (!typeinit) {
+#ifdef SWIG_LINK_RUNTIME
+        swig_type_list_handle = (swig_type_info **) SWIG_ReturnGlobalTypeList(swig_type_list_handle);
+#else
+#  ifndef SWIG_STATIC_RUNTIME
+        swig_type_list_handle = SWIG_Python_LookupTypePointer(swig_type_list_handle);
+#  endif
+#endif
+        for (i = 0; swig_types_initial[i]; i++) {
+            swig_types[i] = SWIG_TypeRegister(swig_types_initial[i]);
+        }
+        typeinit = 1;
+    }
+    SWIG_InstallConstants(d,swig_const_table);
+    
+    {
+        PyDict_SetItemString(d,"IDLE_PRIORITY_CLASS", SWIG_From_int((int)(IDLE_PRIORITY_CLASS))); 
+    }
+    {
+        PyDict_SetItemString(d,"NORMAL_PRIORITY_CLASS", SWIG_From_int((int)(NORMAL_PRIORITY_CLASS))); 
+    }
+    {
+        PyDict_SetItemString(d,"HIGH_PRIORITY_CLASS", SWIG_From_int((int)(HIGH_PRIORITY_CLASS))); 
+    }
+    {
+        PyDict_SetItemString(d,"REALTIME_PRIORITY_CLASS", SWIG_From_int((int)(REALTIME_PRIORITY_CLASS))); 
+    }
+    {
+        PyDict_SetItemString(d,"THREAD_PRIORITY_IDLE", SWIG_From_int((int)(THREAD_PRIORITY_IDLE))); 
+    }
+    {
+        PyDict_SetItemString(d,"THREAD_PRIORITY_LOWEST", SWIG_From_int((int)(THREAD_PRIORITY_LOWEST))); 
+    }
+    {
+        PyDict_SetItemString(d,"THREAD_PRIORITY_BELOW_NORMAL", SWIG_From_int((int)(THREAD_PRIORITY_BELOW_NORMAL))); 
+    }
+    {
+        PyDict_SetItemString(d,"THREAD_PRIORITY_NORMAL", SWIG_From_int((int)(THREAD_PRIORITY_NORMAL))); 
+    }
+    {
+        PyDict_SetItemString(d,"THREAD_PRIORITY_ABOVE_NORMAL", SWIG_From_int((int)(THREAD_PRIORITY_ABOVE_NORMAL))); 
+    }
+    {
+        PyDict_SetItemString(d,"THREAD_PRIORITY_HIGHEST", SWIG_From_int((int)(THREAD_PRIORITY_HIGHEST))); 
+    }
+    {
+        PyDict_SetItemString(d,"THREAD_PRIORITY_TIME_CRITICAL", SWIG_From_int((int)(THREAD_PRIORITY_TIME_CRITICAL))); 
+    }
+}
+
diff --git a/VisionEgg/win32_vretrace.c b/VisionEgg/win32_vretrace.c
new file mode 100644
index 0000000..f67d4e8
--- /dev/null
+++ b/VisionEgg/win32_vretrace.c
@@ -0,0 +1,625 @@
+/* Generated by Pyrex 0.9.3 on Fri Jul 01 13:46:48 2005 */
+
+#include "Python.h"
+#include "structmember.h"
+#ifndef PY_LONG_LONG
+  #define PY_LONG_LONG LONG_LONG
+#endif
+#include "windows.h"
+#include "win32_load_driver.h"
+#include "win32_vretrace_orig.h"
+
+
+typedef struct {PyObject **p; char *s;} __Pyx_InternTabEntry; /*proto*/
+typedef struct {PyObject **p; char *s; long n;} __Pyx_StringTabEntry; /*proto*/
+static PyObject *__Pyx_UnpackItem(PyObject *, int); /*proto*/
+static int __Pyx_EndUnpack(PyObject *, int); /*proto*/
+static int __Pyx_PrintItem(PyObject *); /*proto*/
+static int __Pyx_PrintNewline(void); /*proto*/
+static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb); /*proto*/
+static void __Pyx_ReRaise(void); /*proto*/
+static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list); /*proto*/
+static PyObject *__Pyx_GetExcValue(void); /*proto*/
+static int __Pyx_ArgTypeTest(PyObject *obj, PyTypeObject *type, int none_allowed, char *name); /*proto*/
+static int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type); /*proto*/
+static int __Pyx_GetStarArgs(PyObject **args, PyObject **kwds, char *kwd_list[], int nargs, PyObject **args2, PyObject **kwds2); /*proto*/
+static void __Pyx_WriteUnraisable(char *name); /*proto*/
+static void __Pyx_AddTraceback(char *funcname); /*proto*/
+static PyTypeObject *__Pyx_ImportType(char *module_name, char *class_name, long size);  /*proto*/
+static int __Pyx_SetVtable(PyObject *dict, void *vtable); /*proto*/
+static int __Pyx_GetVtable(PyObject *dict, void *vtabptr); /*proto*/
+static PyObject *__Pyx_CreateClass(PyObject *bases, PyObject *dict, PyObject *name, char *modname); /*proto*/
+static int __Pyx_InternStrings(__Pyx_InternTabEntry *t); /*proto*/
+static int __Pyx_InitStrings(__Pyx_StringTabEntry *t); /*proto*/
+static PyObject *__Pyx_GetName(PyObject *dict, PyObject *name); /*proto*/
+
+static PyObject *__pyx_m;
+static PyObject *__pyx_b;
+static int __pyx_lineno;
+static char *__pyx_filename;
+staticforward char **__pyx_f;
+
+/* Declarations from win32_vretrace */
+
+staticforward PyTypeObject __pyx_type_14win32_vretrace_VRetraceHandleKeeper;
+
+struct __pyx_obj_14win32_vretrace_VRetraceHandleKeeper {
+  PyObject_HEAD
+  HANDLE VRetrace_Handle;
+};
+
+static PyTypeObject *__pyx_ptype_14win32_vretrace_VRetraceHandleKeeper = 0;
+static struct __pyx_obj_14win32_vretrace_VRetraceHandleKeeper *__pyx_v_14win32_vretrace_hk;
+static PyObject *__pyx_k1;
+
+/* Implementation of win32_vretrace */
+
+static PyObject *__pyx_n_WAIT_INSIDE;
+static PyObject *__pyx_n_WAIT_START;
+static PyObject *__pyx_n_WAIT_END;
+static PyObject *__pyx_n_LoadVRetraceDriver;
+static PyObject *__pyx_n_WaitForRetrace;
+
+static PyObject *__pyx_n_RuntimeError;
+
+static PyObject *__pyx_k2p;
+static PyObject *__pyx_k3p;
+static PyObject *__pyx_k4p;
+
+static char (__pyx_k2[]) = "Could not load driver VRETRACE.SYS";
+static char (__pyx_k3[]) = "Invalid version (%lx) returned";
+static char (__pyx_k4[]) = "No vertical retrace detected";
+
+static PyObject *__pyx_f_14win32_vretrace_LoadVRetraceDriver(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_f_14win32_vretrace_LoadVRetraceDriver(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  BOOL __pyx_v_success;
+  HANDLE __pyx_v_VRetrace_Handle;
+  DWORD __pyx_v_dwVersion;
+  DWORD __pyx_v_dwCycles;
+  DWORD __pyx_v_dwRetCount;
+  DWORD __pyx_v_dwReturned;
+  struct __pyx_obj_14win32_vretrace_VRetraceHandleKeeper *__pyx_v_hk;
+  PyObject *__pyx_r;
+  int __pyx_1;
+  PyObject *__pyx_2 = 0;
+  PyObject *__pyx_3 = 0;
+  PyObject *__pyx_4 = 0;
+  static char *__pyx_argnames[] = {0};
+  if (!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "", __pyx_argnames)) return 0;
+  ((PyObject*)__pyx_v_hk) = Py_None; Py_INCREF(((PyObject*)__pyx_v_hk));
+
+  /* "C:\Documents and Settings\astraw\Desktop\visionegg-devel\src\win32_vretrace.pyx":50 */
+  __pyx_v_VRetrace_Handle = LoadDriver(VRETRACE_NAME);
+
+  /* "C:\Documents and Settings\astraw\Desktop\visionegg-devel\src\win32_vretrace.pyx":51 */
+  __pyx_1 = (__pyx_v_VRetrace_Handle == INVALID_HANDLE_VALUE);
+  if (__pyx_1) {
+
+    /* "C:\Documents and Settings\astraw\Desktop\visionegg-devel\src\win32_vretrace.pyx":52 */
+    __pyx_2 = __Pyx_GetName(__pyx_b, __pyx_n_RuntimeError); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 52; goto __pyx_L1;}
+    __pyx_3 = PyTuple_New(1); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 52; goto __pyx_L1;}
+    Py_INCREF(__pyx_k2p);
+    PyTuple_SET_ITEM(__pyx_3, 0, __pyx_k2p);
+    __pyx_4 = PyObject_CallObject(__pyx_2, __pyx_3); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 52; goto __pyx_L1;}
+    Py_DECREF(__pyx_2); __pyx_2 = 0;
+    Py_DECREF(__pyx_3); __pyx_3 = 0;
+    __Pyx_Raise(__pyx_4, 0, 0);
+    Py_DECREF(__pyx_4); __pyx_4 = 0;
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 52; goto __pyx_L1;}
+    goto __pyx_L2;
+  }
+  __pyx_L2:;
+
+  /* "C:\Documents and Settings\astraw\Desktop\visionegg-devel\src\win32_vretrace.pyx":55 */
+  __pyx_v_dwVersion = 0;
+
+  /* "C:\Documents and Settings\astraw\Desktop\visionegg-devel\src\win32_vretrace.pyx":56 */
+  __pyx_v_success = DeviceIoControl(__pyx_v_VRetrace_Handle,IOCTL_VRETRACE_VERSION,0,0,(&__pyx_v_dwVersion),(sizeof(__pyx_v_dwVersion)),(&__pyx_v_dwReturned),0);
+
+  /* "C:\Documents and Settings\astraw\Desktop\visionegg-devel\src\win32_vretrace.pyx":61 */
+  __pyx_1 = (!__pyx_v_success);
+  if (!__pyx_1) {
+    __pyx_1 = (__pyx_v_dwVersion < 256);
+  }
+  if (__pyx_1) {
+
+    /* "C:\Documents and Settings\astraw\Desktop\visionegg-devel\src\win32_vretrace.pyx":62 */
+    CloseHandle(__pyx_v_VRetrace_Handle);
+
+    /* "C:\Documents and Settings\astraw\Desktop\visionegg-devel\src\win32_vretrace.pyx":63 */
+    __pyx_2 = __Pyx_GetName(__pyx_b, __pyx_n_RuntimeError); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 63; goto __pyx_L1;}
+    __pyx_3 = PyInt_FromLong(__pyx_v_dwVersion); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 63; goto __pyx_L1;}
+    __pyx_4 = PyNumber_Remainder(__pyx_k3p, __pyx_3); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 63; goto __pyx_L1;}
+    Py_DECREF(__pyx_3); __pyx_3 = 0;
+    __pyx_3 = PyTuple_New(1); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 63; goto __pyx_L1;}
+    PyTuple_SET_ITEM(__pyx_3, 0, __pyx_4);
+    __pyx_4 = 0;
+    __pyx_4 = PyObject_CallObject(__pyx_2, __pyx_3); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 63; goto __pyx_L1;}
+    Py_DECREF(__pyx_2); __pyx_2 = 0;
+    Py_DECREF(__pyx_3); __pyx_3 = 0;
+    __Pyx_Raise(__pyx_4, 0, 0);
+    Py_DECREF(__pyx_4); __pyx_4 = 0;
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 63; goto __pyx_L1;}
+    goto __pyx_L3;
+  }
+  __pyx_L3:;
+
+  /* "C:\Documents and Settings\astraw\Desktop\visionegg-devel\src\win32_vretrace.pyx":67 */
+  __pyx_v_dwCycles = 0;
+
+  /* "C:\Documents and Settings\astraw\Desktop\visionegg-devel\src\win32_vretrace.pyx":68 */
+  __pyx_v_success = DeviceIoControl(__pyx_v_VRetrace_Handle,IOCTL_VRETRACE_TEST,(&__pyx_v_dwCycles),(sizeof(__pyx_v_dwCycles)),(&__pyx_v_dwRetCount),(sizeof(__pyx_v_dwRetCount)),(&__pyx_v_dwReturned),0);
+
+  /* "C:\Documents and Settings\astraw\Desktop\visionegg-devel\src\win32_vretrace.pyx":73 */
+  __pyx_1 = (!__pyx_v_success);
+  if (!__pyx_1) {
+    __pyx_1 = (__pyx_v_dwRetCount == 0);
+  }
+  if (__pyx_1) {
+
+    /* "C:\Documents and Settings\astraw\Desktop\visionegg-devel\src\win32_vretrace.pyx":74 */
+    CloseHandle(__pyx_v_VRetrace_Handle);
+
+    /* "C:\Documents and Settings\astraw\Desktop\visionegg-devel\src\win32_vretrace.pyx":75 */
+    __pyx_2 = __Pyx_GetName(__pyx_b, __pyx_n_RuntimeError); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 75; goto __pyx_L1;}
+    __pyx_3 = PyTuple_New(1); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 75; goto __pyx_L1;}
+    Py_INCREF(__pyx_k4p);
+    PyTuple_SET_ITEM(__pyx_3, 0, __pyx_k4p);
+    __pyx_4 = PyObject_CallObject(__pyx_2, __pyx_3); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 75; goto __pyx_L1;}
+    Py_DECREF(__pyx_2); __pyx_2 = 0;
+    Py_DECREF(__pyx_3); __pyx_3 = 0;
+    __Pyx_Raise(__pyx_4, 0, 0);
+    Py_DECREF(__pyx_4); __pyx_4 = 0;
+    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 75; goto __pyx_L1;}
+    goto __pyx_L4;
+  }
+  __pyx_L4:;
+
+  /* "C:\Documents and Settings\astraw\Desktop\visionegg-devel\src\win32_vretrace.pyx":78 */
+  __pyx_2 = PyTuple_New(0); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 78; goto __pyx_L1;}
+  __pyx_3 = PyObject_CallObject(((PyObject*)__pyx_ptype_14win32_vretrace_VRetraceHandleKeeper), __pyx_2); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 78; goto __pyx_L1;}
+  Py_DECREF(__pyx_2); __pyx_2 = 0;
+  if (!__Pyx_TypeTest(__pyx_3, __pyx_ptype_14win32_vretrace_VRetraceHandleKeeper)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 78; goto __pyx_L1;}
+  Py_DECREF(((PyObject *)__pyx_v_hk));
+  ((PyObject *)__pyx_v_hk) = __pyx_3;
+  __pyx_3 = 0;
+
+  /* "C:\Documents and Settings\astraw\Desktop\visionegg-devel\src\win32_vretrace.pyx":79 */
+  __pyx_v_hk->VRetrace_Handle = __pyx_v_VRetrace_Handle;
+
+  /* "C:\Documents and Settings\astraw\Desktop\visionegg-devel\src\win32_vretrace.pyx":80 */
+  Py_INCREF(((PyObject *)__pyx_v_hk));
+  __pyx_r = ((PyObject *)__pyx_v_hk);
+  goto __pyx_L0;
+
+  __pyx_r = Py_None; Py_INCREF(__pyx_r);
+  goto __pyx_L0;
+  __pyx_L1:;
+  Py_XDECREF(__pyx_2);
+  Py_XDECREF(__pyx_3);
+  Py_XDECREF(__pyx_4);
+  __Pyx_AddTraceback("win32_vretrace.LoadVRetraceDriver");
+  __pyx_r = 0;
+  __pyx_L0:;
+  Py_DECREF(__pyx_v_hk);
+  return __pyx_r;
+}
+
+static PyObject *__pyx_f_14win32_vretrace_WaitForRetrace(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static char __pyx_doc_14win32_vretrace_WaitForRetrace[] = "Wait for a vertical retrace signal\n\n    Arguments:\n    wait_start -- if true, will wait for the next retrace if one is already active\n\n    ";
+static PyObject *__pyx_f_14win32_vretrace_WaitForRetrace(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_wait_start = 0;
+  DWORD __pyx_v_dwWaitCode;
+  DWORD __pyx_v_dwReturned;
+  PyObject *__pyx_r;
+  DWORD __pyx_1;
+  static char *__pyx_argnames[] = {"wait_start",0};
+  __pyx_v_wait_start = __pyx_k1;
+  if (!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "|O", __pyx_argnames, &__pyx_v_wait_start)) return 0;
+  Py_INCREF(__pyx_v_wait_start);
+
+  /* "C:\Documents and Settings\astraw\Desktop\visionegg-devel\src\win32_vretrace.pyx":93 */
+  __pyx_1 = PyInt_AsLong(__pyx_v_wait_start); if (PyErr_Occurred()) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 93; goto __pyx_L1;}
+  __pyx_v_dwWaitCode = __pyx_1;
+
+  /* "C:\Documents and Settings\astraw\Desktop\visionegg-devel\src\win32_vretrace.pyx":94 */
+  DeviceIoControl(__pyx_v_14win32_vretrace_hk->VRetrace_Handle,IOCTL_VRETRACE_WAIT,(&__pyx_v_dwWaitCode),(sizeof(__pyx_v_dwWaitCode)),0,0,(&__pyx_v_dwReturned),0);
+
+  __pyx_r = Py_None; Py_INCREF(__pyx_r);
+  goto __pyx_L0;
+  __pyx_L1:;
+  __Pyx_AddTraceback("win32_vretrace.WaitForRetrace");
+  __pyx_r = 0;
+  __pyx_L0:;
+  Py_DECREF(__pyx_v_wait_start);
+  return __pyx_r;
+}
+
+static __Pyx_InternTabEntry __pyx_intern_tab[] = {
+  {&__pyx_n_LoadVRetraceDriver, "LoadVRetraceDriver"},
+  {&__pyx_n_RuntimeError, "RuntimeError"},
+  {&__pyx_n_WAIT_END, "WAIT_END"},
+  {&__pyx_n_WAIT_INSIDE, "WAIT_INSIDE"},
+  {&__pyx_n_WAIT_START, "WAIT_START"},
+  {&__pyx_n_WaitForRetrace, "WaitForRetrace"},
+  {0, 0}
+};
+
+static __Pyx_StringTabEntry __pyx_string_tab[] = {
+  {&__pyx_k2p, __pyx_k2, sizeof(__pyx_k2)},
+  {&__pyx_k3p, __pyx_k3, sizeof(__pyx_k3)},
+  {&__pyx_k4p, __pyx_k4, sizeof(__pyx_k4)},
+  {0, 0, 0}
+};
+
+static PyObject *__pyx_tp_new_14win32_vretrace_VRetraceHandleKeeper(PyTypeObject *t, PyObject *a, PyObject *k) {
+  PyObject *o = (*t->tp_alloc)(t, 0);
+  struct __pyx_obj_14win32_vretrace_VRetraceHandleKeeper *p = (struct __pyx_obj_14win32_vretrace_VRetraceHandleKeeper *)o;
+  return o;
+}
+
+static void __pyx_tp_dealloc_14win32_vretrace_VRetraceHandleKeeper(PyObject *o) {
+  struct __pyx_obj_14win32_vretrace_VRetraceHandleKeeper *p = (struct __pyx_obj_14win32_vretrace_VRetraceHandleKeeper *)o;
+  (*o->ob_type->tp_free)(o);
+}
+
+static int __pyx_tp_traverse_14win32_vretrace_VRetraceHandleKeeper(PyObject *o, visitproc v, void *a) {
+  int e;
+  struct __pyx_obj_14win32_vretrace_VRetraceHandleKeeper *p = (struct __pyx_obj_14win32_vretrace_VRetraceHandleKeeper *)o;
+  return 0;
+}
+
+static int __pyx_tp_clear_14win32_vretrace_VRetraceHandleKeeper(PyObject *o) {
+  struct __pyx_obj_14win32_vretrace_VRetraceHandleKeeper *p = (struct __pyx_obj_14win32_vretrace_VRetraceHandleKeeper *)o;
+  return 0;
+}
+
+static struct PyMethodDef __pyx_methods_14win32_vretrace_VRetraceHandleKeeper[] = {
+  {0, 0, 0, 0}
+};
+
+static PyNumberMethods __pyx_tp_as_number_VRetraceHandleKeeper = {
+  0, /*nb_add*/
+  0, /*nb_subtract*/
+  0, /*nb_multiply*/
+  0, /*nb_divide*/
+  0, /*nb_remainder*/
+  0, /*nb_divmod*/
+  0, /*nb_power*/
+  0, /*nb_negative*/
+  0, /*nb_positive*/
+  0, /*nb_absolute*/
+  0, /*nb_nonzero*/
+  0, /*nb_invert*/
+  0, /*nb_lshift*/
+  0, /*nb_rshift*/
+  0, /*nb_and*/
+  0, /*nb_xor*/
+  0, /*nb_or*/
+  0, /*nb_coerce*/
+  0, /*nb_int*/
+  0, /*nb_long*/
+  0, /*nb_float*/
+  0, /*nb_oct*/
+  0, /*nb_hex*/
+  0, /*nb_inplace_add*/
+  0, /*nb_inplace_subtract*/
+  0, /*nb_inplace_multiply*/
+  0, /*nb_inplace_divide*/
+  0, /*nb_inplace_remainder*/
+  0, /*nb_inplace_power*/
+  0, /*nb_inplace_lshift*/
+  0, /*nb_inplace_rshift*/
+  0, /*nb_inplace_and*/
+  0, /*nb_inplace_xor*/
+  0, /*nb_inplace_or*/
+  0, /*nb_floor_divide*/
+  0, /*nb_true_divide*/
+  0, /*nb_inplace_floor_divide*/
+  0, /*nb_inplace_true_divide*/
+};
+
+static PySequenceMethods __pyx_tp_as_sequence_VRetraceHandleKeeper = {
+  0, /*sq_length*/
+  0, /*sq_concat*/
+  0, /*sq_repeat*/
+  0, /*sq_item*/
+  0, /*sq_slice*/
+  0, /*sq_ass_item*/
+  0, /*sq_ass_slice*/
+  0, /*sq_contains*/
+  0, /*sq_inplace_concat*/
+  0, /*sq_inplace_repeat*/
+};
+
+static PyMappingMethods __pyx_tp_as_mapping_VRetraceHandleKeeper = {
+  0, /*mp_length*/
+  0, /*mp_subscript*/
+  0, /*mp_ass_subscript*/
+};
+
+static PyBufferProcs __pyx_tp_as_buffer_VRetraceHandleKeeper = {
+  0, /*bf_getreadbuffer*/
+  0, /*bf_getwritebuffer*/
+  0, /*bf_getsegcount*/
+  0, /*bf_getcharbuffer*/
+};
+
+statichere PyTypeObject __pyx_type_14win32_vretrace_VRetraceHandleKeeper = {
+  PyObject_HEAD_INIT(0)
+  0, /*ob_size*/
+  "win32_vretrace.VRetraceHandleKeeper", /*tp_name*/
+  sizeof(struct __pyx_obj_14win32_vretrace_VRetraceHandleKeeper), /*tp_basicsize*/
+  0, /*tp_itemsize*/
+  __pyx_tp_dealloc_14win32_vretrace_VRetraceHandleKeeper, /*tp_dealloc*/
+  0, /*tp_print*/
+  0, /*tp_getattr*/
+  0, /*tp_setattr*/
+  0, /*tp_compare*/
+  0, /*tp_repr*/
+  &__pyx_tp_as_number_VRetraceHandleKeeper, /*tp_as_number*/
+  &__pyx_tp_as_sequence_VRetraceHandleKeeper, /*tp_as_sequence*/
+  &__pyx_tp_as_mapping_VRetraceHandleKeeper, /*tp_as_mapping*/
+  0, /*tp_hash*/
+  0, /*tp_call*/
+  0, /*tp_str*/
+  0, /*tp_getattro*/
+  0, /*tp_setattro*/
+  &__pyx_tp_as_buffer_VRetraceHandleKeeper, /*tp_as_buffer*/
+  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_BASETYPE, /*tp_flags*/
+  0, /*tp_doc*/
+  __pyx_tp_traverse_14win32_vretrace_VRetraceHandleKeeper, /*tp_traverse*/
+  __pyx_tp_clear_14win32_vretrace_VRetraceHandleKeeper, /*tp_clear*/
+  0, /*tp_richcompare*/
+  0, /*tp_weaklistoffset*/
+  0, /*tp_iter*/
+  0, /*tp_iternext*/
+  __pyx_methods_14win32_vretrace_VRetraceHandleKeeper, /*tp_methods*/
+  0, /*tp_members*/
+  0, /*tp_getset*/
+  0, /*tp_base*/
+  0, /*tp_dict*/
+  0, /*tp_descr_get*/
+  0, /*tp_descr_set*/
+  0, /*tp_dictoffset*/
+  0, /*tp_init*/
+  0, /*tp_alloc*/
+  __pyx_tp_new_14win32_vretrace_VRetraceHandleKeeper, /*tp_new*/
+  0, /*tp_free*/
+  0, /*tp_is_gc*/
+  0, /*tp_bases*/
+  0, /*tp_mro*/
+  0, /*tp_cache*/
+  0, /*tp_subclasses*/
+  0, /*tp_weaklist*/
+};
+
+static struct PyMethodDef __pyx_methods[] = {
+  {"LoadVRetraceDriver", (PyCFunction)__pyx_f_14win32_vretrace_LoadVRetraceDriver, METH_VARARGS|METH_KEYWORDS, 0},
+  {"WaitForRetrace", (PyCFunction)__pyx_f_14win32_vretrace_WaitForRetrace, METH_VARARGS|METH_KEYWORDS, __pyx_doc_14win32_vretrace_WaitForRetrace},
+  {0, 0, 0, 0}
+};
+
+DL_EXPORT(void) initwin32_vretrace(void); /*proto*/
+DL_EXPORT(void) initwin32_vretrace(void) {
+  PyObject *__pyx_1 = 0;
+  PyObject *__pyx_2 = 0;
+  PyObject *__pyx_3 = 0;
+  PyObject *__pyx_4 = 0;
+  __pyx_m = Py_InitModule4("win32_vretrace", __pyx_methods, 0, 0, PYTHON_API_VERSION);
+  if (!__pyx_m) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5; goto __pyx_L1;};
+  __pyx_b = PyImport_AddModule("__builtin__");
+  if (!__pyx_b) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5; goto __pyx_L1;};
+  if (PyObject_SetAttrString(__pyx_m, "__builtins__", __pyx_b) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5; goto __pyx_L1;};
+  if (__Pyx_InternStrings(__pyx_intern_tab) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5; goto __pyx_L1;};
+  if (__Pyx_InitStrings(__pyx_string_tab) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5; goto __pyx_L1;};
+  ((PyObject*)__pyx_v_14win32_vretrace_hk) = Py_None; Py_INCREF(((PyObject*)__pyx_v_14win32_vretrace_hk));
+  if (PyType_Ready(&__pyx_type_14win32_vretrace_VRetraceHandleKeeper) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 40; goto __pyx_L1;}
+  if (PyObject_SetAttrString(__pyx_m, "VRetraceHandleKeeper", (PyObject *)&__pyx_type_14win32_vretrace_VRetraceHandleKeeper) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 40; goto __pyx_L1;}
+  __pyx_ptype_14win32_vretrace_VRetraceHandleKeeper = &__pyx_type_14win32_vretrace_VRetraceHandleKeeper;
+
+  /* "C:\Documents and Settings\astraw\Desktop\visionegg-devel\src\win32_vretrace.pyx":36 */
+  __pyx_1 = PyInt_FromLong(VRETRACE_WAIT_INSIDE); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 36; goto __pyx_L1;}
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_WAIT_INSIDE, __pyx_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 36; goto __pyx_L1;}
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
+
+  /* "C:\Documents and Settings\astraw\Desktop\visionegg-devel\src\win32_vretrace.pyx":37 */
+  __pyx_1 = PyInt_FromLong(VRETRACE_WAIT_START); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 37; goto __pyx_L1;}
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_WAIT_START, __pyx_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 37; goto __pyx_L1;}
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
+
+  /* "C:\Documents and Settings\astraw\Desktop\visionegg-devel\src\win32_vretrace.pyx":38 */
+  __pyx_1 = PyInt_FromLong(VRETRACE_WAIT_END); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 38; goto __pyx_L1;}
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_WAIT_END, __pyx_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 38; goto __pyx_L1;}
+  Py_DECREF(__pyx_1); __pyx_1 = 0;
+
+  /* "C:\Documents and Settings\astraw\Desktop\visionegg-devel\src\win32_vretrace.pyx":82 */
+  __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n_WAIT_START); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 82; goto __pyx_L1;}
+  __pyx_k1 = __pyx_1;
+  __pyx_1 = 0;
+
+  /* "C:\Documents and Settings\astraw\Desktop\visionegg-devel\src\win32_vretrace.pyx":101 */
+  __pyx_2 = __Pyx_GetName(__pyx_m, __pyx_n_LoadVRetraceDriver); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 101; goto __pyx_L1;}
+  __pyx_3 = PyTuple_New(0); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 101; goto __pyx_L1;}
+  __pyx_4 = PyObject_CallObject(__pyx_2, __pyx_3); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 101; goto __pyx_L1;}
+  Py_DECREF(__pyx_2); __pyx_2 = 0;
+  Py_DECREF(__pyx_3); __pyx_3 = 0;
+  if (!__Pyx_TypeTest(__pyx_4, __pyx_ptype_14win32_vretrace_VRetraceHandleKeeper)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 101; goto __pyx_L1;}
+  Py_DECREF(((PyObject *)__pyx_v_14win32_vretrace_hk));
+  ((PyObject *)__pyx_v_14win32_vretrace_hk) = __pyx_4;
+  __pyx_4 = 0;
+  return;
+  __pyx_L1:;
+  Py_XDECREF(__pyx_1);
+  Py_XDECREF(__pyx_2);
+  Py_XDECREF(__pyx_3);
+  Py_XDECREF(__pyx_4);
+  __Pyx_AddTraceback("win32_vretrace");
+}
+
+static char *__pyx_filenames[] = {
+  "win32_vretrace.pyx",
+};
+statichere char **__pyx_f = __pyx_filenames;
+
+/* Runtime support code */
+
+static PyObject *__Pyx_GetName(PyObject *dict, PyObject *name) {
+    PyObject *result;
+    result = PyObject_GetAttr(dict, name);
+    if (!result)
+        PyErr_SetObject(PyExc_NameError, name);
+    return result;
+}
+
+static int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type) {
+    if (!type) {
+        PyErr_Format(PyExc_SystemError, "Missing type object");
+        return 0;
+    }
+    if (obj == Py_None || PyObject_TypeCheck(obj, type))
+        return 1;
+    PyErr_Format(PyExc_TypeError, "Cannot convert %s to %s",
+        obj->ob_type->tp_name, type->tp_name);
+    return 0;
+}
+
+static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb) {
+    Py_XINCREF(type);
+    Py_XINCREF(value);
+    Py_XINCREF(tb);
+    /* First, check the traceback argument, replacing None with NULL. */
+    if (tb == Py_None) {
+        Py_DECREF(tb);
+        tb = 0;
+    }
+    else if (tb != NULL && !PyTraceBack_Check(tb)) {
+        PyErr_SetString(PyExc_TypeError,
+            "raise: arg 3 must be a traceback or None");
+        goto raise_error;
+    }
+    /* Next, replace a missing value with None */
+    if (value == NULL) {
+        value = Py_None;
+        Py_INCREF(value);
+    }
+    /* Next, repeatedly, replace a tuple exception with its first item */
+    while (PyTuple_Check(type) && PyTuple_Size(type) > 0) {
+        PyObject *tmp = type;
+        type = PyTuple_GET_ITEM(type, 0);
+        Py_INCREF(type);
+        Py_DECREF(tmp);
+    }
+    if (PyString_Check(type))
+        ;
+    else if (PyClass_Check(type))
+        ; /*PyErr_NormalizeException(&type, &value, &tb);*/
+    else if (PyInstance_Check(type)) {
+        /* Raising an instance.  The value should be a dummy. */
+        if (value != Py_None) {
+            PyErr_SetString(PyExc_TypeError,
+              "instance exception may not have a separate value");
+            goto raise_error;
+        }
+        else {
+            /* Normalize to raise <class>, <instance> */
+            Py_DECREF(value);
+            value = type;
+            type = (PyObject*) ((PyInstanceObject*)type)->in_class;
+            Py_INCREF(type);
+        }
+    }
+    else {
+        /* Not something you can raise.  You get an exception
+           anyway, just not what you specified :-) */
+        PyErr_Format(PyExc_TypeError,
+                 "exceptions must be strings, classes, or "
+                 "instances, not %s", type->ob_type->tp_name);
+        goto raise_error;
+    }
+    PyErr_Restore(type, value, tb);
+    return;
+raise_error:
+    Py_XDECREF(value);
+    Py_XDECREF(type);
+    Py_XDECREF(tb);
+    return;
+}
+
+static int __Pyx_InternStrings(__Pyx_InternTabEntry *t) {
+    while (t->p) {
+        *t->p = PyString_InternFromString(t->s);
+        if (!*t->p)
+            return -1;
+        ++t;
+    }
+    return 0;
+}
+
+static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) {
+    while (t->p) {
+        *t->p = PyString_FromStringAndSize(t->s, t->n - 1);
+        if (!*t->p)
+            return -1;
+        ++t;
+    }
+    return 0;
+}
+
+#include "compile.h"
+#include "frameobject.h"
+#include "traceback.h"
+
+static void __Pyx_AddTraceback(char *funcname) {
+    PyObject *py_srcfile = 0;
+    PyObject *py_funcname = 0;
+    PyObject *py_globals = 0;
+    PyObject *empty_tuple = 0;
+    PyObject *empty_string = 0;
+    PyCodeObject *py_code = 0;
+    PyFrameObject *py_frame = 0;
+    
+    py_srcfile = PyString_FromString(__pyx_filename);
+    if (!py_srcfile) goto bad;
+    py_funcname = PyString_FromString(funcname);
+    if (!py_funcname) goto bad;
+    py_globals = PyModule_GetDict(__pyx_m);
+    if (!py_globals) goto bad;
+    empty_tuple = PyTuple_New(0);
+    if (!empty_tuple) goto bad;
+    empty_string = PyString_FromString("");
+    if (!empty_string) goto bad;
+    py_code = PyCode_New(
+        0,            /*int argcount,*/
+        0,            /*int nlocals,*/
+        0,            /*int stacksize,*/
+        0,            /*int flags,*/
+        empty_string, /*PyObject *code,*/
+        empty_tuple,  /*PyObject *consts,*/
+        empty_tuple,  /*PyObject *names,*/
+        empty_tuple,  /*PyObject *varnames,*/
+        empty_tuple,  /*PyObject *freevars,*/
+        empty_tuple,  /*PyObject *cellvars,*/
+        py_srcfile,   /*PyObject *filename,*/
+        py_funcname,  /*PyObject *name,*/
+        __pyx_lineno,   /*int firstlineno,*/
+        empty_string  /*PyObject *lnotab*/
+    );
+    if (!py_code) goto bad;
+    py_frame = PyFrame_New(
+        PyThreadState_Get(), /*PyThreadState *tstate,*/
+        py_code,             /*PyCodeObject *code,*/
+        py_globals,          /*PyObject *globals,*/
+        0                    /*PyObject *locals*/
+    );
+    if (!py_frame) goto bad;
+    py_frame->f_lineno = __pyx_lineno;
+    PyTraceBack_Here(py_frame);
+bad:
+    Py_XDECREF(py_srcfile);
+    Py_XDECREF(py_funcname);
+    Py_XDECREF(empty_tuple);
+    Py_XDECREF(empty_string);
+    Py_XDECREF(py_code);
+    Py_XDECREF(py_frame);
+}
diff --git a/VisionEgg/win32_vretrace.pyx b/VisionEgg/win32_vretrace.pyx
new file mode 100644
index 0000000..cc13405
--- /dev/null
+++ b/VisionEgg/win32_vretrace.pyx
@@ -0,0 +1,102 @@
+# emacs, this is -*-Python-*- mode
+
+# See http://www.compuphase.com/vretrace.htm
+
+cdef extern from "windows.h":
+    ctypedef void* HANDLE
+    ctypedef void* LPVOID
+    ctypedef char* LPSTR
+    ctypedef int BOOL
+    ctypedef int DWORD
+    ctypedef DWORD* LPDWORD
+    ctypedef void* LPOVERLAPPED
+    ctypedef int size_t
+    
+    cdef HANDLE INVALID_HANDLE_VALUE
+    cdef size_t sizeof(DWORD)
+    cdef BOOL DeviceIoControl(HANDLE, DWORD, LPVOID, DWORD,
+                              LPVOID, DWORD, LPDWORD, LPOVERLAPPED)
+    #int, void*, size_t, void*, size_t, void*, size_t)
+    cdef void CloseHandle(HANDLE)
+                         
+cdef extern from "win32_load_driver.h":
+    HANDLE LoadDriver(LPSTR DriverName)
+
+cdef extern from "win32_vretrace_orig.h":
+    cdef char * VRETRACE_NAME # "VRETRACE"
+    cdef int IOCTL_VRETRACE_VERSION
+    cdef int IOCTL_VRETRACE_TEST
+    cdef int IOCTL_VRETRACE_WAIT
+    
+    cdef DWORD VRETRACE_WAIT_INSIDE
+    cdef DWORD VRETRACE_WAIT_START
+    cdef DWORD VRETRACE_WAIT_END
+
+# some constants
+WAIT_INSIDE = VRETRACE_WAIT_INSIDE
+WAIT_START = VRETRACE_WAIT_START
+WAIT_END = VRETRACE_WAIT_END
+    
+cdef class VRetraceHandleKeeper:
+    cdef HANDLE VRetrace_Handle
+
+def LoadVRetraceDriver():
+    cdef BOOL success
+    cdef HANDLE VRetrace_Handle
+    cdef DWORD dwVersion
+    cdef DWORD dwCycles, dwRetCount, dwReturned
+    cdef VRetraceHandleKeeper hk
+    
+    VRetrace_Handle = LoadDriver(VRETRACE_NAME)
+    if VRetrace_Handle == INVALID_HANDLE_VALUE:
+        raise RuntimeError('Could not load driver VRETRACE.SYS')
+
+    # check the version (should be non-zero)
+    dwVersion = 0
+    success = DeviceIoControl(VRetrace_Handle, IOCTL_VRETRACE_VERSION,
+                              NULL, 0,
+                              &dwVersion, sizeof(dwVersion),
+                              &dwReturned, NULL)
+
+    if not success or dwVersion < 0x100:
+        CloseHandle(VRetrace_Handle)
+        raise RuntimeError('Invalid version (%lx) returned'%dwVersion)
+    
+    # if we got the vertical retrace driver, check whether the video
+    # card vertical retraces at all
+    dwCycles = 0
+    success = DeviceIoControl(VRetrace_Handle, IOCTL_VRETRACE_TEST,
+                              &dwCycles, sizeof(dwCycles),
+                              &dwRetCount, sizeof(dwRetCount),
+                              &dwReturned, NULL);
+
+    if not success or dwRetCount == 0:
+        CloseHandle(VRetrace_Handle)
+        raise RuntimeError('No vertical retrace detected')
+
+    # return the handle for later use
+    hk = VRetraceHandleKeeper()
+    hk.VRetrace_Handle = VRetrace_Handle
+    return hk
+
+def WaitForRetrace(wait_start=WAIT_START):
+    """Wait for a vertical retrace signal
+
+    Arguments:
+    wait_start -- if true, will wait for the next retrace if one is already active
+
+    """
+    
+    cdef DWORD dwWaitCode, dwReturned
+    global hk
+    
+    dwWaitCode = wait_start
+    DeviceIoControl(hk.VRetrace_Handle, IOCTL_VRETRACE_WAIT,
+                    &dwWaitCode,
+                    sizeof(dwWaitCode),
+                    NULL, 0,
+                    &dwReturned, NULL)
+
+cdef VRetraceHandleKeeper hk
+hk = LoadVRetraceDriver() # initialize driver and keep handle to it
+
diff --git a/VisionEgg/win32_vretrace_orig.h b/VisionEgg/win32_vretrace_orig.h
new file mode 100644
index 0000000..f08fb32
--- /dev/null
+++ b/VisionEgg/win32_vretrace_orig.h
@@ -0,0 +1,72 @@
+/* This file from the original distribution available at
+   http://www.compuphase.com/vretrace.htm */
+
+;/*`........................... assembly language ...................
+;
+; Constants
+;
+
+; #define CTL_CODE( DeviceType, Function, Method, Access ) (                 \
+;     ((DeviceType) << 16) | ((Access) << 14) | ((Function) << 2) | (Method) \
+; )
+;
+; #define METHOD_BUFFERED                 0
+; #define METHOD_IN_DIRECT                1
+; #define METHOD_OUT_DIRECT               2
+; #define METHOD_NEITHER                  3
+;
+; #define FILE_ANY_ACCESS                 0
+; #define FILE_READ_ACCESS          ( 0x0001 )    // file & pipe
+; #define FILE_WRITE_ACCESS         ( 0x0002 )    // file & pipe
+
+
+METHOD_BUFFERED     EQU   0t
+METHOD_IN_DIRECT    EQU   1t
+METHOD_OUT_DIRECT   EQU   2t
+METHOD_NEITHER      EQU   3t
+FILE_ANY_ACCESS     EQU   0t
+FILE_READ_ACCESS    EQU   000000001h
+FILE_WRITE_ACCESS   EQU   000000002h
+
+VR_TYPE                 EQU   00000c000h
+
+IOCTL_CLOSE_HANDLE      EQU   -1
+IOCTL_OPEN_HANDLE       EQU   0
+
+IOCTL_VRETRACE_VERSION  EQU   0c0002000h
+IOCTL_VRETRACE_TEST     EQU   0c0002004h
+IOCTL_VRETRACE_WAIT     EQU   0c0002008h
+
+VRETRACE_WAIT_INSIDE    EQU   0
+VRETRACE_WAIT_START     EQU   1
+VRETRACE_WAIT_END       EQU   2
+
+ comment `..................... C language ......................... */
+
+#if !defined _NTDDK_
+  #include <winioctl.h>
+#endif
+
+// Driver names, add extensions .VXD and .SYS for the filenames
+#define VRETRACE_NAME   "VRETRACE"
+
+// Device type --- in the "User Defined" range."
+#define VR_TYPE             0xc000
+
+// IOCTL commands for both the VxD and the Kernel Mode driver
+//      IOCTL_CLOSE_HANDLE            // predefined for VxDs at -1
+//      IOCTL_OPEN_HANDLE             // predefined for VxDs at 0
+        // get the version of the driver
+#define IOCTL_VRETRACE_VERSION  CTL_CODE(VR_TYPE, 0x0800, METHOD_BUFFERED, FILE_ANY_ACCESS)
+        // check whether Vertical Retrace is available
+#define IOCTL_VRETRACE_TEST     CTL_CODE(VR_TYPE, 0x0801, METHOD_BUFFERED, FILE_ANY_ACCESS)            // test if vertical retraces are supported
+        // wait for vertical retrace
+#define IOCTL_VRETRACE_WAIT     CTL_CODE(VR_TYPE, 0x0802, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+enum {
+  VRETRACE_WAIT_INSIDE,
+  VRETRACE_WAIT_START,
+  VRETRACE_WAIT_END
+};
+
+//`........................... END .................................
diff --git a/bootstrap.py b/bootstrap.py
new file mode 100644
index 0000000..7728587
--- /dev/null
+++ b/bootstrap.py
@@ -0,0 +1,77 @@
+##############################################################################
+#
+# Copyright (c) 2006 Zope Corporation and Contributors.
+# All Rights Reserved.
+#
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL).  A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
+#
+##############################################################################
+"""Bootstrap a buildout-based project
+
+Simply run this script in a directory containing a buildout.cfg.
+The script accepts buildout command-line options, so you can
+use the -c option to specify an alternate configuration file.
+
+$Id$
+"""
+
+import os, shutil, sys, tempfile, urllib2
+
+tmpeggs = tempfile.mkdtemp()
+
+is_jython = sys.platform.startswith('java')
+
+try:
+    import pkg_resources
+except ImportError:
+    ez = {}
+    exec urllib2.urlopen('http://peak.telecommunity.com/dist/ez_setup.py'
+                         ).read() in ez
+    ez['use_setuptools'](to_dir=tmpeggs, download_delay=0)
+
+    import pkg_resources
+
+if sys.platform == 'win32':
+    def quote(c):
+        if ' ' in c:
+            return '"%s"' % c # work around spawn lamosity on windows
+        else:
+            return c
+else:
+    def quote (c):
+        return c
+
+cmd = 'from setuptools.command.easy_install import main; main()'
+ws  = pkg_resources.working_set
+
+if is_jython:
+    import subprocess
+    
+    assert subprocess.Popen([sys.executable] + ['-c', quote(cmd), '-mqNxd', 
+           quote(tmpeggs), 'zc.buildout'], 
+           env=dict(os.environ,
+               PYTHONPATH=
+               ws.find(pkg_resources.Requirement.parse('setuptools')).location
+               ),
+           ).wait() == 0
+
+else:
+    assert os.spawnle(
+        os.P_WAIT, sys.executable, quote (sys.executable),
+        '-c', quote (cmd), '-mqNxd', quote (tmpeggs), 'zc.buildout',
+        dict(os.environ,
+            PYTHONPATH=
+            ws.find(pkg_resources.Requirement.parse('setuptools')).location
+            ),
+        ) == 0
+
+ws.add_entry(tmpeggs)
+ws.require('zc.buildout')
+import zc.buildout.buildout
+zc.buildout.buildout.main(sys.argv[1:] + ['bootstrap'])
+shutil.rmtree(tmpeggs)
diff --git a/build-demo-dir.py b/build-demo-dir.py
new file mode 100755
index 0000000..8625f38
--- /dev/null
+++ b/build-demo-dir.py
@@ -0,0 +1,13 @@
+import sys, os, glob
+
+demos = glob.glob('demo/*.py') + ['check-config.py'] + glob.glob('test/*.py')
+outdir = 'demo-dist'
+os.mkdir(outdir)
+os.mkdir(os.path.join(outdir,'test'))
+for d in demos:
+    if d.startswith('test'):
+        newname = os.path.join(outdir,d)
+    else:
+        newname = os.path.join(outdir,os.path.split(d)[-1])
+    print d
+    os.link(d,newname)
diff --git a/build-win-exe-demos.py b/build-win-exe-demos.py
new file mode 100755
index 0000000..44c6db3
--- /dev/null
+++ b/build-win-exe-demos.py
@@ -0,0 +1,75 @@
+# In addition to running this script, there are additional things that
+# must be done to build the binary demos:
+
+# For the demos to find the font file, we modify
+# site-packages/VisionEgg/Text.py to include r'.\freesansbold.ttf' as
+# the default font. (in Text.__init__
+# self.font = pygame.font.Font(r'.\freesansbold.ttf',cp.font_size)
+
+# In VisionEgg.cfg, set VISIONEGG_LOG_TO_STDERR = 0.
+
+import sys
+import setup # our setup.py file
+import distutils.core
+import py2exe
+
+numarray_includes=['numarray.libnumarray',
+                   'numarray.memory',
+                   'numarray._bytes',
+                   'numarray._chararray',
+                   'numarray._conv',
+                   'numarray._converter',
+                   'numarray._ndarray',
+                   'numarray._numarray',
+                   'numarray._operator',
+                   'numarray._sort',
+                   'numarray._ufunc',
+                   'numarray._ufuncBool',
+                   'numarray._ufuncComplex32',
+                   'numarray._ufuncComplex64',
+                   'numarray._ufuncFloat32',
+                   'numarray._ufuncFloat64',
+                   'numarray._ufuncInt16',
+                   'numarray._ufuncInt32',
+                   'numarray._ufuncInt64',
+                   'numarray._ufuncInt8',
+                   'numarray._ufuncUInt16',
+                   'numarray._ufuncUInt32',
+                   'numarray._ufuncUInt64',
+                   'numarray._ufuncUInt8',
+                   ]
+tk_excludes=[
+    'Tkconstants',
+    'Tkinter',
+    'tcl',
+    ]
+
+import sys, os, glob
+
+windowed_scripts = glob.glob(r'demo\*.py')
+
+data_files = []
+for d in setup.data_files:
+    todir = d[0]
+    source = d[1]
+    todir = os.path.normpath(todir.replace( 'VisionEgg','.'))
+    source = [s for s in source if not s.endswith('.py')] # don't include .py files
+    data_files.append( (todir,source) )
+
+# include pygame font
+data_files.append( ('.',[os.path.join(sys.prefix,
+                                      'lib','site-packages','pygame','freesansbold.ttf'),
+                         ]))
+print data_files
+console_scripts = ['check-config.py']
+#1/0
+distutils.core.setup(
+    windows=windowed_scripts,
+    console=console_scripts,
+    data_files=data_files,
+    options={"py2exe":{"optimize":2,
+                       "includes":numarray_includes,
+                       #"excludes":tk_excludes,
+                       "dll_excludes": ["glut32.dll"],
+                       },},
+    )
diff --git a/buildout.cfg b/buildout.cfg
new file mode 100644
index 0000000..e6b42ee
--- /dev/null
+++ b/buildout.cfg
@@ -0,0 +1,17 @@
+[buildout]
+parts = test python
+develop = .
+eggs = VisionEgg
+
+[test]
+recipe = pbp.recipe.noserunner
+eggs =
+  pbp.recipe.noserunner
+  ${buildout:eggs}
+working-directory = ${buildout:directory}
+
+[python]
+recipe = zc.recipe.egg
+interpreter = python
+eggs =
+  ${buildout:eggs}
diff --git a/check-config.py b/check-config.py
new file mode 100755
index 0000000..917bd40
--- /dev/null
+++ b/check-config.py
@@ -0,0 +1,332 @@
+#!/usr/bin/env python
+"""check-config.py -- VisionEgg configuration check
+
+Run this program first to check the installation status or version
+number of the Vision Egg.
+
+"""
+
+import sys, string, os, traceback
+
+# Mac OS X weirdness:
+
+gui_ok = 1
+
+print "check-config.py for Vision Egg 1.0"
+print "[%s CVS revision %s]"%(__date__,__cvs__)
+print "Beginning configuration check."
+
+if sys.platform == 'darwin':
+
+    try:
+        if not os.path.isabs(sys.argv[0]):
+
+            print """Mac OS X - It appears you are running this script
+            from the commandline -- turning off GUIs."""
+
+            gui_ok = 0
+    except Exception, x:
+        raise
+    print
+
+# sys.stdout and sys.stderr hard to see:
+
+if sys.platform in ['darwin','mac','win32'] and gui_ok:
+    try:
+        import Tkinter
+        class showwarning(Tkinter.Frame):
+            def format_string(self,in_str):
+                min_line_length = 65
+                in_list = string.split(in_str)
+                out_str = ""
+                cur_line = ""
+                for word in in_list:
+                    cur_line = cur_line + word + " "
+                    if len(cur_line) > min_line_length:
+                        out_str = out_str + cur_line[:-1] + "\n"
+                        cur_line = ""
+                out_str = out_str + cur_line
+                return out_str
+            def close_window(self,dummy_arg=None):
+                #self.destroy()
+                self.winfo_toplevel().destroy()
+            def __init__(self,title="Vision Egg Warning",message=None):
+                Tkinter.Frame.__init__(self,borderwidth=20)
+                #self.focus_force()
+                self.pack()
+                self.winfo_toplevel().title(title)
+                Tkinter.Label(self,text=self.format_string(message)).pack()
+                b = Tkinter.Button(self,text="OK",command=self.close_window)
+                b.pack()
+                b.focus_force()
+                b.bind('<Return>',self.close_window)
+                self.mainloop()
+        if sys.platform == 'darwin':
+
+            add_str = """ To see this information, switch to the
+            Terminal window that should have opened when you launched
+            this program."""
+
+        elif sys.platform == 'win32':
+
+            add_str = """ After this script has finished, a second GUI
+            window will appear.  Until the second window is closed,
+            the console will be available for viewing."""
+
+        else:
+
+            add_str = """ Information specific to your platform has
+            not been written yet."""
+
+        showwarning(title="Conole location warning",
+                    message=
+
+            """This script displays information on the console, which
+            is not readily visible on this platform."""+add_str)
+
+    except:
+        print "(Failed to open dialog box-- is Tkinter installed?)"
+
+# Import
+unknown_import_fail = 0
+
+import ConfigParser # If this line fails, you have an old version of Python.
+
+try:
+    import VisionEgg
+except ImportError:
+    print """Could not import the VisionEgg module.
+
+    This is probably because it is not yet installed.
+
+    Try installing by running 'python setup.py install' from the
+    command line (as root if necessary).
+
+    The exception raised was:"""
+    traceback.print_exc()
+except AttributeError, x:
+    if str(x) != "'module' object has no attribute 'release_name'":
+        unknown_import_fail = 1
+        traceback.print_exc()
+    else:
+        try:
+            def my_import(name):
+                mod = __import__(name)
+                components = string.split(name, '.')
+                for comp in components[1:]:
+                    mod = getattr(mod, comp)
+                    return mod
+            mod = my_import("VisionEgg.VisionEgg")
+            if mod.__name__ == "VisionEgg.VisionEgg":
+                print """**********************************************************
+YOU APPEAR TO HAVE AN OLD COPY OF THE VISION EGG INSTALLED
+
+Please remove the old installation directory and re-install.
+
+The old installation directory is %s
+**********************************************************"""%(os.path.abspath(os.path.dirname(mod.__file__)),)
+            else:
+                unknown_import_fail = 1
+                traceback.print_exc()
+        except:
+            unknown_import_fail = 1
+            traceback.print_exc()
+except (ConfigParser.MissingSectionHeaderError, ConfigParser.NoSectionError):
+        print """**********************************************************
+YOU APPEAR TO HAVE AN OLD OR BROKEN COPY "VisionEgg.cfg" INSTALLED
+
+Please remove or rename the the file at the location specified above
+and re-install.
+
+The file name and location should be printed above.
+**********************************************************"""
+
+except:
+    unknown_import_fail = 1
+    traceback.print_exc()
+
+if unknown_import_fail:
+    print """**********************************************************
+
+Could not import the VisionEgg module for an unknown reason.  See the
+traceback printed above.
+
+**********************************************************"""
+
+# Finally, do it!
+
+if 'VisionEgg' in globals().keys():
+    print "VisionEgg version %s"%(VisionEgg.release_name,)
+    print
+    print "VisionEgg modules in %s"%(os.path.split(os.path.abspath(VisionEgg.__file__))[0],)
+    print "VisionEgg system directory %s"%(VisionEgg.config.VISIONEGG_SYSTEM_DIR,)
+    print "VisionEgg user directory %s"%(VisionEgg.config.VISIONEGG_USER_DIR,)
+    print
+    if VisionEgg.config.VISIONEGG_CONFIG_FILE:
+        print "Config file found at %s"%(VisionEgg.config.VISIONEGG_CONFIG_FILE,)
+    else:
+        configuration_src = '<unable to find>'
+        try:
+            import VisionEgg.Configuration
+            configuration_src = VisionEgg.Configuration.__file__
+        except:
+            pass
+        print "No config file found, using defaults from file %s"%(configuration_src,)
+
+    print
+    for configname in dir(VisionEgg.config):
+        if not configname.startswith('_'):
+            print configname + " = " + str(getattr(VisionEgg.config,configname))
+    print
+
+    # Check for old demo install location
+    if sys.executable != sys.argv[0]:
+        # Not running as binary executable in own demo directory
+        old_demo_install_dir = os.path.join(VisionEgg.config.VISIONEGG_SYSTEM_DIR,'demo')
+        if os.path.isdir(old_demo_install_dir):
+            print """
+            ************************************************************
+
+            WARNING: You have the old Vision Egg demos in
+
+            %(old_demo_install_dir)s
+
+            Although the old demos will not cause problems for Vision
+            Egg scripts, they may lead to confusion.  Therefore, you
+            should remove this directory and its contents.
+
+            The new demos (and documentation) are no longer installed,
+            but available with the source code or as a separate
+            package.
+
+            ************************************************************
+            """%locals()
+    # These things have been removed from the installed library directory.
+    # Print error if it's still around
+    ancient_VisionEgg_files = ['AppHelper.py', # old module
+                               'AppHelper.pyo', # old module
+                               'AppHelper.pyc', # old module
+                               'demo', # old install location
+                               'test', # old install location
+                               ]
+    try:
+        files_installed = os.listdir(os.path.dirname(VisionEgg.__file__))
+    except:
+        files_installed = []
+    ancient_files = []
+    for filename in ancient_VisionEgg_files:
+        if filename in files_installed:
+            ancient_files.append(filename)
+    if len(ancient_files):
+        print """        ************************************************************
+
+        WARNING: The following files were found in your VisionEgg
+        library directory:
+
+        %s
+
+        The library directory is %s
+
+        These files are from old installations of the Vision
+        Egg. Although they will not cause problems unless your scripts
+        import them, they may lead to confusion.
+
+        ************************************************************
+
+        """%(string.join(ancient_files),os.path.abspath(os.path.dirname(VisionEgg.__file__)))
+else:
+    print "VisionEgg not installed (or other VisionEgg import problems)"
+    print
+    print "Continuing with prerequisites check."
+    print
+
+print "Version checklist:"
+
+print
+
+print "Python version %s"%(string.split(sys.version)[0],),
+if sys.version >= '2.3':
+    print "(OK)"
+else:
+    print "(Unsupported, probably won't work)"
+print "extra Python info:",string.join(string.split(sys.version)[1:])
+
+try:
+    import numpy
+    print "numpy version %s"%(numpy.__version__,),
+    if numpy.__version__ >= '1.0':
+        print "(OK)"
+    else:
+        print "(Untested)"
+except:
+    print "numpy failed"
+
+try:
+    import OpenGL
+    print 'PyOpenGL (package "OpenGL") version %s'%(OpenGL.__version__,),
+    if OpenGL.__version__ >= '2.0':
+        # 2.x is OK
+        print "(OK)"
+    else:
+        print "(WILL FAIL)"
+except:
+    print 'PyOpenGL (package "OpenGL") failed'
+
+try:
+    import pygame.version
+    print "pygame version %s"%(pygame.version.ver,),
+    if pygame.version.ver >= '1.5.3':
+        print "(OK)"
+    else:
+        print "(Unsupported, probably won't work)"
+except Exception, x:
+    print "pygame failed:",str(x.__class__),str(x)
+
+try:
+    import Image # PIL
+    print 'Python Imaging Library (package "Image") version %s'%(Image.VERSION,),
+    if Image.VERSION >= '1.1.2':
+        print "(OK)"
+    else:
+        print "(Untested)"
+except:
+    print 'Python Imaging Library (package "Image") failed'
+
+print
+
+print "Optional module(s):"
+
+print
+
+try:
+    import Pyro.core
+    print "Pyro version %s"%(Pyro.core.constants.VERSION,),
+    if Pyro.core.constants.VERSION >= '2.7':
+        print "(OK)"
+    else:
+        print "(Untested)"
+except:
+    print "Pyro failed"
+
+if sys.platform == 'win32':
+    try:
+        import winioport
+        print "winioport",
+        try:
+            winioport.out(0x378,0)
+            print "(appears to work)"
+        except:
+            print "(not working)"
+    except:
+        print "winioport failed"
+
+if gui_ok and sys.platform == 'win32':
+    showwarning(title="View the console",
+                             message=
+
+        """This dialog keeps the console open until you close it.
+        Although by default the Vision Egg prints everything
+        (including errors) to VisionEgg.log, it may be necessary to
+        view the console.  In that case, you have to run the script
+        from the command line so that the console does not disappear
+        when the program is finished executing.""")
diff --git a/debian/changelog b/debian/changelog
deleted file mode 100644
index 051320a..0000000
--- a/debian/changelog
+++ /dev/null
@@ -1,15 +0,0 @@
-visionegg (1.2.1-2) unstable; urgency=medium
-
-  * Fix problem when importing PIL
-    Closes: #737828
-  * cme fix dpkg-control
-  * citation information
-
- -- Andreas Tille <tille at debian.org>  Fri, 09 May 2014 11:13:10 +0200
-
-visionegg (1.2.1-1) unstable; urgency=low
-
-  * initial version (Closes: #365856)
-
- -- Thorsten Alteholz <debian at alteholz.de>  Tue, 16 Apr 2013 18:00:07 +0200
-
diff --git a/debian/compat b/debian/compat
deleted file mode 100644
index ec63514..0000000
--- a/debian/compat
+++ /dev/null
@@ -1 +0,0 @@
-9
diff --git a/debian/control b/debian/control
deleted file mode 100644
index afbe680..0000000
--- a/debian/control
+++ /dev/null
@@ -1,30 +0,0 @@
-Source: visionegg
-Maintainer: Debian Med Packaging Team <debian-med-packaging at lists.alioth.debian.org>
-Uploaders: Thorsten Alteholz <debian at alteholz.de>,
-           Andreas Tille <tille at debian.org>
-Section: python
-Priority: optional
-Build-Depends: debhelper (>= 9),
-               python-all-dev,
-               python-setuptools,
-               python-numpy,
-               python-imaging,
-               python-opengl,
-               python-pygame,
-               mesa-common-dev,
-               libgl1-mesa-dev
-Standards-Version: 3.9.5
-Vcs-Browser: http://anonscm.debian.org/viewvc/debian-med/trunk/packages/visionegg/trunk/
-Vcs-Svn: svn://anonscm.debian.org/debian-med/trunk/packages/visionegg/trunk/
-Homepage: http://www.visionegg.org
-
-Package: python-visionegg
-Architecture: any
-Depends: ${shlibs:Depends},
-         ${misc:Depends},
-         ${python:Depends},
-         libgl1-mesa-glx
-Description: Python library for 2D/3D visual stimulus generation
- The Vision Egg is a programming library that uses standard, inexpensive 
- computer graphics cards to produce visual stimuli for vision research 
- experiments.
diff --git a/debian/copyright b/debian/copyright
deleted file mode 100644
index 68f2076..0000000
--- a/debian/copyright
+++ /dev/null
@@ -1,85 +0,0 @@
-Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
-Upstream-Name: visionegg
-Source: http://www.visionegg.org
-
-Files: *
-Copyright: 2001-2003 Andrew Straw
-           2004-2008 California Institute of Technology
-License: LGPL 2.1
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
- .
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- Lesser General Public License for more details.
- .
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
- .
- On Debian systems, the complete text of the GNU Lesser General
- Public License version 2.1 can be found in "/usr/share/common-licenses/LGPL-2".
-
-Files: VisionEgg/DaqKeyboard.py
-       VisionEgg/ResponseControl.py
-       demo/demo_fixationpoint.py
-       demo/demo_keyboardresponse.py 
-       demo/demo_keyboardtrigger.py 
-Copyright: 2005 Hubertus Becker, Hertie Institute for Clinical Brain Research,
-               Department of Cognitive Neurology, University of Tuebingen
-License: LGPL 2.1
- see above
-
-Files: VisoinEgg/MoreStimuli.py
-Copyright: 2001-2003 Andrew Straw.
-           2005 by Hertie Institute for Clinical Brain Research,
-                Department of Cognitive Neurology, University of Tuebingen
-           2005,2008 California Institute of Technology
-           2006 Peter Jurica and Gijs Plomp
-License: LGPL 2.1
- see above
-
-Files: VisoinEgg/WrappedText.py
-Copyright: 2007 Eamon Caddigan, University of Illinois
-License: LGPL 2.1
- see above
-
-Files: doc/flames_pygames.py
-Copyright: 2001 Pete Shinners
-           2003 Andrew Straw
-License: LGPL 2.1
- see above
-
-Files: VisionEgg/PyroApps/AST_ext.py 
-       VisionEgg/PyroApps/DropinGUI.py
-       VisionEgg/PyroApps/DropinServer.py
-       VisionEgg/PyroApps/EPhysGUI.py
-       VisionEgg/PyroApps/EPhysServer.py
-       VisionEgg/PyroApps/VarTypes.py
-Copyright: 2004 Imran S. Ali, Lachlan Dowd
-License: LGPL 2.1
- see above
-
-Files: VisionEgg/win32_vretrace_orig.h
-Copyright: Thiadmer Riemersma 
-License: Creative Commons Attribution-Share Alike 3.0 Unported
- THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CREATIVE 
- COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE"). THE WORK IS PROTECTED BY 
- COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE WORK OTHER THAN AS 
- AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS PROHIBITED.
- .
- BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND AGREE 
- TO BE BOUND BY THE TERMS OF THIS LICENSE. TO THE EXTENT THIS LICENSE MAY 
- BE CONSIDERED TO BE A CONTRACT, THE LICENSOR GRANTS YOU THE RIGHTS CONTAINED 
- HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND CONDITIONS.
- .
- The complete license can be found at: 
-    http://creativecommons.org/licenses/by-sa/3.0/legalcode
-
-Files: debian/*
-Copyright: 2013 Thorsten Alteholz <debian at alteholz.de>
-License: LGPL 2.1
- see above
diff --git a/debian/patches/condidtioally_impot_pil.patch b/debian/patches/condidtioally_impot_pil.patch
deleted file mode 100644
index 1166fcb..0000000
--- a/debian/patches/condidtioally_impot_pil.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-Author: Bastian Venthur <venthur at debian.org>
-Last-Updated: Fri, 09 May 2014 09:57:29 +0200
-Bugs-Debian: http://bugs.debian.org/737828
-Bugs-Upstream: https://github.com/visionegg/visionegg/issues/4
-Forwardey-Upstream: yes, https://github.com/venthur/visionegg/commit/356c136c1947c8026fe44a9f821ea4b09f094376
-Description:  Don't crash if importing of the _imaging module fails.
- Importing those modules is only needed when using "Installer".
-
---- a/VisionEgg/Textures.py
-+++ b/VisionEgg/Textures.py
-@@ -38,8 +38,11 @@ import OpenGL.GLU as glu
- # They are listed here so that Gordon McMillan's Installer properly
- # locates them.  You will not hurt anything other than your ability to
- # make executables using Intaller if you remove these lines.
--import _imaging
--import ImageFile, ImageFileIO, BmpImagePlugin, JpegImagePlugin, PngImagePlugin
-+try:
-+    import _imaging
-+    import ImageFile, ImageFileIO, BmpImagePlugin, JpegImagePlugin, PngImagePlugin
-+except:
-+    pass
- 
- if Image.VERSION >= '1.1.3':
-     shrink_filter = Image.ANTIALIAS # Added in PIL 1.1.3
diff --git a/debian/patches/series b/debian/patches/series
deleted file mode 100644
index 19d35ad..0000000
--- a/debian/patches/series
+++ /dev/null
@@ -1 +0,0 @@
-condidtioally_impot_pil.patch
diff --git a/debian/python-visionegg.install b/debian/python-visionegg.install
deleted file mode 100644
index 253041b..0000000
--- a/debian/python-visionegg.install
+++ /dev/null
@@ -1 +0,0 @@
-demo usr/share/python-visionegg
diff --git a/debian/rules b/debian/rules
deleted file mode 100755
index 9243d17..0000000
--- a/debian/rules
+++ /dev/null
@@ -1,19 +0,0 @@
-#!/usr/bin/make -f
-
-# DH_VERBOSE := 1
-
-%:
-	dh $@ --with python2
-
-override_dh_auto_install:
-	dh_auto_install
-	dh_numpy
-
-override_dh_auto_build:
-	chmod 644 VisionEgg/data/spiral.png
-	dh_auto_build
-
-get-orig-source:
-	mkdir -p ../tarballs
-	uscan --verbose --force-download --destdir=../tarballs
-
diff --git a/debian/source/format b/debian/source/format
deleted file mode 100644
index 163aaf8..0000000
--- a/debian/source/format
+++ /dev/null
@@ -1 +0,0 @@
-3.0 (quilt)
diff --git a/debian/upstream/metadata b/debian/upstream/metadata
deleted file mode 100644
index 8d48299..0000000
--- a/debian/upstream/metadata
+++ /dev/null
@@ -1,9 +0,0 @@
-Reference:
-  Author: Andrew D. Straw
-  Title: "Vision Egg: An Open-Source Library for Realtime Visual Stimulus Generation"
-  Journal: Frontiers in Neuroinformatics
-  Year: 2008
-  Volume: 2
-  Number: 4
-  DOI: 10.3389/neuro.11.004.2008
-  URL: http://frontiersin.org/neuroinformatics/paper/10.3389/neuro.11/004.2008/
diff --git a/debian/watch b/debian/watch
deleted file mode 100644
index df022d9..0000000
--- a/debian/watch
+++ /dev/null
@@ -1,2 +0,0 @@
-version=3
-http://sf.net/visionegg/visionegg-([\d.]+)\.tar\.gz
diff --git a/demo/GUI/drumDemoGUI.py b/demo/GUI/drumDemoGUI.py
new file mode 100755
index 0000000..210bc05
--- /dev/null
+++ b/demo/GUI/drumDemoGUI.py
@@ -0,0 +1,143 @@
+#!/usr/bin/env python
+"""Spinning drum with a graphical user interface.
+
+This demo is complex because there are two tasks which normally have
+their own mainloop: the GUI and the Vision Egg drawing routines.
+Here, the GUI mainloop is in charge between trials, and it is locked
+out during trials."""
+
+# This is the python source code for a demo application that uses the
+# Vision Egg package.
+#
+# This program displays a spinning drum, with the inside of the drum
+# texture-mapped with a panoramic image.
+#
+# This demo uses the GUI tookit "Tkinter", which may not be available on
+# all platforms. Also, because this code also controls a GUI, it is much
+# more complicated than the minimum needed to create a stimulus with the
+# VisionEgg.
+
+import VisionEgg
+VisionEgg.start_default_logging(); VisionEgg.watch_exceptions()
+
+from VisionEgg import *
+from VisionEgg.Core import *
+from VisionEgg.FlowControl import Presentation, Controller, FunctionController
+from VisionEgg.GUI import *
+from VisionEgg.Textures import *
+
+import Tkinter
+from math import *
+import os
+import time
+
+default_max_speed = 400.0
+
+class DrumGui(AppWindow):
+    def __init__(self,master=None,**cnf):
+
+        AppWindow.__init__(self,master,**cnf)
+        self.winfo_toplevel().title('Vision Egg - spinning drum')
+        self.pack(expand=1,fill=Tkinter.BOTH)
+
+        # Position formula
+        Tkinter.Label(self,text="Position as a function of time:").pack()
+        self.positionFormula = Tkinter.StringVar()
+        self.validated_pos_string = "%.1f*cos(t)"%default_max_speed
+        self.positionFormula.set(self.validated_pos_string)
+        Tkinter.Entry(self,textvariable=self.positionFormula).pack(expand=1,fill=Tkinter.X)
+
+        # Contrast formula
+        Tkinter.Label(self,text="Contrast as a function of time:").pack()
+        self.contrastFormula = Tkinter.StringVar()
+        self.validated_c_string = '1.0'
+        self.contrastFormula.set(self.validated_c_string)
+        Tkinter.Entry(self,textvariable=self.contrastFormula).pack(expand=1,fill=Tkinter.X)
+
+        # Duration
+        self.duration = Tkinter.Scale(self,
+                                      from_=0.5,
+                                      to=60.0,
+                                      resolution=0.5,
+                                      orient=Tkinter.HORIZONTAL,
+                                      label="Duration of go loop (seconds):")
+        self.duration.set(10.0)
+        self.duration.pack(expand=1,fill=Tkinter.X)
+
+        # Fixation spot
+        self.fixation_spot = Tkinter.BooleanVar()
+        self.fixation_spot.set(1)
+        Tkinter.Checkbutton(self,
+                            text='Fixation spot',
+                            variable=self.fixation_spot,
+                            relief=Tkinter.FLAT).pack()
+        
+        # Go button
+        Tkinter.Button(self,text="go",command=self.go).pack()
+
+        self.validate_pos_string()
+        self.validate_c_string()
+ 
+    def positionFunction(self,t):
+        return eval(self.validated_pos_string)
+
+    def contrastFunction(self,t):
+        if t < 0.0:     # In between stimulus presentations
+            return 0.0
+        return eval(self.validated_c_string)
+
+    def validate_pos_string(self):
+        tmp = self.positionFormula.get()
+        try:
+            t = 1.2
+            eval(tmp)
+            self.validated_pos_string = tmp
+        finally:
+            self.positionFormula.set(self.validated_pos_string)
+    
+    def validate_c_string(self):
+        tmp = self.contrastFormula.get()
+        try:
+            t = 1.2
+            eval(tmp)
+            self.validated_c_string = tmp
+        finally:
+            self.contrastFormula.set(self.validated_c_string)
+    
+    def go(self):
+        self.validate_pos_string()
+        self.validate_c_string()
+        p.go()
+
+config.VISIONEGG_GUI_INIT=1
+VisionEgg.config.VISIONEGG_HIDE_MOUSE = 0 # make sure mouse is visible
+screen = get_default_screen() # initialize graphics
+if config.VISIONEGG_FULLSCREEN==1:
+    raise RuntimeError("Cannot enter fullscreen mode if you want to see GUI panel!")
+
+# Get a texture
+filename = os.path.join(config.VISIONEGG_SYSTEM_DIR,"data/panorama.jpg")
+texture = Texture(filename)
+
+drum = SpinningDrum(texture=texture,shrink_texture_ok=1)
+fixation_spot = FixationSpot(position=(screen.size[0]/2,screen.size[1]/2),
+                             anchor='center')
+
+perspective = SimplePerspectiveProjection(fov_x=90.0)
+perspective_viewport = Viewport(screen=screen,
+                                projection=perspective,
+                                stimuli=[drum])
+
+flat_viewport = Viewport(screen=screen,
+                         stimuli=[fixation_spot])
+
+p = Presentation(viewports=[perspective_viewport,flat_viewport])
+gui_window = DrumGui(idle_func=p.between_presentations)
+
+p.add_controller(fixation_spot,'on',FunctionController(during_go_func=lambda t: gui_window.fixation_spot.get(),eval_frequency=Controller.TRANSITIONS))
+p.add_controller(p,'go_duration',FunctionController(during_go_func=lambda t: (gui_window.duration.get(),'seconds'),eval_frequency=Controller.TRANSITIONS))
+p.add_controller(drum,'angular_position',FunctionController(during_go_func=gui_window.positionFunction))
+p.add_controller(drum,'contrast',FunctionController(during_go_func=gui_window.contrastFunction))
+
+gui_window.mainloop()
+
diff --git a/demo/Pyro/gratingPyroGUI.py b/demo/Pyro/gratingPyroGUI.py
new file mode 100755
index 0000000..558d51b
--- /dev/null
+++ b/demo/Pyro/gratingPyroGUI.py
@@ -0,0 +1,190 @@
+#!/usr/bin/env python
+"""GUI panel for control of gratingPyroServer"""
+
+# Copyright (c) 2002-2003 Andrew Straw.  Distributed under the terms
+# of the GNU Lesser General Public License (LGPL).
+
+import sys, os
+import Tkinter
+
+import VisionEgg.PyroClient
+
+class CallbackEntry(Tkinter.Entry):
+    def __init__(self,master=None,callback=None,**kw):
+        Tkinter.Entry.__init__(self,master,**kw)
+        self.bind('<Return>',callback)
+        self.bind('<Tab>',callback)
+
+class StimulusControlFrame(Tkinter.Frame):
+    def __init__(self, master=None, suppress_begin_button=0,**kw):
+        Tkinter.Frame.__init__(self,master,**kw)
+        self.entry_width = 10
+        self.connected = 0
+
+        # let columns expand
+        self.columnconfigure(0,weight=1)
+        self.columnconfigure(1,weight=1)
+        
+        row = 0
+        Tkinter.Label(self,text="Grating Experiment").grid(row=row,column=0,columnspan=2)
+
+        row += 1
+        # let columns expand
+        connected_frame = Tkinter.Frame(self)
+        connected_frame.grid(row=row,column=0,columnspan=2,sticky=Tkinter.W+Tkinter.E)
+        connected_frame.columnconfigure(0,weight=1)
+        connected_frame.columnconfigure(1,weight=1)
+        connected_frame.columnconfigure(2,weight=1)
+
+        Tkinter.Label(connected_frame,text="Server hostname:").grid(row=0,column=0,sticky=Tkinter.E)
+        self.server_hostname = Tkinter.StringVar()
+        self.server_hostname.set( '' )
+        Tkinter.Entry(connected_frame,textvariable=self.server_hostname).grid(row=0,
+                                                                              column=1,
+                                                                              columnspan=2,
+                                                                              sticky=Tkinter.W+Tkinter.E)
+
+        self.connected_label = Tkinter.Label(connected_frame,text="Server status: Not connected")
+        self.connected_label.grid(row=1,column=0)
+        Tkinter.Button(connected_frame,text="Connect",command=self.connect).grid(row=1,column=1)
+        Tkinter.Button(connected_frame,text="Quit server",command=self.quit_server).grid(row=1,column=2)
+
+        row += 1
+        between_go_frame = Tkinter.Frame(self)
+        between_go_frame.grid(row=row,column=0,sticky=Tkinter.N)
+        bgf_row = 0
+        Tkinter.Label(between_go_frame,text="Between trials").grid(row=bgf_row,column=0,columnspan=2)
+
+        bgf_row += 1
+        Tkinter.Label(between_go_frame,text="Contrast:").grid(row=bgf_row,column=0)
+        self.between_contrast = Tkinter.DoubleVar()
+        self.between_contrast.set(1.0)
+        CallbackEntry(between_go_frame,self.send_values,width=self.entry_width,textvariable=self.between_contrast).grid(row=bgf_row,column=1)
+
+        bgf_row += 1
+        Tkinter.Label(between_go_frame,text="Spatial Frequency:").grid(row=bgf_row,column=0)
+        self.between_sf = Tkinter.DoubleVar()
+        self.between_sf.set(0.02)
+        CallbackEntry(between_go_frame,self.send_values,width=self.entry_width,textvariable=self.between_sf).grid(row=bgf_row,column=1)
+
+        bgf_row += 1
+        Tkinter.Label(between_go_frame,text="Temporal Frequency:").grid(row=bgf_row,column=0)
+        self.between_tf = Tkinter.DoubleVar()
+        self.between_tf.set(0.0)
+        CallbackEntry(between_go_frame,self.send_values,width=self.entry_width,textvariable=self.between_tf).grid(row=bgf_row,column=1)
+
+        bgf_row += 1
+        Tkinter.Label(between_go_frame,text="Orientation:").grid(row=bgf_row,column=0)
+        self.between_orient = Tkinter.DoubleVar()
+        self.between_orient.set(0.0)
+        CallbackEntry(between_go_frame,self.send_values,width=self.entry_width,textvariable=self.between_orient).grid(row=bgf_row,column=1)
+
+        trial_frame = Tkinter.Frame(self)
+        trial_frame.grid(row=row,column=1,sticky=Tkinter.N)
+        tf_row = 0
+        Tkinter.Label(trial_frame,text="Trial Parameters").grid(row=tf_row,column=0,columnspan=2)
+
+        tf_row += 1
+        Tkinter.Label(trial_frame,text="Contrast:").grid(row=tf_row,column=0)
+        self.trial_contrast = Tkinter.DoubleVar()
+        self.trial_contrast.set(1.0)
+        CallbackEntry(trial_frame,self.send_values,width=self.entry_width,textvariable=self.trial_contrast).grid(row=tf_row,column=1)
+      
+        tf_row += 1
+        Tkinter.Label(trial_frame,text="Spatial Frequency:").grid(row=tf_row,column=0)
+        self.trial_sf = Tkinter.DoubleVar()
+        self.trial_sf.set(0.02)
+        CallbackEntry(trial_frame,self.send_values,width=self.entry_width,textvariable=self.trial_sf).grid(row=tf_row,column=1)
+
+        tf_row += 1
+        Tkinter.Label(trial_frame,text="Temporal Frequency:").grid(row=tf_row,column=0)
+        self.trial_tf = Tkinter.DoubleVar()
+        self.trial_tf.set(0.5)
+        CallbackEntry(trial_frame,self.send_values,width=self.entry_width,textvariable=self.trial_tf).grid(row=tf_row,column=1)
+
+        tf_row += 1
+        Tkinter.Label(trial_frame,text="Orientation:").grid(row=tf_row,column=0)
+        self.trial_orient = Tkinter.DoubleVar()
+        self.trial_orient.set(0.0)
+        CallbackEntry(trial_frame,self.send_values,width=self.entry_width,textvariable=self.trial_orient).grid(row=tf_row,column=1)
+
+        tf_row += 1
+        Tkinter.Label(trial_frame,text="Duration (sec):").grid(row=tf_row,column=0)
+        self.trial_dur_sec = Tkinter.DoubleVar()
+        self.trial_dur_sec.set(2.0)
+        CallbackEntry(trial_frame,self.send_values,width=self.entry_width,textvariable=self.trial_dur_sec).grid(row=tf_row,column=1)
+
+        if not suppress_begin_button:
+            tf_row += 1
+            Tkinter.Button(trial_frame,text="Begin Trial",command=self.go).grid(row=tf_row,column=0,columnspan=2)
+
+    def get_stim_param_dict(self):
+        dict = {}
+        self_dict = dir(self)
+        for attrname in self_dict:
+            if isinstance( getattr(self,attrname), Tkinter.Variable):
+                dict[attrname] = getattr(self,attrname)
+        return dict
+    
+    def go(self):
+        self.send_values()
+        self.go_controller.set_between_go_value(1)
+        self.go_controller.evaluate_now()
+
+    def send_values(self,dummy=None):
+        if self.connected:
+            self.duration_controller.set_during_go_value( (self.trial_dur_sec.get(),'seconds') )
+
+            self.contrast_controller.set_during_go_value( self.trial_contrast.get() )
+            self.contrast_controller.set_between_go_value( self.between_contrast.get() )
+            self.contrast_controller.evaluate_now()
+            
+            self.sf_controller.set_during_go_value( self.trial_sf.get() )
+            self.sf_controller.set_between_go_value( self.between_sf.get() )
+            self.sf_controller.evaluate_now()
+            
+            self.tf_controller.set_during_go_value( self.trial_tf.get() )
+            self.tf_controller.set_between_go_value( self.between_tf.get() )
+            self.tf_controller.evaluate_now()
+            
+            self.orient_controller.set_during_go_value( self.trial_orient.get() )
+            self.orient_controller.set_between_go_value( self.between_orient.get() )
+            self.orient_controller.evaluate_now()
+            
+    def connect(self,dummy=None):
+        client = VisionEgg.PyroClient.PyroClient(server_hostname=self.server_hostname.get(),
+                                                 server_port=7766)
+
+        self.tf_controller = client.get('tf_controller')
+        self.sf_controller = client.get('sf_controller')
+        self.contrast_controller = client.get('contrast_controller')
+        self.orient_controller = client.get('orient_controller')
+        self.duration_controller = client.get('duration_controller')
+        self.go_controller = client.get('go_controller')
+        self.quit_controller = client.get('quit_controller')
+
+        self.connected = 1
+        self.send_values()
+        
+        self.connected_label.config(text="Server status: connected")
+        
+    def quit_server(self,dummy=None):
+        self.quit_controller.set_during_go_value(1)
+        self.quit_controller.set_between_go_value(1)
+        self.quit_controller.evaluate_now()
+
+        self.connected = 0
+        
+        del self.tf_controller
+        del self.sf_controller
+        del self.contrast_controller
+        del self.orient_controller
+        del self.duration_controller
+        del self.go_controller
+        del self.quit_controller
+
+if __name__=='__main__':
+    frame = StimulusControlFrame()
+    frame.pack(expand=1,fill=Tkinter.BOTH)
+    frame.winfo_toplevel().title("%s"%(os.path.basename(os.path.splitext(sys.argv[0])[0]),))
+    frame.mainloop()
diff --git a/demo/Pyro/gratingPyroServer.py b/demo/Pyro/gratingPyroServer.py
new file mode 100755
index 0000000..524f6c8
--- /dev/null
+++ b/demo/Pyro/gratingPyroServer.py
@@ -0,0 +1,58 @@
+#!/usr/bin/env python
+"""Create sinusoidal grating stimulus and allow control with gratingPyroGUI
+
+"""
+
+# Copyright (c) 2002-2003 Andrew Straw.  Distributed under the terms
+# of the GNU Lesser General Public License (LGPL).
+
+import VisionEgg
+VisionEgg.start_default_logging(); VisionEgg.watch_exceptions()
+
+from VisionEgg.Core import *
+from VisionEgg.FlowControl import Presentation
+from VisionEgg.Gratings import *
+from VisionEgg.PyroHelpers import *
+
+pyro_server = PyroServer()
+
+# get visionegg stimulus ready to go
+screen = get_default_screen()
+stimulus = SinGrating2D()
+viewport = Viewport(screen=screen,stimuli=[stimulus])
+p = Presentation(viewports=[viewport])
+
+# make a controller, serve it via pyro, and glue it to the Presentation
+tf_controller = PyroConstantController(during_go_value=0.0)
+pyro_server.connect(tf_controller,'tf_controller')
+p.add_controller(stimulus,'temporal_freq_hz', tf_controller)
+
+sf_controller = PyroConstantController(during_go_value=0.0)
+pyro_server.connect(sf_controller,'sf_controller')
+p.add_controller(stimulus,'spatial_freq', sf_controller)
+
+contrast_controller = PyroConstantController(during_go_value=0.0)
+pyro_server.connect(contrast_controller,'contrast_controller')
+p.add_controller(stimulus,'contrast', contrast_controller)
+
+orient_controller = PyroConstantController(during_go_value=0.0)
+pyro_server.connect(orient_controller,'orient_controller')
+p.add_controller(stimulus,'orientation', orient_controller)
+
+duration_controller = PyroConstantController(during_go_value=(5.0,'seconds'))
+pyro_server.connect(duration_controller,'duration_controller')
+p.add_controller(p,'go_duration', duration_controller)
+
+go_controller = PyroConstantController(during_go_value=0,eval_frequency=0)
+pyro_server.connect(go_controller,'go_controller')
+p.add_controller(p,'enter_go_loop', go_controller)
+
+quit_controller = PyroConstantController(during_go_value=0)
+pyro_server.connect(quit_controller,'quit_controller')
+p.add_controller(p,'quit', quit_controller)
+
+# get listener controller and register it
+p.add_controller(None,None, pyro_server.create_listener_controller())
+
+# initialize graphics to between presentations state
+p.run_forever()
diff --git a/demo/Pyro/metaPyroGUI.py b/demo/Pyro/metaPyroGUI.py
new file mode 100755
index 0000000..0c4f255
--- /dev/null
+++ b/demo/Pyro/metaPyroGUI.py
@@ -0,0 +1,231 @@
+#!/usr/bin/env python
+"""Sinusoidal grating stimulus control (see metaPyroServer)
+"""
+
+# Copyright (c) 2002 Andrew Straw.  Distributed under the terms
+# of the GNU Lesser General Public License (LGPL).
+
+import sys, os
+import Tkinter
+import Pyro.core
+import VisionEgg.PyroClient
+
+class GratingMetaParameters:
+    def __init__(self):
+        self.contrast = 1.0
+        self.orient = 0.0
+        self.sf = 0.02
+        self.tf = 1.0
+        self.pre_stim_sec = 1.0
+        self.stim_sec = 2.0
+        self.post_stim_sec = 1.0
+        
+class CallbackEntry(Tkinter.Entry):
+    def __init__(self,master=None,callback=None,**kw):
+        Tkinter.Entry.__init__(self,master, **kw)
+        self.bind('<Return>',callback)
+        self.bind('<Tab>',callback)
+
+class StimulusControlFrame(Tkinter.Frame):
+    def __init__(self, master=None, suppress_begin_button=0,**kw):
+        Tkinter.Frame.__init__(self,master,**kw)
+        self.pyro_client = None
+        self.entry_width = 10
+        self.connected = 0
+        self.meta_params = GratingMetaParameters()
+        self.loopable_variables = {}
+
+        row = 0
+        Tkinter.Label(self,text="Grating Experiment").grid(row=row,column=0,columnspan=2)
+
+        row += 1
+        # let columns expand
+        connected_frame = Tkinter.Frame(self)
+        connected_frame.grid(row=row,column=0,columnspan=2,sticky=Tkinter.W+Tkinter.E)
+        connected_frame.columnconfigure(0,weight=1)
+        connected_frame.columnconfigure(1,weight=1)
+        connected_frame.columnconfigure(2,weight=1)
+        
+        Tkinter.Label(connected_frame,text="Server hostname:").grid(row=0,column=0,sticky=Tkinter.E)
+        self.server_hostname = Tkinter.StringVar()
+        self.server_hostname.set( '' )
+        Tkinter.Entry(connected_frame,textvariable=self.server_hostname).grid(row=0,
+                                                                              column=1,
+                                                                              columnspan=2,
+                                                                              sticky=Tkinter.W+Tkinter.E)
+
+        self.connected_label = Tkinter.Label(connected_frame,text="Server status: Not connected")
+        self.connected_label.grid(row=1,column=0)
+        Tkinter.Button(connected_frame,text="Connect",command=self.connect).grid(row=1,column=1)
+        Tkinter.Button(connected_frame,text="Quit server",command=self.quit_server).grid(row=1,column=2)
+
+        row += 1
+        param_frame = Tkinter.Frame(self)
+        param_frame.grid(row=row,column=0,sticky=Tkinter.N)
+        param_frame.columnconfigure(0,weight=1)
+        param_frame.columnconfigure(1,weight=1)
+
+        pf_row = 0
+        Tkinter.Label(param_frame,text="Contrast:").grid(row=pf_row,column=0)
+        self.contrast_tk_var = Tkinter.DoubleVar()
+        self.contrast_tk_var.set(1.0)
+        CallbackEntry(param_frame,
+                      self.send_values,
+                      width=self.entry_width,
+                      textvariable=self.contrast_tk_var).grid(row=pf_row,column=1)
+        self.loopable_variables["Contrast"] = ("contrast",self.contrast_tk_var)
+
+        pf_row += 1
+        Tkinter.Label(param_frame,text="Spatial frequency:").grid(row=pf_row,column=0)
+        self.sf_tk_var = Tkinter.DoubleVar()
+        self.sf_tk_var.set(0.02)
+        CallbackEntry(param_frame,
+                      self.send_values,
+                      width=self.entry_width,
+                      textvariable=self.sf_tk_var).grid(row=pf_row,column=1)
+        self.loopable_variables["Spatial frequency"] = ("sf",self.sf_tk_var)
+        
+        pf_row += 1
+        Tkinter.Label(param_frame,text="Temporal frequency:").grid(row=pf_row,column=0)
+        self.tf_tk_var = Tkinter.DoubleVar()
+        self.tf_tk_var.set(5.0)
+        CallbackEntry(param_frame,
+                      self.send_values,
+                      width=self.entry_width,
+                      textvariable=self.tf_tk_var).grid(row=pf_row,column=1)
+        self.loopable_variables["Temporal frequency"] = ("tf",self.tf_tk_var)
+        
+        pf_row += 1
+        Tkinter.Label(param_frame,text="Orientation:").grid(row=pf_row,column=0)
+        self.orient_tk_var = Tkinter.DoubleVar()
+        self.orient_tk_var.set(0.0)
+        CallbackEntry(param_frame,
+                      self.send_values,
+                      width=self.entry_width,
+                      textvariable=self.orient_tk_var).grid(row=pf_row,column=1)
+        self.loopable_variables["Orientation"] = ("orient",self.orient_tk_var)
+        
+        pf_row += 1
+        Tkinter.Label(param_frame,text="Pre stimulus duration (sec):").grid(row=pf_row,column=0)
+        self.prestim_dur_tk_var = Tkinter.DoubleVar()
+        self.prestim_dur_tk_var.set(1.0)
+        CallbackEntry(param_frame,
+                      self.send_values,
+                      width=self.entry_width,
+                      textvariable=self.prestim_dur_tk_var).grid(row=pf_row,column=1)
+        
+        pf_row += 1
+        Tkinter.Label(param_frame,text="Stimulus duration (sec):").grid(row=pf_row,column=0)
+        self.stim_dur_tk_var = Tkinter.DoubleVar()
+        self.stim_dur_tk_var.set(2.0)
+        CallbackEntry(param_frame,
+                      self.send_values,
+                      width=self.entry_width,
+                      textvariable=self.stim_dur_tk_var).grid(row=pf_row,column=1)
+        
+        pf_row += 1
+        Tkinter.Label(param_frame,text="Post stimulus duration (sec):").grid(row=pf_row,column=0)
+        self.poststim_dur_tk_var = Tkinter.DoubleVar()
+        self.poststim_dur_tk_var.set(1.0)
+        CallbackEntry(param_frame,
+                      self.send_values,
+                      width=self.entry_width,
+                      textvariable=self.poststim_dur_tk_var).grid(row=pf_row,column=1)
+
+        if not suppress_begin_button:
+            row += 1
+            Tkinter.Button(self,text="Begin Trial",command=self.go).grid(row=row,column=0,columnspan=2)
+
+    def get_shortname(self):
+        """Used as basename for saving parameter files"""
+        return "simple_grating"
+
+    def get_param_dict(self):
+        result = {}
+        for param_name in dir(self.meta_params):
+            if param_name[:2] != '__' and param_name[-2:] != '__':
+                result[param_name] = getattr(self.meta_params,param_name)
+        return result
+
+    def get_type(self):
+        return "metaPyroGUI"
+    
+    def set_param_dict(self,new_param_dict):
+        orig_params = dir(self.meta_params)
+        for new_param_name in new_param_dict.keys():
+            if new_param_name[:2] != '__' and new_param_name[-2:] != '__':
+                if new_param_name not in orig_params:
+                    raise ValueError('Gave parameter "%s", which I do not know about.'%(new_param_name,))
+                setattr(self.meta_params,new_param_name,new_param_dict[new_param_name])
+        self.contrast_tk_var.set( self.meta_params.contrast )
+        self.sf_tk_var.set( self.meta_params.sf )
+        self.tf_tk_var.set( self.meta_params.tf )
+        self.orient_tk_var.set( self.meta_params.orient )
+        self.prestim_dur_tk_var.set( self.meta_params.pre_stim_sec )
+        self.stim_dur_tk_var.set( self.meta_params.stim_sec )
+        self.poststim_dur_tk_var.set( self.meta_params.post_stim_sec )
+    
+    def get_parameters_as_strings(self):
+        result = []
+        for param_name in dir(self.meta_params):
+            if param_name[:2] != '__' and param_name[-2:] != '__':
+                value = getattr(self.meta_params,param_name)
+                value_string = str(value)
+                result.append((param_name,value_string))
+        return result
+
+    def get_loopable_variable_names(self):
+        return self.loopable_variables.keys()
+
+    def set_loopable_variable(self,easy_name,value):
+        meta_param_var_name,tk_var = self.loopable_variables[easy_name]
+        setattr(self.meta_params,meta_param_var_name,value)
+        tk_var.set(value)
+        self.update() # update screen with new tk_var value
+        
+    def send_values(self,dummy_arg=None):
+        self.meta_params.contrast = self.contrast_tk_var.get()
+        self.meta_params.sf = self.sf_tk_var.get()
+        self.meta_params.tf = self.tf_tk_var.get()
+        self.meta_params.orient = self.orient_tk_var.get()
+        self.meta_params.pre_stim_sec = self.prestim_dur_tk_var.get()
+        self.meta_params.stim_sec = self.stim_dur_tk_var.get()
+        self.meta_params.post_stim_sec = self.poststim_dur_tk_var.get()
+        if self.connected:
+            self.meta_controller.set_parameters( self.meta_params )
+
+    def get_duration_sec(self):
+        self.meta_params.pre_stim_sec = self.prestim_dur_tk_var.get()
+        self.meta_params.stim_sec = self.stim_dur_tk_var.get()
+        self.meta_params.post_stim_sec = self.poststim_dur_tk_var.get()
+        return self.meta_params.pre_stim_sec + self.meta_params.stim_sec + self.meta_params.post_stim_sec
+
+    def go(self,dummy_arg=None):
+        self.send_values()
+        if not self.connected:
+            raise RuntimeError("must be connected to metaPyroServer to run trial")
+        self.meta_controller.go()
+##        if self.connected:
+##            self.meta_controller.go()
+
+    def connect(self):
+        self.pyro_client = VisionEgg.PyroClient.PyroClient(server_hostname=self.server_hostname.get(),
+                                                           server_port=7766)
+
+        self.meta_controller = self.pyro_client.get("meta_controller")
+        self.meta_params = self.meta_controller.get_parameters()
+
+        self.connected = 1
+        self.meta_controller.turn_off()
+        self.connected_label.config(text="Server status: Connected")
+
+    def quit_server(self,dummy=None):
+        self.meta_controller.quit_server()
+        self.connected = 0
+        self.connected_label.config(text="Server status: Not connected")
+
+if __name__=='__main__':
+    frame = StimulusControlFrame()
+    frame.pack(expand=1,fill=Tkinter.BOTH)
+    frame.winfo_toplevel().title("%s"%(os.path.basename(os.path.splitext(sys.argv[0])[0]),))
+    frame.mainloop()  
diff --git a/demo/Pyro/metaPyroServer.py b/demo/Pyro/metaPyroServer.py
new file mode 100755
index 0000000..da5678e
--- /dev/null
+++ b/demo/Pyro/metaPyroServer.py
@@ -0,0 +1,97 @@
+#!/usr/bin/env python
+"""Sinusoidal grating stimulus with complex control from metaPyroGUI
+
+This demo illustrates a very easy way to exert complex control of
+visual stimuli in an experimental setting.  A Vision Egg server is
+started, which opens the display and will do all the drawing.  There
+is a "meta-controller" which is served (via Pyro) to another program
+which controls the stimuli.  The meta-controller can store information
+in a higher-level format than the Controllers used on individual
+instances of the Stimulus class.
+
+"""
+
+# Copyright (c) 2002-2003 Andrew Straw.  Distributed under the terms
+# of the GNU Lesser General Public License (LGPL).
+
+import VisionEgg
+VisionEgg.start_default_logging(); VisionEgg.watch_exceptions()
+
+import sys
+import VisionEgg.Core
+import VisionEgg.FlowControl
+import VisionEgg.Gratings
+import VisionEgg.PyroHelpers
+import Pyro.core
+
+from metaPyroGUI import GratingMetaParameters
+
+class GratingExperimentMetaController( Pyro.core.ObjBase ):
+    """Encapsulates all parameters controlling a grating"""
+    def __init__(self,presentation,grating_stimulus):
+        Pyro.core.ObjBase.__init__(self)
+        self.meta_params = GratingMetaParameters()
+        if not isinstance(presentation,VisionEgg.FlowControl.Presentation):
+            raise ValueError("Expecting instance of VisionEgg.FlowControl.Presentation")
+        if not isinstance(grating_stimulus,VisionEgg.Gratings.SinGrating2D):
+            raise ValueError("Expecting instance of VisionEgg.Gratings.SinGrating2D")
+        self.p = presentation
+        self.stim = grating_stimulus
+
+        self.p.add_controller(self.stim,'on',VisionEgg.FlowControl.FunctionController(during_go_func=self.on_function))
+
+    def turn_off(self):
+        self.stim.parameters.on = 0
+
+    def get_parameters(self):
+        return self.meta_params
+
+    def set_parameters(self, new_parameters):
+        if isinstance(new_parameters, GratingMetaParameters):
+            self.meta_params = new_parameters
+        else:
+            raise ValueError("Argument to set_parameters must be instance of GratingMetaParameters")
+        self.update()
+
+    def on_function(self,t=-1.0): # default time to between trials time
+        """Compute when the grating is on"""
+        if t <= self.meta_params.pre_stim_sec:
+            return 0 # not on yet
+        elif t <= (self.meta_params.pre_stim_sec + self.meta_params.stim_sec):
+            return 1 # on
+        else:
+            return 0 # off again
+        
+    def update(self):
+        self.stim.parameters.contrast = self.meta_params.contrast
+        self.stim.parameters.orientation = self.meta_params.orient
+        self.stim.parameters.spatial_freq = self.meta_params.sf
+        self.stim.parameters.temporal_freq_hz = self.meta_params.tf
+        self.p.parameters.go_duration = ( self.meta_params.pre_stim_sec + self.meta_params.stim_sec + self.meta_params.post_stim_sec, 'seconds')
+
+    def go(self):
+        self.p.parameters.enter_go_loop = 1
+
+    def quit_server(self):
+        self.p.parameters.quit = 1
+
+# Don't do anything unless this script is being run
+if __name__ == '__main__':
+    
+    pyro_server = VisionEgg.PyroHelpers.PyroServer()
+
+    # get Vision Egg stimulus ready to go
+    screen = VisionEgg.Core.Screen.create_default()
+    stimulus = VisionEgg.Gratings.SinGrating2D()
+    viewport = VisionEgg.Core.Viewport(screen=screen,stimuli=[stimulus])
+    p = VisionEgg.FlowControl.Presentation(viewports=[viewport])
+
+    # now hand over control of stimulus to GratingExperimentMetaController
+    meta_controller = GratingExperimentMetaController(p,stimulus)
+    pyro_server.connect(meta_controller,"meta_controller")
+
+    # get listener controller and register it
+    p.add_controller(None,None, pyro_server.create_listener_controller())
+
+    # enter endless loop
+    p.run_forever()
diff --git a/demo/Pyro/simpleClient.py b/demo/Pyro/simpleClient.py
new file mode 100755
index 0000000..eba1f50
--- /dev/null
+++ b/demo/Pyro/simpleClient.py
@@ -0,0 +1,30 @@
+#!/usr/bin/env python
+
+from VisionEgg.PyroClient import *
+
+import time, sys
+
+if len(sys.argv) >= 2:
+    server_hostname = sys.argv[1]
+else:
+    server_hostname = ''
+
+print "using server hostname '%s'"%server_hostname
+
+# Get the controllers
+client = PyroClient(server_hostname=server_hostname)
+tf_controller = client.get('tf_controller')
+quit_controller = client.get('quit_controller')
+
+# Set a temporal frequency
+
+# Note that we never enter the 'go' loop in this demo, so we are only
+# concerned with setting the between_go_value
+
+tf_controller.set_between_go_value(1.0)
+tf_controller.evaluate_now()
+
+time.sleep(5.0) # show for 5 seconds
+
+quit_controller.set_between_go_value(1)
+quit_controller.evaluate_now()
diff --git a/demo/Pyro/simpleServer.py b/demo/Pyro/simpleServer.py
new file mode 100755
index 0000000..9cdad3a
--- /dev/null
+++ b/demo/Pyro/simpleServer.py
@@ -0,0 +1,40 @@
+#!/usr/bin/env python
+"""Run a simple VisionEgg Pyro server.
+
+You will need to have a Pyro Name Server running on your network for
+this to work.  It comes with the Pyro distribution as a script in the
+bin directory called ns.  Run it, run this script, and then run
+simpleClient.py from any computer on your network!
+
+"""
+
+import VisionEgg
+VisionEgg.start_default_logging(); VisionEgg.watch_exceptions()
+
+from VisionEgg.Core import *
+from VisionEgg.FlowControl import Presentation
+from VisionEgg.Gratings import *
+from VisionEgg.PyroHelpers import *
+
+pyro_server = PyroServer()
+
+# get visionegg stimulus ready to go
+screen = get_default_screen()
+stimulus = SinGrating2D(temporal_freq_hz=0.0)
+viewport = Viewport(screen=screen,stimuli=[stimulus])
+p = Presentation(go_duration=(5.0,'seconds'),viewports=[viewport])
+
+# make a controller, serve it via pyro, and glue it to the Presentation
+tf_controller = PyroConstantController(during_go_value=0.0)
+pyro_server.connect(tf_controller,'tf_controller')
+p.add_controller(stimulus,'temporal_freq_hz', tf_controller)
+
+quit_controller = PyroConstantController(during_go_value=0)
+pyro_server.connect(quit_controller,'quit_controller')
+p.add_controller(p,'quit', quit_controller)
+
+# get listener controller and register it
+p.add_controller(None,None, pyro_server.create_listener_controller())
+
+# initialize graphics to between presentations state
+p.run_forever()
diff --git a/demo/README.txt b/demo/README.txt
new file mode 100644
index 0000000..9118be2
--- /dev/null
+++ b/demo/README.txt
@@ -0,0 +1,81 @@
+This directory contains several demonstration scripts for the Vision
+Egg library.  Most of these demos are merely a feature overview of the
+Vision Egg, are not meant to be used for experiments.
+
+You can rename the files from *.py to *.pyw so they don't open a
+console window.  On Mac OS X this may be required (depending on how
+Python is configured).
+
+The multi_stim.py demo shows many stimuli at once, and may be a good
+starting point.
+
+The metaPyroServer.py and metaPyroGUI.py scripts are the easiest place
+to get started creating a complete experiment generation application
+using a pure Python approach.  These demos are advanced and attempt to
+"put it all together".  The ephys_server.py and ephys_gui.py
+applications one step farther.
+
+Another example of a script that could be used for experiments is the
+gratingTCP script in the tcp directory.  This can be controlled by
+gratingGUI, the LabView VIs contributed by Jamie Theobald, or your own
+program.  See trigger_out in the daq directory to see how you could
+combine it with triggering for easy integration into your current data
+acquisition system.
+
+Contents:
+---------
+
+alpha_texture.py -- Textures with alpha (transparency).
+color_grating.py -- Colored sine wave grating in circular mask
+convert3d_to_2d.py -- Convert 3D position to 2D position
+displayText.py -- Display text strings
+dots.py -- Random dot stimulus
+dots_simple_loop.py -- Draw dots, using your own event loop
+ephys_gui.pyw -- Client GUI application for electrophysiology experiments
+ephys_server.py -- Server application for electrophysiology experiments
+flames_pygame.py -- Flames demo from pygame code repository
+flames_visionegg.py -- a Vision Egg implementation of pygame flames
+gabor.py -- Sinusoidal grating in a gaussian mask
+gamma.py -- Test whether your video drivers support setting gamma ramps
+grating.py -- Sinusoidal grating calculated in realtime
+gratings_multi.py -- Sinusoidal gratings calculated in realtime
+image_sequence_fast.py -- Display a sequence of images using a pseudo-blit routine
+image_sequence_slow.py -- Display a sequence of images
+lib3ds-demo.py -- Demonstrate the loading of .3ds file using the lib3ds library
+makeMovie.py -- Save movie of a black target moving across a white background
+makeMovie2.py -- Draw dots and save movie using your own event loop
+mouseTarget.py -- Control a target with the mouse, get SDL/pygame events
+mouseTarget_user_loop.py -- Control a target with the mouse, using your own event loop.
+mouse_gabor_2d.py -- sinusoidal grating in gaussian window
+mouse_gabor_perspective.py -- Perspective-distorted sinusoidal grating in gaussian window
+movingPOV.py -- 2 viewports, one with a changing perspective
+mpeg.py -- play MPEG movies in the Vision Egg
+multi_stim.py -- multiple stimulus demo
+plaid.py -- Multiple sinusoidal gratings (with mask)
+sphereMap.py -- Mapping of texture onto sphere
+target.py -- A moving target
+targetBackground.py -- Moving target over a spinning drum
+targetBackground2D.py -- Moving target over a 2D spinning drum
+texture.py -- Load a texture from a file
+textureDrum.py -- A texture-mapped spinning drum
+visual_jitter.py -- Retinal slip demonstration
+
+Pyro -- demo directory for remote control of Vision Egg programs
+Pyro/simpleServer.py -- Very simple usage of Pyro (server)
+Pyro/simpleClient.py -- Very simple usage of Pyro (client)
+Pyro/gratingPyroServer.py -- Grating control with low-level Controllers (server)
+Pyro/gratingPyroGUI.py -- Grating control with low-level Controllers (GUI client)
+Pyro/metaPyroServer.py  -- Grating control with high-level meta-controller (server)
+Pyro/metaPyroGUI.py -- Grating control with high-level meta-controller (GUI client)
+
+daq -- demo directory for data acquisition
+daq/simple_lpt_out.py -- very simple example of using the parallel port
+daq/trigger_in.py -- Use an external device to trigger the Vision Egg.
+daq/trigger_out.py -- Use the Vision Egg to trigger an external device.
+
+GUI -- demo directory for graphical user interfaces
+GUI/drumDemoGUI.py -- Spinning drum with a graphical user interface (old).
+
+tcp -- demo directory for control of Vision Egg over TCP
+tcp/gratingTCP.py -- Start a Vision Egg TCPServer to control a grating
+tcp/gratingGUI.py -- Python GUI to control gratingTCP
\ No newline at end of file
diff --git a/demo/alpha_texture.py b/demo/alpha_texture.py
new file mode 100644
index 0000000..acef49e
--- /dev/null
+++ b/demo/alpha_texture.py
@@ -0,0 +1,73 @@
+#!/usr/bin/env python
+"""
+Textures with alpha (transparency).
+
+"""
+
+import VisionEgg as ve
+ve.start_default_logging(); ve.watch_exceptions()
+
+import VisionEgg.Core as vec
+from VisionEgg.FlowControl import Presentation
+import VisionEgg.Textures as vet
+
+import Image, ImageDraw # Python Imaging Library (PIL)
+
+import OpenGL.GL as gl # PyOpenGL
+
+import os
+import numpy # Numeric
+
+screen = vec.get_default_screen()
+texel_scale = 5
+
+# create background texture from image file
+bg_filename = os.path.join(ve.config.VISIONEGG_SYSTEM_DIR,"data","panorama.jpg")
+bg_texture = vet.Texture(bg_filename)
+bg = vet.TextureStimulus(texture = bg_texture,
+                         size    = bg_texture.size,
+                         shrink_texture_ok=False,
+                         mipmaps_enabled=False,
+                         )
+
+# create alpha texture from numpy
+numpy_size = (50,50,4)
+numpy_data = numpy.ones(numpy_size,dtype=numpy.float)*1.0 # white
+numpy_data[:,:,3] = numpy.random.uniform(0.0,1.0,size=(numpy_size[:2])) # random alpha
+numpy_texture = vet.Texture(numpy_data)
+    
+numpy_stim = vet.TextureStimulus(texture=numpy_texture,
+                             internal_format = gl.GL_RGBA,
+                             position = (10,10),
+                             mipmaps_enabled=0,
+                             size=(numpy_size[0]*texel_scale,numpy_size[1]*texel_scale),
+                             texture_min_filter=gl.GL_NEAREST,
+                             texture_mag_filter=gl.GL_NEAREST,
+                             )
+
+# create alpha texture from Image
+im_size = (50*texel_scale,50*texel_scale)
+im_texels = Image.new("RGBA",im_size,(0,0,0,0)) # transparent
+im_draw = ImageDraw.Draw(im_texels)
+im_draw.ellipse((0,0) + im_size, fill=(255,255,255,255)) # opaque circle
+r,g,b,a = im_texels.split() # get individual bands (we only use alpha below)
+im_draw.rectangle((0,0) + (im_size[0]/2,im_size[1]), fill=(255,255,255,255)) # white
+im_draw.rectangle((im_size[0]/2,0) + (im_size[0],im_size[1]), fill=(0,0,0,255)) # white
+im_texels.putalpha(a)
+im_texture = vet.Texture(im_texels)
+im_stim = vet.TextureStimulus(texture=im_texture,
+                              internal_format = gl.GL_RGBA,
+                              position = (20+numpy_size[0]*texel_scale,10),
+                              mipmaps_enabled=0,
+                              size=(im_size[0],im_size[1]),
+                              texture_min_filter=gl.GL_NEAREST,
+                              texture_mag_filter=gl.GL_NEAREST,
+                              )
+
+viewport = vec.Viewport(screen=screen,
+                        stimuli=[bg,numpy_stim,im_stim])
+
+p = vec.Presentation(go_duration=(5.0,'seconds'),
+                     viewports=[viewport])
+
+p.go()
diff --git a/demo/az_el_grid.py b/demo/az_el_grid.py
new file mode 100644
index 0000000..c45b190
--- /dev/null
+++ b/demo/az_el_grid.py
@@ -0,0 +1,39 @@
+#!/usr/bin/env python
+"""Azimuth and elevation grid"""
+
+from VisionEgg import *
+start_default_logging(); watch_exceptions()
+
+from VisionEgg.Core import *
+from VisionEgg.FlowControl import Presentation, FunctionController
+from VisionEgg.SphereMap import *
+from VisionEgg.Textures import *
+import math, os
+
+import numpy
+numpy.seterr(all='raise')
+
+def projection_matrix_f(t):
+    # This bit of code is from the "movingPOV" demo and can be used to
+    # gain a moving external view of the texture-mapped sphere by
+    # uncommenting the appropriate line below.
+    projection = SimplePerspectiveProjection(fov_x=55.0,aspect_ratio=(screen.size[0]/2.)/screen.size[1])
+    eye = (0.0,t*0.3+1.0,-2.0)
+    camera_look_at = (0.0,0.0,0.0)
+    camera_up = (0.0,1.0,0.0)
+    projection.look_at( eye, camera_look_at, camera_up)
+    return projection.get_matrix()
+
+screen = get_default_screen()
+screen.parameters.bgcolor = (1.0,1.0,1.0,1.0)
+
+projection = SimplePerspectiveProjection(fov_x=90.0)
+text_viewport = Viewport(screen=screen)
+stimulus = AzElGrid()
+viewport = Viewport(screen=screen,
+                    projection=projection,
+                    stimuli=[stimulus])
+stimulus.parameters.my_viewport = viewport # set afterwards
+p = Presentation(go_duration=(10.0,'seconds'),viewports=[viewport])#,text_viewport])
+#p.add_controller(projection,'matrix', FunctionController(during_go_func=projection_matrix_f))
+p.go()
diff --git a/demo/color_grating.py b/demo/color_grating.py
new file mode 100755
index 0000000..4c22a07
--- /dev/null
+++ b/demo/color_grating.py
@@ -0,0 +1,66 @@
+#!/usr/bin/env python
+"""Colored sine wave grating in circular mask"""
+
+############################
+#  Import various modules  #
+############################
+
+import VisionEgg
+VisionEgg.start_default_logging(); VisionEgg.watch_exceptions()
+
+from VisionEgg.Core import *
+from VisionEgg.FlowControl import Presentation, FunctionController
+from VisionEgg.Gratings import SinGrating2D
+from VisionEgg.Textures import Mask2D
+from math import *
+
+#####################################
+#  Initialize OpenGL window/screen  #
+#####################################
+
+screen = get_default_screen()
+
+######################################
+#  Create sinusoidal grating object  #
+######################################
+
+mask = Mask2D(function='circle',   # also supports 'circle'
+              radius_parameter=100,   # sigma for gaussian, radius for circle (units: num_samples)
+              num_samples=(256,256)) # this many texture elements in mask (covers whole size specified below)
+
+# NOTE: I am not a color scientist, and I am not familiar with the
+# needs of color scientists.  Color interpolation is currently done in
+# RGB space, but I assume there are other interpolation methods that
+# people may want.  Please submit any suggestions.
+
+stimulus = SinGrating2D(color1           = (0.5, 0.25, 0.5), # RGB (alpha ignored if given)
+                        color2           = (1.0, 0.5,  0.1), # RGB (alpha ignored if given)
+                        contrast         = 0.2,
+                        pedestal         = 0.1,
+                        mask             = mask, # optional
+                        position         = ( screen.size[0]/2.0, screen.size[1]/2.0 ),
+                        anchor           = 'center',
+                        size             = ( 300.0 , 300.0 ),
+                        spatial_freq     = 20.0 / screen.size[0], # units of cycles/pixel
+                        temporal_freq_hz = 1.0,
+                        orientation      = 270.0 )
+
+def pedestal_func(t):
+    # Calculate pedestal over time. (Pedestal range [0.1,0.9] and
+    # contrast = 0.2 limits total range to [0.0,1.0])
+    temporal_freq_hz = 0.2
+    return 0.4 * sin(t*2*pi * temporal_freq_hz) + 0.5
+
+###############################################################
+#  Create viewport - intermediary between stimuli and screen  #
+###############################################################
+
+viewport = Viewport( screen=screen, stimuli=[stimulus] )
+
+########################################
+#  Create presentation object and go!  #
+########################################
+
+p = Presentation(go_duration=(10.0,'seconds'),viewports=[viewport])
+p.add_controller(stimulus,'pedestal',FunctionController(during_go_func=pedestal_func))
+p.go()
diff --git a/demo/convert3d_to_2d.py b/demo/convert3d_to_2d.py
new file mode 100644
index 0000000..a01c9f1
--- /dev/null
+++ b/demo/convert3d_to_2d.py
@@ -0,0 +1,94 @@
+#!/usr/bin/env python
+"""Convert 3D position to 2D position"""
+
+import VisionEgg
+VisionEgg.start_default_logging(); VisionEgg.watch_exceptions()
+
+from VisionEgg.Core import *
+from VisionEgg.FlowControl import Presentation, FunctionController
+from VisionEgg.Text import *
+from VisionEgg.Textures import *
+
+screen = get_default_screen()
+screen.parameters.bgcolor = 0.0, 0.0, 0.0 # background black
+
+l = -0.1
+r = 0.5
+t = 0.3
+b = 0
+z = 0
+
+vertices = [(l,b,z),
+            (r,b,z),
+            (l,t,z),
+            (r,t,z)]
+
+# Get a texture
+filename = os.path.join(VisionEgg.config.VISIONEGG_SYSTEM_DIR,"data","visionegg.bmp")
+texture = Texture(filename)
+
+rect = TextureStimulus3D(texture=texture,
+                         lowerleft=vertices[0],
+                         lowerright=vertices[1],
+                         upperleft=vertices[2],
+                         upperright=vertices[3],
+                         )
+
+viewport2D = Viewport(screen=screen)
+camera_matrix = ModelView()
+
+def update(t):
+    new_camera_matrix = ModelView()
+    new_camera_matrix.stateless_translate(0,0,-1)
+    new_camera_matrix.stateless_rotate(36.0*t,0.0,1.0,0)
+    camera_matrix.parameters.matrix = new_camera_matrix.get_matrix()
+    eye_coords = camera_matrix.apply_to_vertices( vertices )
+    for i in range(len(vertex_labels)):
+        text = vertex_labels[i]
+        eye_coord_vertex = eye_coords[i]
+        window_coords = viewport3D.eye_2_window(eye_coord_vertex) # eye to window
+        text.parameters.text='<- %.1f, %.1f'%(window_coords[0],window_coords[1])
+        text.parameters.position = window_coords[0],window_coords[1]
+
+viewport3D = Viewport(
+    screen=screen,
+    projection=SimplePerspectiveProjection(fov_x=90.0),
+    camera_matrix=camera_matrix,
+    stimuli=[rect])
+    
+vertex_labels = []
+for vertex in vertices:
+    vertex_labels.append(
+        Text(text='temporary text',
+             anchor='left',
+             )
+        )
+
+other_text = []
+other_text.append(
+    Text(text='Pixel positions (x,y) calculated from 3D coordinates',
+         position=(screen.size[0]/2,screen.size[1]),
+         anchor='top',
+         )
+    )
+
+other_text.append(
+    Text(text='----> x',
+         position=(10,10),
+         anchor='left',
+         )
+    )
+
+other_text.append(
+    Text(text='----> y',
+         angle=90.0,
+         position=(10,10),
+         anchor='left',
+         )
+    )
+
+viewport2D.parameters.stimuli = vertex_labels + other_text
+
+p = Presentation(go_duration=(10.0,'seconds'),viewports=[viewport3D,viewport2D])
+p.add_controller(None, None, FunctionController(during_go_func=update))
+p.go()
diff --git a/demo/daq/simple_lpt_out.py b/demo/daq/simple_lpt_out.py
new file mode 100644
index 0000000..6ec7586
--- /dev/null
+++ b/demo/daq/simple_lpt_out.py
@@ -0,0 +1,16 @@
+"""very simple example of using the parallel port"""
+
+from VisionEgg.DaqLPT import raw_lpt_module
+import time
+
+LPT1 = 0x378 # address of parallel port -- make sure your computer agrees
+
+# turn all pins on
+data = 0xFF # values to output on parallel port
+raw_lpt_module.out(LPT1,data)
+
+time.sleep(1.0) # wait 1 second
+
+# turn all pins off
+data = 0x00
+raw_lpt_module.out(LPT1,data)
diff --git a/demo/daq/trigger_in.py b/demo/daq/trigger_in.py
new file mode 100644
index 0000000..c23bd20
--- /dev/null
+++ b/demo/daq/trigger_in.py
@@ -0,0 +1,38 @@
+#!/usr/bin/env python
+"""Use an external device to trigger the Vision Egg."""
+
+import VisionEgg
+VisionEgg.start_default_logging(); VisionEgg.watch_exceptions()
+
+from VisionEgg.Core import *
+from VisionEgg.FlowControl import Presentation, ConstantController
+from VisionEgg.Gratings import *
+import VisionEgg.Daq
+from VisionEgg.DaqLPT import *
+
+# Normal stuff (from grating demo):
+screen = get_default_screen()
+stimulus = SinGrating2D(on               = 0, # turn grating is off when not in go loop
+                        position         = ( screen.size[0]/2.0, screen.size[1]/2.0 ),
+                        anchor           = 'center',
+                        size             = ( 300.0 , 300.0 ),
+                        spatial_freq     = 10.0 / screen.size[0],
+                        temporal_freq_hz = 5.0,
+                        orientation      = 45.0 )
+viewport = Viewport( screen=screen, stimuli=[stimulus] )
+p = Presentation(go_duration=(5.0,'seconds'),
+                 trigger_go_if_armed=0, # wait for trigger
+                 viewports=[viewport])
+
+# Stimulus on controller
+stimulus_on_controller = ConstantController(during_go_value=1,between_go_value=0)
+
+# Create a trigger input controller
+trigger_in_controller = LPTTriggerInController()
+
+# Add the trigger output controller to the presentation's list of controllers
+p.add_controller(stimulus,'on',stimulus_on_controller)
+p.add_controller(p,'trigger_go_if_armed',trigger_in_controller)
+
+# Go!
+p.go()
diff --git a/demo/daq/trigger_out.py b/demo/daq/trigger_out.py
new file mode 100755
index 0000000..a79daba
--- /dev/null
+++ b/demo/daq/trigger_out.py
@@ -0,0 +1,31 @@
+#!/usr/bin/env python
+"""Use the Vision Egg to trigger an external device."""
+
+import VisionEgg
+VisionEgg.start_default_logging(); VisionEgg.watch_exceptions()
+
+from VisionEgg.Core import *
+from VisionEgg.FlowControl import Presentation
+from VisionEgg.Gratings import *
+import VisionEgg.Daq
+from VisionEgg.DaqLPT import *
+
+# Normal stuff (from grating demo):
+screen = get_default_screen()
+stimulus = SinGrating2D(position         = ( screen.size[0]/2.0, screen.size[1]/2.0 ),
+                        anchor           = 'center',
+                        size             = ( 300.0 , 300.0 ),
+                        spatial_freq     = 10.0 / screen.size[0], # units of cycles/pixel
+                        temporal_freq_hz = 5.0,
+                        orientation      = 45.0 )
+viewport = Viewport( screen=screen, stimuli=[stimulus] )
+p = Presentation(go_duration=(5.0,'seconds'),viewports=[viewport])
+
+# Create a trigger output controller
+trigger_out_controller = LPTTriggerOutController()
+
+# Add the trigger output controller to the presentation's list of controllers
+p.add_controller(None,None,trigger_out_controller)
+
+# Go!
+p.go()
diff --git a/demo/demo_arrow.py b/demo/demo_arrow.py
new file mode 100644
index 0000000..1362f6d
--- /dev/null
+++ b/demo/demo_arrow.py
@@ -0,0 +1,54 @@
+#!/usr/bin/env python
+"""Demo for the arrow stimulus."""
+
+# Author(s): Hubertus Becker <hubertus.becker at uni-tuebingen.de>
+# Copyright: (C) 2004-2005 by Hertie Institute for Clinical Brain Research,
+#            Department of Cognitive Neurology, University of Tuebingen
+# URL:       http://www.hubertus-becker.de/resources/visionegg/
+# $Revision$  $Date$
+
+
+############################
+#  Import various modules  #
+############################
+
+import VisionEgg
+VisionEgg.start_default_logging();
+VisionEgg.watch_exceptions()
+
+from VisionEgg.Core import *
+from VisionEgg.FlowControl import Presentation
+
+from VisionEgg.MoreStimuli import *
+
+#####################################
+#  Initialize OpenGL window/screen  #
+#####################################
+
+screen = get_default_screen()
+screen.parameters.bgcolor = (0.0,0.0,0.0,0.0) # Make it black (RGBA)
+
+######################################
+#  Arrow stimulus                    #
+######################################
+
+stimulus = Arrow(
+    anchor      = 'center',
+    position    = (screen.size[0]/2.0, screen.size[1]/2.0),
+    size        = (64.0, 16.0),
+    color       = (1.0, 1.0, 1.0, 1.0), # Draw it in white (RGBA)
+    orientation = 0.0 # Right
+)
+
+###############################################################
+#  Create viewport - intermediary between stimuli and screen  #
+###############################################################
+
+viewport = Viewport( screen=screen, stimuli=[stimulus] )
+
+########################################
+#  Create presentation object and go!  #
+########################################
+
+p = Presentation(go_duration=(5.0, 'seconds'), viewports=[viewport])
+p.go()
diff --git a/demo/demo_fixationpoint.py b/demo/demo_fixationpoint.py
new file mode 100644
index 0000000..82f9080
--- /dev/null
+++ b/demo/demo_fixationpoint.py
@@ -0,0 +1,53 @@
+#!/usr/bin/env python
+"""Demo for the fixation point stimulus."""
+
+# Author(s): Hubertus Becker <hubertus.becker at uni-tuebingen.de>
+# Copyright: (C) 2004-2005 by Hertie Institute for Clinical Brain Research,
+#            Department of Cognitive Neurology, University of Tuebingen
+# URL:       http://www.hubertus-becker.de/resources/visionegg/
+# $Revision$  $Date$
+
+
+############################
+#  Import various modules  #
+############################
+
+import VisionEgg
+VisionEgg.start_default_logging();
+VisionEgg.watch_exceptions()
+
+from VisionEgg.Core import *
+from VisionEgg.FlowControl import Presentation
+
+from VisionEgg.MoreStimuli import *
+
+#####################################
+#  Initialize OpenGL window/screen  #
+#####################################
+
+screen = get_default_screen()
+screen.parameters.bgcolor = (0.0,0.0,0.0,0.0) # make it black (RGBA)
+
+######################################
+#  Create fixation point stimulus    #
+######################################
+
+stimulus = FilledCircle(
+  anchor   = 'center',
+  position = (screen.size[0]/2.0, screen.size[1]/2.0),
+  radius   = 5.0,
+  color    = (255, 0, 0) # Draw it in red
+)
+
+###############################################################
+#  Create viewport - intermediary between stimuli and screen  #
+###############################################################
+
+viewport = Viewport( screen=screen, stimuli=[stimulus] )
+
+########################################
+#  Create presentation object and go!  #
+########################################
+
+p = Presentation(go_duration=(5.0, 'seconds'), viewports=[viewport])
+p.go()
diff --git a/demo/demo_keyboardresponse.py b/demo/demo_keyboardresponse.py
new file mode 100644
index 0000000..d45f85e
--- /dev/null
+++ b/demo/demo_keyboardresponse.py
@@ -0,0 +1,83 @@
+#!/usr/bin/env python
+"""Demo for the keyboard response controller class."""
+
+# Author(s): Hubertus Becker <hubertus.becker at uni-tuebingen.de>
+# Copyright: (C) 2005 by Hertie Institute for Clinical Brain Research,
+#            Department of Cognitive Neurology, University of Tuebingen
+# URL:       http://www.hubertus-becker.de/resources/visionegg/
+# $Revision$  $Date$
+
+############################
+#  Import various modules  #
+############################
+
+import VisionEgg
+VisionEgg.start_default_logging(); VisionEgg.watch_exceptions()
+
+from VisionEgg.Core import *
+from VisionEgg.FlowControl import Presentation
+from VisionEgg.Dots import *
+import pygame
+import VisionEgg.Daq
+from VisionEgg.ResponseControl import *
+
+#####################################
+#  Initialize OpenGL window/screen  #
+#####################################
+
+screen = get_default_screen()
+screen.parameters.bgcolor = (0.0,0.0,0.0,0.0) # make black (RGBA)
+
+######################################
+#  Create random dot stimulus        #
+######################################
+
+stimulus = DotArea2D(
+    position                = (screen.size[0]/2.0, screen.size[1]/2.0),
+    anchor                  = 'center',
+    size                    = (300.0 , 300.0),
+    signal_fraction         = 0.1,
+    signal_direction_deg    = 180.0,
+    velocity_pixels_per_sec = 10.0,
+    dot_lifespan_sec        = 5.0,
+    dot_size                = 3.0,
+    num_dots                = 100
+)
+
+###############################################################
+#  Create viewport - intermediary between stimuli and screen  #
+###############################################################
+
+viewport = Viewport(screen=screen, stimuli=[stimulus])
+
+########################################
+#  Create presentation object and go!  #
+########################################
+
+p = Presentation(go_duration=(5.0,'seconds'), viewports=[viewport])
+
+##############################################
+#  Connect the controller with the stimulus  #
+##############################################
+
+keyboard_response = KeyboardResponseController()
+
+# Add the keyboard controller to the presentation's list of controllers
+p.add_controller(None, None, keyboard_response)
+
+########
+#  Go  #
+########
+
+for i in range(3):
+    p.go()
+
+    # Print responses collected during the presentation
+#   print "all       =",keyboard_response.get_responses_since_go()
+#   print "all_time  =",keyboard_response.get_time_responses_since_go()
+    print "first     =",keyboard_response.get_first_response_since_go()
+    print "first_time=",keyboard_response.get_time_first_response_since_go()
+#   print "last      =",keyboard_response.get_last_response_since_go()
+#   print "last_time =",keyboard_response.get_time_last_response_since_go()
+
+#   sleep(1) # Sleep for 1 second
diff --git a/demo/demo_keyboardtrigger.py b/demo/demo_keyboardtrigger.py
new file mode 100644
index 0000000..c5cbac6
--- /dev/null
+++ b/demo/demo_keyboardtrigger.py
@@ -0,0 +1,53 @@
+#!/usr/bin/env python
+"""Use the keyboard to trigger the Vision Egg."""
+
+# Author(s): Hubertus Becker <hubertus.becker at uni-tuebingen.de>
+# Copyright: (C) 2005 by Hertie Institute for Clinical Brain Research,
+#            Department of Cognitive Neurology, University of Tuebingen
+# URL:       http://www.hubertus-becker.de/resources/visionegg/
+# $Revision$  $Date$
+
+import VisionEgg
+VisionEgg.start_default_logging(); VisionEgg.watch_exceptions()
+
+from VisionEgg.Core import *
+from VisionEgg.FlowControl import Presentation, ConstantController
+from VisionEgg.Gratings import *
+import VisionEgg.Daq
+from VisionEgg.DaqKeyboard import *
+import pygame
+
+# Normal stuff (from grating demo):
+screen = get_default_screen()
+stimulus = SinGrating2D(
+    on               = 0, # turn grating is off when not in go loop
+    position         = ( screen.size[0]/2.0, screen.size[1]/2.0 ),
+    anchor           = 'center',
+    size             = ( 300.0 , 300.0 ),
+    spatial_freq     = 10.0 / screen.size[0],
+    temporal_freq_hz = 5.0,
+    orientation      = 45.0
+)
+
+viewport = Viewport( screen=screen, stimuli=[stimulus] )
+p = Presentation(
+    go_duration=(5.0,'seconds'),
+    trigger_go_if_armed=0, # wait for trigger
+    viewports=[viewport]
+)
+
+# Stimulus on controller
+stimulus_on_controller = ConstantController(during_go_value=1,between_go_value=0)
+
+# Create a trigger input controller
+trigger_in_controller = KeyboardTriggerInController() # Default is key '1'
+#trigger_in_controller = KeyboardTriggerInController(pygame.locals.K_2) # Use '2'
+
+# Add the trigger output controller to the presentation's list of controllers
+p.add_controller(stimulus,'on',stimulus_on_controller)
+p.add_controller(p,'trigger_go_if_armed',trigger_in_controller)
+
+# Go!
+p.go()
+p.go()
+p.go()
diff --git a/demo/displayText.py b/demo/displayText.py
new file mode 100755
index 0000000..3728154
--- /dev/null
+++ b/demo/displayText.py
@@ -0,0 +1,24 @@
+#!/usr/bin/env python
+"""Display text strings."""
+
+import VisionEgg
+VisionEgg.start_default_logging(); VisionEgg.watch_exceptions()
+
+from VisionEgg.Core import get_default_screen, Viewport
+from VisionEgg.FlowControl import Presentation
+from VisionEgg.Text import Text
+
+screen = get_default_screen()
+screen.parameters.bgcolor = (0.0,0.0,1.0) # background blue (RGB)
+
+text = Text(text="Hello world!",
+            color=(1.0,1.0,1.0), # alpha is ignored (set with max_alpha_param)
+            position=(screen.size[0]/2,screen.size[1]/2),
+            font_size=50,
+            anchor='center')
+
+viewport = Viewport(screen=screen,
+                    size=screen.size,
+                    stimuli=[text])
+p = Presentation(go_duration=(5.0,'seconds'),viewports=[viewport])
+p.go()
diff --git a/demo/displayUnicode.py b/demo/displayUnicode.py
new file mode 100644
index 0000000..2a8b550
--- /dev/null
+++ b/demo/displayUnicode.py
@@ -0,0 +1,71 @@
+#!/usr/bin/env python
+# -*- coding: UTF-8 -*-
+"""Display unicode text strings."""
+
+# data from http://www.columbia.edu/kermit/utf8.html
+phrases = {'English':                           u"I can eat glass and it doesn't hurt me.",
+           'Sanskrit':                          u"काचं शक्नोम्यत्तुम् । नोपहिनस्ति माम् ॥",
+           'Sanskrit (standard transcription)': u"kācaṃ śaknomyattum; nopahinasti mām.",
+           'Classical Greek':                   u"ὕαλον ϕαγεῖν δύναμαι· τοῦτο οὔ με βλάπτει.",
+           'Greek':                             u"Μπορώ να φάω σπασμένα γυαλιά χωρίς να πάθω τίποτα.",
+           'Thai':                              u"ฉันกินกระจกได้ แต่มันไม่ทำให้ฉันเจ็บ",
+           'Chinese':                           u"我能吞下玻璃而不伤身体",
+           'Chinese (Traditional)':             u"我能吞下玻璃而不傷身體",
+           'Japanese':                          u"私はガラスを食べられます。それは私を傷つけません。",
+           'Korean':                            u"나는 유리를 먹을 수 있어요. 그래도 아프지 않아요",
+           'Arabic':                            u"أنا قادر على أكل الزجاج و هذا لا يؤلمني.",
+           'Hebrew':                            u"אני יכול לאכול זכוכית וזה לא מזיק לי.",
+}
+
+# collect above data into 2 sequences:
+language, phrase = zip(*[item for item in phrases.iteritems()])
+
+import VisionEgg
+VisionEgg.start_default_logging(); VisionEgg.watch_exceptions()
+
+from VisionEgg.Core import *
+from VisionEgg.FlowControl import Presentation
+from VisionEgg.Text import *
+import pygame
+from pygame.locals import *
+
+screen = get_default_screen()
+screen.parameters.bgcolor = (0.0,0.0,1.0) # background blue (RGB)
+
+if sys.platform == 'win32':
+    font_name = r'C:\Windows\Fonts\Arial.ttf'
+else:
+    font_name = '/usr/share/fonts/truetype/Arial.ttf'
+
+if not os.path.exists(font_name):
+    print 'WARNING: font_name "%s" does not exist, using default font'%font_name
+    font_name = None
+
+text = Text(color=(1.0,1.0,1.0), # alpha is ignored (set with max_alpha_param)
+            position=(screen.size[0]/2,screen.size[1]/2),
+            ignore_size_parameter=False, # ignore font size (use texture size)
+            size = (screen.size[0],max(screen.size[0]/10,10)),
+            anchor='center',
+            font_name=font_name)
+
+viewport = Viewport(screen=screen,
+                    size=screen.size,
+                    stimuli=[text])
+
+# The main loop below is an alternative to using the
+# VisionEgg.FlowControl.Presentation class.
+
+frame_timer = FrameTimer()
+quit_now = 0
+while not quit_now:
+    for event in pygame.event.get():
+        if event.type in (QUIT,KEYDOWN,MOUSEBUTTONDOWN):
+            quit_now = 1
+
+    idx = int(VisionEgg.time_func()%len(language))
+    text.parameters.text = "%s: %s"%(language[idx],phrase[idx])
+    screen.clear()
+    viewport.draw()
+    swap_buffers()
+    frame_timer.tick()
+frame_timer.log_histogram()
diff --git a/demo/dots.py b/demo/dots.py
new file mode 100755
index 0000000..930c9e8
--- /dev/null
+++ b/demo/dots.py
@@ -0,0 +1,47 @@
+#!/usr/bin/env python
+"""Random dot stimulus"""
+
+############################
+#  Import various modules  #
+############################
+
+import VisionEgg
+VisionEgg.start_default_logging(); VisionEgg.watch_exceptions()
+
+from VisionEgg.Core import get_default_screen, Viewport
+from VisionEgg.FlowControl import Presentation
+from VisionEgg.Dots import DotArea2D
+
+#####################################
+#  Initialize OpenGL window/screen  #
+#####################################
+
+screen = get_default_screen()
+screen.parameters.bgcolor = (0.0,0.0,0.0,0.0) # make black (RGBA)
+
+######################################
+#  Create random dot stimulus        #
+######################################
+
+stimulus = DotArea2D( position                = ( screen.size[0]/2.0, screen.size[1]/2.0 ),
+                      anchor                  = 'center',
+                      size                    = ( 300.0 , 300.0 ),
+                      signal_fraction         = 0.1,
+                      signal_direction_deg    = 180.0,
+                      velocity_pixels_per_sec = 10.0,
+                      dot_lifespan_sec        = 5.0,
+                      dot_size                = 3.0,
+                      num_dots                = 100)
+
+###############################################################
+#  Create viewport - intermediary between stimuli and screen  #
+###############################################################
+
+viewport = Viewport( screen=screen, stimuli=[stimulus] )
+
+########################################
+#  Create presentation object and go!  #
+########################################
+
+p = Presentation(go_duration=(10.0,'seconds'),viewports=[viewport])
+p.go()
diff --git a/demo/dots_pyro_client.py b/demo/dots_pyro_client.py
new file mode 100644
index 0000000..54eed09
--- /dev/null
+++ b/demo/dots_pyro_client.py
@@ -0,0 +1,37 @@
+#!/usr/bin/env python
+"""Contact the server run by dots_pyro_server and modulate the display
+"""
+import time
+import Pyro.core
+
+Pyro.config.PYRO_MULTITHREADED = 0
+Pyro.config.PYRO_TRACELEVEL = 3
+Pyro.config.PYRO_USER_TRACELEVEL = 3
+Pyro.config.PYRO_DETAILED_TRACEBACK = 1
+Pyro.config.PYRO_PRINT_REMOTE_TRACEBACK = 1
+
+def main():
+    Pyro.core.initClient(banner=0)
+    
+    hostname = 'localhost'
+    port = 4321
+    name = 'DotServer'
+    
+    URI = "PYROLOC://%s:%d/%s" % (hostname,port,name)
+    dot_server_instance = Pyro.core.getProxyForURI(URI)
+    dot_server_instance.set_text('') # clear the "awaiting connection" text
+
+    try:
+        while True:
+            dot_server_instance.set_signal_fraction(1.0)
+            print 'signal 1.0'
+            time.sleep(0.5)
+            dot_server_instance.set_signal_fraction(0.1)
+            print 'signal 0.1'
+            time.sleep(0.5)
+    finally:
+        dot_server_instance.quit()
+
+if __name__=='__main__':
+    main()
+    
diff --git a/demo/dots_pyro_server.py b/demo/dots_pyro_server.py
new file mode 100644
index 0000000..065bf2b
--- /dev/null
+++ b/demo/dots_pyro_server.py
@@ -0,0 +1,95 @@
+#!/usr/bin/env python
+"""User-defined mainloop while listening for commands over network
+
+This example implements a mainloop directly within this short script
+in addition to starting a Pyro server which listens for commands on
+the network.
+
+NOTE THAT USING PYRO IN THIS WAY A SECURITY RISK - PLEASE ONLY RUN
+BEHIND A FIREWALL. AN ATTACKER COULD PROBABLY EXECUTE ARBITRARY PYTHON
+COMMANDS ON YOUR COMPUTER WHEN RUNNING THIS SERVER.
+"""
+
+import VisionEgg
+VisionEgg.start_default_logging(); VisionEgg.watch_exceptions()
+
+import VisionEgg.Core
+import pygame
+import pygame.locals
+import VisionEgg.Text
+import VisionEgg.Dots
+import Pyro.core
+
+Pyro.config.PYRO_MULTITHREADED = 0
+Pyro.config.PYRO_TRACELEVEL = 3
+Pyro.config.PYRO_USER_TRACELEVEL = 3
+Pyro.config.PYRO_DETAILED_TRACEBACK = 1
+Pyro.config.PYRO_PRINT_REMOTE_TRACEBACK = 1
+
+class DotServer(Pyro.core.ObjBase):
+    def post_init(self,screen,pyro_daemon):
+        self.pyro_daemon = pyro_daemon
+        
+        screen.parameters.bgcolor = (0.0,0.0,0.0) # black (RGB)
+        self.dots = VisionEgg.Dots.DotArea2D(
+            position                = ( screen.size[0]/2.0, screen.size[1]/2.0 ),
+            size                    = ( 300.0 , 300.0 ),
+            signal_fraction         = 0.1,
+            signal_direction_deg    = 180.0,
+            velocity_pixels_per_sec = 10.0,
+            dot_lifespan_sec        = 5.0,
+            dot_size                = 3.0,
+            num_dots                = 100)
+        self.text = VisionEgg.Text.Text(
+            text = "awaiting connection from dots_pyro_client",
+            position = (screen.size[0]/2,2),
+            anchor = 'bottom',
+            color = (1.0,1.0,1.0))
+        
+        self.screen = screen
+        self.viewport = VisionEgg.Core.Viewport( screen=screen, 
+                                                 stimuli=[self.dots,self.text] )
+        self.frame_timer = VisionEgg.Core.FrameTimer()
+        self.quit_now = False
+
+    def set_text(self,t):
+        self.text.parameters.text = t
+
+    def set_signal_fraction(self,f):
+        self.dots.set(signal_fraction=f)
+
+    def quit(self):
+        self.quit_now = True
+
+    def mainloop(self):
+        pyro_timeout = 0.0 # just check for any already events present
+        while not self.quit_now:
+            
+            for event in pygame.event.get():
+                if event.type in (pygame.locals.QUIT,
+                                  pygame.locals.KEYDOWN,
+                                  pygame.locals.MOUSEBUTTONDOWN):
+                    self.quit_now = True
+            self.pyro_daemon.handleRequests(pyro_timeout)
+            
+            self.screen.clear()
+            self.viewport.draw()
+            VisionEgg.Core.swap_buffers()
+            self.frame_timer.tick()
+            
+        self.frame_timer.log_histogram()
+
+def main():
+    screen = VisionEgg.Core.get_default_screen()
+    
+    Pyro.core.initServer(banner=0)
+    hostname = 'localhost'
+    port = 4321
+    daemon = Pyro.core.Daemon(host=hostname,port=port)
+    dot_server_instance = DotServer()
+    dot_server_instance.post_init(screen,daemon)
+    URI=daemon.connect(dot_server_instance,'DotServer')
+    dot_server_instance.mainloop()
+
+if __name__=='__main__':
+    main()
diff --git a/demo/dots_simple_loop.py b/demo/dots_simple_loop.py
new file mode 100755
index 0000000..9b2a356
--- /dev/null
+++ b/demo/dots_simple_loop.py
@@ -0,0 +1,52 @@
+#!/usr/bin/env python
+
+"""Draw dots, using your own event loop.
+
+This bypasses the VisionEgg.FlowControl.Presentation class.  It may be easier
+to create simple experiments this way."""
+
+import VisionEgg
+VisionEgg.start_default_logging(); VisionEgg.watch_exceptions()
+
+
+from VisionEgg.Core import Screen, Viewport, swap_buffers, FrameTimer, \
+     get_default_screen
+import pygame
+from pygame.locals import QUIT,KEYDOWN,MOUSEBUTTONDOWN
+from VisionEgg.Text import Text
+from VisionEgg.Dots import DotArea2D
+
+screen = get_default_screen()
+screen.parameters.bgcolor = (0.0,0.0,0.0) # black (RGB)
+
+dots = DotArea2D( position                = ( screen.size[0]/2.0,
+                                              screen.size[1]/2.0 ),
+                  size                    = ( 300.0 , 300.0 ),
+                  signal_fraction         = 0.1,
+                  signal_direction_deg    = 180.0,
+                  velocity_pixels_per_sec = 10.0,
+                  dot_lifespan_sec        = 5.0,
+                  dot_size                = 3.0,
+                  num_dots                = 100)
+
+text = Text( text = "Vision Egg dot_simple_loop demo.",
+             position = (screen.size[0]/2,2),
+             anchor = 'bottom',
+             color = (1.0,1.0,1.0))
+
+viewport = Viewport( screen=screen, stimuli=[dots,text] )
+
+# The main loop below is an alternative to using the
+# VisionEgg.FlowControl.Presentation class.
+
+frame_timer = FrameTimer()
+quit_now = 0
+while not quit_now:
+    for event in pygame.event.get():
+        if event.type in (QUIT,KEYDOWN,MOUSEBUTTONDOWN):
+            quit_now = 1
+    screen.clear()
+    viewport.draw()
+    swap_buffers()
+    frame_timer.tick()
+frame_timer.log_histogram()
diff --git a/demo/ephys_gui.pyw b/demo/ephys_gui.pyw
new file mode 100755
index 0000000..907d33a
--- /dev/null
+++ b/demo/ephys_gui.pyw
@@ -0,0 +1,23 @@
+#!/usr/bin/env python
+
+import sys
+import Pyro
+import Tkinter, tkMessageBox
+
+import VisionEgg
+VisionEgg.start_default_logging(); VisionEgg.watch_exceptions()
+
+from VisionEgg.PyroApps.EPhysGUI import client_list, AppWindow, get_server
+
+# You can add your own controllers and GUIs to client_list
+
+result = get_server()
+if result:
+    hostname,port = result
+    app_window = AppWindow(client_list=client_list,
+                           server_hostname=hostname,
+                           server_port=port)
+
+    app_window.winfo_toplevel().wm_iconbitmap()
+    app_window.pack(expand=1,fill=Tkinter.BOTH)
+    app_window.mainloop()
diff --git a/demo/ephys_server.py b/demo/ephys_server.py
new file mode 100755
index 0000000..51481fa
--- /dev/null
+++ b/demo/ephys_server.py
@@ -0,0 +1,14 @@
+#!/usr/bin/env python
+
+import sys
+import tkMessageBox
+import Pyro
+
+import VisionEgg
+VisionEgg.start_default_logging(); VisionEgg.watch_exceptions()
+
+from VisionEgg.PyroApps.EPhysServer import server_modules, start_server
+
+# You can add your own server modules to the server_modules list
+
+start_server( server_modules )
diff --git a/demo/flames_pygame.py b/demo/flames_pygame.py
new file mode 100755
index 0000000..7b2ab00
--- /dev/null
+++ b/demo/flames_pygame.py
@@ -0,0 +1,157 @@
+#!/usr/bin/env python
+
+"""flames.py - Realtime Fire Effect Demo
+Pete Shinners, April 3, 2001
+Slightly modified by Andrew Straw, July 24, 2003
+
+Ok, this is a pretty intense demonstation of using
+the surfarray module and numeric. It uses an 8bit
+surfaces with a colormap to represent the fire. We
+then go crazy on a separate Numeric array to get
+realtime fire. I'll try to explain my methods here...
+
+This flame algorithm is very popular, and you can find
+it for just about all graphic libraries. The fire effect
+works by placing random values on the bottom row of the
+image. Then doing a simplish blur that is weighted to
+move the values upward. Then slightly darken the image
+so the colors get darker as they move up. The secret is
+that the blur routine is "recursive" so when you blur
+the 2nd row, the values there are used when you blur
+the 3rd row, and all the way up.
+
+This fire algorithm works great, but the bottom rows
+are usually a bit ugly. In this demo we just render
+a fire surface that has 3 extra rows at the bottom we
+just don't use.
+
+Also, the fire is rendered at half the resolution of
+the full image. We then simply double the size of the
+fire data before applying to the surface.
+
+Several of these techniques are covered in the pygame
+surfarray tutorial. doubling an image, and the fancy
+blur is just a modified version of what is in the tutorial.
+
+This runs at about 40fps on my celeron-400
+"""
+
+
+import pygame
+from pygame.surfarray import *
+import pygame.surfarray
+import numpy as np
+if hasattr(pygame.surfarray,'use_arraytype'):
+    use_arraytype('numpy')
+    pygame_array_func = np.asarray
+else:
+    import Numeric
+    pygame_array_func = Numeric.array
+from pygame.locals import *
+from numpy.oldnumeric import *
+from numpy.oldnumeric.random_array import *
+
+import VisionEgg
+VisionEgg.start_default_logging(); VisionEgg.watch_exceptions()
+from VisionEgg.Core import FrameTimer
+
+RES = array((240, 180))
+MAX = 246
+RESIDUAL = 86
+HSPREAD, VSPREAD = 26, 78
+VARMIN, VARMAX = -2, 3
+
+def main():
+    "main function called when the script is run"
+    #first we just init pygame and create some empty arrays to work with
+    pygame.init()
+    screen = pygame.display.set_mode(RES, 0, 8)
+    print screen.get_flags()
+    setpalette(screen)
+    flame = zeros(RES/2 + (0,3))
+    doubleflame = zeros(RES)
+    randomflamebase(flame)
+
+    #the mainloop is pretty simple, the work is done in these funcs
+    frame_timer = FrameTimer()
+    quit_now = 0
+    while not quit_now:
+        for event in pygame.event.get():
+            if event.type in (QUIT,KEYDOWN,MOUSEBUTTONDOWN):
+                quit_now = 1
+        modifyflamebase(flame)
+        processflame(flame)
+        blitdouble(screen, flame, doubleflame)
+        pygame.display.flip()
+        frame_timer.tick()
+    frame_timer.log_histogram()
+
+
+
+def setpalette(screen):
+    "here we create a numeric array for the colormap"
+    gstep, bstep = 75, 150
+    cmap = zeros((256, 3))
+    cmap[:,0] = minimum(arange(256)*3, 255)
+    cmap[gstep:,1] = cmap[:-gstep,0]
+    cmap[bstep:,2] = cmap[:-bstep,0]
+    screen.set_palette(cmap)
+
+
+def randomflamebase(flame):
+    "just set random values on the bottom row"
+    flame[:,-1] = randint(0, MAX, flame.shape[0])
+
+
+def modifyflamebase(flame):
+    "slightly change the bottom row with random values"
+    bottom = flame[:,-1]
+    mod = randint(VARMIN, VARMAX, bottom.shape[0])
+    add(bottom, mod, bottom)
+    maximum(bottom, 0, bottom)
+    #if values overflow, reset them to 0
+    bottom[:] = choose(greater(bottom,MAX), (bottom,0))
+
+
+def processflame(flame):
+    "this function does the real work, tough to follow"
+    notbottom = flame[:,:-1]
+
+    #first we multiply by about 60%
+    multiply(notbottom, 146, notbottom)
+    right_shift(notbottom, 8, notbottom)
+
+    #work with flipped image so math accumulates.. magic!
+    flipped = flame[:,::-1]
+
+    #all integer based blur, pulls image up too
+    tmp = flipped * 20
+    right_shift(tmp, 8, tmp)
+    tmp2 = tmp >> 1
+    add(flipped[1:,:], tmp2[:-1,:], flipped[1:,:])
+    add(flipped[:-1,:], tmp2[1:,:], flipped[:-1,:])
+    add(flipped[1:,1:], tmp[:-1,:-1], flipped[1:,1:])
+    add(flipped[:-1,1:], tmp[1:,:-1], flipped[:-1,1:])
+
+    tmp = flipped * 80
+    right_shift(tmp, 8, tmp)
+    add(flipped[:,1:], tmp[:,:-1]>>1, flipped[:,1:])
+    add(flipped[:,2:], tmp[:,:-2], flipped[:,2:])
+
+    #make sure no values got too hot
+    minimum(notbottom, MAX, notbottom)
+
+
+def blitdouble(screen, flame, doubleflame):
+    "double the size of the data, and blit to screen"
+    doubleflame[::2,:-2:2] = flame[:,:-4]
+    doubleflame[1::2,:-2:2] = flame[:,:-4]
+    doubleflame[:,1:-2:2] = doubleflame[:,:-2:2]
+    to_blit = pygame_array_func( doubleflame.astype(np.uint8))
+    blit_array(screen, to_blit)
+
+
+
+if __name__ == '__main__': main()
+
+
diff --git a/demo/flames_visionegg.py b/demo/flames_visionegg.py
new file mode 100755
index 0000000..e28bfcf
--- /dev/null
+++ b/demo/flames_visionegg.py
@@ -0,0 +1,90 @@
+#!/usr/bin/env python
+"""flames_visionegg.py - a Vision Egg implementation of pygame flames.
+
+This demo renders a pygame surface (drawn with the flames demo of the
+PCR - pygame code repository) and then updates and OpenGL texture with
+surface using the Vision Egg."""
+
+import os
+import VisionEgg
+VisionEgg.start_default_logging(); VisionEgg.watch_exceptions()
+
+from VisionEgg.Core import *
+from VisionEgg.FlowControl import Presentation, FunctionController, TIME_INDEPENDENT
+from VisionEgg.Text import *
+from VisionEgg.Textures import *
+import pygame.surface, pygame.locals
+import pygame.surfarray
+import OpenGL.GL as gl
+import flames_pygame as flames # "flames" from the pygame code repository
+import pygame.surfarray
+import numpy as np
+if hasattr(pygame.surfarray,'use_arraytype'):
+    pygame.surfarray.use_arraytype('numpy')
+    pygame_array_func = np.asarray
+else:
+    import Numeric
+    pygame_array_func = Numeric.array
+import numpy.oldnumeric as Numeric
+
+screen = get_default_screen()
+
+# create 8 bit pygame surface
+pygame_surface = pygame.surface.Surface((256,128),0,8)
+# set the colormap of the pygame surface
+flames.setpalette(pygame_surface)
+# create a texture using this surface as the source of texel data
+texture = Texture(pygame_surface)
+
+# create an empty array
+flame = Numeric.zeros(texture.size)
+# fill it
+flames.randomflamebase(flame)
+
+text = Text( text = "Vision Egg/pygame flames demo - Press Esc to quit",
+             position = (screen.size[0]/2,2),
+             anchor = 'bottom',
+             color = (1.0,1.0,1.0,1.0))
+
+# Create the instance of TextureStimulus
+
+# (The bottom 3 pixels of the flames texture contains artifacts from
+# the flame-drawing algorithm, so put them below the visible portion
+# of the screen)
+
+hide_fraction = 3.0/texture.size[1]
+screen_hide_height = screen.size[1]*hide_fraction*2
+
+stimulus = TextureStimulus(texture = texture,
+                           position = (0,-screen_hide_height),
+                           anchor = 'lowerleft',
+                           size    = (screen.size[0],screen.size[1]+screen_hide_height), # scale to fit screen
+                           mipmaps_enabled = 0,
+                           texture_min_filter=gl.GL_LINEAR)
+
+texture_object = stimulus.parameters.texture.get_texture_object()
+def update_flames():
+    # this does the work of updating the flames
+    flames.modifyflamebase( flame )
+    flames.processflame( flame )
+    to_blit = pygame_array_func( flame.astype( np.uint8) )
+    pygame.surfarray.blit_array(pygame_surface, to_blit)
+    texture_object.put_sub_image( pygame_surface )
+
+viewport = Viewport(screen=screen,
+                    stimuli=[stimulus,text])
+
+p = Presentation(go_duration=('forever',),viewports=[viewport])
+
+def quit(dummy_arg=None):
+    p.parameters.go_duration = (0,'frames')
+
+def keydown(event):
+    if event.key == pygame.locals.K_ESCAPE:
+        quit()
+
+p.parameters.handle_event_callbacks=[(pygame.locals.QUIT, quit),
+                                     (pygame.locals.KEYDOWN, keydown)]
+p.add_controller(None,None,FunctionController(during_go_func=update_flames,
+                                              temporal_variables=TIME_INDEPENDENT))
+p.go()
diff --git a/demo/framecount.py b/demo/framecount.py
new file mode 100755
index 0000000..631aa90
--- /dev/null
+++ b/demo/framecount.py
@@ -0,0 +1,31 @@
+#!/usr/bin/env python
+"""Use frame information to display stimuli."""
+
+import VisionEgg
+VisionEgg.start_default_logging(); VisionEgg.watch_exceptions()
+
+from VisionEgg.Core import get_default_screen, Viewport
+from VisionEgg.FlowControl import Presentation, FunctionController, FRAMES_ABSOLUTE
+from VisionEgg.Text import Text
+
+screen = get_default_screen()
+screen.parameters.bgcolor = (0.0,0.0,1.0) # background blue (RGB)
+
+textvar = Text(color=(1.0,1.0,1.0), # alpha is ignored (set with max_alpha_param)
+               position=(screen.size[0]/4,screen.size[1]/2),
+               font_size=50,
+               anchor='left')
+
+def text_func(f_abs):
+    return "framecount: % 4d"%f_abs
+
+t_controller = FunctionController(during_go_func=text_func,
+                                  temporal_variables = FRAMES_ABSOLUTE)
+
+viewport = Viewport(screen=screen,
+                    size=screen.size,
+                    stimuli=[textvar])
+
+p = Presentation(go_duration=(5.0,'seconds'),viewports=[viewport])
+p.add_controller(textvar,'text',t_controller)
+p.go()
diff --git a/demo/gabor.py b/demo/gabor.py
new file mode 100755
index 0000000..4108b03
--- /dev/null
+++ b/demo/gabor.py
@@ -0,0 +1,48 @@
+#!/usr/bin/env python
+"""Sinusoidal grating in a gaussian mask"""
+
+############################
+#  Import various modules  #
+############################
+
+import VisionEgg
+VisionEgg.start_default_logging(); VisionEgg.watch_exceptions()
+
+from VisionEgg.Core import *
+from VisionEgg.FlowControl import Presentation
+from VisionEgg.Gratings import SinGrating2D
+from VisionEgg.Textures import Mask2D
+
+#####################################
+#  Initialize OpenGL window/screen  #
+#####################################
+
+screen = get_default_screen()
+
+##########################################################
+#  Create sinusoidal grating object and gaussian window  #
+##########################################################
+
+mask = Mask2D(function='gaussian',   # also supports 'circle'
+              radius_parameter=25,   # sigma for gaussian, radius for circle (units: num_samples)
+              num_samples=(256,256)) # this many texture elements in mask (covers whole size specified below)
+
+stimulus = SinGrating2D(mask             = mask,
+                        position         = ( screen.size[0]/2.0, screen.size[1]/2.0 ),
+                        size             = ( 300.0 , 300.0 ),
+                        spatial_freq     = 10.0 / screen.size[0], # units of cycles/pixel
+                        temporal_freq_hz = 1.0,
+                        orientation      = 45.0 )
+
+###############################################################
+#  Create viewport - intermediary between stimuli and screen  #
+###############################################################
+
+viewport = Viewport( screen=screen, stimuli=[stimulus] )
+
+########################################
+#  Create presentation object and go!  #
+########################################
+
+p = Presentation(go_duration=(5.0,'seconds'),viewports=[viewport])
+p.go()
diff --git a/demo/gamma.py b/demo/gamma.py
new file mode 100755
index 0000000..69ccff4
--- /dev/null
+++ b/demo/gamma.py
@@ -0,0 +1,75 @@
+#!/usr/bin/env python
+"""Test whether your video drivers support setting gamma ramps"""
+
+import VisionEgg
+VisionEgg.start_default_logging(); VisionEgg.watch_exceptions()
+
+from VisionEgg.Core import Viewport, get_default_screen
+from VisionEgg.FlowControl import Presentation
+from VisionEgg.Gratings import SinGrating2D
+from VisionEgg.Text import Text
+import pygame
+import numpy as np
+
+if not hasattr(pygame.display,"set_gamma_ramp"):
+    raise RuntimeError("Need pygame 1.5 or greater for set_gamma_ramp function.")
+
+# Initialize OpenGL graphics screen.
+screen = get_default_screen()
+
+center_x = screen.size[0]/2.0
+
+# Create the instance SinGrating with appropriate parameters
+stimulus = SinGrating2D()
+text2 = Text(text="set_gamma_ramp(r,g,b):",
+             position=(center_x,0),anchor="bottom")
+text1 = Text(text="Press - to decrease luminance range, + to increase.",
+             position=(center_x,text2.parameters.size[1]+5),anchor="bottom")
+
+# Use viewport with pixel coordinate system for projection
+viewport = Viewport(screen=screen,stimuli=[stimulus,text1,text2])
+
+def quit(event):
+    global p # get presentation instance
+    p.parameters.quit = 1
+
+# set initial value
+global gamma_scale
+gamma_scale = 1.0
+            
+def keydown(event):
+    global gamma_scale
+    if event.key == pygame.locals.K_ESCAPE:
+        quit(event)
+    elif event.key in [pygame.locals.K_KP_PLUS,
+                       pygame.locals.K_PLUS,
+                       pygame.locals.K_EQUALS]:
+        gamma_scale += 0.05
+        do_gamma()
+    elif event.key in [pygame.locals.K_KP_MINUS,
+                       pygame.locals.K_MINUS]:
+        gamma_scale -= 0.05
+        do_gamma()
+        
+def do_gamma():
+    global gamma_scale, text2
+    r = (np.arange(256)*256*gamma_scale).astype('i')
+    g = r
+    b = r
+    worked = pygame.display.set_gamma_ramp(r,g,b)
+    if worked:
+        text2.parameters.text = "set_gamma_ramp(r,g,b): success"
+    else:
+        text2.parameters.text = "set_gamma_ramp(r,g,b): failure"
+
+do_gamma() # set gamma once initially
+
+handle_event_callbacks = [(pygame.locals.QUIT, quit),
+                          (pygame.locals.KEYDOWN, keydown)]
+
+# Create an instance of the Presentation class
+p = Presentation(viewports=[viewport],
+                 handle_event_callbacks=handle_event_callbacks)
+
+# Go!
+p.run_forever()
diff --git a/demo/grating.py b/demo/grating.py
new file mode 100755
index 0000000..dc30c24
--- /dev/null
+++ b/demo/grating.py
@@ -0,0 +1,43 @@
+#!/usr/bin/env python
+"""Sinusoidal grating calculated in realtime."""
+
+############################
+#  Import various modules  #
+############################
+
+import VisionEgg
+VisionEgg.start_default_logging(); VisionEgg.watch_exceptions()
+
+from VisionEgg.Core import *
+from VisionEgg.FlowControl import Presentation
+from VisionEgg.Gratings import *
+
+#####################################
+#  Initialize OpenGL window/screen  #
+#####################################
+
+screen = get_default_screen()
+
+######################################
+#  Create sinusoidal grating object  #
+######################################
+
+stimulus = SinGrating2D(position         = ( screen.size[0]/2.0, screen.size[1]/2.0 ),
+                        anchor           = 'center',
+                        size             = ( 300.0 , 300.0 ),
+                        spatial_freq     = 10.0 / screen.size[0], # units of cycles/pixel
+                        temporal_freq_hz = 1.0,
+                        orientation      = 45.0 )
+
+###############################################################
+#  Create viewport - intermediary between stimuli and screen  #
+###############################################################
+
+viewport = Viewport( screen=screen, stimuli=[stimulus] )
+
+########################################
+#  Create presentation object and go!  #
+########################################
+
+p = Presentation(go_duration=(5.0,'seconds'),viewports=[viewport])
+p.go()
diff --git a/demo/gratings_multi.py b/demo/gratings_multi.py
new file mode 100644
index 0000000..352ea97
--- /dev/null
+++ b/demo/gratings_multi.py
@@ -0,0 +1,75 @@
+#!/usr/bin/env python
+"""Sinusoidal gratings calculated in realtime."""
+
+############################
+#  Import various modules  #
+############################
+
+import VisionEgg
+VisionEgg.start_default_logging(); VisionEgg.watch_exceptions()
+
+from VisionEgg.Core import *
+from VisionEgg.FlowControl import Presentation
+from VisionEgg.Gratings import *
+
+#####################################
+#  Initialize OpenGL window/screen  #
+#####################################
+
+screen = get_default_screen()
+
+#######################################
+#  Create sinusoidal grating objects  #
+#######################################
+
+size = (50,100)
+grating_data_size = max(size)*2, max(size)*2 # make sure tilting it doesn't show edges
+
+up = SinGrating2D(position         = ( size[0]/2.0, size[1]/2.0 ),
+                  anchor           = 'center',
+                  size             = grating_data_size,
+                  spatial_freq     = 1.0/30.0, # units of cycles/pixel
+                  temporal_freq_hz = 1.0,
+                  orientation      = 80.0,
+                  recalculate_phase_tolerance = 5.0, # speedup
+                  )
+
+down = SinGrating2D(position         = ( size[0]/2.0, size[1]/2.0 ),
+                    anchor           = 'center',
+                    size             = grating_data_size,
+                    spatial_freq     = 1.0/30.0, # units of cycles/pixel
+                    temporal_freq_hz = 1.0,
+                    orientation      = -80.0,
+                    recalculate_phase_tolerance = 5.0, # speedup
+                    )
+
+################################################################
+#  Create viewports - intermediary between stimuli and screen  #
+################################################################
+
+x_space = 10
+y_space = 10
+
+viewports = []
+
+for x in range(size[0]+x_space,screen.size[0],size[0]+x_space):
+    even_row = 0
+    for y in range(size[1]+y_space,screen.size[1],size[1]+y_space):
+        even_row = not even_row
+        if even_row:
+            stimulus = up
+        else:
+            stimulus = down
+            
+        viewports.append( Viewport( screen=screen,
+                                    stimuli=[stimulus],
+                                    position=(x,y),
+                                    anchor='top',
+                                    size=size))
+
+########################################
+#  Create presentation object and go!  #
+########################################
+
+p = Presentation(go_duration=(10.0,'seconds'),viewports=viewports)
+p.go()
diff --git a/demo/image_sequence_fast.py b/demo/image_sequence_fast.py
new file mode 100755
index 0000000..39a045e
--- /dev/null
+++ b/demo/image_sequence_fast.py
@@ -0,0 +1,62 @@
+#!/usr/bin/env python
+"""Display a sequence of images using a pseudo-blit routine.
+
+This is a fast way to switch images because the OpenGL texture object
+is already created and the image data is already in system RAM.
+Switching the image merely consists of putting the new data into
+OpenGL.
+
+Currently, there is no support for ensuring image sizes remain
+constant, so if you get strange behavior, please ensure that all your
+images are the same size.
+"""
+
+from VisionEgg import *
+start_default_logging(); watch_exceptions()
+
+from VisionEgg.Core import *
+from VisionEgg.FlowControl import Presentation, FunctionController
+from VisionEgg.Textures import *
+
+import Image, ImageDraw
+
+import OpenGL.GL as gl
+
+num_images = 20
+duration_per_image = 0.1 # seconds
+
+image_size = (256,256)
+
+# Generate some images
+image_list = []
+for i in range(num_images):
+    image = Image.new("RGB",image_size,(0,0,255)) # Blue background
+    draw = ImageDraw.Draw(image)
+    line_x = image_size[0]/float(num_images) * i
+    draw.line((line_x, 0, line_x, image_size[1]), fill=(255,255,255))
+    image_list.append(image)
+
+screen = get_default_screen()
+
+# create a TextureStimulus to allocate memory in OpenGL
+stimulus = TextureStimulus(mipmaps_enabled=0,
+                           texture=Texture(image_list[0]),
+                           size=image_size,
+                           texture_min_filter=gl.GL_LINEAR,
+                           position=(screen.size[0]/2.0,screen.size[1]/2.0),
+                           anchor='center')
+
+viewport = Viewport(screen=screen,
+                    stimuli=[stimulus])
+
+p = Presentation(go_duration=(num_images*duration_per_image,'seconds'),viewports=[viewport])
+
+# Use a controller to hook into go loop, but control texture buffer
+# through direct manipulation.
+texture_object = stimulus.parameters.texture.get_texture_object()
+def put_image(t):
+    i = int(t/duration_per_image) # choose image
+    texture_object.put_sub_image( image_list[i] )
+p.add_controller(None,None,FunctionController(during_go_func=put_image))
+
+p.go()
diff --git a/demo/image_sequence_slow.py b/demo/image_sequence_slow.py
new file mode 100755
index 0000000..ae046a8
--- /dev/null
+++ b/demo/image_sequence_slow.py
@@ -0,0 +1,58 @@
+#!/usr/bin/env python
+"""Display a sequence of images.
+
+The displayed image is changes by changing the TextureStimulus's
+Texture parameter, which will delete the old OpenGL texture object and
+create a new one.
+
+This method to switch images is slower than that demonstrated in the
+image_sequence_fast.py demo.
+
+The images need not all be the same size.
+"""
+
+from VisionEgg import *
+start_default_logging(); watch_exceptions()
+
+from VisionEgg.Core import *
+from VisionEgg.FlowControl import Presentation, FunctionController
+from VisionEgg.Textures import *
+
+import Image, ImageDraw
+
+import OpenGL.GL as gl
+
+num_images = 20
+duration_per_image = 0.1 # seconds
+
+image_size = (256,256)
+
+# Generate some images
+image_list = []
+for i in range(num_images):
+    image = Image.new("RGB",image_size,(0,0,255)) # Blue background
+    draw = ImageDraw.Draw(image)
+    line_x = image_size[0]/float(num_images) * i
+    draw.line((line_x, 0, line_x, image_size[1]), fill=(255,255,255))
+    image_list.append(image)
+
+texture_list = map(Texture,image_list) # create instances of Texture from images
+
+screen = get_default_screen()
+
+stimulus = TextureStimulus(texture=texture_list[0],
+                           position = (screen.size[0]/2.0,screen.size[1]/2.0),
+                           anchor='center',
+                           size=image_size)
+
+viewport = Viewport(screen=screen,
+                    stimuli=[stimulus])
+
+p = Presentation(go_duration=(num_images*duration_per_image,'seconds'),viewports=[viewport])
+
+def put_image(t):
+    i = int(t/duration_per_image) # choose image
+    stimulus.parameters.texture = texture_list[i]
+p.add_controller(None,None,FunctionController(during_go_func=put_image))
+
+p.go()
diff --git a/demo/makeMovie.py b/demo/makeMovie.py
new file mode 100755
index 0000000..9a5a958
--- /dev/null
+++ b/demo/makeMovie.py
@@ -0,0 +1,83 @@
+#!/usr/bin/env python
+"""Save movie of a black target moving across a white background."""
+
+fps = 12.0
+
+############################
+#  Import various modules  #
+############################
+
+import VisionEgg
+VisionEgg.start_default_logging(); VisionEgg.watch_exceptions()
+
+from VisionEgg.Core import *
+from VisionEgg.FlowControl import Presentation, Controller, FunctionController
+from VisionEgg.MoreStimuli import *
+from math import *
+from types import *
+import os
+
+#################################
+#  Initialize the various bits  #
+#################################
+
+# Initialize OpenGL graphics screen.
+screen = get_default_screen()
+
+# Set the background color to white (RGBA).
+screen.parameters.bgcolor = (1.0,1.0,1.0,1.0)
+
+# Create an instance of the Target2D class with appropriate parameters.
+target = Target2D(size  = (25.0,10.0),
+                  anchor = 'center',
+                  color      = (0.0,0.0,0.0,1.0), # Set the target color (RGBA) black
+                  orientation = -45.0)
+
+# Create a Viewport instance
+viewport = Viewport(screen=screen, stimuli=[target])
+
+# Create an instance of the Presentation class.  This contains the
+# the Vision Egg's runtime control abilities.
+p = Presentation(go_duration=(10.0,'seconds'),viewports=[viewport])
+
+#######################
+#  Define controller  #
+#######################
+
+# calculate a few variables we need
+mid_x = screen.size[0]/2.0
+mid_y = screen.size[1]/2.0
+max_vel = min(screen.size[0],screen.size[1]) * 0.4
+
+# define position as a function of time
+def get_target_position(t):
+    global mid_x, mid_y, max_vel
+    return ( max_vel*sin(0.1*2.0*pi*t) + mid_x , # x
+             max_vel*sin(0.1*2.0*pi*t) + mid_y ) # y
+
+# Create an instance of the Controller class
+target_position_controller = FunctionController(during_go_func=get_target_position)
+
+#############################################################
+#  Connect the controllers with the variables they control  #
+#############################################################
+
+p.add_controller(target,'position', target_position_controller )
+
+#######################
+#  Run the stimulus!  #
+#######################
+
+base_dir = VisionEgg.config.VISIONEGG_USER_DIR
+if not os.path.isdir(base_dir):
+    base_dir = VisionEgg.config.VISIONEGG_SYSTEM_DIR
+save_directory = os.path.join(base_dir,'movie')
+if not os.path.isdir(save_directory):
+    os.mkdir(save_directory)
+    if not os.path.isdir(save_directory):
+        print "Error: cannot make movie directory '%s'."%save_directory
+print "Saving movie to directory '%s'."%save_directory
+basename = "movie_"+os.path.splitext(os.path.basename(sys.argv[0]))[0]
+p.export_movie_go(frames_per_sec=fps,filename_base=basename,path=save_directory)
+
+
diff --git a/demo/makeMovie2.py b/demo/makeMovie2.py
new file mode 100755
index 0000000..ea3728a
--- /dev/null
+++ b/demo/makeMovie2.py
@@ -0,0 +1,48 @@
+#!/usr/bin/env python
+
+"""Draw dots and save movie using your own event loop.
+
+This bypasses the VisionEgg.FlowControl.Presentation class.  It may be easier
+to create simple scripts this way."""
+
+import VisionEgg
+VisionEgg.start_default_logging(); VisionEgg.watch_exceptions()
+
+from VisionEgg.Core import *
+import pygame
+from pygame.locals import *
+from VisionEgg.Text import *
+from VisionEgg.Dots import *
+
+screen = get_default_screen()
+screen.parameters.bgcolor = (0.0,0.0,0.0,0.0) # black (RGBA)
+
+dots = DotArea2D( position                = ( screen.size[0]/2.0, screen.size[1]/2.0 ),
+                  size                    = ( 300.0 , 300.0 ),
+                  signal_fraction         = 0.1,
+                  signal_direction_deg    = 180.0,
+                  velocity_pixels_per_sec = 10.0,
+                  dot_lifespan_sec        = 5.0,
+                  dot_size                = 3.0,
+                  num_dots                = 100)
+
+text = Text( text = "Vision Egg makeMovie2 demo.",
+             position = (screen.size[0]/2,2),
+             anchor = 'bottom',
+             color = (1.0,1.0,1.0))
+
+viewport = Viewport( screen=screen, stimuli=[dots,text] )
+
+VisionEgg.config.VISIONEGG_MONITOR_REFRESH_HZ = 60.0 # fake framerate
+VisionEgg.set_time_func_to_frame_locked() # force VisionEgg to fake this framerate
+
+num_frames = 5
+for i in range(num_frames):
+    screen.clear()
+    viewport.draw()
+    swap_buffers()
+    im = screen.get_framebuffer_as_image(buffer='front',format=gl.GL_RGB)
+    filename = "movie_%02d.jpg"%(i+1)
+    im.save(filename)
+    print 'saved',filename
+    
diff --git a/demo/mouseTarget.py b/demo/mouseTarget.py
new file mode 100755
index 0000000..d6c6e88
--- /dev/null
+++ b/demo/mouseTarget.py
@@ -0,0 +1,161 @@
+#!/usr/bin/env python
+"""Control a target with the mouse, get SDL/pygame events."""
+
+# Variables to store the mouse position
+mouse_position = (320.0, 240.0)
+last_mouse_position = (0.0,0.0)
+
+############################
+#  Import various modules  #
+############################
+
+import VisionEgg
+VisionEgg.start_default_logging(); VisionEgg.watch_exceptions()
+
+from VisionEgg.Core import *
+from VisionEgg.FlowControl import Presentation, FunctionController
+from VisionEgg.MoreStimuli import *
+from VisionEgg.Text import *
+from math import *
+import pygame
+
+#################################
+#  Initialize the various bits  #
+#################################
+
+# Initialize OpenGL graphics screen.
+screen = get_default_screen()
+
+# Set the background color to white (RGBA).
+screen.parameters.bgcolor = (1.0,1.0,1.0,1.0)
+
+# Create an instance of the Target2D class with appropriate parameters.
+target = Target2D(size  = (25.0,10.0),
+                  anchor = 'center',
+                  color      = (0.0,0.0,0.0,1.0)) # Set the target color (RGBA) black
+
+text = Text( text = "Press Esc to quit, arrow keys to change size of target.",
+             position = (screen.size[0]/2.0,5),
+             anchor='bottom',
+             color = (0.0,0.0,0.0,1.0))
+
+# Create a Viewport instance
+viewport = Viewport(screen=screen, stimuli=[target,text])
+
+################
+#  Math stuff  #
+################
+
+def cross_product(b,c):
+    """Cross product between vectors, represented as tuples of length 3."""
+    det_i = b[1]*c[2] - b[2]*c[1]
+    det_j = b[0]*c[2] - b[2]*c[0]
+    det_k = b[0]*c[1] - b[1]*c[0]
+    return (det_i,-det_j,det_k)
+
+def mag(b):
+    """Magnitude of a vector."""
+    return b[0]**2.0 + b[1]**2.0 + b[2]**2.0
+    
+def every_frame_func(t=None):
+    # Get mouse position
+    global mouse_position, last_mouse_position
+    just_current_pos = mouse_position
+    (x,y) = pygame.mouse.get_pos()
+    y = screen.size[1]-y # convert to OpenGL coords
+    mouse_position = (x,y)
+    if just_current_pos != mouse_position:
+        last_mouse_position = just_current_pos
+        
+    # Set target position
+    target.parameters.position = mouse_position
+    
+    # Set target orientation
+    b = (float(last_mouse_position[0]-mouse_position[0]),
+         float(last_mouse_position[1]-mouse_position[1]),
+         0.0)
+
+    orientation_vector = cross_product(b,(0.0,0.0,1.0))
+    target.parameters.orientation = atan2(orientation_vector[1],orientation_vector[0])/math.pi*180.0
+
+    # Set target size
+    global target_w, target_h
+    global up, down, left, right
+
+    amount = 0.02
+    
+    if up:
+        target_w = target_w+(amount*target_w)
+    elif down:
+        target_w = target_w-(amount*target_w)
+    elif right:
+        target_h = target_h+(amount*target_h)
+    elif left:
+        target_h = target_h-(amount*target_h)
+    target_w = max(target_w,0.0)
+    target_h = max(target_h,0.0)
+
+    target.parameters.size = (target_w, target_h)
+
+#############################################
+#  Create event handler callback functions  #
+#############################################
+
+# target size global variables
+target_w = 50.0
+target_h = 10.0
+
+# key state global variables
+up = 0
+down = 0
+left = 0
+right = 0
+
+def keydown(event):
+    global up, down, left, right
+    if event.key == pygame.locals.K_ESCAPE:
+        quit(event)
+    elif event.key == pygame.locals.K_UP:
+        up = 1
+    elif event.key == pygame.locals.K_DOWN:
+        down = 1
+    elif event.key == pygame.locals.K_RIGHT:
+        right = 1
+    elif event.key == pygame.locals.K_LEFT:
+        left = 1
+        
+def keyup(event):
+    global up, down, left, right
+    if event.key == pygame.locals.K_UP:
+        up = 0
+    elif event.key == pygame.locals.K_DOWN:
+        down = 0
+    elif event.key == pygame.locals.K_RIGHT:
+        right = 0
+    elif event.key == pygame.locals.K_LEFT:
+        left = 0
+
+# Create an instance of the Presentation class.  This contains the
+# the Vision Egg's runtime control abilities.
+p = Presentation(go_duration=('forever',),
+                 viewports=[viewport])
+
+def quit(event):
+    p.parameters.go_duration = (0,'frames')
+
+p.parameters.handle_event_callbacks = [(pygame.locals.QUIT, quit),
+                                       (pygame.locals.KEYDOWN, keydown),
+                                       (pygame.locals.KEYUP, keyup)]
+
+#############################################################
+#  Connect the controllers with the variables they control  #
+#############################################################
+
+p.add_controller(None, None, FunctionController(during_go_func=every_frame_func) )
+
+#######################
+#  Run the stimulus!  #
+#######################
+
+p.go()
+
diff --git a/demo/mouseTarget_user_loop.py b/demo/mouseTarget_user_loop.py
new file mode 100755
index 0000000..9893430
--- /dev/null
+++ b/demo/mouseTarget_user_loop.py
@@ -0,0 +1,144 @@
+#!/usr/bin/env python
+"""Control a target with the mouse, using your own event loop."""
+
+# Variables to store the mouse position
+mouse_position = (320.0, 240.0)
+last_mouse_position = (0.0,0.0)
+
+############################
+#  Import various modules  #
+############################
+
+import VisionEgg
+VisionEgg.start_default_logging(); VisionEgg.watch_exceptions()
+
+from VisionEgg.Core import *
+from VisionEgg.MoreStimuli import *
+from VisionEgg.Text import *
+from math import *
+import pygame
+
+# Use Python's bool constants if available, make aliases if not
+try:
+    True
+except NameError:
+    True = 1==1
+    False = 1==0
+
+#################################
+#  Initialize the various bits  #
+#################################
+
+# Initialize OpenGL graphics screen.
+screen = get_default_screen()
+
+# Set the background color to white (RGBA).
+screen.parameters.bgcolor = (1.0,1.0,1.0,1.0)
+
+# Create an instance of the Target2D class with appropriate parameters.
+target = Target2D(size  = (25.0,10.0),
+                  anchor = 'center',
+                  color      = (0.0,0.0,0.0,1.0)) # Set the target color (RGBA) black
+
+text = Text( text = "Press Esc to quit, arrow keys to change size of target.",
+             position = (screen.size[0]/2.0,5),
+             anchor='bottom',
+             color = (0.0,0.0,0.0,1.0))
+
+# Create a Viewport instance
+viewport = Viewport(screen=screen, stimuli=[target,text])
+
+################
+#  Math stuff  #
+################
+
+def cross_product(b,c):
+    """Cross product between vectors, represented as tuples of length 3."""
+    det_i = b[1]*c[2] - b[2]*c[1]
+    det_j = b[0]*c[2] - b[2]*c[0]
+    det_k = b[0]*c[1] - b[1]*c[0]
+    return (det_i,-det_j,det_k)
+
+def mag(b):
+    """Magnitude of a vector."""
+    return b[0]**2.0 + b[1]**2.0 + b[2]**2.0
+    
+# target size
+target_w = 50.0
+target_h = 10.0
+
+# key state
+up = False
+down = False
+left = False
+right = False
+
+# The main loop below is an alternative to using the
+# VisionEgg.FlowControl.Presentation class.
+
+quit_now = False
+frame_timer = FrameTimer()
+while not quit_now:
+    for event in pygame.event.get():
+        if event.type == pygame.locals.QUIT:
+            quit_now = True
+        elif event.type == pygame.locals.KEYDOWN:
+            if event.key == pygame.locals.K_ESCAPE:
+                quit_now = True
+            elif event.key == pygame.locals.K_UP:
+                up = True
+            elif event.key == pygame.locals.K_DOWN:
+                down = True
+            elif event.key == pygame.locals.K_RIGHT:
+                right = True
+            elif event.key == pygame.locals.K_LEFT:
+                left = True
+        elif event.type == pygame.locals.KEYUP:
+            if event.key == pygame.locals.K_UP:
+                up = False
+            elif event.key == pygame.locals.K_DOWN:
+                down = False
+            elif event.key == pygame.locals.K_RIGHT:
+                right = False
+            elif event.key == pygame.locals.K_LEFT:
+                left = False
+
+    just_current_pos = mouse_position
+    (x,y) = pygame.mouse.get_pos()
+    y = screen.size[1]-y # convert to OpenGL coords
+    mouse_position = (x,y)
+    if just_current_pos != mouse_position:
+        last_mouse_position = just_current_pos
+        
+    # Set target position
+    target.parameters.position = mouse_position
+    
+    # Set target orientation
+    b = (float(last_mouse_position[0]-mouse_position[0]),
+         float(last_mouse_position[1]-mouse_position[1]),
+         0.0)
+
+    orientation_vector = cross_product(b,(0.0,0.0,1.0))
+    target.parameters.orientation = atan2(orientation_vector[1],orientation_vector[0])/math.pi*180.0
+
+    # Set target size
+    amount = 0.02
+    
+    if up:
+        target_w = target_w+(amount*target_w)
+    elif down:
+        target_w = target_w-(amount*target_w)
+    elif right:
+        target_h = target_h+(amount*target_h)
+    elif left:
+        target_h = target_h-(amount*target_h)
+    target_w = max(target_w,0.0)
+    target_h = max(target_h,0.0)
+
+    target.parameters.size = (target_w, target_h)
+
+    screen.clear()
+    viewport.draw()
+    swap_buffers()
+    frame_timer.tick()
+frame_timer.log_histogram()
diff --git a/demo/mouse_gabor_2d.py b/demo/mouse_gabor_2d.py
new file mode 100755
index 0000000..32bbb99
--- /dev/null
+++ b/demo/mouse_gabor_2d.py
@@ -0,0 +1,137 @@
+#!/usr/bin/env python
+"""sinusoidal grating in gaussian window"""
+
+from VisionEgg import *
+start_default_logging(); watch_exceptions()
+
+from VisionEgg.Core import *
+from VisionEgg.Gratings import *
+from VisionEgg.SphereMap import *
+from VisionEgg.Text import *
+from VisionEgg.Textures import *
+import VisionEgg.ParameterTypes as ve_types
+import math, os
+import pygame
+import OpenGL.GL as gl
+
+def get_mouse_position():
+    # convert to OpenGL coordinates
+    (x,y) = pygame.mouse.get_pos()
+    y = screen.size[1]-y
+    return x,y
+
+screen = get_default_screen()
+
+mask = Mask2D(function='gaussian',   # also supports 'circle'
+              radius_parameter=25,   # sigma for gaussian, radius for circle (units: num_samples)
+              num_samples=(512,512)) # this many texture elements in mask (covers whole size specified below)
+
+grating_stimulus = SinGrating2D(mask             = mask,
+                                position         = ( screen.size[0]/2.0, screen.size[1]/2.0 ),
+                                size             = ( 800 , 800 ),
+                                spatial_freq     = 10.0 / screen.size[0], # units of cycles/pixel
+                                temporal_freq_hz = 1.0,
+                                num_samples      = 1024,
+                                orientation      = 45.0 )
+
+text_color = (0.0,0.0,1.0) # RGB ( blue)
+xpos = 10.0
+yspace = 5
+text_params = {'anchor':'lowerleft','color':text_color,'font_size':20}
+
+text_stimuli = []
+ypos = 0
+text_stimuli.append( Text( text = "Numeric keypad changes grating orientation.",
+                           position=(xpos,ypos),**text_params))
+ypos += text_stimuli[-1].parameters.size[1] + yspace
+
+tf_text = Text(text = "'t/T' changes TF (now %.2f hz)"%(grating_stimulus.parameters.temporal_freq_hz),
+               position=(xpos,ypos),**text_params)
+text_stimuli.append( tf_text )
+ypos += text_stimuli[-1].parameters.size[1] + yspace
+
+text_stimuli.append( Text( text = "'-' shrinks window, '+' grows window (slow)",
+                           position=(xpos,ypos),**text_params))
+ypos += text_stimuli[-1].parameters.size[1] + yspace
+
+sf_text = Text(text = "'s/S' changes SF (now %.3f cycles/pixel = %.1f pixels/cycle)"%(grating_stimulus.parameters.spatial_freq,1.0/grating_stimulus.parameters.spatial_freq),
+               position=(xpos,ypos),**text_params)
+text_stimuli.append( sf_text )
+ypos += text_stimuli[-1].parameters.size[1] + yspace
+
+text_stimuli.append( Text( text = "Mouse moves gabor, press Esc to quit",
+                   position=(xpos,ypos),**text_params))
+ypos += text_stimuli[-1].parameters.size[1] + yspace
+
+text_stimuli.append( Text( text = "Demonstration of mouse controlled gabor.",
+                           position=(xpos,ypos),**text_params))
+
+viewport = Viewport(screen=screen,
+                    stimuli=[grating_stimulus] + text_stimuli)
+
+quit_now = False
+shift_key = False
+frame_timer = FrameTimer()
+while not quit_now:
+    for event in pygame.event.get():
+        if event.type == pygame.locals.QUIT:
+            quit_now = True
+        elif event.type == pygame.locals.KEYUP:
+            if event.key in [pygame.locals.K_LSHIFT,pygame.locals.K_RSHIFT]:
+                shift_key = False
+        elif event.type == pygame.locals.KEYDOWN:
+            if event.key == pygame.locals.K_ESCAPE:
+                quit_now = True
+            elif event.key in [pygame.locals.K_LSHIFT,pygame.locals.K_RSHIFT]:
+                shift_key = True
+            elif event.key == pygame.locals.K_KP1:
+                grating_stimulus.parameters.orientation = 225.0
+            elif event.key == pygame.locals.K_KP2:
+                grating_stimulus.parameters.orientation = 270.0
+            elif event.key == pygame.locals.K_KP3:
+                grating_stimulus.parameters.orientation = 315.0
+            elif event.key == pygame.locals.K_KP6:
+                grating_stimulus.parameters.orientation = 0.0
+            elif event.key == pygame.locals.K_KP9:
+                grating_stimulus.parameters.orientation = 45.0
+            elif event.key == pygame.locals.K_KP8:
+                grating_stimulus.parameters.orientation = 90.0
+            elif event.key == pygame.locals.K_KP7:
+                grating_stimulus.parameters.orientation = 135.0
+            elif event.key == pygame.locals.K_KP4:
+                grating_stimulus.parameters.orientation = 180.0
+            elif event.key == pygame.locals.K_s:
+                if shift_key:
+                    grating_stimulus.parameters.spatial_freq *= (1.0/1.5)
+                else:
+                    grating_stimulus.parameters.spatial_freq *= 1.5
+                sf_text.parameters.text = "'s/S' changes SF (now %.3f cycles per pixel = %.1f pixels per cycle)"%(grating_stimulus.parameters.spatial_freq,1.0/grating_stimulus.parameters.spatial_freq)
+            elif event.key == pygame.locals.K_t:
+                if shift_key:
+                    grating_stimulus.parameters.temporal_freq_hz *= (1.0/1.5)
+                else:
+                    grating_stimulus.parameters.temporal_freq_hz *= 1.5
+                tf_text.parameters.text = "'t/T' changes TF (now %.2f hz)"%(grating_stimulus.parameters.temporal_freq_hz)
+            elif event.key == pygame.locals.K_MINUS:
+                old_params = grating_stimulus.parameters.mask.constant_parameters
+                new_radius = old_params.radius_parameter * 0.8
+                new_mask = Mask2D(function=old_params.function,
+                                  radius_parameter=old_params.radius_parameter*0.8,
+                                  num_samples=old_params.num_samples)
+                grating_stimulus.parameters.mask = new_mask
+            elif event.key == pygame.locals.K_EQUALS:
+                old_params = grating_stimulus.parameters.mask.constant_parameters
+                new_radius = old_params.radius_parameter * 0.8
+                new_mask = Mask2D(function=old_params.function,
+                                  radius_parameter=old_params.radius_parameter/0.8,
+                                  num_samples=old_params.num_samples)
+                grating_stimulus.parameters.mask = new_mask
+
+    screen.clear()
+    x,y = get_mouse_position()
+    grating_stimulus.parameters.position = x,y
+    viewport.draw()
+    swap_buffers()
+    frame_timer.tick()
+    
+frame_timer.log_histogram()
diff --git a/demo/mouse_gabor_perspective.py b/demo/mouse_gabor_perspective.py
new file mode 100755
index 0000000..86cf86f
--- /dev/null
+++ b/demo/mouse_gabor_perspective.py
@@ -0,0 +1,239 @@
+#!/usr/bin/env python
+"""Perspective-distorted sinusoidal grating in gaussian window"""
+
+from VisionEgg import *
+start_default_logging(); watch_exceptions()
+
+from VisionEgg.Core import *
+from VisionEgg.Gratings import *
+from VisionEgg.SphereMap import *
+from VisionEgg.Text import *
+from VisionEgg.Textures import *
+import VisionEgg.ParameterTypes as ve_types
+import math, os
+import pygame
+import OpenGL.GL as gl
+
+elevation = 0.0
+azimuth = 0.0
+fov_x = 90.0
+
+def get_mouse_position():
+    # convert to OpenGL coordinates
+    (x,y) = pygame.mouse.get_pos()
+    y = screen.size[1]-y
+    return x,y
+
+grating_orient_method = 'reorient stimulus' # start with this as default
+
+def set_az_el(x,y):
+    global screen, elevation
+    global grid_stimulus_moving, grating_stimulus, mask
+    global grating_orient_method
+    azimuth = (float(x) / screen.size[0]) * 180 - 90
+    elevation = (float(y) / screen.size[1]) * 180 - 90
+    az_el_text.parameters.text = "Mouse moves window, press Esc to quit. Az, El = (%5.1f, %5.1f)"%(azimuth,elevation)
+    mask.parameters.window_center_azimuth = azimuth
+    mask.parameters.window_center_elevation = elevation
+    if grating_orient_method == 'reorient stimulus': # normal
+        grid_stimulus_moving.parameters.center_azimuth = azimuth
+        grid_stimulus_moving.parameters.center_elevation = elevation
+        grating_stimulus.parameters.grating_center_azimuth = azimuth
+        grating_stimulus.parameters.grating_center_elevation = elevation
+    elif grating_orient_method == 'mask only':
+        grating_stimulus.parameters.grating_center_azimuth = 0.0
+        grating_stimulus.parameters.grating_center_elevation = 0.0
+        grid_stimulus_moving.parameters.center_azimuth = 0.0
+        grid_stimulus_moving.parameters.center_elevation = 0.0
+
+screen = get_default_screen()
+projection_3d = SimplePerspectiveProjection(fov_x=fov_x)
+grid_stimulus_moving = AzElGrid(use_text=False, # no text
+                                minor_line_color=(0.9,0.5,0.5,.2),# set low alpha
+                                major_line_color=(1.0,0.0,0.0,.4),# set low alpha
+                                on=False) # start with grid off
+grid_stimulus_fixed  = AzElGrid(on=False,
+                                minor_line_color=(0.5,0.5,0.7),
+                                ) # start with grid off
+
+try:
+    # We want the maximum number of samples possible, hopefully 2048
+    grating_stimulus = SphereGrating(num_samples=2048,
+                                     radius = 1.0,
+                                     spatial_freq_cpd = 1.0/9.0,
+                                     temporal_freq_hz = 1.0,
+                                     slices = 50,
+                                     stacks = 50)
+except NumSamplesTooLargeError:
+    grating_stimulus = SphereGrating(num_samples=1024,
+                                     radius = 1.0,
+                                     spatial_freq_cpd = 1.0/9.0,
+                                     temporal_freq_hz = 1.0,
+                                     slices = 50,
+                                     stacks = 50)
+
+min_filters = ['GL_LINEAR',
+               'GL_NEAREST',
+               'GL_NEAREST_MIPMAP_LINEAR',
+               'GL_NEAREST_MIPMAP_NEAREST',
+               'GL_LINEAR_MIPMAP_LINEAR',
+               'GL_LINEAR_MIPMAP_NEAREST',
+               ]
+cur_min_filter_index = 0
+
+def set_filter_and_text():
+    global grating_stimulus, filter_text, cur_min_filter_index, min_filters
+    min_filter = min_filters[cur_min_filter_index]
+    filter_text.parameters.text = "'g' toggles grid display, 'f' cycles min_filter (now %s)"%min_filter
+    min_filter_int = eval("gl."+min_filter)
+    grating_stimulus.parameters.min_filter = min_filter_int
+    
+mask = SphereWindow(radius=1.0*0.90, # make sure window is inside sphere with grating
+                    window_shape_radius_parameter=40.0,
+                    slices=50,
+                    stacks=50)
+
+text_color = (0.0,0.0,1.0) # RGB ( blue)
+xpos = 10.0
+yspace = 5
+text_params = {'anchor':'lowerleft','color':text_color,'font_size':20}
+
+text_stimuli = []
+ypos = 0
+text_stimuli.append( Text( text = "(Hold mouse button to prevent re-orienting stimulus with mask.)",
+                           position=(xpos,ypos),**text_params))
+ypos += text_stimuli[-1].parameters.size[1] + yspace
+
+text_stimuli.append( Text( text = "Numeric keypad changes grating orientation.",
+                           position=(xpos,ypos),**text_params))
+ypos += text_stimuli[-1].parameters.size[1] + yspace
+
+filter_text = Text( text = "temporary text",
+                    position=(xpos,ypos),**text_params)
+set_filter_and_text()
+text_stimuli.append( filter_text )
+ypos += text_stimuli[-1].parameters.size[1] + yspace
+
+sf_cutoff_text = Text(text = "'c/C' changes cutoff SF (now %.2f cycles per texel)"%(grating_stimulus.parameters.lowpass_cutoff_cycles_per_texel),
+               position=(xpos,ypos),**text_params)
+text_stimuli.append( sf_cutoff_text )
+ypos += text_stimuli[-1].parameters.size[1] + yspace
+
+zoom_text = Text(text = "'z/Z' changes zoom (X field of view %.2f degrees)"%(fov_x),
+                 position=(xpos,ypos),**text_params)
+text_stimuli.append( zoom_text )
+ypos += text_stimuli[-1].parameters.size[1] + yspace
+
+tf_text = Text(text = "'t/T' changes TF (now %.2f hz)"%(grating_stimulus.parameters.temporal_freq_hz),
+               position=(xpos,ypos),**text_params)
+text_stimuli.append( tf_text )
+ypos += text_stimuli[-1].parameters.size[1] + yspace
+
+sf_text = Text(text = "'-' shrinks window, '+' grows window, 's/S' changes SF (now %.2f cycles per degree)"%(grating_stimulus.parameters.spatial_freq_cpd),
+               position=(xpos,ypos),**text_params)
+text_stimuli.append( sf_text )
+ypos += text_stimuli[-1].parameters.size[1] + yspace
+
+az_el_text = Text( text = "Mouse moves window, press Esc to quit. Az, El = (%05.1f, %05.1f)"%(azimuth,elevation),
+                   position=(xpos,ypos),**text_params)
+text_stimuli.append( az_el_text )
+ypos += text_stimuli[-1].parameters.size[1] + yspace
+
+text_stimuli.append( Text( text = "Demonstration of perspective distorted, windowed grating.",
+                           position=(xpos,ypos),**text_params))
+
+viewport = Viewport(screen=screen,
+                    projection=projection_3d,
+                    stimuli=[grating_stimulus,
+                             grid_stimulus_moving,
+                             mask, # mask must be drawn after grating
+                             grid_stimulus_fixed,
+                             ]) 
+grid_stimulus_fixed.set(my_viewport=viewport) # must know viewport for proper positioning of text labels
+grid_stimulus_moving.set(my_viewport=viewport) # must know viewport for proper positioning of text labels
+
+text_viewport = Viewport(screen=screen, # default (orthographic) viewport
+                         stimuli=text_stimuli)
+
+quit_now = False
+shift_key = False
+frame_timer = FrameTimer()
+while not quit_now:
+    for event in pygame.event.get():
+        if event.type == pygame.locals.QUIT:
+            quit_now = True
+        elif event.type == pygame.locals.MOUSEBUTTONDOWN:
+            if event.button == 1:
+                grating_orient_method = 'mask only'
+        elif event.type == pygame.locals.MOUSEBUTTONUP:
+            if event.button == 1:
+                grating_orient_method = 'reorient stimulus'
+        elif event.type == pygame.locals.KEYUP:
+            if event.key in [pygame.locals.K_LSHIFT,pygame.locals.K_RSHIFT]:
+                shift_key = False
+        elif event.type == pygame.locals.KEYDOWN:
+            if event.key == pygame.locals.K_ESCAPE:
+                quit_now = True
+            elif event.key in [pygame.locals.K_LSHIFT,pygame.locals.K_RSHIFT]:
+                shift_key = True
+            elif event.key == pygame.locals.K_KP1:
+                grating_stimulus.parameters.orientation = 225.0
+            elif event.key == pygame.locals.K_KP2:
+                grating_stimulus.parameters.orientation = 270.0
+            elif event.key == pygame.locals.K_KP3:
+                grating_stimulus.parameters.orientation = 315.0
+            elif event.key == pygame.locals.K_KP6:
+                grating_stimulus.parameters.orientation = 0.0
+            elif event.key == pygame.locals.K_KP9:
+                grating_stimulus.parameters.orientation = 45.0
+            elif event.key == pygame.locals.K_KP8:
+                grating_stimulus.parameters.orientation = 90.0
+            elif event.key == pygame.locals.K_KP7:
+                grating_stimulus.parameters.orientation = 135.0
+            elif event.key == pygame.locals.K_KP4:
+                grating_stimulus.parameters.orientation = 180.0
+            elif event.key == pygame.locals.K_s:
+                if shift_key:
+                    grating_stimulus.parameters.spatial_freq_cpd *= (1.0/1.5)
+                else:
+                    grating_stimulus.parameters.spatial_freq_cpd *= 1.5
+                sf_text.parameters.text = "'-' shrinks window, '+' grows window, 's/S' changes SF (now %.2f cycles per degree)"%(grating_stimulus.parameters.spatial_freq_cpd)
+            elif event.key == pygame.locals.K_t:
+                if shift_key:
+                    grating_stimulus.parameters.temporal_freq_hz *= (1.0/1.5)
+                else:
+                    grating_stimulus.parameters.temporal_freq_hz *= 1.5
+                tf_text.parameters.text = "'t/T' changes TF (now %.2f hz)"%(grating_stimulus.parameters.temporal_freq_hz)
+            elif event.key == pygame.locals.K_c:
+                if shift_key:
+                    grating_stimulus.parameters.lowpass_cutoff_cycles_per_texel *= (1.0/1.5)
+                else:
+                    grating_stimulus.parameters.lowpass_cutoff_cycles_per_texel *= 1.5
+                sf_cutoff_text.parameters.text = "'c/C' changes cutoff SF (now %.2f cycles per texel)"%(grating_stimulus.parameters.lowpass_cutoff_cycles_per_texel)
+            elif event.key == pygame.locals.K_g:
+                grid_stimulus_fixed.parameters.on = not grid_stimulus_fixed.parameters.on
+                grid_stimulus_moving.parameters.on = not grid_stimulus_moving.parameters.on
+            elif event.key == pygame.locals.K_z:
+                if shift_key:
+                    fov_x  *= (1.0/1.1)
+                else:
+                    fov_x  *= 1.1
+                viewport.parameters.projection = SimplePerspectiveProjection(fov_x=fov_x)
+                zoom_text.parameters.text = "'z/Z' changes zoom (X field of view %.2f degrees)"%(fov_x)
+            elif event.key == pygame.locals.K_f:
+                cur_min_filter_index = (cur_min_filter_index+1) % len(min_filters)
+                set_filter_and_text()
+            elif event.key == pygame.locals.K_MINUS:
+                mask.parameters.window_shape_radius_parameter *= 0.8
+            elif event.key == pygame.locals.K_EQUALS:
+                mask.parameters.window_shape_radius_parameter *= (1.0/0.8)
+
+    screen.clear()
+    x,y = get_mouse_position()
+    set_az_el(x,y)
+    viewport.draw()
+    text_viewport.draw()
+    swap_buffers()
+    frame_timer.tick()
+    
+frame_timer.log_histogram()
diff --git a/demo/movingPOV.py b/demo/movingPOV.py
new file mode 100755
index 0000000..bc4be1d
--- /dev/null
+++ b/demo/movingPOV.py
@@ -0,0 +1,58 @@
+#!/usr/bin/env python
+"""2 viewports, one with a changing perspective."""
+
+import math,os
+from VisionEgg import *
+start_default_logging(); watch_exceptions()
+
+from VisionEgg.Core import *
+from VisionEgg.FlowControl import Presentation, FunctionController
+from VisionEgg.Textures import *
+from OpenGL.GL import *
+
+def angle_as_function_of_time(t):
+    return 90.0*t # rotate at 90 degrees per second
+
+def cam_matrix_f(t):
+    projection = Projection()#SimplePerspectiveProjection(fov_x=55.0,aspect_ratio=(screen.size[0]/2.)/screen.size[1])
+    eye = (0.0,t*0.3+1.0,-2.0)
+    camera_look_at = (0.0,0.0,0.0)
+    camera_up = (0.0,1.0,0.0)
+    projection.look_at( eye, camera_look_at, camera_up)
+    return projection.get_matrix()
+    
+screen = get_default_screen()
+mid_x = screen.size[0]/2
+mid_y = screen.size[1]/2
+projection1 = SimplePerspectiveProjection(fov_x=90.0,
+                                          aspect_ratio=(float(mid_x)/screen.size[1]))
+projection2 = SimplePerspectiveProjection(fov_x=55.0,
+                                          aspect_ratio=(float(mid_x)/screen.size[1]))
+
+camera_matrix = ModelView() # Parameters set in realtime, so no need to specify here
+
+# Get a texture
+filename = os.path.join(config.VISIONEGG_SYSTEM_DIR,"data","panorama.jpg")
+texture = Texture(filename)
+
+stimulus = SpinningDrum(texture=texture,shrink_texture_ok=1)
+viewport1 = Viewport(screen=screen,
+                     position=(0,0),
+                     anchor='lowerleft',
+                     size=(mid_x,screen.size[1]),
+                     projection=projection1,
+                     stimuli=[stimulus])
+viewport2 = Viewport(screen=screen,
+                     position=(mid_x,0),
+                     anchor='lowerleft',
+                     size=(mid_x,screen.size[1]),
+                     projection=projection2,
+                     camera_matrix=camera_matrix,
+                     stimuli=[stimulus])
+
+p = Presentation(go_duration=(10.0,'seconds'),viewports=[viewport1,viewport2])
+
+p.add_controller(stimulus,'angular_position', FunctionController(during_go_func=angle_as_function_of_time))
+p.add_controller(camera_matrix,'matrix', FunctionController(during_go_func=cam_matrix_f))
+
+p.go()
diff --git a/demo/mpeg.py b/demo/mpeg.py
new file mode 100644
index 0000000..25a31ba
--- /dev/null
+++ b/demo/mpeg.py
@@ -0,0 +1,106 @@
+#!/usr/bin/env python
+"""mpeg.py - play MPEG movies in the Vision Egg
+
+This demo uses pygame.movie to draw movies.  See also the quicktime.py
+demo."""
+
+import os
+import VisionEgg
+VisionEgg.start_default_logging(); VisionEgg.watch_exceptions()
+
+from VisionEgg.Core import *
+from VisionEgg.FlowControl import Presentation, FunctionController, TIME_INDEPENDENT
+from VisionEgg.Text import *
+from VisionEgg.Textures import *
+import sys
+import pygame
+import pygame.surface, pygame.locals
+import pygame.movie
+import OpenGL.GL as gl
+
+if len(sys.argv) > 1:
+    filename = sys.argv[1]
+else:
+    filename = None
+
+screen = get_default_screen()
+
+def quit(dummy_arg=None):
+    p.parameters.go_duration = (0,'frames')
+    
+def keydown(event):
+    if event.key == pygame.locals.K_ESCAPE:
+        quit()
+
+if not filename:
+    text = Text( text = "Error: Use MPEG file as command line argument - Press Esc to quit",
+                 position = (screen.size[0]/2,screen.size[1]),
+                 anchor = 'top',
+                 font_size=24,
+                 color = (1.0,0.0,0.0))
+    text2 = Text( text = "(If you have a free MPEG to contribute, it could go here.)",
+                  position = (screen.size[0]/2,screen.size[1]/2),
+                  anchor = 'center',
+                  font_size=20,
+                  color = (1.0,1.0,1.0))
+    viewport = Viewport(screen=screen,
+                        stimuli=[text,text2])
+    
+    p = Presentation(go_duration=('forever',),
+                     viewports=[viewport],
+                     handle_event_callbacks=[(pygame.locals.QUIT, quit),
+                                             (pygame.locals.KEYDOWN, keydown)],
+                     )
+    p.go()
+    sys.exit(1)
+
+movie = pygame.movie.Movie(filename)
+
+width, height = movie.get_size()
+scale_x = screen.size[0]/float(width)
+scale_y = screen.size[1]/float(height)
+scale = min(scale_x,scale_y) # maintain aspect ratio
+
+# create pygame surface (buffer to draw uncompressed movie data into)
+pygame_surface = pygame.surface.Surface((width,height))
+
+# tell the movie to render onto the surface
+movie.set_display( pygame_surface )
+
+# create a texture using this surface as the source of texel data
+texture = Texture(pygame_surface)
+
+text = Text( text = "Vision Egg MPEG demo - Press Esc to quit",
+             position = (screen.size[0]/2,2),
+             anchor = 'bottom',
+             color = (1.0,1.0,1.0,1.0))
+
+# Create the instance of TextureStimulus
+
+stimulus = TextureStimulus(texture  = texture,
+                           position = (screen.size[0]/2,screen.size[1]/2),
+                           anchor = 'center',
+                           size = (width*scale,height*scale),
+                           mipmaps_enabled = 0,
+                           texture_min_filter=gl.GL_LINEAR)
+
+texture_object = stimulus.parameters.texture.get_texture_object()
+def update_movie():
+    # While movie.play() decompresses the movie to pygame surface
+    # in a separate thread, this sends the data to OpenGL.
+    texture_object.put_sub_image( pygame_surface )
+    
+viewport = Viewport(screen=screen,
+                    stimuli=[stimulus,text])
+
+p = Presentation(go_duration=('forever',),
+                 viewports=[viewport],
+                 handle_event_callbacks=[(pygame.locals.QUIT, quit),
+                                         (pygame.locals.KEYDOWN, keydown)],
+                 )
+
+p.add_controller(None,None,FunctionController(during_go_func=update_movie,
+                                              temporal_variables=TIME_INDEPENDENT))
+
+movie.play()
+p.go()
diff --git a/demo/multi_stim.py b/demo/multi_stim.py
new file mode 100755
index 0000000..6d7d75f
--- /dev/null
+++ b/demo/multi_stim.py
@@ -0,0 +1,346 @@
+#!/usr/bin/env python
+"""
+multiple stimulus demo
+
+"""
+
+############################
+#  Import various modules  #
+############################
+
+import VisionEgg
+VisionEgg.start_default_logging(); VisionEgg.watch_exceptions()
+
+from VisionEgg.Core import *
+from VisionEgg.Dots import DotArea2D
+from VisionEgg.Gratings import SinGrating2D
+from VisionEgg.MoreStimuli import Target2D
+from VisionEgg.Textures import Mask2D, Texture, SpinningDrum, TextureStimulus
+from VisionEgg.Textures import TextureTooLargeError
+from VisionEgg.Text import Text
+from math import sin, pi
+import math
+from pygame.locals import QUIT, KEYDOWN, MOUSEBUTTONDOWN
+import numpy
+
+#####################################
+#  Initialize OpenGL window/screen  #
+#####################################
+
+screen = get_default_screen()
+screen.parameters.bgcolor = (0.0,0.0,0.0,0.0) # make black (RGBA)
+# display loading screen ASAP
+screen.clear()
+loading_text = Text( text     = "Vision Egg multi stimulus demo - Loading...",
+                     position = (screen.size[0]/2,screen.size[1]/2),
+                     anchor   = 'center',
+                     color    = (1.0, 1.0, 1.0),
+                     )
+viewport_2d = Viewport( screen  = screen,
+                        stimuli = [loading_text],
+                        )
+viewport_2d.draw()
+swap_buffers()
+
+
+x1 = screen.size[0]/4
+x2 = 2*screen.size[0]/4
+x3 = 3*screen.size[0]/4
+
+y1 = screen.size[1]/3
+y2 = 2*screen.size[1]/3
+
+width = screen.size[0]/5
+height = width
+
+warning_stimuli = [] # display known errors
+warning_color = (1.0, 0.0, 0.0) # RGB
+warning_font_size = 20
+
+legends = [] # display legends
+legend_color = (1.0, 1.0, 1.0) # RGB
+legend_font_size = 20
+
+#####################################
+#  text                             #
+#####################################
+
+text = Text( text = "Vision Egg multi stimulus demo - Press any key to quit",
+             position = (screen.size[0]/2,screen.size[1]),
+             anchor = 'top',
+             color = (1.0, 1.0, 1.0),
+             )
+
+#####################################
+#  Random dots                      #
+#####################################
+
+dots = DotArea2D( position = ( x1, y1),
+                  anchor   = 'center',
+                  size     = ( width, height ),
+                  )
+legends.append(
+    Text( text = "DotArea2D",
+          position           = (x1,y1-height/2+2),
+          anchor             = 'top',
+          color = legend_color,
+          font_size = legend_font_size,
+          )
+    )
+
+#####################################
+#  Color grating                    #
+#####################################
+
+try:
+    circle_mask = Mask2D(function='circle',
+                         radius_parameter=100,
+                         num_samples=(256,256))
+except Exception, x:
+    circle_mask = None
+    warning_stimuli.append(
+        Text( text      = "Texture Mask",
+              position  = (x1,y2),
+              anchor    = 'center',
+              color     = warning_color,
+              font_size = warning_font_size,              
+              )
+        )
+    print "Exception while trying to create circle_mask: %s: %s"%(x.__class__,str(x))
+    
+color_grating = SinGrating2D(color1           = (0.5, 0.25, 0.5), # RGB, Alpha ignored if given
+                             color2           = (1.0, 0.5,  0.1), # RGB, Alpha ignored if given
+                             contrast         = 0.2,
+                             pedestal         = 0.1,
+                             mask             = circle_mask,
+                             position         = (x1,y2),
+                             anchor           = 'center',
+                             size             = (width,width), # must be square for circle shape
+                             spatial_freq     = 20.0/ screen.size[0],
+                             temporal_freq_hz = 1.0,
+                             orientation      = 270.0)
+
+legends.append(
+    Text( text = "SinGrating2D (color)",
+          position           = (x1,y2-height/2+2),
+          anchor             = 'top',
+          color = legend_color,
+          font_size = legend_font_size,
+          )
+    )
+
+def pedestal_func(t):
+    # Calculate pedestal over time. (Pedestal range [0.1,0.9] and
+    # contrast = 0.2 limits total range to [0.0,1.0])
+    temporal_freq_hz = 0.2
+    return 0.4 * sin(t*2*pi * temporal_freq_hz) + 0.5
+
+#####################################
+#  Spinning drum with moving POV    #
+#####################################
+
+# Get a texture
+filename = os.path.join(VisionEgg.config.VISIONEGG_SYSTEM_DIR,"data","panorama.jpg")
+texture = Texture(filename)
+
+drum = SpinningDrum(texture=texture,shrink_texture_ok=True)
+legends.append(
+    Text( text = "SpinningDrum",
+          position           = (x2,y2-height/2+2),
+          anchor             = 'top',
+          color = legend_color,
+          font_size = legend_font_size,
+          )
+    )
+
+def angle_as_function_of_time(t):
+    return 90.0*t % 360.0 # rotate at 90 degrees per second (wrap at 360)
+
+def cam_matrix_f(t):
+    cam_matrix = ModelView()
+    eye = (0.0,sin(t*0.3)+2.0,-2.0)
+    camera_look_at = (0.0,0.0,0.0)
+    camera_up = (0.0,1.0,0.0)
+    cam_matrix.look_at( eye, camera_look_at, camera_up)
+    return cam_matrix.get_matrix()
+
+drum_camera_matrix = ModelView()
+
+##########
+#  Gabor #
+##########
+
+gray_rect = Target2D( position = ( x2, y1 ),
+                      anchor   = 'center',
+                      size     = ( width, height ),
+                      color    = (0.5, 0.5, 0.5, 1.0),
+                      )
+
+try:
+    gaussian_mask = Mask2D(function='gaussian',
+                           radius_parameter=25,
+                           num_samples=(256,256))
+except Exception, x:
+    gaussian_mask = None
+    warning_stimuli.append(
+        Text( text      = "Texture Mask",
+              position  = (x2,y1),
+              anchor    = 'center',
+              color     = warning_color,
+              font_size = warning_font_size,              
+              )
+        )
+    print "Exception while trying to create gaussian_mask: %s: %s"%(x.__class__,str(x))
+    
+gabor = SinGrating2D(mask             = gaussian_mask,
+                     position         = ( x2, y1 ),
+                     anchor           = 'center',
+                     size             = ( width, height ),
+                     spatial_freq     = 40.0 / screen.size[0], # units of cycles/pixel
+                     temporal_freq_hz = 2.0,
+                     orientation      = 45.0 )
+legends.append(
+    Text( text = "SinGrating2D (gabor)",
+          position           = (x2,y1-height/2+2),
+          anchor             = 'top',
+          color = legend_color,
+          font_size = legend_font_size,
+          )
+    )
+
+#########################
+#  Copy of framebuffer  #
+#########################
+
+# setup Texture instance for proper size and scaling, etc.
+framebuffer_copy_texture = Texture( texels=screen.get_framebuffer_as_image(format=gl.GL_RGBA) )
+
+try:
+    framebuffer_copy = TextureStimulus( texture            = framebuffer_copy_texture,
+                                        internal_format    = gl.GL_RGBA,
+                                        mipmaps_enabled    = False,
+                                        size               = (width,height),
+                                        texture_min_filter = gl.GL_LINEAR,
+                                        position           = (x3,y1),
+                                        anchor             = 'center',
+                                        shrink_texture_ok  = False, # settting to True causes massive slowdowns
+                                        )
+    framebuffer_copy_works = True
+except Exception, x:
+    warning_stimuli.append(
+        Text( text      = "Framebuffer copy",
+              position  = (x3,y1),
+              anchor    = 'center',
+              color     = warning_color,
+              font_size = warning_font_size,              
+              )
+    )
+    framebuffer_copy_works = False
+    print "Exception while trying to create framebuffer_copy: %s: %s"%(x.__class__,str(x))
+
+legends.append(
+    Text( text = "put_new_framebuffer()",
+          position           = (x3,y1-height/2+2),
+          anchor             = 'top',
+          color = legend_color,
+          font_size = legend_font_size,
+          )
+    )
+
+legends.append(
+    Text( text = "put_pixels()",
+          position           = (x3,y2-height/2+2),
+          anchor             = 'top',
+          color = legend_color,
+          font_size = legend_font_size,
+          )
+    )
+
+if framebuffer_copy_works:
+    framebuffer_texture_object = framebuffer_copy.parameters.texture.get_texture_object()
+
+# OpenGL textures must be power of 2
+def next_power_of_2(f):
+    return math.pow(2.0,math.ceil(math.log(f)/math.log(2.0)))
+fb_width_pow2  = int(next_power_of_2(screen.size[0]))
+fb_height_pow2  = int(next_power_of_2(screen.size[1]))
+def copy_framebuffer():
+    "Replace contents of texture object with new texture copied from framebuffer"
+    framebuffer_texture_object.put_new_framebuffer(size=(fb_width_pow2,fb_height_pow2),
+                                                   internal_format=gl.GL_RGB,
+                                                   buffer='back',
+                                                   )
+
+########################################
+#  Create viewports                    #
+########################################
+
+stimuli_2d = [dots, gray_rect, gabor, text, color_grating]
+
+if framebuffer_copy_works:
+    stimuli_2d.append(framebuffer_copy)
+
+if len(warning_stimuli):
+    warning_stimuli.append(
+        Text( text = "WARNING: This video system has incomplete OpenGL support. Errors in red.",
+              position = (screen.size[0]/2,5),
+              anchor = 'bottom',
+              color = warning_color,
+              font_size = warning_font_size,              
+              )
+        )
+    stimuli_2d.extend(warning_stimuli)
+stimuli_2d.extend(legends)
+
+viewport_2d.set(stimuli = stimuli_2d) # give viewport_2d our stimuli
+
+drum_viewport = Viewport( screen     = screen,
+                          position   = (x2-width/2,y2-height/2),
+                          anchor     = 'lowerleft',
+                          size       = (width,height),
+                          projection = SimplePerspectiveProjection(
+    fov_x=55.0,
+    aspect_ratio=float(width)/height),
+                          camera_matrix = drum_camera_matrix,
+                          stimuli    = [drum])
+
+##############################################################
+#  Main loop (not using VisionEgg.FlowControl.Presentation)  #
+##############################################################
+
+# save time
+frame_timer = VisionEgg.Core.FrameTimer()
+
+quit_now = 0
+while not quit_now:
+    for event in pygame.event.get():
+        if event.type in (QUIT,KEYDOWN,MOUSEBUTTONDOWN):
+            quit_now = 1
+    t = VisionEgg.time_func()
+    
+    # update parameters (could also be done with VisionEgg.FlowControl.Controllers)
+    color_grating.parameters.pedestal = pedestal_func(t)
+    drum.parameters.angular_position = angle_as_function_of_time(t)
+    drum_camera_matrix.parameters.matrix = cam_matrix_f(t)
+
+    # do drawing, etc.  (can be done with Presentation.go() method)
+    screen.clear() # clear the back buffer
+    drum_viewport.draw() # draw spinning drum
+    viewport_2d.draw() # draw 2D stimuli
+
+    pixels =  numpy.random.randint(0,256,size=(20,20,3)).astype(numpy.uint8)
+    screen.put_pixels(pixels,
+                      scale_x=5.0,
+                      scale_y=5.0,
+                      position=(x3,y2),
+                      anchor='center',
+                      )
+
+    if framebuffer_copy_works:
+        copy_framebuffer() # make copy of framebuffer in texture for draw on next frame
+    
+    swap_buffers() # display the frame we've drawn in back buffer
+    frame_timer.tick()
+
+frame_timer.log_histogram()
+    
diff --git a/demo/plaid.py b/demo/plaid.py
new file mode 100755
index 0000000..f7a0132
--- /dev/null
+++ b/demo/plaid.py
@@ -0,0 +1,61 @@
+#!/usr/bin/env python
+"""Multiple sinusoidal gratings (with mask)."""
+
+############################
+#  Import various modules  #
+############################
+
+import VisionEgg
+VisionEgg.start_default_logging(); VisionEgg.watch_exceptions()
+
+from VisionEgg.Core import *
+from VisionEgg.FlowControl import Presentation
+from VisionEgg.Gratings import SinGrating2D
+from VisionEgg.Textures import Mask2D
+
+#####################################
+#  Initialize OpenGL window/screen  #
+#####################################
+
+screen = get_default_screen()
+
+######################################
+#  Create sinusoidal grating object  #
+######################################
+
+mask = Mask2D(function='circle',     # also supports 'gaussian'
+              radius_parameter=100,  # radius for circle, sigma for gaussian (units: num_samples)
+              num_samples=(256,256)) # this many texture elements in mask (covers whole size specified below)
+
+# NOTE: I have never worked with plaids before, and I'm not sure the
+# arithmetic used when combining these gratings is what people want.
+# Please submit any suggestions.
+
+sin1 = SinGrating2D(position         = ( screen.size[0]/2.0, screen.size[1]/2.0 ),
+                    mask             = mask,
+                    size             = ( 500.0 , 500.0 ),
+                    spatial_freq     = 10.0 / screen.size[0], # units of cycles/pixel
+                    temporal_freq_hz = 0.5,
+                    orientation      = 45.0,
+                    max_alpha        = 0.5) # controls "opacity": 1.0 = completely opaque, 0.0 = completely transparent
+
+sin2 = SinGrating2D(position         = ( screen.size[0]/2.0, screen.size[1]/2.0 ),
+                    mask             = mask,
+                    size             = ( 500.0 , 500.0 ),
+                    spatial_freq     = 10.0 / screen.size[0], # units of cycles/pixel
+                    temporal_freq_hz = 0.5,
+                    orientation      = 135.0,
+                    max_alpha        = 0.5) # controls "opacity": 1.0 = completely opaque, 0.0 = completely transparent
+
+###############################################################
+#  Create viewport - intermediary between stimuli and screen  #
+###############################################################
+
+viewport = Viewport( screen=screen, stimuli=[sin1,sin2] )
+
+########################################
+#  Create presentation object and go!  #
+########################################
+
+p = Presentation(go_duration=(10.0,'seconds'),viewports=[viewport])
+p.go()
diff --git a/demo/project_linear_grating_on_cylinder.py b/demo/project_linear_grating_on_cylinder.py
new file mode 100644
index 0000000..968a726
--- /dev/null
+++ b/demo/project_linear_grating_on_cylinder.py
@@ -0,0 +1,122 @@
+"""
+
+project a linear grating onto a cylinder
+
+This script draws a linear sinusoidal grating (on a rectangle
+positioned in 3D space). The grating is then viewed through many
+individual viewports approximating the appearance of being projected
+onto a cylinder.
+
+Details on the coordinate transforms are given below.
+
+This script does not make use of the VisionEgg.FlowControl module but
+rather performs the flow control itself.
+
+This is a demo script for the Vision Egg realtime visual stimulus
+generation library.
+
+"""
+
+from __future__ import division
+import VisionEgg
+VisionEgg.start_default_logging(); VisionEgg.watch_exceptions()
+
+from VisionEgg.Core import get_default_screen, Viewport,\
+    SimplePerspectiveProjection, FrameTimer, swap_buffers
+import pygame
+from pygame.locals import QUIT, KEYDOWN, MOUSEBUTTONDOWN
+from VisionEgg.Text import Text
+from VisionEgg.Gratings import SinGrating3D
+from math import pi, sin, cos
+import numpy
+
+screen = get_default_screen()
+screen.parameters.bgcolor = (0.0,0.0,0.0) # black (RGB)
+
+stimulus = SinGrating3D(
+    spatial_freq=20.0,
+    temporal_freq_hz=1.0,
+    upperleft=(-5,  .25, -1),
+    lowerleft=(-5, -.25, -1),
+    lowerright=(5, -.25, -1),
+    upperright=(5,  .25, -1),
+    )
+
+text = Text( text = "Vision Egg project_linear_grating_on_cylinder demo.",
+             position = (screen.size[0]/2,2),
+             anchor = 'bottom',
+             color = (1.0,1.0,1.0))
+
+# use default 2D pixel-coordinate projection for text
+overlay_viewport = Viewport(screen=screen,
+                            stimuli=[text])
+
+
+num_viewports = 20
+arc_degrees = 150 # angle of display
+
+D2R = pi/180.0
+arc = arc_degrees*D2R
+arc_center = arc/2
+viewport_arc = arc/num_viewports
+eye = (0,0,0)
+camera_up = (0,1,0)
+viewports = []
+
+# The center of the screen is looking, in 3D world coordinates, at -z,
+# with +y up and +x right. In cylindrical coordinates, the -z axis
+# corresponds with theta = 0 and the +y axis corresponds with +h, and
+# theta increases from right to left. In screen coordinates, 0,0 is
+# the lower left.
+
+# Computer lower left corner of viewports (in screen coordinates).
+lowerlefts = numpy.linspace(0,screen.size[0],num=(num_viewports+1))[::-1]
+lowerlefts.astype(int)
+height = screen.size[1]
+fov_x = viewport_arc/D2R
+fov_y = 30.0
+aspect_ratio = fov_x/fov_y
+# setup the projections and viewports
+for i in range(num_viewports):
+    
+    # Compute viewport coordinates (in cylindrical coordinates).
+    theta1 = i*viewport_arc - arc_center
+    theta2 = (i+1)*viewport_arc - arc_center
+    theta = (theta1 + theta2)/2
+
+    # Compute camera coordinates (in 3D world coordinates).
+    x = -sin(theta)
+    z = -cos(theta)
+    camera_look_at = (x,0,z)
+
+    # Now setup the projection and the viewport.
+    ll = int(lowerlefts[i+1])
+    width = int(lowerlefts[i]-ll)
+    projection = SimplePerspectiveProjection(fov_x=fov_x,
+                                             aspect_ratio=aspect_ratio)
+    projection.look_at( eye, camera_look_at, camera_up )
+    viewport = Viewport(screen=screen,
+                        projection=projection,
+                        stimuli=[stimulus],
+                        anchor='lowerleft',
+                        position=(ll,0),
+                        size=(width,height))
+    viewports.append(viewport)
+# list of viewports, drawn in order, so overlay viewport goes last
+viewports.append( overlay_viewport )
+
+frame_timer = FrameTimer()
+quit_now = False
+while not quit_now:
+    for event in pygame.event.get():
+        if event.type in (QUIT,KEYDOWN,MOUSEBUTTONDOWN):
+            quit_now = True
+    screen.clear()
+    for v in viewports:
+        v.draw()
+    swap_buffers()
+    frame_timer.tick()
+frame_timer.log_histogram()
+
+im = screen.get_framebuffer_as_image(buffer='front')
+im.save('project_linear_grating_on_cylinder.png')
diff --git a/demo/put_pixels.py b/demo/put_pixels.py
new file mode 100755
index 0000000..320108d
--- /dev/null
+++ b/demo/put_pixels.py
@@ -0,0 +1,43 @@
+#!/usr/bin/env python
+import VisionEgg
+VisionEgg.start_default_logging(); VisionEgg.watch_exceptions()
+
+from VisionEgg.Core import *
+import pygame
+from pygame.locals import *
+import numpy
+
+screen = get_default_screen()
+screen.set( bgcolor = (0.0,0.0,0.0) ) # black (RGB)
+
+white_data = numpy.ones((100,200,3),dtype=numpy.uint8)*255
+red_data = white_data.copy()
+red_data[:,:,1:] = 0 # zero non-red channels
+
+blue_data = white_data.copy()
+blue_data[:,:,:-1] = 0 # zero non-blue channels
+
+frame_timer = FrameTimer() # start frame counter/timer
+count = 0
+quit_now = 0
+
+# This style of main loop is an alternative to using the
+# VisionEgg.FlowControl module.
+while not quit_now:
+    for event in pygame.event.get():
+        if event.type in (QUIT,KEYDOWN,MOUSEBUTTONDOWN):
+            quit_now = 1
+    screen.clear()
+    count = (count+1) % 3
+    if count == 0:
+        pixels = white_data
+    elif count == 1:
+        pixels = red_data
+    elif count == 2:
+        pixels = blue_data
+    screen.put_pixels(pixels=pixels,
+                      position=(screen.size[0]/2.0,screen.size[1]/2.0),
+                      anchor="center")
+    swap_buffers() # display what we've drawn
+    frame_timer.tick() # register frame draw with timer
+frame_timer.log_histogram()
diff --git a/demo/pygame_texture.py b/demo/pygame_texture.py
new file mode 100755
index 0000000..4152a53
--- /dev/null
+++ b/demo/pygame_texture.py
@@ -0,0 +1,33 @@
+#!/usr/bin/env python
+"""Load a texture from a file using pygame"""
+
+import os
+import VisionEgg
+VisionEgg.start_default_logging(); VisionEgg.watch_exceptions()
+
+from VisionEgg.Core import *
+from VisionEgg.FlowControl import Presentation
+from VisionEgg.Textures import *
+import pygame.image
+import OpenGL.GL as gl
+
+filename = os.path.join(VisionEgg.config.VISIONEGG_SYSTEM_DIR,"data","visionegg.bmp")
+pygame_surface = pygame.image.load(filename)
+texture = Texture(pygame_surface)
+
+screen = get_default_screen()
+
+# Create the instance of TextureStimulus
+stimulus = TextureStimulus(texture = texture,
+                           position = (screen.size[0]/2.0,screen.size[1]/2.0),
+                           anchor = 'center',
+                           size    = texture.size,
+                           mipmaps_enabled = 0,
+                           texture_min_filter=gl.GL_LINEAR,
+                           shrink_texture_ok=1)
+
+viewport = Viewport(screen=screen,
+                    stimuli=[stimulus])
+
+p = Presentation(go_duration=(5.0,'seconds'),viewports=[viewport])
+p.go()
diff --git a/demo/quicktime.py b/demo/quicktime.py
new file mode 100755
index 0000000..35dc336
--- /dev/null
+++ b/demo/quicktime.py
@@ -0,0 +1,69 @@
+#!/usr/bin/env python
+"""Display a quicktime movie in the Vision Egg.
+
+See also mpeg.py, which plays MPEG movies.
+"""
+
+import os, sys
+import VisionEgg
+VisionEgg.start_default_logging(); VisionEgg.watch_exceptions()
+
+from VisionEgg.Core import *
+from VisionEgg.Text import *
+from VisionEgg.Textures import *
+from VisionEgg.QuickTime import new_movie_from_filename, MovieTexture
+from pygame.locals import *
+
+screen = get_default_screen()
+screen.set(bgcolor=(0,0,0))
+
+if len(sys.argv) > 1:
+    filename = sys.argv[1]
+else:
+    filename = os.path.join(VisionEgg.config.VISIONEGG_SYSTEM_DIR,"data","water.mov")
+movie = new_movie_from_filename(filename)
+bounds = movie.GetMovieBox()
+height = bounds.bottom-bounds.top
+width = bounds.right-bounds.left
+
+scale_x = screen.size[0]/float(width)
+scale_y = screen.size[1]/float(height)
+scale = min(scale_x,scale_y) # maintain aspect ratio
+
+movie_texture = MovieTexture(movie=movie)
+
+stimulus = TextureStimulus(
+    texture=movie_texture,
+    position = (screen.size[0]/2.0,screen.size[1]/2.0),
+    anchor = 'center',
+    mipmaps_enabled = False, # can't do mipmaps with QuickTime movies
+    shrink_texture_ok = True,
+    size = (width*scale, height*scale),
+    )
+
+text = Text( text = "Vision Egg QuickTime movie demo - Press any key to quit",
+             position = (screen.size[0]/2,screen.size[1]),
+             anchor = 'top',
+             color = (1.0, 1.0, 1.0),
+             )
+
+viewport = Viewport(screen=screen,
+                    stimuli=[stimulus, text])
+
+movie.StartMovie()
+frame_timer = FrameTimer()
+quit_now = 0
+while not quit_now:
+    for event in pygame.event.get():
+        if event.type in (QUIT,KEYDOWN,MOUSEBUTTONDOWN):
+            quit_now = 1
+    movie.MoviesTask(0)
+    screen.clear()
+    viewport.draw()
+
+    swap_buffers() # display the frame we've drawn in back buffer
+    frame_timer.tick()
+    if movie.IsMovieDone():
+        movie.GoToBeginningOfMovie()
+
+frame_timer.log_histogram()
diff --git a/demo/sphereMap.py b/demo/sphereMap.py
new file mode 100755
index 0000000..7816926
--- /dev/null
+++ b/demo/sphereMap.py
@@ -0,0 +1,39 @@
+#!/usr/bin/env python
+"""Mapping of texture onto sphere, compare to az_el_grid"""
+
+from VisionEgg import *
+start_default_logging(); watch_exceptions()
+
+from VisionEgg.Core import *
+from VisionEgg.FlowControl import Presentation, FunctionController
+from VisionEgg.SphereMap import *
+from VisionEgg.Textures import *
+import math, os
+
+def projection_matrix_f(t):
+    # This bit of code is from the "movingPOV" demo and can be used to
+    # gain a moving external view of the texture-mapped sphere by
+    # uncommenting the appropriate line below.
+    projection = SimplePerspectiveProjection(fov_x=55.0,aspect_ratio=(screen.size[0]/2.)/screen.size[1])
+    eye = (0.0,t*0.3+1.0,-2.0)
+    camera_look_at = (0.0,0.0,0.0)
+    camera_up = (0.0,1.0,0.0)
+    projection.look_at( eye, camera_look_at, camera_up)
+    return projection.get_matrix()
+
+screen = get_default_screen()
+
+filename = os.path.join(config.VISIONEGG_SYSTEM_DIR,"data","az_el.png")
+texture = Texture(filename)
+
+projection = SimplePerspectiveProjection(fov_x=90.0)
+stimulus = SphereMap(texture=texture,shrink_texture_ok=1,stacks=100,slices=100)
+viewport = Viewport(screen=screen,
+                    size=screen.size,
+                    projection=projection,
+                    stimuli=[stimulus])
+p = Presentation(go_duration=(10.0,'seconds'),viewports=[viewport])
+#p.add_controller(projection,'matrix', FunctionController(during_go_func=projection_matrix_f))
+p.go()
+
+
diff --git a/demo/spiral.py b/demo/spiral.py
new file mode 100755
index 0000000..59d23b9
--- /dev/null
+++ b/demo/spiral.py
@@ -0,0 +1,58 @@
+#!/usr/bin/env python
+"""Load a texture with alpha from a file and draw with mask."""
+
+import os
+import VisionEgg
+VisionEgg.start_default_logging(); VisionEgg.watch_exceptions()
+
+from VisionEgg.Core import *
+from VisionEgg.Textures import *
+import pygame
+from pygame.locals import *
+
+filename = os.path.join(VisionEgg.config.VISIONEGG_SYSTEM_DIR,"data","spiral.png")
+texture = Texture(filename)
+
+screen = get_default_screen()
+screen.set(bgcolor=(0,0,1)) # blue background
+
+mask = Mask2D(function='circle',     # also supports 'gaussian'
+              radius_parameter=220,  # sigma for gaussian, radius for circle (units: num_samples)
+              num_samples=(512,512)) # this many texture elements in mask (covers whole size specified below)
+
+
+# Create the instance of TextureStimulus
+stimulus = TextureStimulus(texture = texture,
+                           mask = mask,
+                           position = (screen.size[0]/2.0,screen.size[1]/2.0),
+                           anchor = 'center',
+                           shrink_texture_ok=True,
+                           internal_format=gl.GL_RGBA,
+                           )
+
+viewport = Viewport(screen=screen,
+                    stimuli=[stimulus])
+
+frame_timer = FrameTimer()
+quit_now = False
+spinning = True
+while not quit_now and spinning:
+    for event in pygame.event.get():
+        if event.type == QUIT:
+            quit_now = True
+        elif event.type in (KEYDOWN,MOUSEBUTTONDOWN):
+            spinning = False
+    screen.clear()
+    stimulus.parameters.angle = (VisionEgg.time_func()*-180.0)%360.0 # rotate
+    viewport.draw()
+    swap_buffers()
+    frame_timer.tick()
+while not quit_now:
+    for event in pygame.event.get():
+        if event.type in (QUIT,KEYDOWN,MOUSEBUTTONDOWN):
+            quit_now = True
+    screen.clear()
+    viewport.draw()
+    swap_buffers()
+    frame_timer.tick()
+frame_timer.log_histogram()
diff --git a/demo/target.py b/demo/target.py
new file mode 100755
index 0000000..29c730b
--- /dev/null
+++ b/demo/target.py
@@ -0,0 +1,67 @@
+#!/usr/bin/env python
+"""A moving target."""
+
+############################
+#  Import various modules  #
+############################
+
+import VisionEgg
+VisionEgg.start_default_logging(); VisionEgg.watch_exceptions()
+
+from VisionEgg.Core import *
+from VisionEgg.FlowControl import Presentation, Controller, FunctionController
+from VisionEgg.MoreStimuli import *
+from math import *
+
+#################################
+#  Initialize the various bits  #
+#################################
+
+# Initialize OpenGL graphics screen.
+screen = get_default_screen()
+
+# Set the background color to white (RGBA).
+screen.parameters.bgcolor = (1.0,1.0,1.0,1.0)
+
+# Create an instance of the Target2D class with appropriate parameters.
+target = Target2D(size  = (25.0,10.0),
+                  color      = (0.0,0.0,0.0,1.0), # Set the target color (RGBA) black
+                  orientation = -45.0)
+
+# Create a Viewport instance
+viewport = Viewport(screen=screen, stimuli=[target])
+
+# Create an instance of the Presentation class.  This contains the
+# the Vision Egg's runtime control abilities.
+p = Presentation(go_duration=(10.0,'seconds'),viewports=[viewport])
+
+#######################
+#  Define controller  #
+#######################
+
+# calculate a few variables we need
+mid_x = screen.size[0]/2.0
+mid_y = screen.size[1]/2.0
+max_vel = min(screen.size[0],screen.size[1]) * 0.4
+
+# define position as a function of time
+def get_target_position(t):
+    global mid_x, mid_y, max_vel
+    return ( max_vel*sin(0.1*2.0*pi*t) + mid_x , # x
+             max_vel*sin(0.1*2.0*pi*t) + mid_y ) # y
+
+# Create an instance of the Controller class
+target_position_controller = FunctionController(during_go_func=get_target_position)
+
+#############################################################
+#  Connect the controllers with the variables they control  #
+#############################################################
+
+p.add_controller(target,'position', target_position_controller )
+
+#######################
+#  Run the stimulus!  #
+#######################
+
+p.go()
+
diff --git a/demo/targetBackground.py b/demo/targetBackground.py
new file mode 100755
index 0000000..ef269ef
--- /dev/null
+++ b/demo/targetBackground.py
@@ -0,0 +1,95 @@
+#!/usr/bin/env python
+"""Moving target over a spinning drum."""
+
+############################
+#  Import various modules  #
+############################
+
+from VisionEgg import *
+start_default_logging(); watch_exceptions()
+
+from VisionEgg.Core import *
+from VisionEgg.FlowControl import Presentation, Controller, FunctionController
+from VisionEgg.MoreStimuli import *
+from VisionEgg.Textures import *
+import os
+from math import *
+
+# Initialize OpenGL graphics screen.
+screen = get_default_screen()
+
+#######################
+#  Create the target  #
+#######################
+
+# Create an instance of the Target2D class with appropriate parameters
+target = Target2D(size  = (25.0,10.0),
+                  color      = (1.0,1.0,1.0,1.0), # Set the target color (RGBA) black
+                  orientation = -45.0)
+
+# Create a viewport for the target
+target_viewport = Viewport(screen=screen, stimuli=[target])
+
+#####################
+#  Create the drum  #
+#####################
+
+# Get a texture
+filename = os.path.join(config.VISIONEGG_SYSTEM_DIR,"data","panorama.jpg")
+texture = Texture(filename)
+
+# Create an instance of SpinningDrum class
+drum = SpinningDrum(texture=texture,shrink_texture_ok=1)
+
+# Create a perspective projection for the spinning drum
+perspective = SimplePerspectiveProjection(fov_x=90.0)
+
+# Create a viewport with this projection
+drum_viewport = Viewport(screen=screen,
+                         projection=perspective,
+                         stimuli=[drum])
+
+##################################################
+#  Create an instance of the Presentation class  #
+##################################################
+
+# Add target_viewport last so its stimulus is drawn last. This way the
+# target is always drawn after (on top of) the drum and is therefore
+# visible.
+p = Presentation(go_duration=(10.0,'seconds'),viewports=[drum_viewport,target_viewport])
+
+########################
+#  Define controllers  #
+########################
+
+# calculate a few variables we need
+mid_x = screen.size[0]/2.0
+mid_y = screen.size[1]/2.0
+max_vel = min(screen.size[0],screen.size[1]) * 0.4
+
+# define target position as a function of time
+def get_target_position(t):
+    global mid_x, mid_y, max_vel
+    return ( max_vel*sin(0.1*2.0*pi*t) + mid_x , # x
+             max_vel*sin(0.1*2.0*pi*t) + mid_y ) # y
+
+def get_drum_angle(t):
+    return 50.0*math.cos(0.2*2*math.pi*t)
+
+# Create instances of the Controller class
+target_position_controller = FunctionController(during_go_func=get_target_position)
+drum_angle_controller = FunctionController(during_go_func=get_drum_angle)
+
+#############################################################
+#  Connect the controllers with the variables they control  #
+#############################################################
+
+p.add_controller(target,'position', target_position_controller )
+p.add_controller(drum,'angular_position', drum_angle_controller )
+
+#######################
+#  Run the stimulus!  #
+#######################
+
+p.go()
+
diff --git a/demo/targetBackground2D.py b/demo/targetBackground2D.py
new file mode 100644
index 0000000..d34189b
--- /dev/null
+++ b/demo/targetBackground2D.py
@@ -0,0 +1,96 @@
+#!/usr/bin/env python
+"""Moving target over a 2D spinning drum."""
+
+############################
+#  Import various modules  #
+############################
+
+from VisionEgg import *
+start_default_logging(); watch_exceptions()
+
+from VisionEgg.Core import *
+from VisionEgg.FlowControl import Presentation, Controller, FunctionController
+from VisionEgg.MoreStimuli import *
+from VisionEgg.Textures import *
+import os
+from math import *
+
+# Initialize OpenGL graphics screen.
+screen = get_default_screen()
+
+#######################
+#  Create the target  #
+#######################
+
+# Create an instance of the Target2D class with appropriate parameters
+target = Target2D(size  = (25.0,10.0),
+                  color      = (1.0,1.0,1.0,0.5), # Set the target color (RGBA) black
+                  orientation = -45.0)
+
+##########################
+#  Create the flat drum  #
+##########################
+
+# Get a texture
+filename = os.path.join(config.VISIONEGG_SYSTEM_DIR,"data","panorama.jpg")
+texture = Texture(filename)
+
+# Create an instance of SpinningDrum class
+drum = SpinningDrum(texture=texture,
+                    shrink_texture_ok=1,
+                    flat=1,
+                    anchor='center',
+                    position=(screen.size[0]/2,screen.size[1]/2),
+                    )
+
+#########################
+#  Create the viewport  #
+#########################
+
+# Create a viewport for the target
+viewport = Viewport(screen=screen, stimuli=[drum,target])
+
+##################################################
+#  Create an instance of the Presentation class  #
+##################################################
+
+# Add target_viewport last so its stimulus is drawn last. This way the
+# target is always drawn after (on top of) the drum and is therefore
+# visible.
+p = Presentation(go_duration=(10.0,'seconds'),viewports=[viewport])
+
+########################
+#  Define controllers  #
+########################
+
+# calculate a few variables we need
+mid_x = screen.size[0]/2.0
+mid_y = screen.size[1]/2.0
+max_vel = min(screen.size[0],screen.size[1]) * 0.4
+
+# define target position as a function of time
+def get_target_position(t):
+    global mid_x, mid_y, max_vel
+    return ( max_vel*sin(0.1*2.0*pi*t) + mid_x , # x
+             max_vel*sin(0.1*2.0*pi*t) + mid_y ) # y
+
+def get_drum_angle(t):
+    return 10.0*t
+
+# Create instances of the Controller class
+target_position_controller = FunctionController(during_go_func=get_target_position)
+drum_angle_controller = FunctionController(during_go_func=get_drum_angle)
+
+#############################################################
+#  Connect the controllers with the variables they control  #
+#############################################################
+
+p.add_controller(target,'position', target_position_controller )
+p.add_controller(drum,'angular_position', drum_angle_controller )
+
+#######################
+#  Run the stimulus!  #
+#######################
+
+p.go()
+
diff --git a/demo/tcp/gratingGUI.py b/demo/tcp/gratingGUI.py
new file mode 100755
index 0000000..e1cf08e
--- /dev/null
+++ b/demo/tcp/gratingGUI.py
@@ -0,0 +1,787 @@
+#!/usr/bin/env python
+"""gratingGUI.py -- Control stimulus produced by gratingTCP.py
+
+When used with the gratingTCP demo, this is a near-complete
+application for use in experiments.
+
+Because this program sends commands to the Vision Egg only over TCP,
+it can serve as a template for control of the Vision Egg via a TCP
+connection from any language capable of making such a connection.
+
+The most dominant source of complexity in this code is GUI creation,
+followed by Python code to do networking and parse strings. To use the
+Vision Egg over the TCP, you don't need to know Python (either for
+networking or GUI creation).  Therefore, it would be instructive to
+see what is sent over the TCP port without delving into this code.  If
+you set the variable "log_tcp_commands" below, the program will save a
+copy of everything sent over the TCP port.  That may be more
+instructive than trying to understand this code!
+
+Also, if you do want to exercise control from Python on a remote
+computer, I highly recommend using Pyro rather than dealing with this
+kind of stuff!"""
+
+# Note that the Vision Egg is not imported!
+# This script can be run on computers without the Vision Egg installed
+import Tkinter, tkMessageBox
+import sys, socket, time, select, re, string, types, traceback
+import numpy, math
+
+# Save a copy of everything sent?
+log_stream = sys.stdout
+
+BUFSIZE = 4096
+
+class SocketChecker:
+    _re_controllable = re.compile(r'^"(.*)" controllable with this connection.$',re.MULTILINE)
+    _re_error_line = re.compile(r"^(Error.*)\n",re.MULTILINE)
+    def __init__(self,my_socket,starting_buffer,name_dict):
+        self.socket = my_socket
+        if starting_buffer is None:
+            self.buffer = ""
+        else:
+            self.buffer = starting_buffer
+        self.name_dict = name_dict
+        self.name_handler = {}
+        self.first_check_done = 0
+
+    def check(self):
+        # Check to see if anything has happened on the socket
+        try:
+            fileno = self.socket.fileno()
+        except:
+            return
+        ready_to_read, temp, temp2 = select.select([fileno],[],[],0)
+        new_info = 0
+        while len(ready_to_read):
+            try:
+                new = self.socket.recv(BUFSIZE)
+                if len(new) == 0:
+                    # Disconnected
+                    raise RuntimeError("Socket disconnected")
+            except Exception, x:
+                tkMessageBox.showwarning(title="Connection Error",
+                                         message="%s:\n%s"%(str(x.__class__),str(x)))
+                raise
+            new_info = 1
+            self.buffer += new
+            try:
+                fileno = self.socket.fileno()
+            except:
+                return
+            ready_to_read, temp, temp2 = select.select([fileno],[],[],0)
+            
+        if new_info or not self.first_check_done:
+            self.first_check_done = 1
+            # Handle variations on newlines:
+            self.buffer = string.replace(self.buffer,chr(0x0D),"") # no CR
+            self.buffer = string.replace(self.buffer,chr(0x0A),"\n") # LF = newline
+            # New names?
+            self.buffer = SocketChecker._re_controllable.sub(self.new_name_parser,self.buffer)
+            # New values from names?
+            for tcp_name in self.name_handler.keys():
+                (name_re_str, parser) = self.name_handler[tcp_name]
+                self.buffer = name_re_str.sub(parser,self.buffer)
+            # Unhandles lines?
+            self.buffer = SocketChecker._re_error_line.sub(self.unhandled_line,self.buffer)
+            
+    def unhandled_line(self,match):
+        tkMessageBox.showwarning(title="Unexpected error",
+                                 message="The following error was received from the server:\n"+match.group(1))
+        return ""
+                
+    def new_name_parser(self,match):
+        class Parser:
+            def __init__(self,tcp_name,name_dict):
+                self.tcp_name = tcp_name
+                self.name_dict = name_dict
+
+            def parse_func(self,match):
+                # Could make this into a lambda function
+                self.name_dict[self.tcp_name] = match.groups()[-1]
+                return ""
+        tcp_name = match.group(1)
+        name_re_str = re.compile("^"+tcp_name+r"\s*=\s*(.*)\s*$",re.MULTILINE)
+        parser = Parser(tcp_name,self.name_dict).parse_func
+        self.name_handler[tcp_name] = (name_re_str, parser)
+        self.name_dict[tcp_name] = None # initial value
+        # request value
+        self.socket.send(tcp_name+"\n")
+        return ""
+    
+class SocketLogger:
+    def __init__(self,*args,**kw):
+        self.socket = socket.socket(*args,**kw)
+        for attr in dir(self.socket):
+            if attr != "send" and attr != "recv" and attr[:2] != "__":
+                setattr(self,attr,getattr(self.socket,attr))
+    def send(self,message):
+        log_stream.write(">>> "+message)
+        self.socket.send(message)
+    def recv(self,bufsize):
+        message = self.socket.recv(bufsize)
+        log_stream.write("<<< "+message)
+        return message
+
+def connect():
+    class ConnectWindow(Tkinter.Frame):
+        def __init__(self,master=None,host="",port=5000,**kw):
+            Tkinter.Frame.__init__(self,master,**kw)
+            self.next_row = 0
+            self.socket = None
+            self.buffer = ""
+
+            real_problem = 0
+            try:
+                host = socket.getfqdn(host)
+            except Exception, x:
+                real_problem = x
+            if real_problem:
+                tkMessageBox.showerror(title="Fatal Error",
+                                       message="Could not get default hostname and port:\n%s\n%s"%(str(real_problem.__class__),str(real_problem)))
+                raise real_problem
+
+            Tkinter.Label(self,
+                          text="""Welcome to the Grating GUI demo of the Vision Egg!
+This demo allows you to control a sinusoidal grating in realtime.
+
+Please enter the hostname and port number of the computer on which you
+have the "gratingTCP" demo running.  That computer should display a
+dialog box saying "awaiting connection...".
+
+This demo illustrates the concept of "Controllers" by exposing most of
+their functionality.
+
+Any errors produced by this program will be sent to Python's standard
+error console.  Any errors produced by the gratingTCP program should
+be logged in the normal Vision Egg way.
+
+In this demo is possible to crash the Vision Egg TCP server. Because
+this is still beta software, and because the purpose of this
+demonstration is to expose as much power and functionality as
+possible, you can set various controllers to values that will crash
+the server.""").grid(row=self.next_row,column=0,columnspan=2)
+                          
+            self.next_row += 1
+
+            Tkinter.Label(self,text="Hostname:").grid(row=self.next_row, column=0)
+            self.hostname = Tkinter.StringVar()
+            self.hostname.set(host)
+            Tkinter.Entry(self,textvariable=self.hostname).grid(row=self.next_row, column=1)
+            self.next_row += 1
+
+            Tkinter.Label(self,text="Port:").grid(row=self.next_row, column=0)
+            self.port = Tkinter.StringVar()
+            self.port.set(port)
+            Tkinter.Entry(self,textvariable=self.port).grid(row=self.next_row, column=1)
+            self.next_row += 1
+
+            b = Tkinter.Button(self,text="Connect",command=self.connect)
+            b.bind("<Return>",self.connect)
+            b.grid(row=self.next_row,columnspan=2)
+            self.next_row += 1
+
+        def connect(self,dummy_arg=None):
+            global BUFSIZE
+
+            host = self.hostname.get()
+            try:
+                port = int(self.port.get())
+            except:
+                port = self.port.get()
+
+            try:
+                host = socket.getfqdn(host)
+            except Exception,x:
+                traceback.print_exc()
+                tkMessageBox.showwarning(title="Connection Error",
+                                         message="%s:\n%s"%(str(x.__class__),str(x)))
+                return
+
+            self.socket = SocketLogger(socket.AF_INET,socket.SOCK_STREAM)
+
+            try:
+                self.socket.connect((host,port))
+            except Exception,x:
+                sys.stderr.write("Attempting to connect to \"%s\":\n"%(str(host),))
+                traceback.print_exc()
+                tkMessageBox.showwarning(title="Connection Error",
+                                         message="%s:\n%s"%(str(x.__class__),str(x)))
+                return
+            
+            self.socket.setblocking(0)
+            timeout = 3.0
+            ready_to_read, temp, temp2 = select.select([self.socket],[],[],timeout)
+
+            while len(ready_to_read):
+                try:
+                    new = self.socket.recv(BUFSIZE)
+                    if len(new) == 0:
+                        # Disconnected
+                        raise RuntimeError("Socket disconnected")
+                except Exception, x:
+                    traceback.print_exc()
+                    tkMessageBox.showwarning(title="Connection Error",
+                                             message="%s:\n%s"%(str(x.__class__),str(x)))
+                    return
+                self.buffer += new
+                ready_to_read, temp, temp2 = select.select([self.socket],[],[],0)
+            self.destroy()
+            self.quit()
+            
+    connect_window = ConnectWindow()
+    connect_window.pack()
+    connect_window.winfo_toplevel().title("Vision Egg: Connect")
+    connect_window.mainloop()
+    return (connect_window.socket, connect_window.buffer)
+
+class BarButton(Tkinter.Menubutton):
+    # Taken from Guido van Rossum's Tkinter svkill demo
+    def __init__(self, master=None, **cnf):
+        Tkinter.Menubutton.__init__(self, master, **cnf)
+        self.pack(side=Tkinter.LEFT)
+        self.menu = Tkinter.Menu(self, name='menu')
+        self['menu'] = self.menu
+
+class GratingControl(Tkinter.Frame):
+    def __init__(self,master=None,socket=None,**kw):
+        Tkinter.Frame.__init__(self,master,**kw)
+        self.socket = socket
+        self.next_row = 0
+        self.last_values = {}
+        self.complete_list = {}
+        self.names = []
+        self.columnconfigure(2,weight=2)#,minsize=300)
+        self.columnconfigure(3,weight=2)#,minsize=300)
+
+        Tkinter.Label(self,text="Controlled parameter").grid(row=self.next_row,column=0)
+        Tkinter.Label(self,text="Controller class").grid(row=self.next_row,column=1)
+        Tkinter.Label(self,text="During go loop").grid(row=self.next_row,column=2)
+        Tkinter.Label(self,text="Between go loops").grid(row=self.next_row,column=3)
+        Tkinter.Label(self,text="Evaluation frequency").grid(row=self.next_row,column=4,columnspan=4)
+        Tkinter.Label(self,text="Temporal variables available\n to eval_str and exec_str").grid(row=self.next_row,column=8,columnspan=4)
+        self.next_row += 1
+
+        Tkinter.Label(self,text="Time (seconds)").grid(row=self.next_row,column=8,columnspan=2)
+        Tkinter.Label(self,text="Frames").grid(row=self.next_row,column=10,columnspan=2)
+        self.next_row += 1
+        
+        Tkinter.Label(self,text="Every frame").grid(row=self.next_row,column=4)
+        Tkinter.Label(self,text="Transitions").grid(row=self.next_row,column=5)
+        Tkinter.Label(self,text="Not during go").grid(row=self.next_row,column=6)
+        Tkinter.Label(self,text="Not between go").grid(row=self.next_row,column=7)
+
+        Tkinter.Label(self,text="Absolute").grid(row=self.next_row,column=8)
+        Tkinter.Label(self,text="Since go").grid(row=self.next_row,column=9)
+        Tkinter.Label(self,text="Absolute").grid(row=self.next_row,column=10)
+        Tkinter.Label(self,text="Since go").grid(row=self.next_row,column=11)
+        self.next_row += 1
+        
+        self.make_tkinter_stuff("sf")
+        self.next_row += 1
+
+        self.make_tkinter_stuff("tf")
+        self.next_row += 1
+
+        self.make_tkinter_stuff("contrast")
+        self.next_row += 1
+
+        self.make_tkinter_stuff("phase")
+        self.next_row += 1
+
+        self.make_tkinter_stuff("orient")
+        self.next_row += 1
+
+        self.make_tkinter_stuff("size")
+        self.next_row += 1
+
+        self.make_tkinter_stuff("center")
+        self.next_row += 1
+
+        self.make_tkinter_stuff("num_samples")
+        self.next_row += 1
+
+        self.make_tkinter_stuff("bit_depth")
+        self.next_row += 1
+
+        # take up extra vertical space
+        extra_space = Tkinter.Frame(self)
+        self.rowconfigure(self.next_row, weight=1)
+        extra_space.grid(row=self.next_row,sticky=Tkinter.NW+Tkinter.SE,columnspan=4)
+        self.next_row += 1
+
+    def make_tkinter_stuff(self,tcp_name):
+        if tcp_name == "sf":
+            text = "Spatial frequency (cycles/pixel)"
+        elif tcp_name == "tf":
+            text = "Temporal frequency (hz)"
+        elif tcp_name == "contrast":
+            text = "Contrast"
+        elif tcp_name == "center":
+            text = "Center (x,y pixels)"
+        elif tcp_name == "size":
+            text = "Size (x,y pixels)"
+        elif tcp_name == "phase":
+            text = "Phase (degrees)"
+        elif tcp_name == "orient":
+            text = "Orientation (degrees)"
+        elif tcp_name == "num_samples":
+            text = "Number of spatial samples"
+        elif tcp_name == "bit_depth":
+            text = "Bit depth"
+        else:
+            raise RuntimeError("Unknown tcp_name %s"%(tcp_name,))
+        self.names.append(tcp_name)
+        
+        # comments will show what's happening for tcp_name == "sf"
+        setattr(self,tcp_name+"_class",Tkinter.StringVar()) # self.sf_class = Tkinter.StringVar()
+        setattr(self,tcp_name+"_during",Tkinter.StringVar()) # self.sf_during = Tkinter.StringVar()
+        setattr(self,tcp_name+"_between",Tkinter.StringVar()) # self.sf_between = Tkinter.StringVar()
+        setattr(self,tcp_name+"_eval_flag_every",Tkinter.IntVar())
+        setattr(self,tcp_name+"_eval_flag_trans",Tkinter.IntVar())
+        setattr(self,tcp_name+"_eval_flag_ndur",Tkinter.IntVar())
+        setattr(self,tcp_name+"_eval_flag_nbet",Tkinter.IntVar())
+        setattr(self,tcp_name+"_t_flag_t_abs",Tkinter.IntVar())
+        setattr(self,tcp_name+"_t_flag_t",Tkinter.IntVar())
+        setattr(self,tcp_name+"_t_flag_f_abs",Tkinter.IntVar())
+        setattr(self,tcp_name+"_t_flag_f",Tkinter.IntVar())
+        
+        class_var = getattr(self,tcp_name+"_class")
+        during_var = getattr(self,tcp_name+"_during")
+        between_var = getattr(self,tcp_name+"_between")
+        eval_flag_every_var = getattr(self,tcp_name+"_eval_flag_every")
+        eval_flag_trans_var = getattr(self,tcp_name+"_eval_flag_trans")
+        eval_flag_ndur_var = getattr(self,tcp_name+"_eval_flag_ndur")
+        eval_flag_nbet_var = getattr(self,tcp_name+"_eval_flag_nbet")
+        t_flag_t_abs_var = getattr(self,tcp_name+"_t_flag_t_abs")
+        t_flag_t_var = getattr(self,tcp_name+"_t_flag_t")
+        t_flag_f_abs_var = getattr(self,tcp_name+"_t_flag_f_abs")
+        t_flag_f_var = getattr(self,tcp_name+"_t_flag_f")
+        
+        self.last_values[tcp_name+"_class"] = class_var.get()
+        self.last_values[tcp_name+"_during"] = during_var.get()
+        self.last_values[tcp_name+"_between"] = between_var.get()
+        self.last_values[tcp_name+"_eval_flag_every"] = eval_flag_every_var.get()
+        self.last_values[tcp_name+"_eval_flag_trans"] = eval_flag_trans_var.get()
+        self.last_values[tcp_name+"_eval_flag_ndur"] = eval_flag_ndur_var.get()
+        self.last_values[tcp_name+"_eval_flag_nbet"] = eval_flag_nbet_var.get()
+        self.last_values[tcp_name+"_t_flag_t_abs"] = t_flag_t_abs_var.get()
+        self.last_values[tcp_name+"_t_flag_t"] = t_flag_t_var.get()
+        self.last_values[tcp_name+"_t_flag_f_abs"] = t_flag_f_abs_var.get()
+        self.last_values[tcp_name+"_t_flag_f"] = t_flag_f_var.get()
+        
+        Tkinter.Label(self, text=text).grid(row=self.next_row, column=0)
+
+        setattr(self,tcp_name+"_class_update",self.make_updater(tcp_name,"class"))
+        class_updater = getattr(self,tcp_name+"_class_update")
+        bar = Tkinter.Menubutton(self,textvariable=class_var,relief=Tkinter.RAISED)
+        bar.grid(row=self.next_row,column=1,sticky=Tkinter.W+Tkinter.E,pady=2,padx=2)
+        bar.menu = Tkinter.Menu(bar)
+        bar.menu.add_radiobutton(label="const",variable=class_var,value="const",command=class_updater)
+        bar.menu.add_radiobutton(label="eval_str",variable=class_var,value="eval_str",command=class_updater)
+        bar.menu.add_radiobutton(label="exec_str",variable=class_var,value="exec_str",command=class_updater)
+        bar['menu'] = bar.menu
+        
+        during_entry = Tkinter.Entry(self, textvariable=during_var)
+        during_entry.grid(row=self.next_row, column=2, sticky=Tkinter.W+Tkinter.E,padx=2,ipady=2)
+        setattr(self,tcp_name+"_during_update",self.make_updater(tcp_name,"during")) # self.sf_during_update = self.make_updater("sf","during")
+        during_updater = getattr(self,tcp_name+"_during_update")
+        during_entry.bind("<FocusOut>",during_updater)
+        during_entry.bind("<Return>",during_updater)
+
+        between_entry = Tkinter.Entry(self, textvariable=between_var )
+        between_entry.grid(row=self.next_row, column=3, sticky=Tkinter.W+Tkinter.E,padx=2,ipady=2)
+        setattr(self,tcp_name+"_between_update",self.make_updater(tcp_name,"between")) # self.sf_between_update = self.make_updater("sf","between")
+        between_updater = getattr(self,tcp_name+"_between_update")
+        between_entry.bind("<FocusOut>",between_updater)
+        between_entry.bind("<Return>",between_updater)
+
+        setattr(self,tcp_name+"_eval_flag_every_update",self.make_updater(tcp_name,"eval_flag_every"))
+        updater = getattr(self,tcp_name+"_eval_flag_every_update")
+        eval_flag_every_check = Tkinter.Checkbutton(self, variable=eval_flag_every_var, command=updater, takefocus=0)
+        eval_flag_every_check.grid(row=self.next_row, column=4)
+
+        setattr(self,tcp_name+"_eval_flag_trans_update",self.make_updater(tcp_name,"eval_flag_trans"))
+        updater = getattr(self,tcp_name+"_eval_flag_trans_update")
+        eval_flag_trans_check = Tkinter.Checkbutton(self, variable=eval_flag_trans_var, command=updater, takefocus=0)
+        eval_flag_trans_check.grid(row=self.next_row, column=5)
+
+        setattr(self,tcp_name+"_eval_flag_ndur_update",self.make_updater(tcp_name,"eval_flag_ndur"))
+        updater = getattr(self,tcp_name+"_eval_flag_ndur_update")
+        eval_flag_ndur_check = Tkinter.Checkbutton(self, variable=eval_flag_ndur_var, command=updater, takefocus=0)
+        eval_flag_ndur_check.grid(row=self.next_row, column=6)
+
+        setattr(self,tcp_name+"_eval_flag_nbet_update",self.make_updater(tcp_name,"eval_flag_nbet"))
+        updater = getattr(self,tcp_name+"_eval_flag_nbet_update")
+        eval_flag_nbet_check = Tkinter.Checkbutton(self, variable=eval_flag_nbet_var, command=updater, takefocus=0)
+        eval_flag_nbet_check.grid(row=self.next_row, column=7)
+
+        setattr(self,tcp_name+"_t_flag_t_abs_update",self.make_updater(tcp_name,"t_flag_t_abs"))
+        updater = getattr(self,tcp_name+"_t_flag_t_abs_update")
+        t_flag_t_abs_check = Tkinter.Checkbutton(self, variable=t_flag_t_abs_var, command=updater, takefocus=0)
+        t_flag_t_abs_check.grid(row=self.next_row, column=8)
+
+        setattr(self,tcp_name+"_t_flag_t_update",self.make_updater(tcp_name,"t_flag_t"))
+        updater = getattr(self,tcp_name+"_t_flag_t_update")
+        t_flag_t_check = Tkinter.Checkbutton(self, variable=t_flag_t_var, command=updater, takefocus=0)
+        t_flag_t_check.grid(row=self.next_row, column=9)
+
+        setattr(self,tcp_name+"_t_flag_f_abs_update",self.make_updater(tcp_name,"t_flag_f_abs"))
+        updater = getattr(self,tcp_name+"_t_flag_f_abs_update")
+        t_flag_f_abs_check = Tkinter.Checkbutton(self, variable=t_flag_f_abs_var, command=updater, takefocus=0)
+        t_flag_f_abs_check.grid(row=self.next_row, column=10)
+
+        setattr(self,tcp_name+"_t_flag_f_update",self.make_updater(tcp_name,"t_flag_t"))
+        updater = getattr(self,tcp_name+"_t_flag_f_update")
+        t_flag_f_check = Tkinter.Checkbutton(self, variable=t_flag_f_var, command=updater, takefocus=0)
+        t_flag_f_check.grid(row=self.next_row, column=11)
+
+    def make_updater(self,tcp_name,attr_name):
+        my_last_value_key = tcp_name+"_"+attr_name # sf_during
+        my_value_var = getattr(self,my_last_value_key) # my_value_var = self.sf_during
+        class UpdaterClass:
+            def __init__(self,my_value_var,my_last_value_key,parent,tcp_name,attr_name):
+                self.my_value_var = my_value_var
+                self.my_last_value_key = my_last_value_key
+                self.parent = parent
+                self.tcp_name = tcp_name
+                self.attr_name = attr_name
+            def update_func(self,dummy_arg=None):
+                tcp_name = self.tcp_name
+                attr_name = self.attr_name
+                my_value_var = self.my_value_var
+                my_last_value_key = self.my_last_value_key
+                new_value = my_value_var.get()
+                if new_value != self.parent.last_values[my_last_value_key]:
+                    self.parent.last_values[my_last_value_key] = new_value
+                    if tcp_name in self.parent.complete_list.keys():
+                        # send string over TCP
+                        controller_tuple = self.parent.complete_list[tcp_name]
+                        klass, during, between, eval_frequency, temporal_variables, return_type = controller_tuple
+                        if attr_name == "class":
+                            if klass != "const" and new_value == "const":
+                                #convert from strings
+                                try:
+                                    during = eval(during,{},{})
+                                except:
+                                    during = 0.
+                                    during_var = getattr(self.parent,tcp_name+"_during")
+                                    during_var.set(str(during))
+                                try:
+                                    between = eval(between,{},{})
+                                except:
+                                    between = 0.
+                                    between_var = getattr(self.parent,tcp_name+"_between")
+                                    between_var.set(str(between))
+                            elif klass == "const" and new_value != "const":
+                                #convert to strings
+                                during = str(during)
+                                between = str(between)
+                            klass = new_value
+                        elif attr_name == "during":
+                            if klass == "const":
+                                try:
+                                    new_value = eval(new_value,{},{})
+                                except:
+                                    new_value = 0.0
+                                    my_value_var.set(str(new_value))
+                            during = new_value
+                        elif attr_name == "between":
+                            if klass == "const":
+                                try:
+                                    new_value = eval(new_value,{},{})
+                                except:
+                                    new_value = 0.0
+                                    my_value_var.set(str(new_value))
+                            between = new_value
+                        elif attr_name == "eval_flag_every":
+                            mask = eval_frequency_flags['EVERY_FRAME']
+                            # set the mask bit, but leave the others unchanged
+                            eval_frequency = (new_value * mask) + (eval_frequency & ~mask)
+                        elif attr_name == "eval_flag_trans":
+                            mask = eval_frequency_flags['TRANSITIONS']
+                            # set the mask bit, but leave the others unchanged
+                            eval_frequency = (new_value * mask) + (eval_frequency & ~mask)
+                        elif attr_name == "eval_flag_ndur":
+                            mask = eval_frequency_flags['NOT_DURING_GO']
+                            # set the mask bit, but leave the others unchanged
+                            eval_frequency = (new_value * mask) + (eval_frequency & ~mask)
+                        elif attr_name == "eval_flag_nbet":
+                            mask = eval_frequency_flags['NOT_BETWEEN_GO']
+                            # set the mask bit, but leave the others unchanged
+                            eval_frequency = (new_value * mask) + (eval_frequency & ~mask)
+                        elif attr_name == "t_flag_t_abs":
+                            mask = temporal_variables_flags['TIME_SEC_ABSOLUTE']
+                            # set the mask bit, but leave the others unchanged
+                            temporal_variables = (new_value * mask) + (temporal_variables & ~mask)
+                        elif attr_name == "t_flag_t":
+                            mask = temporal_variables_flags['TIME_SEC_SINCE_GO']
+                            # set the mask bit, but leave the others unchanged
+                            temporal_variables = (new_value * mask) + (temporal_variables & ~mask)
+                        elif attr_name == "t_flag_f_abs":
+                            mask = temporal_variables_flags['FRAMES_ABSOLUTE']
+                            # set the mask bit, but leave the others unchanged
+                            temporal_variables = (new_value * mask) + (temporal_variables & ~mask)
+                        elif attr_name == "t_flag_f":
+                            mask = temporal_variables_flags['FRAMES_SINCE_GO']
+                            # set the mask bit, but leave the others unchanged
+                            temporal_variables = (new_value * mask) + (temporal_variables & ~mask)
+                        controller_tuple = klass, during, between, eval_frequency, temporal_variables, return_type
+                        self.parent.complete_list[tcp_name] = controller_tuple
+                        if type(during) == types.StringType:
+                            send_during = '"' + during + '"'
+                        else:
+                            send_during = str(during)
+                        if type(between) == types.StringType:
+                            send_between = '"' + between + '"'
+                        else:
+                            send_between = str(between)
+                        send_eval = eval2str(eval_frequency) + " | ONCE"
+                        send_temporal = temporal2str(temporal_variables)
+                        tcp_command = "%s=%s( %s, %s, %s, %s)\n"%(tcp_name,klass,send_during,send_between,send_eval,send_temporal)
+                        self.parent.socket.send(tcp_command)
+        instance = UpdaterClass(my_value_var,my_last_value_key,self,tcp_name,attr_name)
+        return instance.update_func
+
+    def check_dict(self,name_dict):
+        for name in self.names:
+            if name in name_dict.keys():
+                tcp_string = name_dict[name]
+                if tcp_string is not None:
+                    controller_tuple = parse_tcp_string(tcp_string)
+                    self.complete_list[name] = controller_tuple
+                    klass, during, between, eval_frequency, temporal_variables, return_type = controller_tuple
+                    name_dict[name] = None
+                    class_name = name+"_class"
+                    class_var = getattr(self,class_name)
+                    class_var.set(klass)
+                    self.last_values[class_name] = klass
+                    during_name = name+"_during"
+                    during_var = getattr(self,during_name)
+                    during_var.set(str(during))
+                    self.last_values[during_name] = during
+                    between_name = name+"_between"
+                    between_var = getattr(self,between_name)
+                    between_var.set(str(between))
+                    self.last_values[between_name] = between
+                    
+                    e_name = name+"_eval_flag_every"
+                    e_var = getattr(self,e_name)
+                    e_var.set( (eval_frequency & eval_frequency_flags['EVERY_FRAME']) != 0 )
+                    self.last_values[e_name] = e_var.get()
+                    e_name = name+"_eval_flag_trans"
+                    e_var = getattr(self,e_name)
+                    e_var.set( (eval_frequency & eval_frequency_flags['TRANSITIONS']) != 0 )
+                    self.last_values[e_name] = e_var.get()
+                    e_name = name+"_eval_flag_ndur"
+                    e_var = getattr(self,e_name)
+                    e_var.set( (eval_frequency & eval_frequency_flags['NOT_DURING_GO']) != 0 )
+                    self.last_values[e_name] = e_var.get()
+                    e_name = name+"_eval_flag_nbet"
+                    e_var = getattr(self,e_name)
+                    e_var.set( (eval_frequency & eval_frequency_flags['NOT_BETWEEN_GO']) != 0 )
+                    self.last_values[e_name] = e_var.get()
+
+                    t_name = name+"_t_flag_t_abs"
+                    t_var = getattr(self,t_name)
+                    t_var.set( (temporal_variables & temporal_variables_flags['TIME_SEC_ABSOLUTE']) != 0 )
+                    self.last_values[t_name] = t_var.get()
+                    t_name = name+"_t_flag_t"
+                    t_var = getattr(self,t_name)
+                    t_var.set( (temporal_variables & temporal_variables_flags['TIME_SEC_SINCE_GO']) != 0 )
+                    self.last_values[t_name] = t_var.get()
+                    t_name = name+"_t_flag_f_abs"
+                    t_var = getattr(self,t_name)
+                    t_var.set( (temporal_variables & temporal_variables_flags['FRAMES_ABSOLUTE']) != 0 )
+                    self.last_values[t_name] = t_var.get()
+                    t_name = name+"_t_flag_f"
+                    t_var = getattr(self,t_name)
+                    t_var.set( (temporal_variables & temporal_variables_flags['FRAMES_SINCE_GO']) != 0 )
+                    self.last_values[t_name] = t_var.get()
+
+_re_const = re.compile(r'^const\(\s?(.*)\s?\)$',re.DOTALL)
+_re_eval_str = re.compile(r'^eval_str\(\s?(.*)\s?\)$',re.DOTALL)
+_re_exec_str = re.compile(r'^exec_str\(\s?(\*)?\s?(.*)\s?\)$',re.DOTALL)
+_parse_args_globals = {'numpy':numpy,'math':math}
+_parse_args_locals = {}
+eval_frequency_flags = {
+    # eval_frequency flags:
+    'NEVER'          : 0x00,
+    'EVERY_FRAME'    : 0x01,
+    'TRANSITIONS'    : 0x02,
+    'ONCE'           : 0x04,
+    'NOT_DURING_GO'  : 0x08,
+    'NOT_BETWEEN_GO' : 0x10,
+    }
+temporal_variables_flags = {
+    # temporal_variables flags:
+    'TIME_INDEPENDENT'  : 0x00,
+    'TIME_SEC_ABSOLUTE' : 0x01,
+    'TIME_SEC_SINCE_GO' : 0x02,
+    'FRAMES_ABSOLUTE'   : 0x04,
+    'FRAMES_SINCE_GO'   : 0x08,
+    }
+
+for key in dir(numpy):
+    if key[:2] != "__":
+        _parse_args_locals[key] = getattr(numpy,key)
+for key in dir(math):
+    if key[:2] != "__":
+        _parse_args_locals[key] = getattr(math,key)
+for key in eval_frequency_flags.keys():
+    _parse_args_locals[key] = eval_frequency_flags[key]
+for key in temporal_variables_flags.keys():
+    _parse_args_locals[key] = temporal_variables_flags[key]
+
+def eval2str(flags):
+    str = ""
+    for key in eval_frequency_flags.keys():
+        if flags & eval_frequency_flags[key]:
+            str += key + " | "
+    if str:
+        str = str[:-3]
+    else:
+        str = "NEVER"
+    return str
+
+def temporal2str(flags):
+    str = ""
+    for key in temporal_variables_flags.keys():
+        if flags & temporal_variables_flags[key]:
+            str += key + " | "
+    if str:
+        str = str[:-3]
+    else:
+        str = "TIME_INDEPENDENT"
+    return str
+
+def parse_tcp_string(tcp_string):
+    tcp_string = string.replace(tcp_string,r"\n","\n")
+    match = _re_const.match(tcp_string)
+    if match:
+        klass = "const"
+    if not match:
+        match = _re_eval_str.match(tcp_string)
+        if match:
+            klass = "eval_str"
+    if not match:
+        match = _re_exec_str.match(tcp_string)
+        if match:
+            klass = "exec_str"
+    if not match:
+        raise RuntimeError("Unknown value")
+    arg_string = match.group(1)
+    args = eval("tuple(("+arg_string+"))",_parse_args_globals,_parse_args_locals)
+    num_args = len(args)
+    if num_args == 0:
+        result = (klass,None,None,None,None,None)
+    elif num_args == 1:
+        result = (klass,args[0],None,None,None,None)
+    elif num_args == 2:
+        result = (klass,args[0],args[1],None,None,None)
+    elif num_args == 3:
+        result = (klass,args[0],args[1],args[2],None,None)
+    elif num_args == 4:
+        result = (klass,args[0],args[1],args[2],args[3],None)
+    elif num_args == 5:
+        result = (klass,args[0],args[1],args[2],args[3],args[4])
+    else:
+        raise RuntimeError
+    return result
+
+class TCPApp(Tkinter.Frame):
+    def __init__(self,master=None,socket=None,starting_buffer=None,**kw):
+        Tkinter.Frame.__init__(self,master,**kw)
+        self.socket = socket
+        self.name_dict = {}
+        self.other_interested_instances = [] # also want to know what's happening on the socket
+        self.next_row = 0
+        
+        self.columnconfigure(1,weight=2)#,minsize=300)
+        self.columnconfigure(2,weight=2)#,minsize=300)
+        
+        # create a menu bar
+        self.bar = Tkinter.Frame(self, name='bar',
+                                 relief=Tkinter.RAISED, borderwidth=2)
+        self.bar.grid(row=self.next_row, column=0, columnspan=3, sticky=Tkinter.W+Tkinter.E+Tkinter.N)
+        self.bar.file = BarButton(self.bar, text='File')
+        self.bar.file.menu.add_command(label='Quit', command=self.quit)
+        self.bar.file.menu.add_command(label='Also Quit Server', command=self.quit_server)
+        self.bar.tk_menuBar(self.bar.file)
+        self.next_row += 1
+
+        # create go loop information
+        b = Tkinter.Button(self,text="Enter go loop",command=self.go)
+        b.bind("<Return>",self.go)
+        b.grid(row=self.next_row,column=0)
+        Tkinter.Label(self,text="Go loop duration (value, units):").grid(row=self.next_row, column=1, sticky=Tkinter.E)
+        self.go_duration = Tkinter.StringVar()
+        self.last_duration_value = self.go_duration.get()
+        e = Tkinter.Entry(self,textvariable=self.go_duration)
+        e.bind("<FocusOut>",self.duration_updater)
+        e.bind("<Return>",self.duration_updater)
+        e.grid(row=self.next_row, column=2,sticky=Tkinter.W+Tkinter.E)
+        self.next_row += 1
+
+        # make horizontal rule
+        horiz_rule = Tkinter.Frame(self, relief=Tkinter.SUNKEN, borderwidth=2)
+        self.rowconfigure(self.next_row, minsize=4)
+        horiz_rule.grid(row=self.next_row,sticky=Tkinter.NW+Tkinter.SE,columnspan=3)
+        self.next_row += 1
+
+        self.socket_checker = SocketChecker(self.socket,starting_buffer,self.name_dict)
+        self.after(100,self.check_socket) # check socket every 100 msec
+        
+    def duration_updater(self,dummy_arg=None):
+        new_value = self.go_duration.get()
+        if new_value != self.last_duration_value:
+            self.last_duration_value=new_value
+            self.socket.send("go_duration=const(%s,None,ONCE)\n"%(new_value,))
+            
+    def register_interest(self,instance):
+        self.other_interested_instances.append(instance)
+    def go(self,dummy_arg=None):
+        self.socket.send("go=const(0,1,ONCE)\n")
+    def quit_server(self,dummy_arg=None):
+        # send server quit command
+        self.socket.send("quit\n")
+        time.sleep(0.1) # give it a bit of time...
+        self.socket.shutdown(1)
+        self.socket.close()
+        self.quit()
+        
+    def check_socket(self):
+        self.socket_checker.check()
+        if 'go_duration' in self.name_dict.keys():
+            tcp_string = self.name_dict['go_duration']
+            if tcp_string is not None:
+                klass, during, between, eval_frequency, temporal_variables, return_type = parse_tcp_string(tcp_string)
+                if str(during) != self.last_duration_value:
+                    self.last_duration_value = str(during)
+                    self.go_duration.set( self.last_duration_value )
+                self.name_dict['go_duration'] = None # reset
+        for instance in self.other_interested_instances:
+            instance.check_dict(self.name_dict)
+        self.after(100,self.check_socket) # check socket every 100 msec
+
+if __name__ == '__main__':
+    # Connect
+    (socket, start_buffer) = connect()
+    if socket is None:
+        print "Didn't get a socket, quitting."
+        sys.exit()
+
+    # Create main application window
+    tcp_app = TCPApp(socket=socket, starting_buffer=start_buffer)
+    tcp_app.pack(expand=1,fill=Tkinter.BOTH)
+    tcp_app.winfo_toplevel().title("Vision Egg: Grating GUI")
+
+    # Create grating controller
+    tcp_app.grating_control = GratingControl(master=tcp_app, socket=socket)
+    tcp_app.register_interest(tcp_app.grating_control)
+    tcp_app.rowconfigure(tcp_app.next_row, weight=2)
+    tcp_app.grating_control.grid( row=tcp_app.next_row, column=0, columnspan=3, sticky=Tkinter.NW+Tkinter.SE)
+    tcp_app.next_row += 1
+
+    # Run until quit
+    tcp_app.mainloop()
diff --git a/demo/tcp/gratingTCP.py b/demo/tcp/gratingTCP.py
new file mode 100755
index 0000000..7d5c5d7
--- /dev/null
+++ b/demo/tcp/gratingTCP.py
@@ -0,0 +1,138 @@
+#!/usr/bin/env python
+"""Sinusoidal grating under network control."""
+
+import VisionEgg
+VisionEgg.start_default_logging(); VisionEgg.watch_exceptions()
+
+from VisionEgg.Core import *
+from VisionEgg.FlowControl import Presentation, \
+     ConstantController, EvalStringController, \
+     EVERY_FRAME, TIME_SEC_ABSOLUTE
+from VisionEgg.Gratings import *
+from VisionEgg.TCPController import *
+import sys
+
+# Vision Egg server name and port
+hostname = ''
+port = 5000
+
+# Allow command line to override defaults
+if len(sys.argv) == 2:
+    try:
+        port = int(sys.argv[1])
+    except ValueError:
+        hostname = sys.argv[1]
+elif len(sys.argv) == 3:
+    hostname = sys.argv[1]
+    port = int(sys.argv[2])
+
+# See if user wants to adjust default parameters
+if VisionEgg.config.VISIONEGG_GUI_INIT:
+    import VisionEgg.GUI # Could import in beginning, but no need if not using GUI
+    window = VisionEgg.GUI.GraphicsConfigurationWindow()
+    window.mainloop() # All this does is adjust VisionEgg.config
+    if not window.clicked_ok:
+            sys.exit() # User wants to quit
+
+# Should do dialog here to ask for hostname and port
+tcp_server = TCPServer(hostname=hostname,port=port,single_socket_but_reconnect_ok=1,confirm_address_with_gui=1)
+if tcp_server.server_socket is None: # User wants to quit
+    sys.exit()
+tcp_listener = tcp_server.create_listener_once_connected()
+
+# Initialize OpenGL graphics screen.
+# We don't want to use VisionEgg.get_default_screen() here because we've already
+# shown the graphics configuration window.
+screen = Screen(size=(VisionEgg.config.VISIONEGG_SCREEN_W,
+                      VisionEgg.config.VISIONEGG_SCREEN_H),
+                fullscreen=VisionEgg.config.VISIONEGG_FULLSCREEN,
+                preferred_bpp=VisionEgg.config.VISIONEGG_PREFERRED_BPP,
+                bgcolor=(0.5,0.5,0.5,0.0),
+                maxpriority=VisionEgg.config.VISIONEGG_MAXPRIORITY)
+
+tcp_listener.send_raw_text("Screen size = %s\n"%(screen.size,))
+
+# Create controllers for all variables of a sine wave grating
+on_controller = tcp_listener.create_tcp_controller(
+    tcp_name="on",
+    initial_controller=ConstantController(during_go_value=1)
+    )
+contrast_controller = tcp_listener.create_tcp_controller(
+    tcp_name="contrast",
+    initial_controller=ConstantController(during_go_value=1.0)
+    )
+center_controller = tcp_listener.create_tcp_controller(
+    tcp_name="center",
+    initial_controller=ConstantController((screen.size[0]/2.0,screen.size[1]/2.0))
+    )
+size_controller = tcp_listener.create_tcp_controller(
+    tcp_name="size",
+    initial_controller=ConstantController(during_go_value=(300.0,300.0))
+    )
+spatial_freq_controller = tcp_listener.create_tcp_controller(
+    tcp_name="sf",
+    initial_controller=ConstantController(during_go_value=15.0/640.0)
+    )
+temporal_freq_controller = tcp_listener.create_tcp_controller(
+    tcp_name="tf",
+    initial_controller=ConstantController(during_go_value=5.0)
+    )
+phase_controller = tcp_listener.create_tcp_controller(
+    tcp_name="phase",
+    initial_controller=ConstantController(during_go_value=0.0)
+    )
+orientation_controller = tcp_listener.create_tcp_controller(
+    tcp_name="orient",
+    initial_controller=EvalStringController(during_go_eval_string="0.0",
+                                            between_go_eval_string="fmod(t_abs,360.0/5.0)*5.0",
+                                            eval_frequency=EVERY_FRAME,
+                                            temporal_variables=TIME_SEC_ABSOLUTE)
+    )
+num_samples_controller = tcp_listener.create_tcp_controller(
+    tcp_name="num_samples",
+    initial_controller=ConstantController(during_go_value=512,
+                                          return_type=ve_types.UnsignedInteger),
+    require_type=ve_types.UnsignedInteger,
+    )
+bit_depth_controller = tcp_listener.create_tcp_controller(
+    tcp_name="bit_depth",
+    initial_controller=ConstantController(during_go_value=8,
+                                          return_type=ve_types.UnsignedInteger),
+    require_type=ve_types.UnsignedInteger,
+    )
+go_duration_controller = tcp_listener.create_tcp_controller(
+    tcp_name="go_duration",
+    initial_controller=ConstantController(during_go_value=(10,'seconds'))
+    )
+go_controller = tcp_listener.create_tcp_controller(
+    tcp_name="go",
+    initial_controller=ConstantController(during_go_value=0)
+    )
+
+# Create the instance SinGrating with appropriate parameters
+stimulus = SinGrating2D(anchor='center')
+
+# Create a viewport (with default pixel coordinate system)
+# with stimulus
+viewport = Viewport( screen=screen, stimuli=[stimulus] )
+
+# Create an instance of the Presentation class
+p = Presentation(viewports=[viewport],check_events=1)
+
+# Register the controller functions, connecting them with the parameters they control
+p.add_controller(None,None, tcp_listener) # Actually listens to the TCP socket
+p.add_controller(stimulus,'on', on_controller)
+p.add_controller(stimulus,'contrast', contrast_controller)
+p.add_controller(stimulus,'position', center_controller)
+p.add_controller(stimulus,'size', size_controller)
+p.add_controller(stimulus,'spatial_freq', spatial_freq_controller)
+p.add_controller(stimulus,'temporal_freq_hz', temporal_freq_controller)
+p.add_controller(stimulus,'phase_at_t0', phase_controller)
+p.add_controller(stimulus,'orientation', orientation_controller)
+p.add_controller(stimulus,'num_samples', num_samples_controller)
+p.add_controller(stimulus,'bit_depth', bit_depth_controller)
+p.add_controller(p,'go_duration', go_duration_controller)
+p.add_controller(p,'enter_go_loop', go_controller)
+
+# Go!
+p.run_forever()
diff --git a/demo/texture.py b/demo/texture.py
new file mode 100755
index 0000000..f04c48a
--- /dev/null
+++ b/demo/texture.py
@@ -0,0 +1,27 @@
+#!/usr/bin/env python
+"""Load a texture from a file."""
+
+import os
+import VisionEgg
+VisionEgg.start_default_logging(); VisionEgg.watch_exceptions()
+
+from VisionEgg.Core import *
+from VisionEgg.FlowControl import Presentation
+from VisionEgg.Textures import *
+
+filename = os.path.join(VisionEgg.config.VISIONEGG_SYSTEM_DIR,"data","panorama.jpg")
+texture = Texture(filename)
+
+screen = get_default_screen()
+
+# Create the instance of TextureStimulus
+stimulus = TextureStimulus(texture = texture,
+                           position = (screen.size[0]/2.0,screen.size[1]/2.0),
+                           anchor = 'center',
+                           shrink_texture_ok=1)
+
+viewport = Viewport(screen=screen,
+                    stimuli=[stimulus])
+
+p = Presentation(go_duration=(5.0,'seconds'),viewports=[viewport])
+p.go()
diff --git a/demo/texture3D.py b/demo/texture3D.py
new file mode 100644
index 0000000..17d685f
--- /dev/null
+++ b/demo/texture3D.py
@@ -0,0 +1,42 @@
+#!/usr/bin/env python
+"""Display a texture in 3D coordinates."""
+
+import os
+import VisionEgg
+VisionEgg.start_default_logging(); VisionEgg.watch_exceptions()
+
+from VisionEgg.Core import *
+from VisionEgg.FlowControl import Presentation, FunctionController
+from VisionEgg.Textures import *
+
+filename = os.path.join(VisionEgg.config.VISIONEGG_SYSTEM_DIR,"data","panorama.jpg")
+texture = Texture(filename)
+
+screen = get_default_screen()
+
+# Create the instance of TextureStimulus3D
+duration = 5.0
+speed = 1.0
+z = duration*speed
+stimulus = TextureStimulus3D(texture = texture,
+                             shrink_texture_ok=True,
+                             )
+
+def every_frame_func(t=None):
+    z=t*speed-duration
+    stimulus.parameters.upperleft=(-5,1,z)
+    stimulus.parameters.lowerleft=(-5,-1,z)
+    stimulus.parameters.lowerright=(5,-1,z)
+    stimulus.parameters.upperright=(5,1,z)
+
+every_frame_func(0.0) # set initial stimulus postion
+
+projection = SimplePerspectiveProjection(fov_x=135.0)
+
+viewport = Viewport(screen=screen,
+                    projection=projection,
+                    stimuli=[stimulus])
+
+p = Presentation(go_duration=(duration,'seconds'),viewports=[viewport])
+p.add_controller(None, None, FunctionController(during_go_func=every_frame_func) )
+p.go()
diff --git a/demo/texture3D_alpha.py b/demo/texture3D_alpha.py
new file mode 100644
index 0000000..b35bf3c
--- /dev/null
+++ b/demo/texture3D_alpha.py
@@ -0,0 +1,49 @@
+#!/usr/bin/env python
+"""Display a texture in 3D coordinates using alpha."""
+# This is a fusion of sprial.py and texture3D_alpha.py
+
+import os, sys
+import VisionEgg
+VisionEgg.start_default_logging(); VisionEgg.watch_exceptions()
+
+from VisionEgg.Core import get_default_screen, SimplePerspectiveProjection, Viewport
+from VisionEgg.FlowControl import Presentation, FunctionController
+from VisionEgg.Textures import Texture, TextureStimulus3D
+import OpenGL.GL as gl
+
+if len(sys.argv)>1:
+    filename = sys.argv[1]
+else:
+    filename = os.path.join(VisionEgg.config.VISIONEGG_SYSTEM_DIR,"data","spiral.png")
+texture = Texture(filename)
+
+screen = get_default_screen()
+screen.set(bgcolor=(0,0,1)) # blue background
+
+# Create the instance of TextureStimulus3D
+duration = 5.0
+speed = 1.0
+z = duration*speed
+stimulus = TextureStimulus3D(texture = texture,
+                             shrink_texture_ok=True,
+                             internal_format=gl.GL_RGBA,
+                             )
+
+def every_frame_func(t=None):
+    z=t*speed-duration
+    stimulus.parameters.upperleft=(-5,1,z)
+    stimulus.parameters.lowerleft=(-5,-1,z)
+    stimulus.parameters.lowerright=(5,-1,z)
+    stimulus.parameters.upperright=(5,1,z)
+
+every_frame_func(0.0) # set initial stimulus postion
+
+projection = SimplePerspectiveProjection(fov_x=135.0)
+
+viewport = Viewport(screen=screen,
+                    projection=projection,
+                    stimuli=[stimulus])
+
+p = Presentation(go_duration=(duration,'seconds'),viewports=[viewport])
+p.add_controller(None, None, FunctionController(during_go_func=every_frame_func) )
+p.go()
diff --git a/demo/textureDrum.py b/demo/textureDrum.py
new file mode 100755
index 0000000..4ff7611
--- /dev/null
+++ b/demo/textureDrum.py
@@ -0,0 +1,35 @@
+#!/usr/bin/env python
+"""A texture-mapped spinning drum."""
+
+from VisionEgg import *
+start_default_logging(); watch_exceptions()
+
+from VisionEgg.Core import *
+from VisionEgg.FlowControl import Presentation, FunctionController
+from VisionEgg.Textures import *
+import math, os
+
+max_speed = 100.0 # degrees per second
+
+def angle_as_function_of_time(t):
+    return max_speed*math.cos(t)
+
+def contrast_as_function_of_time(t):
+    return abs(math.cos(2*math.pi*t*0.2))
+
+filename = os.path.join(config.VISIONEGG_SYSTEM_DIR,"data","panorama.jpg")
+texture = Texture(filename)
+
+screen = get_default_screen()
+projection = SimplePerspectiveProjection(fov_x=90.0)
+stimulus = SpinningDrum(texture=texture,shrink_texture_ok=1)
+viewport = Viewport(screen=screen,
+                    size=screen.size,
+                    projection=projection,
+                    stimuli=[stimulus])
+p = Presentation(go_duration=(10.0,'seconds'),viewports=[viewport])
+p.add_controller(stimulus,'angular_position', FunctionController(during_go_func=angle_as_function_of_time))
+p.add_controller(stimulus,'contrast', FunctionController(during_go_func=contrast_as_function_of_time))
+p.go()
+
+
diff --git a/demo/texture_as_numpy_array.py b/demo/texture_as_numpy_array.py
new file mode 100644
index 0000000..fae0285
--- /dev/null
+++ b/demo/texture_as_numpy_array.py
@@ -0,0 +1,33 @@
+#!/usr/bin/env python
+"""Get texture as numpy array and manipulate it."""
+
+import VisionEgg
+VisionEgg.start_default_logging(); VisionEgg.watch_exceptions()
+
+from VisionEgg.Core import get_default_screen, Viewport, gl
+from VisionEgg.FlowControl import Presentation
+from VisionEgg.Text import Text
+from VisionEgg.Textures import Texture, TextureStimulus
+
+screen = get_default_screen()
+screen.parameters.bgcolor = (0.0,0.0,1.0) # background blue (RGB)
+
+orig_text = Text(text="Hello world!",
+                 color=(1.0,1.0,1.0),
+                 font_size=50,
+                 )
+
+arr=orig_text.parameters.texture.get_texels_as_array() # get numpy array
+arr = arr[::-1] # flip upside down
+flipped_text = TextureStimulus(texture=Texture(arr),
+                               position=(screen.size[0]/2,screen.size[1]/2),
+                               anchor='center',
+                               internal_format = gl.GL_RGBA,
+                               mipmaps_enabled = False,
+                               )
+
+viewport = Viewport(screen=screen,
+                    size=screen.size,
+                    stimuli=[flipped_text])
+p = Presentation(go_duration=(5.0,'seconds'),viewports=[viewport])
+p.go()
diff --git a/demo/visual_jitter.py b/demo/visual_jitter.py
new file mode 100755
index 0000000..2380975
--- /dev/null
+++ b/demo/visual_jitter.py
@@ -0,0 +1,102 @@
+#!/usr/bin/env python
+"""Retinal slip demonstration"""
+
+# Visual jitter demonstration for the Vision Egg.
+
+# Copyright (C) 2002 Andrew Straw. This software may be
+# (re)distributed under the terms of the LGPL (Lesser GNU Public
+# License).
+
+# Inspired by
+
+# Murakami, I. & Cavanagh, P. (2001). Visual jitter: evidence for
+# visual-motion-based compensation of retinal slip due to small eye
+# movements. Vision Research, 41, 173-186.
+
+# Murakami, I. & Cavanagh, P. (1998). A jitter after-effect reveals
+# motion-based stabilization of vision. Nature, 395, 798-801.
+
+from VisionEgg import *
+start_default_logging(); watch_exceptions()
+
+from VisionEgg.Core import *
+from VisionEgg.FlowControl import Presentation, FunctionController
+from VisionEgg.Textures import *
+
+import Image, ImageDraw # Python Imaging Library (PIL)
+
+import OpenGL.GL as gl # PyOpenGL
+
+import numpy
+
+dynamic_time = 10.0 # seconds
+static_time = 10.0  # seconds
+
+dynamic_checkerboard_size = (32,32) # width, height in texture elements
+static_checkerboard_size = (50,50)  # width, height in texture elements
+
+scale = 6 # magification of checkerboard (this many pixels per texture element)
+
+screen = get_default_screen()
+
+# allocate temporary texture in grayscale mode for dynamic texture
+temp_grayscale_image = Image.new("L",dynamic_checkerboard_size,0)
+temp_texture = Texture(temp_grayscale_image)
+    
+# create TextureStimulus for dynamic stimulus
+scaled_dynamic_size = (scale*dynamic_checkerboard_size[0],scale*dynamic_checkerboard_size[1])
+
+# find center of screen
+x = screen.size[0]/2.0
+y = screen.size[1]/2.0
+dynamic_checkerboard = TextureStimulus(texture=temp_texture,
+                                       position=(x,y),
+                                       anchor="center",
+                                       mipmaps_enabled=0,
+                                       size=scaled_dynamic_size,
+                                       texture_min_filter=gl.GL_NEAREST,
+                                       texture_mag_filter=gl.GL_NEAREST,
+                                       )
+
+# allocate static texture
+# (Note: numpy arrays have indices flipped from images, thus the re-ordering)
+static_data = numpy.random.randint(0,2,size=(static_checkerboard_size[1],static_checkerboard_size[0]))*255
+static_texture = Texture(static_data)
+    
+# create TextureStimulus for static stimulus
+scaled_static_size = (scale*static_checkerboard_size[0],scale*static_checkerboard_size[1])
+static_checkerboard = TextureStimulus(texture=static_texture,
+                                      position=(x,y),
+                                      anchor="center",
+                                      mipmaps_enabled=0,
+                                      size=scaled_static_size,
+                                      texture_min_filter=gl.GL_NEAREST,
+                                      texture_mag_filter=gl.GL_NEAREST,
+                                      )
+
+fixation_spot = FixationSpot(position=(screen.size[0]/2,screen.size[1]/2),
+                             anchor='center',
+                             color=(255,0,0,0),
+                             size=(4,4))
+
+viewport = Viewport(screen=screen,
+                    stimuli=[static_checkerboard,
+                             dynamic_checkerboard,
+                             fixation_spot])
+
+p = Presentation(go_duration=(dynamic_time+static_time,'seconds'),
+                 viewports=[viewport])
+
+# Use a controller to hook into go loop, but control texture buffer
+# through direct manipulation.
+dynamic_texture_object = dynamic_checkerboard.parameters.texture.get_texture_object()
+width,height = dynamic_checkerboard_size
+# (Note: numpy arrays have indices flipped from images, thus the re-ordering)
+flipped_shape = (height,width)
+def control_dynamic(t):
+    if t <= dynamic_time:
+        random_data = numpy.random.randint(0,2,size=(dynamic_checkerboard_size[1],dynamic_checkerboard_size[0]))*255
+        dynamic_texture_object.put_sub_image( random_data )
+p.add_controller(None,None,FunctionController(during_go_func=control_dynamic))
+
+p.go()
diff --git a/demo/wrapped_text.py b/demo/wrapped_text.py
new file mode 100755
index 0000000..080a557
--- /dev/null
+++ b/demo/wrapped_text.py
@@ -0,0 +1,36 @@
+#!/usr/bin/env python
+"""Display text strings."""
+
+import VisionEgg
+VisionEgg.start_default_logging(); VisionEgg.watch_exceptions()
+
+from VisionEgg.Core import get_default_screen, Viewport, swap_buffers, \
+     FrameTimer
+from VisionEgg.Text import Text
+from VisionEgg.WrappedText import WrappedText
+import pygame
+from pygame.locals import QUIT,KEYDOWN,MOUSEBUTTONDOWN
+
+screen = get_default_screen()
+screen.parameters.bgcolor = (0.0,0.0,1.0) # background blue (RGB)
+
+text = WrappedText(
+    text="""Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas ac magna nibh. Cras ac volutpat purus. Suspendisse potenti. Vestibulum accumsan erat ac massa hendrerit semper. Ut a laoreet magna. Suspendisse risus odio, porttitor nec sodales nec, laoreet sit amet tellus. Maecenas condimentum orci id magna laoreet tincidunt. Sed porta velit a ligula ullamcorper accumsan. Fusce a felis tortor, vel hendrerit mauris.""",
+
+    position=(0,screen.size[1]))
+
+viewport = Viewport(screen=screen,
+                    size=screen.size,
+                    stimuli=[text])
+frame_timer = FrameTimer()
+quit_now = 0
+print "press any key or click the mouse to stop"
+while not quit_now:
+    for event in pygame.event.get():
+        if event.type in (QUIT,KEYDOWN,MOUSEBUTTONDOWN):
+            quit_now = 1
+    screen.clear()
+    viewport.draw()
+    swap_buffers()
+    frame_timer.tick()
+frame_timer.log_histogram()
diff --git a/doc/BUILD.sh b/doc/BUILD.sh
new file mode 100755
index 0000000..e5c3f1a
--- /dev/null
+++ b/doc/BUILD.sh
@@ -0,0 +1,23 @@
+#!/bin/bash
+
+# This is explained in BUILD.txt.
+
+# Exit immediately on any errors
+set -o errexit
+
+PY_DOC_SRC="$HOME/other-peoples-src/Python-2.4.3/Doc"
+
+LINK_PATHS="html paper-a4 paper-letter perl templates texinputs tools"
+for LINK_PATH in $LINK_PATHS; do
+    rm -f $LINK_PATH
+    ln -s $PY_DOC_SRC/$LINK_PATH $LINK_PATH
+done
+
+rm -f icons
+/bin/ln -s $PY_DOC_SRC/html/icons icons
+
+# make HTML
+/usr/bin/python tools/mkhowto --iconserver "../images" -s 3 --up-link "http://www.visionegg.org/" --up-title "Vision Egg website" visionegg.tex
+
+# make PDF
+/usr/bin/python tools/mkhowto --pdf visionegg.tex
\ No newline at end of file
diff --git a/doc/BUILD.txt b/doc/BUILD.txt
new file mode 100644
index 0000000..8feab96
--- /dev/null
+++ b/doc/BUILD.txt
@@ -0,0 +1,32 @@
+This directory contains the source for the Vision Egg documentation.
+
+The bash script BUILD.sh implements the instructions in this file.
+
+The source for the manual is in LaTeX using the classes, styles, and
+tools from the Python language documentation itself. These files are
+not included with the Vision Egg, but should be copied/linked into the
+Vision Egg doc directory.  Link the following directories from the
+directory of the same name in the Python documentation source.
+
+html
+paper-a4
+paper-letter
+perl
+templates
+texinputs
+tools
+
+Additionally, create a link called icons that links html/icons.
+
+To make the manual in HTML form, run:
+
+python tools/mkhowto visionegg.tex
+
+In fact, I run:
+
+python tools/mkhowto --iconserver "../images" -s 3 --up-link "http://www.visionegg.org/" --up-title "Vision Egg website" visionegg.tex
+
+To make the manual in PDF form, run:
+
+python tools/mkhowto --pdf visionegg.tex
+
diff --git a/doc/index.html b/doc/index.html
new file mode 100644
index 0000000..0965b1d
--- /dev/null
+++ b/doc/index.html
@@ -0,0 +1,18 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+  <head>
+    <title>Vision Egg documentation</title>
+  </head>
+
+  <body>
+    <h1>Vision Egg documentation</h1>
+
+    Vision Egg manual <a href="visionegg/index.html">HTML</a> | <a href="visionegg.pdf">PDF</a>
+
+    <p>
+
+    Vision Egg API reference <a href="reference/html/index.html">HTML</a>
+
+    <hr>
+  </body>
+</html>
diff --git a/doc/reference/epydoc b/doc/reference/epydoc
new file mode 100755
index 0000000..a70ac88
--- /dev/null
+++ b/doc/reference/epydoc
@@ -0,0 +1,8 @@
+#!/usr/bin/python
+#
+# Call the command line interface for Epydoc.
+#
+
+from epydoc.cli import cli
+cli()
+
diff --git a/doc/reference/html/VisionEgg-module.html b/doc/reference/html/VisionEgg-module.html
new file mode 100644
index 0000000..8f85b3a
--- /dev/null
+++ b/doc/reference/html/VisionEgg-module.html
@@ -0,0 +1,533 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th bgcolor="#70b0f0" class="navbar-select"
+          >   Home   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        Package VisionEgg
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg-module.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== PACKAGE DESCRIPTION ==================== -->
+<h1 class="epydoc">Package VisionEgg</h1><span class="codelink"><a href="VisionEgg-pysrc.html">source code</a></span><br /><br />
+<pre class="literalblock">
+
+The Vision Egg package.
+
+The Vision Egg is a programming library (with demo applications) that
+uses standard, inexpensive computer graphics cards to produce visual
+stimuli for vision research experiments.
+
+Today's consumer computer graphics cards, thanks to the demands of
+computer gamers, are capable of drawing and updating computer graphics
+suitable for producing research-quality visual stimuli. The Vision Egg
+allows the vision scientist (or anyone else) to program these cards
+using OpenGL, the standard in computer graphics
+programming. Potentially difficult tasks, such as initializing
+graphics, getting precise timing information, controlling stimulus
+parameters in real-time, and synchronizing with data acquisition are
+greatly eased by routines within the Vision Egg.
+
+See the 'Core' module for the fundamental Vision Egg classes.
+
+</pre><br /><br />
+
+<hr />
+<div class="fields">      <p><strong>Version:</strong>
+        1.1.dev
+      </p>
+</div><!-- ==================== SUBMODULES ==================== -->
+<a name="section-Submodules"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Submodules</span></td>
+</tr>
+  <tr><td class="summary">
+  <ul class="nomargin">
+    <li> <strong class="uidlink"><a href="VisionEgg.Configuration-module.html">VisionEgg.Configuration</a></strong>: <em class="summary">Load config values from environment, config file, or defaults.</em>    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.Core-module.html">VisionEgg.Core</a></strong>: <em class="summary">Core Vision Egg functionality.</em>    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.Daq-module.html">VisionEgg.Daq</a></strong>: <em class="summary">Definition of data acquisition and triggering interfaces.</em>    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.DaqKeyboard-module.html">VisionEgg.DaqKeyboard</a></strong>: <em class="summary">Data acquisition and triggering over the keyboard.</em>    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.DaqLPT-module.html">VisionEgg.DaqLPT</a></strong>: <em class="summary">Data acquisition and triggering over the parallel port.</em>    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.Deprecated-module.html">VisionEgg.Deprecated</a></strong>: <em class="summary">Bits of code which will be removed in the future.</em>    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.Dots-module.html">VisionEgg.Dots</a></strong>: <em class="summary">Random dot stimuli.</em>    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.FlowControl-module.html">VisionEgg.FlowControl</a></strong>: <em class="summary">Flow control for the Vision Egg.</em>    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.GL-module.html">VisionEgg.GL</a></strong>: <em class="summary">Vision Egg GL module -- lump all OpenGL names in one namespace.</em>    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.GLTrace-module.html">VisionEgg.GLTrace</a></strong>: <em class="summary">Trace calls to OpenGL
+
+With this module, you can trace all calls made to OpenGL through PyOpenGL.</em>    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.GUI-module.html">VisionEgg.GUI</a></strong>: <em class="summary">Graphical user interface classes and functions.</em>    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.Gratings-module.html">VisionEgg.Gratings</a></strong>: <em class="summary">Grating stimuli.</em>    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.MoreStimuli-module.html">VisionEgg.MoreStimuli</a></strong>: <em class="summary">Assorted stimuli.</em>    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.ParameterTypes-module.html">VisionEgg.ParameterTypes</a></strong>: <em class="summary">Type checking for the Vision Egg.</em>    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.PlatformDependent-module.html">VisionEgg.PlatformDependent</a></strong>: <em class="summary">Implementations of functions which vary by platform.</em>    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.PyroApps-module.html">VisionEgg.PyroApps</a></strong>: <em class="summary">VisionEgg subpackage providing support for demo applications based on Pyro</em>
+    <ul>
+    <li> <strong class="uidlink"><a href="VisionEgg.PyroApps.AST_ext-module.html">VisionEgg.PyroApps.AST_ext</a></strong>    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.PyroApps.ColorCalGUI-module.html">VisionEgg.PyroApps.ColorCalGUI</a></strong>: <em class="summary">Handle luminance and color calibration stimulus (client-side)</em>    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.PyroApps.ColorCalServer-module.html">VisionEgg.PyroApps.ColorCalServer</a></strong>: <em class="summary">Handle luminance and color calibration stimulus (server-side)</em>    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.PyroApps.DropinGUI-module.html">VisionEgg.PyroApps.DropinGUI</a></strong>    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.PyroApps.DropinServer-module.html">VisionEgg.PyroApps.DropinServer</a></strong>    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.PyroApps.EPhysGUI-module.html">VisionEgg.PyroApps.EPhysGUI</a></strong>    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.PyroApps.EPhysGUIUtils-module.html">VisionEgg.PyroApps.EPhysGUIUtils</a></strong>    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.PyroApps.EPhysServer-module.html">VisionEgg.PyroApps.EPhysServer</a></strong>    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.PyroApps.FlatGratingGUI-module.html">VisionEgg.PyroApps.FlatGratingGUI</a></strong>: <em class="summary">Handle sinusoidal gratings (client-side)</em>    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.PyroApps.FlatGratingServer-module.html">VisionEgg.PyroApps.FlatGratingServer</a></strong>: <em class="summary">Handle sinusoidal gratings (server-side)</em>    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.PyroApps.GridGUI-module.html">VisionEgg.PyroApps.GridGUI</a></strong>    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.PyroApps.GridServer-module.html">VisionEgg.PyroApps.GridServer</a></strong>    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.PyroApps.MouseTargetGUI-module.html">VisionEgg.PyroApps.MouseTargetGUI</a></strong>: <em class="summary">Handle mouse controlled small target stimulus (client-side)</em>    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.PyroApps.MouseTargetServer-module.html">VisionEgg.PyroApps.MouseTargetServer</a></strong>: <em class="summary">Handle mouse-controlled small targets (server-side)</em>    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.PyroApps.ScreenPositionGUI-module.html">VisionEgg.PyroApps.ScreenPositionGUI</a></strong>: <em class="summary">Handle 3D perspective projection (client-side)</em>    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.PyroApps.ScreenPositionServer-module.html">VisionEgg.PyroApps.ScreenPositionServer</a></strong>: <em class="summary">Handle 3D perspective projection (server-side)</em>    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.PyroApps.SphereGratingGUI-module.html">VisionEgg.PyroApps.SphereGratingGUI</a></strong>: <em class="summary">Handle perspective-distorted sinusoidal gratings (client-side)</em>    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.PyroApps.SphereGratingServer-module.html">VisionEgg.PyroApps.SphereGratingServer</a></strong>: <em class="summary">Handle perspective-distorted sinusoidal gratings (server-side)</em>    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.PyroApps.SpinningDrumGUI-module.html">VisionEgg.PyroApps.SpinningDrumGUI</a></strong>    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.PyroApps.SpinningDrumServer-module.html">VisionEgg.PyroApps.SpinningDrumServer</a></strong>    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.PyroApps.TargetGUI-module.html">VisionEgg.PyroApps.TargetGUI</a></strong>: <em class="summary">Handle small target stimulus (client-side)</em>    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.PyroApps.TargetServer-module.html">VisionEgg.PyroApps.TargetServer</a></strong>: <em class="summary">Handle small targets gratings (server-side)</em>    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.PyroApps.VarTypes-module.html">VisionEgg.PyroApps.VarTypes</a></strong>    </li>
+    </ul>
+    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.PyroClient-module.html">VisionEgg.PyroClient</a></strong>: <em class="summary">Python Remote Objects support - Client side.</em>    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.PyroHelpers-module.html">VisionEgg.PyroHelpers</a></strong>: <em class="summary">Python Remote Objects support.</em>    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.QuickTime-module.html">VisionEgg.QuickTime</a></strong>: <em class="summary">QuickTime movies in the Vision Egg.</em>    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.ResponseControl-module.html">VisionEgg.ResponseControl</a></strong>: <em class="summary">Response control during a presentation is running.</em>    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.SphereMap-module.html">VisionEgg.SphereMap</a></strong>: <em class="summary">Stimuli on spheres, including texture maps.</em>    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.TCPController-module.html">VisionEgg.TCPController</a></strong>: <em class="summary">Allows control of parameter values over the network.</em>    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.Text-module.html">VisionEgg.Text</a></strong>: <em class="summary">Text stimuli.</em>    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.Textures-module.html">VisionEgg.Textures</a></strong>: <em class="summary">Texture (images mapped onto polygons) stimuli.</em>    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.ThreeDeeMath-module.html">VisionEgg.ThreeDeeMath</a></strong>: <em class="summary">Vertex and matrix operations - simulate OpenGL transforms.</em>    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.WrappedText-module.html">VisionEgg.WrappedText</a></strong>: <em class="summary">Module containing the Multi-line text stimulus class WrappedText, as well
+as a simple example of its use.</em>    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.darwin_getrefresh-module.html">VisionEgg.darwin_getrefresh</a></strong>    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.gl_qt-module.html">VisionEgg.gl_qt</a></strong>    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.posix_maxpriority-module.html">VisionEgg.posix_maxpriority</a></strong>    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.qtlowlevel-module.html">VisionEgg.qtlowlevel</a></strong>    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.qtmovie-module.html">VisionEgg.qtmovie</a></strong>: <em class="summary">high level QuickTime Movie wrapper</em>    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.win32_getrefresh-module.html">VisionEgg.win32_getrefresh</a></strong>    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.win32_maxpriority-module.html">VisionEgg.win32_maxpriority</a></strong>    </li>
+  </ul></td></tr>
+</table>
+
+<br />
+<!-- ==================== CLASSES ==================== -->
+<a name="section-Classes"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Classes</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.Parameters-class.html" class="summary-name">Parameters</a><br />
+      Parameter container.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.ParameterDefinition-class.html" class="summary-name">ParameterDefinition</a><br />
+      Define parameters used in ClassWithParameters...
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.ClassWithParameters-class.html" class="summary-name">ClassWithParameters</a><br />
+      Base class for any class that uses parameters.
+    </td>
+  </tr>
+</table>
+<!-- ==================== FUNCTIONS ==================== -->
+<a name="section-Functions"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Functions</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="start_default_logging"></a><span class="summary-sig-name">start_default_logging</span>(<span class="summary-sig-arg">maxBytes</span>=<span class="summary-sig-default">100000</span>)</span><br />
+      Create and add log handlers</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg-pysrc.html#start_default_logging">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="watch_exceptions"></a><span class="summary-sig-name">watch_exceptions</span>()</span><br />
+      Catch exceptions, log them, and optionally open GUI.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg-pysrc.html#watch_exceptions">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="stop_watching_exceptions"></a><span class="summary-sig-name">stop_watching_exceptions</span>()</span><br />
+      Stop catching exceptions, returning to previous state.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg-pysrc.html#stop_watching_exceptions">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="recursive_base_class_finder"></a><span class="summary-sig-name">recursive_base_class_finder</span>(<span class="summary-sig-arg">klass</span>)</span><br />
+      A function to find all base classes.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg-pysrc.html#recursive_base_class_finder">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="time_func_locked_to_frames"></a><span class="summary-sig-name">time_func_locked_to_frames</span>()</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg-pysrc.html#time_func_locked_to_frames">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="set_time_func_to_true_time"></a><span class="summary-sig-name">set_time_func_to_true_time</span>()</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg-pysrc.html#set_time_func_to_true_time">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="set_time_func_to_frame_locked"></a><span class="summary-sig-name">set_time_func_to_frame_locked</span>()</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg-pysrc.html#set_time_func_to_frame_locked">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg-module.html#timing_func" class="summary-sig-name">timing_func</a>()</span><br />
+      DEPRECATED.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg-pysrc.html#timing_func">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="get_type"></a><span class="summary-sig-name">get_type</span>(<span class="summary-sig-arg">value</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg-pysrc.html#get_type">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="assert_type"></a><span class="summary-sig-name">assert_type</span>(<span class="summary-sig-arg">*args</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg-pysrc.html#assert_type">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+</table>
+<!-- ==================== VARIABLES ==================== -->
+<a name="section-Variables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Variables</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="release_name"></a><span class="summary-name">release_name</span> = <code title="'1.1.dev'">'1.1.dev'</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="config"></a><span class="summary-name">config</span> = <code title="VisionEgg.Configuration.Config()">VisionEgg.Configuration.Config()</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg-module.html#log_formatter" class="summary-name">log_formatter</a> = <code title="logging.Formatter('%(asctime)s (%(process)d) %(levelname)s: %(message)\
+s')">logging.Formatter('%(asctime)s (%(process)d) %<code class="variable-ellipsis">...</code></code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="logger"></a><span class="summary-name">logger</span> = <code title="logging.getLogger('VisionEgg.Configuration')">logging.getLogger('VisionEgg.Configuration')</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="true_time_func"></a><span class="summary-name">true_time_func</span> = <code title="time.time">time.time</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="time_func"></a><span class="summary-name">time_func</span> = <code title="time.time">time.time</code>
+    </td>
+  </tr>
+</table>
+<!-- ==================== FUNCTION DETAILS ==================== -->
+<a name="section-FunctionDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Function Details</span></td>
+</tr>
+</table>
+<a name="timing_func"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">timing_func</span>()</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg-pysrc.html#timing_func">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+DEPRECATED.  Use time_func instead
+
+</pre>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== VARIABLES DETAILS ==================== -->
+<a name="section-VariablesDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Variables Details</span></td>
+</tr>
+</table>
+<a name="log_formatter"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">log_formatter</h3>
+  
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+logging.Formatter('%(asctime)s (%(process)d) %(levelname)s: %(message)<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+s')
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th bgcolor="#70b0f0" class="navbar-select"
+          >   Home   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg-pysrc.html b/doc/reference/html/VisionEgg-pysrc.html
new file mode 100644
index 0000000..dee4b83
--- /dev/null
+++ b/doc/reference/html/VisionEgg-pysrc.html
@@ -0,0 +1,964 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th bgcolor="#70b0f0" class="navbar-select"
+          >   Home   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        Package VisionEgg
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg-pysrc.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<h1 class="epydoc">Source Code for <a href="VisionEgg-module.html">Package VisionEgg</a></h1>
+<pre class="py-src">
+<a name="L1"></a><tt class="py-lineno">  1</tt>  <tt class="py-line"><tt class="py-comment"># The Vision Egg</tt> </tt>
+<a name="L2"></a><tt class="py-lineno">  2</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L3"></a><tt class="py-lineno">  3</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Copyright (C) 2001-2004 Andrew Straw</tt> </tt>
+<a name="L4"></a><tt class="py-lineno">  4</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Copyright (C) 2004-2008 California Institute of Technology</tt> </tt>
+<a name="L5"></a><tt class="py-lineno">  5</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L6"></a><tt class="py-lineno">  6</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># URL: <http://www.visionegg.org/></tt> </tt>
+<a name="L7"></a><tt class="py-lineno">  7</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L8"></a><tt class="py-lineno">  8</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Distributed under the terms of the GNU Lesser General Public License</tt> </tt>
+<a name="L9"></a><tt class="py-lineno">  9</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># (LGPL). See LICENSE.TXT that came with this file.</tt> </tt>
+<a name="L10"></a><tt class="py-lineno"> 10</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L11"></a><tt class="py-lineno"> 11</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L12"></a><tt class="py-lineno"> 12</tt>  <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L13"></a><tt class="py-lineno"> 13</tt>  <tt class="py-line"><tt class="py-docstring">The Vision Egg package.</tt> </tt>
+<a name="L14"></a><tt class="py-lineno"> 14</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L15"></a><tt class="py-lineno"> 15</tt>  <tt class="py-line"><tt class="py-docstring">The Vision Egg is a programming library (with demo applications) that</tt> </tt>
+<a name="L16"></a><tt class="py-lineno"> 16</tt>  <tt class="py-line"><tt class="py-docstring">uses standard, inexpensive computer graphics cards to produce visual</tt> </tt>
+<a name="L17"></a><tt class="py-lineno"> 17</tt>  <tt class="py-line"><tt class="py-docstring">stimuli for vision research experiments.</tt> </tt>
+<a name="L18"></a><tt class="py-lineno"> 18</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L19"></a><tt class="py-lineno"> 19</tt>  <tt class="py-line"><tt class="py-docstring">Today's consumer computer graphics cards, thanks to the demands of</tt> </tt>
+<a name="L20"></a><tt class="py-lineno"> 20</tt>  <tt class="py-line"><tt class="py-docstring">computer gamers, are capable of drawing and updating computer graphics</tt> </tt>
+<a name="L21"></a><tt class="py-lineno"> 21</tt>  <tt class="py-line"><tt class="py-docstring">suitable for producing research-quality visual stimuli. The Vision Egg</tt> </tt>
+<a name="L22"></a><tt class="py-lineno"> 22</tt>  <tt class="py-line"><tt class="py-docstring">allows the vision scientist (or anyone else) to program these cards</tt> </tt>
+<a name="L23"></a><tt class="py-lineno"> 23</tt>  <tt class="py-line"><tt class="py-docstring">using OpenGL, the standard in computer graphics</tt> </tt>
+<a name="L24"></a><tt class="py-lineno"> 24</tt>  <tt class="py-line"><tt class="py-docstring">programming. Potentially difficult tasks, such as initializing</tt> </tt>
+<a name="L25"></a><tt class="py-lineno"> 25</tt>  <tt class="py-line"><tt class="py-docstring">graphics, getting precise timing information, controlling stimulus</tt> </tt>
+<a name="L26"></a><tt class="py-lineno"> 26</tt>  <tt class="py-line"><tt class="py-docstring">parameters in real-time, and synchronizing with data acquisition are</tt> </tt>
+<a name="L27"></a><tt class="py-lineno"> 27</tt>  <tt class="py-line"><tt class="py-docstring">greatly eased by routines within the Vision Egg.</tt> </tt>
+<a name="L28"></a><tt class="py-lineno"> 28</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L29"></a><tt class="py-lineno"> 29</tt>  <tt class="py-line"><tt class="py-docstring">See the 'Core' module for the fundamental Vision Egg classes.</tt> </tt>
+<a name="L30"></a><tt class="py-lineno"> 30</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L31"></a><tt class="py-lineno"> 31</tt>  <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L32"></a><tt class="py-lineno"> 32</tt>  <tt class="py-line"><tt id="link-0" class="py-name" targets="Variable VisionEgg.release_name=VisionEgg-module.html#release_name"><a title="VisionEgg.release_name" class="py-name" href="#" onclick="return doclink('link-0', 'release_name', 'link-0');">release_name</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'1.1.dev'</tt> </tt>
+<a name="L33"></a><tt class="py-lineno"> 33</tt>  <tt class="py-line"> </tt>
+<a name="L34"></a><tt class="py-lineno"> 34</tt>  <tt class="py-line"><tt id="link-1" class="py-name" targets="Variable VisionEgg.DaqKeyboard.__version__=VisionEgg.DaqKeyboard-module.html#__version__,Variable VisionEgg.DaqLPT.__version__=VisionEgg.DaqLPT-module.html#__version__,Variable VisionEgg.GL.__version__=VisionEgg.GL-module.html#__version__,Variable VisionEgg.PyroApps.EPhysGUI.__version__=VisionEgg.PyroApps.EPhysGUI-module.html#__version__,Variable VisionEgg.PyroApps.EPhysGUIUtils [...]
+VisionEgg.DaqLPT.__version__
+VisionEgg.GL.__version__
+VisionEgg.PyroApps.EPhysGUI.__version__
+VisionEgg.PyroApps.EPhysGUIUtils.__version__
+VisionEgg.PyroApps.EPhysServer.__version__
+VisionEgg.PyroApps.GridGUI.__version__
+VisionEgg.PyroApps.GridServer.__version__
+VisionEgg.PyroApps.ScreenPositionGUI.__version__
+VisionEgg.PyroApps.ScreenPositionServer.__version__
+VisionEgg.PyroApps.SpinningDrumGUI.__version__
+VisionEgg.PyroApps.SpinningDrumServer.__version__
+VisionEgg.PyroHelpers.__version__
+VisionEgg.QuickTime.__version__
+VisionEgg.ResponseControl.__version__
+VisionEgg.SphereMap.__version__
+VisionEgg.TCPController.__version__" class="py-name" href="#" onclick="return doclink('link-1', '__version__', 'link-1');">__version__</a></tt> <tt class="py-op">=</tt> <tt id="link-2" class="py-name"><a title="VisionEgg.release_name" class="py-name" href="#" onclick="return doclink('link-2', 'release_name', 'link-0');">release_name</a></tt> </tt>
+<a name="L35"></a><tt class="py-lineno"> 35</tt>  <tt class="py-line"> </tt>
+<a name="L36"></a><tt class="py-lineno"> 36</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-3" class="py-name" targets="Package VisionEgg=VisionEgg-module.html"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-3', 'VisionEgg', 'link-3');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-4" class="py-name" targets="Module VisionEgg.Configuration=VisionEgg.Configuration-module.html"><a title="VisionEgg.Configuration" class="py-name [...]
+<a name="L37"></a><tt class="py-lineno"> 37</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-5" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-5', 'VisionEgg', 'link-3');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-6" class="py-name" targets="Module VisionEgg.ParameterTypes=VisionEgg.ParameterTypes-module.html"><a title="VisionEgg.ParameterTypes" class="py-name" href="#" onclick="return doclink('link-6', 'P [...]
+<a name="L38"></a><tt class="py-lineno"> 38</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">os</tt><tt class="py-op">,</tt> <tt class="py-name">sys</tt><tt class="py-op">,</tt> <tt class="py-name">time</tt><tt class="py-op">,</tt> <tt class="py-name">types</tt> <tt class="py-comment"># standard python modules</tt> </tt>
+<a name="L39"></a><tt class="py-lineno"> 39</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">numpy</tt> </tt>
+<a name="L40"></a><tt class="py-lineno"> 40</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">numpy</tt><tt class="py-op">.</tt><tt class="py-name">oldnumeric</tt> <tt class="py-keyword">as</tt> <tt class="py-name">Numeric</tt> </tt>
+<a name="L41"></a><tt class="py-lineno"> 41</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">warnings</tt> </tt>
+<a name="L42"></a><tt class="py-lineno"> 42</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">traceback</tt> </tt>
+<a name="L43"></a><tt class="py-lineno"> 43</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">StringIO</tt> </tt>
+<a name="L44"></a><tt class="py-lineno"> 44</tt>  <tt class="py-line"> </tt>
+<a name="L45"></a><tt class="py-lineno"> 45</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">logging</tt>  <tt class="py-comment"># available in Python 2.3</tt> </tt>
+<a name="L46"></a><tt class="py-lineno"> 46</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">handlers</tt> </tt>
+<a name="L47"></a><tt class="py-lineno"> 47</tt>  <tt class="py-line"> </tt>
+<a name="L48"></a><tt class="py-lineno"> 48</tt>  <tt class="py-line"><tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt class="py-name">Numeric</tt><tt class="py-op">,</tt><tt class="py-string">'UInt8'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L49"></a><tt class="py-lineno"> 49</tt>  <tt class="py-line">    <tt class="py-name">Numeric</tt><tt class="py-op">.</tt><tt class="py-name">UInt8</tt> <tt class="py-op">=</tt> <tt class="py-string">'b'</tt> </tt>
+<a name="L50"></a><tt class="py-lineno"> 50</tt>  <tt class="py-line"><tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt class="py-name">Numeric</tt><tt class="py-op">,</tt><tt class="py-string">'Float32'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L51"></a><tt class="py-lineno"> 51</tt>  <tt class="py-line">    <tt class="py-name">Numeric</tt><tt class="py-op">.</tt><tt class="py-name">UInt8</tt> <tt class="py-op">=</tt> <tt class="py-string">'f'</tt> </tt>
+<a name="L52"></a><tt class="py-lineno"> 52</tt>  <tt class="py-line"> </tt>
+<a name="L53"></a><tt class="py-lineno"> 53</tt>  <tt class="py-line"><tt class="py-comment"># Make sure we don't have an old version of the VisionEgg installed.</tt> </tt>
+<a name="L54"></a><tt class="py-lineno"> 54</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># (There used to be a module named VisionEgg.VisionEgg.  If it still</tt> </tt>
+<a name="L55"></a><tt class="py-lineno"> 55</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># exists, it will randomly crash things.)</tt> </tt>
+<a name="L56"></a><tt class="py-lineno"> 56</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt class="py-name">sys</tt><tt class="py-op">,</tt><tt class="py-string">'frozen'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L57"></a><tt class="py-lineno"> 57</tt>  <tt class="py-line">    <tt class="py-comment"># don't do this if frozen:</tt> </tt>
+<a name="L58"></a><tt class="py-lineno"> 58</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L59"></a><tt class="py-lineno"> 59</tt>  <tt class="py-line">        <tt class="py-name">__import__</tt><tt class="py-op">(</tt><tt class="py-string">'VisionEgg.VisionEgg'</tt><tt class="py-op">)</tt> </tt>
+<a name="L60"></a><tt class="py-lineno"> 60</tt>  <tt class="py-line">    <tt class="py-keyword">except</tt> <tt class="py-name">ImportError</tt><tt class="py-op">:</tt> </tt>
+<a name="L61"></a><tt class="py-lineno"> 61</tt>  <tt class="py-line">        <tt class="py-keyword">pass</tt> <tt class="py-comment"># It's OK, the old version isn't there</tt> </tt>
+<a name="L62"></a><tt class="py-lineno"> 62</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L63"></a><tt class="py-lineno"> 63</tt>  <tt class="py-line">        <tt class="py-comment"># If we can import it, report error</tt> </tt>
+<a name="L64"></a><tt class="py-lineno"> 64</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">raise</tt> <tt class="py-name">RuntimeError</tt><tt class="py-op">(</tt><tt class="py-string">'Outdated "VisionEgg.py" and/or "VisionEgg.pyc" found.  Please delete from your VisionEgg package directory.'</tt><tt class="py-op">)</tt> </tt>
+<a name="L65"></a><tt class="py-lineno"> 65</tt>  <tt class="py-line"> </tt>
+<a name="L66"></a><tt class="py-lineno"> 66</tt>  <tt class="py-line"><tt class="py-comment">############# Get config defaults #############</tt> </tt>
+<a name="L67"></a><tt class="py-lineno"> 67</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt id="link-7" class="py-name" targets="Variable VisionEgg.config=VisionEgg-module.html#config"><a title="VisionEgg.config" class="py-name" href="#" onclick="return doclink('link-7', 'config', 'link-7');">config</a></tt> <tt class="py-op">=</tt> <tt id="link-8" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-8', 'VisionEgg', 'link-3');">VisionEgg< [...]
+<a name="L68"></a><tt class="py-lineno"> 68</tt>  <tt class="py-line"> </tt>
+<a name="L69"></a><tt class="py-lineno"> 69</tt>  <tt class="py-line"><tt class="py-comment">############# Logging #############</tt> </tt>
+<a name="L70"></a><tt class="py-lineno"> 70</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L71"></a><tt class="py-lineno"> 71</tt>  <tt class="py-line"><tt id="link-11" class="py-name" targets="Variable VisionEgg.logger=VisionEgg-module.html#logger"><a title="VisionEgg.logger" class="py-name" href="#" onclick="return doclink('link-11', 'logger', 'link-11');">logger</a></tt> <tt class="py-op">=</tt> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">getLogger</tt><tt class="py-op">(</tt><tt class="py-string">'VisionEgg'</tt><tt class="py-op">)< [...]
+<a name="L72"></a><tt class="py-lineno"> 72</tt>  <tt class="py-line"><tt id="link-12" class="py-name"><a title="VisionEgg.logger" class="py-name" href="#" onclick="return doclink('link-12', 'logger', 'link-11');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">setLevel</tt><tt class="py-op">(</tt> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt id="link-13" class="py-name" targets="Variable VisionEgg.Deprecated.Message.INFO=VisionEgg.Deprecated.Message-class.html# [...]
+<a name="L73"></a><tt class="py-lineno"> 73</tt>  <tt class="py-line"><tt id="link-14" class="py-name" targets="Variable VisionEgg.log_formatter=VisionEgg-module.html#log_formatter"><a title="VisionEgg.log_formatter" class="py-name" href="#" onclick="return doclink('link-14', 'log_formatter', 'link-14');">log_formatter</a></tt> <tt class="py-op">=</tt> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">Formatter</tt><tt class="py-op">(</tt><tt class="py-string">' [...]
+<a name="L74"></a><tt class="py-lineno"> 74</tt>  <tt class="py-line"><tt id="link-15" class="py-name" targets="Variable VisionEgg._default_logging_started=VisionEgg-module.html#_default_logging_started"><a title="VisionEgg._default_logging_started" class="py-name" href="#" onclick="return doclink('link-15', '_default_logging_started', 'link-15');">_default_logging_started</a></tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
+<a name="L75"></a><tt class="py-lineno"> 75</tt>  <tt class="py-line"> </tt>
+<a name="start_default_logging"></a><div id="start_default_logging-def"><a name="L76"></a><tt class="py-lineno"> 76</tt> <a class="py-toggle" href="#" id="start_default_logging-toggle" onclick="return toggle('start_default_logging');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg-module.html#start_default_logging">start_default_logging</a><tt class="py-op">(</tt><tt class="py-param">maxBytes</tt><tt class="py-op">=</tt><tt class="py-numbe [...]
+</div><div id="start_default_logging-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="start_default_logging-expanded"><a name="L77"></a><tt class="py-lineno"> 77</tt>  <tt class="py-line">    <tt class="py-docstring">"""Create and add log handlers"""</tt> </tt>
+<a name="L78"></a><tt class="py-lineno"> 78</tt>  <tt class="py-line">    <tt class="py-keyword">global</tt> <tt id="link-16" class="py-name"><a title="VisionEgg._default_logging_started" class="py-name" href="#" onclick="return doclink('link-16', '_default_logging_started', 'link-15');">_default_logging_started</a></tt> </tt>
+<a name="L79"></a><tt class="py-lineno"> 79</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt id="link-17" class="py-name"><a title="VisionEgg._default_logging_started" class="py-name" href="#" onclick="return doclink('link-17', '_default_logging_started', 'link-15');">_default_logging_started</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L80"></a><tt class="py-lineno"> 80</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-comment"># default logging already started</tt> </tt>
+<a name="L81"></a><tt class="py-lineno"> 81</tt>  <tt class="py-line"> </tt>
+<a name="L82"></a><tt class="py-lineno"> 82</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt id="link-18" class="py-name"><a title="VisionEgg.config" class="py-name" href="#" onclick="return doclink('link-18', 'config', 'link-7');">config</a></tt><tt class="py-op">.</tt><tt class="py-name">VISIONEGG_LOG_TO_STDERR</tt><tt class="py-op">:</tt> </tt>
+<a name="L83"></a><tt class="py-lineno"> 83</tt>  <tt class="py-line">        <tt class="py-name">log_handler_stderr</tt> <tt class="py-op">=</tt> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">StreamHandler</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L84"></a><tt class="py-lineno"> 84</tt>  <tt class="py-line">        <tt class="py-name">log_handler_stderr</tt><tt class="py-op">.</tt><tt class="py-name">setFormatter</tt><tt class="py-op">(</tt> <tt id="link-19" class="py-name"><a title="VisionEgg.log_formatter" class="py-name" href="#" onclick="return doclink('link-19', 'log_formatter', 'link-14');">log_formatter</a></tt> <tt class="py-op">)</tt> </tt>
+<a name="L85"></a><tt class="py-lineno"> 85</tt>  <tt class="py-line">        <tt id="link-20" class="py-name"><a title="VisionEgg.logger" class="py-name" href="#" onclick="return doclink('link-20', 'logger', 'link-11');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">addHandler</tt><tt class="py-op">(</tt> <tt class="py-name">log_handler_stderr</tt> <tt class="py-op">)</tt> </tt>
+<a name="L86"></a><tt class="py-lineno"> 86</tt>  <tt class="py-line"> </tt>
+<a name="L87"></a><tt class="py-lineno"> 87</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt id="link-21" class="py-name"><a title="VisionEgg.config" class="py-name" href="#" onclick="return doclink('link-21', 'config', 'link-7');">config</a></tt><tt class="py-op">.</tt><tt class="py-name">VISIONEGG_LOG_FILE</tt><tt class="py-op">:</tt> </tt>
+<a name="L88"></a><tt class="py-lineno"> 88</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt class="py-name">logging</tt><tt class="py-op">,</tt> <tt class="py-string">'handlers'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L89"></a><tt class="py-lineno"> 89</tt>  <tt class="py-line">            <tt class="py-name">log_handler_logfile</tt> <tt class="py-op">=</tt> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">handlers</tt><tt class="py-op">.</tt><tt class="py-name">RotatingFileHandler</tt><tt class="py-op">(</tt> <tt id="link-22" class="py-name"><a title="VisionEgg.config" class="py-name" href="#" onclick="return doclink('link-22', 'config', 'link-7');">config</a></tt> [...]
+<a name="L90"></a><tt class="py-lineno"> 90</tt>  <tt class="py-line">                                                                        <tt class="py-name">maxBytes</tt><tt class="py-op">=</tt><tt class="py-name">maxBytes</tt> <tt class="py-op">)</tt> </tt>
+<a name="L91"></a><tt class="py-lineno"> 91</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L92"></a><tt class="py-lineno"> 92</tt>  <tt class="py-line">            <tt class="py-name">log_handler_logfile</tt> <tt class="py-op">=</tt> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">FileHandler</tt><tt class="py-op">(</tt> <tt id="link-23" class="py-name"><a title="VisionEgg.config" class="py-name" href="#" onclick="return doclink('link-23', 'config', 'link-7');">config</a></tt><tt class="py-op">.</tt><tt class="py-name">VISIONEGG_LOG_FILE</t [...]
+<a name="L93"></a><tt class="py-lineno"> 93</tt>  <tt class="py-line">        <tt class="py-name">log_handler_logfile</tt><tt class="py-op">.</tt><tt class="py-name">setFormatter</tt><tt class="py-op">(</tt> <tt id="link-24" class="py-name"><a title="VisionEgg.log_formatter" class="py-name" href="#" onclick="return doclink('link-24', 'log_formatter', 'link-14');">log_formatter</a></tt> <tt class="py-op">)</tt> </tt>
+<a name="L94"></a><tt class="py-lineno"> 94</tt>  <tt class="py-line">        <tt id="link-25" class="py-name"><a title="VisionEgg.logger" class="py-name" href="#" onclick="return doclink('link-25', 'logger', 'link-11');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">addHandler</tt><tt class="py-op">(</tt> <tt class="py-name">log_handler_logfile</tt> <tt class="py-op">)</tt> </tt>
+<a name="L95"></a><tt class="py-lineno"> 95</tt>  <tt class="py-line"> </tt>
+<a name="L96"></a><tt class="py-lineno"> 96</tt>  <tt class="py-line">    <tt class="py-name">script_name</tt> <tt class="py-op">=</tt> <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">argv</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt>
+<a name="L97"></a><tt class="py-lineno"> 97</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">script_name</tt><tt class="py-op">:</tt> </tt>
+<a name="L98"></a><tt class="py-lineno"> 98</tt>  <tt class="py-line">        <tt class="py-name">script_name</tt> <tt class="py-op">=</tt> <tt class="py-string">"(interactive shell)"</tt> </tt>
+<a name="L99"></a><tt class="py-lineno"> 99</tt>  <tt class="py-line">    <tt id="link-26" class="py-name"><a title="VisionEgg.logger" class="py-name" href="#" onclick="return doclink('link-26', 'logger', 'link-11');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">"Script "</tt><tt class="py-op">+</tt><tt class="py-name">script_name</tt><tt class="py-op">+</tt><tt class="py-string">" started Vision Egg %s with process id  [...]
+<a name="L100"></a><tt class="py-lineno">100</tt>  <tt class="py-line">    <tt id="link-29" class="py-name"><a title="VisionEgg._default_logging_started" class="py-name" href="#" onclick="return doclink('link-29', '_default_logging_started', 'link-15');">_default_logging_started</a></tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
+</div><a name="L101"></a><tt class="py-lineno">101</tt>  <tt class="py-line"> </tt>
+<a name="L102"></a><tt class="py-lineno">102</tt>  <tt class="py-line"> </tt>
+<a name="L103"></a><tt class="py-lineno">103</tt>  <tt class="py-line"><tt class="py-comment">############# Default exception handler #############</tt> </tt>
+<a name="L104"></a><tt class="py-lineno">104</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L105"></a><tt class="py-lineno">105</tt>  <tt class="py-line"><tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">argv</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> <tt class="py-comment"># Interactive mode</tt> </tt>
+<a name="L106"></a><tt class="py-lineno">106</tt>  <tt class="py-line">    <tt id="link-30" class="py-name"><a title="VisionEgg.config" class="py-name" href="#" onclick="return doclink('link-30', 'config', 'link-7');">config</a></tt><tt class="py-op">.</tt><tt class="py-name">VISIONEGG_GUI_ON_ERROR</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L107"></a><tt class="py-lineno">107</tt>  <tt class="py-line"> </tt>
+<a name="_ExceptionHookKeeper"></a><div id="_ExceptionHookKeeper-def"><a name="L108"></a><tt class="py-lineno">108</tt> <a class="py-toggle" href="#" id="_ExceptionHookKeeper-toggle" onclick="return toggle('_ExceptionHookKeeper');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg._ExceptionHookKeeper-class.html">_ExceptionHookKeeper</a><tt class="py-op">:</tt> </tt>
+</div><div id="_ExceptionHookKeeper-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="_ExceptionHookKeeper-expanded"><a name="_ExceptionHookKeeper.handle_exception"></a><div id="_ExceptionHookKeeper.handle_exception-def"><a name="L109"></a><tt class="py-lineno">109</tt> <a class="py-toggle" href="#" id="_ExceptionHookKeeper.handle_exception-toggle" onclick="return toggle('_ExceptionHookKeeper.handle_exception');">-</a><tt class="py-line">    <tt class="py-keyword">d [...]
+</div><div id="_ExceptionHookKeeper.handle_exception-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="_ExceptionHookKeeper.handle_exception-expanded"><a name="L110"></a><tt class="py-lineno">110</tt>  <tt class="py-line">        <tt class="py-keyword">global</tt> <tt id="link-31" class="py-name"><a title="VisionEgg.config" class="py-name" href="#" onclick="return doclink('link-31', 'config', 'link-7');">config</a></tt> </tt>
+<a name="L111"></a><tt class="py-lineno">111</tt>  <tt class="py-line"> </tt>
+<a name="L112"></a><tt class="py-lineno">112</tt>  <tt class="py-line">        <tt class="py-name">traceback_stream</tt> <tt class="py-op">=</tt> <tt class="py-name">StringIO</tt><tt class="py-op">.</tt><tt class="py-name">StringIO</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L113"></a><tt class="py-lineno">113</tt>  <tt class="py-line">        <tt class="py-name">traceback</tt><tt class="py-op">.</tt><tt class="py-name">print_exception</tt><tt class="py-op">(</tt><tt class="py-name">exc_type</tt><tt class="py-op">,</tt><tt class="py-name">exc_value</tt><tt class="py-op">,</tt><tt class="py-name">exc_traceback</tt><tt class="py-op">,</tt><tt class="py-name">None</tt><tt class="py-op">,</tt><tt class="py-name">traceback_stream</tt><tt class="py-op">)< [...]
+<a name="L114"></a><tt class="py-lineno">114</tt>  <tt class="py-line">        <tt class="py-name">traceback_stream</tt><tt class="py-op">.</tt><tt class="py-name">seek</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">)</tt> </tt>
+<a name="L115"></a><tt class="py-lineno">115</tt>  <tt class="py-line"> </tt>
+<a name="L116"></a><tt class="py-lineno">116</tt>  <tt class="py-line">        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L117"></a><tt class="py-lineno">117</tt>  <tt class="py-line">            <tt class="py-comment"># don't send to stderr here (original exception handler does it)</tt> </tt>
+<a name="L118"></a><tt class="py-lineno">118</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt id="link-32" class="py-name"><a title="VisionEgg.logger" class="py-name" href="#" onclick="return doclink('link-32', 'logger', 'link-11');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">removeHandler</tt><tt class="py-op">(</tt> <tt class="py-name">log_handler_stderr</tt> <tt class="py-op">)</tt> </tt>
+<a name="L119"></a><tt class="py-lineno">119</tt>  <tt class="py-line">            <tt class="py-name">removed_stderr</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
+<a name="L120"></a><tt class="py-lineno">120</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt><tt class="py-op">:</tt> </tt>
+<a name="L121"></a><tt class="py-lineno">121</tt>  <tt class="py-line">            <tt class="py-name">removed_stderr</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
+<a name="L122"></a><tt class="py-lineno">122</tt>  <tt class="py-line"> </tt>
+<a name="L123"></a><tt class="py-lineno">123</tt>  <tt class="py-line">        <tt id="link-33" class="py-name"><a title="VisionEgg.logger" class="py-name" href="#" onclick="return doclink('link-33', 'logger', 'link-11');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">critical</tt><tt class="py-op">(</tt><tt class="py-name">traceback_stream</tt><tt class="py-op">.</tt><tt class="py-name">read</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L124"></a><tt class="py-lineno">124</tt>  <tt class="py-line"> </tt>
+<a name="L125"></a><tt class="py-lineno">125</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">removed_stderr</tt><tt class="py-op">:</tt> </tt>
+<a name="L126"></a><tt class="py-lineno">126</tt>  <tt class="py-line">            <tt id="link-34" class="py-name"><a title="VisionEgg.logger" class="py-name" href="#" onclick="return doclink('link-34', 'logger', 'link-11');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">addHandler</tt><tt class="py-op">(</tt> <tt class="py-name">log_handler_stderr</tt> <tt class="py-op">)</tt> </tt>
+<a name="L127"></a><tt class="py-lineno">127</tt>  <tt class="py-line"> </tt>
+<a name="L128"></a><tt class="py-lineno">128</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt id="link-35" class="py-name"><a title="VisionEgg.config" class="py-name" href="#" onclick="return doclink('link-35', 'config', 'link-7');">config</a></tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L129"></a><tt class="py-lineno">129</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt id="link-36" class="py-name"><a title="VisionEgg.config" class="py-name" href="#" onclick="return doclink('link-36', 'config', 'link-7');">config</a></tt><tt class="py-op">.</tt><tt class="py-name">VISIONEGG_GUI_ON_ERROR</tt> <tt class="py-keyword">and</tt> <tt id="link-37" class="py-name"><a title="VisionEgg.config" class="py-name" href="#" onclick="return doclink('link- [...]
+<a name="L130"></a><tt class="py-lineno">130</tt>  <tt class="py-line">                <tt class="py-comment"># Should really check if any GUI windows are open and only do this then</tt> </tt>
+<a name="L131"></a><tt class="py-lineno">131</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L132"></a><tt class="py-lineno">132</tt>  <tt class="py-line">                <tt class="py-comment"># close any open screens</tt> </tt>
+<a name="L133"></a><tt class="py-lineno">133</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-keyword">if</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt id="link-38" class="py-name"><a title="VisionEgg.config" class="py-name" href="#" onclick="return doclink('link-38', 'config', 'link-7');">config</a></tt><tt class="py-op">,</tt><tt class="py-string">'_open_screens'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L134"></a><tt class="py-lineno">134</tt>  <tt class="py-line">                    <tt class="py-keyword">for</tt> <tt class="py-name">screen</tt> <tt class="py-keyword">in</tt> <tt id="link-39" class="py-name"><a title="VisionEgg.config" class="py-name" href="#" onclick="return doclink('link-39', 'config', 'link-7');">config</a></tt><tt class="py-op">.</tt><tt class="py-name">_open_screens</tt><tt class="py-op">:</tt> </tt>
+<a name="L135"></a><tt class="py-lineno">135</tt>  <tt class="py-line">                        <tt class="py-name">screen</tt><tt class="py-op">.</tt><tt id="link-40" class="py-name" targets="Method VisionEgg.Core.Screen.close()=VisionEgg.Core.Screen-class.html#close"><a title="VisionEgg.Core.Screen.close" class="py-name" href="#" onclick="return doclink('link-40', 'close', 'link-40');">close</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L136"></a><tt class="py-lineno">136</tt>  <tt class="py-line"> </tt>
+<a name="L137"></a><tt class="py-lineno">137</tt>  <tt class="py-line">                <tt class="py-name">traceback_stream</tt> <tt class="py-op">=</tt> <tt class="py-name">StringIO</tt><tt class="py-op">.</tt><tt class="py-name">StringIO</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L138"></a><tt class="py-lineno">138</tt>  <tt class="py-line">                <tt class="py-name">traceback</tt><tt class="py-op">.</tt><tt class="py-name">print_tb</tt><tt class="py-op">(</tt><tt class="py-name">exc_traceback</tt><tt class="py-op">,</tt><tt class="py-name">None</tt><tt class="py-op">,</tt><tt class="py-name">traceback_stream</tt><tt class="py-op">)</tt> </tt>
+<a name="L139"></a><tt class="py-lineno">139</tt>  <tt class="py-line">                <tt class="py-name">traceback_stream</tt><tt class="py-op">.</tt><tt class="py-name">seek</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">)</tt> </tt>
+<a name="L140"></a><tt class="py-lineno">140</tt>  <tt class="py-line"> </tt>
+<a name="L141"></a><tt class="py-lineno">141</tt>  <tt class="py-line">                <tt class="py-name">pygame_bug_workaround</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> <tt class="py-comment"># do we need to workaround pygame bug?</tt> </tt>
+<a name="L142"></a><tt class="py-lineno">142</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt id="link-41" class="py-name"><a title="VisionEgg.config" class="py-name" href="#" onclick="return doclink('link-41', 'config', 'link-7');">config</a></tt><tt class="py-op">,</tt><tt class="py-string">"_pygame_started"</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L143"></a><tt class="py-lineno">143</tt>  <tt class="py-line">                    <tt class="py-keyword">if</tt> <tt id="link-42" class="py-name"><a title="VisionEgg.config" class="py-name" href="#" onclick="return doclink('link-42', 'config', 'link-7');">config</a></tt><tt class="py-op">.</tt><tt class="py-name">_pygame_started</tt><tt class="py-op">:</tt> </tt>
+<a name="L144"></a><tt class="py-lineno">144</tt>  <tt class="py-line">                        <tt class="py-name">pygame_bug_workaround</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
+<a name="L145"></a><tt class="py-lineno">145</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">platform</tt><tt class="py-op">.</tt><tt class="py-name">startswith</tt><tt class="py-op">(</tt><tt class="py-string">'linux'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> <tt class="py-comment"># doesn't affect linux for some reason</tt> </tt>
+<a name="L146"></a><tt class="py-lineno">146</tt>  <tt class="py-line">                    <tt class="py-name">pygame_bug_workaround</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
+<a name="L147"></a><tt class="py-lineno">147</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">pygame_bug_workaround</tt><tt class="py-op">:</tt> </tt>
+<a name="L148"></a><tt class="py-lineno">148</tt>  <tt class="py-line">                    <tt class="py-keyword">if</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt id="link-43" class="py-name"><a title="VisionEgg.config" class="py-name" href="#" onclick="return doclink('link-43', 'config', 'link-7');">config</a></tt><tt class="py-op">,</tt><tt class="py-string">'_Tkinter_used'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L149"></a><tt class="py-lineno">149</tt>  <tt class="py-line">                        <tt class="py-keyword">if</tt> <tt id="link-44" class="py-name"><a title="VisionEgg.config" class="py-name" href="#" onclick="return doclink('link-44', 'config', 'link-7');">config</a></tt><tt class="py-op">.</tt><tt class="py-name">_Tkinter_used</tt><tt class="py-op">:</tt> </tt>
+<a name="L150"></a><tt class="py-lineno">150</tt>  <tt class="py-line">                            <tt class="py-keyword">import</tt> <tt id="link-45" class="py-name" targets="Module VisionEgg.GUI=VisionEgg.GUI-module.html"><a title="VisionEgg.GUI" class="py-name" href="#" onclick="return doclink('link-45', 'GUI', 'link-45');">GUI</a></tt> </tt>
+<a name="L151"></a><tt class="py-lineno">151</tt>  <tt class="py-line">                            <tt id="link-46" class="py-name"><a title="VisionEgg.GUI" class="py-name" href="#" onclick="return doclink('link-46', 'GUI', 'link-45');">GUI</a></tt><tt class="py-op">.</tt><tt id="link-47" class="py-name" targets="Function VisionEgg.GUI.showexception()=VisionEgg.GUI-module.html#showexception"><a title="VisionEgg.GUI.showexception" class="py-name" href="#" onclick="return doclink('link-47' [...]
+<a name="L152"></a><tt class="py-lineno">152</tt>  <tt class="py-line"> </tt>
+<a name="L153"></a><tt class="py-lineno">153</tt>  <tt class="py-line">        <tt class="py-comment"># continue on with normal exception processing:</tt> </tt>
+<a name="L154"></a><tt class="py-lineno">154</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">__keep_config__</tt> <tt class="py-op">=</tt> <tt id="link-48" class="py-name"><a title="VisionEgg.config" class="py-name" href="#" onclick="return doclink('link-48', 'config', 'link-7');">config</a></tt> <tt class="py-comment"># bizarre that the exception handler changes our values...</tt> </tt>
+<a name="L155"></a><tt class="py-lineno">155</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">orig_hook</tt><tt class="py-op">(</tt><tt class="py-name">exc_type</tt><tt class="py-op">,</tt> <tt class="py-name">exc_value</tt><tt class="py-op">,</tt> <tt class="py-name">exc_traceback</tt><tt class="py-op">)</tt> </tt>
+<a name="L156"></a><tt class="py-lineno">156</tt>  <tt class="py-line">        <tt id="link-49" class="py-name"><a title="VisionEgg.config" class="py-name" href="#" onclick="return doclink('link-49', 'config', 'link-7');">config</a></tt> <tt class="py-op">=</tt> <tt class="py-name">__keep_config__</tt> <tt class="py-comment"># but we work around it!</tt> </tt>
+</div><a name="L157"></a><tt class="py-lineno">157</tt>  <tt class="py-line"> </tt>
+<a name="_ExceptionHookKeeper.__init__"></a><div id="_ExceptionHookKeeper.__init__-def"><a name="L158"></a><tt class="py-lineno">158</tt> <a class="py-toggle" href="#" id="_ExceptionHookKeeper.__init__-toggle" onclick="return toggle('_ExceptionHookKeeper.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg._ExceptionHookKeeper-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op [...]
+</div><div id="_ExceptionHookKeeper.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="_ExceptionHookKeeper.__init__-expanded"><a name="L159"></a><tt class="py-lineno">159</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_sys</tt> <tt class="py-op">=</tt> <tt class="py-name">sys</tt> <tt class="py-comment"># preserve ref to sys module</tt> </tt>
+<a name="L160"></a><tt class="py-lineno">160</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">orig_hook</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_sys</tt><tt class="py-op">.</tt><tt class="py-name">excepthook</tt> <tt class="py-comment"># keep copy</tt> </tt>
+<a name="L161"></a><tt class="py-lineno">161</tt>  <tt class="py-line">        <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">excepthook</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">handle_exception</tt> </tt>
+</div><a name="L162"></a><tt class="py-lineno">162</tt>  <tt class="py-line"> </tt>
+<a name="_ExceptionHookKeeper.__del__"></a><div id="_ExceptionHookKeeper.__del__-def"><a name="L163"></a><tt class="py-lineno">163</tt> <a class="py-toggle" href="#" id="_ExceptionHookKeeper.__del__-toggle" onclick="return toggle('_ExceptionHookKeeper.__del__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg._ExceptionHookKeeper-class.html#__del__">__del__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</t [...]
+</div><div id="_ExceptionHookKeeper.__del__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="_ExceptionHookKeeper.__del__-expanded"><a name="L164"></a><tt class="py-lineno">164</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_sys</tt><tt class="py-op">.</tt><tt class="py-name">excepthook</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">orig_hook</tt> [...]
+</div></div><a name="L165"></a><tt class="py-lineno">165</tt>  <tt class="py-line"> </tt>
+<a name="watch_exceptions"></a><div id="watch_exceptions-def"><a name="L166"></a><tt class="py-lineno">166</tt> <a class="py-toggle" href="#" id="watch_exceptions-toggle" onclick="return toggle('watch_exceptions');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg-module.html#watch_exceptions">watch_exceptions</a><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="watch_exceptions-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="watch_exceptions-expanded"><a name="L167"></a><tt class="py-lineno">167</tt>  <tt class="py-line">    <tt class="py-docstring">"""Catch exceptions, log them, and optionally open GUI."""</tt> </tt>
+<a name="L168"></a><tt class="py-lineno">168</tt>  <tt class="py-line">    <tt class="py-keyword">global</tt> <tt class="py-name">_exception_hook_keeper</tt> </tt>
+<a name="L169"></a><tt class="py-lineno">169</tt>  <tt class="py-line">    <tt class="py-name">_exception_hook_keeper</tt> <tt class="py-op">=</tt> <tt class="py-name">_ExceptionHookKeeper</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L170"></a><tt class="py-lineno">170</tt>  <tt class="py-line"> </tt>
+<a name="stop_watching_exceptions"></a><div id="stop_watching_exceptions-def"><a name="L171"></a><tt class="py-lineno">171</tt> <a class="py-toggle" href="#" id="stop_watching_exceptions-toggle" onclick="return toggle('stop_watching_exceptions');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg-module.html#stop_watching_exceptions">stop_watching_exceptions</a><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="stop_watching_exceptions-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="stop_watching_exceptions-expanded"><a name="L172"></a><tt class="py-lineno">172</tt>  <tt class="py-line">    <tt class="py-docstring">"""Stop catching exceptions, returning to previous state."""</tt> </tt>
+<a name="L173"></a><tt class="py-lineno">173</tt>  <tt class="py-line">    <tt class="py-keyword">global</tt> <tt class="py-name">_exception_hook_keeper</tt> </tt>
+<a name="L174"></a><tt class="py-lineno">174</tt>  <tt class="py-line">    <tt class="py-keyword">del</tt> <tt class="py-name">_exception_hook_keeper</tt> </tt>
+</div><a name="L175"></a><tt class="py-lineno">175</tt>  <tt class="py-line"> </tt>
+<a name="L176"></a><tt class="py-lineno">176</tt>  <tt class="py-line"><tt class="py-keyword">if</tt> <tt id="link-50" class="py-name"><a title="VisionEgg.config" class="py-name" href="#" onclick="return doclink('link-50', 'config', 'link-7');">config</a></tt><tt class="py-op">.</tt><tt class="py-name">VISIONEGG_ALWAYS_START_LOGGING</tt><tt class="py-op">:</tt> </tt>
+<a name="L177"></a><tt class="py-lineno">177</tt>  <tt class="py-line">    <tt id="link-51" class="py-name" targets="Function VisionEgg.start_default_logging()=VisionEgg-module.html#start_default_logging"><a title="VisionEgg.start_default_logging" class="py-name" href="#" onclick="return doclink('link-51', 'start_default_logging', 'link-51');">start_default_logging</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L178"></a><tt class="py-lineno">178</tt>  <tt class="py-line">    <tt id="link-52" class="py-name" targets="Function VisionEgg.watch_exceptions()=VisionEgg-module.html#watch_exceptions"><a title="VisionEgg.watch_exceptions" class="py-name" href="#" onclick="return doclink('link-52', 'watch_exceptions', 'link-52');">watch_exceptions</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L179"></a><tt class="py-lineno">179</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt id="link-53" class="py-name"><a title="VisionEgg.config" class="py-name" href="#" onclick="return doclink('link-53', 'config', 'link-7');">config</a></tt><tt class="py-op">.</tt><tt class="py-name">_delayed_configuration_log_warnings</tt><tt class="py-op">)</tt> <tt class="py-op">!=</tt> <tt class="py-number">0</tt><tt class="py [...]
+<a name="L180"></a><tt class="py-lineno">180</tt>  <tt class="py-line">        <tt id="link-54" class="py-name"><a title="VisionEgg.logger" class="py-name" href="#" onclick="return doclink('link-54', 'logger', 'link-11');">logger</a></tt> <tt class="py-op">=</tt> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">getLogger</tt><tt class="py-op">(</tt><tt class="py-string">'VisionEgg.Configuration'</tt><tt class="py-op">)</tt> </tt>
+<a name="L181"></a><tt class="py-lineno">181</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">msg</tt> <tt class="py-keyword">in</tt> <tt id="link-55" class="py-name"><a title="VisionEgg.config" class="py-name" href="#" onclick="return doclink('link-55', 'config', 'link-7');">config</a></tt><tt class="py-op">.</tt><tt class="py-name">_delayed_configuration_log_warnings</tt><tt class="py-op">:</tt> </tt>
+<a name="L182"></a><tt class="py-lineno">182</tt>  <tt class="py-line">            <tt id="link-56" class="py-name"><a title="VisionEgg.logger" class="py-name" href="#" onclick="return doclink('link-56', 'logger', 'link-11');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">warning</tt><tt class="py-op">(</tt> <tt class="py-name">msg</tt> <tt class="py-op">)</tt> </tt>
+<a name="L183"></a><tt class="py-lineno">183</tt>  <tt class="py-line"> </tt>
+<a name="L184"></a><tt class="py-lineno">184</tt>  <tt class="py-line"><tt class="py-comment">############ A base class finder utility function ###########</tt> </tt>
+<a name="L185"></a><tt class="py-lineno">185</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="recursive_base_class_finder"></a><div id="recursive_base_class_finder-def"><a name="L186"></a><tt class="py-lineno">186</tt> <a class="py-toggle" href="#" id="recursive_base_class_finder-toggle" onclick="return toggle('recursive_base_class_finder');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg-module.html#recursive_base_class_finder">recursive_base_class_finder</a><tt class="py-op">(</tt><tt class="py-param">klass</tt><tt class [...]
+</div><div id="recursive_base_class_finder-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="recursive_base_class_finder-expanded"><a name="L187"></a><tt class="py-lineno">187</tt>  <tt class="py-line">    <tt class="py-docstring">"""A function to find all base classes."""</tt> </tt>
+<a name="L188"></a><tt class="py-lineno">188</tt>  <tt class="py-line">    <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">klass</tt><tt class="py-op">]</tt> </tt>
+<a name="L189"></a><tt class="py-lineno">189</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">base_class</tt> <tt class="py-keyword">in</tt> <tt class="py-name">klass</tt><tt class="py-op">.</tt><tt class="py-name">__bases__</tt><tt class="py-op">:</tt> </tt>
+<a name="L190"></a><tt class="py-lineno">190</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">base_base_class</tt> <tt class="py-keyword">in</tt> <tt id="link-57" class="py-name" targets="Function VisionEgg.recursive_base_class_finder()=VisionEgg-module.html#recursive_base_class_finder"><a title="VisionEgg.recursive_base_class_finder" class="py-name" href="#" onclick="return doclink('link-57', 'recursive_base_class_finder', 'link-57');">recursive_base [...]
+<a name="L191"></a><tt class="py-lineno">191</tt>  <tt class="py-line">            <tt class="py-name">result</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">base_base_class</tt><tt class="py-op">)</tt> </tt>
+<a name="L192"></a><tt class="py-lineno">192</tt>  <tt class="py-line">    <tt class="py-comment"># Make only a single copy of each class found</tt> </tt>
+<a name="L193"></a><tt class="py-lineno">193</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">result2</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L194"></a><tt class="py-lineno">194</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">r</tt> <tt class="py-keyword">in</tt> <tt class="py-name">result</tt><tt class="py-op">:</tt> </tt>
+<a name="L195"></a><tt class="py-lineno">195</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">r</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">result2</tt><tt class="py-op">:</tt> </tt>
+<a name="L196"></a><tt class="py-lineno">196</tt>  <tt class="py-line">            <tt class="py-name">result2</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">r</tt><tt class="py-op">)</tt> </tt>
+<a name="L197"></a><tt class="py-lineno">197</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">result2</tt> </tt>
+</div><a name="L198"></a><tt class="py-lineno">198</tt>  <tt class="py-line"> </tt>
+<a name="L199"></a><tt class="py-lineno">199</tt>  <tt class="py-line"><tt class="py-comment">############# Setup timing functions #############</tt> </tt>
+<a name="L200"></a><tt class="py-lineno">200</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L201"></a><tt class="py-lineno">201</tt>  <tt class="py-line"><tt class="py-keyword">if</tt> <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">platform</tt> <tt class="py-op">==</tt> <tt class="py-string">"win32"</tt><tt class="py-op">:</tt> </tt>
+<a name="L202"></a><tt class="py-lineno">202</tt>  <tt class="py-line">    <tt class="py-comment"># on win32, time.clock() theoretically has better resolution than time.time()</tt> </tt>
+<a name="L203"></a><tt class="py-lineno">203</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-58" class="py-name" targets="Variable VisionEgg.true_time_func=VisionEgg-module.html#true_time_func"><a title="VisionEgg.true_time_func" class="py-name" href="#" onclick="return doclink('link-58', 'true_time_func', 'link-58');">true_time_func</a></tt> <tt class="py-op">=</tt> <tt class="py-name">time</tt><tt class="py-op">.</tt><tt class="py-name">clock</tt> </tt>
+<a name="L204"></a><tt class="py-lineno">204</tt>  <tt class="py-line"><tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L205"></a><tt class="py-lineno">205</tt>  <tt class="py-line">    <tt id="link-59" class="py-name"><a title="VisionEgg.true_time_func" class="py-name" href="#" onclick="return doclink('link-59', 'true_time_func', 'link-58');">true_time_func</a></tt> <tt class="py-op">=</tt> <tt class="py-name">time</tt><tt class="py-op">.</tt><tt class="py-name">time</tt> </tt>
+<a name="L206"></a><tt class="py-lineno">206</tt>  <tt class="py-line">    <tt class="py-comment"># XXX Possible To-Do:</tt> </tt>
+<a name="L207"></a><tt class="py-lineno">207</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#  On MacOSX use AudioGetCurrentHostTime() and</tt> </tt>
+<a name="L208"></a><tt class="py-lineno">208</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#  AudioConvertHostTimeToNanos() #</tt> </tt>
+<a name="L209"></a><tt class="py-lineno">209</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L210"></a><tt class="py-lineno">210</tt>  <tt class="py-line"><tt id="link-60" class="py-name"><a title="VisionEgg.config" class="py-name" href="#" onclick="return doclink('link-60', 'config', 'link-7');">config</a></tt><tt class="py-op">.</tt><tt class="py-name">_FRAMECOUNT_ABSOLUTE</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> <tt class="py-comment"># initialize global variable</tt> </tt>
+<a name="time_func_locked_to_frames"></a><div id="time_func_locked_to_frames-def"><a name="L211"></a><tt class="py-lineno">211</tt> <a class="py-toggle" href="#" id="time_func_locked_to_frames-toggle" onclick="return toggle('time_func_locked_to_frames');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg-module.html#time_func_locked_to_frames">time_func_locked_to_frames</a><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</t [...]
+</div><div id="time_func_locked_to_frames-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="time_func_locked_to_frames-expanded"><a name="L212"></a><tt class="py-lineno">212</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt id="link-61" class="py-name"><a title="VisionEgg.config" class="py-name" href="#" onclick="return doclink('link-61', 'config', 'link-7');">config</a></tt><tt class="py-op">.</tt><tt class="py-name">_FRAMECOUNT_ABSOLUTE</tt> <tt [...]
+</div><a name="L213"></a><tt class="py-lineno">213</tt>  <tt class="py-line"> </tt>
+<a name="L214"></a><tt class="py-lineno">214</tt>  <tt class="py-line"><tt id="link-64" class="py-name" targets="Variable VisionEgg.time_func=VisionEgg-module.html#time_func"><a title="VisionEgg.time_func" class="py-name" href="#" onclick="return doclink('link-64', 'time_func', 'link-64');">time_func</a></tt> <tt class="py-op">=</tt> <tt id="link-65" class="py-name"><a title="VisionEgg.true_time_func" class="py-name" href="#" onclick="return doclink('link-65', 'true_time_func', 'link-58' [...]
+<a name="L215"></a><tt class="py-lineno">215</tt>  <tt class="py-line"> </tt>
+<a name="set_time_func_to_true_time"></a><div id="set_time_func_to_true_time-def"><a name="L216"></a><tt class="py-lineno">216</tt> <a class="py-toggle" href="#" id="set_time_func_to_true_time-toggle" onclick="return toggle('set_time_func_to_true_time');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg-module.html#set_time_func_to_true_time">set_time_func_to_true_time</a><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</t [...]
+</div><div id="set_time_func_to_true_time-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="set_time_func_to_true_time-expanded"><a name="L217"></a><tt class="py-lineno">217</tt>  <tt class="py-line">    <tt id="link-66" class="py-name"><a title="VisionEgg.time_func" class="py-name" href="#" onclick="return doclink('link-66', 'time_func', 'link-64');">time_func</a></tt> <tt class="py-op">=</tt> <tt id="link-67" class="py-name"><a title="VisionEgg.true_time_func" cla [...]
+</div><a name="L218"></a><tt class="py-lineno">218</tt>  <tt class="py-line"> </tt>
+<a name="set_time_func_to_frame_locked"></a><div id="set_time_func_to_frame_locked-def"><a name="L219"></a><tt class="py-lineno">219</tt> <a class="py-toggle" href="#" id="set_time_func_to_frame_locked-toggle" onclick="return toggle('set_time_func_to_frame_locked');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg-module.html#set_time_func_to_frame_locked">set_time_func_to_frame_locked</a><tt class="py-op">(</tt><tt class="py-op">)</tt><tt  [...]
+</div><div id="set_time_func_to_frame_locked-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="set_time_func_to_frame_locked-expanded"><a name="L220"></a><tt class="py-lineno">220</tt>  <tt class="py-line">    <tt id="link-68" class="py-name"><a title="VisionEgg.time_func" class="py-name" href="#" onclick="return doclink('link-68', 'time_func', 'link-64');">time_func</a></tt> <tt class="py-op">=</tt> <tt id="link-69" class="py-name" targets="Function VisionEgg.time_ [...]
+</div><a name="L221"></a><tt class="py-lineno">221</tt>  <tt class="py-line"> </tt>
+<a name="timing_func"></a><div id="timing_func-def"><a name="L222"></a><tt class="py-lineno">222</tt> <a class="py-toggle" href="#" id="timing_func-toggle" onclick="return toggle('timing_func');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg-module.html#timing_func">timing_func</a><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="timing_func-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="timing_func-expanded"><a name="L223"></a><tt class="py-lineno">223</tt>  <tt class="py-line">    <tt class="py-docstring">"""DEPRECATED.  Use time_func instead"""</tt> </tt>
+<a name="L224"></a><tt class="py-lineno">224</tt>  <tt class="py-line">    <tt class="py-name">warnings</tt><tt class="py-op">.</tt><tt class="py-name">warn</tt><tt class="py-op">(</tt><tt class="py-string">"timing_func() has been changed to time_func(). "</tt> </tt>
+<a name="L225"></a><tt class="py-lineno">225</tt>  <tt class="py-line">                  <tt class="py-string">"This warning will only be issued once, but each call to "</tt> </tt>
+<a name="L226"></a><tt class="py-lineno">226</tt>  <tt class="py-line">                  <tt class="py-string">"timing_func() will be slower than if you called time_func() "</tt> </tt>
+<a name="L227"></a><tt class="py-lineno">227</tt>  <tt class="py-line">                  <tt class="py-string">"directly"</tt><tt class="py-op">,</tt> <tt class="py-name">DeprecationWarning</tt><tt class="py-op">,</tt> <tt class="py-name">stacklevel</tt><tt class="py-op">=</tt><tt class="py-number">2</tt><tt class="py-op">)</tt> </tt>
+<a name="L228"></a><tt class="py-lineno">228</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt id="link-70" class="py-name"><a title="VisionEgg.time_func" class="py-name" href="#" onclick="return doclink('link-70', 'time_func', 'link-64');">time_func</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L229"></a><tt class="py-lineno">229</tt>  <tt class="py-line"> </tt>
+<a name="L230"></a><tt class="py-lineno">230</tt>  <tt class="py-line"><tt class="py-comment">####################################################################</tt> </tt>
+<a name="L231"></a><tt class="py-lineno">231</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L232"></a><tt class="py-lineno">232</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#        Parameters</tt> </tt>
+<a name="L233"></a><tt class="py-lineno">233</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L234"></a><tt class="py-lineno">234</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">####################################################################</tt> </tt>
+<a name="L235"></a><tt class="py-lineno">235</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="Parameters"></a><div id="Parameters-def"><a name="L236"></a><tt class="py-lineno">236</tt> <a class="py-toggle" href="#" id="Parameters-toggle" onclick="return toggle('Parameters');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.Parameters-class.html">Parameters</a><tt class="py-op">:</tt> </tt>
+</div><div id="Parameters-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="Parameters-expanded"><a name="L237"></a><tt class="py-lineno">237</tt>  <tt class="py-line">    <tt class="py-docstring">"""Parameter container.</tt> </tt>
+<a name="L238"></a><tt class="py-lineno">238</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L239"></a><tt class="py-lineno">239</tt>  <tt class="py-line"><tt class="py-docstring">    Simple empty class to act something like a C struct."""</tt> </tt>
+<a name="L240"></a><tt class="py-lineno">240</tt>  <tt class="py-line">    <tt class="py-keyword">pass</tt> </tt>
+</div><a name="L241"></a><tt class="py-lineno">241</tt>  <tt class="py-line"> </tt>
+<a name="ParameterDefinition"></a><div id="ParameterDefinition-def"><a name="L242"></a><tt class="py-lineno">242</tt> <a class="py-toggle" href="#" id="ParameterDefinition-toggle" onclick="return toggle('ParameterDefinition');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.ParameterDefinition-class.html">ParameterDefinition</a><tt class="py-op">(</tt> <tt class="py-base-class">dict</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ParameterDefinition-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="ParameterDefinition-expanded"><a name="L243"></a><tt class="py-lineno">243</tt>  <tt class="py-line">    <tt class="py-docstring">"""Define parameters used in ClassWithParameters</tt> </tt>
+<a name="L244"></a><tt class="py-lineno">244</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L245"></a><tt class="py-lineno">245</tt>  <tt class="py-line">    <tt id="link-71" class="py-name" targets="Variable VisionEgg.ParameterDefinition.DEPRECATED=VisionEgg.ParameterDefinition-class.html#DEPRECATED"><a title="VisionEgg.ParameterDefinition.DEPRECATED" class="py-name" href="#" onclick="return doclink('link-71', 'DEPRECATED', 'link-71');">DEPRECATED</a></tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L246"></a><tt class="py-lineno">246</tt>  <tt class="py-line">    <tt id="link-72" class="py-name" targets="Variable VisionEgg.ParameterDefinition.OPENGL_ENUM=VisionEgg.ParameterDefinition-class.html#OPENGL_ENUM"><a title="VisionEgg.ParameterDefinition.OPENGL_ENUM" class="py-name" href="#" onclick="return doclink('link-72', 'OPENGL_ENUM', 'link-72');">OPENGL_ENUM</a></tt> <tt class="py-op">=</tt> <tt class="py-number">2</tt> </tt>
+</div><a name="L247"></a><tt class="py-lineno">247</tt>  <tt class="py-line"> </tt>
+<a name="ClassWithParameters"></a><div id="ClassWithParameters-def"><a name="L248"></a><tt class="py-lineno">248</tt> <a class="py-toggle" href="#" id="ClassWithParameters-toggle" onclick="return toggle('ClassWithParameters');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a><tt class="py-op">(</tt> <tt class="py-base-class">object</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ClassWithParameters-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="ClassWithParameters-expanded"><a name="L249"></a><tt class="py-lineno">249</tt>  <tt class="py-line">    <tt class="py-docstring">"""Base class for any class that uses parameters.</tt> </tt>
+<a name="L250"></a><tt class="py-lineno">250</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L251"></a><tt class="py-lineno">251</tt>  <tt class="py-line"><tt class="py-docstring">    Any class that uses parameters potentially modifiable in realtime</tt> </tt>
+<a name="L252"></a><tt class="py-lineno">252</tt>  <tt class="py-line"><tt class="py-docstring">    should be a subclass of ClassWithParameters.  This class enforces</tt> </tt>
+<a name="L253"></a><tt class="py-lineno">253</tt>  <tt class="py-line"><tt class="py-docstring">    type checking and sets default values.</tt> </tt>
+<a name="L254"></a><tt class="py-lineno">254</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L255"></a><tt class="py-lineno">255</tt>  <tt class="py-line"><tt class="py-docstring">    Any subclass of ClassWithParameters can define two class (not</tt> </tt>
+<a name="L256"></a><tt class="py-lineno">256</tt>  <tt class="py-line"><tt class="py-docstring">    instance) attributes, "parameters_and_defaults" and</tt> </tt>
+<a name="L257"></a><tt class="py-lineno">257</tt>  <tt class="py-line"><tt class="py-docstring">    "constant_parameters_and_defaults". These are dictionaries where</tt> </tt>
+<a name="L258"></a><tt class="py-lineno">258</tt>  <tt class="py-line"><tt class="py-docstring">    the key is a string containing the name of the parameter and the</tt> </tt>
+<a name="L259"></a><tt class="py-lineno">259</tt>  <tt class="py-line"><tt class="py-docstring">    the value is a tuple of length 2 containing the default value and</tt> </tt>
+<a name="L260"></a><tt class="py-lineno">260</tt>  <tt class="py-line"><tt class="py-docstring">    the type.  For example, an acceptable dictionary would be</tt> </tt>
+<a name="L261"></a><tt class="py-lineno">261</tt>  <tt class="py-line"><tt class="py-docstring">    {"parameter1" : (1.0, ve_types.Real)}</tt> </tt>
+<a name="L262"></a><tt class="py-lineno">262</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L263"></a><tt class="py-lineno">263</tt>  <tt class="py-line"><tt class="py-docstring">    See the ParameterTypes module for more information about types.</tt> </tt>
+<a name="L264"></a><tt class="py-lineno">264</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L265"></a><tt class="py-lineno">265</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L266"></a><tt class="py-lineno">266</tt>  <tt class="py-line"> </tt>
+<a name="L267"></a><tt class="py-lineno">267</tt>  <tt class="py-line">    <tt id="link-73" class="py-name" targets="Variable VisionEgg.ClassWithParameters.parameters_and_defaults=VisionEgg.ClassWithParameters-class.html#parameters_and_defaults,Variable VisionEgg.Core.FixationSpot.parameters_and_defaults=VisionEgg.Core.FixationSpot-class.html#parameters_and_defaults,Variable VisionEgg.Core.ProjectionBaseClass.parameters_and_defaults=VisionEgg.Core.ProjectionBaseClass-class.html#parameter [...]
+VisionEgg.Core.FixationSpot.parameters_and_defaults
+VisionEgg.Core.ProjectionBaseClass.parameters_and_defaults
+VisionEgg.Core.Screen.parameters_and_defaults
+VisionEgg.Core.Viewport.parameters_and_defaults
+VisionEgg.Daq.Buffered.parameters_and_defaults
+VisionEgg.Dots.DotArea2D.parameters_and_defaults
+VisionEgg.FlowControl.Presentation.parameters_and_defaults
+VisionEgg.Gratings.AlphaGratingCommon.parameters_and_defaults
+VisionEgg.Gratings.LuminanceGratingCommon.parameters_and_defaults
+VisionEgg.Gratings.SinGrating2D.parameters_and_defaults
+VisionEgg.Gratings.SinGrating3D.parameters_and_defaults
+VisionEgg.MoreStimuli.Arrow.parameters_and_defaults
+VisionEgg.MoreStimuli.FilledCircle.parameters_and_defaults
+VisionEgg.MoreStimuli.Rectangle3D.parameters_and_defaults
+VisionEgg.MoreStimuli.Target2D.parameters_and_defaults
+VisionEgg.PyroApps.EPhysGUI.Loop.parameters_and_defaults
+VisionEgg.SphereMap.AzElGrid.parameters_and_defaults
+VisionEgg.SphereMap.SphereGrating.parameters_and_defaults
+VisionEgg.SphereMap.SphereMap.parameters_and_defaults
+VisionEgg.SphereMap.SphereWindow.parameters_and_defaults
+VisionEgg.Text.BitmapText.parameters_and_defaults
+VisionEgg.Text.GlutTextBase.parameters_and_defaults
+VisionEgg.Text.StrokeText.parameters_and_defaults
+VisionEgg.Text.Text.parameters_and_defaults
+VisionEgg.Textures.FixationCross.parameters_and_defaults
+VisionEgg.Textures.SpinningDrum.parameters_and_defaults
+VisionEgg.Textures.TextureStimulus.parameters_and_defaults
+VisionEgg.Textures.TextureStimulus3D.parameters_and_defaults
+VisionEgg.Textures.TextureStimulusBaseClass.parameters_and_defaults
+VisionEgg.WrappedText.WrappedText.parameters_and_defaults" class="py-name" href="#" onclick="return doclink('link-73', 'parameters_and_defaults', 'link-73');">parameters_and_defaults</a></tt> <tt class="py-op">=</tt> <tt id="link-74" class="py-name" targets="Class VisionEgg.ParameterDefinition=VisionEgg.ParameterDefinition-class.html"><a title="VisionEgg.ParameterDefinition" class="py-name" href="#" onclick="return doclink('link-74', 'ParameterDefinition', 'link-74');">ParameterDefinitio [...]
+<a name="L268"></a><tt class="py-lineno">268</tt>  <tt class="py-line">    <tt id="link-75" class="py-name" targets="Variable VisionEgg.ClassWithParameters.constant_parameters_and_defaults=VisionEgg.ClassWithParameters-class.html#constant_parameters_and_defaults,Variable VisionEgg.Core.Screen.constant_parameters_and_defaults=VisionEgg.Core.Screen-class.html#constant_parameters_and_defaults,Variable VisionEgg.Daq.Analog.constant_parameters_and_defaults=VisionEgg.Daq.Analog-class.html#cons [...]
+VisionEgg.Core.Screen.constant_parameters_and_defaults
+VisionEgg.Daq.Analog.constant_parameters_and_defaults
+VisionEgg.Daq.Channel.constant_parameters_and_defaults
+VisionEgg.Daq.SignalType.constant_parameters_and_defaults
+VisionEgg.Dots.DotArea2D.constant_parameters_and_defaults
+VisionEgg.SphereMap.AzElGrid.constant_parameters_and_defaults
+VisionEgg.Text.Text.constant_parameters_and_defaults
+VisionEgg.Textures.FixationCross.constant_parameters_and_defaults
+VisionEgg.Textures.Mask2D.constant_parameters_and_defaults
+VisionEgg.Textures.TextureStimulusBaseClass.constant_parameters_and_defaults
+VisionEgg.WrappedText.WrappedText.constant_parameters_and_defaults" class="py-name" href="#" onclick="return doclink('link-75', 'constant_parameters_and_defaults', 'link-75');">constant_parameters_and_defaults</a></tt> <tt class="py-op">=</tt> <tt id="link-76" class="py-name"><a title="VisionEgg.ParameterDefinition" class="py-name" href="#" onclick="return doclink('link-76', 'ParameterDefinition', 'link-74');">ParameterDefinition</a></tt><tt class="py-op">(</tt><tt class="py-op">{</tt><t [...]
+<a name="L269"></a><tt class="py-lineno">269</tt>  <tt class="py-line"> </tt>
+<a name="L270"></a><tt class="py-lineno">270</tt>  <tt class="py-line">    <tt class="py-name">__slots__</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-string">'parameters'</tt><tt class="py-op">,</tt><tt class="py-string">'constant_parameters'</tt><tt class="py-op">)</tt> <tt class="py-comment"># limit access only to specified attributes</tt> </tt>
+<a name="L271"></a><tt class="py-lineno">271</tt>  <tt class="py-line"> </tt>
+<a name="ClassWithParameters.__getstate__"></a><div id="ClassWithParameters.__getstate__-def"><a name="L272"></a><tt class="py-lineno">272</tt> <a class="py-toggle" href="#" id="ClassWithParameters.__getstate__-toggle" onclick="return toggle('ClassWithParameters.__getstate__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.ClassWithParameters-class.html#__getstate__">__getstate__</a><tt class="py-op">(</tt><tt class="py-param">self</ [...]
+</div><div id="ClassWithParameters.__getstate__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ClassWithParameters.__getstate__-expanded"><a name="L273"></a><tt class="py-lineno">273</tt>  <tt class="py-line">        <tt class="py-docstring">"""support for being pickled"""</tt> </tt>
+<a name="L274"></a><tt class="py-lineno">274</tt>  <tt class="py-line">        <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L275"></a><tt class="py-lineno">275</tt>  <tt class="py-line">        <tt class="py-name">classes</tt> <tt class="py-op">=</tt> <tt id="link-77" class="py-name"><a title="VisionEgg.recursive_base_class_finder" class="py-name" href="#" onclick="return doclink('link-77', 'recursive_base_class_finder', 'link-57');">recursive_base_class_finder</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__class__</tt><tt class="py-op">)</t [...]
+<a name="L276"></a><tt class="py-lineno">276</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">klass</tt> <tt class="py-keyword">in</tt> <tt class="py-name">classes</tt><tt class="py-op">:</tt> </tt>
+<a name="L277"></a><tt class="py-lineno">277</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt class="py-name">klass</tt><tt class="py-op">,</tt><tt class="py-string">'__slots__'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L278"></a><tt class="py-lineno">278</tt>  <tt class="py-line">                <tt class="py-keyword">for</tt> <tt class="py-name">attr</tt> <tt class="py-keyword">in</tt> <tt class="py-name">klass</tt><tt class="py-op">.</tt><tt class="py-name">__slots__</tt><tt class="py-op">:</tt> </tt>
+<a name="L279"></a><tt class="py-lineno">279</tt>  <tt class="py-line">                    <tt class="py-keyword">if</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt><tt class="py-name">attr</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L280"></a><tt class="py-lineno">280</tt>  <tt class="py-line">                        <tt class="py-name">result</tt><tt class="py-op">[</tt><tt class="py-name">attr</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">getattr</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt><tt class="py-name">attr</tt><tt class="py-op">)</tt> </tt>
+<a name="L281"></a><tt class="py-lineno">281</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">result</tt> </tt>
+</div><a name="L282"></a><tt class="py-lineno">282</tt>  <tt class="py-line"> </tt>
+<a name="ClassWithParameters.__setstate__"></a><div id="ClassWithParameters.__setstate__-def"><a name="L283"></a><tt class="py-lineno">283</tt> <a class="py-toggle" href="#" id="ClassWithParameters.__setstate__-toggle" onclick="return toggle('ClassWithParameters.__setstate__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.ClassWithParameters-class.html#__setstate__">__setstate__</a><tt class="py-op">(</tt><tt class="py-param">self</ [...]
+</div><div id="ClassWithParameters.__setstate__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ClassWithParameters.__setstate__-expanded"><a name="L284"></a><tt class="py-lineno">284</tt>  <tt class="py-line">        <tt class="py-docstring">"""support for being unpickled"""</tt> </tt>
+<a name="L285"></a><tt class="py-lineno">285</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">attr</tt> <tt class="py-keyword">in</tt> <tt class="py-name">dict</tt><tt class="py-op">.</tt><tt class="py-name">keys</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L286"></a><tt class="py-lineno">286</tt>  <tt class="py-line">            <tt class="py-name">setattr</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt><tt class="py-name">attr</tt><tt class="py-op">,</tt><tt class="py-name">dict</tt><tt class="py-op">[</tt><tt class="py-name">attr</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L287"></a><tt class="py-lineno">287</tt>  <tt class="py-line"> </tt>
+<a name="L288"></a><tt class="py-lineno">288</tt>  <tt class="py-line">    <tt id="link-78" class="py-name" targets="Variable VisionEgg.ClassWithParameters.__safe_for_unpickling__=VisionEgg.ClassWithParameters-class.html#__safe_for_unpickling__"><a title="VisionEgg.ClassWithParameters.__safe_for_unpickling__" class="py-name" href="#" onclick="return doclink('link-78', '__safe_for_unpickling__', 'link-78');">__safe_for_unpickling__</a></tt> <tt class="py-op">=</tt> <tt class="py-name">Tru [...]
+<a name="L289"></a><tt class="py-lineno">289</tt>  <tt class="py-line"> </tt>
+<a name="ClassWithParameters.__init__"></a><div id="ClassWithParameters.__init__-def"><a name="L290"></a><tt class="py-lineno">290</tt> <a class="py-toggle" href="#" id="ClassWithParameters.__init__-toggle" onclick="return toggle('ClassWithParameters.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.ClassWithParameters-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</ [...]
+</div><div id="ClassWithParameters.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ClassWithParameters.__init__-expanded"><a name="L291"></a><tt class="py-lineno">291</tt>  <tt class="py-line">        <tt class="py-docstring">"""Create self.parameters and set values."""</tt> </tt>
+<a name="L292"></a><tt class="py-lineno">292</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">constant_parameters</tt> <tt class="py-op">=</tt> <tt id="link-79" class="py-name" targets="Class VisionEgg.Parameters=VisionEgg.Parameters-class.html"><a title="VisionEgg.Parameters" class="py-name" href="#" onclick="return doclink('link-79', 'Parameters', 'link-79');">Parameters</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> < [...]
+<a name="L293"></a><tt class="py-lineno">293</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt> <tt class="py-op">=</tt> <tt id="link-80" class="py-name"><a title="VisionEgg.Parameters" class="py-name" href="#" onclick="return doclink('link-80', 'Parameters', 'link-79');">Parameters</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-comment"># create self.parameters</tt> </tt>
+<a name="L294"></a><tt class="py-lineno">294</tt>  <tt class="py-line"> </tt>
+<a name="L295"></a><tt class="py-lineno">295</tt>  <tt class="py-line">        <tt class="py-comment"># Get a list of all classes this instance is derived from</tt> </tt>
+<a name="L296"></a><tt class="py-lineno">296</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">classes</tt> <tt class="py-op">=</tt> <tt id="link-81" class="py-name"><a title="VisionEgg.recursive_base_class_finder" class="py-name" href="#" onclick="return doclink('link-81', 'recursive_base_class_finder', 'link-57');">recursive_base_class_finder</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__class_ [...]
+<a name="L297"></a><tt class="py-lineno">297</tt>  <tt class="py-line"> </tt>
+<a name="L298"></a><tt class="py-lineno">298</tt>  <tt class="py-line">        <tt class="py-name">done_constant_parameters_and_defaults</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L299"></a><tt class="py-lineno">299</tt>  <tt class="py-line">        <tt class="py-name">done_parameters_and_defaults</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L300"></a><tt class="py-lineno">300</tt>  <tt class="py-line">        <tt class="py-name">done_kw</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L301"></a><tt class="py-lineno">301</tt>  <tt class="py-line"> </tt>
+<a name="L302"></a><tt class="py-lineno">302</tt>  <tt class="py-line">        <tt class="py-comment"># Fill self.parameters with parameter names and set to default values</tt> </tt>
+<a name="L303"></a><tt class="py-lineno">303</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">for</tt> <tt class="py-name">klass</tt> <tt class="py-keyword">in</tt> <tt class="py-name">classes</tt><tt class="py-op">:</tt> </tt>
+<a name="L304"></a><tt class="py-lineno">304</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">klass</tt> <tt class="py-op">==</tt> <tt class="py-name">object</tt><tt class="py-op">:</tt> </tt>
+<a name="L305"></a><tt class="py-lineno">305</tt>  <tt class="py-line">                <tt class="py-keyword">continue</tt> <tt class="py-comment"># base class of new style classes - ignore</tt> </tt>
+<a name="L306"></a><tt class="py-lineno">306</tt>  <tt class="py-line">            <tt class="py-comment"># Create self.parameters and set values to keyword argument if found,</tt> </tt>
+<a name="L307"></a><tt class="py-lineno">307</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># otherwise to default value.</tt> </tt>
+<a name="L308"></a><tt class="py-lineno">308</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment">#</tt> </tt>
+<a name="L309"></a><tt class="py-lineno">309</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># If a class didn't override base class's parameters_and_defaults dictionary, don't deal with it twice</tt> </tt>
+<a name="L310"></a><tt class="py-lineno">310</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">if</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt class="py-name">klass</tt><tt class="py-op">,</tt> <tt class="py-string">'parameters_and_defaults'</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-name">klass</tt><tt class="py-op">.</tt><tt id="link-82" class="py-name"><a title="VisionEgg.ClassWithParameters.par [...]
+VisionEgg.Core.FixationSpot.parameters_and_defaults
+VisionEgg.Core.ProjectionBaseClass.parameters_and_defaults
+VisionEgg.Core.Screen.parameters_and_defaults
+VisionEgg.Core.Viewport.parameters_and_defaults
+VisionEgg.Daq.Buffered.parameters_and_defaults
+VisionEgg.Dots.DotArea2D.parameters_and_defaults
+VisionEgg.FlowControl.Presentation.parameters_and_defaults
+VisionEgg.Gratings.AlphaGratingCommon.parameters_and_defaults
+VisionEgg.Gratings.LuminanceGratingCommon.parameters_and_defaults
+VisionEgg.Gratings.SinGrating2D.parameters_and_defaults
+VisionEgg.Gratings.SinGrating3D.parameters_and_defaults
+VisionEgg.MoreStimuli.Arrow.parameters_and_defaults
+VisionEgg.MoreStimuli.FilledCircle.parameters_and_defaults
+VisionEgg.MoreStimuli.Rectangle3D.parameters_and_defaults
+VisionEgg.MoreStimuli.Target2D.parameters_and_defaults
+VisionEgg.PyroApps.EPhysGUI.Loop.parameters_and_defaults
+VisionEgg.SphereMap.AzElGrid.parameters_and_defaults
+VisionEgg.SphereMap.SphereGrating.parameters_and_defaults
+VisionEgg.SphereMap.SphereMap.parameters_and_defaults
+VisionEgg.SphereMap.SphereWindow.parameters_and_defaults
+VisionEgg.Text.BitmapText.parameters_and_defaults
+VisionEgg.Text.GlutTextBase.parameters_and_defaults
+VisionEgg.Text.StrokeText.parameters_and_defaults
+VisionEgg.Text.Text.parameters_and_defaults
+VisionEgg.Textures.FixationCross.parameters_and_defaults
+VisionEgg.Textures.SpinningDrum.parameters_and_defaults
+VisionEgg.Textures.TextureStimulus.parameters_and_defaults
+VisionEgg.Textures.TextureStimulus3D.parameters_and_defaults
+VisionEgg.Textures.TextureStimulusBaseClass.parameters_and_defaults
+VisionEgg.WrappedText.WrappedText.parameters_and_defaults" class="py-name" href="#" onclick="return doclink('link-82', 'parameters_and_defaults', 'link-73');">parameters_and_defaults</a></tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">done_parameters_and_defaults</tt><tt class="py-op">:</tt> </tt>
+<a name="L311"></a><tt class="py-lineno">311</tt>  <tt class="py-line">                <tt class="py-keyword">for</tt> <tt class="py-name">parameter_name</tt> <tt class="py-keyword">in</tt> <tt class="py-name">klass</tt><tt class="py-op">.</tt><tt id="link-83" class="py-name"><a title="VisionEgg.ClassWithParameters.parameters_and_defaults
+VisionEgg.Core.FixationSpot.parameters_and_defaults
+VisionEgg.Core.ProjectionBaseClass.parameters_and_defaults
+VisionEgg.Core.Screen.parameters_and_defaults
+VisionEgg.Core.Viewport.parameters_and_defaults
+VisionEgg.Daq.Buffered.parameters_and_defaults
+VisionEgg.Dots.DotArea2D.parameters_and_defaults
+VisionEgg.FlowControl.Presentation.parameters_and_defaults
+VisionEgg.Gratings.AlphaGratingCommon.parameters_and_defaults
+VisionEgg.Gratings.LuminanceGratingCommon.parameters_and_defaults
+VisionEgg.Gratings.SinGrating2D.parameters_and_defaults
+VisionEgg.Gratings.SinGrating3D.parameters_and_defaults
+VisionEgg.MoreStimuli.Arrow.parameters_and_defaults
+VisionEgg.MoreStimuli.FilledCircle.parameters_and_defaults
+VisionEgg.MoreStimuli.Rectangle3D.parameters_and_defaults
+VisionEgg.MoreStimuli.Target2D.parameters_and_defaults
+VisionEgg.PyroApps.EPhysGUI.Loop.parameters_and_defaults
+VisionEgg.SphereMap.AzElGrid.parameters_and_defaults
+VisionEgg.SphereMap.SphereGrating.parameters_and_defaults
+VisionEgg.SphereMap.SphereMap.parameters_and_defaults
+VisionEgg.SphereMap.SphereWindow.parameters_and_defaults
+VisionEgg.Text.BitmapText.parameters_and_defaults
+VisionEgg.Text.GlutTextBase.parameters_and_defaults
+VisionEgg.Text.StrokeText.parameters_and_defaults
+VisionEgg.Text.Text.parameters_and_defaults
+VisionEgg.Textures.FixationCross.parameters_and_defaults
+VisionEgg.Textures.SpinningDrum.parameters_and_defaults
+VisionEgg.Textures.TextureStimulus.parameters_and_defaults
+VisionEgg.Textures.TextureStimulus3D.parameters_and_defaults
+VisionEgg.Textures.TextureStimulusBaseClass.parameters_and_defaults
+VisionEgg.WrappedText.WrappedText.parameters_and_defaults" class="py-name" href="#" onclick="return doclink('link-83', 'parameters_and_defaults', 'link-73');">parameters_and_defaults</a></tt><tt class="py-op">.</tt><tt class="py-name">keys</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L312"></a><tt class="py-lineno">312</tt>  <tt class="py-line">                    <tt class="py-comment"># Make sure this parameter key/value pair doesn't exist already</tt> </tt>
+<a name="L313"></a><tt class="py-lineno">313</tt>  <tt class="py-line"><tt class="py-comment"></tt>                    <tt class="py-keyword">if</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">,</tt><tt class="py-name">parameter_name</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L314"></a><tt class="py-lineno">314</tt>  <tt class="py-line">                        <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">"More than one definition of parameter '%s'"</tt><tt class="py-op">%</tt><tt class="py-name">parameter_name</tt><tt class="py-op">)</tt> </tt>
+<a name="L315"></a><tt class="py-lineno">315</tt>  <tt class="py-line">                    <tt class="py-comment"># Get default value and the type</tt> </tt>
+<a name="L316"></a><tt class="py-lineno">316</tt>  <tt class="py-line"><tt class="py-comment"></tt>                    <tt class="py-name">value</tt><tt class="py-op">,</tt><tt class="py-name">tipe</tt> <tt class="py-op">=</tt> <tt class="py-name">klass</tt><tt class="py-op">.</tt><tt id="link-84" class="py-name"><a title="VisionEgg.ClassWithParameters.parameters_and_defaults
+VisionEgg.Core.FixationSpot.parameters_and_defaults
+VisionEgg.Core.ProjectionBaseClass.parameters_and_defaults
+VisionEgg.Core.Screen.parameters_and_defaults
+VisionEgg.Core.Viewport.parameters_and_defaults
+VisionEgg.Daq.Buffered.parameters_and_defaults
+VisionEgg.Dots.DotArea2D.parameters_and_defaults
+VisionEgg.FlowControl.Presentation.parameters_and_defaults
+VisionEgg.Gratings.AlphaGratingCommon.parameters_and_defaults
+VisionEgg.Gratings.LuminanceGratingCommon.parameters_and_defaults
+VisionEgg.Gratings.SinGrating2D.parameters_and_defaults
+VisionEgg.Gratings.SinGrating3D.parameters_and_defaults
+VisionEgg.MoreStimuli.Arrow.parameters_and_defaults
+VisionEgg.MoreStimuli.FilledCircle.parameters_and_defaults
+VisionEgg.MoreStimuli.Rectangle3D.parameters_and_defaults
+VisionEgg.MoreStimuli.Target2D.parameters_and_defaults
+VisionEgg.PyroApps.EPhysGUI.Loop.parameters_and_defaults
+VisionEgg.SphereMap.AzElGrid.parameters_and_defaults
+VisionEgg.SphereMap.SphereGrating.parameters_and_defaults
+VisionEgg.SphereMap.SphereMap.parameters_and_defaults
+VisionEgg.SphereMap.SphereWindow.parameters_and_defaults
+VisionEgg.Text.BitmapText.parameters_and_defaults
+VisionEgg.Text.GlutTextBase.parameters_and_defaults
+VisionEgg.Text.StrokeText.parameters_and_defaults
+VisionEgg.Text.Text.parameters_and_defaults
+VisionEgg.Textures.FixationCross.parameters_and_defaults
+VisionEgg.Textures.SpinningDrum.parameters_and_defaults
+VisionEgg.Textures.TextureStimulus.parameters_and_defaults
+VisionEgg.Textures.TextureStimulus3D.parameters_and_defaults
+VisionEgg.Textures.TextureStimulusBaseClass.parameters_and_defaults
+VisionEgg.WrappedText.WrappedText.parameters_and_defaults" class="py-name" href="#" onclick="return doclink('link-84', 'parameters_and_defaults', 'link-73');">parameters_and_defaults</a></tt><tt class="py-op">[</tt><tt class="py-name">parameter_name</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-number">2</tt><tt class="py-op">]</tt> </tt>
+<a name="L317"></a><tt class="py-lineno">317</tt>  <tt class="py-line">                    <tt class="py-comment"># Check tipe is valid</tt> </tt>
+<a name="L318"></a><tt class="py-lineno">318</tt>  <tt class="py-line"><tt class="py-comment"></tt>                    <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-85" class="py-name" targets="Function VisionEgg.ParameterTypes.is_parameter_type_def()=VisionEgg.ParameterTypes-module.html#is_parameter_type_def"><a title="VisionEgg.ParameterTypes.is_parameter_type_def" class="py-name" href="#" onclick="r [...]
+<a name="L319"></a><tt class="py-lineno">319</tt>  <tt class="py-line">                        <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">"In definition of parameter '%s', %s is not a valid type declaration."</tt><tt class="py-op">%</tt><tt class="py-op">(</tt><tt class="py-name">parameter_name</tt><tt class="py-op">,</tt><tt class="py-name">tipe</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L320"></a><tt class="py-lineno">320</tt>  <tt class="py-line">                    <tt class="py-comment"># Was a non-default value passed for this parameter?</tt> </tt>
+<a name="L321"></a><tt class="py-lineno">321</tt>  <tt class="py-line"><tt class="py-comment"></tt>                    <tt class="py-keyword">if</tt> <tt class="py-name">kw</tt><tt class="py-op">.</tt><tt class="py-name">has_key</tt><tt class="py-op">(</tt><tt class="py-name">parameter_name</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L322"></a><tt class="py-lineno">322</tt>  <tt class="py-line">                        <tt class="py-name">value</tt> <tt class="py-op">=</tt> <tt class="py-name">kw</tt><tt class="py-op">[</tt><tt class="py-name">parameter_name</tt><tt class="py-op">]</tt> </tt>
+<a name="L323"></a><tt class="py-lineno">323</tt>  <tt class="py-line">                        <tt class="py-name">done_kw</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">parameter_name</tt><tt class="py-op">)</tt> </tt>
+<a name="L324"></a><tt class="py-lineno">324</tt>  <tt class="py-line">                    <tt class="py-comment"># Allow None to pass as acceptable value -- lets __init__ set own defaults</tt> </tt>
+<a name="L325"></a><tt class="py-lineno">325</tt>  <tt class="py-line"><tt class="py-comment"></tt>                    <tt class="py-keyword">if</tt> <tt class="py-name">value</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L326"></a><tt class="py-lineno">326</tt>  <tt class="py-line">                        <tt class="py-comment"># Check anything other than None</tt> </tt>
+<a name="L327"></a><tt class="py-lineno">327</tt>  <tt class="py-line"><tt class="py-comment"></tt>                        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">tipe</tt><tt class="py-op">.</tt><tt id="link-86" class="py-name" targets="Static Method VisionEgg.ParameterTypes.AnyClass.verify()=VisionEgg.ParameterTypes.AnyClass-class.html#verify,Method VisionEgg.ParameterTypes.AnyOf.verify()=VisionEgg.ParameterTypes.AnyOf-class.html#verify,Static [...]
+VisionEgg.ParameterTypes.AnyOf.verify
+VisionEgg.ParameterTypes.Boolean.verify
+VisionEgg.ParameterTypes.Callable.verify
+VisionEgg.ParameterTypes.Instance.verify
+VisionEgg.ParameterTypes.Integer.verify
+VisionEgg.ParameterTypes.NoneType.verify
+VisionEgg.ParameterTypes.ParameterTypeDef.verify
+VisionEgg.ParameterTypes.Real.verify
+VisionEgg.ParameterTypes.Sequence.verify
+VisionEgg.ParameterTypes.Sequence2.verify
+VisionEgg.ParameterTypes.Sequence3.verify
+VisionEgg.ParameterTypes.Sequence4.verify
+VisionEgg.ParameterTypes.Sequence4x4.verify
+VisionEgg.ParameterTypes.String.verify
+VisionEgg.ParameterTypes.SubClass.verify
+VisionEgg.ParameterTypes.Unicode.verify
+VisionEgg.ParameterTypes.UnsignedInteger.verify" class="py-name" href="#" onclick="return doclink('link-86', 'verify', 'link-86');">verify</a></tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L328"></a><tt class="py-lineno">328</tt>  <tt class="py-line">                            <tt class="py-keyword">print</tt> <tt class="py-string">'parameter_name'</tt><tt class="py-op">,</tt><tt class="py-name">parameter_name</tt> </tt>
+<a name="L329"></a><tt class="py-lineno">329</tt>  <tt class="py-line">                            <tt class="py-keyword">print</tt> <tt class="py-string">'value'</tt><tt class="py-op">,</tt><tt class="py-name">value</tt> </tt>
+<a name="L330"></a><tt class="py-lineno">330</tt>  <tt class="py-line">                            <tt class="py-keyword">print</tt> <tt class="py-string">'type value'</tt><tt class="py-op">,</tt><tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">)</tt> </tt>
+<a name="L331"></a><tt class="py-lineno">331</tt>  <tt class="py-line">                            <tt class="py-keyword">print</tt> <tt class="py-string">'isinstance(value, numpy.ndarray)'</tt><tt class="py-op">,</tt><tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">,</tt> <tt class="py-name">numpy</tt><tt class="py-op">.</tt><tt class="py-name">ndarray</tt><tt class="py-op">)</tt> </tt>
+<a name="L332"></a><tt class="py-lineno">332</tt>  <tt class="py-line">                            <tt class="py-keyword">print</tt> <tt class="py-string">'tipe'</tt><tt class="py-op">,</tt><tt class="py-name">tipe</tt> </tt>
+<a name="L333"></a><tt class="py-lineno">333</tt>  <tt class="py-line"> </tt>
+<a name="L334"></a><tt class="py-lineno">334</tt>  <tt class="py-line">                            <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">,</tt> <tt class="py-name">numpy</tt><tt class="py-op">.</tt><tt class="py-name">ndarray</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L335"></a><tt class="py-lineno">335</tt>  <tt class="py-line">                                <tt class="py-name">value_str</tt> <tt class="py-op">=</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">)</tt> </tt>
+<a name="L336"></a><tt class="py-lineno">336</tt>  <tt class="py-line">                            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L337"></a><tt class="py-lineno">337</tt>  <tt class="py-line">                                <tt class="py-keyword">if</tt> <tt class="py-name">Numeric</tt><tt class="py-op">.</tt><tt class="py-name">multiply</tt><tt class="py-op">.</tt><tt class="py-name">reduce</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">.</tt><tt class="py-name">shape</tt><tt class="py-op">)</tt> <tt class="py-op"><</tt> <tt class="py-number">10</tt><tt class="py-op">:</tt> </tt>
+<a name="L338"></a><tt class="py-lineno">338</tt>  <tt class="py-line">                                    <tt class="py-name">value_str</tt> <tt class="py-op">=</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">)</tt> <tt class="py-comment"># print array if it's smallish</tt> </tt>
+<a name="L339"></a><tt class="py-lineno">339</tt>  <tt class="py-line">                                <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L340"></a><tt class="py-lineno">340</tt>  <tt class="py-line">                                    <tt class="py-name">value_str</tt> <tt class="py-op">=</tt> <tt class="py-string">"(array data)"</tt> <tt class="py-comment"># don't pring if it's big</tt> </tt>
+<a name="L341"></a><tt class="py-lineno">341</tt>  <tt class="py-line">                            <tt class="py-keyword">raise</tt> <tt class="py-name">TypeError</tt><tt class="py-op">(</tt><tt class="py-string">"Parameter '%s' value %s is type %s (not type %s) in %s"</tt><tt class="py-op">%</tt><tt class="py-op">(</tt><tt class="py-name">parameter_name</tt><tt class="py-op">,</tt><tt class="py-name">value_str</tt><tt class="py-op">,</tt><tt class="py-name">type</tt><tt class="py-op">(< [...]
+<a name="L342"></a><tt class="py-lineno">342</tt>  <tt class="py-line">                    <tt class="py-name">setattr</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">,</tt><tt class="py-name">parameter_name</tt><tt class="py-op">,</tt><tt class="py-name">value</tt><tt class="py-op">)</tt> </tt>
+<a name="L343"></a><tt class="py-lineno">343</tt>  <tt class="py-line">                <tt class="py-name">done_parameters_and_defaults</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">klass</tt><tt class="py-op">.</tt><tt id="link-87" class="py-name"><a title="VisionEgg.ClassWithParameters.parameters_and_defaults
+VisionEgg.Core.FixationSpot.parameters_and_defaults
+VisionEgg.Core.ProjectionBaseClass.parameters_and_defaults
+VisionEgg.Core.Screen.parameters_and_defaults
+VisionEgg.Core.Viewport.parameters_and_defaults
+VisionEgg.Daq.Buffered.parameters_and_defaults
+VisionEgg.Dots.DotArea2D.parameters_and_defaults
+VisionEgg.FlowControl.Presentation.parameters_and_defaults
+VisionEgg.Gratings.AlphaGratingCommon.parameters_and_defaults
+VisionEgg.Gratings.LuminanceGratingCommon.parameters_and_defaults
+VisionEgg.Gratings.SinGrating2D.parameters_and_defaults
+VisionEgg.Gratings.SinGrating3D.parameters_and_defaults
+VisionEgg.MoreStimuli.Arrow.parameters_and_defaults
+VisionEgg.MoreStimuli.FilledCircle.parameters_and_defaults
+VisionEgg.MoreStimuli.Rectangle3D.parameters_and_defaults
+VisionEgg.MoreStimuli.Target2D.parameters_and_defaults
+VisionEgg.PyroApps.EPhysGUI.Loop.parameters_and_defaults
+VisionEgg.SphereMap.AzElGrid.parameters_and_defaults
+VisionEgg.SphereMap.SphereGrating.parameters_and_defaults
+VisionEgg.SphereMap.SphereMap.parameters_and_defaults
+VisionEgg.SphereMap.SphereWindow.parameters_and_defaults
+VisionEgg.Text.BitmapText.parameters_and_defaults
+VisionEgg.Text.GlutTextBase.parameters_and_defaults
+VisionEgg.Text.StrokeText.parameters_and_defaults
+VisionEgg.Text.Text.parameters_and_defaults
+VisionEgg.Textures.FixationCross.parameters_and_defaults
+VisionEgg.Textures.SpinningDrum.parameters_and_defaults
+VisionEgg.Textures.TextureStimulus.parameters_and_defaults
+VisionEgg.Textures.TextureStimulus3D.parameters_and_defaults
+VisionEgg.Textures.TextureStimulusBaseClass.parameters_and_defaults
+VisionEgg.WrappedText.WrappedText.parameters_and_defaults" class="py-name" href="#" onclick="return doclink('link-87', 'parameters_and_defaults', 'link-73');">parameters_and_defaults</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L344"></a><tt class="py-lineno">344</tt>  <tt class="py-line"> </tt>
+<a name="L345"></a><tt class="py-lineno">345</tt>  <tt class="py-line">            <tt class="py-comment"># Same thing as above for self.constant_parameters:</tt> </tt>
+<a name="L346"></a><tt class="py-lineno">346</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment">#</tt> </tt>
+<a name="L347"></a><tt class="py-lineno">347</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># Create self.constant_parameters and set values to keyword argument if found,</tt> </tt>
+<a name="L348"></a><tt class="py-lineno">348</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># otherwise to default value.</tt> </tt>
+<a name="L349"></a><tt class="py-lineno">349</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment">#</tt> </tt>
+<a name="L350"></a><tt class="py-lineno">350</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># If a class didn't override base class's parameters_and_defaults dictionary, don't deal with it twice</tt> </tt>
+<a name="L351"></a><tt class="py-lineno">351</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">if</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt class="py-name">klass</tt><tt class="py-op">,</tt> <tt class="py-string">'constant_parameters_and_defaults'</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-name">klass</tt><tt class="py-op">.</tt><tt id="link-88" class="py-name"><a title="VisionEgg.ClassWithParam [...]
+VisionEgg.Core.Screen.constant_parameters_and_defaults
+VisionEgg.Daq.Analog.constant_parameters_and_defaults
+VisionEgg.Daq.Channel.constant_parameters_and_defaults
+VisionEgg.Daq.SignalType.constant_parameters_and_defaults
+VisionEgg.Dots.DotArea2D.constant_parameters_and_defaults
+VisionEgg.SphereMap.AzElGrid.constant_parameters_and_defaults
+VisionEgg.Text.Text.constant_parameters_and_defaults
+VisionEgg.Textures.FixationCross.constant_parameters_and_defaults
+VisionEgg.Textures.Mask2D.constant_parameters_and_defaults
+VisionEgg.Textures.TextureStimulusBaseClass.constant_parameters_and_defaults
+VisionEgg.WrappedText.WrappedText.constant_parameters_and_defaults" class="py-name" href="#" onclick="return doclink('link-88', 'constant_parameters_and_defaults', 'link-75');">constant_parameters_and_defaults</a></tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">done_constant_parameters_and_defaults</tt><tt class="py-op">:</tt> </tt>
+<a name="L352"></a><tt class="py-lineno">352</tt>  <tt class="py-line">                <tt class="py-keyword">for</tt> <tt class="py-name">parameter_name</tt> <tt class="py-keyword">in</tt> <tt class="py-name">klass</tt><tt class="py-op">.</tt><tt id="link-89" class="py-name"><a title="VisionEgg.ClassWithParameters.constant_parameters_and_defaults
+VisionEgg.Core.Screen.constant_parameters_and_defaults
+VisionEgg.Daq.Analog.constant_parameters_and_defaults
+VisionEgg.Daq.Channel.constant_parameters_and_defaults
+VisionEgg.Daq.SignalType.constant_parameters_and_defaults
+VisionEgg.Dots.DotArea2D.constant_parameters_and_defaults
+VisionEgg.SphereMap.AzElGrid.constant_parameters_and_defaults
+VisionEgg.Text.Text.constant_parameters_and_defaults
+VisionEgg.Textures.FixationCross.constant_parameters_and_defaults
+VisionEgg.Textures.Mask2D.constant_parameters_and_defaults
+VisionEgg.Textures.TextureStimulusBaseClass.constant_parameters_and_defaults
+VisionEgg.WrappedText.WrappedText.constant_parameters_and_defaults" class="py-name" href="#" onclick="return doclink('link-89', 'constant_parameters_and_defaults', 'link-75');">constant_parameters_and_defaults</a></tt><tt class="py-op">.</tt><tt class="py-name">keys</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L353"></a><tt class="py-lineno">353</tt>  <tt class="py-line">                    <tt class="py-comment"># Make sure this parameter key/value pair doesn't exist already</tt> </tt>
+<a name="L354"></a><tt class="py-lineno">354</tt>  <tt class="py-line"><tt class="py-comment"></tt>                    <tt class="py-keyword">if</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">,</tt><tt class="py-name">parameter_name</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L355"></a><tt class="py-lineno">355</tt>  <tt class="py-line">                        <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">"Definition of '%s' as variable parameter and constant parameter."</tt><tt class="py-op">%</tt><tt class="py-name">parameter_name</tt><tt class="py-op">)</tt> </tt>
+<a name="L356"></a><tt class="py-lineno">356</tt>  <tt class="py-line">                    <tt class="py-keyword">if</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">constant_parameters</tt><tt class="py-op">,</tt><tt class="py-name">parameter_name</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L357"></a><tt class="py-lineno">357</tt>  <tt class="py-line">                        <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">"More than one definition of constant parameter '%s'"</tt><tt class="py-op">%</tt><tt class="py-name">parameter_name</tt><tt class="py-op">)</tt> </tt>
+<a name="L358"></a><tt class="py-lineno">358</tt>  <tt class="py-line">                    <tt class="py-comment"># Get default value and the type</tt> </tt>
+<a name="L359"></a><tt class="py-lineno">359</tt>  <tt class="py-line"><tt class="py-comment"></tt>                    <tt class="py-name">value</tt><tt class="py-op">,</tt><tt class="py-name">tipe</tt> <tt class="py-op">=</tt> <tt class="py-name">klass</tt><tt class="py-op">.</tt><tt id="link-90" class="py-name"><a title="VisionEgg.ClassWithParameters.constant_parameters_and_defaults
+VisionEgg.Core.Screen.constant_parameters_and_defaults
+VisionEgg.Daq.Analog.constant_parameters_and_defaults
+VisionEgg.Daq.Channel.constant_parameters_and_defaults
+VisionEgg.Daq.SignalType.constant_parameters_and_defaults
+VisionEgg.Dots.DotArea2D.constant_parameters_and_defaults
+VisionEgg.SphereMap.AzElGrid.constant_parameters_and_defaults
+VisionEgg.Text.Text.constant_parameters_and_defaults
+VisionEgg.Textures.FixationCross.constant_parameters_and_defaults
+VisionEgg.Textures.Mask2D.constant_parameters_and_defaults
+VisionEgg.Textures.TextureStimulusBaseClass.constant_parameters_and_defaults
+VisionEgg.WrappedText.WrappedText.constant_parameters_and_defaults" class="py-name" href="#" onclick="return doclink('link-90', 'constant_parameters_and_defaults', 'link-75');">constant_parameters_and_defaults</a></tt><tt class="py-op">[</tt><tt class="py-name">parameter_name</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-number">2</tt><tt class="py-op">]</tt> </tt>
+<a name="L360"></a><tt class="py-lineno">360</tt>  <tt class="py-line"> </tt>
+<a name="L361"></a><tt class="py-lineno">361</tt>  <tt class="py-line">                    <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-91" class="py-name"><a title="VisionEgg.ParameterTypes.is_parameter_type_def" class="py-name" href="#" onclick="return doclink('link-91', 'is_parameter_type_def', 'link-85');">is_parameter_type_def</a></tt><tt class="py-op">(</tt><tt class="py-name">tipe</tt><tt class [...]
+<a name="L362"></a><tt class="py-lineno">362</tt>  <tt class="py-line">                        <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">"In definition of constant parameter '%s', %s is not a valid type declaration."</tt><tt class="py-op">%</tt><tt class="py-op">(</tt><tt class="py-name">parameter_name</tt><tt class="py-op">,</tt><tt class="py-name">tipe</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L363"></a><tt class="py-lineno">363</tt>  <tt class="py-line">                    <tt class="py-comment"># Was a non-default value passed for this parameter?</tt> </tt>
+<a name="L364"></a><tt class="py-lineno">364</tt>  <tt class="py-line"><tt class="py-comment"></tt>                    <tt class="py-keyword">if</tt> <tt class="py-name">kw</tt><tt class="py-op">.</tt><tt class="py-name">has_key</tt><tt class="py-op">(</tt><tt class="py-name">parameter_name</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L365"></a><tt class="py-lineno">365</tt>  <tt class="py-line">                        <tt class="py-name">value</tt> <tt class="py-op">=</tt> <tt class="py-name">kw</tt><tt class="py-op">[</tt><tt class="py-name">parameter_name</tt><tt class="py-op">]</tt> </tt>
+<a name="L366"></a><tt class="py-lineno">366</tt>  <tt class="py-line">                        <tt class="py-name">done_kw</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">parameter_name</tt><tt class="py-op">)</tt> </tt>
+<a name="L367"></a><tt class="py-lineno">367</tt>  <tt class="py-line">                    <tt class="py-comment"># Allow None to pass as acceptable value -- lets __init__ set own default</tt> </tt>
+<a name="L368"></a><tt class="py-lineno">368</tt>  <tt class="py-line"><tt class="py-comment"></tt>                    <tt class="py-keyword">if</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">)</tt> <tt class="py-op">!=</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L369"></a><tt class="py-lineno">369</tt>  <tt class="py-line">                        <tt class="py-comment"># Check anything other than None</tt> </tt>
+<a name="L370"></a><tt class="py-lineno">370</tt>  <tt class="py-line"><tt class="py-comment"></tt>                        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">tipe</tt><tt class="py-op">.</tt><tt id="link-92" class="py-name"><a title="VisionEgg.ParameterTypes.AnyClass.verify
+VisionEgg.ParameterTypes.AnyOf.verify
+VisionEgg.ParameterTypes.Boolean.verify
+VisionEgg.ParameterTypes.Callable.verify
+VisionEgg.ParameterTypes.Instance.verify
+VisionEgg.ParameterTypes.Integer.verify
+VisionEgg.ParameterTypes.NoneType.verify
+VisionEgg.ParameterTypes.ParameterTypeDef.verify
+VisionEgg.ParameterTypes.Real.verify
+VisionEgg.ParameterTypes.Sequence.verify
+VisionEgg.ParameterTypes.Sequence2.verify
+VisionEgg.ParameterTypes.Sequence3.verify
+VisionEgg.ParameterTypes.Sequence4.verify
+VisionEgg.ParameterTypes.Sequence4x4.verify
+VisionEgg.ParameterTypes.String.verify
+VisionEgg.ParameterTypes.SubClass.verify
+VisionEgg.ParameterTypes.Unicode.verify
+VisionEgg.ParameterTypes.UnsignedInteger.verify" class="py-name" href="#" onclick="return doclink('link-92', 'verify', 'link-86');">verify</a></tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L371"></a><tt class="py-lineno">371</tt>  <tt class="py-line">                            <tt class="py-keyword">if</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">)</tt> <tt class="py-op">!=</tt> <tt class="py-name">Numeric</tt><tt class="py-op">.</tt><tt class="py-name">ArrayType</tt><tt class="py-op">:</tt> </tt>
+<a name="L372"></a><tt class="py-lineno">372</tt>  <tt class="py-line">                                <tt class="py-name">value_str</tt> <tt class="py-op">=</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">)</tt> </tt>
+<a name="L373"></a><tt class="py-lineno">373</tt>  <tt class="py-line">                            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L374"></a><tt class="py-lineno">374</tt>  <tt class="py-line">                                <tt class="py-keyword">if</tt> <tt class="py-name">Numeric</tt><tt class="py-op">.</tt><tt class="py-name">multiply</tt><tt class="py-op">.</tt><tt class="py-name">reduce</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">.</tt><tt class="py-name">shape</tt><tt class="py-op">)</tt> <tt class="py-op"><</tt> <tt class="py-number">10</tt><tt class="py-op">:</tt> </tt>
+<a name="L375"></a><tt class="py-lineno">375</tt>  <tt class="py-line">                                    <tt class="py-name">value_str</tt> <tt class="py-op">=</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">)</tt> <tt class="py-comment"># print array if it's smallish</tt> </tt>
+<a name="L376"></a><tt class="py-lineno">376</tt>  <tt class="py-line">                                <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L377"></a><tt class="py-lineno">377</tt>  <tt class="py-line">                                    <tt class="py-name">value_str</tt> <tt class="py-op">=</tt> <tt class="py-string">"(array data)"</tt> <tt class="py-comment"># don't pring if it's big</tt> </tt>
+<a name="L378"></a><tt class="py-lineno">378</tt>  <tt class="py-line">                            <tt class="py-keyword">raise</tt> <tt class="py-name">TypeError</tt><tt class="py-op">(</tt><tt class="py-string">"Constant parameter '%s' value %s is type %s (not type %s) in %s"</tt><tt class="py-op">%</tt><tt class="py-op">(</tt><tt class="py-name">parameter_name</tt><tt class="py-op">,</tt><tt class="py-name">value_str</tt><tt class="py-op">,</tt><tt class="py-name">type</tt><tt class=" [...]
+<a name="L379"></a><tt class="py-lineno">379</tt>  <tt class="py-line">                    <tt class="py-name">setattr</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">constant_parameters</tt><tt class="py-op">,</tt><tt class="py-name">parameter_name</tt><tt class="py-op">,</tt><tt class="py-name">value</tt><tt class="py-op">)</tt> </tt>
+<a name="L380"></a><tt class="py-lineno">380</tt>  <tt class="py-line">                <tt class="py-name">done_constant_parameters_and_defaults</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">klass</tt><tt class="py-op">.</tt><tt id="link-93" class="py-name"><a title="VisionEgg.ClassWithParameters.constant_parameters_and_defaults
+VisionEgg.Core.Screen.constant_parameters_and_defaults
+VisionEgg.Daq.Analog.constant_parameters_and_defaults
+VisionEgg.Daq.Channel.constant_parameters_and_defaults
+VisionEgg.Daq.SignalType.constant_parameters_and_defaults
+VisionEgg.Dots.DotArea2D.constant_parameters_and_defaults
+VisionEgg.SphereMap.AzElGrid.constant_parameters_and_defaults
+VisionEgg.Text.Text.constant_parameters_and_defaults
+VisionEgg.Textures.FixationCross.constant_parameters_and_defaults
+VisionEgg.Textures.Mask2D.constant_parameters_and_defaults
+VisionEgg.Textures.TextureStimulusBaseClass.constant_parameters_and_defaults
+VisionEgg.WrappedText.WrappedText.constant_parameters_and_defaults" class="py-name" href="#" onclick="return doclink('link-93', 'constant_parameters_and_defaults', 'link-75');">constant_parameters_and_defaults</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L381"></a><tt class="py-lineno">381</tt>  <tt class="py-line"> </tt>
+<a name="L382"></a><tt class="py-lineno">382</tt>  <tt class="py-line">        <tt class="py-comment"># Set self.parameters to the value in "kw"</tt> </tt>
+<a name="L383"></a><tt class="py-lineno">383</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">for</tt> <tt class="py-name">kw_parameter_name</tt> <tt class="py-keyword">in</tt> <tt class="py-name">kw</tt><tt class="py-op">.</tt><tt class="py-name">keys</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L384"></a><tt class="py-lineno">384</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">kw_parameter_name</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">done_kw</tt><tt class="py-op">:</tt> </tt>
+<a name="L385"></a><tt class="py-lineno">385</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">"parameter '%s' passed as keyword argument, but not specified by %s (or subclasses) as potential parameter"</tt><tt class="py-op">%</tt><tt class="py-op">(</tt><tt class="py-name">kw_parameter_name</tt><tt class="py-op">,</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class=" [...]
+</div><a name="L386"></a><tt class="py-lineno">386</tt>  <tt class="py-line"> </tt>
+<a name="ClassWithParameters.is_constant_parameter"></a><div id="ClassWithParameters.is_constant_parameter-def"><a name="L387"></a><tt class="py-lineno">387</tt> <a class="py-toggle" href="#" id="ClassWithParameters.is_constant_parameter-toggle" onclick="return toggle('ClassWithParameters.is_constant_parameter');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.ClassWithParameters-class.html#is_constant_parameter">is_constant_parameter< [...]
+</div><div id="ClassWithParameters.is_constant_parameter-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ClassWithParameters.is_constant_parameter-expanded"><a name="L388"></a><tt class="py-lineno">388</tt>  <tt class="py-line">        <tt class="py-comment"># Get a list of all classes this instance is derived from</tt> </tt>
+<a name="L389"></a><tt class="py-lineno">389</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">classes</tt> <tt class="py-op">=</tt> <tt id="link-94" class="py-name"><a title="VisionEgg.recursive_base_class_finder" class="py-name" href="#" onclick="return doclink('link-94', 'recursive_base_class_finder', 'link-57');">recursive_base_class_finder</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__class_ [...]
+<a name="L390"></a><tt class="py-lineno">390</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">klass</tt> <tt class="py-keyword">in</tt> <tt class="py-name">classes</tt><tt class="py-op">:</tt> </tt>
+<a name="L391"></a><tt class="py-lineno">391</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">klass</tt> <tt class="py-op">==</tt> <tt class="py-name">object</tt><tt class="py-op">:</tt> </tt>
+<a name="L392"></a><tt class="py-lineno">392</tt>  <tt class="py-line">                <tt class="py-keyword">continue</tt> <tt class="py-comment"># base class of new style classes - ignore</tt> </tt>
+<a name="L393"></a><tt class="py-lineno">393</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">klass</tt><tt class="py-op">.</tt><tt id="link-95" class="py-name"><a title="VisionEgg.ClassWithParameters.constant_parameters_and_defaults
+VisionEgg.Core.Screen.constant_parameters_and_defaults
+VisionEgg.Daq.Analog.constant_parameters_and_defaults
+VisionEgg.Daq.Channel.constant_parameters_and_defaults
+VisionEgg.Daq.SignalType.constant_parameters_and_defaults
+VisionEgg.Dots.DotArea2D.constant_parameters_and_defaults
+VisionEgg.SphereMap.AzElGrid.constant_parameters_and_defaults
+VisionEgg.Text.Text.constant_parameters_and_defaults
+VisionEgg.Textures.FixationCross.constant_parameters_and_defaults
+VisionEgg.Textures.Mask2D.constant_parameters_and_defaults
+VisionEgg.Textures.TextureStimulusBaseClass.constant_parameters_and_defaults
+VisionEgg.WrappedText.WrappedText.constant_parameters_and_defaults" class="py-name" href="#" onclick="return doclink('link-95', 'constant_parameters_and_defaults', 'link-75');">constant_parameters_and_defaults</a></tt><tt class="py-op">.</tt><tt class="py-name">has_key</tt><tt class="py-op">(</tt><tt class="py-name">parameter_name</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L394"></a><tt class="py-lineno">394</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-name">True</tt> </tt>
+<a name="L395"></a><tt class="py-lineno">395</tt>  <tt class="py-line">        <tt class="py-comment"># The for loop only completes if parameter_name is not in any subclass</tt> </tt>
+<a name="L396"></a><tt class="py-lineno">396</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">return</tt> <tt class="py-name">False</tt> </tt>
+</div><a name="L397"></a><tt class="py-lineno">397</tt>  <tt class="py-line"> </tt>
+<a name="ClassWithParameters.get_specified_type"></a><div id="ClassWithParameters.get_specified_type-def"><a name="L398"></a><tt class="py-lineno">398</tt> <a class="py-toggle" href="#" id="ClassWithParameters.get_specified_type-toggle" onclick="return toggle('ClassWithParameters.get_specified_type');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.ClassWithParameters-class.html#get_specified_type">get_specified_type</a><tt class="py-o [...]
+</div><div id="ClassWithParameters.get_specified_type-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ClassWithParameters.get_specified_type-expanded"><a name="L399"></a><tt class="py-lineno">399</tt>  <tt class="py-line">        <tt class="py-comment"># Get a list of all classes this instance is derived from</tt> </tt>
+<a name="L400"></a><tt class="py-lineno">400</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">classes</tt> <tt class="py-op">=</tt> <tt id="link-96" class="py-name"><a title="VisionEgg.recursive_base_class_finder" class="py-name" href="#" onclick="return doclink('link-96', 'recursive_base_class_finder', 'link-57');">recursive_base_class_finder</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__class_ [...]
+<a name="L401"></a><tt class="py-lineno">401</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">klass</tt> <tt class="py-keyword">in</tt> <tt class="py-name">classes</tt><tt class="py-op">:</tt> </tt>
+<a name="L402"></a><tt class="py-lineno">402</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">klass</tt> <tt class="py-op">==</tt> <tt class="py-name">object</tt><tt class="py-op">:</tt> </tt>
+<a name="L403"></a><tt class="py-lineno">403</tt>  <tt class="py-line">                <tt class="py-keyword">continue</tt> <tt class="py-comment"># base class of new style classes - ignore</tt> </tt>
+<a name="L404"></a><tt class="py-lineno">404</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">klass</tt><tt class="py-op">.</tt><tt id="link-97" class="py-name"><a title="VisionEgg.ClassWithParameters.parameters_and_defaults
+VisionEgg.Core.FixationSpot.parameters_and_defaults
+VisionEgg.Core.ProjectionBaseClass.parameters_and_defaults
+VisionEgg.Core.Screen.parameters_and_defaults
+VisionEgg.Core.Viewport.parameters_and_defaults
+VisionEgg.Daq.Buffered.parameters_and_defaults
+VisionEgg.Dots.DotArea2D.parameters_and_defaults
+VisionEgg.FlowControl.Presentation.parameters_and_defaults
+VisionEgg.Gratings.AlphaGratingCommon.parameters_and_defaults
+VisionEgg.Gratings.LuminanceGratingCommon.parameters_and_defaults
+VisionEgg.Gratings.SinGrating2D.parameters_and_defaults
+VisionEgg.Gratings.SinGrating3D.parameters_and_defaults
+VisionEgg.MoreStimuli.Arrow.parameters_and_defaults
+VisionEgg.MoreStimuli.FilledCircle.parameters_and_defaults
+VisionEgg.MoreStimuli.Rectangle3D.parameters_and_defaults
+VisionEgg.MoreStimuli.Target2D.parameters_and_defaults
+VisionEgg.PyroApps.EPhysGUI.Loop.parameters_and_defaults
+VisionEgg.SphereMap.AzElGrid.parameters_and_defaults
+VisionEgg.SphereMap.SphereGrating.parameters_and_defaults
+VisionEgg.SphereMap.SphereMap.parameters_and_defaults
+VisionEgg.SphereMap.SphereWindow.parameters_and_defaults
+VisionEgg.Text.BitmapText.parameters_and_defaults
+VisionEgg.Text.GlutTextBase.parameters_and_defaults
+VisionEgg.Text.StrokeText.parameters_and_defaults
+VisionEgg.Text.Text.parameters_and_defaults
+VisionEgg.Textures.FixationCross.parameters_and_defaults
+VisionEgg.Textures.SpinningDrum.parameters_and_defaults
+VisionEgg.Textures.TextureStimulus.parameters_and_defaults
+VisionEgg.Textures.TextureStimulus3D.parameters_and_defaults
+VisionEgg.Textures.TextureStimulusBaseClass.parameters_and_defaults
+VisionEgg.WrappedText.WrappedText.parameters_and_defaults" class="py-name" href="#" onclick="return doclink('link-97', 'parameters_and_defaults', 'link-73');">parameters_and_defaults</a></tt><tt class="py-op">.</tt><tt class="py-name">has_key</tt><tt class="py-op">(</tt><tt class="py-name">parameter_name</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L405"></a><tt class="py-lineno">405</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-name">klass</tt><tt class="py-op">.</tt><tt id="link-98" class="py-name"><a title="VisionEgg.ClassWithParameters.parameters_and_defaults
+VisionEgg.Core.FixationSpot.parameters_and_defaults
+VisionEgg.Core.ProjectionBaseClass.parameters_and_defaults
+VisionEgg.Core.Screen.parameters_and_defaults
+VisionEgg.Core.Viewport.parameters_and_defaults
+VisionEgg.Daq.Buffered.parameters_and_defaults
+VisionEgg.Dots.DotArea2D.parameters_and_defaults
+VisionEgg.FlowControl.Presentation.parameters_and_defaults
+VisionEgg.Gratings.AlphaGratingCommon.parameters_and_defaults
+VisionEgg.Gratings.LuminanceGratingCommon.parameters_and_defaults
+VisionEgg.Gratings.SinGrating2D.parameters_and_defaults
+VisionEgg.Gratings.SinGrating3D.parameters_and_defaults
+VisionEgg.MoreStimuli.Arrow.parameters_and_defaults
+VisionEgg.MoreStimuli.FilledCircle.parameters_and_defaults
+VisionEgg.MoreStimuli.Rectangle3D.parameters_and_defaults
+VisionEgg.MoreStimuli.Target2D.parameters_and_defaults
+VisionEgg.PyroApps.EPhysGUI.Loop.parameters_and_defaults
+VisionEgg.SphereMap.AzElGrid.parameters_and_defaults
+VisionEgg.SphereMap.SphereGrating.parameters_and_defaults
+VisionEgg.SphereMap.SphereMap.parameters_and_defaults
+VisionEgg.SphereMap.SphereWindow.parameters_and_defaults
+VisionEgg.Text.BitmapText.parameters_and_defaults
+VisionEgg.Text.GlutTextBase.parameters_and_defaults
+VisionEgg.Text.StrokeText.parameters_and_defaults
+VisionEgg.Text.Text.parameters_and_defaults
+VisionEgg.Textures.FixationCross.parameters_and_defaults
+VisionEgg.Textures.SpinningDrum.parameters_and_defaults
+VisionEgg.Textures.TextureStimulus.parameters_and_defaults
+VisionEgg.Textures.TextureStimulus3D.parameters_and_defaults
+VisionEgg.Textures.TextureStimulusBaseClass.parameters_and_defaults
+VisionEgg.WrappedText.WrappedText.parameters_and_defaults" class="py-name" href="#" onclick="return doclink('link-98', 'parameters_and_defaults', 'link-73');">parameters_and_defaults</a></tt><tt class="py-op">[</tt><tt class="py-name">parameter_name</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
+<a name="L406"></a><tt class="py-lineno">406</tt>  <tt class="py-line">        <tt class="py-comment"># The for loop only completes if parameter_name is not in any subclass</tt> </tt>
+<a name="L407"></a><tt class="py-lineno">407</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">raise</tt> <tt class="py-name">AttributeError</tt><tt class="py-op">(</tt><tt class="py-string">"%s has no parameter named '%s'"</tt><tt class="py-op">%</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__class__</tt><tt class="py-op">,</tt><tt class="py-name">parameter_name</tt><tt class="py-op">)</tt><tt cla [...]
+</div><a name="L408"></a><tt class="py-lineno">408</tt>  <tt class="py-line"> </tt>
+<a name="ClassWithParameters.verify_parameters"></a><div id="ClassWithParameters.verify_parameters-def"><a name="L409"></a><tt class="py-lineno">409</tt> <a class="py-toggle" href="#" id="ClassWithParameters.verify_parameters-toggle" onclick="return toggle('ClassWithParameters.verify_parameters');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.ClassWithParameters-class.html#verify_parameters">verify_parameters</a><tt class="py-op">(</ [...]
+</div><div id="ClassWithParameters.verify_parameters-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ClassWithParameters.verify_parameters-expanded"><a name="L410"></a><tt class="py-lineno">410</tt>  <tt class="py-line">        <tt class="py-docstring">"""Perform type check on all parameters"""</tt> </tt>
+<a name="L411"></a><tt class="py-lineno">411</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">parameter_name</tt> <tt class="py-keyword">in</tt> <tt class="py-name">dir</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L412"></a><tt class="py-lineno">412</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">parameter_name</tt><tt class="py-op">.</tt><tt class="py-name">startswith</tt><tt class="py-op">(</tt><tt class="py-string">'__'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L413"></a><tt class="py-lineno">413</tt>  <tt class="py-line">                <tt class="py-keyword">continue</tt> </tt>
+<a name="L414"></a><tt class="py-lineno">414</tt>  <tt class="py-line">            <tt class="py-name">require_type</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-99" class="py-name" targets="Method VisionEgg.ClassWithParameters.get_specified_type()=VisionEgg.ClassWithParameters-class.html#get_specified_type"><a title="VisionEgg.ClassWithParameters.get_specified_type" class="py-name" href="#" onclick="return doclink('link-99', 'get_specifi [...]
+<a name="L415"></a><tt class="py-lineno">415</tt>  <tt class="py-line">            <tt class="py-name">this_type</tt> <tt class="py-op">=</tt> <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-100" class="py-name" targets="Function VisionEgg.ParameterTypes.get_type()=VisionEgg.ParameterTypes-module.html#get_type,Method VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.get_type()=VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html#g [...]
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.get_type
+VisionEgg.get_type" class="py-name" href="#" onclick="return doclink('link-100', 'get_type', 'link-100');">get_type</a></tt><tt class="py-op">(</tt><tt class="py-name">getattr</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">,</tt><tt class="py-name">parameter_name</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L416"></a><tt class="py-lineno">416</tt>  <tt class="py-line">            <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-101" class="py-name" targets="Function VisionEgg.ParameterTypes.assert_type()=VisionEgg.ParameterTypes-module.html#assert_type,Function VisionEgg.assert_type()=VisionEgg-module.html#assert_type"><a title="VisionEgg.ParameterTypes.assert_type
+VisionEgg.assert_type" class="py-name" href="#" onclick="return doclink('link-101', 'assert_type', 'link-101');">assert_type</a></tt><tt class="py-op">(</tt><tt class="py-name">this_type</tt><tt class="py-op">,</tt><tt class="py-name">require_type</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L417"></a><tt class="py-lineno">417</tt>  <tt class="py-line"> </tt>
+<a name="ClassWithParameters.set"></a><div id="ClassWithParameters.set-def"><a name="L418"></a><tt class="py-lineno">418</tt> <a class="py-toggle" href="#" id="ClassWithParameters.set-toggle" onclick="return toggle('ClassWithParameters.set');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.ClassWithParameters-class.html#set">set</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt><tt class="py-op">**</tt><t [...]
+</div><div id="ClassWithParameters.set-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ClassWithParameters.set-expanded"><a name="L419"></a><tt class="py-lineno">419</tt>  <tt class="py-line">        <tt class="py-docstring">"""Set a parameter with type-checked value</tt> </tt>
+<a name="L420"></a><tt class="py-lineno">420</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L421"></a><tt class="py-lineno">421</tt>  <tt class="py-line"><tt class="py-docstring">        This is the slow but safe way to set parameters.  It is recommended to</tt> </tt>
+<a name="L422"></a><tt class="py-lineno">422</tt>  <tt class="py-line"><tt class="py-docstring">        use this method in all but speed-critical portions of code.</tt> </tt>
+<a name="L423"></a><tt class="py-lineno">423</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L424"></a><tt class="py-lineno">424</tt>  <tt class="py-line">        <tt class="py-comment"># Note that we don't overload __setattr__ because that would always slow</tt> </tt>
+<a name="L425"></a><tt class="py-lineno">425</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># down assignment, not just when it was convenient.</tt> </tt>
+<a name="L426"></a><tt class="py-lineno">426</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment">#</tt> </tt>
+<a name="L427"></a><tt class="py-lineno">427</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># (We could make a checked_parameters attribute though.)</tt> </tt>
+<a name="L428"></a><tt class="py-lineno">428</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">for</tt> <tt class="py-name">parameter_name</tt> <tt class="py-keyword">in</tt> <tt class="py-name">kw</tt><tt class="py-op">.</tt><tt class="py-name">keys</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L429"></a><tt class="py-lineno">429</tt>  <tt class="py-line">            <tt class="py-name">setattr</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">,</tt><tt class="py-name">parameter_name</tt><tt class="py-op">,</tt><tt class="py-name">kw</tt><tt class="py-op">[</tt><tt class="py-name">parameter_name</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L430"></a><tt class="py-lineno">430</tt>  <tt class="py-line">            <tt class="py-name">require_type</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-102" class="py-name"><a title="VisionEgg.ClassWithParameters.get_specified_type" class="py-name" href="#" onclick="return doclink('link-102', 'get_specified_type', 'link-99');">get_specified_type</a></tt><tt class="py-op">(</tt><tt class="py-name">parameter_name</tt><tt class="py [...]
+<a name="L431"></a><tt class="py-lineno">431</tt>  <tt class="py-line">            <tt class="py-name">value</tt> <tt class="py-op">=</tt> <tt class="py-name">kw</tt><tt class="py-op">[</tt><tt class="py-name">parameter_name</tt><tt class="py-op">]</tt> </tt>
+<a name="L432"></a><tt class="py-lineno">432</tt>  <tt class="py-line">            <tt class="py-name">this_type</tt> <tt class="py-op">=</tt> <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-103" class="py-name"><a title="VisionEgg.ParameterTypes.get_type
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.get_type
+VisionEgg.get_type" class="py-name" href="#" onclick="return doclink('link-103', 'get_type', 'link-100');">get_type</a></tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">)</tt> </tt>
+<a name="L433"></a><tt class="py-lineno">433</tt>  <tt class="py-line">            <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-104" class="py-name"><a title="VisionEgg.ParameterTypes.assert_type
+VisionEgg.assert_type" class="py-name" href="#" onclick="return doclink('link-104', 'assert_type', 'link-101');">assert_type</a></tt><tt class="py-op">(</tt><tt class="py-name">this_type</tt><tt class="py-op">,</tt><tt class="py-name">require_type</tt><tt class="py-op">)</tt> </tt>
+<a name="L434"></a><tt class="py-lineno">434</tt>  <tt class="py-line">            <tt class="py-name">setattr</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">,</tt><tt class="py-name">parameter_name</tt><tt class="py-op">,</tt><tt class="py-name">value</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L435"></a><tt class="py-lineno">435</tt>  <tt class="py-line"> </tt>
+<a name="get_type"></a><div id="get_type-def"><a name="L436"></a><tt class="py-lineno">436</tt> <a class="py-toggle" href="#" id="get_type-toggle" onclick="return toggle('get_type');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg-module.html#get_type">get_type</a><tt class="py-op">(</tt><tt class="py-param">value</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="get_type-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="get_type-expanded"><a name="L437"></a><tt class="py-lineno">437</tt>  <tt class="py-line">    <tt class="py-name">warnings</tt><tt class="py-op">.</tt><tt class="py-name">warn</tt><tt class="py-op">(</tt><tt class="py-string">"VisionEgg.get_type() has been moved to "</tt><tt class="py-op">+</tt>\ </tt>
+<a name="L438"></a><tt class="py-lineno">438</tt>  <tt class="py-line">                  <tt class="py-string">"VisionEgg.ParameterTypes.get_type()"</tt><tt class="py-op">,</tt> </tt>
+<a name="L439"></a><tt class="py-lineno">439</tt>  <tt class="py-line">                  <tt class="py-name">DeprecationWarning</tt><tt class="py-op">,</tt> <tt class="py-name">stacklevel</tt><tt class="py-op">=</tt><tt class="py-number">2</tt><tt class="py-op">)</tt> </tt>
+<a name="L440"></a><tt class="py-lineno">440</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt>  <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-105" class="py-name"><a title="VisionEgg.ParameterTypes.get_type
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.get_type
+VisionEgg.get_type" class="py-name" href="#" onclick="return doclink('link-105', 'get_type', 'link-100');">get_type</a></tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L441"></a><tt class="py-lineno">441</tt>  <tt class="py-line"> </tt>
+<a name="assert_type"></a><div id="assert_type-def"><a name="L442"></a><tt class="py-lineno">442</tt> <a class="py-toggle" href="#" id="assert_type-toggle" onclick="return toggle('assert_type');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg-module.html#assert_type">assert_type</a><tt class="py-op">(</tt><tt class="py-op">*</tt><tt class="py-param">args</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="assert_type-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="assert_type-expanded"><a name="L443"></a><tt class="py-lineno">443</tt>  <tt class="py-line">    <tt class="py-name">warnings</tt><tt class="py-op">.</tt><tt class="py-name">warn</tt><tt class="py-op">(</tt><tt class="py-string">"VisionEgg.assert_type() has been moved to "</tt><tt class="py-op">+</tt>\ </tt>
+<a name="L444"></a><tt class="py-lineno">444</tt>  <tt class="py-line">                  <tt class="py-string">"VisionEgg.ParameterTypes.assert_type()"</tt><tt class="py-op">,</tt> </tt>
+<a name="L445"></a><tt class="py-lineno">445</tt>  <tt class="py-line">                  <tt class="py-name">DeprecationWarning</tt><tt class="py-op">,</tt> <tt class="py-name">stacklevel</tt><tt class="py-op">=</tt><tt class="py-number">2</tt><tt class="py-op">)</tt> </tt>
+<a name="L446"></a><tt class="py-lineno">446</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-106" class="py-name"><a title="VisionEgg.ParameterTypes.assert_type
+VisionEgg.assert_type" class="py-name" href="#" onclick="return doclink('link-106', 'assert_type', 'link-101');">assert_type</a></tt><tt class="py-op">(</tt><tt class="py-op">*</tt><tt class="py-name">args</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L447"></a><tt class="py-lineno">447</tt>  <tt class="py-line"> </tt>
+<a name="_get_lowerleft"></a><div id="_get_lowerleft-def"><a name="L448"></a><tt class="py-lineno">448</tt> <a class="py-toggle" href="#" id="_get_lowerleft-toggle" onclick="return toggle('_get_lowerleft');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg-module.html#_get_lowerleft">_get_lowerleft</a><tt class="py-op">(</tt><tt class="py-param">position</tt><tt class="py-op">,</tt><tt class="py-param">anchor</tt><tt class="py-op">,</tt><tt  [...]
+</div><div id="_get_lowerleft-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="_get_lowerleft-expanded"><a name="L449"></a><tt class="py-lineno">449</tt>  <tt class="py-line">    <tt class="py-docstring">"""Private helper function</tt> </tt>
+<a name="L450"></a><tt class="py-lineno">450</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L451"></a><tt class="py-lineno">451</tt>  <tt class="py-line"><tt class="py-docstring">    size is (width, height)</tt> </tt>
+<a name="L452"></a><tt class="py-lineno">452</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L453"></a><tt class="py-lineno">453</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">anchor</tt> <tt class="py-op">==</tt> <tt class="py-string">'lowerleft'</tt><tt class="py-op">:</tt> </tt>
+<a name="L454"></a><tt class="py-lineno">454</tt>  <tt class="py-line">        <tt class="py-name">lowerleft</tt> <tt class="py-op">=</tt> <tt class="py-name">position</tt> </tt>
+<a name="L455"></a><tt class="py-lineno">455</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L456"></a><tt class="py-lineno">456</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">position</tt><tt class="py-op">)</tt> <tt class="py-op">></tt> <tt class="py-number">2</tt><tt class="py-op">:</tt> <tt class="py-name">z</tt> <tt class="py-op">=</tt> <tt class="py-name">position</tt><tt class="py-op">[</tt><tt class="py-number">2</tt><tt class="py-op">]</tt> </tt>
+<a name="L457"></a><tt class="py-lineno">457</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> <tt class="py-name">z</tt> <tt class="py-op">=</tt> <tt class="py-number">0.0</tt> </tt>
+<a name="L458"></a><tt class="py-lineno">458</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">position</tt><tt class="py-op">)</tt> <tt class="py-op">></tt> <tt class="py-number">3</tt><tt class="py-op">:</tt> <tt class="py-name">w</tt> <tt class="py-op">=</tt> <tt class="py-name">position</tt><tt class="py-op">[</tt><tt class="py-number">3</tt><tt class="py-op">]</tt> </tt>
+<a name="L459"></a><tt class="py-lineno">459</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> <tt class="py-name">w</tt> <tt class="py-op">=</tt> <tt class="py-number">1.0</tt> </tt>
+<a name="L460"></a><tt class="py-lineno">460</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">z</tt> <tt class="py-op">!=</tt> <tt class="py-number">0.0</tt><tt class="py-op">:</tt> <tt class="py-name">warnings</tt><tt class="py-op">.</tt><tt class="py-name">warn</tt><tt class="py-op">(</tt> <tt class="py-string">"z coordinate (other than 0.0) specificed where anchor not 'lowerleft' -- cannot compute"</tt><tt class="py-op">)</tt> </tt>
+<a name="L461"></a><tt class="py-lineno">461</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">w</tt> <tt class="py-op">!=</tt> <tt class="py-number">1.0</tt><tt class="py-op">:</tt> <tt class="py-name">warnings</tt><tt class="py-op">.</tt><tt class="py-name">warn</tt><tt class="py-op">(</tt><tt class="py-string">"w coordinate (other than 1.0) specificed where anchor not 'lowerleft' -- cannot compute"</tt><tt class="py-op">)</tt> </tt>
+<a name="L462"></a><tt class="py-lineno">462</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">anchor</tt> <tt class="py-op">==</tt> <tt class="py-string">'center'</tt><tt class="py-op">:</tt> </tt>
+<a name="L463"></a><tt class="py-lineno">463</tt>  <tt class="py-line">            <tt class="py-name">lowerleft</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">position</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">-</tt> <tt id="link-107" class="py-name" targets="Variable VisionEgg.Core.Screen.size=VisionEgg.Core.Screen-class.html#size"><a title="VisionEgg.Core.Screen.size" class="py-name" href="#" onclick=" [...]
+<a name="L464"></a><tt class="py-lineno">464</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">anchor</tt> <tt class="py-op">==</tt> <tt class="py-string">'lowerright'</tt><tt class="py-op">:</tt> </tt>
+<a name="L465"></a><tt class="py-lineno">465</tt>  <tt class="py-line">            <tt class="py-name">lowerleft</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">position</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">-</tt> <tt id="link-109" class="py-name"><a title="VisionEgg.Core.Screen.size" class="py-name" href="#" onclick="return doclink('link-109', 'size', 'link-107');">size</a></tt><tt class="py-op">[</t [...]
+<a name="L466"></a><tt class="py-lineno">466</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">anchor</tt> <tt class="py-op">==</tt> <tt class="py-string">'upperright'</tt><tt class="py-op">:</tt> </tt>
+<a name="L467"></a><tt class="py-lineno">467</tt>  <tt class="py-line">            <tt class="py-name">lowerleft</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">position</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">-</tt> <tt id="link-110" class="py-name"><a title="VisionEgg.Core.Screen.size" class="py-name" href="#" onclick="return doclink('link-110', 'size', 'link-107');">size</a></tt><tt class="py-op">[</t [...]
+<a name="L468"></a><tt class="py-lineno">468</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">anchor</tt> <tt class="py-op">==</tt> <tt class="py-string">'upperleft'</tt><tt class="py-op">:</tt> </tt>
+<a name="L469"></a><tt class="py-lineno">469</tt>  <tt class="py-line">            <tt class="py-name">lowerleft</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">position</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">,</tt><tt class="py-name">position</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-op">-</tt> <tt id="link-112" class="py-name"><a title="VisionEgg.Cor [...]
+<a name="L470"></a><tt class="py-lineno">470</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">anchor</tt> <tt class="py-op">==</tt> <tt class="py-string">'left'</tt><tt class="py-op">:</tt> </tt>
+<a name="L471"></a><tt class="py-lineno">471</tt>  <tt class="py-line">            <tt class="py-name">lowerleft</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">position</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">,</tt><tt class="py-name">position</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-op">-</tt> <tt id="link-113" class="py-name"><a title="VisionEgg.Cor [...]
+<a name="L472"></a><tt class="py-lineno">472</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">anchor</tt> <tt class="py-op">==</tt> <tt class="py-string">'right'</tt><tt class="py-op">:</tt> </tt>
+<a name="L473"></a><tt class="py-lineno">473</tt>  <tt class="py-line">            <tt class="py-name">lowerleft</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">position</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">-</tt> <tt id="link-114" class="py-name"><a title="VisionEgg.Core.Screen.size" class="py-name" href="#" onclick="return doclink('link-114', 'size', 'link-107');">size</a></tt><tt class="py-op">[</t [...]
+<a name="L474"></a><tt class="py-lineno">474</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">anchor</tt> <tt class="py-op">==</tt> <tt class="py-string">'bottom'</tt><tt class="py-op">:</tt> </tt>
+<a name="L475"></a><tt class="py-lineno">475</tt>  <tt class="py-line">            <tt class="py-name">lowerleft</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">position</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">-</tt> <tt id="link-116" class="py-name"><a title="VisionEgg.Core.Screen.size" class="py-name" href="#" onclick="return doclink('link-116', 'size', 'link-107');">size</a></tt><tt class="py-op">[</t [...]
+<a name="L476"></a><tt class="py-lineno">476</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">anchor</tt> <tt class="py-op">==</tt> <tt class="py-string">'top'</tt><tt class="py-op">:</tt> </tt>
+<a name="L477"></a><tt class="py-lineno">477</tt>  <tt class="py-line">            <tt class="py-name">lowerleft</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">position</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">-</tt> <tt id="link-117" class="py-name"><a title="VisionEgg.Core.Screen.size" class="py-name" href="#" onclick="return doclink('link-117', 'size', 'link-107');">size</a></tt><tt class="py-op">[</t [...]
+<a name="L478"></a><tt class="py-lineno">478</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L479"></a><tt class="py-lineno">479</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">"No anchor position %s"</tt><tt class="py-op">%</tt><tt class="py-name">anchor</tt><tt class="py-op">)</tt> </tt>
+<a name="L480"></a><tt class="py-lineno">480</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">lowerleft</tt> </tt>
+</div><a name="L481"></a><tt class="py-lineno">481</tt>  <tt class="py-line"> </tt>
+<a name="_get_center"></a><div id="_get_center-def"><a name="L482"></a><tt class="py-lineno">482</tt> <a class="py-toggle" href="#" id="_get_center-toggle" onclick="return toggle('_get_center');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg-module.html#_get_center">_get_center</a><tt class="py-op">(</tt><tt class="py-param">position</tt><tt class="py-op">,</tt><tt class="py-param">anchor</tt><tt class="py-op">,</tt><tt class="py-param">s [...]
+</div><div id="_get_center-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="_get_center-expanded"><a name="L483"></a><tt class="py-lineno">483</tt>  <tt class="py-line">    <tt class="py-docstring">"""Private helper function"""</tt> </tt>
+<a name="L484"></a><tt class="py-lineno">484</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">anchor</tt> <tt class="py-op">==</tt> <tt class="py-string">'center'</tt><tt class="py-op">:</tt> </tt>
+<a name="L485"></a><tt class="py-lineno">485</tt>  <tt class="py-line">        <tt class="py-name">center</tt> <tt class="py-op">=</tt> <tt class="py-name">position</tt> </tt>
+<a name="L486"></a><tt class="py-lineno">486</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L487"></a><tt class="py-lineno">487</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">position</tt><tt class="py-op">)</tt> <tt class="py-op">></tt> <tt class="py-number">2</tt><tt class="py-op">:</tt> <tt class="py-name">z</tt> <tt class="py-op">=</tt> <tt class="py-name">position</tt><tt class="py-op">[</tt><tt class="py-number">2</tt><tt class="py-op">]</tt> </tt>
+<a name="L488"></a><tt class="py-lineno">488</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> <tt class="py-name">z</tt> <tt class="py-op">=</tt> <tt class="py-number">0.0</tt> </tt>
+<a name="L489"></a><tt class="py-lineno">489</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">position</tt><tt class="py-op">)</tt> <tt class="py-op">></tt> <tt class="py-number">3</tt><tt class="py-op">:</tt> <tt class="py-name">w</tt> <tt class="py-op">=</tt> <tt class="py-name">position</tt><tt class="py-op">[</tt><tt class="py-number">3</tt><tt class="py-op">]</tt> </tt>
+<a name="L490"></a><tt class="py-lineno">490</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> <tt class="py-name">w</tt> <tt class="py-op">=</tt> <tt class="py-number">1.0</tt> </tt>
+<a name="L491"></a><tt class="py-lineno">491</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">z</tt> <tt class="py-op">!=</tt> <tt class="py-number">0.0</tt><tt class="py-op">:</tt> <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">"z coordinate (other than 0.0) specificed where anchor not 'center' -- cannot compute"</tt><tt class="py-op">)</tt> </tt>
+<a name="L492"></a><tt class="py-lineno">492</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">w</tt> <tt class="py-op">!=</tt> <tt class="py-number">1.0</tt><tt class="py-op">:</tt> <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">"w coordinate (other than 1.0) specificed where anchor not 'center' -- cannot compute"</tt><tt class="py-op">)</tt> </tt>
+<a name="L493"></a><tt class="py-lineno">493</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">anchor</tt> <tt class="py-op">==</tt> <tt class="py-string">'lowerleft'</tt><tt class="py-op">:</tt> </tt>
+<a name="L494"></a><tt class="py-lineno">494</tt>  <tt class="py-line">            <tt class="py-name">center</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">position</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">+</tt> <tt id="link-119" class="py-name"><a title="VisionEgg.Core.Screen.size" class="py-name" href="#" onclick="return doclink('link-119', 'size', 'link-107');">size</a></tt><tt class="py-op">[</tt>< [...]
+<a name="L495"></a><tt class="py-lineno">495</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">anchor</tt> <tt class="py-op">==</tt> <tt class="py-string">'lowerright'</tt><tt class="py-op">:</tt> </tt>
+<a name="L496"></a><tt class="py-lineno">496</tt>  <tt class="py-line">            <tt class="py-name">center</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">position</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">-</tt> <tt id="link-121" class="py-name"><a title="VisionEgg.Core.Screen.size" class="py-name" href="#" onclick="return doclink('link-121', 'size', 'link-107');">size</a></tt><tt class="py-op">[</tt>< [...]
+<a name="L497"></a><tt class="py-lineno">497</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">anchor</tt> <tt class="py-op">==</tt> <tt class="py-string">'upperright'</tt><tt class="py-op">:</tt> </tt>
+<a name="L498"></a><tt class="py-lineno">498</tt>  <tt class="py-line">            <tt class="py-name">center</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">position</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">-</tt> <tt id="link-123" class="py-name"><a title="VisionEgg.Core.Screen.size" class="py-name" href="#" onclick="return doclink('link-123', 'size', 'link-107');">size</a></tt><tt class="py-op">[</tt>< [...]
+<a name="L499"></a><tt class="py-lineno">499</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">anchor</tt> <tt class="py-op">==</tt> <tt class="py-string">'upperleft'</tt><tt class="py-op">:</tt> </tt>
+<a name="L500"></a><tt class="py-lineno">500</tt>  <tt class="py-line">            <tt class="py-name">center</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">position</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">+</tt> <tt id="link-125" class="py-name"><a title="VisionEgg.Core.Screen.size" class="py-name" href="#" onclick="return doclink('link-125', 'size', 'link-107');">size</a></tt><tt class="py-op">[</tt>< [...]
+<a name="L501"></a><tt class="py-lineno">501</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">anchor</tt> <tt class="py-op">==</tt> <tt class="py-string">'left'</tt><tt class="py-op">:</tt> </tt>
+<a name="L502"></a><tt class="py-lineno">502</tt>  <tt class="py-line">            <tt class="py-name">center</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">position</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">+</tt> <tt id="link-127" class="py-name"><a title="VisionEgg.Core.Screen.size" class="py-name" href="#" onclick="return doclink('link-127', 'size', 'link-107');">size</a></tt><tt class="py-op">[</tt>< [...]
+<a name="L503"></a><tt class="py-lineno">503</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">anchor</tt> <tt class="py-op">==</tt> <tt class="py-string">'right'</tt><tt class="py-op">:</tt> </tt>
+<a name="L504"></a><tt class="py-lineno">504</tt>  <tt class="py-line">            <tt class="py-name">center</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">position</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">-</tt> <tt id="link-128" class="py-name"><a title="VisionEgg.Core.Screen.size" class="py-name" href="#" onclick="return doclink('link-128', 'size', 'link-107');">size</a></tt><tt class="py-op">[</tt>< [...]
+<a name="L505"></a><tt class="py-lineno">505</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">anchor</tt> <tt class="py-op">==</tt> <tt class="py-string">'bottom'</tt><tt class="py-op">:</tt> </tt>
+<a name="L506"></a><tt class="py-lineno">506</tt>  <tt class="py-line">            <tt class="py-name">center</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">position</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">,</tt><tt class="py-name">position</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-op">+</tt> <tt id="link-129" class="py-name"><a title="VisionEgg.Core.S [...]
+<a name="L507"></a><tt class="py-lineno">507</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">anchor</tt> <tt class="py-op">==</tt> <tt class="py-string">'top'</tt><tt class="py-op">:</tt> </tt>
+<a name="L508"></a><tt class="py-lineno">508</tt>  <tt class="py-line">            <tt class="py-name">center</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">position</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">,</tt><tt class="py-name">position</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-op">-</tt> <tt id="link-130" class="py-name"><a title="VisionEgg.Core.S [...]
+<a name="L509"></a><tt class="py-lineno">509</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L510"></a><tt class="py-lineno">510</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">"No anchor position %s"</tt><tt class="py-op">%</tt><tt class="py-name">anchor</tt><tt class="py-op">)</tt> </tt>
+<a name="L511"></a><tt class="py-lineno">511</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">center</tt> </tt>
+</div><a name="L512"></a><tt class="py-lineno">512</tt>  <tt class="py-line"> </tt><script type="text/javascript">
+<!--
+expandto(location.href);
+// -->
+</script>
+</pre>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th bgcolor="#70b0f0" class="navbar-select"
+          >   Home   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:49 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.ClassWithParameters-class.html b/doc/reference/html/VisionEgg.ClassWithParameters-class.html
new file mode 100644
index 0000000..79bab46
--- /dev/null
+++ b/doc/reference/html/VisionEgg.ClassWithParameters-class.html
@@ -0,0 +1,395 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.ClassWithParameters</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        Class ClassWithParameters
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.ClassWithParameters-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class ClassWithParameters</h1><span class="codelink"><a href="VisionEgg-pysrc.html#ClassWithParameters">source code</a></span><br /><br />
+<pre class="base-tree">
+object --+
+         |
+        <strong class="uidshort">ClassWithParameters</strong>
+</pre>
+
+<hr />
+<pre class="literalblock">
+Base class for any class that uses parameters.
+
+Any class that uses parameters potentially modifiable in realtime
+should be a subclass of ClassWithParameters.  This class enforces
+type checking and sets default values.
+
+Any subclass of ClassWithParameters can define two class (not
+instance) attributes, "parameters_and_defaults" and
+"constant_parameters_and_defaults". These are dictionaries where
+the key is a string containing the name of the parameter and the
+the value is a tuple of length 2 containing the default value and
+the type.  For example, an acceptable dictionary would be
+{"parameter1" : (1.0, ve_types.Real)}
+
+See the ParameterTypes module for more information about types.
+
+</pre><br /><br />
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__getstate__"></a><span class="summary-sig-name">__getstate__</span>(<span class="summary-sig-arg">self</span>)</span><br />
+      support for being pickled</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg-pysrc.html#ClassWithParameters.__getstate__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__setstate__"></a><span class="summary-sig-name">__setstate__</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">dict</span>)</span><br />
+      support for being unpickled</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg-pysrc.html#ClassWithParameters.__setstate__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.ClassWithParameters-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">**kw</span>)</span><br />
+      Create self.parameters and set values.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg-pysrc.html#ClassWithParameters.__init__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="is_constant_parameter"></a><span class="summary-sig-name">is_constant_parameter</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">parameter_name</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg-pysrc.html#ClassWithParameters.is_constant_parameter">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="get_specified_type"></a><span class="summary-sig-name">get_specified_type</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">parameter_name</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg-pysrc.html#ClassWithParameters.get_specified_type">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="verify_parameters"></a><span class="summary-sig-name">verify_parameters</span>(<span class="summary-sig-arg">self</span>)</span><br />
+      Perform type check on all parameters</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg-pysrc.html#ClassWithParameters.verify_parameters">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.ClassWithParameters-class.html#set" class="summary-sig-name">set</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">**kw</span>)</span><br />
+      Set a parameter with type-checked value
+
+This is the slow but safe way to set parameters.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg-pysrc.html#ClassWithParameters.set">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__delattr__</code>,
+      <code>__getattribute__</code>,
+      <code>__hash__</code>,
+      <code>__new__</code>,
+      <code>__reduce__</code>,
+      <code>__reduce_ex__</code>,
+      <code>__repr__</code>,
+      <code>__setattr__</code>,
+      <code>__str__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Class Variables</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="parameters_and_defaults"></a><span class="summary-name">parameters_and_defaults</span> = <code title="ParameterDefinition({})">ParameterDefinition({})</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="constant_parameters_and_defaults"></a><span class="summary-name">constant_parameters_and_defaults</span> = <code title="ParameterDefinition({})">ParameterDefinition({})</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="__safe_for_unpickling__"></a><span class="summary-name">__safe_for_unpickling__</span> = <code title="True">True</code>
+    </td>
+  </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Properties</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__class__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Method Details</span></td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">**kw</span>)</span>
+    <br /><em class="fname">(Constructor)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg-pysrc.html#ClassWithParameters.__init__">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Create self.parameters and set values.
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      object.__init__
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="set"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">set</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">**kw</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg-pysrc.html#ClassWithParameters.set">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Set a parameter with type-checked value
+
+This is the slow but safe way to set parameters.  It is recommended to
+use this method in all but speed-critical portions of code.
+
+</pre>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.Configuration-module.html b/doc/reference/html/VisionEgg.Configuration-module.html
new file mode 100644
index 0000000..bde2322
--- /dev/null
+++ b/doc/reference/html/VisionEgg.Configuration-module.html
@@ -0,0 +1,278 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.Configuration</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        Module Configuration
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.Configuration-module.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== MODULE DESCRIPTION ==================== -->
+<h1 class="epydoc">Module Configuration</h1><span class="codelink"><a href="VisionEgg.Configuration-pysrc.html">source code</a></span><br /><br />
+<pre class="literalblock">
+
+Load config values from environment, config file, or defaults.
+
+Applications should not import this module directly.  Instead, 'import
+VisionEgg' will result in an attribute 'VisionEgg.config', which has
+the configuration options as attributes.
+
+This module searches for configuration options from the following
+places: environment variables, configuration file, generic defaults.
+Environment variables take precedence over the configuration file,
+which takes precedence over the generic defaults.
+
+This module also determines the location of the Vision Egg
+directories.  The VISIONEGG_SYSTEM_DIR directory is by default the
+'VisionEgg' directory in Python's site-packages.  VISIONEGG_USER_DIR
+is by default 'VisionEgg' in the directory specified by the
+environment variable HOME, if it exists, and os.curdir otherwise.
+
+You can create a configuration file that contains defaults for your
+system.  This should be a text file with key/value pairs.  Blank lines
+and anything after the pound symbol ('#') will be treated as a
+comment.  Each key/value pairs should be on its own line and in the
+format 'KEY=VALUE'.  By default the file 'VisionEgg.cfg' from the
+VISIONEGG_USER_DIR or VISIONEGG_SYSTEM_DIR as specified above.
+However, You can specify a different filename and directory by setting
+the environment variable VISIONEGG_CONFIG_FILE.
+
+</pre><br /><br />
+
+<!-- ==================== CLASSES ==================== -->
+<a name="section-Classes"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Classes</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.Configuration.Config-class.html" class="summary-name">Config</a><br />
+      Holds global Vision Egg configuration information.
+    </td>
+  </tr>
+</table>
+<!-- ==================== FUNCTIONS ==================== -->
+<a name="section-Functions"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Functions</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="save_settings"></a><span class="summary-sig-name">save_settings</span>()</span><br />
+      Save the current values to the config file, overwriting what is there.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.Configuration-pysrc.html#save_settings">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+</table>
+<!-- ==================== VARIABLES ==================== -->
+<a name="section-Variables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Variables</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.Configuration-module.html#defaults" class="summary-name">defaults</a> = <code title="{'VISIONEGG_ALWAYS_START_LOGGING': 0, 'VISIONEGG_DOUBLE_BUFFER': 1, 'V\
+ISIONEGG_FRAMELESS_WINDOW': 0, 'VISIONEGG_FULLSCREEN': 0, 'VISIONEGG_G\
+UI_INIT': 1, 'VISIONEGG_GAMMA_INVERT_RED': 2.1, 'VISIONEGG_GAMMA_INVER\
+T_GREEN': 2.1, 'VISIONEGG_GAMMA_INVERT_BLUE': 2.1, 'VISIONEGG_GAMMA_FI\
+LE': 'custom.ve_gamma', 'VISIONEGG_GAMMA_SOURCE': 'none', 'VISIONEGG_G\
+UI_ON_ERROR': 1, 'VISIONEGG_HIDE_MOUSE': 1, 'VISIONEGG_LOG_FILE': 'Vis\
+ionEgg.log', 'VISIONEGG_LOG_TO_STDERR': 1, 'VISIONEGG_MAXPRIORITY': 0,\
+ 'VISIONEGG_MONITOR_REFRESH_HZ': 60.0, 'VISIONEGG_MULTISAMPLE_SAMPLES'\
+...">{'VISIONEGG_ALWAYS_START_LOGGING': 0, 'VISIONEGG_DO<code class="variable-ellipsis">...</code></code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.Configuration-module.html#extra_darwin_defaults" class="summary-name">extra_darwin_defaults</a> = <code title="{'VISIONEGG_DARWIN_MAXPRIORITY_CONVENTIONAL_NOT_REALTIME': 1, 'VISIONE\
+GG_DARWIN_CONVENTIONAL_PRIORITY':-20, 'VISIONEGG_DARWIN_REALTIME_PERIO\
+D_DENOM': 120, 'VISIONEGG_DARWIN_REALTIME_COMPUTATION_DENOM': 2400, 'V\
+ISIONEGG_DARWIN_REALTIME_CONSTRAINT_DENOM': 1200, 'VISIONEGG_DARWIN_RE\
+ALTIME_PREEMPTIBLE': 0, 'VISIONEGG_DARWIN_PTHREAD_PRIORITY': 'max',}">{'VISIONEGG_DARWIN_MAXPRIORITY_CONVENT<code class="variable-ellipsis">...</code></code>
+    </td>
+  </tr>
+</table>
+<!-- ==================== VARIABLES DETAILS ==================== -->
+<a name="section-VariablesDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Variables Details</span></td>
+</tr>
+</table>
+<a name="defaults"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">defaults</h3>
+  
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+{'VISIONEGG_ALWAYS_START_LOGGING': 0, 'VISIONEGG_DOUBLE_BUFFER': 1, 'V<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+ISIONEGG_FRAMELESS_WINDOW': 0, 'VISIONEGG_FULLSCREEN': 0, 'VISIONEGG_G<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+UI_INIT': 1, 'VISIONEGG_GAMMA_INVERT_RED': 2.1, 'VISIONEGG_GAMMA_INVER<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+T_GREEN': 2.1, 'VISIONEGG_GAMMA_INVERT_BLUE': 2.1, 'VISIONEGG_GAMMA_FI<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+LE': 'custom.ve_gamma', 'VISIONEGG_GAMMA_SOURCE': 'none', 'VISIONEGG_G<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+UI_ON_ERROR': 1, 'VISIONEGG_HIDE_MOUSE': 1, 'VISIONEGG_LOG_FILE': 'Vis<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+ionEgg.log', 'VISIONEGG_LOG_TO_STDERR': 1, 'VISIONEGG_MAXPRIORITY': 0,<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+ 'VISIONEGG_MONITOR_REFRESH_HZ': 60.0, 'VISIONEGG_MULTISAMPLE_SAMPLES'<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+<code class="variable-ellipsis">...</code>
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="extra_darwin_defaults"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">extra_darwin_defaults</h3>
+  
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+{'VISIONEGG_DARWIN_MAXPRIORITY_CONVENTIONAL_NOT_REALTIME': 1, 'VISIONE<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+GG_DARWIN_CONVENTIONAL_PRIORITY':-20, 'VISIONEGG_DARWIN_REALTIME_PERIO<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+D_DENOM': 120, 'VISIONEGG_DARWIN_REALTIME_COMPUTATION_DENOM': 2400, 'V<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+ISIONEGG_DARWIN_REALTIME_CONSTRAINT_DENOM': 1200, 'VISIONEGG_DARWIN_RE<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+ALTIME_PREEMPTIBLE': 0, 'VISIONEGG_DARWIN_PTHREAD_PRIORITY': 'max',}
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.Configuration-pysrc.html b/doc/reference/html/VisionEgg.Configuration-pysrc.html
new file mode 100644
index 0000000..7dc0d40
--- /dev/null
+++ b/doc/reference/html/VisionEgg.Configuration-pysrc.html
@@ -0,0 +1,372 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.Configuration</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        Module Configuration
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.Configuration-pysrc.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<h1 class="epydoc">Source Code for <a href="VisionEgg.Configuration-module.html">Module VisionEgg.Configuration</a></h1>
+<pre class="py-src">
+<a name="L1"></a><tt class="py-lineno">  1</tt>  <tt class="py-line"><tt class="py-comment"># The Vision Egg: Configuration</tt> </tt>
+<a name="L2"></a><tt class="py-lineno">  2</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L3"></a><tt class="py-lineno">  3</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Copyright (C) 2001-2003 Andrew Straw.</tt> </tt>
+<a name="L4"></a><tt class="py-lineno">  4</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Copyright (C) 2008 California Institute of Technology</tt> </tt>
+<a name="L5"></a><tt class="py-lineno">  5</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L6"></a><tt class="py-lineno">  6</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># URL: <http://www.visionegg.org/></tt> </tt>
+<a name="L7"></a><tt class="py-lineno">  7</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L8"></a><tt class="py-lineno">  8</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Distributed under the terms of the GNU Lesser General Public License</tt> </tt>
+<a name="L9"></a><tt class="py-lineno">  9</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># (LGPL). See LICENSE.TXT that came with this file.</tt> </tt>
+<a name="L10"></a><tt class="py-lineno"> 10</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L11"></a><tt class="py-lineno"> 11</tt>  <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L12"></a><tt class="py-lineno"> 12</tt>  <tt class="py-line"><tt class="py-docstring">Load config values from environment, config file, or defaults.</tt> </tt>
+<a name="L13"></a><tt class="py-lineno"> 13</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L14"></a><tt class="py-lineno"> 14</tt>  <tt class="py-line"><tt class="py-docstring">Applications should not import this module directly.  Instead, 'import</tt> </tt>
+<a name="L15"></a><tt class="py-lineno"> 15</tt>  <tt class="py-line"><tt class="py-docstring">VisionEgg' will result in an attribute 'VisionEgg.config', which has</tt> </tt>
+<a name="L16"></a><tt class="py-lineno"> 16</tt>  <tt class="py-line"><tt class="py-docstring">the configuration options as attributes.</tt> </tt>
+<a name="L17"></a><tt class="py-lineno"> 17</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L18"></a><tt class="py-lineno"> 18</tt>  <tt class="py-line"><tt class="py-docstring">This module searches for configuration options from the following</tt> </tt>
+<a name="L19"></a><tt class="py-lineno"> 19</tt>  <tt class="py-line"><tt class="py-docstring">places: environment variables, configuration file, generic defaults.</tt> </tt>
+<a name="L20"></a><tt class="py-lineno"> 20</tt>  <tt class="py-line"><tt class="py-docstring">Environment variables take precedence over the configuration file,</tt> </tt>
+<a name="L21"></a><tt class="py-lineno"> 21</tt>  <tt class="py-line"><tt class="py-docstring">which takes precedence over the generic defaults.</tt> </tt>
+<a name="L22"></a><tt class="py-lineno"> 22</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L23"></a><tt class="py-lineno"> 23</tt>  <tt class="py-line"><tt class="py-docstring">This module also determines the location of the Vision Egg</tt> </tt>
+<a name="L24"></a><tt class="py-lineno"> 24</tt>  <tt class="py-line"><tt class="py-docstring">directories.  The VISIONEGG_SYSTEM_DIR directory is by default the</tt> </tt>
+<a name="L25"></a><tt class="py-lineno"> 25</tt>  <tt class="py-line"><tt class="py-docstring">'VisionEgg' directory in Python's site-packages.  VISIONEGG_USER_DIR</tt> </tt>
+<a name="L26"></a><tt class="py-lineno"> 26</tt>  <tt class="py-line"><tt class="py-docstring">is by default 'VisionEgg' in the directory specified by the</tt> </tt>
+<a name="L27"></a><tt class="py-lineno"> 27</tt>  <tt class="py-line"><tt class="py-docstring">environment variable HOME, if it exists, and os.curdir otherwise.</tt> </tt>
+<a name="L28"></a><tt class="py-lineno"> 28</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L29"></a><tt class="py-lineno"> 29</tt>  <tt class="py-line"><tt class="py-docstring">You can create a configuration file that contains defaults for your</tt> </tt>
+<a name="L30"></a><tt class="py-lineno"> 30</tt>  <tt class="py-line"><tt class="py-docstring">system.  This should be a text file with key/value pairs.  Blank lines</tt> </tt>
+<a name="L31"></a><tt class="py-lineno"> 31</tt>  <tt class="py-line"><tt class="py-docstring">and anything after the pound symbol ('#') will be treated as a</tt> </tt>
+<a name="L32"></a><tt class="py-lineno"> 32</tt>  <tt class="py-line"><tt class="py-docstring">comment.  Each key/value pairs should be on its own line and in the</tt> </tt>
+<a name="L33"></a><tt class="py-lineno"> 33</tt>  <tt class="py-line"><tt class="py-docstring">format 'KEY=VALUE'.  By default the file 'VisionEgg.cfg' from the</tt> </tt>
+<a name="L34"></a><tt class="py-lineno"> 34</tt>  <tt class="py-line"><tt class="py-docstring">VISIONEGG_USER_DIR or VISIONEGG_SYSTEM_DIR as specified above.</tt> </tt>
+<a name="L35"></a><tt class="py-lineno"> 35</tt>  <tt class="py-line"><tt class="py-docstring">However, You can specify a different filename and directory by setting</tt> </tt>
+<a name="L36"></a><tt class="py-lineno"> 36</tt>  <tt class="py-line"><tt class="py-docstring">the environment variable VISIONEGG_CONFIG_FILE.</tt> </tt>
+<a name="L37"></a><tt class="py-lineno"> 37</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L38"></a><tt class="py-lineno"> 38</tt>  <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L39"></a><tt class="py-lineno"> 39</tt>  <tt class="py-line"> </tt>
+<a name="L40"></a><tt class="py-lineno"> 40</tt>  <tt class="py-line"><tt class="py-comment"># Warning: This code is a bit of a hack</tt> </tt>
+<a name="L41"></a><tt class="py-lineno"> 41</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L42"></a><tt class="py-lineno"> 42</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-0" class="py-name" targets="Package VisionEgg=VisionEgg-module.html"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-0', 'VisionEgg', 'link-0');">VisionEgg</a></tt> </tt>
+<a name="L43"></a><tt class="py-lineno"> 43</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">re</tt><tt class="py-op">,</tt> <tt class="py-name">os</tt><tt class="py-op">,</tt> <tt class="py-name">errno</tt><tt class="py-op">,</tt> <tt class="py-name">sys</tt>                  <tt class="py-comment"># standard python packages</tt> </tt>
+<a name="L44"></a><tt class="py-lineno"> 44</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">ConfigParser</tt> </tt>
+<a name="L45"></a><tt class="py-lineno"> 45</tt>  <tt class="py-line"> </tt>
+<a name="L46"></a><tt class="py-lineno"> 46</tt>  <tt class="py-line"><tt class="py-comment">####################################################################</tt> </tt>
+<a name="L47"></a><tt class="py-lineno"> 47</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L48"></a><tt class="py-lineno"> 48</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#        Default configuration variables</tt> </tt>
+<a name="L49"></a><tt class="py-lineno"> 49</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L50"></a><tt class="py-lineno"> 50</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">####################################################################</tt> </tt>
+<a name="L51"></a><tt class="py-lineno"> 51</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L52"></a><tt class="py-lineno"> 52</tt>  <tt class="py-line"><tt id="link-1" class="py-name" targets="Variable VisionEgg.Configuration.defaults=VisionEgg.Configuration-module.html#defaults"><a title="VisionEgg.Configuration.defaults" class="py-name" href="#" onclick="return doclink('link-1', 'defaults', 'link-1');">defaults</a></tt><tt class="py-op">=</tt> <tt class="py-op">{</tt> </tt>
+<a name="L53"></a><tt class="py-lineno"> 53</tt>  <tt class="py-line">    <tt class="py-string">'VISIONEGG_ALWAYS_START_LOGGING'</tt><tt class="py-op">:</tt> <tt class="py-number">0</tt><tt class="py-op">,</tt> </tt>
+<a name="L54"></a><tt class="py-lineno"> 54</tt>  <tt class="py-line">    <tt class="py-string">'VISIONEGG_DOUBLE_BUFFER'</tt><tt class="py-op">:</tt>        <tt class="py-number">1</tt><tt class="py-op">,</tt> </tt>
+<a name="L55"></a><tt class="py-lineno"> 55</tt>  <tt class="py-line">    <tt class="py-string">'VISIONEGG_FRAMELESS_WINDOW'</tt><tt class="py-op">:</tt>     <tt class="py-number">0</tt><tt class="py-op">,</tt> </tt>
+<a name="L56"></a><tt class="py-lineno"> 56</tt>  <tt class="py-line">    <tt class="py-string">'VISIONEGG_FULLSCREEN'</tt><tt class="py-op">:</tt>           <tt class="py-number">0</tt><tt class="py-op">,</tt> </tt>
+<a name="L57"></a><tt class="py-lineno"> 57</tt>  <tt class="py-line">    <tt class="py-string">'VISIONEGG_GUI_INIT'</tt><tt class="py-op">:</tt>             <tt class="py-number">1</tt><tt class="py-op">,</tt> </tt>
+<a name="L58"></a><tt class="py-lineno"> 58</tt>  <tt class="py-line">    <tt class="py-string">'VISIONEGG_GAMMA_INVERT_RED'</tt><tt class="py-op">:</tt>     <tt class="py-number">2.1</tt><tt class="py-op">,</tt> <tt class="py-comment"># only used in 'invert' mode</tt> </tt>
+<a name="L59"></a><tt class="py-lineno"> 59</tt>  <tt class="py-line">    <tt class="py-string">'VISIONEGG_GAMMA_INVERT_GREEN'</tt><tt class="py-op">:</tt>   <tt class="py-number">2.1</tt><tt class="py-op">,</tt> <tt class="py-comment"># only used in 'invert' mode</tt> </tt>
+<a name="L60"></a><tt class="py-lineno"> 60</tt>  <tt class="py-line">    <tt class="py-string">'VISIONEGG_GAMMA_INVERT_BLUE'</tt><tt class="py-op">:</tt>    <tt class="py-number">2.1</tt><tt class="py-op">,</tt> <tt class="py-comment"># only used in 'invert' mode</tt> </tt>
+<a name="L61"></a><tt class="py-lineno"> 61</tt>  <tt class="py-line">    <tt class="py-string">'VISIONEGG_GAMMA_FILE'</tt><tt class="py-op">:</tt>           <tt class="py-string">'custom.ve_gamma'</tt><tt class="py-op">,</tt> <tt class="py-comment"># only used in 'file' mode</tt> </tt>
+<a name="L62"></a><tt class="py-lineno"> 62</tt>  <tt class="py-line">    <tt class="py-string">'VISIONEGG_GAMMA_SOURCE'</tt><tt class="py-op">:</tt>         <tt class="py-string">'none'</tt><tt class="py-op">,</tt> <tt class="py-comment">#also 'invert' or 'file'</tt> </tt>
+<a name="L63"></a><tt class="py-lineno"> 63</tt>  <tt class="py-line">    <tt class="py-string">'VISIONEGG_GUI_ON_ERROR'</tt><tt class="py-op">:</tt>         <tt class="py-number">1</tt><tt class="py-op">,</tt> </tt>
+<a name="L64"></a><tt class="py-lineno"> 64</tt>  <tt class="py-line">    <tt class="py-string">'VISIONEGG_HIDE_MOUSE'</tt><tt class="py-op">:</tt>           <tt class="py-number">1</tt><tt class="py-op">,</tt> </tt>
+<a name="L65"></a><tt class="py-lineno"> 65</tt>  <tt class="py-line">    <tt class="py-string">'VISIONEGG_LOG_FILE'</tt><tt class="py-op">:</tt>             <tt class="py-string">'VisionEgg.log'</tt><tt class="py-op">,</tt> </tt>
+<a name="L66"></a><tt class="py-lineno"> 66</tt>  <tt class="py-line">    <tt class="py-string">'VISIONEGG_LOG_TO_STDERR'</tt><tt class="py-op">:</tt>        <tt class="py-number">1</tt><tt class="py-op">,</tt> </tt>
+<a name="L67"></a><tt class="py-lineno"> 67</tt>  <tt class="py-line">    <tt class="py-string">'VISIONEGG_MAXPRIORITY'</tt><tt class="py-op">:</tt>          <tt class="py-number">0</tt><tt class="py-op">,</tt> </tt>
+<a name="L68"></a><tt class="py-lineno"> 68</tt>  <tt class="py-line">    <tt class="py-string">'VISIONEGG_MONITOR_REFRESH_HZ'</tt><tt class="py-op">:</tt>   <tt class="py-number">60.0</tt><tt class="py-op">,</tt> </tt>
+<a name="L69"></a><tt class="py-lineno"> 69</tt>  <tt class="py-line">    <tt class="py-string">'VISIONEGG_MULTISAMPLE_SAMPLES'</tt><tt class="py-op">:</tt>  <tt class="py-number">0</tt><tt class="py-op">,</tt> </tt>
+<a name="L70"></a><tt class="py-lineno"> 70</tt>  <tt class="py-line">    <tt class="py-string">'VISIONEGG_PREFERRED_BPP'</tt><tt class="py-op">:</tt>        <tt class="py-number">32</tt><tt class="py-op">,</tt> </tt>
+<a name="L71"></a><tt class="py-lineno"> 71</tt>  <tt class="py-line">    <tt class="py-string">'VISIONEGG_REQUEST_ALPHA_BITS'</tt><tt class="py-op">:</tt>   <tt class="py-number">8</tt><tt class="py-op">,</tt> </tt>
+<a name="L72"></a><tt class="py-lineno"> 72</tt>  <tt class="py-line">    <tt class="py-string">'VISIONEGG_REQUEST_BLUE_BITS'</tt><tt class="py-op">:</tt>    <tt class="py-number">8</tt><tt class="py-op">,</tt> </tt>
+<a name="L73"></a><tt class="py-lineno"> 73</tt>  <tt class="py-line">    <tt class="py-string">'VISIONEGG_REQUEST_GREEN_BITS'</tt><tt class="py-op">:</tt>   <tt class="py-number">8</tt><tt class="py-op">,</tt> </tt>
+<a name="L74"></a><tt class="py-lineno"> 74</tt>  <tt class="py-line">    <tt class="py-string">'VISIONEGG_REQUEST_RED_BITS'</tt><tt class="py-op">:</tt>     <tt class="py-number">8</tt><tt class="py-op">,</tt> </tt>
+<a name="L75"></a><tt class="py-lineno"> 75</tt>  <tt class="py-line">    <tt class="py-string">'VISIONEGG_REQUEST_STEREO'</tt><tt class="py-op">:</tt>       <tt class="py-number">0</tt><tt class="py-op">,</tt> </tt>
+<a name="L76"></a><tt class="py-lineno"> 76</tt>  <tt class="py-line">    <tt class="py-string">'VISIONEGG_SCREEN_W'</tt><tt class="py-op">:</tt>             <tt class="py-number">640</tt><tt class="py-op">,</tt> </tt>
+<a name="L77"></a><tt class="py-lineno"> 77</tt>  <tt class="py-line">    <tt class="py-string">'VISIONEGG_SCREEN_H'</tt><tt class="py-op">:</tt>             <tt class="py-number">480</tt><tt class="py-op">,</tt> </tt>
+<a name="L78"></a><tt class="py-lineno"> 78</tt>  <tt class="py-line">    <tt class="py-string">'VISIONEGG_SYNC_SWAP'</tt><tt class="py-op">:</tt>            <tt class="py-number">1</tt><tt class="py-op">,</tt> </tt>
+<a name="L79"></a><tt class="py-lineno"> 79</tt>  <tt class="py-line">    <tt class="py-string">'VISIONEGG_TKINTER_OK'</tt><tt class="py-op">:</tt>           <tt class="py-number">1</tt><tt class="py-op">,</tt> </tt>
+<a name="L80"></a><tt class="py-lineno"> 80</tt>  <tt class="py-line">    <tt class="py-string">'SYNCLYNC_PRESENT'</tt><tt class="py-op">:</tt>               <tt class="py-number">0</tt><tt class="py-op">,</tt> </tt>
+<a name="L81"></a><tt class="py-lineno"> 81</tt>  <tt class="py-line">    <tt class="py-op">}</tt> </tt>
+<a name="L82"></a><tt class="py-lineno"> 82</tt>  <tt class="py-line"><tt class="py-keyword">if</tt> <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">platform</tt><tt class="py-op">.</tt><tt class="py-name">startswith</tt><tt class="py-op">(</tt><tt class="py-string">'linux'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L83"></a><tt class="py-lineno"> 83</tt>  <tt class="py-line">    <tt id="link-2" class="py-name"><a title="VisionEgg.Configuration.defaults" class="py-name" href="#" onclick="return doclink('link-2', 'defaults', 'link-1');">defaults</a></tt><tt class="py-op">[</tt><tt class="py-string">'VISIONEGG_PREFERRED_BPP'</tt><tt class="py-op">]</tt><tt class="py-op">=</tt><tt class="py-number">24</tt> </tt>
+<a name="L84"></a><tt class="py-lineno"> 84</tt>  <tt class="py-line"> </tt>
+<a name="L85"></a><tt class="py-lineno"> 85</tt>  <tt class="py-line"><tt id="link-3" class="py-name" targets="Variable VisionEgg.Configuration.extra_darwin_defaults=VisionEgg.Configuration-module.html#extra_darwin_defaults"><a title="VisionEgg.Configuration.extra_darwin_defaults" class="py-name" href="#" onclick="return doclink('link-3', 'extra_darwin_defaults', 'link-3');">extra_darwin_defaults</a></tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> </tt>
+<a name="L86"></a><tt class="py-lineno"> 86</tt>  <tt class="py-line">    <tt class="py-string">'VISIONEGG_DARWIN_MAXPRIORITY_CONVENTIONAL_NOT_REALTIME'</tt>  <tt class="py-op">:</tt> <tt class="py-number">1</tt><tt class="py-op">,</tt> </tt>
+<a name="L87"></a><tt class="py-lineno"> 87</tt>  <tt class="py-line">    <tt class="py-string">'VISIONEGG_DARWIN_CONVENTIONAL_PRIORITY'</tt>                  <tt class="py-op">:</tt> <tt class="py-op">-</tt><tt class="py-number">20</tt><tt class="py-op">,</tt> <tt class="py-comment"># -20 is best priority</tt> </tt>
+<a name="L88"></a><tt class="py-lineno"> 88</tt>  <tt class="py-line">    <tt class="py-string">'VISIONEGG_DARWIN_REALTIME_PERIOD_DENOM'</tt>                  <tt class="py-op">:</tt> <tt class="py-number">120</tt><tt class="py-op">,</tt> </tt>
+<a name="L89"></a><tt class="py-lineno"> 89</tt>  <tt class="py-line">    <tt class="py-string">'VISIONEGG_DARWIN_REALTIME_COMPUTATION_DENOM'</tt>             <tt class="py-op">:</tt> <tt class="py-number">2400</tt><tt class="py-op">,</tt> </tt>
+<a name="L90"></a><tt class="py-lineno"> 90</tt>  <tt class="py-line">    <tt class="py-string">'VISIONEGG_DARWIN_REALTIME_CONSTRAINT_DENOM'</tt>              <tt class="py-op">:</tt> <tt class="py-number">1200</tt><tt class="py-op">,</tt> </tt>
+<a name="L91"></a><tt class="py-lineno"> 91</tt>  <tt class="py-line">    <tt class="py-string">'VISIONEGG_DARWIN_REALTIME_PREEMPTIBLE'</tt>                   <tt class="py-op">:</tt> <tt class="py-number">0</tt><tt class="py-op">,</tt> </tt>
+<a name="L92"></a><tt class="py-lineno"> 92</tt>  <tt class="py-line">    <tt class="py-string">'VISIONEGG_DARWIN_PTHREAD_PRIORITY'</tt>                      <tt class="py-op">:</tt> <tt class="py-string">'max'</tt><tt class="py-op">,</tt> </tt>
+<a name="L93"></a><tt class="py-lineno"> 93</tt>  <tt class="py-line"><tt class="py-op">}</tt> </tt>
+<a name="L94"></a><tt class="py-lineno"> 94</tt>  <tt class="py-line"> </tt>
+<a name="Config"></a><div id="Config-def"><a name="L95"></a><tt class="py-lineno"> 95</tt> <a class="py-toggle" href="#" id="Config-toggle" onclick="return toggle('Config');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.Configuration.Config-class.html">Config</a><tt class="py-op">:</tt> </tt>
+</div><div id="Config-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="Config-expanded"><a name="L96"></a><tt class="py-lineno"> 96</tt>  <tt class="py-line">    <tt class="py-docstring">"""Holds global Vision Egg configuration information."""</tt> </tt>
+<a name="Config.__init__"></a><div id="Config.__init__-def"><a name="L97"></a><tt class="py-lineno"> 97</tt> <a class="py-toggle" href="#" id="Config.__init__-toggle" onclick="return toggle('Config.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.Configuration.Config-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Config.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Config.__init__-expanded"><a name="L98"></a><tt class="py-lineno"> 98</tt>  <tt class="py-line">        <tt class="py-docstring">"""Load global Vision Egg configuration information."""</tt> </tt>
+<a name="L99"></a><tt class="py-lineno"> 99</tt>  <tt class="py-line">        <tt class="py-name">cfg</tt> <tt class="py-op">=</tt> <tt class="py-name">ConfigParser</tt><tt class="py-op">.</tt><tt class="py-name">ConfigParser</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L100"></a><tt class="py-lineno">100</tt>  <tt class="py-line"> </tt>
+<a name="L101"></a><tt class="py-lineno">101</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">executable</tt> <tt class="py-op">==</tt> <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">argv</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> <tt class="py-comment"># Windows binary</tt> </tt>
+<a name="L102"></a><tt class="py-lineno">102</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">VISIONEGG_SYSTEM_DIR</tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">curdir</tt> </tt>
+<a name="L103"></a><tt class="py-lineno">103</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">VISIONEGG_USER_DIR</tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">curdir</tt> </tt>
+<a name="L104"></a><tt class="py-lineno">104</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L105"></a><tt class="py-lineno">105</tt>  <tt class="py-line">            <tt class="py-comment"># non-standard VisionEgg installations</tt> </tt>
+<a name="L106"></a><tt class="py-lineno">106</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L107"></a><tt class="py-lineno">107</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">VISIONEGG_SYSTEM_DIR</tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">environ</tt><tt class="py-op">[</tt><tt class="py-string">'VISIONEGG_SYSTEM_DIR'</tt><tt class="py-op">]</tt> </tt>
+<a name="L108"></a><tt class="py-lineno">108</tt>  <tt class="py-line">            <tt class="py-keyword">except</tt> <tt class="py-name">KeyError</tt><tt class="py-op">:</tt> </tt>
+<a name="L109"></a><tt class="py-lineno">109</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">VISIONEGG_SYSTEM_DIR</tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">path</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-name">__file__</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py- [...]
+<a name="L110"></a><tt class="py-lineno">110</tt>  <tt class="py-line">            <tt class="py-name">user_dir</tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">path</tt><tt class="py-op">.</tt><tt class="py-name">expanduser</tt><tt class="py-op">(</tt><tt class="py-string">"~"</tt><tt class="py-op">)</tt> </tt>
+<a name="L111"></a><tt class="py-lineno">111</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">VISIONEGG_USER_DIR</tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">path</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">user_dir</tt><tt class="py-op">,</tt><tt class="py-string">"VisionEgg"</tt><tt class="py-op">)</tt> </tt>
+<a name="L112"></a><tt class="py-lineno">112</tt>  <tt class="py-line"> </tt>
+<a name="L113"></a><tt class="py-lineno">113</tt>  <tt class="py-line">        <tt class="py-comment"># See if there's an environment variable for the config file</tt> </tt>
+<a name="L114"></a><tt class="py-lineno">114</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-string">'VISIONEGG_CONFIG_FILE'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">environ</tt><tt class="py-op">.</tt><tt class="py-name">keys</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L115"></a><tt class="py-lineno">115</tt>  <tt class="py-line">            <tt class="py-name">configFile</tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">environ</tt><tt class="py-op">[</tt><tt class="py-string">'VISIONEGG_CONFIG_FILE'</tt><tt class="py-op">]</tt> </tt>
+<a name="L116"></a><tt class="py-lineno">116</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L117"></a><tt class="py-lineno">117</tt>  <tt class="py-line">            <tt class="py-comment"># Is there one in VISIONEGG_USER_DIR?</tt> </tt>
+<a name="L118"></a><tt class="py-lineno">118</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">configFile</tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">path</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">VISIONEGG_USER_DIR</tt><tt class="py-op">,</tt><tt class="py-string">"VisionEgg.cfg"</tt>< [...]
+<a name="L119"></a><tt class="py-lineno">119</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">path</tt><tt class="py-op">.</tt><tt class="py-name">isfile</tt><tt class="py-op">(</tt><tt class="py-name">configFile</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L120"></a><tt class="py-lineno">120</tt>  <tt class="py-line">                <tt class="py-name">configFile</tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">path</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">VISIONEGG_SYSTEM_DIR</tt><tt class="py-op">,</tt><tt class="py-string">"VisionEgg.cfg"</tt><tt class="py-op">)</tt> </tt>
+<a name="L121"></a><tt class="py-lineno">121</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">path</tt><tt class="py-op">.</tt><tt class="py-name">isfile</tt><tt class="py-op">(</tt><tt class="py-name">configFile</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L122"></a><tt class="py-lineno">122</tt>  <tt class="py-line">                    <tt class="py-name">configFile</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> <tt class="py-comment"># No file, use defaults specified in environment variables then here</tt> </tt>
+<a name="L123"></a><tt class="py-lineno">123</tt>  <tt class="py-line"> </tt>
+<a name="L124"></a><tt class="py-lineno">124</tt>  <tt class="py-line">        <tt class="py-keyword">print</tt> <tt class="py-string">'configFile'</tt><tt class="py-op">,</tt><tt class="py-name">configFile</tt> </tt>
+<a name="L125"></a><tt class="py-lineno">125</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">configFile</tt><tt class="py-op">:</tt> </tt>
+<a name="L126"></a><tt class="py-lineno">126</tt>  <tt class="py-line">            <tt class="py-name">cfg</tt><tt class="py-op">.</tt><tt class="py-name">read</tt><tt class="py-op">(</tt><tt class="py-name">configFile</tt><tt class="py-op">)</tt> </tt>
+<a name="L127"></a><tt class="py-lineno">127</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L128"></a><tt class="py-lineno">128</tt>  <tt class="py-line">            <tt class="py-comment"># pretend we have a config file</tt> </tt>
+<a name="L129"></a><tt class="py-lineno">129</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">cfg</tt><tt class="py-op">.</tt><tt class="py-name">add_section</tt><tt class="py-op">(</tt><tt class="py-string">'General'</tt><tt class="py-op">)</tt> </tt>
+<a name="L130"></a><tt class="py-lineno">130</tt>  <tt class="py-line">            <tt class="py-keyword">for</tt> <tt class="py-name">key</tt> <tt class="py-keyword">in</tt> <tt id="link-4" class="py-name"><a title="VisionEgg.Configuration.defaults" class="py-name" href="#" onclick="return doclink('link-4', 'defaults', 'link-1');">defaults</a></tt><tt class="py-op">.</tt><tt class="py-name">keys</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L131"></a><tt class="py-lineno">131</tt>  <tt class="py-line">                <tt class="py-name">cfg</tt><tt class="py-op">.</tt><tt id="link-5" class="py-name" targets="Method VisionEgg.ClassWithParameters.set()=VisionEgg.ClassWithParameters-class.html#set"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-5', 'set', 'link-5');">set</a></tt><tt class="py-op">(</tt><tt class="py-string">'General'</tt><tt class="py-op">,</tt><tt  [...]
+<a name="L132"></a><tt class="py-lineno">132</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">platform</tt> <tt class="py-op">==</tt> <tt class="py-string">'darwin'</tt><tt class="py-op">:</tt> </tt>
+<a name="L133"></a><tt class="py-lineno">133</tt>  <tt class="py-line">                <tt class="py-name">cfg</tt><tt class="py-op">.</tt><tt class="py-name">add_section</tt><tt class="py-op">(</tt><tt class="py-string">'darwin'</tt><tt class="py-op">)</tt> </tt>
+<a name="L134"></a><tt class="py-lineno">134</tt>  <tt class="py-line">                <tt class="py-keyword">for</tt> <tt class="py-name">key</tt> <tt class="py-keyword">in</tt> <tt id="link-7" class="py-name"><a title="VisionEgg.Configuration.extra_darwin_defaults" class="py-name" href="#" onclick="return doclink('link-7', 'extra_darwin_defaults', 'link-3');">extra_darwin_defaults</a></tt><tt class="py-op">.</tt><tt class="py-name">keys</tt><tt class="py-op">(</tt><tt class="py-op">)</ [...]
+<a name="L135"></a><tt class="py-lineno">135</tt>  <tt class="py-line">                    <tt class="py-name">cfg</tt><tt class="py-op">.</tt><tt id="link-8" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-8', 'set', 'link-5');">set</a></tt><tt class="py-op">(</tt><tt class="py-string">'darwin'</tt><tt class="py-op">,</tt><tt class="py-name">key</tt><tt class="py-op">,</tt><tt class="py-name">str</tt><tt class="py-op">( [...]
+<a name="L136"></a><tt class="py-lineno">136</tt>  <tt class="py-line"> </tt>
+<a name="L137"></a><tt class="py-lineno">137</tt>  <tt class="py-line">        <tt class="py-comment"># Do the general stuff first</tt> </tt>
+<a name="L138"></a><tt class="py-lineno">138</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># Set the default values</tt> </tt>
+<a name="L139"></a><tt class="py-lineno">139</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">for</tt> <tt class="py-name">name</tt> <tt class="py-keyword">in</tt> <tt id="link-10" class="py-name"><a title="VisionEgg.Configuration.defaults" class="py-name" href="#" onclick="return doclink('link-10', 'defaults', 'link-1');">defaults</a></tt><tt class="py-op">.</tt><tt class="py-name">keys</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py [...]
+<a name="L140"></a><tt class="py-lineno">140</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">name</tt> <tt class="py-keyword">in</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">environ</tt><tt class="py-op">.</tt><tt class="py-name">keys</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L141"></a><tt class="py-lineno">141</tt>  <tt class="py-line">                <tt class="py-name">value</tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">environ</tt><tt class="py-op">[</tt><tt class="py-name">name</tt><tt class="py-op">]</tt> </tt>
+<a name="L142"></a><tt class="py-lineno">142</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L143"></a><tt class="py-lineno">143</tt>  <tt class="py-line">                <tt class="py-name">value</tt> <tt class="py-op">=</tt> <tt id="link-11" class="py-name"><a title="VisionEgg.Configuration.defaults" class="py-name" href="#" onclick="return doclink('link-11', 'defaults', 'link-1');">defaults</a></tt><tt class="py-op">[</tt><tt class="py-name">name</tt><tt class="py-op">]</tt> </tt>
+<a name="L144"></a><tt class="py-lineno">144</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt id="link-12" class="py-name"><a title="VisionEgg.Configuration.defaults" class="py-name" href="#" onclick="return doclink('link-12', 'defaults', 'link-1');">defaults</a></tt><tt class="py-op">[</tt><tt class="py-name">name</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt id="link-13" class="py-name" target [...]
+<a name="L145"></a><tt class="py-lineno">145</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">value</tt> <tt class="py-op">==</tt> <tt class="py-string">'False'</tt><tt class="py-op">:</tt> </tt>
+<a name="L146"></a><tt class="py-lineno">146</tt>  <tt class="py-line">                    <tt class="py-name">value</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L147"></a><tt class="py-lineno">147</tt>  <tt class="py-line">                <tt class="py-keyword">elif</tt> <tt class="py-name">value</tt> <tt class="py-op">==</tt> <tt class="py-string">'True'</tt><tt class="py-op">:</tt> </tt>
+<a name="L148"></a><tt class="py-lineno">148</tt>  <tt class="py-line">                    <tt class="py-name">value</tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L149"></a><tt class="py-lineno">149</tt>  <tt class="py-line">                <tt class="py-name">setattr</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt><tt class="py-name">name</tt><tt class="py-op">,</tt><tt id="link-14" class="py-name"><a title="int" class="py-name" href="#" onclick="return doclink('link-14', 'int', 'link-13');">int</a></tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L150"></a><tt class="py-lineno">150</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt id="link-15" class="py-name"><a title="VisionEgg.Configuration.defaults" class="py-name" href="#" onclick="return doclink('link-15', 'defaults', 'link-1');">defaults</a></tt><tt class="py-op">[</tt><tt class="py-name">name</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt id="link-16" class="py-name" targ [...]
+<a name="L151"></a><tt class="py-lineno">151</tt>  <tt class="py-line">                <tt class="py-name">setattr</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt><tt class="py-name">name</tt><tt class="py-op">,</tt><tt id="link-17" class="py-name"><a title="float" class="py-name" href="#" onclick="return doclink('link-17', 'float', 'link-16');">float</a></tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">)</tt><tt class="py-op">) [...]
+<a name="L152"></a><tt class="py-lineno">152</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L153"></a><tt class="py-lineno">153</tt>  <tt class="py-line">                <tt class="py-name">setattr</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt><tt class="py-name">name</tt><tt class="py-op">,</tt><tt class="py-name">value</tt><tt class="py-op">)</tt> </tt>
+<a name="L154"></a><tt class="py-lineno">154</tt>  <tt class="py-line"> </tt>
+<a name="L155"></a><tt class="py-lineno">155</tt>  <tt class="py-line">        <tt class="py-comment"># Get the values from the configFile</tt> </tt>
+<a name="L156"></a><tt class="py-lineno">156</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">general_options</tt> <tt class="py-op">=</tt> <tt class="py-name">cfg</tt><tt class="py-op">.</tt><tt class="py-name">options</tt><tt class="py-op">(</tt><tt class="py-string">'General'</tt><tt class="py-op">)</tt> </tt>
+<a name="L157"></a><tt class="py-lineno">157</tt>  <tt class="py-line"> </tt>
+<a name="L158"></a><tt class="py-lineno">158</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_delayed_configuration_log_warnings</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> <tt class="py-comment"># chick and egg problem</tt> </tt>
+<a name="L159"></a><tt class="py-lineno">159</tt>  <tt class="py-line">        <tt class="py-comment"># set defaults from config file</tt> </tt>
+<a name="L160"></a><tt class="py-lineno">160</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">for</tt> <tt class="py-name">option</tt> <tt class="py-keyword">in</tt> <tt class="py-name">general_options</tt><tt class="py-op">:</tt> </tt>
+<a name="L161"></a><tt class="py-lineno">161</tt>  <tt class="py-line">            <tt class="py-name">name</tt> <tt class="py-op">=</tt> <tt class="py-name">option</tt><tt class="py-op">.</tt><tt class="py-name">upper</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L162"></a><tt class="py-lineno">162</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">name</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt id="link-18" class="py-name"><a title="VisionEgg.Configuration.defaults" class="py-name" href="#" onclick="return doclink('link-18', 'defaults', 'link-1');">defaults</a></tt><tt class="py-op">.</tt><tt class="py-name">keys</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt cl [...]
+<a name="L163"></a><tt class="py-lineno">163</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_delayed_configuration_log_warnings</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt> </tt>
+<a name="L164"></a><tt class="py-lineno">164</tt>  <tt class="py-line">                    <tt class="py-string">"While reading %s: The variable \"%s\" is not (anymore) a Vision Egg variable."</tt><tt class="py-op">%</tt><tt class="py-op">(</tt><tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">path</tt><tt class="py-op">.</tt><tt class="py-name">abspath</tt><tt class="py-op">(</tt><tt class="py-name">configFile</tt><tt class="py-op">)</tt><tt class="py-op">,</tt><tt  [...]
+<a name="L165"></a><tt class="py-lineno">165</tt>  <tt class="py-line">                <tt class="py-keyword">continue</tt> </tt>
+<a name="L166"></a><tt class="py-lineno">166</tt>  <tt class="py-line">            <tt class="py-name">value</tt> <tt class="py-op">=</tt> <tt class="py-name">cfg</tt><tt class="py-op">.</tt><tt id="link-19" class="py-name" targets="Method VisionEgg.PyroClient.PyroClient.get()=VisionEgg.PyroClient.PyroClient-class.html#get"><a title="VisionEgg.PyroClient.PyroClient.get" class="py-name" href="#" onclick="return doclink('link-19', 'get', 'link-19');">get</a></tt><tt class="py-op">(</tt><tt [...]
+<a name="L167"></a><tt class="py-lineno">167</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">name</tt> <tt class="py-keyword">in</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">environ</tt><tt class="py-op">.</tt><tt class="py-name">keys</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L168"></a><tt class="py-lineno">168</tt>  <tt class="py-line">                <tt class="py-name">value</tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">environ</tt><tt class="py-op">[</tt><tt class="py-name">name</tt><tt class="py-op">]</tt> </tt>
+<a name="L169"></a><tt class="py-lineno">169</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt id="link-20" class="py-name"><a title="VisionEgg.Configuration.defaults" class="py-name" href="#" onclick="return doclink('link-20', 'defaults', 'link-1');">defaults</a></tt><tt class="py-op">[</tt><tt class="py-name">name</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt id="link-21" class="py-name"><a tit [...]
+<a name="L170"></a><tt class="py-lineno">170</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">value</tt> <tt class="py-op">==</tt> <tt class="py-string">'False'</tt><tt class="py-op">:</tt> </tt>
+<a name="L171"></a><tt class="py-lineno">171</tt>  <tt class="py-line">                    <tt class="py-name">value</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L172"></a><tt class="py-lineno">172</tt>  <tt class="py-line">                <tt class="py-keyword">elif</tt> <tt class="py-name">value</tt> <tt class="py-op">==</tt> <tt class="py-string">'True'</tt><tt class="py-op">:</tt> </tt>
+<a name="L173"></a><tt class="py-lineno">173</tt>  <tt class="py-line">                    <tt class="py-name">value</tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L174"></a><tt class="py-lineno">174</tt>  <tt class="py-line">                <tt class="py-name">setattr</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt><tt class="py-name">name</tt><tt class="py-op">,</tt><tt id="link-22" class="py-name"><a title="int" class="py-name" href="#" onclick="return doclink('link-22', 'int', 'link-13');">int</a></tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L175"></a><tt class="py-lineno">175</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt id="link-23" class="py-name"><a title="VisionEgg.Configuration.defaults" class="py-name" href="#" onclick="return doclink('link-23', 'defaults', 'link-1');">defaults</a></tt><tt class="py-op">[</tt><tt class="py-name">name</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt id="link-24" class="py-name"><a t [...]
+<a name="L176"></a><tt class="py-lineno">176</tt>  <tt class="py-line">                <tt class="py-name">setattr</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt><tt class="py-name">name</tt><tt class="py-op">,</tt><tt id="link-25" class="py-name"><a title="float" class="py-name" href="#" onclick="return doclink('link-25', 'float', 'link-16');">float</a></tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">)</tt><tt class="py-op">) [...]
+<a name="L177"></a><tt class="py-lineno">177</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L178"></a><tt class="py-lineno">178</tt>  <tt class="py-line">                <tt class="py-name">setattr</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt><tt class="py-name">name</tt><tt class="py-op">,</tt><tt class="py-name">value</tt><tt class="py-op">)</tt> </tt>
+<a name="L179"></a><tt class="py-lineno">179</tt>  <tt class="py-line"> </tt>
+<a name="L180"></a><tt class="py-lineno">180</tt>  <tt class="py-line">        <tt class="py-comment"># Do platform specific stuff</tt> </tt>
+<a name="L181"></a><tt class="py-lineno">181</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># Set the default values</tt> </tt>
+<a name="L182"></a><tt class="py-lineno">182</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">platform_name</tt> <tt class="py-op">=</tt> <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">platform</tt> </tt>
+<a name="L183"></a><tt class="py-lineno">183</tt>  <tt class="py-line">        <tt class="py-name">extra_name</tt> <tt class="py-op">=</tt> <tt class="py-string">"extra_%s_defaults"</tt><tt class="py-op">%</tt><tt class="py-op">(</tt><tt class="py-name">platform_name</tt><tt class="py-op">,</tt><tt class="py-op">)</tt> </tt>
+<a name="L184"></a><tt class="py-lineno">184</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">extra_name</tt> <tt class="py-keyword">in</tt> <tt class="py-name">globals</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">keys</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L185"></a><tt class="py-lineno">185</tt>  <tt class="py-line">            <tt class="py-name">extra_defaults</tt> <tt class="py-op">=</tt> <tt class="py-name">globals</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-name">extra_name</tt><tt class="py-op">]</tt> </tt>
+<a name="L186"></a><tt class="py-lineno">186</tt>  <tt class="py-line">            <tt class="py-keyword">for</tt> <tt class="py-name">name</tt> <tt class="py-keyword">in</tt> <tt class="py-name">extra_defaults</tt><tt class="py-op">.</tt><tt class="py-name">keys</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L187"></a><tt class="py-lineno">187</tt>  <tt class="py-line">                <tt class="py-name">setattr</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt><tt class="py-name">name</tt><tt class="py-op">,</tt><tt class="py-name">extra_defaults</tt><tt class="py-op">[</tt><tt class="py-name">name</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L188"></a><tt class="py-lineno">188</tt>  <tt class="py-line"> </tt>
+<a name="L189"></a><tt class="py-lineno">189</tt>  <tt class="py-line">            <tt class="py-comment"># Get the values from the configFile</tt> </tt>
+<a name="L190"></a><tt class="py-lineno">190</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">platform_options</tt> <tt class="py-op">=</tt> <tt class="py-name">cfg</tt><tt class="py-op">.</tt><tt class="py-name">options</tt><tt class="py-op">(</tt><tt class="py-name">platform_name</tt><tt class="py-op">)</tt> </tt>
+<a name="L191"></a><tt class="py-lineno">191</tt>  <tt class="py-line">            <tt class="py-keyword">for</tt> <tt class="py-name">option</tt> <tt class="py-keyword">in</tt> <tt class="py-name">platform_options</tt><tt class="py-op">:</tt> </tt>
+<a name="L192"></a><tt class="py-lineno">192</tt>  <tt class="py-line">                <tt class="py-name">name</tt> <tt class="py-op">=</tt> <tt class="py-name">option</tt><tt class="py-op">.</tt><tt class="py-name">upper</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L193"></a><tt class="py-lineno">193</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">name</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">extra_defaults</tt><tt class="py-op">.</tt><tt class="py-name">keys</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L194"></a><tt class="py-lineno">194</tt>  <tt class="py-line">                    <tt class="py-keyword">raise</tt> <tt class="py-name">KeyError</tt><tt class="py-op">(</tt><tt class="py-string">"No Vision Egg configuration variable \"%s\""</tt><tt class="py-op">%</tt><tt class="py-name">option</tt><tt class="py-op">)</tt> </tt>
+<a name="L195"></a><tt class="py-lineno">195</tt>  <tt class="py-line">                <tt class="py-name">value</tt> <tt class="py-op">=</tt> <tt class="py-name">cfg</tt><tt class="py-op">.</tt><tt id="link-26" class="py-name"><a title="VisionEgg.PyroClient.PyroClient.get" class="py-name" href="#" onclick="return doclink('link-26', 'get', 'link-19');">get</a></tt><tt class="py-op">(</tt><tt class="py-name">platform_name</tt><tt class="py-op">,</tt><tt class="py-name">option</tt><tt clas [...]
+<a name="L196"></a><tt class="py-lineno">196</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">name</tt> <tt class="py-keyword">in</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">environ</tt><tt class="py-op">.</tt><tt class="py-name">keys</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L197"></a><tt class="py-lineno">197</tt>  <tt class="py-line">                    <tt class="py-name">value</tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">environ</tt><tt class="py-op">[</tt><tt class="py-name">name</tt><tt class="py-op">]</tt> </tt>
+<a name="L198"></a><tt class="py-lineno">198</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">extra_defaults</tt><tt class="py-op">[</tt><tt class="py-name">name</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt id="link-27" class="py-name"><a title="int" class="py-name" href="#" onclick="return doclink('link-27', 'int', 'link-13');">int</a></tt><tt class="py-op">)</tt><tt class= [...]
+<a name="L199"></a><tt class="py-lineno">199</tt>  <tt class="py-line">                    <tt class="py-keyword">if</tt> <tt class="py-name">value</tt> <tt class="py-op">==</tt> <tt class="py-string">'False'</tt><tt class="py-op">:</tt> </tt>
+<a name="L200"></a><tt class="py-lineno">200</tt>  <tt class="py-line">                        <tt class="py-name">value</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L201"></a><tt class="py-lineno">201</tt>  <tt class="py-line">                    <tt class="py-keyword">elif</tt> <tt class="py-name">value</tt> <tt class="py-op">==</tt> <tt class="py-string">'True'</tt><tt class="py-op">:</tt> </tt>
+<a name="L202"></a><tt class="py-lineno">202</tt>  <tt class="py-line">                        <tt class="py-name">value</tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L203"></a><tt class="py-lineno">203</tt>  <tt class="py-line">                    <tt class="py-name">setattr</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt><tt class="py-name">name</tt><tt class="py-op">,</tt><tt id="link-28" class="py-name"><a title="int" class="py-name" href="#" onclick="return doclink('link-28', 'int', 'link-13');">int</a></tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">)</tt><tt class="py-op">)</ [...]
+<a name="L204"></a><tt class="py-lineno">204</tt>  <tt class="py-line">                <tt class="py-keyword">elif</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">extra_defaults</tt><tt class="py-op">[</tt><tt class="py-name">name</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt id="link-29" class="py-name"><a title="float" class="py-name" href="#" onclick="return doclink('link-29', 'float', 'link-16');">float</a></tt><tt class="py-op">)</tt><t [...]
+<a name="L205"></a><tt class="py-lineno">205</tt>  <tt class="py-line">                    <tt class="py-name">setattr</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt><tt class="py-name">name</tt><tt class="py-op">,</tt><tt id="link-30" class="py-name"><a title="float" class="py-name" href="#" onclick="return doclink('link-30', 'float', 'link-16');">float</a></tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">)</tt><tt class="py-o [...]
+<a name="L206"></a><tt class="py-lineno">206</tt>  <tt class="py-line">                <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L207"></a><tt class="py-lineno">207</tt>  <tt class="py-line">                    <tt class="py-name">setattr</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt><tt class="py-name">name</tt><tt class="py-op">,</tt><tt class="py-name">value</tt><tt class="py-op">)</tt> </tt>
+<a name="L208"></a><tt class="py-lineno">208</tt>  <tt class="py-line"> </tt>
+<a name="L209"></a><tt class="py-lineno">209</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt><tt class="py-op">(</tt><tt class="py-name">configFile</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L210"></a><tt class="py-lineno">210</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">VISIONEGG_CONFIG_FILE</tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">path</tt><tt class="py-op">.</tt><tt class="py-name">abspath</tt><tt class="py-op">(</tt><tt class="py-name">configFile</tt><tt class="py-op">)</tt> </tt>
+<a name="L211"></a><tt class="py-lineno">211</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L212"></a><tt class="py-lineno">212</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">VISIONEGG_CONFIG_FILE</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+</div></div><a name="L213"></a><tt class="py-lineno">213</tt>  <tt class="py-line"> </tt>
+<a name="save_settings"></a><div id="save_settings-def"><a name="L214"></a><tt class="py-lineno">214</tt> <a class="py-toggle" href="#" id="save_settings-toggle" onclick="return toggle('save_settings');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.Configuration-module.html#save_settings">save_settings</a><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="save_settings-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="save_settings-expanded"><a name="L215"></a><tt class="py-lineno">215</tt>  <tt class="py-line">    <tt class="py-docstring">"""Save the current values to the config file, overwriting what is there."""</tt> </tt>
+<a name="L216"></a><tt class="py-lineno">216</tt>  <tt class="py-line"> </tt>
+<a name="L217"></a><tt class="py-lineno">217</tt>  <tt class="py-line">    <tt class="py-name">dont_save</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-string">'VISIONEGG_CONFIG_FILE'</tt><tt class="py-op">,</tt> </tt>
+<a name="L218"></a><tt class="py-lineno">218</tt>  <tt class="py-line">                 <tt class="py-string">'VISIONEGG_SYSTEM_DIR'</tt><tt class="py-op">,</tt> </tt>
+<a name="L219"></a><tt class="py-lineno">219</tt>  <tt class="py-line">                 <tt class="py-string">'VISIONEGG_USER_DIR'</tt><tt class="py-op">,</tt> </tt>
+<a name="L220"></a><tt class="py-lineno">220</tt>  <tt class="py-line">                 <tt class="py-op">]</tt> </tt>
+<a name="L221"></a><tt class="py-lineno">221</tt>  <tt class="py-line"> </tt>
+<a name="L222"></a><tt class="py-lineno">222</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt id="link-31" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-31', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-32" class="py-name" targets="Variable VisionEgg.config=VisionEgg-module.html#config"><a title="VisionEgg.config" class="py-name" href="#" onclick="return doclin [...]
+<a name="L223"></a><tt class="py-lineno">223</tt>  <tt class="py-line">        <tt class="py-keyword">raise</tt> <tt class="py-name">RuntimeError</tt><tt class="py-op">(</tt><tt class="py-string">"No config file in use."</tt><tt class="py-op">)</tt> </tt>
+<a name="L224"></a><tt class="py-lineno">224</tt>  <tt class="py-line">    <tt class="py-name">re_setting_finder</tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">compile</tt><tt class="py-op">(</tt><tt class="py-string">r"^\s?((?:VISIONEGG_[A-Z_]*)|(?:SYNCLYNC_[A-Z_]*))\s?=\s?(\S*)\s?$"</tt><tt class="py-op">,</tt><tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">IGNORECASE</tt><tt class="py-op">)</tt> </tt>
+<a name="L225"></a><tt class="py-lineno">225</tt>  <tt class="py-line"> </tt>
+<a name="L226"></a><tt class="py-lineno">226</tt>  <tt class="py-line">    <tt class="py-name">orig_file</tt> <tt class="py-op">=</tt> <tt class="py-name">open</tt><tt class="py-op">(</tt><tt id="link-33" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-33', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-34" class="py-name"><a title="VisionEgg.config" class="py-name" href="#" onclick="return doclink('link-34', 'c [...]
+<a name="L227"></a><tt class="py-lineno">227</tt>  <tt class="py-line">    <tt class="py-name">orig_lines</tt> <tt class="py-op">=</tt> <tt class="py-name">orig_file</tt><tt class="py-op">.</tt><tt class="py-name">readlines</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L228"></a><tt class="py-lineno">228</tt>  <tt class="py-line"> </tt>
+<a name="L229"></a><tt class="py-lineno">229</tt>  <tt class="py-line">    <tt class="py-name">line_ending</tt> <tt class="py-op">=</tt> <tt class="py-name">orig_lines</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">2</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> </tt>
+<a name="L230"></a><tt class="py-lineno">230</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">line_ending</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-op">[</tt><tt class="py-string">'\r'</tt><tt class="py-op">,</tt><tt class="py-string">'\n'</tt><tt class="py-op">,</tt><tt class="py-string">'\l'</tt><tt class="py-op">]</tt><tt class="py-op">:</ [...]
+<a name="L231"></a><tt class="py-lineno">231</tt>  <tt class="py-line">        <tt class="py-name">line_ending</tt> <tt class="py-op">=</tt> <tt class="py-name">line_ending</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
+<a name="L232"></a><tt class="py-lineno">232</tt>  <tt class="py-line"> </tt>
+<a name="L233"></a><tt class="py-lineno">233</tt>  <tt class="py-line">    <tt class="py-name">out_file_lines</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L234"></a><tt class="py-lineno">234</tt>  <tt class="py-line"> </tt>
+<a name="L235"></a><tt class="py-lineno">235</tt>  <tt class="py-line">    <tt class="py-name">saved_config_vars</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L236"></a><tt class="py-lineno">236</tt>  <tt class="py-line"> </tt>
+<a name="L237"></a><tt class="py-lineno">237</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">line</tt> <tt class="py-keyword">in</tt> <tt class="py-name">orig_lines</tt><tt class="py-op">:</tt> </tt>
+<a name="L238"></a><tt class="py-lineno">238</tt>  <tt class="py-line">        <tt class="py-name">out_line</tt> <tt class="py-op">=</tt> <tt class="py-name">line</tt> <tt class="py-comment"># The output is the same as the input unless there's a match</tt> </tt>
+<a name="L239"></a><tt class="py-lineno">239</tt>  <tt class="py-line">        <tt class="py-name">match</tt> <tt class="py-op">=</tt> <tt class="py-name">re_setting_finder</tt><tt class="py-op">.</tt><tt class="py-name">match</tt><tt class="py-op">(</tt><tt class="py-name">line</tt><tt class="py-op">)</tt> </tt>
+<a name="L240"></a><tt class="py-lineno">240</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">match</tt><tt class="py-op">:</tt> </tt>
+<a name="L241"></a><tt class="py-lineno">241</tt>  <tt class="py-line">            <tt class="py-name">name</tt> <tt class="py-op">=</tt> <tt class="py-name">match</tt><tt class="py-op">.</tt><tt class="py-name">group</tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">upper</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L242"></a><tt class="py-lineno">242</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">name</tt> <tt class="py-keyword">in</tt> <tt id="link-35" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-35', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-36" class="py-name"><a title="VisionEgg.config" class="py-name" href="#" onclick="return doclink('link-36', 'config', 'link [...]
+<a name="L243"></a><tt class="py-lineno">243</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">name</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">dont_save</tt><tt class="py-op">:</tt> </tt>
+<a name="L244"></a><tt class="py-lineno">244</tt>  <tt class="py-line">                    <tt class="py-comment"># Change the output line</tt> </tt>
+<a name="L245"></a><tt class="py-lineno">245</tt>  <tt class="py-line"><tt class="py-comment"></tt>                    <tt class="py-name">out_line</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-string">"%s = %s"</tt><tt class="py-op">%</tt><tt class="py-op">(</tt><tt class="py-name">name</tt><tt class="py-op">,</tt><tt class="py-name">getattr</tt><tt class="py-op">(</tt><tt id="link-37" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return do [...]
+<a name="L246"></a><tt class="py-lineno">246</tt>  <tt class="py-line">                    <tt class="py-name">saved_config_vars</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">name</tt><tt class="py-op">)</tt> </tt>
+<a name="L247"></a><tt class="py-lineno">247</tt>  <tt class="py-line">        <tt class="py-name">out_file_lines</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">out_line</tt><tt class="py-op">)</tt> </tt>
+<a name="L248"></a><tt class="py-lineno">248</tt>  <tt class="py-line"> </tt>
+<a name="L249"></a><tt class="py-lineno">249</tt>  <tt class="py-line">    <tt class="py-comment"># Close and reopen orig_file in write mode</tt> </tt>
+<a name="L250"></a><tt class="py-lineno">250</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">orig_file</tt><tt class="py-op">.</tt><tt id="link-39" class="py-name" targets="Method VisionEgg.Core.Screen.close()=VisionEgg.Core.Screen-class.html#close"><a title="VisionEgg.Core.Screen.close" class="py-name" href="#" onclick="return doclink('link-39', 'close', 'link-39');">close</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L251"></a><tt class="py-lineno">251</tt>  <tt class="py-line">    <tt class="py-name">orig_file</tt> <tt class="py-op">=</tt> <tt class="py-name">open</tt><tt class="py-op">(</tt><tt id="link-40" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-40', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-41" class="py-name"><a title="VisionEgg.config" class="py-name" href="#" onclick="return doclink('link-41', 'c [...]
+<a name="L252"></a><tt class="py-lineno">252</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">line</tt> <tt class="py-keyword">in</tt> <tt class="py-name">out_file_lines</tt><tt class="py-op">:</tt> </tt>
+<a name="L253"></a><tt class="py-lineno">253</tt>  <tt class="py-line">        <tt class="py-name">orig_file</tt><tt class="py-op">.</tt><tt class="py-name">write</tt><tt class="py-op">(</tt><tt class="py-name">line</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L254"></a><tt class="py-lineno">254</tt>  <tt class="py-line"> </tt><script type="text/javascript">
+<!--
+expandto(location.href);
+// -->
+</script>
+</pre>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:50 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.Configuration.Config-class.html b/doc/reference/html/VisionEgg.Configuration.Config-class.html
new file mode 100644
index 0000000..753b37b
--- /dev/null
+++ b/doc/reference/html/VisionEgg.Configuration.Config-class.html
@@ -0,0 +1,144 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.Configuration.Config</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.Configuration-module.html">Module Configuration</a> ::
+        Class Config
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.Configuration.Config-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class Config</h1><span class="codelink"><a href="VisionEgg.Configuration-pysrc.html#Config">source code</a></span><br /><br />
+<pre class="literalblock">
+Holds global Vision Egg configuration information.
+
+</pre><br /><br />
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__init__"></a><span class="summary-sig-name">__init__</span>(<span class="summary-sig-arg">self</span>)</span><br />
+      Load global Vision Egg configuration information.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.Configuration-pysrc.html#Config.__init__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.Core-module.html b/doc/reference/html/VisionEgg.Core-module.html
new file mode 100644
index 0000000..9dfe6b1
--- /dev/null
+++ b/doc/reference/html/VisionEgg.Core-module.html
@@ -0,0 +1,455 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.Core</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        Module Core
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.Core-module.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== MODULE DESCRIPTION ==================== -->
+<h1 class="epydoc">Module Core</h1><span class="codelink"><a href="VisionEgg.Core-pysrc.html">source code</a></span><br /><br />
+<pre class="literalblock">
+
+Core Vision Egg functionality.
+
+This module contains the architectural foundations of the Vision Egg.
+
+</pre><br /><br />
+
+<!-- ==================== CLASSES ==================== -->
+<a name="section-Classes"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Classes</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.Core.Screen-class.html" class="summary-name">Screen</a><br />
+      An OpenGL window, possibly displayed across multiple displays.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.Core.ProjectionBaseClass-class.html" class="summary-name">ProjectionBaseClass</a><br />
+      Converts stimulus coordinates to viewport coordinates.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.Core.Projection-class.html" class="summary-name">Projection</a><br />
+      for use of OpenGL PROJECTION_MATRIX...
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.Core.ModelView-class.html" class="summary-name">ModelView</a><br />
+      for use of OpenGL MODELVIEW_MATRIX...
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.Core.OrthographicProjection-class.html" class="summary-name">OrthographicProjection</a><br />
+      An orthographic projection.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.Core.OrthographicProjectionNoZClip-class.html" class="summary-name">OrthographicProjectionNoZClip</a><br />
+      An orthographic projection without Z clipping.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.Core.SimplePerspectiveProjection-class.html" class="summary-name">SimplePerspectiveProjection</a><br />
+      A simplified perspective projection.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.Core.PerspectiveProjection-class.html" class="summary-name">PerspectiveProjection</a><br />
+      A perspective projection.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.Core.Stimulus-class.html" class="summary-name">Stimulus</a><br />
+      Base class for a stimulus.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.Core.Viewport-class.html" class="summary-name">Viewport</a><br />
+      Connects stimuli to a screen.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.Core.FixationSpot-class.html" class="summary-name">FixationSpot</a><br />
+      A rectangle stimulus, typically used as a fixation spot.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.Core.FrameTimer-class.html" class="summary-name">FrameTimer</a><br />
+      Time inter frame intervals and compute frames per second.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.Deprecated.Message-class.html" class="summary-name">Message</a><br />
+      DEPRECATED Handles message/warning/error printing, exception raising.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.FlowControl.Presentation-class.html" class="summary-name">Presentation</a><br />
+      Handles the timing and coordination of stimulus presentation.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.FlowControl.Controller-class.html" class="summary-name">Controller</a><br />
+      Control parameters.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.FlowControl.ConstantController-class.html" class="summary-name">ConstantController</a><br />
+      Set parameters to a constant value.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.FlowControl.EvalStringController-class.html" class="summary-name">EvalStringController</a><br />
+      Set parameters using dynamically interpreted Python string.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.FlowControl.ExecStringController-class.html" class="summary-name">ExecStringController</a><br />
+      Set parameters using potentially complex Python string.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.FlowControl.FunctionController-class.html" class="summary-name">FunctionController</a><br />
+      Set parameters using a Python function.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.FlowControl.EncapsulatedController-class.html" class="summary-name">EncapsulatedController</a><br />
+      Set parameters by encapsulating another Controller.
+    </td>
+  </tr>
+</table>
+<!-- ==================== FUNCTIONS ==================== -->
+<a name="section-Functions"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Functions</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="sum"></a><span class="summary-sig-name">sum</span>(<span class="summary-sig-arg">values</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.Core-pysrc.html#sum">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="swap_buffers"></a><span class="summary-sig-name">swap_buffers</span>()</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.Core-pysrc.html#swap_buffers">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="get_default_screen"></a><span class="summary-sig-name">get_default_screen</span>()</span><br />
+      Make an instance of Screen using a GUI window or from config file.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.Core-pysrc.html#get_default_screen">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="add_gl_assumption"></a><span class="summary-sig-name">add_gl_assumption</span>(<span class="summary-sig-arg">gl_variable</span>,
+        <span class="summary-sig-arg">required_value</span>,
+        <span class="summary-sig-arg">failure_callback</span>)</span><br />
+      Save assumptions for later checking once OpenGL context created.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.Core-pysrc.html#add_gl_assumption">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="init_gl_extension"></a><span class="summary-sig-name">init_gl_extension</span>(<span class="summary-sig-arg">prefix</span>,
+        <span class="summary-sig-arg">name</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.Core-pysrc.html#init_gl_extension">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.Core-module.html#post_gl_init" class="summary-sig-name">post_gl_init</a>()</span><br />
+      Called by Screen instance.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.Core-pysrc.html#post_gl_init">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+</table>
+<!-- ==================== VARIABLES ==================== -->
+<a name="section-Variables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Variables</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="message"></a><span class="summary-name">message</span> = <code title="VisionEgg.Deprecated.Message()">VisionEgg.Deprecated.Message()</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="gl_assumptions"></a><span class="summary-name">gl_assumptions</span> = <code title="[]">[]</code>
+    </td>
+  </tr>
+</table>
+<!-- ==================== FUNCTION DETAILS ==================== -->
+<a name="section-FunctionDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Function Details</span></td>
+</tr>
+</table>
+<a name="post_gl_init"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">post_gl_init</span>()</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.Core-pysrc.html#post_gl_init">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Called by Screen instance. Requires OpenGL context to be created.
+
+</pre>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.Core-pysrc.html b/doc/reference/html/VisionEgg.Core-pysrc.html
new file mode 100644
index 0000000..27dc7d9
--- /dev/null
+++ b/doc/reference/html/VisionEgg.Core-pysrc.html
@@ -0,0 +1,3466 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.Core</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        Module Core
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.Core-pysrc.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<h1 class="epydoc">Source Code for <a href="VisionEgg.Core-module.html">Module VisionEgg.Core</a></h1>
+<pre class="py-src">
+<a name="L1"></a><tt class="py-lineno">   1</tt>  <tt class="py-line"><tt class="py-comment"># The Vision Egg: Core</tt> </tt>
+<a name="L2"></a><tt class="py-lineno">   2</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L3"></a><tt class="py-lineno">   3</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Copyright (C) 2001-2004 Andrew Straw</tt> </tt>
+<a name="L4"></a><tt class="py-lineno">   4</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Copyright (C) 2004-2008 California Institute of Technology</tt> </tt>
+<a name="L5"></a><tt class="py-lineno">   5</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L6"></a><tt class="py-lineno">   6</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># URL: <http://www.visionegg.org/></tt> </tt>
+<a name="L7"></a><tt class="py-lineno">   7</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L8"></a><tt class="py-lineno">   8</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Distributed under the terms of the GNU Lesser General Public License</tt> </tt>
+<a name="L9"></a><tt class="py-lineno">   9</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># (LGPL). See LICENSE.TXT that came with this file.</tt> </tt>
+<a name="L10"></a><tt class="py-lineno">  10</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L11"></a><tt class="py-lineno">  11</tt>  <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L12"></a><tt class="py-lineno">  12</tt>  <tt class="py-line"><tt class="py-docstring">Core Vision Egg functionality.</tt> </tt>
+<a name="L13"></a><tt class="py-lineno">  13</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L14"></a><tt class="py-lineno">  14</tt>  <tt class="py-line"><tt class="py-docstring">This module contains the architectural foundations of the Vision Egg.</tt> </tt>
+<a name="L15"></a><tt class="py-lineno">  15</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L16"></a><tt class="py-lineno">  16</tt>  <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L17"></a><tt class="py-lineno">  17</tt>  <tt class="py-line"> </tt>
+<a name="L18"></a><tt class="py-lineno">  18</tt>  <tt class="py-line"><tt class="py-comment">####################################################################</tt> </tt>
+<a name="L19"></a><tt class="py-lineno">  19</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L20"></a><tt class="py-lineno">  20</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#        Import all the necessary packages</tt> </tt>
+<a name="L21"></a><tt class="py-lineno">  21</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L22"></a><tt class="py-lineno">  22</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">####################################################################</tt> </tt>
+<a name="L23"></a><tt class="py-lineno">  23</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L24"></a><tt class="py-lineno">  24</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">sys</tt><tt class="py-op">,</tt> <tt class="py-name">types</tt><tt class="py-op">,</tt> <tt class="py-name">math</tt><tt class="py-op">,</tt> <tt class="py-name">time</tt><tt class="py-op">,</tt> <tt class="py-name">os</tt>               <tt class="py-comment"># standard Python modules</tt> </tt>
+<a name="L25"></a><tt class="py-lineno">  25</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">StringIO</tt> </tt>
+<a name="L26"></a><tt class="py-lineno">  26</tt>  <tt class="py-line"> </tt>
+<a name="L27"></a><tt class="py-lineno">  27</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">logging</tt>                                  <tt class="py-comment"># available in Python 2.3</tt> </tt>
+<a name="L28"></a><tt class="py-lineno">  28</tt>  <tt class="py-line"> </tt>
+<a name="L29"></a><tt class="py-lineno">  29</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-0" class="py-name" targets="Package VisionEgg=VisionEgg-module.html"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-0', 'VisionEgg', 'link-0');">VisionEgg</a></tt>                                <tt class="py-comment"># Vision Egg base module (__init__.py)</tt> </tt>
+<a name="L30"></a><tt class="py-lineno">  30</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-1" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-1', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-2" class="py-name" targets="Module VisionEgg.PlatformDependent=VisionEgg.PlatformDependent-module.html"><a title="VisionEgg.PlatformDependent" class="py-name" href="#" onclick="return doclink('l [...]
+<a name="L31"></a><tt class="py-lineno">  31</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-3" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-3', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-4" class="py-name" targets="Module VisionEgg.ParameterTypes=VisionEgg.ParameterTypes-module.html"><a title="VisionEgg.ParameterTypes" class="py-name" href="#" onclick="return doclink('link-4', ' [...]
+<a name="L32"></a><tt class="py-lineno">  32</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-5" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-5', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-6" class="py-name" targets="Module VisionEgg.GLTrace=VisionEgg.GLTrace-module.html"><a title="VisionEgg.GLTrace" class="py-name" href="#" onclick="return doclink('link-6', 'GLTrace', 'link-6');" [...]
+<a name="L33"></a><tt class="py-lineno">  33</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-7" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-7', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-8" class="py-name" targets="Module VisionEgg.ThreeDeeMath=VisionEgg.ThreeDeeMath-module.html"><a title="VisionEgg.ThreeDeeMath" class="py-name" href="#" onclick="return doclink('link-8', 'ThreeD [...]
+<a name="L34"></a><tt class="py-lineno">  34</tt>  <tt class="py-line"> </tt>
+<a name="L35"></a><tt class="py-lineno">  35</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">pygame</tt>                                   <tt class="py-comment"># pygame handles OpenGL window setup</tt> </tt>
+<a name="L36"></a><tt class="py-lineno">  36</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">pygame</tt><tt class="py-op">.</tt><tt class="py-name">locals</tt> </tt>
+<a name="L37"></a><tt class="py-lineno">  37</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">pygame</tt><tt class="py-op">.</tt><tt class="py-name">display</tt> </tt>
+<a name="L38"></a><tt class="py-lineno">  38</tt>  <tt class="py-line"> </tt>
+<a name="L39"></a><tt class="py-lineno">  39</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-9" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-9', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-10" class="py-name" targets="Module VisionEgg.GL=VisionEgg.GL-module.html"><a title="VisionEgg.GL" class="py-name" href="#" onclick="return doclink('link-10', 'GL', 'link-10');">GL</a></tt> <tt  [...]
+<a name="L40"></a><tt class="py-lineno">  40</tt>  <tt class="py-line"> </tt>
+<a name="L41"></a><tt class="py-lineno">  41</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">numpy</tt> </tt>
+<a name="L42"></a><tt class="py-lineno">  42</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">numpy</tt><tt class="py-op">.</tt><tt class="py-name">oldnumeric</tt> <tt class="py-keyword">as</tt> <tt class="py-name">Numeric</tt> <tt class="py-comment"># emulate old Numeric Python package</tt> </tt>
+<a name="L43"></a><tt class="py-lineno">  43</tt>  <tt class="py-line"> </tt>
+<a name="L44"></a><tt class="py-lineno">  44</tt>  <tt class="py-line"><tt class="py-comment"># Define "sum" if it's not available as Python function</tt> </tt>
+<a name="L45"></a><tt class="py-lineno">  45</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L46"></a><tt class="py-lineno">  46</tt>  <tt class="py-line">    <tt id="link-11" class="py-name" targets="Function VisionEgg.Core.sum()=VisionEgg.Core-module.html#sum"><a title="VisionEgg.Core.sum" class="py-name" href="#" onclick="return doclink('link-11', 'sum', 'link-11');">sum</a></tt> </tt>
+<a name="L47"></a><tt class="py-lineno">  47</tt>  <tt class="py-line"><tt class="py-keyword">except</tt> <tt class="py-name">NameError</tt><tt class="py-op">:</tt> </tt>
+<a name="L48"></a><tt class="py-lineno">  48</tt>  <tt class="py-line">    <tt class="py-keyword">import</tt> <tt class="py-name">operator</tt> </tt>
+<a name="sum"></a><div id="sum-def"><a name="L49"></a><tt class="py-lineno">  49</tt> <a class="py-toggle" href="#" id="sum-toggle" onclick="return toggle('sum');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.Core-module.html#sum">sum</a><tt class="py-op">(</tt> <tt class="py-param">values</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="sum-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="sum-expanded"><a name="L50"></a><tt class="py-lineno">  50</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">reduce</tt><tt class="py-op">(</tt><tt class="py-name">operator</tt><tt class="py-op">.</tt><tt id="link-12" class="py-name" targets="Method VisionEgg.Deprecated.Message.add()=VisionEgg.Deprecated.Message-class.html#add"><a title="VisionEgg.Depreca [...]
+</div><a name="L51"></a><tt class="py-lineno">  51</tt>  <tt class="py-line"> </tt>
+<a name="swap_buffers"></a><div id="swap_buffers-def"><a name="L52"></a><tt class="py-lineno">  52</tt> <a class="py-toggle" href="#" id="swap_buffers-toggle" onclick="return toggle('swap_buffers');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.Core-module.html#swap_buffers">swap_buffers</a><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="swap_buffers-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="swap_buffers-expanded"><a name="L53"></a><tt class="py-lineno">  53</tt>  <tt class="py-line">    <tt id="link-13" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-13', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-14" class="py-name" targets="Variable VisionEgg.config=VisionEgg-module.html#config"><a title="Visi [...]
+<a name="L54"></a><tt class="py-lineno">  54</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">pygame</tt><tt class="py-op">.</tt><tt class="py-name">display</tt><tt class="py-op">.</tt><tt class="py-name">flip</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L55"></a><tt class="py-lineno">  55</tt>  <tt class="py-line"> </tt>
+<a name="L56"></a><tt class="py-lineno">  56</tt>  <tt class="py-line"><tt class="py-comment">####################################################################</tt> </tt>
+<a name="L57"></a><tt class="py-lineno">  57</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L58"></a><tt class="py-lineno">  58</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#        Screen</tt> </tt>
+<a name="L59"></a><tt class="py-lineno">  59</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L60"></a><tt class="py-lineno">  60</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">####################################################################</tt> </tt>
+<a name="L61"></a><tt class="py-lineno">  61</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="Screen"></a><div id="Screen-def"><a name="L62"></a><tt class="py-lineno">  62</tt> <a class="py-toggle" href="#" id="Screen-toggle" onclick="return toggle('Screen');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.Core.Screen-class.html">Screen</a><tt class="py-op">(</tt><tt class="py-base-class">VisionEgg</tt><tt class="py-op">.</tt><tt class="py-base-class">ClassWithParameters</tt><tt class="py-op">)</tt><tt class="py-op">:</t [...]
+</div><div id="Screen-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="Screen-expanded"><a name="L63"></a><tt class="py-lineno">  63</tt>  <tt class="py-line">    <tt class="py-docstring">"""An OpenGL window, possibly displayed across multiple displays.</tt> </tt>
+<a name="L64"></a><tt class="py-lineno">  64</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L65"></a><tt class="py-lineno">  65</tt>  <tt class="py-line"><tt class="py-docstring">    A Screen instance is an OpenGL window for the Vision Egg to draw</tt> </tt>
+<a name="L66"></a><tt class="py-lineno">  66</tt>  <tt class="py-line"><tt class="py-docstring">    in.  For an instance of Screen to do anything useful, it must</tt> </tt>
+<a name="L67"></a><tt class="py-lineno">  67</tt>  <tt class="py-line"><tt class="py-docstring">    contain one or more instances of the Viewport class and one or</tt> </tt>
+<a name="L68"></a><tt class="py-lineno">  68</tt>  <tt class="py-line"><tt class="py-docstring">    more instances of the Stimulus class.</tt> </tt>
+<a name="L69"></a><tt class="py-lineno">  69</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L70"></a><tt class="py-lineno">  70</tt>  <tt class="py-line"><tt class="py-docstring">    Currently, only one OpenGL window is supported by the library with</tt> </tt>
+<a name="L71"></a><tt class="py-lineno">  71</tt>  <tt class="py-line"><tt class="py-docstring">    which the Vision Egg initializes graphics (pygame/SDL).  However,</tt> </tt>
+<a name="L72"></a><tt class="py-lineno">  72</tt>  <tt class="py-line"><tt class="py-docstring">    this need not limit display to a single physical display device.</tt> </tt>
+<a name="L73"></a><tt class="py-lineno">  73</tt>  <tt class="py-line"><tt class="py-docstring">    Many video drivers, for example, allow applications to treat two</tt> </tt>
+<a name="L74"></a><tt class="py-lineno">  74</tt>  <tt class="py-line"><tt class="py-docstring">    separate monitors as one large array of contiguous pixels.  By</tt> </tt>
+<a name="L75"></a><tt class="py-lineno">  75</tt>  <tt class="py-line"><tt class="py-docstring">    sizing a window such that it occupies both monitors and creating</tt> </tt>
+<a name="L76"></a><tt class="py-lineno">  76</tt>  <tt class="py-line"><tt class="py-docstring">    separate viewports for the portion of the window on each monitor,</tt> </tt>
+<a name="L77"></a><tt class="py-lineno">  77</tt>  <tt class="py-line"><tt class="py-docstring">    a multiple screen effect can be created.</tt> </tt>
+<a name="L78"></a><tt class="py-lineno">  78</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L79"></a><tt class="py-lineno">  79</tt>  <tt class="py-line"><tt class="py-docstring">    Public read-only variables</tt> </tt>
+<a name="L80"></a><tt class="py-lineno">  80</tt>  <tt class="py-line"><tt class="py-docstring">    ==========================</tt> </tt>
+<a name="L81"></a><tt class="py-lineno">  81</tt>  <tt class="py-line"><tt class="py-docstring">    size -- Tuple of 2 integers specifying width and height</tt> </tt>
+<a name="L82"></a><tt class="py-lineno">  82</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L83"></a><tt class="py-lineno">  83</tt>  <tt class="py-line"><tt class="py-docstring">    Parameters</tt> </tt>
+<a name="L84"></a><tt class="py-lineno">  84</tt>  <tt class="py-line"><tt class="py-docstring">    ==========</tt> </tt>
+<a name="L85"></a><tt class="py-lineno">  85</tt>  <tt class="py-line"><tt class="py-docstring">    bgcolor -- background color (AnyOf(Sequence3 of Real or Sequence4 of Real))</tt> </tt>
+<a name="L86"></a><tt class="py-lineno">  86</tt>  <tt class="py-line"><tt class="py-docstring">               Default: (0.5, 0.5, 0.5, 0.0)</tt> </tt>
+<a name="L87"></a><tt class="py-lineno">  87</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L88"></a><tt class="py-lineno">  88</tt>  <tt class="py-line"><tt class="py-docstring">    Constant Parameters</tt> </tt>
+<a name="L89"></a><tt class="py-lineno">  89</tt>  <tt class="py-line"><tt class="py-docstring">    ===================</tt> </tt>
+<a name="L90"></a><tt class="py-lineno">  90</tt>  <tt class="py-line"><tt class="py-docstring">    alpha_bits          -- number of bits per pixel for alpha channel. Can be set with VISIONEGG_REQUEST_ALPHA_BITS (UnsignedInteger)</tt> </tt>
+<a name="L91"></a><tt class="py-lineno">  91</tt>  <tt class="py-line"><tt class="py-docstring">                           Default: (determined at runtime)</tt> </tt>
+<a name="L92"></a><tt class="py-lineno">  92</tt>  <tt class="py-line"><tt class="py-docstring">    blue_bits           -- number of bits per pixel for blue channel. Can be set with VISIONEGG_REQUEST_BLUE_BITS (UnsignedInteger)</tt> </tt>
+<a name="L93"></a><tt class="py-lineno">  93</tt>  <tt class="py-line"><tt class="py-docstring">                           Default: (determined at runtime)</tt> </tt>
+<a name="L94"></a><tt class="py-lineno">  94</tt>  <tt class="py-line"><tt class="py-docstring">    double_buffer       -- use double buffering? Can be set with VISIONEGG_DOUBLE_BUFFER (Boolean)</tt> </tt>
+<a name="L95"></a><tt class="py-lineno">  95</tt>  <tt class="py-line"><tt class="py-docstring">                           Default: (determined at runtime)</tt> </tt>
+<a name="L96"></a><tt class="py-lineno">  96</tt>  <tt class="py-line"><tt class="py-docstring">    frameless           -- remove standard window frame? Can be set with VISIONEGG_FRAMELESS_WINDOW (Boolean)</tt> </tt>
+<a name="L97"></a><tt class="py-lineno">  97</tt>  <tt class="py-line"><tt class="py-docstring">                           Default: (determined at runtime)</tt> </tt>
+<a name="L98"></a><tt class="py-lineno">  98</tt>  <tt class="py-line"><tt class="py-docstring">    fullscreen          -- use full screen? Can be set with VISIONEGG_FULLSCREEN (Boolean)</tt> </tt>
+<a name="L99"></a><tt class="py-lineno">  99</tt>  <tt class="py-line"><tt class="py-docstring">                           Default: (determined at runtime)</tt> </tt>
+<a name="L100"></a><tt class="py-lineno"> 100</tt>  <tt class="py-line"><tt class="py-docstring">    green_bits          -- number of bits per pixel for green channel. Can be set with VISIONEGG_REQUEST_GREEN_BITS (UnsignedInteger)</tt> </tt>
+<a name="L101"></a><tt class="py-lineno"> 101</tt>  <tt class="py-line"><tt class="py-docstring">                           Default: (determined at runtime)</tt> </tt>
+<a name="L102"></a><tt class="py-lineno"> 102</tt>  <tt class="py-line"><tt class="py-docstring">    hide_mouse          -- hide the mouse cursor? Can be set with VISIONEGG_HIDE_MOUSE (Boolean)</tt> </tt>
+<a name="L103"></a><tt class="py-lineno"> 103</tt>  <tt class="py-line"><tt class="py-docstring">                           Default: (determined at runtime)</tt> </tt>
+<a name="L104"></a><tt class="py-lineno"> 104</tt>  <tt class="py-line"><tt class="py-docstring">    is_stereo           -- allocate stereo framebuffers? Can be set with VISIONEGG_REQUEST_STEREO (Boolean)</tt> </tt>
+<a name="L105"></a><tt class="py-lineno"> 105</tt>  <tt class="py-line"><tt class="py-docstring">                           Default: (determined at runtime)</tt> </tt>
+<a name="L106"></a><tt class="py-lineno"> 106</tt>  <tt class="py-line"><tt class="py-docstring">    maxpriority         -- raise priority? (platform dependent) Can be set with VISIONEGG_MAXPRIORITY (Boolean)</tt> </tt>
+<a name="L107"></a><tt class="py-lineno"> 107</tt>  <tt class="py-line"><tt class="py-docstring">                           Default: (determined at runtime)</tt> </tt>
+<a name="L108"></a><tt class="py-lineno"> 108</tt>  <tt class="py-line"><tt class="py-docstring">    multisample_samples -- preferred number of multisamples for FSAA (UnsignedInteger)</tt> </tt>
+<a name="L109"></a><tt class="py-lineno"> 109</tt>  <tt class="py-line"><tt class="py-docstring">                           Default: (determined at runtime)</tt> </tt>
+<a name="L110"></a><tt class="py-lineno"> 110</tt>  <tt class="py-line"><tt class="py-docstring">    preferred_bpp       -- preferred bits per pixel (bit depth) Can be set with VISIONEGG_PREFERRED_BPP (UnsignedInteger)</tt> </tt>
+<a name="L111"></a><tt class="py-lineno"> 111</tt>  <tt class="py-line"><tt class="py-docstring">                           Default: (determined at runtime)</tt> </tt>
+<a name="L112"></a><tt class="py-lineno"> 112</tt>  <tt class="py-line"><tt class="py-docstring">    red_bits            -- number of bits per pixel for red channel. Can be set with VISIONEGG_REQUEST_RED_BITS (UnsignedInteger)</tt> </tt>
+<a name="L113"></a><tt class="py-lineno"> 113</tt>  <tt class="py-line"><tt class="py-docstring">                           Default: (determined at runtime)</tt> </tt>
+<a name="L114"></a><tt class="py-lineno"> 114</tt>  <tt class="py-line"><tt class="py-docstring">    size                -- size (units: pixels) Can be set with VISIONEGG_SCREEN_W and VISIONEGG_SCREEN_H (Sequence2 of Real)</tt> </tt>
+<a name="L115"></a><tt class="py-lineno"> 115</tt>  <tt class="py-line"><tt class="py-docstring">                           Default: (determined at runtime)</tt> </tt>
+<a name="L116"></a><tt class="py-lineno"> 116</tt>  <tt class="py-line"><tt class="py-docstring">    sync_swap           -- synchronize buffer swaps to vertical sync? Can be set with VISIONEGG_SYNC_SWAP (Boolean)</tt> </tt>
+<a name="L117"></a><tt class="py-lineno"> 117</tt>  <tt class="py-line"><tt class="py-docstring">                           Default: (determined at runtime)</tt> </tt>
+<a name="L118"></a><tt class="py-lineno"> 118</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L119"></a><tt class="py-lineno"> 119</tt>  <tt class="py-line"> </tt>
+<a name="L120"></a><tt class="py-lineno"> 120</tt>  <tt class="py-line">    <tt id="link-15" class="py-name" targets="Variable VisionEgg.ClassWithParameters.parameters_and_defaults=VisionEgg.ClassWithParameters-class.html#parameters_and_defaults,Variable VisionEgg.Core.FixationSpot.parameters_and_defaults=VisionEgg.Core.FixationSpot-class.html#parameters_and_defaults,Variable VisionEgg.Core.ProjectionBaseClass.parameters_and_defaults=VisionEgg.Core.ProjectionBaseClass-class.html#paramete [...]
+VisionEgg.Core.FixationSpot.parameters_and_defaults
+VisionEgg.Core.ProjectionBaseClass.parameters_and_defaults
+VisionEgg.Core.Screen.parameters_and_defaults
+VisionEgg.Core.Viewport.parameters_and_defaults
+VisionEgg.Daq.Buffered.parameters_and_defaults
+VisionEgg.Dots.DotArea2D.parameters_and_defaults
+VisionEgg.FlowControl.Presentation.parameters_and_defaults
+VisionEgg.Gratings.AlphaGratingCommon.parameters_and_defaults
+VisionEgg.Gratings.LuminanceGratingCommon.parameters_and_defaults
+VisionEgg.Gratings.SinGrating2D.parameters_and_defaults
+VisionEgg.Gratings.SinGrating3D.parameters_and_defaults
+VisionEgg.MoreStimuli.Arrow.parameters_and_defaults
+VisionEgg.MoreStimuli.FilledCircle.parameters_and_defaults
+VisionEgg.MoreStimuli.Rectangle3D.parameters_and_defaults
+VisionEgg.MoreStimuli.Target2D.parameters_and_defaults
+VisionEgg.PyroApps.EPhysGUI.Loop.parameters_and_defaults
+VisionEgg.SphereMap.AzElGrid.parameters_and_defaults
+VisionEgg.SphereMap.SphereGrating.parameters_and_defaults
+VisionEgg.SphereMap.SphereMap.parameters_and_defaults
+VisionEgg.SphereMap.SphereWindow.parameters_and_defaults
+VisionEgg.Text.BitmapText.parameters_and_defaults
+VisionEgg.Text.GlutTextBase.parameters_and_defaults
+VisionEgg.Text.StrokeText.parameters_and_defaults
+VisionEgg.Text.Text.parameters_and_defaults
+VisionEgg.Textures.FixationCross.parameters_and_defaults
+VisionEgg.Textures.SpinningDrum.parameters_and_defaults
+VisionEgg.Textures.TextureStimulus.parameters_and_defaults
+VisionEgg.Textures.TextureStimulus3D.parameters_and_defaults
+VisionEgg.Textures.TextureStimulusBaseClass.parameters_and_defaults
+VisionEgg.WrappedText.WrappedText.parameters_and_defaults" class="py-name" href="#" onclick="return doclink('link-15', 'parameters_and_defaults', 'link-15');">parameters_and_defaults</a></tt> <tt class="py-op">=</tt> <tt id="link-16" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-16', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-17" class="py-name" targets="Class VisionEgg.ParameterDefinition=VisionEgg.Parame [...]
+<a name="L121"></a><tt class="py-lineno"> 121</tt>  <tt class="py-line">        <tt class="py-string">'bgcolor'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-number">0.5</tt><tt class="py-op">,</tt><tt class="py-number">0.5</tt><tt class="py-op">,</tt><tt class="py-number">0.5</tt><tt class="py-op">,</tt><tt class="py-number">0.0</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L122"></a><tt class="py-lineno"> 122</tt>  <tt class="py-line">                   <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-18" class="py-name" targets="Class VisionEgg.ParameterTypes.AnyOf=VisionEgg.ParameterTypes.AnyOf-class.html"><a title="VisionEgg.ParameterTypes.AnyOf" class="py-name" href="#" onclick="return doclink('link-18', 'AnyOf', 'link-18');">AnyOf</a></tt><tt class="py-op">(</tt><tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt [...]
+<a name="L123"></a><tt class="py-lineno"> 123</tt>  <tt class="py-line">                                  <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-21" class="py-name" targets="Class VisionEgg.ParameterTypes.Sequence4=VisionEgg.ParameterTypes.Sequence4-class.html"><a title="VisionEgg.ParameterTypes.Sequence4" class="py-name" href="#" onclick="return doclink('link-21', 'Sequence4', 'link-21');">Sequence4</a></tt><tt class="py-op">(</tt><tt class="py-name">ve_ty [...]
+<a name="L124"></a><tt class="py-lineno"> 124</tt>  <tt class="py-line">                   <tt class="py-string">'background color'</tt><tt class="py-op">,</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L125"></a><tt class="py-lineno"> 125</tt>  <tt class="py-line">        <tt class="py-op">}</tt><tt class="py-op">)</tt> </tt>
+<a name="L126"></a><tt class="py-lineno"> 126</tt>  <tt class="py-line"> </tt>
+<a name="L127"></a><tt class="py-lineno"> 127</tt>  <tt class="py-line">    <tt id="link-23" class="py-name" targets="Variable VisionEgg.ClassWithParameters.constant_parameters_and_defaults=VisionEgg.ClassWithParameters-class.html#constant_parameters_and_defaults,Variable VisionEgg.Core.Screen.constant_parameters_and_defaults=VisionEgg.Core.Screen-class.html#constant_parameters_and_defaults,Variable VisionEgg.Daq.Analog.constant_parameters_and_defaults=VisionEgg.Daq.Analog-class.html#con [...]
+VisionEgg.Core.Screen.constant_parameters_and_defaults
+VisionEgg.Daq.Analog.constant_parameters_and_defaults
+VisionEgg.Daq.Channel.constant_parameters_and_defaults
+VisionEgg.Daq.SignalType.constant_parameters_and_defaults
+VisionEgg.Dots.DotArea2D.constant_parameters_and_defaults
+VisionEgg.SphereMap.AzElGrid.constant_parameters_and_defaults
+VisionEgg.Text.Text.constant_parameters_and_defaults
+VisionEgg.Textures.FixationCross.constant_parameters_and_defaults
+VisionEgg.Textures.Mask2D.constant_parameters_and_defaults
+VisionEgg.Textures.TextureStimulusBaseClass.constant_parameters_and_defaults
+VisionEgg.WrappedText.WrappedText.constant_parameters_and_defaults" class="py-name" href="#" onclick="return doclink('link-23', 'constant_parameters_and_defaults', 'link-23');">constant_parameters_and_defaults</a></tt> <tt class="py-op">=</tt> <tt id="link-24" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-24', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-25" class="py-name"><a title="VisionEgg.ParameterDefin [...]
+<a name="L128"></a><tt class="py-lineno"> 128</tt>  <tt class="py-line">        <tt class="py-string">'size'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
+<a name="L129"></a><tt class="py-lineno"> 129</tt>  <tt class="py-line">                <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-26" class="py-name" targets="Class VisionEgg.ParameterTypes.Sequence2=VisionEgg.ParameterTypes.Sequence2-class.html"><a title="VisionEgg.ParameterTypes.Sequence2" class="py-name" href="#" onclick="return doclink('link-26', 'Sequence2', 'link-26');">Sequence2</a></tt><tt class="py-op">(</tt><tt class="py-name">ve_types</tt><tt class= [...]
+<a name="L130"></a><tt class="py-lineno"> 130</tt>  <tt class="py-line">                <tt class="py-string">'size (units: pixels) Can be set with VISIONEGG_SCREEN_W and VISIONEGG_SCREEN_H'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L131"></a><tt class="py-lineno"> 131</tt>  <tt class="py-line">        <tt class="py-string">'fullscreen'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
+<a name="L132"></a><tt class="py-lineno"> 132</tt>  <tt class="py-line">                      <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-28" class="py-name" targets="Class VisionEgg.ParameterTypes.Boolean=VisionEgg.ParameterTypes.Boolean-class.html"><a title="VisionEgg.ParameterTypes.Boolean" class="py-name" href="#" onclick="return doclink('link-28', 'Boolean', 'link-28');">Boolean</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L133"></a><tt class="py-lineno"> 133</tt>  <tt class="py-line">                      <tt class="py-string">'use full screen? Can be set with VISIONEGG_FULLSCREEN'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L134"></a><tt class="py-lineno"> 134</tt>  <tt class="py-line">        <tt class="py-string">'double_buffer'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
+<a name="L135"></a><tt class="py-lineno"> 135</tt>  <tt class="py-line">                         <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-29" class="py-name"><a title="VisionEgg.ParameterTypes.Boolean" class="py-name" href="#" onclick="return doclink('link-29', 'Boolean', 'link-28');">Boolean</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L136"></a><tt class="py-lineno"> 136</tt>  <tt class="py-line">                         <tt class="py-string">'use double buffering? Can be set with VISIONEGG_DOUBLE_BUFFER'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L137"></a><tt class="py-lineno"> 137</tt>  <tt class="py-line">        <tt class="py-string">'preferred_bpp'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
+<a name="L138"></a><tt class="py-lineno"> 138</tt>  <tt class="py-line">                         <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-30" class="py-name" targets="Class VisionEgg.ParameterTypes.UnsignedInteger=VisionEgg.ParameterTypes.UnsignedInteger-class.html"><a title="VisionEgg.ParameterTypes.UnsignedInteger" class="py-name" href="#" onclick="return doclink('link-30', 'UnsignedInteger', 'link-30');">UnsignedInteger</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L139"></a><tt class="py-lineno"> 139</tt>  <tt class="py-line">                         <tt class="py-string">'preferred bits per pixel (bit depth) Can be set with VISIONEGG_PREFERRED_BPP'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L140"></a><tt class="py-lineno"> 140</tt>  <tt class="py-line">        <tt class="py-string">'maxpriority'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
+<a name="L141"></a><tt class="py-lineno"> 141</tt>  <tt class="py-line">                       <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-31" class="py-name"><a title="VisionEgg.ParameterTypes.Boolean" class="py-name" href="#" onclick="return doclink('link-31', 'Boolean', 'link-28');">Boolean</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L142"></a><tt class="py-lineno"> 142</tt>  <tt class="py-line">                       <tt class="py-string">'raise priority? (platform dependent) Can be set with VISIONEGG_MAXPRIORITY'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L143"></a><tt class="py-lineno"> 143</tt>  <tt class="py-line">        <tt class="py-string">'hide_mouse'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
+<a name="L144"></a><tt class="py-lineno"> 144</tt>  <tt class="py-line">                      <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-32" class="py-name"><a title="VisionEgg.ParameterTypes.Boolean" class="py-name" href="#" onclick="return doclink('link-32', 'Boolean', 'link-28');">Boolean</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L145"></a><tt class="py-lineno"> 145</tt>  <tt class="py-line">                      <tt class="py-string">'hide the mouse cursor? Can be set with VISIONEGG_HIDE_MOUSE'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L146"></a><tt class="py-lineno"> 146</tt>  <tt class="py-line">        <tt class="py-string">'frameless'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
+<a name="L147"></a><tt class="py-lineno"> 147</tt>  <tt class="py-line">                     <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-33" class="py-name"><a title="VisionEgg.ParameterTypes.Boolean" class="py-name" href="#" onclick="return doclink('link-33', 'Boolean', 'link-28');">Boolean</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L148"></a><tt class="py-lineno"> 148</tt>  <tt class="py-line">                     <tt class="py-string">'remove standard window frame? Can be set with VISIONEGG_FRAMELESS_WINDOW'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L149"></a><tt class="py-lineno"> 149</tt>  <tt class="py-line">        <tt class="py-string">'sync_swap'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
+<a name="L150"></a><tt class="py-lineno"> 150</tt>  <tt class="py-line">                     <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-34" class="py-name"><a title="VisionEgg.ParameterTypes.Boolean" class="py-name" href="#" onclick="return doclink('link-34', 'Boolean', 'link-28');">Boolean</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L151"></a><tt class="py-lineno"> 151</tt>  <tt class="py-line">                     <tt class="py-string">'synchronize buffer swaps to vertical sync? Can be set with VISIONEGG_SYNC_SWAP'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L152"></a><tt class="py-lineno"> 152</tt>  <tt class="py-line">        <tt class="py-string">'red_bits'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
+<a name="L153"></a><tt class="py-lineno"> 153</tt>  <tt class="py-line">                    <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-35" class="py-name"><a title="VisionEgg.ParameterTypes.UnsignedInteger" class="py-name" href="#" onclick="return doclink('link-35', 'UnsignedInteger', 'link-30');">UnsignedInteger</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L154"></a><tt class="py-lineno"> 154</tt>  <tt class="py-line">                    <tt class="py-string">'number of bits per pixel for red channel. Can be set with VISIONEGG_REQUEST_RED_BITS'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L155"></a><tt class="py-lineno"> 155</tt>  <tt class="py-line">        <tt class="py-string">'green_bits'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
+<a name="L156"></a><tt class="py-lineno"> 156</tt>  <tt class="py-line">                    <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-36" class="py-name"><a title="VisionEgg.ParameterTypes.UnsignedInteger" class="py-name" href="#" onclick="return doclink('link-36', 'UnsignedInteger', 'link-30');">UnsignedInteger</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L157"></a><tt class="py-lineno"> 157</tt>  <tt class="py-line">                    <tt class="py-string">'number of bits per pixel for green channel. Can be set with VISIONEGG_REQUEST_GREEN_BITS'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L158"></a><tt class="py-lineno"> 158</tt>  <tt class="py-line">        <tt class="py-string">'blue_bits'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
+<a name="L159"></a><tt class="py-lineno"> 159</tt>  <tt class="py-line">                    <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-37" class="py-name"><a title="VisionEgg.ParameterTypes.UnsignedInteger" class="py-name" href="#" onclick="return doclink('link-37', 'UnsignedInteger', 'link-30');">UnsignedInteger</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L160"></a><tt class="py-lineno"> 160</tt>  <tt class="py-line">                    <tt class="py-string">'number of bits per pixel for blue channel. Can be set with VISIONEGG_REQUEST_BLUE_BITS'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L161"></a><tt class="py-lineno"> 161</tt>  <tt class="py-line">        <tt class="py-string">'alpha_bits'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
+<a name="L162"></a><tt class="py-lineno"> 162</tt>  <tt class="py-line">                    <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-38" class="py-name"><a title="VisionEgg.ParameterTypes.UnsignedInteger" class="py-name" href="#" onclick="return doclink('link-38', 'UnsignedInteger', 'link-30');">UnsignedInteger</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L163"></a><tt class="py-lineno"> 163</tt>  <tt class="py-line">                    <tt class="py-string">'number of bits per pixel for alpha channel. Can be set with VISIONEGG_REQUEST_ALPHA_BITS'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L164"></a><tt class="py-lineno"> 164</tt>  <tt class="py-line">        <tt class="py-string">'is_stereo'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
+<a name="L165"></a><tt class="py-lineno"> 165</tt>  <tt class="py-line">                     <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-39" class="py-name"><a title="VisionEgg.ParameterTypes.Boolean" class="py-name" href="#" onclick="return doclink('link-39', 'Boolean', 'link-28');">Boolean</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L166"></a><tt class="py-lineno"> 166</tt>  <tt class="py-line">                     <tt class="py-string">'allocate stereo framebuffers? Can be set with VISIONEGG_REQUEST_STEREO'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L167"></a><tt class="py-lineno"> 167</tt>  <tt class="py-line">        <tt class="py-string">'multisample_samples'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-comment"># support added by Mark Halko</tt> </tt>
+<a name="L168"></a><tt class="py-lineno"> 168</tt>  <tt class="py-line">                               <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-40" class="py-name"><a title="VisionEgg.ParameterTypes.UnsignedInteger" class="py-name" href="#" onclick="return doclink('link-40', 'UnsignedInteger', 'link-30');">UnsignedInteger</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L169"></a><tt class="py-lineno"> 169</tt>  <tt class="py-line">                               <tt class="py-string">'preferred number of multisamples for FSAA'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L170"></a><tt class="py-lineno"> 170</tt>  <tt class="py-line">        <tt class="py-op">}</tt><tt class="py-op">)</tt> </tt>
+<a name="L171"></a><tt class="py-lineno"> 171</tt>  <tt class="py-line"> </tt>
+<a name="L172"></a><tt class="py-lineno"> 172</tt>  <tt class="py-line">    <tt class="py-name">__slots__</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt> </tt>
+<a name="L173"></a><tt class="py-lineno"> 173</tt>  <tt class="py-line">        <tt class="py-string">'__cursor_visible_func__'</tt><tt class="py-op">,</tt> </tt>
+<a name="L174"></a><tt class="py-lineno"> 174</tt>  <tt class="py-line">        <tt class="py-string">'__pygame_quit__'</tt><tt class="py-op">,</tt> </tt>
+<a name="L175"></a><tt class="py-lineno"> 175</tt>  <tt class="py-line">        <tt class="py-string">'_put_pixels_texture_stimulus'</tt><tt class="py-op">,</tt> </tt>
+<a name="L176"></a><tt class="py-lineno"> 176</tt>  <tt class="py-line">        <tt class="py-string">'_pixel_coord_projection'</tt><tt class="py-op">,</tt> </tt>
+<a name="L177"></a><tt class="py-lineno"> 177</tt>  <tt class="py-line">        <tt class="py-op">)</tt> </tt>
+<a name="L178"></a><tt class="py-lineno"> 178</tt>  <tt class="py-line"> </tt>
+<a name="Screen.__init__"></a><div id="Screen.__init__-def"><a name="L179"></a><tt class="py-lineno"> 179</tt> <a class="py-toggle" href="#" id="Screen.__init__-toggle" onclick="return toggle('Screen.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.Core.Screen-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt><tt class="py-op">**</tt><tt class="py-param">kw</tt><tt [...]
+</div><div id="Screen.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Screen.__init__-expanded"><a name="L180"></a><tt class="py-lineno"> 180</tt>  <tt class="py-line">        <tt id="link-41" class="py-name" targets="Variable VisionEgg.logger=VisionEgg-module.html#logger"><a title="VisionEgg.logger" class="py-name" href="#" onclick="return doclink('link-41', 'logger', 'link-41');">logger</a></tt> <tt class="py-op">=</tt> <tt class="py-name">logging< [...]
+<a name="L181"></a><tt class="py-lineno"> 181</tt>  <tt class="py-line"> </tt>
+<a name="L182"></a><tt class="py-lineno"> 182</tt>  <tt class="py-line">        <tt id="link-42" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-42', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-43" class="py-name" targets="Class VisionEgg.ClassWithParameters=VisionEgg.ClassWithParameters-class.html"><a title="VisionEgg.ClassWithParameters" class="py-name" href="#" onclick="return doclink('link-43', 'ClassWith [...]
+VisionEgg.Configuration.Config.__init__
+VisionEgg.Core.FixationSpot.__init__
+VisionEgg.Core.FrameTimer.__init__
+VisionEgg.Core.ModelView.__init__
+VisionEgg.Core.OrthographicProjection.__init__
+VisionEgg.Core.OrthographicProjectionNoZClip.__init__
+VisionEgg.Core.PerspectiveProjection.__init__
+VisionEgg.Core.Projection.__init__
+VisionEgg.Core.ProjectionBaseClass.__init__
+VisionEgg.Core.Screen.__init__
+VisionEgg.Core.SimplePerspectiveProjection.__init__
+VisionEgg.Core.Stimulus.__init__
+VisionEgg.Core.Viewport.__init__
+VisionEgg.Daq.Channel.__init__
+VisionEgg.Daq.DaqMode.__init__
+VisionEgg.Daq.Device.__init__
+VisionEgg.Daq.Functionality.__init__
+VisionEgg.Daq.SignalType.__init__
+VisionEgg.DaqKeyboard.KeyboardTriggerInController.__init__
+VisionEgg.DaqLPT.LPTChannel.__init__
+VisionEgg.DaqLPT.LPTDevice.__init__
+VisionEgg.DaqLPT.LPTTriggerInController.__init__
+VisionEgg.DaqLPT.LPTTriggerOutController.__init__
+VisionEgg.Deprecated.Message.__init__
+VisionEgg.Dots.DotArea2D.__init__
+VisionEgg.FlowControl.ConstantController.__init__
+VisionEgg.FlowControl.Controller.__init__
+VisionEgg.FlowControl.EncapsulatedController.__init__
+VisionEgg.FlowControl.EvalStringController.__init__
+VisionEgg.FlowControl.ExecStringController.__init__
+VisionEgg.FlowControl.FunctionController.__init__
+VisionEgg.FlowControl.Presentation.__init__
+VisionEgg.GLTrace.Wrapper.__init__
+VisionEgg.GUI.AppWindow.__init__
+VisionEgg.GUI.GetKeypressDialog.__init__
+VisionEgg.GUI.GraphicsConfigurationWindow.__init__
+VisionEgg.GUI.InfoFrame.__init__
+VisionEgg.GUI.ProgressBar.__init__
+VisionEgg.GUI.ToplevelDialog.__init__
+VisionEgg.Gratings.SinGrating2D.__init__
+VisionEgg.Gratings.SinGrating3D.__init__
+VisionEgg.MoreStimuli.Arrow.__init__
+VisionEgg.MoreStimuli.FilledCircle.__init__
+VisionEgg.MoreStimuli.Rectangle3D.__init__
+VisionEgg.MoreStimuli.Target2D.__init__
+VisionEgg.ParameterTypes.AnyOf.__init__
+VisionEgg.ParameterTypes.Instance.__init__
+VisionEgg.ParameterTypes.Sequence.__init__
+VisionEgg.ParameterTypes.SubClass.__init__
+VisionEgg.PyroApps.AST_ext.AST_Visitor.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalMetaParameters.__init__
+VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.__init__
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.__init__
+VisionEgg.PyroApps.DropinGUI.DropinMetaParameters.__init__
+VisionEgg.PyroApps.DropinServer.DropinMetaController.__init__
+VisionEgg.PyroApps.EPhysGUI.AppWindow.__init__
+VisionEgg.PyroApps.EPhysGUI.BarButton.__init__
+VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase.__init__
+VisionEgg.PyroApps.EPhysGUI.GammaFrame.__init__
+VisionEgg.PyroApps.EPhysGUI.ImageSequenceLauncher.__init__
+VisionEgg.PyroApps.EPhysGUI.Loop.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopContainedObject.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopParamDialog.__init__
+VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.__init__
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.__init__
+VisionEgg.PyroApps.EPhysServer.EPhysServer.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingMetaParameters.__init__
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.GridGUI.GridControlFrame.__init__
+VisionEgg.PyroApps.GridGUI.GridMetaParameters.__init__
+VisionEgg.PyroApps.GridServer.GridMetaController.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetMetaParameters.__init__
+VisionEgg.PyroApps.MouseTargetServer.MousePositionController.__init__
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetOrientationController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetPositionController.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.CallbackEntry.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionParameters.__init__
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingMetaParameters.__init__
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumMetaParameters.__init__
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.__init__
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.__init__
+VisionEgg.PyroApps.TargetGUI.TargetMetaParameters.__init__
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.__init__
+VisionEgg.PyroClient.PyroClient.__init__
+VisionEgg.PyroHelpers.PyroConstantController.__init__
+VisionEgg.PyroHelpers.PyroEncapsulatedController.__init__
+VisionEgg.PyroHelpers.PyroEvalStringController.__init__
+VisionEgg.PyroHelpers.PyroExecStringController.__init__
+VisionEgg.PyroHelpers.PyroListenController.__init__
+VisionEgg.PyroHelpers.PyroLocalDictController.__init__
+VisionEgg.PyroHelpers.PyroServer.__init__
+VisionEgg.QuickTime.MovieTexture.__init__
+VisionEgg.ResponseControl.KeyboardResponseController.__init__
+VisionEgg.ResponseControl.ResponseController.__init__
+VisionEgg.SphereMap.AzElGrid.__init__
+VisionEgg.SphereMap.SphereGrating.__init__
+VisionEgg.SphereMap.SphereMap.__init__
+VisionEgg.SphereMap.SphereWindow.__init__
+VisionEgg.TCPController.SocketListenController.__init__
+VisionEgg.TCPController.TCPController.__init__
+VisionEgg.TCPController.TCPServer.__init__
+VisionEgg.Text.BitmapText.__init__
+VisionEgg.Text.GlutTextBase.__init__
+VisionEgg.Text.StrokeText.__init__
+VisionEgg.Text.Text.__init__
+VisionEgg.Textures.FixationCross.__init__
+VisionEgg.Textures.Mask2D.__init__
+VisionEgg.Textures.SpinningDrum.__init__
+VisionEgg.Textures.Texture.__init__
+VisionEgg.Textures.TextureFromFile.__init__
+VisionEgg.Textures.TextureObject.__init__
+VisionEgg.Textures.TextureStimulusBaseClass.__init__
+VisionEgg.ThreeDeeMath.TransformMatrix.__init__
+VisionEgg.WrappedText.WrappedText.__init__
+VisionEgg.qtmovie.Movie.__init__
+VisionEgg.qtmovie.Rect.__init__" class="py-name" href="#" onclick="return doclink('link-44', '__init__', 'link-44');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt><tt class="py-op">**</tt><tt class="py-name">kw</tt><tt class="py-op">)</tt> </tt>
+<a name="L183"></a><tt class="py-lineno"> 183</tt>  <tt class="py-line"> </tt>
+<a name="L184"></a><tt class="py-lineno"> 184</tt>  <tt class="py-line">        <tt class="py-name">cp</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">constant_parameters</tt> <tt class="py-comment"># shorthand</tt> </tt>
+<a name="L185"></a><tt class="py-lineno"> 185</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">cp</tt><tt class="py-op">.</tt><tt id="link-45" class="py-name" targets="Variable VisionEgg.Core.Screen.size=VisionEgg.Core.Screen-class.html#size"><a title="VisionEgg.Core.Screen.size" class="py-name" href="#" onclick="return doclink('link-45', 'size', 'link-45');">size</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:< [...]
+<a name="L186"></a><tt class="py-lineno"> 186</tt>  <tt class="py-line">            <tt class="py-name">cp</tt><tt class="py-op">.</tt><tt id="link-46" class="py-name"><a title="VisionEgg.Core.Screen.size" class="py-name" href="#" onclick="return doclink('link-46', 'size', 'link-45');">size</a></tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt id="link-47" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-47', 'VisionEgg', 'link-0');">Vis [...]
+<a name="L187"></a><tt class="py-lineno"> 187</tt>  <tt class="py-line">                       <tt id="link-49" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-49', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-50" class="py-name"><a title="VisionEgg.config" class="py-name" href="#" onclick="return doclink('link-50', 'config', 'link-14');">config</a></tt><tt class="py-op">.</tt><tt class="py-name">VISIONEGG_SCR [...]
+<a name="L188"></a><tt class="py-lineno"> 188</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">cp</tt><tt class="py-op">.</tt><tt class="py-name">double_buffer</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L189"></a><tt class="py-lineno"> 189</tt>  <tt class="py-line">            <tt class="py-name">cp</tt><tt class="py-op">.</tt><tt class="py-name">double_buffer</tt> <tt class="py-op">=</tt> <tt id="link-51" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-51', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-52" class="py-name"><a title="VisionEgg.config" class="py-name" href="#" onclick="return doclink('l [...]
+<a name="L190"></a><tt class="py-lineno"> 190</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">cp</tt><tt class="py-op">.</tt><tt class="py-name">fullscreen</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L191"></a><tt class="py-lineno"> 191</tt>  <tt class="py-line">            <tt class="py-name">cp</tt><tt class="py-op">.</tt><tt class="py-name">fullscreen</tt> <tt class="py-op">=</tt> <tt id="link-53" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-53', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-54" class="py-name"><a title="VisionEgg.config" class="py-name" href="#" onclick="return doclink('link [...]
+<a name="L192"></a><tt class="py-lineno"> 192</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">cp</tt><tt class="py-op">.</tt><tt class="py-name">preferred_bpp</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L193"></a><tt class="py-lineno"> 193</tt>  <tt class="py-line">            <tt class="py-name">cp</tt><tt class="py-op">.</tt><tt class="py-name">preferred_bpp</tt> <tt class="py-op">=</tt> <tt id="link-55" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-55', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-56" class="py-name"><a title="VisionEgg.config" class="py-name" href="#" onclick="return doclink('l [...]
+<a name="L194"></a><tt class="py-lineno"> 194</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">cp</tt><tt class="py-op">.</tt><tt class="py-name">maxpriority</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L195"></a><tt class="py-lineno"> 195</tt>  <tt class="py-line">            <tt class="py-name">cp</tt><tt class="py-op">.</tt><tt class="py-name">maxpriority</tt> <tt class="py-op">=</tt> <tt id="link-57" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-57', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-58" class="py-name"><a title="VisionEgg.config" class="py-name" href="#" onclick="return doclink('lin [...]
+<a name="L196"></a><tt class="py-lineno"> 196</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">cp</tt><tt class="py-op">.</tt><tt class="py-name">hide_mouse</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L197"></a><tt class="py-lineno"> 197</tt>  <tt class="py-line">            <tt class="py-name">cp</tt><tt class="py-op">.</tt><tt class="py-name">hide_mouse</tt> <tt class="py-op">=</tt> <tt id="link-59" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-59', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-60" class="py-name"><a title="VisionEgg.config" class="py-name" href="#" onclick="return doclink('link [...]
+<a name="L198"></a><tt class="py-lineno"> 198</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">cp</tt><tt class="py-op">.</tt><tt class="py-name">frameless</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L199"></a><tt class="py-lineno"> 199</tt>  <tt class="py-line">            <tt class="py-name">cp</tt><tt class="py-op">.</tt><tt class="py-name">frameless</tt> <tt class="py-op">=</tt> <tt id="link-61" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-61', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-62" class="py-name"><a title="VisionEgg.config" class="py-name" href="#" onclick="return doclink('link- [...]
+<a name="L200"></a><tt class="py-lineno"> 200</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">cp</tt><tt class="py-op">.</tt><tt class="py-name">sync_swap</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L201"></a><tt class="py-lineno"> 201</tt>  <tt class="py-line">            <tt class="py-name">cp</tt><tt class="py-op">.</tt><tt class="py-name">sync_swap</tt> <tt class="py-op">=</tt> <tt id="link-63" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-63', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-64" class="py-name"><a title="VisionEgg.config" class="py-name" href="#" onclick="return doclink('link- [...]
+<a name="L202"></a><tt class="py-lineno"> 202</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">cp</tt><tt class="py-op">.</tt><tt class="py-name">red_bits</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L203"></a><tt class="py-lineno"> 203</tt>  <tt class="py-line">            <tt class="py-name">cp</tt><tt class="py-op">.</tt><tt class="py-name">red_bits</tt> <tt class="py-op">=</tt> <tt id="link-65" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-65', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-66" class="py-name"><a title="VisionEgg.config" class="py-name" href="#" onclick="return doclink('link-6 [...]
+<a name="L204"></a><tt class="py-lineno"> 204</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">cp</tt><tt class="py-op">.</tt><tt class="py-name">green_bits</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L205"></a><tt class="py-lineno"> 205</tt>  <tt class="py-line">            <tt class="py-name">cp</tt><tt class="py-op">.</tt><tt class="py-name">green_bits</tt> <tt class="py-op">=</tt> <tt id="link-67" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-67', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-68" class="py-name"><a title="VisionEgg.config" class="py-name" href="#" onclick="return doclink('link [...]
+<a name="L206"></a><tt class="py-lineno"> 206</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">cp</tt><tt class="py-op">.</tt><tt class="py-name">blue_bits</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L207"></a><tt class="py-lineno"> 207</tt>  <tt class="py-line">            <tt class="py-name">cp</tt><tt class="py-op">.</tt><tt class="py-name">blue_bits</tt> <tt class="py-op">=</tt> <tt id="link-69" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-69', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-70" class="py-name"><a title="VisionEgg.config" class="py-name" href="#" onclick="return doclink('link- [...]
+<a name="L208"></a><tt class="py-lineno"> 208</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">cp</tt><tt class="py-op">.</tt><tt class="py-name">alpha_bits</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L209"></a><tt class="py-lineno"> 209</tt>  <tt class="py-line">            <tt class="py-name">cp</tt><tt class="py-op">.</tt><tt class="py-name">alpha_bits</tt> <tt class="py-op">=</tt> <tt id="link-71" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-71', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-72" class="py-name"><a title="VisionEgg.config" class="py-name" href="#" onclick="return doclink('link [...]
+<a name="L210"></a><tt class="py-lineno"> 210</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">cp</tt><tt class="py-op">.</tt><tt class="py-name">is_stereo</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L211"></a><tt class="py-lineno"> 211</tt>  <tt class="py-line">            <tt class="py-name">cp</tt><tt class="py-op">.</tt><tt class="py-name">is_stereo</tt> <tt class="py-op">=</tt> <tt id="link-73" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-73', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-74" class="py-name"><a title="VisionEgg.config" class="py-name" href="#" onclick="return doclink('link- [...]
+<a name="L212"></a><tt class="py-lineno"> 212</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">cp</tt><tt class="py-op">.</tt><tt class="py-name">multisample_samples</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L213"></a><tt class="py-lineno"> 213</tt>  <tt class="py-line">             <tt class="py-name">cp</tt><tt class="py-op">.</tt><tt class="py-name">multisample_samples</tt> <tt class="py-op">=</tt> <tt id="link-75" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-75', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-76" class="py-name"><a title="VisionEgg.config" class="py-name" href="#" onclick="return doc [...]
+<a name="L214"></a><tt class="py-lineno"> 214</tt>  <tt class="py-line"> </tt>
+<a name="L215"></a><tt class="py-lineno"> 215</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt id="link-77" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-77', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-78" class="py-name"><a title="VisionEgg.config" class="py-name" href="#" onclick="return doclink('link-78', 'config', 'link-14');">config</a></tt><tt class="py-op">.</tt><tt class="py-nam [...]
+<a name="L216"></a><tt class="py-lineno"> 216</tt>  <tt class="py-line">            <tt class="py-keyword">global</tt> <tt class="py-name">synclync</tt> <tt class="py-comment"># import into global namespace</tt> </tt>
+<a name="L217"></a><tt class="py-lineno"> 217</tt>  <tt class="py-line">            <tt class="py-keyword">import</tt> <tt class="py-name">synclync</tt> </tt>
+<a name="L218"></a><tt class="py-lineno"> 218</tt>  <tt class="py-line">            <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L219"></a><tt class="py-lineno"> 219</tt>  <tt class="py-line">                <tt id="link-79" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-79', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-80" class="py-name"><a title="VisionEgg.config" class="py-name" href="#" onclick="return doclink('link-80', 'config', 'link-14');">config</a></tt><tt class="py-op">.</tt><tt class="py-name">_SYNCLYNC_CONNECTION [...]
+<a name="L220"></a><tt class="py-lineno"> 220</tt>  <tt class="py-line">            <tt class="py-keyword">except</tt> <tt class="py-name">synclync</tt><tt class="py-op">.</tt><tt class="py-name">SyncLyncError</tt><tt class="py-op">,</tt> <tt class="py-name">x</tt><tt class="py-op">:</tt> </tt>
+<a name="L221"></a><tt class="py-lineno"> 221</tt>  <tt class="py-line">                <tt id="link-81" class="py-name"><a title="VisionEgg.logger" class="py-name" href="#" onclick="return doclink('link-81', 'logger', 'link-41');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">warning</tt><tt class="py-op">(</tt> <tt class="py-string">"Could not connect to SyncLync device (SyncLyncError: %s)."</tt><tt class="py-op">%</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><t [...]
+<a name="L222"></a><tt class="py-lineno"> 222</tt>  <tt class="py-line">                <tt id="link-82" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-82', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-83" class="py-name"><a title="VisionEgg.config" class="py-name" href="#" onclick="return doclink('link-83', 'config', 'link-14');">config</a></tt><tt class="py-op">.</tt><tt class="py-name">_SYNCLYNC_CONNECTION [...]
+<a name="L223"></a><tt class="py-lineno"> 223</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L224"></a><tt class="py-lineno"> 224</tt>  <tt class="py-line">                <tt id="link-84" class="py-name"><a title="VisionEgg.logger" class="py-name" href="#" onclick="return doclink('link-84', 'logger', 'link-41');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt> <tt class="py-string">"Connected to SyncLync device"</tt> <tt class="py-op">)</tt> </tt>
+<a name="L225"></a><tt class="py-lineno"> 225</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L226"></a><tt class="py-lineno"> 226</tt>  <tt class="py-line">            <tt id="link-85" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-85', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-86" class="py-name"><a title="VisionEgg.config" class="py-name" href="#" onclick="return doclink('link-86', 'config', 'link-14');">config</a></tt><tt class="py-op">.</tt><tt class="py-name">_SYNCLYNC_CONNECTION</tt [...]
+<a name="L227"></a><tt class="py-lineno"> 227</tt>  <tt class="py-line"> </tt>
+<a name="L228"></a><tt class="py-lineno"> 228</tt>  <tt class="py-line">        <tt class="py-comment"># Attempt to synchronize buffer swapping with vertical sync</tt> </tt>
+<a name="L229"></a><tt class="py-lineno"> 229</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">cp</tt><tt class="py-op">.</tt><tt class="py-name">sync_swap</tt><tt class="py-op">:</tt> </tt>
+<a name="L230"></a><tt class="py-lineno"> 230</tt>  <tt class="py-line">            <tt class="py-name">sync_success</tt> <tt class="py-op">=</tt> <tt id="link-87" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-87', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-88" class="py-name"><a title="VisionEgg.PlatformDependent" class="py-name" href="#" onclick="return doclink('link-88', 'PlatformDependent', 'link-2');" [...]
+<a name="L231"></a><tt class="py-lineno"> 231</tt>  <tt class="py-line"> </tt>
+<a name="L232"></a><tt class="py-lineno"> 232</tt>  <tt class="py-line">        <tt class="py-comment"># Initialize pygame stuff</tt> </tt>
+<a name="L233"></a><tt class="py-lineno"> 233</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#        if sys.platform == "darwin": # bug in Mac OS X version of pygame</tt> </tt>
+<a name="L234"></a><tt class="py-lineno"> 234</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#            pygame.init()</tt> </tt>
+<a name="L235"></a><tt class="py-lineno"> 235</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">pygame</tt><tt class="py-op">.</tt><tt class="py-name">display</tt><tt class="py-op">.</tt><tt class="py-name">init</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L236"></a><tt class="py-lineno"> 236</tt>  <tt class="py-line"> </tt>
+<a name="L237"></a><tt class="py-lineno"> 237</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt class="py-name">pygame</tt><tt class="py-op">.</tt><tt class="py-name">display</tt><tt class="py-op">,</tt><tt class="py-string">"gl_set_attribute"</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L238"></a><tt class="py-lineno"> 238</tt>  <tt class="py-line">            <tt class="py-name">pygame</tt><tt class="py-op">.</tt><tt class="py-name">display</tt><tt class="py-op">.</tt><tt class="py-name">gl_set_attribute</tt><tt class="py-op">(</tt><tt class="py-name">pygame</tt><tt class="py-op">.</tt><tt class="py-name">locals</tt><tt class="py-op">.</tt><tt class="py-name">GL_RED_SIZE</tt><tt class="py-op">,</tt><tt class="py-name">cp</tt><tt class="py-op">.</tt><tt class=" [...]
+<a name="L239"></a><tt class="py-lineno"> 239</tt>  <tt class="py-line">            <tt class="py-name">pygame</tt><tt class="py-op">.</tt><tt class="py-name">display</tt><tt class="py-op">.</tt><tt class="py-name">gl_set_attribute</tt><tt class="py-op">(</tt><tt class="py-name">pygame</tt><tt class="py-op">.</tt><tt class="py-name">locals</tt><tt class="py-op">.</tt><tt class="py-name">GL_GREEN_SIZE</tt><tt class="py-op">,</tt><tt class="py-name">cp</tt><tt class="py-op">.</tt><tt class [...]
+<a name="L240"></a><tt class="py-lineno"> 240</tt>  <tt class="py-line">            <tt class="py-name">pygame</tt><tt class="py-op">.</tt><tt class="py-name">display</tt><tt class="py-op">.</tt><tt class="py-name">gl_set_attribute</tt><tt class="py-op">(</tt><tt class="py-name">pygame</tt><tt class="py-op">.</tt><tt class="py-name">locals</tt><tt class="py-op">.</tt><tt class="py-name">GL_BLUE_SIZE</tt><tt class="py-op">,</tt><tt class="py-name">cp</tt><tt class="py-op">.</tt><tt class= [...]
+<a name="L241"></a><tt class="py-lineno"> 241</tt>  <tt class="py-line">            <tt class="py-name">pygame</tt><tt class="py-op">.</tt><tt class="py-name">display</tt><tt class="py-op">.</tt><tt class="py-name">gl_set_attribute</tt><tt class="py-op">(</tt><tt class="py-name">pygame</tt><tt class="py-op">.</tt><tt class="py-name">locals</tt><tt class="py-op">.</tt><tt class="py-name">GL_ALPHA_SIZE</tt><tt class="py-op">,</tt><tt class="py-name">cp</tt><tt class="py-op">.</tt><tt class [...]
+<a name="L242"></a><tt class="py-lineno"> 242</tt>  <tt class="py-line">            <tt class="py-name">pygame</tt><tt class="py-op">.</tt><tt class="py-name">display</tt><tt class="py-op">.</tt><tt class="py-name">gl_set_attribute</tt><tt class="py-op">(</tt><tt class="py-name">pygame</tt><tt class="py-op">.</tt><tt class="py-name">locals</tt><tt class="py-op">.</tt><tt class="py-name">GL_STEREO</tt><tt class="py-op">,</tt><tt class="py-name">cp</tt><tt class="py-op">.</tt><tt class="py [...]
+<a name="L243"></a><tt class="py-lineno"> 243</tt>  <tt class="py-line">            <tt class="py-comment">#Request FSAA</tt> </tt>
+<a name="L244"></a><tt class="py-lineno"> 244</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">if</tt> <tt class="py-name">cp</tt><tt class="py-op">.</tt><tt class="py-name">multisample_samples</tt> <tt class="py-op">></tt> <tt class="py-number">0</tt> <tt class="py-op">:</tt> </tt>
+<a name="L245"></a><tt class="py-lineno"> 245</tt>  <tt class="py-line">                <tt class="py-name">pygame</tt><tt class="py-op">.</tt><tt class="py-name">display</tt><tt class="py-op">.</tt><tt class="py-name">gl_set_attribute</tt><tt class="py-op">(</tt><tt class="py-name">pygame</tt><tt class="py-op">.</tt><tt class="py-name">locals</tt><tt class="py-op">.</tt><tt class="py-name">GL_MULTISAMPLEBUFFERS</tt><tt class="py-op">,</tt><tt class="py-number">1</tt><tt class="py-op">)< [...]
+<a name="L246"></a><tt class="py-lineno"> 246</tt>  <tt class="py-line">                <tt class="py-name">pygame</tt><tt class="py-op">.</tt><tt class="py-name">display</tt><tt class="py-op">.</tt><tt class="py-name">gl_set_attribute</tt><tt class="py-op">(</tt><tt class="py-name">pygame</tt><tt class="py-op">.</tt><tt class="py-name">locals</tt><tt class="py-op">.</tt><tt class="py-name">GL_MULTISAMPLESAMPLES</tt><tt class="py-op">,</tt><tt class="py-name">cp</tt><tt class="py-op">.</ [...]
+<a name="L247"></a><tt class="py-lineno"> 247</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L248"></a><tt class="py-lineno"> 248</tt>  <tt class="py-line">            <tt id="link-90" class="py-name"><a title="VisionEgg.logger" class="py-name" href="#" onclick="return doclink('link-90', 'logger', 'link-41');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">debug</tt><tt class="py-op">(</tt><tt class="py-string">"Could not request or query exact bit depths, "</tt> </tt>
+<a name="L249"></a><tt class="py-lineno"> 249</tt>  <tt class="py-line">                         <tt class="py-string">"alpha or stereo because you need "</tt> </tt>
+<a name="L250"></a><tt class="py-lineno"> 250</tt>  <tt class="py-line">                         <tt class="py-string">"pygame release 1.4.9 or greater. This is "</tt> </tt>
+<a name="L251"></a><tt class="py-lineno"> 251</tt>  <tt class="py-line">                         <tt class="py-string">"only of concern if you use a stimulus that "</tt> </tt>
+<a name="L252"></a><tt class="py-lineno"> 252</tt>  <tt class="py-line">                         <tt class="py-string">"needs this. In that case, the stimulus "</tt> </tt>
+<a name="L253"></a><tt class="py-lineno"> 253</tt>  <tt class="py-line">                         <tt class="py-string">"should check for the desired feature(s)."</tt><tt class="py-op">)</tt> </tt>
+<a name="L254"></a><tt class="py-lineno"> 254</tt>  <tt class="py-line"> </tt>
+<a name="L255"></a><tt class="py-lineno"> 255</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt class="py-name">pygame</tt><tt class="py-op">.</tt><tt class="py-name">display</tt><tt class="py-op">,</tt><tt class="py-string">"set_gamma_ramp"</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L256"></a><tt class="py-lineno"> 256</tt>  <tt class="py-line">            <tt id="link-91" class="py-name"><a title="VisionEgg.logger" class="py-name" href="#" onclick="return doclink('link-91', 'logger', 'link-41');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">debug</tt><tt class="py-op">(</tt><tt class="py-string">"set_gamma_ramp function not available "</tt> </tt>
+<a name="L257"></a><tt class="py-lineno"> 257</tt>  <tt class="py-line">                         <tt class="py-string">"because you need pygame release 1.5 or "</tt> </tt>
+<a name="L258"></a><tt class="py-lineno"> 258</tt>  <tt class="py-line">                         <tt class="py-string">"greater. This is only of concern if you "</tt> </tt>
+<a name="L259"></a><tt class="py-lineno"> 259</tt>  <tt class="py-line">                         <tt class="py-string">"need this feature."</tt><tt class="py-op">)</tt> </tt>
+<a name="L260"></a><tt class="py-lineno"> 260</tt>  <tt class="py-line">        <tt class="py-name">pygame</tt><tt class="py-op">.</tt><tt class="py-name">display</tt><tt class="py-op">.</tt><tt class="py-name">set_caption</tt><tt class="py-op">(</tt><tt class="py-string">"Vision Egg"</tt><tt class="py-op">)</tt> </tt>
+<a name="L261"></a><tt class="py-lineno"> 261</tt>  <tt class="py-line"> </tt>
+<a name="L262"></a><tt class="py-lineno"> 262</tt>  <tt class="py-line">        <tt class="py-name">flags</tt> <tt class="py-op">=</tt> <tt class="py-name">pygame</tt><tt class="py-op">.</tt><tt class="py-name">locals</tt><tt class="py-op">.</tt><tt class="py-name">OPENGL</tt> </tt>
+<a name="L263"></a><tt class="py-lineno"> 263</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">cp</tt><tt class="py-op">.</tt><tt class="py-name">double_buffer</tt><tt class="py-op">:</tt> </tt>
+<a name="L264"></a><tt class="py-lineno"> 264</tt>  <tt class="py-line">            <tt class="py-name">flags</tt> <tt class="py-op">=</tt> <tt class="py-name">flags</tt> <tt class="py-op">|</tt> <tt class="py-name">pygame</tt><tt class="py-op">.</tt><tt class="py-name">locals</tt><tt class="py-op">.</tt><tt class="py-name">DOUBLEBUF</tt> </tt>
+<a name="L265"></a><tt class="py-lineno"> 265</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">cp</tt><tt class="py-op">.</tt><tt class="py-name">fullscreen</tt><tt class="py-op">:</tt> </tt>
+<a name="L266"></a><tt class="py-lineno"> 266</tt>  <tt class="py-line">            <tt class="py-name">flags</tt> <tt class="py-op">=</tt> <tt class="py-name">flags</tt> <tt class="py-op">|</tt> <tt class="py-name">pygame</tt><tt class="py-op">.</tt><tt class="py-name">locals</tt><tt class="py-op">.</tt><tt class="py-name">FULLSCREEN</tt> </tt>
+<a name="L267"></a><tt class="py-lineno"> 267</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">cp</tt><tt class="py-op">.</tt><tt class="py-name">frameless</tt><tt class="py-op">:</tt> </tt>
+<a name="L268"></a><tt class="py-lineno"> 268</tt>  <tt class="py-line">            <tt class="py-name">flags</tt> <tt class="py-op">=</tt> <tt class="py-name">flags</tt> <tt class="py-op">|</tt> <tt class="py-name">pygame</tt><tt class="py-op">.</tt><tt class="py-name">locals</tt><tt class="py-op">.</tt><tt class="py-name">NOFRAME</tt> </tt>
+<a name="L269"></a><tt class="py-lineno"> 269</tt>  <tt class="py-line"> </tt>
+<a name="L270"></a><tt class="py-lineno"> 270</tt>  <tt class="py-line">        <tt class="py-name">try_bpp</tt> <tt class="py-op">=</tt> <tt class="py-name">cp</tt><tt class="py-op">.</tt><tt class="py-name">preferred_bpp</tt> </tt>
+<a name="L271"></a><tt class="py-lineno"> 271</tt>  <tt class="py-line"> </tt>
+<a name="L272"></a><tt class="py-lineno"> 272</tt>  <tt class="py-line">        <tt class="py-name">append_str</tt> <tt class="py-op">=</tt> <tt class="py-string">""</tt> </tt>
+<a name="L273"></a><tt class="py-lineno"> 273</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">cp</tt><tt class="py-op">.</tt><tt class="py-name">fullscreen</tt><tt class="py-op">:</tt> </tt>
+<a name="L274"></a><tt class="py-lineno"> 274</tt>  <tt class="py-line">            <tt class="py-name">screen_mode</tt> <tt class="py-op">=</tt> <tt class="py-string">"fullscreen"</tt> </tt>
+<a name="L275"></a><tt class="py-lineno"> 275</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L276"></a><tt class="py-lineno"> 276</tt>  <tt class="py-line">            <tt class="py-name">screen_mode</tt> <tt class="py-op">=</tt> <tt class="py-string">"window"</tt> </tt>
+<a name="L277"></a><tt class="py-lineno"> 277</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt class="py-name">pygame</tt><tt class="py-op">.</tt><tt class="py-name">display</tt><tt class="py-op">,</tt><tt class="py-string">"gl_set_attribute"</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L278"></a><tt class="py-lineno"> 278</tt>  <tt class="py-line">            <tt class="py-name">append_str</tt> <tt class="py-op">=</tt> <tt class="py-string">" (%d %d %d %d RGBA)."</tt><tt class="py-op">%</tt><tt class="py-op">(</tt><tt class="py-name">cp</tt><tt class="py-op">.</tt><tt class="py-name">red_bits</tt><tt class="py-op">,</tt> </tt>
+<a name="L279"></a><tt class="py-lineno"> 279</tt>  <tt class="py-line">                                                 <tt class="py-name">cp</tt><tt class="py-op">.</tt><tt class="py-name">green_bits</tt><tt class="py-op">,</tt> </tt>
+<a name="L280"></a><tt class="py-lineno"> 280</tt>  <tt class="py-line">                                                 <tt class="py-name">cp</tt><tt class="py-op">.</tt><tt class="py-name">blue_bits</tt><tt class="py-op">,</tt> </tt>
+<a name="L281"></a><tt class="py-lineno"> 281</tt>  <tt class="py-line">                                                 <tt class="py-name">cp</tt><tt class="py-op">.</tt><tt class="py-name">alpha_bits</tt><tt class="py-op">)</tt> </tt>
+<a name="L282"></a><tt class="py-lineno"> 282</tt>  <tt class="py-line"> </tt>
+<a name="L283"></a><tt class="py-lineno"> 283</tt>  <tt class="py-line">        <tt id="link-92" class="py-name"><a title="VisionEgg.logger" class="py-name" href="#" onclick="return doclink('link-92', 'logger', 'link-41');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">"Requesting %s %d x %d %d bpp%s"</tt><tt class="py-op">%</tt> </tt>
+<a name="L284"></a><tt class="py-lineno"> 284</tt>  <tt class="py-line">                    <tt class="py-op">(</tt><tt class="py-name">screen_mode</tt><tt class="py-op">,</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-93" class="py-name"><a title="VisionEgg.Core.Screen.size" class="py-name" href="#" onclick="return doclink('link-93', 'size', 'link-45');">size</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">,</t [...]
+<a name="L285"></a><tt class="py-lineno"> 285</tt>  <tt class="py-line">                     <tt class="py-name">try_bpp</tt><tt class="py-op">,</tt><tt class="py-name">append_str</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L286"></a><tt class="py-lineno"> 286</tt>  <tt class="py-line"> </tt>
+<a name="L287"></a><tt class="py-lineno"> 287</tt>  <tt class="py-line">        <tt class="py-name">pygame</tt><tt class="py-op">.</tt><tt class="py-name">display</tt><tt class="py-op">.</tt><tt class="py-name">set_mode</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-95" class="py-name"><a title="VisionEgg.Core.Screen.size" class="py-name" href="#" onclick="return doclink('link-95', 'size', 'link-45');">size</a></tt><tt class="py-op">,</tt> < [...]
+<a name="L288"></a><tt class="py-lineno"> 288</tt>  <tt class="py-line">        <tt class="py-comment"># set a global variable so we know workaround avoid pygame bug</tt> </tt>
+<a name="L289"></a><tt class="py-lineno"> 289</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt id="link-96" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-96', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-97" class="py-name"><a title="VisionEgg.config" class="py-name" href="#" onclick="return doclink('link-97', 'config', 'link-14');">config</a></tt><tt class="py-op">.</tt><tt class="py-name"> [...]
+<a name="L290"></a><tt class="py-lineno"> 290</tt>  <tt class="py-line"> </tt>
+<a name="L291"></a><tt class="py-lineno"> 291</tt>  <tt class="py-line">        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L292"></a><tt class="py-lineno"> 292</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">platform</tt> <tt class="py-op">!=</tt> <tt class="py-string">'darwin'</tt><tt class="py-op">:</tt> </tt>
+<a name="L293"></a><tt class="py-lineno"> 293</tt>  <tt class="py-line">                <tt class="py-name">pygame</tt><tt class="py-op">.</tt><tt class="py-name">display</tt><tt class="py-op">.</tt><tt class="py-name">set_icon</tt><tt class="py-op">(</tt><tt class="py-name">pygame</tt><tt class="py-op">.</tt><tt class="py-name">transform</tt><tt class="py-op">.</tt><tt id="link-98" class="py-name" targets="Method VisionEgg.Core.ProjectionBaseClass.scale()=VisionEgg.Core.ProjectionBaseCl [...]
+VisionEgg.ThreeDeeMath.TransformMatrix.scale" class="py-name" href="#" onclick="return doclink('link-98', 'scale', 'link-98');">scale</a></tt><tt class="py-op">(</tt><tt class="py-name">pygame</tt><tt class="py-op">.</tt><tt class="py-name">image</tt><tt class="py-op">.</tt><tt id="link-99" class="py-name" targets="Method VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.load()=VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html#load,Method VisionEgg. [...]
+VisionEgg.QuickTime.MovieTexture.load
+VisionEgg.Textures.Texture.load" class="py-name" href="#" onclick="return doclink('link-99', 'load', 'link-99');">load</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L294"></a><tt class="py-lineno"> 294</tt>  <tt class="py-line">                    <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">path</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt id="link-100" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-100', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-101" class="py-name"><a title="VisionEgg.config [...]
+<a name="L295"></a><tt class="py-lineno"> 295</tt>  <tt class="py-line">                                 <tt class="py-string">'data'</tt><tt class="py-op">,</tt><tt class="py-string">'visionegg.bmp'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">convert</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt><tt class="py-op">(</tt><tt class="py-number">32</tt><tt class="py-op">,</tt><tt class="py-number">32</tt><tt cl [...]
+<a name="L296"></a><tt class="py-lineno"> 296</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L297"></a><tt class="py-lineno"> 297</tt>  <tt class="py-line">                <tt class="py-keyword">import</tt> <tt class="py-name">AppKit</tt> <tt class="py-comment"># requires PyObjC, which is required by pygame osx</tt> </tt>
+<a name="L298"></a><tt class="py-lineno"> 298</tt>  <tt class="py-line">                <tt class="py-name">im</tt> <tt class="py-op">=</tt> <tt class="py-name">AppKit</tt><tt class="py-op">.</tt><tt class="py-name">NSImage</tt><tt class="py-op">.</tt><tt class="py-name">alloc</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L299"></a><tt class="py-lineno"> 299</tt>  <tt class="py-line">                <tt class="py-name">im</tt><tt class="py-op">.</tt><tt class="py-name">initWithContentsOfFile_</tt><tt class="py-op">(</tt> </tt>
+<a name="L300"></a><tt class="py-lineno"> 300</tt>  <tt class="py-line">                    <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">path</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt id="link-102" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-102', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-103" class="py-name"><a title="VisionEgg.config [...]
+<a name="L301"></a><tt class="py-lineno"> 301</tt>  <tt class="py-line">                                 <tt class="py-string">'data'</tt><tt class="py-op">,</tt><tt class="py-string">'visionegg.tif'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L302"></a><tt class="py-lineno"> 302</tt>  <tt class="py-line">                <tt class="py-name">AppKit</tt><tt class="py-op">.</tt><tt class="py-name">NSApplication</tt><tt class="py-op">.</tt><tt class="py-name">setApplicationIconImage_</tt><tt class="py-op">(</tt><tt class="py-name">AppKit</tt><tt class="py-op">.</tt><tt class="py-name">NSApp</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt><tt class="py-name">im</tt><tt class="py-op">)</tt> </tt>
+<a name="L303"></a><tt class="py-lineno"> 303</tt>  <tt class="py-line"> </tt>
+<a name="L304"></a><tt class="py-lineno"> 304</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt> <tt class="py-name">Exception</tt><tt class="py-op">,</tt><tt class="py-name">x</tt><tt class="py-op">:</tt> </tt>
+<a name="L305"></a><tt class="py-lineno"> 305</tt>  <tt class="py-line">            <tt id="link-104" class="py-name"><a title="VisionEgg.logger" class="py-name" href="#" onclick="return doclink('link-104', 'logger', 'link-41');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">"Error while trying to set_icon: %s: %s"</tt><tt class="py-op">%</tt> </tt>
+<a name="L306"></a><tt class="py-lineno"> 306</tt>  <tt class="py-line">                        <tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">x</tt><tt class="py-op">.</tt><tt class="py-name">__class__</tt><tt class="py-op">)</tt><tt class="py-op">,</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">x</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L307"></a><tt class="py-lineno"> 307</tt>  <tt class="py-line"> </tt>
+<a name="L308"></a><tt class="py-lineno"> 308</tt>  <tt class="py-line">        <tt class="py-keyword">global</tt> <tt class="py-name">gl_vendor</tt><tt class="py-op">,</tt> <tt class="py-name">gl_renderer</tt><tt class="py-op">,</tt> <tt class="py-name">gl_version</tt> </tt>
+<a name="L309"></a><tt class="py-lineno"> 309</tt>  <tt class="py-line">        <tt class="py-name">gl_vendor</tt> <tt class="py-op">=</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glGetString</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_VENDOR</tt><tt class="py-op">)</tt> </tt>
+<a name="L310"></a><tt class="py-lineno"> 310</tt>  <tt class="py-line">        <tt class="py-name">gl_renderer</tt> <tt class="py-op">=</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glGetString</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_RENDERER</tt><tt class="py-op">)</tt> </tt>
+<a name="L311"></a><tt class="py-lineno"> 311</tt>  <tt class="py-line">        <tt class="py-name">gl_version</tt> <tt class="py-op">=</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glGetString</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_VERSION</tt><tt class="py-op">)</tt> </tt>
+<a name="L312"></a><tt class="py-lineno"> 312</tt>  <tt class="py-line"> </tt>
+<a name="L313"></a><tt class="py-lineno"> 313</tt>  <tt class="py-line">        <tt id="link-105" class="py-name"><a title="VisionEgg.logger" class="py-name" href="#" onclick="return doclink('link-105', 'logger', 'link-41');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">"OpenGL %s, %s, %s (PyOpenGL %s)"</tt><tt class="py-op">%</tt> </tt>
+<a name="L314"></a><tt class="py-lineno"> 314</tt>  <tt class="py-line">                    <tt class="py-op">(</tt><tt class="py-name">gl_version</tt><tt class="py-op">,</tt> <tt class="py-name">gl_renderer</tt><tt class="py-op">,</tt> <tt class="py-name">gl_vendor</tt><tt class="py-op">,</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt id="link-106" class="py-name" targets="Variable VisionEgg.DaqKeyboard.__version__=VisionEgg.DaqKeyboard-module.html#__version__,Variable Visi [...]
+VisionEgg.DaqLPT.__version__
+VisionEgg.GL.__version__
+VisionEgg.PyroApps.EPhysGUI.__version__
+VisionEgg.PyroApps.EPhysGUIUtils.__version__
+VisionEgg.PyroApps.EPhysServer.__version__
+VisionEgg.PyroApps.GridGUI.__version__
+VisionEgg.PyroApps.GridServer.__version__
+VisionEgg.PyroApps.ScreenPositionGUI.__version__
+VisionEgg.PyroApps.ScreenPositionServer.__version__
+VisionEgg.PyroApps.SpinningDrumGUI.__version__
+VisionEgg.PyroApps.SpinningDrumServer.__version__
+VisionEgg.PyroHelpers.__version__
+VisionEgg.QuickTime.__version__
+VisionEgg.ResponseControl.__version__
+VisionEgg.SphereMap.__version__
+VisionEgg.TCPController.__version__" class="py-name" href="#" onclick="return doclink('link-106', '__version__', 'link-106');">__version__</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L315"></a><tt class="py-lineno"> 315</tt>  <tt class="py-line"> </tt>
+<a name="L316"></a><tt class="py-lineno"> 316</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">gl_renderer</tt> <tt class="py-op">==</tt> <tt class="py-string">"GDI Generic"</tt> <tt class="py-keyword">and</tt> <tt class="py-name">gl_vendor</tt> <tt class="py-op">==</tt> <tt class="py-string">"Microsoft Corporation"</tt><tt class="py-op">:</tt> </tt>
+<a name="L317"></a><tt class="py-lineno"> 317</tt>  <tt class="py-line">            <tt id="link-107" class="py-name"><a title="VisionEgg.logger" class="py-name" href="#" onclick="return doclink('link-107', 'logger', 'link-41');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">warning</tt><tt class="py-op">(</tt><tt class="py-string">"Using default Microsoft Windows OpenGL "</tt> </tt>
+<a name="L318"></a><tt class="py-lineno"> 318</tt>  <tt class="py-line">                           <tt class="py-string">"drivers.  Please (re-)install the latest "</tt> </tt>
+<a name="L319"></a><tt class="py-lineno"> 319</tt>  <tt class="py-line">                           <tt class="py-string">"video drivers from your video card "</tt> </tt>
+<a name="L320"></a><tt class="py-lineno"> 320</tt>  <tt class="py-line">                           <tt class="py-string">"manufacturer to get hardware accelerated "</tt> </tt>
+<a name="L321"></a><tt class="py-lineno"> 321</tt>  <tt class="py-line">                           <tt class="py-string">"performance."</tt><tt class="py-op">)</tt> </tt>
+<a name="L322"></a><tt class="py-lineno"> 322</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">gl_renderer</tt> <tt class="py-op">==</tt> <tt class="py-string">"Mesa GLX Indirect"</tt> <tt class="py-keyword">and</tt> <tt class="py-name">gl_vendor</tt> <tt class="py-op">==</tt> <tt class="py-string">"VA Linux Systems, Inc."</tt><tt class="py-op">:</tt> </tt>
+<a name="L323"></a><tt class="py-lineno"> 323</tt>  <tt class="py-line">            <tt id="link-108" class="py-name"><a title="VisionEgg.logger" class="py-name" href="#" onclick="return doclink('link-108', 'logger', 'link-41');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">warning</tt><tt class="py-op">(</tt><tt class="py-string">"Using default Mesa GLX drivers. Please "</tt> </tt>
+<a name="L324"></a><tt class="py-lineno"> 324</tt>  <tt class="py-line">                           <tt class="py-string">"(re-)install the latest video drivers from "</tt> </tt>
+<a name="L325"></a><tt class="py-lineno"> 325</tt>  <tt class="py-line">                           <tt class="py-string">"your video card manufacturer or DRI "</tt> </tt>
+<a name="L326"></a><tt class="py-lineno"> 326</tt>  <tt class="py-line">                           <tt class="py-string">"project to get hardware accelarated "</tt> </tt>
+<a name="L327"></a><tt class="py-lineno"> 327</tt>  <tt class="py-line">                           <tt class="py-string">"performance."</tt><tt class="py-op">)</tt> </tt>
+<a name="L328"></a><tt class="py-lineno"> 328</tt>  <tt class="py-line">        <tt class="py-comment"># Set values to unknown and fill based on OpenGL values</tt> </tt>
+<a name="L329"></a><tt class="py-lineno"> 329</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">cp</tt><tt class="py-op">.</tt><tt class="py-name">red_bits</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L330"></a><tt class="py-lineno"> 330</tt>  <tt class="py-line">        <tt class="py-name">cp</tt><tt class="py-op">.</tt><tt class="py-name">green_bits</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L331"></a><tt class="py-lineno"> 331</tt>  <tt class="py-line">        <tt class="py-name">cp</tt><tt class="py-op">.</tt><tt class="py-name">blue_bits</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L332"></a><tt class="py-lineno"> 332</tt>  <tt class="py-line">        <tt class="py-name">cp</tt><tt class="py-op">.</tt><tt class="py-name">alpha_bits</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L333"></a><tt class="py-lineno"> 333</tt>  <tt class="py-line">        <tt class="py-name">cp</tt><tt class="py-op">.</tt><tt class="py-name">is_stereo</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L334"></a><tt class="py-lineno"> 334</tt>  <tt class="py-line">        <tt class="py-name">got_bpp</tt> <tt class="py-op">=</tt> <tt class="py-name">pygame</tt><tt class="py-op">.</tt><tt class="py-name">display</tt><tt class="py-op">.</tt><tt class="py-name">Info</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">bitsize</tt> </tt>
+<a name="L335"></a><tt class="py-lineno"> 335</tt>  <tt class="py-line">        <tt class="py-name">append_str</tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt> </tt>
+<a name="L336"></a><tt class="py-lineno"> 336</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt class="py-name">pygame</tt><tt class="py-op">.</tt><tt class="py-name">display</tt><tt class="py-op">,</tt><tt class="py-string">"gl_get_attribute"</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L337"></a><tt class="py-lineno"> 337</tt>  <tt class="py-line">            <tt class="py-comment"># Fill in values as known</tt> </tt>
+<a name="L338"></a><tt class="py-lineno"> 338</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">cp</tt><tt class="py-op">.</tt><tt class="py-name">red_bits</tt> <tt class="py-op">=</tt> <tt class="py-name">pygame</tt><tt class="py-op">.</tt><tt class="py-name">display</tt><tt class="py-op">.</tt><tt class="py-name">gl_get_attribute</tt><tt class="py-op">(</tt><tt class="py-name">pygame</tt><tt class="py-op">.</tt><tt class="py-name">locals</tt><tt clas [...]
+<a name="L339"></a><tt class="py-lineno"> 339</tt>  <tt class="py-line">            <tt class="py-name">cp</tt><tt class="py-op">.</tt><tt class="py-name">green_bits</tt> <tt class="py-op">=</tt> <tt class="py-name">pygame</tt><tt class="py-op">.</tt><tt class="py-name">display</tt><tt class="py-op">.</tt><tt class="py-name">gl_get_attribute</tt><tt class="py-op">(</tt><tt class="py-name">pygame</tt><tt class="py-op">.</tt><tt class="py-name">locals</tt><tt class="py-op">.</tt><tt class= [...]
+<a name="L340"></a><tt class="py-lineno"> 340</tt>  <tt class="py-line">            <tt class="py-name">cp</tt><tt class="py-op">.</tt><tt class="py-name">blue_bits</tt> <tt class="py-op">=</tt> <tt class="py-name">pygame</tt><tt class="py-op">.</tt><tt class="py-name">display</tt><tt class="py-op">.</tt><tt class="py-name">gl_get_attribute</tt><tt class="py-op">(</tt><tt class="py-name">pygame</tt><tt class="py-op">.</tt><tt class="py-name">locals</tt><tt class="py-op">.</tt><tt class=" [...]
+<a name="L341"></a><tt class="py-lineno"> 341</tt>  <tt class="py-line">            <tt class="py-name">cp</tt><tt class="py-op">.</tt><tt class="py-name">alpha_bits</tt> <tt class="py-op">=</tt> <tt class="py-name">pygame</tt><tt class="py-op">.</tt><tt class="py-name">display</tt><tt class="py-op">.</tt><tt class="py-name">gl_get_attribute</tt><tt class="py-op">(</tt><tt class="py-name">pygame</tt><tt class="py-op">.</tt><tt class="py-name">locals</tt><tt class="py-op">.</tt><tt class= [...]
+<a name="L342"></a><tt class="py-lineno"> 342</tt>  <tt class="py-line">            <tt class="py-name">cp</tt><tt class="py-op">.</tt><tt class="py-name">is_stereo</tt> <tt class="py-op">=</tt> <tt class="py-name">pygame</tt><tt class="py-op">.</tt><tt class="py-name">display</tt><tt class="py-op">.</tt><tt class="py-name">gl_get_attribute</tt><tt class="py-op">(</tt><tt class="py-name">pygame</tt><tt class="py-op">.</tt><tt class="py-name">locals</tt><tt class="py-op">.</tt><tt class=" [...]
+<a name="L343"></a><tt class="py-lineno"> 343</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">cp</tt><tt class="py-op">.</tt><tt class="py-name">is_stereo</tt><tt class="py-op">:</tt> <tt class="py-name">stereo_string</tt> <tt class="py-op">=</tt> <tt class="py-string">' stereo'</tt> </tt>
+<a name="L344"></a><tt class="py-lineno"> 344</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> <tt class="py-name">stereo_string</tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt> </tt>
+<a name="L345"></a><tt class="py-lineno"> 345</tt>  <tt class="py-line">            <tt class="py-name">append_str</tt> <tt class="py-op">=</tt> <tt class="py-string">" (%d %d %d %d RGBA%s)"</tt><tt class="py-op">%</tt><tt class="py-op">(</tt> </tt>
+<a name="L346"></a><tt class="py-lineno"> 346</tt>  <tt class="py-line">                <tt class="py-name">cp</tt><tt class="py-op">.</tt><tt class="py-name">red_bits</tt><tt class="py-op">,</tt><tt class="py-name">cp</tt><tt class="py-op">.</tt><tt class="py-name">green_bits</tt><tt class="py-op">,</tt><tt class="py-name">cp</tt><tt class="py-op">.</tt><tt class="py-name">blue_bits</tt><tt class="py-op">,</tt><tt class="py-name">cp</tt><tt class="py-op">.</tt><tt class="py-name">alpha_ [...]
+<a name="L347"></a><tt class="py-lineno"> 347</tt>  <tt class="py-line">                <tt class="py-name">stereo_string</tt><tt class="py-op">)</tt> </tt>
+<a name="L348"></a><tt class="py-lineno"> 348</tt>  <tt class="py-line">        <tt id="link-109" class="py-name"><a title="VisionEgg.logger" class="py-name" href="#" onclick="return doclink('link-109', 'logger', 'link-41');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">"Video system reports %d bpp%s."</tt><tt class="py-op">%</tt><tt class="py-op">(</tt><tt class="py-name">got_bpp</tt><tt class="py-op">,</tt><tt class=" [...]
+<a name="L349"></a><tt class="py-lineno"> 349</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">got_bpp</tt> <tt class="py-op"><</tt> <tt class="py-name">try_bpp</tt><tt class="py-op">:</tt> </tt>
+<a name="L350"></a><tt class="py-lineno"> 350</tt>  <tt class="py-line">            <tt id="link-110" class="py-name"><a title="VisionEgg.logger" class="py-name" href="#" onclick="return doclink('link-110', 'logger', 'link-41');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">warning</tt><tt class="py-op">(</tt><tt class="py-string">"Video system reports %d bits per pixel, "</tt> </tt>
+<a name="L351"></a><tt class="py-lineno"> 351</tt>  <tt class="py-line">                           <tt class="py-string">"while your program requested %d. Can you "</tt> </tt>
+<a name="L352"></a><tt class="py-lineno"> 352</tt>  <tt class="py-line">                           <tt class="py-string">"adjust your video drivers?"</tt><tt class="py-op">%</tt><tt class="py-op">(</tt><tt class="py-name">got_bpp</tt><tt class="py-op">,</tt> </tt>
+<a name="L353"></a><tt class="py-lineno"> 353</tt>  <tt class="py-line">                           <tt class="py-name">try_bpp</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L354"></a><tt class="py-lineno"> 354</tt>  <tt class="py-line">        <tt class="py-comment"># Save the address of these functions so they can be called</tt> </tt>
+<a name="L355"></a><tt class="py-lineno"> 355</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># when closing the screen.</tt> </tt>
+<a name="L356"></a><tt class="py-lineno"> 356</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__cursor_visible_func__</tt> <tt class="py-op">=</tt> <tt class="py-name">pygame</tt><tt class="py-op">.</tt><tt class="py-name">mouse</tt><tt class="py-op">.</tt><tt class="py-name">set_visible</tt> </tt>
+<a name="L357"></a><tt class="py-lineno"> 357</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__pygame_quit__</tt> <tt class="py-op">=</tt> <tt class="py-name">pygame</tt><tt class="py-op">.</tt><tt id="link-111" class="py-name" targets="Method VisionEgg.PyroApps.EPhysGUI.AppWindow.quit()=VisionEgg.PyroApps.EPhysGUI.AppWindow-class.html#quit"><a title="VisionEgg.PyroApps.EPhysGUI.AppWindow.quit" class="py-name" href="#" onclick=" [...]
+<a name="L358"></a><tt class="py-lineno"> 358</tt>  <tt class="py-line"> </tt>
+<a name="L359"></a><tt class="py-lineno"> 359</tt>  <tt class="py-line">        <tt class="py-comment">#Check FSAA requests</tt> </tt>
+<a name="L360"></a><tt class="py-lineno"> 360</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">cp</tt><tt class="py-op">.</tt><tt class="py-name">multisample_samples</tt><tt class="py-op">></tt><tt class="py-number">0</tt> <tt class="py-op">:</tt> </tt>
+<a name="L361"></a><tt class="py-lineno"> 361</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt class="py-name">pygame</tt><tt class="py-op">.</tt><tt class="py-name">display</tt><tt class="py-op">,</tt><tt class="py-string">"gl_set_attribute"</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L362"></a><tt class="py-lineno"> 362</tt>  <tt class="py-line">                <tt class="py-name">got_ms_buf</tt> <tt class="py-op">=</tt> <tt class="py-name">pygame</tt><tt class="py-op">.</tt><tt class="py-name">display</tt><tt class="py-op">.</tt><tt class="py-name">gl_get_attribute</tt><tt class="py-op">(</tt><tt class="py-name">pygame</tt><tt class="py-op">.</tt><tt class="py-name">locals</tt><tt class="py-op">.</tt><tt class="py-name">GL_MULTISAMPLEBUFFERS</tt><tt class=" [...]
+<a name="L363"></a><tt class="py-lineno"> 363</tt>  <tt class="py-line">                <tt class="py-name">got_ms_samp</tt> <tt class="py-op">=</tt> <tt class="py-name">pygame</tt><tt class="py-op">.</tt><tt class="py-name">display</tt><tt class="py-op">.</tt><tt class="py-name">gl_get_attribute</tt><tt class="py-op">(</tt><tt class="py-name">pygame</tt><tt class="py-op">.</tt><tt class="py-name">locals</tt><tt class="py-op">.</tt><tt class="py-name">GL_MULTISAMPLESAMPLES</tt><tt class= [...]
+<a name="L364"></a><tt class="py-lineno"> 364</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">got_ms_samp</tt> <tt class="py-op"><</tt> <tt class="py-name">cp</tt><tt class="py-op">.</tt><tt class="py-name">multisample_samples</tt> <tt class="py-op">:</tt> </tt>
+<a name="L365"></a><tt class="py-lineno"> 365</tt>  <tt class="py-line">                    <tt id="link-112" class="py-name"><a title="VisionEgg.logger" class="py-name" href="#" onclick="return doclink('link-112', 'logger', 'link-41');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">warning</tt><tt class="py-op">(</tt><tt class="py-string">"Video system reports %d multisample samples, "</tt> </tt>
+<a name="L366"></a><tt class="py-lineno"> 366</tt>  <tt class="py-line">                                   <tt class="py-string">"while you requested %d.  FSAA requires "</tt> </tt>
+<a name="L367"></a><tt class="py-lineno"> 367</tt>  <tt class="py-line">                                   <tt class="py-string">"SDL > 1.2.6, check that it is installed."</tt><tt class="py-op">%</tt><tt class="py-op">(</tt><tt class="py-name">got_ms_samp</tt><tt class="py-op">,</tt> <tt class="py-name">cp</tt><tt class="py-op">.</tt><tt class="py-name">multisample_samples</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L368"></a><tt class="py-lineno"> 368</tt>  <tt class="py-line"> </tt>
+<a name="L369"></a><tt class="py-lineno"> 369</tt>  <tt class="py-line">        <tt class="py-comment"># Attempt to synchronize buffer swapping with vertical sync again</tt> </tt>
+<a name="L370"></a><tt class="py-lineno"> 370</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">cp</tt><tt class="py-op">.</tt><tt class="py-name">sync_swap</tt><tt class="py-op">:</tt> </tt>
+<a name="L371"></a><tt class="py-lineno"> 371</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">sync_success</tt><tt class="py-op">:</tt> </tt>
+<a name="L372"></a><tt class="py-lineno"> 372</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt id="link-113" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-113', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-114" class="py-name"><a title="VisionEgg.PlatformDependent" class="py-name" href="#" onclick="return doclink('link-114', 'PlatformDependent', 'li [...]
+<a name="L373"></a><tt class="py-lineno"> 373</tt>  <tt class="py-line">                    <tt class="py-name">cp</tt><tt class="py-op">.</tt><tt class="py-name">sync_swap</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
+<a name="L374"></a><tt class="py-lineno"> 374</tt>  <tt class="py-line">                    <tt id="link-116" class="py-name"><a title="VisionEgg.logger" class="py-name" href="#" onclick="return doclink('link-116', 'logger', 'link-41');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">warning</tt><tt class="py-op">(</tt><tt class="py-string">"Unable to detect or automatically "</tt> </tt>
+<a name="L375"></a><tt class="py-lineno"> 375</tt>  <tt class="py-line">                                   <tt class="py-string">"synchronize buffer swapping with "</tt> </tt>
+<a name="L376"></a><tt class="py-lineno"> 376</tt>  <tt class="py-line">                                   <tt class="py-string">"vertical retrace. May be possible "</tt> </tt>
+<a name="L377"></a><tt class="py-lineno"> 377</tt>  <tt class="py-line">                                   <tt class="py-string">"by manually adjusting video "</tt> </tt>
+<a name="L378"></a><tt class="py-lineno"> 378</tt>  <tt class="py-line">                                   <tt class="py-string">"drivers. (Look for 'Enable "</tt> </tt>
+<a name="L379"></a><tt class="py-lineno"> 379</tt>  <tt class="py-line">                                   <tt class="py-string">"Vertical Sync' or similar.) If "</tt> </tt>
+<a name="L380"></a><tt class="py-lineno"> 380</tt>  <tt class="py-line">                                   <tt class="py-string">"buffer swapping is not "</tt> </tt>
+<a name="L381"></a><tt class="py-lineno"> 381</tt>  <tt class="py-line">                                   <tt class="py-string">"synchronized, frame by frame "</tt> </tt>
+<a name="L382"></a><tt class="py-lineno"> 382</tt>  <tt class="py-line">                                   <tt class="py-string">"control will not be possible. "</tt> </tt>
+<a name="L383"></a><tt class="py-lineno"> 383</tt>  <tt class="py-line">                                   <tt class="py-string">"Because of this, you will probably "</tt> </tt>
+<a name="L384"></a><tt class="py-lineno"> 384</tt>  <tt class="py-line">                                   <tt class="py-string">"get a warning about calculated "</tt> </tt>
+<a name="L385"></a><tt class="py-lineno"> 385</tt>  <tt class="py-line">                                   <tt class="py-string">"frames per second different than "</tt> </tt>
+<a name="L386"></a><tt class="py-lineno"> 386</tt>  <tt class="py-line">                                   <tt class="py-string">"specified."</tt><tt class="py-op">)</tt> </tt>
+<a name="L387"></a><tt class="py-lineno"> 387</tt>  <tt class="py-line">        <tt class="py-comment"># Check previously made OpenGL assumptions now that we have OpenGL window</tt> </tt>
+<a name="L388"></a><tt class="py-lineno"> 388</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt id="link-117" class="py-name" targets="Function VisionEgg.Core.post_gl_init()=VisionEgg.Core-module.html#post_gl_init"><a title="VisionEgg.Core.post_gl_init" class="py-name" href="#" onclick="return doclink('link-117', 'post_gl_init', 'link-117');">post_gl_init</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L389"></a><tt class="py-lineno"> 389</tt>  <tt class="py-line"> </tt>
+<a name="L390"></a><tt class="py-lineno"> 390</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">cp</tt><tt class="py-op">.</tt><tt class="py-name">hide_mouse</tt><tt class="py-op">:</tt> </tt>
+<a name="L391"></a><tt class="py-lineno"> 391</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__cursor_visible_func__</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">)</tt> </tt>
+<a name="L392"></a><tt class="py-lineno"> 392</tt>  <tt class="py-line"> </tt>
+<a name="L393"></a><tt class="py-lineno"> 393</tt>  <tt class="py-line">        <tt class="py-comment"># Attempt to set maximum priority (This may not be the best</tt> </tt>
+<a name="L394"></a><tt class="py-lineno"> 394</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># place in the code to do it because it's an application-level</tt> </tt>
+<a name="L395"></a><tt class="py-lineno"> 395</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># thing, not a screen-level thing, but it fits reasonably well</tt> </tt>
+<a name="L396"></a><tt class="py-lineno"> 396</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># here for now.)</tt> </tt>
+<a name="L397"></a><tt class="py-lineno"> 397</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">cp</tt><tt class="py-op">.</tt><tt class="py-name">maxpriority</tt><tt class="py-op">:</tt> </tt>
+<a name="L398"></a><tt class="py-lineno"> 398</tt>  <tt class="py-line">            <tt id="link-118" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-118', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-119" class="py-name"><a title="VisionEgg.PlatformDependent" class="py-name" href="#" onclick="return doclink('link-119', 'PlatformDependent', 'link-2');">PlatformDependent</a></tt><tt class="py-op">.</tt><tt id=" [...]
+VisionEgg.Textures.TextureObject.set_priority" class="py-name" href="#" onclick="return doclink('link-120', 'set_priority', 'link-120');">set_priority</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-comment"># defaults to max priority</tt> </tt>
+<a name="L399"></a><tt class="py-lineno"> 399</tt>  <tt class="py-line"> </tt>
+<a name="L400"></a><tt class="py-lineno"> 400</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt id="link-121" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-121', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-122" class="py-name"><a title="VisionEgg.config" class="py-name" href="#" onclick="return doclink('link-122', 'config', 'link-14' [...]
+<a name="L401"></a><tt class="py-lineno"> 401</tt>  <tt class="py-line">            <tt id="link-123" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-123', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-124" class="py-name"><a title="VisionEgg.config" class="py-name" href="#" onclick="return doclink('link-124', 'config', 'link-14');">config</a></tt><tt class="py-op">.</tt><tt class="py-name">_open_screens</tt><t [...]
+<a name="L402"></a><tt class="py-lineno"> 402</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L403"></a><tt class="py-lineno"> 403</tt>  <tt class="py-line">            <tt id="link-125" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-125', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-126" class="py-name"><a title="VisionEgg.config" class="py-name" href="#" onclick="return doclink('link-126', 'config', 'link-14');">config</a></tt><tt class="py-op">.</tt><tt class="py-name">_open_screens</tt> < [...]
+</div><a name="L404"></a><tt class="py-lineno"> 404</tt>  <tt class="py-line"> </tt>
+<a name="L405"></a><tt class="py-lineno"> 405</tt>  <tt class="py-line">    <tt class="py-comment"># Use Python descriptors (introduced in Python 2.2) to link size</tt> </tt>
+<a name="L406"></a><tt class="py-lineno"> 406</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># attribute to constant_parameters.size.</tt> </tt>
+<a name="Screen.get_size"></a><div id="Screen.get_size-def"><a name="L407"></a><tt class="py-lineno"> 407</tt> <a class="py-toggle" href="#" id="Screen.get_size-toggle" onclick="return toggle('Screen.get_size');">-</a><tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.Core.Screen-class.html#get_size">get_size</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> <tt [...]
+</div><a name="Screen.set_size"></a><div id="Screen.set_size-def"><a name="L408"></a><tt class="py-lineno"> 408</tt> <a class="py-toggle" href="#" id="Screen.set_size-toggle" onclick="return toggle('Screen.set_size');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.Core.Screen-class.html#set_size">set_size</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">value</tt><tt class="py-op"> [...]
+</div><a name="L409"></a><tt class="py-lineno"> 409</tt>  <tt class="py-line">    <tt id="link-128" class="py-name"><a title="VisionEgg.Core.Screen.size" class="py-name" href="#" onclick="return doclink('link-128', 'size', 'link-45');">size</a></tt> <tt class="py-op">=</tt> <tt class="py-name">property</tt><tt class="py-op">(</tt><tt id="link-129" class="py-name" targets="Method VisionEgg.Core.Screen.get_size()=VisionEgg.Core.Screen-class.html#get_size"><a title="VisionEgg.Core.Screen.ge [...]
+<a name="L410"></a><tt class="py-lineno"> 410</tt>  <tt class="py-line"> </tt>
+<a name="Screen.get_framebuffer_as_image"></a><div id="Screen.get_framebuffer_as_image-def"><a name="L411"></a><tt class="py-lineno"> 411</tt> <a class="py-toggle" href="#" id="Screen.get_framebuffer_as_image-toggle" onclick="return toggle('Screen.get_framebuffer_as_image');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.Core.Screen-class.html#get_framebuffer_as_image">get_framebuffer_as_image</a><tt class="py-op">(</tt><tt class="py- [...]
+<a name="L412"></a><tt class="py-lineno"> 412</tt>  <tt class="py-line">                                 <tt class="py-param">buffer</tt><tt class="py-op">=</tt><tt class="py-string">'back'</tt><tt class="py-op">,</tt> </tt>
+<a name="L413"></a><tt class="py-lineno"> 413</tt>  <tt class="py-line">                                 <tt class="py-param">format</tt><tt class="py-op">=</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_RGB</tt><tt class="py-op">,</tt> </tt>
+<a name="L414"></a><tt class="py-lineno"> 414</tt>  <tt class="py-line">                                 <tt class="py-param">position</tt><tt class="py-op">=</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">,</tt><tt class="py-number">0</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L415"></a><tt class="py-lineno"> 415</tt>  <tt class="py-line">                                 <tt class="py-param">anchor</tt><tt class="py-op">=</tt><tt class="py-string">'lowerleft'</tt><tt class="py-op">,</tt> </tt>
+<a name="L416"></a><tt class="py-lineno"> 416</tt>  <tt class="py-line">                                 <tt class="py-param">size</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-comment"># if None, use full screen</tt> </tt>
+<a name="L417"></a><tt class="py-lineno"> 417</tt>  <tt class="py-line">                                 <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Screen.get_framebuffer_as_image-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Screen.get_framebuffer_as_image-expanded"><a name="L418"></a><tt class="py-lineno"> 418</tt>  <tt class="py-line">        <tt class="py-docstring">"""get pixel values from framebuffer to PIL image"""</tt> </tt>
+<a name="L419"></a><tt class="py-lineno"> 419</tt>  <tt class="py-line">        <tt class="py-keyword">import</tt> <tt class="py-name">Image</tt> <tt class="py-comment"># Could import this at the beginning of the file, but it breaks sometimes.</tt> </tt>
+<a name="L420"></a><tt class="py-lineno"> 420</tt>  <tt class="py-line"> </tt>
+<a name="L421"></a><tt class="py-lineno"> 421</tt>  <tt class="py-line">        <tt class="py-name">fb_array</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-131" class="py-name" targets="Method VisionEgg.Core.Screen.get_framebuffer_as_array()=VisionEgg.Core.Screen-class.html#get_framebuffer_as_array"><a title="VisionEgg.Core.Screen.get_framebuffer_as_array" class="py-name" href="#" onclick="return doclink('link-131', 'get_framebuffer_as_arr [...]
+<a name="L422"></a><tt class="py-lineno"> 422</tt>  <tt class="py-line">                                                 <tt class="py-name">format</tt><tt class="py-op">=</tt><tt class="py-name">format</tt><tt class="py-op">,</tt> </tt>
+<a name="L423"></a><tt class="py-lineno"> 423</tt>  <tt class="py-line">                                                 <tt class="py-name">position</tt><tt class="py-op">=</tt><tt class="py-name">position</tt><tt class="py-op">,</tt> </tt>
+<a name="L424"></a><tt class="py-lineno"> 424</tt>  <tt class="py-line">                                                 <tt class="py-name">anchor</tt><tt class="py-op">=</tt><tt class="py-name">anchor</tt><tt class="py-op">,</tt> </tt>
+<a name="L425"></a><tt class="py-lineno"> 425</tt>  <tt class="py-line">                                                 <tt id="link-132" class="py-name"><a title="VisionEgg.Core.Screen.size" class="py-name" href="#" onclick="return doclink('link-132', 'size', 'link-45');">size</a></tt><tt class="py-op">=</tt><tt id="link-133" class="py-name"><a title="VisionEgg.Core.Screen.size" class="py-name" href="#" onclick="return doclink('link-133', 'size', 'link-45');">size</a></tt><tt class="py [...]
+<a name="L426"></a><tt class="py-lineno"> 426</tt>  <tt class="py-line">                                                 <tt class="py-op">)</tt> </tt>
+<a name="L427"></a><tt class="py-lineno"> 427</tt>  <tt class="py-line">        <tt id="link-134" class="py-name"><a title="VisionEgg.Core.Screen.size" class="py-name" href="#" onclick="return doclink('link-134', 'size', 'link-45');">size</a></tt> <tt class="py-op">=</tt> <tt class="py-name">fb_array</tt><tt class="py-op">.</tt><tt class="py-name">shape</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">fb_array</t [...]
+<a name="L428"></a><tt class="py-lineno"> 428</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">format</tt> <tt class="py-op">==</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_RGB</tt><tt class="py-op">:</tt> </tt>
+<a name="L429"></a><tt class="py-lineno"> 429</tt>  <tt class="py-line">            <tt class="py-name">pil_mode</tt> <tt class="py-op">=</tt> <tt class="py-string">'RGB'</tt> </tt>
+<a name="L430"></a><tt class="py-lineno"> 430</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">format</tt> <tt class="py-op">==</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_RGBA</tt><tt class="py-op">:</tt> </tt>
+<a name="L431"></a><tt class="py-lineno"> 431</tt>  <tt class="py-line">            <tt class="py-name">pil_mode</tt> <tt class="py-op">=</tt> <tt class="py-string">'RGBA'</tt> </tt>
+<a name="L432"></a><tt class="py-lineno"> 432</tt>  <tt class="py-line">        <tt class="py-name">fb_image</tt> <tt class="py-op">=</tt> <tt class="py-name">Image</tt><tt class="py-op">.</tt><tt class="py-name">fromstring</tt><tt class="py-op">(</tt><tt class="py-name">pil_mode</tt><tt class="py-op">,</tt><tt id="link-135" class="py-name"><a title="VisionEgg.Core.Screen.size" class="py-name" href="#" onclick="return doclink('link-135', 'size', 'link-45');">size</a></tt><tt class="py-op [...]
+<a name="L433"></a><tt class="py-lineno"> 433</tt>  <tt class="py-line">        <tt class="py-name">fb_image</tt> <tt class="py-op">=</tt> <tt class="py-name">fb_image</tt><tt class="py-op">.</tt><tt class="py-name">transpose</tt><tt class="py-op">(</tt> <tt class="py-name">Image</tt><tt class="py-op">.</tt><tt class="py-name">FLIP_TOP_BOTTOM</tt> <tt class="py-op">)</tt> </tt>
+<a name="L434"></a><tt class="py-lineno"> 434</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">fb_image</tt> </tt>
+</div><a name="L435"></a><tt class="py-lineno"> 435</tt>  <tt class="py-line"> </tt>
+<a name="Screen.get_framebuffer_as_array"></a><div id="Screen.get_framebuffer_as_array-def"><a name="L436"></a><tt class="py-lineno"> 436</tt> <a class="py-toggle" href="#" id="Screen.get_framebuffer_as_array-toggle" onclick="return toggle('Screen.get_framebuffer_as_array');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.Core.Screen-class.html#get_framebuffer_as_array">get_framebuffer_as_array</a><tt class="py-op">(</tt><tt class="py- [...]
+<a name="L437"></a><tt class="py-lineno"> 437</tt>  <tt class="py-line">                                 <tt class="py-param">buffer</tt><tt class="py-op">=</tt><tt class="py-string">'back'</tt><tt class="py-op">,</tt> </tt>
+<a name="L438"></a><tt class="py-lineno"> 438</tt>  <tt class="py-line">                                 <tt class="py-param">format</tt><tt class="py-op">=</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_RGB</tt><tt class="py-op">,</tt> </tt>
+<a name="L439"></a><tt class="py-lineno"> 439</tt>  <tt class="py-line">                                 <tt class="py-param">position</tt><tt class="py-op">=</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">,</tt><tt class="py-number">0</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L440"></a><tt class="py-lineno"> 440</tt>  <tt class="py-line">                                 <tt class="py-param">anchor</tt><tt class="py-op">=</tt><tt class="py-string">'lowerleft'</tt><tt class="py-op">,</tt> </tt>
+<a name="L441"></a><tt class="py-lineno"> 441</tt>  <tt class="py-line">                                 <tt class="py-param">size</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-comment"># if None, use full screen</tt> </tt>
+<a name="L442"></a><tt class="py-lineno"> 442</tt>  <tt class="py-line">                                 <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Screen.get_framebuffer_as_array-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Screen.get_framebuffer_as_array-expanded"><a name="L443"></a><tt class="py-lineno"> 443</tt>  <tt class="py-line">        <tt class="py-docstring">"""get pixel values from framebuffer to Numeric array"""</tt><tt class="py-comment"># (SLOW)"""</tt> </tt>
+<a name="L444"></a><tt class="py-lineno"> 444</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt id="link-136" class="py-name"><a title="VisionEgg.Core.Screen.size" class="py-name" href="#" onclick="return doclink('link-136', 'size', 'link-45');">size</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L445"></a><tt class="py-lineno"> 445</tt>  <tt class="py-line">            <tt id="link-137" class="py-name"><a title="VisionEgg.Core.Screen.size" class="py-name" href="#" onclick="return doclink('link-137', 'size', 'link-45');">size</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-138" class="py-name"><a title="VisionEgg.Core.Screen.size" class="py-name" href="#" onclick="return doclink('link-138', 'size', 'link-45');">size</a> [...]
+<a name="L446"></a><tt class="py-lineno"> 446</tt>  <tt class="py-line">        <tt class="py-name">lowerleft</tt> <tt class="py-op">=</tt> <tt id="link-139" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-139', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt class="py-name">_get_lowerleft</tt><tt class="py-op">(</tt><tt class="py-name">position</tt><tt class="py-op">,</tt><tt class="py-name">anchor</tt><tt class="py-op"> [...]
+<a name="L447"></a><tt class="py-lineno"> 447</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">buffer</tt> <tt class="py-op">==</tt> <tt class="py-string">'front'</tt><tt class="py-op">:</tt> </tt>
+<a name="L448"></a><tt class="py-lineno"> 448</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glReadBuffer</tt><tt class="py-op">(</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_FRONT</tt> <tt class="py-op">)</tt> </tt>
+<a name="L449"></a><tt class="py-lineno"> 449</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">buffer</tt> <tt class="py-op">==</tt> <tt class="py-string">'back'</tt><tt class="py-op">:</tt> </tt>
+<a name="L450"></a><tt class="py-lineno"> 450</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glReadBuffer</tt><tt class="py-op">(</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_BACK</tt> <tt class="py-op">)</tt> </tt>
+<a name="L451"></a><tt class="py-lineno"> 451</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L452"></a><tt class="py-lineno"> 452</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">'No support for "%s" framebuffer'</tt><tt class="py-op">%</tt><tt class="py-name">buffer</tt><tt class="py-op">)</tt> </tt>
+<a name="L453"></a><tt class="py-lineno"> 453</tt>  <tt class="py-line"> </tt>
+<a name="L454"></a><tt class="py-lineno"> 454</tt>  <tt class="py-line">        <tt class="py-comment"># according to Apple's glGrab demo, this should force DMA transfers:</tt> </tt>
+<a name="L455"></a><tt class="py-lineno"> 455</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glPixelStorei</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_PACK_ALIGNMENT</tt><tt class="py-op">,</tt> <tt class="py-number">4</tt><tt class="py-op">)</tt> </tt>
+<a name="L456"></a><tt class="py-lineno"> 456</tt>  <tt class="py-line">        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glPixelStorei</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_PACK_ROW_LENGTH</tt><tt class="py-op">,</tt> <tt class="py-number">0</tt><tt class="py-op">)</tt> </tt>
+<a name="L457"></a><tt class="py-lineno"> 457</tt>  <tt class="py-line">        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glPixelStorei</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_PACK_SKIP_ROWS</tt><tt class="py-op">,</tt> <tt class="py-number">0</tt><tt class="py-op">)</tt> </tt>
+<a name="L458"></a><tt class="py-lineno"> 458</tt>  <tt class="py-line">        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glPixelStorei</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_PACK_SKIP_PIXELS</tt><tt class="py-op">,</tt> <tt class="py-number">0</tt><tt class="py-op">)</tt> </tt>
+<a name="L459"></a><tt class="py-lineno"> 459</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">gl_version</tt> <tt class="py-op">>=</tt> <tt class="py-string">'1.2'</tt> <tt class="py-keyword">and</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">,</tt><tt class="py-string">'GL_BGRA'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L460"></a><tt class="py-lineno"> 460</tt>  <tt class="py-line">            <tt class="py-name">framebuffer_pixels</tt> <tt class="py-op">=</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glReadPixels</tt><tt class="py-op">(</tt><tt class="py-name">lowerleft</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">,</tt><tt class="py-name">lowerleft</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt cla [...]
+<a name="L461"></a><tt class="py-lineno"> 461</tt>  <tt class="py-line">                                                 <tt id="link-141" class="py-name"><a title="VisionEgg.Core.Screen.size" class="py-name" href="#" onclick="return doclink('link-141', 'size', 'link-45');">size</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">,</tt><tt id="link-142" class="py-name"><a title="VisionEgg.Core.Screen.size" class="py-name" href="#" onclick [...]
+<a name="L462"></a><tt class="py-lineno"> 462</tt>  <tt class="py-line">                                                 <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_BGRA</tt><tt class="py-op">,</tt> </tt>
+<a name="L463"></a><tt class="py-lineno"> 463</tt>  <tt class="py-line">                                                 <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt id="link-143" class="py-name" targets="Variable VisionEgg.GL.GL_UNSIGNED_INT_8_8_8_8_REV=VisionEgg.GL-module.html#GL_UNSIGNED_INT_8_8_8_8_REV"><a title="VisionEgg.GL.GL_UNSIGNED_INT_8_8_8_8_REV" class="py-name" href="#" onclick="return doclink('link-143', 'GL_UNSIGNED_INT_8_8_8_8_REV', 'link-143');">GL_UNSIGNED_INT [...]
+<a name="L464"></a><tt class="py-lineno"> 464</tt>  <tt class="py-line">            <tt class="py-name">raw_format</tt> <tt class="py-op">=</tt> <tt class="py-string">'BGRA'</tt> </tt>
+<a name="L465"></a><tt class="py-lineno"> 465</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L466"></a><tt class="py-lineno"> 466</tt>  <tt class="py-line">            <tt class="py-name">framebuffer_pixels</tt> <tt class="py-op">=</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glReadPixels</tt><tt class="py-op">(</tt><tt class="py-name">lowerleft</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">,</tt><tt class="py-name">lowerleft</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt cla [...]
+<a name="L467"></a><tt class="py-lineno"> 467</tt>  <tt class="py-line">                                                 <tt id="link-144" class="py-name"><a title="VisionEgg.Core.Screen.size" class="py-name" href="#" onclick="return doclink('link-144', 'size', 'link-45');">size</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">,</tt><tt id="link-145" class="py-name"><a title="VisionEgg.Core.Screen.size" class="py-name" href="#" onclick [...]
+<a name="L468"></a><tt class="py-lineno"> 468</tt>  <tt class="py-line">                                                 <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_RGBA</tt><tt class="py-op">,</tt> </tt>
+<a name="L469"></a><tt class="py-lineno"> 469</tt>  <tt class="py-line">                                                 <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_UNSIGNED_BYTE</tt><tt class="py-op">)</tt> </tt>
+<a name="L470"></a><tt class="py-lineno"> 470</tt>  <tt class="py-line">            <tt class="py-name">raw_format</tt> <tt class="py-op">=</tt> <tt class="py-string">'RGBA'</tt> </tt>
+<a name="L471"></a><tt class="py-lineno"> 471</tt>  <tt class="py-line">        <tt class="py-name">fb_array</tt> <tt class="py-op">=</tt> <tt class="py-name">Numeric</tt><tt class="py-op">.</tt><tt class="py-name">fromstring</tt><tt class="py-op">(</tt><tt class="py-name">framebuffer_pixels</tt><tt class="py-op">,</tt><tt class="py-name">Numeric</tt><tt class="py-op">.</tt><tt class="py-name">UInt8</tt><tt class="py-op">)</tt> </tt>
+<a name="L472"></a><tt class="py-lineno"> 472</tt>  <tt class="py-line">        <tt class="py-name">fb_array</tt> <tt class="py-op">=</tt> <tt class="py-name">Numeric</tt><tt class="py-op">.</tt><tt class="py-name">reshape</tt><tt class="py-op">(</tt><tt class="py-name">fb_array</tt><tt class="py-op">,</tt><tt class="py-op">(</tt><tt id="link-146" class="py-name"><a title="VisionEgg.Core.Screen.size" class="py-name" href="#" onclick="return doclink('link-146', 'size', 'link-45');">size</ [...]
+<a name="L473"></a><tt class="py-lineno"> 473</tt>  <tt class="py-line">        <tt class="py-comment"># These work, but I don't know why.  There must be something I</tt> </tt>
+<a name="L474"></a><tt class="py-lineno"> 474</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># don't understand about byte ordering!</tt> </tt>
+<a name="L475"></a><tt class="py-lineno"> 475</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">format</tt> <tt class="py-op">==</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_RGB</tt><tt class="py-op">:</tt> </tt>
+<a name="L476"></a><tt class="py-lineno"> 476</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">raw_format</tt> <tt class="py-op">==</tt> <tt class="py-string">'BGRA'</tt><tt class="py-op">:</tt> </tt>
+<a name="L477"></a><tt class="py-lineno"> 477</tt>  <tt class="py-line">                <tt class="py-name">fb_array</tt> <tt class="py-op">=</tt> <tt class="py-name">fb_array</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">,</tt><tt class="py-op">:</tt><tt class="py-op">,</tt><tt class="py-number">1</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> </tt>
+<a name="L478"></a><tt class="py-lineno"> 478</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-name">raw_format</tt> <tt class="py-op">==</tt> <tt class="py-string">'RGBA'</tt><tt class="py-op">:</tt> </tt>
+<a name="L479"></a><tt class="py-lineno"> 479</tt>  <tt class="py-line">                <tt class="py-name">fb_array</tt> <tt class="py-op">=</tt> <tt class="py-name">fb_array</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">,</tt><tt class="py-op">:</tt><tt class="py-op">,</tt><tt class="py-op">:</tt><tt class="py-number">3</tt><tt class="py-op">]</tt> </tt>
+<a name="L480"></a><tt class="py-lineno"> 480</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">format</tt> <tt class="py-op">==</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_RGBA</tt><tt class="py-op">:</tt> </tt>
+<a name="L481"></a><tt class="py-lineno"> 481</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">raw_format</tt> <tt class="py-op">==</tt> <tt class="py-string">'BGRA'</tt><tt class="py-op">:</tt> </tt>
+<a name="L482"></a><tt class="py-lineno"> 482</tt>  <tt class="py-line">                <tt class="py-name">alpha</tt> <tt class="py-op">=</tt> <tt class="py-name">fb_array</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">,</tt><tt class="py-op">:</tt><tt class="py-op">,</tt><tt class="py-number">0</tt><tt class="py-op">,</tt><tt class="py-name">Numeric</tt><tt class="py-op">.</tt><tt class="py-name">NewAxis</tt><tt class="py-op">]</tt> </tt>
+<a name="L483"></a><tt class="py-lineno"> 483</tt>  <tt class="py-line">                <tt class="py-name">fb_array</tt> <tt class="py-op">=</tt> <tt class="py-name">fb_array</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">,</tt><tt class="py-op">:</tt><tt class="py-op">,</tt><tt class="py-number">1</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> </tt>
+<a name="L484"></a><tt class="py-lineno"> 484</tt>  <tt class="py-line">                <tt class="py-name">fb_array</tt> <tt class="py-op">=</tt> <tt class="py-name">Numeric</tt><tt class="py-op">.</tt><tt class="py-name">concatenate</tt><tt class="py-op">(</tt> <tt class="py-op">(</tt><tt class="py-name">fb_array</tt><tt class="py-op">,</tt><tt class="py-name">alpha</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">axis</tt><tt class="py-op">=</tt><tt class="py-n [...]
+<a name="L485"></a><tt class="py-lineno"> 485</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-name">raw_format</tt> <tt class="py-op">==</tt> <tt class="py-string">'RGBA'</tt><tt class="py-op">:</tt> </tt>
+<a name="L486"></a><tt class="py-lineno"> 486</tt>  <tt class="py-line">                <tt class="py-keyword">pass</tt> </tt>
+<a name="L487"></a><tt class="py-lineno"> 487</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L488"></a><tt class="py-lineno"> 488</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">NotImplementedError</tt><tt class="py-op">(</tt><tt class="py-string">"Only RGB and RGBA formats currently supported"</tt><tt class="py-op">)</tt> </tt>
+<a name="L489"></a><tt class="py-lineno"> 489</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">fb_array</tt> </tt>
+</div><a name="L490"></a><tt class="py-lineno"> 490</tt>  <tt class="py-line"> </tt>
+<a name="Screen.put_pixels"></a><div id="Screen.put_pixels-def"><a name="L491"></a><tt class="py-lineno"> 491</tt> <a class="py-toggle" href="#" id="Screen.put_pixels-toggle" onclick="return toggle('Screen.put_pixels');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.Core.Screen-class.html#put_pixels">put_pixels</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> </tt>
+<a name="L492"></a><tt class="py-lineno"> 492</tt>  <tt class="py-line">                   <tt class="py-param">pixels</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
+<a name="L493"></a><tt class="py-lineno"> 493</tt>  <tt class="py-line">                   <tt class="py-param">position</tt><tt class="py-op">=</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">,</tt><tt class="py-number">0</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L494"></a><tt class="py-lineno"> 494</tt>  <tt class="py-line">                   <tt class="py-param">anchor</tt><tt class="py-op">=</tt><tt class="py-string">'lowerleft'</tt><tt class="py-op">,</tt> </tt>
+<a name="L495"></a><tt class="py-lineno"> 495</tt>  <tt class="py-line">                   <tt class="py-param">scale_x</tt><tt class="py-op">=</tt><tt class="py-number">1.0</tt><tt class="py-op">,</tt> <tt class="py-comment"># "zoom" the pixels</tt> </tt>
+<a name="L496"></a><tt class="py-lineno"> 496</tt>  <tt class="py-line">                   <tt class="py-param">scale_y</tt><tt class="py-op">=</tt><tt class="py-number">1.0</tt><tt class="py-op">,</tt> <tt class="py-comment"># "zoom" the pixels</tt> </tt>
+<a name="L497"></a><tt class="py-lineno"> 497</tt>  <tt class="py-line">                   <tt class="py-param">texture_min_filter</tt><tt class="py-op">=</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_NEAREST</tt><tt class="py-op">,</tt> <tt class="py-comment"># only used if scale < 1.0</tt> </tt>
+<a name="L498"></a><tt class="py-lineno"> 498</tt>  <tt class="py-line">                   <tt class="py-param">texture_mag_filter</tt><tt class="py-op">=</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_NEAREST</tt><tt class="py-op">,</tt> <tt class="py-comment"># only used if scale > 1.0</tt> </tt>
+<a name="L499"></a><tt class="py-lineno"> 499</tt>  <tt class="py-line">                   <tt class="py-param">internal_format</tt><tt class="py-op">=</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_RGB</tt><tt class="py-op">,</tt> <tt class="py-comment"># pixel data converted to this format in texture (gl.GL_RGBA also useful)</tt> </tt>
+<a name="L500"></a><tt class="py-lineno"> 500</tt>  <tt class="py-line">                   <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Screen.put_pixels-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Screen.put_pixels-expanded"><a name="L501"></a><tt class="py-lineno"> 501</tt>  <tt class="py-line">        <tt class="py-docstring">"""Put pixel values to screen.</tt> </tt>
+<a name="L502"></a><tt class="py-lineno"> 502</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L503"></a><tt class="py-lineno"> 503</tt>  <tt class="py-line"><tt class="py-docstring">        Pixel values become texture data using the VisionEgg.Textures</tt> </tt>
+<a name="L504"></a><tt class="py-lineno"> 504</tt>  <tt class="py-line"><tt class="py-docstring">        module.  Any source of texture data accepted by that module is</tt> </tt>
+<a name="L505"></a><tt class="py-lineno"> 505</tt>  <tt class="py-line"><tt class="py-docstring">        accepted here.</tt> </tt>
+<a name="L506"></a><tt class="py-lineno"> 506</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L507"></a><tt class="py-lineno"> 507</tt>  <tt class="py-line"><tt class="py-docstring">        This function could be sped up by allocating a fixed OpenGL texture object.</tt> </tt>
+<a name="L508"></a><tt class="py-lineno"> 508</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L509"></a><tt class="py-lineno"> 509</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L510"></a><tt class="py-lineno"> 510</tt>  <tt class="py-line"> </tt>
+<a name="L511"></a><tt class="py-lineno"> 511</tt>  <tt class="py-line">        <tt class="py-keyword">import</tt> <tt id="link-148" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-148', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-149" class="py-name" targets="Module VisionEgg.Textures=VisionEgg.Textures-module.html"><a title="VisionEgg.Textures" class="py-name" href="#" onclick="return doclink('link-149', 'T [...]
+<a name="L512"></a><tt class="py-lineno"> 512</tt>  <tt class="py-line">        <tt class="py-name">make_new_texture_object</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L513"></a><tt class="py-lineno"> 513</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-string">"_put_pixels_texture_stimulus"</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L514"></a><tt class="py-lineno"> 514</tt>  <tt class="py-line">            <tt class="py-name">make_new_texture_object</tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L515"></a><tt class="py-lineno"> 515</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L516"></a><tt class="py-lineno"> 516</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">internal_format</tt> <tt class="py-op">!=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_put_pixels_texture_stimulus</tt><tt class="py-op">.</tt><tt class="py-name">constant_parameters</tt><tt class="py-op">.</tt><tt class="py-name">internal_format</tt><tt class="py-op">:</tt> </tt>
+<a name="L517"></a><tt class="py-lineno"> 517</tt>  <tt class="py-line">                <tt class="py-name">make_new_texture_object</tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L518"></a><tt class="py-lineno"> 518</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">make_new_texture_object</tt><tt class="py-op">:</tt> </tt>
+<a name="L519"></a><tt class="py-lineno"> 519</tt>  <tt class="py-line">            <tt class="py-comment"># For speed, don't do this on anything other than 1st run</tt> </tt>
+<a name="L520"></a><tt class="py-lineno"> 520</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">texture</tt> <tt class="py-op">=</tt> <tt id="link-150" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-150', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-151" class="py-name"><a title="VisionEgg.Textures" class="py-name" href="#" onclick="return doclink('link-151', 'Textures', 'l [...]
+<a name="L521"></a><tt class="py-lineno"> 521</tt>  <tt class="py-line">            <tt class="py-name">on_screen_size</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">texture</tt><tt class="py-op">.</tt><tt id="link-153" class="py-name"><a title="VisionEgg.Core.Screen.size" class="py-name" href="#" onclick="return doclink('link-153', 'size', 'link-45');">size</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">*< [...]
+<a name="L522"></a><tt class="py-lineno"> 522</tt>  <tt class="py-line">            <tt class="py-name">t</tt> <tt class="py-op">=</tt> <tt id="link-155" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-155', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-156" class="py-name"><a title="VisionEgg.Textures" class="py-name" href="#" onclick="return doclink('link-156', 'Textures', 'link-149');">Textures</a></tt><tt c [...]
+<a name="L523"></a><tt class="py-lineno"> 523</tt>  <tt class="py-line">                                                   <tt class="py-name">position</tt><tt class="py-op">=</tt><tt class="py-name">position</tt><tt class="py-op">,</tt> </tt>
+<a name="L524"></a><tt class="py-lineno"> 524</tt>  <tt class="py-line">                                                   <tt class="py-name">anchor</tt><tt class="py-op">=</tt><tt class="py-name">anchor</tt><tt class="py-op">,</tt> </tt>
+<a name="L525"></a><tt class="py-lineno"> 525</tt>  <tt class="py-line">                                                   <tt id="link-158" class="py-name"><a title="VisionEgg.Core.Screen.size" class="py-name" href="#" onclick="return doclink('link-158', 'size', 'link-45');">size</a></tt><tt class="py-op">=</tt><tt class="py-name">on_screen_size</tt><tt class="py-op">,</tt> </tt>
+<a name="L526"></a><tt class="py-lineno"> 526</tt>  <tt class="py-line">                                                   <tt class="py-name">mipmaps_enabled</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> </tt>
+<a name="L527"></a><tt class="py-lineno"> 527</tt>  <tt class="py-line">                                                   <tt class="py-name">texture_min_filter</tt><tt class="py-op">=</tt><tt class="py-name">texture_min_filter</tt><tt class="py-op">,</tt> </tt>
+<a name="L528"></a><tt class="py-lineno"> 528</tt>  <tt class="py-line">                                                   <tt class="py-name">texture_mag_filter</tt><tt class="py-op">=</tt><tt class="py-name">texture_mag_filter</tt><tt class="py-op">,</tt> </tt>
+<a name="L529"></a><tt class="py-lineno"> 529</tt>  <tt class="py-line">                                                   <tt class="py-name">internal_format</tt> <tt class="py-op">=</tt> <tt class="py-name">internal_format</tt><tt class="py-op">,</tt> </tt>
+<a name="L530"></a><tt class="py-lineno"> 530</tt>  <tt class="py-line">                                                   <tt class="py-op">)</tt> </tt>
+<a name="L531"></a><tt class="py-lineno"> 531</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_put_pixels_texture_stimulus</tt> <tt class="py-op">=</tt> <tt class="py-name">t</tt> <tt class="py-comment"># rename</tt> </tt>
+<a name="L532"></a><tt class="py-lineno"> 532</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_pixel_coord_projection</tt> <tt class="py-op">=</tt> <tt id="link-159" class="py-name" targets="Class VisionEgg.Core.OrthographicProjection=VisionEgg.Core.OrthographicProjection-class.html"><a title="VisionEgg.Core.OrthographicProjection" class="py-name" href="#" onclick="return doclink('link-159', 'OrthographicProjection', 'link-15 [...]
+<a name="L533"></a><tt class="py-lineno"> 533</tt>  <tt class="py-line">                                                                  <tt id="link-161" class="py-name" targets="Variable VisionEgg.PyroApps.MouseTargetServer.right=VisionEgg.PyroApps.MouseTargetServer-module.html#right"><a title="VisionEgg.PyroApps.MouseTargetServer.right" class="py-name" href="#" onclick="return doclink('link-161', 'right', 'link-161');">right</a></tt><tt class="py-op">=</tt><tt class="py-name">self</t [...]
+<a name="L534"></a><tt class="py-lineno"> 534</tt>  <tt class="py-line">                                                                  <tt class="py-name">bottom</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> </tt>
+<a name="L535"></a><tt class="py-lineno"> 535</tt>  <tt class="py-line">                                                                  <tt class="py-name">top</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-163" class="py-name"><a title="VisionEgg.Core.Screen.size" class="py-name" href="#" onclick="return doclink('link-163', 'size', 'link-45');">size</a></tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt cl [...]
+<a name="L536"></a><tt class="py-lineno"> 536</tt>  <tt class="py-line">                                                                  <tt class="py-name">z_clip_near</tt><tt class="py-op">=</tt><tt class="py-number">0.0</tt><tt class="py-op">,</tt> </tt>
+<a name="L537"></a><tt class="py-lineno"> 537</tt>  <tt class="py-line">                                                                  <tt class="py-name">z_clip_far</tt><tt class="py-op">=</tt><tt class="py-number">1.0</tt><tt class="py-op">)</tt> </tt>
+<a name="L538"></a><tt class="py-lineno"> 538</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L539"></a><tt class="py-lineno"> 539</tt>  <tt class="py-line">            <tt class="py-comment"># We've run once before and therefore already have a</tt> </tt>
+<a name="L540"></a><tt class="py-lineno"> 540</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># texture stimulus. (XXX In the future, make use of</tt> </tt>
+<a name="L541"></a><tt class="py-lineno"> 541</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># already assigned texture object and use put_sub_image</tt> </tt>
+<a name="L542"></a><tt class="py-lineno"> 542</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># for speed.)</tt> </tt>
+<a name="L543"></a><tt class="py-lineno"> 543</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_put_pixels_texture_stimulus</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">texture</tt> <tt class="py-op">=</tt> <tt id="link-164" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-164', 'VisionEgg', 'lin [...]
+<a name="L544"></a><tt class="py-lineno"> 544</tt>  <tt class="py-line"> </tt>
+<a name="L545"></a><tt class="py-lineno"> 545</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_pixel_coord_projection</tt><tt class="py-op">.</tt><tt id="link-167" class="py-name" targets="Method VisionEgg.Core.ProjectionBaseClass.push_and_set_gl_projection()=VisionEgg.Core.ProjectionBaseClass-class.html#push_and_set_gl_projection"><a title="VisionEgg.Core.ProjectionBaseClass.push_and_set_gl_projection" class="py-name" href="#" o [...]
+<a name="L546"></a><tt class="py-lineno"> 546</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_put_pixels_texture_stimulus</tt><tt class="py-op">.</tt><tt id="link-168" class="py-name" targets="Method VisionEgg.Core.FixationSpot.draw()=VisionEgg.Core.FixationSpot-class.html#draw,Method VisionEgg.Core.Stimulus.draw()=VisionEgg.Core.Stimulus-class.html#draw,Method VisionEgg.Core.Viewport.draw()=VisionEgg.Core.Viewport-class.html#dr [...]
+VisionEgg.Core.Stimulus.draw
+VisionEgg.Core.Viewport.draw
+VisionEgg.Dots.DotArea2D.draw
+VisionEgg.Gratings.SinGrating2D.draw
+VisionEgg.Gratings.SinGrating3D.draw
+VisionEgg.MoreStimuli.Arrow.draw
+VisionEgg.MoreStimuli.FilledCircle.draw
+VisionEgg.MoreStimuli.Rectangle3D.draw
+VisionEgg.MoreStimuli.Target2D.draw
+VisionEgg.SphereMap.AzElGrid.draw
+VisionEgg.SphereMap.SphereGrating.draw
+VisionEgg.SphereMap.SphereMap.draw
+VisionEgg.SphereMap.SphereWindow.draw
+VisionEgg.Text.BitmapText.draw
+VisionEgg.Text.StrokeText.draw
+VisionEgg.Text.Text.draw
+VisionEgg.Textures.FixationCross.draw
+VisionEgg.Textures.SpinningDrum.draw
+VisionEgg.Textures.TextureStimulus.draw
+VisionEgg.Textures.TextureStimulus3D.draw
+VisionEgg.WrappedText.WrappedText.draw" class="py-name" href="#" onclick="return doclink('link-168', 'draw', 'link-168');">draw</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-comment"># Draw pixels as texture</tt> </tt>
+<a name="L547"></a><tt class="py-lineno"> 547</tt>  <tt class="py-line"> </tt>
+<a name="L548"></a><tt class="py-lineno"> 548</tt>  <tt class="py-line">        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glMatrixMode</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_PROJECTION</tt><tt class="py-op">)</tt> <tt class="py-comment"># Restore projection</tt> </tt>
+<a name="L549"></a><tt class="py-lineno"> 549</tt>  <tt class="py-line">        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glPopMatrix</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L550"></a><tt class="py-lineno"> 550</tt>  <tt class="py-line"> </tt>
+<a name="Screen.query_refresh_rate"></a><div id="Screen.query_refresh_rate-def"><a name="L551"></a><tt class="py-lineno"> 551</tt> <a class="py-toggle" href="#" id="Screen.query_refresh_rate-toggle" onclick="return toggle('Screen.query_refresh_rate');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.Core.Screen-class.html#query_refresh_rate">query_refresh_rate</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)< [...]
+</div><div id="Screen.query_refresh_rate-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Screen.query_refresh_rate-expanded"><a name="L552"></a><tt class="py-lineno"> 552</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt id="link-169" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-169', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-170" class="py-name"><a tit [...]
+VisionEgg.PlatformDependent.query_refresh_rate" class="py-name" href="#" onclick="return doclink('link-171', 'query_refresh_rate', 'link-171');">query_refresh_rate</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L553"></a><tt class="py-lineno"> 553</tt>  <tt class="py-line"> </tt>
+<a name="Screen.measure_refresh_rate"></a><div id="Screen.measure_refresh_rate-def"><a name="L554"></a><tt class="py-lineno"> 554</tt> <a class="py-toggle" href="#" id="Screen.measure_refresh_rate-toggle" onclick="return toggle('Screen.measure_refresh_rate');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.Core.Screen-class.html#measure_refresh_rate">measure_refresh_rate</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt clas [...]
+</div><div id="Screen.measure_refresh_rate-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Screen.measure_refresh_rate-expanded"><a name="L555"></a><tt class="py-lineno"> 555</tt>  <tt class="py-line">        <tt class="py-docstring">"""Measure the refresh rate. Assumes swap buffers synced."""</tt> </tt>
+<a name="L556"></a><tt class="py-lineno"> 556</tt>  <tt class="py-line">        <tt class="py-name">start_time</tt> <tt class="py-op">=</tt> <tt id="link-172" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-172', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-173" class="py-name" targets="Variable VisionEgg.time_func=VisionEgg-module.html#time_func"><a title="VisionEgg.time_func" class="py-name" href="#" onclick [...]
+<a name="L557"></a><tt class="py-lineno"> 557</tt>  <tt class="py-line">        <tt class="py-name">duration_sec</tt> <tt class="py-op">=</tt> <tt class="py-number">0.0</tt> </tt>
+<a name="L558"></a><tt class="py-lineno"> 558</tt>  <tt class="py-line">        <tt class="py-name">num_frames</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L559"></a><tt class="py-lineno"> 559</tt>  <tt class="py-line">        <tt class="py-keyword">while</tt> <tt class="py-name">duration_sec</tt> <tt class="py-op"><</tt> <tt class="py-name">average_over_seconds</tt><tt class="py-op">:</tt> </tt>
+<a name="L560"></a><tt class="py-lineno"> 560</tt>  <tt class="py-line">            <tt id="link-174" class="py-name" targets="Function VisionEgg.Core.swap_buffers()=VisionEgg.Core-module.html#swap_buffers"><a title="VisionEgg.Core.swap_buffers" class="py-name" href="#" onclick="return doclink('link-174', 'swap_buffers', 'link-174');">swap_buffers</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L561"></a><tt class="py-lineno"> 561</tt>  <tt class="py-line">            <tt class="py-name">now</tt> <tt class="py-op">=</tt> <tt id="link-175" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-175', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-176" class="py-name"><a title="VisionEgg.time_func" class="py-name" href="#" onclick="return doclink('link-176', 'time_func', 'link-173');">time_func</a></tt> [...]
+<a name="L562"></a><tt class="py-lineno"> 562</tt>  <tt class="py-line">            <tt class="py-name">num_frames</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L563"></a><tt class="py-lineno"> 563</tt>  <tt class="py-line">            <tt class="py-name">duration_sec</tt> <tt class="py-op">=</tt> <tt class="py-name">now</tt> <tt class="py-op">-</tt> <tt class="py-name">start_time</tt> </tt>
+<a name="L564"></a><tt class="py-lineno"> 564</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">duration_sec</tt> <tt class="py-op">></tt> <tt class="py-number">0.0</tt><tt class="py-op">:</tt> </tt>
+<a name="L565"></a><tt class="py-lineno"> 565</tt>  <tt class="py-line">            <tt class="py-name">fps</tt> <tt class="py-op">=</tt> <tt class="py-name">num_frames</tt> <tt class="py-op">/</tt> <tt class="py-name">duration_sec</tt> </tt>
+<a name="L566"></a><tt class="py-lineno"> 566</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L567"></a><tt class="py-lineno"> 567</tt>  <tt class="py-line">            <tt class="py-name">fps</tt> <tt class="py-op">=</tt> <tt class="py-number">0.0</tt> </tt>
+<a name="L568"></a><tt class="py-lineno"> 568</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">fps</tt> </tt>
+</div><a name="L569"></a><tt class="py-lineno"> 569</tt>  <tt class="py-line"> </tt>
+<a name="Screen.clear"></a><div id="Screen.clear-def"><a name="L570"></a><tt class="py-lineno"> 570</tt> <a class="py-toggle" href="#" id="Screen.clear-toggle" onclick="return toggle('Screen.clear');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.Core.Screen-class.html#clear">clear</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Screen.clear-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Screen.clear-expanded"><a name="L571"></a><tt class="py-lineno"> 571</tt>  <tt class="py-line">        <tt class="py-docstring">"""Called by Presentation instance. Clear the screen."""</tt> </tt>
+<a name="L572"></a><tt class="py-lineno"> 572</tt>  <tt class="py-line"> </tt>
+<a name="L573"></a><tt class="py-lineno"> 573</tt>  <tt class="py-line">        <tt class="py-name">c</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">bgcolor</tt> <tt class="py-comment"># Shorthand</tt> </tt>
+<a name="L574"></a><tt class="py-lineno"> 574</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">c</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">4</tt><tt class="py-op">:</tt> </tt>
+<a name="L575"></a><tt class="py-lineno"> 575</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glClearColor</tt><tt class="py-op">(</tt><tt class="py-op">*</tt><tt class="py-name">c</tt><tt class="py-op">)</tt> </tt>
+<a name="L576"></a><tt class="py-lineno"> 576</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L577"></a><tt class="py-lineno"> 577</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glClearColor</tt><tt class="py-op">(</tt><tt class="py-name">c</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">,</tt><tt class="py-name">c</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">,</tt><tt class="py-name">c</tt><tt class="py-op"> [...]
+<a name="L578"></a><tt class="py-lineno"> 578</tt>  <tt class="py-line">        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glClear</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_COLOR_BUFFER_BIT</tt> <tt class="py-op">|</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_DEPTH_BUFFER_BIT</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L579"></a><tt class="py-lineno"> 579</tt>  <tt class="py-line"> </tt>
+<a name="Screen.make_current"></a><div id="Screen.make_current-def"><a name="L580"></a><tt class="py-lineno"> 580</tt> <a class="py-toggle" href="#" id="Screen.make_current-toggle" onclick="return toggle('Screen.make_current');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.Core.Screen-class.html#make_current">make_current</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Screen.make_current-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Screen.make_current-expanded"><a name="L581"></a><tt class="py-lineno"> 581</tt>  <tt class="py-line">        <tt class="py-docstring">"""Called by Viewport instance. Makes screen active for drawing.</tt> </tt>
+<a name="L582"></a><tt class="py-lineno"> 582</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L583"></a><tt class="py-lineno"> 583</tt>  <tt class="py-line"><tt class="py-docstring">        Can not be implemented until multiple screens are possible."""</tt> </tt>
+<a name="L584"></a><tt class="py-lineno"> 584</tt>  <tt class="py-line">        <tt class="py-keyword">pass</tt> </tt>
+</div><a name="L585"></a><tt class="py-lineno"> 585</tt>  <tt class="py-line"> </tt>
+<a name="Screen.set_gamma_ramp"></a><div id="Screen.set_gamma_ramp-def"><a name="L586"></a><tt class="py-lineno"> 586</tt> <a class="py-toggle" href="#" id="Screen.set_gamma_ramp-toggle" onclick="return toggle('Screen.set_gamma_ramp');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.Core.Screen-class.html#set_gamma_ramp">set_gamma_ramp</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt><tt class="py-op">*< [...]
+</div><div id="Screen.set_gamma_ramp-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Screen.set_gamma_ramp-expanded"><a name="L587"></a><tt class="py-lineno"> 587</tt>  <tt class="py-line">        <tt class="py-docstring">"""Set the gamma_ramp, if supported.</tt> </tt>
+<a name="L588"></a><tt class="py-lineno"> 588</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L589"></a><tt class="py-lineno"> 589</tt>  <tt class="py-line"><tt class="py-docstring">        Call pygame.display.set_gamma_ramp, if available.</tt> </tt>
+<a name="L590"></a><tt class="py-lineno"> 590</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L591"></a><tt class="py-lineno"> 591</tt>  <tt class="py-line"><tt class="py-docstring">        Returns True on success, False otherwise."""</tt> </tt>
+<a name="L592"></a><tt class="py-lineno"> 592</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt class="py-name">pygame</tt><tt class="py-op">.</tt><tt class="py-name">display</tt><tt class="py-op">,</tt><tt class="py-string">"set_gamma_ramp"</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L593"></a><tt class="py-lineno"> 593</tt>  <tt class="py-line">            <tt id="link-177" class="py-name"><a title="VisionEgg.logger" class="py-name" href="#" onclick="return doclink('link-177', 'logger', 'link-41');">logger</a></tt> <tt class="py-op">=</tt> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">getLogger</tt><tt class="py-op">(</tt><tt class="py-string">'VisionEgg.Core'</tt><tt class="py-op">)</tt> </tt>
+<a name="L594"></a><tt class="py-lineno"> 594</tt>  <tt class="py-line">            <tt id="link-178" class="py-name"><a title="VisionEgg.logger" class="py-name" href="#" onclick="return doclink('link-178', 'logger', 'link-41');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">error</tt><tt class="py-op">(</tt><tt class="py-string">"Need pygame 1.5 or greater for set_gamma_ramp function"</tt><tt class="py-op">)</tt> </tt>
+<a name="L595"></a><tt class="py-lineno"> 595</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">False</tt> </tt>
+<a name="L596"></a><tt class="py-lineno"> 596</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">pygame</tt><tt class="py-op">.</tt><tt class="py-name">display</tt><tt class="py-op">.</tt><tt id="link-179" class="py-name" targets="Method VisionEgg.Core.Screen.set_gamma_ramp()=VisionEgg.Core.Screen-class.html#set_gamma_ramp,Method VisionEgg.PyroApps.EPhysServer.EPhysServer.set_gamma_ramp()=VisionEgg.PyroApps.EPhysServer.EPhysServer-class.html#set_gamma_ra [...]
+VisionEgg.PyroApps.EPhysServer.EPhysServer.set_gamma_ramp" class="py-name" href="#" onclick="return doclink('link-179', 'set_gamma_ramp', 'link-179');">set_gamma_ramp</a></tt><tt class="py-op">(</tt><tt class="py-op">*</tt><tt class="py-name">args</tt><tt class="py-op">,</tt><tt class="py-op">**</tt><tt class="py-name">kw</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L597"></a><tt class="py-lineno"> 597</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">True</tt> </tt>
+<a name="L598"></a><tt class="py-lineno"> 598</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L599"></a><tt class="py-lineno"> 599</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">False</tt> </tt>
+</div><a name="L600"></a><tt class="py-lineno"> 600</tt>  <tt class="py-line"> </tt>
+<a name="Screen.close"></a><div id="Screen.close-def"><a name="L601"></a><tt class="py-lineno"> 601</tt> <a class="py-toggle" href="#" id="Screen.close-toggle" onclick="return toggle('Screen.close');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.Core.Screen-class.html#close">close</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Screen.close-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Screen.close-expanded"><a name="L602"></a><tt class="py-lineno"> 602</tt>  <tt class="py-line">        <tt class="py-docstring">"""Close the screen.</tt> </tt>
+<a name="L603"></a><tt class="py-lineno"> 603</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L604"></a><tt class="py-lineno"> 604</tt>  <tt class="py-line"><tt class="py-docstring">        You can call this to close the screen.  Not necessary during</tt> </tt>
+<a name="L605"></a><tt class="py-lineno"> 605</tt>  <tt class="py-line"><tt class="py-docstring">        normal operation because it gets automatically deleted."""</tt> </tt>
+<a name="L606"></a><tt class="py-lineno"> 606</tt>  <tt class="py-line">        <tt class="py-comment"># Close pygame if possible</tt> </tt>
+<a name="L607"></a><tt class="py-lineno"> 607</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt id="link-180" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-180', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-181" class="py-name"><a title="VisionEgg.config" class="py-name" href="#" onclick="return doclink('li [...]
+<a name="L608"></a><tt class="py-lineno"> 608</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">self</tt> <tt class="py-keyword">in</tt> <tt id="link-182" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-182', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-183" class="py-name"><a title="VisionEgg.config" class="py-name" href="#" onclick="return doclink('link-183', 'config',  [...]
+<a name="L609"></a><tt class="py-lineno"> 609</tt>  <tt class="py-line">                <tt id="link-184" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-184', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-185" class="py-name"><a title="VisionEgg.config" class="py-name" href="#" onclick="return doclink('link-185', 'config', 'link-14');">config</a></tt><tt class="py-op">.</tt><tt class="py-name">_open_screens</t [...]
+<a name="L610"></a><tt class="py-lineno"> 610</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt id="link-186" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-186', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-187" class="py-name"><a title="VisionEgg.config" class="py-name" href="#" onclick="return doclink('link-187', 'config', 'link-14' [...]
+<a name="L611"></a><tt class="py-lineno"> 611</tt>  <tt class="py-line">                <tt class="py-comment"># no more open screens</tt> </tt>
+<a name="L612"></a><tt class="py-lineno"> 612</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-keyword">if</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt><tt class="py-string">"__cursor_visible_func__"</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L613"></a><tt class="py-lineno"> 613</tt>  <tt class="py-line">                    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__cursor_visible_func__</tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="L614"></a><tt class="py-lineno"> 614</tt>  <tt class="py-line">                <tt class="py-name">pygame</tt><tt class="py-op">.</tt><tt id="link-188" class="py-name"><a title="VisionEgg.PyroApps.EPhysGUI.AppWindow.quit" class="py-name" href="#" onclick="return doclink('link-188', 'quit', 'link-111');">quit</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L615"></a><tt class="py-lineno"> 615</tt>  <tt class="py-line">        <tt class="py-comment"># No access to the cursor visible function anymore</tt> </tt>
+<a name="L616"></a><tt class="py-lineno"> 616</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt><tt class="py-string">"__cursor_visible_func__"</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L617"></a><tt class="py-lineno"> 617</tt>  <tt class="py-line">            <tt class="py-keyword">del</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__cursor_visible_func__</tt> </tt>
+</div><a name="L618"></a><tt class="py-lineno"> 618</tt>  <tt class="py-line"> </tt>
+<a name="Screen.__del__"></a><div id="Screen.__del__-def"><a name="L619"></a><tt class="py-lineno"> 619</tt> <a class="py-toggle" href="#" id="Screen.__del__-toggle" onclick="return toggle('Screen.__del__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.Core.Screen-class.html#__del__">__del__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Screen.__del__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Screen.__del__-expanded"><a name="L620"></a><tt class="py-lineno"> 620</tt>  <tt class="py-line">        <tt class="py-comment"># Make sure mouse is visible after screen closed.</tt> </tt>
+<a name="L621"></a><tt class="py-lineno"> 621</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt><tt class="py-string">"__cursor_visible_func__"</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L622"></a><tt class="py-lineno"> 622</tt>  <tt class="py-line">            <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L623"></a><tt class="py-lineno"> 623</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__cursor_visible_func__</tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="L624"></a><tt class="py-lineno"> 624</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__pygame_quit__</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L625"></a><tt class="py-lineno"> 625</tt>  <tt class="py-line">            <tt class="py-keyword">except</tt> <tt class="py-name">pygame</tt><tt class="py-op">.</tt><tt class="py-name">error</tt><tt class="py-op">,</tt> <tt class="py-name">x</tt><tt class="py-op">:</tt> </tt>
+<a name="L626"></a><tt class="py-lineno"> 626</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">x</tt><tt class="py-op">)</tt> <tt class="py-op">!=</tt> <tt class="py-string">'video system not initialized'</tt><tt class="py-op">:</tt> </tt>
+<a name="L627"></a><tt class="py-lineno"> 627</tt>  <tt class="py-line">                    <tt class="py-keyword">raise</tt> </tt>
+</div><a name="L628"></a><tt class="py-lineno"> 628</tt>  <tt class="py-line"> </tt>
+<a name="Screen.create_default"></a><div id="Screen.create_default-def"><a name="L629"></a><tt class="py-lineno"> 629</tt> <a class="py-toggle" href="#" id="Screen.create_default-toggle" onclick="return toggle('Screen.create_default');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.Core.Screen-class.html#create_default">create_default</a><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Screen.create_default-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Screen.create_default-expanded"><a name="L630"></a><tt class="py-lineno"> 630</tt>  <tt class="py-line">        <tt class="py-docstring">"""Alternative constructor using configuration variables.</tt> </tt>
+<a name="L631"></a><tt class="py-lineno"> 631</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L632"></a><tt class="py-lineno"> 632</tt>  <tt class="py-line"><tt class="py-docstring">        Most of the time you can create and instance of Screen using</tt> </tt>
+<a name="L633"></a><tt class="py-lineno"> 633</tt>  <tt class="py-line"><tt class="py-docstring">        this method.  If your script needs explicit control of the</tt> </tt>
+<a name="L634"></a><tt class="py-lineno"> 634</tt>  <tt class="py-line"><tt class="py-docstring">        Screen parameters, initialize with the normal constructor.</tt> </tt>
+<a name="L635"></a><tt class="py-lineno"> 635</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L636"></a><tt class="py-lineno"> 636</tt>  <tt class="py-line"><tt class="py-docstring">        Uses VisionEgg.config.VISIONEGG_GUI_INIT to determine how the</tt> </tt>
+<a name="L637"></a><tt class="py-lineno"> 637</tt>  <tt class="py-line"><tt class="py-docstring">        default screen parameters should are determined.  If this</tt> </tt>
+<a name="L638"></a><tt class="py-lineno"> 638</tt>  <tt class="py-line"><tt class="py-docstring">        value is 0, the values from VisionEgg.cfg are used.  If this</tt> </tt>
+<a name="L639"></a><tt class="py-lineno"> 639</tt>  <tt class="py-line"><tt class="py-docstring">        value is 1, a GUI panel is opened and allows manual settings</tt> </tt>
+<a name="L640"></a><tt class="py-lineno"> 640</tt>  <tt class="py-line"><tt class="py-docstring">        of the screen parameters.  """</tt> </tt>
+<a name="L641"></a><tt class="py-lineno"> 641</tt>  <tt class="py-line"> </tt>
+<a name="L642"></a><tt class="py-lineno"> 642</tt>  <tt class="py-line">        <tt class="py-keyword">global</tt> <tt id="link-189" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-189', 'VisionEgg', 'link-0');">VisionEgg</a></tt> <tt class="py-comment"># Allow "VisionEgg.config" instead of just "config"</tt> </tt>
+<a name="L643"></a><tt class="py-lineno"> 643</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt id="link-190" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-190', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-191" class="py-name"><a title="VisionEgg.config" class="py-name" href="#" onclick="return doclink('link-191', 'config', 'link-14');">config</a></tt><tt class="py-op">.</tt><tt class="py [...]
+<a name="L644"></a><tt class="py-lineno"> 644</tt>  <tt class="py-line">            <tt class="py-keyword">import</tt> <tt id="link-192" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-192', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-193" class="py-name" targets="Module VisionEgg.GUI=VisionEgg.GUI-module.html"><a title="VisionEgg.GUI" class="py-name" href="#" onclick="return doclink('link-193', 'GUI', 'link- [...]
+<a name="L645"></a><tt class="py-lineno"> 645</tt>  <tt class="py-line">            <tt class="py-name">window</tt> <tt class="py-op">=</tt> <tt id="link-194" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-194', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-195" class="py-name"><a title="VisionEgg.GUI" class="py-name" href="#" onclick="return doclink('link-195', 'GUI', 'link-193');">GUI</a></tt><tt class="py-o [...]
+<a name="L646"></a><tt class="py-lineno"> 646</tt>  <tt class="py-line">            <tt class="py-name">window</tt><tt class="py-op">.</tt><tt class="py-name">mainloop</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-comment"># All this does is adjust VisionEgg.config</tt> </tt>
+<a name="L647"></a><tt class="py-lineno"> 647</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">window</tt><tt class="py-op">.</tt><tt class="py-name">clicked_ok</tt><tt class="py-op">:</tt> </tt>
+<a name="L648"></a><tt class="py-lineno"> 648</tt>  <tt class="py-line">                <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">exit</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-comment"># User wants to quit</tt> </tt>
+<a name="L649"></a><tt class="py-lineno"> 649</tt>  <tt class="py-line">        <tt class="py-name">screen</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L650"></a><tt class="py-lineno"> 650</tt>  <tt class="py-line">        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L651"></a><tt class="py-lineno"> 651</tt>  <tt class="py-line">            <tt class="py-name">screen</tt> <tt class="py-op">=</tt> <tt id="link-197" class="py-name" targets="Class VisionEgg.Core.Screen=VisionEgg.Core.Screen-class.html"><a title="VisionEgg.Core.Screen" class="py-name" href="#" onclick="return doclink('link-197', 'Screen', 'link-197');">Screen</a></tt><tt class="py-op">(</tt><tt id="link-198" class="py-name"><a title="VisionEgg.Core.Screen.size" class="py-name" h [...]
+<a name="L652"></a><tt class="py-lineno"> 652</tt>  <tt class="py-line">                                  <tt id="link-201" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-201', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-202" class="py-name"><a title="VisionEgg.config" class="py-name" href="#" onclick="return doclink('link-202', 'config', 'link-14');">config</a></tt><tt class="py-op">.</tt><tt class="py-name [...]
+<a name="L653"></a><tt class="py-lineno"> 653</tt>  <tt class="py-line">                            <tt class="py-name">fullscreen</tt><tt class="py-op">=</tt><tt id="link-203" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-203', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-204" class="py-name"><a title="VisionEgg.config" class="py-name" href="#" onclick="return doclink('link-204', 'config', 'link-14');">conf [...]
+<a name="L654"></a><tt class="py-lineno"> 654</tt>  <tt class="py-line">                            <tt class="py-name">preferred_bpp</tt><tt class="py-op">=</tt><tt id="link-205" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-205', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-206" class="py-name"><a title="VisionEgg.config" class="py-name" href="#" onclick="return doclink('link-206', 'config', 'link-14');">c [...]
+<a name="L655"></a><tt class="py-lineno"> 655</tt>  <tt class="py-line">                            <tt class="py-name">bgcolor</tt><tt class="py-op">=</tt><tt class="py-op">(</tt><tt class="py-number">0.5</tt><tt class="py-op">,</tt><tt class="py-number">0.5</tt><tt class="py-op">,</tt><tt class="py-number">0.5</tt><tt class="py-op">,</tt><tt class="py-number">0.0</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L656"></a><tt class="py-lineno"> 656</tt>  <tt class="py-line">                            <tt class="py-name">maxpriority</tt><tt class="py-op">=</tt><tt id="link-207" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-207', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-208" class="py-name"><a title="VisionEgg.config" class="py-name" href="#" onclick="return doclink('link-208', 'config', 'link-14');">con [...]
+<a name="L657"></a><tt class="py-lineno"> 657</tt>  <tt class="py-line">                            <tt class="py-name">frameless</tt><tt class="py-op">=</tt><tt id="link-209" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-209', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-210" class="py-name"><a title="VisionEgg.config" class="py-name" href="#" onclick="return doclink('link-210', 'config', 'link-14');">confi [...]
+<a name="L658"></a><tt class="py-lineno"> 658</tt>  <tt class="py-line">                            <tt class="py-name">hide_mouse</tt><tt class="py-op">=</tt><tt id="link-211" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-211', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-212" class="py-name"><a title="VisionEgg.config" class="py-name" href="#" onclick="return doclink('link-212', 'config', 'link-14');">conf [...]
+<a name="L659"></a><tt class="py-lineno"> 659</tt>  <tt class="py-line">        <tt class="py-keyword">finally</tt><tt class="py-op">:</tt> </tt>
+<a name="L660"></a><tt class="py-lineno"> 660</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">screen</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L661"></a><tt class="py-lineno"> 661</tt>  <tt class="py-line">                <tt class="py-comment"># Opening screen failed.  Let's do any cleanup that Screen.__init__ missed.</tt> </tt>
+<a name="L662"></a><tt class="py-lineno"> 662</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L663"></a><tt class="py-lineno"> 663</tt>  <tt class="py-line">                    <tt class="py-name">pygame</tt><tt class="py-op">.</tt><tt class="py-name">mouse</tt><tt class="py-op">.</tt><tt class="py-name">set_visible</tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> <tt class="py-comment"># make sure mouse is visible</tt> </tt>
+<a name="L664"></a><tt class="py-lineno"> 664</tt>  <tt class="py-line">                    <tt class="py-name">pygame</tt><tt class="py-op">.</tt><tt id="link-213" class="py-name"><a title="VisionEgg.PyroApps.EPhysGUI.AppWindow.quit" class="py-name" href="#" onclick="return doclink('link-213', 'quit', 'link-111');">quit</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-comment"># close screen</tt> </tt>
+<a name="L665"></a><tt class="py-lineno"> 665</tt>  <tt class="py-line">                <tt class="py-keyword">except</tt> <tt class="py-name">pygame</tt><tt class="py-op">.</tt><tt class="py-name">error</tt><tt class="py-op">,</tt> <tt class="py-name">x</tt><tt class="py-op">:</tt> </tt>
+<a name="L666"></a><tt class="py-lineno"> 666</tt>  <tt class="py-line">                    <tt class="py-keyword">if</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">x</tt><tt class="py-op">)</tt> <tt class="py-op">!=</tt> <tt class="py-string">'video system not initialized'</tt><tt class="py-op">:</tt> </tt>
+<a name="L667"></a><tt class="py-lineno"> 667</tt>  <tt class="py-line">                        <tt class="py-keyword">raise</tt> </tt>
+<a name="L668"></a><tt class="py-lineno"> 668</tt>  <tt class="py-line"> </tt>
+<a name="L669"></a><tt class="py-lineno"> 669</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">screen</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L670"></a><tt class="py-lineno"> 670</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">RuntimeError</tt><tt class="py-op">(</tt><tt class="py-string">"Screen open failed. Check your error log for a traceback."</tt><tt class="py-op">)</tt> </tt>
+<a name="L671"></a><tt class="py-lineno"> 671</tt>  <tt class="py-line"> </tt>
+<a name="L672"></a><tt class="py-lineno"> 672</tt>  <tt class="py-line">        <tt class="py-name">gamma_source</tt> <tt class="py-op">=</tt> <tt id="link-214" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-214', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-215" class="py-name"><a title="VisionEgg.config" class="py-name" href="#" onclick="return doclink('link-215', 'config', 'link-14');">config</a></tt><tt c [...]
+<a name="L673"></a><tt class="py-lineno"> 673</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">gamma_source</tt> <tt class="py-op">!=</tt> <tt class="py-string">'none'</tt><tt class="py-op">:</tt> </tt>
+<a name="L674"></a><tt class="py-lineno"> 674</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">gamma_source</tt> <tt class="py-op">==</tt> <tt class="py-string">'invert'</tt><tt class="py-op">:</tt> </tt>
+<a name="L675"></a><tt class="py-lineno"> 675</tt>  <tt class="py-line">                <tt class="py-name">native_red</tt> <tt class="py-op">=</tt> <tt id="link-216" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-216', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-217" class="py-name"><a title="VisionEgg.config" class="py-name" href="#" onclick="return doclink('link-217', 'config', 'link-14');">config</a></tt [...]
+<a name="L676"></a><tt class="py-lineno"> 676</tt>  <tt class="py-line">                <tt class="py-name">native_green</tt> <tt class="py-op">=</tt> <tt id="link-218" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-218', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-219" class="py-name"><a title="VisionEgg.config" class="py-name" href="#" onclick="return doclink('link-219', 'config', 'link-14');">config</a></ [...]
+<a name="L677"></a><tt class="py-lineno"> 677</tt>  <tt class="py-line">                <tt class="py-name">native_blue</tt> <tt class="py-op">=</tt> <tt id="link-220" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-220', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-221" class="py-name"><a title="VisionEgg.config" class="py-name" href="#" onclick="return doclink('link-221', 'config', 'link-14');">config</a></t [...]
+<a name="L678"></a><tt class="py-lineno"> 678</tt>  <tt class="py-line">                <tt class="py-name">red</tt> <tt class="py-op">=</tt> <tt class="py-name">screen</tt><tt class="py-op">.</tt><tt class="py-name">_create_inverted_gamma_ramp</tt><tt class="py-op">(</tt> <tt class="py-name">native_red</tt> <tt class="py-op">)</tt> </tt>
+<a name="L679"></a><tt class="py-lineno"> 679</tt>  <tt class="py-line">                <tt class="py-name">green</tt> <tt class="py-op">=</tt> <tt class="py-name">screen</tt><tt class="py-op">.</tt><tt class="py-name">_create_inverted_gamma_ramp</tt><tt class="py-op">(</tt> <tt class="py-name">native_green</tt> <tt class="py-op">)</tt> </tt>
+<a name="L680"></a><tt class="py-lineno"> 680</tt>  <tt class="py-line">                <tt class="py-name">blue</tt> <tt class="py-op">=</tt> <tt class="py-name">screen</tt><tt class="py-op">.</tt><tt class="py-name">_create_inverted_gamma_ramp</tt><tt class="py-op">(</tt> <tt class="py-name">native_blue</tt> <tt class="py-op">)</tt> </tt>
+<a name="L681"></a><tt class="py-lineno"> 681</tt>  <tt class="py-line">                <tt class="py-name">gamma_set_string</tt> <tt class="py-op">=</tt> <tt class="py-string">"linearized gamma lookup tables to correct "</tt><tt class="py-op">+</tt>\ </tt>
+<a name="L682"></a><tt class="py-lineno"> 682</tt>  <tt class="py-line">                                   <tt class="py-string">"monitor with native gammas (%f, %f, %f) RGB"</tt><tt class="py-op">%</tt><tt class="py-op">(</tt> </tt>
+<a name="L683"></a><tt class="py-lineno"> 683</tt>  <tt class="py-line">                    <tt class="py-name">native_red</tt><tt class="py-op">,</tt> </tt>
+<a name="L684"></a><tt class="py-lineno"> 684</tt>  <tt class="py-line">                    <tt class="py-name">native_green</tt><tt class="py-op">,</tt> </tt>
+<a name="L685"></a><tt class="py-lineno"> 685</tt>  <tt class="py-line">                    <tt class="py-name">native_blue</tt><tt class="py-op">)</tt> </tt>
+<a name="L686"></a><tt class="py-lineno"> 686</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-name">gamma_source</tt> <tt class="py-op">==</tt> <tt class="py-string">'file'</tt><tt class="py-op">:</tt> </tt>
+<a name="L687"></a><tt class="py-lineno"> 687</tt>  <tt class="py-line">                <tt class="py-name">filename</tt> <tt class="py-op">=</tt> <tt id="link-222" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-222', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-223" class="py-name"><a title="VisionEgg.config" class="py-name" href="#" onclick="return doclink('link-223', 'config', 'link-14');">config</a></tt>< [...]
+<a name="L688"></a><tt class="py-lineno"> 688</tt>  <tt class="py-line">                <tt class="py-name">red</tt><tt class="py-op">,</tt> <tt class="py-name">green</tt><tt class="py-op">,</tt> <tt class="py-name">blue</tt> <tt class="py-op">=</tt> <tt class="py-name">screen</tt><tt class="py-op">.</tt><tt class="py-name">_open_gamma_file</tt><tt class="py-op">(</tt><tt class="py-name">filename</tt><tt class="py-op">)</tt> </tt>
+<a name="L689"></a><tt class="py-lineno"> 689</tt>  <tt class="py-line">                <tt class="py-name">gamma_set_string</tt> <tt class="py-op">=</tt> <tt class="py-string">"set gamma lookup tables from data in file %s"</tt><tt class="py-op">%</tt><tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">path</tt><tt class="py-op">.</tt><tt class="py-name">abspath</tt><tt class="py-op">(</tt><tt class="py-name">filename</tt><tt class="py-op">)</tt> </tt>
+<a name="L690"></a><tt class="py-lineno"> 690</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L691"></a><tt class="py-lineno"> 691</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">"Unknown gamma source: '%s'"</tt><tt class="py-op">%</tt><tt class="py-name">gamma_source</tt><tt class="py-op">)</tt> </tt>
+<a name="L692"></a><tt class="py-lineno"> 692</tt>  <tt class="py-line">            <tt id="link-224" class="py-name"><a title="VisionEgg.logger" class="py-name" href="#" onclick="return doclink('link-224', 'logger', 'link-41');">logger</a></tt> <tt class="py-op">=</tt> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">getLogger</tt><tt class="py-op">(</tt><tt class="py-string">'VisionEgg.Core'</tt><tt class="py-op">)</tt> </tt>
+<a name="L693"></a><tt class="py-lineno"> 693</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">screen</tt><tt class="py-op">.</tt><tt id="link-225" class="py-name"><a title="VisionEgg.Core.Screen.set_gamma_ramp
+VisionEgg.PyroApps.EPhysServer.EPhysServer.set_gamma_ramp" class="py-name" href="#" onclick="return doclink('link-225', 'set_gamma_ramp', 'link-179');">set_gamma_ramp</a></tt><tt class="py-op">(</tt><tt class="py-name">red</tt><tt class="py-op">,</tt><tt class="py-name">green</tt><tt class="py-op">,</tt><tt class="py-name">blue</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L694"></a><tt class="py-lineno"> 694</tt>  <tt class="py-line">                <tt id="link-226" class="py-name"><a title="VisionEgg.logger" class="py-name" href="#" onclick="return doclink('link-226', 'logger', 'link-41');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">warning</tt><tt class="py-op">(</tt> <tt class="py-string">"Setting gamma ramps failed."</tt> <tt class="py-op">)</tt> </tt>
+<a name="L695"></a><tt class="py-lineno"> 695</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L696"></a><tt class="py-lineno"> 696</tt>  <tt class="py-line">                <tt id="link-227" class="py-name"><a title="VisionEgg.logger" class="py-name" href="#" onclick="return doclink('link-227', 'logger', 'link-41');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt> <tt class="py-string">"Gamma set sucessfully: %s"</tt><tt class="py-op">%</tt><tt class="py-name">gamma_set_string</tt> <tt class="py-op">)</tt> </tt>
+<a name="L697"></a><tt class="py-lineno"> 697</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">screen</tt> </tt>
+</div><a name="L698"></a><tt class="py-lineno"> 698</tt>  <tt class="py-line">    <tt id="link-228" class="py-name" targets="Static Method VisionEgg.Core.Screen.create_default()=VisionEgg.Core.Screen-class.html#create_default"><a title="VisionEgg.Core.Screen.create_default" class="py-name" href="#" onclick="return doclink('link-228', 'create_default', 'link-228');">create_default</a></tt> <tt class="py-op">=</tt> <tt class="py-name">staticmethod</tt><tt class="py-op">(</tt><tt id="link-2 [...]
+<a name="L699"></a><tt class="py-lineno"> 699</tt>  <tt class="py-line"> </tt>
+<a name="Screen._create_inverted_gamma_ramp"></a><div id="Screen._create_inverted_gamma_ramp-def"><a name="L700"></a><tt class="py-lineno"> 700</tt> <a class="py-toggle" href="#" id="Screen._create_inverted_gamma_ramp-toggle" onclick="return toggle('Screen._create_inverted_gamma_ramp');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.Core.Screen-class.html#_create_inverted_gamma_ramp">_create_inverted_gamma_ramp</a><tt class="py-op">(< [...]
+</div><div id="Screen._create_inverted_gamma_ramp-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Screen._create_inverted_gamma_ramp-expanded"><a name="L701"></a><tt class="py-lineno"> 701</tt>  <tt class="py-line">        <tt class="py-comment"># c is a constant scale factor.  It is always 1.0 when</tt> </tt>
+<a name="L702"></a><tt class="py-lineno"> 702</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># luminance is normalized to range [0.0,1.0] and input units</tt> </tt>
+<a name="L703"></a><tt class="py-lineno"> 703</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># in range [0.0,1.0], as is OpenGL standard.</tt> </tt>
+<a name="L704"></a><tt class="py-lineno"> 704</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">c</tt> <tt class="py-op">=</tt> <tt class="py-number">1.0</tt> </tt>
+<a name="L705"></a><tt class="py-lineno"> 705</tt>  <tt class="py-line">        <tt class="py-name">inc</tt> <tt class="py-op">=</tt> <tt class="py-number">1.0</tt><tt class="py-op">/</tt><tt class="py-number">255</tt> </tt>
+<a name="L706"></a><tt class="py-lineno"> 706</tt>  <tt class="py-line">        <tt class="py-name">target_luminances</tt> <tt class="py-op">=</tt> <tt class="py-name">Numeric</tt><tt class="py-op">.</tt><tt class="py-name">arange</tt><tt class="py-op">(</tt><tt class="py-number">0.0</tt><tt class="py-op">,</tt><tt class="py-number">1.0</tt><tt class="py-op">+</tt><tt class="py-name">inc</tt><tt class="py-op">,</tt><tt class="py-name">inc</tt><tt class="py-op">)</tt> </tt>
+<a name="L707"></a><tt class="py-lineno"> 707</tt>  <tt class="py-line">        <tt class="py-name">output_ramp</tt> <tt class="py-op">=</tt> <tt class="py-name">Numeric</tt><tt class="py-op">.</tt><tt class="py-name">zeros</tt><tt class="py-op">(</tt><tt class="py-name">target_luminances</tt><tt class="py-op">.</tt><tt class="py-name">shape</tt><tt class="py-op">,</tt><tt class="py-name">Numeric</tt><tt class="py-op">.</tt><tt class="py-name">Int</tt><tt class="py-op">)</tt> </tt>
+<a name="L708"></a><tt class="py-lineno"> 708</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">i</tt> <tt class="py-keyword">in</tt> <tt class="py-name">range</tt><tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">target_luminances</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L709"></a><tt class="py-lineno"> 709</tt>  <tt class="py-line">            <tt class="py-name">L</tt> <tt class="py-op">=</tt> <tt class="py-name">target_luminances</tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">]</tt> </tt>
+<a name="L710"></a><tt class="py-lineno"> 710</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">L</tt> <tt class="py-op">==</tt> <tt class="py-number">0.0</tt><tt class="py-op">:</tt> </tt>
+<a name="L711"></a><tt class="py-lineno"> 711</tt>  <tt class="py-line">                <tt class="py-name">v_88fp</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L712"></a><tt class="py-lineno"> 712</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L713"></a><tt class="py-lineno"> 713</tt>  <tt class="py-line">                <tt class="py-name">v</tt> <tt class="py-op">=</tt> <tt class="py-name">math</tt><tt class="py-op">.</tt><tt class="py-name">exp</tt><tt class="py-op">(</tt> <tt class="py-op">(</tt><tt class="py-name">math</tt><tt class="py-op">.</tt><tt class="py-name">log</tt><tt class="py-op">(</tt><tt class="py-name">L</tt><tt class="py-op">)</tt> <tt class="py-op">-</tt> <tt class="py-name">math</tt><tt class="p [...]
+<a name="L714"></a><tt class="py-lineno"> 714</tt>  <tt class="py-line">                <tt class="py-name">v_88fp</tt> <tt class="py-op">=</tt> <tt id="link-230" class="py-name" targets="Class int=int-class.html"><a title="int" class="py-name" href="#" onclick="return doclink('link-230', 'int', 'link-230');">int</a></tt><tt class="py-op">(</tt><tt class="py-name">round</tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-name">v</tt><tt class="py-op">*</tt><tt class="py-num [...]
+<a name="L715"></a><tt class="py-lineno"> 715</tt>  <tt class="py-line">            <tt class="py-name">output_ramp</tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">v_88fp</tt> <tt class="py-comment"># 8.8 fixed point format</tt> </tt>
+<a name="L716"></a><tt class="py-lineno"> 716</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">output_ramp</tt><tt class="py-op">)</tt> <tt class="py-comment"># convert to Python list</tt> </tt>
+</div><a name="L717"></a><tt class="py-lineno"> 717</tt>  <tt class="py-line"> </tt>
+<a name="Screen._open_gamma_file"></a><div id="Screen._open_gamma_file-def"><a name="L718"></a><tt class="py-lineno"> 718</tt> <a class="py-toggle" href="#" id="Screen._open_gamma_file-toggle" onclick="return toggle('Screen._open_gamma_file');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.Core.Screen-class.html#_open_gamma_file">_open_gamma_file</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt cla [...]
+</div><div id="Screen._open_gamma_file-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Screen._open_gamma_file-expanded"><a name="L719"></a><tt class="py-lineno"> 719</tt>  <tt class="py-line">        <tt class="py-name">fd</tt> <tt class="py-op">=</tt> <tt class="py-name">open</tt><tt class="py-op">(</tt><tt class="py-name">filename</tt><tt class="py-op">,</tt><tt class="py-string">"r"</tt><tt class="py-op">)</tt> </tt>
+<a name="L720"></a><tt class="py-lineno"> 720</tt>  <tt class="py-line">        <tt class="py-name">gamma_values</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L721"></a><tt class="py-lineno"> 721</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">line</tt> <tt class="py-keyword">in</tt> <tt class="py-name">fd</tt><tt class="py-op">.</tt><tt class="py-name">readlines</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L722"></a><tt class="py-lineno"> 722</tt>  <tt class="py-line">            <tt class="py-name">line</tt> <tt class="py-op">=</tt> <tt class="py-name">line</tt><tt class="py-op">.</tt><tt class="py-name">strip</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-comment"># remove leading/trailing whitespace</tt> </tt>
+<a name="L723"></a><tt class="py-lineno"> 723</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">line</tt><tt class="py-op">.</tt><tt class="py-name">startswith</tt><tt class="py-op">(</tt><tt class="py-string">"#"</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> <tt class="py-comment"># comment, ignore</tt> </tt>
+<a name="L724"></a><tt class="py-lineno"> 724</tt>  <tt class="py-line">                <tt class="py-keyword">continue</tt> </tt>
+<a name="L725"></a><tt class="py-lineno"> 725</tt>  <tt class="py-line">            <tt class="py-name">gamma_values</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt> <tt class="py-name">map</tt><tt class="py-op">(</tt><tt id="link-231" class="py-name"><a title="int" class="py-name" href="#" onclick="return doclink('link-231', 'int', 'link-230');">int</a></tt><tt class="py-op">,</tt> <tt class="py-name">line</tt><tt class="py-op">.</tt><tt class="py-name [...]
+<a name="L726"></a><tt class="py-lineno"> 726</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">gamma_values</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> <tt class="py-op">!=</tt> <tt class="py-number">3</tt><tt class="py-op">:</tt> </tt>
+<a name="L727"></a><tt class="py-lineno"> 727</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">"expected 3 values per gamma entry"</tt><tt class="py-op">)</tt> </tt>
+<a name="L728"></a><tt class="py-lineno"> 728</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">gamma_values</tt><tt class="py-op">)</tt> <tt class="py-op">!=</tt> <tt class="py-number">256</tt><tt class="py-op">:</tt> </tt>
+<a name="L729"></a><tt class="py-lineno"> 729</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">"expected 256 gamma entries"</tt><tt class="py-op">)</tt> </tt>
+<a name="L730"></a><tt class="py-lineno"> 730</tt>  <tt class="py-line">        <tt class="py-name">red</tt><tt class="py-op">,</tt> <tt class="py-name">green</tt><tt class="py-op">,</tt> <tt class="py-name">blue</tt> <tt class="py-op">=</tt> <tt class="py-name">zip</tt><tt class="py-op">(</tt><tt class="py-op">*</tt><tt class="py-name">gamma_values</tt><tt class="py-op">)</tt> </tt>
+<a name="L731"></a><tt class="py-lineno"> 731</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">red</tt><tt class="py-op">,</tt><tt class="py-name">green</tt><tt class="py-op">,</tt><tt class="py-name">blue</tt> </tt>
+</div></div><a name="L732"></a><tt class="py-lineno"> 732</tt>  <tt class="py-line"> </tt>
+<a name="get_default_screen"></a><div id="get_default_screen-def"><a name="L733"></a><tt class="py-lineno"> 733</tt> <a class="py-toggle" href="#" id="get_default_screen-toggle" onclick="return toggle('get_default_screen');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.Core-module.html#get_default_screen">get_default_screen</a><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="get_default_screen-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="get_default_screen-expanded"><a name="L734"></a><tt class="py-lineno"> 734</tt>  <tt class="py-line">    <tt class="py-docstring">"""Make an instance of Screen using a GUI window or from config file."""</tt> </tt>
+<a name="L735"></a><tt class="py-lineno"> 735</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt id="link-232" class="py-name"><a title="VisionEgg.Core.Screen" class="py-name" href="#" onclick="return doclink('link-232', 'Screen', 'link-197');">Screen</a></tt><tt class="py-op">.</tt><tt id="link-233" class="py-name"><a title="VisionEgg.Core.Screen.create_default" class="py-name" href="#" onclick="return doclink('link-233', 'create_default', 'link-228');">create_default< [...]
+</div><a name="L736"></a><tt class="py-lineno"> 736</tt>  <tt class="py-line"> </tt>
+<a name="L737"></a><tt class="py-lineno"> 737</tt>  <tt class="py-line"><tt class="py-comment">####################################################################</tt> </tt>
+<a name="L738"></a><tt class="py-lineno"> 738</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L739"></a><tt class="py-lineno"> 739</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#        Projection and derived classes</tt> </tt>
+<a name="L740"></a><tt class="py-lineno"> 740</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L741"></a><tt class="py-lineno"> 741</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">####################################################################</tt> </tt>
+<a name="L742"></a><tt class="py-lineno"> 742</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="ProjectionBaseClass"></a><div id="ProjectionBaseClass-def"><a name="L743"></a><tt class="py-lineno"> 743</tt> <a class="py-toggle" href="#" id="ProjectionBaseClass-toggle" onclick="return toggle('ProjectionBaseClass');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.Core.ProjectionBaseClass-class.html">ProjectionBaseClass</a><tt class="py-op">(</tt><tt class="py-base-class">VisionEgg</tt><tt class="py-op">.</tt><tt class="py-bas [...]
+</div><div id="ProjectionBaseClass-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="ProjectionBaseClass-expanded"><a name="L744"></a><tt class="py-lineno"> 744</tt>  <tt class="py-line">    <tt class="py-docstring">"""Converts stimulus coordinates to viewport coordinates.</tt> </tt>
+<a name="L745"></a><tt class="py-lineno"> 745</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L746"></a><tt class="py-lineno"> 746</tt>  <tt class="py-line"><tt class="py-docstring">    This is an abstract base class which should be subclassed for</tt> </tt>
+<a name="L747"></a><tt class="py-lineno"> 747</tt>  <tt class="py-line"><tt class="py-docstring">    actual use.</tt> </tt>
+<a name="L748"></a><tt class="py-lineno"> 748</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L749"></a><tt class="py-lineno"> 749</tt>  <tt class="py-line"><tt class="py-docstring">    Parameters</tt> </tt>
+<a name="L750"></a><tt class="py-lineno"> 750</tt>  <tt class="py-line"><tt class="py-docstring">    ==========</tt> </tt>
+<a name="L751"></a><tt class="py-lineno"> 751</tt>  <tt class="py-line"><tt class="py-docstring">    matrix -- matrix specifying projection (Sequence4x4 of Real)</tt> </tt>
+<a name="L752"></a><tt class="py-lineno"> 752</tt>  <tt class="py-line"><tt class="py-docstring">              Default: [[1 0 0 0]</tt> </tt>
+<a name="L753"></a><tt class="py-lineno"> 753</tt>  <tt class="py-line"><tt class="py-docstring">                        [0 1 0 0]</tt> </tt>
+<a name="L754"></a><tt class="py-lineno"> 754</tt>  <tt class="py-line"><tt class="py-docstring">                        [0 0 1 0]</tt> </tt>
+<a name="L755"></a><tt class="py-lineno"> 755</tt>  <tt class="py-line"><tt class="py-docstring">                        [0 0 0 1]]</tt> </tt>
+<a name="L756"></a><tt class="py-lineno"> 756</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L757"></a><tt class="py-lineno"> 757</tt>  <tt class="py-line"> </tt>
+<a name="L758"></a><tt class="py-lineno"> 758</tt>  <tt class="py-line">    <tt class="py-comment"># WARNING: This implementation should really get cleaned up and</tt> </tt>
+<a name="L759"></a><tt class="py-lineno"> 759</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># NOT use OpenGL except when purposefully setting matrices.</tt> </tt>
+<a name="L760"></a><tt class="py-lineno"> 760</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L761"></a><tt class="py-lineno"> 761</tt>  <tt class="py-line">    <tt id="link-234" class="py-name"><a title="VisionEgg.ClassWithParameters.parameters_and_defaults
+VisionEgg.Core.FixationSpot.parameters_and_defaults
+VisionEgg.Core.ProjectionBaseClass.parameters_and_defaults
+VisionEgg.Core.Screen.parameters_and_defaults
+VisionEgg.Core.Viewport.parameters_and_defaults
+VisionEgg.Daq.Buffered.parameters_and_defaults
+VisionEgg.Dots.DotArea2D.parameters_and_defaults
+VisionEgg.FlowControl.Presentation.parameters_and_defaults
+VisionEgg.Gratings.AlphaGratingCommon.parameters_and_defaults
+VisionEgg.Gratings.LuminanceGratingCommon.parameters_and_defaults
+VisionEgg.Gratings.SinGrating2D.parameters_and_defaults
+VisionEgg.Gratings.SinGrating3D.parameters_and_defaults
+VisionEgg.MoreStimuli.Arrow.parameters_and_defaults
+VisionEgg.MoreStimuli.FilledCircle.parameters_and_defaults
+VisionEgg.MoreStimuli.Rectangle3D.parameters_and_defaults
+VisionEgg.MoreStimuli.Target2D.parameters_and_defaults
+VisionEgg.PyroApps.EPhysGUI.Loop.parameters_and_defaults
+VisionEgg.SphereMap.AzElGrid.parameters_and_defaults
+VisionEgg.SphereMap.SphereGrating.parameters_and_defaults
+VisionEgg.SphereMap.SphereMap.parameters_and_defaults
+VisionEgg.SphereMap.SphereWindow.parameters_and_defaults
+VisionEgg.Text.BitmapText.parameters_and_defaults
+VisionEgg.Text.GlutTextBase.parameters_and_defaults
+VisionEgg.Text.StrokeText.parameters_and_defaults
+VisionEgg.Text.Text.parameters_and_defaults
+VisionEgg.Textures.FixationCross.parameters_and_defaults
+VisionEgg.Textures.SpinningDrum.parameters_and_defaults
+VisionEgg.Textures.TextureStimulus.parameters_and_defaults
+VisionEgg.Textures.TextureStimulus3D.parameters_and_defaults
+VisionEgg.Textures.TextureStimulusBaseClass.parameters_and_defaults
+VisionEgg.WrappedText.WrappedText.parameters_and_defaults" class="py-name" href="#" onclick="return doclink('link-234', 'parameters_and_defaults', 'link-15');">parameters_and_defaults</a></tt> <tt class="py-op">=</tt> <tt id="link-235" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-235', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-236" class="py-name"><a title="VisionEgg.ParameterDefinition" class="py-name"  [...]
+<a name="L762"></a><tt class="py-lineno"> 762</tt>  <tt class="py-line">        <tt class="py-string">'matrix'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt> <tt class="py-name">Numeric</tt><tt class="py-op">.</tt><tt class="py-name">identity</tt><tt class="py-op">(</tt><tt class="py-number">4</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-comment"># 4x4 identity matrix</tt> </tt>
+<a name="L763"></a><tt class="py-lineno"> 763</tt>  <tt class="py-line">                   <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-237" class="py-name" targets="Class VisionEgg.ParameterTypes.Sequence4x4=VisionEgg.ParameterTypes.Sequence4x4-class.html"><a title="VisionEgg.ParameterTypes.Sequence4x4" class="py-name" href="#" onclick="return doclink('link-237', 'Sequence4x4', 'link-237');">Sequence4x4</a></tt><tt class="py-op">(</tt><tt class="py-name">ve_type [...]
+<a name="L764"></a><tt class="py-lineno"> 764</tt>  <tt class="py-line">                   <tt class="py-string">'matrix specifying projection'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L765"></a><tt class="py-lineno"> 765</tt>  <tt class="py-line">        <tt class="py-op">}</tt><tt class="py-op">)</tt> </tt>
+<a name="L766"></a><tt class="py-lineno"> 766</tt>  <tt class="py-line"> </tt>
+<a name="L767"></a><tt class="py-lineno"> 767</tt>  <tt class="py-line">    <tt class="py-name">__slots__</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt> </tt>
+<a name="L768"></a><tt class="py-lineno"> 768</tt>  <tt class="py-line">        <tt class="py-string">'projection_type'</tt><tt class="py-op">,</tt> </tt>
+<a name="L769"></a><tt class="py-lineno"> 769</tt>  <tt class="py-line">        <tt class="py-op">)</tt> </tt>
+<a name="L770"></a><tt class="py-lineno"> 770</tt>  <tt class="py-line"> </tt>
+<a name="ProjectionBaseClass.__init__"></a><div id="ProjectionBaseClass.__init__-def"><a name="L771"></a><tt class="py-lineno"> 771</tt> <a class="py-toggle" href="#" id="ProjectionBaseClass.__init__-toggle" onclick="return toggle('ProjectionBaseClass.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.Core.ProjectionBaseClass-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-o [...]
+</div><div id="ProjectionBaseClass.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ProjectionBaseClass.__init__-expanded"><a name="L772"></a><tt class="py-lineno"> 772</tt>  <tt class="py-line">        <tt id="link-239" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-239', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-240" class="py-name"><a title="VisionEgg.ClassWithParame [...]
+VisionEgg.Configuration.Config.__init__
+VisionEgg.Core.FixationSpot.__init__
+VisionEgg.Core.FrameTimer.__init__
+VisionEgg.Core.ModelView.__init__
+VisionEgg.Core.OrthographicProjection.__init__
+VisionEgg.Core.OrthographicProjectionNoZClip.__init__
+VisionEgg.Core.PerspectiveProjection.__init__
+VisionEgg.Core.Projection.__init__
+VisionEgg.Core.ProjectionBaseClass.__init__
+VisionEgg.Core.Screen.__init__
+VisionEgg.Core.SimplePerspectiveProjection.__init__
+VisionEgg.Core.Stimulus.__init__
+VisionEgg.Core.Viewport.__init__
+VisionEgg.Daq.Channel.__init__
+VisionEgg.Daq.DaqMode.__init__
+VisionEgg.Daq.Device.__init__
+VisionEgg.Daq.Functionality.__init__
+VisionEgg.Daq.SignalType.__init__
+VisionEgg.DaqKeyboard.KeyboardTriggerInController.__init__
+VisionEgg.DaqLPT.LPTChannel.__init__
+VisionEgg.DaqLPT.LPTDevice.__init__
+VisionEgg.DaqLPT.LPTTriggerInController.__init__
+VisionEgg.DaqLPT.LPTTriggerOutController.__init__
+VisionEgg.Deprecated.Message.__init__
+VisionEgg.Dots.DotArea2D.__init__
+VisionEgg.FlowControl.ConstantController.__init__
+VisionEgg.FlowControl.Controller.__init__
+VisionEgg.FlowControl.EncapsulatedController.__init__
+VisionEgg.FlowControl.EvalStringController.__init__
+VisionEgg.FlowControl.ExecStringController.__init__
+VisionEgg.FlowControl.FunctionController.__init__
+VisionEgg.FlowControl.Presentation.__init__
+VisionEgg.GLTrace.Wrapper.__init__
+VisionEgg.GUI.AppWindow.__init__
+VisionEgg.GUI.GetKeypressDialog.__init__
+VisionEgg.GUI.GraphicsConfigurationWindow.__init__
+VisionEgg.GUI.InfoFrame.__init__
+VisionEgg.GUI.ProgressBar.__init__
+VisionEgg.GUI.ToplevelDialog.__init__
+VisionEgg.Gratings.SinGrating2D.__init__
+VisionEgg.Gratings.SinGrating3D.__init__
+VisionEgg.MoreStimuli.Arrow.__init__
+VisionEgg.MoreStimuli.FilledCircle.__init__
+VisionEgg.MoreStimuli.Rectangle3D.__init__
+VisionEgg.MoreStimuli.Target2D.__init__
+VisionEgg.ParameterTypes.AnyOf.__init__
+VisionEgg.ParameterTypes.Instance.__init__
+VisionEgg.ParameterTypes.Sequence.__init__
+VisionEgg.ParameterTypes.SubClass.__init__
+VisionEgg.PyroApps.AST_ext.AST_Visitor.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalMetaParameters.__init__
+VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.__init__
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.__init__
+VisionEgg.PyroApps.DropinGUI.DropinMetaParameters.__init__
+VisionEgg.PyroApps.DropinServer.DropinMetaController.__init__
+VisionEgg.PyroApps.EPhysGUI.AppWindow.__init__
+VisionEgg.PyroApps.EPhysGUI.BarButton.__init__
+VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase.__init__
+VisionEgg.PyroApps.EPhysGUI.GammaFrame.__init__
+VisionEgg.PyroApps.EPhysGUI.ImageSequenceLauncher.__init__
+VisionEgg.PyroApps.EPhysGUI.Loop.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopContainedObject.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopParamDialog.__init__
+VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.__init__
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.__init__
+VisionEgg.PyroApps.EPhysServer.EPhysServer.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingMetaParameters.__init__
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.GridGUI.GridControlFrame.__init__
+VisionEgg.PyroApps.GridGUI.GridMetaParameters.__init__
+VisionEgg.PyroApps.GridServer.GridMetaController.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetMetaParameters.__init__
+VisionEgg.PyroApps.MouseTargetServer.MousePositionController.__init__
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetOrientationController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetPositionController.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.CallbackEntry.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionParameters.__init__
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingMetaParameters.__init__
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumMetaParameters.__init__
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.__init__
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.__init__
+VisionEgg.PyroApps.TargetGUI.TargetMetaParameters.__init__
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.__init__
+VisionEgg.PyroClient.PyroClient.__init__
+VisionEgg.PyroHelpers.PyroConstantController.__init__
+VisionEgg.PyroHelpers.PyroEncapsulatedController.__init__
+VisionEgg.PyroHelpers.PyroEvalStringController.__init__
+VisionEgg.PyroHelpers.PyroExecStringController.__init__
+VisionEgg.PyroHelpers.PyroListenController.__init__
+VisionEgg.PyroHelpers.PyroLocalDictController.__init__
+VisionEgg.PyroHelpers.PyroServer.__init__
+VisionEgg.QuickTime.MovieTexture.__init__
+VisionEgg.ResponseControl.KeyboardResponseController.__init__
+VisionEgg.ResponseControl.ResponseController.__init__
+VisionEgg.SphereMap.AzElGrid.__init__
+VisionEgg.SphereMap.SphereGrating.__init__
+VisionEgg.SphereMap.SphereMap.__init__
+VisionEgg.SphereMap.SphereWindow.__init__
+VisionEgg.TCPController.SocketListenController.__init__
+VisionEgg.TCPController.TCPController.__init__
+VisionEgg.TCPController.TCPServer.__init__
+VisionEgg.Text.BitmapText.__init__
+VisionEgg.Text.GlutTextBase.__init__
+VisionEgg.Text.StrokeText.__init__
+VisionEgg.Text.Text.__init__
+VisionEgg.Textures.FixationCross.__init__
+VisionEgg.Textures.Mask2D.__init__
+VisionEgg.Textures.SpinningDrum.__init__
+VisionEgg.Textures.Texture.__init__
+VisionEgg.Textures.TextureFromFile.__init__
+VisionEgg.Textures.TextureObject.__init__
+VisionEgg.Textures.TextureStimulusBaseClass.__init__
+VisionEgg.ThreeDeeMath.TransformMatrix.__init__
+VisionEgg.WrappedText.WrappedText.__init__
+VisionEgg.qtmovie.Movie.__init__
+VisionEgg.qtmovie.Rect.__init__" class="py-name" href="#" onclick="return doclink('link-241', '__init__', 'link-44');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt><tt class="py-op">**</tt><tt class="py-name">kw</tt><tt class="py-op">)</tt> </tt>
+<a name="L773"></a><tt class="py-lineno"> 773</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">projection_type</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> <tt class="py-comment"># derived class must override</tt> </tt>
+</div><a name="L774"></a><tt class="py-lineno"> 774</tt>  <tt class="py-line"> </tt>
+<a name="ProjectionBaseClass._get_matrix_type"></a><div id="ProjectionBaseClass._get_matrix_type-def"><a name="L775"></a><tt class="py-lineno"> 775</tt> <a class="py-toggle" href="#" id="ProjectionBaseClass._get_matrix_type-toggle" onclick="return toggle('ProjectionBaseClass._get_matrix_type');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.Core.ProjectionBaseClass-class.html#_get_matrix_type">_get_matrix_type</a><tt class="py-op">(</ [...]
+</div><div id="ProjectionBaseClass._get_matrix_type-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ProjectionBaseClass._get_matrix_type-expanded"><a name="L776"></a><tt class="py-lineno"> 776</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">projection_type</tt> <tt class="py-op">==</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_PROJECTION< [...]
+<a name="L777"></a><tt class="py-lineno"> 777</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_PROJECTION_MATRIX</tt> </tt>
+<a name="L778"></a><tt class="py-lineno"> 778</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">projection_type</tt> <tt class="py-op">==</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_MODELVIEW</tt><tt class="py-op">:</tt> </tt>
+<a name="L779"></a><tt class="py-lineno"> 779</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_MODELVIEW_MATRIX</tt> </tt>
+</div><a name="L780"></a><tt class="py-lineno"> 780</tt>  <tt class="py-line"> </tt>
+<a name="ProjectionBaseClass.apply_to_gl"></a><div id="ProjectionBaseClass.apply_to_gl-def"><a name="L781"></a><tt class="py-lineno"> 781</tt> <a class="py-toggle" href="#" id="ProjectionBaseClass.apply_to_gl-toggle" onclick="return toggle('ProjectionBaseClass.apply_to_gl');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.Core.ProjectionBaseClass-class.html#apply_to_gl">apply_to_gl</a><tt class="py-op">(</tt><tt class="py-param">self</ [...]
+</div><div id="ProjectionBaseClass.apply_to_gl-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ProjectionBaseClass.apply_to_gl-expanded"><a name="L782"></a><tt class="py-lineno"> 782</tt>  <tt class="py-line">        <tt class="py-docstring">"""Set the OpenGL projection matrix."""</tt> </tt>
+<a name="L783"></a><tt class="py-lineno"> 783</tt>  <tt class="py-line">        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glMatrixMode</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">projection_type</tt><tt class="py-op">)</tt> </tt>
+<a name="L784"></a><tt class="py-lineno"> 784</tt>  <tt class="py-line">        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt id="link-242" class="py-name" targets="Function VisionEgg.GL.glLoadMatrixf()=VisionEgg.GL-module.html#glLoadMatrixf"><a title="VisionEgg.GL.glLoadMatrixf" class="py-name" href="#" onclick="return doclink('link-242', 'glLoadMatrixf', 'link-242');">glLoadMatrixf</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class=" [...]
+</div><a name="L785"></a><tt class="py-lineno"> 785</tt>  <tt class="py-line"> </tt>
+<a name="ProjectionBaseClass.set_gl_modelview"></a><div id="ProjectionBaseClass.set_gl_modelview-def"><a name="L786"></a><tt class="py-lineno"> 786</tt> <a class="py-toggle" href="#" id="ProjectionBaseClass.set_gl_modelview-toggle" onclick="return toggle('ProjectionBaseClass.set_gl_modelview');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.Core.ProjectionBaseClass-class.html#set_gl_modelview">set_gl_modelview</a><tt class="py-op">(</ [...]
+</div><div id="ProjectionBaseClass.set_gl_modelview-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ProjectionBaseClass.set_gl_modelview-expanded"><a name="L787"></a><tt class="py-lineno"> 787</tt>  <tt class="py-line">        <tt class="py-docstring">"""Set the OpenGL modelview matrix."""</tt> </tt>
+<a name="L788"></a><tt class="py-lineno"> 788</tt>  <tt class="py-line">        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glMatrixMode</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_MODELVIEW</tt><tt class="py-op">)</tt> </tt>
+<a name="L789"></a><tt class="py-lineno"> 789</tt>  <tt class="py-line">        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt id="link-243" class="py-name"><a title="VisionEgg.GL.glLoadMatrixf" class="py-name" href="#" onclick="return doclink('link-243', 'glLoadMatrixf', 'link-242');">glLoadMatrixf</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">matrix</tt><tt clas [...]
+</div><a name="L790"></a><tt class="py-lineno"> 790</tt>  <tt class="py-line"> </tt>
+<a name="ProjectionBaseClass.set_gl_projection"></a><div id="ProjectionBaseClass.set_gl_projection-def"><a name="L791"></a><tt class="py-lineno"> 791</tt> <a class="py-toggle" href="#" id="ProjectionBaseClass.set_gl_projection-toggle" onclick="return toggle('ProjectionBaseClass.set_gl_projection');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.Core.ProjectionBaseClass-class.html#set_gl_projection">set_gl_projection</a><tt class="py-o [...]
+</div><div id="ProjectionBaseClass.set_gl_projection-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ProjectionBaseClass.set_gl_projection-expanded"><a name="L792"></a><tt class="py-lineno"> 792</tt>  <tt class="py-line">        <tt class="py-docstring">"""Set the OpenGL projection matrix."""</tt> </tt>
+<a name="L793"></a><tt class="py-lineno"> 793</tt>  <tt class="py-line">        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glMatrixMode</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_PROJECTION</tt><tt class="py-op">)</tt> </tt>
+<a name="L794"></a><tt class="py-lineno"> 794</tt>  <tt class="py-line">        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt id="link-244" class="py-name"><a title="VisionEgg.GL.glLoadMatrixf" class="py-name" href="#" onclick="return doclink('link-244', 'glLoadMatrixf', 'link-242');">glLoadMatrixf</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">matrix</tt><tt clas [...]
+</div><a name="L795"></a><tt class="py-lineno"> 795</tt>  <tt class="py-line"> </tt>
+<a name="ProjectionBaseClass.push_and_set_gl_projection"></a><div id="ProjectionBaseClass.push_and_set_gl_projection-def"><a name="L796"></a><tt class="py-lineno"> 796</tt> <a class="py-toggle" href="#" id="ProjectionBaseClass.push_and_set_gl_projection-toggle" onclick="return toggle('ProjectionBaseClass.push_and_set_gl_projection');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.Core.ProjectionBaseClass-class.html#push_and_set_gl_pro [...]
+</div><div id="ProjectionBaseClass.push_and_set_gl_projection-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ProjectionBaseClass.push_and_set_gl_projection-expanded"><a name="L797"></a><tt class="py-lineno"> 797</tt>  <tt class="py-line">        <tt class="py-docstring">"""Set the OpenGL projection matrix, pushing current projection matrix to stack."""</tt> </tt>
+<a name="L798"></a><tt class="py-lineno"> 798</tt>  <tt class="py-line">        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glMatrixMode</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">projection_type</tt><tt class="py-op">)</tt> <tt class="py-comment"># Set OpenGL matrix state to modify the projection matrix</tt> </tt>
+<a name="L799"></a><tt class="py-lineno"> 799</tt>  <tt class="py-line">        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glPushMatrix</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L800"></a><tt class="py-lineno"> 800</tt>  <tt class="py-line">        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt id="link-245" class="py-name"><a title="VisionEgg.GL.glLoadMatrixf" class="py-name" href="#" onclick="return doclink('link-245', 'glLoadMatrixf', 'link-242');">glLoadMatrixf</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">matrix</tt><tt clas [...]
+</div><a name="L801"></a><tt class="py-lineno"> 801</tt>  <tt class="py-line"> </tt>
+<a name="ProjectionBaseClass.translate"></a><div id="ProjectionBaseClass.translate-def"><a name="L802"></a><tt class="py-lineno"> 802</tt> <a class="py-toggle" href="#" id="ProjectionBaseClass.translate-toggle" onclick="return toggle('ProjectionBaseClass.translate');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.Core.ProjectionBaseClass-class.html#translate">translate</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class [...]
+</div><div id="ProjectionBaseClass.translate-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ProjectionBaseClass.translate-expanded"><a name="L803"></a><tt class="py-lineno"> 803</tt>  <tt class="py-line">        <tt class="py-docstring">"""Compose a translation and set the OpenGL projection matrix."""</tt> </tt>
+<a name="L804"></a><tt class="py-lineno"> 804</tt>  <tt class="py-line">        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glMatrixMode</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">projection_type</tt><tt class="py-op">)</tt> <tt class="py-comment"># Set OpenGL matrix state to modify the projection matrix</tt> </tt>
+<a name="L805"></a><tt class="py-lineno"> 805</tt>  <tt class="py-line">        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt id="link-246" class="py-name"><a title="VisionEgg.GL.glLoadMatrixf" class="py-name" href="#" onclick="return doclink('link-246', 'glLoadMatrixf', 'link-242');">glLoadMatrixf</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">matrix</tt><tt clas [...]
+<a name="L806"></a><tt class="py-lineno"> 806</tt>  <tt class="py-line">        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glTranslatef</tt><tt class="py-op">(</tt><tt class="py-name">x</tt><tt class="py-op">,</tt><tt class="py-name">y</tt><tt class="py-op">,</tt><tt class="py-name">z</tt><tt class="py-op">)</tt> </tt>
+<a name="L807"></a><tt class="py-lineno"> 807</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">matrix</tt> <tt class="py-op">=</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glGetFloatv</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_get_matrix_type</tt><tt class="py-op">(</tt><tt class="py- [...]
+</div><a name="L808"></a><tt class="py-lineno"> 808</tt>  <tt class="py-line"> </tt>
+<a name="ProjectionBaseClass.stateless_translate"></a><div id="ProjectionBaseClass.stateless_translate-def"><a name="L809"></a><tt class="py-lineno"> 809</tt> <a class="py-toggle" href="#" id="ProjectionBaseClass.stateless_translate-toggle" onclick="return toggle('ProjectionBaseClass.stateless_translate');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.Core.ProjectionBaseClass-class.html#stateless_translate">stateless_translate</a><tt [...]
+</div><div id="ProjectionBaseClass.stateless_translate-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ProjectionBaseClass.stateless_translate-expanded"><a name="L810"></a><tt class="py-lineno"> 810</tt>  <tt class="py-line">        <tt class="py-docstring">"""Compose a translation without changing OpenGL state."""</tt> </tt>
+<a name="L811"></a><tt class="py-lineno"> 811</tt>  <tt class="py-line">        <tt class="py-name">M</tt> <tt class="py-op">=</tt> <tt id="link-247" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-247', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-248" class="py-name"><a title="VisionEgg.ThreeDeeMath" class="py-name" href="#" onclick="return doclink('link-248', 'ThreeDeeMath', 'link-8');">ThreeDeeMath</a></tt [...]
+<a name="L812"></a><tt class="py-lineno"> 812</tt>  <tt class="py-line">        <tt class="py-name">M</tt><tt class="py-op">.</tt><tt id="link-250" class="py-name" targets="Method VisionEgg.Core.ProjectionBaseClass.translate()=VisionEgg.Core.ProjectionBaseClass-class.html#translate,Method VisionEgg.ThreeDeeMath.TransformMatrix.translate()=VisionEgg.ThreeDeeMath.TransformMatrix-class.html#translate"><a title="VisionEgg.Core.ProjectionBaseClass.translate
+VisionEgg.ThreeDeeMath.TransformMatrix.translate" class="py-name" href="#" onclick="return doclink('link-250', 'translate', 'link-250');">translate</a></tt><tt class="py-op">(</tt><tt class="py-name">x</tt><tt class="py-op">,</tt><tt class="py-name">y</tt><tt class="py-op">,</tt><tt class="py-name">z</tt><tt class="py-op">)</tt> </tt>
+<a name="L813"></a><tt class="py-lineno"> 813</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">matrix</tt> <tt class="py-op">=</tt> <tt class="py-name">M</tt><tt class="py-op">.</tt><tt id="link-251" class="py-name" targets="Method VisionEgg.Core.ProjectionBaseClass.get_matrix()=VisionEgg.Core.ProjectionBaseClass-class.html#get_matrix,Method VisionEgg.ThreeDeeMath.Transfor [...]
+VisionEgg.ThreeDeeMath.TransformMatrix.get_matrix" class="py-name" href="#" onclick="return doclink('link-251', 'get_matrix', 'link-251');">get_matrix</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L814"></a><tt class="py-lineno"> 814</tt>  <tt class="py-line"> </tt>
+<a name="ProjectionBaseClass.rotate"></a><div id="ProjectionBaseClass.rotate-def"><a name="L815"></a><tt class="py-lineno"> 815</tt> <a class="py-toggle" href="#" id="ProjectionBaseClass.rotate-toggle" onclick="return toggle('ProjectionBaseClass.rotate');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.Core.ProjectionBaseClass-class.html#rotate">rotate</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt><tt [...]
+</div><div id="ProjectionBaseClass.rotate-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ProjectionBaseClass.rotate-expanded"><a name="L816"></a><tt class="py-lineno"> 816</tt>  <tt class="py-line">        <tt class="py-docstring">"""Compose a rotation and set the OpenGL projection matrix."""</tt> </tt>
+<a name="L817"></a><tt class="py-lineno"> 817</tt>  <tt class="py-line">        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glMatrixMode</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">projection_type</tt><tt class="py-op">)</tt> <tt class="py-comment"># Set OpenGL matrix state to modify the projection matrix</tt> </tt>
+<a name="L818"></a><tt class="py-lineno"> 818</tt>  <tt class="py-line">        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt id="link-252" class="py-name"><a title="VisionEgg.GL.glLoadMatrixf" class="py-name" href="#" onclick="return doclink('link-252', 'glLoadMatrixf', 'link-242');">glLoadMatrixf</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">matrix</tt><tt clas [...]
+<a name="L819"></a><tt class="py-lineno"> 819</tt>  <tt class="py-line">        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glRotatef</tt><tt class="py-op">(</tt><tt class="py-name">angle_degrees</tt><tt class="py-op">,</tt><tt class="py-name">x</tt><tt class="py-op">,</tt><tt class="py-name">y</tt><tt class="py-op">,</tt><tt class="py-name">z</tt><tt class="py-op">)</tt> </tt>
+<a name="L820"></a><tt class="py-lineno"> 820</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">matrix</tt> <tt class="py-op">=</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glGetFloatv</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_get_matrix_type</tt><tt class="py-op">(</tt><tt class="py- [...]
+</div><a name="L821"></a><tt class="py-lineno"> 821</tt>  <tt class="py-line"> </tt>
+<a name="ProjectionBaseClass.stateless_rotate"></a><div id="ProjectionBaseClass.stateless_rotate-def"><a name="L822"></a><tt class="py-lineno"> 822</tt> <a class="py-toggle" href="#" id="ProjectionBaseClass.stateless_rotate-toggle" onclick="return toggle('ProjectionBaseClass.stateless_rotate');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.Core.ProjectionBaseClass-class.html#stateless_rotate">stateless_rotate</a><tt class="py-op">(</ [...]
+</div><div id="ProjectionBaseClass.stateless_rotate-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ProjectionBaseClass.stateless_rotate-expanded"><a name="L823"></a><tt class="py-lineno"> 823</tt>  <tt class="py-line">        <tt class="py-docstring">"""Compose a rotation without changing OpenGL state."""</tt> </tt>
+<a name="L824"></a><tt class="py-lineno"> 824</tt>  <tt class="py-line">        <tt class="py-name">M</tt> <tt class="py-op">=</tt> <tt id="link-253" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-253', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-254" class="py-name"><a title="VisionEgg.ThreeDeeMath" class="py-name" href="#" onclick="return doclink('link-254', 'ThreeDeeMath', 'link-8');">ThreeDeeMath</a></tt [...]
+<a name="L825"></a><tt class="py-lineno"> 825</tt>  <tt class="py-line">        <tt class="py-name">M</tt><tt class="py-op">.</tt><tt id="link-256" class="py-name" targets="Method VisionEgg.Core.ProjectionBaseClass.rotate()=VisionEgg.Core.ProjectionBaseClass-class.html#rotate,Method VisionEgg.ThreeDeeMath.TransformMatrix.rotate()=VisionEgg.ThreeDeeMath.TransformMatrix-class.html#rotate"><a title="VisionEgg.Core.ProjectionBaseClass.rotate
+VisionEgg.ThreeDeeMath.TransformMatrix.rotate" class="py-name" href="#" onclick="return doclink('link-256', 'rotate', 'link-256');">rotate</a></tt><tt class="py-op">(</tt><tt class="py-name">angle_degrees</tt><tt class="py-op">,</tt><tt class="py-name">x</tt><tt class="py-op">,</tt><tt class="py-name">y</tt><tt class="py-op">,</tt><tt class="py-name">z</tt><tt class="py-op">)</tt> </tt>
+<a name="L826"></a><tt class="py-lineno"> 826</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">matrix</tt> <tt class="py-op">=</tt> <tt class="py-name">M</tt><tt class="py-op">.</tt><tt id="link-257" class="py-name"><a title="VisionEgg.Core.ProjectionBaseClass.get_matrix
+VisionEgg.ThreeDeeMath.TransformMatrix.get_matrix" class="py-name" href="#" onclick="return doclink('link-257', 'get_matrix', 'link-251');">get_matrix</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L827"></a><tt class="py-lineno"> 827</tt>  <tt class="py-line"> </tt>
+<a name="ProjectionBaseClass.scale"></a><div id="ProjectionBaseClass.scale-def"><a name="L828"></a><tt class="py-lineno"> 828</tt> <a class="py-toggle" href="#" id="ProjectionBaseClass.scale-toggle" onclick="return toggle('ProjectionBaseClass.scale');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.Core.ProjectionBaseClass-class.html#scale">scale</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt><tt class [...]
+</div><div id="ProjectionBaseClass.scale-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ProjectionBaseClass.scale-expanded"><a name="L829"></a><tt class="py-lineno"> 829</tt>  <tt class="py-line">        <tt class="py-docstring">"""Compose a rotation and set the OpenGL projection matrix."""</tt> </tt>
+<a name="L830"></a><tt class="py-lineno"> 830</tt>  <tt class="py-line">        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glMatrixMode</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">projection_type</tt><tt class="py-op">)</tt> <tt class="py-comment"># Set OpenGL matrix state to modify the projection matrix</tt> </tt>
+<a name="L831"></a><tt class="py-lineno"> 831</tt>  <tt class="py-line">        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt id="link-258" class="py-name"><a title="VisionEgg.GL.glLoadMatrixf" class="py-name" href="#" onclick="return doclink('link-258', 'glLoadMatrixf', 'link-242');">glLoadMatrixf</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">matrix</tt><tt clas [...]
+<a name="L832"></a><tt class="py-lineno"> 832</tt>  <tt class="py-line">        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glScalef</tt><tt class="py-op">(</tt><tt class="py-name">x</tt><tt class="py-op">,</tt><tt class="py-name">y</tt><tt class="py-op">,</tt><tt class="py-name">z</tt><tt class="py-op">)</tt> </tt>
+<a name="L833"></a><tt class="py-lineno"> 833</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">matrix</tt> <tt class="py-op">=</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glGetFloatv</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_get_matrix_type</tt><tt class="py-op">(</tt><tt class="py- [...]
+</div><a name="L834"></a><tt class="py-lineno"> 834</tt>  <tt class="py-line"> </tt>
+<a name="ProjectionBaseClass.stateless_scale"></a><div id="ProjectionBaseClass.stateless_scale-def"><a name="L835"></a><tt class="py-lineno"> 835</tt> <a class="py-toggle" href="#" id="ProjectionBaseClass.stateless_scale-toggle" onclick="return toggle('ProjectionBaseClass.stateless_scale');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.Core.ProjectionBaseClass-class.html#stateless_scale">stateless_scale</a><tt class="py-op">(</tt><tt [...]
+</div><div id="ProjectionBaseClass.stateless_scale-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ProjectionBaseClass.stateless_scale-expanded"><a name="L836"></a><tt class="py-lineno"> 836</tt>  <tt class="py-line">        <tt class="py-docstring">"""Compose a rotation without changing OpenGL state."""</tt> </tt>
+<a name="L837"></a><tt class="py-lineno"> 837</tt>  <tt class="py-line">        <tt class="py-name">M</tt> <tt class="py-op">=</tt> <tt id="link-259" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-259', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-260" class="py-name"><a title="VisionEgg.ThreeDeeMath" class="py-name" href="#" onclick="return doclink('link-260', 'ThreeDeeMath', 'link-8');">ThreeDeeMath</a></tt [...]
+<a name="L838"></a><tt class="py-lineno"> 838</tt>  <tt class="py-line">        <tt class="py-name">M</tt><tt class="py-op">.</tt><tt id="link-262" class="py-name"><a title="VisionEgg.Core.ProjectionBaseClass.scale
+VisionEgg.ThreeDeeMath.TransformMatrix.scale" class="py-name" href="#" onclick="return doclink('link-262', 'scale', 'link-98');">scale</a></tt><tt class="py-op">(</tt><tt class="py-name">x</tt><tt class="py-op">,</tt><tt class="py-name">y</tt><tt class="py-op">,</tt><tt class="py-name">z</tt><tt class="py-op">)</tt> </tt>
+<a name="L839"></a><tt class="py-lineno"> 839</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">matrix</tt> <tt class="py-op">=</tt> <tt class="py-name">M</tt><tt class="py-op">.</tt><tt id="link-263" class="py-name"><a title="VisionEgg.Core.ProjectionBaseClass.get_matrix
+VisionEgg.ThreeDeeMath.TransformMatrix.get_matrix" class="py-name" href="#" onclick="return doclink('link-263', 'get_matrix', 'link-251');">get_matrix</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L840"></a><tt class="py-lineno"> 840</tt>  <tt class="py-line"> </tt>
+<a name="ProjectionBaseClass.get_matrix"></a><div id="ProjectionBaseClass.get_matrix-def"><a name="L841"></a><tt class="py-lineno"> 841</tt> <a class="py-toggle" href="#" id="ProjectionBaseClass.get_matrix-toggle" onclick="return toggle('ProjectionBaseClass.get_matrix');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.Core.ProjectionBaseClass-class.html#get_matrix">get_matrix</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt [...]
+</div><div id="ProjectionBaseClass.get_matrix-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ProjectionBaseClass.get_matrix-expanded"><a name="L842"></a><tt class="py-lineno"> 842</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">matrix</tt> </tt>
+</div><a name="L843"></a><tt class="py-lineno"> 843</tt>  <tt class="py-line"> </tt>
+<a name="ProjectionBaseClass.look_at"></a><div id="ProjectionBaseClass.look_at-def"><a name="L844"></a><tt class="py-lineno"> 844</tt> <a class="py-toggle" href="#" id="ProjectionBaseClass.look_at-toggle" onclick="return toggle('ProjectionBaseClass.look_at');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.Core.ProjectionBaseClass-class.html#look_at">look_at</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</ [...]
+</div><div id="ProjectionBaseClass.look_at-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ProjectionBaseClass.look_at-expanded"><a name="L845"></a><tt class="py-lineno"> 845</tt>  <tt class="py-line">        <tt class="py-comment"># Basically the same as gluLookAt</tt> </tt>
+<a name="L846"></a><tt class="py-lineno"> 846</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">def</tt> <tt class="py-def-name">normalize</tt><tt class="py-op">(</tt><tt class="py-param">vec</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L847"></a><tt class="py-lineno"> 847</tt>  <tt class="py-line">            <tt class="py-name">numpy_vec</tt> <tt class="py-op">=</tt> <tt class="py-name">numpy</tt><tt class="py-op">.</tt><tt class="py-name">asarray</tt><tt class="py-op">(</tt><tt class="py-name">vec</tt><tt class="py-op">)</tt> </tt>
+<a name="L848"></a><tt class="py-lineno"> 848</tt>  <tt class="py-line">            <tt id="link-264" class="py-name" targets="Function VisionEgg.PyroApps.MouseTargetServer.mag()=VisionEgg.PyroApps.MouseTargetServer-module.html#mag"><a title="VisionEgg.PyroApps.MouseTargetServer.mag" class="py-name" href="#" onclick="return doclink('link-264', 'mag', 'link-264');">mag</a></tt> <tt class="py-op">=</tt> <tt class="py-name">math</tt><tt class="py-op">.</tt><tt class="py-name">sqrt</tt><tt c [...]
+<a name="L849"></a><tt class="py-lineno"> 849</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">numpy_vec</tt> <tt class="py-op">/</tt> <tt id="link-266" class="py-name"><a title="VisionEgg.PyroApps.MouseTargetServer.mag" class="py-name" href="#" onclick="return doclink('link-266', 'mag', 'link-264');">mag</a></tt> </tt>
+</div><a name="L850"></a><tt class="py-lineno"> 850</tt>  <tt class="py-line">        <tt class="py-keyword">def</tt> <tt class="py-def-name">cross</tt><tt class="py-op">(</tt><tt class="py-param">vec1</tt><tt class="py-op">,</tt><tt class="py-param">vec2</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L851"></a><tt class="py-lineno"> 851</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-op">(</tt> <tt class="py-name">vec1</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">*</tt><tt class="py-name">vec2</tt><tt class="py-op">[</tt><tt class="py-number">2</tt><tt class="py-op">]</tt> <tt class="py-op">-</tt> <tt class="py-name">vec1</tt><tt class="py-op">[</tt><tt class="py-number">2</tt><tt cla [...]
+<a name="L852"></a><tt class="py-lineno"> 852</tt>  <tt class="py-line">                     <tt class="py-name">vec1</tt><tt class="py-op">[</tt><tt class="py-number">2</tt><tt class="py-op">]</tt><tt class="py-op">*</tt><tt class="py-name">vec2</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">-</tt> <tt class="py-name">vec1</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">*</tt><tt class= [...]
+<a name="L853"></a><tt class="py-lineno"> 853</tt>  <tt class="py-line">                     <tt class="py-name">vec1</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">*</tt><tt class="py-name">vec2</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-op">-</tt> <tt class="py-name">vec1</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">*</tt><tt class= [...]
+</div><a name="L854"></a><tt class="py-lineno"> 854</tt>  <tt class="py-line">        <tt class="py-name">forward</tt> <tt class="py-op">=</tt> <tt class="py-name">numpy</tt><tt class="py-op">.</tt><tt class="py-name">array</tt><tt class="py-op">(</tt><tt class="py-op">(</tt> <tt class="py-name">center</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">-</tt> <tt class="py-name">eye</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><t [...]
+<a name="L855"></a><tt class="py-lineno"> 855</tt>  <tt class="py-line">                                <tt class="py-name">center</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-op">-</tt> <tt class="py-name">eye</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L856"></a><tt class="py-lineno"> 856</tt>  <tt class="py-line">                                <tt class="py-name">center</tt><tt class="py-op">[</tt><tt class="py-number">2</tt><tt class="py-op">]</tt> <tt class="py-op">-</tt> <tt class="py-name">eye</tt><tt class="py-op">[</tt><tt class="py-number">2</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">,</tt><tt class="py-string">'f'</tt><tt class="py-op">)</tt> </tt>
+<a name="L857"></a><tt class="py-lineno"> 857</tt>  <tt class="py-line">        <tt class="py-name">forward</tt> <tt class="py-op">=</tt> <tt class="py-name">normalize</tt><tt class="py-op">(</tt><tt class="py-name">forward</tt><tt class="py-op">)</tt> </tt>
+<a name="L858"></a><tt class="py-lineno"> 858</tt>  <tt class="py-line">        <tt class="py-name">side</tt> <tt class="py-op">=</tt> <tt class="py-name">cross</tt><tt class="py-op">(</tt><tt class="py-name">forward</tt><tt class="py-op">,</tt><tt id="link-267" class="py-name" targets="Variable VisionEgg.PyroApps.MouseTargetServer.up=VisionEgg.PyroApps.MouseTargetServer-module.html#up"><a title="VisionEgg.PyroApps.MouseTargetServer.up" class="py-name" href="#" onclick="return doclink('l [...]
+<a name="L859"></a><tt class="py-lineno"> 859</tt>  <tt class="py-line">        <tt class="py-name">side</tt> <tt class="py-op">=</tt> <tt class="py-name">normalize</tt><tt class="py-op">(</tt><tt class="py-name">side</tt><tt class="py-op">)</tt> </tt>
+<a name="L860"></a><tt class="py-lineno"> 860</tt>  <tt class="py-line">        <tt class="py-name">new_up</tt> <tt class="py-op">=</tt> <tt class="py-name">cross</tt><tt class="py-op">(</tt><tt class="py-name">side</tt><tt class="py-op">,</tt><tt class="py-name">forward</tt><tt class="py-op">)</tt> <tt class="py-comment"># recompute up</tt> </tt>
+<a name="L861"></a><tt class="py-lineno"> 861</tt>  <tt class="py-line">        <tt class="py-comment"># XXX I might have to transpose this matrix</tt> </tt>
+<a name="L862"></a><tt class="py-lineno"> 862</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">m</tt> <tt class="py-op">=</tt> <tt class="py-name">Numeric</tt><tt class="py-op">.</tt><tt class="py-name">array</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-op">[</tt><tt class="py-name">side</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">new_up</tt><tt class="py [...]
+<a name="L863"></a><tt class="py-lineno"> 863</tt>  <tt class="py-line">                           <tt class="py-op">[</tt><tt class="py-name">side</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">new_up</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-op">-</tt><tt class="py-name">forward</tt><tt class="py-op">[</tt><tt class="py-number">1</tt [...]
+<a name="L864"></a><tt class="py-lineno"> 864</tt>  <tt class="py-line">                           <tt class="py-op">[</tt><tt class="py-name">side</tt><tt class="py-op">[</tt><tt class="py-number">2</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">new_up</tt><tt class="py-op">[</tt><tt class="py-number">2</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-op">-</tt><tt class="py-name">forward</tt><tt class="py-op">[</tt><tt class="py-number">2</tt [...]
+<a name="L865"></a><tt class="py-lineno"> 865</tt>  <tt class="py-line">                           <tt class="py-op">[</tt>    <tt class="py-number">0.0</tt><tt class="py-op">,</tt>       <tt class="py-number">0.0</tt><tt class="py-op">,</tt>         <tt class="py-number">0.0</tt><tt class="py-op">,</tt> <tt class="py-number">1.0</tt><tt class="py-op">]</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L866"></a><tt class="py-lineno"> 866</tt>  <tt class="py-line">        <tt class="py-comment"># XXX This should get optimized -- don't do it in OpenGL</tt> </tt>
+<a name="L867"></a><tt class="py-lineno"> 867</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glMatrixMode</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">projection_type</tt><tt class="py-op">)</tt> <tt class="py-comment"># Set OpenGL matrix state to modify the projection matrix</tt> </tt>
+<a name="L868"></a><tt class="py-lineno"> 868</tt>  <tt class="py-line">        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glPushMatrix</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-comment"># save current matrix</tt> </tt>
+<a name="L869"></a><tt class="py-lineno"> 869</tt>  <tt class="py-line">        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L870"></a><tt class="py-lineno"> 870</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt id="link-268" class="py-name"><a title="VisionEgg.GL.glLoadMatrixf" class="py-name" href="#" onclick="return doclink('link-268', 'glLoadMatrixf', 'link-242');">glLoadMatrixf</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">matrix</tt><tt  [...]
+<a name="L871"></a><tt class="py-lineno"> 871</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glMultMatrixf</tt><tt class="py-op">(</tt><tt class="py-name">m</tt><tt class="py-op">)</tt> </tt>
+<a name="L872"></a><tt class="py-lineno"> 872</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glTranslatef</tt><tt class="py-op">(</tt><tt class="py-op">-</tt><tt class="py-name">eye</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">,</tt><tt class="py-op">-</tt><tt class="py-name">eye</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op [...]
+<a name="L873"></a><tt class="py-lineno"> 873</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">matrix</tt> <tt class="py-op">=</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glGetFloatv</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_get_matrix_type</tt><tt class="py-op">(</tt><tt class= [...]
+<a name="L874"></a><tt class="py-lineno"> 874</tt>  <tt class="py-line">        <tt class="py-keyword">finally</tt><tt class="py-op">:</tt> </tt>
+<a name="L875"></a><tt class="py-lineno"> 875</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glPopMatrix</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-comment"># save current matrix</tt> </tt>
+</div><a name="L876"></a><tt class="py-lineno"> 876</tt>  <tt class="py-line"> </tt>
+<a name="ProjectionBaseClass.eye_2_clip"></a><div id="ProjectionBaseClass.eye_2_clip-def"><a name="L877"></a><tt class="py-lineno"> 877</tt> <a class="py-toggle" href="#" id="ProjectionBaseClass.eye_2_clip-toggle" onclick="return toggle('ProjectionBaseClass.eye_2_clip');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.Core.ProjectionBaseClass-class.html#eye_2_clip">eye_2_clip</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt [...]
+</div><div id="ProjectionBaseClass.eye_2_clip-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ProjectionBaseClass.eye_2_clip-expanded"><a name="L878"></a><tt class="py-lineno"> 878</tt>  <tt class="py-line">        <tt class="py-docstring">"""Transform eye coordinates to clip coordinates"""</tt> </tt>
+<a name="L879"></a><tt class="py-lineno"> 879</tt>  <tt class="py-line">        <tt class="py-name">m</tt> <tt class="py-op">=</tt> <tt class="py-name">Numeric</tt><tt class="py-op">.</tt><tt class="py-name">array</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">matrix</tt><tt class="py-op">)</tt> </tt>
+<a name="L880"></a><tt class="py-lineno"> 880</tt>  <tt class="py-line">        <tt class="py-name">v</tt> <tt class="py-op">=</tt> <tt class="py-name">Numeric</tt><tt class="py-op">.</tt><tt class="py-name">array</tt><tt class="py-op">(</tt><tt class="py-name">eye_coords_vertex</tt><tt class="py-op">)</tt> </tt>
+<a name="L881"></a><tt class="py-lineno"> 881</tt>  <tt class="py-line">        <tt class="py-name">homog</tt> <tt class="py-op">=</tt> <tt id="link-269" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-269', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-270" class="py-name"><a title="VisionEgg.ThreeDeeMath" class="py-name" href="#" onclick="return doclink('link-270', 'ThreeDeeMath', 'link-8');">ThreeDeeMath</a> [...]
+<a name="L882"></a><tt class="py-lineno"> 882</tt>  <tt class="py-line">        <tt class="py-name">r</tt> <tt class="py-op">=</tt> <tt class="py-name">numpy</tt><tt class="py-op">.</tt><tt class="py-name">dot</tt><tt class="py-op">(</tt><tt class="py-name">homog</tt><tt class="py-op">,</tt><tt class="py-name">m</tt><tt class="py-op">)</tt> </tt>
+<a name="L883"></a><tt class="py-lineno"> 883</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">homog</tt><tt class="py-op">.</tt><tt class="py-name">shape</tt><tt class="py-op">)</tt> <tt class="py-op">></tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">v</tt><tt class="py-op">.</tt><tt class="py-name">shape</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L884"></a><tt class="py-lineno"> 884</tt>  <tt class="py-line">            <tt class="py-name">r</tt> <tt class="py-op">=</tt> <tt class="py-name">Numeric</tt><tt class="py-op">.</tt><tt class="py-name">reshape</tt><tt class="py-op">(</tt><tt class="py-name">r</tt><tt class="py-op">,</tt><tt class="py-op">(</tt><tt class="py-number">4</tt><tt class="py-op">,</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L885"></a><tt class="py-lineno"> 885</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">r</tt> </tt>
+</div><a name="ProjectionBaseClass.clip_2_norm_device"></a><div id="ProjectionBaseClass.clip_2_norm_device-def"><a name="L886"></a><tt class="py-lineno"> 886</tt> <a class="py-toggle" href="#" id="ProjectionBaseClass.clip_2_norm_device-toggle" onclick="return toggle('ProjectionBaseClass.clip_2_norm_device');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.Core.ProjectionBaseClass-class.html#clip_2_norm_device">clip_2_norm_device</a><tt [...]
+</div><div id="ProjectionBaseClass.clip_2_norm_device-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ProjectionBaseClass.clip_2_norm_device-expanded"><a name="L887"></a><tt class="py-lineno"> 887</tt>  <tt class="py-line">        <tt class="py-docstring">"""Transform clip coordinates to normalized device coordinates"""</tt> </tt>
+<a name="L888"></a><tt class="py-lineno"> 888</tt>  <tt class="py-line">        <tt class="py-name">v</tt> <tt class="py-op">=</tt> <tt class="py-name">numpy</tt><tt class="py-op">.</tt><tt class="py-name">array</tt><tt class="py-op">(</tt><tt class="py-name">clip_coords_vertex</tt><tt class="py-op">)</tt> </tt>
+<a name="L889"></a><tt class="py-lineno"> 889</tt>  <tt class="py-line">        <tt class="py-name">homog</tt> <tt class="py-op">=</tt> <tt id="link-272" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-272', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-273" class="py-name"><a title="VisionEgg.ThreeDeeMath" class="py-name" href="#" onclick="return doclink('link-273', 'ThreeDeeMath', 'link-8');">ThreeDeeMath</a> [...]
+<a name="L890"></a><tt class="py-lineno"> 890</tt>  <tt class="py-line">        <tt class="py-name">err</tt><tt class="py-op">=</tt><tt class="py-name">numpy</tt><tt class="py-op">.</tt><tt class="py-name">seterr</tt><tt class="py-op">(</tt><tt class="py-name">all</tt><tt class="py-op">=</tt><tt class="py-string">'ignore'</tt><tt class="py-op">)</tt> </tt>
+<a name="L891"></a><tt class="py-lineno"> 891</tt>  <tt class="py-line">        <tt class="py-name">r</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">homog</tt><tt class="py-op">/</tt><tt class="py-name">homog</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">,</tt><tt class="py-number">3</tt><tt class="py-op">,</tt><tt class="py-name">numpy</tt><tt class="py-op">.</tt><tt class="py-name">newaxis</tt><tt class="py-op">]</tt><tt class="py-op"> [...]
+<a name="L892"></a><tt class="py-lineno"> 892</tt>  <tt class="py-line">        <tt class="py-name">numpy</tt><tt class="py-op">.</tt><tt class="py-name">seterr</tt><tt class="py-op">(</tt><tt class="py-op">**</tt><tt class="py-name">err</tt><tt class="py-op">)</tt> </tt>
+<a name="L893"></a><tt class="py-lineno"> 893</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">homog</tt><tt class="py-op">.</tt><tt class="py-name">shape</tt><tt class="py-op">)</tt> <tt class="py-op">></tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">v</tt><tt class="py-op">.</tt><tt class="py-name">shape</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L894"></a><tt class="py-lineno"> 894</tt>  <tt class="py-line">            <tt class="py-name">r</tt> <tt class="py-op">=</tt> <tt class="py-name">Numeric</tt><tt class="py-op">.</tt><tt class="py-name">reshape</tt><tt class="py-op">(</tt><tt class="py-name">r</tt><tt class="py-op">,</tt><tt class="py-op">(</tt><tt class="py-number">3</tt><tt class="py-op">,</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L895"></a><tt class="py-lineno"> 895</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">r</tt> </tt>
+</div><a name="ProjectionBaseClass.eye_2_norm_device"></a><div id="ProjectionBaseClass.eye_2_norm_device-def"><a name="L896"></a><tt class="py-lineno"> 896</tt> <a class="py-toggle" href="#" id="ProjectionBaseClass.eye_2_norm_device-toggle" onclick="return toggle('ProjectionBaseClass.eye_2_norm_device');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.Core.ProjectionBaseClass-class.html#eye_2_norm_device">eye_2_norm_device</a><tt class [...]
+</div><div id="ProjectionBaseClass.eye_2_norm_device-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ProjectionBaseClass.eye_2_norm_device-expanded"><a name="L897"></a><tt class="py-lineno"> 897</tt>  <tt class="py-line">        <tt class="py-docstring">"""Transform eye coordinates to normalized device coordinates"""</tt> </tt>
+<a name="L898"></a><tt class="py-lineno"> 898</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-275" class="py-name" targets="Method VisionEgg.Core.ProjectionBaseClass.clip_2_norm_device()=VisionEgg.Core.ProjectionBaseClass-class.html#clip_2_norm_device"><a title="VisionEgg.Core.ProjectionBaseClass.clip_2_norm_device" class="py-name" href="#" onclick="return doclink('link-275', 'clip_2_norm_device', 'lin [...]
+</div><a name="L899"></a><tt class="py-lineno"> 899</tt>  <tt class="py-line"> </tt>
+<a name="ProjectionBaseClass.apply_to_vertex"></a><div id="ProjectionBaseClass.apply_to_vertex-def"><a name="L900"></a><tt class="py-lineno"> 900</tt> <a class="py-toggle" href="#" id="ProjectionBaseClass.apply_to_vertex-toggle" onclick="return toggle('ProjectionBaseClass.apply_to_vertex');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.Core.ProjectionBaseClass-class.html#apply_to_vertex">apply_to_vertex</a><tt class="py-op">(</tt><tt [...]
+</div><div id="ProjectionBaseClass.apply_to_vertex-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ProjectionBaseClass.apply_to_vertex-expanded"><a name="L901"></a><tt class="py-lineno"> 901</tt>  <tt class="py-line">        <tt class="py-docstring">"""Perform multiplication on vertex to get transformed result"""</tt> </tt>
+<a name="L902"></a><tt class="py-lineno"> 902</tt>  <tt class="py-line">        <tt class="py-name">M</tt> <tt class="py-op">=</tt> <tt id="link-277" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-277', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-278" class="py-name"><a title="VisionEgg.ThreeDeeMath" class="py-name" href="#" onclick="return doclink('link-278', 'ThreeDeeMath', 'link-8');">ThreeDeeMath</a></tt [...]
+<a name="L903"></a><tt class="py-lineno"> 903</tt>  <tt class="py-line">        <tt class="py-name">r</tt> <tt class="py-op">=</tt> <tt class="py-name">M</tt><tt class="py-op">.</tt><tt id="link-280" class="py-name" targets="Method VisionEgg.ThreeDeeMath.TransformMatrix.transform_vertices()=VisionEgg.ThreeDeeMath.TransformMatrix-class.html#transform_vertices"><a title="VisionEgg.ThreeDeeMath.TransformMatrix.transform_vertices" class="py-name" href="#" onclick="return doclink('link-280',  [...]
+<a name="L904"></a><tt class="py-lineno"> 904</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">r</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt>
+</div><a name="L905"></a><tt class="py-lineno"> 905</tt>  <tt class="py-line"> </tt>
+<a name="ProjectionBaseClass.apply_to_vertices"></a><div id="ProjectionBaseClass.apply_to_vertices-def"><a name="L906"></a><tt class="py-lineno"> 906</tt> <a class="py-toggle" href="#" id="ProjectionBaseClass.apply_to_vertices-toggle" onclick="return toggle('ProjectionBaseClass.apply_to_vertices');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.Core.ProjectionBaseClass-class.html#apply_to_vertices">apply_to_vertices</a><tt class="py-o [...]
+</div><div id="ProjectionBaseClass.apply_to_vertices-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ProjectionBaseClass.apply_to_vertices-expanded"><a name="L907"></a><tt class="py-lineno"> 907</tt>  <tt class="py-line">        <tt class="py-docstring">"""Perform multiplication on vertex to get transformed result"""</tt> </tt>
+<a name="L908"></a><tt class="py-lineno"> 908</tt>  <tt class="py-line">        <tt class="py-name">M</tt> <tt class="py-op">=</tt> <tt id="link-281" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-281', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-282" class="py-name"><a title="VisionEgg.ThreeDeeMath" class="py-name" href="#" onclick="return doclink('link-282', 'ThreeDeeMath', 'link-8');">ThreeDeeMath</a></tt [...]
+<a name="L909"></a><tt class="py-lineno"> 909</tt>  <tt class="py-line">        <tt class="py-name">r</tt> <tt class="py-op">=</tt> <tt class="py-name">M</tt><tt class="py-op">.</tt><tt id="link-284" class="py-name"><a title="VisionEgg.ThreeDeeMath.TransformMatrix.transform_vertices" class="py-name" href="#" onclick="return doclink('link-284', 'transform_vertices', 'link-280');">transform_vertices</a></tt><tt class="py-op">(</tt><tt class="py-name">vertices</tt><tt class="py-op">)</tt> </tt>
+<a name="L910"></a><tt class="py-lineno"> 910</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">r</tt> </tt>
+</div></div><a name="L911"></a><tt class="py-lineno"> 911</tt>  <tt class="py-line"> </tt>
+<a name="Projection"></a><div id="Projection-def"><a name="L912"></a><tt class="py-lineno"> 912</tt> <a class="py-toggle" href="#" id="Projection-toggle" onclick="return toggle('Projection');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.Core.Projection-class.html">Projection</a><tt class="py-op">(</tt><tt class="py-base-class">ProjectionBaseClass</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Projection-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="Projection-expanded"><a name="L913"></a><tt class="py-lineno"> 913</tt>  <tt class="py-line">    <tt class="py-docstring">"""for use of OpenGL PROJECTION_MATRIX</tt> </tt>
+<a name="L914"></a><tt class="py-lineno"> 914</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L915"></a><tt class="py-lineno"> 915</tt>  <tt class="py-line"><tt class="py-docstring">    Parameters</tt> </tt>
+<a name="L916"></a><tt class="py-lineno"> 916</tt>  <tt class="py-line"><tt class="py-docstring">    ==========</tt> </tt>
+<a name="L917"></a><tt class="py-lineno"> 917</tt>  <tt class="py-line"><tt class="py-docstring">    matrix -- matrix specifying projection (Sequence4x4 of Real)</tt> </tt>
+<a name="L918"></a><tt class="py-lineno"> 918</tt>  <tt class="py-line"><tt class="py-docstring">              Default: [[1 0 0 0]</tt> </tt>
+<a name="L919"></a><tt class="py-lineno"> 919</tt>  <tt class="py-line"><tt class="py-docstring">                        [0 1 0 0]</tt> </tt>
+<a name="L920"></a><tt class="py-lineno"> 920</tt>  <tt class="py-line"><tt class="py-docstring">                        [0 0 1 0]</tt> </tt>
+<a name="L921"></a><tt class="py-lineno"> 921</tt>  <tt class="py-line"><tt class="py-docstring">                        [0 0 0 1]]</tt> </tt>
+<a name="L922"></a><tt class="py-lineno"> 922</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L923"></a><tt class="py-lineno"> 923</tt>  <tt class="py-line"> </tt>
+<a name="Projection.__init__"></a><div id="Projection.__init__-def"><a name="L924"></a><tt class="py-lineno"> 924</tt> <a class="py-toggle" href="#" id="Projection.__init__-toggle" onclick="return toggle('Projection.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.Core.Projection-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt><tt class="py-op">*</tt><tt class="p [...]
+</div><div id="Projection.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Projection.__init__-expanded"><a name="L925"></a><tt class="py-lineno"> 925</tt>  <tt class="py-line">        <tt id="link-285" class="py-name" targets="Class VisionEgg.Core.ProjectionBaseClass=VisionEgg.Core.ProjectionBaseClass-class.html"><a title="VisionEgg.Core.ProjectionBaseClass" class="py-name" href="#" onclick="return doclink('link-285', 'ProjectionBaseClass', 'link-285 [...]
+VisionEgg.Configuration.Config.__init__
+VisionEgg.Core.FixationSpot.__init__
+VisionEgg.Core.FrameTimer.__init__
+VisionEgg.Core.ModelView.__init__
+VisionEgg.Core.OrthographicProjection.__init__
+VisionEgg.Core.OrthographicProjectionNoZClip.__init__
+VisionEgg.Core.PerspectiveProjection.__init__
+VisionEgg.Core.Projection.__init__
+VisionEgg.Core.ProjectionBaseClass.__init__
+VisionEgg.Core.Screen.__init__
+VisionEgg.Core.SimplePerspectiveProjection.__init__
+VisionEgg.Core.Stimulus.__init__
+VisionEgg.Core.Viewport.__init__
+VisionEgg.Daq.Channel.__init__
+VisionEgg.Daq.DaqMode.__init__
+VisionEgg.Daq.Device.__init__
+VisionEgg.Daq.Functionality.__init__
+VisionEgg.Daq.SignalType.__init__
+VisionEgg.DaqKeyboard.KeyboardTriggerInController.__init__
+VisionEgg.DaqLPT.LPTChannel.__init__
+VisionEgg.DaqLPT.LPTDevice.__init__
+VisionEgg.DaqLPT.LPTTriggerInController.__init__
+VisionEgg.DaqLPT.LPTTriggerOutController.__init__
+VisionEgg.Deprecated.Message.__init__
+VisionEgg.Dots.DotArea2D.__init__
+VisionEgg.FlowControl.ConstantController.__init__
+VisionEgg.FlowControl.Controller.__init__
+VisionEgg.FlowControl.EncapsulatedController.__init__
+VisionEgg.FlowControl.EvalStringController.__init__
+VisionEgg.FlowControl.ExecStringController.__init__
+VisionEgg.FlowControl.FunctionController.__init__
+VisionEgg.FlowControl.Presentation.__init__
+VisionEgg.GLTrace.Wrapper.__init__
+VisionEgg.GUI.AppWindow.__init__
+VisionEgg.GUI.GetKeypressDialog.__init__
+VisionEgg.GUI.GraphicsConfigurationWindow.__init__
+VisionEgg.GUI.InfoFrame.__init__
+VisionEgg.GUI.ProgressBar.__init__
+VisionEgg.GUI.ToplevelDialog.__init__
+VisionEgg.Gratings.SinGrating2D.__init__
+VisionEgg.Gratings.SinGrating3D.__init__
+VisionEgg.MoreStimuli.Arrow.__init__
+VisionEgg.MoreStimuli.FilledCircle.__init__
+VisionEgg.MoreStimuli.Rectangle3D.__init__
+VisionEgg.MoreStimuli.Target2D.__init__
+VisionEgg.ParameterTypes.AnyOf.__init__
+VisionEgg.ParameterTypes.Instance.__init__
+VisionEgg.ParameterTypes.Sequence.__init__
+VisionEgg.ParameterTypes.SubClass.__init__
+VisionEgg.PyroApps.AST_ext.AST_Visitor.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalMetaParameters.__init__
+VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.__init__
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.__init__
+VisionEgg.PyroApps.DropinGUI.DropinMetaParameters.__init__
+VisionEgg.PyroApps.DropinServer.DropinMetaController.__init__
+VisionEgg.PyroApps.EPhysGUI.AppWindow.__init__
+VisionEgg.PyroApps.EPhysGUI.BarButton.__init__
+VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase.__init__
+VisionEgg.PyroApps.EPhysGUI.GammaFrame.__init__
+VisionEgg.PyroApps.EPhysGUI.ImageSequenceLauncher.__init__
+VisionEgg.PyroApps.EPhysGUI.Loop.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopContainedObject.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopParamDialog.__init__
+VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.__init__
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.__init__
+VisionEgg.PyroApps.EPhysServer.EPhysServer.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingMetaParameters.__init__
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.GridGUI.GridControlFrame.__init__
+VisionEgg.PyroApps.GridGUI.GridMetaParameters.__init__
+VisionEgg.PyroApps.GridServer.GridMetaController.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetMetaParameters.__init__
+VisionEgg.PyroApps.MouseTargetServer.MousePositionController.__init__
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetOrientationController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetPositionController.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.CallbackEntry.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionParameters.__init__
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingMetaParameters.__init__
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumMetaParameters.__init__
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.__init__
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.__init__
+VisionEgg.PyroApps.TargetGUI.TargetMetaParameters.__init__
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.__init__
+VisionEgg.PyroClient.PyroClient.__init__
+VisionEgg.PyroHelpers.PyroConstantController.__init__
+VisionEgg.PyroHelpers.PyroEncapsulatedController.__init__
+VisionEgg.PyroHelpers.PyroEvalStringController.__init__
+VisionEgg.PyroHelpers.PyroExecStringController.__init__
+VisionEgg.PyroHelpers.PyroListenController.__init__
+VisionEgg.PyroHelpers.PyroLocalDictController.__init__
+VisionEgg.PyroHelpers.PyroServer.__init__
+VisionEgg.QuickTime.MovieTexture.__init__
+VisionEgg.ResponseControl.KeyboardResponseController.__init__
+VisionEgg.ResponseControl.ResponseController.__init__
+VisionEgg.SphereMap.AzElGrid.__init__
+VisionEgg.SphereMap.SphereGrating.__init__
+VisionEgg.SphereMap.SphereMap.__init__
+VisionEgg.SphereMap.SphereWindow.__init__
+VisionEgg.TCPController.SocketListenController.__init__
+VisionEgg.TCPController.TCPController.__init__
+VisionEgg.TCPController.TCPServer.__init__
+VisionEgg.Text.BitmapText.__init__
+VisionEgg.Text.GlutTextBase.__init__
+VisionEgg.Text.StrokeText.__init__
+VisionEgg.Text.Text.__init__
+VisionEgg.Textures.FixationCross.__init__
+VisionEgg.Textures.Mask2D.__init__
+VisionEgg.Textures.SpinningDrum.__init__
+VisionEgg.Textures.Texture.__init__
+VisionEgg.Textures.TextureFromFile.__init__
+VisionEgg.Textures.TextureObject.__init__
+VisionEgg.Textures.TextureStimulusBaseClass.__init__
+VisionEgg.ThreeDeeMath.TransformMatrix.__init__
+VisionEgg.WrappedText.WrappedText.__init__
+VisionEgg.qtmovie.Movie.__init__
+VisionEgg.qtmovie.Rect.__init__" class="py-name" href="#" onclick="return doclink('link-286', '__init__', 'link-44');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt><tt class="py-op">*</tt><tt class="py-name">args</tt><tt class="py-op">,</tt><tt class="py-op">**</tt><tt class="py-name">kw</tt><tt class="py-op">)</tt> </tt>
+<a name="L926"></a><tt class="py-lineno"> 926</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">projection_type</tt> <tt class="py-op">=</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_PROJECTION</tt> </tt>
+</div></div><a name="L927"></a><tt class="py-lineno"> 927</tt>  <tt class="py-line"> </tt>
+<a name="ModelView"></a><div id="ModelView-def"><a name="L928"></a><tt class="py-lineno"> 928</tt> <a class="py-toggle" href="#" id="ModelView-toggle" onclick="return toggle('ModelView');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.Core.ModelView-class.html">ModelView</a><tt class="py-op">(</tt><tt class="py-base-class">ProjectionBaseClass</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ModelView-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="ModelView-expanded"><a name="L929"></a><tt class="py-lineno"> 929</tt>  <tt class="py-line">    <tt class="py-docstring">"""for use of OpenGL MODELVIEW_MATRIX</tt> </tt>
+<a name="L930"></a><tt class="py-lineno"> 930</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L931"></a><tt class="py-lineno"> 931</tt>  <tt class="py-line"><tt class="py-docstring">    Parameters</tt> </tt>
+<a name="L932"></a><tt class="py-lineno"> 932</tt>  <tt class="py-line"><tt class="py-docstring">    ==========</tt> </tt>
+<a name="L933"></a><tt class="py-lineno"> 933</tt>  <tt class="py-line"><tt class="py-docstring">    matrix -- matrix specifying projection (Sequence4x4 of Real)</tt> </tt>
+<a name="L934"></a><tt class="py-lineno"> 934</tt>  <tt class="py-line"><tt class="py-docstring">              Default: [[1 0 0 0]</tt> </tt>
+<a name="L935"></a><tt class="py-lineno"> 935</tt>  <tt class="py-line"><tt class="py-docstring">                        [0 1 0 0]</tt> </tt>
+<a name="L936"></a><tt class="py-lineno"> 936</tt>  <tt class="py-line"><tt class="py-docstring">                        [0 0 1 0]</tt> </tt>
+<a name="L937"></a><tt class="py-lineno"> 937</tt>  <tt class="py-line"><tt class="py-docstring">                        [0 0 0 1]]</tt> </tt>
+<a name="L938"></a><tt class="py-lineno"> 938</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L939"></a><tt class="py-lineno"> 939</tt>  <tt class="py-line"> </tt>
+<a name="ModelView.__init__"></a><div id="ModelView.__init__-def"><a name="L940"></a><tt class="py-lineno"> 940</tt> <a class="py-toggle" href="#" id="ModelView.__init__-toggle" onclick="return toggle('ModelView.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.Core.ModelView-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt><tt class="py-op">*</tt><tt class="py-par [...]
+</div><div id="ModelView.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ModelView.__init__-expanded"><a name="L941"></a><tt class="py-lineno"> 941</tt>  <tt class="py-line">        <tt id="link-287" class="py-name"><a title="VisionEgg.Core.ProjectionBaseClass" class="py-name" href="#" onclick="return doclink('link-287', 'ProjectionBaseClass', 'link-285');">ProjectionBaseClass</a></tt><tt class="py-op">.</tt><tt id="link-288" class="py-name"><a title [...]
+VisionEgg.Configuration.Config.__init__
+VisionEgg.Core.FixationSpot.__init__
+VisionEgg.Core.FrameTimer.__init__
+VisionEgg.Core.ModelView.__init__
+VisionEgg.Core.OrthographicProjection.__init__
+VisionEgg.Core.OrthographicProjectionNoZClip.__init__
+VisionEgg.Core.PerspectiveProjection.__init__
+VisionEgg.Core.Projection.__init__
+VisionEgg.Core.ProjectionBaseClass.__init__
+VisionEgg.Core.Screen.__init__
+VisionEgg.Core.SimplePerspectiveProjection.__init__
+VisionEgg.Core.Stimulus.__init__
+VisionEgg.Core.Viewport.__init__
+VisionEgg.Daq.Channel.__init__
+VisionEgg.Daq.DaqMode.__init__
+VisionEgg.Daq.Device.__init__
+VisionEgg.Daq.Functionality.__init__
+VisionEgg.Daq.SignalType.__init__
+VisionEgg.DaqKeyboard.KeyboardTriggerInController.__init__
+VisionEgg.DaqLPT.LPTChannel.__init__
+VisionEgg.DaqLPT.LPTDevice.__init__
+VisionEgg.DaqLPT.LPTTriggerInController.__init__
+VisionEgg.DaqLPT.LPTTriggerOutController.__init__
+VisionEgg.Deprecated.Message.__init__
+VisionEgg.Dots.DotArea2D.__init__
+VisionEgg.FlowControl.ConstantController.__init__
+VisionEgg.FlowControl.Controller.__init__
+VisionEgg.FlowControl.EncapsulatedController.__init__
+VisionEgg.FlowControl.EvalStringController.__init__
+VisionEgg.FlowControl.ExecStringController.__init__
+VisionEgg.FlowControl.FunctionController.__init__
+VisionEgg.FlowControl.Presentation.__init__
+VisionEgg.GLTrace.Wrapper.__init__
+VisionEgg.GUI.AppWindow.__init__
+VisionEgg.GUI.GetKeypressDialog.__init__
+VisionEgg.GUI.GraphicsConfigurationWindow.__init__
+VisionEgg.GUI.InfoFrame.__init__
+VisionEgg.GUI.ProgressBar.__init__
+VisionEgg.GUI.ToplevelDialog.__init__
+VisionEgg.Gratings.SinGrating2D.__init__
+VisionEgg.Gratings.SinGrating3D.__init__
+VisionEgg.MoreStimuli.Arrow.__init__
+VisionEgg.MoreStimuli.FilledCircle.__init__
+VisionEgg.MoreStimuli.Rectangle3D.__init__
+VisionEgg.MoreStimuli.Target2D.__init__
+VisionEgg.ParameterTypes.AnyOf.__init__
+VisionEgg.ParameterTypes.Instance.__init__
+VisionEgg.ParameterTypes.Sequence.__init__
+VisionEgg.ParameterTypes.SubClass.__init__
+VisionEgg.PyroApps.AST_ext.AST_Visitor.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalMetaParameters.__init__
+VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.__init__
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.__init__
+VisionEgg.PyroApps.DropinGUI.DropinMetaParameters.__init__
+VisionEgg.PyroApps.DropinServer.DropinMetaController.__init__
+VisionEgg.PyroApps.EPhysGUI.AppWindow.__init__
+VisionEgg.PyroApps.EPhysGUI.BarButton.__init__
+VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase.__init__
+VisionEgg.PyroApps.EPhysGUI.GammaFrame.__init__
+VisionEgg.PyroApps.EPhysGUI.ImageSequenceLauncher.__init__
+VisionEgg.PyroApps.EPhysGUI.Loop.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopContainedObject.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopParamDialog.__init__
+VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.__init__
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.__init__
+VisionEgg.PyroApps.EPhysServer.EPhysServer.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingMetaParameters.__init__
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.GridGUI.GridControlFrame.__init__
+VisionEgg.PyroApps.GridGUI.GridMetaParameters.__init__
+VisionEgg.PyroApps.GridServer.GridMetaController.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetMetaParameters.__init__
+VisionEgg.PyroApps.MouseTargetServer.MousePositionController.__init__
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetOrientationController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetPositionController.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.CallbackEntry.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionParameters.__init__
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingMetaParameters.__init__
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumMetaParameters.__init__
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.__init__
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.__init__
+VisionEgg.PyroApps.TargetGUI.TargetMetaParameters.__init__
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.__init__
+VisionEgg.PyroClient.PyroClient.__init__
+VisionEgg.PyroHelpers.PyroConstantController.__init__
+VisionEgg.PyroHelpers.PyroEncapsulatedController.__init__
+VisionEgg.PyroHelpers.PyroEvalStringController.__init__
+VisionEgg.PyroHelpers.PyroExecStringController.__init__
+VisionEgg.PyroHelpers.PyroListenController.__init__
+VisionEgg.PyroHelpers.PyroLocalDictController.__init__
+VisionEgg.PyroHelpers.PyroServer.__init__
+VisionEgg.QuickTime.MovieTexture.__init__
+VisionEgg.ResponseControl.KeyboardResponseController.__init__
+VisionEgg.ResponseControl.ResponseController.__init__
+VisionEgg.SphereMap.AzElGrid.__init__
+VisionEgg.SphereMap.SphereGrating.__init__
+VisionEgg.SphereMap.SphereMap.__init__
+VisionEgg.SphereMap.SphereWindow.__init__
+VisionEgg.TCPController.SocketListenController.__init__
+VisionEgg.TCPController.TCPController.__init__
+VisionEgg.TCPController.TCPServer.__init__
+VisionEgg.Text.BitmapText.__init__
+VisionEgg.Text.GlutTextBase.__init__
+VisionEgg.Text.StrokeText.__init__
+VisionEgg.Text.Text.__init__
+VisionEgg.Textures.FixationCross.__init__
+VisionEgg.Textures.Mask2D.__init__
+VisionEgg.Textures.SpinningDrum.__init__
+VisionEgg.Textures.Texture.__init__
+VisionEgg.Textures.TextureFromFile.__init__
+VisionEgg.Textures.TextureObject.__init__
+VisionEgg.Textures.TextureStimulusBaseClass.__init__
+VisionEgg.ThreeDeeMath.TransformMatrix.__init__
+VisionEgg.WrappedText.WrappedText.__init__
+VisionEgg.qtmovie.Movie.__init__
+VisionEgg.qtmovie.Rect.__init__" class="py-name" href="#" onclick="return doclink('link-288', '__init__', 'link-44');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt><tt class="py-op">*</tt><tt class="py-name">args</tt><tt class="py-op">,</tt><tt class="py-op">**</tt><tt class="py-name">kw</tt><tt class="py-op">)</tt> </tt>
+<a name="L942"></a><tt class="py-lineno"> 942</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">projection_type</tt> <tt class="py-op">=</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_MODELVIEW</tt> </tt>
+</div></div><a name="L943"></a><tt class="py-lineno"> 943</tt>  <tt class="py-line"> </tt>
+<a name="OrthographicProjection"></a><div id="OrthographicProjection-def"><a name="L944"></a><tt class="py-lineno"> 944</tt> <a class="py-toggle" href="#" id="OrthographicProjection-toggle" onclick="return toggle('OrthographicProjection');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.Core.OrthographicProjection-class.html">OrthographicProjection</a><tt class="py-op">(</tt><tt class="py-base-class">Projection</tt><tt class="py-op">)</t [...]
+</div><div id="OrthographicProjection-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="OrthographicProjection-expanded"><a name="L945"></a><tt class="py-lineno"> 945</tt>  <tt class="py-line">    <tt class="py-docstring">"""An orthographic projection.</tt> </tt>
+<a name="L946"></a><tt class="py-lineno"> 946</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L947"></a><tt class="py-lineno"> 947</tt>  <tt class="py-line"><tt class="py-docstring">    Parameters</tt> </tt>
+<a name="L948"></a><tt class="py-lineno"> 948</tt>  <tt class="py-line"><tt class="py-docstring">    ==========</tt> </tt>
+<a name="L949"></a><tt class="py-lineno"> 949</tt>  <tt class="py-line"><tt class="py-docstring">    matrix -- matrix specifying projection (Sequence4x4 of Real)</tt> </tt>
+<a name="L950"></a><tt class="py-lineno"> 950</tt>  <tt class="py-line"><tt class="py-docstring">              Default: [[1 0 0 0]</tt> </tt>
+<a name="L951"></a><tt class="py-lineno"> 951</tt>  <tt class="py-line"><tt class="py-docstring">                        [0 1 0 0]</tt> </tt>
+<a name="L952"></a><tt class="py-lineno"> 952</tt>  <tt class="py-line"><tt class="py-docstring">                        [0 0 1 0]</tt> </tt>
+<a name="L953"></a><tt class="py-lineno"> 953</tt>  <tt class="py-line"><tt class="py-docstring">                        [0 0 0 1]]</tt> </tt>
+<a name="L954"></a><tt class="py-lineno"> 954</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L955"></a><tt class="py-lineno"> 955</tt>  <tt class="py-line"> </tt>
+<a name="OrthographicProjection.__init__"></a><div id="OrthographicProjection.__init__-def"><a name="L956"></a><tt class="py-lineno"> 956</tt> <a class="py-toggle" href="#" id="OrthographicProjection.__init__-toggle" onclick="return toggle('OrthographicProjection.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.Core.OrthographicProjection-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt> [...]
+</div><div id="OrthographicProjection.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="OrthographicProjection.__init__-expanded"><a name="L957"></a><tt class="py-lineno"> 957</tt>  <tt class="py-line">        <tt class="py-docstring">"""Create an orthographic projection.</tt> </tt>
+<a name="L958"></a><tt class="py-lineno"> 958</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L959"></a><tt class="py-lineno"> 959</tt>  <tt class="py-line"><tt class="py-docstring">        Defaults to map x eye coordinates in the range [0,640], y eye</tt> </tt>
+<a name="L960"></a><tt class="py-lineno"> 960</tt>  <tt class="py-line"><tt class="py-docstring">        coordinates [0,480] and clip coordinates [0,1] to [0,1].</tt> </tt>
+<a name="L961"></a><tt class="py-lineno"> 961</tt>  <tt class="py-line"><tt class="py-docstring">        Therefore, if the viewport is 640 x 480, eye coordinates</tt> </tt>
+<a name="L962"></a><tt class="py-lineno"> 962</tt>  <tt class="py-line"><tt class="py-docstring">        correspond 1:1 with window (pixel) coordinates.  Only points</tt> </tt>
+<a name="L963"></a><tt class="py-lineno"> 963</tt>  <tt class="py-line"><tt class="py-docstring">        between these clipping planes will be displayed.</tt> </tt>
+<a name="L964"></a><tt class="py-lineno"> 964</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L965"></a><tt class="py-lineno"> 965</tt>  <tt class="py-line"> </tt>
+<a name="L966"></a><tt class="py-lineno"> 966</tt>  <tt class="py-line">        <tt class="py-comment"># using Numeric (from the OpenGL spec):</tt> </tt>
+<a name="L967"></a><tt class="py-lineno"> 967</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">matrix</tt> <tt class="py-op">=</tt> <tt class="py-name">Numeric</tt><tt class="py-op">.</tt><tt class="py-name">array</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-op">[</tt> <tt class="py-number">2.</tt><tt class="py-op">/</tt><tt class="py-op">(</tt><tt id="link-289" class="py-name"><a title="VisionEgg.PyroApps.MouseTargetServer.right" cla [...]
+<a name="L968"></a><tt class="py-lineno"> 968</tt>  <tt class="py-line">                                <tt class="py-op">[</tt> <tt class="py-number">0.</tt><tt class="py-op">,</tt>              <tt class="py-number">2.</tt><tt class="py-op">/</tt><tt class="py-op">(</tt><tt class="py-name">top</tt><tt class="py-op">-</tt><tt class="py-name">bottom</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-number">0.</tt><tt class="py-op">,</tt>                           <tt cla [...]
+<a name="L969"></a><tt class="py-lineno"> 969</tt>  <tt class="py-line">                                <tt class="py-op">[</tt> <tt class="py-number">0.</tt><tt class="py-op">,</tt>              <tt class="py-number">0.</tt><tt class="py-op">,</tt>              <tt class="py-op">-</tt><tt class="py-number">2.</tt><tt class="py-op">/</tt><tt class="py-op">(</tt><tt class="py-name">z_clip_far</tt><tt class="py-op">-</tt><tt class="py-name">z_clip_near</tt><tt class="py-op">)</tt><tt class [...]
+<a name="L970"></a><tt class="py-lineno"> 970</tt>  <tt class="py-line">                                <tt class="py-op">[</tt> <tt class="py-number">0.</tt><tt class="py-op">,</tt>              <tt class="py-number">0.</tt><tt class="py-op">,</tt>              <tt class="py-number">0.</tt><tt class="py-op">,</tt>                           <tt class="py-number">1.0</tt><tt class="py-op">]</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L971"></a><tt class="py-lineno"> 971</tt>  <tt class="py-line">        <tt class="py-name">matrix</tt> <tt class="py-op">=</tt> <tt class="py-name">Numeric</tt><tt class="py-op">.</tt><tt class="py-name">transpose</tt><tt class="py-op">(</tt><tt class="py-name">matrix</tt><tt class="py-op">)</tt> <tt class="py-comment"># convert to OpenGL format</tt> </tt>
+<a name="L972"></a><tt class="py-lineno"> 972</tt>  <tt class="py-line"> </tt>
+<a name="L973"></a><tt class="py-lineno"> 973</tt>  <tt class="py-line">        <tt class="py-comment">## same as above, but use OpenGL</tt> </tt>
+<a name="L974"></a><tt class="py-lineno"> 974</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment">#gl.glMatrixMode(gl.GL_PROJECTION)</tt> </tt>
+<a name="L975"></a><tt class="py-lineno"> 975</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment">#gl.glPushMatrix() # save current matrix</tt> </tt>
+<a name="L976"></a><tt class="py-lineno"> 976</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment">#gl.glLoadIdentity()</tt> </tt>
+<a name="L977"></a><tt class="py-lineno"> 977</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment">#gl.glOrtho(left,right,bottom,top,z_clip_near,z_clip_far)</tt> </tt>
+<a name="L978"></a><tt class="py-lineno"> 978</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment">#matrix = gl.glGetFloatv(gl.GL_PROJECTION_MATRIX)</tt> </tt>
+<a name="L979"></a><tt class="py-lineno"> 979</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment">#gl.glPopMatrix() # restore original matrix</tt> </tt>
+<a name="L980"></a><tt class="py-lineno"> 980</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L981"></a><tt class="py-lineno"> 981</tt>  <tt class="py-line">        <tt id="link-295" class="py-name" targets="Class VisionEgg.Core.Projection=VisionEgg.Core.Projection-class.html"><a title="VisionEgg.Core.Projection" class="py-name" href="#" onclick="return doclink('link-295', 'Projection', 'link-295');">Projection</a></tt><tt class="py-op">.</tt><tt id="link-296" class="py-name"><a title="VisionEgg.ClassWithParameters.__init__
+VisionEgg.Configuration.Config.__init__
+VisionEgg.Core.FixationSpot.__init__
+VisionEgg.Core.FrameTimer.__init__
+VisionEgg.Core.ModelView.__init__
+VisionEgg.Core.OrthographicProjection.__init__
+VisionEgg.Core.OrthographicProjectionNoZClip.__init__
+VisionEgg.Core.PerspectiveProjection.__init__
+VisionEgg.Core.Projection.__init__
+VisionEgg.Core.ProjectionBaseClass.__init__
+VisionEgg.Core.Screen.__init__
+VisionEgg.Core.SimplePerspectiveProjection.__init__
+VisionEgg.Core.Stimulus.__init__
+VisionEgg.Core.Viewport.__init__
+VisionEgg.Daq.Channel.__init__
+VisionEgg.Daq.DaqMode.__init__
+VisionEgg.Daq.Device.__init__
+VisionEgg.Daq.Functionality.__init__
+VisionEgg.Daq.SignalType.__init__
+VisionEgg.DaqKeyboard.KeyboardTriggerInController.__init__
+VisionEgg.DaqLPT.LPTChannel.__init__
+VisionEgg.DaqLPT.LPTDevice.__init__
+VisionEgg.DaqLPT.LPTTriggerInController.__init__
+VisionEgg.DaqLPT.LPTTriggerOutController.__init__
+VisionEgg.Deprecated.Message.__init__
+VisionEgg.Dots.DotArea2D.__init__
+VisionEgg.FlowControl.ConstantController.__init__
+VisionEgg.FlowControl.Controller.__init__
+VisionEgg.FlowControl.EncapsulatedController.__init__
+VisionEgg.FlowControl.EvalStringController.__init__
+VisionEgg.FlowControl.ExecStringController.__init__
+VisionEgg.FlowControl.FunctionController.__init__
+VisionEgg.FlowControl.Presentation.__init__
+VisionEgg.GLTrace.Wrapper.__init__
+VisionEgg.GUI.AppWindow.__init__
+VisionEgg.GUI.GetKeypressDialog.__init__
+VisionEgg.GUI.GraphicsConfigurationWindow.__init__
+VisionEgg.GUI.InfoFrame.__init__
+VisionEgg.GUI.ProgressBar.__init__
+VisionEgg.GUI.ToplevelDialog.__init__
+VisionEgg.Gratings.SinGrating2D.__init__
+VisionEgg.Gratings.SinGrating3D.__init__
+VisionEgg.MoreStimuli.Arrow.__init__
+VisionEgg.MoreStimuli.FilledCircle.__init__
+VisionEgg.MoreStimuli.Rectangle3D.__init__
+VisionEgg.MoreStimuli.Target2D.__init__
+VisionEgg.ParameterTypes.AnyOf.__init__
+VisionEgg.ParameterTypes.Instance.__init__
+VisionEgg.ParameterTypes.Sequence.__init__
+VisionEgg.ParameterTypes.SubClass.__init__
+VisionEgg.PyroApps.AST_ext.AST_Visitor.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalMetaParameters.__init__
+VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.__init__
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.__init__
+VisionEgg.PyroApps.DropinGUI.DropinMetaParameters.__init__
+VisionEgg.PyroApps.DropinServer.DropinMetaController.__init__
+VisionEgg.PyroApps.EPhysGUI.AppWindow.__init__
+VisionEgg.PyroApps.EPhysGUI.BarButton.__init__
+VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase.__init__
+VisionEgg.PyroApps.EPhysGUI.GammaFrame.__init__
+VisionEgg.PyroApps.EPhysGUI.ImageSequenceLauncher.__init__
+VisionEgg.PyroApps.EPhysGUI.Loop.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopContainedObject.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopParamDialog.__init__
+VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.__init__
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.__init__
+VisionEgg.PyroApps.EPhysServer.EPhysServer.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingMetaParameters.__init__
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.GridGUI.GridControlFrame.__init__
+VisionEgg.PyroApps.GridGUI.GridMetaParameters.__init__
+VisionEgg.PyroApps.GridServer.GridMetaController.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetMetaParameters.__init__
+VisionEgg.PyroApps.MouseTargetServer.MousePositionController.__init__
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetOrientationController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetPositionController.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.CallbackEntry.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionParameters.__init__
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingMetaParameters.__init__
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumMetaParameters.__init__
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.__init__
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.__init__
+VisionEgg.PyroApps.TargetGUI.TargetMetaParameters.__init__
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.__init__
+VisionEgg.PyroClient.PyroClient.__init__
+VisionEgg.PyroHelpers.PyroConstantController.__init__
+VisionEgg.PyroHelpers.PyroEncapsulatedController.__init__
+VisionEgg.PyroHelpers.PyroEvalStringController.__init__
+VisionEgg.PyroHelpers.PyroExecStringController.__init__
+VisionEgg.PyroHelpers.PyroListenController.__init__
+VisionEgg.PyroHelpers.PyroLocalDictController.__init__
+VisionEgg.PyroHelpers.PyroServer.__init__
+VisionEgg.QuickTime.MovieTexture.__init__
+VisionEgg.ResponseControl.KeyboardResponseController.__init__
+VisionEgg.ResponseControl.ResponseController.__init__
+VisionEgg.SphereMap.AzElGrid.__init__
+VisionEgg.SphereMap.SphereGrating.__init__
+VisionEgg.SphereMap.SphereMap.__init__
+VisionEgg.SphereMap.SphereWindow.__init__
+VisionEgg.TCPController.SocketListenController.__init__
+VisionEgg.TCPController.TCPController.__init__
+VisionEgg.TCPController.TCPServer.__init__
+VisionEgg.Text.BitmapText.__init__
+VisionEgg.Text.GlutTextBase.__init__
+VisionEgg.Text.StrokeText.__init__
+VisionEgg.Text.Text.__init__
+VisionEgg.Textures.FixationCross.__init__
+VisionEgg.Textures.Mask2D.__init__
+VisionEgg.Textures.SpinningDrum.__init__
+VisionEgg.Textures.Texture.__init__
+VisionEgg.Textures.TextureFromFile.__init__
+VisionEgg.Textures.TextureObject.__init__
+VisionEgg.Textures.TextureStimulusBaseClass.__init__
+VisionEgg.ThreeDeeMath.TransformMatrix.__init__
+VisionEgg.WrappedText.WrappedText.__init__
+VisionEgg.qtmovie.Movie.__init__
+VisionEgg.qtmovie.Rect.__init__" class="py-name" href="#" onclick="return doclink('link-296', '__init__', 'link-44');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt><tt class="py-op">**</tt><tt class="py-op">{</tt><tt class="py-string">'matrix'</tt><tt class="py-op">:</tt><tt class="py-name">matrix</tt><tt class="py-op">}</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L982"></a><tt class="py-lineno"> 982</tt>  <tt class="py-line"> </tt>
+<a name="OrthographicProjectionNoZClip"></a><div id="OrthographicProjectionNoZClip-def"><a name="L983"></a><tt class="py-lineno"> 983</tt> <a class="py-toggle" href="#" id="OrthographicProjectionNoZClip-toggle" onclick="return toggle('OrthographicProjectionNoZClip');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.Core.OrthographicProjectionNoZClip-class.html">OrthographicProjectionNoZClip</a><tt class="py-op">(</tt><tt class="py-base-cl [...]
+</div><div id="OrthographicProjectionNoZClip-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="OrthographicProjectionNoZClip-expanded"><a name="L984"></a><tt class="py-lineno"> 984</tt>  <tt class="py-line">    <tt class="py-docstring">"""An orthographic projection without Z clipping.</tt> </tt>
+<a name="L985"></a><tt class="py-lineno"> 985</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L986"></a><tt class="py-lineno"> 986</tt>  <tt class="py-line"><tt class="py-docstring">    Parameters</tt> </tt>
+<a name="L987"></a><tt class="py-lineno"> 987</tt>  <tt class="py-line"><tt class="py-docstring">    ==========</tt> </tt>
+<a name="L988"></a><tt class="py-lineno"> 988</tt>  <tt class="py-line"><tt class="py-docstring">    matrix -- matrix specifying projection (Sequence4x4 of Real)</tt> </tt>
+<a name="L989"></a><tt class="py-lineno"> 989</tt>  <tt class="py-line"><tt class="py-docstring">              Default: [[1 0 0 0]</tt> </tt>
+<a name="L990"></a><tt class="py-lineno"> 990</tt>  <tt class="py-line"><tt class="py-docstring">                        [0 1 0 0]</tt> </tt>
+<a name="L991"></a><tt class="py-lineno"> 991</tt>  <tt class="py-line"><tt class="py-docstring">                        [0 0 1 0]</tt> </tt>
+<a name="L992"></a><tt class="py-lineno"> 992</tt>  <tt class="py-line"><tt class="py-docstring">                        [0 0 0 1]]</tt> </tt>
+<a name="L993"></a><tt class="py-lineno"> 993</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L994"></a><tt class="py-lineno"> 994</tt>  <tt class="py-line"> </tt>
+<a name="OrthographicProjectionNoZClip.__init__"></a><div id="OrthographicProjectionNoZClip.__init__-def"><a name="L995"></a><tt class="py-lineno"> 995</tt> <a class="py-toggle" href="#" id="OrthographicProjectionNoZClip.__init__-toggle" onclick="return toggle('OrthographicProjectionNoZClip.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.Core.OrthographicProjectionNoZClip-class.html#__init__">__init__</a><tt class="py-op">( [...]
+</div><div id="OrthographicProjectionNoZClip.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="OrthographicProjectionNoZClip.__init__-expanded"><a name="L996"></a><tt class="py-lineno"> 996</tt>  <tt class="py-line">        <tt class="py-docstring">"""Create an orthographic projection without Z clipping.</tt> </tt>
+<a name="L997"></a><tt class="py-lineno"> 997</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L998"></a><tt class="py-lineno"> 998</tt>  <tt class="py-line"><tt class="py-docstring">        Defaults to map x eye coordinates in the range [0,640] and y</tt> </tt>
+<a name="L999"></a><tt class="py-lineno"> 999</tt>  <tt class="py-line"><tt class="py-docstring">        eye coordinates [0,480] -> [0,1].  Therefore, if the viewport</tt> </tt>
+<a name="L1000"></a><tt class="py-lineno">1000</tt>  <tt class="py-line"><tt class="py-docstring">        is 640 x 480, eye coordinates correspond 1:1 with window</tt> </tt>
+<a name="L1001"></a><tt class="py-lineno">1001</tt>  <tt class="py-line"><tt class="py-docstring">        (pixel) coordinates.</tt> </tt>
+<a name="L1002"></a><tt class="py-lineno">1002</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L1003"></a><tt class="py-lineno">1003</tt>  <tt class="py-line"> </tt>
+<a name="L1004"></a><tt class="py-lineno">1004</tt>  <tt class="py-line">        <tt class="py-comment"># using Numeric (from the OpenGL spec):</tt> </tt>
+<a name="L1005"></a><tt class="py-lineno">1005</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">matrix</tt> <tt class="py-op">=</tt> <tt class="py-name">Numeric</tt><tt class="py-op">.</tt><tt class="py-name">array</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-op">[</tt> <tt class="py-number">2.</tt><tt class="py-op">/</tt><tt class="py-op">(</tt><tt id="link-297" class="py-name"><a title="VisionEgg.PyroApps.MouseTargetServer.right" cl [...]
+<a name="L1006"></a><tt class="py-lineno">1006</tt>  <tt class="py-line">                                <tt class="py-op">[</tt> <tt class="py-number">0</tt><tt class="py-op">,</tt>               <tt class="py-number">2.</tt><tt class="py-op">/</tt><tt class="py-op">(</tt><tt class="py-name">top</tt><tt class="py-op">-</tt><tt class="py-name">bottom</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-op">-</tt><tt class [...]
+<a name="L1007"></a><tt class="py-lineno">1007</tt>  <tt class="py-line">                                <tt class="py-op">[</tt> <tt class="py-number">0</tt><tt class="py-op">,</tt>               <tt class="py-number">0</tt><tt class="py-op">,</tt>              <tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">,</tt> <tt class="py-op">-</tt><tt class="py-number">1.</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L1008"></a><tt class="py-lineno">1008</tt>  <tt class="py-line">                                <tt class="py-op">[</tt> <tt class="py-number">0</tt><tt class="py-op">,</tt>               <tt class="py-number">0</tt><tt class="py-op">,</tt>               <tt class="py-number">0</tt><tt class="py-op">,</tt>  <tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1009"></a><tt class="py-lineno">1009</tt>  <tt class="py-line">        <tt class="py-name">matrix</tt> <tt class="py-op">=</tt> <tt class="py-name">Numeric</tt><tt class="py-op">.</tt><tt class="py-name">transpose</tt><tt class="py-op">(</tt><tt class="py-name">matrix</tt><tt class="py-op">)</tt> <tt class="py-comment"># convert to OpenGL format</tt> </tt>
+<a name="L1010"></a><tt class="py-lineno">1010</tt>  <tt class="py-line"> </tt>
+<a name="L1011"></a><tt class="py-lineno">1011</tt>  <tt class="py-line">        <tt id="link-303" class="py-name"><a title="VisionEgg.Core.Projection" class="py-name" href="#" onclick="return doclink('link-303', 'Projection', 'link-295');">Projection</a></tt><tt class="py-op">.</tt><tt id="link-304" class="py-name"><a title="VisionEgg.ClassWithParameters.__init__
+VisionEgg.Configuration.Config.__init__
+VisionEgg.Core.FixationSpot.__init__
+VisionEgg.Core.FrameTimer.__init__
+VisionEgg.Core.ModelView.__init__
+VisionEgg.Core.OrthographicProjection.__init__
+VisionEgg.Core.OrthographicProjectionNoZClip.__init__
+VisionEgg.Core.PerspectiveProjection.__init__
+VisionEgg.Core.Projection.__init__
+VisionEgg.Core.ProjectionBaseClass.__init__
+VisionEgg.Core.Screen.__init__
+VisionEgg.Core.SimplePerspectiveProjection.__init__
+VisionEgg.Core.Stimulus.__init__
+VisionEgg.Core.Viewport.__init__
+VisionEgg.Daq.Channel.__init__
+VisionEgg.Daq.DaqMode.__init__
+VisionEgg.Daq.Device.__init__
+VisionEgg.Daq.Functionality.__init__
+VisionEgg.Daq.SignalType.__init__
+VisionEgg.DaqKeyboard.KeyboardTriggerInController.__init__
+VisionEgg.DaqLPT.LPTChannel.__init__
+VisionEgg.DaqLPT.LPTDevice.__init__
+VisionEgg.DaqLPT.LPTTriggerInController.__init__
+VisionEgg.DaqLPT.LPTTriggerOutController.__init__
+VisionEgg.Deprecated.Message.__init__
+VisionEgg.Dots.DotArea2D.__init__
+VisionEgg.FlowControl.ConstantController.__init__
+VisionEgg.FlowControl.Controller.__init__
+VisionEgg.FlowControl.EncapsulatedController.__init__
+VisionEgg.FlowControl.EvalStringController.__init__
+VisionEgg.FlowControl.ExecStringController.__init__
+VisionEgg.FlowControl.FunctionController.__init__
+VisionEgg.FlowControl.Presentation.__init__
+VisionEgg.GLTrace.Wrapper.__init__
+VisionEgg.GUI.AppWindow.__init__
+VisionEgg.GUI.GetKeypressDialog.__init__
+VisionEgg.GUI.GraphicsConfigurationWindow.__init__
+VisionEgg.GUI.InfoFrame.__init__
+VisionEgg.GUI.ProgressBar.__init__
+VisionEgg.GUI.ToplevelDialog.__init__
+VisionEgg.Gratings.SinGrating2D.__init__
+VisionEgg.Gratings.SinGrating3D.__init__
+VisionEgg.MoreStimuli.Arrow.__init__
+VisionEgg.MoreStimuli.FilledCircle.__init__
+VisionEgg.MoreStimuli.Rectangle3D.__init__
+VisionEgg.MoreStimuli.Target2D.__init__
+VisionEgg.ParameterTypes.AnyOf.__init__
+VisionEgg.ParameterTypes.Instance.__init__
+VisionEgg.ParameterTypes.Sequence.__init__
+VisionEgg.ParameterTypes.SubClass.__init__
+VisionEgg.PyroApps.AST_ext.AST_Visitor.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalMetaParameters.__init__
+VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.__init__
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.__init__
+VisionEgg.PyroApps.DropinGUI.DropinMetaParameters.__init__
+VisionEgg.PyroApps.DropinServer.DropinMetaController.__init__
+VisionEgg.PyroApps.EPhysGUI.AppWindow.__init__
+VisionEgg.PyroApps.EPhysGUI.BarButton.__init__
+VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase.__init__
+VisionEgg.PyroApps.EPhysGUI.GammaFrame.__init__
+VisionEgg.PyroApps.EPhysGUI.ImageSequenceLauncher.__init__
+VisionEgg.PyroApps.EPhysGUI.Loop.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopContainedObject.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopParamDialog.__init__
+VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.__init__
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.__init__
+VisionEgg.PyroApps.EPhysServer.EPhysServer.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingMetaParameters.__init__
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.GridGUI.GridControlFrame.__init__
+VisionEgg.PyroApps.GridGUI.GridMetaParameters.__init__
+VisionEgg.PyroApps.GridServer.GridMetaController.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetMetaParameters.__init__
+VisionEgg.PyroApps.MouseTargetServer.MousePositionController.__init__
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetOrientationController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetPositionController.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.CallbackEntry.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionParameters.__init__
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingMetaParameters.__init__
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumMetaParameters.__init__
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.__init__
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.__init__
+VisionEgg.PyroApps.TargetGUI.TargetMetaParameters.__init__
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.__init__
+VisionEgg.PyroClient.PyroClient.__init__
+VisionEgg.PyroHelpers.PyroConstantController.__init__
+VisionEgg.PyroHelpers.PyroEncapsulatedController.__init__
+VisionEgg.PyroHelpers.PyroEvalStringController.__init__
+VisionEgg.PyroHelpers.PyroExecStringController.__init__
+VisionEgg.PyroHelpers.PyroListenController.__init__
+VisionEgg.PyroHelpers.PyroLocalDictController.__init__
+VisionEgg.PyroHelpers.PyroServer.__init__
+VisionEgg.QuickTime.MovieTexture.__init__
+VisionEgg.ResponseControl.KeyboardResponseController.__init__
+VisionEgg.ResponseControl.ResponseController.__init__
+VisionEgg.SphereMap.AzElGrid.__init__
+VisionEgg.SphereMap.SphereGrating.__init__
+VisionEgg.SphereMap.SphereMap.__init__
+VisionEgg.SphereMap.SphereWindow.__init__
+VisionEgg.TCPController.SocketListenController.__init__
+VisionEgg.TCPController.TCPController.__init__
+VisionEgg.TCPController.TCPServer.__init__
+VisionEgg.Text.BitmapText.__init__
+VisionEgg.Text.GlutTextBase.__init__
+VisionEgg.Text.StrokeText.__init__
+VisionEgg.Text.Text.__init__
+VisionEgg.Textures.FixationCross.__init__
+VisionEgg.Textures.Mask2D.__init__
+VisionEgg.Textures.SpinningDrum.__init__
+VisionEgg.Textures.Texture.__init__
+VisionEgg.Textures.TextureFromFile.__init__
+VisionEgg.Textures.TextureObject.__init__
+VisionEgg.Textures.TextureStimulusBaseClass.__init__
+VisionEgg.ThreeDeeMath.TransformMatrix.__init__
+VisionEgg.WrappedText.WrappedText.__init__
+VisionEgg.qtmovie.Movie.__init__
+VisionEgg.qtmovie.Rect.__init__" class="py-name" href="#" onclick="return doclink('link-304', '__init__', 'link-44');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt><tt class="py-op">**</tt><tt class="py-op">{</tt><tt class="py-string">'matrix'</tt><tt class="py-op">:</tt><tt class="py-name">matrix</tt><tt class="py-op">}</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L1012"></a><tt class="py-lineno">1012</tt>  <tt class="py-line"> </tt>
+<a name="SimplePerspectiveProjection"></a><div id="SimplePerspectiveProjection-def"><a name="L1013"></a><tt class="py-lineno">1013</tt> <a class="py-toggle" href="#" id="SimplePerspectiveProjection-toggle" onclick="return toggle('SimplePerspectiveProjection');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.Core.SimplePerspectiveProjection-class.html">SimplePerspectiveProjection</a><tt class="py-op">(</tt><tt class="py-base-class">Projec [...]
+</div><div id="SimplePerspectiveProjection-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="SimplePerspectiveProjection-expanded"><a name="L1014"></a><tt class="py-lineno">1014</tt>  <tt class="py-line">    <tt class="py-docstring">"""A simplified perspective projection.</tt> </tt>
+<a name="L1015"></a><tt class="py-lineno">1015</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1016"></a><tt class="py-lineno">1016</tt>  <tt class="py-line"><tt class="py-docstring">    Parameters</tt> </tt>
+<a name="L1017"></a><tt class="py-lineno">1017</tt>  <tt class="py-line"><tt class="py-docstring">    ==========</tt> </tt>
+<a name="L1018"></a><tt class="py-lineno">1018</tt>  <tt class="py-line"><tt class="py-docstring">    matrix -- matrix specifying projection (Sequence4x4 of Real)</tt> </tt>
+<a name="L1019"></a><tt class="py-lineno">1019</tt>  <tt class="py-line"><tt class="py-docstring">              Default: [[1 0 0 0]</tt> </tt>
+<a name="L1020"></a><tt class="py-lineno">1020</tt>  <tt class="py-line"><tt class="py-docstring">                        [0 1 0 0]</tt> </tt>
+<a name="L1021"></a><tt class="py-lineno">1021</tt>  <tt class="py-line"><tt class="py-docstring">                        [0 0 1 0]</tt> </tt>
+<a name="L1022"></a><tt class="py-lineno">1022</tt>  <tt class="py-line"><tt class="py-docstring">                        [0 0 0 1]]</tt> </tt>
+<a name="L1023"></a><tt class="py-lineno">1023</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L1024"></a><tt class="py-lineno">1024</tt>  <tt class="py-line"> </tt>
+<a name="SimplePerspectiveProjection.__init__"></a><div id="SimplePerspectiveProjection.__init__-def"><a name="L1025"></a><tt class="py-lineno">1025</tt> <a class="py-toggle" href="#" id="SimplePerspectiveProjection.__init__-toggle" onclick="return toggle('SimplePerspectiveProjection.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.Core.SimplePerspectiveProjection-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt  [...]
+</div><div id="SimplePerspectiveProjection.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="SimplePerspectiveProjection.__init__-expanded"><a name="L1026"></a><tt class="py-lineno">1026</tt>  <tt class="py-line">        <tt class="py-name">matrix</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_compute_matrix</tt><tt class="py-op">(</tt><tt class="py-name">fov_x</tt><tt class="py-op">,</tt><tt cla [...]
+<a name="L1027"></a><tt class="py-lineno">1027</tt>  <tt class="py-line">        <tt id="link-305" class="py-name"><a title="VisionEgg.Core.Projection" class="py-name" href="#" onclick="return doclink('link-305', 'Projection', 'link-295');">Projection</a></tt><tt class="py-op">.</tt><tt id="link-306" class="py-name"><a title="VisionEgg.ClassWithParameters.__init__
+VisionEgg.Configuration.Config.__init__
+VisionEgg.Core.FixationSpot.__init__
+VisionEgg.Core.FrameTimer.__init__
+VisionEgg.Core.ModelView.__init__
+VisionEgg.Core.OrthographicProjection.__init__
+VisionEgg.Core.OrthographicProjectionNoZClip.__init__
+VisionEgg.Core.PerspectiveProjection.__init__
+VisionEgg.Core.Projection.__init__
+VisionEgg.Core.ProjectionBaseClass.__init__
+VisionEgg.Core.Screen.__init__
+VisionEgg.Core.SimplePerspectiveProjection.__init__
+VisionEgg.Core.Stimulus.__init__
+VisionEgg.Core.Viewport.__init__
+VisionEgg.Daq.Channel.__init__
+VisionEgg.Daq.DaqMode.__init__
+VisionEgg.Daq.Device.__init__
+VisionEgg.Daq.Functionality.__init__
+VisionEgg.Daq.SignalType.__init__
+VisionEgg.DaqKeyboard.KeyboardTriggerInController.__init__
+VisionEgg.DaqLPT.LPTChannel.__init__
+VisionEgg.DaqLPT.LPTDevice.__init__
+VisionEgg.DaqLPT.LPTTriggerInController.__init__
+VisionEgg.DaqLPT.LPTTriggerOutController.__init__
+VisionEgg.Deprecated.Message.__init__
+VisionEgg.Dots.DotArea2D.__init__
+VisionEgg.FlowControl.ConstantController.__init__
+VisionEgg.FlowControl.Controller.__init__
+VisionEgg.FlowControl.EncapsulatedController.__init__
+VisionEgg.FlowControl.EvalStringController.__init__
+VisionEgg.FlowControl.ExecStringController.__init__
+VisionEgg.FlowControl.FunctionController.__init__
+VisionEgg.FlowControl.Presentation.__init__
+VisionEgg.GLTrace.Wrapper.__init__
+VisionEgg.GUI.AppWindow.__init__
+VisionEgg.GUI.GetKeypressDialog.__init__
+VisionEgg.GUI.GraphicsConfigurationWindow.__init__
+VisionEgg.GUI.InfoFrame.__init__
+VisionEgg.GUI.ProgressBar.__init__
+VisionEgg.GUI.ToplevelDialog.__init__
+VisionEgg.Gratings.SinGrating2D.__init__
+VisionEgg.Gratings.SinGrating3D.__init__
+VisionEgg.MoreStimuli.Arrow.__init__
+VisionEgg.MoreStimuli.FilledCircle.__init__
+VisionEgg.MoreStimuli.Rectangle3D.__init__
+VisionEgg.MoreStimuli.Target2D.__init__
+VisionEgg.ParameterTypes.AnyOf.__init__
+VisionEgg.ParameterTypes.Instance.__init__
+VisionEgg.ParameterTypes.Sequence.__init__
+VisionEgg.ParameterTypes.SubClass.__init__
+VisionEgg.PyroApps.AST_ext.AST_Visitor.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalMetaParameters.__init__
+VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.__init__
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.__init__
+VisionEgg.PyroApps.DropinGUI.DropinMetaParameters.__init__
+VisionEgg.PyroApps.DropinServer.DropinMetaController.__init__
+VisionEgg.PyroApps.EPhysGUI.AppWindow.__init__
+VisionEgg.PyroApps.EPhysGUI.BarButton.__init__
+VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase.__init__
+VisionEgg.PyroApps.EPhysGUI.GammaFrame.__init__
+VisionEgg.PyroApps.EPhysGUI.ImageSequenceLauncher.__init__
+VisionEgg.PyroApps.EPhysGUI.Loop.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopContainedObject.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopParamDialog.__init__
+VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.__init__
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.__init__
+VisionEgg.PyroApps.EPhysServer.EPhysServer.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingMetaParameters.__init__
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.GridGUI.GridControlFrame.__init__
+VisionEgg.PyroApps.GridGUI.GridMetaParameters.__init__
+VisionEgg.PyroApps.GridServer.GridMetaController.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetMetaParameters.__init__
+VisionEgg.PyroApps.MouseTargetServer.MousePositionController.__init__
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetOrientationController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetPositionController.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.CallbackEntry.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionParameters.__init__
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingMetaParameters.__init__
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumMetaParameters.__init__
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.__init__
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.__init__
+VisionEgg.PyroApps.TargetGUI.TargetMetaParameters.__init__
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.__init__
+VisionEgg.PyroClient.PyroClient.__init__
+VisionEgg.PyroHelpers.PyroConstantController.__init__
+VisionEgg.PyroHelpers.PyroEncapsulatedController.__init__
+VisionEgg.PyroHelpers.PyroEvalStringController.__init__
+VisionEgg.PyroHelpers.PyroExecStringController.__init__
+VisionEgg.PyroHelpers.PyroListenController.__init__
+VisionEgg.PyroHelpers.PyroLocalDictController.__init__
+VisionEgg.PyroHelpers.PyroServer.__init__
+VisionEgg.QuickTime.MovieTexture.__init__
+VisionEgg.ResponseControl.KeyboardResponseController.__init__
+VisionEgg.ResponseControl.ResponseController.__init__
+VisionEgg.SphereMap.AzElGrid.__init__
+VisionEgg.SphereMap.SphereGrating.__init__
+VisionEgg.SphereMap.SphereMap.__init__
+VisionEgg.SphereMap.SphereWindow.__init__
+VisionEgg.TCPController.SocketListenController.__init__
+VisionEgg.TCPController.TCPController.__init__
+VisionEgg.TCPController.TCPServer.__init__
+VisionEgg.Text.BitmapText.__init__
+VisionEgg.Text.GlutTextBase.__init__
+VisionEgg.Text.StrokeText.__init__
+VisionEgg.Text.Text.__init__
+VisionEgg.Textures.FixationCross.__init__
+VisionEgg.Textures.Mask2D.__init__
+VisionEgg.Textures.SpinningDrum.__init__
+VisionEgg.Textures.Texture.__init__
+VisionEgg.Textures.TextureFromFile.__init__
+VisionEgg.Textures.TextureObject.__init__
+VisionEgg.Textures.TextureStimulusBaseClass.__init__
+VisionEgg.ThreeDeeMath.TransformMatrix.__init__
+VisionEgg.WrappedText.WrappedText.__init__
+VisionEgg.qtmovie.Movie.__init__
+VisionEgg.qtmovie.Rect.__init__" class="py-name" href="#" onclick="return doclink('link-306', '__init__', 'link-44');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt><tt class="py-op">**</tt><tt class="py-op">{</tt><tt class="py-string">'matrix'</tt><tt class="py-op">:</tt><tt class="py-name">matrix</tt><tt class="py-op">}</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1028"></a><tt class="py-lineno">1028</tt>  <tt class="py-line"> </tt>
+<a name="SimplePerspectiveProjection._compute_matrix"></a><div id="SimplePerspectiveProjection._compute_matrix-def"><a name="L1029"></a><tt class="py-lineno">1029</tt> <a class="py-toggle" href="#" id="SimplePerspectiveProjection._compute_matrix-toggle" onclick="return toggle('SimplePerspectiveProjection._compute_matrix');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.Core.SimplePerspectiveProjection-class.html#_compute_matrix">_comp [...]
+</div><div id="SimplePerspectiveProjection._compute_matrix-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="SimplePerspectiveProjection._compute_matrix-expanded"><a name="L1030"></a><tt class="py-lineno">1030</tt>  <tt class="py-line">        <tt class="py-docstring">"""Compute a 4x4 projection matrix that performs a perspective distortion."""</tt> </tt>
+<a name="L1031"></a><tt class="py-lineno">1031</tt>  <tt class="py-line">        <tt class="py-name">fov_y</tt> <tt class="py-op">=</tt> <tt class="py-name">fov_x</tt> <tt class="py-op">/</tt> <tt class="py-name">aspect_ratio</tt> </tt>
+<a name="L1032"></a><tt class="py-lineno">1032</tt>  <tt class="py-line">        <tt class="py-comment"># This is a translation of what gluPerspective does:</tt> </tt>
+<a name="L1033"></a><tt class="py-lineno">1033</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment">#glu.gluPerspective(fov_y,aspect_ratio,z_clip_near,z_clip_far)</tt> </tt>
+<a name="L1034"></a><tt class="py-lineno">1034</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">radians</tt> <tt class="py-op">=</tt> <tt class="py-name">fov_y</tt> <tt class="py-op">/</tt> <tt class="py-number">2.0</tt> <tt class="py-op">*</tt> <tt class="py-name">math</tt><tt class="py-op">.</tt><tt class="py-name">pi</tt> <tt class="py-op">/</tt> <tt class="py-number">180.0</tt> </tt>
+<a name="L1035"></a><tt class="py-lineno">1035</tt>  <tt class="py-line">        <tt class="py-name">delta_z</tt> <tt class="py-op">=</tt> <tt class="py-name">z_clip_far</tt> <tt class="py-op">-</tt> <tt class="py-name">z_clip_near</tt> </tt>
+<a name="L1036"></a><tt class="py-lineno">1036</tt>  <tt class="py-line">        <tt class="py-name">sine</tt> <tt class="py-op">=</tt> <tt class="py-name">math</tt><tt class="py-op">.</tt><tt class="py-name">sin</tt><tt class="py-op">(</tt><tt class="py-name">radians</tt><tt class="py-op">)</tt> </tt>
+<a name="L1037"></a><tt class="py-lineno">1037</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">delta_z</tt> <tt class="py-op">==</tt> <tt class="py-number">0.0</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-op">(</tt><tt class="py-name">sine</tt> <tt class="py-op">==</tt> <tt class="py-number">0.0</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-op">(</tt><tt class="py-name">a [...]
+<a name="L1038"></a><tt class="py-lineno">1038</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">"Invalid parameters passed to SimpleProjection.__init__()"</tt><tt class="py-op">)</tt> </tt>
+<a name="L1039"></a><tt class="py-lineno">1039</tt>  <tt class="py-line">        <tt class="py-name">cotangent</tt> <tt class="py-op">=</tt> <tt class="py-name">math</tt><tt class="py-op">.</tt><tt class="py-name">cos</tt><tt class="py-op">(</tt><tt class="py-name">radians</tt><tt class="py-op">)</tt> <tt class="py-op">/</tt> <tt class="py-name">sine</tt> </tt>
+<a name="L1040"></a><tt class="py-lineno">1040</tt>  <tt class="py-line">        <tt class="py-name">matrix</tt> <tt class="py-op">=</tt> <tt class="py-name">Numeric</tt><tt class="py-op">.</tt><tt class="py-name">zeros</tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-number">4</tt><tt class="py-op">,</tt><tt class="py-number">4</tt><tt class="py-op">)</tt><tt class="py-op">,</tt><tt class="py-string">'f'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1041"></a><tt class="py-lineno">1041</tt>  <tt class="py-line">        <tt class="py-name">matrix</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">cotangent</tt><tt class="py-op">/</tt><tt class="py-name">aspect_ratio</tt> </tt>
+<a name="L1042"></a><tt class="py-lineno">1042</tt>  <tt class="py-line">        <tt class="py-name">matrix</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">cotangent</tt> </tt>
+<a name="L1043"></a><tt class="py-lineno">1043</tt>  <tt class="py-line">        <tt class="py-name">matrix</tt><tt class="py-op">[</tt><tt class="py-number">2</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">2</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">-</tt><tt class="py-op">(</tt><tt class="py-name">z_clip_far</tt> <tt class="py-op">+</tt> <tt class="py-name">z_clip_near</tt><tt class="py-op">)</tt> <tt class="py-op">/</tt> <tt cla [...]
+<a name="L1044"></a><tt class="py-lineno">1044</tt>  <tt class="py-line">        <tt class="py-name">matrix</tt><tt class="py-op">[</tt><tt class="py-number">2</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">3</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">-</tt><tt class="py-number">1.0</tt> <tt class="py-comment"># XXX this</tt> </tt>
+<a name="L1045"></a><tt class="py-lineno">1045</tt>  <tt class="py-line">        <tt class="py-name">matrix</tt><tt class="py-op">[</tt><tt class="py-number">3</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">2</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">-</tt><tt class="py-number">2.0</tt> <tt class="py-op">*</tt> <tt class="py-name">z_clip_near</tt> <tt class="py-op">*</tt> <tt class="py-name">z_clip_far</tt> <tt class="py-op">/</tt> [...]
+<a name="L1046"></a><tt class="py-lineno">1046</tt>  <tt class="py-line">        <tt class="py-name">matrix</tt><tt class="py-op">[</tt><tt class="py-number">3</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">3</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-number">0.0</tt> </tt>
+<a name="L1047"></a><tt class="py-lineno">1047</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">matrix</tt> </tt>
+</div></div><a name="L1048"></a><tt class="py-lineno">1048</tt>  <tt class="py-line"> </tt>
+<a name="PerspectiveProjection"></a><div id="PerspectiveProjection-def"><a name="L1049"></a><tt class="py-lineno">1049</tt> <a class="py-toggle" href="#" id="PerspectiveProjection-toggle" onclick="return toggle('PerspectiveProjection');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.Core.PerspectiveProjection-class.html">PerspectiveProjection</a><tt class="py-op">(</tt><tt class="py-base-class">Projection</tt><tt class="py-op">)</tt><tt [...]
+</div><div id="PerspectiveProjection-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="PerspectiveProjection-expanded"><a name="L1050"></a><tt class="py-lineno">1050</tt>  <tt class="py-line">    <tt class="py-docstring">"""A perspective projection.</tt> </tt>
+<a name="L1051"></a><tt class="py-lineno">1051</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1052"></a><tt class="py-lineno">1052</tt>  <tt class="py-line"><tt class="py-docstring">    Parameters</tt> </tt>
+<a name="L1053"></a><tt class="py-lineno">1053</tt>  <tt class="py-line"><tt class="py-docstring">    ==========</tt> </tt>
+<a name="L1054"></a><tt class="py-lineno">1054</tt>  <tt class="py-line"><tt class="py-docstring">    matrix -- matrix specifying projection (Sequence4x4 of Real)</tt> </tt>
+<a name="L1055"></a><tt class="py-lineno">1055</tt>  <tt class="py-line"><tt class="py-docstring">              Default: [[1 0 0 0]</tt> </tt>
+<a name="L1056"></a><tt class="py-lineno">1056</tt>  <tt class="py-line"><tt class="py-docstring">                        [0 1 0 0]</tt> </tt>
+<a name="L1057"></a><tt class="py-lineno">1057</tt>  <tt class="py-line"><tt class="py-docstring">                        [0 0 1 0]</tt> </tt>
+<a name="L1058"></a><tt class="py-lineno">1058</tt>  <tt class="py-line"><tt class="py-docstring">                        [0 0 0 1]]</tt> </tt>
+<a name="L1059"></a><tt class="py-lineno">1059</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L1060"></a><tt class="py-lineno">1060</tt>  <tt class="py-line"> </tt>
+<a name="PerspectiveProjection.__init__"></a><div id="PerspectiveProjection.__init__-def"><a name="L1061"></a><tt class="py-lineno">1061</tt> <a class="py-toggle" href="#" id="PerspectiveProjection.__init__-toggle" onclick="return toggle('PerspectiveProjection.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.Core.PerspectiveProjection-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt  [...]
+</div><div id="PerspectiveProjection.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="PerspectiveProjection.__init__-expanded"><a name="L1062"></a><tt class="py-lineno">1062</tt>  <tt class="py-line">        <tt class="py-comment"># XXX right now this is done in OpenGL, we should do it ourselves</tt> </tt>
+<a name="L1063"></a><tt class="py-lineno">1063</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glMatrixMode</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_PROJECTION</tt><tt class="py-op">)</tt> <tt class="py-comment"># Set OpenGL matrix state to modify the projection matrix</tt> </tt>
+<a name="L1064"></a><tt class="py-lineno">1064</tt>  <tt class="py-line">        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glPushMatrix</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1065"></a><tt class="py-lineno">1065</tt>  <tt class="py-line">        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glLoadIdentity</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-comment"># Clear the projection matrix</tt> </tt>
+<a name="L1066"></a><tt class="py-lineno">1066</tt>  <tt class="py-line">        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glFrustum</tt><tt class="py-op">(</tt><tt id="link-307" class="py-name"><a title="VisionEgg.PyroApps.MouseTargetServer.left" class="py-name" href="#" onclick="return doclink('link-307', 'left', 'link-160');">left</a></tt><tt class="py-op">,</tt><tt id="link-308" class="py-name"><a title="VisionEgg.PyroApps.MouseTargetServer.right" class=" [...]
+<a name="L1067"></a><tt class="py-lineno">1067</tt>  <tt class="py-line">        <tt class="py-name">matrix</tt> <tt class="py-op">=</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glGetFloatv</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_PROJECTION_MATRIX</tt><tt class="py-op">)</tt> </tt>
+<a name="L1068"></a><tt class="py-lineno">1068</tt>  <tt class="py-line">        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glPopMatrix</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1069"></a><tt class="py-lineno">1069</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">matrix</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L1070"></a><tt class="py-lineno">1070</tt>  <tt class="py-line">            <tt class="py-comment"># OpenGL wasn't started</tt> </tt>
+<a name="L1071"></a><tt class="py-lineno">1071</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">raise</tt> <tt class="py-name">RuntimeError</tt><tt class="py-op">(</tt><tt class="py-string">"OpenGL matrix operations can only take place once OpenGL context started."</tt><tt class="py-op">)</tt> </tt>
+<a name="L1072"></a><tt class="py-lineno">1072</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">matrix</tt><tt class="py-op">)</tt> <tt class="py-op">!=</tt> <tt class="py-name">Numeric</tt><tt class="py-op">.</tt><tt class="py-name">ArrayType</tt><tt class="py-op">:</tt> </tt>
+<a name="L1073"></a><tt class="py-lineno">1073</tt>  <tt class="py-line">            <tt class="py-name">matrix</tt> <tt class="py-op">=</tt> <tt class="py-name">Numeric</tt><tt class="py-op">.</tt><tt class="py-name">array</tt><tt class="py-op">(</tt><tt class="py-name">matrix</tt><tt class="py-op">)</tt> <tt class="py-comment"># Convert to Numeric array</tt> </tt>
+<a name="L1074"></a><tt class="py-lineno">1074</tt>  <tt class="py-line">        <tt id="link-309" class="py-name"><a title="VisionEgg.Core.Projection" class="py-name" href="#" onclick="return doclink('link-309', 'Projection', 'link-295');">Projection</a></tt><tt class="py-op">.</tt><tt id="link-310" class="py-name"><a title="VisionEgg.ClassWithParameters.__init__
+VisionEgg.Configuration.Config.__init__
+VisionEgg.Core.FixationSpot.__init__
+VisionEgg.Core.FrameTimer.__init__
+VisionEgg.Core.ModelView.__init__
+VisionEgg.Core.OrthographicProjection.__init__
+VisionEgg.Core.OrthographicProjectionNoZClip.__init__
+VisionEgg.Core.PerspectiveProjection.__init__
+VisionEgg.Core.Projection.__init__
+VisionEgg.Core.ProjectionBaseClass.__init__
+VisionEgg.Core.Screen.__init__
+VisionEgg.Core.SimplePerspectiveProjection.__init__
+VisionEgg.Core.Stimulus.__init__
+VisionEgg.Core.Viewport.__init__
+VisionEgg.Daq.Channel.__init__
+VisionEgg.Daq.DaqMode.__init__
+VisionEgg.Daq.Device.__init__
+VisionEgg.Daq.Functionality.__init__
+VisionEgg.Daq.SignalType.__init__
+VisionEgg.DaqKeyboard.KeyboardTriggerInController.__init__
+VisionEgg.DaqLPT.LPTChannel.__init__
+VisionEgg.DaqLPT.LPTDevice.__init__
+VisionEgg.DaqLPT.LPTTriggerInController.__init__
+VisionEgg.DaqLPT.LPTTriggerOutController.__init__
+VisionEgg.Deprecated.Message.__init__
+VisionEgg.Dots.DotArea2D.__init__
+VisionEgg.FlowControl.ConstantController.__init__
+VisionEgg.FlowControl.Controller.__init__
+VisionEgg.FlowControl.EncapsulatedController.__init__
+VisionEgg.FlowControl.EvalStringController.__init__
+VisionEgg.FlowControl.ExecStringController.__init__
+VisionEgg.FlowControl.FunctionController.__init__
+VisionEgg.FlowControl.Presentation.__init__
+VisionEgg.GLTrace.Wrapper.__init__
+VisionEgg.GUI.AppWindow.__init__
+VisionEgg.GUI.GetKeypressDialog.__init__
+VisionEgg.GUI.GraphicsConfigurationWindow.__init__
+VisionEgg.GUI.InfoFrame.__init__
+VisionEgg.GUI.ProgressBar.__init__
+VisionEgg.GUI.ToplevelDialog.__init__
+VisionEgg.Gratings.SinGrating2D.__init__
+VisionEgg.Gratings.SinGrating3D.__init__
+VisionEgg.MoreStimuli.Arrow.__init__
+VisionEgg.MoreStimuli.FilledCircle.__init__
+VisionEgg.MoreStimuli.Rectangle3D.__init__
+VisionEgg.MoreStimuli.Target2D.__init__
+VisionEgg.ParameterTypes.AnyOf.__init__
+VisionEgg.ParameterTypes.Instance.__init__
+VisionEgg.ParameterTypes.Sequence.__init__
+VisionEgg.ParameterTypes.SubClass.__init__
+VisionEgg.PyroApps.AST_ext.AST_Visitor.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalMetaParameters.__init__
+VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.__init__
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.__init__
+VisionEgg.PyroApps.DropinGUI.DropinMetaParameters.__init__
+VisionEgg.PyroApps.DropinServer.DropinMetaController.__init__
+VisionEgg.PyroApps.EPhysGUI.AppWindow.__init__
+VisionEgg.PyroApps.EPhysGUI.BarButton.__init__
+VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase.__init__
+VisionEgg.PyroApps.EPhysGUI.GammaFrame.__init__
+VisionEgg.PyroApps.EPhysGUI.ImageSequenceLauncher.__init__
+VisionEgg.PyroApps.EPhysGUI.Loop.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopContainedObject.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopParamDialog.__init__
+VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.__init__
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.__init__
+VisionEgg.PyroApps.EPhysServer.EPhysServer.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingMetaParameters.__init__
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.GridGUI.GridControlFrame.__init__
+VisionEgg.PyroApps.GridGUI.GridMetaParameters.__init__
+VisionEgg.PyroApps.GridServer.GridMetaController.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetMetaParameters.__init__
+VisionEgg.PyroApps.MouseTargetServer.MousePositionController.__init__
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetOrientationController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetPositionController.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.CallbackEntry.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionParameters.__init__
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingMetaParameters.__init__
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumMetaParameters.__init__
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.__init__
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.__init__
+VisionEgg.PyroApps.TargetGUI.TargetMetaParameters.__init__
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.__init__
+VisionEgg.PyroClient.PyroClient.__init__
+VisionEgg.PyroHelpers.PyroConstantController.__init__
+VisionEgg.PyroHelpers.PyroEncapsulatedController.__init__
+VisionEgg.PyroHelpers.PyroEvalStringController.__init__
+VisionEgg.PyroHelpers.PyroExecStringController.__init__
+VisionEgg.PyroHelpers.PyroListenController.__init__
+VisionEgg.PyroHelpers.PyroLocalDictController.__init__
+VisionEgg.PyroHelpers.PyroServer.__init__
+VisionEgg.QuickTime.MovieTexture.__init__
+VisionEgg.ResponseControl.KeyboardResponseController.__init__
+VisionEgg.ResponseControl.ResponseController.__init__
+VisionEgg.SphereMap.AzElGrid.__init__
+VisionEgg.SphereMap.SphereGrating.__init__
+VisionEgg.SphereMap.SphereMap.__init__
+VisionEgg.SphereMap.SphereWindow.__init__
+VisionEgg.TCPController.SocketListenController.__init__
+VisionEgg.TCPController.TCPController.__init__
+VisionEgg.TCPController.TCPServer.__init__
+VisionEgg.Text.BitmapText.__init__
+VisionEgg.Text.GlutTextBase.__init__
+VisionEgg.Text.StrokeText.__init__
+VisionEgg.Text.Text.__init__
+VisionEgg.Textures.FixationCross.__init__
+VisionEgg.Textures.Mask2D.__init__
+VisionEgg.Textures.SpinningDrum.__init__
+VisionEgg.Textures.Texture.__init__
+VisionEgg.Textures.TextureFromFile.__init__
+VisionEgg.Textures.TextureObject.__init__
+VisionEgg.Textures.TextureStimulusBaseClass.__init__
+VisionEgg.ThreeDeeMath.TransformMatrix.__init__
+VisionEgg.WrappedText.WrappedText.__init__
+VisionEgg.qtmovie.Movie.__init__
+VisionEgg.qtmovie.Rect.__init__" class="py-name" href="#" onclick="return doclink('link-310', '__init__', 'link-44');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt><tt class="py-op">**</tt><tt class="py-op">{</tt><tt class="py-string">'matrix'</tt><tt class="py-op">:</tt><tt class="py-name">matrix</tt><tt class="py-op">}</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L1075"></a><tt class="py-lineno">1075</tt>  <tt class="py-line"> </tt>
+<a name="L1076"></a><tt class="py-lineno">1076</tt>  <tt class="py-line"><tt class="py-comment">####################################################################</tt> </tt>
+<a name="L1077"></a><tt class="py-lineno">1077</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L1078"></a><tt class="py-lineno">1078</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#        Stimulus - Base class</tt> </tt>
+<a name="L1079"></a><tt class="py-lineno">1079</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L1080"></a><tt class="py-lineno">1080</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">####################################################################</tt> </tt>
+<a name="L1081"></a><tt class="py-lineno">1081</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="Stimulus"></a><div id="Stimulus-def"><a name="L1082"></a><tt class="py-lineno">1082</tt> <a class="py-toggle" href="#" id="Stimulus-toggle" onclick="return toggle('Stimulus');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.Core.Stimulus-class.html">Stimulus</a><tt class="py-op">(</tt><tt class="py-base-class">VisionEgg</tt><tt class="py-op">.</tt><tt class="py-base-class">ClassWithParameters</tt><tt class="py-op">)</tt><tt clas [...]
+</div><div id="Stimulus-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="Stimulus-expanded"><a name="L1083"></a><tt class="py-lineno">1083</tt>  <tt class="py-line">    <tt class="py-docstring">"""Base class for a stimulus.</tt> </tt>
+<a name="L1084"></a><tt class="py-lineno">1084</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1085"></a><tt class="py-lineno">1085</tt>  <tt class="py-line"><tt class="py-docstring">    Any stimulus element should be a subclass of this Stimulus class.</tt> </tt>
+<a name="L1086"></a><tt class="py-lineno">1086</tt>  <tt class="py-line"><tt class="py-docstring">    The draw() method contains the code executed before every buffer</tt> </tt>
+<a name="L1087"></a><tt class="py-lineno">1087</tt>  <tt class="py-line"><tt class="py-docstring">    swap in order to render the stimulus to the frame buffer.  It</tt> </tt>
+<a name="L1088"></a><tt class="py-lineno">1088</tt>  <tt class="py-line"><tt class="py-docstring">    should execute as quickly as possible.  The init_gl() method must</tt> </tt>
+<a name="L1089"></a><tt class="py-lineno">1089</tt>  <tt class="py-line"><tt class="py-docstring">    be called before the first call to draw() so that any internal</tt> </tt>
+<a name="L1090"></a><tt class="py-lineno">1090</tt>  <tt class="py-line"><tt class="py-docstring">    data, OpenGL display lists, and OpenGL:texture objects can be</tt> </tt>
+<a name="L1091"></a><tt class="py-lineno">1091</tt>  <tt class="py-line"><tt class="py-docstring">    established.</tt> </tt>
+<a name="L1092"></a><tt class="py-lineno">1092</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1093"></a><tt class="py-lineno">1093</tt>  <tt class="py-line"><tt class="py-docstring">    To illustrate the concept of the Stimulus class, here is a</tt> </tt>
+<a name="L1094"></a><tt class="py-lineno">1094</tt>  <tt class="py-line"><tt class="py-docstring">    description of several methods of drawing two spots.  If your</tt> </tt>
+<a name="L1095"></a><tt class="py-lineno">1095</tt>  <tt class="py-line"><tt class="py-docstring">    experiment displays two spots simultaneously, you could create two</tt> </tt>
+<a name="L1096"></a><tt class="py-lineno">1096</tt>  <tt class="py-line"><tt class="py-docstring">    instances of (a single subclass of) Stimulus, varying parameters</tt> </tt>
+<a name="L1097"></a><tt class="py-lineno">1097</tt>  <tt class="py-line"><tt class="py-docstring">    so each draws at a different location.  Another possibility is to</tt> </tt>
+<a name="L1098"></a><tt class="py-lineno">1098</tt>  <tt class="py-line"><tt class="py-docstring">    create one instance of a subclass that draws two spots.  Another,</tt> </tt>
+<a name="L1099"></a><tt class="py-lineno">1099</tt>  <tt class="py-line"><tt class="py-docstring">    somewhat obscure, possibility is to create a single instance and</tt> </tt>
+<a name="L1100"></a><tt class="py-lineno">1100</tt>  <tt class="py-line"><tt class="py-docstring">    add it to two different viewports.  (Something that will not work</tt> </tt>
+<a name="L1101"></a><tt class="py-lineno">1101</tt>  <tt class="py-line"><tt class="py-docstring">    would be adding the same instance two times to the same viewport.</tt> </tt>
+<a name="L1102"></a><tt class="py-lineno">1102</tt>  <tt class="py-line"><tt class="py-docstring">    It would also get drawn twice, although at exactly the same</tt> </tt>
+<a name="L1103"></a><tt class="py-lineno">1103</tt>  <tt class="py-line"><tt class="py-docstring">    location.)</tt> </tt>
+<a name="L1104"></a><tt class="py-lineno">1104</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1105"></a><tt class="py-lineno">1105</tt>  <tt class="py-line"><tt class="py-docstring">    OpenGL is a 'state machine', meaning that it has internal</tt> </tt>
+<a name="L1106"></a><tt class="py-lineno">1106</tt>  <tt class="py-line"><tt class="py-docstring">    parameters whose values vary and affect how it operates.  Because</tt> </tt>
+<a name="L1107"></a><tt class="py-lineno">1107</tt>  <tt class="py-line"><tt class="py-docstring">    of this inherent uncertainty, there are only limited assumptions</tt> </tt>
+<a name="L1108"></a><tt class="py-lineno">1108</tt>  <tt class="py-line"><tt class="py-docstring">    about the state of OpenGL that an instance of Stimulus should</tt> </tt>
+<a name="L1109"></a><tt class="py-lineno">1109</tt>  <tt class="py-line"><tt class="py-docstring">    expect when its draw() method is called.  Because the Vision Egg</tt> </tt>
+<a name="L1110"></a><tt class="py-lineno">1110</tt>  <tt class="py-line"><tt class="py-docstring">    loops through stimuli this also imposes some important behaviors:</tt> </tt>
+<a name="L1111"></a><tt class="py-lineno">1111</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1112"></a><tt class="py-lineno">1112</tt>  <tt class="py-line"><tt class="py-docstring">    First, the framebuffer will contain the results of any drawing</tt> </tt>
+<a name="L1113"></a><tt class="py-lineno">1113</tt>  <tt class="py-line"><tt class="py-docstring">    operations performed since the last buffer swap by other instances</tt> </tt>
+<a name="L1114"></a><tt class="py-lineno">1114</tt>  <tt class="py-line"><tt class="py-docstring">    of (subclasses of) Stimulus. Therefore, the order in which stimuli</tt> </tt>
+<a name="L1115"></a><tt class="py-lineno">1115</tt>  <tt class="py-line"><tt class="py-docstring">    are present in the stimuli list of an instance of Viewport may be</tt> </tt>
+<a name="L1116"></a><tt class="py-lineno">1116</tt>  <tt class="py-line"><tt class="py-docstring">    important.  Additionally, if there are overlapping viewports, the</tt> </tt>
+<a name="L1117"></a><tt class="py-lineno">1117</tt>  <tt class="py-line"><tt class="py-docstring">    order in which viewports are added to an instance of Screen is</tt> </tt>
+<a name="L1118"></a><tt class="py-lineno">1118</tt>  <tt class="py-line"><tt class="py-docstring">    important.</tt> </tt>
+<a name="L1119"></a><tt class="py-lineno">1119</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1120"></a><tt class="py-lineno">1120</tt>  <tt class="py-line"><tt class="py-docstring">    Second, previously established OpenGL display lists and OpenGL</tt> </tt>
+<a name="L1121"></a><tt class="py-lineno">1121</tt>  <tt class="py-line"><tt class="py-docstring">    texture objects will be available.  The __init__() method should</tt> </tt>
+<a name="L1122"></a><tt class="py-lineno">1122</tt>  <tt class="py-line"><tt class="py-docstring">    establish these things.</tt> </tt>
+<a name="L1123"></a><tt class="py-lineno">1123</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1124"></a><tt class="py-lineno">1124</tt>  <tt class="py-line"><tt class="py-docstring">    Third, there are several OpenGL state variables which are</tt> </tt>
+<a name="L1125"></a><tt class="py-lineno">1125</tt>  <tt class="py-line"><tt class="py-docstring">    commonly set by subclasses of Stimulus, and which cannot be</tt> </tt>
+<a name="L1126"></a><tt class="py-lineno">1126</tt>  <tt class="py-line"><tt class="py-docstring">    assumed to have any particular value at the time draw() is called.</tt> </tt>
+<a name="L1127"></a><tt class="py-lineno">1127</tt>  <tt class="py-line"><tt class="py-docstring">    These state variables are: blending mode and function, texture</tt> </tt>
+<a name="L1128"></a><tt class="py-lineno">1128</tt>  <tt class="py-line"><tt class="py-docstring">    state and environment, the matrix mode (modelview or projection),</tt> </tt>
+<a name="L1129"></a><tt class="py-lineno">1129</tt>  <tt class="py-line"><tt class="py-docstring">    the modelview matrix, depth mode and settings. Therefore, if the</tt> </tt>
+<a name="L1130"></a><tt class="py-lineno">1130</tt>  <tt class="py-line"><tt class="py-docstring">    draw() method depends on specific values for any of these states,</tt> </tt>
+<a name="L1131"></a><tt class="py-lineno">1131</tt>  <tt class="py-line"><tt class="py-docstring">    it must specify its own values to OpenGL.</tt> </tt>
+<a name="L1132"></a><tt class="py-lineno">1132</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1133"></a><tt class="py-lineno">1133</tt>  <tt class="py-line"><tt class="py-docstring">    Finally, a well-behaved Stimulus subclass resets any OpenGL state</tt> </tt>
+<a name="L1134"></a><tt class="py-lineno">1134</tt>  <tt class="py-line"><tt class="py-docstring">    values other than those listed above to their initial state before</tt> </tt>
+<a name="L1135"></a><tt class="py-lineno">1135</tt>  <tt class="py-line"><tt class="py-docstring">    draw() and init_gl() were called.  In other words, before your</tt> </tt>
+<a name="L1136"></a><tt class="py-lineno">1136</tt>  <tt class="py-line"><tt class="py-docstring">    stimulus changes the state of an OpenGL variable, use</tt> </tt>
+<a name="L1137"></a><tt class="py-lineno">1137</tt>  <tt class="py-line"><tt class="py-docstring">    glGetBoolean, glGetInteger, glGetFloat, or a similar function to</tt> </tt>
+<a name="L1138"></a><tt class="py-lineno">1138</tt>  <tt class="py-line"><tt class="py-docstring">    query its value and restore it later.  For example, upon calling</tt> </tt>
+<a name="L1139"></a><tt class="py-lineno">1139</tt>  <tt class="py-line"><tt class="py-docstring">    the draw() method, the projection matrix will be that which was</tt> </tt>
+<a name="L1140"></a><tt class="py-lineno">1140</tt>  <tt class="py-line"><tt class="py-docstring">    set by the viewport. If the draw() method alters the projection</tt> </tt>
+<a name="L1141"></a><tt class="py-lineno">1141</tt>  <tt class="py-line"><tt class="py-docstring">    matrix, it must be restored. The glPushMatrix() and glPopMatrix()</tt> </tt>
+<a name="L1142"></a><tt class="py-lineno">1142</tt>  <tt class="py-line"><tt class="py-docstring">    commands provide an easy way to do this.</tt> </tt>
+<a name="L1143"></a><tt class="py-lineno">1143</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1144"></a><tt class="py-lineno">1144</tt>  <tt class="py-line"><tt class="py-docstring">    The default projection of Viewport maps eye coordinates in a 1:1</tt> </tt>
+<a name="L1145"></a><tt class="py-lineno">1145</tt>  <tt class="py-line"><tt class="py-docstring">    fashion to window coordinates (in other words, it sets eye</tt> </tt>
+<a name="L1146"></a><tt class="py-lineno">1146</tt>  <tt class="py-line"><tt class="py-docstring">    coordinates to use pixel units from the lower left corner of the</tt> </tt>
+<a name="L1147"></a><tt class="py-lineno">1147</tt>  <tt class="py-line"><tt class="py-docstring">    viewport). Therefore the default parameters for a stimulus should</tt> </tt>
+<a name="L1148"></a><tt class="py-lineno">1148</tt>  <tt class="py-line"><tt class="py-docstring">    specify pixel coordinates if possible (such as for a 2D</tt> </tt>
+<a name="L1149"></a><tt class="py-lineno">1149</tt>  <tt class="py-line"><tt class="py-docstring">    stimulus). Assuming a window size of 640 by 480 for the default</tt> </tt>
+<a name="L1150"></a><tt class="py-lineno">1150</tt>  <tt class="py-line"><tt class="py-docstring">    parameters is a pretty safe way to do things.</tt> </tt>
+<a name="L1151"></a><tt class="py-lineno">1151</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1152"></a><tt class="py-lineno">1152</tt>  <tt class="py-line"><tt class="py-docstring">    Also, be sure to check for any assumptions made about the system</tt> </tt>
+<a name="L1153"></a><tt class="py-lineno">1153</tt>  <tt class="py-line"><tt class="py-docstring">    in the __init__ method.  For example, if your stimulus needs alpha</tt> </tt>
+<a name="L1154"></a><tt class="py-lineno">1154</tt>  <tt class="py-line"><tt class="py-docstring">    in the framebuffer, check the value of</tt> </tt>
+<a name="L1155"></a><tt class="py-lineno">1155</tt>  <tt class="py-line"><tt class="py-docstring">    glGetIntegerv(GL_ALPHA_BITS) and raise an exception if it is not</tt> </tt>
+<a name="L1156"></a><tt class="py-lineno">1156</tt>  <tt class="py-line"><tt class="py-docstring">    available.</tt> </tt>
+<a name="L1157"></a><tt class="py-lineno">1157</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L1158"></a><tt class="py-lineno">1158</tt>  <tt class="py-line"> </tt>
+<a name="Stimulus.__init__"></a><div id="Stimulus.__init__-def"><a name="L1159"></a><tt class="py-lineno">1159</tt> <a class="py-toggle" href="#" id="Stimulus.__init__-toggle" onclick="return toggle('Stimulus.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.Core.Stimulus-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt><tt class="py-op">**</tt><tt class="py-param" [...]
+</div><div id="Stimulus.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Stimulus.__init__-expanded"><a name="L1160"></a><tt class="py-lineno">1160</tt>  <tt class="py-line">        <tt class="py-docstring">"""Instantiate and get ready to draw.</tt> </tt>
+<a name="L1161"></a><tt class="py-lineno">1161</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1162"></a><tt class="py-lineno">1162</tt>  <tt class="py-line"><tt class="py-docstring">        Set parameter values and create anything needed to draw the</tt> </tt>
+<a name="L1163"></a><tt class="py-lineno">1163</tt>  <tt class="py-line"><tt class="py-docstring">        stimulus including OpenGL state variables such display lists</tt> </tt>
+<a name="L1164"></a><tt class="py-lineno">1164</tt>  <tt class="py-line"><tt class="py-docstring">        and texture objects.</tt> </tt>
+<a name="L1165"></a><tt class="py-lineno">1165</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1166"></a><tt class="py-lineno">1166</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L1167"></a><tt class="py-lineno">1167</tt>  <tt class="py-line">        <tt id="link-311" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-311', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-312" class="py-name"><a title="VisionEgg.ClassWithParameters" class="py-name" href="#" onclick="return doclink('link-312', 'ClassWithParameters', 'link-43');">ClassWithParameters</a></tt><tt class="py-op">.</tt><tt  [...]
+VisionEgg.Configuration.Config.__init__
+VisionEgg.Core.FixationSpot.__init__
+VisionEgg.Core.FrameTimer.__init__
+VisionEgg.Core.ModelView.__init__
+VisionEgg.Core.OrthographicProjection.__init__
+VisionEgg.Core.OrthographicProjectionNoZClip.__init__
+VisionEgg.Core.PerspectiveProjection.__init__
+VisionEgg.Core.Projection.__init__
+VisionEgg.Core.ProjectionBaseClass.__init__
+VisionEgg.Core.Screen.__init__
+VisionEgg.Core.SimplePerspectiveProjection.__init__
+VisionEgg.Core.Stimulus.__init__
+VisionEgg.Core.Viewport.__init__
+VisionEgg.Daq.Channel.__init__
+VisionEgg.Daq.DaqMode.__init__
+VisionEgg.Daq.Device.__init__
+VisionEgg.Daq.Functionality.__init__
+VisionEgg.Daq.SignalType.__init__
+VisionEgg.DaqKeyboard.KeyboardTriggerInController.__init__
+VisionEgg.DaqLPT.LPTChannel.__init__
+VisionEgg.DaqLPT.LPTDevice.__init__
+VisionEgg.DaqLPT.LPTTriggerInController.__init__
+VisionEgg.DaqLPT.LPTTriggerOutController.__init__
+VisionEgg.Deprecated.Message.__init__
+VisionEgg.Dots.DotArea2D.__init__
+VisionEgg.FlowControl.ConstantController.__init__
+VisionEgg.FlowControl.Controller.__init__
+VisionEgg.FlowControl.EncapsulatedController.__init__
+VisionEgg.FlowControl.EvalStringController.__init__
+VisionEgg.FlowControl.ExecStringController.__init__
+VisionEgg.FlowControl.FunctionController.__init__
+VisionEgg.FlowControl.Presentation.__init__
+VisionEgg.GLTrace.Wrapper.__init__
+VisionEgg.GUI.AppWindow.__init__
+VisionEgg.GUI.GetKeypressDialog.__init__
+VisionEgg.GUI.GraphicsConfigurationWindow.__init__
+VisionEgg.GUI.InfoFrame.__init__
+VisionEgg.GUI.ProgressBar.__init__
+VisionEgg.GUI.ToplevelDialog.__init__
+VisionEgg.Gratings.SinGrating2D.__init__
+VisionEgg.Gratings.SinGrating3D.__init__
+VisionEgg.MoreStimuli.Arrow.__init__
+VisionEgg.MoreStimuli.FilledCircle.__init__
+VisionEgg.MoreStimuli.Rectangle3D.__init__
+VisionEgg.MoreStimuli.Target2D.__init__
+VisionEgg.ParameterTypes.AnyOf.__init__
+VisionEgg.ParameterTypes.Instance.__init__
+VisionEgg.ParameterTypes.Sequence.__init__
+VisionEgg.ParameterTypes.SubClass.__init__
+VisionEgg.PyroApps.AST_ext.AST_Visitor.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalMetaParameters.__init__
+VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.__init__
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.__init__
+VisionEgg.PyroApps.DropinGUI.DropinMetaParameters.__init__
+VisionEgg.PyroApps.DropinServer.DropinMetaController.__init__
+VisionEgg.PyroApps.EPhysGUI.AppWindow.__init__
+VisionEgg.PyroApps.EPhysGUI.BarButton.__init__
+VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase.__init__
+VisionEgg.PyroApps.EPhysGUI.GammaFrame.__init__
+VisionEgg.PyroApps.EPhysGUI.ImageSequenceLauncher.__init__
+VisionEgg.PyroApps.EPhysGUI.Loop.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopContainedObject.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopParamDialog.__init__
+VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.__init__
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.__init__
+VisionEgg.PyroApps.EPhysServer.EPhysServer.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingMetaParameters.__init__
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.GridGUI.GridControlFrame.__init__
+VisionEgg.PyroApps.GridGUI.GridMetaParameters.__init__
+VisionEgg.PyroApps.GridServer.GridMetaController.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetMetaParameters.__init__
+VisionEgg.PyroApps.MouseTargetServer.MousePositionController.__init__
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetOrientationController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetPositionController.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.CallbackEntry.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionParameters.__init__
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingMetaParameters.__init__
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumMetaParameters.__init__
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.__init__
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.__init__
+VisionEgg.PyroApps.TargetGUI.TargetMetaParameters.__init__
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.__init__
+VisionEgg.PyroClient.PyroClient.__init__
+VisionEgg.PyroHelpers.PyroConstantController.__init__
+VisionEgg.PyroHelpers.PyroEncapsulatedController.__init__
+VisionEgg.PyroHelpers.PyroEvalStringController.__init__
+VisionEgg.PyroHelpers.PyroExecStringController.__init__
+VisionEgg.PyroHelpers.PyroListenController.__init__
+VisionEgg.PyroHelpers.PyroLocalDictController.__init__
+VisionEgg.PyroHelpers.PyroServer.__init__
+VisionEgg.QuickTime.MovieTexture.__init__
+VisionEgg.ResponseControl.KeyboardResponseController.__init__
+VisionEgg.ResponseControl.ResponseController.__init__
+VisionEgg.SphereMap.AzElGrid.__init__
+VisionEgg.SphereMap.SphereGrating.__init__
+VisionEgg.SphereMap.SphereMap.__init__
+VisionEgg.SphereMap.SphereWindow.__init__
+VisionEgg.TCPController.SocketListenController.__init__
+VisionEgg.TCPController.TCPController.__init__
+VisionEgg.TCPController.TCPServer.__init__
+VisionEgg.Text.BitmapText.__init__
+VisionEgg.Text.GlutTextBase.__init__
+VisionEgg.Text.StrokeText.__init__
+VisionEgg.Text.Text.__init__
+VisionEgg.Textures.FixationCross.__init__
+VisionEgg.Textures.Mask2D.__init__
+VisionEgg.Textures.SpinningDrum.__init__
+VisionEgg.Textures.Texture.__init__
+VisionEgg.Textures.TextureFromFile.__init__
+VisionEgg.Textures.TextureObject.__init__
+VisionEgg.Textures.TextureStimulusBaseClass.__init__
+VisionEgg.ThreeDeeMath.TransformMatrix.__init__
+VisionEgg.WrappedText.WrappedText.__init__
+VisionEgg.qtmovie.Movie.__init__
+VisionEgg.qtmovie.Rect.__init__" class="py-name" href="#" onclick="return doclink('link-313', '__init__', 'link-44');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt><tt class="py-op">**</tt><tt class="py-name">kw</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1168"></a><tt class="py-lineno">1168</tt>  <tt class="py-line"> </tt>
+<a name="Stimulus.draw"></a><div id="Stimulus.draw-def"><a name="L1169"></a><tt class="py-lineno">1169</tt> <a class="py-toggle" href="#" id="Stimulus.draw-toggle" onclick="return toggle('Stimulus.draw');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.Core.Stimulus-class.html#draw">draw</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Stimulus.draw-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Stimulus.draw-expanded"><a name="L1170"></a><tt class="py-lineno">1170</tt>  <tt class="py-line">        <tt class="py-docstring">"""Draw the stimulus. (Called by Viewport instance.)</tt> </tt>
+<a name="L1171"></a><tt class="py-lineno">1171</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1172"></a><tt class="py-lineno">1172</tt>  <tt class="py-line"><tt class="py-docstring">        This method is called every frame.  This method actually</tt> </tt>
+<a name="L1173"></a><tt class="py-lineno">1173</tt>  <tt class="py-line"><tt class="py-docstring">        performs the OpenGL calls to draw the stimulus.</tt> </tt>
+<a name="L1174"></a><tt class="py-lineno">1174</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1175"></a><tt class="py-lineno">1175</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L1176"></a><tt class="py-lineno">1176</tt>  <tt class="py-line">        <tt class="py-keyword">pass</tt> </tt>
+</div></div><a name="L1177"></a><tt class="py-lineno">1177</tt>  <tt class="py-line"> </tt>
+<a name="L1178"></a><tt class="py-lineno">1178</tt>  <tt class="py-line"><tt class="py-comment">####################################################################</tt> </tt>
+<a name="L1179"></a><tt class="py-lineno">1179</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L1180"></a><tt class="py-lineno">1180</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#        Viewport</tt> </tt>
+<a name="L1181"></a><tt class="py-lineno">1181</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L1182"></a><tt class="py-lineno">1182</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">####################################################################</tt> </tt>
+<a name="L1183"></a><tt class="py-lineno">1183</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="Viewport"></a><div id="Viewport-def"><a name="L1184"></a><tt class="py-lineno">1184</tt> <a class="py-toggle" href="#" id="Viewport-toggle" onclick="return toggle('Viewport');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.Core.Viewport-class.html">Viewport</a><tt class="py-op">(</tt><tt class="py-base-class">VisionEgg</tt><tt class="py-op">.</tt><tt class="py-base-class">ClassWithParameters</tt><tt class="py-op">)</tt><tt clas [...]
+</div><div id="Viewport-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="Viewport-expanded"><a name="L1185"></a><tt class="py-lineno">1185</tt>  <tt class="py-line">    <tt class="py-docstring">"""Connects stimuli to a screen.</tt> </tt>
+<a name="L1186"></a><tt class="py-lineno">1186</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1187"></a><tt class="py-lineno">1187</tt>  <tt class="py-line"><tt class="py-docstring">    A viewport defines a (possibly clipped region) of the screen on</tt> </tt>
+<a name="L1188"></a><tt class="py-lineno">1188</tt>  <tt class="py-line"><tt class="py-docstring">    which stimuli are drawn.</tt> </tt>
+<a name="L1189"></a><tt class="py-lineno">1189</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1190"></a><tt class="py-lineno">1190</tt>  <tt class="py-line"><tt class="py-docstring">    A screen may have multiple viewports.  The viewports may be</tt> </tt>
+<a name="L1191"></a><tt class="py-lineno">1191</tt>  <tt class="py-line"><tt class="py-docstring">    overlapping.</tt> </tt>
+<a name="L1192"></a><tt class="py-lineno">1192</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1193"></a><tt class="py-lineno">1193</tt>  <tt class="py-line"><tt class="py-docstring">    A viewport may have multiple stimuli.</tt> </tt>
+<a name="L1194"></a><tt class="py-lineno">1194</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1195"></a><tt class="py-lineno">1195</tt>  <tt class="py-line"><tt class="py-docstring">    A single stimulus may be drawn simultaneously by several</tt> </tt>
+<a name="L1196"></a><tt class="py-lineno">1196</tt>  <tt class="py-line"><tt class="py-docstring">    viewports, although this is typically useful only for 3D stimuli</tt> </tt>
+<a name="L1197"></a><tt class="py-lineno">1197</tt>  <tt class="py-line"><tt class="py-docstring">    to represent different views of the same object.</tt> </tt>
+<a name="L1198"></a><tt class="py-lineno">1198</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1199"></a><tt class="py-lineno">1199</tt>  <tt class="py-line"><tt class="py-docstring">    The coordinates of the stimulus are converted to screen</tt> </tt>
+<a name="L1200"></a><tt class="py-lineno">1200</tt>  <tt class="py-line"><tt class="py-docstring">    coordinates via several steps, the most important of which is the</tt> </tt>
+<a name="L1201"></a><tt class="py-lineno">1201</tt>  <tt class="py-line"><tt class="py-docstring">    projection, which is defined by an instance of the Projection</tt> </tt>
+<a name="L1202"></a><tt class="py-lineno">1202</tt>  <tt class="py-line"><tt class="py-docstring">    class.</tt> </tt>
+<a name="L1203"></a><tt class="py-lineno">1203</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1204"></a><tt class="py-lineno">1204</tt>  <tt class="py-line"><tt class="py-docstring">    By default, a viewport has a projection which maps eye coordinates</tt> </tt>
+<a name="L1205"></a><tt class="py-lineno">1205</tt>  <tt class="py-line"><tt class="py-docstring">    to viewport coordinates in 1:1 manner.  In other words, eye</tt> </tt>
+<a name="L1206"></a><tt class="py-lineno">1206</tt>  <tt class="py-line"><tt class="py-docstring">    coordinates specify pixel location in the viewport.</tt> </tt>
+<a name="L1207"></a><tt class="py-lineno">1207</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1208"></a><tt class="py-lineno">1208</tt>  <tt class="py-line"><tt class="py-docstring">    For cases where pixel units are not natural to describe</tt> </tt>
+<a name="L1209"></a><tt class="py-lineno">1209</tt>  <tt class="py-line"><tt class="py-docstring">    coordinates of a stimulus, the application should specify the a</tt> </tt>
+<a name="L1210"></a><tt class="py-lineno">1210</tt>  <tt class="py-line"><tt class="py-docstring">    projection other than the default.  This is usually the case for</tt> </tt>
+<a name="L1211"></a><tt class="py-lineno">1211</tt>  <tt class="py-line"><tt class="py-docstring">    3D stimuli.</tt> </tt>
+<a name="L1212"></a><tt class="py-lineno">1212</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1213"></a><tt class="py-lineno">1213</tt>  <tt class="py-line"><tt class="py-docstring">    For details of the projection and clipping process, see the</tt> </tt>
+<a name="L1214"></a><tt class="py-lineno">1214</tt>  <tt class="py-line"><tt class="py-docstring">    section 'Coordinate Transformations' in the book/online document</tt> </tt>
+<a name="L1215"></a><tt class="py-lineno">1215</tt>  <tt class="py-line"><tt class="py-docstring">    'The OpenGL Graphics System: A Specification'</tt> </tt>
+<a name="L1216"></a><tt class="py-lineno">1216</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1217"></a><tt class="py-lineno">1217</tt>  <tt class="py-line"><tt class="py-docstring">    Parameters</tt> </tt>
+<a name="L1218"></a><tt class="py-lineno">1218</tt>  <tt class="py-line"><tt class="py-docstring">    ==========</tt> </tt>
+<a name="L1219"></a><tt class="py-lineno">1219</tt>  <tt class="py-line"><tt class="py-docstring">    anchor        -- How position parameter is interpreted (String)</tt> </tt>
+<a name="L1220"></a><tt class="py-lineno">1220</tt>  <tt class="py-line"><tt class="py-docstring">                     Default: lowerleft</tt> </tt>
+<a name="L1221"></a><tt class="py-lineno">1221</tt>  <tt class="py-line"><tt class="py-docstring">    camera_matrix -- extrinsic camera parameter matrix (position and orientation) (Instance of <class 'VisionEgg.Core.ModelView'>)</tt> </tt>
+<a name="L1222"></a><tt class="py-lineno">1222</tt>  <tt class="py-line"><tt class="py-docstring">                     Default: (determined at runtime)</tt> </tt>
+<a name="L1223"></a><tt class="py-lineno">1223</tt>  <tt class="py-line"><tt class="py-docstring">    depth_range   -- depth range (in object units) for rendering (Sequence2 of Real)</tt> </tt>
+<a name="L1224"></a><tt class="py-lineno">1224</tt>  <tt class="py-line"><tt class="py-docstring">                     Default: (0, 1)</tt> </tt>
+<a name="L1225"></a><tt class="py-lineno">1225</tt>  <tt class="py-line"><tt class="py-docstring">    position      -- Position (in pixel units) within the screen (Sequence2 of Real)</tt> </tt>
+<a name="L1226"></a><tt class="py-lineno">1226</tt>  <tt class="py-line"><tt class="py-docstring">                     Default: (0, 0)</tt> </tt>
+<a name="L1227"></a><tt class="py-lineno">1227</tt>  <tt class="py-line"><tt class="py-docstring">    projection    -- intrinsic camera parameter matrix (field of view, focal length, aspect ratio) (Instance of <class 'VisionEgg.Core.Projection'>)</tt> </tt>
+<a name="L1228"></a><tt class="py-lineno">1228</tt>  <tt class="py-line"><tt class="py-docstring">                     Default: (determined at runtime)</tt> </tt>
+<a name="L1229"></a><tt class="py-lineno">1229</tt>  <tt class="py-line"><tt class="py-docstring">    screen        -- The screen in which this viewport is drawn (Instance of <class 'VisionEgg.Core.Screen'>)</tt> </tt>
+<a name="L1230"></a><tt class="py-lineno">1230</tt>  <tt class="py-line"><tt class="py-docstring">                     Default: (determined at runtime)</tt> </tt>
+<a name="L1231"></a><tt class="py-lineno">1231</tt>  <tt class="py-line"><tt class="py-docstring">    size          -- Size (in pixel units) (Sequence2 of Real)</tt> </tt>
+<a name="L1232"></a><tt class="py-lineno">1232</tt>  <tt class="py-line"><tt class="py-docstring">                     Default: (determined at runtime)</tt> </tt>
+<a name="L1233"></a><tt class="py-lineno">1233</tt>  <tt class="py-line"><tt class="py-docstring">    stimuli       -- sequence of stimuli to draw in screen (Sequence of Instance of <class 'VisionEgg.Core.Stimulus'>)</tt> </tt>
+<a name="L1234"></a><tt class="py-lineno">1234</tt>  <tt class="py-line"><tt class="py-docstring">                     Default: (determined at runtime)</tt> </tt>
+<a name="L1235"></a><tt class="py-lineno">1235</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L1236"></a><tt class="py-lineno">1236</tt>  <tt class="py-line"> </tt>
+<a name="L1237"></a><tt class="py-lineno">1237</tt>  <tt class="py-line">    <tt id="link-314" class="py-name"><a title="VisionEgg.ClassWithParameters.parameters_and_defaults
+VisionEgg.Core.FixationSpot.parameters_and_defaults
+VisionEgg.Core.ProjectionBaseClass.parameters_and_defaults
+VisionEgg.Core.Screen.parameters_and_defaults
+VisionEgg.Core.Viewport.parameters_and_defaults
+VisionEgg.Daq.Buffered.parameters_and_defaults
+VisionEgg.Dots.DotArea2D.parameters_and_defaults
+VisionEgg.FlowControl.Presentation.parameters_and_defaults
+VisionEgg.Gratings.AlphaGratingCommon.parameters_and_defaults
+VisionEgg.Gratings.LuminanceGratingCommon.parameters_and_defaults
+VisionEgg.Gratings.SinGrating2D.parameters_and_defaults
+VisionEgg.Gratings.SinGrating3D.parameters_and_defaults
+VisionEgg.MoreStimuli.Arrow.parameters_and_defaults
+VisionEgg.MoreStimuli.FilledCircle.parameters_and_defaults
+VisionEgg.MoreStimuli.Rectangle3D.parameters_and_defaults
+VisionEgg.MoreStimuli.Target2D.parameters_and_defaults
+VisionEgg.PyroApps.EPhysGUI.Loop.parameters_and_defaults
+VisionEgg.SphereMap.AzElGrid.parameters_and_defaults
+VisionEgg.SphereMap.SphereGrating.parameters_and_defaults
+VisionEgg.SphereMap.SphereMap.parameters_and_defaults
+VisionEgg.SphereMap.SphereWindow.parameters_and_defaults
+VisionEgg.Text.BitmapText.parameters_and_defaults
+VisionEgg.Text.GlutTextBase.parameters_and_defaults
+VisionEgg.Text.StrokeText.parameters_and_defaults
+VisionEgg.Text.Text.parameters_and_defaults
+VisionEgg.Textures.FixationCross.parameters_and_defaults
+VisionEgg.Textures.SpinningDrum.parameters_and_defaults
+VisionEgg.Textures.TextureStimulus.parameters_and_defaults
+VisionEgg.Textures.TextureStimulus3D.parameters_and_defaults
+VisionEgg.Textures.TextureStimulusBaseClass.parameters_and_defaults
+VisionEgg.WrappedText.WrappedText.parameters_and_defaults" class="py-name" href="#" onclick="return doclink('link-314', 'parameters_and_defaults', 'link-15');">parameters_and_defaults</a></tt> <tt class="py-op">=</tt> <tt id="link-315" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-315', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-316" class="py-name"><a title="VisionEgg.ParameterDefinition" class="py-name"  [...]
+<a name="L1238"></a><tt class="py-lineno">1238</tt>  <tt class="py-line">        <tt class="py-string">'screen'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
+<a name="L1239"></a><tt class="py-lineno">1239</tt>  <tt class="py-line">                  <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-317" class="py-name" targets="Class VisionEgg.ParameterTypes.Instance=VisionEgg.ParameterTypes.Instance-class.html"><a title="VisionEgg.ParameterTypes.Instance" class="py-name" href="#" onclick="return doclink('link-317', 'Instance', 'link-317');">Instance</a></tt><tt class="py-op">(</tt><tt id="link-318" class="py-name"><a title [...]
+<a name="L1240"></a><tt class="py-lineno">1240</tt>  <tt class="py-line">                  <tt class="py-string">'The screen in which this viewport is drawn'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L1241"></a><tt class="py-lineno">1241</tt>  <tt class="py-line">        <tt class="py-string">'position'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">,</tt><tt class="py-number">0</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L1242"></a><tt class="py-lineno">1242</tt>  <tt class="py-line">                    <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-319" class="py-name"><a title="VisionEgg.ParameterTypes.Sequence2" class="py-name" href="#" onclick="return doclink('link-319', 'Sequence2', 'link-26');">Sequence2</a></tt><tt class="py-op">(</tt><tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-320" class="py-name"><a title="VisionEgg.ParameterTypes.Real" c [...]
+<a name="L1243"></a><tt class="py-lineno">1243</tt>  <tt class="py-line">                    <tt class="py-string">'Position (in pixel units) within the screen'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L1244"></a><tt class="py-lineno">1244</tt>  <tt class="py-line">        <tt class="py-string">'anchor'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-string">'lowerleft'</tt><tt class="py-op">,</tt> </tt>
+<a name="L1245"></a><tt class="py-lineno">1245</tt>  <tt class="py-line">                  <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-321" class="py-name" targets="Class VisionEgg.ParameterTypes.String=VisionEgg.ParameterTypes.String-class.html"><a title="VisionEgg.ParameterTypes.String" class="py-name" href="#" onclick="return doclink('link-321', 'String', 'link-321');">String</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L1246"></a><tt class="py-lineno">1246</tt>  <tt class="py-line">                  <tt class="py-string">'How position parameter is interpreted'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L1247"></a><tt class="py-lineno">1247</tt>  <tt class="py-line">        <tt class="py-string">'depth_range'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">,</tt><tt class="py-number">1</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L1248"></a><tt class="py-lineno">1248</tt>  <tt class="py-line">                       <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-322" class="py-name"><a title="VisionEgg.ParameterTypes.Sequence2" class="py-name" href="#" onclick="return doclink('link-322', 'Sequence2', 'link-26');">Sequence2</a></tt><tt class="py-op">(</tt><tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-323" class="py-name"><a title="VisionEgg.ParameterTypes.Real [...]
+<a name="L1249"></a><tt class="py-lineno">1249</tt>  <tt class="py-line">                       <tt class="py-string">'depth range (in object units) for rendering'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L1250"></a><tt class="py-lineno">1250</tt>  <tt class="py-line">        <tt class="py-string">'size'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-comment"># will use screen.size if not specified</tt> </tt>
+<a name="L1251"></a><tt class="py-lineno">1251</tt>  <tt class="py-line">                <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-324" class="py-name"><a title="VisionEgg.ParameterTypes.Sequence2" class="py-name" href="#" onclick="return doclink('link-324', 'Sequence2', 'link-26');">Sequence2</a></tt><tt class="py-op">(</tt><tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-325" class="py-name"><a title="VisionEgg.ParameterTypes.Real" class [...]
+<a name="L1252"></a><tt class="py-lineno">1252</tt>  <tt class="py-line">                <tt class="py-string">'Size (in pixel units)'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L1253"></a><tt class="py-lineno">1253</tt>  <tt class="py-line">        <tt class="py-string">'projection'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
+<a name="L1254"></a><tt class="py-lineno">1254</tt>  <tt class="py-line">                      <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-326" class="py-name"><a title="VisionEgg.ParameterTypes.Instance" class="py-name" href="#" onclick="return doclink('link-326', 'Instance', 'link-317');">Instance</a></tt><tt class="py-op">(</tt><tt id="link-327" class="py-name"><a title="VisionEgg.Core.Projection" class="py-name" href="#" onclick="return doclink('link-327', ' [...]
+<a name="L1255"></a><tt class="py-lineno">1255</tt>  <tt class="py-line">                      <tt class="py-string">'intrinsic camera parameter matrix (field of view, focal length, aspect ratio)'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L1256"></a><tt class="py-lineno">1256</tt>  <tt class="py-line">        <tt class="py-string">'camera_matrix'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
+<a name="L1257"></a><tt class="py-lineno">1257</tt>  <tt class="py-line">                         <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-328" class="py-name"><a title="VisionEgg.ParameterTypes.Instance" class="py-name" href="#" onclick="return doclink('link-328', 'Instance', 'link-317');">Instance</a></tt><tt class="py-op">(</tt><tt id="link-329" class="py-name" targets="Class VisionEgg.Core.ModelView=VisionEgg.Core.ModelView-class.html"><a title="VisionEgg [...]
+<a name="L1258"></a><tt class="py-lineno">1258</tt>  <tt class="py-line">                         <tt class="py-string">'extrinsic camera parameter matrix (position and orientation)'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L1259"></a><tt class="py-lineno">1259</tt>  <tt class="py-line">        <tt class="py-string">'stimuli'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
+<a name="L1260"></a><tt class="py-lineno">1260</tt>  <tt class="py-line">                   <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-330" class="py-name" targets="Class VisionEgg.ParameterTypes.Sequence=VisionEgg.ParameterTypes.Sequence-class.html"><a title="VisionEgg.ParameterTypes.Sequence" class="py-name" href="#" onclick="return doclink('link-330', 'Sequence', 'link-330');">Sequence</a></tt><tt class="py-op">(</tt><tt class="py-name">ve_types</tt><tt clas [...]
+<a name="L1261"></a><tt class="py-lineno">1261</tt>  <tt class="py-line">                   <tt class="py-string">'sequence of stimuli to draw in screen'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L1262"></a><tt class="py-lineno">1262</tt>  <tt class="py-line">        <tt class="py-string">'lowerleft'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt>  <tt class="py-comment"># DEPRECATED -- don't use</tt> </tt>
+<a name="L1263"></a><tt class="py-lineno">1263</tt>  <tt class="py-line">                     <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-333" class="py-name"><a title="VisionEgg.ParameterTypes.Sequence2" class="py-name" href="#" onclick="return doclink('link-333', 'Sequence2', 'link-26');">Sequence2</a></tt><tt class="py-op">(</tt><tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-334" class="py-name"><a title="VisionEgg.ParameterTypes.Real"  [...]
+<a name="L1264"></a><tt class="py-lineno">1264</tt>  <tt class="py-line">                     <tt class="py-string">'position (in pixel units) of lower-left viewport corner'</tt><tt class="py-op">,</tt> </tt>
+<a name="L1265"></a><tt class="py-lineno">1265</tt>  <tt class="py-line">                     <tt id="link-335" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-335', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-336" class="py-name"><a title="VisionEgg.ParameterDefinition" class="py-name" href="#" onclick="return doclink('link-336', 'ParameterDefinition', 'link-17');">ParameterDefinition</a></tt><tt class="py-o [...]
+<a name="L1266"></a><tt class="py-lineno">1266</tt>  <tt class="py-line">        <tt class="py-op">}</tt><tt class="py-op">)</tt> </tt>
+<a name="L1267"></a><tt class="py-lineno">1267</tt>  <tt class="py-line"> </tt>
+<a name="L1268"></a><tt class="py-lineno">1268</tt>  <tt class="py-line">    <tt class="py-name">__slots__</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt> </tt>
+<a name="L1269"></a><tt class="py-lineno">1269</tt>  <tt class="py-line">        <tt class="py-string">'_is_drawing'</tt><tt class="py-op">,</tt> </tt>
+<a name="L1270"></a><tt class="py-lineno">1270</tt>  <tt class="py-line">        <tt class="py-op">)</tt> </tt>
+<a name="L1271"></a><tt class="py-lineno">1271</tt>  <tt class="py-line"> </tt>
+<a name="Viewport.__init__"></a><div id="Viewport.__init__-def"><a name="L1272"></a><tt class="py-lineno">1272</tt> <a class="py-toggle" href="#" id="Viewport.__init__-toggle" onclick="return toggle('Viewport.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.Core.Viewport-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt><tt class="py-op">**</tt><tt class="py-param" [...]
+</div><div id="Viewport.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Viewport.__init__-expanded"><a name="L1273"></a><tt class="py-lineno">1273</tt>  <tt class="py-line">        <tt class="py-docstring">"""Create a new instance.</tt> </tt>
+<a name="L1274"></a><tt class="py-lineno">1274</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1275"></a><tt class="py-lineno">1275</tt>  <tt class="py-line"><tt class="py-docstring">        Required arguments:</tt> </tt>
+<a name="L1276"></a><tt class="py-lineno">1276</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1277"></a><tt class="py-lineno">1277</tt>  <tt class="py-line"><tt class="py-docstring">        screen</tt> </tt>
+<a name="L1278"></a><tt class="py-lineno">1278</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1279"></a><tt class="py-lineno">1279</tt>  <tt class="py-line"><tt class="py-docstring">        Optional arguments (specify parameter value other than default):</tt> </tt>
+<a name="L1280"></a><tt class="py-lineno">1280</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1281"></a><tt class="py-lineno">1281</tt>  <tt class="py-line"><tt class="py-docstring">        position -- defaults to (0,0), position relative to screen by anchor (see below)</tt> </tt>
+<a name="L1282"></a><tt class="py-lineno">1282</tt>  <tt class="py-line"><tt class="py-docstring">        anchor -- defaults to 'lowerleft'</tt> </tt>
+<a name="L1283"></a><tt class="py-lineno">1283</tt>  <tt class="py-line"><tt class="py-docstring">        size -- defaults to screen.size</tt> </tt>
+<a name="L1284"></a><tt class="py-lineno">1284</tt>  <tt class="py-line"><tt class="py-docstring">        projection -- defaults to self.make_new_pixel_coord_projection()</tt> </tt>
+<a name="L1285"></a><tt class="py-lineno">1285</tt>  <tt class="py-line"><tt class="py-docstring">        stimuli -- defaults to empty list</tt> </tt>
+<a name="L1286"></a><tt class="py-lineno">1286</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L1287"></a><tt class="py-lineno">1287</tt>  <tt class="py-line">        <tt id="link-338" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-338', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-339" class="py-name"><a title="VisionEgg.ClassWithParameters" class="py-name" href="#" onclick="return doclink('link-339', 'ClassWithParameters', 'link-43');">ClassWithParameters</a></tt><tt class="py-op">.</tt><tt  [...]
+VisionEgg.Configuration.Config.__init__
+VisionEgg.Core.FixationSpot.__init__
+VisionEgg.Core.FrameTimer.__init__
+VisionEgg.Core.ModelView.__init__
+VisionEgg.Core.OrthographicProjection.__init__
+VisionEgg.Core.OrthographicProjectionNoZClip.__init__
+VisionEgg.Core.PerspectiveProjection.__init__
+VisionEgg.Core.Projection.__init__
+VisionEgg.Core.ProjectionBaseClass.__init__
+VisionEgg.Core.Screen.__init__
+VisionEgg.Core.SimplePerspectiveProjection.__init__
+VisionEgg.Core.Stimulus.__init__
+VisionEgg.Core.Viewport.__init__
+VisionEgg.Daq.Channel.__init__
+VisionEgg.Daq.DaqMode.__init__
+VisionEgg.Daq.Device.__init__
+VisionEgg.Daq.Functionality.__init__
+VisionEgg.Daq.SignalType.__init__
+VisionEgg.DaqKeyboard.KeyboardTriggerInController.__init__
+VisionEgg.DaqLPT.LPTChannel.__init__
+VisionEgg.DaqLPT.LPTDevice.__init__
+VisionEgg.DaqLPT.LPTTriggerInController.__init__
+VisionEgg.DaqLPT.LPTTriggerOutController.__init__
+VisionEgg.Deprecated.Message.__init__
+VisionEgg.Dots.DotArea2D.__init__
+VisionEgg.FlowControl.ConstantController.__init__
+VisionEgg.FlowControl.Controller.__init__
+VisionEgg.FlowControl.EncapsulatedController.__init__
+VisionEgg.FlowControl.EvalStringController.__init__
+VisionEgg.FlowControl.ExecStringController.__init__
+VisionEgg.FlowControl.FunctionController.__init__
+VisionEgg.FlowControl.Presentation.__init__
+VisionEgg.GLTrace.Wrapper.__init__
+VisionEgg.GUI.AppWindow.__init__
+VisionEgg.GUI.GetKeypressDialog.__init__
+VisionEgg.GUI.GraphicsConfigurationWindow.__init__
+VisionEgg.GUI.InfoFrame.__init__
+VisionEgg.GUI.ProgressBar.__init__
+VisionEgg.GUI.ToplevelDialog.__init__
+VisionEgg.Gratings.SinGrating2D.__init__
+VisionEgg.Gratings.SinGrating3D.__init__
+VisionEgg.MoreStimuli.Arrow.__init__
+VisionEgg.MoreStimuli.FilledCircle.__init__
+VisionEgg.MoreStimuli.Rectangle3D.__init__
+VisionEgg.MoreStimuli.Target2D.__init__
+VisionEgg.ParameterTypes.AnyOf.__init__
+VisionEgg.ParameterTypes.Instance.__init__
+VisionEgg.ParameterTypes.Sequence.__init__
+VisionEgg.ParameterTypes.SubClass.__init__
+VisionEgg.PyroApps.AST_ext.AST_Visitor.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalMetaParameters.__init__
+VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.__init__
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.__init__
+VisionEgg.PyroApps.DropinGUI.DropinMetaParameters.__init__
+VisionEgg.PyroApps.DropinServer.DropinMetaController.__init__
+VisionEgg.PyroApps.EPhysGUI.AppWindow.__init__
+VisionEgg.PyroApps.EPhysGUI.BarButton.__init__
+VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase.__init__
+VisionEgg.PyroApps.EPhysGUI.GammaFrame.__init__
+VisionEgg.PyroApps.EPhysGUI.ImageSequenceLauncher.__init__
+VisionEgg.PyroApps.EPhysGUI.Loop.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopContainedObject.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopParamDialog.__init__
+VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.__init__
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.__init__
+VisionEgg.PyroApps.EPhysServer.EPhysServer.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingMetaParameters.__init__
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.GridGUI.GridControlFrame.__init__
+VisionEgg.PyroApps.GridGUI.GridMetaParameters.__init__
+VisionEgg.PyroApps.GridServer.GridMetaController.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetMetaParameters.__init__
+VisionEgg.PyroApps.MouseTargetServer.MousePositionController.__init__
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetOrientationController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetPositionController.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.CallbackEntry.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionParameters.__init__
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingMetaParameters.__init__
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumMetaParameters.__init__
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.__init__
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.__init__
+VisionEgg.PyroApps.TargetGUI.TargetMetaParameters.__init__
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.__init__
+VisionEgg.PyroClient.PyroClient.__init__
+VisionEgg.PyroHelpers.PyroConstantController.__init__
+VisionEgg.PyroHelpers.PyroEncapsulatedController.__init__
+VisionEgg.PyroHelpers.PyroEvalStringController.__init__
+VisionEgg.PyroHelpers.PyroExecStringController.__init__
+VisionEgg.PyroHelpers.PyroListenController.__init__
+VisionEgg.PyroHelpers.PyroLocalDictController.__init__
+VisionEgg.PyroHelpers.PyroServer.__init__
+VisionEgg.QuickTime.MovieTexture.__init__
+VisionEgg.ResponseControl.KeyboardResponseController.__init__
+VisionEgg.ResponseControl.ResponseController.__init__
+VisionEgg.SphereMap.AzElGrid.__init__
+VisionEgg.SphereMap.SphereGrating.__init__
+VisionEgg.SphereMap.SphereMap.__init__
+VisionEgg.SphereMap.SphereWindow.__init__
+VisionEgg.TCPController.SocketListenController.__init__
+VisionEgg.TCPController.TCPController.__init__
+VisionEgg.TCPController.TCPServer.__init__
+VisionEgg.Text.BitmapText.__init__
+VisionEgg.Text.GlutTextBase.__init__
+VisionEgg.Text.StrokeText.__init__
+VisionEgg.Text.Text.__init__
+VisionEgg.Textures.FixationCross.__init__
+VisionEgg.Textures.Mask2D.__init__
+VisionEgg.Textures.SpinningDrum.__init__
+VisionEgg.Textures.Texture.__init__
+VisionEgg.Textures.TextureFromFile.__init__
+VisionEgg.Textures.TextureObject.__init__
+VisionEgg.Textures.TextureStimulusBaseClass.__init__
+VisionEgg.ThreeDeeMath.TransformMatrix.__init__
+VisionEgg.WrappedText.WrappedText.__init__
+VisionEgg.qtmovie.Movie.__init__
+VisionEgg.qtmovie.Rect.__init__" class="py-name" href="#" onclick="return doclink('link-340', '__init__', 'link-44');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt><tt class="py-op">**</tt><tt class="py-name">kw</tt><tt class="py-op">)</tt> </tt>
+<a name="L1288"></a><tt class="py-lineno">1288</tt>  <tt class="py-line"> </tt>
+<a name="L1289"></a><tt class="py-lineno">1289</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">screen</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L1290"></a><tt class="py-lineno">1290</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">"Must specify screen when creating an instance of Viewport."</tt><tt class="py-op">)</tt> </tt>
+<a name="L1291"></a><tt class="py-lineno">1291</tt>  <tt class="py-line"> </tt>
+<a name="L1292"></a><tt class="py-lineno">1292</tt>  <tt class="py-line">        <tt class="py-name">p</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt> <tt class="py-comment"># shorthand</tt> </tt>
+<a name="L1293"></a><tt class="py-lineno">1293</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt id="link-341" class="py-name"><a title="VisionEgg.Core.Screen.size" class="py-name" href="#" onclick="return doclink('link-341', 'size', 'link-45');">size</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L1294"></a><tt class="py-lineno">1294</tt>  <tt class="py-line">            <tt class="py-name">p</tt><tt class="py-op">.</tt><tt id="link-342" class="py-name"><a title="VisionEgg.Core.Screen.size" class="py-name" href="#" onclick="return doclink('link-342', 'size', 'link-45');">size</a></tt> <tt class="py-op">=</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">screen</tt><tt class="py-op">.</tt><tt class="py-name">constant_parameters</tt><tt class="py-o [...]
+<a name="L1295"></a><tt class="py-lineno">1295</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">projection</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L1296"></a><tt class="py-lineno">1296</tt>  <tt class="py-line">            <tt class="py-comment"># Default projection maps eye coordinates 1:1 on window (pixel) coordinates</tt> </tt>
+<a name="L1297"></a><tt class="py-lineno">1297</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">projection</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-344" class="py-name" targets="Method VisionEgg.Core.Viewport.make_new_pixel_coord_projection()=VisionEgg.Core.Viewport-class.html#make_new_pixel_coord_projection"><a title="VisionEgg.Core.Viewport.make_ [...]
+<a name="L1298"></a><tt class="py-lineno">1298</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">camera_matrix</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L1299"></a><tt class="py-lineno">1299</tt>  <tt class="py-line">            <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">camera_matrix</tt> <tt class="py-op">=</tt> <tt id="link-345" class="py-name"><a title="VisionEgg.Core.ModelView" class="py-name" href="#" onclick="return doclink('link-345', 'ModelView', 'link-329');">ModelView</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1300"></a><tt class="py-lineno">1300</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">stimuli</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L1301"></a><tt class="py-lineno">1301</tt>  <tt class="py-line">            <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">stimuli</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L1302"></a><tt class="py-lineno">1302</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_is_drawing</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
+</div><a name="L1303"></a><tt class="py-lineno">1303</tt>  <tt class="py-line"> </tt>
+<a name="Viewport.make_new_pixel_coord_projection"></a><div id="Viewport.make_new_pixel_coord_projection-def"><a name="L1304"></a><tt class="py-lineno">1304</tt> <a class="py-toggle" href="#" id="Viewport.make_new_pixel_coord_projection-toggle" onclick="return toggle('Viewport.make_new_pixel_coord_projection');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.Core.Viewport-class.html#make_new_pixel_coord_projection">make_new_pixel_coord [...]
+</div><div id="Viewport.make_new_pixel_coord_projection-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Viewport.make_new_pixel_coord_projection-expanded"><a name="L1305"></a><tt class="py-lineno">1305</tt>  <tt class="py-line">        <tt class="py-docstring">"""Create instance of Projection mapping eye coordinates 1:1 with pixel coordinates."""</tt> </tt>
+<a name="L1306"></a><tt class="py-lineno">1306</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt id="link-346" class="py-name" targets="Class VisionEgg.Core.OrthographicProjectionNoZClip=VisionEgg.Core.OrthographicProjectionNoZClip-class.html"><a title="VisionEgg.Core.OrthographicProjectionNoZClip" class="py-name" href="#" onclick="return doclink('link-346', 'OrthographicProjectionNoZClip', 'link-346');">OrthographicProjectionNoZClip</a></tt><tt class="py-op">(</tt [...]
+<a name="L1307"></a><tt class="py-lineno">1307</tt>  <tt class="py-line">                                             <tt class="py-name">bottom</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">,</tt><tt class="py-name">top</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt id="link-350" class="py-name"><a title="VisionEgg.Core.Screen.size" class="py-name" href="#" onclic [...]
+</div><a name="L1308"></a><tt class="py-lineno">1308</tt>  <tt class="py-line"> </tt>
+<a name="Viewport.make_current"></a><div id="Viewport.make_current-def"><a name="L1309"></a><tt class="py-lineno">1309</tt> <a class="py-toggle" href="#" id="Viewport.make_current-toggle" onclick="return toggle('Viewport.make_current');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.Core.Viewport-class.html#make_current">make_current</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</ [...]
+</div><div id="Viewport.make_current-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Viewport.make_current-expanded"><a name="L1310"></a><tt class="py-lineno">1310</tt>  <tt class="py-line">        <tt class="py-name">p</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt> <tt class="py-comment"># shorthand</tt> </tt>
+<a name="L1311"></a><tt class="py-lineno">1311</tt>  <tt class="py-line">        <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">screen</tt><tt class="py-op">.</tt><tt id="link-351" class="py-name" targets="Method VisionEgg.Core.Screen.make_current()=VisionEgg.Core.Screen-class.html#make_current,Method VisionEgg.Core.Viewport.make_current()=VisionEgg.Core.Viewport-class.html#make_current"><a title="VisionEgg.Core.Screen.make_current
+VisionEgg.Core.Viewport.make_current" class="py-name" href="#" onclick="return doclink('link-351', 'make_current', 'link-351');">make_current</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1312"></a><tt class="py-lineno">1312</tt>  <tt class="py-line"> </tt>
+<a name="L1313"></a><tt class="py-lineno">1313</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">lowerleft</tt> <tt class="py-op">!=</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L1314"></a><tt class="py-lineno">1314</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt id="link-352" class="py-name" targets="Class VisionEgg.Core.Viewport=VisionEgg.Core.Viewport-class.html"><a title="VisionEgg.Core.Viewport" class="py-name" href="#" onclick="return doclink('link-352', 'Viewport', 'link-352');">Viewport</a></tt><tt class="py-op">,</tt><tt class="py-st [...]
+<a name="L1315"></a><tt class="py-lineno">1315</tt>  <tt class="py-line">                <tt id="link-353" class="py-name"><a title="VisionEgg.logger" class="py-name" href="#" onclick="return doclink('link-353', 'logger', 'link-41');">logger</a></tt> <tt class="py-op">=</tt> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">getLogger</tt><tt class="py-op">(</tt><tt class="py-string">'VisionEgg.Core'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1316"></a><tt class="py-lineno">1316</tt>  <tt class="py-line">                <tt id="link-354" class="py-name"><a title="VisionEgg.logger" class="py-name" href="#" onclick="return doclink('link-354', 'logger', 'link-41');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">warning</tt><tt class="py-op">(</tt><tt class="py-string">"lowerleft parameter of Viewport class "</tt> </tt>
+<a name="L1317"></a><tt class="py-lineno">1317</tt>  <tt class="py-line">                               <tt class="py-string">"will stop being supported. Use "</tt> </tt>
+<a name="L1318"></a><tt class="py-lineno">1318</tt>  <tt class="py-line">                               <tt class="py-string">"'position' instead with anchor set to "</tt> </tt>
+<a name="L1319"></a><tt class="py-lineno">1319</tt>  <tt class="py-line">                               <tt class="py-string">"'lowerleft'."</tt><tt class="py-op">)</tt> </tt>
+<a name="L1320"></a><tt class="py-lineno">1320</tt>  <tt class="py-line">                <tt id="link-355" class="py-name"><a title="VisionEgg.Core.Viewport" class="py-name" href="#" onclick="return doclink('link-355', 'Viewport', 'link-352');">Viewport</a></tt><tt class="py-op">.</tt><tt class="py-name">_gave_lowerleft_warning</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
+<a name="L1321"></a><tt class="py-lineno">1321</tt>  <tt class="py-line">            <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">anchor</tt> <tt class="py-op">=</tt> <tt class="py-string">'lowerleft'</tt> </tt>
+<a name="L1322"></a><tt class="py-lineno">1322</tt>  <tt class="py-line">            <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">position</tt> <tt class="py-op">=</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">lowerleft</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">lowerleft</tt><tt class="py-op">[</tt><tt c [...]
+<a name="L1323"></a><tt class="py-lineno">1323</tt>  <tt class="py-line"> </tt>
+<a name="L1324"></a><tt class="py-lineno">1324</tt>  <tt class="py-line">        <tt class="py-name">lowerleft</tt> <tt class="py-op">=</tt> <tt id="link-356" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-356', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt class="py-name">_get_lowerleft</tt><tt class="py-op">(</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">position</tt><tt class="py-op">,</t [...]
+<a name="L1325"></a><tt class="py-lineno">1325</tt>  <tt class="py-line"> </tt>
+<a name="L1326"></a><tt class="py-lineno">1326</tt>  <tt class="py-line">        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glViewport</tt><tt class="py-op">(</tt><tt class="py-name">lowerleft</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L1327"></a><tt class="py-lineno">1327</tt>  <tt class="py-line">                      <tt class="py-name">lowerleft</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L1328"></a><tt class="py-lineno">1328</tt>  <tt class="py-line">                      <tt class="py-name">p</tt><tt class="py-op">.</tt><tt id="link-358" class="py-name"><a title="VisionEgg.Core.Screen.size" class="py-name" href="#" onclick="return doclink('link-358', 'size', 'link-45');">size</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L1329"></a><tt class="py-lineno">1329</tt>  <tt class="py-line">                      <tt class="py-name">p</tt><tt class="py-op">.</tt><tt id="link-359" class="py-name"><a title="VisionEgg.Core.Screen.size" class="py-name" href="#" onclick="return doclink('link-359', 'size', 'link-45');">size</a></tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1330"></a><tt class="py-lineno">1330</tt>  <tt class="py-line">        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glDepthRange</tt><tt class="py-op">(</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">depth_range</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">,</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">depth_range</tt><tt class="py-op">[</tt><tt [...]
+<a name="L1331"></a><tt class="py-lineno">1331</tt>  <tt class="py-line"> </tt>
+<a name="L1332"></a><tt class="py-lineno">1332</tt>  <tt class="py-line">        <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">projection</tt><tt class="py-op">.</tt><tt id="link-360" class="py-name" targets="Method VisionEgg.Core.ProjectionBaseClass.apply_to_gl()=VisionEgg.Core.ProjectionBaseClass-class.html#apply_to_gl"><a title="VisionEgg.Core.ProjectionBaseClass.apply_to_gl" class="py-name" href="#" onclick="return doclink('link-360', 'apply_to_gl', 'link-360' [...]
+<a name="L1333"></a><tt class="py-lineno">1333</tt>  <tt class="py-line">        <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">camera_matrix</tt><tt class="py-op">.</tt><tt id="link-361" class="py-name"><a title="VisionEgg.Core.ProjectionBaseClass.apply_to_gl" class="py-name" href="#" onclick="return doclink('link-361', 'apply_to_gl', 'link-360');">apply_to_gl</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1334"></a><tt class="py-lineno">1334</tt>  <tt class="py-line"> </tt>
+<a name="Viewport.draw"></a><div id="Viewport.draw-def"><a name="L1335"></a><tt class="py-lineno">1335</tt> <a class="py-toggle" href="#" id="Viewport.draw-toggle" onclick="return toggle('Viewport.draw');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.Core.Viewport-class.html#draw">draw</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Viewport.draw-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Viewport.draw-expanded"><a name="L1336"></a><tt class="py-lineno">1336</tt>  <tt class="py-line">        <tt class="py-docstring">"""Set the viewport and draw stimuli."""</tt> </tt>
+<a name="L1337"></a><tt class="py-lineno">1337</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-362" class="py-name"><a title="VisionEgg.Core.Screen.make_current
+VisionEgg.Core.Viewport.make_current" class="py-name" href="#" onclick="return doclink('link-362', 'make_current', 'link-351');">make_current</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1338"></a><tt class="py-lineno">1338</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_is_drawing</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
+<a name="L1339"></a><tt class="py-lineno">1339</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">stimulus</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">stimuli</tt><tt class="py-op">:</tt> </tt>
+<a name="L1340"></a><tt class="py-lineno">1340</tt>  <tt class="py-line">            <tt class="py-name">stimulus</tt><tt class="py-op">.</tt><tt id="link-363" class="py-name"><a title="VisionEgg.Core.FixationSpot.draw
+VisionEgg.Core.Stimulus.draw
+VisionEgg.Core.Viewport.draw
+VisionEgg.Dots.DotArea2D.draw
+VisionEgg.Gratings.SinGrating2D.draw
+VisionEgg.Gratings.SinGrating3D.draw
+VisionEgg.MoreStimuli.Arrow.draw
+VisionEgg.MoreStimuli.FilledCircle.draw
+VisionEgg.MoreStimuli.Rectangle3D.draw
+VisionEgg.MoreStimuli.Target2D.draw
+VisionEgg.SphereMap.AzElGrid.draw
+VisionEgg.SphereMap.SphereGrating.draw
+VisionEgg.SphereMap.SphereMap.draw
+VisionEgg.SphereMap.SphereWindow.draw
+VisionEgg.Text.BitmapText.draw
+VisionEgg.Text.StrokeText.draw
+VisionEgg.Text.Text.draw
+VisionEgg.Textures.FixationCross.draw
+VisionEgg.Textures.SpinningDrum.draw
+VisionEgg.Textures.TextureStimulus.draw
+VisionEgg.Textures.TextureStimulus3D.draw
+VisionEgg.WrappedText.WrappedText.draw" class="py-name" href="#" onclick="return doclink('link-363', 'draw', 'link-168');">draw</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1341"></a><tt class="py-lineno">1341</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_is_drawing</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
+</div><a name="L1342"></a><tt class="py-lineno">1342</tt>  <tt class="py-line"> </tt>
+<a name="Viewport.norm_device_2_window"></a><div id="Viewport.norm_device_2_window-def"><a name="L1343"></a><tt class="py-lineno">1343</tt> <a class="py-toggle" href="#" id="Viewport.norm_device_2_window-toggle" onclick="return toggle('Viewport.norm_device_2_window');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.Core.Viewport-class.html#norm_device_2_window">norm_device_2_window</a><tt class="py-op">(</tt><tt class="py-param">self</ [...]
+</div><div id="Viewport.norm_device_2_window-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Viewport.norm_device_2_window-expanded"><a name="L1344"></a><tt class="py-lineno">1344</tt>  <tt class="py-line">        <tt class="py-docstring">"""Transform normalized device coordinates to window coordinates"""</tt> </tt>
+<a name="L1345"></a><tt class="py-lineno">1345</tt>  <tt class="py-line">        <tt class="py-name">v</tt> <tt class="py-op">=</tt> <tt class="py-name">Numeric</tt><tt class="py-op">.</tt><tt class="py-name">asarray</tt><tt class="py-op">(</tt><tt class="py-name">norm_device_vertex</tt><tt class="py-op">)</tt> </tt>
+<a name="L1346"></a><tt class="py-lineno">1346</tt>  <tt class="py-line">        <tt class="py-name">homog</tt> <tt class="py-op">=</tt> <tt id="link-364" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-364', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-365" class="py-name"><a title="VisionEgg.ThreeDeeMath" class="py-name" href="#" onclick="return doclink('link-365', 'ThreeDeeMath', 'link-8');">ThreeDeeMath</a [...]
+<a name="L1347"></a><tt class="py-lineno">1347</tt>  <tt class="py-line">        <tt class="py-name">xd</tt> <tt class="py-op">=</tt> <tt class="py-name">homog</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">,</tt><tt class="py-number">0</tt><tt class="py-op">,</tt><tt class="py-name">Numeric</tt><tt class="py-op">.</tt><tt class="py-name">NewAxis</tt><tt class="py-op">]</tt> </tt>
+<a name="L1348"></a><tt class="py-lineno">1348</tt>  <tt class="py-line">        <tt class="py-name">yd</tt> <tt class="py-op">=</tt> <tt class="py-name">homog</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">,</tt><tt class="py-number">1</tt><tt class="py-op">,</tt><tt class="py-name">Numeric</tt><tt class="py-op">.</tt><tt class="py-name">NewAxis</tt><tt class="py-op">]</tt> </tt>
+<a name="L1349"></a><tt class="py-lineno">1349</tt>  <tt class="py-line">        <tt class="py-name">zd</tt> <tt class="py-op">=</tt> <tt class="py-name">homog</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">,</tt><tt class="py-number">2</tt><tt class="py-op">,</tt><tt class="py-name">Numeric</tt><tt class="py-op">.</tt><tt class="py-name">NewAxis</tt><tt class="py-op">]</tt> </tt>
+<a name="L1350"></a><tt class="py-lineno">1350</tt>  <tt class="py-line"> </tt>
+<a name="L1351"></a><tt class="py-lineno">1351</tt>  <tt class="py-line">        <tt class="py-name">p</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt> <tt class="py-comment"># shorthand</tt> </tt>
+<a name="L1352"></a><tt class="py-lineno">1352</tt>  <tt class="py-line">        <tt class="py-name">lowerleft</tt> <tt class="py-op">=</tt> <tt id="link-367" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-367', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt class="py-name">_get_lowerleft</tt><tt class="py-op">(</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">position</tt><tt class="py-op">,</t [...]
+<a name="L1353"></a><tt class="py-lineno">1353</tt>  <tt class="py-line">        <tt class="py-name">x</tt><tt class="py-op">,</tt><tt class="py-name">y</tt> <tt class="py-op">=</tt> <tt class="py-name">lowerleft</tt> </tt>
+<a name="L1354"></a><tt class="py-lineno">1354</tt>  <tt class="py-line">        <tt class="py-name">w</tt><tt class="py-op">,</tt><tt class="py-name">h</tt> <tt class="py-op">=</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt id="link-369" class="py-name"><a title="VisionEgg.Core.Screen.size" class="py-name" href="#" onclick="return doclink('link-369', 'size', 'link-45');">size</a></tt> </tt>
+<a name="L1355"></a><tt class="py-lineno">1355</tt>  <tt class="py-line">        <tt class="py-name">n</tt><tt class="py-op">,</tt><tt class="py-name">f</tt> <tt class="py-op">=</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">depth_range</tt> </tt>
+<a name="L1356"></a><tt class="py-lineno">1356</tt>  <tt class="py-line"> </tt>
+<a name="L1357"></a><tt class="py-lineno">1357</tt>  <tt class="py-line">        <tt class="py-comment"># clamp n and f</tt> </tt>
+<a name="L1358"></a><tt class="py-lineno">1358</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">n</tt> <tt class="py-op">=</tt> <tt class="py-name">min</tt><tt class="py-op">(</tt><tt class="py-number">1.0</tt><tt class="py-op">,</tt><tt class="py-name">max</tt><tt class="py-op">(</tt><tt class="py-number">0.0</tt><tt class="py-op">,</tt><tt class="py-name">n</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1359"></a><tt class="py-lineno">1359</tt>  <tt class="py-line">        <tt class="py-name">f</tt> <tt class="py-op">=</tt> <tt class="py-name">min</tt><tt class="py-op">(</tt><tt class="py-number">1.0</tt><tt class="py-op">,</tt><tt class="py-name">max</tt><tt class="py-op">(</tt><tt class="py-number">0.0</tt><tt class="py-op">,</tt><tt class="py-name">f</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1360"></a><tt class="py-lineno">1360</tt>  <tt class="py-line"> </tt>
+<a name="L1361"></a><tt class="py-lineno">1361</tt>  <tt class="py-line">        <tt class="py-name">ox</tt> <tt class="py-op">=</tt> <tt class="py-name">x</tt> <tt class="py-op">+</tt> <tt class="py-name">w</tt><tt class="py-op">/</tt><tt class="py-number">2.0</tt> </tt>
+<a name="L1362"></a><tt class="py-lineno">1362</tt>  <tt class="py-line">        <tt class="py-name">oy</tt> <tt class="py-op">=</tt> <tt class="py-name">y</tt> <tt class="py-op">+</tt> <tt class="py-name">h</tt><tt class="py-op">/</tt><tt class="py-number">2.0</tt> </tt>
+<a name="L1363"></a><tt class="py-lineno">1363</tt>  <tt class="py-line">        <tt class="py-name">px</tt> <tt class="py-op">=</tt> <tt class="py-name">w</tt> </tt>
+<a name="L1364"></a><tt class="py-lineno">1364</tt>  <tt class="py-line">        <tt class="py-name">py</tt> <tt class="py-op">=</tt> <tt class="py-name">h</tt> </tt>
+<a name="L1365"></a><tt class="py-lineno">1365</tt>  <tt class="py-line">        <tt class="py-name">xw</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">px</tt><tt class="py-op">/</tt><tt class="py-number">2.0</tt><tt class="py-op">)</tt><tt class="py-op">*</tt><tt class="py-name">xd</tt> <tt class="py-op">+</tt> <tt class="py-name">ox</tt> </tt>
+<a name="L1366"></a><tt class="py-lineno">1366</tt>  <tt class="py-line">        <tt class="py-name">yw</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">py</tt><tt class="py-op">/</tt><tt class="py-number">2.0</tt><tt class="py-op">)</tt><tt class="py-op">*</tt><tt class="py-name">yd</tt> <tt class="py-op">+</tt> <tt class="py-name">oy</tt> </tt>
+<a name="L1367"></a><tt class="py-lineno">1367</tt>  <tt class="py-line">        <tt class="py-name">zw</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-name">f</tt><tt class="py-op">-</tt><tt class="py-name">n</tt><tt class="py-op">)</tt><tt class="py-op">/</tt><tt class="py-number">2.0</tt><tt class="py-op">)</tt><tt class="py-op">*</tt><tt class="py-name">zd</tt> <tt class="py-op">+</tt> <tt class="py-op">(</tt><tt class="py-name">n</tt><tt c [...]
+<a name="L1368"></a><tt class="py-lineno">1368</tt>  <tt class="py-line">        <tt class="py-comment"># XXX I think zw (or zd) is clamped in OpenGL, but I can't</tt> </tt>
+<a name="L1369"></a><tt class="py-lineno">1369</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># find it in any spec!</tt> </tt>
+<a name="L1370"></a><tt class="py-lineno">1370</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment">#zw = Numeric.clip(zw,0.0,1.0) # clamp</tt> </tt>
+<a name="L1371"></a><tt class="py-lineno">1371</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">r</tt> <tt class="py-op">=</tt> <tt class="py-name">Numeric</tt><tt class="py-op">.</tt><tt class="py-name">concatenate</tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-name">xw</tt><tt class="py-op">,</tt><tt class="py-name">yw</tt><tt class="py-op">,</tt><tt class="py-name">zw</tt><tt class="py-op">)</tt><tt class="py-op">,</tt><tt class="py- [...]
+<a name="L1372"></a><tt class="py-lineno">1372</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">homog</tt><tt class="py-op">.</tt><tt class="py-name">shape</tt><tt class="py-op">)</tt> <tt class="py-op">></tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">v</tt><tt class="py-op">.</tt><tt class="py-name">shape</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1373"></a><tt class="py-lineno">1373</tt>  <tt class="py-line">            <tt class="py-name">r</tt> <tt class="py-op">=</tt> <tt class="py-name">Numeric</tt><tt class="py-op">.</tt><tt class="py-name">reshape</tt><tt class="py-op">(</tt><tt class="py-name">r</tt><tt class="py-op">,</tt><tt class="py-op">(</tt><tt class="py-number">3</tt><tt class="py-op">,</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1374"></a><tt class="py-lineno">1374</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">r</tt> </tt>
+</div><a name="Viewport.clip_2_window"></a><div id="Viewport.clip_2_window-def"><a name="L1375"></a><tt class="py-lineno">1375</tt> <a class="py-toggle" href="#" id="Viewport.clip_2_window-toggle" onclick="return toggle('Viewport.clip_2_window');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.Core.Viewport-class.html#clip_2_window">clip_2_window</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt><tt class [...]
+</div><div id="Viewport.clip_2_window-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Viewport.clip_2_window-expanded"><a name="L1376"></a><tt class="py-lineno">1376</tt>  <tt class="py-line">        <tt class="py-docstring">"""Transform clip coordinates to window coordinates"""</tt> </tt>
+<a name="L1377"></a><tt class="py-lineno">1377</tt>  <tt class="py-line">        <tt class="py-name">my_proj</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">projection</tt> </tt>
+<a name="L1378"></a><tt class="py-lineno">1378</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-370" class="py-name" targets="Method VisionEgg.Core.Viewport.norm_device_2_window()=VisionEgg.Core.Viewport-class.html#norm_device_2_window"><a title="VisionEgg.Core.Viewport.norm_device_2_window" class="py-name" href="#" onclick="return doclink('link-370', 'norm_device_2_window', 'link-370');">norm_device_2_ [...]
+</div><a name="Viewport.eye_2_window"></a><div id="Viewport.eye_2_window-def"><a name="L1379"></a><tt class="py-lineno">1379</tt> <a class="py-toggle" href="#" id="Viewport.eye_2_window-toggle" onclick="return toggle('Viewport.eye_2_window');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.Core.Viewport-class.html#eye_2_window">eye_2_window</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt><tt class="py-p [...]
+</div><div id="Viewport.eye_2_window-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Viewport.eye_2_window-expanded"><a name="L1380"></a><tt class="py-lineno">1380</tt>  <tt class="py-line">        <tt class="py-docstring">"""Transform eye coordinates to window coordinates"""</tt> </tt>
+<a name="L1381"></a><tt class="py-lineno">1381</tt>  <tt class="py-line">        <tt class="py-name">my_proj</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">projection</tt> </tt>
+<a name="L1382"></a><tt class="py-lineno">1382</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-372" class="py-name"><a title="VisionEgg.Core.Viewport.norm_device_2_window" class="py-name" href="#" onclick="return doclink('link-372', 'norm_device_2_window', 'link-370');">norm_device_2_window</a></tt><tt class="py-op">(</tt> <tt class="py-name">my_proj</tt><tt class="py-op">.</tt><tt id="link-373" class= [...]
+</div></div><a name="L1383"></a><tt class="py-lineno">1383</tt>  <tt class="py-line"> </tt>
+<a name="L1384"></a><tt class="py-lineno">1384</tt>  <tt class="py-line"><tt class="py-comment">####################################################################</tt> </tt>
+<a name="L1385"></a><tt class="py-lineno">1385</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L1386"></a><tt class="py-lineno">1386</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#        FixationSpot</tt> </tt>
+<a name="L1387"></a><tt class="py-lineno">1387</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L1388"></a><tt class="py-lineno">1388</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">####################################################################</tt> </tt>
+<a name="L1389"></a><tt class="py-lineno">1389</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="FixationSpot"></a><div id="FixationSpot-def"><a name="L1390"></a><tt class="py-lineno">1390</tt> <a class="py-toggle" href="#" id="FixationSpot-toggle" onclick="return toggle('FixationSpot');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.Core.FixationSpot-class.html">FixationSpot</a><tt class="py-op">(</tt><tt class="py-base-class">Stimulus</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="FixationSpot-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="FixationSpot-expanded"><a name="L1391"></a><tt class="py-lineno">1391</tt>  <tt class="py-line">    <tt class="py-docstring">"""A rectangle stimulus, typically used as a fixation spot.</tt> </tt>
+<a name="L1392"></a><tt class="py-lineno">1392</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1393"></a><tt class="py-lineno">1393</tt>  <tt class="py-line"><tt class="py-docstring">    Parameters</tt> </tt>
+<a name="L1394"></a><tt class="py-lineno">1394</tt>  <tt class="py-line"><tt class="py-docstring">    ==========</tt> </tt>
+<a name="L1395"></a><tt class="py-lineno">1395</tt>  <tt class="py-line"><tt class="py-docstring">    anchor   -- how position parameter is used (String)</tt> </tt>
+<a name="L1396"></a><tt class="py-lineno">1396</tt>  <tt class="py-line"><tt class="py-docstring">                Default: center</tt> </tt>
+<a name="L1397"></a><tt class="py-lineno">1397</tt>  <tt class="py-line"><tt class="py-docstring">    color    -- color (AnyOf(Sequence3 of Real or Sequence4 of Real))</tt> </tt>
+<a name="L1398"></a><tt class="py-lineno">1398</tt>  <tt class="py-line"><tt class="py-docstring">                Default: (1.0, 1.0, 1.0)</tt> </tt>
+<a name="L1399"></a><tt class="py-lineno">1399</tt>  <tt class="py-line"><tt class="py-docstring">    on       -- draw? (Boolean)</tt> </tt>
+<a name="L1400"></a><tt class="py-lineno">1400</tt>  <tt class="py-line"><tt class="py-docstring">                Default: True</tt> </tt>
+<a name="L1401"></a><tt class="py-lineno">1401</tt>  <tt class="py-line"><tt class="py-docstring">    position -- position in eye coordinates (AnyOf(Sequence2 of Real or Sequence3 of Real or Sequence4 of Real))</tt> </tt>
+<a name="L1402"></a><tt class="py-lineno">1402</tt>  <tt class="py-line"><tt class="py-docstring">                Default: (320.0, 240.0)</tt> </tt>
+<a name="L1403"></a><tt class="py-lineno">1403</tt>  <tt class="py-line"><tt class="py-docstring">    size     -- size in eye coordinates (Sequence2 of Real)</tt> </tt>
+<a name="L1404"></a><tt class="py-lineno">1404</tt>  <tt class="py-line"><tt class="py-docstring">                Default: (4.0, 4.0)</tt> </tt>
+<a name="L1405"></a><tt class="py-lineno">1405</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L1406"></a><tt class="py-lineno">1406</tt>  <tt class="py-line"> </tt>
+<a name="L1407"></a><tt class="py-lineno">1407</tt>  <tt class="py-line">    <tt id="link-374" class="py-name"><a title="VisionEgg.ClassWithParameters.parameters_and_defaults
+VisionEgg.Core.FixationSpot.parameters_and_defaults
+VisionEgg.Core.ProjectionBaseClass.parameters_and_defaults
+VisionEgg.Core.Screen.parameters_and_defaults
+VisionEgg.Core.Viewport.parameters_and_defaults
+VisionEgg.Daq.Buffered.parameters_and_defaults
+VisionEgg.Dots.DotArea2D.parameters_and_defaults
+VisionEgg.FlowControl.Presentation.parameters_and_defaults
+VisionEgg.Gratings.AlphaGratingCommon.parameters_and_defaults
+VisionEgg.Gratings.LuminanceGratingCommon.parameters_and_defaults
+VisionEgg.Gratings.SinGrating2D.parameters_and_defaults
+VisionEgg.Gratings.SinGrating3D.parameters_and_defaults
+VisionEgg.MoreStimuli.Arrow.parameters_and_defaults
+VisionEgg.MoreStimuli.FilledCircle.parameters_and_defaults
+VisionEgg.MoreStimuli.Rectangle3D.parameters_and_defaults
+VisionEgg.MoreStimuli.Target2D.parameters_and_defaults
+VisionEgg.PyroApps.EPhysGUI.Loop.parameters_and_defaults
+VisionEgg.SphereMap.AzElGrid.parameters_and_defaults
+VisionEgg.SphereMap.SphereGrating.parameters_and_defaults
+VisionEgg.SphereMap.SphereMap.parameters_and_defaults
+VisionEgg.SphereMap.SphereWindow.parameters_and_defaults
+VisionEgg.Text.BitmapText.parameters_and_defaults
+VisionEgg.Text.GlutTextBase.parameters_and_defaults
+VisionEgg.Text.StrokeText.parameters_and_defaults
+VisionEgg.Text.Text.parameters_and_defaults
+VisionEgg.Textures.FixationCross.parameters_and_defaults
+VisionEgg.Textures.SpinningDrum.parameters_and_defaults
+VisionEgg.Textures.TextureStimulus.parameters_and_defaults
+VisionEgg.Textures.TextureStimulus3D.parameters_and_defaults
+VisionEgg.Textures.TextureStimulusBaseClass.parameters_and_defaults
+VisionEgg.WrappedText.WrappedText.parameters_and_defaults" class="py-name" href="#" onclick="return doclink('link-374', 'parameters_and_defaults', 'link-15');">parameters_and_defaults</a></tt> <tt class="py-op">=</tt> <tt id="link-375" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-375', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-376" class="py-name"><a title="VisionEgg.ParameterDefinition" class="py-name"  [...]
+<a name="L1408"></a><tt class="py-lineno">1408</tt>  <tt class="py-line">        <tt class="py-string">'on'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-name">True</tt><tt class="py-op">,</tt> </tt>
+<a name="L1409"></a><tt class="py-lineno">1409</tt>  <tt class="py-line">              <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-377" class="py-name"><a title="VisionEgg.ParameterTypes.Boolean" class="py-name" href="#" onclick="return doclink('link-377', 'Boolean', 'link-28');">Boolean</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L1410"></a><tt class="py-lineno">1410</tt>  <tt class="py-line">              <tt class="py-string">'draw?'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L1411"></a><tt class="py-lineno">1411</tt>  <tt class="py-line">        <tt class="py-string">'color'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-number">1.0</tt><tt class="py-op">,</tt><tt class="py-number">1.0</tt><tt class="py-op">,</tt><tt class="py-number">1.0</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L1412"></a><tt class="py-lineno">1412</tt>  <tt class="py-line">                 <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-378" class="py-name"><a title="VisionEgg.ParameterTypes.AnyOf" class="py-name" href="#" onclick="return doclink('link-378', 'AnyOf', 'link-18');">AnyOf</a></tt><tt class="py-op">(</tt><tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-379" class="py-name"><a title="VisionEgg.ParameterTypes.Sequence3" class="py-n [...]
+<a name="L1413"></a><tt class="py-lineno">1413</tt>  <tt class="py-line">                                <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-381" class="py-name"><a title="VisionEgg.ParameterTypes.Sequence4" class="py-name" href="#" onclick="return doclink('link-381', 'Sequence4', 'link-21');">Sequence4</a></tt><tt class="py-op">(</tt><tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-382" class="py-name"><a title="VisionEgg.ParameterT [...]
+<a name="L1414"></a><tt class="py-lineno">1414</tt>  <tt class="py-line">                 <tt class="py-string">'color'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L1415"></a><tt class="py-lineno">1415</tt>  <tt class="py-line">        <tt class="py-string">'position'</tt> <tt class="py-op">:</tt> <tt class="py-op">(</tt> <tt class="py-op">(</tt> <tt class="py-number">320.0</tt><tt class="py-op">,</tt> <tt class="py-number">240.0</tt> <tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-comment"># in eye coordinates</tt> </tt>
+<a name="L1416"></a><tt class="py-lineno">1416</tt>  <tt class="py-line">                       <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-383" class="py-name"><a title="VisionEgg.ParameterTypes.AnyOf" class="py-name" href="#" onclick="return doclink('link-383', 'AnyOf', 'link-18');">AnyOf</a></tt><tt class="py-op">(</tt><tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-384" class="py-name"><a title="VisionEgg.ParameterTypes.Sequence2" class [...]
+<a name="L1417"></a><tt class="py-lineno">1417</tt>  <tt class="py-line">                                      <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-386" class="py-name"><a title="VisionEgg.ParameterTypes.Sequence3" class="py-name" href="#" onclick="return doclink('link-386', 'Sequence3', 'link-19');">Sequence3</a></tt><tt class="py-op">(</tt><tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-387" class="py-name"><a title="VisionEgg.Para [...]
+<a name="L1418"></a><tt class="py-lineno">1418</tt>  <tt class="py-line">                                      <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-388" class="py-name"><a title="VisionEgg.ParameterTypes.Sequence4" class="py-name" href="#" onclick="return doclink('link-388', 'Sequence4', 'link-21');">Sequence4</a></tt><tt class="py-op">(</tt><tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-389" class="py-name"><a title="VisionEgg.Para [...]
+<a name="L1419"></a><tt class="py-lineno">1419</tt>  <tt class="py-line">                       <tt class="py-string">'position in eye coordinates'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L1420"></a><tt class="py-lineno">1420</tt>  <tt class="py-line">        <tt class="py-string">'anchor'</tt> <tt class="py-op">:</tt> <tt class="py-op">(</tt><tt class="py-string">'center'</tt><tt class="py-op">,</tt> </tt>
+<a name="L1421"></a><tt class="py-lineno">1421</tt>  <tt class="py-line">                    <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-390" class="py-name"><a title="VisionEgg.ParameterTypes.String" class="py-name" href="#" onclick="return doclink('link-390', 'String', 'link-321');">String</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L1422"></a><tt class="py-lineno">1422</tt>  <tt class="py-line">                    <tt class="py-string">'how position parameter is used'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L1423"></a><tt class="py-lineno">1423</tt>  <tt class="py-line">        <tt class="py-string">'size'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-number">4.0</tt><tt class="py-op">,</tt><tt class="py-number">4.0</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-comment"># horiz and vertical size</tt> </tt>
+<a name="L1424"></a><tt class="py-lineno">1424</tt>  <tt class="py-line">                <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-391" class="py-name"><a title="VisionEgg.ParameterTypes.Sequence2" class="py-name" href="#" onclick="return doclink('link-391', 'Sequence2', 'link-26');">Sequence2</a></tt><tt class="py-op">(</tt><tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-392" class="py-name"><a title="VisionEgg.ParameterTypes.Real" class [...]
+<a name="L1425"></a><tt class="py-lineno">1425</tt>  <tt class="py-line">                <tt class="py-string">'size in eye coordinates'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L1426"></a><tt class="py-lineno">1426</tt>  <tt class="py-line">        <tt class="py-string">'center'</tt> <tt class="py-op">:</tt> <tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt>  <tt class="py-comment"># DEPRECATED -- don't use</tt> </tt>
+<a name="L1427"></a><tt class="py-lineno">1427</tt>  <tt class="py-line">                    <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-393" class="py-name"><a title="VisionEgg.ParameterTypes.Sequence2" class="py-name" href="#" onclick="return doclink('link-393', 'Sequence2', 'link-26');">Sequence2</a></tt><tt class="py-op">(</tt><tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-394" class="py-name"><a title="VisionEgg.ParameterTypes.Real" c [...]
+<a name="L1428"></a><tt class="py-lineno">1428</tt>  <tt class="py-line">                    <tt class="py-string">'position in eye coordinates'</tt><tt class="py-op">,</tt> </tt>
+<a name="L1429"></a><tt class="py-lineno">1429</tt>  <tt class="py-line">                    <tt id="link-395" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-395', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-396" class="py-name"><a title="VisionEgg.ParameterDefinition" class="py-name" href="#" onclick="return doclink('link-396', 'ParameterDefinition', 'link-17');">ParameterDefinition</a></tt><tt class="py-op [...]
+<a name="L1430"></a><tt class="py-lineno">1430</tt>  <tt class="py-line">        <tt class="py-op">}</tt><tt class="py-op">)</tt> </tt>
+<a name="L1431"></a><tt class="py-lineno">1431</tt>  <tt class="py-line"> </tt>
+<a name="FixationSpot.__init__"></a><div id="FixationSpot.__init__-def"><a name="L1432"></a><tt class="py-lineno">1432</tt> <a class="py-toggle" href="#" id="FixationSpot.__init__-toggle" onclick="return toggle('FixationSpot.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.Core.FixationSpot-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt><tt class="py-op">**</tt> [...]
+</div><div id="FixationSpot.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="FixationSpot.__init__-expanded"><a name="L1433"></a><tt class="py-lineno">1433</tt>  <tt class="py-line">        <tt id="link-398" class="py-name"><a title="VisionEgg.Core.Stimulus" class="py-name" href="#" onclick="return doclink('link-398', 'Stimulus', 'link-332');">Stimulus</a></tt><tt class="py-op">.</tt><tt id="link-399" class="py-name"><a title="VisionEgg.ClassWithParam [...]
+VisionEgg.Configuration.Config.__init__
+VisionEgg.Core.FixationSpot.__init__
+VisionEgg.Core.FrameTimer.__init__
+VisionEgg.Core.ModelView.__init__
+VisionEgg.Core.OrthographicProjection.__init__
+VisionEgg.Core.OrthographicProjectionNoZClip.__init__
+VisionEgg.Core.PerspectiveProjection.__init__
+VisionEgg.Core.Projection.__init__
+VisionEgg.Core.ProjectionBaseClass.__init__
+VisionEgg.Core.Screen.__init__
+VisionEgg.Core.SimplePerspectiveProjection.__init__
+VisionEgg.Core.Stimulus.__init__
+VisionEgg.Core.Viewport.__init__
+VisionEgg.Daq.Channel.__init__
+VisionEgg.Daq.DaqMode.__init__
+VisionEgg.Daq.Device.__init__
+VisionEgg.Daq.Functionality.__init__
+VisionEgg.Daq.SignalType.__init__
+VisionEgg.DaqKeyboard.KeyboardTriggerInController.__init__
+VisionEgg.DaqLPT.LPTChannel.__init__
+VisionEgg.DaqLPT.LPTDevice.__init__
+VisionEgg.DaqLPT.LPTTriggerInController.__init__
+VisionEgg.DaqLPT.LPTTriggerOutController.__init__
+VisionEgg.Deprecated.Message.__init__
+VisionEgg.Dots.DotArea2D.__init__
+VisionEgg.FlowControl.ConstantController.__init__
+VisionEgg.FlowControl.Controller.__init__
+VisionEgg.FlowControl.EncapsulatedController.__init__
+VisionEgg.FlowControl.EvalStringController.__init__
+VisionEgg.FlowControl.ExecStringController.__init__
+VisionEgg.FlowControl.FunctionController.__init__
+VisionEgg.FlowControl.Presentation.__init__
+VisionEgg.GLTrace.Wrapper.__init__
+VisionEgg.GUI.AppWindow.__init__
+VisionEgg.GUI.GetKeypressDialog.__init__
+VisionEgg.GUI.GraphicsConfigurationWindow.__init__
+VisionEgg.GUI.InfoFrame.__init__
+VisionEgg.GUI.ProgressBar.__init__
+VisionEgg.GUI.ToplevelDialog.__init__
+VisionEgg.Gratings.SinGrating2D.__init__
+VisionEgg.Gratings.SinGrating3D.__init__
+VisionEgg.MoreStimuli.Arrow.__init__
+VisionEgg.MoreStimuli.FilledCircle.__init__
+VisionEgg.MoreStimuli.Rectangle3D.__init__
+VisionEgg.MoreStimuli.Target2D.__init__
+VisionEgg.ParameterTypes.AnyOf.__init__
+VisionEgg.ParameterTypes.Instance.__init__
+VisionEgg.ParameterTypes.Sequence.__init__
+VisionEgg.ParameterTypes.SubClass.__init__
+VisionEgg.PyroApps.AST_ext.AST_Visitor.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalMetaParameters.__init__
+VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.__init__
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.__init__
+VisionEgg.PyroApps.DropinGUI.DropinMetaParameters.__init__
+VisionEgg.PyroApps.DropinServer.DropinMetaController.__init__
+VisionEgg.PyroApps.EPhysGUI.AppWindow.__init__
+VisionEgg.PyroApps.EPhysGUI.BarButton.__init__
+VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase.__init__
+VisionEgg.PyroApps.EPhysGUI.GammaFrame.__init__
+VisionEgg.PyroApps.EPhysGUI.ImageSequenceLauncher.__init__
+VisionEgg.PyroApps.EPhysGUI.Loop.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopContainedObject.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopParamDialog.__init__
+VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.__init__
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.__init__
+VisionEgg.PyroApps.EPhysServer.EPhysServer.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingMetaParameters.__init__
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.GridGUI.GridControlFrame.__init__
+VisionEgg.PyroApps.GridGUI.GridMetaParameters.__init__
+VisionEgg.PyroApps.GridServer.GridMetaController.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetMetaParameters.__init__
+VisionEgg.PyroApps.MouseTargetServer.MousePositionController.__init__
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetOrientationController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetPositionController.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.CallbackEntry.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionParameters.__init__
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingMetaParameters.__init__
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumMetaParameters.__init__
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.__init__
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.__init__
+VisionEgg.PyroApps.TargetGUI.TargetMetaParameters.__init__
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.__init__
+VisionEgg.PyroClient.PyroClient.__init__
+VisionEgg.PyroHelpers.PyroConstantController.__init__
+VisionEgg.PyroHelpers.PyroEncapsulatedController.__init__
+VisionEgg.PyroHelpers.PyroEvalStringController.__init__
+VisionEgg.PyroHelpers.PyroExecStringController.__init__
+VisionEgg.PyroHelpers.PyroListenController.__init__
+VisionEgg.PyroHelpers.PyroLocalDictController.__init__
+VisionEgg.PyroHelpers.PyroServer.__init__
+VisionEgg.QuickTime.MovieTexture.__init__
+VisionEgg.ResponseControl.KeyboardResponseController.__init__
+VisionEgg.ResponseControl.ResponseController.__init__
+VisionEgg.SphereMap.AzElGrid.__init__
+VisionEgg.SphereMap.SphereGrating.__init__
+VisionEgg.SphereMap.SphereMap.__init__
+VisionEgg.SphereMap.SphereWindow.__init__
+VisionEgg.TCPController.SocketListenController.__init__
+VisionEgg.TCPController.TCPController.__init__
+VisionEgg.TCPController.TCPServer.__init__
+VisionEgg.Text.BitmapText.__init__
+VisionEgg.Text.GlutTextBase.__init__
+VisionEgg.Text.StrokeText.__init__
+VisionEgg.Text.Text.__init__
+VisionEgg.Textures.FixationCross.__init__
+VisionEgg.Textures.Mask2D.__init__
+VisionEgg.Textures.SpinningDrum.__init__
+VisionEgg.Textures.Texture.__init__
+VisionEgg.Textures.TextureFromFile.__init__
+VisionEgg.Textures.TextureObject.__init__
+VisionEgg.Textures.TextureStimulusBaseClass.__init__
+VisionEgg.ThreeDeeMath.TransformMatrix.__init__
+VisionEgg.WrappedText.WrappedText.__init__
+VisionEgg.qtmovie.Movie.__init__
+VisionEgg.qtmovie.Rect.__init__" class="py-name" href="#" onclick="return doclink('link-399', '__init__', 'link-44');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt><tt class="py-op">**</tt><tt class="py-name">kw</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1434"></a><tt class="py-lineno">1434</tt>  <tt class="py-line"> </tt>
+<a name="FixationSpot.draw"></a><div id="FixationSpot.draw-def"><a name="L1435"></a><tt class="py-lineno">1435</tt> <a class="py-toggle" href="#" id="FixationSpot.draw-toggle" onclick="return toggle('FixationSpot.draw');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.Core.FixationSpot-class.html#draw">draw</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="FixationSpot.draw-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="FixationSpot.draw-expanded"><a name="L1436"></a><tt class="py-lineno">1436</tt>  <tt class="py-line">        <tt class="py-name">p</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt> <tt class="py-comment"># shorthand</tt> </tt>
+<a name="L1437"></a><tt class="py-lineno">1437</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">center</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L1438"></a><tt class="py-lineno">1438</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt id="link-400" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-400', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-401" class="py-name"><a title="VisionEgg.config" class="py-name" href="#" onclick="return do [...]
+<a name="L1439"></a><tt class="py-lineno">1439</tt>  <tt class="py-line">                <tt id="link-402" class="py-name"><a title="VisionEgg.logger" class="py-name" href="#" onclick="return doclink('link-402', 'logger', 'link-41');">logger</a></tt> <tt class="py-op">=</tt> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">getLogger</tt><tt class="py-op">(</tt><tt class="py-string">'VisionEgg.Core'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1440"></a><tt class="py-lineno">1440</tt>  <tt class="py-line">                <tt id="link-403" class="py-name"><a title="VisionEgg.logger" class="py-name" href="#" onclick="return doclink('link-403', 'logger', 'link-41');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">warning</tt><tt class="py-op">(</tt><tt class="py-string">"Specifying FixationSpot by deprecated "</tt> </tt>
+<a name="L1441"></a><tt class="py-lineno">1441</tt>  <tt class="py-line">                               <tt class="py-string">"'center' parameter deprecated.  Use "</tt> </tt>
+<a name="L1442"></a><tt class="py-lineno">1442</tt>  <tt class="py-line">                               <tt class="py-string">"'position' parameter instead.  (Allows "</tt> </tt>
+<a name="L1443"></a><tt class="py-lineno">1443</tt>  <tt class="py-line">                               <tt class="py-string">"use of 'anchor' parameter to set to "</tt> </tt>
+<a name="L1444"></a><tt class="py-lineno">1444</tt>  <tt class="py-line">                               <tt class="py-string">"other values.)"</tt><tt class="py-op">)</tt> </tt>
+<a name="L1445"></a><tt class="py-lineno">1445</tt>  <tt class="py-line">                <tt id="link-404" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-404', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-405" class="py-name"><a title="VisionEgg.config" class="py-name" href="#" onclick="return doclink('link-405', 'config', 'link-14');">config</a></tt><tt class="py-op">.</tt><tt class="py-name">_GAVE_CENTER_DE [...]
+<a name="L1446"></a><tt class="py-lineno">1446</tt>  <tt class="py-line">            <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">anchor</tt> <tt class="py-op">=</tt> <tt class="py-string">'center'</tt> </tt>
+<a name="L1447"></a><tt class="py-lineno">1447</tt>  <tt class="py-line">            <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">position</tt> <tt class="py-op">=</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">center</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">center</tt><tt class="py-op">[</tt><tt class=" [...]
+<a name="L1448"></a><tt class="py-lineno">1448</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">on</tt><tt class="py-op">:</tt> </tt>
+<a name="L1449"></a><tt class="py-lineno">1449</tt>  <tt class="py-line">            <tt class="py-comment"># calculate center</tt> </tt>
+<a name="L1450"></a><tt class="py-lineno">1450</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">center</tt> <tt class="py-op">=</tt> <tt id="link-406" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-406', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt class="py-name">_get_center</tt><tt class="py-op">(</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">position< [...]
+<a name="L1451"></a><tt class="py-lineno">1451</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glDisable</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_DEPTH_TEST</tt><tt class="py-op">)</tt> </tt>
+<a name="L1452"></a><tt class="py-lineno">1452</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glDisable</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE_2D</tt><tt class="py-op">)</tt> </tt>
+<a name="L1453"></a><tt class="py-lineno">1453</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glDisable</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_BLEND</tt><tt class="py-op">)</tt> </tt>
+<a name="L1454"></a><tt class="py-lineno">1454</tt>  <tt class="py-line"> </tt>
+<a name="L1455"></a><tt class="py-lineno">1455</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">color</tt><tt class="py-op">)</tt><tt class="py-op">==</tt><tt class="py-number">3</tt><tt class="py-op">:</tt> </tt>
+<a name="L1456"></a><tt class="py-lineno">1456</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glColor3f</tt><tt class="py-op">(</tt><tt class="py-op">*</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">color</tt><tt class="py-op">)</tt> </tt>
+<a name="L1457"></a><tt class="py-lineno">1457</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">color</tt><tt class="py-op">)</tt><tt class="py-op">==</tt><tt class="py-number">4</tt><tt class="py-op">:</tt> </tt>
+<a name="L1458"></a><tt class="py-lineno">1458</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glColor4f</tt><tt class="py-op">(</tt><tt class="py-op">*</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">color</tt><tt class="py-op">)</tt> </tt>
+<a name="L1459"></a><tt class="py-lineno">1459</tt>  <tt class="py-line"> </tt>
+<a name="L1460"></a><tt class="py-lineno">1460</tt>  <tt class="py-line">            <tt class="py-comment"># This could go in a display list to speed it up, but then</tt> </tt>
+<a name="L1461"></a><tt class="py-lineno">1461</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># size wouldn't be dynamically adjustable this way.  Could</tt> </tt>
+<a name="L1462"></a><tt class="py-lineno">1462</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># still use one of the matrices to make it change size.</tt> </tt>
+<a name="L1463"></a><tt class="py-lineno">1463</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">x_size</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt id="link-408" class="py-name"><a title="VisionEgg.Core.Screen.size" class="py-name" href="#" onclick="return doclink('link-408', 'size', 'link-45');">size</a></tt><tt class="py-op">[</tt><tt class="py-numbe [...]
+<a name="L1464"></a><tt class="py-lineno">1464</tt>  <tt class="py-line">            <tt class="py-name">y_size</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt id="link-409" class="py-name"><a title="VisionEgg.Core.Screen.size" class="py-name" href="#" onclick="return doclink('link-409', 'size', 'link-45');">size</a></tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">] [...]
+<a name="L1465"></a><tt class="py-lineno">1465</tt>  <tt class="py-line">            <tt class="py-name">x</tt><tt class="py-op">,</tt><tt class="py-name">y</tt> <tt class="py-op">=</tt> <tt class="py-name">center</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">,</tt><tt class="py-name">center</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
+<a name="L1466"></a><tt class="py-lineno">1466</tt>  <tt class="py-line">            <tt class="py-name">x1</tt> <tt class="py-op">=</tt> <tt class="py-name">x</tt><tt class="py-op">-</tt><tt class="py-name">x_size</tt><tt class="py-op">;</tt> <tt class="py-name">x2</tt> <tt class="py-op">=</tt> <tt class="py-name">x</tt><tt class="py-op">+</tt><tt class="py-name">x_size</tt> </tt>
+<a name="L1467"></a><tt class="py-lineno">1467</tt>  <tt class="py-line">            <tt class="py-name">y1</tt> <tt class="py-op">=</tt> <tt class="py-name">y</tt><tt class="py-op">-</tt><tt class="py-name">y_size</tt><tt class="py-op">;</tt> <tt class="py-name">y2</tt> <tt class="py-op">=</tt> <tt class="py-name">y</tt><tt class="py-op">+</tt><tt class="py-name">y_size</tt> </tt>
+<a name="L1468"></a><tt class="py-lineno">1468</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glBegin</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_QUADS</tt><tt class="py-op">)</tt> </tt>
+<a name="L1469"></a><tt class="py-lineno">1469</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glVertex2f</tt><tt class="py-op">(</tt><tt class="py-name">x1</tt><tt class="py-op">,</tt><tt class="py-name">y1</tt><tt class="py-op">)</tt> </tt>
+<a name="L1470"></a><tt class="py-lineno">1470</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glVertex2f</tt><tt class="py-op">(</tt><tt class="py-name">x2</tt><tt class="py-op">,</tt><tt class="py-name">y1</tt><tt class="py-op">)</tt> </tt>
+<a name="L1471"></a><tt class="py-lineno">1471</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glVertex2f</tt><tt class="py-op">(</tt><tt class="py-name">x2</tt><tt class="py-op">,</tt><tt class="py-name">y2</tt><tt class="py-op">)</tt> </tt>
+<a name="L1472"></a><tt class="py-lineno">1472</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glVertex2f</tt><tt class="py-op">(</tt><tt class="py-name">x1</tt><tt class="py-op">,</tt><tt class="py-name">y2</tt><tt class="py-op">)</tt> </tt>
+<a name="L1473"></a><tt class="py-lineno">1473</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glEnd</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-comment"># GL_QUADS</tt> </tt>
+</div></div><a name="L1474"></a><tt class="py-lineno">1474</tt>  <tt class="py-line"> </tt>
+<a name="L1475"></a><tt class="py-lineno">1475</tt>  <tt class="py-line"><tt class="py-comment">####################################################################</tt> </tt>
+<a name="L1476"></a><tt class="py-lineno">1476</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L1477"></a><tt class="py-lineno">1477</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#        Frame timing information</tt> </tt>
+<a name="L1478"></a><tt class="py-lineno">1478</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L1479"></a><tt class="py-lineno">1479</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">####################################################################</tt> </tt>
+<a name="L1480"></a><tt class="py-lineno">1480</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="FrameTimer"></a><div id="FrameTimer-def"><a name="L1481"></a><tt class="py-lineno">1481</tt> <a class="py-toggle" href="#" id="FrameTimer-toggle" onclick="return toggle('FrameTimer');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.Core.FrameTimer-class.html">FrameTimer</a><tt class="py-op">:</tt> </tt>
+</div><div id="FrameTimer-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="FrameTimer-expanded"><a name="L1482"></a><tt class="py-lineno">1482</tt>  <tt class="py-line">    <tt class="py-docstring">"""Time inter frame intervals and compute frames per second."""</tt> </tt>
+<a name="FrameTimer.__init__"></a><div id="FrameTimer.__init__-def"><a name="L1483"></a><tt class="py-lineno">1483</tt> <a class="py-toggle" href="#" id="FrameTimer.__init__-toggle" onclick="return toggle('FrameTimer.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.Core.FrameTimer-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">bin_start_mse [...]
+</div><div id="FrameTimer.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="FrameTimer.__init__-expanded"><a name="L1484"></a><tt class="py-lineno">1484</tt>  <tt class="py-line">        <tt class="py-docstring">"""Create instance of FrameTimer."""</tt> </tt>
+<a name="L1485"></a><tt class="py-lineno">1485</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">bins</tt> <tt class="py-op">=</tt> <tt class="py-name">Numeric</tt><tt class="py-op">.</tt><tt class="py-name">arange</tt><tt class="py-op">(</tt> <tt class="py-name">bin_start_msec</tt><tt class="py-op">,</tt> <tt class="py-name">bin_stop_msec</tt><tt class="py-op">,</tt> <tt class="py-name">bin_width_msec</tt> <tt class="py-op">)</tt> </tt>
+<a name="L1486"></a><tt class="py-lineno">1486</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">bin_width_msec</tt> <tt class="py-op">=</tt> <tt id="link-410" class="py-name" targets="Class float=float-class.html"><a title="float" class="py-name" href="#" onclick="return doclink('link-410', 'float', 'link-410');">float</a></tt><tt class="py-op">(</tt><tt class="py-name">bin_width_msec</tt><tt class="py-op">)</tt> </tt>
+<a name="L1487"></a><tt class="py-lineno">1487</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">timing_histogram</tt> <tt class="py-op">=</tt> <tt class="py-name">Numeric</tt><tt class="py-op">.</tt><tt class="py-name">zeros</tt><tt class="py-op">(</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">bins</tt><tt class="py-op">.</tt><tt class="py-name">shape</tt><tt class="py-op">,</tt> <tt class="py-name" [...]
+<a name="L1488"></a><tt class="py-lineno">1488</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_true_time_last_frame</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> <tt class="py-comment"># no frames yet</tt> </tt>
+<a name="L1489"></a><tt class="py-lineno">1489</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">longest_frame_draw_time_sec</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L1490"></a><tt class="py-lineno">1490</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">first_tick_sec</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L1491"></a><tt class="py-lineno">1491</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">total_frames</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L1492"></a><tt class="py-lineno">1492</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">running_average_num_frames</tt> <tt class="py-op">=</tt> <tt class="py-name">running_average_num_frames</tt> </tt>
+<a name="L1493"></a><tt class="py-lineno">1493</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">running_average_num_frames</tt><tt class="py-op">:</tt> </tt>
+<a name="L1494"></a><tt class="py-lineno">1494</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">last_n_frame_times_sec</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">None</tt><tt class="py-op">]</tt><tt class="py-op">*</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">running_average_num_frames</tt> </tt>
+<a name="L1495"></a><tt class="py-lineno">1495</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">save_all_frametimes</tt> <tt class="py-op">=</tt> <tt class="py-name">save_all_frametimes</tt> </tt>
+<a name="L1496"></a><tt class="py-lineno">1496</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">save_all_frametimes</tt><tt class="py-op">:</tt> </tt>
+<a name="L1497"></a><tt class="py-lineno">1497</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">all_frametimes</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+</div><a name="L1498"></a><tt class="py-lineno">1498</tt>  <tt class="py-line"> </tt>
+<a name="FrameTimer.tick"></a><div id="FrameTimer.tick-def"><a name="L1499"></a><tt class="py-lineno">1499</tt> <a class="py-toggle" href="#" id="FrameTimer.tick-toggle" onclick="return toggle('FrameTimer.tick');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.Core.FrameTimer-class.html#tick">tick</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="FrameTimer.tick-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="FrameTimer.tick-expanded"><a name="L1500"></a><tt class="py-lineno">1500</tt>  <tt class="py-line">        <tt class="py-docstring">"""Declare a frame has just been drawn."""</tt> </tt>
+<a name="L1501"></a><tt class="py-lineno">1501</tt>  <tt class="py-line">        <tt class="py-name">true_time_now</tt> <tt class="py-op">=</tt> <tt id="link-411" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-411', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-412" class="py-name" targets="Variable VisionEgg.true_time_func=VisionEgg-module.html#true_time_func"><a title="VisionEgg.true_time_func" class="py-nam [...]
+<a name="L1502"></a><tt class="py-lineno">1502</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_true_time_last_frame</tt> <tt class="py-op">!=</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L1503"></a><tt class="py-lineno">1503</tt>  <tt class="py-line">            <tt class="py-name">this_frame_draw_time_sec</tt> <tt class="py-op">=</tt> <tt class="py-name">true_time_now</tt> <tt class="py-op">-</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_true_time_last_frame</tt> </tt>
+<a name="L1504"></a><tt class="py-lineno">1504</tt>  <tt class="py-line">            <tt class="py-name">index</tt> <tt class="py-op">=</tt> <tt id="link-413" class="py-name"><a title="int" class="py-name" href="#" onclick="return doclink('link-413', 'int', 'link-230');">int</a></tt><tt class="py-op">(</tt><tt class="py-name">math</tt><tt class="py-op">.</tt><tt class="py-name">ceil</tt><tt class="py-op">(</tt><tt class="py-name">this_frame_draw_time_sec</tt><tt class="py-op">*</tt><tt c [...]
+<a name="L1505"></a><tt class="py-lineno">1505</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">index</tt> <tt class="py-op">></tt> <tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">timing_histogram</tt><tt class="py-op">)</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1506"></a><tt class="py-lineno">1506</tt>  <tt class="py-line">                <tt class="py-name">index</tt> <tt class="py-op">=</tt> <tt class="py-op">-</tt><tt class="py-number">1</tt> </tt>
+<a name="L1507"></a><tt class="py-lineno">1507</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">timing_histogram</tt><tt class="py-op">[</tt><tt class="py-name">index</tt><tt class="py-op">]</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L1508"></a><tt class="py-lineno">1508</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">longest_frame_draw_time_sec</tt> <tt class="py-op">=</tt> <tt class="py-name">max</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">longest_frame_draw_time_sec</tt><tt class="py-op">,</tt><tt class="py-name">this_frame_draw_time_sec</tt><tt class="py-op">)</tt> </tt>
+<a name="L1509"></a><tt class="py-lineno">1509</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">running_average_num_frames</tt><tt class="py-op">:</tt> </tt>
+<a name="L1510"></a><tt class="py-lineno">1510</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">last_n_frame_times_sec</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">true_time_now</tt><tt class="py-op">)</tt> </tt>
+<a name="L1511"></a><tt class="py-lineno">1511</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">last_n_frame_times_sec</tt><tt class="py-op">.</tt><tt class="py-name">pop</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">)</tt> </tt>
+<a name="L1512"></a><tt class="py-lineno">1512</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1513"></a><tt class="py-lineno">1513</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">first_tick_sec</tt> <tt class="py-op">=</tt> <tt class="py-name">true_time_now</tt> </tt>
+<a name="L1514"></a><tt class="py-lineno">1514</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_true_time_last_frame</tt> <tt class="py-op">=</tt> <tt class="py-name">true_time_now</tt> <tt class="py-comment"># set for next frame</tt> </tt>
+<a name="L1515"></a><tt class="py-lineno">1515</tt>  <tt class="py-line"> </tt>
+<a name="L1516"></a><tt class="py-lineno">1516</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">save_all_frametimes</tt><tt class="py-op">:</tt> </tt>
+<a name="L1517"></a><tt class="py-lineno">1517</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">all_frametimes</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt> <tt class="py-name">true_time_now</tt> <tt class="py-op">)</tt> </tt>
+</div><a name="L1518"></a><tt class="py-lineno">1518</tt>  <tt class="py-line"> </tt>
+<a name="FrameTimer.get_all_frametimes"></a><div id="FrameTimer.get_all_frametimes-def"><a name="L1519"></a><tt class="py-lineno">1519</tt> <a class="py-toggle" href="#" id="FrameTimer.get_all_frametimes-toggle" onclick="return toggle('FrameTimer.get_all_frametimes');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.Core.FrameTimer-class.html#get_all_frametimes">get_all_frametimes</a><tt class="py-op">(</tt><tt class="py-param">self</tt [...]
+</div><div id="FrameTimer.get_all_frametimes-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="FrameTimer.get_all_frametimes-expanded"><a name="L1520"></a><tt class="py-lineno">1520</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">save_all_frametimes</tt><tt class="py-op">:</tt> </tt>
+<a name="L1521"></a><tt class="py-lineno">1521</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">all_frametimes</tt> </tt>
+<a name="L1522"></a><tt class="py-lineno">1522</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1523"></a><tt class="py-lineno">1523</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">"must set save_all_frametimes"</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1524"></a><tt class="py-lineno">1524</tt>  <tt class="py-line"> </tt>
+<a name="FrameTimer.get_longest_frame_duration_sec"></a><div id="FrameTimer.get_longest_frame_duration_sec-def"><a name="L1525"></a><tt class="py-lineno">1525</tt> <a class="py-toggle" href="#" id="FrameTimer.get_longest_frame_duration_sec-toggle" onclick="return toggle('FrameTimer.get_longest_frame_duration_sec');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.Core.FrameTimer-class.html#get_longest_frame_duration_sec">get_longest_fra [...]
+</div><div id="FrameTimer.get_longest_frame_duration_sec-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="FrameTimer.get_longest_frame_duration_sec-expanded"><a name="L1526"></a><tt class="py-lineno">1526</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">longest_frame_draw_time_sec</tt> </tt>
+</div><a name="L1527"></a><tt class="py-lineno">1527</tt>  <tt class="py-line"> </tt>
+<a name="FrameTimer.get_running_average_ifi_sec"></a><div id="FrameTimer.get_running_average_ifi_sec-def"><a name="L1528"></a><tt class="py-lineno">1528</tt> <a class="py-toggle" href="#" id="FrameTimer.get_running_average_ifi_sec-toggle" onclick="return toggle('FrameTimer.get_running_average_ifi_sec');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.Core.FrameTimer-class.html#get_running_average_ifi_sec">get_running_average_ifi_sec</a [...]
+</div><div id="FrameTimer.get_running_average_ifi_sec-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="FrameTimer.get_running_average_ifi_sec-expanded"><a name="L1529"></a><tt class="py-lineno">1529</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">running_average_num_frames</tt><tt class="py-op">:</tt> </tt>
+<a name="L1530"></a><tt class="py-lineno">1530</tt>  <tt class="py-line">            <tt class="py-name">frame_times</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L1531"></a><tt class="py-lineno">1531</tt>  <tt class="py-line">            <tt class="py-keyword">for</tt> <tt class="py-name">frame_time</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">last_n_frame_times_sec</tt><tt class="py-op">:</tt> </tt>
+<a name="L1532"></a><tt class="py-lineno">1532</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">frame_time</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L1533"></a><tt class="py-lineno">1533</tt>  <tt class="py-line">                    <tt class="py-name">frame_times</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt> <tt class="py-name">frame_time</tt> <tt class="py-op">)</tt> </tt>
+<a name="L1534"></a><tt class="py-lineno">1534</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">frame_times</tt><tt class="py-op">)</tt> <tt class="py-op">>=</tt> <tt class="py-number">2</tt><tt class="py-op">:</tt> </tt>
+<a name="L1535"></a><tt class="py-lineno">1535</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-op">(</tt><tt class="py-name">frame_times</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-op">-</tt> <tt class="py-name">frame_times</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> <tt class="py-op">/</tt> <tt class="py-name"> [...]
+<a name="L1536"></a><tt class="py-lineno">1536</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1537"></a><tt class="py-lineno">1537</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">RuntimeError</tt><tt class="py-op">(</tt><tt class="py-string">"running_average_num_frames not set when creating FrameTimer instance"</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1538"></a><tt class="py-lineno">1538</tt>  <tt class="py-line"> </tt>
+<a name="FrameTimer.get_average_ifi_sec"></a><div id="FrameTimer.get_average_ifi_sec-def"><a name="L1539"></a><tt class="py-lineno">1539</tt> <a class="py-toggle" href="#" id="FrameTimer.get_average_ifi_sec-toggle" onclick="return toggle('FrameTimer.get_average_ifi_sec');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.Core.FrameTimer-class.html#get_average_ifi_sec">get_average_ifi_sec</a><tt class="py-op">(</tt><tt class="py-param">se [...]
+</div><div id="FrameTimer.get_average_ifi_sec-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="FrameTimer.get_average_ifi_sec-expanded"><a name="L1540"></a><tt class="py-lineno">1540</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_true_time_last_frame</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L1541"></a><tt class="py-lineno">1541</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">RuntimeError</tt><tt class="py-op">(</tt><tt class="py-string">"No frames were drawn, can't calculate average IFI"</tt><tt class="py-op">)</tt> </tt>
+<a name="L1542"></a><tt class="py-lineno">1542</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_true_time_last_frame</tt> <tt class="py-op">-</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">first_tick_sec</tt><tt class="py-op">)</tt> <tt class="py-op">/</tt> <tt id="link-414" class="py-name"><a title="VisionEgg.Core.sum" class="py-name" href= [...]
+</div><a name="L1543"></a><tt class="py-lineno">1543</tt>  <tt class="py-line"> </tt>
+<a name="FrameTimer.print_histogram"></a><div id="FrameTimer.print_histogram-def"><a name="L1544"></a><tt class="py-lineno">1544</tt> <a class="py-toggle" href="#" id="FrameTimer.print_histogram-toggle" onclick="return toggle('FrameTimer.print_histogram');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.Core.FrameTimer-class.html#print_histogram">print_histogram</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op" [...]
+</div><div id="FrameTimer.print_histogram-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="FrameTimer.print_histogram-expanded"><a name="L1545"></a><tt class="py-lineno">1545</tt>  <tt class="py-line">        <tt id="link-415" class="py-name"><a title="VisionEgg.logger" class="py-name" href="#" onclick="return doclink('link-415', 'logger', 'link-41');">logger</a></tt> <tt class="py-op">=</tt> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="p [...]
+<a name="L1546"></a><tt class="py-lineno">1546</tt>  <tt class="py-line">        <tt id="link-416" class="py-name"><a title="VisionEgg.logger" class="py-name" href="#" onclick="return doclink('link-416', 'logger', 'link-41');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">warning</tt><tt class="py-op">(</tt><tt class="py-string">"print_histogram() method of FrameTimer is "</tt> </tt>
+<a name="L1547"></a><tt class="py-lineno">1547</tt>  <tt class="py-line">                       <tt class="py-string">"deprecated will stop being supported. Use "</tt> </tt>
+<a name="L1548"></a><tt class="py-lineno">1548</tt>  <tt class="py-line">                       <tt class="py-string">"log_histogram() instead."</tt><tt class="py-op">)</tt> </tt>
+<a name="L1549"></a><tt class="py-lineno">1549</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-417" class="py-name" targets="Method VisionEgg.Core.FrameTimer.log_histogram()=VisionEgg.Core.FrameTimer-class.html#log_histogram"><a title="VisionEgg.Core.FrameTimer.log_histogram" class="py-name" href="#" onclick="return doclink('link-417', 'log_histogram', 'link-417');">log_histogram</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1550"></a><tt class="py-lineno">1550</tt>  <tt class="py-line"> </tt>
+<a name="FrameTimer.log_histogram"></a><div id="FrameTimer.log_histogram-def"><a name="L1551"></a><tt class="py-lineno">1551</tt> <a class="py-toggle" href="#" id="FrameTimer.log_histogram-toggle" onclick="return toggle('FrameTimer.log_histogram');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.Core.FrameTimer-class.html#log_histogram">log_histogram</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt c [...]
+</div><div id="FrameTimer.log_histogram-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="FrameTimer.log_histogram-expanded"><a name="L1552"></a><tt class="py-lineno">1552</tt>  <tt class="py-line">        <tt class="py-docstring">"""Send histogram to logger."""</tt> </tt>
+<a name="L1553"></a><tt class="py-lineno">1553</tt>  <tt class="py-line">        <tt class="py-name">buffer</tt> <tt class="py-op">=</tt> <tt class="py-name">StringIO</tt><tt class="py-op">.</tt><tt class="py-name">StringIO</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1554"></a><tt class="py-lineno">1554</tt>  <tt class="py-line"> </tt>
+<a name="L1555"></a><tt class="py-lineno">1555</tt>  <tt class="py-line">        <tt class="py-name">n_frames</tt> <tt class="py-op">=</tt> <tt id="link-418" class="py-name"><a title="VisionEgg.Core.sum" class="py-name" href="#" onclick="return doclink('link-418', 'sum', 'link-11');">sum</a></tt><tt class="py-op">(</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">timing_histogram</tt> <tt class="py-op">)</tt><tt class="py-op">+</tt><tt class="py-number">1</tt> </tt>
+<a name="L1556"></a><tt class="py-lineno">1556</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">n_frames</tt> <tt class="py-op"><</tt> <tt class="py-number">2</tt><tt class="py-op">:</tt> </tt>
+<a name="L1557"></a><tt class="py-lineno">1557</tt>  <tt class="py-line">            <tt class="py-keyword">print</tt> <tt class="py-op">>></tt> <tt class="py-name">buffer</tt><tt class="py-op">,</tt> <tt class="py-string">'%d frames were drawn.'</tt><tt class="py-op">%</tt><tt class="py-name">n_frames</tt> </tt>
+<a name="L1558"></a><tt class="py-lineno">1558</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> </tt>
+<a name="L1559"></a><tt class="py-lineno">1559</tt>  <tt class="py-line">        <tt class="py-name">average_ifi_sec</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-419" class="py-name" targets="Method VisionEgg.Core.FrameTimer.get_average_ifi_sec()=VisionEgg.Core.FrameTimer-class.html#get_average_ifi_sec"><a title="VisionEgg.Core.FrameTimer.get_average_ifi_sec" class="py-name" href="#" onclick="return doclink('link-419', 'get_average_ifi_s [...]
+<a name="L1560"></a><tt class="py-lineno">1560</tt>  <tt class="py-line">        <tt class="py-keyword">print</tt> <tt class="py-op">>></tt> <tt class="py-name">buffer</tt><tt class="py-op">,</tt> <tt class="py-string">'%d frames were drawn.'</tt><tt class="py-op">%</tt><tt id="link-420" class="py-name"><a title="int" class="py-name" href="#" onclick="return doclink('link-420', 'int', 'link-230');">int</a></tt><tt class="py-op">(</tt><tt class="py-name">n_frames</tt><tt class="py-o [...]
+<a name="L1561"></a><tt class="py-lineno">1561</tt>  <tt class="py-line">        <tt class="py-keyword">print</tt> <tt class="py-op">>></tt> <tt class="py-name">buffer</tt><tt class="py-op">,</tt> <tt class="py-string">'Mean IFI was %.2f msec (%.2f fps), longest IFI was %.2f msec.'</tt><tt class="py-op">%</tt><tt class="py-op">(</tt> </tt>
+<a name="L1562"></a><tt class="py-lineno">1562</tt>  <tt class="py-line">            <tt class="py-name">average_ifi_sec</tt><tt class="py-op">*</tt><tt class="py-number">1000.0</tt><tt class="py-op">,</tt><tt class="py-number">1.0</tt><tt class="py-op">/</tt><tt class="py-name">average_ifi_sec</tt><tt class="py-op">,</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">longest_frame_draw_time_sec</tt><tt class="py-op">*</tt><tt class="py-number">1000.0</tt><tt cl [...]
+<a name="L1563"></a><tt class="py-lineno">1563</tt>  <tt class="py-line"> </tt>
+<a name="L1564"></a><tt class="py-lineno">1564</tt>  <tt class="py-line">        <tt class="py-name">h</tt> <tt class="py-op">=</tt> <tt class="py-name">hist</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">timing_histogram</tt> <tt class="py-comment"># shorthand</tt> </tt>
+<a name="L1565"></a><tt class="py-lineno">1565</tt>  <tt class="py-line">        <tt class="py-name">maxhist</tt> <tt class="py-op">=</tt> <tt id="link-421" class="py-name"><a title="float" class="py-name" href="#" onclick="return doclink('link-421', 'float', 'link-410');">float</a></tt><tt class="py-op">(</tt><tt class="py-name">max</tt><tt class="py-op">(</tt><tt class="py-name">h</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1566"></a><tt class="py-lineno">1566</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">maxhist</tt> <tt class="py-op">==</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt>
+<a name="L1567"></a><tt class="py-lineno">1567</tt>  <tt class="py-line">            <tt class="py-keyword">print</tt> <tt class="py-op">>></tt> <tt class="py-name">buffer</tt><tt class="py-op">,</tt> <tt class="py-string">"No frames were drawn."</tt> </tt>
+<a name="L1568"></a><tt class="py-lineno">1568</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> </tt>
+<a name="L1569"></a><tt class="py-lineno">1569</tt>  <tt class="py-line">        <tt class="py-name">lines</tt> <tt class="py-op">=</tt> <tt class="py-name">min</tt><tt class="py-op">(</tt><tt class="py-number">10</tt><tt class="py-op">,</tt><tt id="link-422" class="py-name"><a title="int" class="py-name" href="#" onclick="return doclink('link-422', 'int', 'link-230');">int</a></tt><tt class="py-op">(</tt><tt class="py-name">math</tt><tt class="py-op">.</tt><tt class="py-name">ceil</tt>< [...]
+<a name="L1570"></a><tt class="py-lineno">1570</tt>  <tt class="py-line">        <tt class="py-name">hist</tt> <tt class="py-op">=</tt> <tt class="py-name">hist</tt><tt class="py-op">/</tt><tt class="py-name">maxhist</tt><tt class="py-op">*</tt><tt id="link-423" class="py-name"><a title="float" class="py-name" href="#" onclick="return doclink('link-423', 'float', 'link-410');">float</a></tt><tt class="py-op">(</tt><tt class="py-name">lines</tt><tt class="py-op">)</tt> <tt class="py-comme [...]
+<a name="L1571"></a><tt class="py-lineno">1571</tt>  <tt class="py-line">        <tt class="py-keyword">print</tt> <tt class="py-op">>></tt> <tt class="py-name">buffer</tt><tt class="py-op">,</tt> <tt class="py-string">"histogram:"</tt> </tt>
+<a name="L1572"></a><tt class="py-lineno">1572</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">line</tt> <tt class="py-keyword">in</tt> <tt class="py-name">range</tt><tt class="py-op">(</tt><tt class="py-name">lines</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1573"></a><tt class="py-lineno">1573</tt>  <tt class="py-line">            <tt class="py-name">val</tt> <tt class="py-op">=</tt> <tt id="link-424" class="py-name"><a title="float" class="py-name" href="#" onclick="return doclink('link-424', 'float', 'link-410');">float</a></tt><tt class="py-op">(</tt><tt class="py-name">lines</tt><tt class="py-op">)</tt><tt class="py-op">-</tt><tt class="py-number">1.0</tt><tt class="py-op">-</tt><tt id="link-425" class="py-name"><a title="floa [...]
+<a name="L1574"></a><tt class="py-lineno">1574</tt>  <tt class="py-line">            <tt class="py-name">timing_string</tt> <tt class="py-op">=</tt> <tt class="py-string">"%6d   "</tt><tt class="py-op">%</tt><tt class="py-op">(</tt><tt class="py-name">round</tt><tt class="py-op">(</tt><tt class="py-name">maxhist</tt><tt class="py-op">*</tt><tt class="py-name">val</tt><tt class="py-op">/</tt><tt class="py-name">lines</tt><tt class="py-op">)</tt><tt class="py-op">,</tt><tt class="py-op">)< [...]
+<a name="L1575"></a><tt class="py-lineno">1575</tt>  <tt class="py-line">            <tt class="py-name">q</tt> <tt class="py-op">=</tt> <tt class="py-name">Numeric</tt><tt class="py-op">.</tt><tt class="py-name">greater</tt><tt class="py-op">(</tt><tt class="py-name">hist</tt><tt class="py-op">,</tt><tt class="py-name">val</tt><tt class="py-op">)</tt> </tt>
+<a name="L1576"></a><tt class="py-lineno">1576</tt>  <tt class="py-line">            <tt class="py-keyword">for</tt> <tt class="py-name">qi</tt> <tt class="py-keyword">in</tt> <tt class="py-name">q</tt><tt class="py-op">:</tt> </tt>
+<a name="L1577"></a><tt class="py-lineno">1577</tt>  <tt class="py-line">                <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-string">' '</tt> </tt>
+<a name="L1578"></a><tt class="py-lineno">1578</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">qi</tt><tt class="py-op">:</tt> </tt>
+<a name="L1579"></a><tt class="py-lineno">1579</tt>  <tt class="py-line">                    <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-string">'*'</tt> </tt>
+<a name="L1580"></a><tt class="py-lineno">1580</tt>  <tt class="py-line">                <tt class="py-name">timing_string</tt> <tt class="py-op">+=</tt> <tt class="py-string">"%4s "</tt><tt class="py-op">%</tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">,</tt><tt class="py-op">)</tt> </tt>
+<a name="L1581"></a><tt class="py-lineno">1581</tt>  <tt class="py-line">            <tt class="py-keyword">print</tt> <tt class="py-op">>></tt> <tt class="py-name">buffer</tt><tt class="py-op">,</tt> <tt class="py-name">timing_string</tt> </tt>
+<a name="L1582"></a><tt class="py-lineno">1582</tt>  <tt class="py-line">        <tt class="py-name">timing_string</tt> <tt class="py-op">=</tt> <tt class="py-string">" Time: "</tt> </tt>
+<a name="L1583"></a><tt class="py-lineno">1583</tt>  <tt class="py-line">        <tt class="py-name">timing_string</tt> <tt class="py-op">+=</tt> <tt class="py-string">"%4d "</tt><tt class="py-op">%</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">,</tt><tt class="py-op">)</tt> </tt>
+<a name="L1584"></a><tt class="py-lineno">1584</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">bin</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">bins</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
+<a name="L1585"></a><tt class="py-lineno">1585</tt>  <tt class="py-line">            <tt class="py-name">timing_string</tt> <tt class="py-op">+=</tt> <tt class="py-string">"%4d "</tt><tt class="py-op">%</tt><tt class="py-op">(</tt><tt class="py-name">bin</tt><tt class="py-op">,</tt><tt class="py-op">)</tt> </tt>
+<a name="L1586"></a><tt class="py-lineno">1586</tt>  <tt class="py-line">        <tt class="py-name">timing_string</tt> <tt class="py-op">+=</tt> <tt class="py-string">"+(msec)\n"</tt> </tt>
+<a name="L1587"></a><tt class="py-lineno">1587</tt>  <tt class="py-line">        <tt class="py-name">timing_string</tt> <tt class="py-op">+=</tt> <tt class="py-string">"Total:    "</tt> </tt>
+<a name="L1588"></a><tt class="py-lineno">1588</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">hi</tt> <tt class="py-keyword">in</tt> <tt class="py-name">h</tt><tt class="py-op">:</tt> </tt>
+<a name="L1589"></a><tt class="py-lineno">1589</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">hi</tt> <tt class="py-op"><=</tt> <tt class="py-number">999</tt><tt class="py-op">:</tt> </tt>
+<a name="L1590"></a><tt class="py-lineno">1590</tt>  <tt class="py-line">                <tt class="py-name">num_str</tt> <tt class="py-op">=</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt id="link-426" class="py-name"><a title="int" class="py-name" href="#" onclick="return doclink('link-426', 'int', 'link-230');">int</a></tt><tt class="py-op">(</tt><tt class="py-name">hi</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">center< [...]
+<a name="L1591"></a><tt class="py-lineno">1591</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1592"></a><tt class="py-lineno">1592</tt>  <tt class="py-line">                <tt class="py-name">num_str</tt> <tt class="py-op">=</tt> <tt class="py-string">" +++ "</tt> </tt>
+<a name="L1593"></a><tt class="py-lineno">1593</tt>  <tt class="py-line">            <tt class="py-name">timing_string</tt> <tt class="py-op">+=</tt> <tt class="py-name">num_str</tt> </tt>
+<a name="L1594"></a><tt class="py-lineno">1594</tt>  <tt class="py-line">        <tt class="py-keyword">print</tt> <tt class="py-op">>></tt> <tt class="py-name">buffer</tt><tt class="py-op">,</tt> <tt class="py-name">timing_string</tt> </tt>
+<a name="L1595"></a><tt class="py-lineno">1595</tt>  <tt class="py-line"> </tt>
+<a name="L1596"></a><tt class="py-lineno">1596</tt>  <tt class="py-line">        <tt class="py-name">buffer</tt><tt class="py-op">.</tt><tt class="py-name">seek</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">)</tt> </tt>
+<a name="L1597"></a><tt class="py-lineno">1597</tt>  <tt class="py-line">        <tt id="link-427" class="py-name"><a title="VisionEgg.logger" class="py-name" href="#" onclick="return doclink('link-427', 'logger', 'link-41');">logger</a></tt> <tt class="py-op">=</tt> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">getLogger</tt><tt class="py-op">(</tt><tt class="py-string">'VisionEgg.Core'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1598"></a><tt class="py-lineno">1598</tt>  <tt class="py-line">        <tt id="link-428" class="py-name"><a title="VisionEgg.logger" class="py-name" href="#" onclick="return doclink('link-428', 'logger', 'link-41');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-name">buffer</tt><tt class="py-op">.</tt><tt class="py-name">read</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L1599"></a><tt class="py-lineno">1599</tt>  <tt class="py-line"> </tt>
+<a name="L1600"></a><tt class="py-lineno">1600</tt>  <tt class="py-line"><tt class="py-comment">####################################################################</tt> </tt>
+<a name="L1601"></a><tt class="py-lineno">1601</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L1602"></a><tt class="py-lineno">1602</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#        Error handling and assumption checking</tt> </tt>
+<a name="L1603"></a><tt class="py-lineno">1603</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L1604"></a><tt class="py-lineno">1604</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">####################################################################</tt> </tt>
+<a name="L1605"></a><tt class="py-lineno">1605</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L1606"></a><tt class="py-lineno">1606</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-429" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-429', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-430" class="py-name" targets="Module VisionEgg.Deprecated=VisionEgg.Deprecated-module.html"><a title="VisionEgg.Deprecated" class="py-name" href="#" onclick="return doclink('link-430', 'De [...]
+<a name="L1607"></a><tt class="py-lineno">1607</tt>  <tt class="py-line"><tt id="link-431" class="py-name" targets="Class VisionEgg.Deprecated.Message=VisionEgg.Deprecated.Message-class.html"><a title="VisionEgg.Deprecated.Message" class="py-name" href="#" onclick="return doclink('link-431', 'Message', 'link-431');">Message</a></tt> <tt class="py-op">=</tt> <tt id="link-432" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-432', 'VisionEgg', 'li [...]
+<a name="L1608"></a><tt class="py-lineno">1608</tt>  <tt class="py-line"> </tt>
+<a name="L1609"></a><tt class="py-lineno">1609</tt>  <tt class="py-line"><tt id="link-435" class="py-name" targets="Variable VisionEgg.Core.message=VisionEgg.Core-module.html#message"><a title="VisionEgg.Core.message" class="py-name" href="#" onclick="return doclink('link-435', 'message', 'link-435');">message</a></tt> <tt class="py-op">=</tt> <tt id="link-436" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-436', 'VisionEgg', 'link-0');">Visio [...]
+<a name="L1610"></a><tt class="py-lineno">1610</tt>  <tt class="py-line"> </tt>
+<a name="L1611"></a><tt class="py-lineno">1611</tt>  <tt class="py-line"><tt id="link-439" class="py-name" targets="Variable VisionEgg.Core.gl_assumptions=VisionEgg.Core-module.html#gl_assumptions"><a title="VisionEgg.Core.gl_assumptions" class="py-name" href="#" onclick="return doclink('link-439', 'gl_assumptions', 'link-439');">gl_assumptions</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L1612"></a><tt class="py-lineno">1612</tt>  <tt class="py-line"> </tt>
+<a name="add_gl_assumption"></a><div id="add_gl_assumption-def"><a name="L1613"></a><tt class="py-lineno">1613</tt> <a class="py-toggle" href="#" id="add_gl_assumption-toggle" onclick="return toggle('add_gl_assumption');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.Core-module.html#add_gl_assumption">add_gl_assumption</a><tt class="py-op">(</tt><tt class="py-param">gl_variable</tt><tt class="py-op">,</tt><tt class="py-param">required_va [...]
+</div><div id="add_gl_assumption-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="add_gl_assumption-expanded"><a name="L1614"></a><tt class="py-lineno">1614</tt>  <tt class="py-line">    <tt class="py-docstring">"""Save assumptions for later checking once OpenGL context created."""</tt> </tt>
+<a name="L1615"></a><tt class="py-lineno">1615</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">failure_callback</tt><tt class="py-op">)</tt> <tt class="py-op">!=</tt> <tt class="py-name">types</tt><tt class="py-op">.</tt><tt class="py-name">FunctionType</tt><tt class="py-op">:</tt> </tt>
+<a name="L1616"></a><tt class="py-lineno">1616</tt>  <tt class="py-line">        <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">"failure_callback must be a function!"</tt><tt class="py-op">)</tt> </tt>
+<a name="L1617"></a><tt class="py-lineno">1617</tt>  <tt class="py-line">    <tt id="link-440" class="py-name"><a title="VisionEgg.Core.gl_assumptions" class="py-name" href="#" onclick="return doclink('link-440', 'gl_assumptions', 'link-439');">gl_assumptions</a></tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-name">gl_variable</tt><tt class="py-op">,</tt><tt class="py-name">required_value</tt><tt class="py-op">,</t [...]
+</div><a name="L1618"></a><tt class="py-lineno">1618</tt>  <tt class="py-line"> </tt>
+<a name="init_gl_extension"></a><div id="init_gl_extension-def"><a name="L1619"></a><tt class="py-lineno">1619</tt> <a class="py-toggle" href="#" id="init_gl_extension-toggle" onclick="return toggle('init_gl_extension');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.Core-module.html#init_gl_extension">init_gl_extension</a><tt class="py-op">(</tt><tt class="py-param">prefix</tt><tt class="py-op">,</tt><tt class="py-param">name</tt><tt cla [...]
+</div><div id="init_gl_extension-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="init_gl_extension-expanded"><a name="L1620"></a><tt class="py-lineno">1620</tt>  <tt class="py-line">    <tt class="py-keyword">global</tt> <tt class="py-name">gl</tt> <tt class="py-comment"># interpreter knows when we're up to something funny with GLTrace</tt> </tt>
+<a name="L1621"></a><tt class="py-lineno">1621</tt>  <tt class="py-line">    <tt id="link-441" class="py-name"><a title="VisionEgg.logger" class="py-name" href="#" onclick="return doclink('link-441', 'logger', 'link-41');">logger</a></tt> <tt class="py-op">=</tt> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">getLogger</tt><tt class="py-op">(</tt><tt class="py-string">'VisionEgg.Core'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1622"></a><tt class="py-lineno">1622</tt>  <tt class="py-line"> </tt>
+<a name="L1623"></a><tt class="py-lineno">1623</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">gl</tt> <tt class="py-keyword">is</tt> <tt id="link-442" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-442', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-443" class="py-name"><a title="VisionEgg.GLTrace" class="py-name" href="#" onclick="return doclink('link-443', 'GLTrace', 'link-6 [...]
+<a name="L1624"></a><tt class="py-lineno">1624</tt>  <tt class="py-line">        <tt class="py-name">watched</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
+<a name="L1625"></a><tt class="py-lineno">1625</tt>  <tt class="py-line">        <tt class="py-name">gl</tt> <tt class="py-op">=</tt> <tt id="link-444" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-444', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-445" class="py-name"><a title="VisionEgg.GLTrace" class="py-name" href="#" onclick="return doclink('link-445', 'GLTrace', 'link-6');">GLTrace</a></tt><tt class="p [...]
+<a name="L1626"></a><tt class="py-lineno">1626</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1627"></a><tt class="py-lineno">1627</tt>  <tt class="py-line">        <tt class="py-name">watched</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
+<a name="L1628"></a><tt class="py-lineno">1628</tt>  <tt class="py-line"> </tt>
+<a name="L1629"></a><tt class="py-lineno">1629</tt>  <tt class="py-line">    <tt class="py-name">module_name</tt> <tt class="py-op">=</tt> <tt class="py-string">"OpenGL.GL.%(prefix)s.%(name)s"</tt><tt class="py-op">%</tt><tt class="py-name">locals</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1630"></a><tt class="py-lineno">1630</tt>  <tt class="py-line">    <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L1631"></a><tt class="py-lineno">1631</tt>  <tt class="py-line">        <tt class="py-keyword">exec</tt> <tt class="py-string">"import "</tt><tt class="py-op">+</tt><tt class="py-name">module_name</tt> </tt>
+<a name="L1632"></a><tt class="py-lineno">1632</tt>  <tt class="py-line">    <tt class="py-keyword">except</tt> <tt class="py-name">ImportError</tt><tt class="py-op">:</tt> </tt>
+<a name="L1633"></a><tt class="py-lineno">1633</tt>  <tt class="py-line">        <tt id="link-446" class="py-name"><a title="VisionEgg.logger" class="py-name" href="#" onclick="return doclink('link-446', 'logger', 'link-41');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">warning</tt><tt class="py-op">(</tt><tt class="py-string">"Could not import %s -- some features will be "</tt> </tt>
+<a name="L1634"></a><tt class="py-lineno">1634</tt>  <tt class="py-line">                       <tt class="py-string">"missing."</tt><tt class="py-op">%</tt><tt class="py-op">(</tt><tt class="py-name">module_name</tt><tt class="py-op">,</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1635"></a><tt class="py-lineno">1635</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">False</tt> </tt>
+<a name="L1636"></a><tt class="py-lineno">1636</tt>  <tt class="py-line">    <tt class="py-name">module</tt> <tt class="py-op">=</tt> <tt class="py-name">eval</tt><tt class="py-op">(</tt><tt class="py-name">module_name</tt><tt class="py-op">)</tt> </tt>
+<a name="L1637"></a><tt class="py-lineno">1637</tt>  <tt class="py-line">    <tt class="py-name">init_function_name</tt> <tt class="py-op">=</tt> <tt class="py-string">"glInit"</tt><tt class="py-op">+</tt><tt class="py-name">name</tt><tt class="py-op">.</tt><tt id="link-447" class="py-name" targets="Variable VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.title=VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame-class.html#title,Variable VisionEgg.PyroApps.DropinGUI.DropinControlFram [...]
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.title
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.title
+VisionEgg.PyroApps.GridGUI.GridControlFrame.title
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.title
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.title
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.title
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.title" class="py-name" href="#" onclick="return doclink('link-447', 'title', 'link-447');">title</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">replace</tt><tt class="py-op">(</tt><tt class="py-string">'_'</tt><tt class="py-op">,</tt><tt class="py-string">''</tt><tt class="py-op">)</tt><tt class="py-op">+</tt><tt class="py-name">prefix</tt> </tt>
+<a name="L1638"></a><tt class="py-lineno">1638</tt>  <tt class="py-line">    <tt class="py-name">init_function</tt> <tt class="py-op">=</tt> <tt class="py-name">getattr</tt><tt class="py-op">(</tt><tt class="py-name">module</tt><tt class="py-op">,</tt><tt class="py-name">init_function_name</tt><tt class="py-op">)</tt> </tt>
+<a name="L1639"></a><tt class="py-lineno">1639</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">init_function</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1640"></a><tt class="py-lineno">1640</tt>  <tt class="py-line">        <tt id="link-448" class="py-name"><a title="VisionEgg.logger" class="py-name" href="#" onclick="return doclink('link-448', 'logger', 'link-41');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">warning</tt><tt class="py-op">(</tt><tt class="py-string">"Could not initialize %s -- some features will "</tt> </tt>
+<a name="L1641"></a><tt class="py-lineno">1641</tt>  <tt class="py-line">                       <tt class="py-string">"be missing."</tt><tt class="py-op">%</tt><tt class="py-op">(</tt><tt class="py-name">module_name</tt><tt class="py-op">,</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1642"></a><tt class="py-lineno">1642</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">False</tt> </tt>
+<a name="L1643"></a><tt class="py-lineno">1643</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">attr_name</tt> <tt class="py-keyword">in</tt> <tt class="py-name">dir</tt><tt class="py-op">(</tt><tt class="py-name">module</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1644"></a><tt class="py-lineno">1644</tt>  <tt class="py-line">        <tt class="py-comment"># put attributes from module into "gl" module dictionary</tt> </tt>
+<a name="L1645"></a><tt class="py-lineno">1645</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># (Namespace overlap as you'd get OpenGL apps written in C)</tt> </tt>
+<a name="L1646"></a><tt class="py-lineno">1646</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">attr</tt> <tt class="py-op">=</tt> <tt class="py-name">getattr</tt><tt class="py-op">(</tt><tt class="py-name">module</tt><tt class="py-op">,</tt><tt class="py-name">attr_name</tt><tt class="py-op">)</tt> </tt>
+<a name="L1647"></a><tt class="py-lineno">1647</tt>  <tt class="py-line">        <tt class="py-comment"># reject unwanted attributes</tt> </tt>
+<a name="L1648"></a><tt class="py-lineno">1648</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">attr_name</tt><tt class="py-op">.</tt><tt class="py-name">startswith</tt><tt class="py-op">(</tt><tt class="py-string">'__'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1649"></a><tt class="py-lineno">1649</tt>  <tt class="py-line">            <tt class="py-keyword">continue</tt> </tt>
+<a name="L1650"></a><tt class="py-lineno">1650</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">attr_name</tt> <tt class="py-op">==</tt> <tt class="py-name">init_function_name</tt><tt class="py-op">:</tt> </tt>
+<a name="L1651"></a><tt class="py-lineno">1651</tt>  <tt class="py-line">            <tt class="py-keyword">continue</tt> </tt>
+<a name="L1652"></a><tt class="py-lineno">1652</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">attr_name</tt> <tt class="py-op">==</tt> <tt class="py-string">'gl'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1653"></a><tt class="py-lineno">1653</tt>  <tt class="py-line">            <tt class="py-keyword">continue</tt> </tt>
+<a name="L1654"></a><tt class="py-lineno">1654</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">attr</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt id="link-449" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-449', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">)</tt><tt class [...]
+<a name="L1655"></a><tt class="py-lineno">1655</tt>  <tt class="py-line">            <tt class="py-keyword">continue</tt> </tt>
+<a name="L1656"></a><tt class="py-lineno">1656</tt>  <tt class="py-line"> </tt>
+<a name="L1657"></a><tt class="py-lineno">1657</tt>  <tt class="py-line">        <tt class="py-name">gl_attr_name</tt> <tt class="py-op">=</tt> <tt class="py-name">attr_name</tt> </tt>
+<a name="L1658"></a><tt class="py-lineno">1658</tt>  <tt class="py-line">        <tt class="py-name">setattr</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">,</tt><tt class="py-name">gl_attr_name</tt><tt class="py-op">,</tt><tt class="py-name">attr</tt><tt class="py-op">)</tt> </tt>
+<a name="L1659"></a><tt class="py-lineno">1659</tt>  <tt class="py-line"> </tt>
+<a name="L1660"></a><tt class="py-lineno">1660</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">watched</tt><tt class="py-op">:</tt> </tt>
+<a name="L1661"></a><tt class="py-lineno">1661</tt>  <tt class="py-line">        <tt id="link-450" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-450', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-451" class="py-name"><a title="VisionEgg.GLTrace" class="py-name" href="#" onclick="return doclink('link-451', 'GLTrace', 'link-6');">GLTrace</a></tt><tt class="py-op">.</tt><tt id="link-452" class="py-name" targets [...]
+<a name="L1662"></a><tt class="py-lineno">1662</tt>  <tt class="py-line">        <tt class="py-name">gl</tt> <tt class="py-op">=</tt> <tt id="link-453" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-453', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-454" class="py-name"><a title="VisionEgg.GLTrace" class="py-name" href="#" onclick="return doclink('link-454', 'GLTrace', 'link-6');">GLTrace</a></tt> <tt class=" [...]
+<a name="L1663"></a><tt class="py-lineno">1663</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">True</tt> <tt class="py-comment"># success!</tt> </tt>
+</div><a name="L1664"></a><tt class="py-lineno">1664</tt>  <tt class="py-line"> </tt>
+<a name="post_gl_init"></a><div id="post_gl_init-def"><a name="L1665"></a><tt class="py-lineno">1665</tt> <a class="py-toggle" href="#" id="post_gl_init-toggle" onclick="return toggle('post_gl_init');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.Core-module.html#post_gl_init">post_gl_init</a><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="post_gl_init-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="post_gl_init-expanded"><a name="L1666"></a><tt class="py-lineno">1666</tt>  <tt class="py-line">    <tt class="py-docstring">"""Called by Screen instance. Requires OpenGL context to be created."""</tt> </tt>
+<a name="L1667"></a><tt class="py-lineno">1667</tt>  <tt class="py-line">    <tt class="py-keyword">global</tt> <tt class="py-name">gl_vendor</tt><tt class="py-op">,</tt> <tt class="py-name">gl_renderer</tt><tt class="py-op">,</tt> <tt class="py-name">gl_version</tt> <tt class="py-comment"># set above</tt> </tt>
+<a name="L1668"></a><tt class="py-lineno">1668</tt>  <tt class="py-line">    <tt id="link-455" class="py-name"><a title="VisionEgg.logger" class="py-name" href="#" onclick="return doclink('link-455', 'logger', 'link-41');">logger</a></tt> <tt class="py-op">=</tt> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">getLogger</tt><tt class="py-op">(</tt><tt class="py-string">'VisionEgg.Core'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1669"></a><tt class="py-lineno">1669</tt>  <tt class="py-line"> </tt>
+<a name="L1670"></a><tt class="py-lineno">1670</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">gl_version</tt> <tt class="py-op"><</tt> <tt class="py-string">'1.3'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1671"></a><tt class="py-lineno">1671</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt id="link-456" class="py-name" targets="Function VisionEgg.Core.init_gl_extension()=VisionEgg.Core-module.html#init_gl_extension"><a title="VisionEgg.Core.init_gl_extension" class="py-name" href="#" onclick="return doclink('link-456', 'init_gl_extension', 'link-456');">init_gl_extension</a></tt><tt class="py-op">(</tt><tt class="py-string">'AR [...]
+<a name="L1672"></a><tt class="py-lineno">1672</tt>  <tt class="py-line">            <tt id="link-457" class="py-name"><a title="VisionEgg.logger" class="py-name" href="#" onclick="return doclink('link-457', 'logger', 'link-41');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">warning</tt><tt class="py-op">(</tt><tt class="py-string">"multitexturing not available.  Some features "</tt> </tt>
+<a name="L1673"></a><tt class="py-lineno">1673</tt>  <tt class="py-line">                           <tt class="py-string">"will not be available"</tt><tt class="py-op">)</tt> </tt>
+<a name="L1674"></a><tt class="py-lineno">1674</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1675"></a><tt class="py-lineno">1675</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">,</tt><tt class="py-string">'glActiveTexture'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1676"></a><tt class="py-lineno">1676</tt>  <tt class="py-line">            <tt id="link-458" class="py-name"><a title="VisionEgg.logger" class="py-name" href="#" onclick="return doclink('link-458', 'logger', 'link-41');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">debug</tt><tt class="py-op">(</tt><tt class="py-string">"PyOpenGL bug: OpenGL multitexturing not available "</tt> </tt>
+<a name="L1677"></a><tt class="py-lineno">1677</tt>  <tt class="py-line">                         <tt class="py-string">"even though OpenGL is 1.3 or greater. "</tt> </tt>
+<a name="L1678"></a><tt class="py-lineno">1678</tt>  <tt class="py-line">                         <tt class="py-string">"Attempting ctypes-based workaround."</tt><tt class="py-op">)</tt> </tt>
+<a name="L1679"></a><tt class="py-lineno">1679</tt>  <tt class="py-line">            <tt id="link-459" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-459', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-460" class="py-name"><a title="VisionEgg.PlatformDependent" class="py-name" href="#" onclick="return doclink('link-460', 'PlatformDependent', 'link-2');">PlatformDependent</a></tt><tt class="py-op">.</tt><tt id= [...]
+<a name="L1680"></a><tt class="py-lineno">1680</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">,</tt><tt class="py-string">'glActiveTexture'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> <tt class="py-comment"># the above worked or PyOpenGL fixed</tt> </tt>
+<a name="L1681"></a><tt class="py-lineno">1681</tt>  <tt class="py-line">            <tt class="py-comment"># OpenGL 1.3 has this extension built-in,</tt> </tt>
+<a name="L1682"></a><tt class="py-lineno">1682</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># but doing this allows use of ARB names.</tt> </tt>
+<a name="L1683"></a><tt class="py-lineno">1683</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glActiveTextureARB</tt> <tt class="py-op">=</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glActiveTexture</tt> </tt>
+<a name="L1684"></a><tt class="py-lineno">1684</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glMultiTexCoord2fARB</tt> <tt class="py-op">=</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glMultiTexCoord2f</tt> </tt>
+<a name="L1685"></a><tt class="py-lineno">1685</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE0_ARB</tt> <tt class="py-op">=</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE0</tt> </tt>
+<a name="L1686"></a><tt class="py-lineno">1686</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE1_ARB</tt> <tt class="py-op">=</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE1</tt> </tt>
+<a name="L1687"></a><tt class="py-lineno">1687</tt>  <tt class="py-line"> </tt>
+<a name="L1688"></a><tt class="py-lineno">1688</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">gl_version</tt> <tt class="py-op"><</tt> <tt class="py-string">'1.2'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1689"></a><tt class="py-lineno">1689</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt id="link-462" class="py-name"><a title="VisionEgg.Core.init_gl_extension" class="py-name" href="#" onclick="return doclink('link-462', 'init_gl_extension', 'link-456');">init_gl_extension</a></tt><tt class="py-op">(</tt><tt class="py-string">'EXT'</tt><tt class="py-op">,</tt><tt class="py-string">'bgra'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1690"></a><tt class="py-lineno">1690</tt>  <tt class="py-line">            <tt class="py-comment"># make sure gl.GL_BRGA is defined</tt> </tt>
+<a name="L1691"></a><tt class="py-lineno">1691</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_BGRA</tt> <tt class="py-op">=</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_BGRA_EXT</tt> </tt>
+<a name="L1692"></a><tt class="py-lineno">1692</tt>  <tt class="py-line"> </tt>
+<a name="L1693"></a><tt class="py-lineno">1693</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">gl_variable</tt><tt class="py-op">,</tt><tt class="py-name">required_value</tt><tt class="py-op">,</tt><tt class="py-name">failure_callback</tt> <tt class="py-keyword">in</tt> <tt id="link-463" class="py-name"><a title="VisionEgg.Core.gl_assumptions" class="py-name" href="#" onclick="return doclink('link-463', 'gl_assumptions', 'link-439');">gl_assumptions</a>< [...]
+<a name="L1694"></a><tt class="py-lineno">1694</tt>  <tt class="py-line">        <tt class="py-comment"># Code required for each variable to be checked</tt> </tt>
+<a name="L1695"></a><tt class="py-lineno">1695</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">gl_variable</tt> <tt class="py-op">==</tt> <tt class="py-string">"__SPECIAL__"</tt><tt class="py-op">:</tt> </tt>
+<a name="L1696"></a><tt class="py-lineno">1696</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">required_value</tt> <tt class="py-op">==</tt> <tt class="py-string">"linux_nvidia_or_new_ATI"</tt><tt class="py-op">:</tt> </tt>
+<a name="L1697"></a><tt class="py-lineno">1697</tt>  <tt class="py-line">                <tt class="py-name">ok</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L1698"></a><tt class="py-lineno">1698</tt>  <tt class="py-line">                <tt class="py-comment"># Test for nVidia</tt> </tt>
+<a name="L1699"></a><tt class="py-lineno">1699</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-keyword">if</tt> <tt class="py-string">"nvidia"</tt> <tt class="py-op">==</tt> <tt class="py-name">gl_vendor</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">lower</tt><tt class="py-op [...]
+<a name="L1700"></a><tt class="py-lineno">1700</tt>  <tt class="py-line">                    <tt class="py-name">ok</tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> <tt class="py-comment"># yes it is</tt> </tt>
+<a name="L1701"></a><tt class="py-lineno">1701</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">gl_renderer</tt><tt class="py-op">.</tt><tt class="py-name">startswith</tt><tt class="py-op">(</tt><tt class="py-string">'Mesa DRI Radeon'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1702"></a><tt class="py-lineno">1702</tt>  <tt class="py-line">                    <tt class="py-name">date</tt> <tt class="py-op">=</tt> <tt class="py-name">gl_renderer</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">3</tt><tt class="py-op">]</tt> </tt>
+<a name="L1703"></a><tt class="py-lineno">1703</tt>  <tt class="py-line">                    <tt class="py-keyword">if</tt> <tt class="py-name">date</tt> <tt class="py-op">></tt> <tt class="py-string">"20021216"</tt><tt class="py-op">:</tt> <tt class="py-comment"># not sure about exact date</tt> </tt>
+<a name="L1704"></a><tt class="py-lineno">1704</tt>  <tt class="py-line">                        <tt class="py-name">ok</tt><tt class="py-op">=</tt><tt class="py-number">1</tt> </tt>
+<a name="L1705"></a><tt class="py-lineno">1705</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">ok</tt><tt class="py-op">:</tt> </tt>
+<a name="L1706"></a><tt class="py-lineno">1706</tt>  <tt class="py-line">                    <tt class="py-name">failure_callback</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1707"></a><tt class="py-lineno">1707</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1708"></a><tt class="py-lineno">1708</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> <tt class="py-name">RuntimeError</tt><tt class="py-op">,</tt> <tt class="py-string">"Unknown gl_assumption: %s == %s"</tt><tt class="py-op">%</tt><tt class="py-op">(</tt><tt class="py-name">gl_variable</tt><tt class="py-op">,</tt><tt class="py-name">required_value</tt><tt class="py-op">)</tt> </tt>
+<a name="L1709"></a><tt class="py-lineno">1709</tt>  <tt class="py-line"> </tt>
+<a name="L1710"></a><tt class="py-lineno">1710</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">gl_variable</tt><tt class="py-op">.</tt><tt class="py-name">upper</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-string">"GL_VERSION"</tt><tt class="py-op">:</tt> </tt>
+<a name="L1711"></a><tt class="py-lineno">1711</tt>  <tt class="py-line">            <tt class="py-name">value_str</tt> <tt class="py-op">=</tt> <tt class="py-name">gl_version</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt>
+<a name="L1712"></a><tt class="py-lineno">1712</tt>  <tt class="py-line">            <tt class="py-name">value_ints</tt> <tt class="py-op">=</tt> <tt class="py-name">map</tt><tt class="py-op">(</tt><tt id="link-464" class="py-name"><a title="int" class="py-name" href="#" onclick="return doclink('link-464', 'int', 'link-230');">int</a></tt><tt class="py-op">,</tt><tt class="py-name">value_str</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-s [...]
+<a name="L1713"></a><tt class="py-lineno">1713</tt>  <tt class="py-line">            <tt class="py-name">value</tt> <tt class="py-op">=</tt> <tt id="link-465" class="py-name"><a title="float" class="py-name" href="#" onclick="return doclink('link-465', 'float', 'link-410');">float</a></tt><tt class="py-op">(</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">value_ints</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py- [...]
+<a name="L1714"></a><tt class="py-lineno">1714</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">value</tt> <tt class="py-op"><</tt> <tt class="py-name">required_value</tt><tt class="py-op">:</tt> </tt>
+<a name="L1715"></a><tt class="py-lineno">1715</tt>  <tt class="py-line">                <tt class="py-name">failure_callback</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1716"></a><tt class="py-lineno">1716</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1717"></a><tt class="py-lineno">1717</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">RuntimeError</tt><tt class="py-op">,</tt> <tt class="py-string">"Unknown gl_assumption"</tt> </tt>
+<a name="L1718"></a><tt class="py-lineno">1718</tt>  <tt class="py-line"> </tt>
+<a name="L1719"></a><tt class="py-lineno">1719</tt>  <tt class="py-line">    <tt class="py-comment"># Do we have gl.GL_CLAMP_TO_EDGE ?</tt> </tt>
+<a name="L1720"></a><tt class="py-lineno">1720</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L1721"></a><tt class="py-lineno">1721</tt>  <tt class="py-line">        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_CLAMP_TO_EDGE</tt> </tt>
+<a name="L1722"></a><tt class="py-lineno">1722</tt>  <tt class="py-line">    <tt class="py-keyword">except</tt> <tt class="py-name">AttributeError</tt><tt class="py-op">:</tt> </tt>
+<a name="L1723"></a><tt class="py-lineno">1723</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">gl_version</tt> <tt class="py-op">>=</tt> <tt class="py-string">'1.2'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1724"></a><tt class="py-lineno">1724</tt>  <tt class="py-line">            <tt class="py-comment"># If OpenGL version >= 1.2, this should be defined</tt> </tt>
+<a name="L1725"></a><tt class="py-lineno">1725</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># It seems to be a PyOpenGL bug that it's not.</tt> </tt>
+<a name="L1726"></a><tt class="py-lineno">1726</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt id="link-466" class="py-name"><a title="VisionEgg.logger" class="py-name" href="#" onclick="return doclink('link-466', 'logger', 'link-41');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">debug</tt><tt class="py-op">(</tt><tt class="py-string">"GL_CLAMP_TO_EDGE is not defined. "</tt> </tt>
+<a name="L1727"></a><tt class="py-lineno">1727</tt>  <tt class="py-line">                         <tt class="py-string">"Because you have OpenGL version 1.2 or "</tt> </tt>
+<a name="L1728"></a><tt class="py-lineno">1728</tt>  <tt class="py-line">                         <tt class="py-string">"greater, this is probably a bug in "</tt> </tt>
+<a name="L1729"></a><tt class="py-lineno">1729</tt>  <tt class="py-line">                         <tt class="py-string">"PyOpenGL.  Assigning GL_CLAMP_TO_EDGE to "</tt> </tt>
+<a name="L1730"></a><tt class="py-lineno">1730</tt>  <tt class="py-line">                         <tt class="py-string">"the value that is usually used."</tt><tt class="py-op">)</tt> </tt>
+<a name="L1731"></a><tt class="py-lineno">1731</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_CLAMP_TO_EDGE</tt> <tt class="py-op">=</tt> <tt class="py-number">0x812F</tt> </tt>
+<a name="L1732"></a><tt class="py-lineno">1732</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1733"></a><tt class="py-lineno">1733</tt>  <tt class="py-line">            <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L1734"></a><tt class="py-lineno">1734</tt>  <tt class="py-line">                <tt id="link-467" class="py-name"><a title="VisionEgg.Core.init_gl_extension" class="py-name" href="#" onclick="return doclink('link-467', 'init_gl_extension', 'link-456');">init_gl_extension</a></tt><tt class="py-op">(</tt><tt class="py-string">'SGIS'</tt><tt class="py-op">,</tt><tt class="py-string">'texture_edge_clamp'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1735"></a><tt class="py-lineno">1735</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_CLAMP_TO_EDGE</tt> <tt class="py-op">=</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_CLAMP_TO_EDGE_SGIS</tt> </tt>
+<a name="L1736"></a><tt class="py-lineno">1736</tt>  <tt class="py-line">            <tt class="py-keyword">except</tt><tt class="py-op">:</tt> </tt>
+<a name="L1737"></a><tt class="py-lineno">1737</tt>  <tt class="py-line"> </tt>
+<a name="L1738"></a><tt class="py-lineno">1738</tt>  <tt class="py-line">                <tt id="link-468" class="py-name"><a title="VisionEgg.logger" class="py-name" href="#" onclick="return doclink('link-468', 'logger', 'link-41');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">warning</tt><tt class="py-op">(</tt><tt class="py-string">"GL_CLAMP_TO_EDGE is not "</tt> </tt>
+<a name="L1739"></a><tt class="py-lineno">1739</tt>  <tt class="py-line">                               <tt class="py-string">"available.  OpenGL version is "</tt> </tt>
+<a name="L1740"></a><tt class="py-lineno">1740</tt>  <tt class="py-line">                               <tt class="py-string">"less than 1.2, and the "</tt> </tt>
+<a name="L1741"></a><tt class="py-lineno">1741</tt>  <tt class="py-line">                               <tt class="py-string">"texture_edge_clamp_SGIS extension "</tt> </tt>
+<a name="L1742"></a><tt class="py-lineno">1742</tt>  <tt class="py-line">                               <tt class="py-string">"failed to load. It may be impossible to "</tt> </tt>
+<a name="L1743"></a><tt class="py-lineno">1743</tt>  <tt class="py-line">                               <tt class="py-string">"get exact 1:1 reproduction of "</tt> </tt>
+<a name="L1744"></a><tt class="py-lineno">1744</tt>  <tt class="py-line">                               <tt class="py-string">"textures.  Using GL_CLAMP instead of "</tt> </tt>
+<a name="L1745"></a><tt class="py-lineno">1745</tt>  <tt class="py-line">                               <tt class="py-string">"GL_CLAMP_TO_EDGE."</tt><tt class="py-op">)</tt> </tt>
+<a name="L1746"></a><tt class="py-lineno">1746</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_CLAMP_TO_EDGE</tt> <tt class="py-op">=</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_CLAMP</tt> </tt>
+</div><a name="L1747"></a><tt class="py-lineno">1747</tt>  <tt class="py-line"> </tt>
+<a name="L1748"></a><tt class="py-lineno">1748</tt>  <tt class="py-line"><tt class="py-comment">#########################################################################</tt> </tt>
+<a name="L1749"></a><tt class="py-lineno">1749</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L1750"></a><tt class="py-lineno">1750</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#       Moved to FlowControl.py -- here only for backwards compatibility</tt> </tt>
+<a name="L1751"></a><tt class="py-lineno">1751</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L1752"></a><tt class="py-lineno">1752</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#########################################################################</tt> </tt>
+<a name="L1753"></a><tt class="py-lineno">1753</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L1754"></a><tt class="py-lineno">1754</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-469" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-469', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-470" class="py-name" targets="Module VisionEgg.FlowControl=VisionEgg.FlowControl-module.html"><a title="VisionEgg.FlowControl" class="py-name" href="#" onclick="return doclink('link-470',  [...]
+<a name="L1755"></a><tt class="py-lineno">1755</tt>  <tt class="py-line"><tt id="link-471" class="py-name" targets="Class VisionEgg.FlowControl.Presentation=VisionEgg.FlowControl.Presentation-class.html"><a title="VisionEgg.FlowControl.Presentation" class="py-name" href="#" onclick="return doclink('link-471', 'Presentation', 'link-471');">Presentation</a></tt> <tt class="py-op">=</tt> <tt id="link-472" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink( [...]
+<a name="L1756"></a><tt class="py-lineno">1756</tt>  <tt class="py-line"><tt id="link-475" class="py-name" targets="Class VisionEgg.FlowControl.Controller=VisionEgg.FlowControl.Controller-class.html"><a title="VisionEgg.FlowControl.Controller" class="py-name" href="#" onclick="return doclink('link-475', 'Controller', 'link-475');">Controller</a></tt> <tt class="py-op">=</tt> <tt id="link-476" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-476' [...]
+<a name="L1757"></a><tt class="py-lineno">1757</tt>  <tt class="py-line"><tt id="link-479" class="py-name" targets="Class VisionEgg.FlowControl.ConstantController=VisionEgg.FlowControl.ConstantController-class.html"><a title="VisionEgg.FlowControl.ConstantController" class="py-name" href="#" onclick="return doclink('link-479', 'ConstantController', 'link-479');">ConstantController</a></tt> <tt class="py-op">=</tt> <tt id="link-480" class="py-name"><a title="VisionEgg" class="py-name" hre [...]
+<a name="L1758"></a><tt class="py-lineno">1758</tt>  <tt class="py-line"><tt id="link-483" class="py-name" targets="Class VisionEgg.FlowControl.EvalStringController=VisionEgg.FlowControl.EvalStringController-class.html"><a title="VisionEgg.FlowControl.EvalStringController" class="py-name" href="#" onclick="return doclink('link-483', 'EvalStringController', 'link-483');">EvalStringController</a></tt> <tt class="py-op">=</tt> <tt id="link-484" class="py-name"><a title="VisionEgg" class="py [...]
+<a name="L1759"></a><tt class="py-lineno">1759</tt>  <tt class="py-line"><tt id="link-487" class="py-name" targets="Class VisionEgg.FlowControl.ExecStringController=VisionEgg.FlowControl.ExecStringController-class.html"><a title="VisionEgg.FlowControl.ExecStringController" class="py-name" href="#" onclick="return doclink('link-487', 'ExecStringController', 'link-487');">ExecStringController</a></tt> <tt class="py-op">=</tt> <tt id="link-488" class="py-name"><a title="VisionEgg" class="py [...]
+<a name="L1760"></a><tt class="py-lineno">1760</tt>  <tt class="py-line"><tt id="link-491" class="py-name" targets="Class VisionEgg.FlowControl.FunctionController=VisionEgg.FlowControl.FunctionController-class.html"><a title="VisionEgg.FlowControl.FunctionController" class="py-name" href="#" onclick="return doclink('link-491', 'FunctionController', 'link-491');">FunctionController</a></tt> <tt class="py-op">=</tt> <tt id="link-492" class="py-name"><a title="VisionEgg" class="py-name" hre [...]
+<a name="L1761"></a><tt class="py-lineno">1761</tt>  <tt class="py-line"><tt id="link-495" class="py-name" targets="Class VisionEgg.FlowControl.EncapsulatedController=VisionEgg.FlowControl.EncapsulatedController-class.html"><a title="VisionEgg.FlowControl.EncapsulatedController" class="py-name" href="#" onclick="return doclink('link-495', 'EncapsulatedController', 'link-495');">EncapsulatedController</a></tt> <tt class="py-op">=</tt> <tt id="link-496" class="py-name"><a title="VisionEgg" [...]
+<a name="L1762"></a><tt class="py-lineno">1762</tt>  <tt class="py-line"> </tt><script type="text/javascript">
+<!--
+expandto(location.href);
+// -->
+</script>
+</pre>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:49 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.Core.FixationSpot-class.html b/doc/reference/html/VisionEgg.Core.FixationSpot-class.html
new file mode 100644
index 0000000..2fec127
--- /dev/null
+++ b/doc/reference/html/VisionEgg.Core.FixationSpot-class.html
@@ -0,0 +1,364 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.Core.FixationSpot</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.Core-module.html">Module Core</a> ::
+        Class FixationSpot
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.Core.FixationSpot-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class FixationSpot</h1><span class="codelink"><a href="VisionEgg.Core-pysrc.html#FixationSpot">source code</a></span><br /><br />
+<pre class="base-tree">
+         object --+        
+                  |        
+<a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a> --+    
+                      |    
+               <a href="VisionEgg.Core.Stimulus-class.html">Stimulus</a> --+
+                          |
+                         <strong class="uidshort">FixationSpot</strong>
+</pre>
+
+<hr />
+<pre class="literalblock">
+A rectangle stimulus, typically used as a fixation spot.
+
+Parameters
+==========
+anchor   -- how position parameter is used (String)
+            Default: center
+color    -- color (AnyOf(Sequence3 of Real or Sequence4 of Real))
+            Default: (1.0, 1.0, 1.0)
+on       -- draw? (Boolean)
+            Default: True
+position -- position in eye coordinates (AnyOf(Sequence2 of Real or Sequence3 of Real or Sequence4 of Real))
+            Default: (320.0, 240.0)
+size     -- size in eye coordinates (Sequence2 of Real)
+            Default: (4.0, 4.0)
+
+</pre><br /><br />
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.Core.FixationSpot-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">**kw</span>)</span><br />
+      Instantiate and get ready to draw.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.Core-pysrc.html#FixationSpot.__init__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.Core.FixationSpot-class.html#draw" class="summary-sig-name">draw</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      Draw the stimulus.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.Core-pysrc.html#FixationSpot.draw">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a></code></b>:
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__getstate__">__getstate__</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__setstate__">__setstate__</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#get_specified_type">get_specified_type</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#is_constant_parameter">is_constant_parameter</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#set">set</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#verify_parameters">verify_parameters</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__delattr__</code>,
+      <code>__getattribute__</code>,
+      <code>__hash__</code>,
+      <code>__new__</code>,
+      <code>__reduce__</code>,
+      <code>__reduce_ex__</code>,
+      <code>__repr__</code>,
+      <code>__setattr__</code>,
+      <code>__str__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Class Variables</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.Core.FixationSpot-class.html#parameters_and_defaults" class="summary-name">parameters_and_defaults</a> = <code title="VisionEgg.ParameterDefinition({'on':(True, ve_types.Boolean, 'draw?'),\
+ 'color':((1.0, 1.0, 1.0), ve_types.AnyOf(ve_types.Sequence3(ve_types.\
+Real), ve_types.Sequence4(ve_types.Real)), 'color'), 'position':((320.\
+0, 240.0), ve_types.AnyOf(ve_types.Sequence2(ve_types.Real), ve_types.\
+Sequence3(ve_types.Real), ve_types.Sequence4(ve_types.Real)), 'positio\
+n in eye coordinates'), 'anchor':('center', ve_types.String, 'how posi\
+tion parameter is used'), 'size':((4.0, 4.0), ve_types.Sequence2(ve_ty\
+pes.Real), 'size in eye coordinates'), 'center':(None, ve_types.Sequen\
+...">VisionEgg.ParameterDefinition({'on':<code class="variable-ellipsis">...</code></code>
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a></code></b>:
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__safe_for_unpickling__">__safe_for_unpickling__</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#constant_parameters_and_defaults">constant_parameters_and_defaults</a></code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Properties</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__class__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Method Details</span></td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">**kw</span>)</span>
+    <br /><em class="fname">(Constructor)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.Core-pysrc.html#FixationSpot.__init__">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Instantiate and get ready to draw.
+
+Set parameter values and create anything needed to draw the
+stimulus including OpenGL state variables such display lists
+and texture objects.
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.Core.Stimulus-class.html#__init__">Stimulus.__init__</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="draw"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">draw</span>(<span class="sig-arg">self</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.Core-pysrc.html#FixationSpot.draw">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Draw the stimulus. (Called by Viewport instance.)
+
+This method is called every frame.  This method actually
+performs the OpenGL calls to draw the stimulus.
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.Core.Stimulus-class.html#draw">Stimulus.draw</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== CLASS VARIABLE DETAILS ==================== -->
+<a name="section-ClassVariableDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Class Variable Details</span></td>
+</tr>
+</table>
+<a name="parameters_and_defaults"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">parameters_and_defaults</h3>
+  
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+VisionEgg.ParameterDefinition({'on':(True, ve_types.Boolean, 'draw?'),<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+ 'color':((1.0, 1.0, 1.0), ve_types.AnyOf(ve_types.Sequence3(ve_types.<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+Real), ve_types.Sequence4(ve_types.Real)), 'color'), 'position':((320.<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+0, 240.0), ve_types.AnyOf(ve_types.Sequence2(ve_types.Real), ve_types.<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+Sequence3(ve_types.Real), ve_types.Sequence4(ve_types.Real)), 'positio<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+n in eye coordinates'), 'anchor':('center', ve_types.String, 'how posi<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+tion parameter is used'), 'size':((4.0, 4.0), ve_types.Sequence2(ve_ty<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+pes.Real), 'size in eye coordinates'), 'center':(None, ve_types.Sequen<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+<code class="variable-ellipsis">...</code>
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.Core.FrameTimer-class.html b/doc/reference/html/VisionEgg.Core.FrameTimer-class.html
new file mode 100644
index 0000000..ac8f909
--- /dev/null
+++ b/doc/reference/html/VisionEgg.Core.FrameTimer-class.html
@@ -0,0 +1,263 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.Core.FrameTimer</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.Core-module.html">Module Core</a> ::
+        Class FrameTimer
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.Core.FrameTimer-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class FrameTimer</h1><span class="codelink"><a href="VisionEgg.Core-pysrc.html#FrameTimer">source code</a></span><br /><br />
+<pre class="literalblock">
+Time inter frame intervals and compute frames per second.
+
+</pre><br /><br />
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__init__"></a><span class="summary-sig-name">__init__</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">bin_start_msec</span>=<span class="summary-sig-default">2</span>,
+        <span class="summary-sig-arg">bin_stop_msec</span>=<span class="summary-sig-default">28</span>,
+        <span class="summary-sig-arg">bin_width_msec</span>=<span class="summary-sig-default">2</span>,
+        <span class="summary-sig-arg">running_average_num_frames</span>=<span class="summary-sig-default">0</span>,
+        <span class="summary-sig-arg">save_all_frametimes</span>=<span class="summary-sig-default">False</span>)</span><br />
+      Create instance of FrameTimer.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.Core-pysrc.html#FrameTimer.__init__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="tick"></a><span class="summary-sig-name">tick</span>(<span class="summary-sig-arg">self</span>)</span><br />
+      Declare a frame has just been drawn.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.Core-pysrc.html#FrameTimer.tick">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="get_all_frametimes"></a><span class="summary-sig-name">get_all_frametimes</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.Core-pysrc.html#FrameTimer.get_all_frametimes">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="get_longest_frame_duration_sec"></a><span class="summary-sig-name">get_longest_frame_duration_sec</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.Core-pysrc.html#FrameTimer.get_longest_frame_duration_sec">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="get_running_average_ifi_sec"></a><span class="summary-sig-name">get_running_average_ifi_sec</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.Core-pysrc.html#FrameTimer.get_running_average_ifi_sec">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="get_average_ifi_sec"></a><span class="summary-sig-name">get_average_ifi_sec</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.Core-pysrc.html#FrameTimer.get_average_ifi_sec">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="print_histogram"></a><span class="summary-sig-name">print_histogram</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.Core-pysrc.html#FrameTimer.print_histogram">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="log_histogram"></a><span class="summary-sig-name">log_histogram</span>(<span class="summary-sig-arg">self</span>)</span><br />
+      Send histogram to logger.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.Core-pysrc.html#FrameTimer.log_histogram">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.Core.ModelView-class.html b/doc/reference/html/VisionEgg.Core.ModelView-class.html
new file mode 100644
index 0000000..60f51b1
--- /dev/null
+++ b/doc/reference/html/VisionEgg.Core.ModelView-class.html
@@ -0,0 +1,277 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.Core.ModelView</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.Core-module.html">Module Core</a> ::
+        Class ModelView
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.Core.ModelView-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class ModelView</h1><span class="codelink"><a href="VisionEgg.Core-pysrc.html#ModelView">source code</a></span><br /><br />
+<pre class="base-tree">
+         object --+        
+                  |        
+<a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a> --+    
+                      |    
+    <a href="VisionEgg.Core.ProjectionBaseClass-class.html">ProjectionBaseClass</a> --+
+                          |
+                         <strong class="uidshort">ModelView</strong>
+</pre>
+
+<hr />
+<pre class="literalblock">
+for use of OpenGL MODELVIEW_MATRIX
+
+Parameters
+==========
+matrix -- matrix specifying projection (Sequence4x4 of Real)
+          Default: [[1 0 0 0]
+                    [0 1 0 0]
+                    [0 0 1 0]
+                    [0 0 0 1]]
+
+</pre><br /><br />
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.Core.ModelView-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">*args</span>,
+        <span class="summary-sig-arg">**kw</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.Core-pysrc.html#ModelView.__init__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.Core.ProjectionBaseClass-class.html">ProjectionBaseClass</a></code></b>:
+      <code><a href="VisionEgg.Core.ProjectionBaseClass-class.html#apply_to_gl">apply_to_gl</a></code>,
+      <code><a href="VisionEgg.Core.ProjectionBaseClass-class.html#apply_to_vertex">apply_to_vertex</a></code>,
+      <code><a href="VisionEgg.Core.ProjectionBaseClass-class.html#apply_to_vertices">apply_to_vertices</a></code>,
+      <code><a href="VisionEgg.Core.ProjectionBaseClass-class.html#clip_2_norm_device">clip_2_norm_device</a></code>,
+      <code><a href="VisionEgg.Core.ProjectionBaseClass-class.html#eye_2_clip">eye_2_clip</a></code>,
+      <code><a href="VisionEgg.Core.ProjectionBaseClass-class.html#eye_2_norm_device">eye_2_norm_device</a></code>,
+      <code><a href="VisionEgg.Core.ProjectionBaseClass-class.html#get_matrix">get_matrix</a></code>,
+      <code><a href="VisionEgg.Core.ProjectionBaseClass-class.html#look_at">look_at</a></code>,
+      <code><a href="VisionEgg.Core.ProjectionBaseClass-class.html#push_and_set_gl_projection">push_and_set_gl_projection</a></code>,
+      <code><a href="VisionEgg.Core.ProjectionBaseClass-class.html#rotate">rotate</a></code>,
+      <code><a href="VisionEgg.Core.ProjectionBaseClass-class.html#scale">scale</a></code>,
+      <code><a href="VisionEgg.Core.ProjectionBaseClass-class.html#set_gl_modelview">set_gl_modelview</a></code>,
+      <code><a href="VisionEgg.Core.ProjectionBaseClass-class.html#set_gl_projection">set_gl_projection</a></code>,
+      <code><a href="VisionEgg.Core.ProjectionBaseClass-class.html#stateless_rotate">stateless_rotate</a></code>,
+      <code><a href="VisionEgg.Core.ProjectionBaseClass-class.html#stateless_scale">stateless_scale</a></code>,
+      <code><a href="VisionEgg.Core.ProjectionBaseClass-class.html#stateless_translate">stateless_translate</a></code>,
+      <code><a href="VisionEgg.Core.ProjectionBaseClass-class.html#translate">translate</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a></code></b>:
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__getstate__">__getstate__</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__setstate__">__setstate__</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#get_specified_type">get_specified_type</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#is_constant_parameter">is_constant_parameter</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#set">set</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#verify_parameters">verify_parameters</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__delattr__</code>,
+      <code>__getattribute__</code>,
+      <code>__hash__</code>,
+      <code>__new__</code>,
+      <code>__reduce__</code>,
+      <code>__reduce_ex__</code>,
+      <code>__repr__</code>,
+      <code>__setattr__</code>,
+      <code>__str__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Class Variables</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.Core.ProjectionBaseClass-class.html">ProjectionBaseClass</a></code></b>:
+      <code><a href="VisionEgg.Core.ProjectionBaseClass-class.html#parameters_and_defaults">parameters_and_defaults</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a></code></b>:
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__safe_for_unpickling__">__safe_for_unpickling__</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#constant_parameters_and_defaults">constant_parameters_and_defaults</a></code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Properties</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__class__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Method Details</span></td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">*args</span>,
+        <span class="sig-arg">**kw</span>)</span>
+    <br /><em class="fname">(Constructor)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.Core-pysrc.html#ModelView.__init__">source code</a></span> 
+    </td>
+  </table>
+  
+  
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.Core.ProjectionBaseClass-class.html#__init__">ProjectionBaseClass.__init__</a>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.Core.OrthographicProjection-class.html b/doc/reference/html/VisionEgg.Core.OrthographicProjection-class.html
new file mode 100644
index 0000000..f5c3111
--- /dev/null
+++ b/doc/reference/html/VisionEgg.Core.OrthographicProjection-class.html
@@ -0,0 +1,297 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.Core.OrthographicProjection</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.Core-module.html">Module Core</a> ::
+        Class OrthographicProjection
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.Core.OrthographicProjection-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class OrthographicProjection</h1><span class="codelink"><a href="VisionEgg.Core-pysrc.html#OrthographicProjection">source code</a></span><br /><br />
+<pre class="base-tree">
+         object --+            
+                  |            
+<a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a> --+        
+                      |        
+    <a href="VisionEgg.Core.ProjectionBaseClass-class.html">ProjectionBaseClass</a> --+    
+                          |    
+                 <a href="VisionEgg.Core.Projection-class.html">Projection</a> --+
+                              |
+                             <strong class="uidshort">OrthographicProjection</strong>
+</pre>
+
+<hr />
+<pre class="literalblock">
+An orthographic projection.
+
+Parameters
+==========
+matrix -- matrix specifying projection (Sequence4x4 of Real)
+          Default: [[1 0 0 0]
+                    [0 1 0 0]
+                    [0 0 1 0]
+                    [0 0 0 1]]
+
+</pre><br /><br />
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.Core.OrthographicProjection-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">left</span>=<span class="summary-sig-default">0.0</span>,
+        <span class="summary-sig-arg">right</span>=<span class="summary-sig-default">640.0</span>,
+        <span class="summary-sig-arg">bottom</span>=<span class="summary-sig-default">0.0</span>,
+        <span class="summary-sig-arg">top</span>=<span class="summary-sig-default">480.0</span>,
+        <span class="summary-sig-arg">z_clip_near</span>=<span class="summary-sig-default">0.0</span>,
+        <span class="summary-sig-arg">z_clip_far</span>=<span class="summary-sig-default">1.0</span>)</span><br />
+      Create an orthographic projection.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.Core-pysrc.html#OrthographicProjection.__init__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.Core.ProjectionBaseClass-class.html">ProjectionBaseClass</a></code></b>:
+      <code><a href="VisionEgg.Core.ProjectionBaseClass-class.html#apply_to_gl">apply_to_gl</a></code>,
+      <code><a href="VisionEgg.Core.ProjectionBaseClass-class.html#apply_to_vertex">apply_to_vertex</a></code>,
+      <code><a href="VisionEgg.Core.ProjectionBaseClass-class.html#apply_to_vertices">apply_to_vertices</a></code>,
+      <code><a href="VisionEgg.Core.ProjectionBaseClass-class.html#clip_2_norm_device">clip_2_norm_device</a></code>,
+      <code><a href="VisionEgg.Core.ProjectionBaseClass-class.html#eye_2_clip">eye_2_clip</a></code>,
+      <code><a href="VisionEgg.Core.ProjectionBaseClass-class.html#eye_2_norm_device">eye_2_norm_device</a></code>,
+      <code><a href="VisionEgg.Core.ProjectionBaseClass-class.html#get_matrix">get_matrix</a></code>,
+      <code><a href="VisionEgg.Core.ProjectionBaseClass-class.html#look_at">look_at</a></code>,
+      <code><a href="VisionEgg.Core.ProjectionBaseClass-class.html#push_and_set_gl_projection">push_and_set_gl_projection</a></code>,
+      <code><a href="VisionEgg.Core.ProjectionBaseClass-class.html#rotate">rotate</a></code>,
+      <code><a href="VisionEgg.Core.ProjectionBaseClass-class.html#scale">scale</a></code>,
+      <code><a href="VisionEgg.Core.ProjectionBaseClass-class.html#set_gl_modelview">set_gl_modelview</a></code>,
+      <code><a href="VisionEgg.Core.ProjectionBaseClass-class.html#set_gl_projection">set_gl_projection</a></code>,
+      <code><a href="VisionEgg.Core.ProjectionBaseClass-class.html#stateless_rotate">stateless_rotate</a></code>,
+      <code><a href="VisionEgg.Core.ProjectionBaseClass-class.html#stateless_scale">stateless_scale</a></code>,
+      <code><a href="VisionEgg.Core.ProjectionBaseClass-class.html#stateless_translate">stateless_translate</a></code>,
+      <code><a href="VisionEgg.Core.ProjectionBaseClass-class.html#translate">translate</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a></code></b>:
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__getstate__">__getstate__</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__setstate__">__setstate__</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#get_specified_type">get_specified_type</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#is_constant_parameter">is_constant_parameter</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#set">set</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#verify_parameters">verify_parameters</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__delattr__</code>,
+      <code>__getattribute__</code>,
+      <code>__hash__</code>,
+      <code>__new__</code>,
+      <code>__reduce__</code>,
+      <code>__reduce_ex__</code>,
+      <code>__repr__</code>,
+      <code>__setattr__</code>,
+      <code>__str__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Class Variables</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.Core.ProjectionBaseClass-class.html">ProjectionBaseClass</a></code></b>:
+      <code><a href="VisionEgg.Core.ProjectionBaseClass-class.html#parameters_and_defaults">parameters_and_defaults</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a></code></b>:
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__safe_for_unpickling__">__safe_for_unpickling__</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#constant_parameters_and_defaults">constant_parameters_and_defaults</a></code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Properties</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__class__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Method Details</span></td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">left</span>=<span class="sig-default">0.0</span>,
+        <span class="sig-arg">right</span>=<span class="sig-default">640.0</span>,
+        <span class="sig-arg">bottom</span>=<span class="sig-default">0.0</span>,
+        <span class="sig-arg">top</span>=<span class="sig-default">480.0</span>,
+        <span class="sig-arg">z_clip_near</span>=<span class="sig-default">0.0</span>,
+        <span class="sig-arg">z_clip_far</span>=<span class="sig-default">1.0</span>)</span>
+    <br /><em class="fname">(Constructor)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.Core-pysrc.html#OrthographicProjection.__init__">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Create an orthographic projection.
+
+Defaults to map x eye coordinates in the range [0,640], y eye
+coordinates [0,480] and clip coordinates [0,1] to [0,1].
+Therefore, if the viewport is 640 x 480, eye coordinates
+correspond 1:1 with window (pixel) coordinates.  Only points
+between these clipping planes will be displayed.
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.Core.Projection-class.html#__init__">Projection.__init__</a>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.Core.OrthographicProjectionNoZClip-class.html b/doc/reference/html/VisionEgg.Core.OrthographicProjectionNoZClip-class.html
new file mode 100644
index 0000000..be84caa
--- /dev/null
+++ b/doc/reference/html/VisionEgg.Core.OrthographicProjectionNoZClip-class.html
@@ -0,0 +1,292 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.Core.OrthographicProjectionNoZClip</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.Core-module.html">Module Core</a> ::
+        Class OrthographicProjectionNoZClip
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.Core.OrthographicProjectionNoZClip-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class OrthographicProjectionNoZClip</h1><span class="codelink"><a href="VisionEgg.Core-pysrc.html#OrthographicProjectionNoZClip">source code</a></span><br /><br />
+<pre class="base-tree">
+         object --+            
+                  |            
+<a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a> --+        
+                      |        
+    <a href="VisionEgg.Core.ProjectionBaseClass-class.html">ProjectionBaseClass</a> --+    
+                          |    
+                 <a href="VisionEgg.Core.Projection-class.html">Projection</a> --+
+                              |
+                             <strong class="uidshort">OrthographicProjectionNoZClip</strong>
+</pre>
+
+<hr />
+<pre class="literalblock">
+An orthographic projection without Z clipping.
+
+Parameters
+==========
+matrix -- matrix specifying projection (Sequence4x4 of Real)
+          Default: [[1 0 0 0]
+                    [0 1 0 0]
+                    [0 0 1 0]
+                    [0 0 0 1]]
+
+</pre><br /><br />
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.Core.OrthographicProjectionNoZClip-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">left</span>=<span class="summary-sig-default">0.0</span>,
+        <span class="summary-sig-arg">right</span>=<span class="summary-sig-default">640.0</span>,
+        <span class="summary-sig-arg">bottom</span>=<span class="summary-sig-default">0.0</span>,
+        <span class="summary-sig-arg">top</span>=<span class="summary-sig-default">480.0</span>)</span><br />
+      Create an orthographic projection without Z clipping.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.Core-pysrc.html#OrthographicProjectionNoZClip.__init__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.Core.ProjectionBaseClass-class.html">ProjectionBaseClass</a></code></b>:
+      <code><a href="VisionEgg.Core.ProjectionBaseClass-class.html#apply_to_gl">apply_to_gl</a></code>,
+      <code><a href="VisionEgg.Core.ProjectionBaseClass-class.html#apply_to_vertex">apply_to_vertex</a></code>,
+      <code><a href="VisionEgg.Core.ProjectionBaseClass-class.html#apply_to_vertices">apply_to_vertices</a></code>,
+      <code><a href="VisionEgg.Core.ProjectionBaseClass-class.html#clip_2_norm_device">clip_2_norm_device</a></code>,
+      <code><a href="VisionEgg.Core.ProjectionBaseClass-class.html#eye_2_clip">eye_2_clip</a></code>,
+      <code><a href="VisionEgg.Core.ProjectionBaseClass-class.html#eye_2_norm_device">eye_2_norm_device</a></code>,
+      <code><a href="VisionEgg.Core.ProjectionBaseClass-class.html#get_matrix">get_matrix</a></code>,
+      <code><a href="VisionEgg.Core.ProjectionBaseClass-class.html#look_at">look_at</a></code>,
+      <code><a href="VisionEgg.Core.ProjectionBaseClass-class.html#push_and_set_gl_projection">push_and_set_gl_projection</a></code>,
+      <code><a href="VisionEgg.Core.ProjectionBaseClass-class.html#rotate">rotate</a></code>,
+      <code><a href="VisionEgg.Core.ProjectionBaseClass-class.html#scale">scale</a></code>,
+      <code><a href="VisionEgg.Core.ProjectionBaseClass-class.html#set_gl_modelview">set_gl_modelview</a></code>,
+      <code><a href="VisionEgg.Core.ProjectionBaseClass-class.html#set_gl_projection">set_gl_projection</a></code>,
+      <code><a href="VisionEgg.Core.ProjectionBaseClass-class.html#stateless_rotate">stateless_rotate</a></code>,
+      <code><a href="VisionEgg.Core.ProjectionBaseClass-class.html#stateless_scale">stateless_scale</a></code>,
+      <code><a href="VisionEgg.Core.ProjectionBaseClass-class.html#stateless_translate">stateless_translate</a></code>,
+      <code><a href="VisionEgg.Core.ProjectionBaseClass-class.html#translate">translate</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a></code></b>:
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__getstate__">__getstate__</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__setstate__">__setstate__</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#get_specified_type">get_specified_type</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#is_constant_parameter">is_constant_parameter</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#set">set</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#verify_parameters">verify_parameters</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__delattr__</code>,
+      <code>__getattribute__</code>,
+      <code>__hash__</code>,
+      <code>__new__</code>,
+      <code>__reduce__</code>,
+      <code>__reduce_ex__</code>,
+      <code>__repr__</code>,
+      <code>__setattr__</code>,
+      <code>__str__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Class Variables</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.Core.ProjectionBaseClass-class.html">ProjectionBaseClass</a></code></b>:
+      <code><a href="VisionEgg.Core.ProjectionBaseClass-class.html#parameters_and_defaults">parameters_and_defaults</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a></code></b>:
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__safe_for_unpickling__">__safe_for_unpickling__</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#constant_parameters_and_defaults">constant_parameters_and_defaults</a></code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Properties</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__class__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Method Details</span></td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">left</span>=<span class="sig-default">0.0</span>,
+        <span class="sig-arg">right</span>=<span class="sig-default">640.0</span>,
+        <span class="sig-arg">bottom</span>=<span class="sig-default">0.0</span>,
+        <span class="sig-arg">top</span>=<span class="sig-default">480.0</span>)</span>
+    <br /><em class="fname">(Constructor)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.Core-pysrc.html#OrthographicProjectionNoZClip.__init__">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Create an orthographic projection without Z clipping.
+
+Defaults to map x eye coordinates in the range [0,640] and y
+eye coordinates [0,480] -> [0,1].  Therefore, if the viewport
+is 640 x 480, eye coordinates correspond 1:1 with window
+(pixel) coordinates.
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.Core.Projection-class.html#__init__">Projection.__init__</a>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.Core.PerspectiveProjection-class.html b/doc/reference/html/VisionEgg.Core.PerspectiveProjection-class.html
new file mode 100644
index 0000000..dce62e4
--- /dev/null
+++ b/doc/reference/html/VisionEgg.Core.PerspectiveProjection-class.html
@@ -0,0 +1,287 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.Core.PerspectiveProjection</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.Core-module.html">Module Core</a> ::
+        Class PerspectiveProjection
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.Core.PerspectiveProjection-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class PerspectiveProjection</h1><span class="codelink"><a href="VisionEgg.Core-pysrc.html#PerspectiveProjection">source code</a></span><br /><br />
+<pre class="base-tree">
+         object --+            
+                  |            
+<a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a> --+        
+                      |        
+    <a href="VisionEgg.Core.ProjectionBaseClass-class.html">ProjectionBaseClass</a> --+    
+                          |    
+                 <a href="VisionEgg.Core.Projection-class.html">Projection</a> --+
+                              |
+                             <strong class="uidshort">PerspectiveProjection</strong>
+</pre>
+
+<hr />
+<pre class="literalblock">
+A perspective projection.
+
+Parameters
+==========
+matrix -- matrix specifying projection (Sequence4x4 of Real)
+          Default: [[1 0 0 0]
+                    [0 1 0 0]
+                    [0 0 1 0]
+                    [0 0 0 1]]
+
+</pre><br /><br />
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.Core.PerspectiveProjection-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">left</span>,
+        <span class="summary-sig-arg">right</span>,
+        <span class="summary-sig-arg">bottom</span>,
+        <span class="summary-sig-arg">top</span>,
+        <span class="summary-sig-arg">near</span>,
+        <span class="summary-sig-arg">far</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.Core-pysrc.html#PerspectiveProjection.__init__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.Core.ProjectionBaseClass-class.html">ProjectionBaseClass</a></code></b>:
+      <code><a href="VisionEgg.Core.ProjectionBaseClass-class.html#apply_to_gl">apply_to_gl</a></code>,
+      <code><a href="VisionEgg.Core.ProjectionBaseClass-class.html#apply_to_vertex">apply_to_vertex</a></code>,
+      <code><a href="VisionEgg.Core.ProjectionBaseClass-class.html#apply_to_vertices">apply_to_vertices</a></code>,
+      <code><a href="VisionEgg.Core.ProjectionBaseClass-class.html#clip_2_norm_device">clip_2_norm_device</a></code>,
+      <code><a href="VisionEgg.Core.ProjectionBaseClass-class.html#eye_2_clip">eye_2_clip</a></code>,
+      <code><a href="VisionEgg.Core.ProjectionBaseClass-class.html#eye_2_norm_device">eye_2_norm_device</a></code>,
+      <code><a href="VisionEgg.Core.ProjectionBaseClass-class.html#get_matrix">get_matrix</a></code>,
+      <code><a href="VisionEgg.Core.ProjectionBaseClass-class.html#look_at">look_at</a></code>,
+      <code><a href="VisionEgg.Core.ProjectionBaseClass-class.html#push_and_set_gl_projection">push_and_set_gl_projection</a></code>,
+      <code><a href="VisionEgg.Core.ProjectionBaseClass-class.html#rotate">rotate</a></code>,
+      <code><a href="VisionEgg.Core.ProjectionBaseClass-class.html#scale">scale</a></code>,
+      <code><a href="VisionEgg.Core.ProjectionBaseClass-class.html#set_gl_modelview">set_gl_modelview</a></code>,
+      <code><a href="VisionEgg.Core.ProjectionBaseClass-class.html#set_gl_projection">set_gl_projection</a></code>,
+      <code><a href="VisionEgg.Core.ProjectionBaseClass-class.html#stateless_rotate">stateless_rotate</a></code>,
+      <code><a href="VisionEgg.Core.ProjectionBaseClass-class.html#stateless_scale">stateless_scale</a></code>,
+      <code><a href="VisionEgg.Core.ProjectionBaseClass-class.html#stateless_translate">stateless_translate</a></code>,
+      <code><a href="VisionEgg.Core.ProjectionBaseClass-class.html#translate">translate</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a></code></b>:
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__getstate__">__getstate__</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__setstate__">__setstate__</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#get_specified_type">get_specified_type</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#is_constant_parameter">is_constant_parameter</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#set">set</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#verify_parameters">verify_parameters</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__delattr__</code>,
+      <code>__getattribute__</code>,
+      <code>__hash__</code>,
+      <code>__new__</code>,
+      <code>__reduce__</code>,
+      <code>__reduce_ex__</code>,
+      <code>__repr__</code>,
+      <code>__setattr__</code>,
+      <code>__str__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Class Variables</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.Core.ProjectionBaseClass-class.html">ProjectionBaseClass</a></code></b>:
+      <code><a href="VisionEgg.Core.ProjectionBaseClass-class.html#parameters_and_defaults">parameters_and_defaults</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a></code></b>:
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__safe_for_unpickling__">__safe_for_unpickling__</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#constant_parameters_and_defaults">constant_parameters_and_defaults</a></code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Properties</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__class__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Method Details</span></td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">left</span>,
+        <span class="sig-arg">right</span>,
+        <span class="sig-arg">bottom</span>,
+        <span class="sig-arg">top</span>,
+        <span class="sig-arg">near</span>,
+        <span class="sig-arg">far</span>)</span>
+    <br /><em class="fname">(Constructor)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.Core-pysrc.html#PerspectiveProjection.__init__">source code</a></span> 
+    </td>
+  </table>
+  
+  
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.Core.Projection-class.html#__init__">Projection.__init__</a>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.Core.Projection-class.html b/doc/reference/html/VisionEgg.Core.Projection-class.html
new file mode 100644
index 0000000..12f23d8
--- /dev/null
+++ b/doc/reference/html/VisionEgg.Core.Projection-class.html
@@ -0,0 +1,277 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.Core.Projection</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.Core-module.html">Module Core</a> ::
+        Class Projection
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.Core.Projection-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class Projection</h1><span class="codelink"><a href="VisionEgg.Core-pysrc.html#Projection">source code</a></span><br /><br />
+<pre class="base-tree">
+         object --+        
+                  |        
+<a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a> --+    
+                      |    
+    <a href="VisionEgg.Core.ProjectionBaseClass-class.html">ProjectionBaseClass</a> --+
+                          |
+                         <strong class="uidshort">Projection</strong>
+</pre>
+
+<hr />
+<pre class="literalblock">
+for use of OpenGL PROJECTION_MATRIX
+
+Parameters
+==========
+matrix -- matrix specifying projection (Sequence4x4 of Real)
+          Default: [[1 0 0 0]
+                    [0 1 0 0]
+                    [0 0 1 0]
+                    [0 0 0 1]]
+
+</pre><br /><br />
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.Core.Projection-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">*args</span>,
+        <span class="summary-sig-arg">**kw</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.Core-pysrc.html#Projection.__init__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.Core.ProjectionBaseClass-class.html">ProjectionBaseClass</a></code></b>:
+      <code><a href="VisionEgg.Core.ProjectionBaseClass-class.html#apply_to_gl">apply_to_gl</a></code>,
+      <code><a href="VisionEgg.Core.ProjectionBaseClass-class.html#apply_to_vertex">apply_to_vertex</a></code>,
+      <code><a href="VisionEgg.Core.ProjectionBaseClass-class.html#apply_to_vertices">apply_to_vertices</a></code>,
+      <code><a href="VisionEgg.Core.ProjectionBaseClass-class.html#clip_2_norm_device">clip_2_norm_device</a></code>,
+      <code><a href="VisionEgg.Core.ProjectionBaseClass-class.html#eye_2_clip">eye_2_clip</a></code>,
+      <code><a href="VisionEgg.Core.ProjectionBaseClass-class.html#eye_2_norm_device">eye_2_norm_device</a></code>,
+      <code><a href="VisionEgg.Core.ProjectionBaseClass-class.html#get_matrix">get_matrix</a></code>,
+      <code><a href="VisionEgg.Core.ProjectionBaseClass-class.html#look_at">look_at</a></code>,
+      <code><a href="VisionEgg.Core.ProjectionBaseClass-class.html#push_and_set_gl_projection">push_and_set_gl_projection</a></code>,
+      <code><a href="VisionEgg.Core.ProjectionBaseClass-class.html#rotate">rotate</a></code>,
+      <code><a href="VisionEgg.Core.ProjectionBaseClass-class.html#scale">scale</a></code>,
+      <code><a href="VisionEgg.Core.ProjectionBaseClass-class.html#set_gl_modelview">set_gl_modelview</a></code>,
+      <code><a href="VisionEgg.Core.ProjectionBaseClass-class.html#set_gl_projection">set_gl_projection</a></code>,
+      <code><a href="VisionEgg.Core.ProjectionBaseClass-class.html#stateless_rotate">stateless_rotate</a></code>,
+      <code><a href="VisionEgg.Core.ProjectionBaseClass-class.html#stateless_scale">stateless_scale</a></code>,
+      <code><a href="VisionEgg.Core.ProjectionBaseClass-class.html#stateless_translate">stateless_translate</a></code>,
+      <code><a href="VisionEgg.Core.ProjectionBaseClass-class.html#translate">translate</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a></code></b>:
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__getstate__">__getstate__</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__setstate__">__setstate__</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#get_specified_type">get_specified_type</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#is_constant_parameter">is_constant_parameter</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#set">set</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#verify_parameters">verify_parameters</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__delattr__</code>,
+      <code>__getattribute__</code>,
+      <code>__hash__</code>,
+      <code>__new__</code>,
+      <code>__reduce__</code>,
+      <code>__reduce_ex__</code>,
+      <code>__repr__</code>,
+      <code>__setattr__</code>,
+      <code>__str__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Class Variables</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.Core.ProjectionBaseClass-class.html">ProjectionBaseClass</a></code></b>:
+      <code><a href="VisionEgg.Core.ProjectionBaseClass-class.html#parameters_and_defaults">parameters_and_defaults</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a></code></b>:
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__safe_for_unpickling__">__safe_for_unpickling__</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#constant_parameters_and_defaults">constant_parameters_and_defaults</a></code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Properties</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__class__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Method Details</span></td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">*args</span>,
+        <span class="sig-arg">**kw</span>)</span>
+    <br /><em class="fname">(Constructor)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.Core-pysrc.html#Projection.__init__">source code</a></span> 
+    </td>
+  </table>
+  
+  
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.Core.ProjectionBaseClass-class.html#__init__">ProjectionBaseClass.__init__</a>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.Core.ProjectionBaseClass-class.html b/doc/reference/html/VisionEgg.Core.ProjectionBaseClass-class.html
new file mode 100644
index 0000000..e599998
--- /dev/null
+++ b/doc/reference/html/VisionEgg.Core.ProjectionBaseClass-class.html
@@ -0,0 +1,611 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.Core.ProjectionBaseClass</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.Core-module.html">Module Core</a> ::
+        Class ProjectionBaseClass
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.Core.ProjectionBaseClass-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class ProjectionBaseClass</h1><span class="codelink"><a href="VisionEgg.Core-pysrc.html#ProjectionBaseClass">source code</a></span><br /><br />
+<pre class="base-tree">
+         object --+    
+                  |    
+<a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a> --+
+                      |
+                     <strong class="uidshort">ProjectionBaseClass</strong>
+</pre>
+
+<hr />
+<pre class="literalblock">
+Converts stimulus coordinates to viewport coordinates.
+
+This is an abstract base class which should be subclassed for
+actual use.
+
+Parameters
+==========
+matrix -- matrix specifying projection (Sequence4x4 of Real)
+          Default: [[1 0 0 0]
+                    [0 1 0 0]
+                    [0 0 1 0]
+                    [0 0 0 1]]
+
+</pre><br /><br />
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.Core.ProjectionBaseClass-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">**kw</span>)</span><br />
+      Create self.parameters and set values.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.Core-pysrc.html#ProjectionBaseClass.__init__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="apply_to_gl"></a><span class="summary-sig-name">apply_to_gl</span>(<span class="summary-sig-arg">self</span>)</span><br />
+      Set the OpenGL projection matrix.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.Core-pysrc.html#ProjectionBaseClass.apply_to_gl">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="set_gl_modelview"></a><span class="summary-sig-name">set_gl_modelview</span>(<span class="summary-sig-arg">self</span>)</span><br />
+      Set the OpenGL modelview matrix.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.Core-pysrc.html#ProjectionBaseClass.set_gl_modelview">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="set_gl_projection"></a><span class="summary-sig-name">set_gl_projection</span>(<span class="summary-sig-arg">self</span>)</span><br />
+      Set the OpenGL projection matrix.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.Core-pysrc.html#ProjectionBaseClass.set_gl_projection">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="push_and_set_gl_projection"></a><span class="summary-sig-name">push_and_set_gl_projection</span>(<span class="summary-sig-arg">self</span>)</span><br />
+      Set the OpenGL projection matrix, pushing current projection matrix to stack.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.Core-pysrc.html#ProjectionBaseClass.push_and_set_gl_projection">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="translate"></a><span class="summary-sig-name">translate</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">x</span>,
+        <span class="summary-sig-arg">y</span>,
+        <span class="summary-sig-arg">z</span>)</span><br />
+      Compose a translation and set the OpenGL projection matrix.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.Core-pysrc.html#ProjectionBaseClass.translate">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="stateless_translate"></a><span class="summary-sig-name">stateless_translate</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">x</span>,
+        <span class="summary-sig-arg">y</span>,
+        <span class="summary-sig-arg">z</span>)</span><br />
+      Compose a translation without changing OpenGL state.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.Core-pysrc.html#ProjectionBaseClass.stateless_translate">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="rotate"></a><span class="summary-sig-name">rotate</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">angle_degrees</span>,
+        <span class="summary-sig-arg">x</span>,
+        <span class="summary-sig-arg">y</span>,
+        <span class="summary-sig-arg">z</span>)</span><br />
+      Compose a rotation and set the OpenGL projection matrix.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.Core-pysrc.html#ProjectionBaseClass.rotate">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="stateless_rotate"></a><span class="summary-sig-name">stateless_rotate</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">angle_degrees</span>,
+        <span class="summary-sig-arg">x</span>,
+        <span class="summary-sig-arg">y</span>,
+        <span class="summary-sig-arg">z</span>)</span><br />
+      Compose a rotation without changing OpenGL state.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.Core-pysrc.html#ProjectionBaseClass.stateless_rotate">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="scale"></a><span class="summary-sig-name">scale</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">x</span>,
+        <span class="summary-sig-arg">y</span>,
+        <span class="summary-sig-arg">z</span>)</span><br />
+      Compose a rotation and set the OpenGL projection matrix.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.Core-pysrc.html#ProjectionBaseClass.scale">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="stateless_scale"></a><span class="summary-sig-name">stateless_scale</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">x</span>,
+        <span class="summary-sig-arg">y</span>,
+        <span class="summary-sig-arg">z</span>)</span><br />
+      Compose a rotation without changing OpenGL state.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.Core-pysrc.html#ProjectionBaseClass.stateless_scale">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="get_matrix"></a><span class="summary-sig-name">get_matrix</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.Core-pysrc.html#ProjectionBaseClass.get_matrix">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="look_at"></a><span class="summary-sig-name">look_at</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">eye</span>,
+        <span class="summary-sig-arg">center</span>,
+        <span class="summary-sig-arg">up</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.Core-pysrc.html#ProjectionBaseClass.look_at">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="eye_2_clip"></a><span class="summary-sig-name">eye_2_clip</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">eye_coords_vertex</span>)</span><br />
+      Transform eye coordinates to clip coordinates</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.Core-pysrc.html#ProjectionBaseClass.eye_2_clip">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="clip_2_norm_device"></a><span class="summary-sig-name">clip_2_norm_device</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">clip_coords_vertex</span>)</span><br />
+      Transform clip coordinates to normalized device coordinates</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.Core-pysrc.html#ProjectionBaseClass.clip_2_norm_device">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="eye_2_norm_device"></a><span class="summary-sig-name">eye_2_norm_device</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">eye_coords_vertex</span>)</span><br />
+      Transform eye coordinates to normalized device coordinates</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.Core-pysrc.html#ProjectionBaseClass.eye_2_norm_device">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="apply_to_vertex"></a><span class="summary-sig-name">apply_to_vertex</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">vertex</span>)</span><br />
+      Perform multiplication on vertex to get transformed result</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.Core-pysrc.html#ProjectionBaseClass.apply_to_vertex">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="apply_to_vertices"></a><span class="summary-sig-name">apply_to_vertices</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">vertices</span>)</span><br />
+      Perform multiplication on vertex to get transformed result</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.Core-pysrc.html#ProjectionBaseClass.apply_to_vertices">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a></code></b>:
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__getstate__">__getstate__</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__setstate__">__setstate__</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#get_specified_type">get_specified_type</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#is_constant_parameter">is_constant_parameter</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#set">set</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#verify_parameters">verify_parameters</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__delattr__</code>,
+      <code>__getattribute__</code>,
+      <code>__hash__</code>,
+      <code>__new__</code>,
+      <code>__reduce__</code>,
+      <code>__reduce_ex__</code>,
+      <code>__repr__</code>,
+      <code>__setattr__</code>,
+      <code>__str__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Class Variables</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.Core.ProjectionBaseClass-class.html#parameters_and_defaults" class="summary-name">parameters_and_defaults</a> = <code title="VisionEgg.ParameterDefinition({'matrix':(Numeric.identity(4), ve_types\
+.Sequence4x4(ve_types.Real), 'matrix specifying projection'),})">VisionEgg.ParameterDefinition({'matr<code class="variable-ellipsis">...</code></code>
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a></code></b>:
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__safe_for_unpickling__">__safe_for_unpickling__</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#constant_parameters_and_defaults">constant_parameters_and_defaults</a></code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Properties</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__class__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Method Details</span></td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">**kw</span>)</span>
+    <br /><em class="fname">(Constructor)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.Core-pysrc.html#ProjectionBaseClass.__init__">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Create self.parameters and set values.
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.ClassWithParameters-class.html#__init__">ClassWithParameters.__init__</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== CLASS VARIABLE DETAILS ==================== -->
+<a name="section-ClassVariableDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Class Variable Details</span></td>
+</tr>
+</table>
+<a name="parameters_and_defaults"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">parameters_and_defaults</h3>
+  
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+VisionEgg.ParameterDefinition({'matrix':(Numeric.identity(4), ve_types<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+.Sequence4x4(ve_types.Real), 'matrix specifying projection'),})
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.Core.Screen-class.html b/doc/reference/html/VisionEgg.Core.Screen-class.html
new file mode 100644
index 0000000..646ad0d
--- /dev/null
+++ b/doc/reference/html/VisionEgg.Core.Screen-class.html
@@ -0,0 +1,827 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.Core.Screen</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.Core-module.html">Module Core</a> ::
+        Class Screen
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.Core.Screen-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class Screen</h1><span class="codelink"><a href="VisionEgg.Core-pysrc.html#Screen">source code</a></span><br /><br />
+<pre class="base-tree">
+         object --+    
+                  |    
+<a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a> --+
+                      |
+                     <strong class="uidshort">Screen</strong>
+</pre>
+
+<hr />
+<pre class="literalblock">
+An OpenGL window, possibly displayed across multiple displays.
+
+A Screen instance is an OpenGL window for the Vision Egg to draw
+in.  For an instance of Screen to do anything useful, it must
+contain one or more instances of the Viewport class and one or
+more instances of the Stimulus class.
+
+Currently, only one OpenGL window is supported by the library with
+which the Vision Egg initializes graphics (pygame/SDL).  However,
+this need not limit display to a single physical display device.
+Many video drivers, for example, allow applications to treat two
+separate monitors as one large array of contiguous pixels.  By
+sizing a window such that it occupies both monitors and creating
+separate viewports for the portion of the window on each monitor,
+a multiple screen effect can be created.
+
+Public read-only variables
+==========================
+size -- Tuple of 2 integers specifying width and height
+
+Parameters
+==========
+bgcolor -- background color (AnyOf(Sequence3 of Real or Sequence4 of Real))
+           Default: (0.5, 0.5, 0.5, 0.0)
+
+Constant Parameters
+===================
+alpha_bits          -- number of bits per pixel for alpha channel. Can be set with VISIONEGG_REQUEST_ALPHA_BITS (UnsignedInteger)
+                       Default: (determined at runtime)
+blue_bits           -- number of bits per pixel for blue channel. Can be set with VISIONEGG_REQUEST_BLUE_BITS (UnsignedInteger)
+                       Default: (determined at runtime)
+double_buffer       -- use double buffering? Can be set with VISIONEGG_DOUBLE_BUFFER (Boolean)
+                       Default: (determined at runtime)
+frameless           -- remove standard window frame? Can be set with VISIONEGG_FRAMELESS_WINDOW (Boolean)
+                       Default: (determined at runtime)
+fullscreen          -- use full screen? Can be set with VISIONEGG_FULLSCREEN (Boolean)
+                       Default: (determined at runtime)
+green_bits          -- number of bits per pixel for green channel. Can be set with VISIONEGG_REQUEST_GREEN_BITS (UnsignedInteger)
+                       Default: (determined at runtime)
+hide_mouse          -- hide the mouse cursor? Can be set with VISIONEGG_HIDE_MOUSE (Boolean)
+                       Default: (determined at runtime)
+is_stereo           -- allocate stereo framebuffers? Can be set with VISIONEGG_REQUEST_STEREO (Boolean)
+                       Default: (determined at runtime)
+maxpriority         -- raise priority? (platform dependent) Can be set with VISIONEGG_MAXPRIORITY (Boolean)
+                       Default: (determined at runtime)
+multisample_samples -- preferred number of multisamples for FSAA (UnsignedInteger)
+                       Default: (determined at runtime)
+preferred_bpp       -- preferred bits per pixel (bit depth) Can be set with VISIONEGG_PREFERRED_BPP (UnsignedInteger)
+                       Default: (determined at runtime)
+red_bits            -- number of bits per pixel for red channel. Can be set with VISIONEGG_REQUEST_RED_BITS (UnsignedInteger)
+                       Default: (determined at runtime)
+size                -- size (units: pixels) Can be set with VISIONEGG_SCREEN_W and VISIONEGG_SCREEN_H (Sequence2 of Real)
+                       Default: (determined at runtime)
+sync_swap           -- synchronize buffer swaps to vertical sync? Can be set with VISIONEGG_SYNC_SWAP (Boolean)
+                       Default: (determined at runtime)
+
+</pre><br /><br />
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.Core.Screen-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">**kw</span>)</span><br />
+      Create self.parameters and set values.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.Core-pysrc.html#Screen.__init__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="get_size"></a><span class="summary-sig-name">get_size</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.Core-pysrc.html#Screen.get_size">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="set_size"></a><span class="summary-sig-name">set_size</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">value</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.Core-pysrc.html#Screen.set_size">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="get_framebuffer_as_image"></a><span class="summary-sig-name">get_framebuffer_as_image</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">buffer</span>=<span class="summary-sig-default">'back'</span>,
+        <span class="summary-sig-arg">format</span>=<span class="summary-sig-default">gl.GL_RGB</span>,
+        <span class="summary-sig-arg">position</span>=<span class="summary-sig-default">(0,0)</span>,
+        <span class="summary-sig-arg">anchor</span>=<span class="summary-sig-default">'lowerleft'</span>,
+        <span class="summary-sig-arg">size</span>=<span class="summary-sig-default">None</span>)</span><br />
+      get pixel values from framebuffer to PIL image</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.Core-pysrc.html#Screen.get_framebuffer_as_image">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="get_framebuffer_as_array"></a><span class="summary-sig-name">get_framebuffer_as_array</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">buffer</span>=<span class="summary-sig-default">'back'</span>,
+        <span class="summary-sig-arg">format</span>=<span class="summary-sig-default">gl.GL_RGB</span>,
+        <span class="summary-sig-arg">position</span>=<span class="summary-sig-default">(0,0)</span>,
+        <span class="summary-sig-arg">anchor</span>=<span class="summary-sig-default">'lowerleft'</span>,
+        <span class="summary-sig-arg">size</span>=<span class="summary-sig-default">None</span>)</span><br />
+      get pixel values from framebuffer to Numeric array</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.Core-pysrc.html#Screen.get_framebuffer_as_array">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.Core.Screen-class.html#put_pixels" class="summary-sig-name">put_pixels</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">pixels</span>=<span class="summary-sig-default">None</span>,
+        <span class="summary-sig-arg">position</span>=<span class="summary-sig-default">(0,0)</span>,
+        <span class="summary-sig-arg">anchor</span>=<span class="summary-sig-default">'lowerleft'</span>,
+        <span class="summary-sig-arg">scale_x</span>=<span class="summary-sig-default">1.0</span>,
+        <span class="summary-sig-arg">scale_y</span>=<span class="summary-sig-default">1.0</span>,
+        <span class="summary-sig-arg">texture_min_filter</span>=<span class="summary-sig-default">gl.GL_NEAREST</span>,
+        <span class="summary-sig-arg">texture_mag_filter</span>=<span class="summary-sig-default">gl.GL_NEAREST</span>,
+        <span class="summary-sig-arg">internal_format</span>=<span class="summary-sig-default">gl.GL_RGB</span>)</span><br />
+      Put pixel values to screen.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.Core-pysrc.html#Screen.put_pixels">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="query_refresh_rate"></a><span class="summary-sig-name">query_refresh_rate</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.Core-pysrc.html#Screen.query_refresh_rate">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.Core.Screen-class.html#measure_refresh_rate" class="summary-sig-name">measure_refresh_rate</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">average_over_seconds</span>=<span class="summary-sig-default">0.1</span>)</span><br />
+      Measure the refresh rate.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.Core-pysrc.html#Screen.measure_refresh_rate">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.Core.Screen-class.html#clear" class="summary-sig-name">clear</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      Called by Presentation instance.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.Core-pysrc.html#Screen.clear">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.Core.Screen-class.html#make_current" class="summary-sig-name">make_current</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      Called by Viewport instance.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.Core-pysrc.html#Screen.make_current">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.Core.Screen-class.html#set_gamma_ramp" class="summary-sig-name">set_gamma_ramp</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">*args</span>,
+        <span class="summary-sig-arg">**kw</span>)</span><br />
+      Set the gamma_ramp, if supported.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.Core-pysrc.html#Screen.set_gamma_ramp">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.Core.Screen-class.html#close" class="summary-sig-name">close</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      Close the screen.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.Core-pysrc.html#Screen.close">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__del__"></a><span class="summary-sig-name">__del__</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.Core-pysrc.html#Screen.__del__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a></code></b>:
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__getstate__">__getstate__</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__setstate__">__setstate__</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#get_specified_type">get_specified_type</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#is_constant_parameter">is_constant_parameter</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#set">set</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#verify_parameters">verify_parameters</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__delattr__</code>,
+      <code>__getattribute__</code>,
+      <code>__hash__</code>,
+      <code>__new__</code>,
+      <code>__reduce__</code>,
+      <code>__reduce_ex__</code>,
+      <code>__repr__</code>,
+      <code>__setattr__</code>,
+      <code>__str__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== STATIC METHODS ==================== -->
+<a name="section-StaticMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Static Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.Core.Screen-class.html#create_default" class="summary-sig-name">create_default</a>()</span><br />
+      Alternative constructor using configuration variables.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.Core-pysrc.html#Screen.create_default">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Class Variables</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.Core.Screen-class.html#parameters_and_defaults" class="summary-name">parameters_and_defaults</a> = <code title="VisionEgg.ParameterDefinition({'bgcolor':((0.5, 0.5, 0.5, 0.0), ve_typ\
+es.AnyOf(ve_types.Sequence3(ve_types.Real), ve_types.Sequence4(ve_type\
+s.Real)), 'background color',),})">VisionEgg.ParameterDefinition({'bgco<code class="variable-ellipsis">...</code></code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.Core.Screen-class.html#constant_parameters_and_defaults" class="summary-name">constant_parameters_and_defaults</a> = <code title="VisionEgg.ParameterDefinition({'size':(None, ve_types.Sequence2(ve_typ\
+es.Real), 'size (units: pixels) Can be set with VISIONEGG_SCREEN_W and\
+ VISIONEGG_SCREEN_H'), 'fullscreen':(None, ve_types.Boolean, 'use full\
+ screen? Can be set with VISIONEGG_FULLSCREEN'), 'double_buffer':(None\
+, ve_types.Boolean, 'use double buffering? Can be set with VISIONEGG_D\
+OUBLE_BUFFER'), 'preferred_bpp':(None, ve_types.UnsignedInteger, 'pref\
+erred bits per pixel (bit depth) Can be set with VISIONEGG_PREFERRED_B\
+PP'), 'maxpriority':(None, ve_types.Boolean, 'raise priority? (platfor\
+...">VisionEgg.ParameterDefiniti<code class="variable-ellipsis">...</code></code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="size"></a><span class="summary-name">size</span> = <code title="property(get_size, set_size)">property(get_size, set_size)</code>
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a></code></b>:
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__safe_for_unpickling__">__safe_for_unpickling__</a></code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Properties</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__class__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Method Details</span></td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">**kw</span>)</span>
+    <br /><em class="fname">(Constructor)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.Core-pysrc.html#Screen.__init__">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Create self.parameters and set values.
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.ClassWithParameters-class.html#__init__">ClassWithParameters.__init__</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="put_pixels"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">put_pixels</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">pixels</span>=<span class="sig-default">None</span>,
+        <span class="sig-arg">position</span>=<span class="sig-default">(0,0)</span>,
+        <span class="sig-arg">anchor</span>=<span class="sig-default">'lowerleft'</span>,
+        <span class="sig-arg">scale_x</span>=<span class="sig-default">1.0</span>,
+        <span class="sig-arg">scale_y</span>=<span class="sig-default">1.0</span>,
+        <span class="sig-arg">texture_min_filter</span>=<span class="sig-default">gl.GL_NEAREST</span>,
+        <span class="sig-arg">texture_mag_filter</span>=<span class="sig-default">gl.GL_NEAREST</span>,
+        <span class="sig-arg">internal_format</span>=<span class="sig-default">gl.GL_RGB</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.Core-pysrc.html#Screen.put_pixels">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Put pixel values to screen.
+
+Pixel values become texture data using the VisionEgg.Textures
+module.  Any source of texture data accepted by that module is
+accepted here.
+
+This function could be sped up by allocating a fixed OpenGL texture object.
+
+</pre>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<a name="measure_refresh_rate"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">measure_refresh_rate</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">average_over_seconds</span>=<span class="sig-default">0.1</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.Core-pysrc.html#Screen.measure_refresh_rate">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Measure the refresh rate. Assumes swap buffers synced.
+
+</pre>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<a name="clear"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">clear</span>(<span class="sig-arg">self</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.Core-pysrc.html#Screen.clear">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Called by Presentation instance. Clear the screen.
+
+</pre>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<a name="make_current"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">make_current</span>(<span class="sig-arg">self</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.Core-pysrc.html#Screen.make_current">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Called by Viewport instance. Makes screen active for drawing.
+
+Can not be implemented until multiple screens are possible.
+
+</pre>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<a name="set_gamma_ramp"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">set_gamma_ramp</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">*args</span>,
+        <span class="sig-arg">**kw</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.Core-pysrc.html#Screen.set_gamma_ramp">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Set the gamma_ramp, if supported.
+
+Call pygame.display.set_gamma_ramp, if available.
+
+Returns True on success, False otherwise.
+
+</pre>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<a name="close"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">close</span>(<span class="sig-arg">self</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.Core-pysrc.html#Screen.close">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Close the screen.
+
+You can call this to close the screen.  Not necessary during
+normal operation because it gets automatically deleted.
+
+</pre>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<a name="create_default"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">create_default</span>()</span>
+    <br /><em class="fname">Static Method</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.Core-pysrc.html#Screen.create_default">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Alternative constructor using configuration variables.
+
+Most of the time you can create and instance of Screen using
+this method.  If your script needs explicit control of the
+Screen parameters, initialize with the normal constructor.
+
+Uses VisionEgg.config.VISIONEGG_GUI_INIT to determine how the
+default screen parameters should are determined.  If this
+value is 0, the values from VisionEgg.cfg are used.  If this
+value is 1, a GUI panel is opened and allows manual settings
+of the screen parameters.  
+
+</pre>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== CLASS VARIABLE DETAILS ==================== -->
+<a name="section-ClassVariableDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Class Variable Details</span></td>
+</tr>
+</table>
+<a name="parameters_and_defaults"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">parameters_and_defaults</h3>
+  
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+VisionEgg.ParameterDefinition({'bgcolor':((0.5, 0.5, 0.5, 0.0), ve_typ<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+es.AnyOf(ve_types.Sequence3(ve_types.Real), ve_types.Sequence4(ve_type<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+s.Real)), 'background color',),})
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="constant_parameters_and_defaults"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">constant_parameters_and_defaults</h3>
+  
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+VisionEgg.ParameterDefinition({'size':(None, ve_types.Sequence2(ve_typ<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+es.Real), 'size (units: pixels) Can be set with VISIONEGG_SCREEN_W and<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+ VISIONEGG_SCREEN_H'), 'fullscreen':(None, ve_types.Boolean, 'use full<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+ screen? Can be set with VISIONEGG_FULLSCREEN'), 'double_buffer':(None<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+, ve_types.Boolean, 'use double buffering? Can be set with VISIONEGG_D<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+OUBLE_BUFFER'), 'preferred_bpp':(None, ve_types.UnsignedInteger, 'pref<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+erred bits per pixel (bit depth) Can be set with VISIONEGG_PREFERRED_B<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+PP'), 'maxpriority':(None, ve_types.Boolean, 'raise priority? (platfor<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+<code class="variable-ellipsis">...</code>
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.Core.SimplePerspectiveProjection-class.html b/doc/reference/html/VisionEgg.Core.SimplePerspectiveProjection-class.html
new file mode 100644
index 0000000..ae30737
--- /dev/null
+++ b/doc/reference/html/VisionEgg.Core.SimplePerspectiveProjection-class.html
@@ -0,0 +1,283 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.Core.SimplePerspectiveProjection</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.Core-module.html">Module Core</a> ::
+        Class SimplePerspectiveProjection
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.Core.SimplePerspectiveProjection-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class SimplePerspectiveProjection</h1><span class="codelink"><a href="VisionEgg.Core-pysrc.html#SimplePerspectiveProjection">source code</a></span><br /><br />
+<pre class="base-tree">
+         object --+            
+                  |            
+<a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a> --+        
+                      |        
+    <a href="VisionEgg.Core.ProjectionBaseClass-class.html">ProjectionBaseClass</a> --+    
+                          |    
+                 <a href="VisionEgg.Core.Projection-class.html">Projection</a> --+
+                              |
+                             <strong class="uidshort">SimplePerspectiveProjection</strong>
+</pre>
+
+<hr />
+<pre class="literalblock">
+A simplified perspective projection.
+
+Parameters
+==========
+matrix -- matrix specifying projection (Sequence4x4 of Real)
+          Default: [[1 0 0 0]
+                    [0 1 0 0]
+                    [0 0 1 0]
+                    [0 0 0 1]]
+
+</pre><br /><br />
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.Core.SimplePerspectiveProjection-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">fov_x</span>=<span class="summary-sig-default">45.0</span>,
+        <span class="summary-sig-arg">z_clip_near</span>=<span class="summary-sig-default">0.1</span>,
+        <span class="summary-sig-arg">z_clip_far</span>=<span class="summary-sig-default">10000.0</span>,
+        <span class="summary-sig-arg">aspect_ratio</span>=<span class="summary-sig-default">4.0/3.0</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.Core-pysrc.html#SimplePerspectiveProjection.__init__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.Core.ProjectionBaseClass-class.html">ProjectionBaseClass</a></code></b>:
+      <code><a href="VisionEgg.Core.ProjectionBaseClass-class.html#apply_to_gl">apply_to_gl</a></code>,
+      <code><a href="VisionEgg.Core.ProjectionBaseClass-class.html#apply_to_vertex">apply_to_vertex</a></code>,
+      <code><a href="VisionEgg.Core.ProjectionBaseClass-class.html#apply_to_vertices">apply_to_vertices</a></code>,
+      <code><a href="VisionEgg.Core.ProjectionBaseClass-class.html#clip_2_norm_device">clip_2_norm_device</a></code>,
+      <code><a href="VisionEgg.Core.ProjectionBaseClass-class.html#eye_2_clip">eye_2_clip</a></code>,
+      <code><a href="VisionEgg.Core.ProjectionBaseClass-class.html#eye_2_norm_device">eye_2_norm_device</a></code>,
+      <code><a href="VisionEgg.Core.ProjectionBaseClass-class.html#get_matrix">get_matrix</a></code>,
+      <code><a href="VisionEgg.Core.ProjectionBaseClass-class.html#look_at">look_at</a></code>,
+      <code><a href="VisionEgg.Core.ProjectionBaseClass-class.html#push_and_set_gl_projection">push_and_set_gl_projection</a></code>,
+      <code><a href="VisionEgg.Core.ProjectionBaseClass-class.html#rotate">rotate</a></code>,
+      <code><a href="VisionEgg.Core.ProjectionBaseClass-class.html#scale">scale</a></code>,
+      <code><a href="VisionEgg.Core.ProjectionBaseClass-class.html#set_gl_modelview">set_gl_modelview</a></code>,
+      <code><a href="VisionEgg.Core.ProjectionBaseClass-class.html#set_gl_projection">set_gl_projection</a></code>,
+      <code><a href="VisionEgg.Core.ProjectionBaseClass-class.html#stateless_rotate">stateless_rotate</a></code>,
+      <code><a href="VisionEgg.Core.ProjectionBaseClass-class.html#stateless_scale">stateless_scale</a></code>,
+      <code><a href="VisionEgg.Core.ProjectionBaseClass-class.html#stateless_translate">stateless_translate</a></code>,
+      <code><a href="VisionEgg.Core.ProjectionBaseClass-class.html#translate">translate</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a></code></b>:
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__getstate__">__getstate__</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__setstate__">__setstate__</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#get_specified_type">get_specified_type</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#is_constant_parameter">is_constant_parameter</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#set">set</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#verify_parameters">verify_parameters</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__delattr__</code>,
+      <code>__getattribute__</code>,
+      <code>__hash__</code>,
+      <code>__new__</code>,
+      <code>__reduce__</code>,
+      <code>__reduce_ex__</code>,
+      <code>__repr__</code>,
+      <code>__setattr__</code>,
+      <code>__str__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Class Variables</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.Core.ProjectionBaseClass-class.html">ProjectionBaseClass</a></code></b>:
+      <code><a href="VisionEgg.Core.ProjectionBaseClass-class.html#parameters_and_defaults">parameters_and_defaults</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a></code></b>:
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__safe_for_unpickling__">__safe_for_unpickling__</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#constant_parameters_and_defaults">constant_parameters_and_defaults</a></code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Properties</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__class__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Method Details</span></td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">fov_x</span>=<span class="sig-default">45.0</span>,
+        <span class="sig-arg">z_clip_near</span>=<span class="sig-default">0.1</span>,
+        <span class="sig-arg">z_clip_far</span>=<span class="sig-default">10000.0</span>,
+        <span class="sig-arg">aspect_ratio</span>=<span class="sig-default">4.0/3.0</span>)</span>
+    <br /><em class="fname">(Constructor)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.Core-pysrc.html#SimplePerspectiveProjection.__init__">source code</a></span> 
+    </td>
+  </table>
+  
+  
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.Core.Projection-class.html#__init__">Projection.__init__</a>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.Core.Stimulus-class.html b/doc/reference/html/VisionEgg.Core.Stimulus-class.html
new file mode 100644
index 0000000..af87891
--- /dev/null
+++ b/doc/reference/html/VisionEgg.Core.Stimulus-class.html
@@ -0,0 +1,367 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.Core.Stimulus</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.Core-module.html">Module Core</a> ::
+        Class Stimulus
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.Core.Stimulus-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class Stimulus</h1><span class="codelink"><a href="VisionEgg.Core-pysrc.html#Stimulus">source code</a></span><br /><br />
+<pre class="base-tree">
+         object --+    
+                  |    
+<a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a> --+
+                      |
+                     <strong class="uidshort">Stimulus</strong>
+</pre>
+
+<hr />
+<pre class="literalblock">
+Base class for a stimulus.
+
+Any stimulus element should be a subclass of this Stimulus class.
+The draw() method contains the code executed before every buffer
+swap in order to render the stimulus to the frame buffer.  It
+should execute as quickly as possible.  The init_gl() method must
+be called before the first call to draw() so that any internal
+data, OpenGL display lists, and OpenGL:texture objects can be
+established.
+
+To illustrate the concept of the Stimulus class, here is a
+description of several methods of drawing two spots.  If your
+experiment displays two spots simultaneously, you could create two
+instances of (a single subclass of) Stimulus, varying parameters
+so each draws at a different location.  Another possibility is to
+create one instance of a subclass that draws two spots.  Another,
+somewhat obscure, possibility is to create a single instance and
+add it to two different viewports.  (Something that will not work
+would be adding the same instance two times to the same viewport.
+It would also get drawn twice, although at exactly the same
+location.)
+
+OpenGL is a 'state machine', meaning that it has internal
+parameters whose values vary and affect how it operates.  Because
+of this inherent uncertainty, there are only limited assumptions
+about the state of OpenGL that an instance of Stimulus should
+expect when its draw() method is called.  Because the Vision Egg
+loops through stimuli this also imposes some important behaviors:
+
+First, the framebuffer will contain the results of any drawing
+operations performed since the last buffer swap by other instances
+of (subclasses of) Stimulus. Therefore, the order in which stimuli
+are present in the stimuli list of an instance of Viewport may be
+important.  Additionally, if there are overlapping viewports, the
+order in which viewports are added to an instance of Screen is
+important.
+
+Second, previously established OpenGL display lists and OpenGL
+texture objects will be available.  The __init__() method should
+establish these things.
+
+Third, there are several OpenGL state variables which are
+commonly set by subclasses of Stimulus, and which cannot be
+assumed to have any particular value at the time draw() is called.
+These state variables are: blending mode and function, texture
+state and environment, the matrix mode (modelview or projection),
+the modelview matrix, depth mode and settings. Therefore, if the
+draw() method depends on specific values for any of these states,
+it must specify its own values to OpenGL.
+
+Finally, a well-behaved Stimulus subclass resets any OpenGL state
+values other than those listed above to their initial state before
+draw() and init_gl() were called.  In other words, before your
+stimulus changes the state of an OpenGL variable, use
+glGetBoolean, glGetInteger, glGetFloat, or a similar function to
+query its value and restore it later.  For example, upon calling
+the draw() method, the projection matrix will be that which was
+set by the viewport. If the draw() method alters the projection
+matrix, it must be restored. The glPushMatrix() and glPopMatrix()
+commands provide an easy way to do this.
+
+The default projection of Viewport maps eye coordinates in a 1:1
+fashion to window coordinates (in other words, it sets eye
+coordinates to use pixel units from the lower left corner of the
+viewport). Therefore the default parameters for a stimulus should
+specify pixel coordinates if possible (such as for a 2D
+stimulus). Assuming a window size of 640 by 480 for the default
+parameters is a pretty safe way to do things.
+
+Also, be sure to check for any assumptions made about the system
+in the __init__ method.  For example, if your stimulus needs alpha
+in the framebuffer, check the value of
+glGetIntegerv(GL_ALPHA_BITS) and raise an exception if it is not
+available.
+
+</pre><br /><br />
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.Core.Stimulus-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">**kw</span>)</span><br />
+      Instantiate and get ready to draw.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.Core-pysrc.html#Stimulus.__init__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.Core.Stimulus-class.html#draw" class="summary-sig-name">draw</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      Draw the stimulus.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.Core-pysrc.html#Stimulus.draw">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a></code></b>:
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__getstate__">__getstate__</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__setstate__">__setstate__</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#get_specified_type">get_specified_type</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#is_constant_parameter">is_constant_parameter</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#set">set</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#verify_parameters">verify_parameters</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__delattr__</code>,
+      <code>__getattribute__</code>,
+      <code>__hash__</code>,
+      <code>__new__</code>,
+      <code>__reduce__</code>,
+      <code>__reduce_ex__</code>,
+      <code>__repr__</code>,
+      <code>__setattr__</code>,
+      <code>__str__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Class Variables</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a></code></b>:
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__safe_for_unpickling__">__safe_for_unpickling__</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#constant_parameters_and_defaults">constant_parameters_and_defaults</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#parameters_and_defaults">parameters_and_defaults</a></code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Properties</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__class__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Method Details</span></td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">**kw</span>)</span>
+    <br /><em class="fname">(Constructor)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.Core-pysrc.html#Stimulus.__init__">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Instantiate and get ready to draw.
+
+Set parameter values and create anything needed to draw the
+stimulus including OpenGL state variables such display lists
+and texture objects.
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.ClassWithParameters-class.html#__init__">ClassWithParameters.__init__</a>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="draw"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">draw</span>(<span class="sig-arg">self</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.Core-pysrc.html#Stimulus.draw">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Draw the stimulus. (Called by Viewport instance.)
+
+This method is called every frame.  This method actually
+performs the OpenGL calls to draw the stimulus.
+
+</pre>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.Core.Viewport-class.html b/doc/reference/html/VisionEgg.Core.Viewport-class.html
new file mode 100644
index 0000000..1aa512f
--- /dev/null
+++ b/doc/reference/html/VisionEgg.Core.Viewport-class.html
@@ -0,0 +1,463 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.Core.Viewport</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.Core-module.html">Module Core</a> ::
+        Class Viewport
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.Core.Viewport-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class Viewport</h1><span class="codelink"><a href="VisionEgg.Core-pysrc.html#Viewport">source code</a></span><br /><br />
+<pre class="base-tree">
+         object --+    
+                  |    
+<a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a> --+
+                      |
+                     <strong class="uidshort">Viewport</strong>
+</pre>
+
+<hr />
+<pre class="literalblock">
+Connects stimuli to a screen.
+
+A viewport defines a (possibly clipped region) of the screen on
+which stimuli are drawn.
+
+A screen may have multiple viewports.  The viewports may be
+overlapping.
+
+A viewport may have multiple stimuli.
+
+A single stimulus may be drawn simultaneously by several
+viewports, although this is typically useful only for 3D stimuli
+to represent different views of the same object.
+
+The coordinates of the stimulus are converted to screen
+coordinates via several steps, the most important of which is the
+projection, which is defined by an instance of the Projection
+class.
+
+By default, a viewport has a projection which maps eye coordinates
+to viewport coordinates in 1:1 manner.  In other words, eye
+coordinates specify pixel location in the viewport.
+
+For cases where pixel units are not natural to describe
+coordinates of a stimulus, the application should specify the a
+projection other than the default.  This is usually the case for
+3D stimuli.
+
+For details of the projection and clipping process, see the
+section 'Coordinate Transformations' in the book/online document
+'The OpenGL Graphics System: A Specification'
+
+Parameters
+==========
+anchor        -- How position parameter is interpreted (String)
+                 Default: lowerleft
+camera_matrix -- extrinsic camera parameter matrix (position and orientation) (Instance of <class 'VisionEgg.Core.ModelView'>)
+                 Default: (determined at runtime)
+depth_range   -- depth range (in object units) for rendering (Sequence2 of Real)
+                 Default: (0, 1)
+position      -- Position (in pixel units) within the screen (Sequence2 of Real)
+                 Default: (0, 0)
+projection    -- intrinsic camera parameter matrix (field of view, focal length, aspect ratio) (Instance of <class 'VisionEgg.Core.Projection'>)
+                 Default: (determined at runtime)
+screen        -- The screen in which this viewport is drawn (Instance of <class 'VisionEgg.Core.Screen'>)
+                 Default: (determined at runtime)
+size          -- Size (in pixel units) (Sequence2 of Real)
+                 Default: (determined at runtime)
+stimuli       -- sequence of stimuli to draw in screen (Sequence of Instance of <class 'VisionEgg.Core.Stimulus'>)
+                 Default: (determined at runtime)
+
+</pre><br /><br />
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.Core.Viewport-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">**kw</span>)</span><br />
+      Create a new instance.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.Core-pysrc.html#Viewport.__init__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="make_new_pixel_coord_projection"></a><span class="summary-sig-name">make_new_pixel_coord_projection</span>(<span class="summary-sig-arg">self</span>)</span><br />
+      Create instance of Projection mapping eye coordinates 1:1 with pixel coordinates.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.Core-pysrc.html#Viewport.make_new_pixel_coord_projection">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="make_current"></a><span class="summary-sig-name">make_current</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.Core-pysrc.html#Viewport.make_current">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="draw"></a><span class="summary-sig-name">draw</span>(<span class="summary-sig-arg">self</span>)</span><br />
+      Set the viewport and draw stimuli.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.Core-pysrc.html#Viewport.draw">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="norm_device_2_window"></a><span class="summary-sig-name">norm_device_2_window</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">norm_device_vertex</span>)</span><br />
+      Transform normalized device coordinates to window coordinates</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.Core-pysrc.html#Viewport.norm_device_2_window">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="clip_2_window"></a><span class="summary-sig-name">clip_2_window</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">eye_coords_vertex</span>)</span><br />
+      Transform clip coordinates to window coordinates</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.Core-pysrc.html#Viewport.clip_2_window">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="eye_2_window"></a><span class="summary-sig-name">eye_2_window</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">eye_coords_vertex</span>)</span><br />
+      Transform eye coordinates to window coordinates</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.Core-pysrc.html#Viewport.eye_2_window">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a></code></b>:
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__getstate__">__getstate__</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__setstate__">__setstate__</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#get_specified_type">get_specified_type</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#is_constant_parameter">is_constant_parameter</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#set">set</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#verify_parameters">verify_parameters</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__delattr__</code>,
+      <code>__getattribute__</code>,
+      <code>__hash__</code>,
+      <code>__new__</code>,
+      <code>__reduce__</code>,
+      <code>__reduce_ex__</code>,
+      <code>__repr__</code>,
+      <code>__setattr__</code>,
+      <code>__str__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Class Variables</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.Core.Viewport-class.html#parameters_and_defaults" class="summary-name">parameters_and_defaults</a> = <code title="VisionEgg.ParameterDefinition({'screen':(None, ve_types.Instance(Scree\
+n), 'The screen in which this viewport is drawn'), 'position':((0, 0),\
+ ve_types.Sequence2(ve_types.Real), 'Position (in pixel units) within \
+the screen'), 'anchor':('lowerleft', ve_types.String, 'How position pa\
+rameter is interpreted'), 'depth_range':((0, 1), ve_types.Sequence2(ve\
+_types.Real), 'depth range (in object units) for rendering'), 'size':(\
+None, ve_types.Sequence2(ve_types.Real), 'Size (in pixel units)'), 'pr\
+ojection':(None, ve_types.Instance(Projection), 'intrinsic camera para\
+...">VisionEgg.ParameterDefinition({'scre<code class="variable-ellipsis">...</code></code>
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a></code></b>:
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__safe_for_unpickling__">__safe_for_unpickling__</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#constant_parameters_and_defaults">constant_parameters_and_defaults</a></code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Properties</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__class__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Method Details</span></td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">**kw</span>)</span>
+    <br /><em class="fname">(Constructor)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.Core-pysrc.html#Viewport.__init__">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Create a new instance.
+
+Required arguments:
+
+screen
+
+Optional arguments (specify parameter value other than default):
+
+position -- defaults to (0,0), position relative to screen by anchor (see below)
+anchor -- defaults to 'lowerleft'
+size -- defaults to screen.size
+projection -- defaults to self.make_new_pixel_coord_projection()
+stimuli -- defaults to empty list
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.ClassWithParameters-class.html#__init__">ClassWithParameters.__init__</a>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== CLASS VARIABLE DETAILS ==================== -->
+<a name="section-ClassVariableDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Class Variable Details</span></td>
+</tr>
+</table>
+<a name="parameters_and_defaults"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">parameters_and_defaults</h3>
+  
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+VisionEgg.ParameterDefinition({'screen':(None, ve_types.Instance(Scree<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+n), 'The screen in which this viewport is drawn'), 'position':((0, 0),<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+ ve_types.Sequence2(ve_types.Real), 'Position (in pixel units) within <span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+the screen'), 'anchor':('lowerleft', ve_types.String, 'How position pa<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+rameter is interpreted'), 'depth_range':((0, 1), ve_types.Sequence2(ve<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+_types.Real), 'depth range (in object units) for rendering'), 'size':(<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+None, ve_types.Sequence2(ve_types.Real), 'Size (in pixel units)'), 'pr<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+ojection':(None, ve_types.Instance(Projection), 'intrinsic camera para<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+<code class="variable-ellipsis">...</code>
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.Daq-module.html b/doc/reference/html/VisionEgg.Daq-module.html
new file mode 100644
index 0000000..808c431
--- /dev/null
+++ b/doc/reference/html/VisionEgg.Daq-module.html
@@ -0,0 +1,229 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.Daq</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        Module Daq
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.Daq-module.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== MODULE DESCRIPTION ==================== -->
+<h1 class="epydoc">Module Daq</h1><span class="codelink"><a href="VisionEgg.Daq-pysrc.html">source code</a></span><br /><br />
+<pre class="literalblock">
+
+Definition of data acquisition and triggering interfaces.
+
+This module provides an interface to abstract data acquisition
+devices.  To interface with real data acquisition devices, use a
+module that subclasses the classes defined here.
+
+*WARNING* This module has not been extensively tested or used, and should be
+considered unstable.
+
+</pre><br /><br />
+
+<hr />
+<div class="fields">      <p><strong>Version:</strong>
+        1.1.dev
+      </p>
+</div><!-- ==================== CLASSES ==================== -->
+<a name="section-Classes"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Classes</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.Daq.Trigger-class.html" class="summary-name">Trigger</a>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.Daq.ChannelParameters-class.html" class="summary-name">ChannelParameters</a>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.Daq.SignalType-class.html" class="summary-name">SignalType</a>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.Daq.Analog-class.html" class="summary-name">Analog</a>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.Daq.Digital-class.html" class="summary-name">Digital</a>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.Daq.DaqMode-class.html" class="summary-name">DaqMode</a>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.Daq.Buffered-class.html" class="summary-name">Buffered</a>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.Daq.Immediate-class.html" class="summary-name">Immediate</a>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.Daq.Functionality-class.html" class="summary-name">Functionality</a>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.Daq.Input-class.html" class="summary-name">Input</a>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.Daq.Output-class.html" class="summary-name">Output</a>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.Daq.Channel-class.html" class="summary-name">Channel</a>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.Daq.Device-class.html" class="summary-name">Device</a>
+    </td>
+  </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.Daq-pysrc.html b/doc/reference/html/VisionEgg.Daq-pysrc.html
new file mode 100644
index 0000000..26e4c90
--- /dev/null
+++ b/doc/reference/html/VisionEgg.Daq-pysrc.html
@@ -0,0 +1,822 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.Daq</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        Module Daq
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.Daq-pysrc.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<h1 class="epydoc">Source Code for <a href="VisionEgg.Daq-module.html">Module VisionEgg.Daq</a></h1>
+<pre class="py-src">
+<a name="L1"></a><tt class="py-lineno">  1</tt>  <tt class="py-line"><tt class="py-comment"># The Vision Egg: Daq</tt> </tt>
+<a name="L2"></a><tt class="py-lineno">  2</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L3"></a><tt class="py-lineno">  3</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Copyright (C) 2001-2003 Andrew Straw.</tt> </tt>
+<a name="L4"></a><tt class="py-lineno">  4</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Author: Andrew Straw <astraw at users.sourceforge.net></tt> </tt>
+<a name="L5"></a><tt class="py-lineno">  5</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># URL: <http://www.visionegg.org/></tt> </tt>
+<a name="L6"></a><tt class="py-lineno">  6</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L7"></a><tt class="py-lineno">  7</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Distributed under the terms of the GNU Lesser General Public License</tt> </tt>
+<a name="L8"></a><tt class="py-lineno">  8</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># (LGPL). See LICENSE.TXT that came with this file.</tt> </tt>
+<a name="L9"></a><tt class="py-lineno">  9</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L10"></a><tt class="py-lineno"> 10</tt>  <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L11"></a><tt class="py-lineno"> 11</tt>  <tt class="py-line"><tt class="py-docstring">Definition of data acquisition and triggering interfaces.</tt> </tt>
+<a name="L12"></a><tt class="py-lineno"> 12</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L13"></a><tt class="py-lineno"> 13</tt>  <tt class="py-line"><tt class="py-docstring">This module provides an interface to abstract data acquisition</tt> </tt>
+<a name="L14"></a><tt class="py-lineno"> 14</tt>  <tt class="py-line"><tt class="py-docstring">devices.  To interface with real data acquisition devices, use a</tt> </tt>
+<a name="L15"></a><tt class="py-lineno"> 15</tt>  <tt class="py-line"><tt class="py-docstring">module that subclasses the classes defined here.</tt> </tt>
+<a name="L16"></a><tt class="py-lineno"> 16</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L17"></a><tt class="py-lineno"> 17</tt>  <tt class="py-line"><tt class="py-docstring">*WARNING* This module has not been extensively tested or used, and should be</tt> </tt>
+<a name="L18"></a><tt class="py-lineno"> 18</tt>  <tt class="py-line"><tt class="py-docstring">considered unstable.</tt> </tt>
+<a name="L19"></a><tt class="py-lineno"> 19</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L20"></a><tt class="py-lineno"> 20</tt>  <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L21"></a><tt class="py-lineno"> 21</tt>  <tt class="py-line"> </tt>
+<a name="L22"></a><tt class="py-lineno"> 22</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-0" class="py-name" targets="Package VisionEgg=VisionEgg-module.html"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-0', 'VisionEgg', 'link-0');">VisionEgg</a></tt> </tt>
+<a name="L23"></a><tt class="py-lineno"> 23</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-1" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-1', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-2" class="py-name" targets="Module VisionEgg.ParameterTypes=VisionEgg.ParameterTypes-module.html"><a title="VisionEgg.ParameterTypes" class="py-name" href="#" onclick="return doclink('link-2', 'P [...]
+<a name="L24"></a><tt class="py-lineno"> 24</tt>  <tt class="py-line"> </tt>
+<a name="L25"></a><tt class="py-lineno"> 25</tt>  <tt class="py-line"><tt id="link-3" class="py-name" targets="Variable VisionEgg.DaqKeyboard.__version__=VisionEgg.DaqKeyboard-module.html#__version__,Variable VisionEgg.DaqLPT.__version__=VisionEgg.DaqLPT-module.html#__version__,Variable VisionEgg.GL.__version__=VisionEgg.GL-module.html#__version__,Variable VisionEgg.PyroApps.EPhysGUI.__version__=VisionEgg.PyroApps.EPhysGUI-module.html#__version__,Variable VisionEgg.PyroApps.EPhysGUIUtils [...]
+VisionEgg.DaqLPT.__version__
+VisionEgg.GL.__version__
+VisionEgg.PyroApps.EPhysGUI.__version__
+VisionEgg.PyroApps.EPhysGUIUtils.__version__
+VisionEgg.PyroApps.EPhysServer.__version__
+VisionEgg.PyroApps.GridGUI.__version__
+VisionEgg.PyroApps.GridServer.__version__
+VisionEgg.PyroApps.ScreenPositionGUI.__version__
+VisionEgg.PyroApps.ScreenPositionServer.__version__
+VisionEgg.PyroApps.SpinningDrumGUI.__version__
+VisionEgg.PyroApps.SpinningDrumServer.__version__
+VisionEgg.PyroHelpers.__version__
+VisionEgg.QuickTime.__version__
+VisionEgg.ResponseControl.__version__
+VisionEgg.SphereMap.__version__
+VisionEgg.TCPController.__version__" class="py-name" href="#" onclick="return doclink('link-3', '__version__', 'link-3');">__version__</a></tt> <tt class="py-op">=</tt> <tt id="link-4" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-4', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-5" class="py-name" targets="Variable VisionEgg.release_name=VisionEgg-module.html#release_name"><a title="VisionEgg.release_name" c [...]
+<a name="L26"></a><tt class="py-lineno"> 26</tt>  <tt class="py-line"> </tt>
+<a name="Trigger"></a><div id="Trigger-def"><a name="L27"></a><tt class="py-lineno"> 27</tt> <a class="py-toggle" href="#" id="Trigger-toggle" onclick="return toggle('Trigger');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.Daq.Trigger-class.html">Trigger</a><tt class="py-op">(</tt><tt class="py-base-class">VisionEgg</tt><tt class="py-op">.</tt><tt class="py-base-class">ClassWithParameters</tt><tt class="py-op">)</tt><tt class="py-op"> [...]
+</div><div id="Trigger-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="Trigger-expanded"><a name="L28"></a><tt class="py-lineno"> 28</tt>  <tt class="py-line">    <tt class="py-keyword">pass</tt> </tt>
+</div><a name="L29"></a><tt class="py-lineno"> 29</tt>  <tt class="py-line"> </tt>
+<a name="ChannelParameters"></a><div id="ChannelParameters-def"><a name="L30"></a><tt class="py-lineno"> 30</tt> <a class="py-toggle" href="#" id="ChannelParameters-toggle" onclick="return toggle('ChannelParameters');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.Daq.ChannelParameters-class.html">ChannelParameters</a><tt class="py-op">(</tt><tt class="py-base-class">VisionEgg</tt><tt class="py-op">.</tt><tt class="py-base-class">ClassW [...]
+</div><div id="ChannelParameters-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="ChannelParameters-expanded"><a name="L31"></a><tt class="py-lineno"> 31</tt>  <tt class="py-line">    <tt class="py-keyword">pass</tt> </tt>
+</div><a name="L32"></a><tt class="py-lineno"> 32</tt>  <tt class="py-line"> </tt>
+<a name="SignalType"></a><div id="SignalType-def"><a name="L33"></a><tt class="py-lineno"> 33</tt> <a class="py-toggle" href="#" id="SignalType-toggle" onclick="return toggle('SignalType');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.Daq.SignalType-class.html">SignalType</a><tt class="py-op">(</tt><tt class="py-base-class">ChannelParameters</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="SignalType-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="SignalType-expanded"><a name="L34"></a><tt class="py-lineno"> 34</tt>  <tt class="py-line">    <tt id="link-6" class="py-name" targets="Variable VisionEgg.ClassWithParameters.constant_parameters_and_defaults=VisionEgg.ClassWithParameters-class.html#constant_parameters_and_defaults,Variable VisionEgg.Core.Screen.constant_parameters_and_defaults=VisionEgg.Core.Screen-class.html#constant_parame [...]
+VisionEgg.Core.Screen.constant_parameters_and_defaults
+VisionEgg.Daq.Analog.constant_parameters_and_defaults
+VisionEgg.Daq.Channel.constant_parameters_and_defaults
+VisionEgg.Daq.SignalType.constant_parameters_and_defaults
+VisionEgg.Dots.DotArea2D.constant_parameters_and_defaults
+VisionEgg.SphereMap.AzElGrid.constant_parameters_and_defaults
+VisionEgg.Text.Text.constant_parameters_and_defaults
+VisionEgg.Textures.FixationCross.constant_parameters_and_defaults
+VisionEgg.Textures.Mask2D.constant_parameters_and_defaults
+VisionEgg.Textures.TextureStimulusBaseClass.constant_parameters_and_defaults
+VisionEgg.WrappedText.WrappedText.constant_parameters_and_defaults" class="py-name" href="#" onclick="return doclink('link-6', 'constant_parameters_and_defaults', 'link-6');">constant_parameters_and_defaults</a></tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> </tt>
+<a name="L35"></a><tt class="py-lineno"> 35</tt>  <tt class="py-line">        <tt class="py-string">'units'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-string">'Unknown units'</tt><tt class="py-op">,</tt> </tt>
+<a name="L36"></a><tt class="py-lineno"> 36</tt>  <tt class="py-line">                 <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-7" class="py-name" targets="Class VisionEgg.ParameterTypes.String=VisionEgg.ParameterTypes.String-class.html"><a title="VisionEgg.ParameterTypes.String" class="py-name" href="#" onclick="return doclink('link-7', 'String', 'link-7');">String</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L37"></a><tt class="py-lineno"> 37</tt>  <tt class="py-line">        <tt class="py-op">}</tt> </tt>
+<a name="SignalType.__init__"></a><div id="SignalType.__init__-def"><a name="L38"></a><tt class="py-lineno"> 38</tt> <a class="py-toggle" href="#" id="SignalType.__init__-toggle" onclick="return toggle('SignalType.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.Daq.SignalType-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt><tt class="py-op">**</tt><tt class="py- [...]
+</div><div id="SignalType.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SignalType.__init__-expanded"><a name="L39"></a><tt class="py-lineno"> 39</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__class__</tt> <tt class="py-op">==</tt> <tt id="link-8" class="py-name" targets="Class VisionEgg.Daq.SignalType=VisionEgg.Daq.SignalType-class.html"><a title="VisionEgg [...]
+<a name="L40"></a><tt class="py-lineno"> 40</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">RuntimeError</tt><tt class="py-op">(</tt><tt class="py-string">"Trying to instantiate abstract base class."</tt><tt class="py-op">)</tt> </tt>
+<a name="L41"></a><tt class="py-lineno"> 41</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L42"></a><tt class="py-lineno"> 42</tt>  <tt class="py-line">            <tt id="link-9" class="py-name" targets="Class VisionEgg.Daq.ChannelParameters=VisionEgg.Daq.ChannelParameters-class.html"><a title="VisionEgg.Daq.ChannelParameters" class="py-name" href="#" onclick="return doclink('link-9', 'ChannelParameters', 'link-9');">ChannelParameters</a></tt><tt class="py-op">.</tt><tt id="link-10" class="py-name" targets="Method VisionEgg.ClassWithParameters.__init__()=VisionEgg.Cl [...]
+VisionEgg.Configuration.Config.__init__
+VisionEgg.Core.FixationSpot.__init__
+VisionEgg.Core.FrameTimer.__init__
+VisionEgg.Core.ModelView.__init__
+VisionEgg.Core.OrthographicProjection.__init__
+VisionEgg.Core.OrthographicProjectionNoZClip.__init__
+VisionEgg.Core.PerspectiveProjection.__init__
+VisionEgg.Core.Projection.__init__
+VisionEgg.Core.ProjectionBaseClass.__init__
+VisionEgg.Core.Screen.__init__
+VisionEgg.Core.SimplePerspectiveProjection.__init__
+VisionEgg.Core.Stimulus.__init__
+VisionEgg.Core.Viewport.__init__
+VisionEgg.Daq.Channel.__init__
+VisionEgg.Daq.DaqMode.__init__
+VisionEgg.Daq.Device.__init__
+VisionEgg.Daq.Functionality.__init__
+VisionEgg.Daq.SignalType.__init__
+VisionEgg.DaqKeyboard.KeyboardTriggerInController.__init__
+VisionEgg.DaqLPT.LPTChannel.__init__
+VisionEgg.DaqLPT.LPTDevice.__init__
+VisionEgg.DaqLPT.LPTTriggerInController.__init__
+VisionEgg.DaqLPT.LPTTriggerOutController.__init__
+VisionEgg.Deprecated.Message.__init__
+VisionEgg.Dots.DotArea2D.__init__
+VisionEgg.FlowControl.ConstantController.__init__
+VisionEgg.FlowControl.Controller.__init__
+VisionEgg.FlowControl.EncapsulatedController.__init__
+VisionEgg.FlowControl.EvalStringController.__init__
+VisionEgg.FlowControl.ExecStringController.__init__
+VisionEgg.FlowControl.FunctionController.__init__
+VisionEgg.FlowControl.Presentation.__init__
+VisionEgg.GLTrace.Wrapper.__init__
+VisionEgg.GUI.AppWindow.__init__
+VisionEgg.GUI.GetKeypressDialog.__init__
+VisionEgg.GUI.GraphicsConfigurationWindow.__init__
+VisionEgg.GUI.InfoFrame.__init__
+VisionEgg.GUI.ProgressBar.__init__
+VisionEgg.GUI.ToplevelDialog.__init__
+VisionEgg.Gratings.SinGrating2D.__init__
+VisionEgg.Gratings.SinGrating3D.__init__
+VisionEgg.MoreStimuli.Arrow.__init__
+VisionEgg.MoreStimuli.FilledCircle.__init__
+VisionEgg.MoreStimuli.Rectangle3D.__init__
+VisionEgg.MoreStimuli.Target2D.__init__
+VisionEgg.ParameterTypes.AnyOf.__init__
+VisionEgg.ParameterTypes.Instance.__init__
+VisionEgg.ParameterTypes.Sequence.__init__
+VisionEgg.ParameterTypes.SubClass.__init__
+VisionEgg.PyroApps.AST_ext.AST_Visitor.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalMetaParameters.__init__
+VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.__init__
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.__init__
+VisionEgg.PyroApps.DropinGUI.DropinMetaParameters.__init__
+VisionEgg.PyroApps.DropinServer.DropinMetaController.__init__
+VisionEgg.PyroApps.EPhysGUI.AppWindow.__init__
+VisionEgg.PyroApps.EPhysGUI.BarButton.__init__
+VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase.__init__
+VisionEgg.PyroApps.EPhysGUI.GammaFrame.__init__
+VisionEgg.PyroApps.EPhysGUI.ImageSequenceLauncher.__init__
+VisionEgg.PyroApps.EPhysGUI.Loop.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopContainedObject.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopParamDialog.__init__
+VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.__init__
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.__init__
+VisionEgg.PyroApps.EPhysServer.EPhysServer.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingMetaParameters.__init__
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.GridGUI.GridControlFrame.__init__
+VisionEgg.PyroApps.GridGUI.GridMetaParameters.__init__
+VisionEgg.PyroApps.GridServer.GridMetaController.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetMetaParameters.__init__
+VisionEgg.PyroApps.MouseTargetServer.MousePositionController.__init__
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetOrientationController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetPositionController.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.CallbackEntry.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionParameters.__init__
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingMetaParameters.__init__
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumMetaParameters.__init__
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.__init__
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.__init__
+VisionEgg.PyroApps.TargetGUI.TargetMetaParameters.__init__
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.__init__
+VisionEgg.PyroClient.PyroClient.__init__
+VisionEgg.PyroHelpers.PyroConstantController.__init__
+VisionEgg.PyroHelpers.PyroEncapsulatedController.__init__
+VisionEgg.PyroHelpers.PyroEvalStringController.__init__
+VisionEgg.PyroHelpers.PyroExecStringController.__init__
+VisionEgg.PyroHelpers.PyroListenController.__init__
+VisionEgg.PyroHelpers.PyroLocalDictController.__init__
+VisionEgg.PyroHelpers.PyroServer.__init__
+VisionEgg.QuickTime.MovieTexture.__init__
+VisionEgg.ResponseControl.KeyboardResponseController.__init__
+VisionEgg.ResponseControl.ResponseController.__init__
+VisionEgg.SphereMap.AzElGrid.__init__
+VisionEgg.SphereMap.SphereGrating.__init__
+VisionEgg.SphereMap.SphereMap.__init__
+VisionEgg.SphereMap.SphereWindow.__init__
+VisionEgg.TCPController.SocketListenController.__init__
+VisionEgg.TCPController.TCPController.__init__
+VisionEgg.TCPController.TCPServer.__init__
+VisionEgg.Text.BitmapText.__init__
+VisionEgg.Text.GlutTextBase.__init__
+VisionEgg.Text.StrokeText.__init__
+VisionEgg.Text.Text.__init__
+VisionEgg.Textures.FixationCross.__init__
+VisionEgg.Textures.Mask2D.__init__
+VisionEgg.Textures.SpinningDrum.__init__
+VisionEgg.Textures.Texture.__init__
+VisionEgg.Textures.TextureFromFile.__init__
+VisionEgg.Textures.TextureObject.__init__
+VisionEgg.Textures.TextureStimulusBaseClass.__init__
+VisionEgg.ThreeDeeMath.TransformMatrix.__init__
+VisionEgg.WrappedText.WrappedText.__init__
+VisionEgg.qtmovie.Movie.__init__
+VisionEgg.qtmovie.Rect.__init__" class="py-name" href="#" onclick="return doclink('link-10', '__init__', 'link-10');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt><tt class="py-op">**</tt><tt class="py-name">kw</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L43"></a><tt class="py-lineno"> 43</tt>  <tt class="py-line"> </tt>
+<a name="Analog"></a><div id="Analog-def"><a name="L44"></a><tt class="py-lineno"> 44</tt> <a class="py-toggle" href="#" id="Analog-toggle" onclick="return toggle('Analog');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.Daq.Analog-class.html">Analog</a><tt class="py-op">(</tt><tt class="py-base-class">SignalType</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Analog-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="Analog-expanded"><a name="L45"></a><tt class="py-lineno"> 45</tt>  <tt class="py-line">    <tt id="link-11" class="py-name"><a title="VisionEgg.ClassWithParameters.constant_parameters_and_defaults
+VisionEgg.Core.Screen.constant_parameters_and_defaults
+VisionEgg.Daq.Analog.constant_parameters_and_defaults
+VisionEgg.Daq.Channel.constant_parameters_and_defaults
+VisionEgg.Daq.SignalType.constant_parameters_and_defaults
+VisionEgg.Dots.DotArea2D.constant_parameters_and_defaults
+VisionEgg.SphereMap.AzElGrid.constant_parameters_and_defaults
+VisionEgg.Text.Text.constant_parameters_and_defaults
+VisionEgg.Textures.FixationCross.constant_parameters_and_defaults
+VisionEgg.Textures.Mask2D.constant_parameters_and_defaults
+VisionEgg.Textures.TextureStimulusBaseClass.constant_parameters_and_defaults
+VisionEgg.WrappedText.WrappedText.constant_parameters_and_defaults" class="py-name" href="#" onclick="return doclink('link-11', 'constant_parameters_and_defaults', 'link-6');">constant_parameters_and_defaults</a></tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> </tt>
+<a name="L46"></a><tt class="py-lineno"> 46</tt>  <tt class="py-line">        <tt class="py-string">'gain'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-number">1.0</tt><tt class="py-op">,</tt> </tt>
+<a name="L47"></a><tt class="py-lineno"> 47</tt>  <tt class="py-line">                <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-12" class="py-name" targets="Class VisionEgg.ParameterTypes.Real=VisionEgg.ParameterTypes.Real-class.html"><a title="VisionEgg.ParameterTypes.Real" class="py-name" href="#" onclick="return doclink('link-12', 'Real', 'link-12');">Real</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L48"></a><tt class="py-lineno"> 48</tt>  <tt class="py-line">        <tt class="py-string">'offset'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-number">0.0</tt><tt class="py-op">,</tt> </tt>
+<a name="L49"></a><tt class="py-lineno"> 49</tt>  <tt class="py-line">                  <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-13" class="py-name"><a title="VisionEgg.ParameterTypes.Real" class="py-name" href="#" onclick="return doclink('link-13', 'Real', 'link-12');">Real</a></tt><tt class="py-op">)</tt><tt class="py-op">}</tt> </tt>
+</div><a name="L50"></a><tt class="py-lineno"> 50</tt>  <tt class="py-line"> </tt>
+<a name="Digital"></a><div id="Digital-def"><a name="L51"></a><tt class="py-lineno"> 51</tt> <a class="py-toggle" href="#" id="Digital-toggle" onclick="return toggle('Digital');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.Daq.Digital-class.html">Digital</a><tt class="py-op">(</tt><tt class="py-base-class">SignalType</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Digital-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="Digital-expanded"><a name="L52"></a><tt class="py-lineno"> 52</tt>  <tt class="py-line">    <tt class="py-keyword">pass</tt> </tt>
+</div><a name="L53"></a><tt class="py-lineno"> 53</tt>  <tt class="py-line"> </tt>
+<a name="DaqMode"></a><div id="DaqMode-def"><a name="L54"></a><tt class="py-lineno"> 54</tt> <a class="py-toggle" href="#" id="DaqMode-toggle" onclick="return toggle('DaqMode');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.Daq.DaqMode-class.html">DaqMode</a><tt class="py-op">(</tt><tt class="py-base-class">ChannelParameters</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="DaqMode-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="DaqMode-expanded"><a name="DaqMode.__init__"></a><div id="DaqMode.__init__-def"><a name="L55"></a><tt class="py-lineno"> 55</tt> <a class="py-toggle" href="#" id="DaqMode.__init__-toggle" onclick="return toggle('DaqMode.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.Daq.DaqMode-class.html#__init__">__init__</a><tt class="py-op">( [...]
+</div><div id="DaqMode.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="DaqMode.__init__-expanded"><a name="L56"></a><tt class="py-lineno"> 56</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__class__</tt> <tt class="py-op">==</tt> <tt id="link-14" class="py-name" targets="Class VisionEgg.Daq.DaqMode=VisionEgg.Daq.DaqMode-class.html"><a title="VisionEgg.Daq.DaqMod [...]
+<a name="L57"></a><tt class="py-lineno"> 57</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">RuntimeError</tt><tt class="py-op">(</tt><tt class="py-string">"Trying to instantiate abstract base class."</tt><tt class="py-op">)</tt> </tt>
+<a name="L58"></a><tt class="py-lineno"> 58</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L59"></a><tt class="py-lineno"> 59</tt>  <tt class="py-line">            <tt id="link-15" class="py-name"><a title="VisionEgg.Daq.ChannelParameters" class="py-name" href="#" onclick="return doclink('link-15', 'ChannelParameters', 'link-9');">ChannelParameters</a></tt><tt class="py-op">.</tt><tt id="link-16" class="py-name"><a title="VisionEgg.ClassWithParameters.__init__
+VisionEgg.Configuration.Config.__init__
+VisionEgg.Core.FixationSpot.__init__
+VisionEgg.Core.FrameTimer.__init__
+VisionEgg.Core.ModelView.__init__
+VisionEgg.Core.OrthographicProjection.__init__
+VisionEgg.Core.OrthographicProjectionNoZClip.__init__
+VisionEgg.Core.PerspectiveProjection.__init__
+VisionEgg.Core.Projection.__init__
+VisionEgg.Core.ProjectionBaseClass.__init__
+VisionEgg.Core.Screen.__init__
+VisionEgg.Core.SimplePerspectiveProjection.__init__
+VisionEgg.Core.Stimulus.__init__
+VisionEgg.Core.Viewport.__init__
+VisionEgg.Daq.Channel.__init__
+VisionEgg.Daq.DaqMode.__init__
+VisionEgg.Daq.Device.__init__
+VisionEgg.Daq.Functionality.__init__
+VisionEgg.Daq.SignalType.__init__
+VisionEgg.DaqKeyboard.KeyboardTriggerInController.__init__
+VisionEgg.DaqLPT.LPTChannel.__init__
+VisionEgg.DaqLPT.LPTDevice.__init__
+VisionEgg.DaqLPT.LPTTriggerInController.__init__
+VisionEgg.DaqLPT.LPTTriggerOutController.__init__
+VisionEgg.Deprecated.Message.__init__
+VisionEgg.Dots.DotArea2D.__init__
+VisionEgg.FlowControl.ConstantController.__init__
+VisionEgg.FlowControl.Controller.__init__
+VisionEgg.FlowControl.EncapsulatedController.__init__
+VisionEgg.FlowControl.EvalStringController.__init__
+VisionEgg.FlowControl.ExecStringController.__init__
+VisionEgg.FlowControl.FunctionController.__init__
+VisionEgg.FlowControl.Presentation.__init__
+VisionEgg.GLTrace.Wrapper.__init__
+VisionEgg.GUI.AppWindow.__init__
+VisionEgg.GUI.GetKeypressDialog.__init__
+VisionEgg.GUI.GraphicsConfigurationWindow.__init__
+VisionEgg.GUI.InfoFrame.__init__
+VisionEgg.GUI.ProgressBar.__init__
+VisionEgg.GUI.ToplevelDialog.__init__
+VisionEgg.Gratings.SinGrating2D.__init__
+VisionEgg.Gratings.SinGrating3D.__init__
+VisionEgg.MoreStimuli.Arrow.__init__
+VisionEgg.MoreStimuli.FilledCircle.__init__
+VisionEgg.MoreStimuli.Rectangle3D.__init__
+VisionEgg.MoreStimuli.Target2D.__init__
+VisionEgg.ParameterTypes.AnyOf.__init__
+VisionEgg.ParameterTypes.Instance.__init__
+VisionEgg.ParameterTypes.Sequence.__init__
+VisionEgg.ParameterTypes.SubClass.__init__
+VisionEgg.PyroApps.AST_ext.AST_Visitor.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalMetaParameters.__init__
+VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.__init__
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.__init__
+VisionEgg.PyroApps.DropinGUI.DropinMetaParameters.__init__
+VisionEgg.PyroApps.DropinServer.DropinMetaController.__init__
+VisionEgg.PyroApps.EPhysGUI.AppWindow.__init__
+VisionEgg.PyroApps.EPhysGUI.BarButton.__init__
+VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase.__init__
+VisionEgg.PyroApps.EPhysGUI.GammaFrame.__init__
+VisionEgg.PyroApps.EPhysGUI.ImageSequenceLauncher.__init__
+VisionEgg.PyroApps.EPhysGUI.Loop.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopContainedObject.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopParamDialog.__init__
+VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.__init__
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.__init__
+VisionEgg.PyroApps.EPhysServer.EPhysServer.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingMetaParameters.__init__
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.GridGUI.GridControlFrame.__init__
+VisionEgg.PyroApps.GridGUI.GridMetaParameters.__init__
+VisionEgg.PyroApps.GridServer.GridMetaController.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetMetaParameters.__init__
+VisionEgg.PyroApps.MouseTargetServer.MousePositionController.__init__
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetOrientationController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetPositionController.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.CallbackEntry.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionParameters.__init__
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingMetaParameters.__init__
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumMetaParameters.__init__
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.__init__
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.__init__
+VisionEgg.PyroApps.TargetGUI.TargetMetaParameters.__init__
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.__init__
+VisionEgg.PyroClient.PyroClient.__init__
+VisionEgg.PyroHelpers.PyroConstantController.__init__
+VisionEgg.PyroHelpers.PyroEncapsulatedController.__init__
+VisionEgg.PyroHelpers.PyroEvalStringController.__init__
+VisionEgg.PyroHelpers.PyroExecStringController.__init__
+VisionEgg.PyroHelpers.PyroListenController.__init__
+VisionEgg.PyroHelpers.PyroLocalDictController.__init__
+VisionEgg.PyroHelpers.PyroServer.__init__
+VisionEgg.QuickTime.MovieTexture.__init__
+VisionEgg.ResponseControl.KeyboardResponseController.__init__
+VisionEgg.ResponseControl.ResponseController.__init__
+VisionEgg.SphereMap.AzElGrid.__init__
+VisionEgg.SphereMap.SphereGrating.__init__
+VisionEgg.SphereMap.SphereMap.__init__
+VisionEgg.SphereMap.SphereWindow.__init__
+VisionEgg.TCPController.SocketListenController.__init__
+VisionEgg.TCPController.TCPController.__init__
+VisionEgg.TCPController.TCPServer.__init__
+VisionEgg.Text.BitmapText.__init__
+VisionEgg.Text.GlutTextBase.__init__
+VisionEgg.Text.StrokeText.__init__
+VisionEgg.Text.Text.__init__
+VisionEgg.Textures.FixationCross.__init__
+VisionEgg.Textures.Mask2D.__init__
+VisionEgg.Textures.SpinningDrum.__init__
+VisionEgg.Textures.Texture.__init__
+VisionEgg.Textures.TextureFromFile.__init__
+VisionEgg.Textures.TextureObject.__init__
+VisionEgg.Textures.TextureStimulusBaseClass.__init__
+VisionEgg.ThreeDeeMath.TransformMatrix.__init__
+VisionEgg.WrappedText.WrappedText.__init__
+VisionEgg.qtmovie.Movie.__init__
+VisionEgg.qtmovie.Rect.__init__" class="py-name" href="#" onclick="return doclink('link-16', '__init__', 'link-10');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt><tt class="py-op">**</tt><tt class="py-name">kw</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L60"></a><tt class="py-lineno"> 60</tt>  <tt class="py-line"> </tt>
+<a name="Buffered"></a><div id="Buffered-def"><a name="L61"></a><tt class="py-lineno"> 61</tt> <a class="py-toggle" href="#" id="Buffered-toggle" onclick="return toggle('Buffered');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.Daq.Buffered-class.html">Buffered</a><tt class="py-op">(</tt><tt class="py-base-class">DaqMode</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Buffered-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="Buffered-expanded"><a name="L62"></a><tt class="py-lineno"> 62</tt>  <tt class="py-line">    <tt id="link-17" class="py-name" targets="Variable VisionEgg.ClassWithParameters.parameters_and_defaults=VisionEgg.ClassWithParameters-class.html#parameters_and_defaults,Variable VisionEgg.Core.FixationSpot.parameters_and_defaults=VisionEgg.Core.FixationSpot-class.html#parameters_and_defaults,Variable  [...]
+VisionEgg.Core.FixationSpot.parameters_and_defaults
+VisionEgg.Core.ProjectionBaseClass.parameters_and_defaults
+VisionEgg.Core.Screen.parameters_and_defaults
+VisionEgg.Core.Viewport.parameters_and_defaults
+VisionEgg.Daq.Buffered.parameters_and_defaults
+VisionEgg.Dots.DotArea2D.parameters_and_defaults
+VisionEgg.FlowControl.Presentation.parameters_and_defaults
+VisionEgg.Gratings.AlphaGratingCommon.parameters_and_defaults
+VisionEgg.Gratings.LuminanceGratingCommon.parameters_and_defaults
+VisionEgg.Gratings.SinGrating2D.parameters_and_defaults
+VisionEgg.Gratings.SinGrating3D.parameters_and_defaults
+VisionEgg.MoreStimuli.Arrow.parameters_and_defaults
+VisionEgg.MoreStimuli.FilledCircle.parameters_and_defaults
+VisionEgg.MoreStimuli.Rectangle3D.parameters_and_defaults
+VisionEgg.MoreStimuli.Target2D.parameters_and_defaults
+VisionEgg.PyroApps.EPhysGUI.Loop.parameters_and_defaults
+VisionEgg.SphereMap.AzElGrid.parameters_and_defaults
+VisionEgg.SphereMap.SphereGrating.parameters_and_defaults
+VisionEgg.SphereMap.SphereMap.parameters_and_defaults
+VisionEgg.SphereMap.SphereWindow.parameters_and_defaults
+VisionEgg.Text.BitmapText.parameters_and_defaults
+VisionEgg.Text.GlutTextBase.parameters_and_defaults
+VisionEgg.Text.StrokeText.parameters_and_defaults
+VisionEgg.Text.Text.parameters_and_defaults
+VisionEgg.Textures.FixationCross.parameters_and_defaults
+VisionEgg.Textures.SpinningDrum.parameters_and_defaults
+VisionEgg.Textures.TextureStimulus.parameters_and_defaults
+VisionEgg.Textures.TextureStimulus3D.parameters_and_defaults
+VisionEgg.Textures.TextureStimulusBaseClass.parameters_and_defaults
+VisionEgg.WrappedText.WrappedText.parameters_and_defaults" class="py-name" href="#" onclick="return doclink('link-17', 'parameters_and_defaults', 'link-17');">parameters_and_defaults</a></tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> </tt>
+<a name="L63"></a><tt class="py-lineno"> 63</tt>  <tt class="py-line">        <tt class="py-string">'sample_rate_hz'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-number">5000.0</tt><tt class="py-op">,</tt> </tt>
+<a name="L64"></a><tt class="py-lineno"> 64</tt>  <tt class="py-line">                          <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-18" class="py-name"><a title="VisionEgg.ParameterTypes.Real" class="py-name" href="#" onclick="return doclink('link-18', 'Real', 'link-12');">Real</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L65"></a><tt class="py-lineno"> 65</tt>  <tt class="py-line">        <tt class="py-string">'duration_sec'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-number">5.0</tt><tt class="py-op">,</tt> </tt>
+<a name="L66"></a><tt class="py-lineno"> 66</tt>  <tt class="py-line">                        <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-19" class="py-name"><a title="VisionEgg.ParameterTypes.Real" class="py-name" href="#" onclick="return doclink('link-19', 'Real', 'link-12');">Real</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L67"></a><tt class="py-lineno"> 67</tt>  <tt class="py-line">        <tt class="py-string">'trigger'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
+<a name="L68"></a><tt class="py-lineno"> 68</tt>  <tt class="py-line">                   <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-20" class="py-name" targets="Class VisionEgg.ParameterTypes.Instance=VisionEgg.ParameterTypes.Instance-class.html"><a title="VisionEgg.ParameterTypes.Instance" class="py-name" href="#" onclick="return doclink('link-20', 'Instance', 'link-20');">Instance</a></tt><tt class="py-op">(</tt><tt id="link-21" class="py-name" targets="Class [...]
+<a name="L69"></a><tt class="py-lineno"> 69</tt>  <tt class="py-line">        <tt class="py-op">}</tt> </tt>
+</div><a name="L70"></a><tt class="py-lineno"> 70</tt>  <tt class="py-line"> </tt>
+<a name="Immediate"></a><div id="Immediate-def"><a name="L71"></a><tt class="py-lineno"> 71</tt> <a class="py-toggle" href="#" id="Immediate-toggle" onclick="return toggle('Immediate');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.Daq.Immediate-class.html">Immediate</a><tt class="py-op">(</tt><tt class="py-base-class">DaqMode</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Immediate-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="Immediate-expanded"><a name="L72"></a><tt class="py-lineno"> 72</tt>  <tt class="py-line">    <tt class="py-keyword">pass</tt> </tt>
+</div><a name="L73"></a><tt class="py-lineno"> 73</tt>  <tt class="py-line"> </tt>
+<a name="Functionality"></a><div id="Functionality-def"><a name="L74"></a><tt class="py-lineno"> 74</tt> <a class="py-toggle" href="#" id="Functionality-toggle" onclick="return toggle('Functionality');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.Daq.Functionality-class.html">Functionality</a><tt class="py-op">(</tt><tt class="py-base-class">ChannelParameters</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Functionality-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="Functionality-expanded"><a name="Functionality.__init__"></a><div id="Functionality.__init__-def"><a name="L75"></a><tt class="py-lineno"> 75</tt> <a class="py-toggle" href="#" id="Functionality.__init__-toggle" onclick="return toggle('Functionality.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.Daq.Functionality-class.html [...]
+</div><div id="Functionality.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Functionality.__init__-expanded"><a name="L76"></a><tt class="py-lineno"> 76</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__class__</tt> <tt class="py-op">==</tt> <tt id="link-22" class="py-name" targets="Class VisionEgg.Daq.Functionality=VisionEgg.Daq.Functionality-class.html"><a tit [...]
+<a name="L77"></a><tt class="py-lineno"> 77</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">RuntimeError</tt><tt class="py-op">(</tt><tt class="py-string">"Trying to instantiate abstract base class."</tt><tt class="py-op">)</tt> </tt>
+<a name="L78"></a><tt class="py-lineno"> 78</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L79"></a><tt class="py-lineno"> 79</tt>  <tt class="py-line">            <tt id="link-23" class="py-name"><a title="VisionEgg.Daq.ChannelParameters" class="py-name" href="#" onclick="return doclink('link-23', 'ChannelParameters', 'link-9');">ChannelParameters</a></tt><tt class="py-op">.</tt><tt id="link-24" class="py-name"><a title="VisionEgg.ClassWithParameters.__init__
+VisionEgg.Configuration.Config.__init__
+VisionEgg.Core.FixationSpot.__init__
+VisionEgg.Core.FrameTimer.__init__
+VisionEgg.Core.ModelView.__init__
+VisionEgg.Core.OrthographicProjection.__init__
+VisionEgg.Core.OrthographicProjectionNoZClip.__init__
+VisionEgg.Core.PerspectiveProjection.__init__
+VisionEgg.Core.Projection.__init__
+VisionEgg.Core.ProjectionBaseClass.__init__
+VisionEgg.Core.Screen.__init__
+VisionEgg.Core.SimplePerspectiveProjection.__init__
+VisionEgg.Core.Stimulus.__init__
+VisionEgg.Core.Viewport.__init__
+VisionEgg.Daq.Channel.__init__
+VisionEgg.Daq.DaqMode.__init__
+VisionEgg.Daq.Device.__init__
+VisionEgg.Daq.Functionality.__init__
+VisionEgg.Daq.SignalType.__init__
+VisionEgg.DaqKeyboard.KeyboardTriggerInController.__init__
+VisionEgg.DaqLPT.LPTChannel.__init__
+VisionEgg.DaqLPT.LPTDevice.__init__
+VisionEgg.DaqLPT.LPTTriggerInController.__init__
+VisionEgg.DaqLPT.LPTTriggerOutController.__init__
+VisionEgg.Deprecated.Message.__init__
+VisionEgg.Dots.DotArea2D.__init__
+VisionEgg.FlowControl.ConstantController.__init__
+VisionEgg.FlowControl.Controller.__init__
+VisionEgg.FlowControl.EncapsulatedController.__init__
+VisionEgg.FlowControl.EvalStringController.__init__
+VisionEgg.FlowControl.ExecStringController.__init__
+VisionEgg.FlowControl.FunctionController.__init__
+VisionEgg.FlowControl.Presentation.__init__
+VisionEgg.GLTrace.Wrapper.__init__
+VisionEgg.GUI.AppWindow.__init__
+VisionEgg.GUI.GetKeypressDialog.__init__
+VisionEgg.GUI.GraphicsConfigurationWindow.__init__
+VisionEgg.GUI.InfoFrame.__init__
+VisionEgg.GUI.ProgressBar.__init__
+VisionEgg.GUI.ToplevelDialog.__init__
+VisionEgg.Gratings.SinGrating2D.__init__
+VisionEgg.Gratings.SinGrating3D.__init__
+VisionEgg.MoreStimuli.Arrow.__init__
+VisionEgg.MoreStimuli.FilledCircle.__init__
+VisionEgg.MoreStimuli.Rectangle3D.__init__
+VisionEgg.MoreStimuli.Target2D.__init__
+VisionEgg.ParameterTypes.AnyOf.__init__
+VisionEgg.ParameterTypes.Instance.__init__
+VisionEgg.ParameterTypes.Sequence.__init__
+VisionEgg.ParameterTypes.SubClass.__init__
+VisionEgg.PyroApps.AST_ext.AST_Visitor.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalMetaParameters.__init__
+VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.__init__
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.__init__
+VisionEgg.PyroApps.DropinGUI.DropinMetaParameters.__init__
+VisionEgg.PyroApps.DropinServer.DropinMetaController.__init__
+VisionEgg.PyroApps.EPhysGUI.AppWindow.__init__
+VisionEgg.PyroApps.EPhysGUI.BarButton.__init__
+VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase.__init__
+VisionEgg.PyroApps.EPhysGUI.GammaFrame.__init__
+VisionEgg.PyroApps.EPhysGUI.ImageSequenceLauncher.__init__
+VisionEgg.PyroApps.EPhysGUI.Loop.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopContainedObject.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopParamDialog.__init__
+VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.__init__
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.__init__
+VisionEgg.PyroApps.EPhysServer.EPhysServer.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingMetaParameters.__init__
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.GridGUI.GridControlFrame.__init__
+VisionEgg.PyroApps.GridGUI.GridMetaParameters.__init__
+VisionEgg.PyroApps.GridServer.GridMetaController.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetMetaParameters.__init__
+VisionEgg.PyroApps.MouseTargetServer.MousePositionController.__init__
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetOrientationController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetPositionController.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.CallbackEntry.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionParameters.__init__
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingMetaParameters.__init__
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumMetaParameters.__init__
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.__init__
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.__init__
+VisionEgg.PyroApps.TargetGUI.TargetMetaParameters.__init__
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.__init__
+VisionEgg.PyroClient.PyroClient.__init__
+VisionEgg.PyroHelpers.PyroConstantController.__init__
+VisionEgg.PyroHelpers.PyroEncapsulatedController.__init__
+VisionEgg.PyroHelpers.PyroEvalStringController.__init__
+VisionEgg.PyroHelpers.PyroExecStringController.__init__
+VisionEgg.PyroHelpers.PyroListenController.__init__
+VisionEgg.PyroHelpers.PyroLocalDictController.__init__
+VisionEgg.PyroHelpers.PyroServer.__init__
+VisionEgg.QuickTime.MovieTexture.__init__
+VisionEgg.ResponseControl.KeyboardResponseController.__init__
+VisionEgg.ResponseControl.ResponseController.__init__
+VisionEgg.SphereMap.AzElGrid.__init__
+VisionEgg.SphereMap.SphereGrating.__init__
+VisionEgg.SphereMap.SphereMap.__init__
+VisionEgg.SphereMap.SphereWindow.__init__
+VisionEgg.TCPController.SocketListenController.__init__
+VisionEgg.TCPController.TCPController.__init__
+VisionEgg.TCPController.TCPServer.__init__
+VisionEgg.Text.BitmapText.__init__
+VisionEgg.Text.GlutTextBase.__init__
+VisionEgg.Text.StrokeText.__init__
+VisionEgg.Text.Text.__init__
+VisionEgg.Textures.FixationCross.__init__
+VisionEgg.Textures.Mask2D.__init__
+VisionEgg.Textures.SpinningDrum.__init__
+VisionEgg.Textures.Texture.__init__
+VisionEgg.Textures.TextureFromFile.__init__
+VisionEgg.Textures.TextureObject.__init__
+VisionEgg.Textures.TextureStimulusBaseClass.__init__
+VisionEgg.ThreeDeeMath.TransformMatrix.__init__
+VisionEgg.WrappedText.WrappedText.__init__
+VisionEgg.qtmovie.Movie.__init__
+VisionEgg.qtmovie.Rect.__init__" class="py-name" href="#" onclick="return doclink('link-24', '__init__', 'link-10');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt><tt class="py-op">**</tt><tt class="py-name">kw</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L80"></a><tt class="py-lineno"> 80</tt>  <tt class="py-line"> </tt>
+<a name="Input"></a><div id="Input-def"><a name="L81"></a><tt class="py-lineno"> 81</tt> <a class="py-toggle" href="#" id="Input-toggle" onclick="return toggle('Input');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.Daq.Input-class.html">Input</a><tt class="py-op">(</tt><tt class="py-base-class">Functionality</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Input-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="Input-expanded"><a name="Input.get_data"></a><div id="Input.get_data-def"><a name="L82"></a><tt class="py-lineno"> 82</tt> <a class="py-toggle" href="#" id="Input.get_data-toggle" onclick="return toggle('Input.get_data');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.Daq.Input-class.html#get_data">get_data</a><tt class="py-op">(</tt><tt class [...]
+</div><div id="Input.get_data-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Input.get_data-expanded"><a name="L83"></a><tt class="py-lineno"> 83</tt>  <tt class="py-line">        <tt class="py-keyword">raise</tt> <tt class="py-name">RuntimeError</tt><tt class="py-op">(</tt><tt class="py-string">"Must override get_data method with daq implementation!"</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L84"></a><tt class="py-lineno"> 84</tt>  <tt class="py-line"> </tt>
+<a name="Output"></a><div id="Output-def"><a name="L85"></a><tt class="py-lineno"> 85</tt> <a class="py-toggle" href="#" id="Output-toggle" onclick="return toggle('Output');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.Daq.Output-class.html">Output</a><tt class="py-op">(</tt><tt class="py-base-class">Functionality</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Output-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="Output-expanded"><a name="Output.put_data"></a><div id="Output.put_data-def"><a name="L86"></a><tt class="py-lineno"> 86</tt> <a class="py-toggle" href="#" id="Output.put_data-toggle" onclick="return toggle('Output.put_data');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.Daq.Output-class.html#put_data">put_data</a><tt class="py-op">(</tt><t [...]
+</div><div id="Output.put_data-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Output.put_data-expanded"><a name="L87"></a><tt class="py-lineno"> 87</tt>  <tt class="py-line">        <tt class="py-keyword">raise</tt> <tt class="py-name">RuntimeError</tt><tt class="py-op">(</tt><tt class="py-string">"Must override put_data method with daq implementation!"</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L88"></a><tt class="py-lineno"> 88</tt>  <tt class="py-line"> </tt>
+<a name="Channel"></a><div id="Channel-def"><a name="L89"></a><tt class="py-lineno"> 89</tt> <a class="py-toggle" href="#" id="Channel-toggle" onclick="return toggle('Channel');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.Daq.Channel-class.html">Channel</a><tt class="py-op">(</tt><tt class="py-base-class">VisionEgg</tt><tt class="py-op">.</tt><tt class="py-base-class">ClassWithParameters</tt><tt class="py-op">)</tt><tt class="py-op"> [...]
+</div><div id="Channel-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="Channel-expanded"><a name="L90"></a><tt class="py-lineno"> 90</tt>  <tt class="py-line">    <tt id="link-25" class="py-name"><a title="VisionEgg.ClassWithParameters.constant_parameters_and_defaults
+VisionEgg.Core.Screen.constant_parameters_and_defaults
+VisionEgg.Daq.Analog.constant_parameters_and_defaults
+VisionEgg.Daq.Channel.constant_parameters_and_defaults
+VisionEgg.Daq.SignalType.constant_parameters_and_defaults
+VisionEgg.Dots.DotArea2D.constant_parameters_and_defaults
+VisionEgg.SphereMap.AzElGrid.constant_parameters_and_defaults
+VisionEgg.Text.Text.constant_parameters_and_defaults
+VisionEgg.Textures.FixationCross.constant_parameters_and_defaults
+VisionEgg.Textures.Mask2D.constant_parameters_and_defaults
+VisionEgg.Textures.TextureStimulusBaseClass.constant_parameters_and_defaults
+VisionEgg.WrappedText.WrappedText.constant_parameters_and_defaults" class="py-name" href="#" onclick="return doclink('link-25', 'constant_parameters_and_defaults', 'link-6');">constant_parameters_and_defaults</a></tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> </tt>
+<a name="L91"></a><tt class="py-lineno"> 91</tt>  <tt class="py-line">        <tt class="py-string">'signal_type'</tt> <tt class="py-op">:</tt> <tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
+<a name="L92"></a><tt class="py-lineno"> 92</tt>  <tt class="py-line">                         <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-26" class="py-name"><a title="VisionEgg.ParameterTypes.Instance" class="py-name" href="#" onclick="return doclink('link-26', 'Instance', 'link-20');">Instance</a></tt><tt class="py-op">(</tt><tt id="link-27" class="py-name"><a title="VisionEgg.Daq.SignalType" class="py-name" href="#" onclick="return doclink('link-27', 'Signal [...]
+<a name="L93"></a><tt class="py-lineno"> 93</tt>  <tt class="py-line">        <tt class="py-string">'daq_mode'</tt> <tt class="py-op">:</tt> <tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
+<a name="L94"></a><tt class="py-lineno"> 94</tt>  <tt class="py-line">                      <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-28" class="py-name"><a title="VisionEgg.ParameterTypes.Instance" class="py-name" href="#" onclick="return doclink('link-28', 'Instance', 'link-20');">Instance</a></tt><tt class="py-op">(</tt><tt id="link-29" class="py-name"><a title="VisionEgg.Daq.DaqMode" class="py-name" href="#" onclick="return doclink('link-29', 'DaqMode', 'l [...]
+<a name="L95"></a><tt class="py-lineno"> 95</tt>  <tt class="py-line">        <tt class="py-string">'functionality'</tt> <tt class="py-op">:</tt> <tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
+<a name="L96"></a><tt class="py-lineno"> 96</tt>  <tt class="py-line">                           <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-30" class="py-name"><a title="VisionEgg.ParameterTypes.Instance" class="py-name" href="#" onclick="return doclink('link-30', 'Instance', 'link-20');">Instance</a></tt><tt class="py-op">(</tt><tt id="link-31" class="py-name"><a title="VisionEgg.Daq.Functionality" class="py-name" href="#" onclick="return doclink('link-31', 'F [...]
+<a name="L97"></a><tt class="py-lineno"> 97</tt>  <tt class="py-line">        <tt class="py-op">}</tt> </tt>
+<a name="Channel.__init__"></a><div id="Channel.__init__-def"><a name="L98"></a><tt class="py-lineno"> 98</tt> <a class="py-toggle" href="#" id="Channel.__init__-toggle" onclick="return toggle('Channel.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.Daq.Channel-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt><tt class="py-op">**</tt><tt class="py-param">kw</tt>< [...]
+</div><div id="Channel.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Channel.__init__-expanded"><a name="L99"></a><tt class="py-lineno"> 99</tt>  <tt class="py-line">        <tt id="link-32" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-32', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-33" class="py-name" targets="Class VisionEgg.ClassWithParameters=VisionEgg.ClassWithP [...]
+VisionEgg.Configuration.Config.__init__
+VisionEgg.Core.FixationSpot.__init__
+VisionEgg.Core.FrameTimer.__init__
+VisionEgg.Core.ModelView.__init__
+VisionEgg.Core.OrthographicProjection.__init__
+VisionEgg.Core.OrthographicProjectionNoZClip.__init__
+VisionEgg.Core.PerspectiveProjection.__init__
+VisionEgg.Core.Projection.__init__
+VisionEgg.Core.ProjectionBaseClass.__init__
+VisionEgg.Core.Screen.__init__
+VisionEgg.Core.SimplePerspectiveProjection.__init__
+VisionEgg.Core.Stimulus.__init__
+VisionEgg.Core.Viewport.__init__
+VisionEgg.Daq.Channel.__init__
+VisionEgg.Daq.DaqMode.__init__
+VisionEgg.Daq.Device.__init__
+VisionEgg.Daq.Functionality.__init__
+VisionEgg.Daq.SignalType.__init__
+VisionEgg.DaqKeyboard.KeyboardTriggerInController.__init__
+VisionEgg.DaqLPT.LPTChannel.__init__
+VisionEgg.DaqLPT.LPTDevice.__init__
+VisionEgg.DaqLPT.LPTTriggerInController.__init__
+VisionEgg.DaqLPT.LPTTriggerOutController.__init__
+VisionEgg.Deprecated.Message.__init__
+VisionEgg.Dots.DotArea2D.__init__
+VisionEgg.FlowControl.ConstantController.__init__
+VisionEgg.FlowControl.Controller.__init__
+VisionEgg.FlowControl.EncapsulatedController.__init__
+VisionEgg.FlowControl.EvalStringController.__init__
+VisionEgg.FlowControl.ExecStringController.__init__
+VisionEgg.FlowControl.FunctionController.__init__
+VisionEgg.FlowControl.Presentation.__init__
+VisionEgg.GLTrace.Wrapper.__init__
+VisionEgg.GUI.AppWindow.__init__
+VisionEgg.GUI.GetKeypressDialog.__init__
+VisionEgg.GUI.GraphicsConfigurationWindow.__init__
+VisionEgg.GUI.InfoFrame.__init__
+VisionEgg.GUI.ProgressBar.__init__
+VisionEgg.GUI.ToplevelDialog.__init__
+VisionEgg.Gratings.SinGrating2D.__init__
+VisionEgg.Gratings.SinGrating3D.__init__
+VisionEgg.MoreStimuli.Arrow.__init__
+VisionEgg.MoreStimuli.FilledCircle.__init__
+VisionEgg.MoreStimuli.Rectangle3D.__init__
+VisionEgg.MoreStimuli.Target2D.__init__
+VisionEgg.ParameterTypes.AnyOf.__init__
+VisionEgg.ParameterTypes.Instance.__init__
+VisionEgg.ParameterTypes.Sequence.__init__
+VisionEgg.ParameterTypes.SubClass.__init__
+VisionEgg.PyroApps.AST_ext.AST_Visitor.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalMetaParameters.__init__
+VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.__init__
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.__init__
+VisionEgg.PyroApps.DropinGUI.DropinMetaParameters.__init__
+VisionEgg.PyroApps.DropinServer.DropinMetaController.__init__
+VisionEgg.PyroApps.EPhysGUI.AppWindow.__init__
+VisionEgg.PyroApps.EPhysGUI.BarButton.__init__
+VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase.__init__
+VisionEgg.PyroApps.EPhysGUI.GammaFrame.__init__
+VisionEgg.PyroApps.EPhysGUI.ImageSequenceLauncher.__init__
+VisionEgg.PyroApps.EPhysGUI.Loop.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopContainedObject.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopParamDialog.__init__
+VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.__init__
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.__init__
+VisionEgg.PyroApps.EPhysServer.EPhysServer.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingMetaParameters.__init__
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.GridGUI.GridControlFrame.__init__
+VisionEgg.PyroApps.GridGUI.GridMetaParameters.__init__
+VisionEgg.PyroApps.GridServer.GridMetaController.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetMetaParameters.__init__
+VisionEgg.PyroApps.MouseTargetServer.MousePositionController.__init__
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetOrientationController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetPositionController.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.CallbackEntry.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionParameters.__init__
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingMetaParameters.__init__
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumMetaParameters.__init__
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.__init__
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.__init__
+VisionEgg.PyroApps.TargetGUI.TargetMetaParameters.__init__
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.__init__
+VisionEgg.PyroClient.PyroClient.__init__
+VisionEgg.PyroHelpers.PyroConstantController.__init__
+VisionEgg.PyroHelpers.PyroEncapsulatedController.__init__
+VisionEgg.PyroHelpers.PyroEvalStringController.__init__
+VisionEgg.PyroHelpers.PyroExecStringController.__init__
+VisionEgg.PyroHelpers.PyroListenController.__init__
+VisionEgg.PyroHelpers.PyroLocalDictController.__init__
+VisionEgg.PyroHelpers.PyroServer.__init__
+VisionEgg.QuickTime.MovieTexture.__init__
+VisionEgg.ResponseControl.KeyboardResponseController.__init__
+VisionEgg.ResponseControl.ResponseController.__init__
+VisionEgg.SphereMap.AzElGrid.__init__
+VisionEgg.SphereMap.SphereGrating.__init__
+VisionEgg.SphereMap.SphereMap.__init__
+VisionEgg.SphereMap.SphereWindow.__init__
+VisionEgg.TCPController.SocketListenController.__init__
+VisionEgg.TCPController.TCPController.__init__
+VisionEgg.TCPController.TCPServer.__init__
+VisionEgg.Text.BitmapText.__init__
+VisionEgg.Text.GlutTextBase.__init__
+VisionEgg.Text.StrokeText.__init__
+VisionEgg.Text.Text.__init__
+VisionEgg.Textures.FixationCross.__init__
+VisionEgg.Textures.Mask2D.__init__
+VisionEgg.Textures.SpinningDrum.__init__
+VisionEgg.Textures.Texture.__init__
+VisionEgg.Textures.TextureFromFile.__init__
+VisionEgg.Textures.TextureObject.__init__
+VisionEgg.Textures.TextureStimulusBaseClass.__init__
+VisionEgg.ThreeDeeMath.TransformMatrix.__init__
+VisionEgg.WrappedText.WrappedText.__init__
+VisionEgg.qtmovie.Movie.__init__
+VisionEgg.qtmovie.Rect.__init__" class="py-name" href="#" onclick="return doclink('link-34', '__init__', 'link-10');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt><tt class="py-op">**</tt><tt class="py-name">kw</tt><tt class="py-op">)</tt> </tt>
+<a name="L100"></a><tt class="py-lineno">100</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">constant_parameters</tt><tt class="py-op">.</tt><tt class="py-name">signal_type</tt><tt class="py-op">.</tt><tt class="py-name">channel</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt> </tt>
+<a name="L101"></a><tt class="py-lineno">101</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">constant_parameters</tt><tt class="py-op">.</tt><tt class="py-name">daq_mode</tt><tt class="py-op">.</tt><tt class="py-name">channel</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt> </tt>
+<a name="L102"></a><tt class="py-lineno">102</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">constant_parameters</tt><tt class="py-op">.</tt><tt class="py-name">functionality</tt><tt class="py-op">.</tt><tt class="py-name">channel</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt> </tt>
+<a name="L103"></a><tt class="py-lineno">103</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">device</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> <tt class="py-comment"># Not set yet</tt> </tt>
+</div><a name="L104"></a><tt class="py-lineno">104</tt>  <tt class="py-line"> </tt>
+<a name="Channel.arm_trigger"></a><div id="Channel.arm_trigger-def"><a name="L105"></a><tt class="py-lineno">105</tt> <a class="py-toggle" href="#" id="Channel.arm_trigger-toggle" onclick="return toggle('Channel.arm_trigger');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.Daq.Channel-class.html#arm_trigger">arm_trigger</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Channel.arm_trigger-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Channel.arm_trigger-expanded"><a name="L106"></a><tt class="py-lineno">106</tt>  <tt class="py-line">        <tt class="py-keyword">raise</tt> <tt class="py-name">NotImpelemetedError</tt><tt class="py-op">(</tt><tt class="py-string">"This method must be overridden."</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L107"></a><tt class="py-lineno">107</tt>  <tt class="py-line"> </tt>
+<a name="Device"></a><div id="Device-def"><a name="L108"></a><tt class="py-lineno">108</tt> <a class="py-toggle" href="#" id="Device-toggle" onclick="return toggle('Device');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.Daq.Device-class.html">Device</a><tt class="py-op">:</tt> </tt>
+</div><div id="Device-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="Device-expanded"><a name="Device.__init__"></a><div id="Device.__init__-def"><a name="L109"></a><tt class="py-lineno">109</tt> <a class="py-toggle" href="#" id="Device.__init__-toggle" onclick="return toggle('Device.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.Daq.Device-class.html#__init__">__init__</a><tt class="py-op">(</tt>< [...]
+</div><div id="Device.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Device.__init__-expanded"><a name="L110"></a><tt class="py-lineno">110</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">channels</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L111"></a><tt class="py-lineno">111</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">channels</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L112"></a><tt class="py-lineno">112</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">channels</tt><tt class="py-op">)</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">types</tt><tt class="py-op">.</tt><tt class="py-name">ListType</tt><tt class="py-op">:</tt> </tt>
+<a name="L113"></a><tt class="py-lineno">113</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">"channels must be a list of channels"</tt><tt class="py-op">)</tt> </tt>
+<a name="L114"></a><tt class="py-lineno">114</tt>  <tt class="py-line">            <tt class="py-keyword">for</tt> <tt class="py-name">channel</tt> <tt class="py-keyword">in</tt> <tt class="py-name">channels</tt><tt class="py-op">:</tt> </tt>
+<a name="L115"></a><tt class="py-lineno">115</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-35" class="py-name" targets="Method VisionEgg.Daq.Device.add_channel()=VisionEgg.Daq.Device-class.html#add_channel,Method VisionEgg.DaqLPT.LPTDevice.add_channel()=VisionEgg.DaqLPT.LPTDevice-class.html#add_channel"><a title="VisionEgg.Daq.Device.add_channel
+VisionEgg.DaqLPT.LPTDevice.add_channel" class="py-name" href="#" onclick="return doclink('link-35', 'add_channel', 'link-35');">add_channel</a></tt><tt class="py-op">(</tt> <tt class="py-name">channel</tt> <tt class="py-op">)</tt> </tt>
+</div><a name="L116"></a><tt class="py-lineno">116</tt>  <tt class="py-line"> </tt>
+<a name="Device.add_channel"></a><div id="Device.add_channel-def"><a name="L117"></a><tt class="py-lineno">117</tt> <a class="py-toggle" href="#" id="Device.add_channel-toggle" onclick="return toggle('Device.add_channel');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.Daq.Device-class.html#add_channel">add_channel</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt><tt class="py-param">channel</tt><tt cla [...]
+</div><div id="Device.add_channel-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Device.add_channel-expanded"><a name="L118"></a><tt class="py-lineno">118</tt>  <tt class="py-line">        <tt class="py-comment"># override this method if you need to do error checking</tt> </tt>
+<a name="L119"></a><tt class="py-lineno">119</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">channel</tt><tt class="py-op">,</tt><tt id="link-36" class="py-name" targets="Class VisionEgg.Daq.Channel=VisionEgg.Daq.Channel-class.html"><a title="VisionEgg.Daq.Channel" class="py-name" href="#" onclick="return doclink('link-36', 'Channel', 'link-36');">Channel</a></tt><t [...]
+<a name="L120"></a><tt class="py-lineno">120</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">channels</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">channel</tt><tt class="py-op">)</tt> </tt>
+<a name="L121"></a><tt class="py-lineno">121</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L122"></a><tt class="py-lineno">122</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">"%s not instance of VisionEgg.Daq.Channel"</tt><tt class="py-op">%</tt><tt class="py-name">channel</tt><tt class="py-op">)</tt> </tt>
+<a name="L123"></a><tt class="py-lineno">123</tt>  <tt class="py-line">        <tt class="py-name">channel</tt><tt class="py-op">.</tt><tt class="py-name">device</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt> </tt>
+</div></div><a name="L124"></a><tt class="py-lineno">124</tt>  <tt class="py-line"> </tt><script type="text/javascript">
+<!--
+expandto(location.href);
+// -->
+</script>
+</pre>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:48 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.Daq.Analog-class.html b/doc/reference/html/VisionEgg.Daq.Analog-class.html
new file mode 100644
index 0000000..76daf9e
--- /dev/null
+++ b/doc/reference/html/VisionEgg.Daq.Analog-class.html
@@ -0,0 +1,229 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.Daq.Analog</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.Daq-module.html">Module Daq</a> ::
+        Class Analog
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.Daq.Analog-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class Analog</h1><span class="codelink"><a href="VisionEgg.Daq-pysrc.html#Analog">source code</a></span><br /><br />
+<pre class="base-tree">
+         object --+            
+                  |            
+<a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a> --+        
+                      |        
+      <a href="VisionEgg.Daq.ChannelParameters-class.html">ChannelParameters</a> --+    
+                          |    
+                 <a href="VisionEgg.Daq.SignalType-class.html">SignalType</a> --+
+                              |
+                             <strong class="uidshort">Analog</strong>
+</pre>
+
+<hr />
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.Daq.SignalType-class.html">SignalType</a></code></b>:
+      <code><a href="VisionEgg.Daq.SignalType-class.html#__init__">__init__</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a></code></b>:
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__getstate__">__getstate__</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__setstate__">__setstate__</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#get_specified_type">get_specified_type</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#is_constant_parameter">is_constant_parameter</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#set">set</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#verify_parameters">verify_parameters</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__delattr__</code>,
+      <code>__getattribute__</code>,
+      <code>__hash__</code>,
+      <code>__new__</code>,
+      <code>__reduce__</code>,
+      <code>__reduce_ex__</code>,
+      <code>__repr__</code>,
+      <code>__setattr__</code>,
+      <code>__str__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Class Variables</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.Daq.Analog-class.html#constant_parameters_and_defaults" class="summary-name">constant_parameters_and_defaults</a> = <code title="{'gain':(1.0, ve_types.Real), 'offset':(0.0, ve_types.Real)}">{'gain':(1.0, ve_types.Real<code class="variable-ellipsis">...</code></code>
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a></code></b>:
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__safe_for_unpickling__">__safe_for_unpickling__</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#parameters_and_defaults">parameters_and_defaults</a></code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Properties</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__class__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLE DETAILS ==================== -->
+<a name="section-ClassVariableDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Class Variable Details</span></td>
+</tr>
+</table>
+<a name="constant_parameters_and_defaults"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">constant_parameters_and_defaults</h3>
+  
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+{'gain':(1.0, ve_types.Real), 'offset':(0.0, ve_types.Real)}
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.Daq.Buffered-class.html b/doc/reference/html/VisionEgg.Daq.Buffered-class.html
new file mode 100644
index 0000000..e713a4a
--- /dev/null
+++ b/doc/reference/html/VisionEgg.Daq.Buffered-class.html
@@ -0,0 +1,231 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.Daq.Buffered</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.Daq-module.html">Module Daq</a> ::
+        Class Buffered
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.Daq.Buffered-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class Buffered</h1><span class="codelink"><a href="VisionEgg.Daq-pysrc.html#Buffered">source code</a></span><br /><br />
+<pre class="base-tree">
+         object --+            
+                  |            
+<a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a> --+        
+                      |        
+      <a href="VisionEgg.Daq.ChannelParameters-class.html">ChannelParameters</a> --+    
+                          |    
+                    <a href="VisionEgg.Daq.DaqMode-class.html">DaqMode</a> --+
+                              |
+                             <strong class="uidshort">Buffered</strong>
+</pre>
+
+<hr />
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.Daq.DaqMode-class.html">DaqMode</a></code></b>:
+      <code><a href="VisionEgg.Daq.DaqMode-class.html#__init__">__init__</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a></code></b>:
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__getstate__">__getstate__</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__setstate__">__setstate__</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#get_specified_type">get_specified_type</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#is_constant_parameter">is_constant_parameter</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#set">set</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#verify_parameters">verify_parameters</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__delattr__</code>,
+      <code>__getattribute__</code>,
+      <code>__hash__</code>,
+      <code>__new__</code>,
+      <code>__reduce__</code>,
+      <code>__reduce_ex__</code>,
+      <code>__repr__</code>,
+      <code>__setattr__</code>,
+      <code>__str__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Class Variables</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.Daq.Buffered-class.html#parameters_and_defaults" class="summary-name">parameters_and_defaults</a> = <code title="{'sample_rate_hz':(5000.0, ve_types.Real), 'duration_sec':(5.0, ve_typ\
+es.Real), 'trigger':(None, ve_types.Instance(Trigger)),}">{'sample_rate_hz':(5000.0, ve_types.<code class="variable-ellipsis">...</code></code>
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a></code></b>:
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__safe_for_unpickling__">__safe_for_unpickling__</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#constant_parameters_and_defaults">constant_parameters_and_defaults</a></code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Properties</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__class__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLE DETAILS ==================== -->
+<a name="section-ClassVariableDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Class Variable Details</span></td>
+</tr>
+</table>
+<a name="parameters_and_defaults"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">parameters_and_defaults</h3>
+  
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+{'sample_rate_hz':(5000.0, ve_types.Real), 'duration_sec':(5.0, ve_typ<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+es.Real), 'trigger':(None, ve_types.Instance(Trigger)),}
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.Daq.Channel-class.html b/doc/reference/html/VisionEgg.Daq.Channel-class.html
new file mode 100644
index 0000000..0935e0a
--- /dev/null
+++ b/doc/reference/html/VisionEgg.Daq.Channel-class.html
@@ -0,0 +1,298 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.Daq.Channel</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.Daq-module.html">Module Daq</a> ::
+        Class Channel
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.Daq.Channel-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class Channel</h1><span class="codelink"><a href="VisionEgg.Daq-pysrc.html#Channel">source code</a></span><br /><br />
+<pre class="base-tree">
+         object --+    
+                  |    
+<a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a> --+
+                      |
+                     <strong class="uidshort">Channel</strong>
+</pre>
+
+<hr />
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.Daq.Channel-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">**kw</span>)</span><br />
+      Create self.parameters and set values.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.Daq-pysrc.html#Channel.__init__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="arm_trigger"></a><span class="summary-sig-name">arm_trigger</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.Daq-pysrc.html#Channel.arm_trigger">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a></code></b>:
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__getstate__">__getstate__</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__setstate__">__setstate__</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#get_specified_type">get_specified_type</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#is_constant_parameter">is_constant_parameter</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#set">set</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#verify_parameters">verify_parameters</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__delattr__</code>,
+      <code>__getattribute__</code>,
+      <code>__hash__</code>,
+      <code>__new__</code>,
+      <code>__reduce__</code>,
+      <code>__reduce_ex__</code>,
+      <code>__repr__</code>,
+      <code>__setattr__</code>,
+      <code>__str__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Class Variables</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.Daq.Channel-class.html#constant_parameters_and_defaults" class="summary-name">constant_parameters_and_defaults</a> = <code title="{'signal_type':(None, ve_types.Instance(SignalType)), 'daq_mode':(None\
+, ve_types.Instance(DaqMode)), 'functionality':(None, ve_types.Instanc\
+e(Functionality)),}">{'signal_type':(None, ve_ty<code class="variable-ellipsis">...</code></code>
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a></code></b>:
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__safe_for_unpickling__">__safe_for_unpickling__</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#parameters_and_defaults">parameters_and_defaults</a></code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Properties</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__class__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Method Details</span></td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">**kw</span>)</span>
+    <br /><em class="fname">(Constructor)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.Daq-pysrc.html#Channel.__init__">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Create self.parameters and set values.
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.ClassWithParameters-class.html#__init__">ClassWithParameters.__init__</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== CLASS VARIABLE DETAILS ==================== -->
+<a name="section-ClassVariableDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Class Variable Details</span></td>
+</tr>
+</table>
+<a name="constant_parameters_and_defaults"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">constant_parameters_and_defaults</h3>
+  
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+{'signal_type':(None, ve_types.Instance(SignalType)), 'daq_mode':(None<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+, ve_types.Instance(DaqMode)), 'functionality':(None, ve_types.Instanc<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+e(Functionality)),}
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.Daq.ChannelParameters-class.html b/doc/reference/html/VisionEgg.Daq.ChannelParameters-class.html
new file mode 100644
index 0000000..1b37ec2
--- /dev/null
+++ b/doc/reference/html/VisionEgg.Daq.ChannelParameters-class.html
@@ -0,0 +1,189 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.Daq.ChannelParameters</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.Daq-module.html">Module Daq</a> ::
+        Class ChannelParameters
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.Daq.ChannelParameters-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class ChannelParameters</h1><span class="codelink"><a href="VisionEgg.Daq-pysrc.html#ChannelParameters">source code</a></span><br /><br />
+<pre class="base-tree">
+         object --+    
+                  |    
+<a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a> --+
+                      |
+                     <strong class="uidshort">ChannelParameters</strong>
+</pre>
+
+<hr />
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a></code></b>:
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__getstate__">__getstate__</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__init__">__init__</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__setstate__">__setstate__</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#get_specified_type">get_specified_type</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#is_constant_parameter">is_constant_parameter</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#set">set</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#verify_parameters">verify_parameters</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__delattr__</code>,
+      <code>__getattribute__</code>,
+      <code>__hash__</code>,
+      <code>__new__</code>,
+      <code>__reduce__</code>,
+      <code>__reduce_ex__</code>,
+      <code>__repr__</code>,
+      <code>__setattr__</code>,
+      <code>__str__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Class Variables</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a></code></b>:
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__safe_for_unpickling__">__safe_for_unpickling__</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#constant_parameters_and_defaults">constant_parameters_and_defaults</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#parameters_and_defaults">parameters_and_defaults</a></code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Properties</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__class__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.Daq.DaqMode-class.html b/doc/reference/html/VisionEgg.Daq.DaqMode-class.html
new file mode 100644
index 0000000..c719f47
--- /dev/null
+++ b/doc/reference/html/VisionEgg.Daq.DaqMode-class.html
@@ -0,0 +1,246 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.Daq.DaqMode</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.Daq-module.html">Module Daq</a> ::
+        Class DaqMode
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.Daq.DaqMode-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class DaqMode</h1><span class="codelink"><a href="VisionEgg.Daq-pysrc.html#DaqMode">source code</a></span><br /><br />
+<pre class="base-tree">
+         object --+        
+                  |        
+<a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a> --+    
+                      |    
+      <a href="VisionEgg.Daq.ChannelParameters-class.html">ChannelParameters</a> --+
+                          |
+                         <strong class="uidshort">DaqMode</strong>
+</pre>
+
+<hr />
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.Daq.DaqMode-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">**kw</span>)</span><br />
+      Create self.parameters and set values.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.Daq-pysrc.html#DaqMode.__init__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a></code></b>:
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__getstate__">__getstate__</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__setstate__">__setstate__</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#get_specified_type">get_specified_type</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#is_constant_parameter">is_constant_parameter</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#set">set</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#verify_parameters">verify_parameters</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__delattr__</code>,
+      <code>__getattribute__</code>,
+      <code>__hash__</code>,
+      <code>__new__</code>,
+      <code>__reduce__</code>,
+      <code>__reduce_ex__</code>,
+      <code>__repr__</code>,
+      <code>__setattr__</code>,
+      <code>__str__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Class Variables</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a></code></b>:
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__safe_for_unpickling__">__safe_for_unpickling__</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#constant_parameters_and_defaults">constant_parameters_and_defaults</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#parameters_and_defaults">parameters_and_defaults</a></code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Properties</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__class__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Method Details</span></td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">**kw</span>)</span>
+    <br /><em class="fname">(Constructor)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.Daq-pysrc.html#DaqMode.__init__">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Create self.parameters and set values.
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.ClassWithParameters-class.html#__init__">ClassWithParameters.__init__</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.Daq.Device-class.html b/doc/reference/html/VisionEgg.Daq.Device-class.html
new file mode 100644
index 0000000..792f4ed
--- /dev/null
+++ b/doc/reference/html/VisionEgg.Daq.Device-class.html
@@ -0,0 +1,156 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.Daq.Device</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.Daq-module.html">Module Daq</a> ::
+        Class Device
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.Daq.Device-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class Device</h1><span class="codelink"><a href="VisionEgg.Daq-pysrc.html#Device">source code</a></span><br /><br />
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__init__"></a><span class="summary-sig-name">__init__</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">channels</span>=<span class="summary-sig-default">None</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.Daq-pysrc.html#Device.__init__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="add_channel"></a><span class="summary-sig-name">add_channel</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">channel</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.Daq-pysrc.html#Device.add_channel">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.Daq.Digital-class.html b/doc/reference/html/VisionEgg.Daq.Digital-class.html
new file mode 100644
index 0000000..3b935a4
--- /dev/null
+++ b/doc/reference/html/VisionEgg.Daq.Digital-class.html
@@ -0,0 +1,197 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.Daq.Digital</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.Daq-module.html">Module Daq</a> ::
+        Class Digital
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.Daq.Digital-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class Digital</h1><span class="codelink"><a href="VisionEgg.Daq-pysrc.html#Digital">source code</a></span><br /><br />
+<pre class="base-tree">
+         object --+            
+                  |            
+<a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a> --+        
+                      |        
+      <a href="VisionEgg.Daq.ChannelParameters-class.html">ChannelParameters</a> --+    
+                          |    
+                 <a href="VisionEgg.Daq.SignalType-class.html">SignalType</a> --+
+                              |
+                             <strong class="uidshort">Digital</strong>
+</pre>
+
+<hr />
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.Daq.SignalType-class.html">SignalType</a></code></b>:
+      <code><a href="VisionEgg.Daq.SignalType-class.html#__init__">__init__</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a></code></b>:
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__getstate__">__getstate__</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__setstate__">__setstate__</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#get_specified_type">get_specified_type</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#is_constant_parameter">is_constant_parameter</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#set">set</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#verify_parameters">verify_parameters</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__delattr__</code>,
+      <code>__getattribute__</code>,
+      <code>__hash__</code>,
+      <code>__new__</code>,
+      <code>__reduce__</code>,
+      <code>__reduce_ex__</code>,
+      <code>__repr__</code>,
+      <code>__setattr__</code>,
+      <code>__str__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Class Variables</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.Daq.SignalType-class.html">SignalType</a></code></b>:
+      <code><a href="VisionEgg.Daq.SignalType-class.html#constant_parameters_and_defaults">constant_parameters_and_defaults</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a></code></b>:
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__safe_for_unpickling__">__safe_for_unpickling__</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#parameters_and_defaults">parameters_and_defaults</a></code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Properties</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__class__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.Daq.Functionality-class.html b/doc/reference/html/VisionEgg.Daq.Functionality-class.html
new file mode 100644
index 0000000..b29e230
--- /dev/null
+++ b/doc/reference/html/VisionEgg.Daq.Functionality-class.html
@@ -0,0 +1,246 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.Daq.Functionality</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.Daq-module.html">Module Daq</a> ::
+        Class Functionality
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.Daq.Functionality-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class Functionality</h1><span class="codelink"><a href="VisionEgg.Daq-pysrc.html#Functionality">source code</a></span><br /><br />
+<pre class="base-tree">
+         object --+        
+                  |        
+<a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a> --+    
+                      |    
+      <a href="VisionEgg.Daq.ChannelParameters-class.html">ChannelParameters</a> --+
+                          |
+                         <strong class="uidshort">Functionality</strong>
+</pre>
+
+<hr />
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.Daq.Functionality-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">**kw</span>)</span><br />
+      Create self.parameters and set values.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.Daq-pysrc.html#Functionality.__init__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a></code></b>:
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__getstate__">__getstate__</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__setstate__">__setstate__</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#get_specified_type">get_specified_type</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#is_constant_parameter">is_constant_parameter</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#set">set</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#verify_parameters">verify_parameters</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__delattr__</code>,
+      <code>__getattribute__</code>,
+      <code>__hash__</code>,
+      <code>__new__</code>,
+      <code>__reduce__</code>,
+      <code>__reduce_ex__</code>,
+      <code>__repr__</code>,
+      <code>__setattr__</code>,
+      <code>__str__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Class Variables</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a></code></b>:
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__safe_for_unpickling__">__safe_for_unpickling__</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#constant_parameters_and_defaults">constant_parameters_and_defaults</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#parameters_and_defaults">parameters_and_defaults</a></code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Properties</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__class__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Method Details</span></td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">**kw</span>)</span>
+    <br /><em class="fname">(Constructor)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.Daq-pysrc.html#Functionality.__init__">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Create self.parameters and set values.
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.ClassWithParameters-class.html#__init__">ClassWithParameters.__init__</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.Daq.Immediate-class.html b/doc/reference/html/VisionEgg.Daq.Immediate-class.html
new file mode 100644
index 0000000..614d426
--- /dev/null
+++ b/doc/reference/html/VisionEgg.Daq.Immediate-class.html
@@ -0,0 +1,195 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.Daq.Immediate</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.Daq-module.html">Module Daq</a> ::
+        Class Immediate
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.Daq.Immediate-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class Immediate</h1><span class="codelink"><a href="VisionEgg.Daq-pysrc.html#Immediate">source code</a></span><br /><br />
+<pre class="base-tree">
+         object --+            
+                  |            
+<a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a> --+        
+                      |        
+      <a href="VisionEgg.Daq.ChannelParameters-class.html">ChannelParameters</a> --+    
+                          |    
+                    <a href="VisionEgg.Daq.DaqMode-class.html">DaqMode</a> --+
+                              |
+                             <strong class="uidshort">Immediate</strong>
+</pre>
+
+<hr />
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.Daq.DaqMode-class.html">DaqMode</a></code></b>:
+      <code><a href="VisionEgg.Daq.DaqMode-class.html#__init__">__init__</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a></code></b>:
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__getstate__">__getstate__</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__setstate__">__setstate__</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#get_specified_type">get_specified_type</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#is_constant_parameter">is_constant_parameter</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#set">set</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#verify_parameters">verify_parameters</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__delattr__</code>,
+      <code>__getattribute__</code>,
+      <code>__hash__</code>,
+      <code>__new__</code>,
+      <code>__reduce__</code>,
+      <code>__reduce_ex__</code>,
+      <code>__repr__</code>,
+      <code>__setattr__</code>,
+      <code>__str__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Class Variables</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a></code></b>:
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__safe_for_unpickling__">__safe_for_unpickling__</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#constant_parameters_and_defaults">constant_parameters_and_defaults</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#parameters_and_defaults">parameters_and_defaults</a></code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Properties</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__class__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.Daq.Input-class.html b/doc/reference/html/VisionEgg.Daq.Input-class.html
new file mode 100644
index 0000000..a80e06e
--- /dev/null
+++ b/doc/reference/html/VisionEgg.Daq.Input-class.html
@@ -0,0 +1,211 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.Daq.Input</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.Daq-module.html">Module Daq</a> ::
+        Class Input
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.Daq.Input-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class Input</h1><span class="codelink"><a href="VisionEgg.Daq-pysrc.html#Input">source code</a></span><br /><br />
+<pre class="base-tree">
+         object --+            
+                  |            
+<a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a> --+        
+                      |        
+      <a href="VisionEgg.Daq.ChannelParameters-class.html">ChannelParameters</a> --+    
+                          |    
+              <a href="VisionEgg.Daq.Functionality-class.html">Functionality</a> --+
+                              |
+                             <strong class="uidshort">Input</strong>
+</pre>
+
+<hr />
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="get_data"></a><span class="summary-sig-name">get_data</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.Daq-pysrc.html#Input.get_data">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.Daq.Functionality-class.html">Functionality</a></code></b>:
+      <code><a href="VisionEgg.Daq.Functionality-class.html#__init__">__init__</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a></code></b>:
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__getstate__">__getstate__</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__setstate__">__setstate__</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#get_specified_type">get_specified_type</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#is_constant_parameter">is_constant_parameter</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#set">set</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#verify_parameters">verify_parameters</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__delattr__</code>,
+      <code>__getattribute__</code>,
+      <code>__hash__</code>,
+      <code>__new__</code>,
+      <code>__reduce__</code>,
+      <code>__reduce_ex__</code>,
+      <code>__repr__</code>,
+      <code>__setattr__</code>,
+      <code>__str__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Class Variables</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a></code></b>:
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__safe_for_unpickling__">__safe_for_unpickling__</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#constant_parameters_and_defaults">constant_parameters_and_defaults</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#parameters_and_defaults">parameters_and_defaults</a></code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Properties</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__class__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.Daq.Output-class.html b/doc/reference/html/VisionEgg.Daq.Output-class.html
new file mode 100644
index 0000000..3e2e1d8
--- /dev/null
+++ b/doc/reference/html/VisionEgg.Daq.Output-class.html
@@ -0,0 +1,212 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.Daq.Output</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.Daq-module.html">Module Daq</a> ::
+        Class Output
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.Daq.Output-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class Output</h1><span class="codelink"><a href="VisionEgg.Daq-pysrc.html#Output">source code</a></span><br /><br />
+<pre class="base-tree">
+         object --+            
+                  |            
+<a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a> --+        
+                      |        
+      <a href="VisionEgg.Daq.ChannelParameters-class.html">ChannelParameters</a> --+    
+                          |    
+              <a href="VisionEgg.Daq.Functionality-class.html">Functionality</a> --+
+                              |
+                             <strong class="uidshort">Output</strong>
+</pre>
+
+<hr />
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="put_data"></a><span class="summary-sig-name">put_data</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">data</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.Daq-pysrc.html#Output.put_data">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.Daq.Functionality-class.html">Functionality</a></code></b>:
+      <code><a href="VisionEgg.Daq.Functionality-class.html#__init__">__init__</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a></code></b>:
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__getstate__">__getstate__</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__setstate__">__setstate__</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#get_specified_type">get_specified_type</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#is_constant_parameter">is_constant_parameter</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#set">set</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#verify_parameters">verify_parameters</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__delattr__</code>,
+      <code>__getattribute__</code>,
+      <code>__hash__</code>,
+      <code>__new__</code>,
+      <code>__reduce__</code>,
+      <code>__reduce_ex__</code>,
+      <code>__repr__</code>,
+      <code>__setattr__</code>,
+      <code>__str__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Class Variables</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a></code></b>:
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__safe_for_unpickling__">__safe_for_unpickling__</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#constant_parameters_and_defaults">constant_parameters_and_defaults</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#parameters_and_defaults">parameters_and_defaults</a></code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Properties</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__class__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.Daq.SignalType-class.html b/doc/reference/html/VisionEgg.Daq.SignalType-class.html
new file mode 100644
index 0000000..6ecad55
--- /dev/null
+++ b/doc/reference/html/VisionEgg.Daq.SignalType-class.html
@@ -0,0 +1,280 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.Daq.SignalType</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.Daq-module.html">Module Daq</a> ::
+        Class SignalType
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.Daq.SignalType-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class SignalType</h1><span class="codelink"><a href="VisionEgg.Daq-pysrc.html#SignalType">source code</a></span><br /><br />
+<pre class="base-tree">
+         object --+        
+                  |        
+<a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a> --+    
+                      |    
+      <a href="VisionEgg.Daq.ChannelParameters-class.html">ChannelParameters</a> --+
+                          |
+                         <strong class="uidshort">SignalType</strong>
+</pre>
+
+<hr />
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.Daq.SignalType-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">**kw</span>)</span><br />
+      Create self.parameters and set values.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.Daq-pysrc.html#SignalType.__init__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a></code></b>:
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__getstate__">__getstate__</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__setstate__">__setstate__</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#get_specified_type">get_specified_type</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#is_constant_parameter">is_constant_parameter</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#set">set</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#verify_parameters">verify_parameters</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__delattr__</code>,
+      <code>__getattribute__</code>,
+      <code>__hash__</code>,
+      <code>__new__</code>,
+      <code>__reduce__</code>,
+      <code>__reduce_ex__</code>,
+      <code>__repr__</code>,
+      <code>__setattr__</code>,
+      <code>__str__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Class Variables</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.Daq.SignalType-class.html#constant_parameters_and_defaults" class="summary-name">constant_parameters_and_defaults</a> = <code title="{'units':('Unknown units', ve_types.String),}">{'units':('Unknown units', <code class="variable-ellipsis">...</code></code>
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a></code></b>:
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__safe_for_unpickling__">__safe_for_unpickling__</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#parameters_and_defaults">parameters_and_defaults</a></code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Properties</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__class__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Method Details</span></td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">**kw</span>)</span>
+    <br /><em class="fname">(Constructor)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.Daq-pysrc.html#SignalType.__init__">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Create self.parameters and set values.
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.ClassWithParameters-class.html#__init__">ClassWithParameters.__init__</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== CLASS VARIABLE DETAILS ==================== -->
+<a name="section-ClassVariableDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Class Variable Details</span></td>
+</tr>
+</table>
+<a name="constant_parameters_and_defaults"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">constant_parameters_and_defaults</h3>
+  
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+{'units':('Unknown units', ve_types.String),}
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.Daq.Trigger-class.html b/doc/reference/html/VisionEgg.Daq.Trigger-class.html
new file mode 100644
index 0000000..f9fd8a3
--- /dev/null
+++ b/doc/reference/html/VisionEgg.Daq.Trigger-class.html
@@ -0,0 +1,189 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.Daq.Trigger</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.Daq-module.html">Module Daq</a> ::
+        Class Trigger
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.Daq.Trigger-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class Trigger</h1><span class="codelink"><a href="VisionEgg.Daq-pysrc.html#Trigger">source code</a></span><br /><br />
+<pre class="base-tree">
+         object --+    
+                  |    
+<a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a> --+
+                      |
+                     <strong class="uidshort">Trigger</strong>
+</pre>
+
+<hr />
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a></code></b>:
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__getstate__">__getstate__</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__init__">__init__</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__setstate__">__setstate__</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#get_specified_type">get_specified_type</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#is_constant_parameter">is_constant_parameter</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#set">set</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#verify_parameters">verify_parameters</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__delattr__</code>,
+      <code>__getattribute__</code>,
+      <code>__hash__</code>,
+      <code>__new__</code>,
+      <code>__reduce__</code>,
+      <code>__reduce_ex__</code>,
+      <code>__repr__</code>,
+      <code>__setattr__</code>,
+      <code>__str__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Class Variables</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a></code></b>:
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__safe_for_unpickling__">__safe_for_unpickling__</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#constant_parameters_and_defaults">constant_parameters_and_defaults</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#parameters_and_defaults">parameters_and_defaults</a></code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Properties</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__class__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.DaqKeyboard-module.html b/doc/reference/html/VisionEgg.DaqKeyboard-module.html
new file mode 100644
index 0000000..82a5460
--- /dev/null
+++ b/doc/reference/html/VisionEgg.DaqKeyboard-module.html
@@ -0,0 +1,161 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.DaqKeyboard</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        Module DaqKeyboard
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.DaqKeyboard-module.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== MODULE DESCRIPTION ==================== -->
+<h1 class="epydoc">Module DaqKeyboard</h1><span class="codelink"><a href="VisionEgg.DaqKeyboard-pysrc.html">source code</a></span><br /><br />
+<pre class="literalblock">
+
+Data acquisition and triggering over the keyboard.
+
+This module was programmed using information from the web site
+http://www.pygame.org/docs/ref/pygame_key.html
+
+</pre><br /><br />
+
+<!-- ==================== CLASSES ==================== -->
+<a name="section-Classes"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Classes</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.DaqKeyboard.KeyboardInput-class.html" class="summary-name">KeyboardInput</a>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.DaqKeyboard.KeyboardTriggerInController-class.html" class="summary-name">KeyboardTriggerInController</a><br />
+      Use the keyboard to trigger the presentation.
+    </td>
+  </tr>
+</table>
+<!-- ==================== VARIABLES ==================== -->
+<a name="section-Variables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Variables</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="__version__"></a><span class="summary-name">__version__</span> = <code title="VisionEgg.release_name">VisionEgg.release_name</code>
+    </td>
+  </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.DaqKeyboard-pysrc.html b/doc/reference/html/VisionEgg.DaqKeyboard-pysrc.html
new file mode 100644
index 0000000..81002b2
--- /dev/null
+++ b/doc/reference/html/VisionEgg.DaqKeyboard-pysrc.html
@@ -0,0 +1,347 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.DaqKeyboard</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        Module DaqKeyboard
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.DaqKeyboard-pysrc.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<h1 class="epydoc">Source Code for <a href="VisionEgg.DaqKeyboard-module.html">Module VisionEgg.DaqKeyboard</a></h1>
+<pre class="py-src">
+<a name="L1"></a><tt class="py-lineno"> 1</tt>  <tt class="py-line"><tt class="py-comment"># The Vision Egg: DaqKeyboard</tt> </tt>
+<a name="L2"></a><tt class="py-lineno"> 2</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L3"></a><tt class="py-lineno"> 3</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Author(s): Hubertus Becker <hubertus.becker at uni-tuebingen.de></tt> </tt>
+<a name="L4"></a><tt class="py-lineno"> 4</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Copyright: (C) 2005 by Hertie Institute for Clinical Brain Research,</tt> </tt>
+<a name="L5"></a><tt class="py-lineno"> 5</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#            Department of Cognitive Neurology, University of Tuebingen</tt> </tt>
+<a name="L6"></a><tt class="py-lineno"> 6</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># URL:       http://www.hubertus-becker.de/resources/visionegg/</tt> </tt>
+<a name="L7"></a><tt class="py-lineno"> 7</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L8"></a><tt class="py-lineno"> 8</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># This library is free software; you can redistribute it and/or modify</tt> </tt>
+<a name="L9"></a><tt class="py-lineno"> 9</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># it under the terms of the GNU Lesser General Public License as</tt> </tt>
+<a name="L10"></a><tt class="py-lineno">10</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># published by the Free Software Foundation; either version 2.1 of</tt> </tt>
+<a name="L11"></a><tt class="py-lineno">11</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># the License, or (at your option) any later version.</tt> </tt>
+<a name="L12"></a><tt class="py-lineno">12</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L13"></a><tt class="py-lineno">13</tt>  <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L14"></a><tt class="py-lineno">14</tt>  <tt class="py-line"><tt class="py-docstring">Data acquisition and triggering over the keyboard.</tt> </tt>
+<a name="L15"></a><tt class="py-lineno">15</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L16"></a><tt class="py-lineno">16</tt>  <tt class="py-line"><tt class="py-docstring">This module was programmed using information from the web site</tt> </tt>
+<a name="L17"></a><tt class="py-lineno">17</tt>  <tt class="py-line"><tt class="py-docstring">http://www.pygame.org/docs/ref/pygame_key.html</tt> </tt>
+<a name="L18"></a><tt class="py-lineno">18</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L19"></a><tt class="py-lineno">19</tt>  <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L20"></a><tt class="py-lineno">20</tt>  <tt class="py-line"> </tt>
+<a name="L21"></a><tt class="py-lineno">21</tt>  <tt class="py-line"><tt class="py-comment">####################################################################</tt> </tt>
+<a name="L22"></a><tt class="py-lineno">22</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L23"></a><tt class="py-lineno">23</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#        Import all the necessary packages</tt> </tt>
+<a name="L24"></a><tt class="py-lineno">24</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L25"></a><tt class="py-lineno">25</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">####################################################################</tt> </tt>
+<a name="L26"></a><tt class="py-lineno">26</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L27"></a><tt class="py-lineno">27</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-0" class="py-name" targets="Package VisionEgg=VisionEgg-module.html"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-0', 'VisionEgg', 'link-0');">VisionEgg</a></tt> </tt>
+<a name="L28"></a><tt class="py-lineno">28</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-1" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-1', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-2" class="py-name" targets="Module VisionEgg.Core=VisionEgg.Core-module.html"><a title="VisionEgg.Core" class="py-name" href="#" onclick="return doclink('link-2', 'Core', 'link-2');">Core</a></tt> </tt>
+<a name="L29"></a><tt class="py-lineno">29</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-3" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-3', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-4" class="py-name" targets="Module VisionEgg.FlowControl=VisionEgg.FlowControl-module.html"><a title="VisionEgg.FlowControl" class="py-name" href="#" onclick="return doclink('link-4', 'FlowControl [...]
+<a name="L30"></a><tt class="py-lineno">30</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-5" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-5', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-6" class="py-name" targets="Module VisionEgg.ParameterTypes=VisionEgg.ParameterTypes-module.html"><a title="VisionEgg.ParameterTypes" class="py-name" href="#" onclick="return doclink('link-6', 'Pa [...]
+<a name="L31"></a><tt class="py-lineno">31</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">sys</tt> </tt>
+<a name="L32"></a><tt class="py-lineno">32</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">pygame</tt> </tt>
+<a name="L33"></a><tt class="py-lineno">33</tt>  <tt class="py-line"> </tt>
+<a name="L34"></a><tt class="py-lineno">34</tt>  <tt class="py-line"><tt id="link-7" class="py-name" targets="Variable VisionEgg.DaqKeyboard.__version__=VisionEgg.DaqKeyboard-module.html#__version__,Variable VisionEgg.DaqLPT.__version__=VisionEgg.DaqLPT-module.html#__version__,Variable VisionEgg.GL.__version__=VisionEgg.GL-module.html#__version__,Variable VisionEgg.PyroApps.EPhysGUI.__version__=VisionEgg.PyroApps.EPhysGUI-module.html#__version__,Variable VisionEgg.PyroApps.EPhysGUIUtils. [...]
+VisionEgg.DaqLPT.__version__
+VisionEgg.GL.__version__
+VisionEgg.PyroApps.EPhysGUI.__version__
+VisionEgg.PyroApps.EPhysGUIUtils.__version__
+VisionEgg.PyroApps.EPhysServer.__version__
+VisionEgg.PyroApps.GridGUI.__version__
+VisionEgg.PyroApps.GridServer.__version__
+VisionEgg.PyroApps.ScreenPositionGUI.__version__
+VisionEgg.PyroApps.ScreenPositionServer.__version__
+VisionEgg.PyroApps.SpinningDrumGUI.__version__
+VisionEgg.PyroApps.SpinningDrumServer.__version__
+VisionEgg.PyroHelpers.__version__
+VisionEgg.QuickTime.__version__
+VisionEgg.ResponseControl.__version__
+VisionEgg.SphereMap.__version__
+VisionEgg.TCPController.__version__" class="py-name" href="#" onclick="return doclink('link-7', '__version__', 'link-7');">__version__</a></tt> <tt class="py-op">=</tt> <tt id="link-8" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-8', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-9" class="py-name" targets="Variable VisionEgg.release_name=VisionEgg-module.html#release_name"><a title="VisionEgg.release_name" c [...]
+<a name="L35"></a><tt class="py-lineno">35</tt>  <tt class="py-line"> </tt>
+<a name="L36"></a><tt class="py-lineno">36</tt>  <tt class="py-line"><tt class="py-comment">####################################################################</tt> </tt>
+<a name="L37"></a><tt class="py-lineno">37</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L38"></a><tt class="py-lineno">38</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#        KeyboardInput</tt> </tt>
+<a name="L39"></a><tt class="py-lineno">39</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L40"></a><tt class="py-lineno">40</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">####################################################################</tt> </tt>
+<a name="L41"></a><tt class="py-lineno">41</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="KeyboardInput"></a><div id="KeyboardInput-def"><a name="L42"></a><tt class="py-lineno">42</tt> <a class="py-toggle" href="#" id="KeyboardInput-toggle" onclick="return toggle('KeyboardInput');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.DaqKeyboard.KeyboardInput-class.html">KeyboardInput</a><tt class="py-op">:</tt> </tt>
+</div><div id="KeyboardInput-collapsed" style="display:none;" pad="++" indent="++++"></div><div id="KeyboardInput-expanded"><a name="L43"></a><tt class="py-lineno">43</tt>  <tt class="py-line"> </tt>
+<a name="KeyboardInput.get_pygame_data"></a><div id="KeyboardInput.get_pygame_data-def"><a name="L44"></a><tt class="py-lineno">44</tt> <a class="py-toggle" href="#" id="KeyboardInput.get_pygame_data-toggle" onclick="return toggle('KeyboardInput.get_pygame_data');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.DaqKeyboard.KeyboardInput-class.html#get_pygame_data">get_pygame_data</a><tt class="py-op">(</tt><tt class="py-param">self</tt [...]
+</div><div id="KeyboardInput.get_pygame_data-collapsed" style="display:none;" pad="++" indent="++++++++"></div><div id="KeyboardInput.get_pygame_data-expanded"><a name="L45"></a><tt class="py-lineno">45</tt>  <tt class="py-line">        <tt class="py-docstring">"""Get keyboard input (return values are in pygame.locals.* notation)."""</tt> </tt>
+<a name="L46"></a><tt class="py-lineno">46</tt>  <tt class="py-line">        <tt class="py-name">keys</tt> <tt class="py-op">=</tt> <tt class="py-name">pygame</tt><tt class="py-op">.</tt><tt class="py-name">key</tt><tt class="py-op">.</tt><tt class="py-name">get_pressed</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L47"></a><tt class="py-lineno">47</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-op">[</tt><tt class="py-name">k</tt> <tt class="py-keyword">for</tt> <tt class="py-name">k</tt><tt class="py-op">,</tt> <tt class="py-name">v</tt> <tt class="py-keyword">in</tt> <tt class="py-name">enumerate</tt><tt class="py-op">(</tt><tt class="py-name">keys</tt><tt class="py-op">)</tt> <tt class="py-keyword">if</tt> <tt class="py-name">v</tt><tt class="py-op">] [...]
+</div><a name="L48"></a><tt class="py-lineno">48</tt>  <tt class="py-line"> </tt>
+<a name="KeyboardInput.get_string_data"></a><div id="KeyboardInput.get_string_data-def"><a name="L49"></a><tt class="py-lineno">49</tt> <a class="py-toggle" href="#" id="KeyboardInput.get_string_data-toggle" onclick="return toggle('KeyboardInput.get_string_data');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.DaqKeyboard.KeyboardInput-class.html#get_string_data">get_string_data</a><tt class="py-op">(</tt><tt class="py-param">self</tt [...]
+</div><div id="KeyboardInput.get_string_data-collapsed" style="display:none;" pad="++" indent="++++++++"></div><div id="KeyboardInput.get_string_data-expanded"><a name="L50"></a><tt class="py-lineno">50</tt>  <tt class="py-line">        <tt class="py-docstring">"""Get keyboard input (return values are converted to keyboard symbols (strings))."""</tt> </tt>
+<a name="L51"></a><tt class="py-lineno">51</tt>  <tt class="py-line">        <tt class="py-name">pressed</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-10" class="py-name" targets="Method VisionEgg.DaqKeyboard.KeyboardInput.get_pygame_data()=VisionEgg.DaqKeyboard.KeyboardInput-class.html#get_pygame_data"><a title="VisionEgg.DaqKeyboard.KeyboardInput.get_pygame_data" class="py-name" href="#" onclick="return doclink('link-10', 'get_pygame_da [...]
+<a name="L52"></a><tt class="py-lineno">52</tt>  <tt class="py-line">        <tt class="py-name">keys_pressed</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L53"></a><tt class="py-lineno">53</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">k</tt> <tt class="py-keyword">in</tt> <tt class="py-name">pressed</tt><tt class="py-op">:</tt> <tt class="py-comment"># Convert integers to keyboard symbols (strings)</tt> </tt>
+<a name="L54"></a><tt class="py-lineno">54</tt>  <tt class="py-line">            <tt class="py-name">keys_pressed</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">pygame</tt><tt class="py-op">.</tt><tt class="py-name">key</tt><tt class="py-op">.</tt><tt class="py-name">name</tt><tt class="py-op">(</tt><tt class="py-name">k</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L55"></a><tt class="py-lineno">55</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">keys_pressed</tt> </tt>
+</div><a name="L56"></a><tt class="py-lineno">56</tt>  <tt class="py-line"> </tt>
+<a name="L57"></a><tt class="py-lineno">57</tt>  <tt class="py-line">    <tt id="link-11" class="py-name" targets="Method VisionEgg.Daq.Input.get_data()=VisionEgg.Daq.Input-class.html#get_data,Method VisionEgg.DaqLPT.LPTInput.get_data()=VisionEgg.DaqLPT.LPTInput-class.html#get_data"><a title="VisionEgg.Daq.Input.get_data
+VisionEgg.DaqLPT.LPTInput.get_data" class="py-name" href="#" onclick="return doclink('link-11', 'get_data', 'link-11');">get_data</a></tt> <tt class="py-op">=</tt> <tt id="link-12" class="py-name" targets="Method VisionEgg.DaqKeyboard.KeyboardInput.get_string_data()=VisionEgg.DaqKeyboard.KeyboardInput-class.html#get_string_data"><a title="VisionEgg.DaqKeyboard.KeyboardInput.get_string_data" class="py-name" href="#" onclick="return doclink('link-12', 'get_string_data', 'link-12');">get_st [...]
+</div><a name="L58"></a><tt class="py-lineno">58</tt>  <tt class="py-line"> </tt>
+<a name="L59"></a><tt class="py-lineno">59</tt>  <tt class="py-line"><tt class="py-comment">####################################################################</tt> </tt>
+<a name="L60"></a><tt class="py-lineno">60</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L61"></a><tt class="py-lineno">61</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#        KeyboardTriggerInController</tt> </tt>
+<a name="L62"></a><tt class="py-lineno">62</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L63"></a><tt class="py-lineno">63</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">####################################################################</tt> </tt>
+<a name="L64"></a><tt class="py-lineno">64</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="KeyboardTriggerInController"></a><div id="KeyboardTriggerInController-def"><a name="L65"></a><tt class="py-lineno">65</tt> <a class="py-toggle" href="#" id="KeyboardTriggerInController-toggle" onclick="return toggle('KeyboardTriggerInController');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.DaqKeyboard.KeyboardTriggerInController-class.html">KeyboardTriggerInController</a><tt class="py-op">(</tt><tt class="py-base-class">Vis [...]
+</div><div id="KeyboardTriggerInController-collapsed" style="display:none;" pad="++" indent="++++"></div><div id="KeyboardTriggerInController-expanded"><a name="L66"></a><tt class="py-lineno">66</tt>  <tt class="py-line">    <tt class="py-docstring">"""Use the keyboard to trigger the presentation."""</tt> </tt>
+<a name="L67"></a><tt class="py-lineno">67</tt>  <tt class="py-line"> </tt>
+<a name="KeyboardTriggerInController.__init__"></a><div id="KeyboardTriggerInController.__init__-def"><a name="L68"></a><tt class="py-lineno">68</tt> <a class="py-toggle" href="#" id="KeyboardTriggerInController.__init__-toggle" onclick="return toggle('KeyboardTriggerInController.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.DaqKeyboard.KeyboardTriggerInController-class.html#__init__">__init__</a><tt class="py-op">(</tt>< [...]
+</div><div id="KeyboardTriggerInController.__init__-collapsed" style="display:none;" pad="++" indent="++++++++"></div><div id="KeyboardTriggerInController.__init__-expanded"><a name="L69"></a><tt class="py-lineno">69</tt>  <tt class="py-line">        <tt id="link-13" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-13', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-14" class="py-name"><a title="VisionEgg.FlowCon [...]
+VisionEgg.Configuration.Config.__init__
+VisionEgg.Core.FixationSpot.__init__
+VisionEgg.Core.FrameTimer.__init__
+VisionEgg.Core.ModelView.__init__
+VisionEgg.Core.OrthographicProjection.__init__
+VisionEgg.Core.OrthographicProjectionNoZClip.__init__
+VisionEgg.Core.PerspectiveProjection.__init__
+VisionEgg.Core.Projection.__init__
+VisionEgg.Core.ProjectionBaseClass.__init__
+VisionEgg.Core.Screen.__init__
+VisionEgg.Core.SimplePerspectiveProjection.__init__
+VisionEgg.Core.Stimulus.__init__
+VisionEgg.Core.Viewport.__init__
+VisionEgg.Daq.Channel.__init__
+VisionEgg.Daq.DaqMode.__init__
+VisionEgg.Daq.Device.__init__
+VisionEgg.Daq.Functionality.__init__
+VisionEgg.Daq.SignalType.__init__
+VisionEgg.DaqKeyboard.KeyboardTriggerInController.__init__
+VisionEgg.DaqLPT.LPTChannel.__init__
+VisionEgg.DaqLPT.LPTDevice.__init__
+VisionEgg.DaqLPT.LPTTriggerInController.__init__
+VisionEgg.DaqLPT.LPTTriggerOutController.__init__
+VisionEgg.Deprecated.Message.__init__
+VisionEgg.Dots.DotArea2D.__init__
+VisionEgg.FlowControl.ConstantController.__init__
+VisionEgg.FlowControl.Controller.__init__
+VisionEgg.FlowControl.EncapsulatedController.__init__
+VisionEgg.FlowControl.EvalStringController.__init__
+VisionEgg.FlowControl.ExecStringController.__init__
+VisionEgg.FlowControl.FunctionController.__init__
+VisionEgg.FlowControl.Presentation.__init__
+VisionEgg.GLTrace.Wrapper.__init__
+VisionEgg.GUI.AppWindow.__init__
+VisionEgg.GUI.GetKeypressDialog.__init__
+VisionEgg.GUI.GraphicsConfigurationWindow.__init__
+VisionEgg.GUI.InfoFrame.__init__
+VisionEgg.GUI.ProgressBar.__init__
+VisionEgg.GUI.ToplevelDialog.__init__
+VisionEgg.Gratings.SinGrating2D.__init__
+VisionEgg.Gratings.SinGrating3D.__init__
+VisionEgg.MoreStimuli.Arrow.__init__
+VisionEgg.MoreStimuli.FilledCircle.__init__
+VisionEgg.MoreStimuli.Rectangle3D.__init__
+VisionEgg.MoreStimuli.Target2D.__init__
+VisionEgg.ParameterTypes.AnyOf.__init__
+VisionEgg.ParameterTypes.Instance.__init__
+VisionEgg.ParameterTypes.Sequence.__init__
+VisionEgg.ParameterTypes.SubClass.__init__
+VisionEgg.PyroApps.AST_ext.AST_Visitor.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalMetaParameters.__init__
+VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.__init__
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.__init__
+VisionEgg.PyroApps.DropinGUI.DropinMetaParameters.__init__
+VisionEgg.PyroApps.DropinServer.DropinMetaController.__init__
+VisionEgg.PyroApps.EPhysGUI.AppWindow.__init__
+VisionEgg.PyroApps.EPhysGUI.BarButton.__init__
+VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase.__init__
+VisionEgg.PyroApps.EPhysGUI.GammaFrame.__init__
+VisionEgg.PyroApps.EPhysGUI.ImageSequenceLauncher.__init__
+VisionEgg.PyroApps.EPhysGUI.Loop.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopContainedObject.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopParamDialog.__init__
+VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.__init__
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.__init__
+VisionEgg.PyroApps.EPhysServer.EPhysServer.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingMetaParameters.__init__
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.GridGUI.GridControlFrame.__init__
+VisionEgg.PyroApps.GridGUI.GridMetaParameters.__init__
+VisionEgg.PyroApps.GridServer.GridMetaController.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetMetaParameters.__init__
+VisionEgg.PyroApps.MouseTargetServer.MousePositionController.__init__
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetOrientationController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetPositionController.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.CallbackEntry.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionParameters.__init__
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingMetaParameters.__init__
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumMetaParameters.__init__
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.__init__
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.__init__
+VisionEgg.PyroApps.TargetGUI.TargetMetaParameters.__init__
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.__init__
+VisionEgg.PyroClient.PyroClient.__init__
+VisionEgg.PyroHelpers.PyroConstantController.__init__
+VisionEgg.PyroHelpers.PyroEncapsulatedController.__init__
+VisionEgg.PyroHelpers.PyroEvalStringController.__init__
+VisionEgg.PyroHelpers.PyroExecStringController.__init__
+VisionEgg.PyroHelpers.PyroListenController.__init__
+VisionEgg.PyroHelpers.PyroLocalDictController.__init__
+VisionEgg.PyroHelpers.PyroServer.__init__
+VisionEgg.QuickTime.MovieTexture.__init__
+VisionEgg.ResponseControl.KeyboardResponseController.__init__
+VisionEgg.ResponseControl.ResponseController.__init__
+VisionEgg.SphereMap.AzElGrid.__init__
+VisionEgg.SphereMap.SphereGrating.__init__
+VisionEgg.SphereMap.SphereMap.__init__
+VisionEgg.SphereMap.SphereWindow.__init__
+VisionEgg.TCPController.SocketListenController.__init__
+VisionEgg.TCPController.TCPController.__init__
+VisionEgg.TCPController.TCPServer.__init__
+VisionEgg.Text.BitmapText.__init__
+VisionEgg.Text.GlutTextBase.__init__
+VisionEgg.Text.StrokeText.__init__
+VisionEgg.Text.Text.__init__
+VisionEgg.Textures.FixationCross.__init__
+VisionEgg.Textures.Mask2D.__init__
+VisionEgg.Textures.SpinningDrum.__init__
+VisionEgg.Textures.Texture.__init__
+VisionEgg.Textures.TextureFromFile.__init__
+VisionEgg.Textures.TextureObject.__init__
+VisionEgg.Textures.TextureStimulusBaseClass.__init__
+VisionEgg.ThreeDeeMath.TransformMatrix.__init__
+VisionEgg.WrappedText.WrappedText.__init__
+VisionEgg.qtmovie.Movie.__init__
+VisionEgg.qtmovie.Rect.__init__" class="py-name" href="#" onclick="return doclink('link-16', '__init__', 'link-16');">__init__</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L70"></a><tt class="py-lineno">70</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">,</tt> </tt>
+<a name="L71"></a><tt class="py-lineno">71</tt>  <tt class="py-line">            <tt class="py-name">return_type</tt><tt class="py-op">=</tt><tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-17" class="py-name" targets="Class VisionEgg.ParameterTypes.Integer=VisionEgg.ParameterTypes.Integer-class.html"><a title="VisionEgg.ParameterTypes.Integer" class="py-name" href="#" onclick="return doclink('link-17', 'Integer', 'link-17');">Integer</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L72"></a><tt class="py-lineno">72</tt>  <tt class="py-line">            <tt class="py-name">eval_frequency</tt><tt class="py-op">=</tt><tt id="link-18" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-18', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-19" class="py-name"><a title="VisionEgg.FlowControl" class="py-name" href="#" onclick="return doclink('link-19', 'FlowControl', 'link-4');">FlowControl</a [...]
+VisionEgg.FlowControl.EVERY_FRAME" class="py-name" href="#" onclick="return doclink('link-21', 'EVERY_FRAME', 'link-21');">EVERY_FRAME</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L73"></a><tt class="py-lineno">73</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">key</tt> <tt class="py-op">=</tt> <tt class="py-name">key</tt> </tt>
+</div><a name="L74"></a><tt class="py-lineno">74</tt>  <tt class="py-line"> </tt>
+<a name="KeyboardTriggerInController.during_go_eval"></a><div id="KeyboardTriggerInController.during_go_eval-def"><a name="L75"></a><tt class="py-lineno">75</tt> <a class="py-toggle" href="#" id="KeyboardTriggerInController.during_go_eval-toggle" onclick="return toggle('KeyboardTriggerInController.during_go_eval');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.DaqKeyboard.KeyboardTriggerInController-class.html#during_go_eval">during_ [...]
+</div><div id="KeyboardTriggerInController.during_go_eval-collapsed" style="display:none;" pad="++" indent="++++++++"></div><div id="KeyboardTriggerInController.during_go_eval-expanded"><a name="L76"></a><tt class="py-lineno">76</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-number">1</tt> </tt>
+</div><a name="L77"></a><tt class="py-lineno">77</tt>  <tt class="py-line"> </tt>
+<a name="KeyboardTriggerInController.between_go_eval"></a><div id="KeyboardTriggerInController.between_go_eval-def"><a name="L78"></a><tt class="py-lineno">78</tt> <a class="py-toggle" href="#" id="KeyboardTriggerInController.between_go_eval-toggle" onclick="return toggle('KeyboardTriggerInController.between_go_eval');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.DaqKeyboard.KeyboardTriggerInController-class.html#between_go_eval">be [...]
+</div><div id="KeyboardTriggerInController.between_go_eval-collapsed" style="display:none;" pad="++" indent="++++++++"></div><div id="KeyboardTriggerInController.between_go_eval-expanded"><a name="L79"></a><tt class="py-lineno">79</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">event</tt> <tt class="py-keyword">in</tt> <tt class="py-name">pygame</tt><tt class="py-op">.</tt><tt class="py-name">event</tt><tt class="py-op">.</tt><tt id="link-22" class=" [...]
+<a name="L80"></a><tt class="py-lineno">80</tt>  <tt class="py-line"><tt class="py-comment">#           if (event.type == pygame.locals.KEYUP) or (event.type == pygame.locals.KEYDOWN):</tt> </tt>
+<a name="L81"></a><tt class="py-lineno">81</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">if</tt> <tt class="py-name">event</tt><tt class="py-op">.</tt><tt class="py-name">type</tt> <tt class="py-op">==</tt> <tt class="py-name">pygame</tt><tt class="py-op">.</tt><tt class="py-name">locals</tt><tt class="py-op">.</tt><tt class="py-name">KEYDOWN</tt><tt class="py-op">:</tt> </tt>
+<a name="L82"></a><tt class="py-lineno">82</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">event</tt><tt class="py-op">.</tt><tt class="py-name">key</tt> <tt class="py-op">==</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">key</tt><tt class="py-op">:</tt> </tt>
+<a name="L83"></a><tt class="py-lineno">83</tt>  <tt class="py-line">                    <tt class="py-keyword">return</tt> <tt class="py-number">1</tt> </tt>
+<a name="L84"></a><tt class="py-lineno">84</tt>  <tt class="py-line">                <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L85"></a><tt class="py-lineno">85</tt>  <tt class="py-line">                    <tt class="py-keyword">return</tt> <tt class="py-number">0</tt> </tt>
+</div></div><a name="L86"></a><tt class="py-lineno">86</tt>  <tt class="py-line"> </tt><script type="text/javascript">
+<!--
+expandto(location.href);
+// -->
+</script>
+</pre>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:47 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.DaqKeyboard.KeyboardInput-class.html b/doc/reference/html/VisionEgg.DaqKeyboard.KeyboardInput-class.html
new file mode 100644
index 0000000..61caa8f
--- /dev/null
+++ b/doc/reference/html/VisionEgg.DaqKeyboard.KeyboardInput-class.html
@@ -0,0 +1,173 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.DaqKeyboard.KeyboardInput</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.DaqKeyboard-module.html">Module DaqKeyboard</a> ::
+        Class KeyboardInput
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.DaqKeyboard.KeyboardInput-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class KeyboardInput</h1><span class="codelink"><a href="VisionEgg.DaqKeyboard-pysrc.html#KeyboardInput">source code</a></span><br /><br />
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="get_pygame_data"></a><span class="summary-sig-name">get_pygame_data</span>(<span class="summary-sig-arg">self</span>)</span><br />
+      Get keyboard input (return values are in pygame.locals.* notation).</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.DaqKeyboard-pysrc.html#KeyboardInput.get_pygame_data">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="get_string_data"></a><span class="summary-sig-name">get_string_data</span>(<span class="summary-sig-arg">self</span>)</span><br />
+      Get keyboard input (return values are converted to keyboard symbols (strings)).</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.DaqKeyboard-pysrc.html#KeyboardInput.get_string_data">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="get_data"></a><span class="summary-sig-name">get_data</span>(<span class="summary-sig-arg">self</span>)</span><br />
+      Get keyboard input (return values are converted to keyboard symbols (strings)).</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.DaqKeyboard-pysrc.html#KeyboardInput.get_string_data">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.DaqKeyboard.KeyboardTriggerInController-class.html b/doc/reference/html/VisionEgg.DaqKeyboard.KeyboardTriggerInController-class.html
new file mode 100644
index 0000000..ebbb300
--- /dev/null
+++ b/doc/reference/html/VisionEgg.DaqKeyboard.KeyboardTriggerInController-class.html
@@ -0,0 +1,351 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.DaqKeyboard.KeyboardTriggerInController</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.DaqKeyboard-module.html">Module DaqKeyboard</a> ::
+        Class KeyboardTriggerInController
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.DaqKeyboard.KeyboardTriggerInController-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class KeyboardTriggerInController</h1><span class="codelink"><a href="VisionEgg.DaqKeyboard-pysrc.html#KeyboardTriggerInController">source code</a></span><br /><br />
+<pre class="base-tree">
+            object --+    
+                     |    
+<a href="VisionEgg.FlowControl.Controller-class.html">FlowControl.Controller</a> --+
+                         |
+                        <strong class="uidshort">KeyboardTriggerInController</strong>
+</pre>
+
+<hr />
+<pre class="literalblock">
+Use the keyboard to trigger the presentation.
+
+</pre><br /><br />
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.DaqKeyboard.KeyboardTriggerInController-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">key</span>=<span class="summary-sig-default">pygame.locals.K_1</span>)</span><br />
+      Create instance of Controller.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.DaqKeyboard-pysrc.html#KeyboardTriggerInController.__init__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.DaqKeyboard.KeyboardTriggerInController-class.html#during_go_eval" class="summary-sig-name">during_go_eval</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      Called by Presentation.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.DaqKeyboard-pysrc.html#KeyboardTriggerInController.during_go_eval">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.DaqKeyboard.KeyboardTriggerInController-class.html#between_go_eval" class="summary-sig-name">between_go_eval</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      Called by Presentation.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.DaqKeyboard-pysrc.html#KeyboardTriggerInController.between_go_eval">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.FlowControl.Controller-class.html">FlowControl.Controller</a></code></b>:
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#evaluate_now">evaluate_now</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#returns_type">returns_type</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#set_eval_frequency">set_eval_frequency</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__delattr__</code>,
+      <code>__getattribute__</code>,
+      <code>__hash__</code>,
+      <code>__new__</code>,
+      <code>__reduce__</code>,
+      <code>__reduce_ex__</code>,
+      <code>__repr__</code>,
+      <code>__setattr__</code>,
+      <code>__str__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Class Variables</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.FlowControl.Controller-class.html">FlowControl.Controller</a></code></b>:
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#EVERY_FRAME">EVERY_FRAME</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#FRAMES_ABSOLUTE">FRAMES_ABSOLUTE</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#FRAMES_SINCE_GO">FRAMES_SINCE_GO</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#NEVER">NEVER</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#NOT_BETWEEN_GO">NOT_BETWEEN_GO</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#NOT_DURING_GO">NOT_DURING_GO</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#ONCE">ONCE</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#TIME_INDEPENDENT">TIME_INDEPENDENT</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#TIME_SEC_ABSOLUTE">TIME_SEC_ABSOLUTE</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#TIME_SEC_SINCE_GO">TIME_SEC_SINCE_GO</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#TRANSITIONS">TRANSITIONS</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#flag_dictionary">flag_dictionary</a></code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Properties</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__class__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Method Details</span></td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">key</span>=<span class="sig-default">pygame.locals.K_1</span>)</span>
+    <br /><em class="fname">(Constructor)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.DaqKeyboard-pysrc.html#KeyboardTriggerInController.__init__">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Create instance of Controller.
+
+Arguments:
+
+eval_frequency -- Int, bitwise "or" of flags
+temporal_variables -- Int, bitwise "or" of flags
+return_type -- Set to type() of the parameter under control
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.FlowControl.Controller-class.html#__init__">FlowControl.Controller.__init__</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="during_go_eval"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">during_go_eval</span>(<span class="sig-arg">self</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.DaqKeyboard-pysrc.html#KeyboardTriggerInController.during_go_eval">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Called by Presentation. Evaluate during the main 'go' loop.
+
+Override this method in subclasses.
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.FlowControl.Controller-class.html#during_go_eval">FlowControl.Controller.during_go_eval</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="between_go_eval"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">between_go_eval</span>(<span class="sig-arg">self</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.DaqKeyboard-pysrc.html#KeyboardTriggerInController.between_go_eval">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Called by Presentation. Evaluate between runs of the main 'go' loop.
+
+Override this method in subclasses.
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.FlowControl.Controller-class.html#between_go_eval">FlowControl.Controller.between_go_eval</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.DaqLPT-module.html b/doc/reference/html/VisionEgg.DaqLPT-module.html
new file mode 100644
index 0000000..23bc523
--- /dev/null
+++ b/doc/reference/html/VisionEgg.DaqLPT-module.html
@@ -0,0 +1,208 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.DaqLPT</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        Module DaqLPT
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.DaqLPT-module.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== MODULE DESCRIPTION ==================== -->
+<h1 class="epydoc">Module DaqLPT</h1><span class="codelink"><a href="VisionEgg.DaqLPT-pysrc.html">source code</a></span><br /><br />
+<pre class="literalblock">
+
+Data acquisition and triggering over the parallel port.
+
+This module was programmed using information from "Interfacing the
+Standard Parallel Port" by Craig Peacock,
+http://www.senet.com.au/~cpeacock.
+
+You may also be interested in http://www.lvr.com/files/ibmlpt.txt.
+
+This module only uses the Standard Parallel Port (SPP) protocol, not
+ECP or EPP.  You may have to set your computer's BIOS accordingly.
+
+You may need to be root or otherwise have permission to access the
+parallel port.
+
+Example usage:
+
+>>> from VisionEgg.DaqLPT import raw_lpt_module
+>>> address = 0x378
+>>> out_value = 0
+>>> raw_lpt_module.out( address, out_value )
+>>> in_value = raw_lpt_module.inp( address+1 )
+
+</pre><br /><br />
+
+<!-- ==================== CLASSES ==================== -->
+<a name="section-Classes"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Classes</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.DaqLPT.LPTInput-class.html" class="summary-name">LPTInput</a>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.DaqLPT.LPTOutput-class.html" class="summary-name">LPTOutput</a>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.DaqLPT.LPTChannel-class.html" class="summary-name">LPTChannel</a><br />
+      A data acquisition channel using the parallel port.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.DaqLPT.LPTDevice-class.html" class="summary-name">LPTDevice</a><br />
+      A single parallel port.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.DaqLPT.LPTTriggerOutController-class.html" class="summary-name">LPTTriggerOutController</a><br />
+      Use 8 bits of digital output for triggering and frame timing verification.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.DaqLPT.LPTTriggerInController-class.html" class="summary-name">LPTTriggerInController</a>
+    </td>
+  </tr>
+</table>
+<!-- ==================== VARIABLES ==================== -->
+<a name="section-Variables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Variables</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="__version__"></a><span class="summary-name">__version__</span> = <code title="VisionEgg.release_name">VisionEgg.release_name</code>
+    </td>
+  </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.DaqLPT-pysrc.html b/doc/reference/html/VisionEgg.DaqLPT-pysrc.html
new file mode 100644
index 0000000..b5f9272
--- /dev/null
+++ b/doc/reference/html/VisionEgg.DaqLPT-pysrc.html
@@ -0,0 +1,852 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.DaqLPT</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        Module DaqLPT
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.DaqLPT-pysrc.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<h1 class="epydoc">Source Code for <a href="VisionEgg.DaqLPT-module.html">Module VisionEgg.DaqLPT</a></h1>
+<pre class="py-src">
+<a name="L1"></a><tt class="py-lineno">  1</tt>  <tt class="py-line"><tt class="py-comment"># The Vision Egg: DaqLPT</tt> </tt>
+<a name="L2"></a><tt class="py-lineno">  2</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L3"></a><tt class="py-lineno">  3</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Copyright (C) 2001-2003 Andrew Straw.</tt> </tt>
+<a name="L4"></a><tt class="py-lineno">  4</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Copyright (C) 2005 Hubertus Becker</tt> </tt>
+<a name="L5"></a><tt class="py-lineno">  5</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Author: Andrew Straw <astraw at users.sourceforge.net></tt> </tt>
+<a name="L6"></a><tt class="py-lineno">  6</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># URL: <http://www.visionegg.org/></tt> </tt>
+<a name="L7"></a><tt class="py-lineno">  7</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L8"></a><tt class="py-lineno">  8</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Distributed under the terms of the GNU Lesser General Public License</tt> </tt>
+<a name="L9"></a><tt class="py-lineno">  9</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># (LGPL). See LICENSE.TXT that came with this file.</tt> </tt>
+<a name="L10"></a><tt class="py-lineno"> 10</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L11"></a><tt class="py-lineno"> 11</tt>  <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L12"></a><tt class="py-lineno"> 12</tt>  <tt class="py-line"><tt class="py-docstring">Data acquisition and triggering over the parallel port.</tt> </tt>
+<a name="L13"></a><tt class="py-lineno"> 13</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L14"></a><tt class="py-lineno"> 14</tt>  <tt class="py-line"><tt class="py-docstring">This module was programmed using information from "Interfacing the</tt> </tt>
+<a name="L15"></a><tt class="py-lineno"> 15</tt>  <tt class="py-line"><tt class="py-docstring">Standard Parallel Port" by Craig Peacock,</tt> </tt>
+<a name="L16"></a><tt class="py-lineno"> 16</tt>  <tt class="py-line"><tt class="py-docstring">http://www.senet.com.au/~cpeacock.</tt> </tt>
+<a name="L17"></a><tt class="py-lineno"> 17</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L18"></a><tt class="py-lineno"> 18</tt>  <tt class="py-line"><tt class="py-docstring">You may also be interested in http://www.lvr.com/files/ibmlpt.txt.</tt> </tt>
+<a name="L19"></a><tt class="py-lineno"> 19</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L20"></a><tt class="py-lineno"> 20</tt>  <tt class="py-line"><tt class="py-docstring">This module only uses the Standard Parallel Port (SPP) protocol, not</tt> </tt>
+<a name="L21"></a><tt class="py-lineno"> 21</tt>  <tt class="py-line"><tt class="py-docstring">ECP or EPP.  You may have to set your computer's BIOS accordingly.</tt> </tt>
+<a name="L22"></a><tt class="py-lineno"> 22</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L23"></a><tt class="py-lineno"> 23</tt>  <tt class="py-line"><tt class="py-docstring">You may need to be root or otherwise have permission to access the</tt> </tt>
+<a name="L24"></a><tt class="py-lineno"> 24</tt>  <tt class="py-line"><tt class="py-docstring">parallel port.</tt> </tt>
+<a name="L25"></a><tt class="py-lineno"> 25</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L26"></a><tt class="py-lineno"> 26</tt>  <tt class="py-line"><tt class="py-docstring">Example usage:</tt> </tt>
+<a name="L27"></a><tt class="py-lineno"> 27</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L28"></a><tt class="py-lineno"> 28</tt>  <tt class="py-line"><tt class="py-docstring">>>> from VisionEgg.DaqLPT import raw_lpt_module</tt> </tt>
+<a name="L29"></a><tt class="py-lineno"> 29</tt>  <tt class="py-line"><tt class="py-docstring">>>> address = 0x378</tt> </tt>
+<a name="L30"></a><tt class="py-lineno"> 30</tt>  <tt class="py-line"><tt class="py-docstring">>>> out_value = 0</tt> </tt>
+<a name="L31"></a><tt class="py-lineno"> 31</tt>  <tt class="py-line"><tt class="py-docstring">>>> raw_lpt_module.out( address, out_value )</tt> </tt>
+<a name="L32"></a><tt class="py-lineno"> 32</tt>  <tt class="py-line"><tt class="py-docstring">>>> in_value = raw_lpt_module.inp( address+1 )</tt> </tt>
+<a name="L33"></a><tt class="py-lineno"> 33</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L34"></a><tt class="py-lineno"> 34</tt>  <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L35"></a><tt class="py-lineno"> 35</tt>  <tt class="py-line"> </tt>
+<a name="L36"></a><tt class="py-lineno"> 36</tt>  <tt class="py-line"><tt class="py-comment">####################################################################</tt> </tt>
+<a name="L37"></a><tt class="py-lineno"> 37</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L38"></a><tt class="py-lineno"> 38</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#        Import all the necessary packages</tt> </tt>
+<a name="L39"></a><tt class="py-lineno"> 39</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L40"></a><tt class="py-lineno"> 40</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">####################################################################</tt> </tt>
+<a name="L41"></a><tt class="py-lineno"> 41</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L42"></a><tt class="py-lineno"> 42</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-0" class="py-name" targets="Package VisionEgg=VisionEgg-module.html"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-0', 'VisionEgg', 'link-0');">VisionEgg</a></tt> </tt>
+<a name="L43"></a><tt class="py-lineno"> 43</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-1" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-1', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-2" class="py-name" targets="Module VisionEgg.Core=VisionEgg.Core-module.html"><a title="VisionEgg.Core" class="py-name" href="#" onclick="return doclink('link-2', 'Core', 'link-2');">Core</a></tt> </tt>
+<a name="L44"></a><tt class="py-lineno"> 44</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-3" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-3', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-4" class="py-name" targets="Module VisionEgg.FlowControl=VisionEgg.FlowControl-module.html"><a title="VisionEgg.FlowControl" class="py-name" href="#" onclick="return doclink('link-4', 'FlowContro [...]
+<a name="L45"></a><tt class="py-lineno"> 45</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-5" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-5', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-6" class="py-name" targets="Module VisionEgg.Daq=VisionEgg.Daq-module.html"><a title="VisionEgg.Daq" class="py-name" href="#" onclick="return doclink('link-6', 'Daq', 'link-6');">Daq</a></tt> </tt>
+<a name="L46"></a><tt class="py-lineno"> 46</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-7" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-7', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-8" class="py-name" targets="Module VisionEgg.ParameterTypes=VisionEgg.ParameterTypes-module.html"><a title="VisionEgg.ParameterTypes" class="py-name" href="#" onclick="return doclink('link-8', 'P [...]
+<a name="L47"></a><tt class="py-lineno"> 47</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">sys</tt> </tt>
+<a name="L48"></a><tt class="py-lineno"> 48</tt>  <tt class="py-line"> </tt>
+<a name="L49"></a><tt class="py-lineno"> 49</tt>  <tt class="py-line"><tt class="py-comment"># See the raw LPT module for your platform for direct LPT access</tt> </tt>
+<a name="L50"></a><tt class="py-lineno"> 50</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># without VisionEgg DAQ overhead.  In particular, the inp and out</tt> </tt>
+<a name="L51"></a><tt class="py-lineno"> 51</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># functions are useful.</tt> </tt>
+<a name="L52"></a><tt class="py-lineno"> 52</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L53"></a><tt class="py-lineno"> 53</tt>  <tt class="py-line"><tt class="py-keyword">if</tt> <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">platform</tt> <tt class="py-op">==</tt> <tt class="py-string">'win32'</tt><tt class="py-op">:</tt> </tt>
+<a name="L54"></a><tt class="py-lineno"> 54</tt>  <tt class="py-line">    <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L55"></a><tt class="py-lineno"> 55</tt>  <tt class="py-line">        <tt class="py-comment"># Dincer Aydin's module http://www.geocities.com/dinceraydin</tt> </tt>
+<a name="L56"></a><tt class="py-lineno"> 56</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">import</tt> <tt class="py-name">winioport</tt> <tt class="py-keyword">as</tt> <tt class="py-name">raw_lpt_module</tt> </tt>
+<a name="L57"></a><tt class="py-lineno"> 57</tt>  <tt class="py-line">    <tt class="py-keyword">except</tt> <tt class="py-name">ImportError</tt><tt class="py-op">:</tt> </tt>
+<a name="L58"></a><tt class="py-lineno"> 58</tt>  <tt class="py-line">        <tt class="py-comment"># Andrew Straw's module http://www.its.caltech.edu/~astraw/coding.html</tt> </tt>
+<a name="L59"></a><tt class="py-lineno"> 59</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">import</tt> <tt class="py-name">dlportio</tt> <tt class="py-keyword">as</tt> <tt class="py-name">raw_lpt_module</tt> </tt>
+<a name="L60"></a><tt class="py-lineno"> 60</tt>  <tt class="py-line"><tt class="py-keyword">elif</tt> <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">platform</tt><tt class="py-op">.</tt><tt class="py-name">startswith</tt><tt class="py-op">(</tt><tt class="py-string">'linux'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L61"></a><tt class="py-lineno"> 61</tt>  <tt class="py-line">    <tt class="py-keyword">import</tt> <tt id="link-9" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-9', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt class="py-name">_raw_lpt_linux</tt> <tt class="py-keyword">as</tt> <tt class="py-name">raw_lpt_module</tt> </tt>
+<a name="L62"></a><tt class="py-lineno"> 62</tt>  <tt class="py-line"><tt class="py-keyword">elif</tt> <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">platform</tt><tt class="py-op">.</tt><tt class="py-name">startswith</tt><tt class="py-op">(</tt><tt class="py-string">'irix'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L63"></a><tt class="py-lineno"> 63</tt>  <tt class="py-line"><tt class="py-comment">### IRIX implementation not done, but possible</tt> </tt>
+<a name="L64"></a><tt class="py-lineno"> 64</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">raise</tt> <tt class="py-name">NotImplementedError</tt><tt class="py-op">(</tt><tt class="py-string">"VisionEgg.DaqLPT not implemented on IRIX"</tt><tt class="py-op">)</tt> </tt>
+<a name="L65"></a><tt class="py-lineno"> 65</tt>  <tt class="py-line"><tt class="py-comment">##    import VisionEgg._raw_plp_irix</tt> </tt>
+<a name="L66"></a><tt class="py-lineno"> 66</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">##    raw_lpt_module = VisionEgg._raw_plp_irix</tt> </tt>
+<a name="L67"></a><tt class="py-lineno"> 67</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L68"></a><tt class="py-lineno"> 68</tt>  <tt class="py-line">    <tt class="py-keyword">raise</tt> <tt class="py-name">RuntimeError</tt><tt class="py-op">(</tt><tt class="py-string">"VisionEgg.DaqLPT not supported on this platform"</tt><tt class="py-op">)</tt> </tt>
+<a name="L69"></a><tt class="py-lineno"> 69</tt>  <tt class="py-line"> </tt>
+<a name="L70"></a><tt class="py-lineno"> 70</tt>  <tt class="py-line"><tt id="link-10" class="py-name" targets="Variable VisionEgg.DaqKeyboard.__version__=VisionEgg.DaqKeyboard-module.html#__version__,Variable VisionEgg.DaqLPT.__version__=VisionEgg.DaqLPT-module.html#__version__,Variable VisionEgg.GL.__version__=VisionEgg.GL-module.html#__version__,Variable VisionEgg.PyroApps.EPhysGUI.__version__=VisionEgg.PyroApps.EPhysGUI-module.html#__version__,Variable VisionEgg.PyroApps.EPhysGUIUtil [...]
+VisionEgg.DaqLPT.__version__
+VisionEgg.GL.__version__
+VisionEgg.PyroApps.EPhysGUI.__version__
+VisionEgg.PyroApps.EPhysGUIUtils.__version__
+VisionEgg.PyroApps.EPhysServer.__version__
+VisionEgg.PyroApps.GridGUI.__version__
+VisionEgg.PyroApps.GridServer.__version__
+VisionEgg.PyroApps.ScreenPositionGUI.__version__
+VisionEgg.PyroApps.ScreenPositionServer.__version__
+VisionEgg.PyroApps.SpinningDrumGUI.__version__
+VisionEgg.PyroApps.SpinningDrumServer.__version__
+VisionEgg.PyroHelpers.__version__
+VisionEgg.QuickTime.__version__
+VisionEgg.ResponseControl.__version__
+VisionEgg.SphereMap.__version__
+VisionEgg.TCPController.__version__" class="py-name" href="#" onclick="return doclink('link-10', '__version__', 'link-10');">__version__</a></tt> <tt class="py-op">=</tt> <tt id="link-11" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-11', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-12" class="py-name" targets="Variable VisionEgg.release_name=VisionEgg-module.html#release_name"><a title="VisionEgg.release_na [...]
+<a name="L71"></a><tt class="py-lineno"> 71</tt>  <tt class="py-line"> </tt>
+<a name="LPTInput"></a><div id="LPTInput-def"><a name="L72"></a><tt class="py-lineno"> 72</tt> <a class="py-toggle" href="#" id="LPTInput-toggle" onclick="return toggle('LPTInput');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.DaqLPT.LPTInput-class.html">LPTInput</a><tt class="py-op">(</tt><tt class="py-base-class">VisionEgg</tt><tt class="py-op">.</tt><tt class="py-base-class">Daq</tt><tt class="py-op">.</tt><tt class="py-base-class" [...]
+</div><div id="LPTInput-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="LPTInput-expanded"><a name="LPTInput.get_data"></a><div id="LPTInput.get_data-def"><a name="L73"></a><tt class="py-lineno"> 73</tt> <a class="py-toggle" href="#" id="LPTInput.get_data-toggle" onclick="return toggle('LPTInput.get_data');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.DaqLPT.LPTInput-class.html#get_data">get_data</a><tt class [...]
+</div><div id="LPTInput.get_data-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="LPTInput.get_data-expanded"><a name="L74"></a><tt class="py-lineno"> 74</tt>  <tt class="py-line">        <tt class="py-docstring">"""Get status bits 0-7 of the LPT port.</tt> </tt>
+<a name="L75"></a><tt class="py-lineno"> 75</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L76"></a><tt class="py-lineno"> 76</tt>  <tt class="py-line"><tt class="py-docstring">        The status bits were not meant for high speed digital input.</tt> </tt>
+<a name="L77"></a><tt class="py-lineno"> 77</tt>  <tt class="py-line"><tt class="py-docstring">        Nevertheless, for sampling one or two digital inputs at slow</tt> </tt>
+<a name="L78"></a><tt class="py-lineno"> 78</tt>  <tt class="py-line"><tt class="py-docstring">        rates, they work fine.</tt> </tt>
+<a name="L79"></a><tt class="py-lineno"> 79</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L80"></a><tt class="py-lineno"> 80</tt>  <tt class="py-line"><tt class="py-docstring">        Bits 4 and 5 (pins 13 and 12, respectively) should be first</tt> </tt>
+<a name="L81"></a><tt class="py-lineno"> 81</tt>  <tt class="py-line"><tt class="py-docstring">        choice to sample a digital voltage.  The other bits have some</tt> </tt>
+<a name="L82"></a><tt class="py-lineno"> 82</tt>  <tt class="py-line"><tt class="py-docstring">        oddities. Bits 0 and 1 are designated reserved. Others are</tt> </tt>
+<a name="L83"></a><tt class="py-lineno"> 83</tt>  <tt class="py-line"><tt class="py-docstring">        "active low"; they show a logic 0 when +5v is applied.</tt> </tt>
+<a name="L84"></a><tt class="py-lineno"> 84</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L85"></a><tt class="py-lineno"> 85</tt>  <tt class="py-line"><tt class="py-docstring">        bit3 = value & 0x08</tt> </tt>
+<a name="L86"></a><tt class="py-lineno"> 86</tt>  <tt class="py-line"><tt class="py-docstring">        bit4 = value & 0x10</tt> </tt>
+<a name="L87"></a><tt class="py-lineno"> 87</tt>  <tt class="py-line"><tt class="py-docstring">        bit5 = value & 0x20</tt> </tt>
+<a name="L88"></a><tt class="py-lineno"> 88</tt>  <tt class="py-line"><tt class="py-docstring">        bit6 = value & 0x40</tt> </tt>
+<a name="L89"></a><tt class="py-lineno"> 89</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L90"></a><tt class="py-lineno"> 90</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">raw_lpt_module</tt><tt class="py-op">.</tt><tt class="py-name">inp</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">channel</tt><tt class="py-op">.</tt><tt class="py-name">device</tt><tt class="py-op">.</tt><tt class="py-name">base_address</tt><tt class="py-op">+</tt><tt class="py-number">1</tt><tt class=" [...]
+</div></div><a name="L91"></a><tt class="py-lineno"> 91</tt>  <tt class="py-line"> </tt>
+<a name="LPTOutput"></a><div id="LPTOutput-def"><a name="L92"></a><tt class="py-lineno"> 92</tt> <a class="py-toggle" href="#" id="LPTOutput-toggle" onclick="return toggle('LPTOutput');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.DaqLPT.LPTOutput-class.html">LPTOutput</a><tt class="py-op">(</tt><tt class="py-base-class">VisionEgg</tt><tt class="py-op">.</tt><tt class="py-base-class">Daq</tt><tt class="py-op">.</tt><tt class="py-base- [...]
+</div><div id="LPTOutput-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="LPTOutput-expanded"><a name="LPTOutput.put_data"></a><div id="LPTOutput.put_data-def"><a name="L93"></a><tt class="py-lineno"> 93</tt> <a class="py-toggle" href="#" id="LPTOutput.put_data-toggle" onclick="return toggle('LPTOutput.put_data');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.DaqLPT.LPTOutput-class.html#put_data">put_data</a><t [...]
+</div><div id="LPTOutput.put_data-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="LPTOutput.put_data-expanded"><a name="L94"></a><tt class="py-lineno"> 94</tt>  <tt class="py-line">        <tt class="py-docstring">"""Set output bits 0-7 (pins 2-9) on the LPT port."""</tt> </tt>
+<a name="L95"></a><tt class="py-lineno"> 95</tt>  <tt class="py-line">        <tt class="py-name">raw_lpt_module</tt><tt class="py-op">.</tt><tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">channel</tt><tt class="py-op">.</tt><tt class="py-name">device</tt><tt class="py-op">.</tt><tt class="py-name">base_address</tt><tt class="py-op">,</tt><tt class="py-name">data</tt><tt class="py-op">)</tt> </tt>
+</div><a name="LPTOutput.__del__"></a><div id="LPTOutput.__del__-def"><a name="L96"></a><tt class="py-lineno"> 96</tt> <a class="py-toggle" href="#" id="LPTOutput.__del__-toggle" onclick="return toggle('LPTOutput.__del__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.DaqLPT.LPTOutput-class.html#__del__">__del__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="LPTOutput.__del__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="LPTOutput.__del__-expanded"><a name="L97"></a><tt class="py-lineno"> 97</tt>  <tt class="py-line">        <tt class="py-docstring">"""Set output bits low when closing."""</tt> </tt>
+<a name="L98"></a><tt class="py-lineno"> 98</tt>  <tt class="py-line">        <tt class="py-name">raw_lpt_module</tt><tt class="py-op">.</tt><tt class="py-name">out</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">channel</tt><tt class="py-op">.</tt><tt class="py-name">device</tt><tt class="py-op">.</tt><tt class="py-name">base_address</tt><tt class="py-op">,</tt><tt class="py-number">0</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L99"></a><tt class="py-lineno"> 99</tt>  <tt class="py-line"> </tt>
+<a name="LPTChannel"></a><div id="LPTChannel-def"><a name="L100"></a><tt class="py-lineno">100</tt> <a class="py-toggle" href="#" id="LPTChannel-toggle" onclick="return toggle('LPTChannel');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.DaqLPT.LPTChannel-class.html">LPTChannel</a><tt class="py-op">(</tt><tt class="py-base-class">VisionEgg</tt><tt class="py-op">.</tt><tt class="py-base-class">Daq</tt><tt class="py-op">.</tt><tt class="p [...]
+</div><div id="LPTChannel-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="LPTChannel-expanded"><a name="L101"></a><tt class="py-lineno">101</tt>  <tt class="py-line">    <tt class="py-docstring">"""A data acquisition channel using the parallel port."""</tt> </tt>
+<a name="LPTChannel.__init__"></a><div id="LPTChannel.__init__-def"><a name="L102"></a><tt class="py-lineno">102</tt> <a class="py-toggle" href="#" id="LPTChannel.__init__-toggle" onclick="return toggle('LPTChannel.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.DaqLPT.LPTChannel-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt><tt class="py-op">**</tt><tt class= [...]
+</div><div id="LPTChannel.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="LPTChannel.__init__-expanded"><a name="L103"></a><tt class="py-lineno">103</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-string">'raw_lpt_module'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">globals</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">keys</tt>< [...]
+<a name="L104"></a><tt class="py-lineno">104</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">RuntimeError</tt><tt class="py-op">(</tt><tt class="py-string">"LPT output not supported on this platform."</tt><tt class="py-op">)</tt> </tt>
+<a name="L105"></a><tt class="py-lineno">105</tt>  <tt class="py-line">        <tt id="link-13" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-13', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-14" class="py-name"><a title="VisionEgg.Daq" class="py-name" href="#" onclick="return doclink('link-14', 'Daq', 'link-6');">Daq</a></tt><tt class="py-op">.</tt><tt id="link-15" class="py-name" targets="Class VisionEgg.D [...]
+VisionEgg.Configuration.Config.__init__
+VisionEgg.Core.FixationSpot.__init__
+VisionEgg.Core.FrameTimer.__init__
+VisionEgg.Core.ModelView.__init__
+VisionEgg.Core.OrthographicProjection.__init__
+VisionEgg.Core.OrthographicProjectionNoZClip.__init__
+VisionEgg.Core.PerspectiveProjection.__init__
+VisionEgg.Core.Projection.__init__
+VisionEgg.Core.ProjectionBaseClass.__init__
+VisionEgg.Core.Screen.__init__
+VisionEgg.Core.SimplePerspectiveProjection.__init__
+VisionEgg.Core.Stimulus.__init__
+VisionEgg.Core.Viewport.__init__
+VisionEgg.Daq.Channel.__init__
+VisionEgg.Daq.DaqMode.__init__
+VisionEgg.Daq.Device.__init__
+VisionEgg.Daq.Functionality.__init__
+VisionEgg.Daq.SignalType.__init__
+VisionEgg.DaqKeyboard.KeyboardTriggerInController.__init__
+VisionEgg.DaqLPT.LPTChannel.__init__
+VisionEgg.DaqLPT.LPTDevice.__init__
+VisionEgg.DaqLPT.LPTTriggerInController.__init__
+VisionEgg.DaqLPT.LPTTriggerOutController.__init__
+VisionEgg.Deprecated.Message.__init__
+VisionEgg.Dots.DotArea2D.__init__
+VisionEgg.FlowControl.ConstantController.__init__
+VisionEgg.FlowControl.Controller.__init__
+VisionEgg.FlowControl.EncapsulatedController.__init__
+VisionEgg.FlowControl.EvalStringController.__init__
+VisionEgg.FlowControl.ExecStringController.__init__
+VisionEgg.FlowControl.FunctionController.__init__
+VisionEgg.FlowControl.Presentation.__init__
+VisionEgg.GLTrace.Wrapper.__init__
+VisionEgg.GUI.AppWindow.__init__
+VisionEgg.GUI.GetKeypressDialog.__init__
+VisionEgg.GUI.GraphicsConfigurationWindow.__init__
+VisionEgg.GUI.InfoFrame.__init__
+VisionEgg.GUI.ProgressBar.__init__
+VisionEgg.GUI.ToplevelDialog.__init__
+VisionEgg.Gratings.SinGrating2D.__init__
+VisionEgg.Gratings.SinGrating3D.__init__
+VisionEgg.MoreStimuli.Arrow.__init__
+VisionEgg.MoreStimuli.FilledCircle.__init__
+VisionEgg.MoreStimuli.Rectangle3D.__init__
+VisionEgg.MoreStimuli.Target2D.__init__
+VisionEgg.ParameterTypes.AnyOf.__init__
+VisionEgg.ParameterTypes.Instance.__init__
+VisionEgg.ParameterTypes.Sequence.__init__
+VisionEgg.ParameterTypes.SubClass.__init__
+VisionEgg.PyroApps.AST_ext.AST_Visitor.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalMetaParameters.__init__
+VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.__init__
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.__init__
+VisionEgg.PyroApps.DropinGUI.DropinMetaParameters.__init__
+VisionEgg.PyroApps.DropinServer.DropinMetaController.__init__
+VisionEgg.PyroApps.EPhysGUI.AppWindow.__init__
+VisionEgg.PyroApps.EPhysGUI.BarButton.__init__
+VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase.__init__
+VisionEgg.PyroApps.EPhysGUI.GammaFrame.__init__
+VisionEgg.PyroApps.EPhysGUI.ImageSequenceLauncher.__init__
+VisionEgg.PyroApps.EPhysGUI.Loop.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopContainedObject.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopParamDialog.__init__
+VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.__init__
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.__init__
+VisionEgg.PyroApps.EPhysServer.EPhysServer.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingMetaParameters.__init__
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.GridGUI.GridControlFrame.__init__
+VisionEgg.PyroApps.GridGUI.GridMetaParameters.__init__
+VisionEgg.PyroApps.GridServer.GridMetaController.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetMetaParameters.__init__
+VisionEgg.PyroApps.MouseTargetServer.MousePositionController.__init__
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetOrientationController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetPositionController.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.CallbackEntry.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionParameters.__init__
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingMetaParameters.__init__
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumMetaParameters.__init__
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.__init__
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.__init__
+VisionEgg.PyroApps.TargetGUI.TargetMetaParameters.__init__
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.__init__
+VisionEgg.PyroClient.PyroClient.__init__
+VisionEgg.PyroHelpers.PyroConstantController.__init__
+VisionEgg.PyroHelpers.PyroEncapsulatedController.__init__
+VisionEgg.PyroHelpers.PyroEvalStringController.__init__
+VisionEgg.PyroHelpers.PyroExecStringController.__init__
+VisionEgg.PyroHelpers.PyroListenController.__init__
+VisionEgg.PyroHelpers.PyroLocalDictController.__init__
+VisionEgg.PyroHelpers.PyroServer.__init__
+VisionEgg.QuickTime.MovieTexture.__init__
+VisionEgg.ResponseControl.KeyboardResponseController.__init__
+VisionEgg.ResponseControl.ResponseController.__init__
+VisionEgg.SphereMap.AzElGrid.__init__
+VisionEgg.SphereMap.SphereGrating.__init__
+VisionEgg.SphereMap.SphereMap.__init__
+VisionEgg.SphereMap.SphereWindow.__init__
+VisionEgg.TCPController.SocketListenController.__init__
+VisionEgg.TCPController.TCPController.__init__
+VisionEgg.TCPController.TCPServer.__init__
+VisionEgg.Text.BitmapText.__init__
+VisionEgg.Text.GlutTextBase.__init__
+VisionEgg.Text.StrokeText.__init__
+VisionEgg.Text.Text.__init__
+VisionEgg.Textures.FixationCross.__init__
+VisionEgg.Textures.Mask2D.__init__
+VisionEgg.Textures.SpinningDrum.__init__
+VisionEgg.Textures.Texture.__init__
+VisionEgg.Textures.TextureFromFile.__init__
+VisionEgg.Textures.TextureObject.__init__
+VisionEgg.Textures.TextureStimulusBaseClass.__init__
+VisionEgg.ThreeDeeMath.TransformMatrix.__init__
+VisionEgg.WrappedText.WrappedText.__init__
+VisionEgg.qtmovie.Movie.__init__
+VisionEgg.qtmovie.Rect.__init__" class="py-name" href="#" onclick="return doclink('link-16', '__init__', 'link-16');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt><tt class="py-op">**</tt><tt class="py-name">kw</tt><tt class="py-op">)</tt> </tt>
+<a name="L106"></a><tt class="py-lineno">106</tt>  <tt class="py-line">        <tt class="py-name">signal_type</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">constant_parameters</tt><tt class="py-op">.</tt><tt class="py-name">signal_type</tt> </tt>
+<a name="L107"></a><tt class="py-lineno">107</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">signal_type</tt><tt class="py-op">,</tt><tt id="link-17" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-17', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-18" class="py-name"><a title="VisionE [...]
+<a name="L108"></a><tt class="py-lineno">108</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">"Channel must be digital."</tt><tt class="py-op">)</tt> </tt>
+<a name="L109"></a><tt class="py-lineno">109</tt>  <tt class="py-line">        <tt class="py-name">daq_mode</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">constant_parameters</tt><tt class="py-op">.</tt><tt class="py-name">daq_mode</tt> </tt>
+<a name="L110"></a><tt class="py-lineno">110</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">daq_mode</tt><tt class="py-op">,</tt><tt id="link-20" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-20', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-21" class="py-name"><a title="VisionEgg. [...]
+<a name="L111"></a><tt class="py-lineno">111</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">"Channel must be immediate mode."</tt><tt class="py-op">)</tt> </tt>
+<a name="L112"></a><tt class="py-lineno">112</tt>  <tt class="py-line">        <tt class="py-name">functionality</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">constant_parameters</tt><tt class="py-op">.</tt><tt class="py-name">functionality</tt> </tt>
+<a name="L113"></a><tt class="py-lineno">113</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">functionality</tt><tt class="py-op">,</tt><tt id="link-23" class="py-name" targets="Class VisionEgg.DaqLPT.LPTInput=VisionEgg.DaqLPT.LPTInput-class.html"><a title="VisionEgg.DaqLPT.LPTInput" class="py-name" href="#" onclick="return doclink('link-23', 'LPTInput', 'link-23 [...]
+<a name="L114"></a><tt class="py-lineno">114</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">functionality</tt><tt class="py-op">,</tt><tt id="link-24" class="py-name" targets="Class VisionEgg.DaqLPT.LPTOutput=VisionEgg.DaqLPT.LPTOutput-class.html"><a title="VisionEgg.DaqLPT.LPTOutput" class="py-name" href="#" onclick="return doclink('link-24', 'LPTOutput',  [...]
+<a name="L115"></a><tt class="py-lineno">115</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">"Channel functionality must be instance of LPTInput or LPTOutput."</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L116"></a><tt class="py-lineno">116</tt>  <tt class="py-line"> </tt>
+<a name="LPTDevice"></a><div id="LPTDevice-def"><a name="L117"></a><tt class="py-lineno">117</tt> <a class="py-toggle" href="#" id="LPTDevice-toggle" onclick="return toggle('LPTDevice');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.DaqLPT.LPTDevice-class.html">LPTDevice</a><tt class="py-op">(</tt><tt class="py-base-class">VisionEgg</tt><tt class="py-op">.</tt><tt class="py-base-class">Daq</tt><tt class="py-op">.</tt><tt class="py-base [...]
+</div><div id="LPTDevice-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="LPTDevice-expanded"><a name="L118"></a><tt class="py-lineno">118</tt>  <tt class="py-line">    <tt class="py-docstring">"""A single parallel port. (Line PrinTer port.)</tt> </tt>
+<a name="L119"></a><tt class="py-lineno">119</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L120"></a><tt class="py-lineno">120</tt>  <tt class="py-line"><tt class="py-docstring">    Typically, LPT1 has a base address of 0x0378, and LPT2 has a base</tt> </tt>
+<a name="L121"></a><tt class="py-lineno">121</tt>  <tt class="py-line"><tt class="py-docstring">    address of 0x0278."""</tt> </tt>
+<a name="L122"></a><tt class="py-lineno">122</tt>  <tt class="py-line"> </tt>
+<a name="LPTDevice.__init__"></a><div id="LPTDevice.__init__-def"><a name="L123"></a><tt class="py-lineno">123</tt> <a class="py-toggle" href="#" id="LPTDevice.__init__-toggle" onclick="return toggle('LPTDevice.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.DaqLPT.LPTDevice-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt><tt class="py-param">base_address</tt><t [...]
+</div><div id="LPTDevice.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="LPTDevice.__init__-expanded"><a name="L124"></a><tt class="py-lineno">124</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-string">'raw_lpt_module'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">globals</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">keys</tt><tt [...]
+<a name="L125"></a><tt class="py-lineno">125</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">RuntimeError</tt><tt class="py-op">(</tt><tt class="py-string">"LPT output not supported on this platform."</tt><tt class="py-op">)</tt> </tt>
+<a name="L126"></a><tt class="py-lineno">126</tt>  <tt class="py-line">        <tt id="link-25" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-25', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-26" class="py-name"><a title="VisionEgg.Daq" class="py-name" href="#" onclick="return doclink('link-26', 'Daq', 'link-6');">Daq</a></tt><tt class="py-op">.</tt><tt id="link-27" class="py-name" targets="Class VisionEgg.D [...]
+VisionEgg.Configuration.Config.__init__
+VisionEgg.Core.FixationSpot.__init__
+VisionEgg.Core.FrameTimer.__init__
+VisionEgg.Core.ModelView.__init__
+VisionEgg.Core.OrthographicProjection.__init__
+VisionEgg.Core.OrthographicProjectionNoZClip.__init__
+VisionEgg.Core.PerspectiveProjection.__init__
+VisionEgg.Core.Projection.__init__
+VisionEgg.Core.ProjectionBaseClass.__init__
+VisionEgg.Core.Screen.__init__
+VisionEgg.Core.SimplePerspectiveProjection.__init__
+VisionEgg.Core.Stimulus.__init__
+VisionEgg.Core.Viewport.__init__
+VisionEgg.Daq.Channel.__init__
+VisionEgg.Daq.DaqMode.__init__
+VisionEgg.Daq.Device.__init__
+VisionEgg.Daq.Functionality.__init__
+VisionEgg.Daq.SignalType.__init__
+VisionEgg.DaqKeyboard.KeyboardTriggerInController.__init__
+VisionEgg.DaqLPT.LPTChannel.__init__
+VisionEgg.DaqLPT.LPTDevice.__init__
+VisionEgg.DaqLPT.LPTTriggerInController.__init__
+VisionEgg.DaqLPT.LPTTriggerOutController.__init__
+VisionEgg.Deprecated.Message.__init__
+VisionEgg.Dots.DotArea2D.__init__
+VisionEgg.FlowControl.ConstantController.__init__
+VisionEgg.FlowControl.Controller.__init__
+VisionEgg.FlowControl.EncapsulatedController.__init__
+VisionEgg.FlowControl.EvalStringController.__init__
+VisionEgg.FlowControl.ExecStringController.__init__
+VisionEgg.FlowControl.FunctionController.__init__
+VisionEgg.FlowControl.Presentation.__init__
+VisionEgg.GLTrace.Wrapper.__init__
+VisionEgg.GUI.AppWindow.__init__
+VisionEgg.GUI.GetKeypressDialog.__init__
+VisionEgg.GUI.GraphicsConfigurationWindow.__init__
+VisionEgg.GUI.InfoFrame.__init__
+VisionEgg.GUI.ProgressBar.__init__
+VisionEgg.GUI.ToplevelDialog.__init__
+VisionEgg.Gratings.SinGrating2D.__init__
+VisionEgg.Gratings.SinGrating3D.__init__
+VisionEgg.MoreStimuli.Arrow.__init__
+VisionEgg.MoreStimuli.FilledCircle.__init__
+VisionEgg.MoreStimuli.Rectangle3D.__init__
+VisionEgg.MoreStimuli.Target2D.__init__
+VisionEgg.ParameterTypes.AnyOf.__init__
+VisionEgg.ParameterTypes.Instance.__init__
+VisionEgg.ParameterTypes.Sequence.__init__
+VisionEgg.ParameterTypes.SubClass.__init__
+VisionEgg.PyroApps.AST_ext.AST_Visitor.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalMetaParameters.__init__
+VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.__init__
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.__init__
+VisionEgg.PyroApps.DropinGUI.DropinMetaParameters.__init__
+VisionEgg.PyroApps.DropinServer.DropinMetaController.__init__
+VisionEgg.PyroApps.EPhysGUI.AppWindow.__init__
+VisionEgg.PyroApps.EPhysGUI.BarButton.__init__
+VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase.__init__
+VisionEgg.PyroApps.EPhysGUI.GammaFrame.__init__
+VisionEgg.PyroApps.EPhysGUI.ImageSequenceLauncher.__init__
+VisionEgg.PyroApps.EPhysGUI.Loop.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopContainedObject.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopParamDialog.__init__
+VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.__init__
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.__init__
+VisionEgg.PyroApps.EPhysServer.EPhysServer.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingMetaParameters.__init__
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.GridGUI.GridControlFrame.__init__
+VisionEgg.PyroApps.GridGUI.GridMetaParameters.__init__
+VisionEgg.PyroApps.GridServer.GridMetaController.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetMetaParameters.__init__
+VisionEgg.PyroApps.MouseTargetServer.MousePositionController.__init__
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetOrientationController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetPositionController.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.CallbackEntry.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionParameters.__init__
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingMetaParameters.__init__
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumMetaParameters.__init__
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.__init__
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.__init__
+VisionEgg.PyroApps.TargetGUI.TargetMetaParameters.__init__
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.__init__
+VisionEgg.PyroClient.PyroClient.__init__
+VisionEgg.PyroHelpers.PyroConstantController.__init__
+VisionEgg.PyroHelpers.PyroEncapsulatedController.__init__
+VisionEgg.PyroHelpers.PyroEvalStringController.__init__
+VisionEgg.PyroHelpers.PyroExecStringController.__init__
+VisionEgg.PyroHelpers.PyroListenController.__init__
+VisionEgg.PyroHelpers.PyroLocalDictController.__init__
+VisionEgg.PyroHelpers.PyroServer.__init__
+VisionEgg.QuickTime.MovieTexture.__init__
+VisionEgg.ResponseControl.KeyboardResponseController.__init__
+VisionEgg.ResponseControl.ResponseController.__init__
+VisionEgg.SphereMap.AzElGrid.__init__
+VisionEgg.SphereMap.SphereGrating.__init__
+VisionEgg.SphereMap.SphereMap.__init__
+VisionEgg.SphereMap.SphereWindow.__init__
+VisionEgg.TCPController.SocketListenController.__init__
+VisionEgg.TCPController.TCPController.__init__
+VisionEgg.TCPController.TCPServer.__init__
+VisionEgg.Text.BitmapText.__init__
+VisionEgg.Text.GlutTextBase.__init__
+VisionEgg.Text.StrokeText.__init__
+VisionEgg.Text.Text.__init__
+VisionEgg.Textures.FixationCross.__init__
+VisionEgg.Textures.Mask2D.__init__
+VisionEgg.Textures.SpinningDrum.__init__
+VisionEgg.Textures.Texture.__init__
+VisionEgg.Textures.TextureFromFile.__init__
+VisionEgg.Textures.TextureObject.__init__
+VisionEgg.Textures.TextureStimulusBaseClass.__init__
+VisionEgg.ThreeDeeMath.TransformMatrix.__init__
+VisionEgg.WrappedText.WrappedText.__init__
+VisionEgg.qtmovie.Movie.__init__
+VisionEgg.qtmovie.Rect.__init__" class="py-name" href="#" onclick="return doclink('link-28', '__init__', 'link-16');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt><tt class="py-op">**</tt><tt class="py-name">kw</tt><tt class="py-op">)</tt> </tt>
+<a name="L127"></a><tt class="py-lineno">127</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">channel</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">channels</tt><tt class="py-op">:</tt> </tt>
+<a name="L128"></a><tt class="py-lineno">128</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">channel</tt><tt class="py-op">,</tt><tt id="link-29" class="py-name" targets="Class VisionEgg.DaqLPT.LPTChannel=VisionEgg.DaqLPT.LPTChannel-class.html"><a title="VisionEgg.DaqLPT.LPTChannel" class="py-name" href="#" onclick="return doclink('link-29', 'LPTChannel', 'l [...]
+<a name="L129"></a><tt class="py-lineno">129</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">"LPTDevice only has LPTChannels."</tt><tt class="py-op">)</tt> </tt>
+<a name="L130"></a><tt class="py-lineno">130</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">base_address</tt> <tt class="py-op">=</tt> <tt class="py-name">base_address</tt> </tt>
+</div><a name="L131"></a><tt class="py-lineno">131</tt>  <tt class="py-line"> </tt>
+<a name="LPTDevice.add_channel"></a><div id="LPTDevice.add_channel-def"><a name="L132"></a><tt class="py-lineno">132</tt> <a class="py-toggle" href="#" id="LPTDevice.add_channel-toggle" onclick="return toggle('LPTDevice.add_channel');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.DaqLPT.LPTDevice-class.html#add_channel">add_channel</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt><tt class="py-param">c [...]
+</div><div id="LPTDevice.add_channel-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="LPTDevice.add_channel-expanded"><a name="L133"></a><tt class="py-lineno">133</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">channel</tt><tt class="py-op">,</tt><tt id="link-30" class="py-name"><a title="VisionEgg.DaqLPT.LPTChannel" class="py-name" hr [...]
+<a name="L134"></a><tt class="py-lineno">134</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">"LPTDevice only has LPTChannels."</tt><tt class="py-op">)</tt> </tt>
+<a name="L135"></a><tt class="py-lineno">135</tt>  <tt class="py-line">        <tt id="link-31" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-31', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-32" class="py-name"><a title="VisionEgg.Daq" class="py-name" href="#" onclick="return doclink('link-32', 'Daq', 'link-6');">Daq</a></tt><tt class="py-op">.</tt><tt id="link-33" class="py-name"><a title="VisionEgg.Daq.De [...]
+VisionEgg.DaqLPT.LPTDevice.add_channel" class="py-name" href="#" onclick="return doclink('link-34', 'add_channel', 'link-34');">add_channel</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt><tt class="py-name">channel</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L136"></a><tt class="py-lineno">136</tt>  <tt class="py-line"> </tt>
+<a name="LPTTriggerOutController"></a><div id="LPTTriggerOutController-def"><a name="L137"></a><tt class="py-lineno">137</tt> <a class="py-toggle" href="#" id="LPTTriggerOutController-toggle" onclick="return toggle('LPTTriggerOutController');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.DaqLPT.LPTTriggerOutController-class.html">LPTTriggerOutController</a><tt class="py-op">(</tt><tt class="py-base-class">VisionEgg</tt><tt class="py-op [...]
+</div><div id="LPTTriggerOutController-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="LPTTriggerOutController-expanded"><a name="L138"></a><tt class="py-lineno">138</tt>  <tt class="py-line">    <tt class="py-docstring">"""Use 8 bits of digital output for triggering and frame timing verification.</tt> </tt>
+<a name="L139"></a><tt class="py-lineno">139</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L140"></a><tt class="py-lineno">140</tt>  <tt class="py-line"><tt class="py-docstring">    Bit 0 (pin 2) goes high when the go loop begins and low when the</tt> </tt>
+<a name="L141"></a><tt class="py-lineno">141</tt>  <tt class="py-line"><tt class="py-docstring">    loop ends.  Bits 1-7 (pins 3-9) count the frame_number (modulo</tt> </tt>
+<a name="L142"></a><tt class="py-lineno">142</tt>  <tt class="py-line"><tt class="py-docstring">    2^7) in binary.  Looking at any one of these pins therefore</tt> </tt>
+<a name="L143"></a><tt class="py-lineno">143</tt>  <tt class="py-line"><tt class="py-docstring">    provides verification that your stimulus is not skipping</tt> </tt>
+<a name="L144"></a><tt class="py-lineno">144</tt>  <tt class="py-line"><tt class="py-docstring">    frames."""</tt> </tt>
+<a name="L145"></a><tt class="py-lineno">145</tt>  <tt class="py-line"> </tt>
+<a name="LPTTriggerOutController.__init__"></a><div id="LPTTriggerOutController.__init__-def"><a name="L146"></a><tt class="py-lineno">146</tt> <a class="py-toggle" href="#" id="LPTTriggerOutController.__init__-toggle" onclick="return toggle('LPTTriggerOutController.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.DaqLPT.LPTTriggerOutController-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">sel [...]
+</div><div id="LPTTriggerOutController.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="LPTTriggerOutController.__init__-expanded"><a name="L147"></a><tt class="py-lineno">147</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-string">'raw_lpt_module'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">globals</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt  [...]
+<a name="L148"></a><tt class="py-lineno">148</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">RuntimeError</tt><tt class="py-op">(</tt><tt class="py-string">"LPT output not supported on this platform."</tt><tt class="py-op">)</tt> </tt>
+<a name="L149"></a><tt class="py-lineno">149</tt>  <tt class="py-line">        <tt id="link-35" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-35', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-36" class="py-name"><a title="VisionEgg.FlowControl" class="py-name" href="#" onclick="return doclink('link-36', 'FlowControl', 'link-4');">FlowControl</a></tt><tt class="py-op">.</tt><tt id="link-37" class="py-name" ta [...]
+VisionEgg.Configuration.Config.__init__
+VisionEgg.Core.FixationSpot.__init__
+VisionEgg.Core.FrameTimer.__init__
+VisionEgg.Core.ModelView.__init__
+VisionEgg.Core.OrthographicProjection.__init__
+VisionEgg.Core.OrthographicProjectionNoZClip.__init__
+VisionEgg.Core.PerspectiveProjection.__init__
+VisionEgg.Core.Projection.__init__
+VisionEgg.Core.ProjectionBaseClass.__init__
+VisionEgg.Core.Screen.__init__
+VisionEgg.Core.SimplePerspectiveProjection.__init__
+VisionEgg.Core.Stimulus.__init__
+VisionEgg.Core.Viewport.__init__
+VisionEgg.Daq.Channel.__init__
+VisionEgg.Daq.DaqMode.__init__
+VisionEgg.Daq.Device.__init__
+VisionEgg.Daq.Functionality.__init__
+VisionEgg.Daq.SignalType.__init__
+VisionEgg.DaqKeyboard.KeyboardTriggerInController.__init__
+VisionEgg.DaqLPT.LPTChannel.__init__
+VisionEgg.DaqLPT.LPTDevice.__init__
+VisionEgg.DaqLPT.LPTTriggerInController.__init__
+VisionEgg.DaqLPT.LPTTriggerOutController.__init__
+VisionEgg.Deprecated.Message.__init__
+VisionEgg.Dots.DotArea2D.__init__
+VisionEgg.FlowControl.ConstantController.__init__
+VisionEgg.FlowControl.Controller.__init__
+VisionEgg.FlowControl.EncapsulatedController.__init__
+VisionEgg.FlowControl.EvalStringController.__init__
+VisionEgg.FlowControl.ExecStringController.__init__
+VisionEgg.FlowControl.FunctionController.__init__
+VisionEgg.FlowControl.Presentation.__init__
+VisionEgg.GLTrace.Wrapper.__init__
+VisionEgg.GUI.AppWindow.__init__
+VisionEgg.GUI.GetKeypressDialog.__init__
+VisionEgg.GUI.GraphicsConfigurationWindow.__init__
+VisionEgg.GUI.InfoFrame.__init__
+VisionEgg.GUI.ProgressBar.__init__
+VisionEgg.GUI.ToplevelDialog.__init__
+VisionEgg.Gratings.SinGrating2D.__init__
+VisionEgg.Gratings.SinGrating3D.__init__
+VisionEgg.MoreStimuli.Arrow.__init__
+VisionEgg.MoreStimuli.FilledCircle.__init__
+VisionEgg.MoreStimuli.Rectangle3D.__init__
+VisionEgg.MoreStimuli.Target2D.__init__
+VisionEgg.ParameterTypes.AnyOf.__init__
+VisionEgg.ParameterTypes.Instance.__init__
+VisionEgg.ParameterTypes.Sequence.__init__
+VisionEgg.ParameterTypes.SubClass.__init__
+VisionEgg.PyroApps.AST_ext.AST_Visitor.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalMetaParameters.__init__
+VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.__init__
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.__init__
+VisionEgg.PyroApps.DropinGUI.DropinMetaParameters.__init__
+VisionEgg.PyroApps.DropinServer.DropinMetaController.__init__
+VisionEgg.PyroApps.EPhysGUI.AppWindow.__init__
+VisionEgg.PyroApps.EPhysGUI.BarButton.__init__
+VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase.__init__
+VisionEgg.PyroApps.EPhysGUI.GammaFrame.__init__
+VisionEgg.PyroApps.EPhysGUI.ImageSequenceLauncher.__init__
+VisionEgg.PyroApps.EPhysGUI.Loop.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopContainedObject.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopParamDialog.__init__
+VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.__init__
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.__init__
+VisionEgg.PyroApps.EPhysServer.EPhysServer.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingMetaParameters.__init__
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.GridGUI.GridControlFrame.__init__
+VisionEgg.PyroApps.GridGUI.GridMetaParameters.__init__
+VisionEgg.PyroApps.GridServer.GridMetaController.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetMetaParameters.__init__
+VisionEgg.PyroApps.MouseTargetServer.MousePositionController.__init__
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetOrientationController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetPositionController.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.CallbackEntry.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionParameters.__init__
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingMetaParameters.__init__
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumMetaParameters.__init__
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.__init__
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.__init__
+VisionEgg.PyroApps.TargetGUI.TargetMetaParameters.__init__
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.__init__
+VisionEgg.PyroClient.PyroClient.__init__
+VisionEgg.PyroHelpers.PyroConstantController.__init__
+VisionEgg.PyroHelpers.PyroEncapsulatedController.__init__
+VisionEgg.PyroHelpers.PyroEvalStringController.__init__
+VisionEgg.PyroHelpers.PyroExecStringController.__init__
+VisionEgg.PyroHelpers.PyroListenController.__init__
+VisionEgg.PyroHelpers.PyroLocalDictController.__init__
+VisionEgg.PyroHelpers.PyroServer.__init__
+VisionEgg.QuickTime.MovieTexture.__init__
+VisionEgg.ResponseControl.KeyboardResponseController.__init__
+VisionEgg.ResponseControl.ResponseController.__init__
+VisionEgg.SphereMap.AzElGrid.__init__
+VisionEgg.SphereMap.SphereGrating.__init__
+VisionEgg.SphereMap.SphereMap.__init__
+VisionEgg.SphereMap.SphereWindow.__init__
+VisionEgg.TCPController.SocketListenController.__init__
+VisionEgg.TCPController.TCPController.__init__
+VisionEgg.TCPController.TCPServer.__init__
+VisionEgg.Text.BitmapText.__init__
+VisionEgg.Text.GlutTextBase.__init__
+VisionEgg.Text.StrokeText.__init__
+VisionEgg.Text.Text.__init__
+VisionEgg.Textures.FixationCross.__init__
+VisionEgg.Textures.Mask2D.__init__
+VisionEgg.Textures.SpinningDrum.__init__
+VisionEgg.Textures.Texture.__init__
+VisionEgg.Textures.TextureFromFile.__init__
+VisionEgg.Textures.TextureObject.__init__
+VisionEgg.Textures.TextureStimulusBaseClass.__init__
+VisionEgg.ThreeDeeMath.TransformMatrix.__init__
+VisionEgg.WrappedText.WrappedText.__init__
+VisionEgg.qtmovie.Movie.__init__
+VisionEgg.qtmovie.Rect.__init__" class="py-name" href="#" onclick="return doclink('link-38', '__init__', 'link-16');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> </tt>
+<a name="L150"></a><tt class="py-lineno">150</tt>  <tt class="py-line">                                           <tt class="py-name">return_type</tt><tt class="py-op">=</tt><tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-39" class="py-name" targets="Class VisionEgg.ParameterTypes.NoneType=VisionEgg.ParameterTypes.NoneType-class.html"><a title="VisionEgg.ParameterTypes.NoneType" class="py-name" href="#" onclick="return doclink('link-39', 'NoneType', 'link-39');">Non [...]
+<a name="L151"></a><tt class="py-lineno">151</tt>  <tt class="py-line">                                           <tt class="py-name">eval_frequency</tt><tt class="py-op">=</tt><tt id="link-40" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-40', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-41" class="py-name"><a title="VisionEgg.FlowControl" class="py-name" href="#" onclick="return doclink('link-41', 'FlowCon [...]
+VisionEgg.FlowControl.EVERY_FRAME" class="py-name" href="#" onclick="return doclink('link-43', 'EVERY_FRAME', 'link-43');">EVERY_FRAME</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L152"></a><tt class="py-lineno">152</tt>  <tt class="py-line">        <tt class="py-comment"># Initialize DAQ stuff:</tt> </tt>
+<a name="L153"></a><tt class="py-lineno">153</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">trigger_out_channel</tt> <tt class="py-op">=</tt> <tt id="link-44" class="py-name"><a title="VisionEgg.DaqLPT.LPTChannel" class="py-name" href="#" onclick="return doclink('link-44', 'LPTChannel', 'link-29');">LPTChannel</a></tt><tt class="py-op">(</tt><tt class="py-name">signal_type</tt> <tt class="py-op">=</tt [...]
+<a name="L154"></a><tt class="py-lineno">154</tt>  <tt class="py-line">                                              <tt class="py-name">daq_mode</tt> <tt class="py-op">=</tt> <tt id="link-48" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-48', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-49" class="py-name"><a title="VisionEgg.Daq" class="py-name" href="#" onclick="return doclink('link-49', 'Daq', 'link-6'); [...]
+<a name="L155"></a><tt class="py-lineno">155</tt>  <tt class="py-line">                                              <tt class="py-name">functionality</tt> <tt class="py-op">=</tt> <tt id="link-51" class="py-name"><a title="VisionEgg.DaqLPT.LPTOutput" class="py-name" href="#" onclick="return doclink('link-51', 'LPTOutput', 'link-24');">LPTOutput</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L156"></a><tt class="py-lineno">156</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">lpt_device</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L157"></a><tt class="py-lineno">157</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">device</tt> <tt class="py-op">=</tt> <tt id="link-52" class="py-name" targets="Class VisionEgg.DaqLPT.LPTDevice=VisionEgg.DaqLPT.LPTDevice-class.html"><a title="VisionEgg.DaqLPT.LPTDevice" class="py-name" href="#" onclick="return doclink('link-52', 'LPTDevice', 'link-52');">LPTDevice</a></tt><tt class="py-op">(</tt><tt class="py-op">) [...]
+<a name="L158"></a><tt class="py-lineno">158</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L159"></a><tt class="py-lineno">159</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">lpt_device</tt><tt class="py-op">,</tt><tt id="link-53" class="py-name"><a title="VisionEgg.DaqLPT.LPTDevice" class="py-name" href="#" onclick="return doclink('link-53', 'LPTDevice', 'link-52');">LPTDevice</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L160"></a><tt class="py-lineno">160</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">"lpt_device must be instance of LPTDevice."</tt><tt class="py-op">)</tt> </tt>
+<a name="L161"></a><tt class="py-lineno">161</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">device</tt> <tt class="py-op">=</tt> <tt class="py-name">lpt_device</tt> </tt>
+<a name="L162"></a><tt class="py-lineno">162</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">device</tt><tt class="py-op">.</tt><tt id="link-54" class="py-name"><a title="VisionEgg.Daq.Device.add_channel
+VisionEgg.DaqLPT.LPTDevice.add_channel" class="py-name" href="#" onclick="return doclink('link-54', 'add_channel', 'link-34');">add_channel</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">trigger_out_channel</tt><tt class="py-op">)</tt> </tt>
+<a name="L163"></a><tt class="py-lineno">163</tt>  <tt class="py-line"> </tt>
+<a name="L164"></a><tt class="py-lineno">164</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">total_frames</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+</div><a name="LPTTriggerOutController.during_go_eval"></a><div id="LPTTriggerOutController.during_go_eval-def"><a name="L165"></a><tt class="py-lineno">165</tt> <a class="py-toggle" href="#" id="LPTTriggerOutController.during_go_eval-toggle" onclick="return toggle('LPTTriggerOutController.during_go_eval');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.DaqLPT.LPTTriggerOutController-class.html#during_go_eval">during_go_eval</a><tt cl [...]
+</div><div id="LPTTriggerOutController.during_go_eval-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="LPTTriggerOutController.during_go_eval-expanded"><a name="L166"></a><tt class="py-lineno">166</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">total_frames</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">total_frames</tt> <tt [...]
+<a name="L167"></a><tt class="py-lineno">167</tt>  <tt class="py-line">        <tt class="py-name">value</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">total_frames</tt><tt class="py-op">*</tt><tt class="py-number">2</tt> <tt class="py-op">+</tt> <tt class="py-number">1</tt> </tt>
+<a name="L168"></a><tt class="py-lineno">168</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">trigger_out_channel</tt><tt class="py-op">.</tt><tt class="py-name">constant_parameters</tt><tt class="py-op">.</tt><tt class="py-name">functionality</tt><tt class="py-op">.</tt><tt id="link-55" class="py-name" targets="Method VisionEgg.Daq.Output.put_data()=VisionEgg.Daq.Output-class.html#put_data,Method VisionEgg.DaqLPT.LPTOutput.put_da [...]
+VisionEgg.DaqLPT.LPTOutput.put_data" class="py-name" href="#" onclick="return doclink('link-55', 'put_data', 'link-55');">put_data</a></tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">)</tt> </tt>
+</div><a name="LPTTriggerOutController.between_go_eval"></a><div id="LPTTriggerOutController.between_go_eval-def"><a name="L169"></a><tt class="py-lineno">169</tt> <a class="py-toggle" href="#" id="LPTTriggerOutController.between_go_eval-toggle" onclick="return toggle('LPTTriggerOutController.between_go_eval');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.DaqLPT.LPTTriggerOutController-class.html#between_go_eval">between_go_eval</a> [...]
+</div><div id="LPTTriggerOutController.between_go_eval-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="LPTTriggerOutController.between_go_eval-expanded"><a name="L170"></a><tt class="py-lineno">170</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">total_frames</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">total_frames</tt> < [...]
+<a name="L171"></a><tt class="py-lineno">171</tt>  <tt class="py-line">        <tt class="py-name">value</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">total_frames</tt><tt class="py-op">*</tt><tt class="py-number">2</tt> <tt class="py-op">+</tt> <tt class="py-number">0</tt> </tt>
+<a name="L172"></a><tt class="py-lineno">172</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">trigger_out_channel</tt><tt class="py-op">.</tt><tt class="py-name">constant_parameters</tt><tt class="py-op">.</tt><tt class="py-name">functionality</tt><tt class="py-op">.</tt><tt id="link-56" class="py-name"><a title="VisionEgg.Daq.Output.put_data
+VisionEgg.DaqLPT.LPTOutput.put_data" class="py-name" href="#" onclick="return doclink('link-56', 'put_data', 'link-55');">put_data</a></tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L173"></a><tt class="py-lineno">173</tt>  <tt class="py-line"> </tt>
+<a name="LPTTriggerInController"></a><div id="LPTTriggerInController-def"><a name="L174"></a><tt class="py-lineno">174</tt> <a class="py-toggle" href="#" id="LPTTriggerInController-toggle" onclick="return toggle('LPTTriggerInController');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.DaqLPT.LPTTriggerInController-class.html">LPTTriggerInController</a><tt class="py-op">(</tt><tt class="py-base-class">VisionEgg</tt><tt class="py-op">.</t [...]
+</div><div id="LPTTriggerInController-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="LPTTriggerInController-expanded"><a name="LPTTriggerInController.__init__"></a><div id="LPTTriggerInController.__init__-def"><a name="L175"></a><tt class="py-lineno">175</tt> <a class="py-toggle" href="#" id="LPTTriggerInController.__init__-toggle" onclick="return toggle('LPTTriggerInController.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py [...]
+</div><div id="LPTTriggerInController.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="LPTTriggerInController.__init__-expanded"><a name="L176"></a><tt class="py-lineno">176</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-string">'raw_lpt_module'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">globals</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt cl [...]
+<a name="L177"></a><tt class="py-lineno">177</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">RuntimeError</tt><tt class="py-op">(</tt><tt class="py-string">"LPT input not supported on this platform."</tt><tt class="py-op">)</tt> </tt>
+<a name="L178"></a><tt class="py-lineno">178</tt>  <tt class="py-line">        <tt id="link-57" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-57', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-58" class="py-name"><a title="VisionEgg.FlowControl" class="py-name" href="#" onclick="return doclink('link-58', 'FlowControl', 'link-4');">FlowControl</a></tt><tt class="py-op">.</tt><tt id="link-59" class="py-name"><a [...]
+VisionEgg.Configuration.Config.__init__
+VisionEgg.Core.FixationSpot.__init__
+VisionEgg.Core.FrameTimer.__init__
+VisionEgg.Core.ModelView.__init__
+VisionEgg.Core.OrthographicProjection.__init__
+VisionEgg.Core.OrthographicProjectionNoZClip.__init__
+VisionEgg.Core.PerspectiveProjection.__init__
+VisionEgg.Core.Projection.__init__
+VisionEgg.Core.ProjectionBaseClass.__init__
+VisionEgg.Core.Screen.__init__
+VisionEgg.Core.SimplePerspectiveProjection.__init__
+VisionEgg.Core.Stimulus.__init__
+VisionEgg.Core.Viewport.__init__
+VisionEgg.Daq.Channel.__init__
+VisionEgg.Daq.DaqMode.__init__
+VisionEgg.Daq.Device.__init__
+VisionEgg.Daq.Functionality.__init__
+VisionEgg.Daq.SignalType.__init__
+VisionEgg.DaqKeyboard.KeyboardTriggerInController.__init__
+VisionEgg.DaqLPT.LPTChannel.__init__
+VisionEgg.DaqLPT.LPTDevice.__init__
+VisionEgg.DaqLPT.LPTTriggerInController.__init__
+VisionEgg.DaqLPT.LPTTriggerOutController.__init__
+VisionEgg.Deprecated.Message.__init__
+VisionEgg.Dots.DotArea2D.__init__
+VisionEgg.FlowControl.ConstantController.__init__
+VisionEgg.FlowControl.Controller.__init__
+VisionEgg.FlowControl.EncapsulatedController.__init__
+VisionEgg.FlowControl.EvalStringController.__init__
+VisionEgg.FlowControl.ExecStringController.__init__
+VisionEgg.FlowControl.FunctionController.__init__
+VisionEgg.FlowControl.Presentation.__init__
+VisionEgg.GLTrace.Wrapper.__init__
+VisionEgg.GUI.AppWindow.__init__
+VisionEgg.GUI.GetKeypressDialog.__init__
+VisionEgg.GUI.GraphicsConfigurationWindow.__init__
+VisionEgg.GUI.InfoFrame.__init__
+VisionEgg.GUI.ProgressBar.__init__
+VisionEgg.GUI.ToplevelDialog.__init__
+VisionEgg.Gratings.SinGrating2D.__init__
+VisionEgg.Gratings.SinGrating3D.__init__
+VisionEgg.MoreStimuli.Arrow.__init__
+VisionEgg.MoreStimuli.FilledCircle.__init__
+VisionEgg.MoreStimuli.Rectangle3D.__init__
+VisionEgg.MoreStimuli.Target2D.__init__
+VisionEgg.ParameterTypes.AnyOf.__init__
+VisionEgg.ParameterTypes.Instance.__init__
+VisionEgg.ParameterTypes.Sequence.__init__
+VisionEgg.ParameterTypes.SubClass.__init__
+VisionEgg.PyroApps.AST_ext.AST_Visitor.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalMetaParameters.__init__
+VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.__init__
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.__init__
+VisionEgg.PyroApps.DropinGUI.DropinMetaParameters.__init__
+VisionEgg.PyroApps.DropinServer.DropinMetaController.__init__
+VisionEgg.PyroApps.EPhysGUI.AppWindow.__init__
+VisionEgg.PyroApps.EPhysGUI.BarButton.__init__
+VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase.__init__
+VisionEgg.PyroApps.EPhysGUI.GammaFrame.__init__
+VisionEgg.PyroApps.EPhysGUI.ImageSequenceLauncher.__init__
+VisionEgg.PyroApps.EPhysGUI.Loop.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopContainedObject.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopParamDialog.__init__
+VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.__init__
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.__init__
+VisionEgg.PyroApps.EPhysServer.EPhysServer.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingMetaParameters.__init__
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.GridGUI.GridControlFrame.__init__
+VisionEgg.PyroApps.GridGUI.GridMetaParameters.__init__
+VisionEgg.PyroApps.GridServer.GridMetaController.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetMetaParameters.__init__
+VisionEgg.PyroApps.MouseTargetServer.MousePositionController.__init__
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetOrientationController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetPositionController.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.CallbackEntry.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionParameters.__init__
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingMetaParameters.__init__
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumMetaParameters.__init__
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.__init__
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.__init__
+VisionEgg.PyroApps.TargetGUI.TargetMetaParameters.__init__
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.__init__
+VisionEgg.PyroClient.PyroClient.__init__
+VisionEgg.PyroHelpers.PyroConstantController.__init__
+VisionEgg.PyroHelpers.PyroEncapsulatedController.__init__
+VisionEgg.PyroHelpers.PyroEvalStringController.__init__
+VisionEgg.PyroHelpers.PyroExecStringController.__init__
+VisionEgg.PyroHelpers.PyroListenController.__init__
+VisionEgg.PyroHelpers.PyroLocalDictController.__init__
+VisionEgg.PyroHelpers.PyroServer.__init__
+VisionEgg.QuickTime.MovieTexture.__init__
+VisionEgg.ResponseControl.KeyboardResponseController.__init__
+VisionEgg.ResponseControl.ResponseController.__init__
+VisionEgg.SphereMap.AzElGrid.__init__
+VisionEgg.SphereMap.SphereGrating.__init__
+VisionEgg.SphereMap.SphereMap.__init__
+VisionEgg.SphereMap.SphereWindow.__init__
+VisionEgg.TCPController.SocketListenController.__init__
+VisionEgg.TCPController.TCPController.__init__
+VisionEgg.TCPController.TCPServer.__init__
+VisionEgg.Text.BitmapText.__init__
+VisionEgg.Text.GlutTextBase.__init__
+VisionEgg.Text.StrokeText.__init__
+VisionEgg.Text.Text.__init__
+VisionEgg.Textures.FixationCross.__init__
+VisionEgg.Textures.Mask2D.__init__
+VisionEgg.Textures.SpinningDrum.__init__
+VisionEgg.Textures.Texture.__init__
+VisionEgg.Textures.TextureFromFile.__init__
+VisionEgg.Textures.TextureObject.__init__
+VisionEgg.Textures.TextureStimulusBaseClass.__init__
+VisionEgg.ThreeDeeMath.TransformMatrix.__init__
+VisionEgg.WrappedText.WrappedText.__init__
+VisionEgg.qtmovie.Movie.__init__
+VisionEgg.qtmovie.Rect.__init__" class="py-name" href="#" onclick="return doclink('link-60', '__init__', 'link-16');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> </tt>
+<a name="L179"></a><tt class="py-lineno">179</tt>  <tt class="py-line">                                           <tt class="py-name">return_type</tt><tt class="py-op">=</tt><tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-61" class="py-name" targets="Class VisionEgg.ParameterTypes.Integer=VisionEgg.ParameterTypes.Integer-class.html"><a title="VisionEgg.ParameterTypes.Integer" class="py-name" href="#" onclick="return doclink('link-61', 'Integer', 'link-61');">Integer [...]
+<a name="L180"></a><tt class="py-lineno">180</tt>  <tt class="py-line">                                           <tt class="py-name">eval_frequency</tt><tt class="py-op">=</tt><tt id="link-62" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-62', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-63" class="py-name"><a title="VisionEgg.FlowControl" class="py-name" href="#" onclick="return doclink('link-63', 'FlowCon [...]
+VisionEgg.FlowControl.EVERY_FRAME" class="py-name" href="#" onclick="return doclink('link-65', 'EVERY_FRAME', 'link-43');">EVERY_FRAME</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L181"></a><tt class="py-lineno">181</tt>  <tt class="py-line">        <tt class="py-comment"># Initialize DAQ stuff:</tt> </tt>
+<a name="L182"></a><tt class="py-lineno">182</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">trigger_in_channel</tt> <tt class="py-op">=</tt> <tt id="link-66" class="py-name"><a title="VisionEgg.DaqLPT.LPTChannel" class="py-name" href="#" onclick="return doclink('link-66', 'LPTChannel', 'link-29');">LPTChannel</a></tt><tt class="py-op">(</tt><tt class="py-name">signal_type</tt> <tt class="py-op">=</tt> [...]
+<a name="L183"></a><tt class="py-lineno">183</tt>  <tt class="py-line">                                             <tt class="py-name">daq_mode</tt> <tt class="py-op">=</tt> <tt id="link-70" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-70', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-71" class="py-name"><a title="VisionEgg.Daq" class="py-name" href="#" onclick="return doclink('link-71', 'Daq', 'link-6');" [...]
+<a name="L184"></a><tt class="py-lineno">184</tt>  <tt class="py-line">                                             <tt class="py-name">functionality</tt> <tt class="py-op">=</tt> <tt id="link-73" class="py-name"><a title="VisionEgg.DaqLPT.LPTInput" class="py-name" href="#" onclick="return doclink('link-73', 'LPTInput', 'link-23');">LPTInput</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L185"></a><tt class="py-lineno">185</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">lpt_device</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L186"></a><tt class="py-lineno">186</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">device</tt> <tt class="py-op">=</tt> <tt id="link-74" class="py-name"><a title="VisionEgg.DaqLPT.LPTDevice" class="py-name" href="#" onclick="return doclink('link-74', 'LPTDevice', 'link-52');">LPTDevice</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L187"></a><tt class="py-lineno">187</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L188"></a><tt class="py-lineno">188</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">lpt_device</tt><tt class="py-op">,</tt><tt id="link-75" class="py-name"><a title="VisionEgg.DaqLPT.LPTDevice" class="py-name" href="#" onclick="return doclink('link-75', 'LPTDevice', 'link-52');">LPTDevice</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L189"></a><tt class="py-lineno">189</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">"lpt_device must be instance of LPTDevice."</tt><tt class="py-op">)</tt> </tt>
+<a name="L190"></a><tt class="py-lineno">190</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">device</tt> <tt class="py-op">=</tt> <tt class="py-name">lpt_device</tt> </tt>
+<a name="L191"></a><tt class="py-lineno">191</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">device</tt><tt class="py-op">.</tt><tt id="link-76" class="py-name"><a title="VisionEgg.Daq.Device.add_channel
+VisionEgg.DaqLPT.LPTDevice.add_channel" class="py-name" href="#" onclick="return doclink('link-76', 'add_channel', 'link-34');">add_channel</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">trigger_in_channel</tt><tt class="py-op">)</tt> </tt>
+<a name="L192"></a><tt class="py-lineno">192</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">pin</tt><tt class="py-op">==</tt><tt class="py-number">15</tt><tt class="py-op">:</tt> </tt>
+<a name="L193"></a><tt class="py-lineno">193</tt>  <tt class="py-line">            <tt class="py-name">bit</tt> <tt class="py-op">=</tt> <tt class="py-number">3</tt> </tt>
+<a name="L194"></a><tt class="py-lineno">194</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">pin</tt><tt class="py-op">==</tt><tt class="py-number">13</tt><tt class="py-op">:</tt> </tt>
+<a name="L195"></a><tt class="py-lineno">195</tt>  <tt class="py-line">            <tt class="py-name">bit</tt> <tt class="py-op">=</tt> <tt class="py-number">4</tt> </tt>
+<a name="L196"></a><tt class="py-lineno">196</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">pin</tt><tt class="py-op">==</tt><tt class="py-number">12</tt><tt class="py-op">:</tt> </tt>
+<a name="L197"></a><tt class="py-lineno">197</tt>  <tt class="py-line">            <tt class="py-name">bit</tt> <tt class="py-op">=</tt> <tt class="py-number">5</tt> </tt>
+<a name="L198"></a><tt class="py-lineno">198</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">pin</tt><tt class="py-op">==</tt><tt class="py-number">10</tt><tt class="py-op">:</tt> </tt>
+<a name="L199"></a><tt class="py-lineno">199</tt>  <tt class="py-line">            <tt class="py-name">bit</tt> <tt class="py-op">=</tt> <tt class="py-number">6</tt> </tt>
+<a name="L200"></a><tt class="py-lineno">200</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">pin</tt><tt class="py-op">==</tt><tt class="py-number">11</tt><tt class="py-op">:</tt> </tt>
+<a name="L201"></a><tt class="py-lineno">201</tt>  <tt class="py-line">            <tt class="py-name">bit</tt> <tt class="py-op">=</tt> <tt class="py-number">7</tt> </tt>
+<a name="L202"></a><tt class="py-lineno">202</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L203"></a><tt class="py-lineno">203</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">"Only pins 10, 11, 12, 13 and 15 supported at this time."</tt><tt class="py-op">)</tt> </tt>
+<a name="L204"></a><tt class="py-lineno">204</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">mask</tt> <tt class="py-op">=</tt> <tt class="py-number">2</tt><tt class="py-op">**</tt><tt class="py-name">bit</tt> </tt>
+</div><a name="LPTTriggerInController.during_go_eval"></a><div id="LPTTriggerInController.during_go_eval-def"><a name="L205"></a><tt class="py-lineno">205</tt> <a class="py-toggle" href="#" id="LPTTriggerInController.during_go_eval-toggle" onclick="return toggle('LPTTriggerInController.during_go_eval');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.DaqLPT.LPTTriggerInController-class.html#during_go_eval">during_go_eval</a><tt class=" [...]
+</div><div id="LPTTriggerInController.during_go_eval-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="LPTTriggerInController.during_go_eval-expanded"><a name="L206"></a><tt class="py-lineno">206</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-number">1</tt> </tt>
+</div><a name="LPTTriggerInController.between_go_eval"></a><div id="LPTTriggerInController.between_go_eval-def"><a name="L207"></a><tt class="py-lineno">207</tt> <a class="py-toggle" href="#" id="LPTTriggerInController.between_go_eval-toggle" onclick="return toggle('LPTTriggerInController.between_go_eval');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.DaqLPT.LPTTriggerInController-class.html#between_go_eval">between_go_eval</a><tt c [...]
+</div><div id="LPTTriggerInController.between_go_eval-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="LPTTriggerInController.between_go_eval-expanded"><a name="L208"></a><tt class="py-lineno">208</tt>  <tt class="py-line">        <tt class="py-name">value</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">trigger_in_channel</tt><tt class="py-op">.</tt><tt class="py-name">constant_parameters</tt><tt class="py- [...]
+VisionEgg.DaqLPT.LPTInput.get_data" class="py-name" href="#" onclick="return doclink('link-77', 'get_data', 'link-77');">get_data</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L209"></a><tt class="py-lineno">209</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-op">(</tt><tt class="py-name">value</tt> <tt class="py-op">&</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">mask</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L210"></a><tt class="py-lineno">210</tt>  <tt class="py-line"> </tt><script type="text/javascript">
+<!--
+expandto(location.href);
+// -->
+</script>
+</pre>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:50 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.DaqLPT.LPTChannel-class.html b/doc/reference/html/VisionEgg.DaqLPT.LPTChannel-class.html
new file mode 100644
index 0000000..51c047c
--- /dev/null
+++ b/doc/reference/html/VisionEgg.DaqLPT.LPTChannel-class.html
@@ -0,0 +1,255 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.DaqLPT.LPTChannel</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.DaqLPT-module.html">Module DaqLPT</a> ::
+        Class LPTChannel
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.DaqLPT.LPTChannel-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class LPTChannel</h1><span class="codelink"><a href="VisionEgg.DaqLPT-pysrc.html#LPTChannel">source code</a></span><br /><br />
+<pre class="base-tree">
+         object --+        
+                  |        
+<a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a> --+    
+                      |    
+            <a href="VisionEgg.Daq.Channel-class.html">Daq.Channel</a> --+
+                          |
+                         <strong class="uidshort">LPTChannel</strong>
+</pre>
+
+<hr />
+<pre class="literalblock">
+A data acquisition channel using the parallel port.
+
+</pre><br /><br />
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.DaqLPT.LPTChannel-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">**kw</span>)</span><br />
+      Create self.parameters and set values.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.DaqLPT-pysrc.html#LPTChannel.__init__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.Daq.Channel-class.html">Daq.Channel</a></code></b>:
+      <code><a href="VisionEgg.Daq.Channel-class.html#arm_trigger">arm_trigger</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a></code></b>:
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__getstate__">__getstate__</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__setstate__">__setstate__</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#get_specified_type">get_specified_type</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#is_constant_parameter">is_constant_parameter</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#set">set</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#verify_parameters">verify_parameters</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__delattr__</code>,
+      <code>__getattribute__</code>,
+      <code>__hash__</code>,
+      <code>__new__</code>,
+      <code>__reduce__</code>,
+      <code>__reduce_ex__</code>,
+      <code>__repr__</code>,
+      <code>__setattr__</code>,
+      <code>__str__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Class Variables</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.Daq.Channel-class.html">Daq.Channel</a></code></b>:
+      <code><a href="VisionEgg.Daq.Channel-class.html#constant_parameters_and_defaults">constant_parameters_and_defaults</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a></code></b>:
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__safe_for_unpickling__">__safe_for_unpickling__</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#parameters_and_defaults">parameters_and_defaults</a></code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Properties</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__class__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Method Details</span></td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">**kw</span>)</span>
+    <br /><em class="fname">(Constructor)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.DaqLPT-pysrc.html#LPTChannel.__init__">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Create self.parameters and set values.
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.Daq.Channel-class.html#__init__">Daq.Channel.__init__</a>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.DaqLPT.LPTDevice-class.html b/doc/reference/html/VisionEgg.DaqLPT.LPTDevice-class.html
new file mode 100644
index 0000000..0ef79f3
--- /dev/null
+++ b/doc/reference/html/VisionEgg.DaqLPT.LPTDevice-class.html
@@ -0,0 +1,230 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.DaqLPT.LPTDevice</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.DaqLPT-module.html">Module DaqLPT</a> ::
+        Class LPTDevice
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.DaqLPT.LPTDevice-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class LPTDevice</h1><span class="codelink"><a href="VisionEgg.DaqLPT-pysrc.html#LPTDevice">source code</a></span><br /><br />
+<pre class="base-tree">
+<a href="VisionEgg.Daq.Device-class.html">Daq.Device</a> --+
+             |
+            <strong class="uidshort">LPTDevice</strong>
+</pre>
+
+<hr />
+<pre class="literalblock">
+A single parallel port. (Line PrinTer port.)
+
+Typically, LPT1 has a base address of 0x0378, and LPT2 has a base
+address of 0x0278.
+
+</pre><br /><br />
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.DaqLPT.LPTDevice-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">base_address</span>=<span class="summary-sig-default">0x378</span>,
+        <span class="summary-sig-arg">**kw</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.DaqLPT-pysrc.html#LPTDevice.__init__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.DaqLPT.LPTDevice-class.html#add_channel" class="summary-sig-name">add_channel</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">channel</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.DaqLPT-pysrc.html#LPTDevice.add_channel">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Method Details</span></td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">base_address</span>=<span class="sig-default">0x378</span>,
+        <span class="sig-arg">**kw</span>)</span>
+    <br /><em class="fname">(Constructor)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.DaqLPT-pysrc.html#LPTDevice.__init__">source code</a></span> 
+    </td>
+  </table>
+  
+  
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.Daq.Device-class.html#__init__">Daq.Device.__init__</a>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="add_channel"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">add_channel</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">channel</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.DaqLPT-pysrc.html#LPTDevice.add_channel">source code</a></span> 
+    </td>
+  </table>
+  
+  
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.Daq.Device-class.html#add_channel">Daq.Device.add_channel</a>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.DaqLPT.LPTInput-class.html b/doc/reference/html/VisionEgg.DaqLPT.LPTInput-class.html
new file mode 100644
index 0000000..3d51814
--- /dev/null
+++ b/doc/reference/html/VisionEgg.DaqLPT.LPTInput-class.html
@@ -0,0 +1,263 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.DaqLPT.LPTInput</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.DaqLPT-module.html">Module DaqLPT</a> ::
+        Class LPTInput
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.DaqLPT.LPTInput-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class LPTInput</h1><span class="codelink"><a href="VisionEgg.DaqLPT-pysrc.html#LPTInput">source code</a></span><br /><br />
+<pre class="base-tree">
+         object --+                
+                  |                
+<a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a> --+            
+                      |            
+  <a href="VisionEgg.Daq.ChannelParameters-class.html">Daq.ChannelParameters</a> --+        
+                          |        
+          <a href="VisionEgg.Daq.Functionality-class.html">Daq.Functionality</a> --+    
+                              |    
+                      <a href="VisionEgg.Daq.Input-class.html">Daq.Input</a> --+
+                                  |
+                                 <strong class="uidshort">LPTInput</strong>
+</pre>
+
+<hr />
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.DaqLPT.LPTInput-class.html#get_data" class="summary-sig-name">get_data</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      Get status bits 0-7 of the LPT port.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.DaqLPT-pysrc.html#LPTInput.get_data">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.Daq.Functionality-class.html">Daq.Functionality</a></code></b>:
+      <code><a href="VisionEgg.Daq.Functionality-class.html#__init__">__init__</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a></code></b>:
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__getstate__">__getstate__</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__setstate__">__setstate__</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#get_specified_type">get_specified_type</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#is_constant_parameter">is_constant_parameter</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#set">set</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#verify_parameters">verify_parameters</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__delattr__</code>,
+      <code>__getattribute__</code>,
+      <code>__hash__</code>,
+      <code>__new__</code>,
+      <code>__reduce__</code>,
+      <code>__reduce_ex__</code>,
+      <code>__repr__</code>,
+      <code>__setattr__</code>,
+      <code>__str__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Class Variables</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a></code></b>:
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__safe_for_unpickling__">__safe_for_unpickling__</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#constant_parameters_and_defaults">constant_parameters_and_defaults</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#parameters_and_defaults">parameters_and_defaults</a></code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Properties</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__class__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Method Details</span></td>
+</tr>
+</table>
+<a name="get_data"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">get_data</span>(<span class="sig-arg">self</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.DaqLPT-pysrc.html#LPTInput.get_data">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Get status bits 0-7 of the LPT port.
+
+The status bits were not meant for high speed digital input.
+Nevertheless, for sampling one or two digital inputs at slow
+rates, they work fine.
+
+Bits 4 and 5 (pins 13 and 12, respectively) should be first
+choice to sample a digital voltage.  The other bits have some
+oddities. Bits 0 and 1 are designated reserved. Others are
+"active low"; they show a logic 0 when +5v is applied.
+
+bit3 = value & 0x08
+bit4 = value & 0x10
+bit5 = value & 0x20
+bit6 = value & 0x40
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.Daq.Input-class.html#get_data">Daq.Input.get_data</a>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.DaqLPT.LPTOutput-class.html b/doc/reference/html/VisionEgg.DaqLPT.LPTOutput-class.html
new file mode 100644
index 0000000..7342cfa
--- /dev/null
+++ b/doc/reference/html/VisionEgg.DaqLPT.LPTOutput-class.html
@@ -0,0 +1,268 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.DaqLPT.LPTOutput</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.DaqLPT-module.html">Module DaqLPT</a> ::
+        Class LPTOutput
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.DaqLPT.LPTOutput-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class LPTOutput</h1><span class="codelink"><a href="VisionEgg.DaqLPT-pysrc.html#LPTOutput">source code</a></span><br /><br />
+<pre class="base-tree">
+         object --+                
+                  |                
+<a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a> --+            
+                      |            
+  <a href="VisionEgg.Daq.ChannelParameters-class.html">Daq.ChannelParameters</a> --+        
+                          |        
+          <a href="VisionEgg.Daq.Functionality-class.html">Daq.Functionality</a> --+    
+                              |    
+                     <a href="VisionEgg.Daq.Output-class.html">Daq.Output</a> --+
+                                  |
+                                 <strong class="uidshort">LPTOutput</strong>
+</pre>
+
+<hr />
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.DaqLPT.LPTOutput-class.html#put_data" class="summary-sig-name">put_data</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">data</span>)</span><br />
+      Set output bits 0-7 (pins 2-9) on the LPT port.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.DaqLPT-pysrc.html#LPTOutput.put_data">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__del__"></a><span class="summary-sig-name">__del__</span>(<span class="summary-sig-arg">self</span>)</span><br />
+      Set output bits low when closing.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.DaqLPT-pysrc.html#LPTOutput.__del__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.Daq.Functionality-class.html">Daq.Functionality</a></code></b>:
+      <code><a href="VisionEgg.Daq.Functionality-class.html#__init__">__init__</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a></code></b>:
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__getstate__">__getstate__</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__setstate__">__setstate__</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#get_specified_type">get_specified_type</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#is_constant_parameter">is_constant_parameter</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#set">set</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#verify_parameters">verify_parameters</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__delattr__</code>,
+      <code>__getattribute__</code>,
+      <code>__hash__</code>,
+      <code>__new__</code>,
+      <code>__reduce__</code>,
+      <code>__reduce_ex__</code>,
+      <code>__repr__</code>,
+      <code>__setattr__</code>,
+      <code>__str__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Class Variables</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a></code></b>:
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__safe_for_unpickling__">__safe_for_unpickling__</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#constant_parameters_and_defaults">constant_parameters_and_defaults</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#parameters_and_defaults">parameters_and_defaults</a></code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Properties</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__class__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Method Details</span></td>
+</tr>
+</table>
+<a name="put_data"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">put_data</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">data</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.DaqLPT-pysrc.html#LPTOutput.put_data">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Set output bits 0-7 (pins 2-9) on the LPT port.
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.Daq.Output-class.html#put_data">Daq.Output.put_data</a>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.DaqLPT.LPTTriggerInController-class.html b/doc/reference/html/VisionEgg.DaqLPT.LPTTriggerInController-class.html
new file mode 100644
index 0000000..6f49a53
--- /dev/null
+++ b/doc/reference/html/VisionEgg.DaqLPT.LPTTriggerInController-class.html
@@ -0,0 +1,348 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.DaqLPT.LPTTriggerInController</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.DaqLPT-module.html">Module DaqLPT</a> ::
+        Class LPTTriggerInController
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.DaqLPT.LPTTriggerInController-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class LPTTriggerInController</h1><span class="codelink"><a href="VisionEgg.DaqLPT-pysrc.html#LPTTriggerInController">source code</a></span><br /><br />
+<pre class="base-tree">
+            object --+    
+                     |    
+<a href="VisionEgg.FlowControl.Controller-class.html">FlowControl.Controller</a> --+
+                         |
+                        <strong class="uidshort">LPTTriggerInController</strong>
+</pre>
+
+<hr />
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.DaqLPT.LPTTriggerInController-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">lpt_device</span>=<span class="summary-sig-default">None</span>,
+        <span class="summary-sig-arg">pin</span>=<span class="summary-sig-default">13</span>)</span><br />
+      Create instance of Controller.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.DaqLPT-pysrc.html#LPTTriggerInController.__init__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.DaqLPT.LPTTriggerInController-class.html#during_go_eval" class="summary-sig-name">during_go_eval</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      Called by Presentation.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.DaqLPT-pysrc.html#LPTTriggerInController.during_go_eval">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.DaqLPT.LPTTriggerInController-class.html#between_go_eval" class="summary-sig-name">between_go_eval</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      Called by Presentation.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.DaqLPT-pysrc.html#LPTTriggerInController.between_go_eval">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.FlowControl.Controller-class.html">FlowControl.Controller</a></code></b>:
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#evaluate_now">evaluate_now</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#returns_type">returns_type</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#set_eval_frequency">set_eval_frequency</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__delattr__</code>,
+      <code>__getattribute__</code>,
+      <code>__hash__</code>,
+      <code>__new__</code>,
+      <code>__reduce__</code>,
+      <code>__reduce_ex__</code>,
+      <code>__repr__</code>,
+      <code>__setattr__</code>,
+      <code>__str__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Class Variables</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.FlowControl.Controller-class.html">FlowControl.Controller</a></code></b>:
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#EVERY_FRAME">EVERY_FRAME</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#FRAMES_ABSOLUTE">FRAMES_ABSOLUTE</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#FRAMES_SINCE_GO">FRAMES_SINCE_GO</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#NEVER">NEVER</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#NOT_BETWEEN_GO">NOT_BETWEEN_GO</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#NOT_DURING_GO">NOT_DURING_GO</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#ONCE">ONCE</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#TIME_INDEPENDENT">TIME_INDEPENDENT</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#TIME_SEC_ABSOLUTE">TIME_SEC_ABSOLUTE</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#TIME_SEC_SINCE_GO">TIME_SEC_SINCE_GO</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#TRANSITIONS">TRANSITIONS</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#flag_dictionary">flag_dictionary</a></code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Properties</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__class__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Method Details</span></td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">lpt_device</span>=<span class="sig-default">None</span>,
+        <span class="sig-arg">pin</span>=<span class="sig-default">13</span>)</span>
+    <br /><em class="fname">(Constructor)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.DaqLPT-pysrc.html#LPTTriggerInController.__init__">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Create instance of Controller.
+
+Arguments:
+
+eval_frequency -- Int, bitwise "or" of flags
+temporal_variables -- Int, bitwise "or" of flags
+return_type -- Set to type() of the parameter under control
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.FlowControl.Controller-class.html#__init__">FlowControl.Controller.__init__</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="during_go_eval"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">during_go_eval</span>(<span class="sig-arg">self</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.DaqLPT-pysrc.html#LPTTriggerInController.during_go_eval">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Called by Presentation. Evaluate during the main 'go' loop.
+
+Override this method in subclasses.
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.FlowControl.Controller-class.html#during_go_eval">FlowControl.Controller.during_go_eval</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="between_go_eval"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">between_go_eval</span>(<span class="sig-arg">self</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.DaqLPT-pysrc.html#LPTTriggerInController.between_go_eval">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Called by Presentation. Evaluate between runs of the main 'go' loop.
+
+Override this method in subclasses.
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.FlowControl.Controller-class.html#between_go_eval">FlowControl.Controller.between_go_eval</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.DaqLPT.LPTTriggerOutController-class.html b/doc/reference/html/VisionEgg.DaqLPT.LPTTriggerOutController-class.html
new file mode 100644
index 0000000..cdf5ac2
--- /dev/null
+++ b/doc/reference/html/VisionEgg.DaqLPT.LPTTriggerOutController-class.html
@@ -0,0 +1,357 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.DaqLPT.LPTTriggerOutController</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.DaqLPT-module.html">Module DaqLPT</a> ::
+        Class LPTTriggerOutController
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.DaqLPT.LPTTriggerOutController-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class LPTTriggerOutController</h1><span class="codelink"><a href="VisionEgg.DaqLPT-pysrc.html#LPTTriggerOutController">source code</a></span><br /><br />
+<pre class="base-tree">
+            object --+    
+                     |    
+<a href="VisionEgg.FlowControl.Controller-class.html">FlowControl.Controller</a> --+
+                         |
+                        <strong class="uidshort">LPTTriggerOutController</strong>
+</pre>
+
+<hr />
+<pre class="literalblock">
+Use 8 bits of digital output for triggering and frame timing verification.
+
+Bit 0 (pin 2) goes high when the go loop begins and low when the
+loop ends.  Bits 1-7 (pins 3-9) count the frame_number (modulo
+2^7) in binary.  Looking at any one of these pins therefore
+provides verification that your stimulus is not skipping
+frames.
+
+</pre><br /><br />
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.DaqLPT.LPTTriggerOutController-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">lpt_device</span>=<span class="summary-sig-default">None</span>)</span><br />
+      Create instance of Controller.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.DaqLPT-pysrc.html#LPTTriggerOutController.__init__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.DaqLPT.LPTTriggerOutController-class.html#during_go_eval" class="summary-sig-name">during_go_eval</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      Called by Presentation.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.DaqLPT-pysrc.html#LPTTriggerOutController.during_go_eval">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.DaqLPT.LPTTriggerOutController-class.html#between_go_eval" class="summary-sig-name">between_go_eval</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      Called by Presentation.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.DaqLPT-pysrc.html#LPTTriggerOutController.between_go_eval">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.FlowControl.Controller-class.html">FlowControl.Controller</a></code></b>:
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#evaluate_now">evaluate_now</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#returns_type">returns_type</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#set_eval_frequency">set_eval_frequency</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__delattr__</code>,
+      <code>__getattribute__</code>,
+      <code>__hash__</code>,
+      <code>__new__</code>,
+      <code>__reduce__</code>,
+      <code>__reduce_ex__</code>,
+      <code>__repr__</code>,
+      <code>__setattr__</code>,
+      <code>__str__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Class Variables</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.FlowControl.Controller-class.html">FlowControl.Controller</a></code></b>:
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#EVERY_FRAME">EVERY_FRAME</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#FRAMES_ABSOLUTE">FRAMES_ABSOLUTE</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#FRAMES_SINCE_GO">FRAMES_SINCE_GO</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#NEVER">NEVER</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#NOT_BETWEEN_GO">NOT_BETWEEN_GO</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#NOT_DURING_GO">NOT_DURING_GO</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#ONCE">ONCE</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#TIME_INDEPENDENT">TIME_INDEPENDENT</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#TIME_SEC_ABSOLUTE">TIME_SEC_ABSOLUTE</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#TIME_SEC_SINCE_GO">TIME_SEC_SINCE_GO</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#TRANSITIONS">TRANSITIONS</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#flag_dictionary">flag_dictionary</a></code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Properties</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__class__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Method Details</span></td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">lpt_device</span>=<span class="sig-default">None</span>)</span>
+    <br /><em class="fname">(Constructor)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.DaqLPT-pysrc.html#LPTTriggerOutController.__init__">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Create instance of Controller.
+
+Arguments:
+
+eval_frequency -- Int, bitwise "or" of flags
+temporal_variables -- Int, bitwise "or" of flags
+return_type -- Set to type() of the parameter under control
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.FlowControl.Controller-class.html#__init__">FlowControl.Controller.__init__</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="during_go_eval"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">during_go_eval</span>(<span class="sig-arg">self</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.DaqLPT-pysrc.html#LPTTriggerOutController.during_go_eval">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Called by Presentation. Evaluate during the main 'go' loop.
+
+Override this method in subclasses.
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.FlowControl.Controller-class.html#during_go_eval">FlowControl.Controller.during_go_eval</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="between_go_eval"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">between_go_eval</span>(<span class="sig-arg">self</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.DaqLPT-pysrc.html#LPTTriggerOutController.between_go_eval">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Called by Presentation. Evaluate between runs of the main 'go' loop.
+
+Override this method in subclasses.
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.FlowControl.Controller-class.html#between_go_eval">FlowControl.Controller.between_go_eval</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.Deprecated-module.html b/doc/reference/html/VisionEgg.Deprecated-module.html
new file mode 100644
index 0000000..6e93efa
--- /dev/null
+++ b/doc/reference/html/VisionEgg.Deprecated-module.html
@@ -0,0 +1,135 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.Deprecated</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        Module Deprecated
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.Deprecated-module.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== MODULE DESCRIPTION ==================== -->
+<h1 class="epydoc">Module Deprecated</h1><span class="codelink"><a href="VisionEgg.Deprecated-pysrc.html">source code</a></span><br /><br />
+<pre class="literalblock">
+
+Bits of code which will be removed in the future.
+
+</pre><br /><br />
+
+<!-- ==================== CLASSES ==================== -->
+<a name="section-Classes"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Classes</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.Deprecated.Message-class.html" class="summary-name">Message</a><br />
+      DEPRECATED Handles message/warning/error printing, exception raising.
+    </td>
+  </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.Deprecated-pysrc.html b/doc/reference/html/VisionEgg.Deprecated-pysrc.html
new file mode 100644
index 0000000..06abf12
--- /dev/null
+++ b/doc/reference/html/VisionEgg.Deprecated-pysrc.html
@@ -0,0 +1,233 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.Deprecated</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        Module Deprecated
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.Deprecated-pysrc.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<h1 class="epydoc">Source Code for <a href="VisionEgg.Deprecated-module.html">Module VisionEgg.Deprecated</a></h1>
+<pre class="py-src">
+<a name="L1"></a><tt class="py-lineno">  1</tt>  <tt class="py-line"><tt class="py-comment"># The Vision Egg: Deprecated</tt> </tt>
+<a name="L2"></a><tt class="py-lineno">  2</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L3"></a><tt class="py-lineno">  3</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Copyright (C) 2001-2003 Andrew Straw.</tt> </tt>
+<a name="L4"></a><tt class="py-lineno">  4</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Copyright (C) 2008 California Institute of Technology</tt> </tt>
+<a name="L5"></a><tt class="py-lineno">  5</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L6"></a><tt class="py-lineno">  6</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># URL: <http://www.visionegg.org/></tt> </tt>
+<a name="L7"></a><tt class="py-lineno">  7</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L8"></a><tt class="py-lineno">  8</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Distributed under the terms of the GNU Lesser General Public License</tt> </tt>
+<a name="L9"></a><tt class="py-lineno">  9</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># (LGPL). See LICENSE.TXT that came with this file.</tt> </tt>
+<a name="L10"></a><tt class="py-lineno"> 10</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L11"></a><tt class="py-lineno"> 11</tt>  <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L12"></a><tt class="py-lineno"> 12</tt>  <tt class="py-line"><tt class="py-docstring">Bits of code which will be removed in the future.</tt> </tt>
+<a name="L13"></a><tt class="py-lineno"> 13</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L14"></a><tt class="py-lineno"> 14</tt>  <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L15"></a><tt class="py-lineno"> 15</tt>  <tt class="py-line"> </tt>
+<a name="L16"></a><tt class="py-lineno"> 16</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-0" class="py-name" targets="Package VisionEgg=VisionEgg-module.html"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-0', 'VisionEgg', 'link-0');">VisionEgg</a></tt> </tt>
+<a name="L17"></a><tt class="py-lineno"> 17</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">sys</tt><tt class="py-op">,</tt> <tt class="py-name">os</tt> </tt>
+<a name="L18"></a><tt class="py-lineno"> 18</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">logging</tt>                              <tt class="py-comment"># available in Python 2.3</tt> </tt>
+<a name="L19"></a><tt class="py-lineno"> 19</tt>  <tt class="py-line"> </tt>
+<a name="L20"></a><tt class="py-lineno"> 20</tt>  <tt class="py-line"><tt class="py-comment">####################################################################</tt> </tt>
+<a name="L21"></a><tt class="py-lineno"> 21</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L22"></a><tt class="py-lineno"> 22</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#        Error handling and assumption checking</tt> </tt>
+<a name="L23"></a><tt class="py-lineno"> 23</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L24"></a><tt class="py-lineno"> 24</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">####################################################################</tt> </tt>
+<a name="L25"></a><tt class="py-lineno"> 25</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="Message"></a><div id="Message-def"><a name="L26"></a><tt class="py-lineno"> 26</tt> <a class="py-toggle" href="#" id="Message-toggle" onclick="return toggle('Message');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.Deprecated.Message-class.html">Message</a><tt class="py-op">:</tt> </tt>
+</div><div id="Message-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="Message-expanded"><a name="L27"></a><tt class="py-lineno"> 27</tt>  <tt class="py-line">    <tt class="py-docstring">"""DEPRECATED Handles message/warning/error printing, exception raising."""</tt> </tt>
+<a name="L28"></a><tt class="py-lineno"> 28</tt>  <tt class="py-line"> </tt>
+<a name="L29"></a><tt class="py-lineno"> 29</tt>  <tt class="py-line">    <tt class="py-comment"># Levels are:</tt> </tt>
+<a name="L30"></a><tt class="py-lineno"> 30</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-1" class="py-name" targets="Variable VisionEgg.Deprecated.Message.TRIVIAL=VisionEgg.Deprecated.Message-class.html#TRIVIAL"><a title="VisionEgg.Deprecated.Message.TRIVIAL" class="py-name" href="#" onclick="return doclink('link-1', 'TRIVIAL', 'link-1');">TRIVIAL</a></tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L31"></a><tt class="py-lineno"> 31</tt>  <tt class="py-line">    <tt id="link-2" class="py-name" targets="Variable VisionEgg.Deprecated.Message.NAG=VisionEgg.Deprecated.Message-class.html#NAG"><a title="VisionEgg.Deprecated.Message.NAG" class="py-name" href="#" onclick="return doclink('link-2', 'NAG', 'link-2');">NAG</a></tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L32"></a><tt class="py-lineno"> 32</tt>  <tt class="py-line">    <tt id="link-3" class="py-name" targets="Variable VisionEgg.Deprecated.Message.INFO=VisionEgg.Deprecated.Message-class.html#INFO"><a title="VisionEgg.Deprecated.Message.INFO" class="py-name" href="#" onclick="return doclink('link-3', 'INFO', 'link-3');">INFO</a></tt> <tt class="py-op">=</tt> <tt class="py-number">2</tt> </tt>
+<a name="L33"></a><tt class="py-lineno"> 33</tt>  <tt class="py-line">    <tt id="link-4" class="py-name" targets="Variable VisionEgg.Deprecated.Message.DEPRECATION=VisionEgg.Deprecated.Message-class.html#DEPRECATION"><a title="VisionEgg.Deprecated.Message.DEPRECATION" class="py-name" href="#" onclick="return doclink('link-4', 'DEPRECATION', 'link-4');">DEPRECATION</a></tt> <tt class="py-op">=</tt> <tt class="py-number">3</tt> </tt>
+<a name="L34"></a><tt class="py-lineno"> 34</tt>  <tt class="py-line">    <tt id="link-5" class="py-name" targets="Variable VisionEgg.Deprecated.Message.WARNING=VisionEgg.Deprecated.Message-class.html#WARNING"><a title="VisionEgg.Deprecated.Message.WARNING" class="py-name" href="#" onclick="return doclink('link-5', 'WARNING', 'link-5');">WARNING</a></tt> <tt class="py-op">=</tt> <tt class="py-number">4</tt> </tt>
+<a name="L35"></a><tt class="py-lineno"> 35</tt>  <tt class="py-line">    <tt id="link-6" class="py-name" targets="Variable VisionEgg.Deprecated.Message.ERROR=VisionEgg.Deprecated.Message-class.html#ERROR"><a title="VisionEgg.Deprecated.Message.ERROR" class="py-name" href="#" onclick="return doclink('link-6', 'ERROR', 'link-6');">ERROR</a></tt> <tt class="py-op">=</tt> <tt class="py-number">5</tt> </tt>
+<a name="L36"></a><tt class="py-lineno"> 36</tt>  <tt class="py-line">    <tt id="link-7" class="py-name" targets="Variable VisionEgg.Deprecated.Message.FATAL=VisionEgg.Deprecated.Message-class.html#FATAL"><a title="VisionEgg.Deprecated.Message.FATAL" class="py-name" href="#" onclick="return doclink('link-7', 'FATAL', 'link-7');">FATAL</a></tt> <tt class="py-op">=</tt> <tt class="py-number">6</tt> </tt>
+<a name="L37"></a><tt class="py-lineno"> 37</tt>  <tt class="py-line"> </tt>
+<a name="Message.__init__"></a><div id="Message.__init__-def"><a name="L38"></a><tt class="py-lineno"> 38</tt> <a class="py-toggle" href="#" id="Message.__init__-toggle" onclick="return toggle('Message.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.Deprecated.Message-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Message.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Message.__init__-expanded"><a name="L39"></a><tt class="py-lineno"> 39</tt>  <tt class="py-line"><tt class="py-comment">##        script_name = sys.argv[0]</tt> </tt>
+<a name="L40"></a><tt class="py-lineno"> 40</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">##        if not script_name:</tt> </tt>
+<a name="L41"></a><tt class="py-lineno"> 41</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">##            script_name = "(interactive shell)"</tt> </tt>
+<a name="L42"></a><tt class="py-lineno"> 42</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">pid</tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">getpid</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L43"></a><tt class="py-lineno"> 43</tt>  <tt class="py-line"><tt class="py-comment">##        self.logger.info("Script "+script_name+" started Vision Egg %s with process id %d."%(VisionEgg.release_name,self.pid))</tt> </tt>
+<a name="L44"></a><tt class="py-lineno"> 44</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="Message.add"></a><div id="Message.add-def"><a name="L45"></a><tt class="py-lineno"> 45</tt> <a class="py-toggle" href="#" id="Message.add-toggle" onclick="return toggle('Message.add');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.Deprecated.Message-class.html#add">add</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt><tt class="py-param">message</tt><tt class="py-op">,</tt><tt class="py-param" [...]
+</div><div id="Message.add-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Message.add-expanded"><a name="L46"></a><tt class="py-lineno"> 46</tt>  <tt class="py-line">        <tt class="py-name">level_translate</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> </tt>
+<a name="L47"></a><tt class="py-lineno"> 47</tt>  <tt class="py-line">            <tt class="py-comment"># convert from old VisionEgg levels to new logging module levels</tt> </tt>
+<a name="L48"></a><tt class="py-lineno"> 48</tt>  <tt class="py-line">            <tt id="link-9" class="py-name" targets="Class VisionEgg.Deprecated.Message=VisionEgg.Deprecated.Message-class.html"><a title="VisionEgg.Deprecated.Message" class="py-name" href="#" onclick="return doclink('link-9', 'Message', 'link-9');">Message</a></tt><tt class="py-op">.</tt><tt id="link-10" class="py-name"><a title="VisionEgg.Deprecated.Message.TRIVIAL" class="py-name" href="#" onclick="return doclink(' [...]
+<a name="L49"></a><tt class="py-lineno"> 49</tt>  <tt class="py-line">            <tt id="link-11" class="py-name"><a title="VisionEgg.Deprecated.Message" class="py-name" href="#" onclick="return doclink('link-11', 'Message', 'link-9');">Message</a></tt><tt class="py-op">.</tt><tt id="link-12" class="py-name"><a title="VisionEgg.Deprecated.Message.NAG" class="py-name" href="#" onclick="return doclink('link-12', 'NAG', 'link-2');">NAG</a></tt>         <tt class="py-op">:</tt> <tt class="p [...]
+<a name="L50"></a><tt class="py-lineno"> 50</tt>  <tt class="py-line">            <tt id="link-13" class="py-name"><a title="VisionEgg.Deprecated.Message" class="py-name" href="#" onclick="return doclink('link-13', 'Message', 'link-9');">Message</a></tt><tt class="py-op">.</tt><tt id="link-14" class="py-name"><a title="VisionEgg.Deprecated.Message.INFO" class="py-name" href="#" onclick="return doclink('link-14', 'INFO', 'link-3');">INFO</a></tt>        <tt class="py-op">:</tt> <tt class= [...]
+<a name="L51"></a><tt class="py-lineno"> 51</tt>  <tt class="py-line">            <tt id="link-16" class="py-name"><a title="VisionEgg.Deprecated.Message" class="py-name" href="#" onclick="return doclink('link-16', 'Message', 'link-9');">Message</a></tt><tt class="py-op">.</tt><tt id="link-17" class="py-name"><a title="VisionEgg.Deprecated.Message.DEPRECATION" class="py-name" href="#" onclick="return doclink('link-17', 'DEPRECATION', 'link-4');">DEPRECATION</a></tt> <tt class="py-op">:</ [...]
+<a name="L52"></a><tt class="py-lineno"> 52</tt>  <tt class="py-line">            <tt id="link-19" class="py-name"><a title="VisionEgg.Deprecated.Message" class="py-name" href="#" onclick="return doclink('link-19', 'Message', 'link-9');">Message</a></tt><tt class="py-op">.</tt><tt id="link-20" class="py-name"><a title="VisionEgg.Deprecated.Message.WARNING" class="py-name" href="#" onclick="return doclink('link-20', 'WARNING', 'link-5');">WARNING</a></tt>     <tt class="py-op">:</tt> <tt  [...]
+<a name="L53"></a><tt class="py-lineno"> 53</tt>  <tt class="py-line">            <tt id="link-22" class="py-name"><a title="VisionEgg.Deprecated.Message" class="py-name" href="#" onclick="return doclink('link-22', 'Message', 'link-9');">Message</a></tt><tt class="py-op">.</tt><tt id="link-23" class="py-name"><a title="VisionEgg.Deprecated.Message.ERROR" class="py-name" href="#" onclick="return doclink('link-23', 'ERROR', 'link-6');">ERROR</a></tt>       <tt class="py-op">:</tt> <tt clas [...]
+<a name="L54"></a><tt class="py-lineno"> 54</tt>  <tt class="py-line">            <tt id="link-25" class="py-name"><a title="VisionEgg.Deprecated.Message" class="py-name" href="#" onclick="return doclink('link-25', 'Message', 'link-9');">Message</a></tt><tt class="py-op">.</tt><tt id="link-26" class="py-name"><a title="VisionEgg.Deprecated.Message.FATAL" class="py-name" href="#" onclick="return doclink('link-26', 'FATAL', 'link-7');">FATAL</a></tt>       <tt class="py-op">:</tt> <tt clas [...]
+<a name="L55"></a><tt class="py-lineno"> 55</tt>  <tt class="py-line">            <tt class="py-op">}</tt> </tt>
+<a name="L56"></a><tt class="py-lineno"> 56</tt>  <tt class="py-line">        <tt class="py-name">new_level</tt> <tt class="py-op">=</tt> <tt class="py-name">level_translate</tt><tt class="py-op">[</tt> <tt class="py-name">level</tt> <tt class="py-op">]</tt> </tt>
+<a name="L57"></a><tt class="py-lineno"> 57</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt><tt class="py-string">"logger"</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L58"></a><tt class="py-lineno"> 58</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-27" class="py-name" targets="Variable VisionEgg.logger=VisionEgg-module.html#logger"><a title="VisionEgg.logger" class="py-name" href="#" onclick="return doclink('link-27', 'logger', 'link-27');">logger</a></tt> <tt class="py-op">=</tt> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">getLogger</tt><tt class="py-op" [...]
+<a name="L59"></a><tt class="py-lineno"> 59</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-28" class="py-name"><a title="VisionEgg.logger" class="py-name" href="#" onclick="return doclink('link-28', 'logger', 'link-27');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">log</tt><tt class="py-op">(</tt><tt class="py-name">new_level</tt><tt class="py-op">,</tt><tt id="link-29" class="py-name" targets="Variable VisionEgg.Core.me [...]
+</div><a name="L60"></a><tt class="py-lineno"> 60</tt>  <tt class="py-line"> </tt>
+<a name="Message.format_string"></a><div id="Message.format_string-def"><a name="L61"></a><tt class="py-lineno"> 61</tt> <a class="py-toggle" href="#" id="Message.format_string-toggle" onclick="return toggle('Message.format_string');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.Deprecated.Message-class.html#format_string">format_string</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt><tt class="py-par [...]
+</div><div id="Message.format_string-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Message.format_string-expanded"><a name="L62"></a><tt class="py-lineno"> 62</tt>  <tt class="py-line">        <tt class="py-comment"># This probably a slow way to do things, but it works!</tt> </tt>
+<a name="L63"></a><tt class="py-lineno"> 63</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">min_line_length</tt> <tt class="py-op">=</tt> <tt class="py-number">70</tt> </tt>
+<a name="L64"></a><tt class="py-lineno"> 64</tt>  <tt class="py-line">        <tt class="py-name">in_list</tt> <tt class="py-op">=</tt> <tt class="py-name">in_str</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L65"></a><tt class="py-lineno"> 65</tt>  <tt class="py-line">        <tt class="py-name">out_str</tt> <tt class="py-op">=</tt> <tt class="py-string">""</tt> </tt>
+<a name="L66"></a><tt class="py-lineno"> 66</tt>  <tt class="py-line">        <tt class="py-name">cur_line</tt> <tt class="py-op">=</tt> <tt class="py-string">""</tt> </tt>
+<a name="L67"></a><tt class="py-lineno"> 67</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">word</tt> <tt class="py-keyword">in</tt> <tt class="py-name">in_list</tt><tt class="py-op">:</tt> </tt>
+<a name="L68"></a><tt class="py-lineno"> 68</tt>  <tt class="py-line">            <tt class="py-name">cur_line</tt> <tt class="py-op">=</tt> <tt class="py-name">cur_line</tt> <tt class="py-op">+</tt> <tt class="py-name">word</tt> <tt class="py-op">+</tt> <tt class="py-string">" "</tt> </tt>
+<a name="L69"></a><tt class="py-lineno"> 69</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">cur_line</tt><tt class="py-op">)</tt> <tt class="py-op">></tt> <tt class="py-name">min_line_length</tt><tt class="py-op">:</tt> </tt>
+<a name="L70"></a><tt class="py-lineno"> 70</tt>  <tt class="py-line">                <tt class="py-name">out_str</tt> <tt class="py-op">=</tt> <tt class="py-name">out_str</tt> <tt class="py-op">+</tt> <tt class="py-name">cur_line</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-op">+</tt> <tt class="py-string">"\n"</tt> </tt>
+<a name="L71"></a><tt class="py-lineno"> 71</tt>  <tt class="py-line">                <tt class="py-name">cur_line</tt> <tt class="py-op">=</tt> <tt class="py-string">"    "</tt> </tt>
+<a name="L72"></a><tt class="py-lineno"> 72</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">cur_line</tt><tt class="py-op">.</tt><tt class="py-name">strip</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L73"></a><tt class="py-lineno"> 73</tt>  <tt class="py-line">            <tt class="py-comment"># only add another newline if the last line done is non-empty</tt> </tt>
+<a name="L74"></a><tt class="py-lineno"> 74</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">out_str</tt> <tt class="py-op">=</tt> <tt class="py-name">out_str</tt> <tt class="py-op">+</tt> <tt class="py-name">cur_line</tt> <tt class="py-op">+</tt> <tt class="py-string">"\n"</tt> </tt>
+<a name="L75"></a><tt class="py-lineno"> 75</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">out_str</tt> </tt>
+</div><a name="L76"></a><tt class="py-lineno"> 76</tt>  <tt class="py-line"> </tt>
+<a name="Message.handle"></a><div id="Message.handle-def"><a name="L77"></a><tt class="py-lineno"> 77</tt> <a class="py-toggle" href="#" id="Message.handle-toggle" onclick="return toggle('Message.handle');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.Deprecated.Message-class.html#handle">handle</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Message.handle-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Message.handle-expanded"><a name="L78"></a><tt class="py-lineno"> 78</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_sent_initial_newline</tt><tt class="py-op">:</tt> </tt>
+<a name="L79"></a><tt class="py-lineno"> 79</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">output_stream</tt><tt class="py-op">.</tt><tt class="py-name">write</tt><tt class="py-op">(</tt><tt class="py-string">"\n"</tt><tt class="py-op">,</tt><tt class="py-name">_no_sys_stderr</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="L80"></a><tt class="py-lineno"> 80</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">output_stream</tt><tt class="py-op">.</tt><tt class="py-name">flush</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L81"></a><tt class="py-lineno"> 81</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_sent_initial_newline</tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L82"></a><tt class="py-lineno"> 82</tt>  <tt class="py-line">        <tt class="py-keyword">while</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">message_queue</tt><tt class="py-op">)</tt> <tt class="py-op">></tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt>
+<a name="L83"></a><tt class="py-lineno"> 83</tt>  <tt class="py-line">            <tt class="py-name">my_str</tt> <tt class="py-op">=</tt> <tt class="py-string">""</tt> </tt>
+<a name="L84"></a><tt class="py-lineno"> 84</tt>  <tt class="py-line">            <tt class="py-name">level</tt><tt class="py-op">,</tt><tt class="py-name">text</tt><tt class="py-op">,</tt><tt class="py-name">preserve_formatting</tt><tt class="py-op">,</tt><tt class="py-name">date_str</tt><tt class="py-op">,</tt><tt class="py-name">no_sys_stderr</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">message_queue</tt><tt class="py-op">.</tt [...]
+<a name="L85"></a><tt class="py-lineno"> 85</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">level</tt> <tt class="py-op">>=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">print_level</tt><tt class="py-op">:</tt> </tt>
+<a name="L86"></a><tt class="py-lineno"> 86</tt>  <tt class="py-line">                <tt class="py-name">my_str</tt><tt class="py-op">=</tt> <tt class="py-name">my_str</tt><tt class="py-op">+</tt><tt class="py-name">date_str</tt><tt class="py-op">+</tt><tt class="py-string">" "</tt> </tt>
+<a name="L87"></a><tt class="py-lineno"> 87</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">pid</tt><tt class="py-op">:</tt> </tt>
+<a name="L88"></a><tt class="py-lineno"> 88</tt>  <tt class="py-line">                    <tt class="py-name">my_str</tt> <tt class="py-op">+=</tt> <tt class="py-string">"(%d) "</tt><tt class="py-op">%</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">pid</tt><tt class="py-op">,</tt><tt class="py-op">)</tt> </tt>
+<a name="L89"></a><tt class="py-lineno"> 89</tt>  <tt class="py-line">                <tt class="py-comment">#my_str=my_str+self.prefix+" "</tt> </tt>
+<a name="L90"></a><tt class="py-lineno"> 90</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-keyword">if</tt> <tt class="py-name">level</tt> <tt class="py-op">==</tt> <tt id="link-30" class="py-name"><a title="VisionEgg.Deprecated.Message" class="py-name" href="#" onclick="return doclink('link-30', 'Message', 'link-9');">Message</a></tt><tt class="py-op">.</tt><tt id="link-31" class="py-name"><a title="VisionEgg.Deprecated.Message.TRIVIAL" class="py-nam [...]
+<a name="L91"></a><tt class="py-lineno"> 91</tt>  <tt class="py-line">                    <tt class="py-name">my_str</tt><tt class="py-op">=</tt><tt class="py-name">my_str</tt><tt class="py-op">+</tt><tt class="py-string">"trivial"</tt> </tt>
+<a name="L92"></a><tt class="py-lineno"> 92</tt>  <tt class="py-line">                <tt class="py-keyword">elif</tt> <tt class="py-name">level</tt> <tt class="py-op">==</tt> <tt id="link-32" class="py-name"><a title="VisionEgg.Deprecated.Message" class="py-name" href="#" onclick="return doclink('link-32', 'Message', 'link-9');">Message</a></tt><tt class="py-op">.</tt><tt id="link-33" class="py-name"><a title="VisionEgg.Deprecated.Message.INFO" class="py-name" href="#" onclick="return d [...]
+<a name="L93"></a><tt class="py-lineno"> 93</tt>  <tt class="py-line">                    <tt class="py-name">my_str</tt><tt class="py-op">=</tt><tt class="py-name">my_str</tt><tt class="py-op">+</tt><tt class="py-string">"info"</tt> </tt>
+<a name="L94"></a><tt class="py-lineno"> 94</tt>  <tt class="py-line">                <tt class="py-keyword">elif</tt> <tt class="py-name">level</tt> <tt class="py-op">==</tt> <tt id="link-34" class="py-name"><a title="VisionEgg.Deprecated.Message" class="py-name" href="#" onclick="return doclink('link-34', 'Message', 'link-9');">Message</a></tt><tt class="py-op">.</tt><tt id="link-35" class="py-name"><a title="VisionEgg.Deprecated.Message.NAG" class="py-name" href="#" onclick="return do [...]
+<a name="L95"></a><tt class="py-lineno"> 95</tt>  <tt class="py-line">                    <tt class="py-name">my_str</tt><tt class="py-op">=</tt><tt class="py-name">my_str</tt><tt class="py-op">+</tt><tt class="py-string">"nag"</tt> </tt>
+<a name="L96"></a><tt class="py-lineno"> 96</tt>  <tt class="py-line">                <tt class="py-keyword">elif</tt> <tt class="py-name">level</tt> <tt class="py-op">==</tt> <tt id="link-36" class="py-name"><a title="VisionEgg.Deprecated.Message" class="py-name" href="#" onclick="return doclink('link-36', 'Message', 'link-9');">Message</a></tt><tt class="py-op">.</tt><tt id="link-37" class="py-name"><a title="VisionEgg.Deprecated.Message.DEPRECATION" class="py-name" href="#" onclick="r [...]
+<a name="L97"></a><tt class="py-lineno"> 97</tt>  <tt class="py-line">                    <tt class="py-name">my_str</tt><tt class="py-op">=</tt><tt class="py-name">my_str</tt><tt class="py-op">+</tt><tt class="py-string">"DEPRECATION WARNING"</tt> </tt>
+<a name="L98"></a><tt class="py-lineno"> 98</tt>  <tt class="py-line">                <tt class="py-keyword">elif</tt> <tt class="py-name">level</tt> <tt class="py-op">==</tt> <tt id="link-38" class="py-name"><a title="VisionEgg.Deprecated.Message" class="py-name" href="#" onclick="return doclink('link-38', 'Message', 'link-9');">Message</a></tt><tt class="py-op">.</tt><tt id="link-39" class="py-name"><a title="VisionEgg.Deprecated.Message.WARNING" class="py-name" href="#" onclick="retur [...]
+<a name="L99"></a><tt class="py-lineno"> 99</tt>  <tt class="py-line">                    <tt class="py-name">my_str</tt><tt class="py-op">=</tt><tt class="py-name">my_str</tt><tt class="py-op">+</tt><tt class="py-string">"WARNING"</tt> </tt>
+<a name="L100"></a><tt class="py-lineno">100</tt>  <tt class="py-line">                <tt class="py-keyword">elif</tt> <tt class="py-name">level</tt> <tt class="py-op">==</tt> <tt id="link-40" class="py-name"><a title="VisionEgg.Deprecated.Message" class="py-name" href="#" onclick="return doclink('link-40', 'Message', 'link-9');">Message</a></tt><tt class="py-op">.</tt><tt id="link-41" class="py-name"><a title="VisionEgg.Deprecated.Message.ERROR" class="py-name" href="#" onclick="return [...]
+<a name="L101"></a><tt class="py-lineno">101</tt>  <tt class="py-line">                    <tt class="py-name">my_str</tt><tt class="py-op">=</tt><tt class="py-name">my_str</tt><tt class="py-op">+</tt><tt class="py-string">"ERROR"</tt> </tt>
+<a name="L102"></a><tt class="py-lineno">102</tt>  <tt class="py-line">                <tt class="py-keyword">elif</tt> <tt class="py-name">level</tt> <tt class="py-op">==</tt> <tt id="link-42" class="py-name"><a title="VisionEgg.Deprecated.Message" class="py-name" href="#" onclick="return doclink('link-42', 'Message', 'link-9');">Message</a></tt><tt class="py-op">.</tt><tt id="link-43" class="py-name"><a title="VisionEgg.Deprecated.Message.FATAL" class="py-name" href="#" onclick="return [...]
+<a name="L103"></a><tt class="py-lineno">103</tt>  <tt class="py-line">                    <tt class="py-name">my_str</tt><tt class="py-op">=</tt><tt class="py-name">my_str</tt><tt class="py-op">+</tt><tt class="py-string">"FATAL"</tt> </tt>
+<a name="L104"></a><tt class="py-lineno">104</tt>  <tt class="py-line">                <tt class="py-name">my_str</tt> <tt class="py-op">+=</tt> <tt class="py-string">": "</tt> </tt>
+<a name="L105"></a><tt class="py-lineno">105</tt>  <tt class="py-line">                <tt class="py-name">my_str</tt> <tt class="py-op">+=</tt> <tt class="py-name">text</tt> </tt>
+<a name="L106"></a><tt class="py-lineno">106</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">preserve_formatting</tt><tt class="py-op">:</tt> </tt>
+<a name="L107"></a><tt class="py-lineno">107</tt>  <tt class="py-line">                    <tt class="py-name">my_str</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-44" class="py-name" targets="Method VisionEgg.Deprecated.Message.format_string()=VisionEgg.Deprecated.Message-class.html#format_string,Method VisionEgg.GUI.GraphicsConfigurationWindow.format_string()=VisionEgg.GUI.GraphicsConfigurationWindow-class.html#format_string"><a title=" [...]
+VisionEgg.GUI.GraphicsConfigurationWindow.format_string" class="py-name" href="#" onclick="return doclink('link-44', 'format_string', 'link-44');">format_string</a></tt><tt class="py-op">(</tt><tt class="py-name">my_str</tt><tt class="py-op">)</tt> </tt>
+<a name="L108"></a><tt class="py-lineno">108</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">output_stream</tt><tt class="py-op">.</tt><tt class="py-name">write</tt><tt class="py-op">(</tt><tt class="py-name">my_str</tt><tt class="py-op">,</tt><tt class="py-name">_no_sys_stderr</tt><tt class="py-op">=</tt><tt class="py-name">no_sys_stderr</tt><tt class="py-op">)</tt> </tt>
+<a name="L109"></a><tt class="py-lineno">109</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">output_stream</tt><tt class="py-op">.</tt><tt class="py-name">flush</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L110"></a><tt class="py-lineno">110</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">level</tt> <tt class="py-op">>=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">exception_level</tt><tt class="py-op">:</tt> </tt>
+<a name="L111"></a><tt class="py-lineno">111</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> <tt class="py-name">RuntimeError</tt><tt class="py-op">(</tt><tt class="py-name">text</tt><tt class="py-op">)</tt> </tt>
+<a name="L112"></a><tt class="py-lineno">112</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">level</tt> <tt class="py-op">==</tt> <tt id="link-45" class="py-name"><a title="VisionEgg.Deprecated.Message" class="py-name" href="#" onclick="return doclink('link-45', 'Message', 'link-9');">Message</a></tt><tt class="py-op">.</tt><tt id="link-46" class="py-name"><a title="VisionEgg.Deprecated.Message.FATAL" class="py-name" href="#" onclick="return docli [...]
+<a name="L113"></a><tt class="py-lineno">113</tt>  <tt class="py-line">                <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">exit</tt><tt class="py-op">(</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L114"></a><tt class="py-lineno">114</tt>  <tt class="py-line"> </tt><script type="text/javascript">
+<!--
+expandto(location.href);
+// -->
+</script>
+</pre>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:49 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.Deprecated.Message-class.html b/doc/reference/html/VisionEgg.Deprecated.Message-class.html
new file mode 100644
index 0000000..1ee07c3
--- /dev/null
+++ b/doc/reference/html/VisionEgg.Deprecated.Message-class.html
@@ -0,0 +1,254 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.Deprecated.Message</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.Deprecated-module.html">Module Deprecated</a> ::
+        Class Message
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.Deprecated.Message-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class Message</h1><span class="codelink"><a href="VisionEgg.Deprecated-pysrc.html#Message">source code</a></span><br /><br />
+<pre class="literalblock">
+DEPRECATED Handles message/warning/error printing, exception raising.
+
+</pre><br /><br />
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__init__"></a><span class="summary-sig-name">__init__</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.Deprecated-pysrc.html#Message.__init__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="add"></a><span class="summary-sig-name">add</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">message</span>,
+        <span class="summary-sig-arg">level</span>=<span class="summary-sig-default">INFO</span>,
+        <span class="summary-sig-arg">preserve_formatting</span>=<span class="summary-sig-default">0</span>,
+        <span class="summary-sig-arg">no_sys_stderr</span>=<span class="summary-sig-default">0</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.Deprecated-pysrc.html#Message.add">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="format_string"></a><span class="summary-sig-name">format_string</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">in_str</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.Deprecated-pysrc.html#Message.format_string">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="handle"></a><span class="summary-sig-name">handle</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.Deprecated-pysrc.html#Message.handle">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Class Variables</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="TRIVIAL"></a><span class="summary-name">TRIVIAL</span> = <code title="0">0</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="NAG"></a><span class="summary-name">NAG</span> = <code title="1">1</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="INFO"></a><span class="summary-name">INFO</span> = <code title="2">2</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="DEPRECATION"></a><span class="summary-name">DEPRECATION</span> = <code title="3">3</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="WARNING"></a><span class="summary-name">WARNING</span> = <code title="4">4</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="ERROR"></a><span class="summary-name">ERROR</span> = <code title="5">5</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="FATAL"></a><span class="summary-name">FATAL</span> = <code title="6">6</code>
+    </td>
+  </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.Dots-module.html b/doc/reference/html/VisionEgg.Dots-module.html
new file mode 100644
index 0000000..29d98ed
--- /dev/null
+++ b/doc/reference/html/VisionEgg.Dots-module.html
@@ -0,0 +1,199 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.Dots</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        Module Dots
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.Dots-module.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== MODULE DESCRIPTION ==================== -->
+<h1 class="epydoc">Module Dots</h1><span class="codelink"><a href="VisionEgg.Dots-pysrc.html">source code</a></span><br /><br />
+<pre class="literalblock">
+
+Random dot stimuli.
+
+</pre><br /><br />
+
+<!-- ==================== CLASSES ==================== -->
+<a name="section-Classes"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Classes</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.Dots.DotArea2D-class.html" class="summary-name">DotArea2D</a><br />
+      Random dots of constant velocity
+
+Every dot has the same velocity.
+    </td>
+  </tr>
+</table>
+<!-- ==================== FUNCTIONS ==================== -->
+<a name="section-Functions"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Functions</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.Dots-module.html#draw_dots" class="summary-sig-name">draw_dots</a>(<span class="summary-sig-arg">xs</span>,
+        <span class="summary-sig-arg">ys</span>,
+        <span class="summary-sig-arg">zs</span>)</span><br />
+      Python method for drawing dots.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.Dots-pysrc.html#draw_dots">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+</table>
+<!-- ==================== FUNCTION DETAILS ==================== -->
+<a name="section-FunctionDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Function Details</span></td>
+</tr>
+</table>
+<a name="draw_dots"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">draw_dots</span>(<span class="sig-arg">xs</span>,
+        <span class="sig-arg">ys</span>,
+        <span class="sig-arg">zs</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.Dots-pysrc.html#draw_dots">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Python method for drawing dots.  May be replaced by a faster C version.
+
+</pre>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.Dots-pysrc.html b/doc/reference/html/VisionEgg.Dots-pysrc.html
new file mode 100644
index 0000000..524e5c8
--- /dev/null
+++ b/doc/reference/html/VisionEgg.Dots-pysrc.html
@@ -0,0 +1,537 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.Dots</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        Module Dots
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.Dots-pysrc.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<h1 class="epydoc">Source Code for <a href="VisionEgg.Dots-module.html">Module VisionEgg.Dots</a></h1>
+<pre class="py-src">
+<a name="L1"></a><tt class="py-lineno">  1</tt>  <tt class="py-line"><tt class="py-comment"># The Vision Egg: Dots</tt> </tt>
+<a name="L2"></a><tt class="py-lineno">  2</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L3"></a><tt class="py-lineno">  3</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Copyright (C) 2001-2003 Andrew Straw.</tt> </tt>
+<a name="L4"></a><tt class="py-lineno">  4</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Copyright (C) 2005,2008 California Institute of Technology</tt> </tt>
+<a name="L5"></a><tt class="py-lineno">  5</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L6"></a><tt class="py-lineno">  6</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># URL: <http://www.visionegg.org/></tt> </tt>
+<a name="L7"></a><tt class="py-lineno">  7</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L8"></a><tt class="py-lineno">  8</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Distributed under the terms of the GNU Lesser General Public License</tt> </tt>
+<a name="L9"></a><tt class="py-lineno">  9</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># (LGPL). See LICENSE.TXT that came with this file.</tt> </tt>
+<a name="L10"></a><tt class="py-lineno"> 10</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L11"></a><tt class="py-lineno"> 11</tt>  <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L12"></a><tt class="py-lineno"> 12</tt>  <tt class="py-line"><tt class="py-docstring">Random dot stimuli.</tt> </tt>
+<a name="L13"></a><tt class="py-lineno"> 13</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L14"></a><tt class="py-lineno"> 14</tt>  <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L15"></a><tt class="py-lineno"> 15</tt>  <tt class="py-line"> </tt>
+<a name="L16"></a><tt class="py-lineno"> 16</tt>  <tt class="py-line"><tt class="py-comment">####################################################################</tt> </tt>
+<a name="L17"></a><tt class="py-lineno"> 17</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L18"></a><tt class="py-lineno"> 18</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#        Import all the necessary packages</tt> </tt>
+<a name="L19"></a><tt class="py-lineno"> 19</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L20"></a><tt class="py-lineno"> 20</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">####################################################################</tt> </tt>
+<a name="L21"></a><tt class="py-lineno"> 21</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L22"></a><tt class="py-lineno"> 22</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">logging</tt> </tt>
+<a name="L23"></a><tt class="py-lineno"> 23</tt>  <tt class="py-line"> </tt>
+<a name="L24"></a><tt class="py-lineno"> 24</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-0" class="py-name" targets="Package VisionEgg=VisionEgg-module.html"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-0', 'VisionEgg', 'link-0');">VisionEgg</a></tt> </tt>
+<a name="L25"></a><tt class="py-lineno"> 25</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-1" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-1', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-2" class="py-name" targets="Module VisionEgg.Core=VisionEgg.Core-module.html"><a title="VisionEgg.Core" class="py-name" href="#" onclick="return doclink('link-2', 'Core', 'link-2');">Core</a></tt> </tt>
+<a name="L26"></a><tt class="py-lineno"> 26</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-3" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-3', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-4" class="py-name" targets="Module VisionEgg.ParameterTypes=VisionEgg.ParameterTypes-module.html"><a title="VisionEgg.ParameterTypes" class="py-name" href="#" onclick="return doclink('link-4', 'P [...]
+<a name="L27"></a><tt class="py-lineno"> 27</tt>  <tt class="py-line"> </tt>
+<a name="L28"></a><tt class="py-lineno"> 28</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">numpy</tt><tt class="py-op">.</tt><tt class="py-name">oldnumeric</tt> <tt class="py-keyword">as</tt> <tt class="py-name">Numeric</tt><tt class="py-op">,</tt> <tt class="py-name">numpy</tt><tt class="py-op">.</tt><tt class="py-name">oldnumeric</tt><tt class="py-op">.</tt><tt class="py-name">random_array</tt> <tt class="py-keyword">as</tt> <tt class="py-name">RandomA [...]
+<a name="L29"></a><tt class="py-lineno"> 29</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">math</tt><tt class="py-op">,</tt> <tt class="py-name">types</tt><tt class="py-op">,</tt> <tt class="py-name">string</tt> </tt>
+<a name="L30"></a><tt class="py-lineno"> 30</tt>  <tt class="py-line"> </tt>
+<a name="L31"></a><tt class="py-lineno"> 31</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-5" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-5', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-6" class="py-name" targets="Module VisionEgg.GL=VisionEgg.GL-module.html"><a title="VisionEgg.GL" class="py-name" href="#" onclick="return doclink('link-6', 'GL', 'link-6');">GL</a></tt> <tt clas [...]
+<a name="L32"></a><tt class="py-lineno"> 32</tt>  <tt class="py-line"> </tt>
+<a name="L33"></a><tt class="py-lineno"> 33</tt>  <tt class="py-line"><tt class="py-comment">### C version of draw_dots() isn't (yet) as fast as Python version:</tt> </tt>
+<a name="L34"></a><tt class="py-lineno"> 34</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">##import VisionEgg._draw_in_c</tt> </tt>
+<a name="L35"></a><tt class="py-lineno"> 35</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">##draw_dots = VisionEgg._draw_in_c.draw_dots # draw in C for speed</tt> </tt>
+<a name="L36"></a><tt class="py-lineno"> 36</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="draw_dots"></a><div id="draw_dots-def"><a name="L37"></a><tt class="py-lineno"> 37</tt> <a class="py-toggle" href="#" id="draw_dots-toggle" onclick="return toggle('draw_dots');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.Dots-module.html#draw_dots">draw_dots</a><tt class="py-op">(</tt><tt class="py-param">xs</tt><tt class="py-op">,</tt><tt class="py-param">ys</tt><tt class="py-op">,</tt><tt class="py-param">zs</tt><tt class="p [...]
+</div><div id="draw_dots-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="draw_dots-expanded"><a name="L38"></a><tt class="py-lineno"> 38</tt>  <tt class="py-line">    <tt class="py-docstring">"""Python method for drawing dots.  May be replaced by a faster C version."""</tt> </tt>
+<a name="L39"></a><tt class="py-lineno"> 39</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">xs</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">ys</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name" [...]
+<a name="L40"></a><tt class="py-lineno"> 40</tt>  <tt class="py-line">        <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">"All input arguments must be same length"</tt><tt class="py-op">)</tt> </tt>
+<a name="L41"></a><tt class="py-lineno"> 41</tt>  <tt class="py-line">    <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glBegin</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_POINTS</tt><tt class="py-op">)</tt> </tt>
+<a name="L42"></a><tt class="py-lineno"> 42</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">i</tt> <tt class="py-keyword">in</tt> <tt class="py-name">xrange</tt><tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">xs</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L43"></a><tt class="py-lineno"> 43</tt>  <tt class="py-line">        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glVertex3f</tt><tt class="py-op">(</tt><tt class="py-name">xs</tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">]</tt><tt class="py-op">,</tt><tt class="py-name">ys</tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">]</tt><tt class="py-op">,</tt><tt class="py-name">zs</tt><tt class="py-op">[</tt><tt [...]
+<a name="L44"></a><tt class="py-lineno"> 44</tt>  <tt class="py-line">    <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glEnd</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L45"></a><tt class="py-lineno"> 45</tt>  <tt class="py-line"> </tt>
+<a name="DotArea2D"></a><div id="DotArea2D-def"><a name="L46"></a><tt class="py-lineno"> 46</tt> <a class="py-toggle" href="#" id="DotArea2D-toggle" onclick="return toggle('DotArea2D');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.Dots.DotArea2D-class.html">DotArea2D</a><tt class="py-op">(</tt><tt class="py-base-class">VisionEgg</tt><tt class="py-op">.</tt><tt class="py-base-class">Core</tt><tt class="py-op">.</tt><tt class="py-base-c [...]
+</div><div id="DotArea2D-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="DotArea2D-expanded"><a name="L47"></a><tt class="py-lineno"> 47</tt>  <tt class="py-line">    <tt class="py-docstring">"""Random dots of constant velocity</tt> </tt>
+<a name="L48"></a><tt class="py-lineno"> 48</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L49"></a><tt class="py-lineno"> 49</tt>  <tt class="py-line"><tt class="py-docstring">    Every dot has the same velocity. Some fraction of the dots all</tt> </tt>
+<a name="L50"></a><tt class="py-lineno"> 50</tt>  <tt class="py-line"><tt class="py-docstring">    move in the one direction, while the rest move in random</tt> </tt>
+<a name="L51"></a><tt class="py-lineno"> 51</tt>  <tt class="py-line"><tt class="py-docstring">    directions. Dots wrap around edges. Each dot has a lifespan.</tt> </tt>
+<a name="L52"></a><tt class="py-lineno"> 52</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L53"></a><tt class="py-lineno"> 53</tt>  <tt class="py-line"><tt class="py-docstring">    This is just one example of the endless variations on drawing random dots.</tt> </tt>
+<a name="L54"></a><tt class="py-lineno"> 54</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L55"></a><tt class="py-lineno"> 55</tt>  <tt class="py-line"><tt class="py-docstring">    Parameters</tt> </tt>
+<a name="L56"></a><tt class="py-lineno"> 56</tt>  <tt class="py-line"><tt class="py-docstring">    ==========</tt> </tt>
+<a name="L57"></a><tt class="py-lineno"> 57</tt>  <tt class="py-line"><tt class="py-docstring">    anchor                  -- (String)</tt> </tt>
+<a name="L58"></a><tt class="py-lineno"> 58</tt>  <tt class="py-line"><tt class="py-docstring">                               Default: center</tt> </tt>
+<a name="L59"></a><tt class="py-lineno"> 59</tt>  <tt class="py-line"><tt class="py-docstring">    anti_aliasing           -- (Boolean)</tt> </tt>
+<a name="L60"></a><tt class="py-lineno"> 60</tt>  <tt class="py-line"><tt class="py-docstring">                               Default: True</tt> </tt>
+<a name="L61"></a><tt class="py-lineno"> 61</tt>  <tt class="py-line"><tt class="py-docstring">    color                   -- (AnyOf(Sequence3 of Real or Sequence4 of Real))</tt> </tt>
+<a name="L62"></a><tt class="py-lineno"> 62</tt>  <tt class="py-line"><tt class="py-docstring">                               Default: (1.0, 1.0, 1.0)</tt> </tt>
+<a name="L63"></a><tt class="py-lineno"> 63</tt>  <tt class="py-line"><tt class="py-docstring">    depth                   -- (Real)</tt> </tt>
+<a name="L64"></a><tt class="py-lineno"> 64</tt>  <tt class="py-line"><tt class="py-docstring">                               Default: (determined at runtime)</tt> </tt>
+<a name="L65"></a><tt class="py-lineno"> 65</tt>  <tt class="py-line"><tt class="py-docstring">    dot_lifespan_sec        -- (Real)</tt> </tt>
+<a name="L66"></a><tt class="py-lineno"> 66</tt>  <tt class="py-line"><tt class="py-docstring">                               Default: 5.0</tt> </tt>
+<a name="L67"></a><tt class="py-lineno"> 67</tt>  <tt class="py-line"><tt class="py-docstring">    dot_size                -- (Real)</tt> </tt>
+<a name="L68"></a><tt class="py-lineno"> 68</tt>  <tt class="py-line"><tt class="py-docstring">                               Default: 4.0</tt> </tt>
+<a name="L69"></a><tt class="py-lineno"> 69</tt>  <tt class="py-line"><tt class="py-docstring">    on                      -- (Boolean)</tt> </tt>
+<a name="L70"></a><tt class="py-lineno"> 70</tt>  <tt class="py-line"><tt class="py-docstring">                               Default: True</tt> </tt>
+<a name="L71"></a><tt class="py-lineno"> 71</tt>  <tt class="py-line"><tt class="py-docstring">    position                -- (Sequence2 of Real)</tt> </tt>
+<a name="L72"></a><tt class="py-lineno"> 72</tt>  <tt class="py-line"><tt class="py-docstring">                               Default: (320.0, 240.0)</tt> </tt>
+<a name="L73"></a><tt class="py-lineno"> 73</tt>  <tt class="py-line"><tt class="py-docstring">    signal_direction_deg    -- (Real)</tt> </tt>
+<a name="L74"></a><tt class="py-lineno"> 74</tt>  <tt class="py-line"><tt class="py-docstring">                               Default: 90.0</tt> </tt>
+<a name="L75"></a><tt class="py-lineno"> 75</tt>  <tt class="py-line"><tt class="py-docstring">    signal_fraction         -- (Real)</tt> </tt>
+<a name="L76"></a><tt class="py-lineno"> 76</tt>  <tt class="py-line"><tt class="py-docstring">                               Default: 0.5</tt> </tt>
+<a name="L77"></a><tt class="py-lineno"> 77</tt>  <tt class="py-line"><tt class="py-docstring">    size                    -- (Sequence2 of Real)</tt> </tt>
+<a name="L78"></a><tt class="py-lineno"> 78</tt>  <tt class="py-line"><tt class="py-docstring">                               Default: (300.0, 300.0)</tt> </tt>
+<a name="L79"></a><tt class="py-lineno"> 79</tt>  <tt class="py-line"><tt class="py-docstring">    velocity_pixels_per_sec -- (Real)</tt> </tt>
+<a name="L80"></a><tt class="py-lineno"> 80</tt>  <tt class="py-line"><tt class="py-docstring">                               Default: 10.0</tt> </tt>
+<a name="L81"></a><tt class="py-lineno"> 81</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L82"></a><tt class="py-lineno"> 82</tt>  <tt class="py-line"><tt class="py-docstring">    Constant Parameters</tt> </tt>
+<a name="L83"></a><tt class="py-lineno"> 83</tt>  <tt class="py-line"><tt class="py-docstring">    ===================</tt> </tt>
+<a name="L84"></a><tt class="py-lineno"> 84</tt>  <tt class="py-line"><tt class="py-docstring">    num_dots -- (UnsignedInteger)</tt> </tt>
+<a name="L85"></a><tt class="py-lineno"> 85</tt>  <tt class="py-line"><tt class="py-docstring">                Default: 100</tt> </tt>
+<a name="L86"></a><tt class="py-lineno"> 86</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L87"></a><tt class="py-lineno"> 87</tt>  <tt class="py-line"> </tt>
+<a name="L88"></a><tt class="py-lineno"> 88</tt>  <tt class="py-line">    <tt id="link-7" class="py-name" targets="Variable VisionEgg.ClassWithParameters.parameters_and_defaults=VisionEgg.ClassWithParameters-class.html#parameters_and_defaults,Variable VisionEgg.Core.FixationSpot.parameters_and_defaults=VisionEgg.Core.FixationSpot-class.html#parameters_and_defaults,Variable VisionEgg.Core.ProjectionBaseClass.parameters_and_defaults=VisionEgg.Core.ProjectionBaseClass-class.html#parameters_ [...]
+VisionEgg.Core.FixationSpot.parameters_and_defaults
+VisionEgg.Core.ProjectionBaseClass.parameters_and_defaults
+VisionEgg.Core.Screen.parameters_and_defaults
+VisionEgg.Core.Viewport.parameters_and_defaults
+VisionEgg.Daq.Buffered.parameters_and_defaults
+VisionEgg.Dots.DotArea2D.parameters_and_defaults
+VisionEgg.FlowControl.Presentation.parameters_and_defaults
+VisionEgg.Gratings.AlphaGratingCommon.parameters_and_defaults
+VisionEgg.Gratings.LuminanceGratingCommon.parameters_and_defaults
+VisionEgg.Gratings.SinGrating2D.parameters_and_defaults
+VisionEgg.Gratings.SinGrating3D.parameters_and_defaults
+VisionEgg.MoreStimuli.Arrow.parameters_and_defaults
+VisionEgg.MoreStimuli.FilledCircle.parameters_and_defaults
+VisionEgg.MoreStimuli.Rectangle3D.parameters_and_defaults
+VisionEgg.MoreStimuli.Target2D.parameters_and_defaults
+VisionEgg.PyroApps.EPhysGUI.Loop.parameters_and_defaults
+VisionEgg.SphereMap.AzElGrid.parameters_and_defaults
+VisionEgg.SphereMap.SphereGrating.parameters_and_defaults
+VisionEgg.SphereMap.SphereMap.parameters_and_defaults
+VisionEgg.SphereMap.SphereWindow.parameters_and_defaults
+VisionEgg.Text.BitmapText.parameters_and_defaults
+VisionEgg.Text.GlutTextBase.parameters_and_defaults
+VisionEgg.Text.StrokeText.parameters_and_defaults
+VisionEgg.Text.Text.parameters_and_defaults
+VisionEgg.Textures.FixationCross.parameters_and_defaults
+VisionEgg.Textures.SpinningDrum.parameters_and_defaults
+VisionEgg.Textures.TextureStimulus.parameters_and_defaults
+VisionEgg.Textures.TextureStimulus3D.parameters_and_defaults
+VisionEgg.Textures.TextureStimulusBaseClass.parameters_and_defaults
+VisionEgg.WrappedText.WrappedText.parameters_and_defaults" class="py-name" href="#" onclick="return doclink('link-7', 'parameters_and_defaults', 'link-7');">parameters_and_defaults</a></tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> </tt>
+<a name="L89"></a><tt class="py-lineno"> 89</tt>  <tt class="py-line">        <tt class="py-string">'on'</tt> <tt class="py-op">:</tt> <tt class="py-op">(</tt> <tt class="py-name">True</tt><tt class="py-op">,</tt> </tt>
+<a name="L90"></a><tt class="py-lineno"> 90</tt>  <tt class="py-line">                 <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-8" class="py-name" targets="Class VisionEgg.ParameterTypes.Boolean=VisionEgg.ParameterTypes.Boolean-class.html"><a title="VisionEgg.ParameterTypes.Boolean" class="py-name" href="#" onclick="return doclink('link-8', 'Boolean', 'link-8');">Boolean</a></tt> <tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L91"></a><tt class="py-lineno"> 91</tt>  <tt class="py-line">        <tt class="py-string">'position'</tt> <tt class="py-op">:</tt> <tt class="py-op">(</tt> <tt class="py-op">(</tt> <tt class="py-number">320.0</tt><tt class="py-op">,</tt> <tt class="py-number">240.0</tt> <tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-comment"># in eye coordinates</tt> </tt>
+<a name="L92"></a><tt class="py-lineno"> 92</tt>  <tt class="py-line">                       <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-9" class="py-name" targets="Class VisionEgg.ParameterTypes.Sequence2=VisionEgg.ParameterTypes.Sequence2-class.html"><a title="VisionEgg.ParameterTypes.Sequence2" class="py-name" href="#" onclick="return doclink('link-9', 'Sequence2', 'link-9');">Sequence2</a></tt><tt class="py-op">(</tt><tt class="py-name">ve_types</tt><tt clas [...]
+<a name="L93"></a><tt class="py-lineno"> 93</tt>  <tt class="py-line">        <tt class="py-string">'anchor'</tt> <tt class="py-op">:</tt> <tt class="py-op">(</tt><tt class="py-string">'center'</tt><tt class="py-op">,</tt> </tt>
+<a name="L94"></a><tt class="py-lineno"> 94</tt>  <tt class="py-line">                    <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-11" class="py-name" targets="Class VisionEgg.ParameterTypes.String=VisionEgg.ParameterTypes.String-class.html"><a title="VisionEgg.ParameterTypes.String" class="py-name" href="#" onclick="return doclink('link-11', 'String', 'link-11');">String</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L95"></a><tt class="py-lineno"> 95</tt>  <tt class="py-line">        <tt class="py-string">'size'</tt> <tt class="py-op">:</tt>   <tt class="py-op">(</tt> <tt class="py-op">(</tt> <tt class="py-number">300.0</tt><tt class="py-op">,</tt> <tt class="py-number">300.0</tt> <tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-comment"># in eye coordinates</tt> </tt>
+<a name="L96"></a><tt class="py-lineno"> 96</tt>  <tt class="py-line">                     <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-12" class="py-name"><a title="VisionEgg.ParameterTypes.Sequence2" class="py-name" href="#" onclick="return doclink('link-12', 'Sequence2', 'link-9');">Sequence2</a></tt><tt class="py-op">(</tt><tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-13" class="py-name"><a title="VisionEgg.ParameterTypes.Real" class=" [...]
+<a name="L97"></a><tt class="py-lineno"> 97</tt>  <tt class="py-line">        <tt class="py-string">'signal_fraction'</tt> <tt class="py-op">:</tt> <tt class="py-op">(</tt> <tt class="py-number">0.5</tt><tt class="py-op">,</tt> </tt>
+<a name="L98"></a><tt class="py-lineno"> 98</tt>  <tt class="py-line">                              <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-14" class="py-name"><a title="VisionEgg.ParameterTypes.Real" class="py-name" href="#" onclick="return doclink('link-14', 'Real', 'link-10');">Real</a></tt> <tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L99"></a><tt class="py-lineno"> 99</tt>  <tt class="py-line">        <tt class="py-string">'signal_direction_deg'</tt> <tt class="py-op">:</tt> <tt class="py-op">(</tt> <tt class="py-number">90.0</tt><tt class="py-op">,</tt> </tt>
+<a name="L100"></a><tt class="py-lineno">100</tt>  <tt class="py-line">                                   <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-15" class="py-name"><a title="VisionEgg.ParameterTypes.Real" class="py-name" href="#" onclick="return doclink('link-15', 'Real', 'link-10');">Real</a></tt> <tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L101"></a><tt class="py-lineno">101</tt>  <tt class="py-line">        <tt class="py-string">'velocity_pixels_per_sec'</tt> <tt class="py-op">:</tt> <tt class="py-op">(</tt> <tt class="py-number">10.0</tt><tt class="py-op">,</tt> </tt>
+<a name="L102"></a><tt class="py-lineno">102</tt>  <tt class="py-line">                                      <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-16" class="py-name"><a title="VisionEgg.ParameterTypes.Real" class="py-name" href="#" onclick="return doclink('link-16', 'Real', 'link-10');">Real</a></tt> <tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L103"></a><tt class="py-lineno">103</tt>  <tt class="py-line">        <tt class="py-string">'dot_lifespan_sec'</tt> <tt class="py-op">:</tt> <tt class="py-op">(</tt> <tt class="py-number">5.0</tt><tt class="py-op">,</tt> </tt>
+<a name="L104"></a><tt class="py-lineno">104</tt>  <tt class="py-line">                               <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-17" class="py-name"><a title="VisionEgg.ParameterTypes.Real" class="py-name" href="#" onclick="return doclink('link-17', 'Real', 'link-10');">Real</a></tt> <tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L105"></a><tt class="py-lineno">105</tt>  <tt class="py-line">        <tt class="py-string">'color'</tt> <tt class="py-op">:</tt> <tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-number">1.0</tt><tt class="py-op">,</tt><tt class="py-number">1.0</tt><tt class="py-op">,</tt><tt class="py-number">1.0</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L106"></a><tt class="py-lineno">106</tt>  <tt class="py-line">                   <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-18" class="py-name" targets="Class VisionEgg.ParameterTypes.AnyOf=VisionEgg.ParameterTypes.AnyOf-class.html"><a title="VisionEgg.ParameterTypes.AnyOf" class="py-name" href="#" onclick="return doclink('link-18', 'AnyOf', 'link-18');">AnyOf</a></tt><tt class="py-op">(</tt><tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt  [...]
+<a name="L107"></a><tt class="py-lineno">107</tt>  <tt class="py-line">                                  <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-21" class="py-name" targets="Class VisionEgg.ParameterTypes.Sequence4=VisionEgg.ParameterTypes.Sequence4-class.html"><a title="VisionEgg.ParameterTypes.Sequence4" class="py-name" href="#" onclick="return doclink('link-21', 'Sequence4', 'link-21');">Sequence4</a></tt><tt class="py-op">(</tt><tt class="py-name">ve_typ [...]
+<a name="L108"></a><tt class="py-lineno">108</tt>  <tt class="py-line">        <tt class="py-string">'dot_size'</tt> <tt class="py-op">:</tt> <tt class="py-op">(</tt><tt class="py-number">4.0</tt><tt class="py-op">,</tt> <tt class="py-comment"># pixels</tt> </tt>
+<a name="L109"></a><tt class="py-lineno">109</tt>  <tt class="py-line">                      <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-23" class="py-name"><a title="VisionEgg.ParameterTypes.Real" class="py-name" href="#" onclick="return doclink('link-23', 'Real', 'link-10');">Real</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L110"></a><tt class="py-lineno">110</tt>  <tt class="py-line">        <tt class="py-string">'anti_aliasing'</tt> <tt class="py-op">:</tt> <tt class="py-op">(</tt> <tt class="py-name">True</tt><tt class="py-op">,</tt> </tt>
+<a name="L111"></a><tt class="py-lineno">111</tt>  <tt class="py-line">                            <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-24" class="py-name"><a title="VisionEgg.ParameterTypes.Boolean" class="py-name" href="#" onclick="return doclink('link-24', 'Boolean', 'link-8');">Boolean</a></tt> <tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L112"></a><tt class="py-lineno">112</tt>  <tt class="py-line">        <tt class="py-string">'depth'</tt> <tt class="py-op">:</tt> <tt class="py-op">(</tt> <tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-comment"># set for depth testing</tt> </tt>
+<a name="L113"></a><tt class="py-lineno">113</tt>  <tt class="py-line">                    <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-25" class="py-name"><a title="VisionEgg.ParameterTypes.Real" class="py-name" href="#" onclick="return doclink('link-25', 'Real', 'link-10');">Real</a></tt> <tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L114"></a><tt class="py-lineno">114</tt>  <tt class="py-line">        <tt class="py-string">'center'</tt> <tt class="py-op">:</tt> <tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt>  <tt class="py-comment"># DEPRECATED -- don't use</tt> </tt>
+<a name="L115"></a><tt class="py-lineno">115</tt>  <tt class="py-line">                    <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-26" class="py-name"><a title="VisionEgg.ParameterTypes.Sequence2" class="py-name" href="#" onclick="return doclink('link-26', 'Sequence2', 'link-9');">Sequence2</a></tt><tt class="py-op">(</tt><tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-27" class="py-name"><a title="VisionEgg.ParameterTypes.Real" class=" [...]
+<a name="L116"></a><tt class="py-lineno">116</tt>  <tt class="py-line">                    <tt class="py-string">""</tt><tt class="py-op">,</tt> </tt>
+<a name="L117"></a><tt class="py-lineno">117</tt>  <tt class="py-line">                    <tt id="link-28" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-28', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-29" class="py-name" targets="Class VisionEgg.ParameterDefinition=VisionEgg.ParameterDefinition-class.html"><a title="VisionEgg.ParameterDefinition" class="py-name" href="#" onclick="return doclink('link-29', [...]
+<a name="L118"></a><tt class="py-lineno">118</tt>  <tt class="py-line">        <tt class="py-op">}</tt> </tt>
+<a name="L119"></a><tt class="py-lineno">119</tt>  <tt class="py-line"> </tt>
+<a name="L120"></a><tt class="py-lineno">120</tt>  <tt class="py-line">    <tt id="link-31" class="py-name" targets="Variable VisionEgg.ClassWithParameters.constant_parameters_and_defaults=VisionEgg.ClassWithParameters-class.html#constant_parameters_and_defaults,Variable VisionEgg.Core.Screen.constant_parameters_and_defaults=VisionEgg.Core.Screen-class.html#constant_parameters_and_defaults,Variable VisionEgg.Daq.Analog.constant_parameters_and_defaults=VisionEgg.Daq.Analog-class.html#cons [...]
+VisionEgg.Core.Screen.constant_parameters_and_defaults
+VisionEgg.Daq.Analog.constant_parameters_and_defaults
+VisionEgg.Daq.Channel.constant_parameters_and_defaults
+VisionEgg.Daq.SignalType.constant_parameters_and_defaults
+VisionEgg.Dots.DotArea2D.constant_parameters_and_defaults
+VisionEgg.SphereMap.AzElGrid.constant_parameters_and_defaults
+VisionEgg.Text.Text.constant_parameters_and_defaults
+VisionEgg.Textures.FixationCross.constant_parameters_and_defaults
+VisionEgg.Textures.Mask2D.constant_parameters_and_defaults
+VisionEgg.Textures.TextureStimulusBaseClass.constant_parameters_and_defaults
+VisionEgg.WrappedText.WrappedText.constant_parameters_and_defaults" class="py-name" href="#" onclick="return doclink('link-31', 'constant_parameters_and_defaults', 'link-31');">constant_parameters_and_defaults</a></tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> </tt>
+<a name="L121"></a><tt class="py-lineno">121</tt>  <tt class="py-line">        <tt class="py-string">'num_dots'</tt> <tt class="py-op">:</tt> <tt class="py-op">(</tt> <tt class="py-number">100</tt><tt class="py-op">,</tt> </tt>
+<a name="L122"></a><tt class="py-lineno">122</tt>  <tt class="py-line">                       <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-32" class="py-name" targets="Class VisionEgg.ParameterTypes.UnsignedInteger=VisionEgg.ParameterTypes.UnsignedInteger-class.html"><a title="VisionEgg.ParameterTypes.UnsignedInteger" class="py-name" href="#" onclick="return doclink('link-32', 'UnsignedInteger', 'link-32');">UnsignedInteger</a></tt> <tt class="py-op">)</tt><tt cl [...]
+<a name="L123"></a><tt class="py-lineno">123</tt>  <tt class="py-line">        <tt class="py-op">}</tt> </tt>
+<a name="L124"></a><tt class="py-lineno">124</tt>  <tt class="py-line"> </tt>
+<a name="L125"></a><tt class="py-lineno">125</tt>  <tt class="py-line">    <tt class="py-name">__slots__</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt> </tt>
+<a name="L126"></a><tt class="py-lineno">126</tt>  <tt class="py-line">        <tt class="py-string">'x_positions'</tt><tt class="py-op">,</tt> </tt>
+<a name="L127"></a><tt class="py-lineno">127</tt>  <tt class="py-line">        <tt class="py-string">'y_positions'</tt><tt class="py-op">,</tt> </tt>
+<a name="L128"></a><tt class="py-lineno">128</tt>  <tt class="py-line">        <tt class="py-string">'random_directions_radians'</tt><tt class="py-op">,</tt> </tt>
+<a name="L129"></a><tt class="py-lineno">129</tt>  <tt class="py-line">        <tt class="py-string">'last_time_sec'</tt><tt class="py-op">,</tt> </tt>
+<a name="L130"></a><tt class="py-lineno">130</tt>  <tt class="py-line">        <tt class="py-string">'start_times_sec'</tt><tt class="py-op">,</tt> </tt>
+<a name="L131"></a><tt class="py-lineno">131</tt>  <tt class="py-line">        <tt class="py-string">'_gave_alpha_warning'</tt><tt class="py-op">,</tt> </tt>
+<a name="L132"></a><tt class="py-lineno">132</tt>  <tt class="py-line">        <tt class="py-op">)</tt> </tt>
+<a name="L133"></a><tt class="py-lineno">133</tt>  <tt class="py-line"> </tt>
+<a name="DotArea2D.__init__"></a><div id="DotArea2D.__init__-def"><a name="L134"></a><tt class="py-lineno">134</tt> <a class="py-toggle" href="#" id="DotArea2D.__init__-toggle" onclick="return toggle('DotArea2D.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.Dots.DotArea2D-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-pa [...]
+</div><div id="DotArea2D.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="DotArea2D.__init__-expanded"><a name="L135"></a><tt class="py-lineno">135</tt>  <tt class="py-line">        <tt id="link-33" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-33', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-34" class="py-name"><a title="VisionEgg.Core" class="py-name" href="#" onclick=" [...]
+VisionEgg.Configuration.Config.__init__
+VisionEgg.Core.FixationSpot.__init__
+VisionEgg.Core.FrameTimer.__init__
+VisionEgg.Core.ModelView.__init__
+VisionEgg.Core.OrthographicProjection.__init__
+VisionEgg.Core.OrthographicProjectionNoZClip.__init__
+VisionEgg.Core.PerspectiveProjection.__init__
+VisionEgg.Core.Projection.__init__
+VisionEgg.Core.ProjectionBaseClass.__init__
+VisionEgg.Core.Screen.__init__
+VisionEgg.Core.SimplePerspectiveProjection.__init__
+VisionEgg.Core.Stimulus.__init__
+VisionEgg.Core.Viewport.__init__
+VisionEgg.Daq.Channel.__init__
+VisionEgg.Daq.DaqMode.__init__
+VisionEgg.Daq.Device.__init__
+VisionEgg.Daq.Functionality.__init__
+VisionEgg.Daq.SignalType.__init__
+VisionEgg.DaqKeyboard.KeyboardTriggerInController.__init__
+VisionEgg.DaqLPT.LPTChannel.__init__
+VisionEgg.DaqLPT.LPTDevice.__init__
+VisionEgg.DaqLPT.LPTTriggerInController.__init__
+VisionEgg.DaqLPT.LPTTriggerOutController.__init__
+VisionEgg.Deprecated.Message.__init__
+VisionEgg.Dots.DotArea2D.__init__
+VisionEgg.FlowControl.ConstantController.__init__
+VisionEgg.FlowControl.Controller.__init__
+VisionEgg.FlowControl.EncapsulatedController.__init__
+VisionEgg.FlowControl.EvalStringController.__init__
+VisionEgg.FlowControl.ExecStringController.__init__
+VisionEgg.FlowControl.FunctionController.__init__
+VisionEgg.FlowControl.Presentation.__init__
+VisionEgg.GLTrace.Wrapper.__init__
+VisionEgg.GUI.AppWindow.__init__
+VisionEgg.GUI.GetKeypressDialog.__init__
+VisionEgg.GUI.GraphicsConfigurationWindow.__init__
+VisionEgg.GUI.InfoFrame.__init__
+VisionEgg.GUI.ProgressBar.__init__
+VisionEgg.GUI.ToplevelDialog.__init__
+VisionEgg.Gratings.SinGrating2D.__init__
+VisionEgg.Gratings.SinGrating3D.__init__
+VisionEgg.MoreStimuli.Arrow.__init__
+VisionEgg.MoreStimuli.FilledCircle.__init__
+VisionEgg.MoreStimuli.Rectangle3D.__init__
+VisionEgg.MoreStimuli.Target2D.__init__
+VisionEgg.ParameterTypes.AnyOf.__init__
+VisionEgg.ParameterTypes.Instance.__init__
+VisionEgg.ParameterTypes.Sequence.__init__
+VisionEgg.ParameterTypes.SubClass.__init__
+VisionEgg.PyroApps.AST_ext.AST_Visitor.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalMetaParameters.__init__
+VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.__init__
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.__init__
+VisionEgg.PyroApps.DropinGUI.DropinMetaParameters.__init__
+VisionEgg.PyroApps.DropinServer.DropinMetaController.__init__
+VisionEgg.PyroApps.EPhysGUI.AppWindow.__init__
+VisionEgg.PyroApps.EPhysGUI.BarButton.__init__
+VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase.__init__
+VisionEgg.PyroApps.EPhysGUI.GammaFrame.__init__
+VisionEgg.PyroApps.EPhysGUI.ImageSequenceLauncher.__init__
+VisionEgg.PyroApps.EPhysGUI.Loop.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopContainedObject.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopParamDialog.__init__
+VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.__init__
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.__init__
+VisionEgg.PyroApps.EPhysServer.EPhysServer.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingMetaParameters.__init__
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.GridGUI.GridControlFrame.__init__
+VisionEgg.PyroApps.GridGUI.GridMetaParameters.__init__
+VisionEgg.PyroApps.GridServer.GridMetaController.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetMetaParameters.__init__
+VisionEgg.PyroApps.MouseTargetServer.MousePositionController.__init__
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetOrientationController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetPositionController.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.CallbackEntry.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionParameters.__init__
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingMetaParameters.__init__
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumMetaParameters.__init__
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.__init__
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.__init__
+VisionEgg.PyroApps.TargetGUI.TargetMetaParameters.__init__
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.__init__
+VisionEgg.PyroClient.PyroClient.__init__
+VisionEgg.PyroHelpers.PyroConstantController.__init__
+VisionEgg.PyroHelpers.PyroEncapsulatedController.__init__
+VisionEgg.PyroHelpers.PyroEvalStringController.__init__
+VisionEgg.PyroHelpers.PyroExecStringController.__init__
+VisionEgg.PyroHelpers.PyroListenController.__init__
+VisionEgg.PyroHelpers.PyroLocalDictController.__init__
+VisionEgg.PyroHelpers.PyroServer.__init__
+VisionEgg.QuickTime.MovieTexture.__init__
+VisionEgg.ResponseControl.KeyboardResponseController.__init__
+VisionEgg.ResponseControl.ResponseController.__init__
+VisionEgg.SphereMap.AzElGrid.__init__
+VisionEgg.SphereMap.SphereGrating.__init__
+VisionEgg.SphereMap.SphereMap.__init__
+VisionEgg.SphereMap.SphereWindow.__init__
+VisionEgg.TCPController.SocketListenController.__init__
+VisionEgg.TCPController.TCPController.__init__
+VisionEgg.TCPController.TCPServer.__init__
+VisionEgg.Text.BitmapText.__init__
+VisionEgg.Text.GlutTextBase.__init__
+VisionEgg.Text.StrokeText.__init__
+VisionEgg.Text.Text.__init__
+VisionEgg.Textures.FixationCross.__init__
+VisionEgg.Textures.Mask2D.__init__
+VisionEgg.Textures.SpinningDrum.__init__
+VisionEgg.Textures.Texture.__init__
+VisionEgg.Textures.TextureFromFile.__init__
+VisionEgg.Textures.TextureObject.__init__
+VisionEgg.Textures.TextureStimulusBaseClass.__init__
+VisionEgg.ThreeDeeMath.TransformMatrix.__init__
+VisionEgg.WrappedText.WrappedText.__init__
+VisionEgg.qtmovie.Movie.__init__
+VisionEgg.qtmovie.Rect.__init__" class="py-name" href="#" onclick="return doclink('link-36', '__init__', 'link-36');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt><tt class="py-op">**</tt><tt class="py-name">kw</tt><tt class="py-op">)</tt> </tt>
+<a name="L136"></a><tt class="py-lineno">136</tt>  <tt class="py-line">        <tt class="py-comment"># store positions normalized between 0 and 1 so that re-sizing is ok</tt> </tt>
+<a name="L137"></a><tt class="py-lineno">137</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">num_dots</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">constant_parameters</tt><tt class="py-op">.</tt><tt class="py-name">num_dots</tt> <tt class="py-comment"># shorthand</tt> </tt>
+<a name="L138"></a><tt class="py-lineno">138</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">x_positions</tt> <tt class="py-op">=</tt> <tt class="py-name">RandomArray</tt><tt class="py-op">.</tt><tt class="py-name">uniform</tt><tt class="py-op">(</tt><tt class="py-number">0.0</tt><tt class="py-op">,</tt><tt class="py-number">1.0</tt><tt class="py-op">,</tt><tt class="py-op">(</tt><tt class="py-name">num_dots</tt><tt class="py-op" [...]
+<a name="L139"></a><tt class="py-lineno">139</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">y_positions</tt> <tt class="py-op">=</tt> <tt class="py-name">RandomArray</tt><tt class="py-op">.</tt><tt class="py-name">uniform</tt><tt class="py-op">(</tt><tt class="py-number">0.0</tt><tt class="py-op">,</tt><tt class="py-number">1.0</tt><tt class="py-op">,</tt><tt class="py-op">(</tt><tt class="py-name">num_dots</tt><tt class="py-op" [...]
+<a name="L140"></a><tt class="py-lineno">140</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">random_directions_radians</tt> <tt class="py-op">=</tt> <tt class="py-name">RandomArray</tt><tt class="py-op">.</tt><tt class="py-name">uniform</tt><tt class="py-op">(</tt><tt class="py-number">0.0</tt><tt class="py-op">,</tt><tt class="py-number">2</tt><tt class="py-op">*</tt><tt class="py-name">math</tt><tt class="py-op">.</tt><tt class [...]
+<a name="L141"></a><tt class="py-lineno">141</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">last_time_sec</tt> <tt class="py-op">=</tt> <tt id="link-37" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-37', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-38" class="py-name" targets="Variable VisionEgg.time_func=VisionEgg-module.html#time_func"><a title="V [...]
+<a name="L142"></a><tt class="py-lineno">142</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">start_times_sec</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> <tt class="py-comment"># setup variable, assign later</tt> </tt>
+<a name="L143"></a><tt class="py-lineno">143</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_gave_alpha_warning</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+</div><a name="L144"></a><tt class="py-lineno">144</tt>  <tt class="py-line"> </tt>
+<a name="DotArea2D.draw"></a><div id="DotArea2D.draw-def"><a name="L145"></a><tt class="py-lineno">145</tt> <a class="py-toggle" href="#" id="DotArea2D.draw-toggle" onclick="return toggle('DotArea2D.draw');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.Dots.DotArea2D-class.html#draw">draw</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="DotArea2D.draw-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="DotArea2D.draw-expanded"><a name="L146"></a><tt class="py-lineno">146</tt>  <tt class="py-line">        <tt class="py-comment"># XXX This method is not speed-optimized. I just wrote it to</tt> </tt>
+<a name="L147"></a><tt class="py-lineno">147</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># get the job done. (Nonetheless, it seems faster than the C</tt> </tt>
+<a name="L148"></a><tt class="py-lineno">148</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># version commented out above.)</tt> </tt>
+<a name="L149"></a><tt class="py-lineno">149</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L150"></a><tt class="py-lineno">150</tt>  <tt class="py-line">        <tt class="py-name">p</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt> <tt class="py-comment"># shorthand</tt> </tt>
+<a name="L151"></a><tt class="py-lineno">151</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">center</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L152"></a><tt class="py-lineno">152</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt id="link-39" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-39', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-40" class="py-name" targets="Variable VisionEgg.config=VisionEgg-module.html#config"><a title="V [...]
+<a name="L153"></a><tt class="py-lineno">153</tt>  <tt class="py-line">                <tt id="link-41" class="py-name" targets="Variable VisionEgg.logger=VisionEgg-module.html#logger"><a title="VisionEgg.logger" class="py-name" href="#" onclick="return doclink('link-41', 'logger', 'link-41');">logger</a></tt> <tt class="py-op">=</tt> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">getLogger</tt><tt class="py-op">(</tt><tt class="py-string">'VisionEgg.Dots'</t [...]
+<a name="L154"></a><tt class="py-lineno">154</tt>  <tt class="py-line">                <tt id="link-42" class="py-name"><a title="VisionEgg.logger" class="py-name" href="#" onclick="return doclink('link-42', 'logger', 'link-41');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">warning</tt><tt class="py-op">(</tt><tt class="py-string">"Specifying DotArea2D by deprecated "</tt> </tt>
+<a name="L155"></a><tt class="py-lineno">155</tt>  <tt class="py-line">                               <tt class="py-string">"'center' parameter deprecated.  Use "</tt> </tt>
+<a name="L156"></a><tt class="py-lineno">156</tt>  <tt class="py-line">                               <tt class="py-string">"'position' parameter instead.  (Allows "</tt> </tt>
+<a name="L157"></a><tt class="py-lineno">157</tt>  <tt class="py-line">                               <tt class="py-string">"use of 'anchor' parameter to set to "</tt> </tt>
+<a name="L158"></a><tt class="py-lineno">158</tt>  <tt class="py-line">                               <tt class="py-string">"other values.)"</tt><tt class="py-op">)</tt> </tt>
+<a name="L159"></a><tt class="py-lineno">159</tt>  <tt class="py-line">                <tt id="link-43" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-43', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-44" class="py-name"><a title="VisionEgg.config" class="py-name" href="#" onclick="return doclink('link-44', 'config', 'link-40');">config</a></tt><tt class="py-op">.</tt><tt class="py-name">_GAVE_CENTER_DEPRECAT [...]
+<a name="L160"></a><tt class="py-lineno">160</tt>  <tt class="py-line">            <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">anchor</tt> <tt class="py-op">=</tt> <tt class="py-string">'center'</tt> </tt>
+<a name="L161"></a><tt class="py-lineno">161</tt>  <tt class="py-line">            <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">position</tt> <tt class="py-op">=</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">center</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">center</tt><tt class="py-op">[</tt><tt class="py [...]
+<a name="L162"></a><tt class="py-lineno">162</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">on</tt><tt class="py-op">:</tt> </tt>
+<a name="L163"></a><tt class="py-lineno">163</tt>  <tt class="py-line">            <tt class="py-comment"># calculate center</tt> </tt>
+<a name="L164"></a><tt class="py-lineno">164</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">center</tt> <tt class="py-op">=</tt> <tt id="link-45" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-45', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt class="py-name">_get_center</tt><tt class="py-op">(</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">position</tt> [...]
+<a name="L165"></a><tt class="py-lineno">165</tt>  <tt class="py-line"> </tt>
+<a name="L166"></a><tt class="py-lineno">166</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">anti_aliasing</tt><tt class="py-op">:</tt> </tt>
+<a name="L167"></a><tt class="py-lineno">167</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">color</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">4</tt> <tt class="py-keyword">and</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_gave_alpha_warning</tt>< [...]
+<a name="L168"></a><tt class="py-lineno">168</tt>  <tt class="py-line">                    <tt class="py-keyword">if</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">color</tt><tt class="py-op">[</tt><tt class="py-number">3</tt><tt class="py-op">]</tt> <tt class="py-op">!=</tt> <tt class="py-number">1.0</tt><tt class="py-op">:</tt> </tt>
+<a name="L169"></a><tt class="py-lineno">169</tt>  <tt class="py-line">                        <tt id="link-47" class="py-name"><a title="VisionEgg.logger" class="py-name" href="#" onclick="return doclink('link-47', 'logger', 'link-41');">logger</a></tt> <tt class="py-op">=</tt> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">getLogger</tt><tt class="py-op">(</tt><tt class="py-string">'VisionEgg.Dots'</tt><tt class="py-op">)</tt> </tt>
+<a name="L170"></a><tt class="py-lineno">170</tt>  <tt class="py-line">                        <tt id="link-48" class="py-name"><a title="VisionEgg.logger" class="py-name" href="#" onclick="return doclink('link-48', 'logger', 'link-41');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">warning</tt><tt class="py-op">(</tt><tt class="py-string">"The parameter anti_aliasing is "</tt> </tt>
+<a name="L171"></a><tt class="py-lineno">171</tt>  <tt class="py-line">                                       <tt class="py-string">"set to true in the DotArea2D "</tt> </tt>
+<a name="L172"></a><tt class="py-lineno">172</tt>  <tt class="py-line">                                       <tt class="py-string">"stimulus class, but the color "</tt> </tt>
+<a name="L173"></a><tt class="py-lineno">173</tt>  <tt class="py-line">                                       <tt class="py-string">"parameter specifies an alpha "</tt> </tt>
+<a name="L174"></a><tt class="py-lineno">174</tt>  <tt class="py-line">                                       <tt class="py-string">"value other than 1.0.  To "</tt> </tt>
+<a name="L175"></a><tt class="py-lineno">175</tt>  <tt class="py-line">                                       <tt class="py-string">"acheive the best anti-aliasing, "</tt> </tt>
+<a name="L176"></a><tt class="py-lineno">176</tt>  <tt class="py-line">                                       <tt class="py-string">"ensure that the alpha value for "</tt> </tt>
+<a name="L177"></a><tt class="py-lineno">177</tt>  <tt class="py-line">                                       <tt class="py-string">"the color parameter is 1.0."</tt><tt class="py-op">)</tt> </tt>
+<a name="L178"></a><tt class="py-lineno">178</tt>  <tt class="py-line">                        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_gave_alpha_warning</tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L179"></a><tt class="py-lineno">179</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glEnable</tt><tt class="py-op">(</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_POINT_SMOOTH</tt> <tt class="py-op">)</tt> </tt>
+<a name="L180"></a><tt class="py-lineno">180</tt>  <tt class="py-line">                <tt class="py-comment"># allow max_alpha value to control blending</tt> </tt>
+<a name="L181"></a><tt class="py-lineno">181</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glEnable</tt><tt class="py-op">(</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_BLEND</tt> <tt class="py-op">)</tt> </tt>
+<a name="L182"></a><tt class="py-lineno">182</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glBlendFunc</tt><tt class="py-op">(</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_SRC_ALPHA</tt><tt class="py-op">,</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_ONE_MINUS_SRC_ALPHA</tt> <tt class="py-op">)</tt> </tt>
+<a name="L183"></a><tt class="py-lineno">183</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L184"></a><tt class="py-lineno">184</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glDisable</tt><tt class="py-op">(</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_BLEND</tt> <tt class="py-op">)</tt> </tt>
+<a name="L185"></a><tt class="py-lineno">185</tt>  <tt class="py-line"> </tt>
+<a name="L186"></a><tt class="py-lineno">186</tt>  <tt class="py-line">            <tt class="py-name">now_sec</tt> <tt class="py-op">=</tt> <tt id="link-49" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-49', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-50" class="py-name"><a title="VisionEgg.time_func" class="py-name" href="#" onclick="return doclink('link-50', 'time_func', 'link-38');">time_func</a></tt><t [...]
+<a name="L187"></a><tt class="py-lineno">187</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">start_times_sec</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L188"></a><tt class="py-lineno">188</tt>  <tt class="py-line">                <tt class="py-comment"># compute extinct dots and generate new positions</tt> </tt>
+<a name="L189"></a><tt class="py-lineno">189</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-name">replace_indices</tt> <tt class="py-op">=</tt> <tt class="py-name">Numeric</tt><tt class="py-op">.</tt><tt class="py-name">nonzero</tt><tt class="py-op">(</tt> <tt class="py-name">Numeric</tt><tt class="py-op">.</tt><tt class="py-name">greater</tt><tt class="py-op">(</tt> <tt class="py-name">now_sec</tt> <tt class="py-op">-</tt> <tt class="py-name">self</t [...]
+<a name="L190"></a><tt class="py-lineno">190</tt>  <tt class="py-line">                <tt class="py-name">Numeric</tt><tt class="py-op">.</tt><tt class="py-name">put</tt><tt class="py-op">(</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">start_times_sec</tt><tt class="py-op">,</tt> <tt class="py-name">replace_indices</tt><tt class="py-op">,</tt> <tt class="py-name">now_sec</tt> <tt class="py-op">)</tt> </tt>
+<a name="L191"></a><tt class="py-lineno">191</tt>  <tt class="py-line"> </tt>
+<a name="L192"></a><tt class="py-lineno">192</tt>  <tt class="py-line">                <tt class="py-name">new_x_positions</tt> <tt class="py-op">=</tt> <tt class="py-name">RandomArray</tt><tt class="py-op">.</tt><tt class="py-name">uniform</tt><tt class="py-op">(</tt><tt class="py-number">0.0</tt><tt class="py-op">,</tt><tt class="py-number">1.0</tt><tt class="py-op">,</tt> </tt>
+<a name="L193"></a><tt class="py-lineno">193</tt>  <tt class="py-line">                                                      <tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">replace_indices</tt><tt class="py-op">)</tt><tt class="py-op">,</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L194"></a><tt class="py-lineno">194</tt>  <tt class="py-line">                <tt class="py-name">Numeric</tt><tt class="py-op">.</tt><tt class="py-name">put</tt><tt class="py-op">(</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">x_positions</tt><tt class="py-op">,</tt> <tt class="py-name">replace_indices</tt><tt class="py-op">,</tt> <tt class="py-name">new_x_positions</tt> <tt class="py-op">)</tt> </tt>
+<a name="L195"></a><tt class="py-lineno">195</tt>  <tt class="py-line"> </tt>
+<a name="L196"></a><tt class="py-lineno">196</tt>  <tt class="py-line">                <tt class="py-name">new_y_positions</tt> <tt class="py-op">=</tt> <tt class="py-name">RandomArray</tt><tt class="py-op">.</tt><tt class="py-name">uniform</tt><tt class="py-op">(</tt><tt class="py-number">0.0</tt><tt class="py-op">,</tt><tt class="py-number">1.0</tt><tt class="py-op">,</tt> </tt>
+<a name="L197"></a><tt class="py-lineno">197</tt>  <tt class="py-line">                                                      <tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">replace_indices</tt><tt class="py-op">)</tt><tt class="py-op">,</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L198"></a><tt class="py-lineno">198</tt>  <tt class="py-line">                <tt class="py-name">Numeric</tt><tt class="py-op">.</tt><tt class="py-name">put</tt><tt class="py-op">(</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">y_positions</tt><tt class="py-op">,</tt> <tt class="py-name">replace_indices</tt><tt class="py-op">,</tt> <tt class="py-name">new_y_positions</tt> <tt class="py-op">)</tt> </tt>
+<a name="L199"></a><tt class="py-lineno">199</tt>  <tt class="py-line"> </tt>
+<a name="L200"></a><tt class="py-lineno">200</tt>  <tt class="py-line">                <tt class="py-name">new_random_directions_radians</tt> <tt class="py-op">=</tt> <tt class="py-name">RandomArray</tt><tt class="py-op">.</tt><tt class="py-name">uniform</tt><tt class="py-op">(</tt><tt class="py-number">0.0</tt><tt class="py-op">,</tt><tt class="py-number">2</tt><tt class="py-op">*</tt><tt class="py-name">math</tt><tt class="py-op">.</tt><tt class="py-name">pi</tt><tt class="py-op">,</tt> </tt>
+<a name="L201"></a><tt class="py-lineno">201</tt>  <tt class="py-line">                                                                    <tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">replace_indices</tt><tt class="py-op">)</tt><tt class="py-op">,</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L202"></a><tt class="py-lineno">202</tt>  <tt class="py-line">                <tt class="py-name">Numeric</tt><tt class="py-op">.</tt><tt class="py-name">put</tt><tt class="py-op">(</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">random_directions_radians</tt><tt class="py-op">,</tt> <tt class="py-name">replace_indices</tt><tt class="py-op">,</tt> <tt class="py-name">new_random_directions_radians</tt> <tt class="py-op">)</tt> </tt>
+<a name="L203"></a><tt class="py-lineno">203</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L204"></a><tt class="py-lineno">204</tt>  <tt class="py-line">                <tt class="py-comment"># initialize dot extinction values to random (uniform) distribution</tt> </tt>
+<a name="L205"></a><tt class="py-lineno">205</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">start_times_sec</tt> <tt class="py-op">=</tt> <tt class="py-name">RandomArray</tt><tt class="py-op">.</tt><tt class="py-name">uniform</tt><tt class="py-op">(</tt> <tt class="py-name">now_sec</tt> <tt class="py-op">-</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">dot_lifespan_ [...]
+<a name="L206"></a><tt class="py-lineno">206</tt>  <tt class="py-line">                                                            <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">constant_parameters</tt><tt class="py-op">.</tt><tt class="py-name">num_dots</tt><tt class="py-op">,</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L207"></a><tt class="py-lineno">207</tt>  <tt class="py-line"> </tt>
+<a name="L208"></a><tt class="py-lineno">208</tt>  <tt class="py-line">            <tt class="py-name">signal_num_dots</tt> <tt class="py-op">=</tt> <tt id="link-51" class="py-name" targets="Class int=int-class.html"><a title="int" class="py-name" href="#" onclick="return doclink('link-51', 'int', 'link-51');">int</a></tt><tt class="py-op">(</tt><tt class="py-name">round</tt><tt class="py-op">(</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">signal_fraction</tt> [...]
+<a name="L209"></a><tt class="py-lineno">209</tt>  <tt class="py-line">            <tt class="py-name">time_delta_sec</tt> <tt class="py-op">=</tt> <tt class="py-name">now_sec</tt> <tt class="py-op">-</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">last_time_sec</tt> </tt>
+<a name="L210"></a><tt class="py-lineno">210</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">last_time_sec</tt> <tt class="py-op">=</tt> <tt class="py-name">now_sec</tt> <tt class="py-comment"># reset for next loop</tt> </tt>
+<a name="L211"></a><tt class="py-lineno">211</tt>  <tt class="py-line">            <tt class="py-name">x_increment_normalized</tt> <tt class="py-op">=</tt>  <tt class="py-name">math</tt><tt class="py-op">.</tt><tt class="py-name">cos</tt><tt class="py-op">(</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">signal_direction_deg</tt><tt class="py-op">/</tt><tt class="py-number">180.0</tt><tt class="py-op">*</tt><tt class="py-name">math</tt><tt class="py-op">.</tt><t [...]
+<a name="L212"></a><tt class="py-lineno">212</tt>  <tt class="py-line">            <tt class="py-name">y_increment_normalized</tt> <tt class="py-op">=</tt> <tt class="py-op">-</tt><tt class="py-name">math</tt><tt class="py-op">.</tt><tt class="py-name">sin</tt><tt class="py-op">(</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">signal_direction_deg</tt><tt class="py-op">/</tt><tt class="py-number">180.0</tt><tt class="py-op">*</tt><tt class="py-name">math</tt><tt [...]
+<a name="L213"></a><tt class="py-lineno">213</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">x_positions</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-name">signal_num_dots</tt><tt class="py-op">]</tt> <tt class="py-op">+=</tt> <tt class="py-name">x_increment_normalized</tt> </tt>
+<a name="L214"></a><tt class="py-lineno">214</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">y_positions</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-name">signal_num_dots</tt><tt class="py-op">]</tt> <tt class="py-op">+=</tt> <tt class="py-name">y_increment_normalized</tt> </tt>
+<a name="L215"></a><tt class="py-lineno">215</tt>  <tt class="py-line"> </tt>
+<a name="L216"></a><tt class="py-lineno">216</tt>  <tt class="py-line">            <tt class="py-name">num_random_dots</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">constant_parameters</tt><tt class="py-op">.</tt><tt class="py-name">num_dots</tt> <tt class="py-op">-</tt> <tt class="py-name">signal_num_dots</tt> </tt>
+<a name="L217"></a><tt class="py-lineno">217</tt>  <tt class="py-line">            <tt class="py-name">random_x_increment_normalized</tt> <tt class="py-op">=</tt>  <tt class="py-name">Numeric</tt><tt class="py-op">.</tt><tt class="py-name">cos</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">random_directions_radians</tt><tt class="py-op">[</tt><tt class="py-name">signal_num_dots</tt><tt class="py-op">:</tt><tt class="py-op">]</tt><tt c [...]
+<a name="L218"></a><tt class="py-lineno">218</tt>  <tt class="py-line">            <tt class="py-name">random_y_increment_normalized</tt> <tt class="py-op">=</tt> <tt class="py-op">-</tt><tt class="py-name">Numeric</tt><tt class="py-op">.</tt><tt class="py-name">sin</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">random_directions_radians</tt><tt class="py-op">[</tt><tt class="py-name">signal_num_dots</tt><tt class="py-op">:</tt><tt cl [...]
+<a name="L219"></a><tt class="py-lineno">219</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">x_positions</tt><tt class="py-op">[</tt><tt class="py-name">signal_num_dots</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> <tt class="py-op">+=</tt> <tt class="py-name">random_x_increment_normalized</tt> </tt>
+<a name="L220"></a><tt class="py-lineno">220</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">y_positions</tt><tt class="py-op">[</tt><tt class="py-name">signal_num_dots</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> <tt class="py-op">+=</tt> <tt class="py-name">random_y_increment_normalized</tt> </tt>
+<a name="L221"></a><tt class="py-lineno">221</tt>  <tt class="py-line"> </tt>
+<a name="L222"></a><tt class="py-lineno">222</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">x_positions</tt> <tt class="py-op">=</tt> <tt class="py-name">Numeric</tt><tt class="py-op">.</tt><tt class="py-name">fmod</tt><tt class="py-op">(</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">x_positions</tt><tt class="py-op">,</tt> <tt class="py-number">1.0</tt> <tt class="py-op">)</tt> <tt class="py- [...]
+<a name="L223"></a><tt class="py-lineno">223</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">y_positions</tt> <tt class="py-op">=</tt> <tt class="py-name">Numeric</tt><tt class="py-op">.</tt><tt class="py-name">fmod</tt><tt class="py-op">(</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">y_positions</tt><tt class="py-op">,</tt> <tt class="py-number">1.0</tt> <tt class="py-op">)</tt> </tt>
+<a name="L224"></a><tt class="py-lineno">224</tt>  <tt class="py-line"> </tt>
+<a name="L225"></a><tt class="py-lineno">225</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">x_positions</tt> <tt class="py-op">=</tt> <tt class="py-name">Numeric</tt><tt class="py-op">.</tt><tt class="py-name">fmod</tt><tt class="py-op">(</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">x_positions</tt><tt class="py-op">+</tt><tt class="py-number">1</tt><tt class="py-op">,</tt> <tt class="py-numb [...]
+<a name="L226"></a><tt class="py-lineno">226</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">y_positions</tt> <tt class="py-op">=</tt> <tt class="py-name">Numeric</tt><tt class="py-op">.</tt><tt class="py-name">fmod</tt><tt class="py-op">(</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">y_positions</tt><tt class="py-op">+</tt><tt class="py-number">1</tt><tt class="py-op">,</tt> <tt class="py-numb [...]
+<a name="L227"></a><tt class="py-lineno">227</tt>  <tt class="py-line"> </tt>
+<a name="L228"></a><tt class="py-lineno">228</tt>  <tt class="py-line">            <tt class="py-name">xs</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">x_positions</tt> <tt class="py-op">-</tt> <tt class="py-number">0.5</tt><tt class="py-op">)</tt> <tt class="py-op">*</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt id="link-56" class="py-name"><a title="VisionEgg.Core.Screen.size" class="py-name"  [...]
+<a name="L229"></a><tt class="py-lineno">229</tt>  <tt class="py-line">            <tt class="py-name">ys</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">y_positions</tt> <tt class="py-op">-</tt> <tt class="py-number">0.5</tt><tt class="py-op">)</tt> <tt class="py-op">*</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt id="link-57" class="py-name"><a title="VisionEgg.Core.Screen.size" class="py-name"  [...]
+<a name="L230"></a><tt class="py-lineno">230</tt>  <tt class="py-line"> </tt>
+<a name="L231"></a><tt class="py-lineno">231</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">color</tt><tt class="py-op">)</tt><tt class="py-op">==</tt><tt class="py-number">3</tt><tt class="py-op">:</tt> </tt>
+<a name="L232"></a><tt class="py-lineno">232</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glColor3f</tt><tt class="py-op">(</tt><tt class="py-op">*</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">color</tt><tt class="py-op">)</tt> </tt>
+<a name="L233"></a><tt class="py-lineno">233</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">color</tt><tt class="py-op">)</tt><tt class="py-op">==</tt><tt class="py-number">4</tt><tt class="py-op">:</tt> </tt>
+<a name="L234"></a><tt class="py-lineno">234</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glColor4f</tt><tt class="py-op">(</tt><tt class="py-op">*</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">color</tt><tt class="py-op">)</tt> </tt>
+<a name="L235"></a><tt class="py-lineno">235</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glPointSize</tt><tt class="py-op">(</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">dot_size</tt><tt class="py-op">)</tt> </tt>
+<a name="L236"></a><tt class="py-lineno">236</tt>  <tt class="py-line"> </tt>
+<a name="L237"></a><tt class="py-lineno">237</tt>  <tt class="py-line">            <tt class="py-comment"># Clear the modeview matrix</tt> </tt>
+<a name="L238"></a><tt class="py-lineno">238</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glMatrixMode</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_MODELVIEW</tt><tt class="py-op">)</tt> </tt>
+<a name="L239"></a><tt class="py-lineno">239</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glPushMatrix</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L240"></a><tt class="py-lineno">240</tt>  <tt class="py-line"> </tt>
+<a name="L241"></a><tt class="py-lineno">241</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glDisable</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE_2D</tt><tt class="py-op">)</tt> </tt>
+<a name="L242"></a><tt class="py-lineno">242</tt>  <tt class="py-line"> </tt>
+<a name="L243"></a><tt class="py-lineno">243</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">depth</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L244"></a><tt class="py-lineno">244</tt>  <tt class="py-line">                <tt class="py-name">depth</tt> <tt class="py-op">=</tt> <tt class="py-number">0.0</tt> </tt>
+<a name="L245"></a><tt class="py-lineno">245</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L246"></a><tt class="py-lineno">246</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glEnable</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_DEPTH_TEST</tt><tt class="py-op">)</tt> </tt>
+<a name="L247"></a><tt class="py-lineno">247</tt>  <tt class="py-line">                <tt class="py-name">depth</tt> <tt class="py-op">=</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">depth</tt> </tt>
+<a name="L248"></a><tt class="py-lineno">248</tt>  <tt class="py-line">            <tt class="py-name">zs</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">depth</tt><tt class="py-op">,</tt><tt class="py-op">)</tt><tt class="py-op">*</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">xs</tt><tt class="py-op">)</tt> <tt class="py-comment"># make N tuple with repeat value of depth</tt> </tt>
+<a name="L249"></a><tt class="py-lineno">249</tt>  <tt class="py-line">            <tt id="link-58" class="py-name" targets="Function VisionEgg.Dots.draw_dots()=VisionEgg.Dots-module.html#draw_dots"><a title="VisionEgg.Dots.draw_dots" class="py-name" href="#" onclick="return doclink('link-58', 'draw_dots', 'link-58');">draw_dots</a></tt><tt class="py-op">(</tt><tt class="py-name">xs</tt><tt class="py-op">,</tt><tt class="py-name">ys</tt><tt class="py-op">,</tt><tt class="py-name">zs</tt> [...]
+<a name="L250"></a><tt class="py-lineno">250</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">anti_aliasing</tt><tt class="py-op">:</tt> </tt>
+<a name="L251"></a><tt class="py-lineno">251</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glDisable</tt><tt class="py-op">(</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_POINT_SMOOTH</tt> <tt class="py-op">)</tt> <tt class="py-comment"># turn off</tt> </tt>
+<a name="L252"></a><tt class="py-lineno">252</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glPopMatrix</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L253"></a><tt class="py-lineno">253</tt>  <tt class="py-line"> </tt><script type="text/javascript">
+<!--
+expandto(location.href);
+// -->
+</script>
+</pre>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:47 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.Dots.DotArea2D-class.html b/doc/reference/html/VisionEgg.Dots.DotArea2D-class.html
new file mode 100644
index 0000000..a067102
--- /dev/null
+++ b/doc/reference/html/VisionEgg.Dots.DotArea2D-class.html
@@ -0,0 +1,413 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.Dots.DotArea2D</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.Dots-module.html">Module Dots</a> ::
+        Class DotArea2D
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.Dots.DotArea2D-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class DotArea2D</h1><span class="codelink"><a href="VisionEgg.Dots-pysrc.html#DotArea2D">source code</a></span><br /><br />
+<pre class="base-tree">
+         object --+        
+                  |        
+<a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a> --+    
+                      |    
+          <a href="VisionEgg.Core.Stimulus-class.html">Core.Stimulus</a> --+
+                          |
+                         <strong class="uidshort">DotArea2D</strong>
+</pre>
+
+<hr />
+<pre class="literalblock">
+Random dots of constant velocity
+
+Every dot has the same velocity. Some fraction of the dots all
+move in the one direction, while the rest move in random
+directions. Dots wrap around edges. Each dot has a lifespan.
+
+This is just one example of the endless variations on drawing random dots.
+
+Parameters
+==========
+anchor                  -- (String)
+                           Default: center
+anti_aliasing           -- (Boolean)
+                           Default: True
+color                   -- (AnyOf(Sequence3 of Real or Sequence4 of Real))
+                           Default: (1.0, 1.0, 1.0)
+depth                   -- (Real)
+                           Default: (determined at runtime)
+dot_lifespan_sec        -- (Real)
+                           Default: 5.0
+dot_size                -- (Real)
+                           Default: 4.0
+on                      -- (Boolean)
+                           Default: True
+position                -- (Sequence2 of Real)
+                           Default: (320.0, 240.0)
+signal_direction_deg    -- (Real)
+                           Default: 90.0
+signal_fraction         -- (Real)
+                           Default: 0.5
+size                    -- (Sequence2 of Real)
+                           Default: (300.0, 300.0)
+velocity_pixels_per_sec -- (Real)
+                           Default: 10.0
+
+Constant Parameters
+===================
+num_dots -- (UnsignedInteger)
+            Default: 100
+
+</pre><br /><br />
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.Dots.DotArea2D-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">**kw</span>)</span><br />
+      Instantiate and get ready to draw.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.Dots-pysrc.html#DotArea2D.__init__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.Dots.DotArea2D-class.html#draw" class="summary-sig-name">draw</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      Draw the stimulus.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.Dots-pysrc.html#DotArea2D.draw">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a></code></b>:
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__getstate__">__getstate__</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__setstate__">__setstate__</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#get_specified_type">get_specified_type</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#is_constant_parameter">is_constant_parameter</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#set">set</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#verify_parameters">verify_parameters</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__delattr__</code>,
+      <code>__getattribute__</code>,
+      <code>__hash__</code>,
+      <code>__new__</code>,
+      <code>__reduce__</code>,
+      <code>__reduce_ex__</code>,
+      <code>__repr__</code>,
+      <code>__setattr__</code>,
+      <code>__str__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Class Variables</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.Dots.DotArea2D-class.html#parameters_and_defaults" class="summary-name">parameters_and_defaults</a> = <code title="{'on':(True, ve_types.Boolean), 'position':((320.0, 240.0), ve_types.S\
+equence2(ve_types.Real)), 'anchor':('center', ve_types.String), 'size'\
+:((300.0, 300.0), ve_types.Sequence2(ve_types.Real)), 'signal_fraction\
+':(0.5, ve_types.Real), 'signal_direction_deg':(90.0, ve_types.Real), \
+'velocity_pixels_per_sec':(10.0, ve_types.Real), 'dot_lifespan_sec':(5\
+.0, ve_types.Real), 'color':((1.0, 1.0, 1.0), ve_types.AnyOf(ve_types.\
+Sequence3(ve_types.Real), ve_types.Sequence4(ve_types.Real))), 'dot_si\
+ze':(4.0, ve_types.Real), 'anti_aliasing':(True, ve_types.Boolean), 'd\
+...">{'on':(True, ve_types.Boolean), 'pos<code class="variable-ellipsis">...</code></code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.Dots.DotArea2D-class.html#constant_parameters_and_defaults" class="summary-name">constant_parameters_and_defaults</a> = <code title="{'num_dots':(100, ve_types.UnsignedInteger),}">{'num_dots':(100, ve_types.<code class="variable-ellipsis">...</code></code>
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a></code></b>:
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__safe_for_unpickling__">__safe_for_unpickling__</a></code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Properties</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__class__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Method Details</span></td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">**kw</span>)</span>
+    <br /><em class="fname">(Constructor)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.Dots-pysrc.html#DotArea2D.__init__">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Instantiate and get ready to draw.
+
+Set parameter values and create anything needed to draw the
+stimulus including OpenGL state variables such display lists
+and texture objects.
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.Core.Stimulus-class.html#__init__">Core.Stimulus.__init__</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="draw"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">draw</span>(<span class="sig-arg">self</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.Dots-pysrc.html#DotArea2D.draw">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Draw the stimulus. (Called by Viewport instance.)
+
+This method is called every frame.  This method actually
+performs the OpenGL calls to draw the stimulus.
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.Core.Stimulus-class.html#draw">Core.Stimulus.draw</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== CLASS VARIABLE DETAILS ==================== -->
+<a name="section-ClassVariableDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Class Variable Details</span></td>
+</tr>
+</table>
+<a name="parameters_and_defaults"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">parameters_and_defaults</h3>
+  
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+{'on':(True, ve_types.Boolean), 'position':((320.0, 240.0), ve_types.S<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+equence2(ve_types.Real)), 'anchor':('center', ve_types.String), 'size'<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+:((300.0, 300.0), ve_types.Sequence2(ve_types.Real)), 'signal_fraction<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+':(0.5, ve_types.Real), 'signal_direction_deg':(90.0, ve_types.Real), <span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+'velocity_pixels_per_sec':(10.0, ve_types.Real), 'dot_lifespan_sec':(5<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+.0, ve_types.Real), 'color':((1.0, 1.0, 1.0), ve_types.AnyOf(ve_types.<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+Sequence3(ve_types.Real), ve_types.Sequence4(ve_types.Real))), 'dot_si<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+ze':(4.0, ve_types.Real), 'anti_aliasing':(True, ve_types.Boolean), 'd<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+<code class="variable-ellipsis">...</code>
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="constant_parameters_and_defaults"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">constant_parameters_and_defaults</h3>
+  
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+{'num_dots':(100, ve_types.UnsignedInteger),}
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.FlowControl-module.html b/doc/reference/html/VisionEgg.FlowControl-module.html
new file mode 100644
index 0000000..374d127
--- /dev/null
+++ b/doc/reference/html/VisionEgg.FlowControl-module.html
@@ -0,0 +1,269 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.FlowControl</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        Module FlowControl
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.FlowControl-module.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== MODULE DESCRIPTION ==================== -->
+<h1 class="epydoc">Module FlowControl</h1><span class="codelink"><a href="VisionEgg.FlowControl-pysrc.html">source code</a></span><br /><br />
+<pre class="literalblock">
+
+Flow control for the Vision Egg.
+
+</pre><br /><br />
+
+<!-- ==================== CLASSES ==================== -->
+<a name="section-Classes"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Classes</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.FlowControl.Presentation-class.html" class="summary-name">Presentation</a><br />
+      Handles the timing and coordination of stimulus presentation.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.FlowControl.Controller-class.html" class="summary-name">Controller</a><br />
+      Control parameters.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.FlowControl.ConstantController-class.html" class="summary-name">ConstantController</a><br />
+      Set parameters to a constant value.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.FlowControl.EvalStringController-class.html" class="summary-name">EvalStringController</a><br />
+      Set parameters using dynamically interpreted Python string.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.FlowControl.ExecStringController-class.html" class="summary-name">ExecStringController</a><br />
+      Set parameters using potentially complex Python string.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.FlowControl.FunctionController-class.html" class="summary-name">FunctionController</a><br />
+      Set parameters using a Python function.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.FlowControl.EncapsulatedController-class.html" class="summary-name">EncapsulatedController</a><br />
+      Set parameters by encapsulating another Controller.
+    </td>
+  </tr>
+</table>
+<!-- ==================== VARIABLES ==================== -->
+<a name="section-Variables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Variables</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="TIME_INDEPENDENT"></a><span class="summary-name">TIME_INDEPENDENT</span> = <code title="0x00">0x00</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="TIME_SEC_ABSOLUTE"></a><span class="summary-name">TIME_SEC_ABSOLUTE</span> = <code title="0x01">0x01</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="TIME_SEC_SINCE_GO"></a><span class="summary-name">TIME_SEC_SINCE_GO</span> = <code title="0x02">0x02</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="FRAMES_ABSOLUTE"></a><span class="summary-name">FRAMES_ABSOLUTE</span> = <code title="0x04">0x04</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="FRAMES_SINCE_GO"></a><span class="summary-name">FRAMES_SINCE_GO</span> = <code title="0x08">0x08</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="NEVER"></a><span class="summary-name">NEVER</span> = <code title="0x00">0x00</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="EVERY_FRAME"></a><span class="summary-name">EVERY_FRAME</span> = <code title="0x01">0x01</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="TRANSITIONS"></a><span class="summary-name">TRANSITIONS</span> = <code title="0x02">0x02</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="ONCE"></a><span class="summary-name">ONCE</span> = <code title="0x04">0x04</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="NOT_DURING_GO"></a><span class="summary-name">NOT_DURING_GO</span> = <code title="0x08">0x08</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="NOT_BETWEEN_GO"></a><span class="summary-name">NOT_BETWEEN_GO</span> = <code title="0x10">0x10</code>
+    </td>
+  </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.FlowControl-pysrc.html b/doc/reference/html/VisionEgg.FlowControl-pysrc.html
new file mode 100644
index 0000000..77da844
--- /dev/null
+++ b/doc/reference/html/VisionEgg.FlowControl-pysrc.html
@@ -0,0 +1,2510 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.FlowControl</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        Module FlowControl
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.FlowControl-pysrc.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<h1 class="epydoc">Source Code for <a href="VisionEgg.FlowControl-module.html">Module VisionEgg.FlowControl</a></h1>
+<pre class="py-src">
+<a name="L1"></a><tt class="py-lineno">   1</tt>  <tt class="py-line"><tt class="py-comment"># The Vision Egg: FlowControl</tt> </tt>
+<a name="L2"></a><tt class="py-lineno">   2</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L3"></a><tt class="py-lineno">   3</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Copyright (C) 2001-2004 Andrew Straw.</tt> </tt>
+<a name="L4"></a><tt class="py-lineno">   4</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Copyright (C) 2008 California Institute of Technology</tt> </tt>
+<a name="L5"></a><tt class="py-lineno">   5</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L6"></a><tt class="py-lineno">   6</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># URL: <http://www.visionegg.org/></tt> </tt>
+<a name="L7"></a><tt class="py-lineno">   7</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L8"></a><tt class="py-lineno">   8</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Distributed under the terms of the GNU Lesser General Public License</tt> </tt>
+<a name="L9"></a><tt class="py-lineno">   9</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># (LGPL). See LICENSE.TXT that came with this file.</tt> </tt>
+<a name="L10"></a><tt class="py-lineno">  10</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L11"></a><tt class="py-lineno">  11</tt>  <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L12"></a><tt class="py-lineno">  12</tt>  <tt class="py-line"><tt class="py-docstring">Flow control for the Vision Egg.</tt> </tt>
+<a name="L13"></a><tt class="py-lineno">  13</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L14"></a><tt class="py-lineno">  14</tt>  <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L15"></a><tt class="py-lineno">  15</tt>  <tt class="py-line"> </tt>
+<a name="L16"></a><tt class="py-lineno">  16</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">logging</tt> </tt>
+<a name="L17"></a><tt class="py-lineno">  17</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">handlers</tt> </tt>
+<a name="L18"></a><tt class="py-lineno">  18</tt>  <tt class="py-line"> </tt>
+<a name="L19"></a><tt class="py-lineno">  19</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-0" class="py-name" targets="Package VisionEgg=VisionEgg-module.html"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-0', 'VisionEgg', 'link-0');">VisionEgg</a></tt> </tt>
+<a name="L20"></a><tt class="py-lineno">  20</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-1" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-1', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-2" class="py-name" targets="Module VisionEgg.GL=VisionEgg.GL-module.html"><a title="VisionEgg.GL" class="py-name" href="#" onclick="return doclink('link-2', 'GL', 'link-2');">GL</a></tt> <tt cla [...]
+<a name="L21"></a><tt class="py-lineno">  21</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-3" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-3', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-4" class="py-name" targets="Module VisionEgg.ParameterTypes=VisionEgg.ParameterTypes-module.html"><a title="VisionEgg.ParameterTypes" class="py-name" href="#" onclick="return doclink('link-4', ' [...]
+<a name="L22"></a><tt class="py-lineno">  22</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">numpy</tt><tt class="py-op">.</tt><tt class="py-name">oldnumeric</tt> <tt class="py-keyword">as</tt> <tt class="py-name">Numeric</tt><tt class="py-op">,</tt> <tt class="py-name">math</tt><tt class="py-op">,</tt> <tt class="py-name">types</tt> </tt>
+<a name="L23"></a><tt class="py-lineno">  23</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">pygame</tt> </tt>
+<a name="L24"></a><tt class="py-lineno">  24</tt>  <tt class="py-line"> </tt>
+<a name="L25"></a><tt class="py-lineno">  25</tt>  <tt class="py-line"><tt class="py-comment">####################################################################</tt> </tt>
+<a name="L26"></a><tt class="py-lineno">  26</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L27"></a><tt class="py-lineno">  27</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#        Presentation</tt> </tt>
+<a name="L28"></a><tt class="py-lineno">  28</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L29"></a><tt class="py-lineno">  29</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">####################################################################</tt> </tt>
+<a name="L30"></a><tt class="py-lineno">  30</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="Presentation"></a><div id="Presentation-def"><a name="L31"></a><tt class="py-lineno">  31</tt> <a class="py-toggle" href="#" id="Presentation-toggle" onclick="return toggle('Presentation');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.FlowControl.Presentation-class.html">Presentation</a><tt class="py-op">(</tt><tt class="py-base-class">VisionEgg</tt><tt class="py-op">.</tt><tt class="py-base-class">ClassWithParameters</tt><tt [...]
+</div><div id="Presentation-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="Presentation-expanded"><a name="L32"></a><tt class="py-lineno">  32</tt>  <tt class="py-line">    <tt class="py-docstring">"""Handles the timing and coordination of stimulus presentation.</tt> </tt>
+<a name="L33"></a><tt class="py-lineno">  33</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L34"></a><tt class="py-lineno">  34</tt>  <tt class="py-line"><tt class="py-docstring">    This class is the key to the real-time operation of the Vision</tt> </tt>
+<a name="L35"></a><tt class="py-lineno">  35</tt>  <tt class="py-line"><tt class="py-docstring">    Egg. It contains the main 'go' loop, and maintains the association</tt> </tt>
+<a name="L36"></a><tt class="py-lineno">  36</tt>  <tt class="py-line"><tt class="py-docstring">    between 'controllers', instances of the Controller class, and the</tt> </tt>
+<a name="L37"></a><tt class="py-lineno">  37</tt>  <tt class="py-line"><tt class="py-docstring">    parameters they control.</tt> </tt>
+<a name="L38"></a><tt class="py-lineno">  38</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L39"></a><tt class="py-lineno">  39</tt>  <tt class="py-line"><tt class="py-docstring">    During the main 'go' loop and at other specific times, the</tt> </tt>
+<a name="L40"></a><tt class="py-lineno">  40</tt>  <tt class="py-line"><tt class="py-docstring">    parameters are updated via function calls to the controllers.</tt> </tt>
+<a name="L41"></a><tt class="py-lineno">  41</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L42"></a><tt class="py-lineno">  42</tt>  <tt class="py-line"><tt class="py-docstring">    Between entries into the 'go' loop, a Vision Egg application</tt> </tt>
+<a name="L43"></a><tt class="py-lineno">  43</tt>  <tt class="py-line"><tt class="py-docstring">    should call the method between_presentations as often as possible</tt> </tt>
+<a name="L44"></a><tt class="py-lineno">  44</tt>  <tt class="py-line"><tt class="py-docstring">    to ensure parameter values are kept up to date and any</tt> </tt>
+<a name="L45"></a><tt class="py-lineno">  45</tt>  <tt class="py-line"><tt class="py-docstring">    housekeeping done by controllers is done.</tt> </tt>
+<a name="L46"></a><tt class="py-lineno">  46</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L47"></a><tt class="py-lineno">  47</tt>  <tt class="py-line"><tt class="py-docstring">    No OpenGL environment I know of can guarantee that a new frame is</tt> </tt>
+<a name="L48"></a><tt class="py-lineno">  48</tt>  <tt class="py-line"><tt class="py-docstring">    drawn and the double buffers swapped before the monitor's next</tt> </tt>
+<a name="L49"></a><tt class="py-lineno">  49</tt>  <tt class="py-line"><tt class="py-docstring">    vertical retrace sync pulse.  Still, although one can worry</tt> </tt>
+<a name="L50"></a><tt class="py-lineno">  50</tt>  <tt class="py-line"><tt class="py-docstring">    endlessly about this problem, it works.  In other words, on a fast</tt> </tt>
+<a name="L51"></a><tt class="py-lineno">  51</tt>  <tt class="py-line"><tt class="py-docstring">    computer with a fast graphics card running even a pre-emptive</tt> </tt>
+<a name="L52"></a><tt class="py-lineno">  52</tt>  <tt class="py-line"><tt class="py-docstring">    multi-tasking operating system (see below for specific</tt> </tt>
+<a name="L53"></a><tt class="py-lineno">  53</tt>  <tt class="py-line"><tt class="py-docstring">    information), a new frame is drawn before every monitor update. If</tt> </tt>
+<a name="L54"></a><tt class="py-lineno">  54</tt>  <tt class="py-line"><tt class="py-docstring">    this did become a problem, the go() method could be re-implemented</tt> </tt>
+<a name="L55"></a><tt class="py-lineno">  55</tt>  <tt class="py-line"><tt class="py-docstring">    in C, along with the functions it calls.  This would probably</tt> </tt>
+<a name="L56"></a><tt class="py-lineno">  56</tt>  <tt class="py-line"><tt class="py-docstring">    result in speed gains, but without skipping frames at 200 Hz, why</tt> </tt>
+<a name="L57"></a><tt class="py-lineno">  57</tt>  <tt class="py-line"><tt class="py-docstring">    bother?</tt> </tt>
+<a name="L58"></a><tt class="py-lineno">  58</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L59"></a><tt class="py-lineno">  59</tt>  <tt class="py-line"><tt class="py-docstring">    Parameters</tt> </tt>
+<a name="L60"></a><tt class="py-lineno">  60</tt>  <tt class="py-line"><tt class="py-docstring">    ==========</tt> </tt>
+<a name="L61"></a><tt class="py-lineno">  61</tt>  <tt class="py-line"><tt class="py-docstring">    check_events                 -- allow input event checking during 'go' loop? (Boolean)</tt> </tt>
+<a name="L62"></a><tt class="py-lineno">  62</tt>  <tt class="py-line"><tt class="py-docstring">                                    Default: True</tt> </tt>
+<a name="L63"></a><tt class="py-lineno">  63</tt>  <tt class="py-line"><tt class="py-docstring">    collect_timing_info          -- log timing statistics during go loop? (Boolean)</tt> </tt>
+<a name="L64"></a><tt class="py-lineno">  64</tt>  <tt class="py-line"><tt class="py-docstring">                                    Default: True</tt> </tt>
+<a name="L65"></a><tt class="py-lineno">  65</tt>  <tt class="py-line"><tt class="py-docstring">    enter_go_loop                -- test used by run_forever() to enter go loop (Boolean)</tt> </tt>
+<a name="L66"></a><tt class="py-lineno">  66</tt>  <tt class="py-line"><tt class="py-docstring">                                    Default: False</tt> </tt>
+<a name="L67"></a><tt class="py-lineno">  67</tt>  <tt class="py-line"><tt class="py-docstring">    go_duration                  -- Tuple to specify 'go' loop duration. Either (value,units) or ('forever',) (Sequence of AnyOf(Real or String))</tt> </tt>
+<a name="L68"></a><tt class="py-lineno">  68</tt>  <tt class="py-line"><tt class="py-docstring">                                    Default: (5.0, 'seconds')</tt> </tt>
+<a name="L69"></a><tt class="py-lineno">  69</tt>  <tt class="py-line"><tt class="py-docstring">    handle_event_callbacks       -- List of tuples to handle events. (event_type,event_callback_func) (Sequence of Sequence2 of AnyOf(Integer or Callable))</tt> </tt>
+<a name="L70"></a><tt class="py-lineno">  70</tt>  <tt class="py-line"><tt class="py-docstring">                                    Default: (determined at runtime)</tt> </tt>
+<a name="L71"></a><tt class="py-lineno">  71</tt>  <tt class="py-line"><tt class="py-docstring">    override_t_abs_sec           -- Override t_abs. Set only when reconstructing experiments. (units: seconds) (Real)</tt> </tt>
+<a name="L72"></a><tt class="py-lineno">  72</tt>  <tt class="py-line"><tt class="py-docstring">                                    Default: (determined at runtime)</tt> </tt>
+<a name="L73"></a><tt class="py-lineno">  73</tt>  <tt class="py-line"><tt class="py-docstring">    quit                         -- quit the run_forever loop? (Boolean)</tt> </tt>
+<a name="L74"></a><tt class="py-lineno">  74</tt>  <tt class="py-line"><tt class="py-docstring">                                    Default: False</tt> </tt>
+<a name="L75"></a><tt class="py-lineno">  75</tt>  <tt class="py-line"><tt class="py-docstring">    trigger_armed                -- test trigger on go loop? (Boolean)</tt> </tt>
+<a name="L76"></a><tt class="py-lineno">  76</tt>  <tt class="py-line"><tt class="py-docstring">                                    Default: True</tt> </tt>
+<a name="L77"></a><tt class="py-lineno">  77</tt>  <tt class="py-line"><tt class="py-docstring">    trigger_go_if_armed          -- trigger go loop? (Boolean)</tt> </tt>
+<a name="L78"></a><tt class="py-lineno">  78</tt>  <tt class="py-line"><tt class="py-docstring">                                    Default: True</tt> </tt>
+<a name="L79"></a><tt class="py-lineno">  79</tt>  <tt class="py-line"><tt class="py-docstring">    viewports                    -- list of Viewport instances to draw. Order is important. (Sequence of Instance of <class 'VisionEgg.ClassWithParameters'>)</tt> </tt>
+<a name="L80"></a><tt class="py-lineno">  80</tt>  <tt class="py-line"><tt class="py-docstring">                                    Default: (determined at runtime)</tt> </tt>
+<a name="L81"></a><tt class="py-lineno">  81</tt>  <tt class="py-line"><tt class="py-docstring">    warn_longest_frame_threshold -- threshold to print frame skipped warning (units: factor of inter-frame-interval) (Real)</tt> </tt>
+<a name="L82"></a><tt class="py-lineno">  82</tt>  <tt class="py-line"><tt class="py-docstring">                                    Default: 2.0</tt> </tt>
+<a name="L83"></a><tt class="py-lineno">  83</tt>  <tt class="py-line"><tt class="py-docstring">    warn_mean_fps_threshold      -- threshold to print observered vs. expected frame rate warning (fraction units) (Real)</tt> </tt>
+<a name="L84"></a><tt class="py-lineno">  84</tt>  <tt class="py-line"><tt class="py-docstring">                                    Default: 0.01</tt> </tt>
+<a name="L85"></a><tt class="py-lineno">  85</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L86"></a><tt class="py-lineno">  86</tt>  <tt class="py-line">    <tt id="link-5" class="py-name" targets="Variable VisionEgg.ClassWithParameters.parameters_and_defaults=VisionEgg.ClassWithParameters-class.html#parameters_and_defaults,Variable VisionEgg.Core.FixationSpot.parameters_and_defaults=VisionEgg.Core.FixationSpot-class.html#parameters_and_defaults,Variable VisionEgg.Core.ProjectionBaseClass.parameters_and_defaults=VisionEgg.Core.ProjectionBaseClass-class.html#parameters [...]
+VisionEgg.Core.FixationSpot.parameters_and_defaults
+VisionEgg.Core.ProjectionBaseClass.parameters_and_defaults
+VisionEgg.Core.Screen.parameters_and_defaults
+VisionEgg.Core.Viewport.parameters_and_defaults
+VisionEgg.Daq.Buffered.parameters_and_defaults
+VisionEgg.Dots.DotArea2D.parameters_and_defaults
+VisionEgg.FlowControl.Presentation.parameters_and_defaults
+VisionEgg.Gratings.AlphaGratingCommon.parameters_and_defaults
+VisionEgg.Gratings.LuminanceGratingCommon.parameters_and_defaults
+VisionEgg.Gratings.SinGrating2D.parameters_and_defaults
+VisionEgg.Gratings.SinGrating3D.parameters_and_defaults
+VisionEgg.MoreStimuli.Arrow.parameters_and_defaults
+VisionEgg.MoreStimuli.FilledCircle.parameters_and_defaults
+VisionEgg.MoreStimuli.Rectangle3D.parameters_and_defaults
+VisionEgg.MoreStimuli.Target2D.parameters_and_defaults
+VisionEgg.PyroApps.EPhysGUI.Loop.parameters_and_defaults
+VisionEgg.SphereMap.AzElGrid.parameters_and_defaults
+VisionEgg.SphereMap.SphereGrating.parameters_and_defaults
+VisionEgg.SphereMap.SphereMap.parameters_and_defaults
+VisionEgg.SphereMap.SphereWindow.parameters_and_defaults
+VisionEgg.Text.BitmapText.parameters_and_defaults
+VisionEgg.Text.GlutTextBase.parameters_and_defaults
+VisionEgg.Text.StrokeText.parameters_and_defaults
+VisionEgg.Text.Text.parameters_and_defaults
+VisionEgg.Textures.FixationCross.parameters_and_defaults
+VisionEgg.Textures.SpinningDrum.parameters_and_defaults
+VisionEgg.Textures.TextureStimulus.parameters_and_defaults
+VisionEgg.Textures.TextureStimulus3D.parameters_and_defaults
+VisionEgg.Textures.TextureStimulusBaseClass.parameters_and_defaults
+VisionEgg.WrappedText.WrappedText.parameters_and_defaults" class="py-name" href="#" onclick="return doclink('link-5', 'parameters_and_defaults', 'link-5');">parameters_and_defaults</a></tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> </tt>
+<a name="L87"></a><tt class="py-lineno">  87</tt>  <tt class="py-line">        <tt class="py-string">'viewports'</tt> <tt class="py-op">:</tt> <tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
+<a name="L88"></a><tt class="py-lineno">  88</tt>  <tt class="py-line">                       <tt class="py-comment"># XXX should really require VisionEgg.Core.Viewport</tt> </tt>
+<a name="L89"></a><tt class="py-lineno">  89</tt>  <tt class="py-line">                       <tt class="py-comment"># but that would lead to circular import problem</tt> </tt>
+<a name="L90"></a><tt class="py-lineno">  90</tt>  <tt class="py-line">                       <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-6" class="py-name" targets="Class VisionEgg.ParameterTypes.Sequence=VisionEgg.ParameterTypes.Sequence-class.html"><a title="VisionEgg.ParameterTypes.Sequence" class="py-name" href="#" onclick="return doclink('link-6', 'Sequence', 'link-6');">Sequence</a></tt><tt class="py-op">(</tt><tt class="py-name">ve_types</tt><tt class="p [...]
+<a name="L91"></a><tt class="py-lineno">  91</tt>  <tt class="py-line">                       <tt class="py-string">'list of Viewport instances to draw. Order is important.'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L92"></a><tt class="py-lineno">  92</tt>  <tt class="py-line">        <tt class="py-string">'collect_timing_info'</tt> <tt class="py-op">:</tt> <tt class="py-op">(</tt><tt class="py-name">True</tt><tt class="py-op">,</tt> </tt>
+<a name="L93"></a><tt class="py-lineno">  93</tt>  <tt class="py-line">                                 <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-10" class="py-name" targets="Class VisionEgg.ParameterTypes.Boolean=VisionEgg.ParameterTypes.Boolean-class.html"><a title="VisionEgg.ParameterTypes.Boolean" class="py-name" href="#" onclick="return doclink('link-10', 'Boolean', 'link-10');">Boolean</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L94"></a><tt class="py-lineno">  94</tt>  <tt class="py-line">                                 <tt class="py-string">'log timing statistics during go loop?'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L95"></a><tt class="py-lineno">  95</tt>  <tt class="py-line">        <tt class="py-string">'go_duration'</tt> <tt class="py-op">:</tt> <tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-number">5.0</tt><tt class="py-op">,</tt><tt class="py-string">'seconds'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L96"></a><tt class="py-lineno">  96</tt>  <tt class="py-line">                         <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-11" class="py-name"><a title="VisionEgg.ParameterTypes.Sequence" class="py-name" href="#" onclick="return doclink('link-11', 'Sequence', 'link-6');">Sequence</a></tt><tt class="py-op">(</tt><tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-12" class="py-name" targets="Class VisionEgg.ParameterTypes.AnyOf= [...]
+<a name="L97"></a><tt class="py-lineno">  97</tt>  <tt class="py-line">                                                          <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-14" class="py-name" targets="Class VisionEgg.ParameterTypes.String=VisionEgg.ParameterTypes.String-class.html"><a title="VisionEgg.ParameterTypes.String" class="py-name" href="#" onclick="return doclink('link-14', 'String', 'link-14');">String</a></tt><tt class="py-op">)</tt><tt class="py-op" [...]
+<a name="L98"></a><tt class="py-lineno">  98</tt>  <tt class="py-line">                         <tt class="py-string">"Tuple to specify 'go' loop duration. Either (value,units) or ('forever',)"</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L99"></a><tt class="py-lineno">  99</tt>  <tt class="py-line">        <tt class="py-string">'check_events'</tt> <tt class="py-op">:</tt> <tt class="py-op">(</tt><tt class="py-name">True</tt><tt class="py-op">,</tt> <tt class="py-comment"># May cause slight performance hit, but probably negligible</tt> </tt>
+<a name="L100"></a><tt class="py-lineno"> 100</tt>  <tt class="py-line">                          <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-15" class="py-name"><a title="VisionEgg.ParameterTypes.Boolean" class="py-name" href="#" onclick="return doclink('link-15', 'Boolean', 'link-10');">Boolean</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L101"></a><tt class="py-lineno"> 101</tt>  <tt class="py-line">                          <tt class="py-string">"allow input event checking during 'go' loop?"</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L102"></a><tt class="py-lineno"> 102</tt>  <tt class="py-line">        <tt class="py-string">'handle_event_callbacks'</tt> <tt class="py-op">:</tt> <tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
+<a name="L103"></a><tt class="py-lineno"> 103</tt>  <tt class="py-line">                                    <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-16" class="py-name"><a title="VisionEgg.ParameterTypes.Sequence" class="py-name" href="#" onclick="return doclink('link-16', 'Sequence', 'link-6');">Sequence</a></tt><tt class="py-op">(</tt><tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-17" class="py-name" targets="Class VisionEgg.Parameter [...]
+<a name="L104"></a><tt class="py-lineno"> 104</tt>  <tt class="py-line">                                    <tt class="py-string">"List of tuples to handle events. (event_type,event_callback_func)"</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L105"></a><tt class="py-lineno"> 105</tt>  <tt class="py-line">        <tt class="py-string">'trigger_armed'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-name">True</tt><tt class="py-op">,</tt> </tt>
+<a name="L106"></a><tt class="py-lineno"> 106</tt>  <tt class="py-line">                         <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-21" class="py-name"><a title="VisionEgg.ParameterTypes.Boolean" class="py-name" href="#" onclick="return doclink('link-21', 'Boolean', 'link-10');">Boolean</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L107"></a><tt class="py-lineno"> 107</tt>  <tt class="py-line">                         <tt class="py-string">"test trigger on go loop?"</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L108"></a><tt class="py-lineno"> 108</tt>  <tt class="py-line">        <tt class="py-string">'trigger_go_if_armed'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-name">True</tt><tt class="py-op">,</tt> </tt>
+<a name="L109"></a><tt class="py-lineno"> 109</tt>  <tt class="py-line">                               <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-22" class="py-name"><a title="VisionEgg.ParameterTypes.Boolean" class="py-name" href="#" onclick="return doclink('link-22', 'Boolean', 'link-10');">Boolean</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L110"></a><tt class="py-lineno"> 110</tt>  <tt class="py-line">                               <tt class="py-string">"trigger go loop?"</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L111"></a><tt class="py-lineno"> 111</tt>  <tt class="py-line">        <tt class="py-string">'enter_go_loop'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-name">False</tt><tt class="py-op">,</tt> </tt>
+<a name="L112"></a><tt class="py-lineno"> 112</tt>  <tt class="py-line">                         <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-23" class="py-name"><a title="VisionEgg.ParameterTypes.Boolean" class="py-name" href="#" onclick="return doclink('link-23', 'Boolean', 'link-10');">Boolean</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L113"></a><tt class="py-lineno"> 113</tt>  <tt class="py-line">                         <tt class="py-string">"test used by run_forever() to enter go loop"</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L114"></a><tt class="py-lineno"> 114</tt>  <tt class="py-line">        <tt class="py-string">'quit'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-name">False</tt><tt class="py-op">,</tt> </tt>
+<a name="L115"></a><tt class="py-lineno"> 115</tt>  <tt class="py-line">                <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-24" class="py-name"><a title="VisionEgg.ParameterTypes.Boolean" class="py-name" href="#" onclick="return doclink('link-24', 'Boolean', 'link-10');">Boolean</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L116"></a><tt class="py-lineno"> 116</tt>  <tt class="py-line">                <tt class="py-string">"quit the run_forever loop?"</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L117"></a><tt class="py-lineno"> 117</tt>  <tt class="py-line">        <tt class="py-string">'warn_mean_fps_threshold'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-number">0.01</tt><tt class="py-op">,</tt> <tt class="py-comment"># fraction (0.1 = 10%)</tt> </tt>
+<a name="L118"></a><tt class="py-lineno"> 118</tt>  <tt class="py-line">                                   <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-25" class="py-name"><a title="VisionEgg.ParameterTypes.Real" class="py-name" href="#" onclick="return doclink('link-25', 'Real', 'link-13');">Real</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L119"></a><tt class="py-lineno"> 119</tt>  <tt class="py-line">                                   <tt class="py-string">"threshold to print observered vs. expected frame rate warning (fraction units)"</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L120"></a><tt class="py-lineno"> 120</tt>  <tt class="py-line">        <tt class="py-string">'warn_longest_frame_threshold'</tt><tt class="py-op">:</tt> <tt class="py-op">(</tt><tt class="py-number">2.0</tt><tt class="py-op">,</tt> <tt class="py-comment"># fraction (set to 2.0 for no false positives)</tt> </tt>
+<a name="L121"></a><tt class="py-lineno"> 121</tt>  <tt class="py-line">                                         <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-26" class="py-name"><a title="VisionEgg.ParameterTypes.Real" class="py-name" href="#" onclick="return doclink('link-26', 'Real', 'link-13');">Real</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L122"></a><tt class="py-lineno"> 122</tt>  <tt class="py-line">                                         <tt class="py-string">"threshold to print frame skipped warning (units: factor of inter-frame-interval)"</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L123"></a><tt class="py-lineno"> 123</tt>  <tt class="py-line">        <tt class="py-string">'override_t_abs_sec'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-comment"># override t_abs (in seconds) -- set only when reconstructing experiments</tt> </tt>
+<a name="L124"></a><tt class="py-lineno"> 124</tt>  <tt class="py-line">                              <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-27" class="py-name"><a title="VisionEgg.ParameterTypes.Real" class="py-name" href="#" onclick="return doclink('link-27', 'Real', 'link-13');">Real</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L125"></a><tt class="py-lineno"> 125</tt>  <tt class="py-line">                              <tt class="py-string">"Override t_abs. Set only when reconstructing experiments. (units: seconds)"</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L126"></a><tt class="py-lineno"> 126</tt>  <tt class="py-line">        <tt class="py-op">}</tt> </tt>
+<a name="L127"></a><tt class="py-lineno"> 127</tt>  <tt class="py-line"> </tt>
+<a name="L128"></a><tt class="py-lineno"> 128</tt>  <tt class="py-line">    <tt class="py-name">__slots__</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt> </tt>
+<a name="L129"></a><tt class="py-lineno"> 129</tt>  <tt class="py-line">        <tt class="py-string">'controllers'</tt><tt class="py-op">,</tt> </tt>
+<a name="L130"></a><tt class="py-lineno"> 130</tt>  <tt class="py-line">        <tt class="py-string">'num_frame_controllers'</tt><tt class="py-op">,</tt> </tt>
+<a name="L131"></a><tt class="py-lineno"> 131</tt>  <tt class="py-line">        <tt class="py-string">'frame_draw_times'</tt><tt class="py-op">,</tt> </tt>
+<a name="L132"></a><tt class="py-lineno"> 132</tt>  <tt class="py-line">        <tt class="py-string">'time_sec_absolute'</tt><tt class="py-op">,</tt> </tt>
+<a name="L133"></a><tt class="py-lineno"> 133</tt>  <tt class="py-line">        <tt class="py-string">'frames_absolute'</tt><tt class="py-op">,</tt> </tt>
+<a name="L134"></a><tt class="py-lineno"> 134</tt>  <tt class="py-line">        <tt class="py-string">'in_go_loop'</tt><tt class="py-op">,</tt> </tt>
+<a name="L135"></a><tt class="py-lineno"> 135</tt>  <tt class="py-line">        <tt class="py-string">'frames_dropped_in_last_go_loop'</tt><tt class="py-op">,</tt> </tt>
+<a name="L136"></a><tt class="py-lineno"> 136</tt>  <tt class="py-line">        <tt class="py-string">'last_go_loop_start_time_absolute_sec'</tt><tt class="py-op">,</tt> </tt>
+<a name="L137"></a><tt class="py-lineno"> 137</tt>  <tt class="py-line">        <tt class="py-string">'time_sec_since_go'</tt><tt class="py-op">,</tt> </tt>
+<a name="L138"></a><tt class="py-lineno"> 138</tt>  <tt class="py-line">        <tt class="py-string">'frames_since_go'</tt><tt class="py-op">,</tt> </tt>
+<a name="L139"></a><tt class="py-lineno"> 139</tt>  <tt class="py-line">        <tt class="py-op">)</tt> </tt>
+<a name="L140"></a><tt class="py-lineno"> 140</tt>  <tt class="py-line"> </tt>
+<a name="Presentation.__init__"></a><div id="Presentation.__init__-def"><a name="L141"></a><tt class="py-lineno"> 141</tt> <a class="py-toggle" href="#" id="Presentation.__init__-toggle" onclick="return toggle('Presentation.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.FlowControl.Presentation-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt><tt class="py-op">* [...]
+</div><div id="Presentation.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Presentation.__init__-expanded"><a name="L142"></a><tt class="py-lineno"> 142</tt>  <tt class="py-line">        <tt id="link-28" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-28', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-29" class="py-name"><a title="VisionEgg.ClassWithParameters" class="py-n [...]
+VisionEgg.Configuration.Config.__init__
+VisionEgg.Core.FixationSpot.__init__
+VisionEgg.Core.FrameTimer.__init__
+VisionEgg.Core.ModelView.__init__
+VisionEgg.Core.OrthographicProjection.__init__
+VisionEgg.Core.OrthographicProjectionNoZClip.__init__
+VisionEgg.Core.PerspectiveProjection.__init__
+VisionEgg.Core.Projection.__init__
+VisionEgg.Core.ProjectionBaseClass.__init__
+VisionEgg.Core.Screen.__init__
+VisionEgg.Core.SimplePerspectiveProjection.__init__
+VisionEgg.Core.Stimulus.__init__
+VisionEgg.Core.Viewport.__init__
+VisionEgg.Daq.Channel.__init__
+VisionEgg.Daq.DaqMode.__init__
+VisionEgg.Daq.Device.__init__
+VisionEgg.Daq.Functionality.__init__
+VisionEgg.Daq.SignalType.__init__
+VisionEgg.DaqKeyboard.KeyboardTriggerInController.__init__
+VisionEgg.DaqLPT.LPTChannel.__init__
+VisionEgg.DaqLPT.LPTDevice.__init__
+VisionEgg.DaqLPT.LPTTriggerInController.__init__
+VisionEgg.DaqLPT.LPTTriggerOutController.__init__
+VisionEgg.Deprecated.Message.__init__
+VisionEgg.Dots.DotArea2D.__init__
+VisionEgg.FlowControl.ConstantController.__init__
+VisionEgg.FlowControl.Controller.__init__
+VisionEgg.FlowControl.EncapsulatedController.__init__
+VisionEgg.FlowControl.EvalStringController.__init__
+VisionEgg.FlowControl.ExecStringController.__init__
+VisionEgg.FlowControl.FunctionController.__init__
+VisionEgg.FlowControl.Presentation.__init__
+VisionEgg.GLTrace.Wrapper.__init__
+VisionEgg.GUI.AppWindow.__init__
+VisionEgg.GUI.GetKeypressDialog.__init__
+VisionEgg.GUI.GraphicsConfigurationWindow.__init__
+VisionEgg.GUI.InfoFrame.__init__
+VisionEgg.GUI.ProgressBar.__init__
+VisionEgg.GUI.ToplevelDialog.__init__
+VisionEgg.Gratings.SinGrating2D.__init__
+VisionEgg.Gratings.SinGrating3D.__init__
+VisionEgg.MoreStimuli.Arrow.__init__
+VisionEgg.MoreStimuli.FilledCircle.__init__
+VisionEgg.MoreStimuli.Rectangle3D.__init__
+VisionEgg.MoreStimuli.Target2D.__init__
+VisionEgg.ParameterTypes.AnyOf.__init__
+VisionEgg.ParameterTypes.Instance.__init__
+VisionEgg.ParameterTypes.Sequence.__init__
+VisionEgg.ParameterTypes.SubClass.__init__
+VisionEgg.PyroApps.AST_ext.AST_Visitor.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalMetaParameters.__init__
+VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.__init__
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.__init__
+VisionEgg.PyroApps.DropinGUI.DropinMetaParameters.__init__
+VisionEgg.PyroApps.DropinServer.DropinMetaController.__init__
+VisionEgg.PyroApps.EPhysGUI.AppWindow.__init__
+VisionEgg.PyroApps.EPhysGUI.BarButton.__init__
+VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase.__init__
+VisionEgg.PyroApps.EPhysGUI.GammaFrame.__init__
+VisionEgg.PyroApps.EPhysGUI.ImageSequenceLauncher.__init__
+VisionEgg.PyroApps.EPhysGUI.Loop.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopContainedObject.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopParamDialog.__init__
+VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.__init__
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.__init__
+VisionEgg.PyroApps.EPhysServer.EPhysServer.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingMetaParameters.__init__
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.GridGUI.GridControlFrame.__init__
+VisionEgg.PyroApps.GridGUI.GridMetaParameters.__init__
+VisionEgg.PyroApps.GridServer.GridMetaController.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetMetaParameters.__init__
+VisionEgg.PyroApps.MouseTargetServer.MousePositionController.__init__
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetOrientationController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetPositionController.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.CallbackEntry.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionParameters.__init__
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingMetaParameters.__init__
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumMetaParameters.__init__
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.__init__
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.__init__
+VisionEgg.PyroApps.TargetGUI.TargetMetaParameters.__init__
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.__init__
+VisionEgg.PyroClient.PyroClient.__init__
+VisionEgg.PyroHelpers.PyroConstantController.__init__
+VisionEgg.PyroHelpers.PyroEncapsulatedController.__init__
+VisionEgg.PyroHelpers.PyroEvalStringController.__init__
+VisionEgg.PyroHelpers.PyroExecStringController.__init__
+VisionEgg.PyroHelpers.PyroListenController.__init__
+VisionEgg.PyroHelpers.PyroLocalDictController.__init__
+VisionEgg.PyroHelpers.PyroServer.__init__
+VisionEgg.QuickTime.MovieTexture.__init__
+VisionEgg.ResponseControl.KeyboardResponseController.__init__
+VisionEgg.ResponseControl.ResponseController.__init__
+VisionEgg.SphereMap.AzElGrid.__init__
+VisionEgg.SphereMap.SphereGrating.__init__
+VisionEgg.SphereMap.SphereMap.__init__
+VisionEgg.SphereMap.SphereWindow.__init__
+VisionEgg.TCPController.SocketListenController.__init__
+VisionEgg.TCPController.TCPController.__init__
+VisionEgg.TCPController.TCPServer.__init__
+VisionEgg.Text.BitmapText.__init__
+VisionEgg.Text.GlutTextBase.__init__
+VisionEgg.Text.StrokeText.__init__
+VisionEgg.Text.Text.__init__
+VisionEgg.Textures.FixationCross.__init__
+VisionEgg.Textures.Mask2D.__init__
+VisionEgg.Textures.SpinningDrum.__init__
+VisionEgg.Textures.Texture.__init__
+VisionEgg.Textures.TextureFromFile.__init__
+VisionEgg.Textures.TextureObject.__init__
+VisionEgg.Textures.TextureStimulusBaseClass.__init__
+VisionEgg.ThreeDeeMath.TransformMatrix.__init__
+VisionEgg.WrappedText.WrappedText.__init__
+VisionEgg.qtmovie.Movie.__init__
+VisionEgg.qtmovie.Rect.__init__" class="py-name" href="#" onclick="return doclink('link-30', '__init__', 'link-30');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt><tt class="py-op">**</tt><tt class="py-name">kw</tt><tt class="py-op">)</tt> </tt>
+<a name="L143"></a><tt class="py-lineno"> 143</tt>  <tt class="py-line"> </tt>
+<a name="L144"></a><tt class="py-lineno"> 144</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">viewports</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L145"></a><tt class="py-lineno"> 145</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">viewports</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L146"></a><tt class="py-lineno"> 146</tt>  <tt class="py-line"> </tt>
+<a name="L147"></a><tt class="py-lineno"> 147</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt id="link-31" class="py-name" targets="Variable VisionEgg.PyroApps.MouseTargetServer.handle_event_callbacks=VisionEgg.PyroApps.MouseTargetServer-module.html#handle_event_callbacks"><a title="VisionEgg.PyroApps.MouseTargetServer.handle_event_callbacks" class="py-name [...]
+<a name="L148"></a><tt class="py-lineno"> 148</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt id="link-32" class="py-name"><a title="VisionEgg.PyroApps.MouseTargetServer.handle_event_callbacks" class="py-name" href="#" onclick="return doclink('link-32', 'handle_event_callbacks', 'link-31');">handle_event_callbacks</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="p [...]
+<a name="L149"></a><tt class="py-lineno"> 149</tt>  <tt class="py-line"> </tt>
+<a name="L150"></a><tt class="py-lineno"> 150</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">controllers</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L151"></a><tt class="py-lineno"> 151</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">num_frame_controllers</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> <tt class="py-comment"># reference counter for controllers that are called on frame by frame basis</tt> </tt>
+<a name="L152"></a><tt class="py-lineno"> 152</tt>  <tt class="py-line"> </tt>
+<a name="L153"></a><tt class="py-lineno"> 153</tt>  <tt class="py-line">        <tt class="py-comment"># A list that optionally records when frames were drawn by go() method.</tt> </tt>
+<a name="L154"></a><tt class="py-lineno"> 154</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">frame_draw_times</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L155"></a><tt class="py-lineno"> 155</tt>  <tt class="py-line"> </tt>
+<a name="L156"></a><tt class="py-lineno"> 156</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">time_sec_absolute</tt><tt class="py-op">=</tt><tt id="link-33" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-33', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-34" class="py-name" targets="Variable VisionEgg.time_func=VisionEgg-module.html#time_func"><a title [...]
+<a name="L157"></a><tt class="py-lineno"> 157</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">frames_absolute</tt><tt class="py-op">=</tt><tt class="py-number">0</tt> </tt>
+<a name="L158"></a><tt class="py-lineno"> 158</tt>  <tt class="py-line"> </tt>
+<a name="L159"></a><tt class="py-lineno"> 159</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">in_go_loop</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
+<a name="L160"></a><tt class="py-lineno"> 160</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">frames_dropped_in_last_go_loop</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
+<a name="L161"></a><tt class="py-lineno"> 161</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">last_go_loop_start_time_absolute_sec</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+</div><a name="L162"></a><tt class="py-lineno"> 162</tt>  <tt class="py-line"> </tt>
+<a name="Presentation.add_controller"></a><div id="Presentation.add_controller-def"><a name="L163"></a><tt class="py-lineno"> 163</tt> <a class="py-toggle" href="#" id="Presentation.add_controller-toggle" onclick="return toggle('Presentation.add_controller');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.FlowControl.Presentation-class.html#add_controller">add_controller</a><tt class="py-op">(</tt> <tt class="py-param">self</tt><tt cl [...]
+</div><div id="Presentation.add_controller-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Presentation.add_controller-expanded"><a name="L164"></a><tt class="py-lineno"> 164</tt>  <tt class="py-line">        <tt class="py-docstring">"""Add a controller"""</tt> </tt>
+<a name="L165"></a><tt class="py-lineno"> 165</tt>  <tt class="py-line">        <tt class="py-comment"># Check if type checking needed</tt> </tt>
+<a name="L166"></a><tt class="py-lineno"> 166</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">class_with_parameters</tt><tt class="py-op">)</tt> <tt class="py-op">!=</tt> <tt class="py-name">types</tt><tt class="py-op">.</tt><tt id="link-35" class="py-name" targets="Class VisionEgg.ParameterTypes.NoneType=VisionEgg.ParameterTypes.NoneType-class.html"><a title="VisionEgg.P [...]
+<a name="L167"></a><tt class="py-lineno"> 167</tt>  <tt class="py-line">            <tt class="py-comment"># Check if return type of controller eval is same as parameter type</tt> </tt>
+<a name="L168"></a><tt class="py-lineno"> 168</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">if</tt> <tt class="py-name">class_with_parameters</tt><tt class="py-op">.</tt><tt id="link-37" class="py-name" targets="Method VisionEgg.ClassWithParameters.is_constant_parameter()=VisionEgg.ClassWithParameters-class.html#is_constant_parameter"><a title="VisionEgg.ClassWithParameters.is_constant_parameter" class="py-name" href="#" onclick="return doclink( [...]
+<a name="L169"></a><tt class="py-lineno"> 169</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> <tt class="py-name">TypeError</tt><tt class="py-op">(</tt><tt class="py-string">"Attempt to control constant parameter '%s' of class %s."</tt><tt class="py-op">%</tt><tt class="py-op">(</tt><tt class="py-name">parameter_name</tt><tt class="py-op">,</tt><tt class="py-name">class_with_parameters</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L170"></a><tt class="py-lineno"> 170</tt>  <tt class="py-line">            <tt class="py-name">require_type</tt> <tt class="py-op">=</tt> <tt class="py-name">class_with_parameters</tt><tt class="py-op">.</tt><tt id="link-38" class="py-name" targets="Method VisionEgg.ClassWithParameters.get_specified_type()=VisionEgg.ClassWithParameters-class.html#get_specified_type"><a title="VisionEgg.ClassWithParameters.get_specified_type" class="py-name" href="#" onclick="return doclink('link [...]
+<a name="L171"></a><tt class="py-lineno"> 171</tt>  <tt class="py-line">            <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L172"></a><tt class="py-lineno"> 172</tt>  <tt class="py-line">                <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-39" class="py-name" targets="Function VisionEgg.ParameterTypes.assert_type()=VisionEgg.ParameterTypes-module.html#assert_type,Function VisionEgg.assert_type()=VisionEgg-module.html#assert_type"><a title="VisionEgg.ParameterTypes.assert_type
+VisionEgg.assert_type" class="py-name" href="#" onclick="return doclink('link-39', 'assert_type', 'link-39');">assert_type</a></tt><tt class="py-op">(</tt><tt class="py-name">controller</tt><tt class="py-op">.</tt><tt id="link-40" class="py-name" targets="Method VisionEgg.FlowControl.Controller.returns_type()=VisionEgg.FlowControl.Controller-class.html#returns_type"><a title="VisionEgg.FlowControl.Controller.returns_type" class="py-name" href="#" onclick="return doclink('link-40', 'retur [...]
+<a name="L173"></a><tt class="py-lineno"> 173</tt>  <tt class="py-line">            <tt class="py-keyword">except</tt> <tt class="py-name">TypeError</tt><tt class="py-op">:</tt> </tt>
+<a name="L174"></a><tt class="py-lineno"> 174</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> <tt class="py-name">TypeError</tt><tt class="py-op">(</tt><tt class="py-string">"Attempting to control parameter '%s' of type %s with controller that returns type %s"</tt><tt class="py-op">%</tt><tt class="py-op">(</tt> </tt>
+<a name="L175"></a><tt class="py-lineno"> 175</tt>  <tt class="py-line">                    <tt class="py-name">parameter_name</tt><tt class="py-op">,</tt> </tt>
+<a name="L176"></a><tt class="py-lineno"> 176</tt>  <tt class="py-line">                    <tt class="py-name">require_type</tt><tt class="py-op">,</tt> </tt>
+<a name="L177"></a><tt class="py-lineno"> 177</tt>  <tt class="py-line">                    <tt class="py-name">controller</tt><tt class="py-op">.</tt><tt id="link-41" class="py-name"><a title="VisionEgg.FlowControl.Controller.returns_type" class="py-name" href="#" onclick="return doclink('link-41', 'returns_type', 'link-40');">returns_type</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L178"></a><tt class="py-lineno"> 178</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt class="py-name">class_with_parameters</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">,</tt><tt class="py-name">parameter_name</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L179"></a><tt class="py-lineno"> 179</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> <tt class="py-name">AttributeError</tt><tt class="py-op">(</tt><tt class="py-string">"%s has no instance '%s'"</tt><tt class="py-op">%</tt><tt class="py-name">parameter_name</tt><tt class="py-op">)</tt> </tt>
+<a name="L180"></a><tt class="py-lineno"> 180</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">controllers</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt> <tt class="py-op">(</tt><tt class="py-name">class_with_parameters</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">,</tt><tt class="py-name">parameter_name</tt><tt class="py-op">,</tt> <tt class="py-name">co [...]
+<a name="L181"></a><tt class="py-lineno"> 181</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> <tt class="py-comment"># At least one of class_with_parameters or parameter_name is None.</tt> </tt>
+<a name="L182"></a><tt class="py-lineno"> 182</tt>  <tt class="py-line">            <tt class="py-comment"># Make sure they both are None.</tt> </tt>
+<a name="L183"></a><tt class="py-lineno"> 183</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-op">(</tt><tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">class_with_parameters</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-name">types</tt><tt class="py-op">.</tt><tt id="link-42" class="py-name"><a title="VisionEgg.ParameterTypes.NoneType" class="py-n [...]
+<a name="L184"></a><tt class="py-lineno"> 184</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">"Neither or both of class_with_parameters and parameter_name must be None."</tt><tt class="py-op">)</tt> </tt>
+<a name="L185"></a><tt class="py-lineno"> 185</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">controllers</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt> <tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt><tt class="py-name">None</tt><tt class="py-op">,</tt><tt class="py-name">controller</tt><tt class="py-op">)</tt> <tt class="py-op">)</tt> </tt>
+<a name="L186"></a><tt class="py-lineno"> 186</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">controller</tt><tt class="py-op">.</tt><tt class="py-name">temporal_variables</tt> <tt class="py-op">&</tt> <tt class="py-op">(</tt><tt id="link-44" class="py-name" targets="Variable VisionEgg.FlowControl.Controller.FRAMES_SINCE_GO=VisionEgg.FlowControl.Controller-class.html#FRAMES_SINCE_GO,Variable VisionEgg.FlowControl.FRAMES_SINCE_GO=VisionEgg.FlowCont [...]
+VisionEgg.FlowControl.FRAMES_SINCE_GO" class="py-name" href="#" onclick="return doclink('link-44', 'FRAMES_SINCE_GO', 'link-44');">FRAMES_SINCE_GO</a></tt><tt class="py-op">|</tt><tt id="link-45" class="py-name" targets="Variable VisionEgg.FlowControl.Controller.FRAMES_ABSOLUTE=VisionEgg.FlowControl.Controller-class.html#FRAMES_ABSOLUTE,Variable VisionEgg.FlowControl.FRAMES_ABSOLUTE=VisionEgg.FlowControl-module.html#FRAMES_ABSOLUTE"><a title="VisionEgg.FlowControl.Controller.FRAMES_ABSOLUTE
+VisionEgg.FlowControl.FRAMES_ABSOLUTE" class="py-name" href="#" onclick="return doclink('link-45', 'FRAMES_ABSOLUTE', 'link-45');">FRAMES_ABSOLUTE</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L187"></a><tt class="py-lineno"> 187</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">num_frame_controllers</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">num_frame_controllers</tt> <tt class="py-op">+</tt> <tt class="py-number">1</tt> </tt>
+</div><a name="L188"></a><tt class="py-lineno"> 188</tt>  <tt class="py-line"> </tt>
+<a name="Presentation.remove_controller"></a><div id="Presentation.remove_controller-def"><a name="L189"></a><tt class="py-lineno"> 189</tt> <a class="py-toggle" href="#" id="Presentation.remove_controller-toggle" onclick="return toggle('Presentation.remove_controller');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.FlowControl.Presentation-class.html#remove_controller">remove_controller</a><tt class="py-op">(</tt> <tt class="py-para [...]
+</div><div id="Presentation.remove_controller-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Presentation.remove_controller-expanded"><a name="L190"></a><tt class="py-lineno"> 190</tt>  <tt class="py-line">        <tt class="py-docstring">"""Remove one (or more--see below) controller(s).</tt> </tt>
+<a name="L191"></a><tt class="py-lineno"> 191</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L192"></a><tt class="py-lineno"> 192</tt>  <tt class="py-line"><tt class="py-docstring">        If controller is None, all controllers affecting the</tt> </tt>
+<a name="L193"></a><tt class="py-lineno"> 193</tt>  <tt class="py-line"><tt class="py-docstring">        specified parameter are removed.</tt> </tt>
+<a name="L194"></a><tt class="py-lineno"> 194</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L195"></a><tt class="py-lineno"> 195</tt>  <tt class="py-line"><tt class="py-docstring">        If class_with_parameters and paramter_name are None, the</tt> </tt>
+<a name="L196"></a><tt class="py-lineno"> 196</tt>  <tt class="py-line"><tt class="py-docstring">        controller is removed completely</tt> </tt>
+<a name="L197"></a><tt class="py-lineno"> 197</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L198"></a><tt class="py-lineno"> 198</tt>  <tt class="py-line"><tt class="py-docstring">        If class_with_parameters, paramter_name, and controller are</tt> </tt>
+<a name="L199"></a><tt class="py-lineno"> 199</tt>  <tt class="py-line"><tt class="py-docstring">        all None, all controllers are removed.</tt> </tt>
+<a name="L200"></a><tt class="py-lineno"> 200</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L201"></a><tt class="py-lineno"> 201</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L202"></a><tt class="py-lineno"> 202</tt>  <tt class="py-line"> </tt>
+<a name="L203"></a><tt class="py-lineno"> 203</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">class_with_parameters</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt> <tt class="py-keyword">and</tt> <tt class="py-name">parameter_name</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L204"></a><tt class="py-lineno"> 204</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">controller</tt><tt class="py-op">,</tt><tt id="link-46" class="py-name" targets="Class VisionEgg.FlowControl.Controller=VisionEgg.FlowControl.Controller-class.html"><a title="VisionEgg.FlowControl.Controller" class="py-name" href="#" onclick="return doclink('link-46 [...]
+<a name="L205"></a><tt class="py-lineno"> 205</tt>  <tt class="py-line"> </tt>
+<a name="L206"></a><tt class="py-lineno"> 206</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> <tt class="py-name">TypeError</tt><tt class="py-op">(</tt> <tt class="py-string">"When deleting a controller, specify an "</tt> </tt>
+<a name="L207"></a><tt class="py-lineno"> 207</tt>  <tt class="py-line">                                 <tt class="py-string">"instance of VisionEgg.FlowControl.Controller class!"</tt><tt class="py-op">)</tt> </tt>
+<a name="L208"></a><tt class="py-lineno"> 208</tt>  <tt class="py-line"> </tt>
+<a name="L209"></a><tt class="py-lineno"> 209</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">controller</tt> <tt class="py-op">==</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> <tt class="py-comment">#Added by Tony, May30/2005</tt> </tt>
+<a name="L210"></a><tt class="py-lineno"> 210</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">controllers</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L211"></a><tt class="py-lineno"> 211</tt>  <tt class="py-line"> </tt>
+<a name="L212"></a><tt class="py-lineno"> 212</tt>  <tt class="py-line">            <tt class="py-name">i</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L213"></a><tt class="py-lineno"> 213</tt>  <tt class="py-line">            <tt class="py-keyword">while</tt> <tt class="py-name">i</tt> <tt class="py-op"><</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">controllers</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L214"></a><tt class="py-lineno"> 214</tt>  <tt class="py-line">                <tt class="py-name">orig_parameters</tt><tt class="py-op">,</tt><tt class="py-name">orig_parameter_name</tt><tt class="py-op">,</tt><tt class="py-name">orig_controller</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">controllers</tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">]</tt> </tt>
+<a name="L215"></a><tt class="py-lineno"> 215</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">controller</tt> <tt class="py-op">==</tt> <tt class="py-name">orig_controller</tt><tt class="py-op">:</tt> </tt>
+<a name="L216"></a><tt class="py-lineno"> 216</tt>  <tt class="py-line">                    <tt class="py-keyword">del</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">controllers</tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">]</tt> </tt>
+<a name="L217"></a><tt class="py-lineno"> 217</tt>  <tt class="py-line">                <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L218"></a><tt class="py-lineno"> 218</tt>  <tt class="py-line">                    <tt class="py-name">i</tt> <tt class="py-op">=</tt> <tt class="py-name">i</tt> <tt class="py-op">+</tt> <tt class="py-number">1</tt> </tt>
+<a name="L219"></a><tt class="py-lineno"> 219</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> </tt>
+<a name="L220"></a><tt class="py-lineno"> 220</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">controller</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L221"></a><tt class="py-lineno"> 221</tt>  <tt class="py-line">            <tt class="py-comment"># The controller function is not specified:</tt> </tt>
+<a name="L222"></a><tt class="py-lineno"> 222</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># Delete all controllers that control the parameter specified.</tt> </tt>
+<a name="L223"></a><tt class="py-lineno"> 223</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">if</tt> <tt class="py-name">class_with_parameters</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt> <tt class="py-keyword">or</tt> <tt class="py-name">parameter_name</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L224"></a><tt class="py-lineno"> 224</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">"Must specify parameter from which controller should be removed."</tt><tt class="py-op">)</tt> </tt>
+<a name="L225"></a><tt class="py-lineno"> 225</tt>  <tt class="py-line">            <tt class="py-name">i</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L226"></a><tt class="py-lineno"> 226</tt>  <tt class="py-line">            <tt class="py-keyword">while</tt> <tt class="py-name">i</tt> <tt class="py-op"><</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">controllers</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L227"></a><tt class="py-lineno"> 227</tt>  <tt class="py-line">                <tt class="py-name">orig_parameters</tt><tt class="py-op">,</tt><tt class="py-name">orig_parameter_name</tt><tt class="py-op">,</tt><tt class="py-name">orig_controller</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">controllers</tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">]</tt> </tt>
+<a name="L228"></a><tt class="py-lineno"> 228</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">orig_parameters</tt> <tt class="py-op">==</tt> <tt class="py-name">class_with_parameters</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt> <tt class="py-keyword">and</tt> </tt>
+<a name="L229"></a><tt class="py-lineno"> 229</tt>  <tt class="py-line">                    <tt class="py-name">orig_parameter_name</tt> <tt class="py-op">==</tt> <tt class="py-name">parameter_name</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L230"></a><tt class="py-lineno"> 230</tt>  <tt class="py-line">                    <tt class="py-name">controller</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">controllers</tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">2</tt><tt class="py-op">]</tt> </tt>
+<a name="L231"></a><tt class="py-lineno"> 231</tt>  <tt class="py-line">                    <tt class="py-keyword">if</tt> <tt class="py-name">controller</tt><tt class="py-op">.</tt><tt class="py-name">temporal_variables</tt> <tt class="py-op">&</tt> <tt class="py-op">(</tt><tt id="link-47" class="py-name"><a title="VisionEgg.FlowControl.Controller.FRAMES_SINCE_GO
+VisionEgg.FlowControl.FRAMES_SINCE_GO" class="py-name" href="#" onclick="return doclink('link-47', 'FRAMES_SINCE_GO', 'link-44');">FRAMES_SINCE_GO</a></tt><tt class="py-op">|</tt><tt id="link-48" class="py-name"><a title="VisionEgg.FlowControl.Controller.FRAMES_ABSOLUTE
+VisionEgg.FlowControl.FRAMES_ABSOLUTE" class="py-name" href="#" onclick="return doclink('link-48', 'FRAMES_ABSOLUTE', 'link-45');">FRAMES_ABSOLUTE</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L232"></a><tt class="py-lineno"> 232</tt>  <tt class="py-line">                        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">num_frame_controllers</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">num_frame_controllers</tt> <tt class="py-op">-</tt> <tt class="py-number">1</tt> </tt>
+<a name="L233"></a><tt class="py-lineno"> 233</tt>  <tt class="py-line">                    <tt class="py-keyword">del</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">controllers</tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">]</tt> </tt>
+<a name="L234"></a><tt class="py-lineno"> 234</tt>  <tt class="py-line">                <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L235"></a><tt class="py-lineno"> 235</tt>  <tt class="py-line">                    <tt class="py-name">i</tt> <tt class="py-op">=</tt> <tt class="py-name">i</tt> <tt class="py-op">+</tt> <tt class="py-number">1</tt> </tt>
+<a name="L236"></a><tt class="py-lineno"> 236</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> <tt class="py-comment"># controller is specified</tt> </tt>
+<a name="L237"></a><tt class="py-lineno"> 237</tt>  <tt class="py-line">            <tt class="py-comment"># Delete only that specific controller</tt> </tt>
+<a name="L238"></a><tt class="py-lineno"> 238</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">i</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L239"></a><tt class="py-lineno"> 239</tt>  <tt class="py-line">            <tt class="py-keyword">while</tt> <tt class="py-name">i</tt> <tt class="py-op"><</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">controllers</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L240"></a><tt class="py-lineno"> 240</tt>  <tt class="py-line">                <tt class="py-name">orig_parameters</tt><tt class="py-op">,</tt><tt class="py-name">orig_parameter_name</tt><tt class="py-op">,</tt><tt class="py-name">orig_controller</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">controllers</tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">]</tt> </tt>
+<a name="L241"></a><tt class="py-lineno"> 241</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">orig_parameters</tt> <tt class="py-op">==</tt> <tt class="py-name">class_with_parameters</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt> <tt class="py-keyword">and</tt> </tt>
+<a name="L242"></a><tt class="py-lineno"> 242</tt>  <tt class="py-line">                    <tt class="py-name">orig_parameter_name</tt> <tt class="py-op">==</tt> <tt class="py-name">parameter_name</tt> <tt class="py-keyword">and</tt> </tt>
+<a name="L243"></a><tt class="py-lineno"> 243</tt>  <tt class="py-line">                    <tt class="py-name">orig_controller</tt> <tt class="py-op">==</tt> <tt class="py-name">controller</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L244"></a><tt class="py-lineno"> 244</tt>  <tt class="py-line">                    <tt class="py-keyword">if</tt> <tt class="py-name">controller</tt><tt class="py-op">.</tt><tt class="py-name">temporal_variables</tt> <tt class="py-op">&</tt> <tt class="py-op">(</tt><tt id="link-49" class="py-name"><a title="VisionEgg.FlowControl.Controller.FRAMES_SINCE_GO
+VisionEgg.FlowControl.FRAMES_SINCE_GO" class="py-name" href="#" onclick="return doclink('link-49', 'FRAMES_SINCE_GO', 'link-44');">FRAMES_SINCE_GO</a></tt><tt class="py-op">|</tt><tt id="link-50" class="py-name"><a title="VisionEgg.FlowControl.Controller.FRAMES_ABSOLUTE
+VisionEgg.FlowControl.FRAMES_ABSOLUTE" class="py-name" href="#" onclick="return doclink('link-50', 'FRAMES_ABSOLUTE', 'link-45');">FRAMES_ABSOLUTE</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L245"></a><tt class="py-lineno"> 245</tt>  <tt class="py-line">                        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">num_frame_controllers</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">num_frame_controllers</tt> <tt class="py-op">-</tt> <tt class="py-number">1</tt> </tt>
+<a name="L246"></a><tt class="py-lineno"> 246</tt>  <tt class="py-line">                <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L247"></a><tt class="py-lineno"> 247</tt>  <tt class="py-line">                    <tt class="py-name">i</tt> <tt class="py-op">=</tt> <tt class="py-name">i</tt> <tt class="py-op">+</tt> <tt class="py-number">1</tt> </tt>
+</div><a name="L248"></a><tt class="py-lineno"> 248</tt>  <tt class="py-line"> </tt>
+<a name="Presentation.__call_controllers"></a><div id="Presentation.__call_controllers-def"><a name="L249"></a><tt class="py-lineno"> 249</tt> <a class="py-toggle" href="#" id="Presentation.__call_controllers-toggle" onclick="return toggle('Presentation.__call_controllers');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.FlowControl.Presentation-class.html#__call_controllers">__call_controllers</a><tt class="py-op">(</tt><tt class="py [...]
+<a name="L250"></a><tt class="py-lineno"> 250</tt>  <tt class="py-line">                         <tt class="py-param">go_started</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
+<a name="L251"></a><tt class="py-lineno"> 251</tt>  <tt class="py-line">                         <tt class="py-param">doing_transition</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Presentation.__call_controllers-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Presentation.__call_controllers-expanded"><a name="L252"></a><tt class="py-lineno"> 252</tt>  <tt class="py-line">        <tt class="py-name">done_once</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> <tt class="py-comment"># list of ONCE contollers to switch status of</tt> </tt>
+<a name="L253"></a><tt class="py-lineno"> 253</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-op">(</tt><tt class="py-name">parameters_instance</tt><tt class="py-op">,</tt> <tt class="py-name">parameter_name</tt><tt class="py-op">,</tt> <tt class="py-name">controller</tt><tt class="py-op">)</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">controllers</tt><tt class="py-op">:</tt> </tt>
+<a name="L254"></a><tt class="py-lineno"> 254</tt>  <tt class="py-line">            <tt class="py-name">evaluate</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L255"></a><tt class="py-lineno"> 255</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">controller</tt><tt class="py-op">.</tt><tt class="py-name">eval_frequency</tt> <tt class="py-op">&</tt> <tt id="link-51" class="py-name" targets="Variable VisionEgg.FlowControl.Controller.ONCE=VisionEgg.FlowControl.Controller-class.html#ONCE,Variable VisionEgg.FlowControl.ONCE=VisionEgg.FlowControl-module.html#ONCE"><a title="VisionEgg.FlowControl.Con [...]
+VisionEgg.FlowControl.ONCE" class="py-name" href="#" onclick="return doclink('link-51', 'ONCE', 'link-51');">ONCE</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L256"></a><tt class="py-lineno"> 256</tt>  <tt class="py-line">                <tt class="py-name">evaluate</tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L257"></a><tt class="py-lineno"> 257</tt>  <tt class="py-line">                <tt class="py-name">done_once</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">controller</tt><tt class="py-op">)</tt> </tt>
+<a name="L258"></a><tt class="py-lineno"> 258</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-name">doing_transition</tt> <tt class="py-keyword">and</tt> <tt class="py-op">(</tt><tt class="py-name">controller</tt><tt class="py-op">.</tt><tt class="py-name">eval_frequency</tt> <tt class="py-op">&</tt> <tt id="link-52" class="py-name" targets="Variable VisionEgg.FlowControl.Controller.TRANSITIONS=VisionEgg.FlowControl.Controller-class.html#TRANSITIO [...]
+VisionEgg.FlowControl.TRANSITIONS" class="py-name" href="#" onclick="return doclink('link-52', 'TRANSITIONS', 'link-52');">TRANSITIONS</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L259"></a><tt class="py-lineno"> 259</tt>  <tt class="py-line">                <tt class="py-name">evaluate</tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L260"></a><tt class="py-lineno"> 260</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-name">controller</tt><tt class="py-op">.</tt><tt class="py-name">eval_frequency</tt> <tt class="py-op">&</tt> <tt id="link-53" class="py-name" targets="Variable VisionEgg.FlowControl.Controller.EVERY_FRAME=VisionEgg.FlowControl.Controller-class.html#EVERY_FRAME,Variable VisionEgg.FlowControl.EVERY_FRAME=VisionEgg.FlowControl-module.html#EVERY_FRAME"><a ti [...]
+VisionEgg.FlowControl.EVERY_FRAME" class="py-name" href="#" onclick="return doclink('link-53', 'EVERY_FRAME', 'link-53');">EVERY_FRAME</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L261"></a><tt class="py-lineno"> 261</tt>  <tt class="py-line">                <tt class="py-name">evaluate</tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L262"></a><tt class="py-lineno"> 262</tt>  <tt class="py-line"> </tt>
+<a name="L263"></a><tt class="py-lineno"> 263</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">evaluate</tt><tt class="py-op">:</tt> </tt>
+<a name="L264"></a><tt class="py-lineno"> 264</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">controller</tt><tt class="py-op">.</tt><tt class="py-name">temporal_variables</tt> <tt class="py-op">&</tt> <tt id="link-54" class="py-name" targets="Variable VisionEgg.FlowControl.Controller.TIME_SEC_ABSOLUTE=VisionEgg.FlowControl.Controller-class.html#TIME_SEC_ABSOLUTE,Variable VisionEgg.FlowControl.TIME_SEC_ABSOLUTE=VisionEgg.FlowControl-module [...]
+VisionEgg.FlowControl.TIME_SEC_ABSOLUTE" class="py-name" href="#" onclick="return doclink('link-54', 'TIME_SEC_ABSOLUTE', 'link-54');">TIME_SEC_ABSOLUTE</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L265"></a><tt class="py-lineno"> 265</tt>  <tt class="py-line">                    <tt class="py-name">controller</tt><tt class="py-op">.</tt><tt class="py-name">time_sec_absolute</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">time_sec_absolute</tt> </tt>
+<a name="L266"></a><tt class="py-lineno"> 266</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">controller</tt><tt class="py-op">.</tt><tt class="py-name">temporal_variables</tt> <tt class="py-op">&</tt> <tt id="link-55" class="py-name"><a title="VisionEgg.FlowControl.Controller.FRAMES_ABSOLUTE
+VisionEgg.FlowControl.FRAMES_ABSOLUTE" class="py-name" href="#" onclick="return doclink('link-55', 'FRAMES_ABSOLUTE', 'link-45');">FRAMES_ABSOLUTE</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L267"></a><tt class="py-lineno"> 267</tt>  <tt class="py-line">                    <tt class="py-name">controller</tt><tt class="py-op">.</tt><tt class="py-name">frames_absolute</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">frames_absolute</tt> </tt>
+<a name="L268"></a><tt class="py-lineno"> 268</tt>  <tt class="py-line"> </tt>
+<a name="L269"></a><tt class="py-lineno"> 269</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">go_started</tt><tt class="py-op">:</tt> </tt>
+<a name="L270"></a><tt class="py-lineno"> 270</tt>  <tt class="py-line">                    <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-op">(</tt><tt class="py-name">controller</tt><tt class="py-op">.</tt><tt class="py-name">eval_frequency</tt> <tt class="py-op">&</tt> <tt id="link-56" class="py-name" targets="Variable VisionEgg.FlowControl.Controller.NOT_DURING_GO=VisionEgg.FlowControl.Controller-class.html#NOT_DURING_GO,Variable VisionEgg.FlowContro [...]
+VisionEgg.FlowControl.NOT_DURING_GO" class="py-name" href="#" onclick="return doclink('link-56', 'NOT_DURING_GO', 'link-56');">NOT_DURING_GO</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L271"></a><tt class="py-lineno"> 271</tt>  <tt class="py-line">                        <tt class="py-keyword">if</tt> <tt class="py-name">controller</tt><tt class="py-op">.</tt><tt class="py-name">temporal_variables</tt> <tt class="py-op">&</tt> <tt id="link-57" class="py-name" targets="Variable VisionEgg.FlowControl.Controller.TIME_SEC_SINCE_GO=VisionEgg.FlowControl.Controller-class.html#TIME_SEC_SINCE_GO,Variable VisionEgg.FlowControl.TIME_SEC_SINCE_GO=VisionEgg.FlowContro [...]
+VisionEgg.FlowControl.TIME_SEC_SINCE_GO" class="py-name" href="#" onclick="return doclink('link-57', 'TIME_SEC_SINCE_GO', 'link-57');">TIME_SEC_SINCE_GO</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L272"></a><tt class="py-lineno"> 272</tt>  <tt class="py-line">                            <tt class="py-name">controller</tt><tt class="py-op">.</tt><tt class="py-name">time_sec_since_go</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">time_sec_since_go</tt> </tt>
+<a name="L273"></a><tt class="py-lineno"> 273</tt>  <tt class="py-line">                        <tt class="py-keyword">if</tt> <tt class="py-name">controller</tt><tt class="py-op">.</tt><tt class="py-name">temporal_variables</tt> <tt class="py-op">&</tt> <tt id="link-58" class="py-name"><a title="VisionEgg.FlowControl.Controller.FRAMES_SINCE_GO
+VisionEgg.FlowControl.FRAMES_SINCE_GO" class="py-name" href="#" onclick="return doclink('link-58', 'FRAMES_SINCE_GO', 'link-44');">FRAMES_SINCE_GO</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L274"></a><tt class="py-lineno"> 274</tt>  <tt class="py-line">                            <tt class="py-name">controller</tt><tt class="py-op">.</tt><tt class="py-name">frames_since_go</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">frames_since_go</tt> </tt>
+<a name="L275"></a><tt class="py-lineno"> 275</tt>  <tt class="py-line">                        <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt class="py-name">controller</tt><tt class="py-op">.</tt><tt id="link-59" class="py-name" targets="Method VisionEgg.DaqKeyboard.KeyboardTriggerInController.during_go_eval()=VisionEgg.DaqKeyboard.KeyboardTriggerInController-class.html#during_go_eval,Method VisionEgg.DaqLPT.LPTTriggerInController.during_go_eval()=VisionEgg.DaqLPT.LPTTrig [...]
+VisionEgg.DaqLPT.LPTTriggerInController.during_go_eval
+VisionEgg.DaqLPT.LPTTriggerOutController.during_go_eval
+VisionEgg.FlowControl.ConstantController.during_go_eval
+VisionEgg.FlowControl.Controller.during_go_eval
+VisionEgg.FlowControl.EncapsulatedController.during_go_eval
+VisionEgg.FlowControl.EvalStringController.during_go_eval
+VisionEgg.FlowControl.ExecStringController.during_go_eval
+VisionEgg.FlowControl.FunctionController.during_go_eval
+VisionEgg.PyroApps.MouseTargetServer.MousePositionController.during_go_eval
+VisionEgg.PyroApps.MouseTargetServer.TargetOrientationController.during_go_eval
+VisionEgg.PyroApps.MouseTargetServer.TargetPositionController.during_go_eval
+VisionEgg.PyroHelpers.PyroListenController.during_go_eval
+VisionEgg.ResponseControl.KeyboardResponseController.during_go_eval
+VisionEgg.ResponseControl.ResponseController.during_go_eval
+VisionEgg.TCPController.SocketListenController.during_go_eval" class="py-name" href="#" onclick="return doclink('link-59', 'during_go_eval', 'link-59');">during_go_eval</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L276"></a><tt class="py-lineno"> 276</tt>  <tt class="py-line">                        <tt class="py-keyword">if</tt> <tt class="py-name">parameter_name</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L277"></a><tt class="py-lineno"> 277</tt>  <tt class="py-line">                            <tt class="py-name">setattr</tt><tt class="py-op">(</tt><tt class="py-name">parameters_instance</tt><tt class="py-op">,</tt> <tt class="py-name">parameter_name</tt><tt class="py-op">,</tt> <tt class="py-name">result</tt><tt class="py-op">)</tt> </tt>
+<a name="L278"></a><tt class="py-lineno"> 278</tt>  <tt class="py-line">                <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L279"></a><tt class="py-lineno"> 279</tt>  <tt class="py-line">                    <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-op">(</tt><tt class="py-name">controller</tt><tt class="py-op">.</tt><tt class="py-name">eval_frequency</tt> <tt class="py-op">&</tt> <tt id="link-60" class="py-name" targets="Variable VisionEgg.FlowControl.Controller.NOT_BETWEEN_GO=VisionEgg.FlowControl.Controller-class.html#NOT_BETWEEN_GO,Variable VisionEgg.FlowCont [...]
+VisionEgg.FlowControl.NOT_BETWEEN_GO" class="py-name" href="#" onclick="return doclink('link-60', 'NOT_BETWEEN_GO', 'link-60');">NOT_BETWEEN_GO</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L280"></a><tt class="py-lineno"> 280</tt>  <tt class="py-line">                        <tt class="py-keyword">if</tt> <tt class="py-name">controller</tt><tt class="py-op">.</tt><tt class="py-name">temporal_variables</tt> <tt class="py-op">&</tt> <tt id="link-61" class="py-name"><a title="VisionEgg.FlowControl.Controller.TIME_SEC_SINCE_GO
+VisionEgg.FlowControl.TIME_SEC_SINCE_GO" class="py-name" href="#" onclick="return doclink('link-61', 'TIME_SEC_SINCE_GO', 'link-57');">TIME_SEC_SINCE_GO</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L281"></a><tt class="py-lineno"> 281</tt>  <tt class="py-line">                            <tt class="py-name">controller</tt><tt class="py-op">.</tt><tt class="py-name">time_sec_since_go</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L282"></a><tt class="py-lineno"> 282</tt>  <tt class="py-line">                        <tt class="py-keyword">if</tt> <tt class="py-name">controller</tt><tt class="py-op">.</tt><tt class="py-name">temporal_variables</tt> <tt class="py-op">&</tt> <tt id="link-62" class="py-name"><a title="VisionEgg.FlowControl.Controller.FRAMES_SINCE_GO
+VisionEgg.FlowControl.FRAMES_SINCE_GO" class="py-name" href="#" onclick="return doclink('link-62', 'FRAMES_SINCE_GO', 'link-44');">FRAMES_SINCE_GO</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L283"></a><tt class="py-lineno"> 283</tt>  <tt class="py-line">                            <tt class="py-name">controller</tt><tt class="py-op">.</tt><tt class="py-name">frames_since_go</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L284"></a><tt class="py-lineno"> 284</tt>  <tt class="py-line">                        <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt class="py-name">controller</tt><tt class="py-op">.</tt><tt id="link-63" class="py-name" targets="Method VisionEgg.DaqKeyboard.KeyboardTriggerInController.between_go_eval()=VisionEgg.DaqKeyboard.KeyboardTriggerInController-class.html#between_go_eval,Method VisionEgg.DaqLPT.LPTTriggerInController.between_go_eval()=VisionEgg.DaqLPT.LPTT [...]
+VisionEgg.DaqLPT.LPTTriggerInController.between_go_eval
+VisionEgg.DaqLPT.LPTTriggerOutController.between_go_eval
+VisionEgg.FlowControl.ConstantController.between_go_eval
+VisionEgg.FlowControl.Controller.between_go_eval
+VisionEgg.FlowControl.EncapsulatedController.between_go_eval
+VisionEgg.FlowControl.EvalStringController.between_go_eval
+VisionEgg.FlowControl.ExecStringController.between_go_eval
+VisionEgg.FlowControl.FunctionController.between_go_eval
+VisionEgg.PyroHelpers.PyroListenController.between_go_eval
+VisionEgg.ResponseControl.KeyboardResponseController.between_go_eval
+VisionEgg.ResponseControl.ResponseController.between_go_eval
+VisionEgg.TCPController.SocketListenController.between_go_eval" class="py-name" href="#" onclick="return doclink('link-63', 'between_go_eval', 'link-63');">between_go_eval</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L285"></a><tt class="py-lineno"> 285</tt>  <tt class="py-line">                        <tt class="py-keyword">if</tt> <tt class="py-name">parameter_name</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L286"></a><tt class="py-lineno"> 286</tt>  <tt class="py-line">                            <tt class="py-name">setattr</tt><tt class="py-op">(</tt><tt class="py-name">parameters_instance</tt><tt class="py-op">,</tt> <tt class="py-name">parameter_name</tt><tt class="py-op">,</tt> <tt class="py-name">result</tt><tt class="py-op">)</tt> </tt>
+<a name="L287"></a><tt class="py-lineno"> 287</tt>  <tt class="py-line"> </tt>
+<a name="L288"></a><tt class="py-lineno"> 288</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">controller</tt> <tt class="py-keyword">in</tt> <tt class="py-name">done_once</tt><tt class="py-op">:</tt> </tt>
+<a name="L289"></a><tt class="py-lineno"> 289</tt>  <tt class="py-line">            <tt class="py-comment">#Unset ONCE flag</tt> </tt>
+<a name="L290"></a><tt class="py-lineno"> 290</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">controller</tt><tt class="py-op">.</tt><tt class="py-name">eval_frequency</tt> <tt class="py-op">=</tt> <tt class="py-name">controller</tt><tt class="py-op">.</tt><tt class="py-name">eval_frequency</tt> <tt class="py-op">&</tt> <tt class="py-op">~</tt><tt id="link-64" class="py-name"><a title="VisionEgg.FlowControl.Controller.ONCE
+VisionEgg.FlowControl.ONCE" class="py-name" href="#" onclick="return doclink('link-64', 'ONCE', 'link-51');">ONCE</a></tt> </tt>
+<a name="L291"></a><tt class="py-lineno"> 291</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">controller</tt><tt class="py-op">,</tt><tt id="link-65" class="py-name" targets="Class VisionEgg.FlowControl.EncapsulatedController=VisionEgg.FlowControl.EncapsulatedController-class.html"><a title="VisionEgg.FlowControl.EncapsulatedController" class="py-name" href="#" onclick="return doclink('lin [...]
+<a name="L292"></a><tt class="py-lineno"> 292</tt>  <tt class="py-line">                <tt class="py-name">controller</tt><tt class="py-op">.</tt><tt class="py-name">contained_controller</tt><tt class="py-op">.</tt><tt class="py-name">eval_frequency</tt> <tt class="py-op">=</tt> <tt class="py-name">controller</tt><tt class="py-op">.</tt><tt class="py-name">contained_controller</tt><tt class="py-op">.</tt><tt class="py-name">eval_frequency</tt> <tt class="py-op">&</tt> <tt class="py- [...]
+VisionEgg.FlowControl.ONCE" class="py-name" href="#" onclick="return doclink('link-66', 'ONCE', 'link-51');">ONCE</a></tt> </tt>
+</div><a name="L293"></a><tt class="py-lineno"> 293</tt>  <tt class="py-line"> </tt>
+<a name="Presentation.is_in_go_loop"></a><div id="Presentation.is_in_go_loop-def"><a name="L294"></a><tt class="py-lineno"> 294</tt> <a class="py-toggle" href="#" id="Presentation.is_in_go_loop-toggle" onclick="return toggle('Presentation.is_in_go_loop');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.FlowControl.Presentation-class.html#is_in_go_loop">is_in_go_loop</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py [...]
+</div><div id="Presentation.is_in_go_loop-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Presentation.is_in_go_loop-expanded"><a name="L295"></a><tt class="py-lineno"> 295</tt>  <tt class="py-line">        <tt class="py-docstring">"""Queries if the presentation is in a go loop.</tt> </tt>
+<a name="L296"></a><tt class="py-lineno"> 296</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L297"></a><tt class="py-lineno"> 297</tt>  <tt class="py-line"><tt class="py-docstring">        This is useful to check the state of the Vision Egg</tt> </tt>
+<a name="L298"></a><tt class="py-lineno"> 298</tt>  <tt class="py-line"><tt class="py-docstring">        application from a remote client over Pyro."""</tt> </tt>
+<a name="L299"></a><tt class="py-lineno"> 299</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">in_go_loop</tt> </tt>
+</div><a name="L300"></a><tt class="py-lineno"> 300</tt>  <tt class="py-line"> </tt>
+<a name="Presentation.were_frames_dropped_in_last_go_loop"></a><div id="Presentation.were_frames_dropped_in_last_go_loop-def"><a name="L301"></a><tt class="py-lineno"> 301</tt> <a class="py-toggle" href="#" id="Presentation.were_frames_dropped_in_last_go_loop-toggle" onclick="return toggle('Presentation.were_frames_dropped_in_last_go_loop');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.FlowControl.Presentation-class.html#were_frames [...]
+</div><div id="Presentation.were_frames_dropped_in_last_go_loop-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Presentation.were_frames_dropped_in_last_go_loop-expanded"><a name="L302"></a><tt class="py-lineno"> 302</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">frames_dropped_in_last_go_loop</tt> </tt>
+</div><a name="L303"></a><tt class="py-lineno"> 303</tt>  <tt class="py-line"> </tt>
+<a name="Presentation.get_last_go_loop_start_time_absolute_sec"></a><div id="Presentation.get_last_go_loop_start_time_absolute_sec-def"><a name="L304"></a><tt class="py-lineno"> 304</tt> <a class="py-toggle" href="#" id="Presentation.get_last_go_loop_start_time_absolute_sec-toggle" onclick="return toggle('Presentation.get_last_go_loop_start_time_absolute_sec');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.FlowControl.Presentation-cl [...]
+</div><div id="Presentation.get_last_go_loop_start_time_absolute_sec-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Presentation.get_last_go_loop_start_time_absolute_sec-expanded"><a name="L305"></a><tt class="py-lineno"> 305</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">last_go_loop_start_time_absolute_sec</tt> </tt>
+</div><a name="L306"></a><tt class="py-lineno"> 306</tt>  <tt class="py-line"> </tt>
+<a name="Presentation.go"></a><div id="Presentation.go-def"><a name="L307"></a><tt class="py-lineno"> 307</tt> <a class="py-toggle" href="#" id="Presentation.go-toggle" onclick="return toggle('Presentation.go');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.FlowControl.Presentation-class.html#go">go</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Presentation.go-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Presentation.go-expanded"><a name="L308"></a><tt class="py-lineno"> 308</tt>  <tt class="py-line">        <tt class="py-docstring">"""Main control loop during stimulus presentation.</tt> </tt>
+<a name="L309"></a><tt class="py-lineno"> 309</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L310"></a><tt class="py-lineno"> 310</tt>  <tt class="py-line"><tt class="py-docstring">        This is the heart of realtime control in the Vision Egg, and</tt> </tt>
+<a name="L311"></a><tt class="py-lineno"> 311</tt>  <tt class="py-line"><tt class="py-docstring">        contains the main loop during a stimulus presentation. This</tt> </tt>
+<a name="L312"></a><tt class="py-lineno"> 312</tt>  <tt class="py-line"><tt class="py-docstring">        coordinates the timing of calling the controllers.</tt> </tt>
+<a name="L313"></a><tt class="py-lineno"> 313</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L314"></a><tt class="py-lineno"> 314</tt>  <tt class="py-line"><tt class="py-docstring">        In the main loop, the current time (in absolute seconds,</tt> </tt>
+<a name="L315"></a><tt class="py-lineno"> 315</tt>  <tt class="py-line"><tt class="py-docstring">        go-loop-start-relative seconds, and go-loop-start-relative</tt> </tt>
+<a name="L316"></a><tt class="py-lineno"> 316</tt>  <tt class="py-line"><tt class="py-docstring">        frames) is computed, the appropriate controllers are called</tt> </tt>
+<a name="L317"></a><tt class="py-lineno"> 317</tt>  <tt class="py-line"><tt class="py-docstring">        with this information, the screen is cleared, each viewport is</tt> </tt>
+<a name="L318"></a><tt class="py-lineno"> 318</tt>  <tt class="py-line"><tt class="py-docstring">        drawn to the back buffer (while the video card continues</tt> </tt>
+<a name="L319"></a><tt class="py-lineno"> 319</tt>  <tt class="py-line"><tt class="py-docstring">        painting the front buffer on the display), and the buffers are</tt> </tt>
+<a name="L320"></a><tt class="py-lineno"> 320</tt>  <tt class="py-line"><tt class="py-docstring">        swapped.</tt> </tt>
+<a name="L321"></a><tt class="py-lineno"> 321</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L322"></a><tt class="py-lineno"> 322</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L323"></a><tt class="py-lineno"> 323</tt>  <tt class="py-line">        <tt class="py-keyword">import</tt> <tt id="link-67" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-67', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-68" class="py-name" targets="Module VisionEgg.Core=VisionEgg.Core-module.html"><a title="VisionEgg.Core" class="py-name" href="#" onclick="return doclink('link-68', 'Core', 'link-68') [...]
+<a name="L324"></a><tt class="py-lineno"> 324</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">in_go_loop</tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L325"></a><tt class="py-lineno"> 325</tt>  <tt class="py-line"> </tt>
+<a name="L326"></a><tt class="py-lineno"> 326</tt>  <tt class="py-line">        <tt id="link-69" class="py-name" targets="Function VisionEgg.Core.swap_buffers()=VisionEgg.Core-module.html#swap_buffers"><a title="VisionEgg.Core.swap_buffers" class="py-name" href="#" onclick="return doclink('link-69', 'swap_buffers', 'link-69');">swap_buffers</a></tt> <tt class="py-op">=</tt> <tt id="link-70" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-70', ' [...]
+<a name="L327"></a><tt class="py-lineno"> 327</tt>  <tt class="py-line"> </tt>
+<a name="L328"></a><tt class="py-lineno"> 328</tt>  <tt class="py-line">        <tt class="py-comment"># Clear boolean indicator</tt> </tt>
+<a name="L329"></a><tt class="py-lineno"> 329</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">frames_dropped_in_last_go_loop</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
+<a name="L330"></a><tt class="py-lineno"> 330</tt>  <tt class="py-line"> </tt>
+<a name="L331"></a><tt class="py-lineno"> 331</tt>  <tt class="py-line">        <tt class="py-comment"># Create shorthand notation, which speeds the main loop</tt> </tt>
+<a name="L332"></a><tt class="py-lineno"> 332</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># slightly by not performing name lookup each time.</tt> </tt>
+<a name="L333"></a><tt class="py-lineno"> 333</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">p</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt> </tt>
+<a name="L334"></a><tt class="py-lineno"> 334</tt>  <tt class="py-line"> </tt>
+<a name="L335"></a><tt class="py-lineno"> 335</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">collect_timing_info</tt><tt class="py-op">:</tt> </tt>
+<a name="L336"></a><tt class="py-lineno"> 336</tt>  <tt class="py-line">            <tt class="py-name">frame_timer</tt> <tt class="py-op">=</tt> <tt id="link-73" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-73', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-74" class="py-name"><a title="VisionEgg.Core" class="py-name" href="#" onclick="return doclink('link-74', 'Core', 'link-68');">Core</a></tt><tt class="p [...]
+<a name="L337"></a><tt class="py-lineno"> 337</tt>  <tt class="py-line"> </tt>
+<a name="L338"></a><tt class="py-lineno"> 338</tt>  <tt class="py-line">        <tt class="py-keyword">while</tt> <tt class="py-op">(</tt><tt class="py-keyword">not</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">trigger_armed</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-op">(</tt><tt class="py-keyword">not</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">trigger_go_if_armed</tt><tt class="py-op">)</tt><tt  [...]
+<a name="L339"></a><tt class="py-lineno"> 339</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-76" class="py-name" targets="Method VisionEgg.FlowControl.Presentation.between_presentations()=VisionEgg.FlowControl.Presentation-class.html#between_presentations"><a title="VisionEgg.FlowControl.Presentation.between_presentations" class="py-name" href="#" onclick="return doclink('link-76', 'between_presentations', 'link-76');">between_pres [...]
+<a name="L340"></a><tt class="py-lineno"> 340</tt>  <tt class="py-line"> </tt>
+<a name="L341"></a><tt class="py-lineno"> 341</tt>  <tt class="py-line">        <tt class="py-comment"># Go!</tt> </tt>
+<a name="L342"></a><tt class="py-lineno"> 342</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L343"></a><tt class="py-lineno"> 343</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">time_sec_absolute</tt><tt class="py-op">=</tt><tt id="link-77" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-77', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-78" class="py-name"><a title="VisionEgg.time_func" class="py-name" href="#" onclick="return doclink [...]
+<a name="L344"></a><tt class="py-lineno"> 344</tt>  <tt class="py-line"> </tt>
+<a name="L345"></a><tt class="py-lineno"> 345</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">override_t_abs_sec</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L346"></a><tt class="py-lineno"> 346</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">NotImplementedError</tt><tt class="py-op">(</tt><tt class="py-string">"Cannot override absolute time yet"</tt><tt class="py-op">)</tt> </tt>
+<a name="L347"></a><tt class="py-lineno"> 347</tt>  <tt class="py-line"> </tt>
+<a name="L348"></a><tt class="py-lineno"> 348</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">last_go_loop_start_time_absolute_sec</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">time_sec_absolute</tt> </tt>
+<a name="L349"></a><tt class="py-lineno"> 349</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">time_sec_since_go</tt> <tt class="py-op">=</tt> <tt class="py-number">0.0</tt> </tt>
+<a name="L350"></a><tt class="py-lineno"> 350</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">frames_since_go</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L351"></a><tt class="py-lineno"> 351</tt>  <tt class="py-line"> </tt>
+<a name="L352"></a><tt class="py-lineno"> 352</tt>  <tt class="py-line">        <tt class="py-name">synclync_connection</tt> <tt class="py-op">=</tt> <tt id="link-79" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-79', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-80" class="py-name" targets="Variable VisionEgg.config=VisionEgg-module.html#config"><a title="VisionEgg.config" class="py-name" href="#" onclick="r [...]
+<a name="L353"></a><tt class="py-lineno"> 353</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">synclync_connection</tt><tt class="py-op">:</tt> </tt>
+<a name="L354"></a><tt class="py-lineno"> 354</tt>  <tt class="py-line">            <tt class="py-keyword">import</tt> <tt class="py-name">synclync</tt> </tt>
+<a name="L355"></a><tt class="py-lineno"> 355</tt>  <tt class="py-line">            <tt class="py-name">synclync_connection</tt><tt class="py-op">.</tt><tt class="py-name">next_control_packet</tt><tt class="py-op">.</tt><tt class="py-name">action_flags</tt> <tt class="py-op">+=</tt> <tt class="py-op">(</tt><tt class="py-name">synclync</tt><tt class="py-op">.</tt><tt class="py-name">SL_CLEAR_VSYNC_COUNT</tt> <tt class="py-op">+</tt> </tt>
+<a name="L356"></a><tt class="py-lineno"> 356</tt>  <tt class="py-line">                                                                     <tt class="py-name">synclync</tt><tt class="py-op">.</tt><tt class="py-name">SL_CLEAR_NOTIFY_SWAPPED_COUNT</tt> <tt class="py-op">+</tt> </tt>
+<a name="L357"></a><tt class="py-lineno"> 357</tt>  <tt class="py-line">                                                                     <tt class="py-name">synclync</tt><tt class="py-op">.</tt><tt class="py-name">SL_CLEAR_FRAMESKIP_COUNT</tt><tt class="py-op">)</tt> </tt>
+<a name="L358"></a><tt class="py-lineno"> 358</tt>  <tt class="py-line">            <tt class="py-name">synclync_hack_done_once</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L359"></a><tt class="py-lineno"> 359</tt>  <tt class="py-line"> </tt>
+<a name="L360"></a><tt class="py-lineno"> 360</tt>  <tt class="py-line">        <tt class="py-comment"># Tell transitional controllers a presentation is starting</tt> </tt>
+<a name="L361"></a><tt class="py-lineno"> 361</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__call_controllers</tt><tt class="py-op">(</tt> </tt>
+<a name="L362"></a><tt class="py-lineno"> 362</tt>  <tt class="py-line">            <tt class="py-name">go_started</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py-op">,</tt> </tt>
+<a name="L363"></a><tt class="py-lineno"> 363</tt>  <tt class="py-line">            <tt class="py-name">doing_transition</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="L364"></a><tt class="py-lineno"> 364</tt>  <tt class="py-line"> </tt>
+<a name="L365"></a><tt class="py-lineno"> 365</tt>  <tt class="py-line">        <tt class="py-comment"># Do the main loop</tt> </tt>
+<a name="L366"></a><tt class="py-lineno"> 366</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">start_time_absolute</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">time_sec_absolute</tt> </tt>
+<a name="L367"></a><tt class="py-lineno"> 367</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">go_duration</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-string">'forever'</tt><tt class="py-op">:</tt> <tt class="py-comment"># forever</tt> </tt>
+<a name="L368"></a><tt class="py-lineno"> 368</tt>  <tt class="py-line">            <tt class="py-name">current_duration_value</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L369"></a><tt class="py-lineno"> 369</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">go_duration</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-string">'seconds'</tt><tt class="py-op">:</tt> <tt class="py-comment"># duration units</tt> </tt>
+<a name="L370"></a><tt class="py-lineno"> 370</tt>  <tt class="py-line">            <tt class="py-name">current_duration_value</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">time_sec_since_go</tt> </tt>
+<a name="L371"></a><tt class="py-lineno"> 371</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">go_duration</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-string">'frames'</tt><tt class="py-op">:</tt> <tt class="py-comment"># duration units</tt> </tt>
+<a name="L372"></a><tt class="py-lineno"> 372</tt>  <tt class="py-line">            <tt class="py-name">current_duration_value</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">frames_since_go</tt> </tt>
+<a name="L373"></a><tt class="py-lineno"> 373</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L374"></a><tt class="py-lineno"> 374</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">RuntimeError</tt><tt class="py-op">(</tt><tt class="py-string">"Unknown duration unit '%s'"</tt><tt class="py-op">%</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">go_duration</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L375"></a><tt class="py-lineno"> 375</tt>  <tt class="py-line"> </tt>
+<a name="L376"></a><tt class="py-lineno"> 376</tt>  <tt class="py-line">        <tt class="py-keyword">while</tt> <tt class="py-op">(</tt><tt class="py-name">current_duration_value</tt> <tt class="py-op"><</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">go_duration</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L377"></a><tt class="py-lineno"> 377</tt>  <tt class="py-line">            <tt class="py-comment"># Get list of screens</tt> </tt>
+<a name="L378"></a><tt class="py-lineno"> 378</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">screens</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L379"></a><tt class="py-lineno"> 379</tt>  <tt class="py-line">            <tt class="py-keyword">for</tt> <tt class="py-name">viewport</tt> <tt class="py-keyword">in</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">viewports</tt><tt class="py-op">:</tt> </tt>
+<a name="L380"></a><tt class="py-lineno"> 380</tt>  <tt class="py-line">                <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-name">viewport</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">screen</tt> </tt>
+<a name="L381"></a><tt class="py-lineno"> 381</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">s</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">screens</tt><tt class="py-op">:</tt> </tt>
+<a name="L382"></a><tt class="py-lineno"> 382</tt>  <tt class="py-line">                    <tt class="py-name">screens</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">)</tt> </tt>
+<a name="L383"></a><tt class="py-lineno"> 383</tt>  <tt class="py-line"> </tt>
+<a name="L384"></a><tt class="py-lineno"> 384</tt>  <tt class="py-line">            <tt class="py-comment"># Clear the screen(s)</tt> </tt>
+<a name="L385"></a><tt class="py-lineno"> 385</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">for</tt> <tt class="py-name">screen</tt> <tt class="py-keyword">in</tt> <tt class="py-name">screens</tt><tt class="py-op">:</tt> </tt>
+<a name="L386"></a><tt class="py-lineno"> 386</tt>  <tt class="py-line">                <tt class="py-name">screen</tt><tt class="py-op">.</tt><tt id="link-81" class="py-name" targets="Method VisionEgg.Core.Screen.clear()=VisionEgg.Core.Screen-class.html#clear"><a title="VisionEgg.Core.Screen.clear" class="py-name" href="#" onclick="return doclink('link-81', 'clear', 'link-81');">clear</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L387"></a><tt class="py-lineno"> 387</tt>  <tt class="py-line"> </tt>
+<a name="L388"></a><tt class="py-lineno"> 388</tt>  <tt class="py-line">            <tt class="py-comment"># Update all the realtime parameters</tt> </tt>
+<a name="L389"></a><tt class="py-lineno"> 389</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__call_controllers</tt><tt class="py-op">(</tt> </tt>
+<a name="L390"></a><tt class="py-lineno"> 390</tt>  <tt class="py-line">                <tt class="py-name">go_started</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py-op">,</tt> </tt>
+<a name="L391"></a><tt class="py-lineno"> 391</tt>  <tt class="py-line">                <tt class="py-name">doing_transition</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">)</tt> </tt>
+<a name="L392"></a><tt class="py-lineno"> 392</tt>  <tt class="py-line"> </tt>
+<a name="L393"></a><tt class="py-lineno"> 393</tt>  <tt class="py-line">            <tt class="py-comment"># Draw each viewport</tt> </tt>
+<a name="L394"></a><tt class="py-lineno"> 394</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">for</tt> <tt class="py-name">viewport</tt> <tt class="py-keyword">in</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">viewports</tt><tt class="py-op">:</tt> </tt>
+<a name="L395"></a><tt class="py-lineno"> 395</tt>  <tt class="py-line">                <tt class="py-name">viewport</tt><tt class="py-op">.</tt><tt id="link-82" class="py-name" targets="Method VisionEgg.Core.FixationSpot.draw()=VisionEgg.Core.FixationSpot-class.html#draw,Method VisionEgg.Core.Stimulus.draw()=VisionEgg.Core.Stimulus-class.html#draw,Method VisionEgg.Core.Viewport.draw()=VisionEgg.Core.Viewport-class.html#draw,Method VisionEgg.Dots.DotArea2D.draw()=VisionEgg.Dots.DotArea2D [...]
+VisionEgg.Core.Stimulus.draw
+VisionEgg.Core.Viewport.draw
+VisionEgg.Dots.DotArea2D.draw
+VisionEgg.Gratings.SinGrating2D.draw
+VisionEgg.Gratings.SinGrating3D.draw
+VisionEgg.MoreStimuli.Arrow.draw
+VisionEgg.MoreStimuli.FilledCircle.draw
+VisionEgg.MoreStimuli.Rectangle3D.draw
+VisionEgg.MoreStimuli.Target2D.draw
+VisionEgg.SphereMap.AzElGrid.draw
+VisionEgg.SphereMap.SphereGrating.draw
+VisionEgg.SphereMap.SphereMap.draw
+VisionEgg.SphereMap.SphereWindow.draw
+VisionEgg.Text.BitmapText.draw
+VisionEgg.Text.StrokeText.draw
+VisionEgg.Text.Text.draw
+VisionEgg.Textures.FixationCross.draw
+VisionEgg.Textures.SpinningDrum.draw
+VisionEgg.Textures.TextureStimulus.draw
+VisionEgg.Textures.TextureStimulus3D.draw
+VisionEgg.WrappedText.WrappedText.draw" class="py-name" href="#" onclick="return doclink('link-82', 'draw', 'link-82');">draw</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L396"></a><tt class="py-lineno"> 396</tt>  <tt class="py-line"> </tt>
+<a name="L397"></a><tt class="py-lineno"> 397</tt>  <tt class="py-line">            <tt class="py-comment"># Swap the buffers</tt> </tt>
+<a name="L398"></a><tt class="py-lineno"> 398</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">if</tt> <tt class="py-name">synclync_connection</tt><tt class="py-op">:</tt> </tt>
+<a name="L399"></a><tt class="py-lineno"> 399</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">synclync_hack_done_once</tt><tt class="py-op">:</tt> </tt>
+<a name="L400"></a><tt class="py-lineno"> 400</tt>  <tt class="py-line">                    <tt class="py-name">synclync_connection</tt><tt class="py-op">.</tt><tt class="py-name">next_control_packet</tt><tt class="py-op">.</tt><tt class="py-name">action_flags</tt> <tt class="py-op">+=</tt> <tt class="py-op">(</tt><tt class="py-name">synclync</tt><tt class="py-op">.</tt><tt class="py-name">SL_NOTIFY_SWAPPED_BUFFERS</tt> <tt class="py-op">+</tt> </tt>
+<a name="L401"></a><tt class="py-lineno"> 401</tt>  <tt class="py-line">                                                                             <tt class="py-name">synclync</tt><tt class="py-op">.</tt><tt class="py-name">SL_NOTIFY_IN_GO_LOOP</tt><tt class="py-op">)</tt> </tt>
+<a name="L402"></a><tt class="py-lineno"> 402</tt>  <tt class="py-line">                    <tt class="py-name">synclync_connection</tt><tt class="py-op">.</tt><tt class="py-name">send_control_packet</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L403"></a><tt class="py-lineno"> 403</tt>  <tt class="py-line">                    <tt class="py-name">synclync_hack_done_once</tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L404"></a><tt class="py-lineno"> 404</tt>  <tt class="py-line">                <tt class="py-name">data_packet</tt> <tt class="py-op">=</tt> <tt class="py-name">synclync_connection</tt><tt class="py-op">.</tt><tt class="py-name">get_latest_data_packet</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L405"></a><tt class="py-lineno"> 405</tt>  <tt class="py-line">            <tt id="link-83" class="py-name"><a title="VisionEgg.Core.swap_buffers" class="py-name" href="#" onclick="return doclink('link-83', 'swap_buffers', 'link-69');">swap_buffers</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L406"></a><tt class="py-lineno"> 406</tt>  <tt class="py-line"> </tt>
+<a name="L407"></a><tt class="py-lineno"> 407</tt>  <tt class="py-line">            <tt class="py-comment"># Set the time variables for the next frame</tt> </tt>
+<a name="L408"></a><tt class="py-lineno"> 408</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">time_sec_absolute</tt><tt class="py-op">=</tt><tt id="link-84" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-84', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-85" class="py-name"><a title="VisionEgg.time_func" class="py-name"  [...]
+<a name="L409"></a><tt class="py-lineno"> 409</tt>  <tt class="py-line">            <tt class="py-name">last_time_sec_since_go</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">time_sec_since_go</tt> </tt>
+<a name="L410"></a><tt class="py-lineno"> 410</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">time_sec_since_go</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">time_sec_absolute</tt> <tt class="py-op">-</tt> <tt class="py-name">start_time_absolute</tt> </tt>
+<a name="L411"></a><tt class="py-lineno"> 411</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">frames_absolute</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L412"></a><tt class="py-lineno"> 412</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">frames_since_go</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L413"></a><tt class="py-lineno"> 413</tt>  <tt class="py-line"> </tt>
+<a name="L414"></a><tt class="py-lineno"> 414</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">collect_timing_info</tt><tt class="py-op">:</tt> </tt>
+<a name="L415"></a><tt class="py-lineno"> 415</tt>  <tt class="py-line">                <tt class="py-name">frame_timer</tt><tt class="py-op">.</tt><tt id="link-86" class="py-name" targets="Method VisionEgg.Core.FrameTimer.tick()=VisionEgg.Core.FrameTimer-class.html#tick"><a title="VisionEgg.Core.FrameTimer.tick" class="py-name" href="#" onclick="return doclink('link-86', 'tick', 'link-86');">tick</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L416"></a><tt class="py-lineno"> 416</tt>  <tt class="py-line"> </tt>
+<a name="L417"></a><tt class="py-lineno"> 417</tt>  <tt class="py-line">            <tt class="py-comment"># Make sure we use the right value to check if we're done</tt> </tt>
+<a name="L418"></a><tt class="py-lineno"> 418</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">if</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">go_duration</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-string">'forever'</tt><tt class="py-op">:</tt> <tt class="py-comment"># forever</tt> </tt>
+<a name="L419"></a><tt class="py-lineno"> 419</tt>  <tt class="py-line">                <tt class="py-keyword">pass</tt> <tt class="py-comment"># current_duration_value already set to 0</tt> </tt>
+<a name="L420"></a><tt class="py-lineno"> 420</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">go_duration</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-string">'seconds'</tt><tt class="py-op">:</tt> </tt>
+<a name="L421"></a><tt class="py-lineno"> 421</tt>  <tt class="py-line">                <tt class="py-name">current_duration_value</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">time_sec_since_go</tt> </tt>
+<a name="L422"></a><tt class="py-lineno"> 422</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">go_duration</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-string">'frames'</tt><tt class="py-op">:</tt> </tt>
+<a name="L423"></a><tt class="py-lineno"> 423</tt>  <tt class="py-line">                <tt class="py-name">current_duration_value</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">frames_since_go</tt> </tt>
+<a name="L424"></a><tt class="py-lineno"> 424</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L425"></a><tt class="py-lineno"> 425</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> <tt class="py-name">RuntimeError</tt><tt class="py-op">(</tt><tt class="py-string">"Unknown duration unit '%s'"</tt><tt class="py-op">%</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">go_duration</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L426"></a><tt class="py-lineno"> 426</tt>  <tt class="py-line"> </tt>
+<a name="L427"></a><tt class="py-lineno"> 427</tt>  <tt class="py-line">            <tt class="py-comment"># Check events if requested</tt> </tt>
+<a name="L428"></a><tt class="py-lineno"> 428</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">if</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">check_events</tt><tt class="py-op">:</tt> </tt>
+<a name="L429"></a><tt class="py-lineno"> 429</tt>  <tt class="py-line">                <tt class="py-keyword">for</tt> <tt class="py-name">event</tt> <tt class="py-keyword">in</tt> <tt class="py-name">pygame</tt><tt class="py-op">.</tt><tt class="py-name">event</tt><tt class="py-op">.</tt><tt id="link-87" class="py-name" targets="Method VisionEgg.PyroClient.PyroClient.get()=VisionEgg.PyroClient.PyroClient-class.html#get"><a title="VisionEgg.PyroClient.PyroClient.get" class="py-name" hre [...]
+<a name="L430"></a><tt class="py-lineno"> 430</tt>  <tt class="py-line">                    <tt class="py-keyword">for</tt> <tt class="py-name">event_type</tt><tt class="py-op">,</tt> <tt class="py-name">event_callback</tt> <tt class="py-keyword">in</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt id="link-88" class="py-name"><a title="VisionEgg.PyroApps.MouseTargetServer.handle_event_callbacks" class="py-name" href="#" onclick="return doclink('link-88', 'handle_event_callbacks [...]
+<a name="L431"></a><tt class="py-lineno"> 431</tt>  <tt class="py-line">                        <tt class="py-keyword">if</tt> <tt class="py-name">event</tt><tt class="py-op">.</tt><tt class="py-name">type</tt> <tt class="py-keyword">is</tt> <tt class="py-name">event_type</tt><tt class="py-op">:</tt> </tt>
+<a name="L432"></a><tt class="py-lineno"> 432</tt>  <tt class="py-line">                            <tt class="py-name">event_callback</tt><tt class="py-op">(</tt><tt class="py-name">event</tt><tt class="py-op">)</tt> </tt>
+<a name="L433"></a><tt class="py-lineno"> 433</tt>  <tt class="py-line"> </tt>
+<a name="L434"></a><tt class="py-lineno"> 434</tt>  <tt class="py-line">        <tt class="py-comment"># Tell transitional controllers a presentation has ended</tt> </tt>
+<a name="L435"></a><tt class="py-lineno"> 435</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__call_controllers</tt><tt class="py-op">(</tt> </tt>
+<a name="L436"></a><tt class="py-lineno"> 436</tt>  <tt class="py-line">            <tt class="py-name">go_started</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> </tt>
+<a name="L437"></a><tt class="py-lineno"> 437</tt>  <tt class="py-line">            <tt class="py-name">doing_transition</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="L438"></a><tt class="py-lineno"> 438</tt>  <tt class="py-line"> </tt>
+<a name="L439"></a><tt class="py-lineno"> 439</tt>  <tt class="py-line">        <tt class="py-comment"># Tell SyncLync we're not in go loop anymore</tt> </tt>
+<a name="L440"></a><tt class="py-lineno"> 440</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">synclync_connection</tt><tt class="py-op">:</tt> </tt>
+<a name="L441"></a><tt class="py-lineno"> 441</tt>  <tt class="py-line">            <tt class="py-name">synclync_connection</tt><tt class="py-op">.</tt><tt class="py-name">send_control_packet</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-comment"># nothing in action_flags -- finishes go loop</tt> </tt>
+<a name="L442"></a><tt class="py-lineno"> 442</tt>  <tt class="py-line"> </tt>
+<a name="L443"></a><tt class="py-lineno"> 443</tt>  <tt class="py-line">        <tt class="py-comment"># Check to see if frame by frame control was desired</tt> </tt>
+<a name="L444"></a><tt class="py-lineno"> 444</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># but OpenGL not syncing to vertical retrace</tt> </tt>
+<a name="L445"></a><tt class="py-lineno"> 445</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L446"></a><tt class="py-lineno"> 446</tt>  <tt class="py-line">            <tt class="py-name">mean_frame_time_sec</tt> <tt class="py-op">=</tt> <tt class="py-name">frame_timer</tt><tt class="py-op">.</tt><tt id="link-89" class="py-name" targets="Method VisionEgg.Core.FrameTimer.get_average_ifi_sec()=VisionEgg.Core.FrameTimer-class.html#get_average_ifi_sec"><a title="VisionEgg.Core.FrameTimer.get_average_ifi_sec" class="py-name" href="#" onclick="return doclink('link-89', 'get_a [...]
+<a name="L447"></a><tt class="py-lineno"> 447</tt>  <tt class="py-line">            <tt class="py-name">calculated_fps</tt> <tt class="py-op">=</tt> <tt class="py-number">1.0</tt><tt class="py-op">/</tt><tt class="py-name">mean_frame_time_sec</tt> </tt>
+<a name="L448"></a><tt class="py-lineno"> 448</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt><tt class="py-op">:</tt> </tt>
+<a name="L449"></a><tt class="py-lineno"> 449</tt>  <tt class="py-line">            <tt class="py-comment"># the above fails when no frames were drawn</tt> </tt>
+<a name="L450"></a><tt class="py-lineno"> 450</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">mean_frame_time_sec</tt> <tt class="py-op">=</tt> <tt class="py-number">0.0</tt> </tt>
+<a name="L451"></a><tt class="py-lineno"> 451</tt>  <tt class="py-line">            <tt class="py-name">calculated_fps</tt> <tt class="py-op">=</tt> <tt class="py-number">0.0</tt> </tt>
+<a name="L452"></a><tt class="py-lineno"> 452</tt>  <tt class="py-line"> </tt>
+<a name="L453"></a><tt class="py-lineno"> 453</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">num_frame_controllers</tt><tt class="py-op">:</tt> <tt class="py-comment"># Frame by frame control desired</tt> </tt>
+<a name="L454"></a><tt class="py-lineno"> 454</tt>  <tt class="py-line">            <tt class="py-name">impossibly_fast_frame_rate</tt> <tt class="py-op">=</tt> <tt class="py-number">210.0</tt> </tt>
+<a name="L455"></a><tt class="py-lineno"> 455</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">calculated_fps</tt> <tt class="py-op">></tt> <tt class="py-name">impossibly_fast_frame_rate</tt><tt class="py-op">:</tt> <tt class="py-comment"># Let's assume no monitor can exceed impossibly_fast_frame_rate</tt> </tt>
+<a name="L456"></a><tt class="py-lineno"> 456</tt>  <tt class="py-line">                <tt id="link-90" class="py-name" targets="Variable VisionEgg.logger=VisionEgg-module.html#logger"><a title="VisionEgg.logger" class="py-name" href="#" onclick="return doclink('link-90', 'logger', 'link-90');">logger</a></tt> <tt class="py-op">=</tt> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">getLogger</tt><tt class="py-op">(</tt><tt class="py-string">'VisionEgg.FlowCon [...]
+<a name="L457"></a><tt class="py-lineno"> 457</tt>  <tt class="py-line">                <tt id="link-91" class="py-name"><a title="VisionEgg.logger" class="py-name" href="#" onclick="return doclink('link-91', 'logger', 'link-90');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">error</tt><tt class="py-op">(</tt><tt class="py-string">"Frame by frame control desired, but "</tt> </tt>
+<a name="L458"></a><tt class="py-lineno"> 458</tt>  <tt class="py-line">                             <tt class="py-string">"average frame rate was %.2f frames per "</tt> </tt>
+<a name="L459"></a><tt class="py-lineno"> 459</tt>  <tt class="py-line">                             <tt class="py-string">"second-- faster than any display device "</tt> </tt>
+<a name="L460"></a><tt class="py-lineno"> 460</tt>  <tt class="py-line">                             <tt class="py-string">"(that I know of).  Set your drivers to "</tt> </tt>
+<a name="L461"></a><tt class="py-lineno"> 461</tt>  <tt class="py-line">                             <tt class="py-string">"sync buffer swapping to vertical "</tt> </tt>
+<a name="L462"></a><tt class="py-lineno"> 462</tt>  <tt class="py-line">                             <tt class="py-string">"retrace. (platform/driver "</tt> </tt>
+<a name="L463"></a><tt class="py-lineno"> 463</tt>  <tt class="py-line">                             <tt class="py-string">"dependent)"</tt><tt class="py-op">%</tt><tt class="py-op">(</tt><tt class="py-name">calculated_fps</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L464"></a><tt class="py-lineno"> 464</tt>  <tt class="py-line">        <tt class="py-comment"># Warn if > warn_mean_fps_threshold error in frame rate</tt> </tt>
+<a name="L465"></a><tt class="py-lineno"> 465</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">abs</tt><tt class="py-op">(</tt><tt class="py-name">calculated_fps</tt><tt class="py-op">-</tt><tt id="link-92" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-92', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-93" class="py-name"><a title="VisionEgg.conf [...]
+<a name="L466"></a><tt class="py-lineno"> 466</tt>  <tt class="py-line">            <tt id="link-97" class="py-name"><a title="VisionEgg.logger" class="py-name" href="#" onclick="return doclink('link-97', 'logger', 'link-90');">logger</a></tt> <tt class="py-op">=</tt> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">getLogger</tt><tt class="py-op">(</tt><tt class="py-string">'VisionEgg.FlowControl'</tt><tt class="py-op">)</tt> </tt>
+<a name="L467"></a><tt class="py-lineno"> 467</tt>  <tt class="py-line">            <tt id="link-98" class="py-name"><a title="VisionEgg.logger" class="py-name" href="#" onclick="return doclink('link-98', 'logger', 'link-90');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">warning</tt><tt class="py-op">(</tt><tt class="py-string">"Calculated frames per second was %.3f, "</tt> </tt>
+<a name="L468"></a><tt class="py-lineno"> 468</tt>  <tt class="py-line">                           <tt class="py-string">"while the VISIONEGG_MONITOR_REFRESH_HZ "</tt> </tt>
+<a name="L469"></a><tt class="py-lineno"> 469</tt>  <tt class="py-line">                           <tt class="py-string">"variable is %s."</tt><tt class="py-op">%</tt><tt class="py-op">(</tt><tt class="py-name">calculated_fps</tt><tt class="py-op">,</tt> </tt>
+<a name="L470"></a><tt class="py-lineno"> 470</tt>  <tt class="py-line">                           <tt id="link-99" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-99', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-100" class="py-name"><a title="VisionEgg.config" class="py-name" href="#" onclick="return doclink('link-100', 'config', 'link-80');">config</a></tt><tt class="py-op">.</tt><tt class="py-name">VISIONE [...]
+<a name="L471"></a><tt class="py-lineno"> 471</tt>  <tt class="py-line">        <tt class="py-name">frame_skip_fraction</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">warn_longest_frame_threshold</tt> </tt>
+<a name="L472"></a><tt class="py-lineno"> 472</tt>  <tt class="py-line">        <tt class="py-name">inter_frame_inteval</tt> <tt class="py-op">=</tt> <tt class="py-number">1.0</tt><tt class="py-op">/</tt><tt id="link-101" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-101', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-102" class="py-name"><a title="VisionEgg.config" class="py-name" href="#" onclick="return do [...]
+<a name="L473"></a><tt class="py-lineno"> 473</tt>  <tt class="py-line"> </tt>
+<a name="L474"></a><tt class="py-lineno"> 474</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">collect_timing_info</tt><tt class="py-op">:</tt> </tt>
+<a name="L475"></a><tt class="py-lineno"> 475</tt>  <tt class="py-line">            <tt class="py-name">longest_frame_draw_time_sec</tt> <tt class="py-op">=</tt> <tt class="py-name">frame_timer</tt><tt class="py-op">.</tt><tt id="link-103" class="py-name" targets="Method VisionEgg.Core.FrameTimer.get_longest_frame_duration_sec()=VisionEgg.Core.FrameTimer-class.html#get_longest_frame_duration_sec"><a title="VisionEgg.Core.FrameTimer.get_longest_frame_duration_sec" class="py-name" href="#" [...]
+<a name="L476"></a><tt class="py-lineno"> 476</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">longest_frame_draw_time_sec</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L477"></a><tt class="py-lineno"> 477</tt>  <tt class="py-line">                <tt id="link-104" class="py-name"><a title="VisionEgg.logger" class="py-name" href="#" onclick="return doclink('link-104', 'logger', 'link-90');">logger</a></tt> <tt class="py-op">=</tt> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">getLogger</tt><tt class="py-op">(</tt><tt class="py-string">'VisionEgg.FlowControl'</tt><tt class="py-op">)</tt> </tt>
+<a name="L478"></a><tt class="py-lineno"> 478</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">longest_frame_draw_time_sec</tt> <tt class="py-op">>=</tt> <tt class="py-op">(</tt><tt class="py-name">frame_skip_fraction</tt><tt class="py-op">*</tt><tt class="py-name">inter_frame_inteval</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L479"></a><tt class="py-lineno"> 479</tt>  <tt class="py-line">                    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">frames_dropped_in_last_go_loop</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
+<a name="L480"></a><tt class="py-lineno"> 480</tt>  <tt class="py-line">                    <tt id="link-105" class="py-name"><a title="VisionEgg.logger" class="py-name" href="#" onclick="return doclink('link-105', 'logger', 'link-90');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">warning</tt><tt class="py-op">(</tt><tt class="py-string">"One or more frames took %.1f msec, "</tt> </tt>
+<a name="L481"></a><tt class="py-lineno"> 481</tt>  <tt class="py-line">                                   <tt class="py-string">"which is signficantly longer than the "</tt> </tt>
+<a name="L482"></a><tt class="py-lineno"> 482</tt>  <tt class="py-line">                                   <tt class="py-string">"expected inter frame interval of %.1f "</tt> </tt>
+<a name="L483"></a><tt class="py-lineno"> 483</tt>  <tt class="py-line">                                   <tt class="py-string">"msec for your frame rate (%.1f Hz)."</tt><tt class="py-op">%</tt><tt class="py-op">(</tt> </tt>
+<a name="L484"></a><tt class="py-lineno"> 484</tt>  <tt class="py-line">                                   <tt class="py-name">longest_frame_draw_time_sec</tt><tt class="py-op">*</tt><tt class="py-number">1000.0</tt><tt class="py-op">,</tt> </tt>
+<a name="L485"></a><tt class="py-lineno"> 485</tt>  <tt class="py-line">                                   <tt class="py-name">inter_frame_inteval</tt><tt class="py-op">*</tt><tt class="py-number">1000.0</tt><tt class="py-op">,</tt> </tt>
+<a name="L486"></a><tt class="py-lineno"> 486</tt>  <tt class="py-line">                                   <tt id="link-106" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-106', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-107" class="py-name"><a title="VisionEgg.config" class="py-name" href="#" onclick="return doclink('link-107', 'config', 'link-80');">config</a></tt><tt class="py-op">.</tt><tt class="py-nam [...]
+<a name="L487"></a><tt class="py-lineno"> 487</tt>  <tt class="py-line">                <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L488"></a><tt class="py-lineno"> 488</tt>  <tt class="py-line">                    <tt id="link-108" class="py-name"><a title="VisionEgg.logger" class="py-name" href="#" onclick="return doclink('link-108', 'logger', 'link-90');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">debug</tt><tt class="py-op">(</tt><tt class="py-string">"Longest frame update was %.1f msec. "</tt> </tt>
+<a name="L489"></a><tt class="py-lineno"> 489</tt>  <tt class="py-line">                                 <tt class="py-string">"Your expected inter frame interval is "</tt> </tt>
+<a name="L490"></a><tt class="py-lineno"> 490</tt>  <tt class="py-line">                                 <tt class="py-string">"%f msec."</tt><tt class="py-op">%</tt><tt class="py-op">(</tt><tt class="py-name">longest_frame_draw_time_sec</tt><tt class="py-op">*</tt><tt class="py-number">1000.0</tt><tt class="py-op">,</tt> </tt>
+<a name="L491"></a><tt class="py-lineno"> 491</tt>  <tt class="py-line">                                 <tt class="py-name">inter_frame_inteval</tt><tt class="py-op">*</tt><tt class="py-number">1000.0</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L492"></a><tt class="py-lineno"> 492</tt>  <tt class="py-line">            <tt class="py-name">frame_timer</tt><tt class="py-op">.</tt><tt id="link-109" class="py-name" targets="Method VisionEgg.Core.FrameTimer.log_histogram()=VisionEgg.Core.FrameTimer-class.html#log_histogram"><a title="VisionEgg.Core.FrameTimer.log_histogram" class="py-name" href="#" onclick="return doclink('link-109', 'log_histogram', 'link-109');">log_histogram</a></tt><tt class="py-op">(</tt><tt class="py-o [...]
+<a name="L493"></a><tt class="py-lineno"> 493</tt>  <tt class="py-line"> </tt>
+<a name="L494"></a><tt class="py-lineno"> 494</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">in_go_loop</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+</div><a name="L495"></a><tt class="py-lineno"> 495</tt>  <tt class="py-line"> </tt>
+<a name="Presentation.export_movie_go"></a><div id="Presentation.export_movie_go-def"><a name="L496"></a><tt class="py-lineno"> 496</tt> <a class="py-toggle" href="#" id="Presentation.export_movie_go-toggle" onclick="return toggle('Presentation.export_movie_go');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.FlowControl.Presentation-class.html#export_movie_go">export_movie_go</a><tt class="py-op">(</tt><tt class="py-param">self</tt>< [...]
+</div><div id="Presentation.export_movie_go-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Presentation.export_movie_go-expanded"><a name="L497"></a><tt class="py-lineno"> 497</tt>  <tt class="py-line">        <tt class="py-docstring">"""Emulates method 'go' but saves a movie."""</tt> </tt>
+<a name="L498"></a><tt class="py-lineno"> 498</tt>  <tt class="py-line">        <tt class="py-keyword">import</tt> <tt id="link-110" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-110', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-111" class="py-name"><a title="VisionEgg.Core" class="py-name" href="#" onclick="return doclink('link-111', 'Core', 'link-68');">Core</a></tt> <tt class="py-comment"># here to preve [...]
+<a name="L499"></a><tt class="py-lineno"> 499</tt>  <tt class="py-line">        <tt class="py-keyword">import</tt> <tt class="py-name">Image</tt> <tt class="py-comment"># Could import this at the beginning of the file, but it breaks sometimes!</tt> </tt>
+<a name="L500"></a><tt class="py-lineno"> 500</tt>  <tt class="py-line">        <tt class="py-keyword">import</tt> <tt class="py-name">os</tt> <tt class="py-comment"># Could also import this, but this is the only place its needed</tt> </tt>
+<a name="L501"></a><tt class="py-lineno"> 501</tt>  <tt class="py-line"> </tt>
+<a name="L502"></a><tt class="py-lineno"> 502</tt>  <tt class="py-line">        <tt class="py-comment"># Create shorthand notation, which speeds the main loop</tt> </tt>
+<a name="L503"></a><tt class="py-lineno"> 503</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># slightly by not performing name lookup each time.</tt> </tt>
+<a name="L504"></a><tt class="py-lineno"> 504</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">p</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt> </tt>
+<a name="L505"></a><tt class="py-lineno"> 505</tt>  <tt class="py-line"> </tt>
+<a name="L506"></a><tt class="py-lineno"> 506</tt>  <tt class="py-line">        <tt class="py-comment"># Switch function VisionEgg.time_func</tt> </tt>
+<a name="L507"></a><tt class="py-lineno"> 507</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">time_sec_absolute</tt><tt class="py-op">=</tt><tt id="link-112" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-112', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-113" class="py-name"><a title="VisionEgg.time_func" class="py-name" h [...]
+<a name="L508"></a><tt class="py-lineno"> 508</tt>  <tt class="py-line">        <tt id="link-114" class="py-name" targets="Variable VisionEgg.true_time_func=VisionEgg-module.html#true_time_func"><a title="VisionEgg.true_time_func" class="py-name" href="#" onclick="return doclink('link-114', 'true_time_func', 'link-114');">true_time_func</a></tt> <tt class="py-op">=</tt> <tt id="link-115" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-115', 'Vi [...]
+<a name="L509"></a><tt class="py-lineno"> 509</tt>  <tt class="py-line">        <tt class="py-keyword">def</tt> <tt class="py-def-name">fake_time_func</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L510"></a><tt class="py-lineno"> 510</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">time_sec_absolute</tt> </tt>
+</div><a name="L511"></a><tt class="py-lineno"> 511</tt>  <tt class="py-line">        <tt id="link-117" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-117', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-118" class="py-name"><a title="VisionEgg.time_func" class="py-name" href="#" onclick="return doclink('link-118', 'time_func', 'link-34');">time_func</a></tt> <tt class="py-op">=</tt> <tt class="py-name">fake_ti [...]
+<a name="L512"></a><tt class="py-lineno"> 512</tt>  <tt class="py-line"> </tt>
+<a name="L513"></a><tt class="py-lineno"> 513</tt>  <tt class="py-line">        <tt id="link-119" class="py-name"><a title="VisionEgg.logger" class="py-name" href="#" onclick="return doclink('link-119', 'logger', 'link-90');">logger</a></tt> <tt class="py-op">=</tt> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">getLogger</tt><tt class="py-op">(</tt><tt class="py-string">'VisionEgg.FlowControl'</tt><tt class="py-op">)</tt> </tt>
+<a name="L514"></a><tt class="py-lineno"> 514</tt>  <tt class="py-line"> </tt>
+<a name="L515"></a><tt class="py-lineno"> 515</tt>  <tt class="py-line">        <tt class="py-comment"># Go!</tt> </tt>
+<a name="L516"></a><tt class="py-lineno"> 516</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L517"></a><tt class="py-lineno"> 517</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">time_sec_absolute</tt><tt class="py-op">=</tt><tt id="link-120" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-120', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-121" class="py-name"><a title="VisionEgg.time_func" class="py-name" href="#" onclick="return docl [...]
+<a name="L518"></a><tt class="py-lineno"> 518</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">time_sec_since_go</tt> <tt class="py-op">=</tt> <tt class="py-number">0.0</tt> </tt>
+<a name="L519"></a><tt class="py-lineno"> 519</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">frames_since_go</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L520"></a><tt class="py-lineno"> 520</tt>  <tt class="py-line"> </tt>
+<a name="L521"></a><tt class="py-lineno"> 521</tt>  <tt class="py-line">        <tt class="py-comment"># Tell transitional controllers a presentation is starting</tt> </tt>
+<a name="L522"></a><tt class="py-lineno"> 522</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__call_controllers</tt><tt class="py-op">(</tt> </tt>
+<a name="L523"></a><tt class="py-lineno"> 523</tt>  <tt class="py-line">            <tt class="py-name">go_started</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py-op">,</tt> </tt>
+<a name="L524"></a><tt class="py-lineno"> 524</tt>  <tt class="py-line">            <tt class="py-name">doing_transition</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="L525"></a><tt class="py-lineno"> 525</tt>  <tt class="py-line"> </tt>
+<a name="L526"></a><tt class="py-lineno"> 526</tt>  <tt class="py-line">        <tt class="py-comment"># Do the main loop</tt> </tt>
+<a name="L527"></a><tt class="py-lineno"> 527</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">image_no</tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L528"></a><tt class="py-lineno"> 528</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">go_duration</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-string">'forever'</tt><tt class="py-op">:</tt> <tt class="py-comment"># forever</tt> </tt>
+<a name="L529"></a><tt class="py-lineno"> 529</tt>  <tt class="py-line">            <tt class="py-name">current_duration_value</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L530"></a><tt class="py-lineno"> 530</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">go_duration</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-string">'seconds'</tt><tt class="py-op">:</tt> <tt class="py-comment"># duration units</tt> </tt>
+<a name="L531"></a><tt class="py-lineno"> 531</tt>  <tt class="py-line">            <tt class="py-name">current_duration_value</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">time_sec_since_go</tt> </tt>
+<a name="L532"></a><tt class="py-lineno"> 532</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">go_duration</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-string">'frames'</tt><tt class="py-op">:</tt> <tt class="py-comment"># duration units</tt> </tt>
+<a name="L533"></a><tt class="py-lineno"> 533</tt>  <tt class="py-line">            <tt class="py-name">current_duration_value</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">frames_since_go</tt> </tt>
+<a name="L534"></a><tt class="py-lineno"> 534</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L535"></a><tt class="py-lineno"> 535</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">RuntimeError</tt><tt class="py-op">(</tt><tt class="py-string">"Unknown duration unit '%s'"</tt><tt class="py-op">%</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">go_duration</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L536"></a><tt class="py-lineno"> 536</tt>  <tt class="py-line">        <tt class="py-keyword">while</tt> <tt class="py-op">(</tt><tt class="py-name">current_duration_value</tt> <tt class="py-op"><</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">go_duration</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L537"></a><tt class="py-lineno"> 537</tt>  <tt class="py-line">            <tt class="py-comment"># Get list of screens</tt> </tt>
+<a name="L538"></a><tt class="py-lineno"> 538</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">screens</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L539"></a><tt class="py-lineno"> 539</tt>  <tt class="py-line">            <tt class="py-keyword">for</tt> <tt class="py-name">viewport</tt> <tt class="py-keyword">in</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">viewports</tt><tt class="py-op">:</tt> </tt>
+<a name="L540"></a><tt class="py-lineno"> 540</tt>  <tt class="py-line">                <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-name">viewport</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">screen</tt> </tt>
+<a name="L541"></a><tt class="py-lineno"> 541</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">s</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">screens</tt><tt class="py-op">:</tt> </tt>
+<a name="L542"></a><tt class="py-lineno"> 542</tt>  <tt class="py-line">                    <tt class="py-name">screens</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">)</tt> </tt>
+<a name="L543"></a><tt class="py-lineno"> 543</tt>  <tt class="py-line"> </tt>
+<a name="L544"></a><tt class="py-lineno"> 544</tt>  <tt class="py-line">            <tt class="py-comment"># Clear the screen(s)</tt> </tt>
+<a name="L545"></a><tt class="py-lineno"> 545</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">for</tt> <tt class="py-name">screen</tt> <tt class="py-keyword">in</tt> <tt class="py-name">screens</tt><tt class="py-op">:</tt> </tt>
+<a name="L546"></a><tt class="py-lineno"> 546</tt>  <tt class="py-line">                <tt class="py-name">screen</tt><tt class="py-op">.</tt><tt id="link-122" class="py-name"><a title="VisionEgg.Core.Screen.clear" class="py-name" href="#" onclick="return doclink('link-122', 'clear', 'link-81');">clear</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L547"></a><tt class="py-lineno"> 547</tt>  <tt class="py-line"> </tt>
+<a name="L548"></a><tt class="py-lineno"> 548</tt>  <tt class="py-line">            <tt class="py-comment"># Update all the realtime parameters</tt> </tt>
+<a name="L549"></a><tt class="py-lineno"> 549</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__call_controllers</tt><tt class="py-op">(</tt> </tt>
+<a name="L550"></a><tt class="py-lineno"> 550</tt>  <tt class="py-line">                <tt class="py-name">go_started</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py-op">,</tt> </tt>
+<a name="L551"></a><tt class="py-lineno"> 551</tt>  <tt class="py-line">                <tt class="py-name">doing_transition</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">)</tt> </tt>
+<a name="L552"></a><tt class="py-lineno"> 552</tt>  <tt class="py-line"> </tt>
+<a name="L553"></a><tt class="py-lineno"> 553</tt>  <tt class="py-line">            <tt class="py-comment"># Draw each viewport</tt> </tt>
+<a name="L554"></a><tt class="py-lineno"> 554</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">for</tt> <tt class="py-name">viewport</tt> <tt class="py-keyword">in</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">viewports</tt><tt class="py-op">:</tt> </tt>
+<a name="L555"></a><tt class="py-lineno"> 555</tt>  <tt class="py-line">                <tt class="py-name">viewport</tt><tt class="py-op">.</tt><tt id="link-123" class="py-name"><a title="VisionEgg.Core.FixationSpot.draw
+VisionEgg.Core.Stimulus.draw
+VisionEgg.Core.Viewport.draw
+VisionEgg.Dots.DotArea2D.draw
+VisionEgg.Gratings.SinGrating2D.draw
+VisionEgg.Gratings.SinGrating3D.draw
+VisionEgg.MoreStimuli.Arrow.draw
+VisionEgg.MoreStimuli.FilledCircle.draw
+VisionEgg.MoreStimuli.Rectangle3D.draw
+VisionEgg.MoreStimuli.Target2D.draw
+VisionEgg.SphereMap.AzElGrid.draw
+VisionEgg.SphereMap.SphereGrating.draw
+VisionEgg.SphereMap.SphereMap.draw
+VisionEgg.SphereMap.SphereWindow.draw
+VisionEgg.Text.BitmapText.draw
+VisionEgg.Text.StrokeText.draw
+VisionEgg.Text.Text.draw
+VisionEgg.Textures.FixationCross.draw
+VisionEgg.Textures.SpinningDrum.draw
+VisionEgg.Textures.TextureStimulus.draw
+VisionEgg.Textures.TextureStimulus3D.draw
+VisionEgg.WrappedText.WrappedText.draw" class="py-name" href="#" onclick="return doclink('link-123', 'draw', 'link-82');">draw</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L556"></a><tt class="py-lineno"> 556</tt>  <tt class="py-line"> </tt>
+<a name="L557"></a><tt class="py-lineno"> 557</tt>  <tt class="py-line">            <tt class="py-comment"># Swap the buffers</tt> </tt>
+<a name="L558"></a><tt class="py-lineno"> 558</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt id="link-124" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-124', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-125" class="py-name"><a title="VisionEgg.Core" class="py-name" href="#" onclick="return doclink('link-125', 'Core', 'link-68');">Core</a></tt><tt class="py-op">.</tt><tt id="link-126"  [...]
+<a name="L559"></a><tt class="py-lineno"> 559</tt>  <tt class="py-line"> </tt>
+<a name="L560"></a><tt class="py-lineno"> 560</tt>  <tt class="py-line">            <tt class="py-comment"># Now save the contents of the framebuffer</tt> </tt>
+<a name="L561"></a><tt class="py-lineno"> 561</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">fb_image</tt> <tt class="py-op">=</tt> <tt class="py-name">screen</tt><tt class="py-op">.</tt><tt id="link-127" class="py-name" targets="Method VisionEgg.Core.Screen.get_framebuffer_as_image()=VisionEgg.Core.Screen-class.html#get_framebuffer_as_image"><a title="VisionEgg.Core.Screen.get_framebuffer_as_image" class="py-name" href="#" onclick="return doclink(' [...]
+<a name="L562"></a><tt class="py-lineno"> 562</tt>  <tt class="py-line">            <tt class="py-name">filename</tt> <tt class="py-op">=</tt> <tt class="py-string">"%s%04d%s"</tt><tt class="py-op">%</tt><tt class="py-op">(</tt><tt class="py-name">filename_base</tt><tt class="py-op">,</tt><tt class="py-name">image_no</tt><tt class="py-op">,</tt><tt class="py-name">filename_suffix</tt><tt class="py-op">)</tt> </tt>
+<a name="L563"></a><tt class="py-lineno"> 563</tt>  <tt class="py-line">            <tt class="py-name">savepath</tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">path</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt> <tt class="py-name">path</tt><tt class="py-op">,</tt> <tt class="py-name">filename</tt> <tt class="py-op">)</tt> </tt>
+<a name="L564"></a><tt class="py-lineno"> 564</tt>  <tt class="py-line">            <tt id="link-128" class="py-name"><a title="VisionEgg.logger" class="py-name" href="#" onclick="return doclink('link-128', 'logger', 'link-90');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">"Saving '%s'"</tt><tt class="py-op">%</tt><tt class="py-name">filename</tt><tt class="py-op">)</tt> </tt>
+<a name="L565"></a><tt class="py-lineno"> 565</tt>  <tt class="py-line">            <tt class="py-name">fb_image</tt><tt class="py-op">.</tt><tt id="link-129" class="py-name" targets="Method VisionEgg.GUI.GraphicsConfigurationWindow.save()=VisionEgg.GUI.GraphicsConfigurationWindow-class.html#save,Method VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.save()=VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html#save"><a title="VisionEgg.GUI.GraphicsCon [...]
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.save" class="py-name" href="#" onclick="return doclink('link-129', 'save', 'link-129');">save</a></tt><tt class="py-op">(</tt> <tt class="py-name">savepath</tt> <tt class="py-op">)</tt> </tt>
+<a name="L566"></a><tt class="py-lineno"> 566</tt>  <tt class="py-line">            <tt class="py-name">image_no</tt> <tt class="py-op">=</tt> <tt class="py-name">image_no</tt> <tt class="py-op">+</tt> <tt class="py-number">1</tt> </tt>
+<a name="L567"></a><tt class="py-lineno"> 567</tt>  <tt class="py-line"> </tt>
+<a name="L568"></a><tt class="py-lineno"> 568</tt>  <tt class="py-line">            <tt class="py-comment"># Set the time variables for the next frame</tt> </tt>
+<a name="L569"></a><tt class="py-lineno"> 569</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">time_sec_absolute</tt> <tt class="py-op">+=</tt> <tt class="py-number">1.0</tt><tt class="py-op">/</tt><tt class="py-name">frames_per_sec</tt> </tt>
+<a name="L570"></a><tt class="py-lineno"> 570</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">time_sec_since_go</tt> <tt class="py-op">+=</tt> <tt class="py-number">1.0</tt><tt class="py-op">/</tt><tt class="py-name">frames_per_sec</tt> </tt>
+<a name="L571"></a><tt class="py-lineno"> 571</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">frames_absolute</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L572"></a><tt class="py-lineno"> 572</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">frames_since_go</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L573"></a><tt class="py-lineno"> 573</tt>  <tt class="py-line"> </tt>
+<a name="L574"></a><tt class="py-lineno"> 574</tt>  <tt class="py-line">            <tt class="py-comment"># Make sure we use the right value to check if we're done</tt> </tt>
+<a name="L575"></a><tt class="py-lineno"> 575</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">if</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">go_duration</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-string">'forever'</tt><tt class="py-op">:</tt> </tt>
+<a name="L576"></a><tt class="py-lineno"> 576</tt>  <tt class="py-line">                <tt class="py-keyword">pass</tt> <tt class="py-comment"># current_duration_value already set to 0</tt> </tt>
+<a name="L577"></a><tt class="py-lineno"> 577</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">go_duration</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-string">'seconds'</tt><tt class="py-op">:</tt> </tt>
+<a name="L578"></a><tt class="py-lineno"> 578</tt>  <tt class="py-line">                <tt class="py-name">current_duration_value</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">time_sec_since_go</tt> </tt>
+<a name="L579"></a><tt class="py-lineno"> 579</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">go_duration</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-string">'frames'</tt><tt class="py-op">:</tt> </tt>
+<a name="L580"></a><tt class="py-lineno"> 580</tt>  <tt class="py-line">                <tt class="py-name">current_duration_value</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">frames_since_go</tt> </tt>
+<a name="L581"></a><tt class="py-lineno"> 581</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L582"></a><tt class="py-lineno"> 582</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> <tt class="py-name">RuntimeError</tt><tt class="py-op">(</tt><tt class="py-string">"Unknown duration unit '%s'"</tt><tt class="py-op">%</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">go_duration</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L583"></a><tt class="py-lineno"> 583</tt>  <tt class="py-line"> </tt>
+<a name="L584"></a><tt class="py-lineno"> 584</tt>  <tt class="py-line">            <tt class="py-comment"># Check events if requested</tt> </tt>
+<a name="L585"></a><tt class="py-lineno"> 585</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">if</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">check_events</tt><tt class="py-op">:</tt> </tt>
+<a name="L586"></a><tt class="py-lineno"> 586</tt>  <tt class="py-line">                <tt class="py-keyword">for</tt> <tt class="py-name">event</tt> <tt class="py-keyword">in</tt> <tt class="py-name">pygame</tt><tt class="py-op">.</tt><tt class="py-name">event</tt><tt class="py-op">.</tt><tt id="link-130" class="py-name"><a title="VisionEgg.PyroClient.PyroClient.get" class="py-name" href="#" onclick="return doclink('link-130', 'get', 'link-87');">get</a></tt><tt class="py-op">(</tt><tt [...]
+<a name="L587"></a><tt class="py-lineno"> 587</tt>  <tt class="py-line">                    <tt class="py-keyword">for</tt> <tt class="py-name">event_type</tt><tt class="py-op">,</tt> <tt class="py-name">event_callback</tt> <tt class="py-keyword">in</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt id="link-131" class="py-name"><a title="VisionEgg.PyroApps.MouseTargetServer.handle_event_callbacks" class="py-name" href="#" onclick="return doclink('link-131', 'handle_event_callbac [...]
+<a name="L588"></a><tt class="py-lineno"> 588</tt>  <tt class="py-line">                        <tt class="py-keyword">if</tt> <tt class="py-name">event</tt><tt class="py-op">.</tt><tt class="py-name">type</tt> <tt class="py-keyword">is</tt> <tt class="py-name">event_type</tt><tt class="py-op">:</tt> </tt>
+<a name="L589"></a><tt class="py-lineno"> 589</tt>  <tt class="py-line">                            <tt class="py-name">event_callback</tt><tt class="py-op">(</tt><tt class="py-name">event</tt><tt class="py-op">)</tt> </tt>
+<a name="L590"></a><tt class="py-lineno"> 590</tt>  <tt class="py-line"> </tt>
+<a name="L591"></a><tt class="py-lineno"> 591</tt>  <tt class="py-line">        <tt class="py-comment"># Tell transitional controllers a presentation has ended</tt> </tt>
+<a name="L592"></a><tt class="py-lineno"> 592</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__call_controllers</tt><tt class="py-op">(</tt> </tt>
+<a name="L593"></a><tt class="py-lineno"> 593</tt>  <tt class="py-line">            <tt class="py-name">go_started</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> </tt>
+<a name="L594"></a><tt class="py-lineno"> 594</tt>  <tt class="py-line">            <tt class="py-name">doing_transition</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="L595"></a><tt class="py-lineno"> 595</tt>  <tt class="py-line"> </tt>
+<a name="L596"></a><tt class="py-lineno"> 596</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">screens</tt><tt class="py-op">)</tt> <tt class="py-op">></tt> <tt class="py-number">1</tt><tt class="py-op">:</tt> </tt>
+<a name="L597"></a><tt class="py-lineno"> 597</tt>  <tt class="py-line">            <tt id="link-132" class="py-name"><a title="VisionEgg.logger" class="py-name" href="#" onclick="return doclink('link-132', 'logger', 'link-90');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">warning</tt><tt class="py-op">(</tt><tt class="py-string">"Only saved movie from last screen."</tt><tt class="py-op">)</tt> </tt>
+<a name="L598"></a><tt class="py-lineno"> 598</tt>  <tt class="py-line"> </tt>
+<a name="L599"></a><tt class="py-lineno"> 599</tt>  <tt class="py-line">        <tt class="py-name">scp</tt> <tt class="py-op">=</tt> <tt class="py-name">screen</tt><tt class="py-op">.</tt><tt class="py-name">constant_parameters</tt> </tt>
+<a name="L600"></a><tt class="py-lineno"> 600</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">scp</tt><tt class="py-op">.</tt><tt class="py-name">red_bits</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L601"></a><tt class="py-lineno"> 601</tt>  <tt class="py-line">            <tt class="py-name">warn_about_movie_depth</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L602"></a><tt class="py-lineno"> 602</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">scp</tt><tt class="py-op">.</tt><tt class="py-name">red_bits</tt> <tt class="py-op">></tt> <tt class="py-number">8</tt><tt class="py-op">:</tt> </tt>
+<a name="L603"></a><tt class="py-lineno"> 603</tt>  <tt class="py-line">                <tt class="py-name">warn_about_movie_depth</tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L604"></a><tt class="py-lineno"> 604</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-name">scp</tt><tt class="py-op">.</tt><tt class="py-name">green_bits</tt> <tt class="py-op">></tt> <tt class="py-number">8</tt><tt class="py-op">:</tt> </tt>
+<a name="L605"></a><tt class="py-lineno"> 605</tt>  <tt class="py-line">                <tt class="py-name">warn_about_movie_depth</tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L606"></a><tt class="py-lineno"> 606</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-name">scp</tt><tt class="py-op">.</tt><tt class="py-name">blue_bits</tt> <tt class="py-op">></tt> <tt class="py-number">8</tt><tt class="py-op">:</tt> </tt>
+<a name="L607"></a><tt class="py-lineno"> 607</tt>  <tt class="py-line">                <tt class="py-name">warn_about_movie_depth</tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L608"></a><tt class="py-lineno"> 608</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">warn_about_movie_depth</tt><tt class="py-op">:</tt> </tt>
+<a name="L609"></a><tt class="py-lineno"> 609</tt>  <tt class="py-line">                <tt id="link-133" class="py-name"><a title="VisionEgg.logger" class="py-name" href="#" onclick="return doclink('link-133', 'logger', 'link-90');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">warning</tt><tt class="py-op">(</tt><tt class="py-string">"Only saved 8 bit per pixel movie, even "</tt> </tt>
+<a name="L610"></a><tt class="py-lineno"> 610</tt>  <tt class="py-line">                               <tt class="py-string">"though your framebuffer supports more!"</tt><tt class="py-op">)</tt> </tt>
+<a name="L611"></a><tt class="py-lineno"> 611</tt>  <tt class="py-line">        <tt class="py-comment"># Restore VisionEgg.time_func</tt> </tt>
+<a name="L612"></a><tt class="py-lineno"> 612</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt id="link-134" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-134', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-135" class="py-name"><a title="VisionEgg.time_func" class="py-name" href="#" onclick="return doclink('link-135', 'time_func', 'link-34');">time_func</a></tt> <tt class="py-op">=</tt> <tt i [...]
+</div><a name="L613"></a><tt class="py-lineno"> 613</tt>  <tt class="py-line"> </tt>
+<a name="Presentation.run_forever"></a><div id="Presentation.run_forever-def"><a name="L614"></a><tt class="py-lineno"> 614</tt> <a class="py-toggle" href="#" id="Presentation.run_forever-toggle" onclick="return toggle('Presentation.run_forever');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.FlowControl.Presentation-class.html#run_forever">run_forever</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt>< [...]
+</div><div id="Presentation.run_forever-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Presentation.run_forever-expanded"><a name="L615"></a><tt class="py-lineno"> 615</tt>  <tt class="py-line">        <tt class="py-docstring">"""Main control loop between go loops."""</tt> </tt>
+<a name="L616"></a><tt class="py-lineno"> 616</tt>  <tt class="py-line">        <tt class="py-name">p</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt> </tt>
+<a name="L617"></a><tt class="py-lineno"> 617</tt>  <tt class="py-line">        <tt class="py-comment"># enter with transitional contoller call</tt> </tt>
+<a name="L618"></a><tt class="py-lineno"> 618</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__call_controllers</tt><tt class="py-op">(</tt> </tt>
+<a name="L619"></a><tt class="py-lineno"> 619</tt>  <tt class="py-line">            <tt class="py-name">go_started</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> </tt>
+<a name="L620"></a><tt class="py-lineno"> 620</tt>  <tt class="py-line">            <tt class="py-name">doing_transition</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="L621"></a><tt class="py-lineno"> 621</tt>  <tt class="py-line">        <tt class="py-keyword">while</tt> <tt class="py-keyword">not</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt id="link-137" class="py-name" targets="Method VisionEgg.PyroApps.EPhysGUI.AppWindow.quit()=VisionEgg.PyroApps.EPhysGUI.AppWindow-class.html#quit"><a title="VisionEgg.PyroApps.EPhysGUI.AppWindow.quit" class="py-name" href="#" onclick="return doclink('link-137', 'quit', 'link-137');">quit</a>< [...]
+<a name="L622"></a><tt class="py-lineno"> 622</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-138" class="py-name"><a title="VisionEgg.FlowControl.Presentation.between_presentations" class="py-name" href="#" onclick="return doclink('link-138', 'between_presentations', 'link-76');">between_presentations</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L623"></a><tt class="py-lineno"> 623</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">enter_go_loop</tt><tt class="py-op">:</tt> </tt>
+<a name="L624"></a><tt class="py-lineno"> 624</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">enter_go_loop</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
+<a name="L625"></a><tt class="py-lineno"> 625</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-139" class="py-name" targets="Method VisionEgg.FlowControl.Presentation.go()=VisionEgg.FlowControl.Presentation-class.html#go,Method VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.go()=VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController-class.html#go,Method VisionEgg.PyroApps.DropinServer.DropinMetaController.go()=VisionE [...]
+VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.go
+VisionEgg.PyroApps.DropinServer.DropinMetaController.go
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.go
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.go
+VisionEgg.PyroApps.GridServer.GridMetaController.go
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.go
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.go
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.go
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.go
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.go" class="py-name" href="#" onclick="return doclink('link-139', 'go', 'link-139');">go</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L626"></a><tt class="py-lineno"> 626</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">check_events</tt><tt class="py-op">:</tt> </tt>
+<a name="L627"></a><tt class="py-lineno"> 627</tt>  <tt class="py-line">                <tt class="py-keyword">for</tt> <tt class="py-name">event</tt> <tt class="py-keyword">in</tt> <tt class="py-name">pygame</tt><tt class="py-op">.</tt><tt class="py-name">event</tt><tt class="py-op">.</tt><tt id="link-140" class="py-name"><a title="VisionEgg.PyroClient.PyroClient.get" class="py-name" href="#" onclick="return doclink('link-140', 'get', 'link-87');">get</a></tt><tt class="py-op">(</tt><tt [...]
+<a name="L628"></a><tt class="py-lineno"> 628</tt>  <tt class="py-line">                    <tt class="py-keyword">for</tt> <tt class="py-name">event_type</tt><tt class="py-op">,</tt> <tt class="py-name">event_callback</tt> <tt class="py-keyword">in</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt id="link-141" class="py-name"><a title="VisionEgg.PyroApps.MouseTargetServer.handle_event_callbacks" class="py-name" href="#" onclick="return doclink('link-141', 'handle_event_callbac [...]
+<a name="L629"></a><tt class="py-lineno"> 629</tt>  <tt class="py-line">                        <tt class="py-keyword">if</tt> <tt class="py-name">event</tt><tt class="py-op">.</tt><tt class="py-name">type</tt> <tt class="py-keyword">is</tt> <tt class="py-name">event_type</tt><tt class="py-op">:</tt> </tt>
+<a name="L630"></a><tt class="py-lineno"> 630</tt>  <tt class="py-line">                            <tt class="py-name">event_callback</tt><tt class="py-op">(</tt><tt class="py-name">event</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L631"></a><tt class="py-lineno"> 631</tt>  <tt class="py-line"> </tt>
+<a name="Presentation.between_presentations"></a><div id="Presentation.between_presentations-def"><a name="L632"></a><tt class="py-lineno"> 632</tt> <a class="py-toggle" href="#" id="Presentation.between_presentations-toggle" onclick="return toggle('Presentation.between_presentations');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.FlowControl.Presentation-class.html#between_presentations">between_presentations</a><tt class="py-op">( [...]
+</div><div id="Presentation.between_presentations-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Presentation.between_presentations-expanded"><a name="L633"></a><tt class="py-lineno"> 633</tt>  <tt class="py-line">        <tt class="py-docstring">"""Maintain display while between stimulus presentations.</tt> </tt>
+<a name="L634"></a><tt class="py-lineno"> 634</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L635"></a><tt class="py-lineno"> 635</tt>  <tt class="py-line"><tt class="py-docstring">        This function gets called as often as possible when in the</tt> </tt>
+<a name="L636"></a><tt class="py-lineno"> 636</tt>  <tt class="py-line"><tt class="py-docstring">        'run_forever' loop except when execution has shifted to the</tt> </tt>
+<a name="L637"></a><tt class="py-lineno"> 637</tt>  <tt class="py-line"><tt class="py-docstring">        'go' loop.</tt> </tt>
+<a name="L638"></a><tt class="py-lineno"> 638</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L639"></a><tt class="py-lineno"> 639</tt>  <tt class="py-line"><tt class="py-docstring">        Other than the difference in the time variable passed to the</tt> </tt>
+<a name="L640"></a><tt class="py-lineno"> 640</tt>  <tt class="py-line"><tt class="py-docstring">        controllers, this routine is very similar to the inside of the</tt> </tt>
+<a name="L641"></a><tt class="py-lineno"> 641</tt>  <tt class="py-line"><tt class="py-docstring">        main loop in the go method.</tt> </tt>
+<a name="L642"></a><tt class="py-lineno"> 642</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L643"></a><tt class="py-lineno"> 643</tt>  <tt class="py-line">        <tt class="py-keyword">import</tt> <tt id="link-142" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-142', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-143" class="py-name"><a title="VisionEgg.Core" class="py-name" href="#" onclick="return doclink('link-143', 'Core', 'link-68');">Core</a></tt> <tt class="py-comment"># here to preve [...]
+<a name="L644"></a><tt class="py-lineno"> 644</tt>  <tt class="py-line"> </tt>
+<a name="L645"></a><tt class="py-lineno"> 645</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">time_sec_absolute</tt><tt class="py-op">=</tt><tt id="link-144" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-144', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-145" class="py-name"><a title="VisionEgg.time_func" class="py-name" href="#" onclick="return docl [...]
+<a name="L646"></a><tt class="py-lineno"> 646</tt>  <tt class="py-line"> </tt>
+<a name="L647"></a><tt class="py-lineno"> 647</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__call_controllers</tt><tt class="py-op">(</tt> </tt>
+<a name="L648"></a><tt class="py-lineno"> 648</tt>  <tt class="py-line">            <tt class="py-name">go_started</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> </tt>
+<a name="L649"></a><tt class="py-lineno"> 649</tt>  <tt class="py-line">            <tt class="py-name">doing_transition</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">)</tt> </tt>
+<a name="L650"></a><tt class="py-lineno"> 650</tt>  <tt class="py-line"> </tt>
+<a name="L651"></a><tt class="py-lineno"> 651</tt>  <tt class="py-line">        <tt class="py-name">viewports</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">viewports</tt> </tt>
+<a name="L652"></a><tt class="py-lineno"> 652</tt>  <tt class="py-line"> </tt>
+<a name="L653"></a><tt class="py-lineno"> 653</tt>  <tt class="py-line">        <tt class="py-comment"># Get list of screens</tt> </tt>
+<a name="L654"></a><tt class="py-lineno"> 654</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">screens</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L655"></a><tt class="py-lineno"> 655</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">viewport</tt> <tt class="py-keyword">in</tt> <tt class="py-name">viewports</tt><tt class="py-op">:</tt> </tt>
+<a name="L656"></a><tt class="py-lineno"> 656</tt>  <tt class="py-line">            <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-name">viewport</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">screen</tt> </tt>
+<a name="L657"></a><tt class="py-lineno"> 657</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">s</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">screens</tt><tt class="py-op">:</tt> </tt>
+<a name="L658"></a><tt class="py-lineno"> 658</tt>  <tt class="py-line">                <tt class="py-name">screens</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">)</tt> </tt>
+<a name="L659"></a><tt class="py-lineno"> 659</tt>  <tt class="py-line"> </tt>
+<a name="L660"></a><tt class="py-lineno"> 660</tt>  <tt class="py-line">        <tt class="py-comment"># Clear the screen(s)</tt> </tt>
+<a name="L661"></a><tt class="py-lineno"> 661</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">for</tt> <tt class="py-name">screen</tt> <tt class="py-keyword">in</tt> <tt class="py-name">screens</tt><tt class="py-op">:</tt> </tt>
+<a name="L662"></a><tt class="py-lineno"> 662</tt>  <tt class="py-line">            <tt class="py-name">screen</tt><tt class="py-op">.</tt><tt id="link-146" class="py-name"><a title="VisionEgg.Core.Screen.clear" class="py-name" href="#" onclick="return doclink('link-146', 'clear', 'link-81');">clear</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L663"></a><tt class="py-lineno"> 663</tt>  <tt class="py-line">        <tt class="py-comment"># Draw each viewport, including each stimulus</tt> </tt>
+<a name="L664"></a><tt class="py-lineno"> 664</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">for</tt> <tt class="py-name">viewport</tt> <tt class="py-keyword">in</tt> <tt class="py-name">viewports</tt><tt class="py-op">:</tt> </tt>
+<a name="L665"></a><tt class="py-lineno"> 665</tt>  <tt class="py-line">            <tt class="py-name">viewport</tt><tt class="py-op">.</tt><tt id="link-147" class="py-name"><a title="VisionEgg.Core.FixationSpot.draw
+VisionEgg.Core.Stimulus.draw
+VisionEgg.Core.Viewport.draw
+VisionEgg.Dots.DotArea2D.draw
+VisionEgg.Gratings.SinGrating2D.draw
+VisionEgg.Gratings.SinGrating3D.draw
+VisionEgg.MoreStimuli.Arrow.draw
+VisionEgg.MoreStimuli.FilledCircle.draw
+VisionEgg.MoreStimuli.Rectangle3D.draw
+VisionEgg.MoreStimuli.Target2D.draw
+VisionEgg.SphereMap.AzElGrid.draw
+VisionEgg.SphereMap.SphereGrating.draw
+VisionEgg.SphereMap.SphereMap.draw
+VisionEgg.SphereMap.SphereWindow.draw
+VisionEgg.Text.BitmapText.draw
+VisionEgg.Text.StrokeText.draw
+VisionEgg.Text.Text.draw
+VisionEgg.Textures.FixationCross.draw
+VisionEgg.Textures.SpinningDrum.draw
+VisionEgg.Textures.TextureStimulus.draw
+VisionEgg.Textures.TextureStimulus3D.draw
+VisionEgg.WrappedText.WrappedText.draw" class="py-name" href="#" onclick="return doclink('link-147', 'draw', 'link-82');">draw</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L666"></a><tt class="py-lineno"> 666</tt>  <tt class="py-line">        <tt id="link-148" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-148', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-149" class="py-name"><a title="VisionEgg.Core" class="py-name" href="#" onclick="return doclink('link-149', 'Core', 'link-68');">Core</a></tt><tt class="py-op">.</tt><tt id="link-150" class="py-name"><a title="Vision [...]
+<a name="L667"></a><tt class="py-lineno"> 667</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">frames_absolute</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+</div></div><a name="L668"></a><tt class="py-lineno"> 668</tt>  <tt class="py-line"> </tt>
+<a name="L669"></a><tt class="py-lineno"> 669</tt>  <tt class="py-line"><tt class="py-comment">####################################################################</tt> </tt>
+<a name="L670"></a><tt class="py-lineno"> 670</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L671"></a><tt class="py-lineno"> 671</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#        Controller</tt> </tt>
+<a name="L672"></a><tt class="py-lineno"> 672</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L673"></a><tt class="py-lineno"> 673</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">####################################################################</tt> </tt>
+<a name="L674"></a><tt class="py-lineno"> 674</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="Controller"></a><div id="Controller-def"><a name="L675"></a><tt class="py-lineno"> 675</tt> <a class="py-toggle" href="#" id="Controller-toggle" onclick="return toggle('Controller');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.FlowControl.Controller-class.html">Controller</a><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Controller-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="Controller-expanded"><a name="L676"></a><tt class="py-lineno"> 676</tt>  <tt class="py-line">    <tt class="py-docstring">"""Control parameters.</tt> </tt>
+<a name="L677"></a><tt class="py-lineno"> 677</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L678"></a><tt class="py-lineno"> 678</tt>  <tt class="py-line"><tt class="py-docstring">    This abstract base class defines the interface to any controller.</tt> </tt>
+<a name="L679"></a><tt class="py-lineno"> 679</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L680"></a><tt class="py-lineno"> 680</tt>  <tt class="py-line"><tt class="py-docstring">    Methods:</tt> </tt>
+<a name="L681"></a><tt class="py-lineno"> 681</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L682"></a><tt class="py-lineno"> 682</tt>  <tt class="py-line"><tt class="py-docstring">    returns_type() -- Get the type of the value returned by the eval functions</tt> </tt>
+<a name="L683"></a><tt class="py-lineno"> 683</tt>  <tt class="py-line"><tt class="py-docstring">    during_go_eval() -- Evaluate controller during the main 'go' loop.</tt> </tt>
+<a name="L684"></a><tt class="py-lineno"> 684</tt>  <tt class="py-line"><tt class="py-docstring">    between_go_eval() -- Evaluate controller between runs of the main 'go' loop.</tt> </tt>
+<a name="L685"></a><tt class="py-lineno"> 685</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L686"></a><tt class="py-lineno"> 686</tt>  <tt class="py-line"><tt class="py-docstring">    The during_go_eval() and between_go_eval() methods are called to</tt> </tt>
+<a name="L687"></a><tt class="py-lineno"> 687</tt>  <tt class="py-line"><tt class="py-docstring">    update a particular parameter such as the position of a stimulus</tt> </tt>
+<a name="L688"></a><tt class="py-lineno"> 688</tt>  <tt class="py-line"><tt class="py-docstring">    on the screen.  These methods must return a value specified by the</tt> </tt>
+<a name="L689"></a><tt class="py-lineno"> 689</tt>  <tt class="py-line"><tt class="py-docstring">    returns_type() method.  These methods are called at particular</tt> </tt>
+<a name="L690"></a><tt class="py-lineno"> 690</tt>  <tt class="py-line"><tt class="py-docstring">    intervals as specified by eval_frequency and with temporal</tt> </tt>
+<a name="L691"></a><tt class="py-lineno"> 691</tt>  <tt class="py-line"><tt class="py-docstring">    parameters specified by temporal_variables (see below for more</tt> </tt>
+<a name="L692"></a><tt class="py-lineno"> 692</tt>  <tt class="py-line"><tt class="py-docstring">    details).  Also, see the documentation for the Presentation class.</tt> </tt>
+<a name="L693"></a><tt class="py-lineno"> 693</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L694"></a><tt class="py-lineno"> 694</tt>  <tt class="py-line"><tt class="py-docstring">    Attributes:</tt> </tt>
+<a name="L695"></a><tt class="py-lineno"> 695</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L696"></a><tt class="py-lineno"> 696</tt>  <tt class="py-line"><tt class="py-docstring">    return_type -- type of the value returned by the eval functions</tt> </tt>
+<a name="L697"></a><tt class="py-lineno"> 697</tt>  <tt class="py-line"><tt class="py-docstring">    eval_frequency -- when eval functions called (see above)</tt> </tt>
+<a name="L698"></a><tt class="py-lineno"> 698</tt>  <tt class="py-line"><tt class="py-docstring">    temporal_variables -- what time variables used (see above)</tt> </tt>
+<a name="L699"></a><tt class="py-lineno"> 699</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L700"></a><tt class="py-lineno"> 700</tt>  <tt class="py-line"><tt class="py-docstring">    A Controller instance's attribute "eval_frequency" controls when a</tt> </tt>
+<a name="L701"></a><tt class="py-lineno"> 701</tt>  <tt class="py-line"><tt class="py-docstring">    controller is evaluated. This variable is a bitwise "or" (the |</tt> </tt>
+<a name="L702"></a><tt class="py-lineno"> 702</tt>  <tt class="py-line"><tt class="py-docstring">    operator) of the following flags:</tt> </tt>
+<a name="L703"></a><tt class="py-lineno"> 703</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L704"></a><tt class="py-lineno"> 704</tt>  <tt class="py-line"><tt class="py-docstring">    EVERY_FRAME    -- every frame</tt> </tt>
+<a name="L705"></a><tt class="py-lineno"> 705</tt>  <tt class="py-line"><tt class="py-docstring">    TRANSITIONS    -- on enter and exit from go loop</tt> </tt>
+<a name="L706"></a><tt class="py-lineno"> 706</tt>  <tt class="py-line"><tt class="py-docstring">    ONCE           -- at the next chance possible (see below)</tt> </tt>
+<a name="L707"></a><tt class="py-lineno"> 707</tt>  <tt class="py-line"><tt class="py-docstring">    NOT_DURING_GO  -- as above, but never during go loop (see below)</tt> </tt>
+<a name="L708"></a><tt class="py-lineno"> 708</tt>  <tt class="py-line"><tt class="py-docstring">    NOT_BETWEEN_GO -- as above, but never between go loops (see below)</tt> </tt>
+<a name="L709"></a><tt class="py-lineno"> 709</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L710"></a><tt class="py-lineno"> 710</tt>  <tt class="py-line"><tt class="py-docstring">    The ONCE flag is automatically unset after evaluation,</tt> </tt>
+<a name="L711"></a><tt class="py-lineno"> 711</tt>  <tt class="py-line"><tt class="py-docstring">    hence its name. As an example, if eval_frequency is set to</tt> </tt>
+<a name="L712"></a><tt class="py-lineno"> 712</tt>  <tt class="py-line"><tt class="py-docstring">    ONCE | TRANSITIONS, it will be evaluated</tt> </tt>
+<a name="L713"></a><tt class="py-lineno"> 713</tt>  <tt class="py-line"><tt class="py-docstring">    before drawing the next frame and then only before and after the</tt> </tt>
+<a name="L714"></a><tt class="py-lineno"> 714</tt>  <tt class="py-line"><tt class="py-docstring">    go loop.</tt> </tt>
+<a name="L715"></a><tt class="py-lineno"> 715</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L716"></a><tt class="py-lineno"> 716</tt>  <tt class="py-line"><tt class="py-docstring">    NOT_DURING_GO and NOT_BETWEEN_GO modify other behavior. For</tt> </tt>
+<a name="L717"></a><tt class="py-lineno"> 717</tt>  <tt class="py-line"><tt class="py-docstring">    example, to evaluate a controller on every frame during go loops</tt> </tt>
+<a name="L718"></a><tt class="py-lineno"> 718</tt>  <tt class="py-line"><tt class="py-docstring">    but not between go loops:</tt> </tt>
+<a name="L719"></a><tt class="py-lineno"> 719</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L720"></a><tt class="py-lineno"> 720</tt>  <tt class="py-line"><tt class="py-docstring">    eval_frequency = EVERY_FRAME | NOT_BETWEEN_GO</tt> </tt>
+<a name="L721"></a><tt class="py-lineno"> 721</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L722"></a><tt class="py-lineno"> 722</tt>  <tt class="py-line"><tt class="py-docstring">    If none of the above flags is set, the value is:</tt> </tt>
+<a name="L723"></a><tt class="py-lineno"> 723</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L724"></a><tt class="py-lineno"> 724</tt>  <tt class="py-line"><tt class="py-docstring">    NEVER          -- this controller is never called</tt> </tt>
+<a name="L725"></a><tt class="py-lineno"> 725</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L726"></a><tt class="py-lineno"> 726</tt>  <tt class="py-line"><tt class="py-docstring">    A Controller instance's attribute "temporal_variables" controls</tt> </tt>
+<a name="L727"></a><tt class="py-lineno"> 727</tt>  <tt class="py-line"><tt class="py-docstring">    what time variables are set for use. This variable is a bitwise</tt> </tt>
+<a name="L728"></a><tt class="py-lineno"> 728</tt>  <tt class="py-line"><tt class="py-docstring">    "or" of the following flags:</tt> </tt>
+<a name="L729"></a><tt class="py-lineno"> 729</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L730"></a><tt class="py-lineno"> 730</tt>  <tt class="py-line"><tt class="py-docstring">    TIME_SEC_ABSOLUTE -- seconds, continuously increasing</tt> </tt>
+<a name="L731"></a><tt class="py-lineno"> 731</tt>  <tt class="py-line"><tt class="py-docstring">    TIME_SEC_SINCE_GO -- seconds, reset to 0.0 each go loop</tt> </tt>
+<a name="L732"></a><tt class="py-lineno"> 732</tt>  <tt class="py-line"><tt class="py-docstring">    FRAMES_ABSOLUTE   -- frames, continuously increasing</tt> </tt>
+<a name="L733"></a><tt class="py-lineno"> 733</tt>  <tt class="py-line"><tt class="py-docstring">    FRAMES_SINCE_GO   -- frames, reset to 0 each go loop</tt> </tt>
+<a name="L734"></a><tt class="py-lineno"> 734</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L735"></a><tt class="py-lineno"> 735</tt>  <tt class="py-line"><tt class="py-docstring">    If none of these flags is set, the value is:</tt> </tt>
+<a name="L736"></a><tt class="py-lineno"> 736</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L737"></a><tt class="py-lineno"> 737</tt>  <tt class="py-line"><tt class="py-docstring">    TIME_INDEPENDENT -- No temporal variables.</tt> </tt>
+<a name="L738"></a><tt class="py-lineno"> 738</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L739"></a><tt class="py-lineno"> 739</tt>  <tt class="py-line"><tt class="py-docstring">    When the eval methods (during_go_eval and between_go_eval) are</tt> </tt>
+<a name="L740"></a><tt class="py-lineno"> 740</tt>  <tt class="py-line"><tt class="py-docstring">    called, attributes are set depending on the temporal variables</tt> </tt>
+<a name="L741"></a><tt class="py-lineno"> 741</tt>  <tt class="py-line"><tt class="py-docstring">    used:</tt> </tt>
+<a name="L742"></a><tt class="py-lineno"> 742</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L743"></a><tt class="py-lineno"> 743</tt>  <tt class="py-line"><tt class="py-docstring">    temporal_variable   attribute set</tt> </tt>
+<a name="L744"></a><tt class="py-lineno"> 744</tt>  <tt class="py-line"><tt class="py-docstring">    -----------------   -------------</tt> </tt>
+<a name="L745"></a><tt class="py-lineno"> 745</tt>  <tt class="py-line"><tt class="py-docstring">    TIME_SEC_ABSOLUTE   self.time_sec_absolute</tt> </tt>
+<a name="L746"></a><tt class="py-lineno"> 746</tt>  <tt class="py-line"><tt class="py-docstring">    TIME_SEC_SINCE_GO   self.time_sec_since_go</tt> </tt>
+<a name="L747"></a><tt class="py-lineno"> 747</tt>  <tt class="py-line"><tt class="py-docstring">    FRAMES_ABSOLUTE     self.frames_absolute</tt> </tt>
+<a name="L748"></a><tt class="py-lineno"> 748</tt>  <tt class="py-line"><tt class="py-docstring">    FRAMES_SINCE_GO     self.frames_since_go</tt> </tt>
+<a name="L749"></a><tt class="py-lineno"> 749</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L750"></a><tt class="py-lineno"> 750</tt>  <tt class="py-line"><tt class="py-docstring">    Other information:</tt> </tt>
+<a name="L751"></a><tt class="py-lineno"> 751</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L752"></a><tt class="py-lineno"> 752</tt>  <tt class="py-line"><tt class="py-docstring">    Instances of Controller are called by instances of the</tt> </tt>
+<a name="L753"></a><tt class="py-lineno"> 753</tt>  <tt class="py-line"><tt class="py-docstring">    Presentation class.  during_go_eval() is called during a go()</tt> </tt>
+<a name="L754"></a><tt class="py-lineno"> 754</tt>  <tt class="py-line"><tt class="py-docstring">    loop, and between_go_eval() is called by between_presentations()</tt> </tt>
+<a name="L755"></a><tt class="py-lineno"> 755</tt>  <tt class="py-line"><tt class="py-docstring">    (during run_forever(), for example).  Before calling these</tt> </tt>
+<a name="L756"></a><tt class="py-lineno"> 756</tt>  <tt class="py-line"><tt class="py-docstring">    methods, attributes of the controller are set accoring to</tt> </tt>
+<a name="L757"></a><tt class="py-lineno"> 757</tt>  <tt class="py-line"><tt class="py-docstring">    \attribute{temporal_variables}.</tt> </tt>
+<a name="L758"></a><tt class="py-lineno"> 758</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L759"></a><tt class="py-lineno"> 759</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L760"></a><tt class="py-lineno"> 760</tt>  <tt class="py-line">    <tt class="py-comment"># temporal_variables flags:</tt> </tt>
+<a name="L761"></a><tt class="py-lineno"> 761</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-151" class="py-name" targets="Variable VisionEgg.FlowControl.Controller.TIME_INDEPENDENT=VisionEgg.FlowControl.Controller-class.html#TIME_INDEPENDENT,Variable VisionEgg.FlowControl.TIME_INDEPENDENT=VisionEgg.FlowControl-module.html#TIME_INDEPENDENT"><a title="VisionEgg.FlowControl.Controller.TIME_INDEPENDENT
+VisionEgg.FlowControl.TIME_INDEPENDENT" class="py-name" href="#" onclick="return doclink('link-151', 'TIME_INDEPENDENT', 'link-151');">TIME_INDEPENDENT</a></tt>  <tt class="py-op">=</tt> <tt class="py-number">0x00</tt> </tt>
+<a name="L762"></a><tt class="py-lineno"> 762</tt>  <tt class="py-line">    <tt id="link-152" class="py-name"><a title="VisionEgg.FlowControl.Controller.TIME_SEC_ABSOLUTE
+VisionEgg.FlowControl.TIME_SEC_ABSOLUTE" class="py-name" href="#" onclick="return doclink('link-152', 'TIME_SEC_ABSOLUTE', 'link-54');">TIME_SEC_ABSOLUTE</a></tt> <tt class="py-op">=</tt> <tt class="py-number">0x01</tt> </tt>
+<a name="L763"></a><tt class="py-lineno"> 763</tt>  <tt class="py-line">    <tt id="link-153" class="py-name"><a title="VisionEgg.FlowControl.Controller.TIME_SEC_SINCE_GO
+VisionEgg.FlowControl.TIME_SEC_SINCE_GO" class="py-name" href="#" onclick="return doclink('link-153', 'TIME_SEC_SINCE_GO', 'link-57');">TIME_SEC_SINCE_GO</a></tt> <tt class="py-op">=</tt> <tt class="py-number">0x02</tt> </tt>
+<a name="L764"></a><tt class="py-lineno"> 764</tt>  <tt class="py-line">    <tt id="link-154" class="py-name"><a title="VisionEgg.FlowControl.Controller.FRAMES_ABSOLUTE
+VisionEgg.FlowControl.FRAMES_ABSOLUTE" class="py-name" href="#" onclick="return doclink('link-154', 'FRAMES_ABSOLUTE', 'link-45');">FRAMES_ABSOLUTE</a></tt>   <tt class="py-op">=</tt> <tt class="py-number">0x04</tt> </tt>
+<a name="L765"></a><tt class="py-lineno"> 765</tt>  <tt class="py-line">    <tt id="link-155" class="py-name"><a title="VisionEgg.FlowControl.Controller.FRAMES_SINCE_GO
+VisionEgg.FlowControl.FRAMES_SINCE_GO" class="py-name" href="#" onclick="return doclink('link-155', 'FRAMES_SINCE_GO', 'link-44');">FRAMES_SINCE_GO</a></tt>   <tt class="py-op">=</tt> <tt class="py-number">0x08</tt> </tt>
+<a name="L766"></a><tt class="py-lineno"> 766</tt>  <tt class="py-line"> </tt>
+<a name="L767"></a><tt class="py-lineno"> 767</tt>  <tt class="py-line">    <tt class="py-comment"># eval_frequency flags:</tt> </tt>
+<a name="L768"></a><tt class="py-lineno"> 768</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-156" class="py-name" targets="Variable VisionEgg.FlowControl.Controller.NEVER=VisionEgg.FlowControl.Controller-class.html#NEVER,Variable VisionEgg.FlowControl.NEVER=VisionEgg.FlowControl-module.html#NEVER"><a title="VisionEgg.FlowControl.Controller.NEVER
+VisionEgg.FlowControl.NEVER" class="py-name" href="#" onclick="return doclink('link-156', 'NEVER', 'link-156');">NEVER</a></tt>          <tt class="py-op">=</tt> <tt class="py-number">0x00</tt> </tt>
+<a name="L769"></a><tt class="py-lineno"> 769</tt>  <tt class="py-line">    <tt id="link-157" class="py-name"><a title="VisionEgg.FlowControl.Controller.EVERY_FRAME
+VisionEgg.FlowControl.EVERY_FRAME" class="py-name" href="#" onclick="return doclink('link-157', 'EVERY_FRAME', 'link-53');">EVERY_FRAME</a></tt>    <tt class="py-op">=</tt> <tt class="py-number">0x01</tt> </tt>
+<a name="L770"></a><tt class="py-lineno"> 770</tt>  <tt class="py-line">    <tt id="link-158" class="py-name"><a title="VisionEgg.FlowControl.Controller.TRANSITIONS
+VisionEgg.FlowControl.TRANSITIONS" class="py-name" href="#" onclick="return doclink('link-158', 'TRANSITIONS', 'link-52');">TRANSITIONS</a></tt>    <tt class="py-op">=</tt> <tt class="py-number">0x02</tt> </tt>
+<a name="L771"></a><tt class="py-lineno"> 771</tt>  <tt class="py-line">    <tt id="link-159" class="py-name"><a title="VisionEgg.FlowControl.Controller.ONCE
+VisionEgg.FlowControl.ONCE" class="py-name" href="#" onclick="return doclink('link-159', 'ONCE', 'link-51');">ONCE</a></tt>           <tt class="py-op">=</tt> <tt class="py-number">0x04</tt> </tt>
+<a name="L772"></a><tt class="py-lineno"> 772</tt>  <tt class="py-line">    <tt id="link-160" class="py-name"><a title="VisionEgg.FlowControl.Controller.NOT_DURING_GO
+VisionEgg.FlowControl.NOT_DURING_GO" class="py-name" href="#" onclick="return doclink('link-160', 'NOT_DURING_GO', 'link-56');">NOT_DURING_GO</a></tt>  <tt class="py-op">=</tt> <tt class="py-number">0x08</tt> </tt>
+<a name="L773"></a><tt class="py-lineno"> 773</tt>  <tt class="py-line">    <tt id="link-161" class="py-name"><a title="VisionEgg.FlowControl.Controller.NOT_BETWEEN_GO
+VisionEgg.FlowControl.NOT_BETWEEN_GO" class="py-name" href="#" onclick="return doclink('link-161', 'NOT_BETWEEN_GO', 'link-60');">NOT_BETWEEN_GO</a></tt> <tt class="py-op">=</tt> <tt class="py-number">0x10</tt> </tt>
+<a name="L774"></a><tt class="py-lineno"> 774</tt>  <tt class="py-line"> </tt>
+<a name="L775"></a><tt class="py-lineno"> 775</tt>  <tt class="py-line">    <tt id="link-162" class="py-name" targets="Variable VisionEgg.FlowControl.Controller.flag_dictionary=VisionEgg.FlowControl.Controller-class.html#flag_dictionary"><a title="VisionEgg.FlowControl.Controller.flag_dictionary" class="py-name" href="#" onclick="return doclink('link-162', 'flag_dictionary', 'link-162');">flag_dictionary</a></tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> </tt>
+<a name="L776"></a><tt class="py-lineno"> 776</tt>  <tt class="py-line">        <tt class="py-string">'TIME_INDEPENDENT'</tt>  <tt class="py-op">:</tt> <tt id="link-163" class="py-name"><a title="VisionEgg.FlowControl.Controller.TIME_INDEPENDENT
+VisionEgg.FlowControl.TIME_INDEPENDENT" class="py-name" href="#" onclick="return doclink('link-163', 'TIME_INDEPENDENT', 'link-151');">TIME_INDEPENDENT</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L777"></a><tt class="py-lineno"> 777</tt>  <tt class="py-line">        <tt class="py-string">'TIME_SEC_ABSOLUTE'</tt> <tt class="py-op">:</tt> <tt id="link-164" class="py-name"><a title="VisionEgg.FlowControl.Controller.TIME_SEC_ABSOLUTE
+VisionEgg.FlowControl.TIME_SEC_ABSOLUTE" class="py-name" href="#" onclick="return doclink('link-164', 'TIME_SEC_ABSOLUTE', 'link-54');">TIME_SEC_ABSOLUTE</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L778"></a><tt class="py-lineno"> 778</tt>  <tt class="py-line">        <tt class="py-string">'TIME_SEC_SINCE_GO'</tt> <tt class="py-op">:</tt> <tt id="link-165" class="py-name"><a title="VisionEgg.FlowControl.Controller.TIME_SEC_SINCE_GO
+VisionEgg.FlowControl.TIME_SEC_SINCE_GO" class="py-name" href="#" onclick="return doclink('link-165', 'TIME_SEC_SINCE_GO', 'link-57');">TIME_SEC_SINCE_GO</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L779"></a><tt class="py-lineno"> 779</tt>  <tt class="py-line">        <tt class="py-string">'FRAMES_ABSOLUTE'</tt>   <tt class="py-op">:</tt> <tt id="link-166" class="py-name"><a title="VisionEgg.FlowControl.Controller.FRAMES_ABSOLUTE
+VisionEgg.FlowControl.FRAMES_ABSOLUTE" class="py-name" href="#" onclick="return doclink('link-166', 'FRAMES_ABSOLUTE', 'link-45');">FRAMES_ABSOLUTE</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L780"></a><tt class="py-lineno"> 780</tt>  <tt class="py-line">        <tt class="py-string">'FRAMES_SINCE_GO'</tt>   <tt class="py-op">:</tt> <tt id="link-167" class="py-name"><a title="VisionEgg.FlowControl.Controller.FRAMES_SINCE_GO
+VisionEgg.FlowControl.FRAMES_SINCE_GO" class="py-name" href="#" onclick="return doclink('link-167', 'FRAMES_SINCE_GO', 'link-44');">FRAMES_SINCE_GO</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L781"></a><tt class="py-lineno"> 781</tt>  <tt class="py-line"> </tt>
+<a name="L782"></a><tt class="py-lineno"> 782</tt>  <tt class="py-line">        <tt class="py-string">'NEVER'</tt>             <tt class="py-op">:</tt> <tt id="link-168" class="py-name"><a title="VisionEgg.FlowControl.Controller.NEVER
+VisionEgg.FlowControl.NEVER" class="py-name" href="#" onclick="return doclink('link-168', 'NEVER', 'link-156');">NEVER</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L783"></a><tt class="py-lineno"> 783</tt>  <tt class="py-line">        <tt class="py-string">'EVERY_FRAME'</tt>       <tt class="py-op">:</tt> <tt id="link-169" class="py-name"><a title="VisionEgg.FlowControl.Controller.EVERY_FRAME
+VisionEgg.FlowControl.EVERY_FRAME" class="py-name" href="#" onclick="return doclink('link-169', 'EVERY_FRAME', 'link-53');">EVERY_FRAME</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L784"></a><tt class="py-lineno"> 784</tt>  <tt class="py-line">        <tt class="py-string">'TRANSITIONS'</tt>       <tt class="py-op">:</tt> <tt id="link-170" class="py-name"><a title="VisionEgg.FlowControl.Controller.TRANSITIONS
+VisionEgg.FlowControl.TRANSITIONS" class="py-name" href="#" onclick="return doclink('link-170', 'TRANSITIONS', 'link-52');">TRANSITIONS</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L785"></a><tt class="py-lineno"> 785</tt>  <tt class="py-line">        <tt class="py-string">'ONCE'</tt>              <tt class="py-op">:</tt> <tt id="link-171" class="py-name"><a title="VisionEgg.FlowControl.Controller.ONCE
+VisionEgg.FlowControl.ONCE" class="py-name" href="#" onclick="return doclink('link-171', 'ONCE', 'link-51');">ONCE</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L786"></a><tt class="py-lineno"> 786</tt>  <tt class="py-line">        <tt class="py-string">'NOT_DURING_GO'</tt>     <tt class="py-op">:</tt> <tt id="link-172" class="py-name"><a title="VisionEgg.FlowControl.Controller.NOT_DURING_GO
+VisionEgg.FlowControl.NOT_DURING_GO" class="py-name" href="#" onclick="return doclink('link-172', 'NOT_DURING_GO', 'link-56');">NOT_DURING_GO</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L787"></a><tt class="py-lineno"> 787</tt>  <tt class="py-line">        <tt class="py-string">'NOT_BETWEEN_GO'</tt>    <tt class="py-op">:</tt> <tt id="link-173" class="py-name"><a title="VisionEgg.FlowControl.Controller.NOT_BETWEEN_GO
+VisionEgg.FlowControl.NOT_BETWEEN_GO" class="py-name" href="#" onclick="return doclink('link-173', 'NOT_BETWEEN_GO', 'link-60');">NOT_BETWEEN_GO</a></tt><tt class="py-op">}</tt> </tt>
+<a name="L788"></a><tt class="py-lineno"> 788</tt>  <tt class="py-line"> </tt>
+<a name="Controller.__init__"></a><div id="Controller.__init__-def"><a name="L789"></a><tt class="py-lineno"> 789</tt> <a class="py-toggle" href="#" id="Controller.__init__-toggle" onclick="return toggle('Controller.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.FlowControl.Controller-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> </tt>
+<a name="L790"></a><tt class="py-lineno"> 790</tt>  <tt class="py-line">                 <tt class="py-param">eval_frequency</tt> <tt class="py-op">=</tt> <tt id="link-174" class="py-name"><a title="VisionEgg.FlowControl.Controller.EVERY_FRAME
+VisionEgg.FlowControl.EVERY_FRAME" class="py-name" href="#" onclick="return doclink('link-174', 'EVERY_FRAME', 'link-53');">EVERY_FRAME</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L791"></a><tt class="py-lineno"> 791</tt>  <tt class="py-line">                 <tt class="py-param">temporal_variables</tt> <tt class="py-op">=</tt> <tt id="link-175" class="py-name"><a title="VisionEgg.FlowControl.Controller.TIME_SEC_SINCE_GO
+VisionEgg.FlowControl.TIME_SEC_SINCE_GO" class="py-name" href="#" onclick="return doclink('link-175', 'TIME_SEC_SINCE_GO', 'link-57');">TIME_SEC_SINCE_GO</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L792"></a><tt class="py-lineno"> 792</tt>  <tt class="py-line">                 <tt class="py-param">return_type</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Controller.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Controller.__init__-expanded"><a name="L793"></a><tt class="py-lineno"> 793</tt>  <tt class="py-line">        <tt class="py-docstring">"""Create instance of Controller.</tt> </tt>
+<a name="L794"></a><tt class="py-lineno"> 794</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L795"></a><tt class="py-lineno"> 795</tt>  <tt class="py-line"><tt class="py-docstring">        Arguments:</tt> </tt>
+<a name="L796"></a><tt class="py-lineno"> 796</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L797"></a><tt class="py-lineno"> 797</tt>  <tt class="py-line"><tt class="py-docstring">        eval_frequency -- Int, bitwise "or" of flags</tt> </tt>
+<a name="L798"></a><tt class="py-lineno"> 798</tt>  <tt class="py-line"><tt class="py-docstring">        temporal_variables -- Int, bitwise "or" of flags</tt> </tt>
+<a name="L799"></a><tt class="py-lineno"> 799</tt>  <tt class="py-line"><tt class="py-docstring">        return_type -- Set to type() of the parameter under control</tt> </tt>
+<a name="L800"></a><tt class="py-lineno"> 800</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L801"></a><tt class="py-lineno"> 801</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L802"></a><tt class="py-lineno"> 802</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">return_type</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> <tt class="py-comment"># Can be types.NoneType, but not None!</tt> </tt>
+<a name="L803"></a><tt class="py-lineno"> 803</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">"Must set argument 'return_type' in Controller."</tt><tt class="py-op">)</tt> </tt>
+<a name="L804"></a><tt class="py-lineno"> 804</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-176" class="py-name" targets="Function VisionEgg.ParameterTypes.is_parameter_type_def()=VisionEgg.ParameterTypes-module.html#is_parameter_type_def"><a title="VisionEgg.ParameterTypes.is_parameter_type_def" class="py-name" href="#" onclick="return doclink('link-176', 'is_paramete [...]
+<a name="L805"></a><tt class="py-lineno"> 805</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">return_type</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-name">types</tt><tt class="py-op">.</tt><tt class="py-name">TypeType</tt><tt class="py-op">:</tt> </tt>
+<a name="L806"></a><tt class="py-lineno"> 806</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> <tt class="py-name">TypeError</tt><tt class="py-op">(</tt><tt class="py-string">"Argument 'return_type' in Controller must be a VisionEgg parameter type definition.  Hint: use VisionEgg.ParameterTypes.get_type() to get the type of your value"</tt><tt class="py-op">)</tt> </tt>
+<a name="L807"></a><tt class="py-lineno"> 807</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">TypeError</tt><tt class="py-op">(</tt><tt class="py-string">"Argument 'return_type' in Controller must be a VisionEgg parameter type definition"</tt><tt class="py-op">)</tt> </tt>
+<a name="L808"></a><tt class="py-lineno"> 808</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">return_type</tt> <tt class="py-op">=</tt> <tt class="py-name">return_type</tt> </tt>
+<a name="L809"></a><tt class="py-lineno"> 809</tt>  <tt class="py-line"> </tt>
+<a name="L810"></a><tt class="py-lineno"> 810</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">temporal_variables</tt> <tt class="py-op">=</tt> <tt class="py-name">temporal_variables</tt> </tt>
+<a name="L811"></a><tt class="py-lineno"> 811</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">eval_frequency</tt> <tt class="py-op">=</tt> <tt class="py-name">eval_frequency</tt> </tt>
+</div><a name="L812"></a><tt class="py-lineno"> 812</tt>  <tt class="py-line"> </tt>
+<a name="Controller.evaluate_now"></a><div id="Controller.evaluate_now-def"><a name="L813"></a><tt class="py-lineno"> 813</tt> <a class="py-toggle" href="#" id="Controller.evaluate_now-toggle" onclick="return toggle('Controller.evaluate_now');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.FlowControl.Controller-class.html#evaluate_now">evaluate_now</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt c [...]
+</div><div id="Controller.evaluate_now-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Controller.evaluate_now-expanded"><a name="L814"></a><tt class="py-lineno"> 814</tt>  <tt class="py-line">        <tt class="py-docstring">"""Call this after updating the values of a controller if it's not evaluated EVERY_FRAME."""</tt> </tt>
+<a name="L815"></a><tt class="py-lineno"> 815</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">eval_frequency</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">eval_frequency</tt> <tt class="py-op">|</tt> <tt id="link-177" class="py-name"><a title="VisionEgg.FlowControl.Controller.ONCE
+VisionEgg.FlowControl.ONCE" class="py-name" href="#" onclick="return doclink('link-177', 'ONCE', 'link-51');">ONCE</a></tt> </tt>
+</div><a name="L816"></a><tt class="py-lineno"> 816</tt>  <tt class="py-line"> </tt>
+<a name="Controller.set_eval_frequency"></a><div id="Controller.set_eval_frequency-def"><a name="L817"></a><tt class="py-lineno"> 817</tt> <a class="py-toggle" href="#" id="Controller.set_eval_frequency-toggle" onclick="return toggle('Controller.set_eval_frequency');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.FlowControl.Controller-class.html#set_eval_frequency">set_eval_frequency</a><tt class="py-op">(</tt><tt class="py-param">se [...]
+</div><div id="Controller.set_eval_frequency-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Controller.set_eval_frequency-expanded"><a name="L818"></a><tt class="py-lineno"> 818</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">eval_frequency</tt> <tt class="py-op">=</tt> <tt class="py-name">eval_frequency</tt> </tt>
+</div><a name="L819"></a><tt class="py-lineno"> 819</tt>  <tt class="py-line"> </tt>
+<a name="Controller.returns_type"></a><div id="Controller.returns_type-def"><a name="L820"></a><tt class="py-lineno"> 820</tt> <a class="py-toggle" href="#" id="Controller.returns_type-toggle" onclick="return toggle('Controller.returns_type');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.FlowControl.Controller-class.html#returns_type">returns_type</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt c [...]
+</div><div id="Controller.returns_type-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Controller.returns_type-expanded"><a name="L821"></a><tt class="py-lineno"> 821</tt>  <tt class="py-line">        <tt class="py-docstring">"""Called by Presentation. Get the return type of this controller."""</tt> </tt>
+<a name="L822"></a><tt class="py-lineno"> 822</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">return_type</tt> </tt>
+</div><a name="L823"></a><tt class="py-lineno"> 823</tt>  <tt class="py-line"> </tt>
+<a name="Controller.during_go_eval"></a><div id="Controller.during_go_eval-def"><a name="L824"></a><tt class="py-lineno"> 824</tt> <a class="py-toggle" href="#" id="Controller.during_go_eval-toggle" onclick="return toggle('Controller.during_go_eval');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.FlowControl.Controller-class.html#during_go_eval">during_go_eval</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op" [...]
+</div><div id="Controller.during_go_eval-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Controller.during_go_eval-expanded"><a name="L825"></a><tt class="py-lineno"> 825</tt>  <tt class="py-line">        <tt class="py-docstring">"""Called by Presentation. Evaluate during the main 'go' loop.</tt> </tt>
+<a name="L826"></a><tt class="py-lineno"> 826</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L827"></a><tt class="py-lineno"> 827</tt>  <tt class="py-line"><tt class="py-docstring">        Override this method in subclasses."""</tt> </tt>
+<a name="L828"></a><tt class="py-lineno"> 828</tt>  <tt class="py-line">        <tt class="py-keyword">raise</tt> <tt class="py-name">RuntimeError</tt><tt class="py-op">(</tt><tt class="py-string">"%s: Definition of during_go_eval() in abstract base class Contoller must be overriden."</tt><tt class="py-op">%</tt><tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">,</tt><tt class="py-op">)</tt>< [...]
+</div><a name="L829"></a><tt class="py-lineno"> 829</tt>  <tt class="py-line"> </tt>
+<a name="Controller.between_go_eval"></a><div id="Controller.between_go_eval-def"><a name="L830"></a><tt class="py-lineno"> 830</tt> <a class="py-toggle" href="#" id="Controller.between_go_eval-toggle" onclick="return toggle('Controller.between_go_eval');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.FlowControl.Controller-class.html#between_go_eval">between_go_eval</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class=" [...]
+</div><div id="Controller.between_go_eval-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Controller.between_go_eval-expanded"><a name="L831"></a><tt class="py-lineno"> 831</tt>  <tt class="py-line">        <tt class="py-docstring">"""Called by Presentation. Evaluate between runs of the main 'go' loop.</tt> </tt>
+<a name="L832"></a><tt class="py-lineno"> 832</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L833"></a><tt class="py-lineno"> 833</tt>  <tt class="py-line"><tt class="py-docstring">        Override this method in subclasses."""</tt> </tt>
+<a name="L834"></a><tt class="py-lineno"> 834</tt>  <tt class="py-line">        <tt class="py-keyword">raise</tt> <tt class="py-name">RuntimeError</tt><tt class="py-op">(</tt><tt class="py-string">"%s: Definition of between_go_eval() in abstract base class Controller must be overriden."</tt><tt class="py-op">%</tt><tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">,</tt><tt class="py-op">)</tt [...]
+</div><a name="L835"></a><tt class="py-lineno"> 835</tt>  <tt class="py-line"> </tt>
+<a name="Controller._test_self"></a><div id="Controller._test_self-def"><a name="L836"></a><tt class="py-lineno"> 836</tt> <a class="py-toggle" href="#" id="Controller._test_self-toggle" onclick="return toggle('Controller._test_self');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.FlowControl.Controller-class.html#_test_self">_test_self</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt><tt class="py-par [...]
+</div><div id="Controller._test_self-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Controller._test_self-expanded"><a name="L837"></a><tt class="py-lineno"> 837</tt>  <tt class="py-line">        <tt class="py-docstring">"""Test whether a controller works.</tt> </tt>
+<a name="L838"></a><tt class="py-lineno"> 838</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L839"></a><tt class="py-lineno"> 839</tt>  <tt class="py-line"><tt class="py-docstring">        This method performs everything the Presentation go() or</tt> </tt>
+<a name="L840"></a><tt class="py-lineno"> 840</tt>  <tt class="py-line"><tt class="py-docstring">        run_forever() methods do when calling controllers, except that</tt> </tt>
+<a name="L841"></a><tt class="py-lineno"> 841</tt>  <tt class="py-line"><tt class="py-docstring">        the temporal variables are set to -1 and that the return value</tt> </tt>
+<a name="L842"></a><tt class="py-lineno"> 842</tt>  <tt class="py-line"><tt class="py-docstring">        is not used to set parameters."""</tt> </tt>
+<a name="L843"></a><tt class="py-lineno"> 843</tt>  <tt class="py-line"> </tt>
+<a name="L844"></a><tt class="py-lineno"> 844</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">temporal_variables</tt> <tt class="py-op">&</tt> <tt id="link-178" class="py-name"><a title="VisionEgg.FlowControl.Controller.TIME_SEC_ABSOLUTE
+VisionEgg.FlowControl.TIME_SEC_ABSOLUTE" class="py-name" href="#" onclick="return doclink('link-178', 'TIME_SEC_ABSOLUTE', 'link-54');">TIME_SEC_ABSOLUTE</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L845"></a><tt class="py-lineno"> 845</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">time_sec_absolute</tt> <tt class="py-op">=</tt> <tt class="py-op">-</tt><tt class="py-number">1.0</tt> </tt>
+<a name="L846"></a><tt class="py-lineno"> 846</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">temporal_variables</tt> <tt class="py-op">&</tt> <tt id="link-179" class="py-name"><a title="VisionEgg.FlowControl.Controller.FRAMES_ABSOLUTE
+VisionEgg.FlowControl.FRAMES_ABSOLUTE" class="py-name" href="#" onclick="return doclink('link-179', 'FRAMES_ABSOLUTE', 'link-45');">FRAMES_ABSOLUTE</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L847"></a><tt class="py-lineno"> 847</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">frames_absolute</tt> <tt class="py-op">=</tt> <tt class="py-op">-</tt><tt class="py-number">1</tt> </tt>
+<a name="L848"></a><tt class="py-lineno"> 848</tt>  <tt class="py-line"> </tt>
+<a name="L849"></a><tt class="py-lineno"> 849</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">go_started</tt><tt class="py-op">:</tt> </tt>
+<a name="L850"></a><tt class="py-lineno"> 850</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">eval_frequency</tt> <tt class="py-op">&</tt> <tt id="link-180" class="py-name"><a title="VisionEgg.FlowControl.Controller.NOT_DURING_GO
+VisionEgg.FlowControl.NOT_DURING_GO" class="py-name" href="#" onclick="return doclink('link-180', 'NOT_DURING_GO', 'link-56');">NOT_DURING_GO</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L851"></a><tt class="py-lineno"> 851</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">temporal_variables</tt> <tt class="py-op">&</tt> <tt id="link-181" class="py-name"><a title="VisionEgg.FlowControl.Controller.TIME_SEC_SINCE_GO
+VisionEgg.FlowControl.TIME_SEC_SINCE_GO" class="py-name" href="#" onclick="return doclink('link-181', 'TIME_SEC_SINCE_GO', 'link-57');">TIME_SEC_SINCE_GO</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L852"></a><tt class="py-lineno"> 852</tt>  <tt class="py-line">                    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">time_sec_since_go</tt> <tt class="py-op">=</tt> <tt class="py-op">-</tt><tt class="py-number">1.0</tt> </tt>
+<a name="L853"></a><tt class="py-lineno"> 853</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">temporal_variables</tt> <tt class="py-op">&</tt> <tt id="link-182" class="py-name"><a title="VisionEgg.FlowControl.Controller.FRAMES_SINCE_GO
+VisionEgg.FlowControl.FRAMES_SINCE_GO" class="py-name" href="#" onclick="return doclink('link-182', 'FRAMES_SINCE_GO', 'link-44');">FRAMES_SINCE_GO</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L854"></a><tt class="py-lineno"> 854</tt>  <tt class="py-line">                    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">frames_since_go</tt> <tt class="py-op">=</tt> <tt class="py-op">-</tt><tt class="py-number">1</tt> </tt>
+<a name="L855"></a><tt class="py-lineno"> 855</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-183" class="py-name"><a title="VisionEgg.DaqKeyboard.KeyboardTriggerInController.during_go_eval
+VisionEgg.DaqLPT.LPTTriggerInController.during_go_eval
+VisionEgg.DaqLPT.LPTTriggerOutController.during_go_eval
+VisionEgg.FlowControl.ConstantController.during_go_eval
+VisionEgg.FlowControl.Controller.during_go_eval
+VisionEgg.FlowControl.EncapsulatedController.during_go_eval
+VisionEgg.FlowControl.EvalStringController.during_go_eval
+VisionEgg.FlowControl.ExecStringController.during_go_eval
+VisionEgg.FlowControl.FunctionController.during_go_eval
+VisionEgg.PyroApps.MouseTargetServer.MousePositionController.during_go_eval
+VisionEgg.PyroApps.MouseTargetServer.TargetOrientationController.during_go_eval
+VisionEgg.PyroApps.MouseTargetServer.TargetPositionController.during_go_eval
+VisionEgg.PyroHelpers.PyroListenController.during_go_eval
+VisionEgg.ResponseControl.KeyboardResponseController.during_go_eval
+VisionEgg.ResponseControl.ResponseController.during_go_eval
+VisionEgg.TCPController.SocketListenController.during_go_eval" class="py-name" href="#" onclick="return doclink('link-183', 'during_go_eval', 'link-59');">during_go_eval</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L856"></a><tt class="py-lineno"> 856</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L857"></a><tt class="py-lineno"> 857</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">eval_frequency</tt> <tt class="py-op">&</tt> <tt id="link-184" class="py-name"><a title="VisionEgg.FlowControl.Controller.NOT_BETWEEN_GO
+VisionEgg.FlowControl.NOT_BETWEEN_GO" class="py-name" href="#" onclick="return doclink('link-184', 'NOT_BETWEEN_GO', 'link-60');">NOT_BETWEEN_GO</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L858"></a><tt class="py-lineno"> 858</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">temporal_variables</tt> <tt class="py-op">&</tt> <tt id="link-185" class="py-name"><a title="VisionEgg.FlowControl.Controller.TIME_SEC_SINCE_GO
+VisionEgg.FlowControl.TIME_SEC_SINCE_GO" class="py-name" href="#" onclick="return doclink('link-185', 'TIME_SEC_SINCE_GO', 'link-57');">TIME_SEC_SINCE_GO</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L859"></a><tt class="py-lineno"> 859</tt>  <tt class="py-line">                    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">time_sec_since_go</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L860"></a><tt class="py-lineno"> 860</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">temporal_variables</tt> <tt class="py-op">&</tt> <tt id="link-186" class="py-name"><a title="VisionEgg.FlowControl.Controller.FRAMES_SINCE_GO
+VisionEgg.FlowControl.FRAMES_SINCE_GO" class="py-name" href="#" onclick="return doclink('link-186', 'FRAMES_SINCE_GO', 'link-44');">FRAMES_SINCE_GO</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L861"></a><tt class="py-lineno"> 861</tt>  <tt class="py-line">                    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">frames_since_go</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L862"></a><tt class="py-lineno"> 862</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-187" class="py-name"><a title="VisionEgg.DaqKeyboard.KeyboardTriggerInController.between_go_eval
+VisionEgg.DaqLPT.LPTTriggerInController.between_go_eval
+VisionEgg.DaqLPT.LPTTriggerOutController.between_go_eval
+VisionEgg.FlowControl.ConstantController.between_go_eval
+VisionEgg.FlowControl.Controller.between_go_eval
+VisionEgg.FlowControl.EncapsulatedController.between_go_eval
+VisionEgg.FlowControl.EvalStringController.between_go_eval
+VisionEgg.FlowControl.ExecStringController.between_go_eval
+VisionEgg.FlowControl.FunctionController.between_go_eval
+VisionEgg.PyroHelpers.PyroListenController.between_go_eval
+VisionEgg.ResponseControl.KeyboardResponseController.between_go_eval
+VisionEgg.ResponseControl.ResponseController.between_go_eval
+VisionEgg.TCPController.SocketListenController.between_go_eval" class="py-name" href="#" onclick="return doclink('link-187', 'between_go_eval', 'link-63');">between_go_eval</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L863"></a><tt class="py-lineno"> 863</tt>  <tt class="py-line"> </tt>
+<a name="ConstantController"></a><div id="ConstantController-def"><a name="L864"></a><tt class="py-lineno"> 864</tt> <a class="py-toggle" href="#" id="ConstantController-toggle" onclick="return toggle('ConstantController');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.FlowControl.ConstantController-class.html">ConstantController</a><tt class="py-op">(</tt><tt class="py-base-class">Controller</tt><tt class="py-op">)</tt><tt class="py-o [...]
+</div><div id="ConstantController-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="ConstantController-expanded"><a name="L865"></a><tt class="py-lineno"> 865</tt>  <tt class="py-line">    <tt class="py-docstring">"""Set parameters to a constant value."""</tt> </tt>
+<a name="ConstantController.__init__"></a><div id="ConstantController.__init__-def"><a name="L866"></a><tt class="py-lineno"> 866</tt> <a class="py-toggle" href="#" id="ConstantController.__init__-toggle" onclick="return toggle('ConstantController.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.FlowControl.ConstantController-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py [...]
+<a name="L867"></a><tt class="py-lineno"> 867</tt>  <tt class="py-line">                 <tt class="py-param">during_go_value</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
+<a name="L868"></a><tt class="py-lineno"> 868</tt>  <tt class="py-line">                 <tt class="py-param">between_go_value</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
+<a name="L869"></a><tt class="py-lineno"> 869</tt>  <tt class="py-line">                 <tt class="py-op">**</tt><tt class="py-param">kw</tt> </tt>
+<a name="L870"></a><tt class="py-lineno"> 870</tt>  <tt class="py-line">                 <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ConstantController.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ConstantController.__init__-expanded"><a name="L871"></a><tt class="py-lineno"> 871</tt>  <tt class="py-line">        <tt class="py-name">kw</tt><tt class="py-op">.</tt><tt class="py-name">setdefault</tt><tt class="py-op">(</tt><tt class="py-string">'return_type'</tt><tt class="py-op">,</tt><tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-188" class [...]
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.get_type
+VisionEgg.get_type" class="py-name" href="#" onclick="return doclink('link-188', 'get_type', 'link-188');">get_type</a></tt><tt class="py-op">(</tt><tt class="py-name">during_go_value</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L872"></a><tt class="py-lineno"> 872</tt>  <tt class="py-line">        <tt class="py-name">kw</tt><tt class="py-op">.</tt><tt class="py-name">setdefault</tt><tt class="py-op">(</tt><tt class="py-string">'eval_frequency'</tt><tt class="py-op">,</tt><tt id="link-189" class="py-name"><a title="VisionEgg.FlowControl.Controller.ONCE
+VisionEgg.FlowControl.ONCE" class="py-name" href="#" onclick="return doclink('link-189', 'ONCE', 'link-51');">ONCE</a></tt> <tt class="py-op">|</tt> <tt id="link-190" class="py-name"><a title="VisionEgg.FlowControl.Controller.TRANSITIONS
+VisionEgg.FlowControl.TRANSITIONS" class="py-name" href="#" onclick="return doclink('link-190', 'TRANSITIONS', 'link-52');">TRANSITIONS</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L873"></a><tt class="py-lineno"> 873</tt>  <tt class="py-line">        <tt id="link-191" class="py-name"><a title="VisionEgg.FlowControl.Controller" class="py-name" href="#" onclick="return doclink('link-191', 'Controller', 'link-46');">Controller</a></tt><tt class="py-op">.</tt><tt id="link-192" class="py-name"><a title="VisionEgg.ClassWithParameters.__init__
+VisionEgg.Configuration.Config.__init__
+VisionEgg.Core.FixationSpot.__init__
+VisionEgg.Core.FrameTimer.__init__
+VisionEgg.Core.ModelView.__init__
+VisionEgg.Core.OrthographicProjection.__init__
+VisionEgg.Core.OrthographicProjectionNoZClip.__init__
+VisionEgg.Core.PerspectiveProjection.__init__
+VisionEgg.Core.Projection.__init__
+VisionEgg.Core.ProjectionBaseClass.__init__
+VisionEgg.Core.Screen.__init__
+VisionEgg.Core.SimplePerspectiveProjection.__init__
+VisionEgg.Core.Stimulus.__init__
+VisionEgg.Core.Viewport.__init__
+VisionEgg.Daq.Channel.__init__
+VisionEgg.Daq.DaqMode.__init__
+VisionEgg.Daq.Device.__init__
+VisionEgg.Daq.Functionality.__init__
+VisionEgg.Daq.SignalType.__init__
+VisionEgg.DaqKeyboard.KeyboardTriggerInController.__init__
+VisionEgg.DaqLPT.LPTChannel.__init__
+VisionEgg.DaqLPT.LPTDevice.__init__
+VisionEgg.DaqLPT.LPTTriggerInController.__init__
+VisionEgg.DaqLPT.LPTTriggerOutController.__init__
+VisionEgg.Deprecated.Message.__init__
+VisionEgg.Dots.DotArea2D.__init__
+VisionEgg.FlowControl.ConstantController.__init__
+VisionEgg.FlowControl.Controller.__init__
+VisionEgg.FlowControl.EncapsulatedController.__init__
+VisionEgg.FlowControl.EvalStringController.__init__
+VisionEgg.FlowControl.ExecStringController.__init__
+VisionEgg.FlowControl.FunctionController.__init__
+VisionEgg.FlowControl.Presentation.__init__
+VisionEgg.GLTrace.Wrapper.__init__
+VisionEgg.GUI.AppWindow.__init__
+VisionEgg.GUI.GetKeypressDialog.__init__
+VisionEgg.GUI.GraphicsConfigurationWindow.__init__
+VisionEgg.GUI.InfoFrame.__init__
+VisionEgg.GUI.ProgressBar.__init__
+VisionEgg.GUI.ToplevelDialog.__init__
+VisionEgg.Gratings.SinGrating2D.__init__
+VisionEgg.Gratings.SinGrating3D.__init__
+VisionEgg.MoreStimuli.Arrow.__init__
+VisionEgg.MoreStimuli.FilledCircle.__init__
+VisionEgg.MoreStimuli.Rectangle3D.__init__
+VisionEgg.MoreStimuli.Target2D.__init__
+VisionEgg.ParameterTypes.AnyOf.__init__
+VisionEgg.ParameterTypes.Instance.__init__
+VisionEgg.ParameterTypes.Sequence.__init__
+VisionEgg.ParameterTypes.SubClass.__init__
+VisionEgg.PyroApps.AST_ext.AST_Visitor.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalMetaParameters.__init__
+VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.__init__
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.__init__
+VisionEgg.PyroApps.DropinGUI.DropinMetaParameters.__init__
+VisionEgg.PyroApps.DropinServer.DropinMetaController.__init__
+VisionEgg.PyroApps.EPhysGUI.AppWindow.__init__
+VisionEgg.PyroApps.EPhysGUI.BarButton.__init__
+VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase.__init__
+VisionEgg.PyroApps.EPhysGUI.GammaFrame.__init__
+VisionEgg.PyroApps.EPhysGUI.ImageSequenceLauncher.__init__
+VisionEgg.PyroApps.EPhysGUI.Loop.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopContainedObject.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopParamDialog.__init__
+VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.__init__
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.__init__
+VisionEgg.PyroApps.EPhysServer.EPhysServer.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingMetaParameters.__init__
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.GridGUI.GridControlFrame.__init__
+VisionEgg.PyroApps.GridGUI.GridMetaParameters.__init__
+VisionEgg.PyroApps.GridServer.GridMetaController.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetMetaParameters.__init__
+VisionEgg.PyroApps.MouseTargetServer.MousePositionController.__init__
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetOrientationController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetPositionController.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.CallbackEntry.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionParameters.__init__
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingMetaParameters.__init__
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumMetaParameters.__init__
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.__init__
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.__init__
+VisionEgg.PyroApps.TargetGUI.TargetMetaParameters.__init__
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.__init__
+VisionEgg.PyroClient.PyroClient.__init__
+VisionEgg.PyroHelpers.PyroConstantController.__init__
+VisionEgg.PyroHelpers.PyroEncapsulatedController.__init__
+VisionEgg.PyroHelpers.PyroEvalStringController.__init__
+VisionEgg.PyroHelpers.PyroExecStringController.__init__
+VisionEgg.PyroHelpers.PyroListenController.__init__
+VisionEgg.PyroHelpers.PyroLocalDictController.__init__
+VisionEgg.PyroHelpers.PyroServer.__init__
+VisionEgg.QuickTime.MovieTexture.__init__
+VisionEgg.ResponseControl.KeyboardResponseController.__init__
+VisionEgg.ResponseControl.ResponseController.__init__
+VisionEgg.SphereMap.AzElGrid.__init__
+VisionEgg.SphereMap.SphereGrating.__init__
+VisionEgg.SphereMap.SphereMap.__init__
+VisionEgg.SphereMap.SphereWindow.__init__
+VisionEgg.TCPController.SocketListenController.__init__
+VisionEgg.TCPController.TCPController.__init__
+VisionEgg.TCPController.TCPServer.__init__
+VisionEgg.Text.BitmapText.__init__
+VisionEgg.Text.GlutTextBase.__init__
+VisionEgg.Text.StrokeText.__init__
+VisionEgg.Text.Text.__init__
+VisionEgg.Textures.FixationCross.__init__
+VisionEgg.Textures.Mask2D.__init__
+VisionEgg.Textures.SpinningDrum.__init__
+VisionEgg.Textures.Texture.__init__
+VisionEgg.Textures.TextureFromFile.__init__
+VisionEgg.Textures.TextureObject.__init__
+VisionEgg.Textures.TextureStimulusBaseClass.__init__
+VisionEgg.ThreeDeeMath.TransformMatrix.__init__
+VisionEgg.WrappedText.WrappedText.__init__
+VisionEgg.qtmovie.Movie.__init__
+VisionEgg.qtmovie.Rect.__init__" class="py-name" href="#" onclick="return doclink('link-192', '__init__', 'link-30');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt><tt class="py-op">**</tt><tt class="py-name">kw</tt><tt class="py-op">)</tt> </tt>
+<a name="L874"></a><tt class="py-lineno"> 874</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">return_type</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">types</tt><tt class="py-op">.</tt><tt id="link-193" class="py-name"><a title="VisionEgg.ParameterTypes.NoneType" class="py-name" href="#" onclick="return doclink('link-193', 'NoneType', 'link-35');">NoneType< [...]
+<a name="L875"></a><tt class="py-lineno"> 875</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">"Must specify during_go_value"</tt><tt class="py-op">)</tt> </tt>
+<a name="L876"></a><tt class="py-lineno"> 876</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">between_go_value</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L877"></a><tt class="py-lineno"> 877</tt>  <tt class="py-line">            <tt class="py-name">between_go_value</tt> <tt class="py-op">=</tt> <tt class="py-name">during_go_value</tt> </tt>
+<a name="L878"></a><tt class="py-lineno"> 878</tt>  <tt class="py-line">        <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-194" class="py-name"><a title="VisionEgg.ParameterTypes.assert_type
+VisionEgg.assert_type" class="py-name" href="#" onclick="return doclink('link-194', 'assert_type', 'link-39');">assert_type</a></tt><tt class="py-op">(</tt><tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-195" class="py-name"><a title="VisionEgg.ParameterTypes.get_type
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.get_type
+VisionEgg.get_type" class="py-name" href="#" onclick="return doclink('link-195', 'get_type', 'link-188');">get_type</a></tt><tt class="py-op">(</tt><tt class="py-name">during_go_value</tt><tt class="py-op">)</tt><tt class="py-op">,</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">return_type</tt><tt class="py-op">)</tt> </tt>
+<a name="L879"></a><tt class="py-lineno"> 879</tt>  <tt class="py-line">        <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-196" class="py-name"><a title="VisionEgg.ParameterTypes.assert_type
+VisionEgg.assert_type" class="py-name" href="#" onclick="return doclink('link-196', 'assert_type', 'link-39');">assert_type</a></tt><tt class="py-op">(</tt><tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-197" class="py-name"><a title="VisionEgg.ParameterTypes.get_type
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.get_type
+VisionEgg.get_type" class="py-name" href="#" onclick="return doclink('link-197', 'get_type', 'link-188');">get_type</a></tt><tt class="py-op">(</tt><tt class="py-name">between_go_value</tt><tt class="py-op">)</tt><tt class="py-op">,</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">return_type</tt><tt class="py-op">)</tt> </tt>
+<a name="L880"></a><tt class="py-lineno"> 880</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">during_go_value</tt> <tt class="py-op">=</tt> <tt class="py-name">during_go_value</tt> </tt>
+<a name="L881"></a><tt class="py-lineno"> 881</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">between_go_value</tt> <tt class="py-op">=</tt> <tt class="py-name">between_go_value</tt> </tt>
+</div><a name="L882"></a><tt class="py-lineno"> 882</tt>  <tt class="py-line"> </tt>
+<a name="ConstantController.set_during_go_value"></a><div id="ConstantController.set_during_go_value-def"><a name="L883"></a><tt class="py-lineno"> 883</tt> <a class="py-toggle" href="#" id="ConstantController.set_during_go_value-toggle" onclick="return toggle('ConstantController.set_during_go_value');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.FlowControl.ConstantController-class.html#set_during_go_value">set_during_go_value</a>< [...]
+</div><div id="ConstantController.set_during_go_value-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ConstantController.set_during_go_value-expanded"><a name="L884"></a><tt class="py-lineno"> 884</tt>  <tt class="py-line">        <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-198" class="py-name"><a title="VisionEgg.ParameterTypes.assert_type
+VisionEgg.assert_type" class="py-name" href="#" onclick="return doclink('link-198', 'assert_type', 'link-39');">assert_type</a></tt><tt class="py-op">(</tt><tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-199" class="py-name"><a title="VisionEgg.ParameterTypes.get_type
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.get_type
+VisionEgg.get_type" class="py-name" href="#" onclick="return doclink('link-199', 'get_type', 'link-188');">get_type</a></tt><tt class="py-op">(</tt><tt class="py-name">during_go_value</tt><tt class="py-op">)</tt><tt class="py-op">,</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">return_type</tt><tt class="py-op">)</tt> </tt>
+<a name="L885"></a><tt class="py-lineno"> 885</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">during_go_value</tt> <tt class="py-op">=</tt> <tt class="py-name">during_go_value</tt> </tt>
+</div><a name="L886"></a><tt class="py-lineno"> 886</tt>  <tt class="py-line"><tt class="py-comment">##        if ve_types.get_type(during_go_value) is not self.return_type:</tt> </tt>
+<a name="L887"></a><tt class="py-lineno"> 887</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">##            raise TypeError("during_go_value must be %s"%str(self.return_type))</tt> </tt>
+<a name="L888"></a><tt class="py-lineno"> 888</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">##        else:</tt> </tt>
+<a name="L889"></a><tt class="py-lineno"> 889</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">##            self.during_go_value = during_go_value</tt> </tt>
+<a name="L890"></a><tt class="py-lineno"> 890</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="ConstantController.get_during_go_value"></a><div id="ConstantController.get_during_go_value-def"><a name="L891"></a><tt class="py-lineno"> 891</tt> <a class="py-toggle" href="#" id="ConstantController.get_during_go_value-toggle" onclick="return toggle('ConstantController.get_during_go_value');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.FlowControl.ConstantController-class.html#get_during_go_value">get_during_go_value</a>< [...]
+</div><div id="ConstantController.get_during_go_value-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ConstantController.get_during_go_value-expanded"><a name="L892"></a><tt class="py-lineno"> 892</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">during_go_value</tt> </tt>
+</div><a name="L893"></a><tt class="py-lineno"> 893</tt>  <tt class="py-line"> </tt>
+<a name="ConstantController.set_between_go_value"></a><div id="ConstantController.set_between_go_value-def"><a name="L894"></a><tt class="py-lineno"> 894</tt> <a class="py-toggle" href="#" id="ConstantController.set_between_go_value-toggle" onclick="return toggle('ConstantController.set_between_go_value');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.FlowControl.ConstantController-class.html#set_between_go_value">set_between_go_valu [...]
+</div><div id="ConstantController.set_between_go_value-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ConstantController.set_between_go_value-expanded"><a name="L895"></a><tt class="py-lineno"> 895</tt>  <tt class="py-line">        <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-200" class="py-name"><a title="VisionEgg.ParameterTypes.assert_type
+VisionEgg.assert_type" class="py-name" href="#" onclick="return doclink('link-200', 'assert_type', 'link-39');">assert_type</a></tt><tt class="py-op">(</tt><tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-201" class="py-name"><a title="VisionEgg.ParameterTypes.get_type
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.get_type
+VisionEgg.get_type" class="py-name" href="#" onclick="return doclink('link-201', 'get_type', 'link-188');">get_type</a></tt><tt class="py-op">(</tt><tt class="py-name">between_go_value</tt><tt class="py-op">)</tt><tt class="py-op">,</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">return_type</tt><tt class="py-op">)</tt> </tt>
+<a name="L896"></a><tt class="py-lineno"> 896</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">between_go_value</tt> <tt class="py-op">=</tt> <tt class="py-name">between_go_value</tt> </tt>
+</div><a name="L897"></a><tt class="py-lineno"> 897</tt>  <tt class="py-line"><tt class="py-comment">##        if ve_types.get_type(between_go_value) is not self.return_type:</tt> </tt>
+<a name="L898"></a><tt class="py-lineno"> 898</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">##            raise TypeError("between_go_value must be %s"%str(self.return_type))</tt> </tt>
+<a name="L899"></a><tt class="py-lineno"> 899</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">##        else:</tt> </tt>
+<a name="L900"></a><tt class="py-lineno"> 900</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">##            self.between_go_value = between_go_value</tt> </tt>
+<a name="L901"></a><tt class="py-lineno"> 901</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="ConstantController.get_between_go_value"></a><div id="ConstantController.get_between_go_value-def"><a name="L902"></a><tt class="py-lineno"> 902</tt> <a class="py-toggle" href="#" id="ConstantController.get_between_go_value-toggle" onclick="return toggle('ConstantController.get_between_go_value');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.FlowControl.ConstantController-class.html#get_between_go_value">get_between_go_valu [...]
+</div><div id="ConstantController.get_between_go_value-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ConstantController.get_between_go_value-expanded"><a name="L903"></a><tt class="py-lineno"> 903</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">between_go_value</tt> </tt>
+</div><a name="L904"></a><tt class="py-lineno"> 904</tt>  <tt class="py-line"> </tt>
+<a name="ConstantController.during_go_eval"></a><div id="ConstantController.during_go_eval-def"><a name="L905"></a><tt class="py-lineno"> 905</tt> <a class="py-toggle" href="#" id="ConstantController.during_go_eval-toggle" onclick="return toggle('ConstantController.during_go_eval');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.FlowControl.ConstantController-class.html#during_go_eval">during_go_eval</a><tt class="py-op">(</tt><tt cla [...]
+</div><div id="ConstantController.during_go_eval-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ConstantController.during_go_eval-expanded"><a name="L906"></a><tt class="py-lineno"> 906</tt>  <tt class="py-line">        <tt class="py-docstring">"""Called by Presentation. Overrides method in Controller base class."""</tt> </tt>
+<a name="L907"></a><tt class="py-lineno"> 907</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">during_go_value</tt> </tt>
+</div><a name="L908"></a><tt class="py-lineno"> 908</tt>  <tt class="py-line"> </tt>
+<a name="ConstantController.between_go_eval"></a><div id="ConstantController.between_go_eval-def"><a name="L909"></a><tt class="py-lineno"> 909</tt> <a class="py-toggle" href="#" id="ConstantController.between_go_eval-toggle" onclick="return toggle('ConstantController.between_go_eval');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.FlowControl.ConstantController-class.html#between_go_eval">between_go_eval</a><tt class="py-op">(</tt>< [...]
+</div><div id="ConstantController.between_go_eval-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ConstantController.between_go_eval-expanded"><a name="L910"></a><tt class="py-lineno"> 910</tt>  <tt class="py-line">        <tt class="py-docstring">"""Called by Presentation. Overrides method in Controller base class."""</tt> </tt>
+<a name="L911"></a><tt class="py-lineno"> 911</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">between_go_value</tt> </tt>
+</div></div><a name="L912"></a><tt class="py-lineno"> 912</tt>  <tt class="py-line"> </tt>
+<a name="EvalStringController"></a><div id="EvalStringController-def"><a name="L913"></a><tt class="py-lineno"> 913</tt> <a class="py-toggle" href="#" id="EvalStringController-toggle" onclick="return toggle('EvalStringController');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.FlowControl.EvalStringController-class.html">EvalStringController</a><tt class="py-op">(</tt><tt class="py-base-class">Controller</tt><tt class="py-op">)</tt><tt [...]
+</div><div id="EvalStringController-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="EvalStringController-expanded"><a name="L914"></a><tt class="py-lineno"> 914</tt>  <tt class="py-line">    <tt class="py-docstring">"""Set parameters using dynamically interpreted Python string.</tt> </tt>
+<a name="L915"></a><tt class="py-lineno"> 915</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L916"></a><tt class="py-lineno"> 916</tt>  <tt class="py-line"><tt class="py-docstring">    The string, when evaluated as Python code, becomes the value used.</tt> </tt>
+<a name="L917"></a><tt class="py-lineno"> 917</tt>  <tt class="py-line"><tt class="py-docstring">    For example, the string "1.0" would set parameter values to 1.0.</tt> </tt>
+<a name="L918"></a><tt class="py-lineno"> 918</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L919"></a><tt class="py-lineno"> 919</tt>  <tt class="py-line"><tt class="py-docstring">    To increase speed, the string is compiled to Python's bytecode</tt> </tt>
+<a name="L920"></a><tt class="py-lineno"> 920</tt>  <tt class="py-line"><tt class="py-docstring">    format.</tt> </tt>
+<a name="L921"></a><tt class="py-lineno"> 921</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L922"></a><tt class="py-lineno"> 922</tt>  <tt class="py-line"><tt class="py-docstring">    The string can make use of temporal variables, which are made</tt> </tt>
+<a name="L923"></a><tt class="py-lineno"> 923</tt>  <tt class="py-line"><tt class="py-docstring">    available depending on the controller's temporal_variables</tt> </tt>
+<a name="L924"></a><tt class="py-lineno"> 924</tt>  <tt class="py-line"><tt class="py-docstring">    attribute. Note that only the absolute temporal variables are</tt> </tt>
+<a name="L925"></a><tt class="py-lineno"> 925</tt>  <tt class="py-line"><tt class="py-docstring">    available when the go loop is not running.</tt> </tt>
+<a name="L926"></a><tt class="py-lineno"> 926</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L927"></a><tt class="py-lineno"> 927</tt>  <tt class="py-line"><tt class="py-docstring">    flag(s) present    variable  description</tt> </tt>
+<a name="L928"></a><tt class="py-lineno"> 928</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L929"></a><tt class="py-lineno"> 929</tt>  <tt class="py-line"><tt class="py-docstring">    TIME_SEC_ABSOLUTE  t_abs     seconds, continuously increasing</tt> </tt>
+<a name="L930"></a><tt class="py-lineno"> 930</tt>  <tt class="py-line"><tt class="py-docstring">    TIME_SEC_SINCE_GO  t         seconds, reset to 0.0 each go loop</tt> </tt>
+<a name="L931"></a><tt class="py-lineno"> 931</tt>  <tt class="py-line"><tt class="py-docstring">    FRAMES_ABSOLUTE    f_abs     frames, continuously increasing</tt> </tt>
+<a name="L932"></a><tt class="py-lineno"> 932</tt>  <tt class="py-line"><tt class="py-docstring">    FRAMES_SINCE_GO    f         frames, reset to 0 each go loop</tt> </tt>
+<a name="L933"></a><tt class="py-lineno"> 933</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L934"></a><tt class="py-lineno"> 934</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="EvalStringController.__init__"></a><div id="EvalStringController.__init__-def"><a name="L935"></a><tt class="py-lineno"> 935</tt> <a class="py-toggle" href="#" id="EvalStringController.__init__-toggle" onclick="return toggle('EvalStringController.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.FlowControl.EvalStringController-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt [...]
+<a name="L936"></a><tt class="py-lineno"> 936</tt>  <tt class="py-line">                 <tt class="py-param">during_go_eval_string</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
+<a name="L937"></a><tt class="py-lineno"> 937</tt>  <tt class="py-line">                 <tt class="py-param">between_go_eval_string</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
+<a name="L938"></a><tt class="py-lineno"> 938</tt>  <tt class="py-line">                 <tt class="py-op">**</tt><tt class="py-param">kw</tt> </tt>
+<a name="L939"></a><tt class="py-lineno"> 939</tt>  <tt class="py-line">                 <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="EvalStringController.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="EvalStringController.__init__-expanded"><a name="L940"></a><tt class="py-lineno"> 940</tt>  <tt class="py-line">        <tt class="py-keyword">import</tt> <tt id="link-202" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-202', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-203" class="py-name [...]
+<a name="L941"></a><tt class="py-lineno"> 941</tt>  <tt class="py-line"> </tt>
+<a name="L942"></a><tt class="py-lineno"> 942</tt>  <tt class="py-line">        <tt class="py-comment"># Create a namespace for eval_strings to use</tt> </tt>
+<a name="L943"></a><tt class="py-lineno"> 943</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">eval_globals</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L944"></a><tt class="py-lineno"> 944</tt>  <tt class="py-line"> </tt>
+<a name="L945"></a><tt class="py-lineno"> 945</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">during_go_eval_string</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L946"></a><tt class="py-lineno"> 946</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">"'during_go_eval_string' is a required argument"</tt><tt class="py-op">)</tt> </tt>
+<a name="L947"></a><tt class="py-lineno"> 947</tt>  <tt class="py-line"> </tt>
+<a name="L948"></a><tt class="py-lineno"> 948</tt>  <tt class="py-line">        <tt class="py-comment"># Make Numeric and math modules available</tt> </tt>
+<a name="L949"></a><tt class="py-lineno"> 949</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">eval_globals</tt><tt class="py-op">[</tt><tt class="py-string">'Numeric'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">Numeric</tt> </tt>
+<a name="L950"></a><tt class="py-lineno"> 950</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">eval_globals</tt><tt class="py-op">[</tt><tt class="py-string">'math'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">math</tt> </tt>
+<a name="L951"></a><tt class="py-lineno"> 951</tt>  <tt class="py-line">        <tt class="py-comment"># Make Numeric and math modules available without module name</tt> </tt>
+<a name="L952"></a><tt class="py-lineno"> 952</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">for</tt> <tt class="py-name">key</tt> <tt class="py-keyword">in</tt> <tt class="py-name">dir</tt><tt class="py-op">(</tt><tt class="py-name">Numeric</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L953"></a><tt class="py-lineno"> 953</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">eval_globals</tt><tt class="py-op">[</tt><tt class="py-name">key</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">getattr</tt><tt class="py-op">(</tt><tt class="py-name">Numeric</tt><tt class="py-op">,</tt><tt class="py-name">key</tt><tt class="py-op">)</tt> </tt>
+<a name="L954"></a><tt class="py-lineno"> 954</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">key</tt> <tt class="py-keyword">in</tt> <tt class="py-name">dir</tt><tt class="py-op">(</tt><tt class="py-name">math</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L955"></a><tt class="py-lineno"> 955</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">eval_globals</tt><tt class="py-op">[</tt><tt class="py-name">key</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">getattr</tt><tt class="py-op">(</tt><tt class="py-name">math</tt><tt class="py-op">,</tt><tt class="py-name">key</tt><tt class="py-op">)</tt> </tt>
+<a name="L956"></a><tt class="py-lineno"> 956</tt>  <tt class="py-line"> </tt>
+<a name="L957"></a><tt class="py-lineno"> 957</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">during_go_eval_code</tt> <tt class="py-op">=</tt> <tt class="py-name">compile</tt><tt class="py-op">(</tt><tt class="py-name">during_go_eval_string</tt><tt class="py-op">,</tt><tt class="py-string">'<string>'</tt><tt class="py-op">,</tt><tt class="py-string">'eval'</tt><tt class="py-op">)</tt> </tt>
+<a name="L958"></a><tt class="py-lineno"> 958</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">during_go_eval_string</tt> <tt class="py-op">=</tt> <tt class="py-name">during_go_eval_string</tt> </tt>
+<a name="L959"></a><tt class="py-lineno"> 959</tt>  <tt class="py-line">        <tt class="py-name">not_between_go</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L960"></a><tt class="py-lineno"> 960</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">between_go_eval_string</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L961"></a><tt class="py-lineno"> 961</tt>  <tt class="py-line">            <tt class="py-name">not_between_go</tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L962"></a><tt class="py-lineno"> 962</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L963"></a><tt class="py-lineno"> 963</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">between_go_eval_code</tt> <tt class="py-op">=</tt> <tt class="py-name">compile</tt><tt class="py-op">(</tt><tt class="py-name">between_go_eval_string</tt><tt class="py-op">,</tt><tt class="py-string">'<string>'</tt><tt class="py-op">,</tt><tt class="py-string">'eval'</tt><tt class="py-op">)</tt> </tt>
+<a name="L964"></a><tt class="py-lineno"> 964</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">between_go_eval_string</tt> <tt class="py-op">=</tt> <tt class="py-name">between_go_eval_string</tt> </tt>
+<a name="L965"></a><tt class="py-lineno"> 965</tt>  <tt class="py-line"> </tt>
+<a name="L966"></a><tt class="py-lineno"> 966</tt>  <tt class="py-line">        <tt class="py-comment"># Check to make sure return_type is set</tt> </tt>
+<a name="L967"></a><tt class="py-lineno"> 967</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">set_return_type</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L968"></a><tt class="py-lineno"> 968</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">kw</tt><tt class="py-op">.</tt><tt class="py-name">has_key</tt><tt class="py-op">(</tt><tt class="py-string">'return_type'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L969"></a><tt class="py-lineno"> 969</tt>  <tt class="py-line">            <tt class="py-name">set_return_type</tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L970"></a><tt class="py-lineno"> 970</tt>  <tt class="py-line">            <tt class="py-name">kw</tt><tt class="py-op">[</tt><tt class="py-string">'return_type'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">types</tt><tt class="py-op">.</tt><tt id="link-204" class="py-name"><a title="VisionEgg.ParameterTypes.NoneType" class="py-name" href="#" onclick="return doclink('link-204', 'NoneType', 'link-35');">NoneType</a></tt> </tt>
+<a name="L971"></a><tt class="py-lineno"> 971</tt>  <tt class="py-line"> </tt>
+<a name="L972"></a><tt class="py-lineno"> 972</tt>  <tt class="py-line">        <tt class="py-comment"># Call base class __init__</tt> </tt>
+<a name="L973"></a><tt class="py-lineno"> 973</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt id="link-205" class="py-name"><a title="VisionEgg.FlowControl.Controller" class="py-name" href="#" onclick="return doclink('link-205', 'Controller', 'link-46');">Controller</a></tt><tt class="py-op">.</tt><tt id="link-206" class="py-name"><a title="VisionEgg.ClassWithParameters.__init__
+VisionEgg.Configuration.Config.__init__
+VisionEgg.Core.FixationSpot.__init__
+VisionEgg.Core.FrameTimer.__init__
+VisionEgg.Core.ModelView.__init__
+VisionEgg.Core.OrthographicProjection.__init__
+VisionEgg.Core.OrthographicProjectionNoZClip.__init__
+VisionEgg.Core.PerspectiveProjection.__init__
+VisionEgg.Core.Projection.__init__
+VisionEgg.Core.ProjectionBaseClass.__init__
+VisionEgg.Core.Screen.__init__
+VisionEgg.Core.SimplePerspectiveProjection.__init__
+VisionEgg.Core.Stimulus.__init__
+VisionEgg.Core.Viewport.__init__
+VisionEgg.Daq.Channel.__init__
+VisionEgg.Daq.DaqMode.__init__
+VisionEgg.Daq.Device.__init__
+VisionEgg.Daq.Functionality.__init__
+VisionEgg.Daq.SignalType.__init__
+VisionEgg.DaqKeyboard.KeyboardTriggerInController.__init__
+VisionEgg.DaqLPT.LPTChannel.__init__
+VisionEgg.DaqLPT.LPTDevice.__init__
+VisionEgg.DaqLPT.LPTTriggerInController.__init__
+VisionEgg.DaqLPT.LPTTriggerOutController.__init__
+VisionEgg.Deprecated.Message.__init__
+VisionEgg.Dots.DotArea2D.__init__
+VisionEgg.FlowControl.ConstantController.__init__
+VisionEgg.FlowControl.Controller.__init__
+VisionEgg.FlowControl.EncapsulatedController.__init__
+VisionEgg.FlowControl.EvalStringController.__init__
+VisionEgg.FlowControl.ExecStringController.__init__
+VisionEgg.FlowControl.FunctionController.__init__
+VisionEgg.FlowControl.Presentation.__init__
+VisionEgg.GLTrace.Wrapper.__init__
+VisionEgg.GUI.AppWindow.__init__
+VisionEgg.GUI.GetKeypressDialog.__init__
+VisionEgg.GUI.GraphicsConfigurationWindow.__init__
+VisionEgg.GUI.InfoFrame.__init__
+VisionEgg.GUI.ProgressBar.__init__
+VisionEgg.GUI.ToplevelDialog.__init__
+VisionEgg.Gratings.SinGrating2D.__init__
+VisionEgg.Gratings.SinGrating3D.__init__
+VisionEgg.MoreStimuli.Arrow.__init__
+VisionEgg.MoreStimuli.FilledCircle.__init__
+VisionEgg.MoreStimuli.Rectangle3D.__init__
+VisionEgg.MoreStimuli.Target2D.__init__
+VisionEgg.ParameterTypes.AnyOf.__init__
+VisionEgg.ParameterTypes.Instance.__init__
+VisionEgg.ParameterTypes.Sequence.__init__
+VisionEgg.ParameterTypes.SubClass.__init__
+VisionEgg.PyroApps.AST_ext.AST_Visitor.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalMetaParameters.__init__
+VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.__init__
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.__init__
+VisionEgg.PyroApps.DropinGUI.DropinMetaParameters.__init__
+VisionEgg.PyroApps.DropinServer.DropinMetaController.__init__
+VisionEgg.PyroApps.EPhysGUI.AppWindow.__init__
+VisionEgg.PyroApps.EPhysGUI.BarButton.__init__
+VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase.__init__
+VisionEgg.PyroApps.EPhysGUI.GammaFrame.__init__
+VisionEgg.PyroApps.EPhysGUI.ImageSequenceLauncher.__init__
+VisionEgg.PyroApps.EPhysGUI.Loop.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopContainedObject.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopParamDialog.__init__
+VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.__init__
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.__init__
+VisionEgg.PyroApps.EPhysServer.EPhysServer.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingMetaParameters.__init__
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.GridGUI.GridControlFrame.__init__
+VisionEgg.PyroApps.GridGUI.GridMetaParameters.__init__
+VisionEgg.PyroApps.GridServer.GridMetaController.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetMetaParameters.__init__
+VisionEgg.PyroApps.MouseTargetServer.MousePositionController.__init__
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetOrientationController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetPositionController.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.CallbackEntry.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionParameters.__init__
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingMetaParameters.__init__
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumMetaParameters.__init__
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.__init__
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.__init__
+VisionEgg.PyroApps.TargetGUI.TargetMetaParameters.__init__
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.__init__
+VisionEgg.PyroClient.PyroClient.__init__
+VisionEgg.PyroHelpers.PyroConstantController.__init__
+VisionEgg.PyroHelpers.PyroEncapsulatedController.__init__
+VisionEgg.PyroHelpers.PyroEvalStringController.__init__
+VisionEgg.PyroHelpers.PyroExecStringController.__init__
+VisionEgg.PyroHelpers.PyroListenController.__init__
+VisionEgg.PyroHelpers.PyroLocalDictController.__init__
+VisionEgg.PyroHelpers.PyroServer.__init__
+VisionEgg.QuickTime.MovieTexture.__init__
+VisionEgg.ResponseControl.KeyboardResponseController.__init__
+VisionEgg.ResponseControl.ResponseController.__init__
+VisionEgg.SphereMap.AzElGrid.__init__
+VisionEgg.SphereMap.SphereGrating.__init__
+VisionEgg.SphereMap.SphereMap.__init__
+VisionEgg.SphereMap.SphereWindow.__init__
+VisionEgg.TCPController.SocketListenController.__init__
+VisionEgg.TCPController.TCPController.__init__
+VisionEgg.TCPController.TCPServer.__init__
+VisionEgg.Text.BitmapText.__init__
+VisionEgg.Text.GlutTextBase.__init__
+VisionEgg.Text.StrokeText.__init__
+VisionEgg.Text.Text.__init__
+VisionEgg.Textures.FixationCross.__init__
+VisionEgg.Textures.Mask2D.__init__
+VisionEgg.Textures.SpinningDrum.__init__
+VisionEgg.Textures.Texture.__init__
+VisionEgg.Textures.TextureFromFile.__init__
+VisionEgg.Textures.TextureObject.__init__
+VisionEgg.Textures.TextureStimulusBaseClass.__init__
+VisionEgg.ThreeDeeMath.TransformMatrix.__init__
+VisionEgg.WrappedText.WrappedText.__init__
+VisionEgg.qtmovie.Movie.__init__
+VisionEgg.qtmovie.Rect.__init__" class="py-name" href="#" onclick="return doclink('link-206', '__init__', 'link-30');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt><tt class="py-op">**</tt><tt class="py-name">kw</tt><tt class="py-op">)</tt> </tt>
+<a name="L974"></a><tt class="py-lineno"> 974</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">not_between_go</tt><tt class="py-op">:</tt> </tt>
+<a name="L975"></a><tt class="py-lineno"> 975</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">eval_frequency</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">eval_frequency</tt><tt class="py-op">|</tt><tt id="link-207" class="py-name"><a title="VisionEgg.FlowControl.Controller.NOT_BETWEEN_GO
+VisionEgg.FlowControl.NOT_BETWEEN_GO" class="py-name" href="#" onclick="return doclink('link-207', 'NOT_BETWEEN_GO', 'link-60');">NOT_BETWEEN_GO</a></tt> </tt>
+<a name="L976"></a><tt class="py-lineno"> 976</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">set_return_type</tt><tt class="py-op">:</tt> </tt>
+<a name="L977"></a><tt class="py-lineno"> 977</tt>  <tt class="py-line">            <tt id="link-208" class="py-name"><a title="VisionEgg.logger" class="py-name" href="#" onclick="return doclink('link-208', 'logger', 'link-90');">logger</a></tt> <tt class="py-op">=</tt> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">getLogger</tt><tt class="py-op">(</tt><tt class="py-string">'VisionEgg.FlowControl'</tt><tt class="py-op">)</tt> </tt>
+<a name="L978"></a><tt class="py-lineno"> 978</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">eval_frequency</tt> <tt class="py-op">&</tt> <tt id="link-209" class="py-name"><a title="VisionEgg.FlowControl.Controller.NOT_DURING_GO
+VisionEgg.FlowControl.NOT_DURING_GO" class="py-name" href="#" onclick="return doclink('link-209', 'NOT_DURING_GO', 'link-56');">NOT_DURING_GO</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L979"></a><tt class="py-lineno"> 979</tt>  <tt class="py-line">                <tt id="link-210" class="py-name"><a title="VisionEgg.logger" class="py-name" href="#" onclick="return doclink('link-210', 'logger', 'link-90');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">debug</tt><tt class="py-op">(</tt> <tt class="py-string">'Executing "%s" to test for return type.'</tt><tt class="py-op">%</tt><tt class="py-op">(</tt><tt class="py-name">during_go_eval_string</tt><t [...]
+<a name="L980"></a><tt class="py-lineno"> 980</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">return_type</tt> <tt class="py-op">=</tt> <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-211" class="py-name"><a title="VisionEgg.ParameterTypes.get_type
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.get_type
+VisionEgg.get_type" class="py-name" href="#" onclick="return doclink('link-211', 'get_type', 'link-188');">get_type</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_test_self</tt><tt class="py-op">(</tt><tt class="py-name">go_started</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L981"></a><tt class="py-lineno"> 981</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-keyword">not</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">eval_frequency</tt> <tt class="py-op">&</tt> <tt id="link-212" class="py-name"><a title="VisionEgg.FlowControl.Controller.NOT_BETWEEN_GO
+VisionEgg.FlowControl.NOT_BETWEEN_GO" class="py-name" href="#" onclick="return doclink('link-212', 'NOT_BETWEEN_GO', 'link-60');">NOT_BETWEEN_GO</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L982"></a><tt class="py-lineno"> 982</tt>  <tt class="py-line">                <tt id="link-213" class="py-name"><a title="VisionEgg.logger" class="py-name" href="#" onclick="return doclink('link-213', 'logger', 'link-90');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">debug</tt><tt class="py-op">(</tt><tt class="py-string">'Executing "%s" to test for return type.'</tt><tt class="py-op">%</tt><tt class="py-op">(</tt><tt class="py-name">between_go_eval_string</tt><t [...]
+<a name="L983"></a><tt class="py-lineno"> 983</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">return_type</tt> <tt class="py-op">=</tt> <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-214" class="py-name"><a title="VisionEgg.ParameterTypes.get_type
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.get_type
+VisionEgg.get_type" class="py-name" href="#" onclick="return doclink('link-214', 'get_type', 'link-188');">get_type</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_test_self</tt><tt class="py-op">(</tt><tt class="py-name">go_started</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L984"></a><tt class="py-lineno"> 984</tt>  <tt class="py-line"> </tt>
+<a name="EvalStringController.set_during_go_eval_string"></a><div id="EvalStringController.set_during_go_eval_string-def"><a name="L985"></a><tt class="py-lineno"> 985</tt> <a class="py-toggle" href="#" id="EvalStringController.set_during_go_eval_string-toggle" onclick="return toggle('EvalStringController.set_during_go_eval_string');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.FlowControl.EvalStringController-class.html#set_during_ [...]
+</div><div id="EvalStringController.set_during_go_eval_string-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="EvalStringController.set_during_go_eval_string-expanded"><a name="L986"></a><tt class="py-lineno"> 986</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">during_go_eval_code</tt> <tt class="py-op">=</tt> <tt class="py-name">compile</tt><tt class="py-op">(</tt><tt class="py-name">during_go_eval_st [...]
+<a name="L987"></a><tt class="py-lineno"> 987</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">during_go_eval_string</tt> <tt class="py-op">=</tt> <tt class="py-name">during_go_eval_string</tt> </tt>
+</div><a name="L988"></a><tt class="py-lineno"> 988</tt>  <tt class="py-line"> </tt>
+<a name="EvalStringController.get_during_go_eval_string"></a><div id="EvalStringController.get_during_go_eval_string-def"><a name="L989"></a><tt class="py-lineno"> 989</tt> <a class="py-toggle" href="#" id="EvalStringController.get_during_go_eval_string-toggle" onclick="return toggle('EvalStringController.get_during_go_eval_string');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.FlowControl.EvalStringController-class.html#get_during_ [...]
+</div><div id="EvalStringController.get_during_go_eval_string-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="EvalStringController.get_during_go_eval_string-expanded"><a name="L990"></a><tt class="py-lineno"> 990</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">during_go_eval_string</tt> </tt>
+</div><a name="L991"></a><tt class="py-lineno"> 991</tt>  <tt class="py-line"> </tt>
+<a name="EvalStringController.set_between_go_eval_string"></a><div id="EvalStringController.set_between_go_eval_string-def"><a name="L992"></a><tt class="py-lineno"> 992</tt> <a class="py-toggle" href="#" id="EvalStringController.set_between_go_eval_string-toggle" onclick="return toggle('EvalStringController.set_between_go_eval_string');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.FlowControl.EvalStringController-class.html#set_bet [...]
+</div><div id="EvalStringController.set_between_go_eval_string-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="EvalStringController.set_between_go_eval_string-expanded"><a name="L993"></a><tt class="py-lineno"> 993</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">between_go_eval_code</tt> <tt class="py-op">=</tt> <tt class="py-name">compile</tt><tt class="py-op">(</tt><tt class="py-name">between_go_eva [...]
+<a name="L994"></a><tt class="py-lineno"> 994</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">between_go_eval_string</tt> <tt class="py-op">=</tt> <tt class="py-name">between_go_eval_string</tt> </tt>
+<a name="L995"></a><tt class="py-lineno"> 995</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">eval_frequency</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">eval_frequency</tt> <tt class="py-op">&</tt> <tt class="py-op">~</tt><tt id="link-215" class="py-name"><a title="VisionEgg.FlowControl.Controller.NOT_BETWEEN_GO
+VisionEgg.FlowControl.NOT_BETWEEN_GO" class="py-name" href="#" onclick="return doclink('link-215', 'NOT_BETWEEN_GO', 'link-60');">NOT_BETWEEN_GO</a></tt> </tt>
+</div><a name="L996"></a><tt class="py-lineno"> 996</tt>  <tt class="py-line"> </tt>
+<a name="EvalStringController.get_between_go_eval_string"></a><div id="EvalStringController.get_between_go_eval_string-def"><a name="L997"></a><tt class="py-lineno"> 997</tt> <a class="py-toggle" href="#" id="EvalStringController.get_between_go_eval_string-toggle" onclick="return toggle('EvalStringController.get_between_go_eval_string');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.FlowControl.EvalStringController-class.html#get_bet [...]
+</div><div id="EvalStringController.get_between_go_eval_string-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="EvalStringController.get_between_go_eval_string-expanded"><a name="L998"></a><tt class="py-lineno"> 998</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt><tt class="py-string">"between_go_eval_string"</tt><tt class="py-op">)</tt [...]
+<a name="L999"></a><tt class="py-lineno"> 999</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">between_go_eval_string</tt> </tt>
+<a name="L1000"></a><tt class="py-lineno">1000</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1001"></a><tt class="py-lineno">1001</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt>
+</div><a name="L1002"></a><tt class="py-lineno">1002</tt>  <tt class="py-line"> </tt>
+<a name="EvalStringController.during_go_eval"></a><div id="EvalStringController.during_go_eval-def"><a name="L1003"></a><tt class="py-lineno">1003</tt> <a class="py-toggle" href="#" id="EvalStringController.during_go_eval-toggle" onclick="return toggle('EvalStringController.during_go_eval');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.FlowControl.EvalStringController-class.html#during_go_eval">during_go_eval</a><tt class="py-op">(< [...]
+</div><div id="EvalStringController.during_go_eval-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="EvalStringController.during_go_eval-expanded"><a name="L1004"></a><tt class="py-lineno">1004</tt>  <tt class="py-line">        <tt class="py-docstring">"""Called by Presentation. Overrides method in Controller base class."""</tt> </tt>
+<a name="L1005"></a><tt class="py-lineno">1005</tt>  <tt class="py-line">        <tt class="py-name">eval_locals</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L1006"></a><tt class="py-lineno">1006</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">temporal_variables</tt> <tt class="py-op">&</tt> <tt id="link-216" class="py-name"><a title="VisionEgg.FlowControl.Controller.TIME_SEC_ABSOLUTE
+VisionEgg.FlowControl.TIME_SEC_ABSOLUTE" class="py-name" href="#" onclick="return doclink('link-216', 'TIME_SEC_ABSOLUTE', 'link-54');">TIME_SEC_ABSOLUTE</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L1007"></a><tt class="py-lineno">1007</tt>  <tt class="py-line">            <tt class="py-name">eval_locals</tt><tt class="py-op">[</tt><tt class="py-string">'t_abs'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">time_sec_absolute</tt> </tt>
+<a name="L1008"></a><tt class="py-lineno">1008</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">temporal_variables</tt> <tt class="py-op">&</tt> <tt id="link-217" class="py-name"><a title="VisionEgg.FlowControl.Controller.TIME_SEC_SINCE_GO
+VisionEgg.FlowControl.TIME_SEC_SINCE_GO" class="py-name" href="#" onclick="return doclink('link-217', 'TIME_SEC_SINCE_GO', 'link-57');">TIME_SEC_SINCE_GO</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L1009"></a><tt class="py-lineno">1009</tt>  <tt class="py-line">            <tt class="py-name">eval_locals</tt><tt class="py-op">[</tt><tt class="py-string">'t'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">time_sec_since_go</tt> </tt>
+<a name="L1010"></a><tt class="py-lineno">1010</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">temporal_variables</tt> <tt class="py-op">&</tt> <tt id="link-218" class="py-name"><a title="VisionEgg.FlowControl.Controller.FRAMES_ABSOLUTE
+VisionEgg.FlowControl.FRAMES_ABSOLUTE" class="py-name" href="#" onclick="return doclink('link-218', 'FRAMES_ABSOLUTE', 'link-45');">FRAMES_ABSOLUTE</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L1011"></a><tt class="py-lineno">1011</tt>  <tt class="py-line">            <tt class="py-name">eval_locals</tt><tt class="py-op">[</tt><tt class="py-string">'f_abs'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">frames_absolute</tt> </tt>
+<a name="L1012"></a><tt class="py-lineno">1012</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">temporal_variables</tt> <tt class="py-op">&</tt> <tt id="link-219" class="py-name"><a title="VisionEgg.FlowControl.Controller.FRAMES_SINCE_GO
+VisionEgg.FlowControl.FRAMES_SINCE_GO" class="py-name" href="#" onclick="return doclink('link-219', 'FRAMES_SINCE_GO', 'link-44');">FRAMES_SINCE_GO</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L1013"></a><tt class="py-lineno">1013</tt>  <tt class="py-line">            <tt class="py-name">eval_locals</tt><tt class="py-op">[</tt><tt class="py-string">'f'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">frames_since_go</tt> </tt>
+<a name="L1014"></a><tt class="py-lineno">1014</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">eval</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">during_go_eval_code</tt><tt class="py-op">,</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">eval_globals</tt><tt class="py-op">,</tt><tt class="py-name">eval_locals</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1015"></a><tt class="py-lineno">1015</tt>  <tt class="py-line"> </tt>
+<a name="EvalStringController.between_go_eval"></a><div id="EvalStringController.between_go_eval-def"><a name="L1016"></a><tt class="py-lineno">1016</tt> <a class="py-toggle" href="#" id="EvalStringController.between_go_eval-toggle" onclick="return toggle('EvalStringController.between_go_eval');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.FlowControl.EvalStringController-class.html#between_go_eval">between_go_eval</a><tt class="py- [...]
+</div><div id="EvalStringController.between_go_eval-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="EvalStringController.between_go_eval-expanded"><a name="L1017"></a><tt class="py-lineno">1017</tt>  <tt class="py-line">        <tt class="py-docstring">"""Called by Presentation. Overrides method in Controller base class."""</tt> </tt>
+<a name="L1018"></a><tt class="py-lineno">1018</tt>  <tt class="py-line">        <tt class="py-name">eval_locals</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L1019"></a><tt class="py-lineno">1019</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">temporal_variables</tt> <tt class="py-op">&</tt> <tt id="link-220" class="py-name"><a title="VisionEgg.FlowControl.Controller.TIME_SEC_ABSOLUTE
+VisionEgg.FlowControl.TIME_SEC_ABSOLUTE" class="py-name" href="#" onclick="return doclink('link-220', 'TIME_SEC_ABSOLUTE', 'link-54');">TIME_SEC_ABSOLUTE</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L1020"></a><tt class="py-lineno">1020</tt>  <tt class="py-line">            <tt class="py-name">eval_locals</tt><tt class="py-op">[</tt><tt class="py-string">'t_abs'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">time_sec_absolute</tt> </tt>
+<a name="L1021"></a><tt class="py-lineno">1021</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">temporal_variables</tt> <tt class="py-op">&</tt> <tt id="link-221" class="py-name"><a title="VisionEgg.FlowControl.Controller.FRAMES_ABSOLUTE
+VisionEgg.FlowControl.FRAMES_ABSOLUTE" class="py-name" href="#" onclick="return doclink('link-221', 'FRAMES_ABSOLUTE', 'link-45');">FRAMES_ABSOLUTE</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L1022"></a><tt class="py-lineno">1022</tt>  <tt class="py-line">            <tt class="py-name">eval_locals</tt><tt class="py-op">[</tt><tt class="py-string">'f_abs'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">frames_absolute</tt> </tt>
+<a name="L1023"></a><tt class="py-lineno">1023</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">eval</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">between_go_eval_code</tt><tt class="py-op">,</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">eval_globals</tt><tt class="py-op">,</tt><tt class="py-name">eval_locals</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L1024"></a><tt class="py-lineno">1024</tt>  <tt class="py-line"> </tt>
+<a name="ExecStringController"></a><div id="ExecStringController-def"><a name="L1025"></a><tt class="py-lineno">1025</tt> <a class="py-toggle" href="#" id="ExecStringController-toggle" onclick="return toggle('ExecStringController');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.FlowControl.ExecStringController-class.html">ExecStringController</a><tt class="py-op">(</tt><tt class="py-base-class">Controller</tt><tt class="py-op">)</tt><t [...]
+</div><div id="ExecStringController-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="ExecStringController-expanded"><a name="L1026"></a><tt class="py-lineno">1026</tt>  <tt class="py-line">    <tt class="py-docstring">"""Set parameters using potentially complex Python string.</tt> </tt>
+<a name="L1027"></a><tt class="py-lineno">1027</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1028"></a><tt class="py-lineno">1028</tt>  <tt class="py-line"><tt class="py-docstring">    You can execute arbitrarily complex Python code with this</tt> </tt>
+<a name="L1029"></a><tt class="py-lineno">1029</tt>  <tt class="py-line"><tt class="py-docstring">    controller.  The return value must be contained within the</tt> </tt>
+<a name="L1030"></a><tt class="py-lineno">1030</tt>  <tt class="py-line"><tt class="py-docstring">    variable "x".  In other words, this string must assign the</tt> </tt>
+<a name="L1031"></a><tt class="py-lineno">1031</tt>  <tt class="py-line"><tt class="py-docstring">    variable x, so setting the string to "x=1.0" would set the</tt> </tt>
+<a name="L1032"></a><tt class="py-lineno">1032</tt>  <tt class="py-line"><tt class="py-docstring">    parameter under control to 1.0.</tt> </tt>
+<a name="L1033"></a><tt class="py-lineno">1033</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1034"></a><tt class="py-lineno">1034</tt>  <tt class="py-line"><tt class="py-docstring">    To increase speed, the string is compiled to Python's</tt> </tt>
+<a name="L1035"></a><tt class="py-lineno">1035</tt>  <tt class="py-line"><tt class="py-docstring">    bytecode format.</tt> </tt>
+<a name="L1036"></a><tt class="py-lineno">1036</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1037"></a><tt class="py-lineno">1037</tt>  <tt class="py-line"><tt class="py-docstring">    The string can make use of temporal variables, which are made</tt> </tt>
+<a name="L1038"></a><tt class="py-lineno">1038</tt>  <tt class="py-line"><tt class="py-docstring">    available depending on the controller's temporal_variables</tt> </tt>
+<a name="L1039"></a><tt class="py-lineno">1039</tt>  <tt class="py-line"><tt class="py-docstring">    attribute. Note that only the absolute temporal variables are</tt> </tt>
+<a name="L1040"></a><tt class="py-lineno">1040</tt>  <tt class="py-line"><tt class="py-docstring">    available when the go loop is not running.</tt> </tt>
+<a name="L1041"></a><tt class="py-lineno">1041</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1042"></a><tt class="py-lineno">1042</tt>  <tt class="py-line"><tt class="py-docstring">    flag(s) present    variable  description</tt> </tt>
+<a name="L1043"></a><tt class="py-lineno">1043</tt>  <tt class="py-line"><tt class="py-docstring">    -----------------  --------  ----------------------------------</tt> </tt>
+<a name="L1044"></a><tt class="py-lineno">1044</tt>  <tt class="py-line"><tt class="py-docstring">    TIME_SEC_ABSOLUTE  t_abs     seconds, continuously increasing</tt> </tt>
+<a name="L1045"></a><tt class="py-lineno">1045</tt>  <tt class="py-line"><tt class="py-docstring">    TIME_SEC_SINCE_GO  t         seconds, reset to 0.0 each go loop</tt> </tt>
+<a name="L1046"></a><tt class="py-lineno">1046</tt>  <tt class="py-line"><tt class="py-docstring">    FRAMES_ABSOLUTE    f_abs     frames, continuously increasing</tt> </tt>
+<a name="L1047"></a><tt class="py-lineno">1047</tt>  <tt class="py-line"><tt class="py-docstring">    FRAMES_SINCE_GO    f         frames, reset to 0 each go loop</tt> </tt>
+<a name="L1048"></a><tt class="py-lineno">1048</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1049"></a><tt class="py-lineno">1049</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="ExecStringController.__init__"></a><div id="ExecStringController.__init__-def"><a name="L1050"></a><tt class="py-lineno">1050</tt> <a class="py-toggle" href="#" id="ExecStringController.__init__-toggle" onclick="return toggle('ExecStringController.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.FlowControl.ExecStringController-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><t [...]
+<a name="L1051"></a><tt class="py-lineno">1051</tt>  <tt class="py-line">                 <tt class="py-param">during_go_exec_string</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
+<a name="L1052"></a><tt class="py-lineno">1052</tt>  <tt class="py-line">                 <tt class="py-param">between_go_exec_string</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
+<a name="L1053"></a><tt class="py-lineno">1053</tt>  <tt class="py-line">                 <tt class="py-param">restricted_namespace</tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt><tt class="py-op">,</tt> </tt>
+<a name="L1054"></a><tt class="py-lineno">1054</tt>  <tt class="py-line">                 <tt class="py-op">**</tt><tt class="py-param">kw</tt> </tt>
+<a name="L1055"></a><tt class="py-lineno">1055</tt>  <tt class="py-line">                 <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ExecStringController.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ExecStringController.__init__-expanded"><a name="L1056"></a><tt class="py-lineno">1056</tt>  <tt class="py-line">        <tt class="py-keyword">import</tt> <tt id="link-222" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-222', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-223" class="py-nam [...]
+<a name="L1057"></a><tt class="py-lineno">1057</tt>  <tt class="py-line"> </tt>
+<a name="L1058"></a><tt class="py-lineno">1058</tt>  <tt class="py-line">        <tt class="py-comment"># Create a namespace for eval_strings to use</tt> </tt>
+<a name="L1059"></a><tt class="py-lineno">1059</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">eval_globals</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L1060"></a><tt class="py-lineno">1060</tt>  <tt class="py-line"> </tt>
+<a name="L1061"></a><tt class="py-lineno">1061</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">during_go_exec_string</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L1062"></a><tt class="py-lineno">1062</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">,</tt> <tt class="py-string">"'during_go_exec_string' is a required argument"</tt> </tt>
+<a name="L1063"></a><tt class="py-lineno">1063</tt>  <tt class="py-line"> </tt>
+<a name="L1064"></a><tt class="py-lineno">1064</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">restricted_namespace</tt> <tt class="py-op">=</tt> <tt class="py-name">restricted_namespace</tt> </tt>
+<a name="L1065"></a><tt class="py-lineno">1065</tt>  <tt class="py-line"> </tt>
+<a name="L1066"></a><tt class="py-lineno">1066</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">restricted_namespace</tt><tt class="py-op">:</tt> </tt>
+<a name="L1067"></a><tt class="py-lineno">1067</tt>  <tt class="py-line">            <tt class="py-comment"># Make Numeric and math modules available</tt> </tt>
+<a name="L1068"></a><tt class="py-lineno">1068</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">eval_globals</tt><tt class="py-op">[</tt><tt class="py-string">'Numeric'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">Numeric</tt> </tt>
+<a name="L1069"></a><tt class="py-lineno">1069</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">eval_globals</tt><tt class="py-op">[</tt><tt class="py-string">'math'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">math</tt> </tt>
+<a name="L1070"></a><tt class="py-lineno">1070</tt>  <tt class="py-line">            <tt class="py-comment"># Make Numeric and math modules available without module name</tt> </tt>
+<a name="L1071"></a><tt class="py-lineno">1071</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">for</tt> <tt class="py-name">key</tt> <tt class="py-keyword">in</tt> <tt class="py-name">dir</tt><tt class="py-op">(</tt><tt class="py-name">Numeric</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1072"></a><tt class="py-lineno">1072</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">eval_globals</tt><tt class="py-op">[</tt><tt class="py-name">key</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">getattr</tt><tt class="py-op">(</tt><tt class="py-name">Numeric</tt><tt class="py-op">,</tt><tt class="py-name">key</tt><tt class="py-op">)</tt> </tt>
+<a name="L1073"></a><tt class="py-lineno">1073</tt>  <tt class="py-line">            <tt class="py-keyword">for</tt> <tt class="py-name">key</tt> <tt class="py-keyword">in</tt> <tt class="py-name">dir</tt><tt class="py-op">(</tt><tt class="py-name">math</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1074"></a><tt class="py-lineno">1074</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">eval_globals</tt><tt class="py-op">[</tt><tt class="py-name">key</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">getattr</tt><tt class="py-op">(</tt><tt class="py-name">math</tt><tt class="py-op">,</tt><tt class="py-name">key</tt><tt class="py-op">)</tt> </tt>
+<a name="L1075"></a><tt class="py-lineno">1075</tt>  <tt class="py-line"> </tt>
+<a name="L1076"></a><tt class="py-lineno">1076</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">during_go_exec_code</tt> <tt class="py-op">=</tt> <tt class="py-name">compile</tt><tt class="py-op">(</tt><tt class="py-name">during_go_exec_string</tt><tt class="py-op">,</tt><tt class="py-string">'<string>'</tt><tt class="py-op">,</tt><tt class="py-string">'exec'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1077"></a><tt class="py-lineno">1077</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">during_go_exec_string</tt> <tt class="py-op">=</tt> <tt class="py-name">during_go_exec_string</tt> </tt>
+<a name="L1078"></a><tt class="py-lineno">1078</tt>  <tt class="py-line">        <tt class="py-name">not_between_go</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L1079"></a><tt class="py-lineno">1079</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">between_go_exec_string</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L1080"></a><tt class="py-lineno">1080</tt>  <tt class="py-line">            <tt class="py-name">not_between_go</tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L1081"></a><tt class="py-lineno">1081</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1082"></a><tt class="py-lineno">1082</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">between_go_exec_code</tt> <tt class="py-op">=</tt> <tt class="py-name">compile</tt><tt class="py-op">(</tt><tt class="py-name">between_go_exec_string</tt><tt class="py-op">,</tt><tt class="py-string">'<string>'</tt><tt class="py-op">,</tt><tt class="py-string">'exec'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1083"></a><tt class="py-lineno">1083</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">between_go_exec_string</tt> <tt class="py-op">=</tt> <tt class="py-name">between_go_exec_string</tt> </tt>
+<a name="L1084"></a><tt class="py-lineno">1084</tt>  <tt class="py-line"> </tt>
+<a name="L1085"></a><tt class="py-lineno">1085</tt>  <tt class="py-line">        <tt class="py-comment"># Check to make sure return_type is set</tt> </tt>
+<a name="L1086"></a><tt class="py-lineno">1086</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">set_return_type</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L1087"></a><tt class="py-lineno">1087</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">kw</tt><tt class="py-op">.</tt><tt class="py-name">has_key</tt><tt class="py-op">(</tt><tt class="py-string">'return_type'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1088"></a><tt class="py-lineno">1088</tt>  <tt class="py-line">            <tt class="py-name">set_return_type</tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L1089"></a><tt class="py-lineno">1089</tt>  <tt class="py-line">            <tt class="py-name">kw</tt><tt class="py-op">[</tt><tt class="py-string">'return_type'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">types</tt><tt class="py-op">.</tt><tt id="link-224" class="py-name"><a title="VisionEgg.ParameterTypes.NoneType" class="py-name" href="#" onclick="return doclink('link-224', 'NoneType', 'link-35');">NoneType</a></tt> </tt>
+<a name="L1090"></a><tt class="py-lineno">1090</tt>  <tt class="py-line"> </tt>
+<a name="L1091"></a><tt class="py-lineno">1091</tt>  <tt class="py-line">        <tt class="py-comment"># Call base class __init__</tt> </tt>
+<a name="L1092"></a><tt class="py-lineno">1092</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt id="link-225" class="py-name"><a title="VisionEgg.FlowControl.Controller" class="py-name" href="#" onclick="return doclink('link-225', 'Controller', 'link-46');">Controller</a></tt><tt class="py-op">.</tt><tt id="link-226" class="py-name"><a title="VisionEgg.ClassWithParameters.__init__
+VisionEgg.Configuration.Config.__init__
+VisionEgg.Core.FixationSpot.__init__
+VisionEgg.Core.FrameTimer.__init__
+VisionEgg.Core.ModelView.__init__
+VisionEgg.Core.OrthographicProjection.__init__
+VisionEgg.Core.OrthographicProjectionNoZClip.__init__
+VisionEgg.Core.PerspectiveProjection.__init__
+VisionEgg.Core.Projection.__init__
+VisionEgg.Core.ProjectionBaseClass.__init__
+VisionEgg.Core.Screen.__init__
+VisionEgg.Core.SimplePerspectiveProjection.__init__
+VisionEgg.Core.Stimulus.__init__
+VisionEgg.Core.Viewport.__init__
+VisionEgg.Daq.Channel.__init__
+VisionEgg.Daq.DaqMode.__init__
+VisionEgg.Daq.Device.__init__
+VisionEgg.Daq.Functionality.__init__
+VisionEgg.Daq.SignalType.__init__
+VisionEgg.DaqKeyboard.KeyboardTriggerInController.__init__
+VisionEgg.DaqLPT.LPTChannel.__init__
+VisionEgg.DaqLPT.LPTDevice.__init__
+VisionEgg.DaqLPT.LPTTriggerInController.__init__
+VisionEgg.DaqLPT.LPTTriggerOutController.__init__
+VisionEgg.Deprecated.Message.__init__
+VisionEgg.Dots.DotArea2D.__init__
+VisionEgg.FlowControl.ConstantController.__init__
+VisionEgg.FlowControl.Controller.__init__
+VisionEgg.FlowControl.EncapsulatedController.__init__
+VisionEgg.FlowControl.EvalStringController.__init__
+VisionEgg.FlowControl.ExecStringController.__init__
+VisionEgg.FlowControl.FunctionController.__init__
+VisionEgg.FlowControl.Presentation.__init__
+VisionEgg.GLTrace.Wrapper.__init__
+VisionEgg.GUI.AppWindow.__init__
+VisionEgg.GUI.GetKeypressDialog.__init__
+VisionEgg.GUI.GraphicsConfigurationWindow.__init__
+VisionEgg.GUI.InfoFrame.__init__
+VisionEgg.GUI.ProgressBar.__init__
+VisionEgg.GUI.ToplevelDialog.__init__
+VisionEgg.Gratings.SinGrating2D.__init__
+VisionEgg.Gratings.SinGrating3D.__init__
+VisionEgg.MoreStimuli.Arrow.__init__
+VisionEgg.MoreStimuli.FilledCircle.__init__
+VisionEgg.MoreStimuli.Rectangle3D.__init__
+VisionEgg.MoreStimuli.Target2D.__init__
+VisionEgg.ParameterTypes.AnyOf.__init__
+VisionEgg.ParameterTypes.Instance.__init__
+VisionEgg.ParameterTypes.Sequence.__init__
+VisionEgg.ParameterTypes.SubClass.__init__
+VisionEgg.PyroApps.AST_ext.AST_Visitor.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalMetaParameters.__init__
+VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.__init__
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.__init__
+VisionEgg.PyroApps.DropinGUI.DropinMetaParameters.__init__
+VisionEgg.PyroApps.DropinServer.DropinMetaController.__init__
+VisionEgg.PyroApps.EPhysGUI.AppWindow.__init__
+VisionEgg.PyroApps.EPhysGUI.BarButton.__init__
+VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase.__init__
+VisionEgg.PyroApps.EPhysGUI.GammaFrame.__init__
+VisionEgg.PyroApps.EPhysGUI.ImageSequenceLauncher.__init__
+VisionEgg.PyroApps.EPhysGUI.Loop.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopContainedObject.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopParamDialog.__init__
+VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.__init__
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.__init__
+VisionEgg.PyroApps.EPhysServer.EPhysServer.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingMetaParameters.__init__
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.GridGUI.GridControlFrame.__init__
+VisionEgg.PyroApps.GridGUI.GridMetaParameters.__init__
+VisionEgg.PyroApps.GridServer.GridMetaController.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetMetaParameters.__init__
+VisionEgg.PyroApps.MouseTargetServer.MousePositionController.__init__
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetOrientationController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetPositionController.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.CallbackEntry.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionParameters.__init__
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingMetaParameters.__init__
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumMetaParameters.__init__
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.__init__
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.__init__
+VisionEgg.PyroApps.TargetGUI.TargetMetaParameters.__init__
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.__init__
+VisionEgg.PyroClient.PyroClient.__init__
+VisionEgg.PyroHelpers.PyroConstantController.__init__
+VisionEgg.PyroHelpers.PyroEncapsulatedController.__init__
+VisionEgg.PyroHelpers.PyroEvalStringController.__init__
+VisionEgg.PyroHelpers.PyroExecStringController.__init__
+VisionEgg.PyroHelpers.PyroListenController.__init__
+VisionEgg.PyroHelpers.PyroLocalDictController.__init__
+VisionEgg.PyroHelpers.PyroServer.__init__
+VisionEgg.QuickTime.MovieTexture.__init__
+VisionEgg.ResponseControl.KeyboardResponseController.__init__
+VisionEgg.ResponseControl.ResponseController.__init__
+VisionEgg.SphereMap.AzElGrid.__init__
+VisionEgg.SphereMap.SphereGrating.__init__
+VisionEgg.SphereMap.SphereMap.__init__
+VisionEgg.SphereMap.SphereWindow.__init__
+VisionEgg.TCPController.SocketListenController.__init__
+VisionEgg.TCPController.TCPController.__init__
+VisionEgg.TCPController.TCPServer.__init__
+VisionEgg.Text.BitmapText.__init__
+VisionEgg.Text.GlutTextBase.__init__
+VisionEgg.Text.StrokeText.__init__
+VisionEgg.Text.Text.__init__
+VisionEgg.Textures.FixationCross.__init__
+VisionEgg.Textures.Mask2D.__init__
+VisionEgg.Textures.SpinningDrum.__init__
+VisionEgg.Textures.Texture.__init__
+VisionEgg.Textures.TextureFromFile.__init__
+VisionEgg.Textures.TextureObject.__init__
+VisionEgg.Textures.TextureStimulusBaseClass.__init__
+VisionEgg.ThreeDeeMath.TransformMatrix.__init__
+VisionEgg.WrappedText.WrappedText.__init__
+VisionEgg.qtmovie.Movie.__init__
+VisionEgg.qtmovie.Rect.__init__" class="py-name" href="#" onclick="return doclink('link-226', '__init__', 'link-30');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt><tt class="py-op">**</tt><tt class="py-name">kw</tt><tt class="py-op">)</tt> </tt>
+<a name="L1093"></a><tt class="py-lineno">1093</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">not_between_go</tt><tt class="py-op">:</tt> </tt>
+<a name="L1094"></a><tt class="py-lineno">1094</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">eval_frequency</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">eval_frequency</tt><tt class="py-op">|</tt><tt id="link-227" class="py-name"><a title="VisionEgg.FlowControl.Controller.NOT_BETWEEN_GO
+VisionEgg.FlowControl.NOT_BETWEEN_GO" class="py-name" href="#" onclick="return doclink('link-227', 'NOT_BETWEEN_GO', 'link-60');">NOT_BETWEEN_GO</a></tt> </tt>
+<a name="L1095"></a><tt class="py-lineno">1095</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">set_return_type</tt><tt class="py-op">:</tt> </tt>
+<a name="L1096"></a><tt class="py-lineno">1096</tt>  <tt class="py-line">            <tt id="link-228" class="py-name"><a title="VisionEgg.logger" class="py-name" href="#" onclick="return doclink('link-228', 'logger', 'link-90');">logger</a></tt> <tt class="py-op">=</tt> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">getLogger</tt><tt class="py-op">(</tt><tt class="py-string">'VisionEgg.FlowControl'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1097"></a><tt class="py-lineno">1097</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">eval_frequency</tt> <tt class="py-op">&</tt> <tt id="link-229" class="py-name"><a title="VisionEgg.FlowControl.Controller.NOT_DURING_GO
+VisionEgg.FlowControl.NOT_DURING_GO" class="py-name" href="#" onclick="return doclink('link-229', 'NOT_DURING_GO', 'link-56');">NOT_DURING_GO</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1098"></a><tt class="py-lineno">1098</tt>  <tt class="py-line">                <tt id="link-230" class="py-name"><a title="VisionEgg.logger" class="py-name" href="#" onclick="return doclink('link-230', 'logger', 'link-90');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">debug</tt><tt class="py-op">(</tt><tt class="py-string">'Executing "%s" to test for return type.'</tt><tt class="py-op">%</tt><tt class="py-op">(</tt><tt class="py-name">during_go_exec_string</tt><t [...]
+<a name="L1099"></a><tt class="py-lineno">1099</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">return_type</tt> <tt class="py-op">=</tt> <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-231" class="py-name"><a title="VisionEgg.ParameterTypes.get_type
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.get_type
+VisionEgg.get_type" class="py-name" href="#" onclick="return doclink('link-231', 'get_type', 'link-188');">get_type</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_test_self</tt><tt class="py-op">(</tt><tt class="py-name">go_started</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1100"></a><tt class="py-lineno">1100</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-keyword">not</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">eval_frequency</tt> <tt class="py-op">&</tt> <tt id="link-232" class="py-name"><a title="VisionEgg.FlowControl.Controller.NOT_BETWEEN_GO
+VisionEgg.FlowControl.NOT_BETWEEN_GO" class="py-name" href="#" onclick="return doclink('link-232', 'NOT_BETWEEN_GO', 'link-60');">NOT_BETWEEN_GO</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1101"></a><tt class="py-lineno">1101</tt>  <tt class="py-line">                <tt id="link-233" class="py-name"><a title="VisionEgg.logger" class="py-name" href="#" onclick="return doclink('link-233', 'logger', 'link-90');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">debug</tt><tt class="py-op">(</tt><tt class="py-string">'Executing "%s" to test for return type.'</tt><tt class="py-op">%</tt><tt class="py-op">(</tt><tt class="py-name">between_go_exec_string</tt>< [...]
+<a name="L1102"></a><tt class="py-lineno">1102</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">return_type</tt> <tt class="py-op">=</tt> <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-234" class="py-name"><a title="VisionEgg.ParameterTypes.get_type
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.get_type
+VisionEgg.get_type" class="py-name" href="#" onclick="return doclink('link-234', 'get_type', 'link-188');">get_type</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_test_self</tt><tt class="py-op">(</tt><tt class="py-name">go_started</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1103"></a><tt class="py-lineno">1103</tt>  <tt class="py-line"> </tt>
+<a name="ExecStringController.set_during_go_exec_string"></a><div id="ExecStringController.set_during_go_exec_string-def"><a name="L1104"></a><tt class="py-lineno">1104</tt> <a class="py-toggle" href="#" id="ExecStringController.set_during_go_exec_string-toggle" onclick="return toggle('ExecStringController.set_during_go_exec_string');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.FlowControl.ExecStringController-class.html#set_during [...]
+</div><div id="ExecStringController.set_during_go_exec_string-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ExecStringController.set_during_go_exec_string-expanded"><a name="L1105"></a><tt class="py-lineno">1105</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">during_go_exec_code</tt> <tt class="py-op">=</tt> <tt class="py-name">compile</tt><tt class="py-op">(</tt><tt class="py-name">during_go_exec_s [...]
+<a name="L1106"></a><tt class="py-lineno">1106</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">during_go_exec_string</tt> <tt class="py-op">=</tt> <tt class="py-name">during_go_exec_string</tt> </tt>
+</div><a name="L1107"></a><tt class="py-lineno">1107</tt>  <tt class="py-line"> </tt>
+<a name="ExecStringController.get_during_go_exec_string"></a><div id="ExecStringController.get_during_go_exec_string-def"><a name="L1108"></a><tt class="py-lineno">1108</tt> <a class="py-toggle" href="#" id="ExecStringController.get_during_go_exec_string-toggle" onclick="return toggle('ExecStringController.get_during_go_exec_string');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.FlowControl.ExecStringController-class.html#get_during [...]
+</div><div id="ExecStringController.get_during_go_exec_string-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ExecStringController.get_during_go_exec_string-expanded"><a name="L1109"></a><tt class="py-lineno">1109</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">during_go_exec_string</tt> </tt>
+</div><a name="L1110"></a><tt class="py-lineno">1110</tt>  <tt class="py-line"> </tt>
+<a name="ExecStringController.set_between_go_exec_string"></a><div id="ExecStringController.set_between_go_exec_string-def"><a name="L1111"></a><tt class="py-lineno">1111</tt> <a class="py-toggle" href="#" id="ExecStringController.set_between_go_exec_string-toggle" onclick="return toggle('ExecStringController.set_between_go_exec_string');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.FlowControl.ExecStringController-class.html#set_be [...]
+</div><div id="ExecStringController.set_between_go_exec_string-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ExecStringController.set_between_go_exec_string-expanded"><a name="L1112"></a><tt class="py-lineno">1112</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">between_go_exec_code</tt> <tt class="py-op">=</tt> <tt class="py-name">compile</tt><tt class="py-op">(</tt><tt class="py-name">between_go_ex [...]
+<a name="L1113"></a><tt class="py-lineno">1113</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">between_go_exec_string</tt> <tt class="py-op">=</tt> <tt class="py-name">between_go_exec_string</tt> </tt>
+<a name="L1114"></a><tt class="py-lineno">1114</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">eval_frequency</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">eval_frequency</tt> <tt class="py-op">&</tt> <tt class="py-op">~</tt><tt id="link-235" class="py-name"><a title="VisionEgg.FlowControl.Controller.NOT_BETWEEN_GO
+VisionEgg.FlowControl.NOT_BETWEEN_GO" class="py-name" href="#" onclick="return doclink('link-235', 'NOT_BETWEEN_GO', 'link-60');">NOT_BETWEEN_GO</a></tt> </tt>
+</div><a name="L1115"></a><tt class="py-lineno">1115</tt>  <tt class="py-line"> </tt>
+<a name="ExecStringController.get_between_go_exec_string"></a><div id="ExecStringController.get_between_go_exec_string-def"><a name="L1116"></a><tt class="py-lineno">1116</tt> <a class="py-toggle" href="#" id="ExecStringController.get_between_go_exec_string-toggle" onclick="return toggle('ExecStringController.get_between_go_exec_string');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.FlowControl.ExecStringController-class.html#get_be [...]
+</div><div id="ExecStringController.get_between_go_exec_string-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ExecStringController.get_between_go_exec_string-expanded"><a name="L1117"></a><tt class="py-lineno">1117</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt><tt class="py-string">"between_go_exec_string"</tt><tt class="py-op">)</t [...]
+<a name="L1118"></a><tt class="py-lineno">1118</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">between_go_exec_string</tt> </tt>
+<a name="L1119"></a><tt class="py-lineno">1119</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1120"></a><tt class="py-lineno">1120</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt>
+</div><a name="L1121"></a><tt class="py-lineno">1121</tt>  <tt class="py-line"> </tt>
+<a name="ExecStringController.during_go_eval"></a><div id="ExecStringController.during_go_eval-def"><a name="L1122"></a><tt class="py-lineno">1122</tt> <a class="py-toggle" href="#" id="ExecStringController.during_go_eval-toggle" onclick="return toggle('ExecStringController.during_go_eval');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.FlowControl.ExecStringController-class.html#during_go_eval">during_go_eval</a><tt class="py-op">(< [...]
+</div><div id="ExecStringController.during_go_eval-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ExecStringController.during_go_eval-expanded"><a name="L1123"></a><tt class="py-lineno">1123</tt>  <tt class="py-line">        <tt class="py-docstring">"""Called by Presentation. Overrides method in Controller base class."""</tt> </tt>
+<a name="L1124"></a><tt class="py-lineno">1124</tt>  <tt class="py-line">        <tt class="py-name">eval_locals</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L1125"></a><tt class="py-lineno">1125</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">temporal_variables</tt> <tt class="py-op">&</tt> <tt id="link-236" class="py-name"><a title="VisionEgg.FlowControl.Controller.TIME_SEC_ABSOLUTE
+VisionEgg.FlowControl.TIME_SEC_ABSOLUTE" class="py-name" href="#" onclick="return doclink('link-236', 'TIME_SEC_ABSOLUTE', 'link-54');">TIME_SEC_ABSOLUTE</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L1126"></a><tt class="py-lineno">1126</tt>  <tt class="py-line">            <tt class="py-name">eval_locals</tt><tt class="py-op">[</tt><tt class="py-string">'t_abs'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">time_sec_absolute</tt> </tt>
+<a name="L1127"></a><tt class="py-lineno">1127</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">temporal_variables</tt> <tt class="py-op">&</tt> <tt id="link-237" class="py-name"><a title="VisionEgg.FlowControl.Controller.TIME_SEC_SINCE_GO
+VisionEgg.FlowControl.TIME_SEC_SINCE_GO" class="py-name" href="#" onclick="return doclink('link-237', 'TIME_SEC_SINCE_GO', 'link-57');">TIME_SEC_SINCE_GO</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L1128"></a><tt class="py-lineno">1128</tt>  <tt class="py-line">            <tt class="py-name">eval_locals</tt><tt class="py-op">[</tt><tt class="py-string">'t'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">time_sec_since_go</tt> </tt>
+<a name="L1129"></a><tt class="py-lineno">1129</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">temporal_variables</tt> <tt class="py-op">&</tt> <tt id="link-238" class="py-name"><a title="VisionEgg.FlowControl.Controller.FRAMES_ABSOLUTE
+VisionEgg.FlowControl.FRAMES_ABSOLUTE" class="py-name" href="#" onclick="return doclink('link-238', 'FRAMES_ABSOLUTE', 'link-45');">FRAMES_ABSOLUTE</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L1130"></a><tt class="py-lineno">1130</tt>  <tt class="py-line">            <tt class="py-name">eval_locals</tt><tt class="py-op">[</tt><tt class="py-string">'f_abs'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">frames_absolute</tt> </tt>
+<a name="L1131"></a><tt class="py-lineno">1131</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">temporal_variables</tt> <tt class="py-op">&</tt> <tt id="link-239" class="py-name"><a title="VisionEgg.FlowControl.Controller.FRAMES_SINCE_GO
+VisionEgg.FlowControl.FRAMES_SINCE_GO" class="py-name" href="#" onclick="return doclink('link-239', 'FRAMES_SINCE_GO', 'link-44');">FRAMES_SINCE_GO</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L1132"></a><tt class="py-lineno">1132</tt>  <tt class="py-line">            <tt class="py-name">eval_locals</tt><tt class="py-op">[</tt><tt class="py-string">'f'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">frames_since_go</tt> </tt>
+<a name="L1133"></a><tt class="py-lineno">1133</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">restricted_namespace</tt><tt class="py-op">:</tt> </tt>
+<a name="L1134"></a><tt class="py-lineno">1134</tt>  <tt class="py-line">            <tt class="py-keyword">exec</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">during_go_exec_code</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">eval_globals</tt><tt class="py-op">,</tt><tt class="py-name">eval_locals</tt> </tt>
+<a name="L1135"></a><tt class="py-lineno">1135</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">eval_locals</tt><tt class="py-op">[</tt><tt class="py-string">'x'</tt><tt class="py-op">]</tt> </tt>
+<a name="L1136"></a><tt class="py-lineno">1136</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1137"></a><tt class="py-lineno">1137</tt>  <tt class="py-line">            <tt class="py-name">setup_locals_str</tt> <tt class="py-op">=</tt> <tt class="py-string">"\n"</tt> </tt>
+<a name="L1138"></a><tt class="py-lineno">1138</tt>  <tt class="py-line">            <tt class="py-keyword">for</tt> <tt class="py-name">local_variable_name</tt> <tt class="py-keyword">in</tt> <tt class="py-name">eval_locals</tt><tt class="py-op">.</tt><tt class="py-name">keys</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1139"></a><tt class="py-lineno">1139</tt>  <tt class="py-line">                <tt class="py-name">setup_locals_str</tt> <tt class="py-op">=</tt> <tt class="py-name">setup_locals_str</tt> <tt class="py-op">+</tt> <tt class="py-name">local_variable_name</tt> <tt class="py-op">+</tt> <tt class="py-string">"="</tt> <tt class="py-op">+</tt> <tt class="py-name">repr</tt><tt class="py-op">(</tt><tt class="py-name">eval_locals</tt><tt class="py-op">[</tt><tt class="py-name">local_vari [...]
+<a name="L1140"></a><tt class="py-lineno">1140</tt>  <tt class="py-line">                <tt class="py-keyword">exec</tt> <tt class="py-name">setup_locals_str</tt> </tt>
+<a name="L1141"></a><tt class="py-lineno">1141</tt>  <tt class="py-line">            <tt class="py-keyword">exec</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">during_go_exec_code</tt> </tt>
+<a name="L1142"></a><tt class="py-lineno">1142</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">x</tt> </tt>
+</div><a name="L1143"></a><tt class="py-lineno">1143</tt>  <tt class="py-line"> </tt>
+<a name="ExecStringController.between_go_eval"></a><div id="ExecStringController.between_go_eval-def"><a name="L1144"></a><tt class="py-lineno">1144</tt> <a class="py-toggle" href="#" id="ExecStringController.between_go_eval-toggle" onclick="return toggle('ExecStringController.between_go_eval');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.FlowControl.ExecStringController-class.html#between_go_eval">between_go_eval</a><tt class="py- [...]
+</div><div id="ExecStringController.between_go_eval-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ExecStringController.between_go_eval-expanded"><a name="L1145"></a><tt class="py-lineno">1145</tt>  <tt class="py-line">        <tt class="py-docstring">"""Called by Presentation. Overrides method in Controller base class."""</tt> </tt>
+<a name="L1146"></a><tt class="py-lineno">1146</tt>  <tt class="py-line">        <tt class="py-name">eval_locals</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L1147"></a><tt class="py-lineno">1147</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">temporal_variables</tt> <tt class="py-op">&</tt> <tt id="link-240" class="py-name"><a title="VisionEgg.FlowControl.Controller.TIME_SEC_ABSOLUTE
+VisionEgg.FlowControl.TIME_SEC_ABSOLUTE" class="py-name" href="#" onclick="return doclink('link-240', 'TIME_SEC_ABSOLUTE', 'link-54');">TIME_SEC_ABSOLUTE</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L1148"></a><tt class="py-lineno">1148</tt>  <tt class="py-line">            <tt class="py-name">eval_locals</tt><tt class="py-op">[</tt><tt class="py-string">'t_abs'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">time_sec_absolute</tt> </tt>
+<a name="L1149"></a><tt class="py-lineno">1149</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">temporal_variables</tt> <tt class="py-op">&</tt> <tt id="link-241" class="py-name"><a title="VisionEgg.FlowControl.Controller.FRAMES_ABSOLUTE
+VisionEgg.FlowControl.FRAMES_ABSOLUTE" class="py-name" href="#" onclick="return doclink('link-241', 'FRAMES_ABSOLUTE', 'link-45');">FRAMES_ABSOLUTE</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L1150"></a><tt class="py-lineno">1150</tt>  <tt class="py-line">            <tt class="py-name">eval_locals</tt><tt class="py-op">[</tt><tt class="py-string">'f_abs'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">frames_absolute</tt> </tt>
+<a name="L1151"></a><tt class="py-lineno">1151</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">restricted_namespace</tt><tt class="py-op">:</tt> </tt>
+<a name="L1152"></a><tt class="py-lineno">1152</tt>  <tt class="py-line">            <tt class="py-keyword">exec</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">between_go_exec_code</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">eval_globals</tt><tt class="py-op">,</tt><tt class="py-name">eval_locals</tt> </tt>
+<a name="L1153"></a><tt class="py-lineno">1153</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">eval_locals</tt><tt class="py-op">[</tt><tt class="py-string">'x'</tt><tt class="py-op">]</tt> </tt>
+<a name="L1154"></a><tt class="py-lineno">1154</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1155"></a><tt class="py-lineno">1155</tt>  <tt class="py-line">            <tt class="py-name">setup_locals_str</tt> <tt class="py-op">=</tt> <tt class="py-string">"\n"</tt> </tt>
+<a name="L1156"></a><tt class="py-lineno">1156</tt>  <tt class="py-line">            <tt class="py-keyword">for</tt> <tt class="py-name">local_variable_name</tt> <tt class="py-keyword">in</tt> <tt class="py-name">eval_locals</tt><tt class="py-op">.</tt><tt class="py-name">keys</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1157"></a><tt class="py-lineno">1157</tt>  <tt class="py-line">                <tt class="py-name">setup_locals_str</tt> <tt class="py-op">=</tt> <tt class="py-name">setup_locals_str</tt> <tt class="py-op">+</tt> <tt class="py-name">local_variable_name</tt> <tt class="py-op">+</tt> <tt class="py-string">"="</tt> <tt class="py-op">+</tt> <tt class="py-name">repr</tt><tt class="py-op">(</tt><tt class="py-name">eval_locals</tt><tt class="py-op">[</tt><tt class="py-name">local_vari [...]
+<a name="L1158"></a><tt class="py-lineno">1158</tt>  <tt class="py-line">                <tt class="py-keyword">exec</tt> <tt class="py-name">setup_locals_str</tt> </tt>
+<a name="L1159"></a><tt class="py-lineno">1159</tt>  <tt class="py-line">            <tt class="py-keyword">exec</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">between_go_exec_code</tt> </tt>
+<a name="L1160"></a><tt class="py-lineno">1160</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">x</tt> <tt class="py-comment"># x should be assigned by the exec string</tt> </tt>
+</div></div><a name="L1161"></a><tt class="py-lineno">1161</tt>  <tt class="py-line"> </tt>
+<a name="FunctionController"></a><div id="FunctionController-def"><a name="L1162"></a><tt class="py-lineno">1162</tt> <a class="py-toggle" href="#" id="FunctionController-toggle" onclick="return toggle('FunctionController');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.FlowControl.FunctionController-class.html">FunctionController</a><tt class="py-op">(</tt><tt class="py-base-class">Controller</tt><tt class="py-op">)</tt><tt class="py- [...]
+</div><div id="FunctionController-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="FunctionController-expanded"><a name="L1163"></a><tt class="py-lineno">1163</tt>  <tt class="py-line">    <tt class="py-docstring">"""Set parameters using a Python function.</tt> </tt>
+<a name="L1164"></a><tt class="py-lineno">1164</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1165"></a><tt class="py-lineno">1165</tt>  <tt class="py-line"><tt class="py-docstring">    This is a very commonly used subclass of Controller, because it is</tt> </tt>
+<a name="L1166"></a><tt class="py-lineno">1166</tt>  <tt class="py-line"><tt class="py-docstring">    very intuitive and requires a minimum of code to set up.  Many of</tt> </tt>
+<a name="L1167"></a><tt class="py-lineno">1167</tt>  <tt class="py-line"><tt class="py-docstring">    the Vision Egg demo programs create instances of</tt> </tt>
+<a name="L1168"></a><tt class="py-lineno">1168</tt>  <tt class="py-line"><tt class="py-docstring">    FunctionController.</tt> </tt>
+<a name="L1169"></a><tt class="py-lineno">1169</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1170"></a><tt class="py-lineno">1170</tt>  <tt class="py-line"><tt class="py-docstring">    A number of parameters are passed to the function depending on the</tt> </tt>
+<a name="L1171"></a><tt class="py-lineno">1171</tt>  <tt class="py-line"><tt class="py-docstring">    value of temporal_variables:</tt> </tt>
+<a name="L1172"></a><tt class="py-lineno">1172</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1173"></a><tt class="py-lineno">1173</tt>  <tt class="py-line"><tt class="py-docstring">    The function can make use of temporal variables, which are made</tt> </tt>
+<a name="L1174"></a><tt class="py-lineno">1174</tt>  <tt class="py-line"><tt class="py-docstring">    available by passingkeyword argument(s) depending on the</tt> </tt>
+<a name="L1175"></a><tt class="py-lineno">1175</tt>  <tt class="py-line"><tt class="py-docstring">    controller's temporal_variables attribute. Note that only the</tt> </tt>
+<a name="L1176"></a><tt class="py-lineno">1176</tt>  <tt class="py-line"><tt class="py-docstring">    absolute temporal variables are available when the go loop is not</tt> </tt>
+<a name="L1177"></a><tt class="py-lineno">1177</tt>  <tt class="py-line"><tt class="py-docstring">    running.</tt> </tt>
+<a name="L1178"></a><tt class="py-lineno">1178</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1179"></a><tt class="py-lineno">1179</tt>  <tt class="py-line"><tt class="py-docstring">    flag(s) present    argument  description</tt> </tt>
+<a name="L1180"></a><tt class="py-lineno">1180</tt>  <tt class="py-line"><tt class="py-docstring">    -----------------  --------  ----------------------------------</tt> </tt>
+<a name="L1181"></a><tt class="py-lineno">1181</tt>  <tt class="py-line"><tt class="py-docstring">    TIME_SEC_ABSOLUTE  t_abs     seconds, continuously increasing</tt> </tt>
+<a name="L1182"></a><tt class="py-lineno">1182</tt>  <tt class="py-line"><tt class="py-docstring">    TIME_SEC_SINCE_GO  t         seconds, reset to 0.0 each go loop</tt> </tt>
+<a name="L1183"></a><tt class="py-lineno">1183</tt>  <tt class="py-line"><tt class="py-docstring">    FRAMES_ABSOLUTE    f_abs     frames, continuously increasing</tt> </tt>
+<a name="L1184"></a><tt class="py-lineno">1184</tt>  <tt class="py-line"><tt class="py-docstring">    FRAMES_SINCE_GO    f         frames, reset to 0 each go loop</tt> </tt>
+<a name="L1185"></a><tt class="py-lineno">1185</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1186"></a><tt class="py-lineno">1186</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="FunctionController.__init__"></a><div id="FunctionController.__init__-def"><a name="L1187"></a><tt class="py-lineno">1187</tt> <a class="py-toggle" href="#" id="FunctionController.__init__-toggle" onclick="return toggle('FunctionController.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.FlowControl.FunctionController-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="p [...]
+<a name="L1188"></a><tt class="py-lineno">1188</tt>  <tt class="py-line">                 <tt class="py-param">during_go_func</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
+<a name="L1189"></a><tt class="py-lineno">1189</tt>  <tt class="py-line">                 <tt class="py-param">between_go_func</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
+<a name="L1190"></a><tt class="py-lineno">1190</tt>  <tt class="py-line">                 <tt class="py-op">**</tt><tt class="py-param">kw</tt> </tt>
+<a name="L1191"></a><tt class="py-lineno">1191</tt>  <tt class="py-line">                 <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="FunctionController.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="FunctionController.__init__-expanded"><a name="L1192"></a><tt class="py-lineno">1192</tt>  <tt class="py-line">        <tt class="py-docstring">"""Create an instance of FunctionController.</tt> </tt>
+<a name="L1193"></a><tt class="py-lineno">1193</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1194"></a><tt class="py-lineno">1194</tt>  <tt class="py-line"><tt class="py-docstring">        Arguments:</tt> </tt>
+<a name="L1195"></a><tt class="py-lineno">1195</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1196"></a><tt class="py-lineno">1196</tt>  <tt class="py-line"><tt class="py-docstring">        during_go_func -- function evaluted during go loop</tt> </tt>
+<a name="L1197"></a><tt class="py-lineno">1197</tt>  <tt class="py-line"><tt class="py-docstring">        between_go_func -- function evaluted not during go loop</tt> </tt>
+<a name="L1198"></a><tt class="py-lineno">1198</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1199"></a><tt class="py-lineno">1199</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L1200"></a><tt class="py-lineno">1200</tt>  <tt class="py-line">        <tt class="py-keyword">import</tt> <tt id="link-242" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-242', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-243" class="py-name"><a title="VisionEgg.Core" class="py-name" href="#" onclick="return doclink('link-243', 'Core', 'link-68');">Core</a></tt> <tt class="py-comment"># here to prev [...]
+<a name="L1201"></a><tt class="py-lineno">1201</tt>  <tt class="py-line"> </tt>
+<a name="L1202"></a><tt class="py-lineno">1202</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">during_go_func</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L1203"></a><tt class="py-lineno">1203</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">"Must specify during_go_func"</tt><tt class="py-op">)</tt> </tt>
+<a name="L1204"></a><tt class="py-lineno">1204</tt>  <tt class="py-line"> </tt>
+<a name="L1205"></a><tt class="py-lineno">1205</tt>  <tt class="py-line">        <tt class="py-comment"># Set default value if not set</tt> </tt>
+<a name="L1206"></a><tt class="py-lineno">1206</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">kw</tt><tt class="py-op">.</tt><tt class="py-name">setdefault</tt><tt class="py-op">(</tt><tt class="py-string">'temporal_variables'</tt><tt class="py-op">,</tt><tt id="link-244" class="py-name"><a title="VisionEgg.FlowControl.Controller.TIME_SEC_SINCE_GO
+VisionEgg.FlowControl.TIME_SEC_SINCE_GO" class="py-name" href="#" onclick="return doclink('link-244', 'TIME_SEC_SINCE_GO', 'link-57');">TIME_SEC_SINCE_GO</a></tt><tt class="py-op">)</tt> <tt class="py-comment"># default value</tt> </tt>
+<a name="L1207"></a><tt class="py-lineno">1207</tt>  <tt class="py-line"> </tt>
+<a name="L1208"></a><tt class="py-lineno">1208</tt>  <tt class="py-line">        <tt class="py-comment"># Check to make sure return_type is set</tt> </tt>
+<a name="L1209"></a><tt class="py-lineno">1209</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">kw</tt><tt class="py-op">.</tt><tt class="py-name">has_key</tt><tt class="py-op">(</tt><tt class="py-string">'return_type'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1210"></a><tt class="py-lineno">1210</tt>  <tt class="py-line">            <tt id="link-245" class="py-name"><a title="VisionEgg.logger" class="py-name" href="#" onclick="return doclink('link-245', 'logger', 'link-90');">logger</a></tt> <tt class="py-op">=</tt> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">getLogger</tt><tt class="py-op">(</tt><tt class="py-string">'VisionEgg.FlowControl'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1211"></a><tt class="py-lineno">1211</tt>  <tt class="py-line">            <tt id="link-246" class="py-name"><a title="VisionEgg.logger" class="py-name" href="#" onclick="return doclink('link-246', 'logger', 'link-90');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">debug</tt><tt class="py-op">(</tt><tt class="py-string">'Evaluating %s to test for return type.'</tt><tt class="py-op">%</tt><tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-op">(</tt>< [...]
+<a name="L1212"></a><tt class="py-lineno">1212</tt>  <tt class="py-line">            <tt class="py-name">call_args</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L1213"></a><tt class="py-lineno">1213</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">kw</tt><tt class="py-op">[</tt><tt class="py-string">'temporal_variables'</tt><tt class="py-op">]</tt> <tt class="py-op">&</tt> <tt id="link-247" class="py-name"><a title="VisionEgg.FlowControl.Controller.TIME_SEC_ABSOLUTE
+VisionEgg.FlowControl.TIME_SEC_ABSOLUTE" class="py-name" href="#" onclick="return doclink('link-247', 'TIME_SEC_ABSOLUTE', 'link-54');">TIME_SEC_ABSOLUTE</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L1214"></a><tt class="py-lineno">1214</tt>  <tt class="py-line">                <tt class="py-name">call_args</tt><tt class="py-op">[</tt><tt class="py-string">'t_abs'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt id="link-248" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-248', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-249" class="py-name"><a title="VisionEgg.time_func" class="py-nam [...]
+<a name="L1215"></a><tt class="py-lineno">1215</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">kw</tt><tt class="py-op">[</tt><tt class="py-string">'temporal_variables'</tt><tt class="py-op">]</tt> <tt class="py-op">&</tt> <tt id="link-250" class="py-name"><a title="VisionEgg.FlowControl.Controller.TIME_SEC_SINCE_GO
+VisionEgg.FlowControl.TIME_SEC_SINCE_GO" class="py-name" href="#" onclick="return doclink('link-250', 'TIME_SEC_SINCE_GO', 'link-57');">TIME_SEC_SINCE_GO</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L1216"></a><tt class="py-lineno">1216</tt>  <tt class="py-line">                <tt class="py-name">call_args</tt><tt class="py-op">[</tt><tt class="py-string">'t'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-number">0.0</tt> </tt>
+<a name="L1217"></a><tt class="py-lineno">1217</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">kw</tt><tt class="py-op">[</tt><tt class="py-string">'temporal_variables'</tt><tt class="py-op">]</tt> <tt class="py-op">&</tt> <tt id="link-251" class="py-name"><a title="VisionEgg.FlowControl.Controller.FRAMES_ABSOLUTE
+VisionEgg.FlowControl.FRAMES_ABSOLUTE" class="py-name" href="#" onclick="return doclink('link-251', 'FRAMES_ABSOLUTE', 'link-45');">FRAMES_ABSOLUTE</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L1218"></a><tt class="py-lineno">1218</tt>  <tt class="py-line">                <tt class="py-name">call_args</tt><tt class="py-op">[</tt><tt class="py-string">'f_abs'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L1219"></a><tt class="py-lineno">1219</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">kw</tt><tt class="py-op">[</tt><tt class="py-string">'temporal_variables'</tt><tt class="py-op">]</tt> <tt class="py-op">&</tt> <tt id="link-252" class="py-name"><a title="VisionEgg.FlowControl.Controller.FRAMES_SINCE_GO
+VisionEgg.FlowControl.FRAMES_SINCE_GO" class="py-name" href="#" onclick="return doclink('link-252', 'FRAMES_SINCE_GO', 'link-44');">FRAMES_SINCE_GO</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L1220"></a><tt class="py-lineno">1220</tt>  <tt class="py-line">                <tt class="py-name">call_args</tt><tt class="py-op">[</tt><tt class="py-string">'f'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L1221"></a><tt class="py-lineno">1221</tt>  <tt class="py-line">            <tt class="py-comment"># Call the function with time variables</tt> </tt>
+<a name="L1222"></a><tt class="py-lineno">1222</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">kw</tt><tt class="py-op">[</tt><tt class="py-string">'return_type'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-253" class="py-name"><a title="VisionEgg.ParameterTypes.get_type
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.get_type
+VisionEgg.get_type" class="py-name" href="#" onclick="return doclink('link-253', 'get_type', 'link-188');">get_type</a></tt><tt class="py-op">(</tt><tt class="py-name">during_go_func</tt><tt class="py-op">(</tt><tt class="py-op">**</tt><tt class="py-name">call_args</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1223"></a><tt class="py-lineno">1223</tt>  <tt class="py-line">        <tt id="link-254" class="py-name"><a title="VisionEgg.FlowControl.Controller" class="py-name" href="#" onclick="return doclink('link-254', 'Controller', 'link-46');">Controller</a></tt><tt class="py-op">.</tt><tt id="link-255" class="py-name"><a title="VisionEgg.ClassWithParameters.__init__
+VisionEgg.Configuration.Config.__init__
+VisionEgg.Core.FixationSpot.__init__
+VisionEgg.Core.FrameTimer.__init__
+VisionEgg.Core.ModelView.__init__
+VisionEgg.Core.OrthographicProjection.__init__
+VisionEgg.Core.OrthographicProjectionNoZClip.__init__
+VisionEgg.Core.PerspectiveProjection.__init__
+VisionEgg.Core.Projection.__init__
+VisionEgg.Core.ProjectionBaseClass.__init__
+VisionEgg.Core.Screen.__init__
+VisionEgg.Core.SimplePerspectiveProjection.__init__
+VisionEgg.Core.Stimulus.__init__
+VisionEgg.Core.Viewport.__init__
+VisionEgg.Daq.Channel.__init__
+VisionEgg.Daq.DaqMode.__init__
+VisionEgg.Daq.Device.__init__
+VisionEgg.Daq.Functionality.__init__
+VisionEgg.Daq.SignalType.__init__
+VisionEgg.DaqKeyboard.KeyboardTriggerInController.__init__
+VisionEgg.DaqLPT.LPTChannel.__init__
+VisionEgg.DaqLPT.LPTDevice.__init__
+VisionEgg.DaqLPT.LPTTriggerInController.__init__
+VisionEgg.DaqLPT.LPTTriggerOutController.__init__
+VisionEgg.Deprecated.Message.__init__
+VisionEgg.Dots.DotArea2D.__init__
+VisionEgg.FlowControl.ConstantController.__init__
+VisionEgg.FlowControl.Controller.__init__
+VisionEgg.FlowControl.EncapsulatedController.__init__
+VisionEgg.FlowControl.EvalStringController.__init__
+VisionEgg.FlowControl.ExecStringController.__init__
+VisionEgg.FlowControl.FunctionController.__init__
+VisionEgg.FlowControl.Presentation.__init__
+VisionEgg.GLTrace.Wrapper.__init__
+VisionEgg.GUI.AppWindow.__init__
+VisionEgg.GUI.GetKeypressDialog.__init__
+VisionEgg.GUI.GraphicsConfigurationWindow.__init__
+VisionEgg.GUI.InfoFrame.__init__
+VisionEgg.GUI.ProgressBar.__init__
+VisionEgg.GUI.ToplevelDialog.__init__
+VisionEgg.Gratings.SinGrating2D.__init__
+VisionEgg.Gratings.SinGrating3D.__init__
+VisionEgg.MoreStimuli.Arrow.__init__
+VisionEgg.MoreStimuli.FilledCircle.__init__
+VisionEgg.MoreStimuli.Rectangle3D.__init__
+VisionEgg.MoreStimuli.Target2D.__init__
+VisionEgg.ParameterTypes.AnyOf.__init__
+VisionEgg.ParameterTypes.Instance.__init__
+VisionEgg.ParameterTypes.Sequence.__init__
+VisionEgg.ParameterTypes.SubClass.__init__
+VisionEgg.PyroApps.AST_ext.AST_Visitor.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalMetaParameters.__init__
+VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.__init__
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.__init__
+VisionEgg.PyroApps.DropinGUI.DropinMetaParameters.__init__
+VisionEgg.PyroApps.DropinServer.DropinMetaController.__init__
+VisionEgg.PyroApps.EPhysGUI.AppWindow.__init__
+VisionEgg.PyroApps.EPhysGUI.BarButton.__init__
+VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase.__init__
+VisionEgg.PyroApps.EPhysGUI.GammaFrame.__init__
+VisionEgg.PyroApps.EPhysGUI.ImageSequenceLauncher.__init__
+VisionEgg.PyroApps.EPhysGUI.Loop.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopContainedObject.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopParamDialog.__init__
+VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.__init__
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.__init__
+VisionEgg.PyroApps.EPhysServer.EPhysServer.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingMetaParameters.__init__
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.GridGUI.GridControlFrame.__init__
+VisionEgg.PyroApps.GridGUI.GridMetaParameters.__init__
+VisionEgg.PyroApps.GridServer.GridMetaController.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetMetaParameters.__init__
+VisionEgg.PyroApps.MouseTargetServer.MousePositionController.__init__
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetOrientationController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetPositionController.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.CallbackEntry.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionParameters.__init__
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingMetaParameters.__init__
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumMetaParameters.__init__
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.__init__
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.__init__
+VisionEgg.PyroApps.TargetGUI.TargetMetaParameters.__init__
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.__init__
+VisionEgg.PyroClient.PyroClient.__init__
+VisionEgg.PyroHelpers.PyroConstantController.__init__
+VisionEgg.PyroHelpers.PyroEncapsulatedController.__init__
+VisionEgg.PyroHelpers.PyroEvalStringController.__init__
+VisionEgg.PyroHelpers.PyroExecStringController.__init__
+VisionEgg.PyroHelpers.PyroListenController.__init__
+VisionEgg.PyroHelpers.PyroLocalDictController.__init__
+VisionEgg.PyroHelpers.PyroServer.__init__
+VisionEgg.QuickTime.MovieTexture.__init__
+VisionEgg.ResponseControl.KeyboardResponseController.__init__
+VisionEgg.ResponseControl.ResponseController.__init__
+VisionEgg.SphereMap.AzElGrid.__init__
+VisionEgg.SphereMap.SphereGrating.__init__
+VisionEgg.SphereMap.SphereMap.__init__
+VisionEgg.SphereMap.SphereWindow.__init__
+VisionEgg.TCPController.SocketListenController.__init__
+VisionEgg.TCPController.TCPController.__init__
+VisionEgg.TCPController.TCPServer.__init__
+VisionEgg.Text.BitmapText.__init__
+VisionEgg.Text.GlutTextBase.__init__
+VisionEgg.Text.StrokeText.__init__
+VisionEgg.Text.Text.__init__
+VisionEgg.Textures.FixationCross.__init__
+VisionEgg.Textures.Mask2D.__init__
+VisionEgg.Textures.SpinningDrum.__init__
+VisionEgg.Textures.Texture.__init__
+VisionEgg.Textures.TextureFromFile.__init__
+VisionEgg.Textures.TextureObject.__init__
+VisionEgg.Textures.TextureStimulusBaseClass.__init__
+VisionEgg.ThreeDeeMath.TransformMatrix.__init__
+VisionEgg.WrappedText.WrappedText.__init__
+VisionEgg.qtmovie.Movie.__init__
+VisionEgg.qtmovie.Rect.__init__" class="py-name" href="#" onclick="return doclink('link-255', '__init__', 'link-30');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt><tt class="py-op">**</tt><tt class="py-name">kw</tt><tt class="py-op">)</tt> </tt>
+<a name="L1224"></a><tt class="py-lineno">1224</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">during_go_func</tt> <tt class="py-op">=</tt> <tt class="py-name">during_go_func</tt> </tt>
+<a name="L1225"></a><tt class="py-lineno">1225</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">between_go_func</tt> <tt class="py-op">=</tt> <tt class="py-name">between_go_func</tt> </tt>
+<a name="L1226"></a><tt class="py-lineno">1226</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">between_go_func</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L1227"></a><tt class="py-lineno">1227</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">eval_frequency</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">eval_frequency</tt><tt class="py-op">|</tt><tt id="link-256" class="py-name"><a title="VisionEgg.FlowControl.Controller.NOT_BETWEEN_GO
+VisionEgg.FlowControl.NOT_BETWEEN_GO" class="py-name" href="#" onclick="return doclink('link-256', 'NOT_BETWEEN_GO', 'link-60');">NOT_BETWEEN_GO</a></tt> </tt>
+</div><a name="L1228"></a><tt class="py-lineno">1228</tt>  <tt class="py-line"> </tt>
+<a name="FunctionController.during_go_eval"></a><div id="FunctionController.during_go_eval-def"><a name="L1229"></a><tt class="py-lineno">1229</tt> <a class="py-toggle" href="#" id="FunctionController.during_go_eval-toggle" onclick="return toggle('FunctionController.during_go_eval');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.FlowControl.FunctionController-class.html#during_go_eval">during_go_eval</a><tt class="py-op">(</tt><tt cl [...]
+</div><div id="FunctionController.during_go_eval-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="FunctionController.during_go_eval-expanded"><a name="L1230"></a><tt class="py-lineno">1230</tt>  <tt class="py-line">        <tt class="py-docstring">"""Called by Presentation. Overrides method in Controller base class."""</tt> </tt>
+<a name="L1231"></a><tt class="py-lineno">1231</tt>  <tt class="py-line">        <tt class="py-name">call_args</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L1232"></a><tt class="py-lineno">1232</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">temporal_variables</tt> <tt class="py-op">&</tt> <tt id="link-257" class="py-name"><a title="VisionEgg.FlowControl.Controller.TIME_SEC_ABSOLUTE
+VisionEgg.FlowControl.TIME_SEC_ABSOLUTE" class="py-name" href="#" onclick="return doclink('link-257', 'TIME_SEC_ABSOLUTE', 'link-54');">TIME_SEC_ABSOLUTE</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L1233"></a><tt class="py-lineno">1233</tt>  <tt class="py-line">            <tt class="py-name">call_args</tt><tt class="py-op">[</tt><tt class="py-string">'t_abs'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">time_sec_absolute</tt> </tt>
+<a name="L1234"></a><tt class="py-lineno">1234</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">temporal_variables</tt> <tt class="py-op">&</tt> <tt id="link-258" class="py-name"><a title="VisionEgg.FlowControl.Controller.TIME_SEC_SINCE_GO
+VisionEgg.FlowControl.TIME_SEC_SINCE_GO" class="py-name" href="#" onclick="return doclink('link-258', 'TIME_SEC_SINCE_GO', 'link-57');">TIME_SEC_SINCE_GO</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L1235"></a><tt class="py-lineno">1235</tt>  <tt class="py-line">            <tt class="py-name">call_args</tt><tt class="py-op">[</tt><tt class="py-string">'t'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">time_sec_since_go</tt> </tt>
+<a name="L1236"></a><tt class="py-lineno">1236</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">temporal_variables</tt> <tt class="py-op">&</tt> <tt id="link-259" class="py-name"><a title="VisionEgg.FlowControl.Controller.FRAMES_ABSOLUTE
+VisionEgg.FlowControl.FRAMES_ABSOLUTE" class="py-name" href="#" onclick="return doclink('link-259', 'FRAMES_ABSOLUTE', 'link-45');">FRAMES_ABSOLUTE</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L1237"></a><tt class="py-lineno">1237</tt>  <tt class="py-line">            <tt class="py-name">call_args</tt><tt class="py-op">[</tt><tt class="py-string">'f_abs'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">frames_absolute</tt> </tt>
+<a name="L1238"></a><tt class="py-lineno">1238</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">temporal_variables</tt> <tt class="py-op">&</tt> <tt id="link-260" class="py-name"><a title="VisionEgg.FlowControl.Controller.FRAMES_SINCE_GO
+VisionEgg.FlowControl.FRAMES_SINCE_GO" class="py-name" href="#" onclick="return doclink('link-260', 'FRAMES_SINCE_GO', 'link-44');">FRAMES_SINCE_GO</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L1239"></a><tt class="py-lineno">1239</tt>  <tt class="py-line">            <tt class="py-name">call_args</tt><tt class="py-op">[</tt><tt class="py-string">'f'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">frames_since_go</tt> </tt>
+<a name="L1240"></a><tt class="py-lineno">1240</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">during_go_func</tt><tt class="py-op">(</tt><tt class="py-op">**</tt><tt class="py-name">call_args</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1241"></a><tt class="py-lineno">1241</tt>  <tt class="py-line"> </tt>
+<a name="FunctionController.between_go_eval"></a><div id="FunctionController.between_go_eval-def"><a name="L1242"></a><tt class="py-lineno">1242</tt> <a class="py-toggle" href="#" id="FunctionController.between_go_eval-toggle" onclick="return toggle('FunctionController.between_go_eval');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.FlowControl.FunctionController-class.html#between_go_eval">between_go_eval</a><tt class="py-op">(</tt> [...]
+</div><div id="FunctionController.between_go_eval-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="FunctionController.between_go_eval-expanded"><a name="L1243"></a><tt class="py-lineno">1243</tt>  <tt class="py-line">        <tt class="py-docstring">"""Called by Presentation. Overrides method in Controller base class."""</tt> </tt>
+<a name="L1244"></a><tt class="py-lineno">1244</tt>  <tt class="py-line">        <tt class="py-name">call_args</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L1245"></a><tt class="py-lineno">1245</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">temporal_variables</tt> <tt class="py-op">&</tt> <tt id="link-261" class="py-name"><a title="VisionEgg.FlowControl.Controller.TIME_SEC_ABSOLUTE
+VisionEgg.FlowControl.TIME_SEC_ABSOLUTE" class="py-name" href="#" onclick="return doclink('link-261', 'TIME_SEC_ABSOLUTE', 'link-54');">TIME_SEC_ABSOLUTE</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L1246"></a><tt class="py-lineno">1246</tt>  <tt class="py-line">            <tt class="py-name">call_args</tt><tt class="py-op">[</tt><tt class="py-string">'t_abs'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">time_sec_absolute</tt> </tt>
+<a name="L1247"></a><tt class="py-lineno">1247</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">temporal_variables</tt> <tt class="py-op">&</tt> <tt id="link-262" class="py-name"><a title="VisionEgg.FlowControl.Controller.FRAMES_ABSOLUTE
+VisionEgg.FlowControl.FRAMES_ABSOLUTE" class="py-name" href="#" onclick="return doclink('link-262', 'FRAMES_ABSOLUTE', 'link-45');">FRAMES_ABSOLUTE</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L1248"></a><tt class="py-lineno">1248</tt>  <tt class="py-line">            <tt class="py-name">call_args</tt><tt class="py-op">[</tt><tt class="py-string">'f_abs'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">frames_absolute</tt> </tt>
+<a name="L1249"></a><tt class="py-lineno">1249</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">between_go_func</tt><tt class="py-op">(</tt><tt class="py-op">**</tt><tt class="py-name">call_args</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L1250"></a><tt class="py-lineno">1250</tt>  <tt class="py-line"> </tt>
+<a name="EncapsulatedController"></a><div id="EncapsulatedController-def"><a name="L1251"></a><tt class="py-lineno">1251</tt> <a class="py-toggle" href="#" id="EncapsulatedController-toggle" onclick="return toggle('EncapsulatedController');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.FlowControl.EncapsulatedController-class.html">EncapsulatedController</a><tt class="py-op">(</tt><tt class="py-base-class">Controller</tt><tt class="py- [...]
+</div><div id="EncapsulatedController-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="EncapsulatedController-expanded"><a name="L1252"></a><tt class="py-lineno">1252</tt>  <tt class="py-line">    <tt class="py-docstring">"""Set parameters by encapsulating another Controller.</tt> </tt>
+<a name="L1253"></a><tt class="py-lineno">1253</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1254"></a><tt class="py-lineno">1254</tt>  <tt class="py-line"><tt class="py-docstring">    Allows a new instance of Controller to control the same parameter</tt> </tt>
+<a name="L1255"></a><tt class="py-lineno">1255</tt>  <tt class="py-line"><tt class="py-docstring">    as an old instance.</tt> </tt>
+<a name="L1256"></a><tt class="py-lineno">1256</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1257"></a><tt class="py-lineno">1257</tt>  <tt class="py-line"><tt class="py-docstring">    You probably won't ever have to use this class directly.  Both the</tt> </tt>
+<a name="L1258"></a><tt class="py-lineno">1258</tt>  <tt class="py-line"><tt class="py-docstring">    VisionEgg.TCPController.TCPController and</tt> </tt>
+<a name="L1259"></a><tt class="py-lineno">1259</tt>  <tt class="py-line"><tt class="py-docstring">    VisionEgg.PyroHelpers.PyroEncapsulatedController classes subclass</tt> </tt>
+<a name="L1260"></a><tt class="py-lineno">1260</tt>  <tt class="py-line"><tt class="py-docstring">    this class.</tt> </tt>
+<a name="L1261"></a><tt class="py-lineno">1261</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1262"></a><tt class="py-lineno">1262</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="EncapsulatedController.__init__"></a><div id="EncapsulatedController.__init__-def"><a name="L1263"></a><tt class="py-lineno">1263</tt> <a class="py-toggle" href="#" id="EncapsulatedController.__init__-toggle" onclick="return toggle('EncapsulatedController.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.FlowControl.EncapsulatedController-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">s [...]
+</div><div id="EncapsulatedController.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="EncapsulatedController.__init__-expanded"><a name="L1264"></a><tt class="py-lineno">1264</tt>  <tt class="py-line">        <tt class="py-comment"># Initialize base class without raising error for no return_type</tt> </tt>
+<a name="L1265"></a><tt class="py-lineno">1265</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt id="link-263" class="py-name"><a title="VisionEgg.FlowControl.Controller" class="py-name" href="#" onclick="return doclink('link-263', 'Controller', 'link-46');">Controller</a></tt><tt class="py-op">.</tt><tt id="link-264" class="py-name"><a title="VisionEgg.ClassWithParameters.__init__
+VisionEgg.Configuration.Config.__init__
+VisionEgg.Core.FixationSpot.__init__
+VisionEgg.Core.FrameTimer.__init__
+VisionEgg.Core.ModelView.__init__
+VisionEgg.Core.OrthographicProjection.__init__
+VisionEgg.Core.OrthographicProjectionNoZClip.__init__
+VisionEgg.Core.PerspectiveProjection.__init__
+VisionEgg.Core.Projection.__init__
+VisionEgg.Core.ProjectionBaseClass.__init__
+VisionEgg.Core.Screen.__init__
+VisionEgg.Core.SimplePerspectiveProjection.__init__
+VisionEgg.Core.Stimulus.__init__
+VisionEgg.Core.Viewport.__init__
+VisionEgg.Daq.Channel.__init__
+VisionEgg.Daq.DaqMode.__init__
+VisionEgg.Daq.Device.__init__
+VisionEgg.Daq.Functionality.__init__
+VisionEgg.Daq.SignalType.__init__
+VisionEgg.DaqKeyboard.KeyboardTriggerInController.__init__
+VisionEgg.DaqLPT.LPTChannel.__init__
+VisionEgg.DaqLPT.LPTDevice.__init__
+VisionEgg.DaqLPT.LPTTriggerInController.__init__
+VisionEgg.DaqLPT.LPTTriggerOutController.__init__
+VisionEgg.Deprecated.Message.__init__
+VisionEgg.Dots.DotArea2D.__init__
+VisionEgg.FlowControl.ConstantController.__init__
+VisionEgg.FlowControl.Controller.__init__
+VisionEgg.FlowControl.EncapsulatedController.__init__
+VisionEgg.FlowControl.EvalStringController.__init__
+VisionEgg.FlowControl.ExecStringController.__init__
+VisionEgg.FlowControl.FunctionController.__init__
+VisionEgg.FlowControl.Presentation.__init__
+VisionEgg.GLTrace.Wrapper.__init__
+VisionEgg.GUI.AppWindow.__init__
+VisionEgg.GUI.GetKeypressDialog.__init__
+VisionEgg.GUI.GraphicsConfigurationWindow.__init__
+VisionEgg.GUI.InfoFrame.__init__
+VisionEgg.GUI.ProgressBar.__init__
+VisionEgg.GUI.ToplevelDialog.__init__
+VisionEgg.Gratings.SinGrating2D.__init__
+VisionEgg.Gratings.SinGrating3D.__init__
+VisionEgg.MoreStimuli.Arrow.__init__
+VisionEgg.MoreStimuli.FilledCircle.__init__
+VisionEgg.MoreStimuli.Rectangle3D.__init__
+VisionEgg.MoreStimuli.Target2D.__init__
+VisionEgg.ParameterTypes.AnyOf.__init__
+VisionEgg.ParameterTypes.Instance.__init__
+VisionEgg.ParameterTypes.Sequence.__init__
+VisionEgg.ParameterTypes.SubClass.__init__
+VisionEgg.PyroApps.AST_ext.AST_Visitor.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalMetaParameters.__init__
+VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.__init__
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.__init__
+VisionEgg.PyroApps.DropinGUI.DropinMetaParameters.__init__
+VisionEgg.PyroApps.DropinServer.DropinMetaController.__init__
+VisionEgg.PyroApps.EPhysGUI.AppWindow.__init__
+VisionEgg.PyroApps.EPhysGUI.BarButton.__init__
+VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase.__init__
+VisionEgg.PyroApps.EPhysGUI.GammaFrame.__init__
+VisionEgg.PyroApps.EPhysGUI.ImageSequenceLauncher.__init__
+VisionEgg.PyroApps.EPhysGUI.Loop.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopContainedObject.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopParamDialog.__init__
+VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.__init__
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.__init__
+VisionEgg.PyroApps.EPhysServer.EPhysServer.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingMetaParameters.__init__
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.GridGUI.GridControlFrame.__init__
+VisionEgg.PyroApps.GridGUI.GridMetaParameters.__init__
+VisionEgg.PyroApps.GridServer.GridMetaController.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetMetaParameters.__init__
+VisionEgg.PyroApps.MouseTargetServer.MousePositionController.__init__
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetOrientationController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetPositionController.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.CallbackEntry.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionParameters.__init__
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingMetaParameters.__init__
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumMetaParameters.__init__
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.__init__
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.__init__
+VisionEgg.PyroApps.TargetGUI.TargetMetaParameters.__init__
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.__init__
+VisionEgg.PyroClient.PyroClient.__init__
+VisionEgg.PyroHelpers.PyroConstantController.__init__
+VisionEgg.PyroHelpers.PyroEncapsulatedController.__init__
+VisionEgg.PyroHelpers.PyroEvalStringController.__init__
+VisionEgg.PyroHelpers.PyroExecStringController.__init__
+VisionEgg.PyroHelpers.PyroListenController.__init__
+VisionEgg.PyroHelpers.PyroLocalDictController.__init__
+VisionEgg.PyroHelpers.PyroServer.__init__
+VisionEgg.QuickTime.MovieTexture.__init__
+VisionEgg.ResponseControl.KeyboardResponseController.__init__
+VisionEgg.ResponseControl.ResponseController.__init__
+VisionEgg.SphereMap.AzElGrid.__init__
+VisionEgg.SphereMap.SphereGrating.__init__
+VisionEgg.SphereMap.SphereMap.__init__
+VisionEgg.SphereMap.SphereWindow.__init__
+VisionEgg.TCPController.SocketListenController.__init__
+VisionEgg.TCPController.TCPController.__init__
+VisionEgg.TCPController.TCPServer.__init__
+VisionEgg.Text.BitmapText.__init__
+VisionEgg.Text.GlutTextBase.__init__
+VisionEgg.Text.StrokeText.__init__
+VisionEgg.Text.Text.__init__
+VisionEgg.Textures.FixationCross.__init__
+VisionEgg.Textures.Mask2D.__init__
+VisionEgg.Textures.SpinningDrum.__init__
+VisionEgg.Textures.Texture.__init__
+VisionEgg.Textures.TextureFromFile.__init__
+VisionEgg.Textures.TextureObject.__init__
+VisionEgg.Textures.TextureStimulusBaseClass.__init__
+VisionEgg.ThreeDeeMath.TransformMatrix.__init__
+VisionEgg.WrappedText.WrappedText.__init__
+VisionEgg.qtmovie.Movie.__init__
+VisionEgg.qtmovie.Rect.__init__" class="py-name" href="#" onclick="return doclink('link-264', '__init__', 'link-30');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt><tt class="py-op">**</tt><tt class="py-op">{</tt><tt class="py-string">'return_type'</tt><tt class="py-op">:</tt><tt class="py-name">types</tt><tt class="py-op">.</tt><tt id="link-265" class="py-name"><a title="VisionEgg.ParameterTypes.NoneType" class="py-name" href="#" onclick= [...]
+<a name="L1266"></a><tt class="py-lineno">1266</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">contained_controller</tt> <tt class="py-op">=</tt> <tt class="py-name">initial_controller</tt> </tt>
+<a name="L1267"></a><tt class="py-lineno">1267</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__sync_mimic</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1268"></a><tt class="py-lineno">1268</tt>  <tt class="py-line"> </tt>
+<a name="EncapsulatedController.__sync_mimic"></a><div id="EncapsulatedController.__sync_mimic-def"><a name="L1269"></a><tt class="py-lineno">1269</tt> <a class="py-toggle" href="#" id="EncapsulatedController.__sync_mimic-toggle" onclick="return toggle('EncapsulatedController.__sync_mimic');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.FlowControl.EncapsulatedController-class.html#__sync_mimic">__sync_mimic</a><tt class="py-op">(</t [...]
+</div><div id="EncapsulatedController.__sync_mimic-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="EncapsulatedController.__sync_mimic-expanded"><a name="L1270"></a><tt class="py-lineno">1270</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">return_type</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">contained_controller</tt><tt class="py-op">.</tt> [...]
+<a name="L1271"></a><tt class="py-lineno">1271</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">temporal_variables</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">contained_controller</tt><tt class="py-op">.</tt><tt class="py-name">temporal_variables</tt> </tt>
+<a name="L1272"></a><tt class="py-lineno">1272</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">eval_frequency</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">contained_controller</tt><tt class="py-op">.</tt><tt class="py-name">eval_frequency</tt> </tt>
+</div><a name="L1273"></a><tt class="py-lineno">1273</tt>  <tt class="py-line"> </tt>
+<a name="EncapsulatedController.set_new_controller"></a><div id="EncapsulatedController.set_new_controller-def"><a name="L1274"></a><tt class="py-lineno">1274</tt> <a class="py-toggle" href="#" id="EncapsulatedController.set_new_controller-toggle" onclick="return toggle('EncapsulatedController.set_new_controller');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.FlowControl.EncapsulatedController-class.html#set_new_controller">set_new_ [...]
+</div><div id="EncapsulatedController.set_new_controller-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="EncapsulatedController.set_new_controller-expanded"><a name="L1275"></a><tt class="py-lineno">1275</tt>  <tt class="py-line">        <tt class="py-docstring">"""Call this to encapsulate a (new) controller."""</tt> </tt>
+<a name="L1276"></a><tt class="py-lineno">1276</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">contained_controller</tt> <tt class="py-op">=</tt> <tt class="py-name">new_controller</tt> </tt>
+<a name="L1277"></a><tt class="py-lineno">1277</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__sync_mimic</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1278"></a><tt class="py-lineno">1278</tt>  <tt class="py-line"> </tt>
+<a name="EncapsulatedController.during_go_eval"></a><div id="EncapsulatedController.during_go_eval-def"><a name="L1279"></a><tt class="py-lineno">1279</tt> <a class="py-toggle" href="#" id="EncapsulatedController.during_go_eval-toggle" onclick="return toggle('EncapsulatedController.during_go_eval');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.FlowControl.EncapsulatedController-class.html#during_go_eval">during_go_eval</a><tt class= [...]
+</div><div id="EncapsulatedController.during_go_eval-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="EncapsulatedController.during_go_eval-expanded"><a name="L1280"></a><tt class="py-lineno">1280</tt>  <tt class="py-line">        <tt class="py-docstring">"""Called by Presentation. Overrides method in Controller base class."""</tt> </tt>
+<a name="L1281"></a><tt class="py-lineno">1281</tt>  <tt class="py-line">        <tt class="py-keyword">import</tt> <tt id="link-266" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-266', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-267" class="py-name"><a title="VisionEgg.Core" class="py-name" href="#" onclick="return doclink('link-267', 'Core', 'link-68');">Core</a></tt> <tt class="py-comment"># here to prev [...]
+<a name="L1282"></a><tt class="py-lineno">1282</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">temporal_variables</tt> <tt class="py-op">&</tt> <tt id="link-268" class="py-name"><a title="VisionEgg.FlowControl.Controller.TIME_SEC_ABSOLUTE
+VisionEgg.FlowControl.TIME_SEC_ABSOLUTE" class="py-name" href="#" onclick="return doclink('link-268', 'TIME_SEC_ABSOLUTE', 'link-54');">TIME_SEC_ABSOLUTE</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L1283"></a><tt class="py-lineno">1283</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">contained_controller</tt><tt class="py-op">.</tt><tt class="py-name">time_sec_absolute</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">time_sec_absolute</tt> </tt>
+<a name="L1284"></a><tt class="py-lineno">1284</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">temporal_variables</tt> <tt class="py-op">&</tt> <tt id="link-269" class="py-name"><a title="VisionEgg.FlowControl.Controller.TIME_SEC_SINCE_GO
+VisionEgg.FlowControl.TIME_SEC_SINCE_GO" class="py-name" href="#" onclick="return doclink('link-269', 'TIME_SEC_SINCE_GO', 'link-57');">TIME_SEC_SINCE_GO</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L1285"></a><tt class="py-lineno">1285</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">contained_controller</tt><tt class="py-op">.</tt><tt class="py-name">time_sec_since_go</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">time_sec_since_go</tt> </tt>
+<a name="L1286"></a><tt class="py-lineno">1286</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">temporal_variables</tt> <tt class="py-op">&</tt> <tt id="link-270" class="py-name"><a title="VisionEgg.FlowControl.Controller.FRAMES_ABSOLUTE
+VisionEgg.FlowControl.FRAMES_ABSOLUTE" class="py-name" href="#" onclick="return doclink('link-270', 'FRAMES_ABSOLUTE', 'link-45');">FRAMES_ABSOLUTE</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L1287"></a><tt class="py-lineno">1287</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">contained_controller</tt><tt class="py-op">.</tt><tt class="py-name">frames_absolute</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">frames_absolute</tt> </tt>
+<a name="L1288"></a><tt class="py-lineno">1288</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">temporal_variables</tt> <tt class="py-op">&</tt> <tt id="link-271" class="py-name"><a title="VisionEgg.FlowControl.Controller.FRAMES_SINCE_GO
+VisionEgg.FlowControl.FRAMES_SINCE_GO" class="py-name" href="#" onclick="return doclink('link-271', 'FRAMES_SINCE_GO', 'link-44');">FRAMES_SINCE_GO</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L1289"></a><tt class="py-lineno">1289</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">contained_controller</tt><tt class="py-op">.</tt><tt class="py-name">frames_since_go</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">frames_since_go</tt> </tt>
+<a name="L1290"></a><tt class="py-lineno">1290</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">contained_controller</tt><tt class="py-op">.</tt><tt id="link-272" class="py-name"><a title="VisionEgg.DaqKeyboard.KeyboardTriggerInController.during_go_eval
+VisionEgg.DaqLPT.LPTTriggerInController.during_go_eval
+VisionEgg.DaqLPT.LPTTriggerOutController.during_go_eval
+VisionEgg.FlowControl.ConstantController.during_go_eval
+VisionEgg.FlowControl.Controller.during_go_eval
+VisionEgg.FlowControl.EncapsulatedController.during_go_eval
+VisionEgg.FlowControl.EvalStringController.during_go_eval
+VisionEgg.FlowControl.ExecStringController.during_go_eval
+VisionEgg.FlowControl.FunctionController.during_go_eval
+VisionEgg.PyroApps.MouseTargetServer.MousePositionController.during_go_eval
+VisionEgg.PyroApps.MouseTargetServer.TargetOrientationController.during_go_eval
+VisionEgg.PyroApps.MouseTargetServer.TargetPositionController.during_go_eval
+VisionEgg.PyroHelpers.PyroListenController.during_go_eval
+VisionEgg.ResponseControl.KeyboardResponseController.during_go_eval
+VisionEgg.ResponseControl.ResponseController.during_go_eval
+VisionEgg.TCPController.SocketListenController.during_go_eval" class="py-name" href="#" onclick="return doclink('link-272', 'during_go_eval', 'link-59');">during_go_eval</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1291"></a><tt class="py-lineno">1291</tt>  <tt class="py-line"> </tt>
+<a name="EncapsulatedController.between_go_eval"></a><div id="EncapsulatedController.between_go_eval-def"><a name="L1292"></a><tt class="py-lineno">1292</tt> <a class="py-toggle" href="#" id="EncapsulatedController.between_go_eval-toggle" onclick="return toggle('EncapsulatedController.between_go_eval');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.FlowControl.EncapsulatedController-class.html#between_go_eval">between_go_eval</a><tt  [...]
+</div><div id="EncapsulatedController.between_go_eval-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="EncapsulatedController.between_go_eval-expanded"><a name="L1293"></a><tt class="py-lineno">1293</tt>  <tt class="py-line">        <tt class="py-docstring">"""Called by Presentation. Overrides method in Controller base class."""</tt> </tt>
+<a name="L1294"></a><tt class="py-lineno">1294</tt>  <tt class="py-line">        <tt class="py-keyword">import</tt> <tt id="link-273" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-273', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-274" class="py-name"><a title="VisionEgg.Core" class="py-name" href="#" onclick="return doclink('link-274', 'Core', 'link-68');">Core</a></tt> <tt class="py-comment"># here to prev [...]
+<a name="L1295"></a><tt class="py-lineno">1295</tt>  <tt class="py-line">        <tt class="py-keyword">import</tt> <tt id="link-275" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-275', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-276" class="py-name" targets="Module VisionEgg.FlowControl=VisionEgg.FlowControl-module.html"><a title="VisionEgg.FlowControl" class="py-name" href="#" onclick="return doclink('lin [...]
+<a name="L1296"></a><tt class="py-lineno">1296</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">temporal_variables</tt> <tt class="py-op">&</tt> <tt id="link-277" class="py-name"><a title="VisionEgg.FlowControl.Controller.TIME_SEC_ABSOLUTE
+VisionEgg.FlowControl.TIME_SEC_ABSOLUTE" class="py-name" href="#" onclick="return doclink('link-277', 'TIME_SEC_ABSOLUTE', 'link-54');">TIME_SEC_ABSOLUTE</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L1297"></a><tt class="py-lineno">1297</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">contained_controller</tt><tt class="py-op">.</tt><tt class="py-name">time_sec_absolute</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">time_sec_absolute</tt> </tt>
+<a name="L1298"></a><tt class="py-lineno">1298</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">temporal_variables</tt> <tt class="py-op">&</tt> <tt id="link-278" class="py-name"><a title="VisionEgg.FlowControl.Controller.FRAMES_ABSOLUTE
+VisionEgg.FlowControl.FRAMES_ABSOLUTE" class="py-name" href="#" onclick="return doclink('link-278', 'FRAMES_ABSOLUTE', 'link-45');">FRAMES_ABSOLUTE</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L1299"></a><tt class="py-lineno">1299</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">contained_controller</tt><tt class="py-op">.</tt><tt class="py-name">frames_absolute</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">frames_absolute</tt> </tt>
+<a name="L1300"></a><tt class="py-lineno">1300</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">contained_controller</tt><tt class="py-op">.</tt><tt id="link-279" class="py-name"><a title="VisionEgg.DaqKeyboard.KeyboardTriggerInController.between_go_eval
+VisionEgg.DaqLPT.LPTTriggerInController.between_go_eval
+VisionEgg.DaqLPT.LPTTriggerOutController.between_go_eval
+VisionEgg.FlowControl.ConstantController.between_go_eval
+VisionEgg.FlowControl.Controller.between_go_eval
+VisionEgg.FlowControl.EncapsulatedController.between_go_eval
+VisionEgg.FlowControl.EvalStringController.between_go_eval
+VisionEgg.FlowControl.ExecStringController.between_go_eval
+VisionEgg.FlowControl.FunctionController.between_go_eval
+VisionEgg.PyroHelpers.PyroListenController.between_go_eval
+VisionEgg.ResponseControl.KeyboardResponseController.between_go_eval
+VisionEgg.ResponseControl.ResponseController.between_go_eval
+VisionEgg.TCPController.SocketListenController.between_go_eval" class="py-name" href="#" onclick="return doclink('link-279', 'between_go_eval', 'link-63');">between_go_eval</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L1301"></a><tt class="py-lineno">1301</tt>  <tt class="py-line"> </tt>
+<a name="L1302"></a><tt class="py-lineno">1302</tt>  <tt class="py-line"><tt class="py-comment"># Constants (These are a copy of the static class variables from the</tt> </tt>
+<a name="L1303"></a><tt class="py-lineno">1303</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Controller class into the module-level namespace. This is done for</tt> </tt>
+<a name="L1304"></a><tt class="py-lineno">1304</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># convenience.)</tt> </tt>
+<a name="L1305"></a><tt class="py-lineno">1305</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#     temporal_variables flags:</tt> </tt>
+<a name="L1306"></a><tt class="py-lineno">1306</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt id="link-280" class="py-name"><a title="VisionEgg.FlowControl.Controller.TIME_INDEPENDENT
+VisionEgg.FlowControl.TIME_INDEPENDENT" class="py-name" href="#" onclick="return doclink('link-280', 'TIME_INDEPENDENT', 'link-151');">TIME_INDEPENDENT</a></tt>  <tt class="py-op">=</tt> <tt id="link-281" class="py-name"><a title="VisionEgg.FlowControl.Controller" class="py-name" href="#" onclick="return doclink('link-281', 'Controller', 'link-46');">Controller</a></tt><tt class="py-op">.</tt><tt id="link-282" class="py-name"><a title="VisionEgg.FlowControl.Controller.TIME_INDEPENDENT
+VisionEgg.FlowControl.TIME_INDEPENDENT" class="py-name" href="#" onclick="return doclink('link-282', 'TIME_INDEPENDENT', 'link-151');">TIME_INDEPENDENT</a></tt> </tt>
+<a name="L1307"></a><tt class="py-lineno">1307</tt>  <tt class="py-line"><tt id="link-283" class="py-name"><a title="VisionEgg.FlowControl.Controller.TIME_SEC_ABSOLUTE
+VisionEgg.FlowControl.TIME_SEC_ABSOLUTE" class="py-name" href="#" onclick="return doclink('link-283', 'TIME_SEC_ABSOLUTE', 'link-54');">TIME_SEC_ABSOLUTE</a></tt> <tt class="py-op">=</tt> <tt id="link-284" class="py-name"><a title="VisionEgg.FlowControl.Controller" class="py-name" href="#" onclick="return doclink('link-284', 'Controller', 'link-46');">Controller</a></tt><tt class="py-op">.</tt><tt id="link-285" class="py-name"><a title="VisionEgg.FlowControl.Controller.TIME_SEC_ABSOLUTE
+VisionEgg.FlowControl.TIME_SEC_ABSOLUTE" class="py-name" href="#" onclick="return doclink('link-285', 'TIME_SEC_ABSOLUTE', 'link-54');">TIME_SEC_ABSOLUTE</a></tt> </tt>
+<a name="L1308"></a><tt class="py-lineno">1308</tt>  <tt class="py-line"><tt id="link-286" class="py-name"><a title="VisionEgg.FlowControl.Controller.TIME_SEC_SINCE_GO
+VisionEgg.FlowControl.TIME_SEC_SINCE_GO" class="py-name" href="#" onclick="return doclink('link-286', 'TIME_SEC_SINCE_GO', 'link-57');">TIME_SEC_SINCE_GO</a></tt> <tt class="py-op">=</tt> <tt id="link-287" class="py-name"><a title="VisionEgg.FlowControl.Controller" class="py-name" href="#" onclick="return doclink('link-287', 'Controller', 'link-46');">Controller</a></tt><tt class="py-op">.</tt><tt id="link-288" class="py-name"><a title="VisionEgg.FlowControl.Controller.TIME_SEC_SINCE_GO
+VisionEgg.FlowControl.TIME_SEC_SINCE_GO" class="py-name" href="#" onclick="return doclink('link-288', 'TIME_SEC_SINCE_GO', 'link-57');">TIME_SEC_SINCE_GO</a></tt> </tt>
+<a name="L1309"></a><tt class="py-lineno">1309</tt>  <tt class="py-line"><tt id="link-289" class="py-name"><a title="VisionEgg.FlowControl.Controller.FRAMES_ABSOLUTE
+VisionEgg.FlowControl.FRAMES_ABSOLUTE" class="py-name" href="#" onclick="return doclink('link-289', 'FRAMES_ABSOLUTE', 'link-45');">FRAMES_ABSOLUTE</a></tt>   <tt class="py-op">=</tt> <tt id="link-290" class="py-name"><a title="VisionEgg.FlowControl.Controller" class="py-name" href="#" onclick="return doclink('link-290', 'Controller', 'link-46');">Controller</a></tt><tt class="py-op">.</tt><tt id="link-291" class="py-name"><a title="VisionEgg.FlowControl.Controller.FRAMES_ABSOLUTE
+VisionEgg.FlowControl.FRAMES_ABSOLUTE" class="py-name" href="#" onclick="return doclink('link-291', 'FRAMES_ABSOLUTE', 'link-45');">FRAMES_ABSOLUTE</a></tt> </tt>
+<a name="L1310"></a><tt class="py-lineno">1310</tt>  <tt class="py-line"><tt id="link-292" class="py-name"><a title="VisionEgg.FlowControl.Controller.FRAMES_SINCE_GO
+VisionEgg.FlowControl.FRAMES_SINCE_GO" class="py-name" href="#" onclick="return doclink('link-292', 'FRAMES_SINCE_GO', 'link-44');">FRAMES_SINCE_GO</a></tt>   <tt class="py-op">=</tt> <tt id="link-293" class="py-name"><a title="VisionEgg.FlowControl.Controller" class="py-name" href="#" onclick="return doclink('link-293', 'Controller', 'link-46');">Controller</a></tt><tt class="py-op">.</tt><tt id="link-294" class="py-name"><a title="VisionEgg.FlowControl.Controller.FRAMES_SINCE_GO
+VisionEgg.FlowControl.FRAMES_SINCE_GO" class="py-name" href="#" onclick="return doclink('link-294', 'FRAMES_SINCE_GO', 'link-44');">FRAMES_SINCE_GO</a></tt> </tt>
+<a name="L1311"></a><tt class="py-lineno">1311</tt>  <tt class="py-line"><tt class="py-comment">#     eval_frequency flags:</tt> </tt>
+<a name="L1312"></a><tt class="py-lineno">1312</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt id="link-295" class="py-name"><a title="VisionEgg.FlowControl.Controller.NEVER
+VisionEgg.FlowControl.NEVER" class="py-name" href="#" onclick="return doclink('link-295', 'NEVER', 'link-156');">NEVER</a></tt>          <tt class="py-op">=</tt> <tt id="link-296" class="py-name"><a title="VisionEgg.FlowControl.Controller" class="py-name" href="#" onclick="return doclink('link-296', 'Controller', 'link-46');">Controller</a></tt><tt class="py-op">.</tt><tt id="link-297" class="py-name"><a title="VisionEgg.FlowControl.Controller.NEVER
+VisionEgg.FlowControl.NEVER" class="py-name" href="#" onclick="return doclink('link-297', 'NEVER', 'link-156');">NEVER</a></tt> </tt>
+<a name="L1313"></a><tt class="py-lineno">1313</tt>  <tt class="py-line"><tt id="link-298" class="py-name"><a title="VisionEgg.FlowControl.Controller.EVERY_FRAME
+VisionEgg.FlowControl.EVERY_FRAME" class="py-name" href="#" onclick="return doclink('link-298', 'EVERY_FRAME', 'link-53');">EVERY_FRAME</a></tt>    <tt class="py-op">=</tt> <tt id="link-299" class="py-name"><a title="VisionEgg.FlowControl.Controller" class="py-name" href="#" onclick="return doclink('link-299', 'Controller', 'link-46');">Controller</a></tt><tt class="py-op">.</tt><tt id="link-300" class="py-name"><a title="VisionEgg.FlowControl.Controller.EVERY_FRAME
+VisionEgg.FlowControl.EVERY_FRAME" class="py-name" href="#" onclick="return doclink('link-300', 'EVERY_FRAME', 'link-53');">EVERY_FRAME</a></tt> </tt>
+<a name="L1314"></a><tt class="py-lineno">1314</tt>  <tt class="py-line"><tt id="link-301" class="py-name"><a title="VisionEgg.FlowControl.Controller.TRANSITIONS
+VisionEgg.FlowControl.TRANSITIONS" class="py-name" href="#" onclick="return doclink('link-301', 'TRANSITIONS', 'link-52');">TRANSITIONS</a></tt>    <tt class="py-op">=</tt> <tt id="link-302" class="py-name"><a title="VisionEgg.FlowControl.Controller" class="py-name" href="#" onclick="return doclink('link-302', 'Controller', 'link-46');">Controller</a></tt><tt class="py-op">.</tt><tt id="link-303" class="py-name"><a title="VisionEgg.FlowControl.Controller.TRANSITIONS
+VisionEgg.FlowControl.TRANSITIONS" class="py-name" href="#" onclick="return doclink('link-303', 'TRANSITIONS', 'link-52');">TRANSITIONS</a></tt> </tt>
+<a name="L1315"></a><tt class="py-lineno">1315</tt>  <tt class="py-line"><tt id="link-304" class="py-name"><a title="VisionEgg.FlowControl.Controller.ONCE
+VisionEgg.FlowControl.ONCE" class="py-name" href="#" onclick="return doclink('link-304', 'ONCE', 'link-51');">ONCE</a></tt>           <tt class="py-op">=</tt> <tt id="link-305" class="py-name"><a title="VisionEgg.FlowControl.Controller" class="py-name" href="#" onclick="return doclink('link-305', 'Controller', 'link-46');">Controller</a></tt><tt class="py-op">.</tt><tt id="link-306" class="py-name"><a title="VisionEgg.FlowControl.Controller.ONCE
+VisionEgg.FlowControl.ONCE" class="py-name" href="#" onclick="return doclink('link-306', 'ONCE', 'link-51');">ONCE</a></tt> </tt>
+<a name="L1316"></a><tt class="py-lineno">1316</tt>  <tt class="py-line"><tt id="link-307" class="py-name"><a title="VisionEgg.FlowControl.Controller.NOT_DURING_GO
+VisionEgg.FlowControl.NOT_DURING_GO" class="py-name" href="#" onclick="return doclink('link-307', 'NOT_DURING_GO', 'link-56');">NOT_DURING_GO</a></tt>  <tt class="py-op">=</tt> <tt id="link-308" class="py-name"><a title="VisionEgg.FlowControl.Controller" class="py-name" href="#" onclick="return doclink('link-308', 'Controller', 'link-46');">Controller</a></tt><tt class="py-op">.</tt><tt id="link-309" class="py-name"><a title="VisionEgg.FlowControl.Controller.NOT_DURING_GO
+VisionEgg.FlowControl.NOT_DURING_GO" class="py-name" href="#" onclick="return doclink('link-309', 'NOT_DURING_GO', 'link-56');">NOT_DURING_GO</a></tt> </tt>
+<a name="L1317"></a><tt class="py-lineno">1317</tt>  <tt class="py-line"><tt id="link-310" class="py-name"><a title="VisionEgg.FlowControl.Controller.NOT_BETWEEN_GO
+VisionEgg.FlowControl.NOT_BETWEEN_GO" class="py-name" href="#" onclick="return doclink('link-310', 'NOT_BETWEEN_GO', 'link-60');">NOT_BETWEEN_GO</a></tt> <tt class="py-op">=</tt> <tt id="link-311" class="py-name"><a title="VisionEgg.FlowControl.Controller" class="py-name" href="#" onclick="return doclink('link-311', 'Controller', 'link-46');">Controller</a></tt><tt class="py-op">.</tt><tt id="link-312" class="py-name"><a title="VisionEgg.FlowControl.Controller.NOT_BETWEEN_GO
+VisionEgg.FlowControl.NOT_BETWEEN_GO" class="py-name" href="#" onclick="return doclink('link-312', 'NOT_BETWEEN_GO', 'link-60');">NOT_BETWEEN_GO</a></tt> </tt>
+<a name="L1318"></a><tt class="py-lineno">1318</tt>  <tt class="py-line"> </tt><script type="text/javascript">
+<!--
+expandto(location.href);
+// -->
+</script>
+</pre>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:48 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.FlowControl.ConstantController-class.html b/doc/reference/html/VisionEgg.FlowControl.ConstantController-class.html
new file mode 100644
index 0000000..27d2c54
--- /dev/null
+++ b/doc/reference/html/VisionEgg.FlowControl.ConstantController-class.html
@@ -0,0 +1,415 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.FlowControl.ConstantController</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.FlowControl-module.html">Module FlowControl</a> ::
+        Class ConstantController
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.FlowControl.ConstantController-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class ConstantController</h1><span class="codelink"><a href="VisionEgg.FlowControl-pysrc.html#ConstantController">source code</a></span><br /><br />
+<pre class="base-tree">
+object --+    
+         |    
+<a href="VisionEgg.FlowControl.Controller-class.html">Controller</a> --+
+             |
+            <strong class="uidshort">ConstantController</strong>
+</pre>
+
+<hr />
+<pre class="literalblock">
+Set parameters to a constant value.
+
+</pre><br /><br />
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.FlowControl.ConstantController-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">during_go_value</span>=<span class="summary-sig-default">None</span>,
+        <span class="summary-sig-arg">between_go_value</span>=<span class="summary-sig-default">None</span>,
+        <span class="summary-sig-arg">**kw</span>)</span><br />
+      Create instance of Controller.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.FlowControl-pysrc.html#ConstantController.__init__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="set_during_go_value"></a><span class="summary-sig-name">set_during_go_value</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">during_go_value</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.FlowControl-pysrc.html#ConstantController.set_during_go_value">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="get_during_go_value"></a><span class="summary-sig-name">get_during_go_value</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.FlowControl-pysrc.html#ConstantController.get_during_go_value">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="set_between_go_value"></a><span class="summary-sig-name">set_between_go_value</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">between_go_value</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.FlowControl-pysrc.html#ConstantController.set_between_go_value">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="get_between_go_value"></a><span class="summary-sig-name">get_between_go_value</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.FlowControl-pysrc.html#ConstantController.get_between_go_value">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.FlowControl.ConstantController-class.html#during_go_eval" class="summary-sig-name">during_go_eval</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      Called by Presentation.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.FlowControl-pysrc.html#ConstantController.during_go_eval">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.FlowControl.ConstantController-class.html#between_go_eval" class="summary-sig-name">between_go_eval</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      Called by Presentation.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.FlowControl-pysrc.html#ConstantController.between_go_eval">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.FlowControl.Controller-class.html">Controller</a></code></b>:
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#evaluate_now">evaluate_now</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#returns_type">returns_type</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#set_eval_frequency">set_eval_frequency</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__delattr__</code>,
+      <code>__getattribute__</code>,
+      <code>__hash__</code>,
+      <code>__new__</code>,
+      <code>__reduce__</code>,
+      <code>__reduce_ex__</code>,
+      <code>__repr__</code>,
+      <code>__setattr__</code>,
+      <code>__str__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Class Variables</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.FlowControl.Controller-class.html">Controller</a></code></b>:
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#EVERY_FRAME">EVERY_FRAME</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#FRAMES_ABSOLUTE">FRAMES_ABSOLUTE</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#FRAMES_SINCE_GO">FRAMES_SINCE_GO</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#NEVER">NEVER</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#NOT_BETWEEN_GO">NOT_BETWEEN_GO</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#NOT_DURING_GO">NOT_DURING_GO</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#ONCE">ONCE</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#TIME_INDEPENDENT">TIME_INDEPENDENT</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#TIME_SEC_ABSOLUTE">TIME_SEC_ABSOLUTE</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#TIME_SEC_SINCE_GO">TIME_SEC_SINCE_GO</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#TRANSITIONS">TRANSITIONS</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#flag_dictionary">flag_dictionary</a></code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Properties</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__class__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Method Details</span></td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">during_go_value</span>=<span class="sig-default">None</span>,
+        <span class="sig-arg">between_go_value</span>=<span class="sig-default">None</span>,
+        <span class="sig-arg">**kw</span>)</span>
+    <br /><em class="fname">(Constructor)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.FlowControl-pysrc.html#ConstantController.__init__">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Create instance of Controller.
+
+Arguments:
+
+eval_frequency -- Int, bitwise "or" of flags
+temporal_variables -- Int, bitwise "or" of flags
+return_type -- Set to type() of the parameter under control
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.FlowControl.Controller-class.html#__init__">Controller.__init__</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="during_go_eval"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">during_go_eval</span>(<span class="sig-arg">self</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.FlowControl-pysrc.html#ConstantController.during_go_eval">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Called by Presentation. Overrides method in Controller base class.
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.FlowControl.Controller-class.html#during_go_eval">Controller.during_go_eval</a>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="between_go_eval"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">between_go_eval</span>(<span class="sig-arg">self</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.FlowControl-pysrc.html#ConstantController.between_go_eval">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Called by Presentation. Overrides method in Controller base class.
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.FlowControl.Controller-class.html#between_go_eval">Controller.between_go_eval</a>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.FlowControl.Controller-class.html b/doc/reference/html/VisionEgg.FlowControl.Controller-class.html
new file mode 100644
index 0000000..a7cf32e
--- /dev/null
+++ b/doc/reference/html/VisionEgg.FlowControl.Controller-class.html
@@ -0,0 +1,595 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.FlowControl.Controller</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.FlowControl-module.html">Module FlowControl</a> ::
+        Class Controller
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.FlowControl.Controller-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class Controller</h1><span class="codelink"><a href="VisionEgg.FlowControl-pysrc.html#Controller">source code</a></span><br /><br />
+<pre class="base-tree">
+object --+
+         |
+        <strong class="uidshort">Controller</strong>
+</pre>
+
+<hr />
+<pre class="literalblock">
+Control parameters.
+
+This abstract base class defines the interface to any controller.
+
+Methods:
+
+returns_type() -- Get the type of the value returned by the eval functions
+during_go_eval() -- Evaluate controller during the main 'go' loop.
+between_go_eval() -- Evaluate controller between runs of the main 'go' loop.
+
+The during_go_eval() and between_go_eval() methods are called to
+update a particular parameter such as the position of a stimulus
+on the screen.  These methods must return a value specified by the
+returns_type() method.  These methods are called at particular
+intervals as specified by eval_frequency and with temporal
+parameters specified by temporal_variables (see below for more
+details).  Also, see the documentation for the Presentation class.
+
+Attributes:
+
+return_type -- type of the value returned by the eval functions
+eval_frequency -- when eval functions called (see above)
+temporal_variables -- what time variables used (see above)
+
+A Controller instance's attribute "eval_frequency" controls when a
+controller is evaluated. This variable is a bitwise "or" (the |
+operator) of the following flags:
+
+EVERY_FRAME    -- every frame
+TRANSITIONS    -- on enter and exit from go loop
+ONCE           -- at the next chance possible (see below)
+NOT_DURING_GO  -- as above, but never during go loop (see below)
+NOT_BETWEEN_GO -- as above, but never between go loops (see below)
+
+The ONCE flag is automatically unset after evaluation,
+hence its name. As an example, if eval_frequency is set to
+ONCE | TRANSITIONS, it will be evaluated
+before drawing the next frame and then only before and after the
+go loop.
+
+NOT_DURING_GO and NOT_BETWEEN_GO modify other behavior. For
+example, to evaluate a controller on every frame during go loops
+but not between go loops:
+
+eval_frequency = EVERY_FRAME | NOT_BETWEEN_GO
+
+If none of the above flags is set, the value is:
+
+NEVER          -- this controller is never called
+
+A Controller instance's attribute "temporal_variables" controls
+what time variables are set for use. This variable is a bitwise
+"or" of the following flags:
+
+TIME_SEC_ABSOLUTE -- seconds, continuously increasing
+TIME_SEC_SINCE_GO -- seconds, reset to 0.0 each go loop
+FRAMES_ABSOLUTE   -- frames, continuously increasing
+FRAMES_SINCE_GO   -- frames, reset to 0 each go loop
+
+If none of these flags is set, the value is:
+
+TIME_INDEPENDENT -- No temporal variables.
+
+When the eval methods (during_go_eval and between_go_eval) are
+called, attributes are set depending on the temporal variables
+used:
+
+temporal_variable   attribute set
+-----------------   -------------
+TIME_SEC_ABSOLUTE   self.time_sec_absolute
+TIME_SEC_SINCE_GO   self.time_sec_since_go
+FRAMES_ABSOLUTE     self.frames_absolute
+FRAMES_SINCE_GO     self.frames_since_go
+
+Other information:
+
+Instances of Controller are called by instances of the
+Presentation class.  during_go_eval() is called during a go()
+loop, and between_go_eval() is called by between_presentations()
+(during run_forever(), for example).  Before calling these
+methods, attributes of the controller are set accoring to
+ttribute{temporal_variables}.
+
+</pre><br /><br />
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.FlowControl.Controller-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">eval_frequency</span>=<span class="summary-sig-default">EVERY_FRAME</span>,
+        <span class="summary-sig-arg">temporal_variables</span>=<span class="summary-sig-default">TIME_SEC_SINCE_GO</span>,
+        <span class="summary-sig-arg">return_type</span>=<span class="summary-sig-default">None</span>)</span><br />
+      Create instance of Controller.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.FlowControl-pysrc.html#Controller.__init__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="evaluate_now"></a><span class="summary-sig-name">evaluate_now</span>(<span class="summary-sig-arg">self</span>)</span><br />
+      Call this after updating the values of a controller if it's not evaluated EVERY_FRAME.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.FlowControl-pysrc.html#Controller.evaluate_now">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="set_eval_frequency"></a><span class="summary-sig-name">set_eval_frequency</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">eval_frequency</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.FlowControl-pysrc.html#Controller.set_eval_frequency">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.FlowControl.Controller-class.html#returns_type" class="summary-sig-name">returns_type</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      Called by Presentation.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.FlowControl-pysrc.html#Controller.returns_type">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.FlowControl.Controller-class.html#during_go_eval" class="summary-sig-name">during_go_eval</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      Called by Presentation.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.FlowControl-pysrc.html#Controller.during_go_eval">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.FlowControl.Controller-class.html#between_go_eval" class="summary-sig-name">between_go_eval</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      Called by Presentation.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.FlowControl-pysrc.html#Controller.between_go_eval">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__delattr__</code>,
+      <code>__getattribute__</code>,
+      <code>__hash__</code>,
+      <code>__new__</code>,
+      <code>__reduce__</code>,
+      <code>__reduce_ex__</code>,
+      <code>__repr__</code>,
+      <code>__setattr__</code>,
+      <code>__str__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Class Variables</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="TIME_INDEPENDENT"></a><span class="summary-name">TIME_INDEPENDENT</span> = <code title="0x00">0x00</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="TIME_SEC_ABSOLUTE"></a><span class="summary-name">TIME_SEC_ABSOLUTE</span> = <code title="0x01">0x01</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="TIME_SEC_SINCE_GO"></a><span class="summary-name">TIME_SEC_SINCE_GO</span> = <code title="0x02">0x02</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="FRAMES_ABSOLUTE"></a><span class="summary-name">FRAMES_ABSOLUTE</span> = <code title="0x04">0x04</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="FRAMES_SINCE_GO"></a><span class="summary-name">FRAMES_SINCE_GO</span> = <code title="0x08">0x08</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="NEVER"></a><span class="summary-name">NEVER</span> = <code title="0x00">0x00</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="EVERY_FRAME"></a><span class="summary-name">EVERY_FRAME</span> = <code title="0x01">0x01</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="TRANSITIONS"></a><span class="summary-name">TRANSITIONS</span> = <code title="0x02">0x02</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="ONCE"></a><span class="summary-name">ONCE</span> = <code title="0x04">0x04</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="NOT_DURING_GO"></a><span class="summary-name">NOT_DURING_GO</span> = <code title="0x08">0x08</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="NOT_BETWEEN_GO"></a><span class="summary-name">NOT_BETWEEN_GO</span> = <code title="0x10">0x10</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.FlowControl.Controller-class.html#flag_dictionary" class="summary-name">flag_dictionary</a> = <code title="{'TIME_INDEPENDENT': TIME_INDEPENDENT, 'TIME_SEC_ABSOLUTE': TIME_SEC_A\
+BSOLUTE, 'TIME_SEC_SINCE_GO': TIME_SEC_SINCE_GO, 'FRAMES_ABSOLUTE': FR\
+AMES_ABSOLUTE, 'FRAMES_SINCE_GO': FRAMES_SINCE_GO, 'NEVER': NEVER, 'EV\
+ERY_FRAME': EVERY_FRAME, 'TRANSITIONS': TRANSITIONS, 'ONCE': ONCE, 'NO\
+T_DURING_GO': NOT_DURING_GO, 'NOT_BETWEEN_GO': NOT_BETWEEN_GO}">{'TIME_INDEPENDENT': TIME_INDEPENDENT, 'TIME<code class="variable-ellipsis">...</code></code>
+    </td>
+  </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Properties</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__class__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Method Details</span></td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">eval_frequency</span>=<span class="sig-default">EVERY_FRAME</span>,
+        <span class="sig-arg">temporal_variables</span>=<span class="sig-default">TIME_SEC_SINCE_GO</span>,
+        <span class="sig-arg">return_type</span>=<span class="sig-default">None</span>)</span>
+    <br /><em class="fname">(Constructor)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.FlowControl-pysrc.html#Controller.__init__">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Create instance of Controller.
+
+Arguments:
+
+eval_frequency -- Int, bitwise "or" of flags
+temporal_variables -- Int, bitwise "or" of flags
+return_type -- Set to type() of the parameter under control
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      object.__init__
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="returns_type"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">returns_type</span>(<span class="sig-arg">self</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.FlowControl-pysrc.html#Controller.returns_type">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Called by Presentation. Get the return type of this controller.
+
+</pre>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<a name="during_go_eval"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">during_go_eval</span>(<span class="sig-arg">self</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.FlowControl-pysrc.html#Controller.during_go_eval">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Called by Presentation. Evaluate during the main 'go' loop.
+
+Override this method in subclasses.
+
+</pre>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<a name="between_go_eval"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">between_go_eval</span>(<span class="sig-arg">self</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.FlowControl-pysrc.html#Controller.between_go_eval">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Called by Presentation. Evaluate between runs of the main 'go' loop.
+
+Override this method in subclasses.
+
+</pre>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== CLASS VARIABLE DETAILS ==================== -->
+<a name="section-ClassVariableDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Class Variable Details</span></td>
+</tr>
+</table>
+<a name="flag_dictionary"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">flag_dictionary</h3>
+  
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+{'TIME_INDEPENDENT': TIME_INDEPENDENT, 'TIME_SEC_ABSOLUTE': TIME_SEC_A<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+BSOLUTE, 'TIME_SEC_SINCE_GO': TIME_SEC_SINCE_GO, 'FRAMES_ABSOLUTE': FR<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+AMES_ABSOLUTE, 'FRAMES_SINCE_GO': FRAMES_SINCE_GO, 'NEVER': NEVER, 'EV<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+ERY_FRAME': EVERY_FRAME, 'TRANSITIONS': TRANSITIONS, 'ONCE': ONCE, 'NO<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+T_DURING_GO': NOT_DURING_GO, 'NOT_BETWEEN_GO': NOT_BETWEEN_GO}
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.FlowControl.EncapsulatedController-class.html b/doc/reference/html/VisionEgg.FlowControl.EncapsulatedController-class.html
new file mode 100644
index 0000000..eef3136
--- /dev/null
+++ b/doc/reference/html/VisionEgg.FlowControl.EncapsulatedController-class.html
@@ -0,0 +1,371 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.FlowControl.EncapsulatedController</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.FlowControl-module.html">Module FlowControl</a> ::
+        Class EncapsulatedController
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.FlowControl.EncapsulatedController-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class EncapsulatedController</h1><span class="codelink"><a href="VisionEgg.FlowControl-pysrc.html#EncapsulatedController">source code</a></span><br /><br />
+<pre class="base-tree">
+object --+    
+         |    
+<a href="VisionEgg.FlowControl.Controller-class.html">Controller</a> --+
+             |
+            <strong class="uidshort">EncapsulatedController</strong>
+</pre>
+
+<hr />
+<pre class="literalblock">
+Set parameters by encapsulating another Controller.
+
+Allows a new instance of Controller to control the same parameter
+as an old instance.
+
+You probably won't ever have to use this class directly.  Both the
+VisionEgg.TCPController.TCPController and
+VisionEgg.PyroHelpers.PyroEncapsulatedController classes subclass
+this class.
+
+</pre><br /><br />
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.FlowControl.EncapsulatedController-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">initial_controller</span>)</span><br />
+      Create instance of Controller.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.FlowControl-pysrc.html#EncapsulatedController.__init__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="set_new_controller"></a><span class="summary-sig-name">set_new_controller</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">new_controller</span>)</span><br />
+      Call this to encapsulate a (new) controller.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.FlowControl-pysrc.html#EncapsulatedController.set_new_controller">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.FlowControl.EncapsulatedController-class.html#during_go_eval" class="summary-sig-name">during_go_eval</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      Called by Presentation.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.FlowControl-pysrc.html#EncapsulatedController.during_go_eval">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.FlowControl.EncapsulatedController-class.html#between_go_eval" class="summary-sig-name">between_go_eval</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      Called by Presentation.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.FlowControl-pysrc.html#EncapsulatedController.between_go_eval">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.FlowControl.Controller-class.html">Controller</a></code></b>:
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#evaluate_now">evaluate_now</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#returns_type">returns_type</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#set_eval_frequency">set_eval_frequency</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__delattr__</code>,
+      <code>__getattribute__</code>,
+      <code>__hash__</code>,
+      <code>__new__</code>,
+      <code>__reduce__</code>,
+      <code>__reduce_ex__</code>,
+      <code>__repr__</code>,
+      <code>__setattr__</code>,
+      <code>__str__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Class Variables</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.FlowControl.Controller-class.html">Controller</a></code></b>:
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#EVERY_FRAME">EVERY_FRAME</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#FRAMES_ABSOLUTE">FRAMES_ABSOLUTE</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#FRAMES_SINCE_GO">FRAMES_SINCE_GO</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#NEVER">NEVER</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#NOT_BETWEEN_GO">NOT_BETWEEN_GO</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#NOT_DURING_GO">NOT_DURING_GO</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#ONCE">ONCE</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#TIME_INDEPENDENT">TIME_INDEPENDENT</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#TIME_SEC_ABSOLUTE">TIME_SEC_ABSOLUTE</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#TIME_SEC_SINCE_GO">TIME_SEC_SINCE_GO</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#TRANSITIONS">TRANSITIONS</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#flag_dictionary">flag_dictionary</a></code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Properties</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__class__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Method Details</span></td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">initial_controller</span>)</span>
+    <br /><em class="fname">(Constructor)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.FlowControl-pysrc.html#EncapsulatedController.__init__">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Create instance of Controller.
+
+Arguments:
+
+eval_frequency -- Int, bitwise "or" of flags
+temporal_variables -- Int, bitwise "or" of flags
+return_type -- Set to type() of the parameter under control
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.FlowControl.Controller-class.html#__init__">Controller.__init__</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="during_go_eval"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">during_go_eval</span>(<span class="sig-arg">self</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.FlowControl-pysrc.html#EncapsulatedController.during_go_eval">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Called by Presentation. Overrides method in Controller base class.
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.FlowControl.Controller-class.html#during_go_eval">Controller.during_go_eval</a>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="between_go_eval"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">between_go_eval</span>(<span class="sig-arg">self</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.FlowControl-pysrc.html#EncapsulatedController.between_go_eval">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Called by Presentation. Overrides method in Controller base class.
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.FlowControl.Controller-class.html#between_go_eval">Controller.between_go_eval</a>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.FlowControl.EvalStringController-class.html b/doc/reference/html/VisionEgg.FlowControl.EvalStringController-class.html
new file mode 100644
index 0000000..b3d8aae
--- /dev/null
+++ b/doc/reference/html/VisionEgg.FlowControl.EvalStringController-class.html
@@ -0,0 +1,433 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.FlowControl.EvalStringController</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.FlowControl-module.html">Module FlowControl</a> ::
+        Class EvalStringController
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.FlowControl.EvalStringController-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class EvalStringController</h1><span class="codelink"><a href="VisionEgg.FlowControl-pysrc.html#EvalStringController">source code</a></span><br /><br />
+<pre class="base-tree">
+object --+    
+         |    
+<a href="VisionEgg.FlowControl.Controller-class.html">Controller</a> --+
+             |
+            <strong class="uidshort">EvalStringController</strong>
+</pre>
+
+<hr />
+<pre class="literalblock">
+Set parameters using dynamically interpreted Python string.
+
+The string, when evaluated as Python code, becomes the value used.
+For example, the string "1.0" would set parameter values to 1.0.
+
+To increase speed, the string is compiled to Python's bytecode
+format.
+
+The string can make use of temporal variables, which are made
+available depending on the controller's temporal_variables
+attribute. Note that only the absolute temporal variables are
+available when the go loop is not running.
+
+flag(s) present    variable  description
+
+TIME_SEC_ABSOLUTE  t_abs     seconds, continuously increasing
+TIME_SEC_SINCE_GO  t         seconds, reset to 0.0 each go loop
+FRAMES_ABSOLUTE    f_abs     frames, continuously increasing
+FRAMES_SINCE_GO    f         frames, reset to 0 each go loop
+
+</pre><br /><br />
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.FlowControl.EvalStringController-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">during_go_eval_string</span>=<span class="summary-sig-default">None</span>,
+        <span class="summary-sig-arg">between_go_eval_string</span>=<span class="summary-sig-default">None</span>,
+        <span class="summary-sig-arg">**kw</span>)</span><br />
+      Create instance of Controller.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.FlowControl-pysrc.html#EvalStringController.__init__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="set_during_go_eval_string"></a><span class="summary-sig-name">set_during_go_eval_string</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">during_go_eval_string</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.FlowControl-pysrc.html#EvalStringController.set_during_go_eval_string">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="get_during_go_eval_string"></a><span class="summary-sig-name">get_during_go_eval_string</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.FlowControl-pysrc.html#EvalStringController.get_during_go_eval_string">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="set_between_go_eval_string"></a><span class="summary-sig-name">set_between_go_eval_string</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">between_go_eval_string</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.FlowControl-pysrc.html#EvalStringController.set_between_go_eval_string">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="get_between_go_eval_string"></a><span class="summary-sig-name">get_between_go_eval_string</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.FlowControl-pysrc.html#EvalStringController.get_between_go_eval_string">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.FlowControl.EvalStringController-class.html#during_go_eval" class="summary-sig-name">during_go_eval</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      Called by Presentation.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.FlowControl-pysrc.html#EvalStringController.during_go_eval">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.FlowControl.EvalStringController-class.html#between_go_eval" class="summary-sig-name">between_go_eval</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      Called by Presentation.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.FlowControl-pysrc.html#EvalStringController.between_go_eval">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.FlowControl.Controller-class.html">Controller</a></code></b>:
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#evaluate_now">evaluate_now</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#returns_type">returns_type</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#set_eval_frequency">set_eval_frequency</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__delattr__</code>,
+      <code>__getattribute__</code>,
+      <code>__hash__</code>,
+      <code>__new__</code>,
+      <code>__reduce__</code>,
+      <code>__reduce_ex__</code>,
+      <code>__repr__</code>,
+      <code>__setattr__</code>,
+      <code>__str__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Class Variables</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.FlowControl.Controller-class.html">Controller</a></code></b>:
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#EVERY_FRAME">EVERY_FRAME</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#FRAMES_ABSOLUTE">FRAMES_ABSOLUTE</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#FRAMES_SINCE_GO">FRAMES_SINCE_GO</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#NEVER">NEVER</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#NOT_BETWEEN_GO">NOT_BETWEEN_GO</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#NOT_DURING_GO">NOT_DURING_GO</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#ONCE">ONCE</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#TIME_INDEPENDENT">TIME_INDEPENDENT</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#TIME_SEC_ABSOLUTE">TIME_SEC_ABSOLUTE</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#TIME_SEC_SINCE_GO">TIME_SEC_SINCE_GO</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#TRANSITIONS">TRANSITIONS</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#flag_dictionary">flag_dictionary</a></code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Properties</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__class__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Method Details</span></td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">during_go_eval_string</span>=<span class="sig-default">None</span>,
+        <span class="sig-arg">between_go_eval_string</span>=<span class="sig-default">None</span>,
+        <span class="sig-arg">**kw</span>)</span>
+    <br /><em class="fname">(Constructor)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.FlowControl-pysrc.html#EvalStringController.__init__">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Create instance of Controller.
+
+Arguments:
+
+eval_frequency -- Int, bitwise "or" of flags
+temporal_variables -- Int, bitwise "or" of flags
+return_type -- Set to type() of the parameter under control
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.FlowControl.Controller-class.html#__init__">Controller.__init__</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="during_go_eval"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">during_go_eval</span>(<span class="sig-arg">self</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.FlowControl-pysrc.html#EvalStringController.during_go_eval">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Called by Presentation. Overrides method in Controller base class.
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.FlowControl.Controller-class.html#during_go_eval">Controller.during_go_eval</a>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="between_go_eval"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">between_go_eval</span>(<span class="sig-arg">self</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.FlowControl-pysrc.html#EvalStringController.between_go_eval">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Called by Presentation. Overrides method in Controller base class.
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.FlowControl.Controller-class.html#between_go_eval">Controller.between_go_eval</a>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.FlowControl.ExecStringController-class.html b/doc/reference/html/VisionEgg.FlowControl.ExecStringController-class.html
new file mode 100644
index 0000000..4381660
--- /dev/null
+++ b/doc/reference/html/VisionEgg.FlowControl.ExecStringController-class.html
@@ -0,0 +1,438 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.FlowControl.ExecStringController</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.FlowControl-module.html">Module FlowControl</a> ::
+        Class ExecStringController
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.FlowControl.ExecStringController-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class ExecStringController</h1><span class="codelink"><a href="VisionEgg.FlowControl-pysrc.html#ExecStringController">source code</a></span><br /><br />
+<pre class="base-tree">
+object --+    
+         |    
+<a href="VisionEgg.FlowControl.Controller-class.html">Controller</a> --+
+             |
+            <strong class="uidshort">ExecStringController</strong>
+</pre>
+
+<hr />
+<pre class="literalblock">
+Set parameters using potentially complex Python string.
+
+You can execute arbitrarily complex Python code with this
+controller.  The return value must be contained within the
+variable "x".  In other words, this string must assign the
+variable x, so setting the string to "x=1.0" would set the
+parameter under control to 1.0.
+
+To increase speed, the string is compiled to Python's
+bytecode format.
+
+The string can make use of temporal variables, which are made
+available depending on the controller's temporal_variables
+attribute. Note that only the absolute temporal variables are
+available when the go loop is not running.
+
+flag(s) present    variable  description
+-----------------  --------  ----------------------------------
+TIME_SEC_ABSOLUTE  t_abs     seconds, continuously increasing
+TIME_SEC_SINCE_GO  t         seconds, reset to 0.0 each go loop
+FRAMES_ABSOLUTE    f_abs     frames, continuously increasing
+FRAMES_SINCE_GO    f         frames, reset to 0 each go loop
+
+</pre><br /><br />
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.FlowControl.ExecStringController-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">during_go_exec_string</span>=<span class="summary-sig-default">None</span>,
+        <span class="summary-sig-arg">between_go_exec_string</span>=<span class="summary-sig-default">None</span>,
+        <span class="summary-sig-arg">restricted_namespace</span>=<span class="summary-sig-default">1</span>,
+        <span class="summary-sig-arg">**kw</span>)</span><br />
+      Create instance of Controller.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.FlowControl-pysrc.html#ExecStringController.__init__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="set_during_go_exec_string"></a><span class="summary-sig-name">set_during_go_exec_string</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">during_go_exec_string</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.FlowControl-pysrc.html#ExecStringController.set_during_go_exec_string">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="get_during_go_exec_string"></a><span class="summary-sig-name">get_during_go_exec_string</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.FlowControl-pysrc.html#ExecStringController.get_during_go_exec_string">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="set_between_go_exec_string"></a><span class="summary-sig-name">set_between_go_exec_string</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">between_go_exec_string</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.FlowControl-pysrc.html#ExecStringController.set_between_go_exec_string">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="get_between_go_exec_string"></a><span class="summary-sig-name">get_between_go_exec_string</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.FlowControl-pysrc.html#ExecStringController.get_between_go_exec_string">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.FlowControl.ExecStringController-class.html#during_go_eval" class="summary-sig-name">during_go_eval</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      Called by Presentation.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.FlowControl-pysrc.html#ExecStringController.during_go_eval">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.FlowControl.ExecStringController-class.html#between_go_eval" class="summary-sig-name">between_go_eval</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      Called by Presentation.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.FlowControl-pysrc.html#ExecStringController.between_go_eval">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.FlowControl.Controller-class.html">Controller</a></code></b>:
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#evaluate_now">evaluate_now</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#returns_type">returns_type</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#set_eval_frequency">set_eval_frequency</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__delattr__</code>,
+      <code>__getattribute__</code>,
+      <code>__hash__</code>,
+      <code>__new__</code>,
+      <code>__reduce__</code>,
+      <code>__reduce_ex__</code>,
+      <code>__repr__</code>,
+      <code>__setattr__</code>,
+      <code>__str__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Class Variables</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.FlowControl.Controller-class.html">Controller</a></code></b>:
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#EVERY_FRAME">EVERY_FRAME</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#FRAMES_ABSOLUTE">FRAMES_ABSOLUTE</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#FRAMES_SINCE_GO">FRAMES_SINCE_GO</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#NEVER">NEVER</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#NOT_BETWEEN_GO">NOT_BETWEEN_GO</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#NOT_DURING_GO">NOT_DURING_GO</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#ONCE">ONCE</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#TIME_INDEPENDENT">TIME_INDEPENDENT</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#TIME_SEC_ABSOLUTE">TIME_SEC_ABSOLUTE</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#TIME_SEC_SINCE_GO">TIME_SEC_SINCE_GO</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#TRANSITIONS">TRANSITIONS</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#flag_dictionary">flag_dictionary</a></code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Properties</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__class__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Method Details</span></td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">during_go_exec_string</span>=<span class="sig-default">None</span>,
+        <span class="sig-arg">between_go_exec_string</span>=<span class="sig-default">None</span>,
+        <span class="sig-arg">restricted_namespace</span>=<span class="sig-default">1</span>,
+        <span class="sig-arg">**kw</span>)</span>
+    <br /><em class="fname">(Constructor)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.FlowControl-pysrc.html#ExecStringController.__init__">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Create instance of Controller.
+
+Arguments:
+
+eval_frequency -- Int, bitwise "or" of flags
+temporal_variables -- Int, bitwise "or" of flags
+return_type -- Set to type() of the parameter under control
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.FlowControl.Controller-class.html#__init__">Controller.__init__</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="during_go_eval"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">during_go_eval</span>(<span class="sig-arg">self</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.FlowControl-pysrc.html#ExecStringController.during_go_eval">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Called by Presentation. Overrides method in Controller base class.
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.FlowControl.Controller-class.html#during_go_eval">Controller.during_go_eval</a>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="between_go_eval"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">between_go_eval</span>(<span class="sig-arg">self</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.FlowControl-pysrc.html#ExecStringController.between_go_eval">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Called by Presentation. Overrides method in Controller base class.
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.FlowControl.Controller-class.html#between_go_eval">Controller.between_go_eval</a>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.FlowControl.FunctionController-class.html b/doc/reference/html/VisionEgg.FlowControl.FunctionController-class.html
new file mode 100644
index 0000000..d1d1cb8
--- /dev/null
+++ b/doc/reference/html/VisionEgg.FlowControl.FunctionController-class.html
@@ -0,0 +1,368 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.FlowControl.FunctionController</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.FlowControl-module.html">Module FlowControl</a> ::
+        Class FunctionController
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.FlowControl.FunctionController-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class FunctionController</h1><span class="codelink"><a href="VisionEgg.FlowControl-pysrc.html#FunctionController">source code</a></span><br /><br />
+<pre class="base-tree">
+object --+    
+         |    
+<a href="VisionEgg.FlowControl.Controller-class.html">Controller</a> --+
+             |
+            <strong class="uidshort">FunctionController</strong>
+</pre>
+
+<hr />
+<pre class="literalblock">
+Set parameters using a Python function.
+
+This is a very commonly used subclass of Controller, because it is
+very intuitive and requires a minimum of code to set up.  Many of
+the Vision Egg demo programs create instances of
+FunctionController.
+
+A number of parameters are passed to the function depending on the
+value of temporal_variables:
+
+The function can make use of temporal variables, which are made
+available by passingkeyword argument(s) depending on the
+controller's temporal_variables attribute. Note that only the
+absolute temporal variables are available when the go loop is not
+running.
+
+flag(s) present    argument  description
+-----------------  --------  ----------------------------------
+TIME_SEC_ABSOLUTE  t_abs     seconds, continuously increasing
+TIME_SEC_SINCE_GO  t         seconds, reset to 0.0 each go loop
+FRAMES_ABSOLUTE    f_abs     frames, continuously increasing
+FRAMES_SINCE_GO    f         frames, reset to 0 each go loop
+
+</pre><br /><br />
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.FlowControl.FunctionController-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">during_go_func</span>=<span class="summary-sig-default">None</span>,
+        <span class="summary-sig-arg">between_go_func</span>=<span class="summary-sig-default">None</span>,
+        <span class="summary-sig-arg">**kw</span>)</span><br />
+      Create an instance of FunctionController.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.FlowControl-pysrc.html#FunctionController.__init__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.FlowControl.FunctionController-class.html#during_go_eval" class="summary-sig-name">during_go_eval</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      Called by Presentation.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.FlowControl-pysrc.html#FunctionController.during_go_eval">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.FlowControl.FunctionController-class.html#between_go_eval" class="summary-sig-name">between_go_eval</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      Called by Presentation.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.FlowControl-pysrc.html#FunctionController.between_go_eval">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.FlowControl.Controller-class.html">Controller</a></code></b>:
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#evaluate_now">evaluate_now</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#returns_type">returns_type</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#set_eval_frequency">set_eval_frequency</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__delattr__</code>,
+      <code>__getattribute__</code>,
+      <code>__hash__</code>,
+      <code>__new__</code>,
+      <code>__reduce__</code>,
+      <code>__reduce_ex__</code>,
+      <code>__repr__</code>,
+      <code>__setattr__</code>,
+      <code>__str__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Class Variables</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.FlowControl.Controller-class.html">Controller</a></code></b>:
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#EVERY_FRAME">EVERY_FRAME</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#FRAMES_ABSOLUTE">FRAMES_ABSOLUTE</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#FRAMES_SINCE_GO">FRAMES_SINCE_GO</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#NEVER">NEVER</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#NOT_BETWEEN_GO">NOT_BETWEEN_GO</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#NOT_DURING_GO">NOT_DURING_GO</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#ONCE">ONCE</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#TIME_INDEPENDENT">TIME_INDEPENDENT</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#TIME_SEC_ABSOLUTE">TIME_SEC_ABSOLUTE</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#TIME_SEC_SINCE_GO">TIME_SEC_SINCE_GO</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#TRANSITIONS">TRANSITIONS</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#flag_dictionary">flag_dictionary</a></code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Properties</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__class__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Method Details</span></td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">during_go_func</span>=<span class="sig-default">None</span>,
+        <span class="sig-arg">between_go_func</span>=<span class="sig-default">None</span>,
+        <span class="sig-arg">**kw</span>)</span>
+    <br /><em class="fname">(Constructor)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.FlowControl-pysrc.html#FunctionController.__init__">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Create an instance of FunctionController.
+
+Arguments:
+
+during_go_func -- function evaluted during go loop
+between_go_func -- function evaluted not during go loop
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.FlowControl.Controller-class.html#__init__">Controller.__init__</a>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="during_go_eval"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">during_go_eval</span>(<span class="sig-arg">self</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.FlowControl-pysrc.html#FunctionController.during_go_eval">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Called by Presentation. Overrides method in Controller base class.
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.FlowControl.Controller-class.html#during_go_eval">Controller.during_go_eval</a>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="between_go_eval"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">between_go_eval</span>(<span class="sig-arg">self</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.FlowControl-pysrc.html#FunctionController.between_go_eval">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Called by Presentation. Overrides method in Controller base class.
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.FlowControl.Controller-class.html#between_go_eval">Controller.between_go_eval</a>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.FlowControl.Presentation-class.html b/doc/reference/html/VisionEgg.FlowControl.Presentation-class.html
new file mode 100644
index 0000000..25fe395
--- /dev/null
+++ b/doc/reference/html/VisionEgg.FlowControl.Presentation-class.html
@@ -0,0 +1,635 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.FlowControl.Presentation</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.FlowControl-module.html">Module FlowControl</a> ::
+        Class Presentation
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.FlowControl.Presentation-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class Presentation</h1><span class="codelink"><a href="VisionEgg.FlowControl-pysrc.html#Presentation">source code</a></span><br /><br />
+<pre class="base-tree">
+         object --+    
+                  |    
+<a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a> --+
+                      |
+                     <strong class="uidshort">Presentation</strong>
+</pre>
+
+<hr />
+<pre class="literalblock">
+Handles the timing and coordination of stimulus presentation.
+
+This class is the key to the real-time operation of the Vision
+Egg. It contains the main 'go' loop, and maintains the association
+between 'controllers', instances of the Controller class, and the
+parameters they control.
+
+During the main 'go' loop and at other specific times, the
+parameters are updated via function calls to the controllers.
+
+Between entries into the 'go' loop, a Vision Egg application
+should call the method between_presentations as often as possible
+to ensure parameter values are kept up to date and any
+housekeeping done by controllers is done.
+
+No OpenGL environment I know of can guarantee that a new frame is
+drawn and the double buffers swapped before the monitor's next
+vertical retrace sync pulse.  Still, although one can worry
+endlessly about this problem, it works.  In other words, on a fast
+computer with a fast graphics card running even a pre-emptive
+multi-tasking operating system (see below for specific
+information), a new frame is drawn before every monitor update. If
+this did become a problem, the go() method could be re-implemented
+in C, along with the functions it calls.  This would probably
+result in speed gains, but without skipping frames at 200 Hz, why
+bother?
+
+Parameters
+==========
+check_events                 -- allow input event checking during 'go' loop? (Boolean)
+                                Default: True
+collect_timing_info          -- log timing statistics during go loop? (Boolean)
+                                Default: True
+enter_go_loop                -- test used by run_forever() to enter go loop (Boolean)
+                                Default: False
+go_duration                  -- Tuple to specify 'go' loop duration. Either (value,units) or ('forever',) (Sequence of AnyOf(Real or String))
+                                Default: (5.0, 'seconds')
+handle_event_callbacks       -- List of tuples to handle events. (event_type,event_callback_func) (Sequence of Sequence2 of AnyOf(Integer or Callable))
+                                Default: (determined at runtime)
+override_t_abs_sec           -- Override t_abs. Set only when reconstructing experiments. (units: seconds) (Real)
+                                Default: (determined at runtime)
+quit                         -- quit the run_forever loop? (Boolean)
+                                Default: False
+trigger_armed                -- test trigger on go loop? (Boolean)
+                                Default: True
+trigger_go_if_armed          -- trigger go loop? (Boolean)
+                                Default: True
+viewports                    -- list of Viewport instances to draw. Order is important. (Sequence of Instance of <class 'VisionEgg.ClassWithParameters'>)
+                                Default: (determined at runtime)
+warn_longest_frame_threshold -- threshold to print frame skipped warning (units: factor of inter-frame-interval) (Real)
+                                Default: 2.0
+warn_mean_fps_threshold      -- threshold to print observered vs. expected frame rate warning (fraction units) (Real)
+                                Default: 0.01
+
+</pre><br /><br />
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.FlowControl.Presentation-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">**kw</span>)</span><br />
+      Create self.parameters and set values.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.FlowControl-pysrc.html#Presentation.__init__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="add_controller"></a><span class="summary-sig-name">add_controller</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">class_with_parameters</span>,
+        <span class="summary-sig-arg">parameter_name</span>,
+        <span class="summary-sig-arg">controller</span>)</span><br />
+      Add a controller</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.FlowControl-pysrc.html#Presentation.add_controller">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.FlowControl.Presentation-class.html#remove_controller" class="summary-sig-name">remove_controller</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">class_with_parameters</span>,
+        <span class="summary-sig-arg">parameter_name</span>,
+        <span class="summary-sig-arg">controller</span>=<span class="summary-sig-default">None</span>)</span><br />
+      Remove one (or more--see below) controller(s).</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.FlowControl-pysrc.html#Presentation.remove_controller">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.FlowControl.Presentation-class.html#is_in_go_loop" class="summary-sig-name">is_in_go_loop</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      Queries if the presentation is in a go loop.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.FlowControl-pysrc.html#Presentation.is_in_go_loop">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="were_frames_dropped_in_last_go_loop"></a><span class="summary-sig-name">were_frames_dropped_in_last_go_loop</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.FlowControl-pysrc.html#Presentation.were_frames_dropped_in_last_go_loop">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="get_last_go_loop_start_time_absolute_sec"></a><span class="summary-sig-name">get_last_go_loop_start_time_absolute_sec</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.FlowControl-pysrc.html#Presentation.get_last_go_loop_start_time_absolute_sec">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.FlowControl.Presentation-class.html#go" class="summary-sig-name">go</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      Main control loop during stimulus presentation.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.FlowControl-pysrc.html#Presentation.go">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="export_movie_go"></a><span class="summary-sig-name">export_movie_go</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">frames_per_sec</span>=<span class="summary-sig-default">12.0</span>,
+        <span class="summary-sig-arg">filename_suffix</span>=<span class="summary-sig-default">".tif"</span>,
+        <span class="summary-sig-arg">filename_base</span>=<span class="summary-sig-default">"visionegg_movie"</span>,
+        <span class="summary-sig-arg">path</span>=<span class="summary-sig-default">"."</span>)</span><br />
+      Emulates method 'go' but saves a movie.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.FlowControl-pysrc.html#Presentation.export_movie_go">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="run_forever"></a><span class="summary-sig-name">run_forever</span>(<span class="summary-sig-arg">self</span>)</span><br />
+      Main control loop between go loops.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.FlowControl-pysrc.html#Presentation.run_forever">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.FlowControl.Presentation-class.html#between_presentations" class="summary-sig-name">between_presentations</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      Maintain display while between stimulus presentations.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.FlowControl-pysrc.html#Presentation.between_presentations">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a></code></b>:
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__getstate__">__getstate__</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__setstate__">__setstate__</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#get_specified_type">get_specified_type</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#is_constant_parameter">is_constant_parameter</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#set">set</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#verify_parameters">verify_parameters</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__delattr__</code>,
+      <code>__getattribute__</code>,
+      <code>__hash__</code>,
+      <code>__new__</code>,
+      <code>__reduce__</code>,
+      <code>__reduce_ex__</code>,
+      <code>__repr__</code>,
+      <code>__setattr__</code>,
+      <code>__str__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Class Variables</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.FlowControl.Presentation-class.html#parameters_and_defaults" class="summary-name">parameters_and_defaults</a> = <code title="{'viewports':(None, ve_types.Sequence(ve_types.Instance(VisionEgg.Clas\
+sWithParameters)), 'list of Viewport instances to draw. Order is impor\
+tant.'), 'collect_timing_info':(True, ve_types.Boolean, 'log timing st\
+atistics during go loop?'), 'go_duration':((5.0, 'seconds'), ve_types.\
+Sequence(ve_types.AnyOf(ve_types.Real, ve_types.String)), "Tuple to sp\
+ecify 'go' loop duration. Either (value,units) or ('forever',)"), 'che\
+ck_events':(True, ve_types.Boolean, "allow input event checking during\
+ 'go' loop?"), 'handle_event_callbacks':(None, ve_types.Sequence(ve_ty\
+...">{'viewports':(None, ve_types.Sequenc<code class="variable-ellipsis">...</code></code>
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a></code></b>:
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__safe_for_unpickling__">__safe_for_unpickling__</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#constant_parameters_and_defaults">constant_parameters_and_defaults</a></code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Properties</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__class__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Method Details</span></td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">**kw</span>)</span>
+    <br /><em class="fname">(Constructor)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.FlowControl-pysrc.html#Presentation.__init__">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Create self.parameters and set values.
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.ClassWithParameters-class.html#__init__">ClassWithParameters.__init__</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="remove_controller"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">remove_controller</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">class_with_parameters</span>,
+        <span class="sig-arg">parameter_name</span>,
+        <span class="sig-arg">controller</span>=<span class="sig-default">None</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.FlowControl-pysrc.html#Presentation.remove_controller">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Remove one (or more--see below) controller(s).
+
+If controller is None, all controllers affecting the
+specified parameter are removed.
+
+If class_with_parameters and paramter_name are None, the
+controller is removed completely
+
+If class_with_parameters, paramter_name, and controller are
+all None, all controllers are removed.
+
+</pre>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<a name="is_in_go_loop"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">is_in_go_loop</span>(<span class="sig-arg">self</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.FlowControl-pysrc.html#Presentation.is_in_go_loop">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Queries if the presentation is in a go loop.
+
+This is useful to check the state of the Vision Egg
+application from a remote client over Pyro.
+
+</pre>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<a name="go"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">go</span>(<span class="sig-arg">self</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.FlowControl-pysrc.html#Presentation.go">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Main control loop during stimulus presentation.
+
+This is the heart of realtime control in the Vision Egg, and
+contains the main loop during a stimulus presentation. This
+coordinates the timing of calling the controllers.
+
+In the main loop, the current time (in absolute seconds,
+go-loop-start-relative seconds, and go-loop-start-relative
+frames) is computed, the appropriate controllers are called
+with this information, the screen is cleared, each viewport is
+drawn to the back buffer (while the video card continues
+painting the front buffer on the display), and the buffers are
+swapped.
+
+</pre>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<a name="between_presentations"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">between_presentations</span>(<span class="sig-arg">self</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.FlowControl-pysrc.html#Presentation.between_presentations">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Maintain display while between stimulus presentations.
+
+This function gets called as often as possible when in the
+'run_forever' loop except when execution has shifted to the
+'go' loop.
+
+Other than the difference in the time variable passed to the
+controllers, this routine is very similar to the inside of the
+main loop in the go method.
+
+</pre>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== CLASS VARIABLE DETAILS ==================== -->
+<a name="section-ClassVariableDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Class Variable Details</span></td>
+</tr>
+</table>
+<a name="parameters_and_defaults"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">parameters_and_defaults</h3>
+  
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+{'viewports':(None, ve_types.Sequence(ve_types.Instance(VisionEgg.Clas<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+sWithParameters)), 'list of Viewport instances to draw. Order is impor<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+tant.'), 'collect_timing_info':(True, ve_types.Boolean, 'log timing st<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+atistics during go loop?'), 'go_duration':((5.0, 'seconds'), ve_types.<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+Sequence(ve_types.AnyOf(ve_types.Real, ve_types.String)), "Tuple to sp<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+ecify 'go' loop duration. Either (value,units) or ('forever',)"), 'che<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+ck_events':(True, ve_types.Boolean, "allow input event checking during<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+ 'go' loop?"), 'handle_event_callbacks':(None, ve_types.Sequence(ve_ty<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+<code class="variable-ellipsis">...</code>
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.GL-module.html b/doc/reference/html/VisionEgg.GL-module.html
new file mode 100644
index 0000000..41e6750
--- /dev/null
+++ b/doc/reference/html/VisionEgg.GL-module.html
@@ -0,0 +1,166 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.GL</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        Module GL
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.GL-module.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== MODULE DESCRIPTION ==================== -->
+<h1 class="epydoc">Module GL</h1><span class="codelink"><a href="VisionEgg.GL-pysrc.html">source code</a></span><br /><br />
+<pre class="literalblock">
+
+Vision Egg GL module -- lump all OpenGL names in one namespace.
+
+</pre><br /><br />
+
+<!-- ==================== FUNCTIONS ==================== -->
+<a name="section-Functions"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Functions</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="glLoadMatrixf"></a><span class="summary-sig-name">glLoadMatrixf</span>(<span class="summary-sig-arg">M</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.GL-pysrc.html#glLoadMatrixf">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+</table>
+<!-- ==================== VARIABLES ==================== -->
+<a name="section-Variables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Variables</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="__version__"></a><span class="summary-name">__version__</span> = <code title="OpenGL.__version__">OpenGL.__version__</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="GL_UNSIGNED_INT_8_8_8_8_REV"></a><span class="summary-name">GL_UNSIGNED_INT_8_8_8_8_REV</span> = <code title="0x8367">0x8367</code>
+    </td>
+  </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.GL-pysrc.html b/doc/reference/html/VisionEgg.GL-pysrc.html
new file mode 100644
index 0000000..efe1cad
--- /dev/null
+++ b/doc/reference/html/VisionEgg.GL-pysrc.html
@@ -0,0 +1,252 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.GL</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        Module GL
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.GL-pysrc.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<h1 class="epydoc">Source Code for <a href="VisionEgg.GL-module.html">Module VisionEgg.GL</a></h1>
+<pre class="py-src">
+<a name="L1"></a><tt class="py-lineno"> 1</tt>  <tt class="py-line"><tt class="py-comment"># The Vision Egg: GL</tt> </tt>
+<a name="L2"></a><tt class="py-lineno"> 2</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L3"></a><tt class="py-lineno"> 3</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Copyright (C) 2001-2003 Andrew Straw.</tt> </tt>
+<a name="L4"></a><tt class="py-lineno"> 4</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Author: Andrew Straw <astraw at users.sourceforge.net></tt> </tt>
+<a name="L5"></a><tt class="py-lineno"> 5</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># URL: <http://www.visionegg.org/></tt> </tt>
+<a name="L6"></a><tt class="py-lineno"> 6</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L7"></a><tt class="py-lineno"> 7</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Distributed under the terms of the GNU Lesser General Public License</tt> </tt>
+<a name="L8"></a><tt class="py-lineno"> 8</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># (LGPL). See LICENSE.TXT that came with this file.</tt> </tt>
+<a name="L9"></a><tt class="py-lineno"> 9</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L10"></a><tt class="py-lineno">10</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># $Id$</tt> </tt>
+<a name="L11"></a><tt class="py-lineno">11</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L12"></a><tt class="py-lineno">12</tt>  <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L13"></a><tt class="py-lineno">13</tt>  <tt class="py-line"><tt class="py-docstring">Vision Egg GL module -- lump all OpenGL names in one namespace.</tt> </tt>
+<a name="L14"></a><tt class="py-lineno">14</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L15"></a><tt class="py-lineno">15</tt>  <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L16"></a><tt class="py-lineno">16</tt>  <tt class="py-line"> </tt>
+<a name="L17"></a><tt class="py-lineno">17</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt class="py-name">OpenGL</tt><tt class="py-op">.</tt><tt id="link-0" class="py-name" targets="Module VisionEgg.GL=VisionEgg.GL-module.html"><a title="VisionEgg.GL" class="py-name" href="#" onclick="return doclink('link-0', 'GL', 'link-0');">GL</a></tt> <tt class="py-keyword">import</tt> <tt class="py-op">*</tt> <tt class="py-comment"># get everything from OpenGL.GL</tt> </tt>
+<a name="L18"></a><tt class="py-lineno">18</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">OpenGL</tt> </tt>
+<a name="L19"></a><tt class="py-lineno">19</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">numpy</tt> </tt>
+<a name="L20"></a><tt class="py-lineno">20</tt>  <tt class="py-line"><tt id="link-1" class="py-name" targets="Variable VisionEgg.DaqKeyboard.__version__=VisionEgg.DaqKeyboard-module.html#__version__,Variable VisionEgg.DaqLPT.__version__=VisionEgg.DaqLPT-module.html#__version__,Variable VisionEgg.GL.__version__=VisionEgg.GL-module.html#__version__,Variable VisionEgg.PyroApps.EPhysGUI.__version__=VisionEgg.PyroApps.EPhysGUI-module.html#__version__,Variable VisionEgg.PyroApps.EPhysGUIUtils. [...]
+VisionEgg.DaqLPT.__version__
+VisionEgg.GL.__version__
+VisionEgg.PyroApps.EPhysGUI.__version__
+VisionEgg.PyroApps.EPhysGUIUtils.__version__
+VisionEgg.PyroApps.EPhysServer.__version__
+VisionEgg.PyroApps.GridGUI.__version__
+VisionEgg.PyroApps.GridServer.__version__
+VisionEgg.PyroApps.ScreenPositionGUI.__version__
+VisionEgg.PyroApps.ScreenPositionServer.__version__
+VisionEgg.PyroApps.SpinningDrumGUI.__version__
+VisionEgg.PyroApps.SpinningDrumServer.__version__
+VisionEgg.PyroHelpers.__version__
+VisionEgg.QuickTime.__version__
+VisionEgg.ResponseControl.__version__
+VisionEgg.SphereMap.__version__
+VisionEgg.TCPController.__version__" class="py-name" href="#" onclick="return doclink('link-1', '__version__', 'link-1');">__version__</a></tt> <tt class="py-op">=</tt> <tt class="py-name">OpenGL</tt><tt class="py-op">.</tt><tt id="link-2" class="py-name"><a title="VisionEgg.DaqKeyboard.__version__
+VisionEgg.DaqLPT.__version__
+VisionEgg.GL.__version__
+VisionEgg.PyroApps.EPhysGUI.__version__
+VisionEgg.PyroApps.EPhysGUIUtils.__version__
+VisionEgg.PyroApps.EPhysServer.__version__
+VisionEgg.PyroApps.GridGUI.__version__
+VisionEgg.PyroApps.GridServer.__version__
+VisionEgg.PyroApps.ScreenPositionGUI.__version__
+VisionEgg.PyroApps.ScreenPositionServer.__version__
+VisionEgg.PyroApps.SpinningDrumGUI.__version__
+VisionEgg.PyroApps.SpinningDrumServer.__version__
+VisionEgg.PyroHelpers.__version__
+VisionEgg.QuickTime.__version__
+VisionEgg.ResponseControl.__version__
+VisionEgg.SphereMap.__version__
+VisionEgg.TCPController.__version__" class="py-name" href="#" onclick="return doclink('link-2', '__version__', 'link-1');">__version__</a></tt> </tt>
+<a name="L21"></a><tt class="py-lineno">21</tt>  <tt class="py-line"> </tt>
+<a name="L22"></a><tt class="py-lineno">22</tt>  <tt class="py-line"><tt class="py-comment"># tell py2exe we want these modules</tt> </tt>
+<a name="L23"></a><tt class="py-lineno">23</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L24"></a><tt class="py-lineno">24</tt>  <tt class="py-line">    <tt class="py-keyword">import</tt> <tt class="py-name">OpenGL</tt><tt class="py-op">.</tt><tt id="link-3" class="py-name"><a title="VisionEgg.GL" class="py-name" href="#" onclick="return doclink('link-3', 'GL', 'link-0');">GL</a></tt><tt class="py-op">.</tt><tt class="py-name">GL__init___</tt> </tt>
+<a name="L25"></a><tt class="py-lineno">25</tt>  <tt class="py-line"><tt class="py-keyword">except</tt><tt class="py-op">:</tt> </tt>
+<a name="L26"></a><tt class="py-lineno">26</tt>  <tt class="py-line">    <tt class="py-keyword">pass</tt> </tt>
+<a name="L27"></a><tt class="py-lineno">27</tt>  <tt class="py-line"><tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L28"></a><tt class="py-lineno">28</tt>  <tt class="py-line">    <tt class="py-keyword">import</tt> <tt class="py-name">OpenGL</tt><tt class="py-op">.</tt><tt id="link-4" class="py-name"><a title="VisionEgg.GL" class="py-name" href="#" onclick="return doclink('link-4', 'GL', 'link-0');">GL</a></tt><tt class="py-op">.</tt><tt class="py-name">ARB</tt><tt class="py-op">.</tt><tt class="py-name">multitexture</tt> </tt>
+<a name="L29"></a><tt class="py-lineno">29</tt>  <tt class="py-line"><tt class="py-keyword">except</tt><tt class="py-op">:</tt> </tt>
+<a name="L30"></a><tt class="py-lineno">30</tt>  <tt class="py-line">    <tt class="py-keyword">pass</tt> </tt>
+<a name="L31"></a><tt class="py-lineno">31</tt>  <tt class="py-line"><tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L32"></a><tt class="py-lineno">32</tt>  <tt class="py-line">    <tt class="py-keyword">import</tt> <tt class="py-name">OpenGL</tt><tt class="py-op">.</tt><tt id="link-5" class="py-name"><a title="VisionEgg.GL" class="py-name" href="#" onclick="return doclink('link-5', 'GL', 'link-0');">GL</a></tt><tt class="py-op">.</tt><tt class="py-name">EXT</tt><tt class="py-op">.</tt><tt class="py-name">bgra</tt> </tt>
+<a name="L33"></a><tt class="py-lineno">33</tt>  <tt class="py-line"><tt class="py-keyword">except</tt><tt class="py-op">:</tt> </tt>
+<a name="L34"></a><tt class="py-lineno">34</tt>  <tt class="py-line">    <tt class="py-keyword">pass</tt> </tt>
+<a name="L35"></a><tt class="py-lineno">35</tt>  <tt class="py-line"><tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L36"></a><tt class="py-lineno">36</tt>  <tt class="py-line">    <tt class="py-keyword">import</tt> <tt class="py-name">SGIS</tt><tt class="py-op">.</tt><tt class="py-name">texture_edge_clamp</tt> </tt>
+<a name="L37"></a><tt class="py-lineno">37</tt>  <tt class="py-line"><tt class="py-keyword">except</tt><tt class="py-op">:</tt> </tt>
+<a name="L38"></a><tt class="py-lineno">38</tt>  <tt class="py-line">    <tt class="py-keyword">pass</tt> </tt>
+<a name="L39"></a><tt class="py-lineno">39</tt>  <tt class="py-line"> </tt>
+<a name="L40"></a><tt class="py-lineno">40</tt>  <tt class="py-line"><tt class="py-comment"># why doesn't PyOpenGL define this?!</tt> </tt>
+<a name="L41"></a><tt class="py-lineno">41</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L42"></a><tt class="py-lineno">42</tt>  <tt class="py-line">    <tt id="link-6" class="py-name" targets="Variable VisionEgg.GL.GL_UNSIGNED_INT_8_8_8_8_REV=VisionEgg.GL-module.html#GL_UNSIGNED_INT_8_8_8_8_REV"><a title="VisionEgg.GL.GL_UNSIGNED_INT_8_8_8_8_REV" class="py-name" href="#" onclick="return doclink('link-6', 'GL_UNSIGNED_INT_8_8_8_8_REV', 'link-6');">GL_UNSIGNED_INT_8_8_8_8_REV</a></tt> </tt>
+<a name="L43"></a><tt class="py-lineno">43</tt>  <tt class="py-line"><tt class="py-keyword">except</tt> <tt class="py-name">NameError</tt><tt class="py-op">:</tt> </tt>
+<a name="L44"></a><tt class="py-lineno">44</tt>  <tt class="py-line">    <tt id="link-7" class="py-name"><a title="VisionEgg.GL.GL_UNSIGNED_INT_8_8_8_8_REV" class="py-name" href="#" onclick="return doclink('link-7', 'GL_UNSIGNED_INT_8_8_8_8_REV', 'link-6');">GL_UNSIGNED_INT_8_8_8_8_REV</a></tt> <tt class="py-op">=</tt> <tt class="py-number">0x8367</tt> </tt>
+<a name="L45"></a><tt class="py-lineno">45</tt>  <tt class="py-line"> </tt>
+<a name="L46"></a><tt class="py-lineno">46</tt>  <tt class="py-line"><tt class="py-keyword">if</tt> <tt class="py-name">OpenGL</tt><tt class="py-op">.</tt><tt id="link-8" class="py-name"><a title="VisionEgg.DaqKeyboard.__version__
+VisionEgg.DaqLPT.__version__
+VisionEgg.GL.__version__
+VisionEgg.PyroApps.EPhysGUI.__version__
+VisionEgg.PyroApps.EPhysGUIUtils.__version__
+VisionEgg.PyroApps.EPhysServer.__version__
+VisionEgg.PyroApps.GridGUI.__version__
+VisionEgg.PyroApps.GridServer.__version__
+VisionEgg.PyroApps.ScreenPositionGUI.__version__
+VisionEgg.PyroApps.ScreenPositionServer.__version__
+VisionEgg.PyroApps.SpinningDrumGUI.__version__
+VisionEgg.PyroApps.SpinningDrumServer.__version__
+VisionEgg.PyroHelpers.__version__
+VisionEgg.QuickTime.__version__
+VisionEgg.ResponseControl.__version__
+VisionEgg.SphereMap.__version__
+VisionEgg.TCPController.__version__" class="py-name" href="#" onclick="return doclink('link-8', '__version__', 'link-1');">__version__</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-string">'3'</tt><tt class="py-op">:</tt> </tt>
+<a name="L47"></a><tt class="py-lineno">47</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">OpenGL</tt><tt class="py-op">.</tt><tt id="link-9" class="py-name"><a title="VisionEgg.DaqKeyboard.__version__
+VisionEgg.DaqLPT.__version__
+VisionEgg.GL.__version__
+VisionEgg.PyroApps.EPhysGUI.__version__
+VisionEgg.PyroApps.EPhysGUIUtils.__version__
+VisionEgg.PyroApps.EPhysServer.__version__
+VisionEgg.PyroApps.GridGUI.__version__
+VisionEgg.PyroApps.GridServer.__version__
+VisionEgg.PyroApps.ScreenPositionGUI.__version__
+VisionEgg.PyroApps.ScreenPositionServer.__version__
+VisionEgg.PyroApps.SpinningDrumGUI.__version__
+VisionEgg.PyroApps.SpinningDrumServer.__version__
+VisionEgg.PyroHelpers.__version__
+VisionEgg.QuickTime.__version__
+VisionEgg.ResponseControl.__version__
+VisionEgg.SphereMap.__version__
+VisionEgg.TCPController.__version__" class="py-name" href="#" onclick="return doclink('link-9', '__version__', 'link-1');">__version__</a></tt><tt class="py-op">.</tt><tt class="py-name">startswith</tt><tt class="py-op">(</tt><tt class="py-string">'3.0.0a'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-op">(</tt><tt class="py-name">OpenGL</tt><tt class="py-op">.</tt><tt id="link-10" class="py-name"><a title="VisionEgg.DaqKeyboard.__version__
+VisionEgg.DaqLPT.__version__
+VisionEgg.GL.__version__
+VisionEgg.PyroApps.EPhysGUI.__version__
+VisionEgg.PyroApps.EPhysGUIUtils.__version__
+VisionEgg.PyroApps.EPhysServer.__version__
+VisionEgg.PyroApps.GridGUI.__version__
+VisionEgg.PyroApps.GridServer.__version__
+VisionEgg.PyroApps.ScreenPositionGUI.__version__
+VisionEgg.PyroApps.ScreenPositionServer.__version__
+VisionEgg.PyroApps.SpinningDrumGUI.__version__
+VisionEgg.PyroApps.SpinningDrumServer.__version__
+VisionEgg.PyroHelpers.__version__
+VisionEgg.QuickTime.__version__
+VisionEgg.ResponseControl.__version__
+VisionEgg.SphereMap.__version__
+VisionEgg.TCPController.__version__" class="py-name" href="#" onclick="return doclink('link-10', '__version__', 'link-1');">__version__</a></tt> <tt class="py-op">==</tt> <tt class="py-string">'3.0.0b1'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L48"></a><tt class="py-lineno">48</tt>  <tt class="py-line"> </tt>
+<a name="L49"></a><tt class="py-lineno">49</tt>  <tt class="py-line">        <tt class="py-comment"># A bug in early PyOpenGL 3.x had problems with some arrays</tt> </tt>
+<a name="L50"></a><tt class="py-lineno">50</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt id="link-11" class="py-name" targets="Variable VisionEgg.GL._orig_glLoadMatrixf=VisionEgg.GL-module.html#_orig_glLoadMatrixf"><a title="VisionEgg.GL._orig_glLoadMatrixf" class="py-name" href="#" onclick="return doclink('link-11', '_orig_glLoadMatrixf', 'link-11');">_orig_glLoadMatrixf</a></tt> <tt class="py-op">=</tt> <tt id="link-12" class="py-name" targets="Function VisionEgg.GL [...]
+<a name="glLoadMatrixf"></a><div id="glLoadMatrixf-def"><a name="L51"></a><tt class="py-lineno">51</tt> <a class="py-toggle" href="#" id="glLoadMatrixf-toggle" onclick="return toggle('glLoadMatrixf');">-</a><tt class="py-line">        <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.GL-module.html#glLoadMatrixf">glLoadMatrixf</a><tt class="py-op">(</tt><tt class="py-param">M</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="glLoadMatrixf-collapsed" style="display:none;" pad="++" indent="++++++++++++++++"></div><div id="glLoadMatrixf-expanded"><a name="L52"></a><tt class="py-lineno">52</tt>  <tt class="py-line">            <tt class="py-name">M</tt> <tt class="py-op">=</tt> <tt class="py-name">numpy</tt><tt class="py-op">.</tt><tt class="py-name">array</tt><tt class="py-op">(</tt><tt class="py-op">[</tt> <tt class="py-name">Mi</tt> <tt class="py-keyword">for</tt> <tt class="py-name">Mi</tt> <t [...]
+<a name="L53"></a><tt class="py-lineno">53</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt id="link-13" class="py-name"><a title="VisionEgg.GL._orig_glLoadMatrixf" class="py-name" href="#" onclick="return doclink('link-13', '_orig_glLoadMatrixf', 'link-11');">_orig_glLoadMatrixf</a></tt><tt class="py-op">(</tt><tt class="py-name">M</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L54"></a><tt class="py-lineno">54</tt>  <tt class="py-line"> </tt><script type="text/javascript">
+<!--
+expandto(location.href);
+// -->
+</script>
+</pre>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:47 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.GLTrace-module.html b/doc/reference/html/VisionEgg.GLTrace-module.html
new file mode 100644
index 0000000..aee34e2
--- /dev/null
+++ b/doc/reference/html/VisionEgg.GLTrace-module.html
@@ -0,0 +1,286 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.GLTrace</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        Module GLTrace
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.GLTrace-module.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== MODULE DESCRIPTION ==================== -->
+<h1 class="epydoc">Module GLTrace</h1><span class="codelink"><a href="VisionEgg.GLTrace-pysrc.html">source code</a></span><br /><br />
+<pre class="literalblock">
+
+Trace calls to OpenGL
+
+With this module, you can trace all calls made to OpenGL through PyOpenGL.
+To do this, substitute
+
+import OpenGL.GL as gl
+
+with
+
+import VisionEgg.GLTrace as gl
+
+in your code.
+
+Also, trace another module's use of OpenGL by changing its reference
+to OpenGL.GL to a reference to VisionEgg.GLTrace.
+
+</pre><br /><br />
+
+<!-- ==================== CLASSES ==================== -->
+<a name="section-Classes"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Classes</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.GLTrace.Wrapper-class.html" class="summary-name">Wrapper</a>
+    </td>
+  </tr>
+</table>
+<!-- ==================== FUNCTIONS ==================== -->
+<a name="section-Functions"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Functions</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="arg_to_str"></a><span class="summary-sig-name">arg_to_str</span>(<span class="summary-sig-arg">arg</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.GLTrace-pysrc.html#arg_to_str">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="gl_trace_attach"></a><span class="summary-sig-name">gl_trace_attach</span>()</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.GLTrace-pysrc.html#gl_trace_attach">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+</table>
+<!-- ==================== VARIABLES ==================== -->
+<a name="section-Variables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Variables</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="gl_constants"></a><span class="summary-name">gl_constants</span> = <code title="{}">{}</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.GLTrace-module.html#raw_args_by_function" class="summary-name">raw_args_by_function</a> = <code title="{'glColor': [0, 1, 2, 3], 'glColorf': [0, 1, 2, 3], 'glDepthRange': [0\
+, 1], 'glGenTextures': [0], 'glGetTexLevelParameteriv': [1], 'glOrtho'\
+: [0, 1, 2, 3, 4, 5], 'glPixelStorei': [1], 'glReadPixels': [0, 1, 2, \
+3], 'glRotate': [0, 1, 2, 3], 'glTexCoord2f': [0, 1], 'glTexImage1D': \
+[1, 3, 4], 'glTexImage2D': [1, 3, 4, 5], 'glTexSubImage1D': [1, 2, 3],\
+ 'glTranslate': [0, 1, 2], 'glVertex2f': [0, 1], 'glVertex3f': [0, 1, \
+2], 'glViewport': [0, 1, 2, 3],}">{'glColor': [0, 1, 2, 3], 'glColorf': [<code class="variable-ellipsis">...</code></code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="bitmasks_by_function"></a><span class="summary-name">bitmasks_by_function</span> = <code title="{'glClear': [0],}">{'glClear': [0],}</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.GLTrace-module.html#bitmask_names_by_value" class="summary-name">bitmask_names_by_value</a> = <code title="{gl.GL_COLOR_BUFFER_BIT: 'GL_COLOR_BUFFER_BIT', gl.GL_DEPTH_BUFFER_BIT\
+: 'GL_DEPTH_BUFFER_BIT',}">{gl.GL_COLOR_BUFFER_BIT: 'GL_COLOR_BU<code class="variable-ellipsis">...</code></code>
+    </td>
+  </tr>
+</table>
+<!-- ==================== VARIABLES DETAILS ==================== -->
+<a name="section-VariablesDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Variables Details</span></td>
+</tr>
+</table>
+<a name="raw_args_by_function"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">raw_args_by_function</h3>
+  
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+{'glColor': [0, 1, 2, 3], 'glColorf': [0, 1, 2, 3], 'glDepthRange': [0<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+, 1], 'glGenTextures': [0], 'glGetTexLevelParameteriv': [1], 'glOrtho'<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+: [0, 1, 2, 3, 4, 5], 'glPixelStorei': [1], 'glReadPixels': [0, 1, 2, <span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+3], 'glRotate': [0, 1, 2, 3], 'glTexCoord2f': [0, 1], 'glTexImage1D': <span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+[1, 3, 4], 'glTexImage2D': [1, 3, 4, 5], 'glTexSubImage1D': [1, 2, 3],<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+ 'glTranslate': [0, 1, 2], 'glVertex2f': [0, 1], 'glVertex3f': [0, 1, <span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+2], 'glViewport': [0, 1, 2, 3],}
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="bitmask_names_by_value"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">bitmask_names_by_value</h3>
+  
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+{gl.GL_COLOR_BUFFER_BIT: 'GL_COLOR_BUFFER_BIT', gl.GL_DEPTH_BUFFER_BIT<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+: 'GL_DEPTH_BUFFER_BIT',}
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.GLTrace-pysrc.html b/doc/reference/html/VisionEgg.GLTrace-pysrc.html
new file mode 100644
index 0000000..6424b08
--- /dev/null
+++ b/doc/reference/html/VisionEgg.GLTrace-pysrc.html
@@ -0,0 +1,260 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.GLTrace</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        Module GLTrace
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.GLTrace-pysrc.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<h1 class="epydoc">Source Code for <a href="VisionEgg.GLTrace-module.html">Module VisionEgg.GLTrace</a></h1>
+<pre class="py-src">
+<a name="L1"></a><tt class="py-lineno">  1</tt>  <tt class="py-line"><tt class="py-comment"># The Vision Egg: GLTrace</tt> </tt>
+<a name="L2"></a><tt class="py-lineno">  2</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L3"></a><tt class="py-lineno">  3</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Copyright (C) 2001-2004 Andrew Straw</tt> </tt>
+<a name="L4"></a><tt class="py-lineno">  4</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Copyright (C) 2004,2008 California Institute of Technology</tt> </tt>
+<a name="L5"></a><tt class="py-lineno">  5</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L6"></a><tt class="py-lineno">  6</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># URL: <http://www.visionegg.org/></tt> </tt>
+<a name="L7"></a><tt class="py-lineno">  7</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L8"></a><tt class="py-lineno">  8</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Distributed under the terms of the GNU Lesser General Public License</tt> </tt>
+<a name="L9"></a><tt class="py-lineno">  9</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># (LGPL). See LICENSE.TXT that came with this file.</tt> </tt>
+<a name="L10"></a><tt class="py-lineno"> 10</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L11"></a><tt class="py-lineno"> 11</tt>  <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L12"></a><tt class="py-lineno"> 12</tt>  <tt class="py-line"><tt class="py-docstring">Trace calls to OpenGL</tt> </tt>
+<a name="L13"></a><tt class="py-lineno"> 13</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L14"></a><tt class="py-lineno"> 14</tt>  <tt class="py-line"><tt class="py-docstring">With this module, you can trace all calls made to OpenGL through PyOpenGL.</tt> </tt>
+<a name="L15"></a><tt class="py-lineno"> 15</tt>  <tt class="py-line"><tt class="py-docstring">To do this, substitute</tt> </tt>
+<a name="L16"></a><tt class="py-lineno"> 16</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L17"></a><tt class="py-lineno"> 17</tt>  <tt class="py-line"><tt class="py-docstring">import OpenGL.GL as gl</tt> </tt>
+<a name="L18"></a><tt class="py-lineno"> 18</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L19"></a><tt class="py-lineno"> 19</tt>  <tt class="py-line"><tt class="py-docstring">with</tt> </tt>
+<a name="L20"></a><tt class="py-lineno"> 20</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L21"></a><tt class="py-lineno"> 21</tt>  <tt class="py-line"><tt class="py-docstring">import VisionEgg.GLTrace as gl</tt> </tt>
+<a name="L22"></a><tt class="py-lineno"> 22</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L23"></a><tt class="py-lineno"> 23</tt>  <tt class="py-line"><tt class="py-docstring">in your code.</tt> </tt>
+<a name="L24"></a><tt class="py-lineno"> 24</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L25"></a><tt class="py-lineno"> 25</tt>  <tt class="py-line"><tt class="py-docstring">Also, trace another module's use of OpenGL by changing its reference</tt> </tt>
+<a name="L26"></a><tt class="py-lineno"> 26</tt>  <tt class="py-line"><tt class="py-docstring">to OpenGL.GL to a reference to VisionEgg.GLTrace.</tt> </tt>
+<a name="L27"></a><tt class="py-lineno"> 27</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L28"></a><tt class="py-lineno"> 28</tt>  <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L29"></a><tt class="py-lineno"> 29</tt>  <tt class="py-line"> </tt>
+<a name="L30"></a><tt class="py-lineno"> 30</tt>  <tt class="py-line"><tt class="py-comment"># Copyright (c) 2003 Andrew Straw.  Distributed under the terms of the</tt> </tt>
+<a name="L31"></a><tt class="py-lineno"> 31</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># GNU Lesser General Public License (LGPL).</tt> </tt>
+<a name="L32"></a><tt class="py-lineno"> 32</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L33"></a><tt class="py-lineno"> 33</tt>  <tt class="py-line"><tt class="py-comment">####################################################################</tt> </tt>
+<a name="L34"></a><tt class="py-lineno"> 34</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L35"></a><tt class="py-lineno"> 35</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#        Import all the necessary packages</tt> </tt>
+<a name="L36"></a><tt class="py-lineno"> 36</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L37"></a><tt class="py-lineno"> 37</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">####################################################################</tt> </tt>
+<a name="L38"></a><tt class="py-lineno"> 38</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L39"></a><tt class="py-lineno"> 39</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">OpenGL</tt><tt class="py-op">.</tt><tt id="link-0" class="py-name" targets="Module VisionEgg.GL=VisionEgg.GL-module.html"><a title="VisionEgg.GL" class="py-name" href="#" onclick="return doclink('link-0', 'GL', 'link-0');">GL</a></tt> <tt class="py-keyword">as</tt> <tt class="py-name">gl</tt> </tt>
+<a name="L40"></a><tt class="py-lineno"> 40</tt>  <tt class="py-line"> </tt>
+<a name="L41"></a><tt class="py-lineno"> 41</tt>  <tt class="py-line"><tt id="link-1" class="py-name" targets="Variable VisionEgg.GLTrace.gl_constants=VisionEgg.GLTrace-module.html#gl_constants"><a title="VisionEgg.GLTrace.gl_constants" class="py-name" href="#" onclick="return doclink('link-1', 'gl_constants', 'link-1');">gl_constants</a></tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L42"></a><tt class="py-lineno"> 42</tt>  <tt class="py-line"> </tt>
+<a name="L43"></a><tt class="py-lineno"> 43</tt>  <tt class="py-line"><tt class="py-comment"># functions which we don't want to translate arguments to gl constant</tt> </tt>
+<a name="L44"></a><tt class="py-lineno"> 44</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt id="link-2" class="py-name" targets="Variable VisionEgg.GLTrace.raw_args_by_function=VisionEgg.GLTrace-module.html#raw_args_by_function"><a title="VisionEgg.GLTrace.raw_args_by_function" class="py-name" href="#" onclick="return doclink('link-2', 'raw_args_by_function', 'link-2');">raw_args_by_function</a></tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> </tt>
+<a name="L45"></a><tt class="py-lineno"> 45</tt>  <tt class="py-line">    <tt class="py-string">'glColor'</tt><tt class="py-op">:</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">,</tt><tt class="py-number">1</tt><tt class="py-op">,</tt><tt class="py-number">2</tt><tt class="py-op">,</tt><tt class="py-number">3</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L46"></a><tt class="py-lineno"> 46</tt>  <tt class="py-line">    <tt class="py-string">'glColorf'</tt><tt class="py-op">:</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">,</tt><tt class="py-number">1</tt><tt class="py-op">,</tt><tt class="py-number">2</tt><tt class="py-op">,</tt><tt class="py-number">3</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L47"></a><tt class="py-lineno"> 47</tt>  <tt class="py-line">    <tt class="py-string">'glDepthRange'</tt><tt class="py-op">:</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">,</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L48"></a><tt class="py-lineno"> 48</tt>  <tt class="py-line">    <tt class="py-string">'glGenTextures'</tt><tt class="py-op">:</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L49"></a><tt class="py-lineno"> 49</tt>  <tt class="py-line">    <tt class="py-string">'glGetTexLevelParameteriv'</tt><tt class="py-op">:</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L50"></a><tt class="py-lineno"> 50</tt>  <tt class="py-line">    <tt class="py-string">'glOrtho'</tt><tt class="py-op">:</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">,</tt><tt class="py-number">1</tt><tt class="py-op">,</tt><tt class="py-number">2</tt><tt class="py-op">,</tt><tt class="py-number">3</tt><tt class="py-op">,</tt><tt class="py-number">4</tt><tt class="py-op">,</tt><tt class="py-number">5</tt><tt class="py-op">]</tt><tt class="py-op">,</t [...]
+<a name="L51"></a><tt class="py-lineno"> 51</tt>  <tt class="py-line">    <tt class="py-string">'glPixelStorei'</tt><tt class="py-op">:</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L52"></a><tt class="py-lineno"> 52</tt>  <tt class="py-line">    <tt class="py-string">'glReadPixels'</tt><tt class="py-op">:</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">,</tt><tt class="py-number">1</tt><tt class="py-op">,</tt><tt class="py-number">2</tt><tt class="py-op">,</tt><tt class="py-number">3</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L53"></a><tt class="py-lineno"> 53</tt>  <tt class="py-line">    <tt class="py-string">'glRotate'</tt><tt class="py-op">:</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">,</tt><tt class="py-number">1</tt><tt class="py-op">,</tt><tt class="py-number">2</tt><tt class="py-op">,</tt><tt class="py-number">3</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L54"></a><tt class="py-lineno"> 54</tt>  <tt class="py-line">    <tt class="py-string">'glTexCoord2f'</tt><tt class="py-op">:</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">,</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L55"></a><tt class="py-lineno"> 55</tt>  <tt class="py-line">    <tt class="py-string">'glTexImage1D'</tt><tt class="py-op">:</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">,</tt><tt class="py-number">3</tt><tt class="py-op">,</tt><tt class="py-number">4</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L56"></a><tt class="py-lineno"> 56</tt>  <tt class="py-line">    <tt class="py-string">'glTexImage2D'</tt><tt class="py-op">:</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">,</tt><tt class="py-number">3</tt><tt class="py-op">,</tt><tt class="py-number">4</tt><tt class="py-op">,</tt><tt class="py-number">5</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L57"></a><tt class="py-lineno"> 57</tt>  <tt class="py-line">    <tt class="py-string">'glTexSubImage1D'</tt><tt class="py-op">:</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">,</tt><tt class="py-number">2</tt><tt class="py-op">,</tt><tt class="py-number">3</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L58"></a><tt class="py-lineno"> 58</tt>  <tt class="py-line">    <tt class="py-string">'glTranslate'</tt><tt class="py-op">:</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">,</tt><tt class="py-number">1</tt><tt class="py-op">,</tt><tt class="py-number">2</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L59"></a><tt class="py-lineno"> 59</tt>  <tt class="py-line">    <tt class="py-string">'glVertex2f'</tt><tt class="py-op">:</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">,</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L60"></a><tt class="py-lineno"> 60</tt>  <tt class="py-line">    <tt class="py-string">'glVertex3f'</tt><tt class="py-op">:</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">,</tt><tt class="py-number">1</tt><tt class="py-op">,</tt><tt class="py-number">2</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L61"></a><tt class="py-lineno"> 61</tt>  <tt class="py-line">    <tt class="py-string">'glViewport'</tt><tt class="py-op">:</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">,</tt><tt class="py-number">1</tt><tt class="py-op">,</tt><tt class="py-number">2</tt><tt class="py-op">,</tt><tt class="py-number">3</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L62"></a><tt class="py-lineno"> 62</tt>  <tt class="py-line">    <tt class="py-op">}</tt> </tt>
+<a name="L63"></a><tt class="py-lineno"> 63</tt>  <tt class="py-line"> </tt>
+<a name="L64"></a><tt class="py-lineno"> 64</tt>  <tt class="py-line"><tt id="link-3" class="py-name" targets="Variable VisionEgg.GLTrace.bitmasks_by_function=VisionEgg.GLTrace-module.html#bitmasks_by_function"><a title="VisionEgg.GLTrace.bitmasks_by_function" class="py-name" href="#" onclick="return doclink('link-3', 'bitmasks_by_function', 'link-3');">bitmasks_by_function</a></tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> </tt>
+<a name="L65"></a><tt class="py-lineno"> 65</tt>  <tt class="py-line">    <tt class="py-string">'glClear'</tt><tt class="py-op">:</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L66"></a><tt class="py-lineno"> 66</tt>  <tt class="py-line">    <tt class="py-op">}</tt> </tt>
+<a name="L67"></a><tt class="py-lineno"> 67</tt>  <tt class="py-line"> </tt>
+<a name="L68"></a><tt class="py-lineno"> 68</tt>  <tt class="py-line"><tt id="link-4" class="py-name" targets="Variable VisionEgg.GLTrace.bitmask_names_by_value=VisionEgg.GLTrace-module.html#bitmask_names_by_value"><a title="VisionEgg.GLTrace.bitmask_names_by_value" class="py-name" href="#" onclick="return doclink('link-4', 'bitmask_names_by_value', 'link-4');">bitmask_names_by_value</a></tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> </tt>
+<a name="L69"></a><tt class="py-lineno"> 69</tt>  <tt class="py-line">    <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_COLOR_BUFFER_BIT</tt> <tt class="py-op">:</tt> <tt class="py-string">'GL_COLOR_BUFFER_BIT'</tt><tt class="py-op">,</tt> </tt>
+<a name="L70"></a><tt class="py-lineno"> 70</tt>  <tt class="py-line">    <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_DEPTH_BUFFER_BIT</tt> <tt class="py-op">:</tt> <tt class="py-string">'GL_DEPTH_BUFFER_BIT'</tt><tt class="py-op">,</tt> </tt>
+<a name="L71"></a><tt class="py-lineno"> 71</tt>  <tt class="py-line">    <tt class="py-op">}</tt> </tt>
+<a name="L72"></a><tt class="py-lineno"> 72</tt>  <tt class="py-line"> </tt>
+<a name="arg_to_str"></a><div id="arg_to_str-def"><a name="L73"></a><tt class="py-lineno"> 73</tt> <a class="py-toggle" href="#" id="arg_to_str-toggle" onclick="return toggle('arg_to_str');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.GLTrace-module.html#arg_to_str">arg_to_str</a><tt class="py-op">(</tt> <tt class="py-param">arg</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="arg_to_str-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="arg_to_str-expanded"><a name="L74"></a><tt class="py-lineno"> 74</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">arg</tt><tt class="py-op">,</tt> <tt id="link-5" class="py-name" targets="Class int=int-class.html"><a title="int" class="py-name" href="#" onclick="return doclink('link-5', 'int', 'link-5' [...]
+<a name="L75"></a><tt class="py-lineno"> 75</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">arg</tt> <tt class="py-keyword">in</tt> <tt id="link-6" class="py-name"><a title="VisionEgg.GLTrace.gl_constants" class="py-name" href="#" onclick="return doclink('link-6', 'gl_constants', 'link-1');">gl_constants</a></tt><tt class="py-op">.</tt><tt class="py-name">keys</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L76"></a><tt class="py-lineno"> 76</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt id="link-7" class="py-name"><a title="VisionEgg.GLTrace.gl_constants" class="py-name" href="#" onclick="return doclink('link-7', 'gl_constants', 'link-1');">gl_constants</a></tt><tt class="py-op">[</tt><tt class="py-name">arg</tt><tt class="py-op">]</tt> </tt>
+<a name="L77"></a><tt class="py-lineno"> 77</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">arg</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-name">str</tt> <tt class="py-keyword">and</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">arg</tt><tt class="py-op">)</tt> <tt class="py-op">></tt> <tt class="py-number">30</tt><tt class="py-op">:</tt> </tt>
+<a name="L78"></a><tt class="py-lineno"> 78</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-string">"'<string>'"</tt> </tt>
+<a name="L79"></a><tt class="py-lineno"> 79</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">repr</tt><tt class="py-op">(</tt><tt class="py-name">arg</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L80"></a><tt class="py-lineno"> 80</tt>  <tt class="py-line"> </tt>
+<a name="Wrapper"></a><div id="Wrapper-def"><a name="L81"></a><tt class="py-lineno"> 81</tt> <a class="py-toggle" href="#" id="Wrapper-toggle" onclick="return toggle('Wrapper');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.GLTrace.Wrapper-class.html">Wrapper</a><tt class="py-op">:</tt> </tt>
+</div><div id="Wrapper-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="Wrapper-expanded"><a name="Wrapper.__init__"></a><div id="Wrapper.__init__-def"><a name="L82"></a><tt class="py-lineno"> 82</tt> <a class="py-toggle" href="#" id="Wrapper.__init__-toggle" onclick="return toggle('Wrapper.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.GLTrace.Wrapper-class.html#__init__">__init__</a><tt class="py-o [...]
+</div><div id="Wrapper.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Wrapper.__init__-expanded"><a name="L83"></a><tt class="py-lineno"> 83</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">function_name</tt> <tt class="py-op">=</tt> <tt class="py-name">function_name</tt> </tt>
+<a name="L84"></a><tt class="py-lineno"> 84</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">orig_func</tt> <tt class="py-op">=</tt> <tt class="py-name">getattr</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">,</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">function_name</tt><tt class="py-op">)</tt> </tt>
+</div><a name="Wrapper.run"></a><div id="Wrapper.run-def"><a name="L85"></a><tt class="py-lineno"> 85</tt> <a class="py-toggle" href="#" id="Wrapper.run-toggle" onclick="return toggle('Wrapper.run');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.GLTrace.Wrapper-class.html#run">run</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt><tt class="py-op">*</tt><tt class="py-param">args</tt><tt class="py-op">,< [...]
+</div><div id="Wrapper.run-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Wrapper.run-expanded"><a name="L86"></a><tt class="py-lineno"> 86</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">kw</tt><tt class="py-op">:</tt> <tt class="py-name">kw_str</tt> <tt class="py-op">=</tt> <tt class="py-string">" AND KEYWORDS"</tt> </tt>
+<a name="L87"></a><tt class="py-lineno"> 87</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> <tt class="py-name">kw_str</tt> <tt class="py-op">=</tt> <tt class="py-string">""</tt> </tt>
+<a name="L88"></a><tt class="py-lineno"> 88</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-number">1</tt><tt class="py-op">:</tt> </tt>
+<a name="L89"></a><tt class="py-lineno"> 89</tt>  <tt class="py-line"><tt class="py-comment">##        if self.function_name in raw_args_by_function:</tt> </tt>
+<a name="L90"></a><tt class="py-lineno"> 90</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">arg_str</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L91"></a><tt class="py-lineno"> 91</tt>  <tt class="py-line">            <tt class="py-keyword">for</tt> <tt class="py-name">i</tt> <tt class="py-keyword">in</tt> <tt class="py-name">range</tt><tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">args</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L92"></a><tt class="py-lineno"> 92</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">function_name</tt> <tt class="py-keyword">in</tt> <tt id="link-8" class="py-name"><a title="VisionEgg.GLTrace.raw_args_by_function" class="py-name" href="#" onclick="return doclink('link-8', 'raw_args_by_function', 'link-2');">raw_args_by_function</a></tt> <tt class="py-keyword">and</tt> <tt class="py [...]
+<a name="L93"></a><tt class="py-lineno"> 93</tt>  <tt class="py-line">                    <tt class="py-name">arg_str</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">args</tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> <tt class="py-comment"># don't convert to name of OpenGL constant</tt> </tt>
+<a name="L94"></a><tt class="py-lineno"> 94</tt>  <tt class="py-line">                <tt class="py-keyword">elif</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">function_name</tt> <tt class="py-keyword">in</tt> <tt id="link-10" class="py-name"><a title="VisionEgg.GLTrace.bitmasks_by_function" class="py-name" href="#" onclick="return doclink('link-10', 'bitmasks_by_function', 'link-3');">bitmasks_by_function</a></tt> <tt class="py-keyword">and</tt> <tt class [...]
+<a name="L95"></a><tt class="py-lineno"> 95</tt>  <tt class="py-line">                    <tt class="py-name">bitmask_strs</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L96"></a><tt class="py-lineno"> 96</tt>  <tt class="py-line">                    <tt class="py-name">value</tt> <tt class="py-op">=</tt> <tt class="py-name">args</tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">]</tt> </tt>
+<a name="L97"></a><tt class="py-lineno"> 97</tt>  <tt class="py-line">                    <tt class="py-keyword">for</tt> <tt class="py-name">bit_value</tt> <tt class="py-keyword">in</tt> <tt id="link-12" class="py-name"><a title="VisionEgg.GLTrace.bitmask_names_by_value" class="py-name" href="#" onclick="return doclink('link-12', 'bitmask_names_by_value', 'link-4');">bitmask_names_by_value</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L98"></a><tt class="py-lineno"> 98</tt>  <tt class="py-line">                        <tt class="py-keyword">if</tt> <tt class="py-name">value</tt> <tt class="py-op">&</tt> <tt class="py-name">bit_value</tt><tt class="py-op">:</tt> </tt>
+<a name="L99"></a><tt class="py-lineno"> 99</tt>  <tt class="py-line">                            <tt class="py-name">value</tt> <tt class="py-op">=</tt> <tt class="py-name">value</tt> <tt class="py-op">&</tt> <tt class="py-op">~</tt><tt class="py-name">bit_value</tt> </tt>
+<a name="L100"></a><tt class="py-lineno">100</tt>  <tt class="py-line">                            <tt class="py-name">bitmask_strs</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt> <tt id="link-13" class="py-name"><a title="VisionEgg.GLTrace.bitmask_names_by_value" class="py-name" href="#" onclick="return doclink('link-13', 'bitmask_names_by_value', 'link-4');">bitmask_names_by_value</a></tt><tt class="py-op">[</tt><tt class="py-name">bit_value</tt><tt  [...]
+<a name="L101"></a><tt class="py-lineno">101</tt>  <tt class="py-line">                    <tt class="py-keyword">if</tt> <tt class="py-name">value</tt> <tt class="py-op">!=</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt>
+<a name="L102"></a><tt class="py-lineno">102</tt>  <tt class="py-line">                        <tt class="py-name">bitmask_strs</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt> <tt id="link-14" class="py-name" targets="Function VisionEgg.GLTrace.arg_to_str()=VisionEgg.GLTrace-module.html#arg_to_str"><a title="VisionEgg.GLTrace.arg_to_str" class="py-name" href="#" onclick="return doclink('link-14', 'arg_to_str', 'link-14');">arg_to_str</a></tt><tt class= [...]
+<a name="L103"></a><tt class="py-lineno">103</tt>  <tt class="py-line">                    <tt class="py-name">arg_str</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt> <tt class="py-string">'|'</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">bitmask_strs</tt><tt class="py-op">)</tt> <tt class="py-op">)</tt> </tt>
+<a name="L104"></a><tt class="py-lineno">104</tt>  <tt class="py-line">                <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L105"></a><tt class="py-lineno">105</tt>  <tt class="py-line">                    <tt class="py-name">arg_str</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt id="link-15" class="py-name"><a title="VisionEgg.GLTrace.arg_to_str" class="py-name" href="#" onclick="return doclink('link-15', 'arg_to_str', 'link-14');">arg_to_str</a></tt><tt class="py-op">(</tt><tt class="py-name">args</tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt clas [...]
+<a name="L106"></a><tt class="py-lineno">106</tt>  <tt class="py-line">            <tt class="py-name">arg_str</tt> <tt class="py-op">=</tt> <tt class="py-string">','</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt> <tt class="py-name">arg_str</tt> <tt class="py-op">)</tt> </tt>
+<a name="L107"></a><tt class="py-lineno">107</tt>  <tt class="py-line">        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L108"></a><tt class="py-lineno">108</tt>  <tt class="py-line">            <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">orig_func</tt><tt class="py-op">(</tt><tt class="py-op">*</tt><tt class="py-name">args</tt><tt class="py-op">,</tt><tt class="py-op">**</tt><tt class="py-name">kw</tt><tt class="py-op">)</tt> </tt>
+<a name="L109"></a><tt class="py-lineno">109</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt><tt class="py-op">:</tt> </tt>
+<a name="L110"></a><tt class="py-lineno">110</tt>  <tt class="py-line">            <tt class="py-keyword">print</tt> <tt class="py-string">"%s(%s)%s"</tt><tt class="py-op">%</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">function_name</tt><tt class="py-op">,</tt><tt class="py-name">arg_str</tt><tt class="py-op">,</tt><tt class="py-name">kw_str</tt><tt class="py-op">)</tt> </tt>
+<a name="L111"></a><tt class="py-lineno">111</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> </tt>
+<a name="L112"></a><tt class="py-lineno">112</tt>  <tt class="py-line"> </tt>
+<a name="L113"></a><tt class="py-lineno">113</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">result</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L114"></a><tt class="py-lineno">114</tt>  <tt class="py-line">            <tt class="py-name">result_str</tt> <tt class="py-op">=</tt> <tt class="py-string">"%s = "</tt><tt class="py-op">%</tt><tt class="py-op">(</tt><tt id="link-16" class="py-name"><a title="VisionEgg.GLTrace.arg_to_str" class="py-name" href="#" onclick="return doclink('link-16', 'arg_to_str', 'link-14');">arg_to_str</a></tt><tt class="py-op">(</tt><tt class="py-name">result</tt><tt class="py-op">)</tt><tt clas [...]
+<a name="L115"></a><tt class="py-lineno">115</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L116"></a><tt class="py-lineno">116</tt>  <tt class="py-line">            <tt class="py-name">result_str</tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt> </tt>
+<a name="L117"></a><tt class="py-lineno">117</tt>  <tt class="py-line">        <tt class="py-keyword">print</tt> <tt class="py-string">"%s%s(%s)%s"</tt><tt class="py-op">%</tt><tt class="py-op">(</tt><tt class="py-name">result_str</tt><tt class="py-op">,</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">function_name</tt><tt class="py-op">,</tt><tt class="py-name">arg_str</tt><tt class="py-op">,</tt><tt class="py-name">kw_str</tt><tt class="py-op">)</tt> </tt>
+<a name="L118"></a><tt class="py-lineno">118</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">result</tt> </tt>
+</div></div><a name="L119"></a><tt class="py-lineno">119</tt>  <tt class="py-line"> </tt>
+<a name="gl_trace_attach"></a><div id="gl_trace_attach-def"><a name="L120"></a><tt class="py-lineno">120</tt> <a class="py-toggle" href="#" id="gl_trace_attach-toggle" onclick="return toggle('gl_trace_attach');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.GLTrace-module.html#gl_trace_attach">gl_trace_attach</a><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="gl_trace_attach-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="gl_trace_attach-expanded"><a name="L121"></a><tt class="py-lineno">121</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">attr_name</tt> <tt class="py-keyword">in</tt> <tt class="py-name">dir</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L122"></a><tt class="py-lineno">122</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">callable</tt><tt class="py-op">(</tt> <tt class="py-name">getattr</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">,</tt><tt class="py-name">attr_name</tt><tt class="py-op">)</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L123"></a><tt class="py-lineno">123</tt>  <tt class="py-line">            <tt class="py-name">wrapper</tt> <tt class="py-op">=</tt> <tt id="link-17" class="py-name" targets="Class VisionEgg.GLTrace.Wrapper=VisionEgg.GLTrace.Wrapper-class.html"><a title="VisionEgg.GLTrace.Wrapper" class="py-name" href="#" onclick="return doclink('link-17', 'Wrapper', 'link-17');">Wrapper</a></tt><tt class="py-op">(</tt><tt class="py-name">attr_name</tt><tt class="py-op">)</tt> </tt>
+<a name="L124"></a><tt class="py-lineno">124</tt>  <tt class="py-line">            <tt class="py-name">globals</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-name">attr_name</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">wrapper</tt><tt class="py-op">.</tt><tt id="link-18" class="py-name" targets="Method VisionEgg.GLTrace.Wrapper.run()=VisionEgg.GLTrace.Wrapper-class.html#run"><a title="VisionEgg.GLTrace.Wrapper.run" c [...]
+<a name="L125"></a><tt class="py-lineno">125</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L126"></a><tt class="py-lineno">126</tt>  <tt class="py-line">            <tt class="py-name">attr</tt> <tt class="py-op">=</tt> <tt class="py-name">getattr</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">,</tt><tt class="py-name">attr_name</tt><tt class="py-op">)</tt> </tt>
+<a name="L127"></a><tt class="py-lineno">127</tt>  <tt class="py-line">            <tt class="py-name">globals</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-name">attr_name</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">attr</tt> </tt>
+<a name="L128"></a><tt class="py-lineno">128</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">attr_name</tt><tt class="py-op">.</tt><tt class="py-name">startswith</tt><tt class="py-op">(</tt><tt class="py-string">'__'</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-keyword">not</tt> <tt class="py-name">attr_name</tt><tt class="py-op">.</tt><tt class="py-name">startswith</tt><tt class="py-op [...]
+<a name="L129"></a><tt class="py-lineno">129</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">getattr</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">,</tt><tt class="py-name">attr_name</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt id="link-19" class="py-name"><a title="int" class="py-name" href="#" onclick="return doclink('link-19 [...]
+<a name="L130"></a><tt class="py-lineno">130</tt>  <tt class="py-line">                    <tt id="link-20" class="py-name"><a title="VisionEgg.GLTrace.gl_constants" class="py-name" href="#" onclick="return doclink('link-20', 'gl_constants', 'link-1');">gl_constants</a></tt><tt class="py-op">[</tt><tt class="py-name">getattr</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">,</tt><tt class="py-name">attr_name</tt><tt class="py-op">)</tt><tt class="py-op">]</tt> <tt [...]
+<a name="L131"></a><tt class="py-lineno">131</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">,</tt><tt class="py-string">'GL_CLAMP_TO_EDGE'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L132"></a><tt class="py-lineno">132</tt>  <tt class="py-line">        <tt class="py-comment"># XXX This hack requires opengl >= 1.2. See Core.py for more info.</tt> </tt>
+<a name="L133"></a><tt class="py-lineno">133</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">globals</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-string">'GL_CLAMP_TO_EDGE'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-number">0x812F</tt> </tt>
+<a name="L134"></a><tt class="py-lineno">134</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">,</tt><tt class="py-string">'glActiveTexture'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L135"></a><tt class="py-lineno">135</tt>  <tt class="py-line">        <tt class="py-comment"># XXX Another, similar hack.</tt> </tt>
+<a name="L136"></a><tt class="py-lineno">136</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">globals</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-string">'glActiveTextureARB'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glActiveTexture</tt> </tt>
+<a name="L137"></a><tt class="py-lineno">137</tt>  <tt class="py-line">        <tt class="py-name">globals</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-string">'glMultiTexCoord2fARB'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glMultiTexCoord2f</tt> </tt>
+<a name="L138"></a><tt class="py-lineno">138</tt>  <tt class="py-line">        <tt class="py-name">globals</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-string">'GL_TEXTURE0_ARB'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE0</tt> </tt>
+<a name="L139"></a><tt class="py-lineno">139</tt>  <tt class="py-line">        <tt class="py-name">globals</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-string">'GL_TEXTURE1_ARB'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE1</tt> </tt>
+</div><a name="L140"></a><tt class="py-lineno">140</tt>  <tt class="py-line"> </tt>
+<a name="L141"></a><tt class="py-lineno">141</tt>  <tt class="py-line"><tt id="link-21" class="py-name" targets="Function VisionEgg.GLTrace.gl_trace_attach()=VisionEgg.GLTrace-module.html#gl_trace_attach"><a title="VisionEgg.GLTrace.gl_trace_attach" class="py-name" href="#" onclick="return doclink('link-21', 'gl_trace_attach', 'link-21');">gl_trace_attach</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-comment"># attach when imported</tt> </tt>
+<a name="L142"></a><tt class="py-lineno">142</tt>  <tt class="py-line"> </tt><script type="text/javascript">
+<!--
+expandto(location.href);
+// -->
+</script>
+</pre>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:50 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.GLTrace.Wrapper-class.html b/doc/reference/html/VisionEgg.GLTrace.Wrapper-class.html
new file mode 100644
index 0000000..601cbe2
--- /dev/null
+++ b/doc/reference/html/VisionEgg.GLTrace.Wrapper-class.html
@@ -0,0 +1,157 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.GLTrace.Wrapper</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.GLTrace-module.html">Module GLTrace</a> ::
+        Class Wrapper
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.GLTrace.Wrapper-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class Wrapper</h1><span class="codelink"><a href="VisionEgg.GLTrace-pysrc.html#Wrapper">source code</a></span><br /><br />
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__init__"></a><span class="summary-sig-name">__init__</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">function_name</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.GLTrace-pysrc.html#Wrapper.__init__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="run"></a><span class="summary-sig-name">run</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">*args</span>,
+        <span class="summary-sig-arg">**kw</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.GLTrace-pysrc.html#Wrapper.run">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.GUI-module.html b/doc/reference/html/VisionEgg.GUI-module.html
new file mode 100644
index 0000000..c83a958
--- /dev/null
+++ b/doc/reference/html/VisionEgg.GUI-module.html
@@ -0,0 +1,230 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.GUI</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        Module GUI
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.GUI-module.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== MODULE DESCRIPTION ==================== -->
+<h1 class="epydoc">Module GUI</h1><span class="codelink"><a href="VisionEgg.GUI-pysrc.html">source code</a></span><br /><br />
+<pre class="literalblock">
+
+Graphical user interface classes and functions.
+
+</pre><br /><br />
+
+<!-- ==================== CLASSES ==================== -->
+<a name="section-Classes"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Classes</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.GUI.AppWindow-class.html" class="summary-name">AppWindow</a><br />
+      A GUI Window that can be subclassed for a main application window
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.GUI.ProgressBar-class.html" class="summary-name">ProgressBar</a>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.GUI.GraphicsConfigurationWindow-class.html" class="summary-name">GraphicsConfigurationWindow</a><br />
+      Graphics Configuration Window
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.GUI.InfoFrame-class.html" class="summary-name">InfoFrame</a>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.GUI.ToplevelDialog-class.html" class="summary-name">ToplevelDialog</a><br />
+      Base class for a dialog that runs on the top level.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.GUI.GetKeypressDialog-class.html" class="summary-name">GetKeypressDialog</a><br />
+      Open a dialog box which returns when a valid key is pressed.
+    </td>
+  </tr>
+</table>
+<!-- ==================== FUNCTIONS ==================== -->
+<a name="section-Functions"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Functions</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="showexception"></a><span class="summary-sig-name">showexception</span>(<span class="summary-sig-arg">exc_type</span>,
+        <span class="summary-sig-arg">exc_value</span>,
+        <span class="summary-sig-arg">traceback_str</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.GUI-pysrc.html#showexception">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+</table>
+<!-- ==================== VARIABLES ==================== -->
+<a name="section-Variables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Variables</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="Tkinter"></a><span class="summary-name">Tkinter</span> = <code title="_delay_import_error(x)">_delay_import_error(x)</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="tkMessageBox"></a><span class="summary-name">tkMessageBox</span> = <code title="_delay_import_error(x)">_delay_import_error(x)</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="tkFileDialog"></a><span class="summary-name">tkFileDialog</span> = <code title="_delay_import_error(x)">_delay_import_error(x)</code>
+    </td>
+  </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.GUI-pysrc.html b/doc/reference/html/VisionEgg.GUI-pysrc.html
new file mode 100644
index 0000000..f0a3df4
--- /dev/null
+++ b/doc/reference/html/VisionEgg.GUI-pysrc.html
@@ -0,0 +1,1992 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.GUI</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        Module GUI
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.GUI-pysrc.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<h1 class="epydoc">Source Code for <a href="VisionEgg.GUI-module.html">Module VisionEgg.GUI</a></h1>
+<pre class="py-src">
+<a name="L1"></a><tt class="py-lineno">  1</tt>  <tt class="py-line"><tt class="py-comment"># The Vision Egg: GUI</tt> </tt>
+<a name="L2"></a><tt class="py-lineno">  2</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L3"></a><tt class="py-lineno">  3</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Copyright (C) 2001-2003 Andrew Straw.</tt> </tt>
+<a name="L4"></a><tt class="py-lineno">  4</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Copyright (C) 2008 California Institute of Technology</tt> </tt>
+<a name="L5"></a><tt class="py-lineno">  5</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L6"></a><tt class="py-lineno">  6</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># URL: <http://www.visionegg.org/></tt> </tt>
+<a name="L7"></a><tt class="py-lineno">  7</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L8"></a><tt class="py-lineno">  8</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Distributed under the terms of the GNU Lesser General Public License</tt> </tt>
+<a name="L9"></a><tt class="py-lineno">  9</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># (LGPL). See LICENSE.TXT that came with this file.</tt> </tt>
+<a name="L10"></a><tt class="py-lineno"> 10</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L11"></a><tt class="py-lineno"> 11</tt>  <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L12"></a><tt class="py-lineno"> 12</tt>  <tt class="py-line"><tt class="py-docstring">Graphical user interface classes and functions.</tt> </tt>
+<a name="L13"></a><tt class="py-lineno"> 13</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L14"></a><tt class="py-lineno"> 14</tt>  <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L15"></a><tt class="py-lineno"> 15</tt>  <tt class="py-line"> </tt>
+<a name="L16"></a><tt class="py-lineno"> 16</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-0" class="py-name" targets="Package VisionEgg=VisionEgg-module.html"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-0', 'VisionEgg', 'link-0');">VisionEgg</a></tt> </tt>
+<a name="L17"></a><tt class="py-lineno"> 17</tt>  <tt class="py-line"> </tt>
+<a name="L18"></a><tt class="py-lineno"> 18</tt>  <tt class="py-line"><tt class="py-comment">####################################################################</tt> </tt>
+<a name="L19"></a><tt class="py-lineno"> 19</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L20"></a><tt class="py-lineno"> 20</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#        Import all the necessary packages</tt> </tt>
+<a name="L21"></a><tt class="py-lineno"> 21</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L22"></a><tt class="py-lineno"> 22</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">####################################################################</tt> </tt>
+<a name="L23"></a><tt class="py-lineno"> 23</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L24"></a><tt class="py-lineno"> 24</tt>  <tt class="py-line"> </tt>
+<a name="L25"></a><tt class="py-lineno"> 25</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">logging</tt>                              <tt class="py-comment"># available in Python 2.3</tt> </tt>
+<a name="L26"></a><tt class="py-lineno"> 26</tt>  <tt class="py-line"> </tt>
+<a name="L27"></a><tt class="py-lineno"> 27</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-1" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-1', 'VisionEgg', 'link-0');">VisionEgg</a></tt> </tt>
+<a name="L28"></a><tt class="py-lineno"> 28</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">os</tt> </tt>
+<a name="L29"></a><tt class="py-lineno"> 29</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">sys</tt> </tt>
+<a name="L30"></a><tt class="py-lineno"> 30</tt>  <tt class="py-line"> </tt>
+<a name="_delay_import_error"></a><div id="_delay_import_error-def"><a name="L31"></a><tt class="py-lineno"> 31</tt> <a class="py-toggle" href="#" id="_delay_import_error-toggle" onclick="return toggle('_delay_import_error');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.GUI._delay_import_error-class.html">_delay_import_error</a><tt class="py-op">:</tt> </tt>
+</div><div id="_delay_import_error-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="_delay_import_error-expanded"><a name="L32"></a><tt class="py-lineno"> 32</tt>  <tt class="py-line">    <tt class="py-docstring">"""Defer import errors until they cause problems."""</tt> </tt>
+<a name="_delay_import_error.__init__"></a><div id="_delay_import_error.__init__-def"><a name="L33"></a><tt class="py-lineno"> 33</tt> <a class="py-toggle" href="#" id="_delay_import_error.__init__-toggle" onclick="return toggle('_delay_import_error.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.GUI._delay_import_error-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op"> [...]
+</div><div id="_delay_import_error.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="_delay_import_error.__init__-expanded"><a name="L34"></a><tt class="py-lineno"> 34</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">orig_traceback</tt> <tt class="py-op">=</tt> <tt class="py-name">orig_traceback</tt> </tt>
+</div><a name="_delay_import_error.__getattr__"></a><div id="_delay_import_error.__getattr__-def"><a name="L35"></a><tt class="py-lineno"> 35</tt> <a class="py-toggle" href="#" id="_delay_import_error.__getattr__-toggle" onclick="return toggle('_delay_import_error.__getattr__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.GUI._delay_import_error-class.html#__getattr__">__getattr__</a><tt class="py-op">(</tt><tt class="py-param">sel [...]
+</div><div id="_delay_import_error.__getattr__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="_delay_import_error.__getattr__-expanded"><a name="L36"></a><tt class="py-lineno"> 36</tt>  <tt class="py-line">        <tt class="py-keyword">raise</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">orig_traceback</tt> <tt class="py-comment"># ImportError deferred from earlier failure</tt> </tt>
+</div></div><a name="L37"></a><tt class="py-lineno"> 37</tt>  <tt class="py-line"> </tt>
+<a name="L38"></a><tt class="py-lineno"> 38</tt>  <tt class="py-line"><tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L39"></a><tt class="py-lineno"> 39</tt>  <tt class="py-line">    <tt class="py-keyword">import</tt> <tt id="link-2" class="py-name" targets="Variable VisionEgg.GUI.Tkinter=VisionEgg.GUI-module.html#Tkinter"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-2', 'Tkinter', 'link-2');">Tkinter</a></tt> </tt>
+<a name="L40"></a><tt class="py-lineno"> 40</tt>  <tt class="py-line"><tt class="py-keyword">except</tt> <tt class="py-name">ImportError</tt><tt class="py-op">,</tt> <tt class="py-name">x</tt><tt class="py-op">:</tt> <tt class="py-comment"># don't fail on this until it becomes a problem...</tt> </tt>
+<a name="L41"></a><tt class="py-lineno"> 41</tt>  <tt class="py-line">    <tt id="link-3" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-3', 'Tkinter', 'link-2');">Tkinter</a></tt> <tt class="py-op">=</tt> <tt class="py-name">_delay_import_error</tt><tt class="py-op">(</tt><tt class="py-name">x</tt><tt class="py-op">)</tt> </tt>
+<a name="L42"></a><tt class="py-lineno"> 42</tt>  <tt class="py-line"> </tt>
+<a name="L43"></a><tt class="py-lineno"> 43</tt>  <tt class="py-line"><tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L44"></a><tt class="py-lineno"> 44</tt>  <tt class="py-line">    <tt class="py-keyword">import</tt> <tt id="link-4" class="py-name" targets="Variable VisionEgg.GUI.tkMessageBox=VisionEgg.GUI-module.html#tkMessageBox"><a title="VisionEgg.GUI.tkMessageBox" class="py-name" href="#" onclick="return doclink('link-4', 'tkMessageBox', 'link-4');">tkMessageBox</a></tt> </tt>
+<a name="L45"></a><tt class="py-lineno"> 45</tt>  <tt class="py-line"><tt class="py-keyword">except</tt> <tt class="py-name">ImportError</tt><tt class="py-op">,</tt> <tt class="py-name">x</tt><tt class="py-op">:</tt> <tt class="py-comment"># don't fail on this until it becomes a problem...</tt> </tt>
+<a name="L46"></a><tt class="py-lineno"> 46</tt>  <tt class="py-line">    <tt id="link-5" class="py-name"><a title="VisionEgg.GUI.tkMessageBox" class="py-name" href="#" onclick="return doclink('link-5', 'tkMessageBox', 'link-4');">tkMessageBox</a></tt> <tt class="py-op">=</tt> <tt class="py-name">_delay_import_error</tt><tt class="py-op">(</tt><tt class="py-name">x</tt><tt class="py-op">)</tt> </tt>
+<a name="L47"></a><tt class="py-lineno"> 47</tt>  <tt class="py-line"> </tt>
+<a name="L48"></a><tt class="py-lineno"> 48</tt>  <tt class="py-line"><tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L49"></a><tt class="py-lineno"> 49</tt>  <tt class="py-line">    <tt class="py-keyword">import</tt> <tt id="link-6" class="py-name" targets="Variable VisionEgg.GUI.tkFileDialog=VisionEgg.GUI-module.html#tkFileDialog"><a title="VisionEgg.GUI.tkFileDialog" class="py-name" href="#" onclick="return doclink('link-6', 'tkFileDialog', 'link-6');">tkFileDialog</a></tt> </tt>
+<a name="L50"></a><tt class="py-lineno"> 50</tt>  <tt class="py-line"><tt class="py-keyword">except</tt> <tt class="py-name">ImportError</tt><tt class="py-op">,</tt> <tt class="py-name">x</tt><tt class="py-op">:</tt> <tt class="py-comment"># don't fail on this until it becomes a problem...</tt> </tt>
+<a name="L51"></a><tt class="py-lineno"> 51</tt>  <tt class="py-line">    <tt id="link-7" class="py-name"><a title="VisionEgg.GUI.tkFileDialog" class="py-name" href="#" onclick="return doclink('link-7', 'tkFileDialog', 'link-6');">tkFileDialog</a></tt> <tt class="py-op">=</tt> <tt class="py-name">_delay_import_error</tt><tt class="py-op">(</tt><tt class="py-name">x</tt><tt class="py-op">)</tt> </tt>
+<a name="L52"></a><tt class="py-lineno"> 52</tt>  <tt class="py-line"> </tt>
+<a name="showexception"></a><div id="showexception-def"><a name="L53"></a><tt class="py-lineno"> 53</tt> <a class="py-toggle" href="#" id="showexception-toggle" onclick="return toggle('showexception');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.GUI-module.html#showexception">showexception</a><tt class="py-op">(</tt><tt class="py-param">exc_type</tt><tt class="py-op">,</tt> <tt class="py-param">exc_value</tt><tt class="py-op">,</tt> <t [...]
+</div><div id="showexception-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="showexception-expanded"><a name="L54"></a><tt class="py-lineno"> 54</tt>  <tt class="py-line">    <tt class="py-comment"># private subclass of Tkinter.Frame</tt> </tt>
+<a name="L55"></a><tt class="py-lineno"> 55</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">class</tt> <tt class="py-def-name">ShowExceptionFrame</tt><tt class="py-op">(</tt><tt class="py-base-class">Tkinter</tt><tt class="py-op">.</tt><tt class="py-base-class">Frame</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L56"></a><tt class="py-lineno"> 56</tt>  <tt class="py-line">        <tt class="py-docstring">"""A window that shows a string and has a quit button."""</tt> </tt>
+<a name="L57"></a><tt class="py-lineno"> 57</tt>  <tt class="py-line">        <tt class="py-keyword">def</tt> <tt class="py-def-name">__init__</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt><tt class="py-param">master</tt><tt class="py-op">,</tt><tt class="py-param">exc_type</tt><tt class="py-op">,</tt> <tt class="py-param">exc_value</tt><tt class="py-op">,</tt> <tt class="py-param">traceback_str</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L58"></a><tt class="py-lineno"> 58</tt>  <tt class="py-line">            <tt id="link-8" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-8', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-9" class="py-name" targets="Variable VisionEgg.config=VisionEgg-module.html#config"><a title="VisionEgg.config" class="py-name" href="#" onclick="return doclink('link-9', 'config', 'link-9');">config</a></tt><tt class= [...]
+<a name="L59"></a><tt class="py-lineno"> 59</tt>  <tt class="py-line">            <tt id="link-10" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-10', 'Tkinter', 'link-2');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Frame</tt><tt class="py-op">.</tt><tt id="link-11" class="py-name" targets="Method VisionEgg.ClassWithParameters.__init__()=VisionEgg.ClassWithParameters-class.html#__init__,Method VisionEgg.Configurat [...]
+VisionEgg.Configuration.Config.__init__
+VisionEgg.Core.FixationSpot.__init__
+VisionEgg.Core.FrameTimer.__init__
+VisionEgg.Core.ModelView.__init__
+VisionEgg.Core.OrthographicProjection.__init__
+VisionEgg.Core.OrthographicProjectionNoZClip.__init__
+VisionEgg.Core.PerspectiveProjection.__init__
+VisionEgg.Core.Projection.__init__
+VisionEgg.Core.ProjectionBaseClass.__init__
+VisionEgg.Core.Screen.__init__
+VisionEgg.Core.SimplePerspectiveProjection.__init__
+VisionEgg.Core.Stimulus.__init__
+VisionEgg.Core.Viewport.__init__
+VisionEgg.Daq.Channel.__init__
+VisionEgg.Daq.DaqMode.__init__
+VisionEgg.Daq.Device.__init__
+VisionEgg.Daq.Functionality.__init__
+VisionEgg.Daq.SignalType.__init__
+VisionEgg.DaqKeyboard.KeyboardTriggerInController.__init__
+VisionEgg.DaqLPT.LPTChannel.__init__
+VisionEgg.DaqLPT.LPTDevice.__init__
+VisionEgg.DaqLPT.LPTTriggerInController.__init__
+VisionEgg.DaqLPT.LPTTriggerOutController.__init__
+VisionEgg.Deprecated.Message.__init__
+VisionEgg.Dots.DotArea2D.__init__
+VisionEgg.FlowControl.ConstantController.__init__
+VisionEgg.FlowControl.Controller.__init__
+VisionEgg.FlowControl.EncapsulatedController.__init__
+VisionEgg.FlowControl.EvalStringController.__init__
+VisionEgg.FlowControl.ExecStringController.__init__
+VisionEgg.FlowControl.FunctionController.__init__
+VisionEgg.FlowControl.Presentation.__init__
+VisionEgg.GLTrace.Wrapper.__init__
+VisionEgg.GUI.AppWindow.__init__
+VisionEgg.GUI.GetKeypressDialog.__init__
+VisionEgg.GUI.GraphicsConfigurationWindow.__init__
+VisionEgg.GUI.InfoFrame.__init__
+VisionEgg.GUI.ProgressBar.__init__
+VisionEgg.GUI.ToplevelDialog.__init__
+VisionEgg.Gratings.SinGrating2D.__init__
+VisionEgg.Gratings.SinGrating3D.__init__
+VisionEgg.MoreStimuli.Arrow.__init__
+VisionEgg.MoreStimuli.FilledCircle.__init__
+VisionEgg.MoreStimuli.Rectangle3D.__init__
+VisionEgg.MoreStimuli.Target2D.__init__
+VisionEgg.ParameterTypes.AnyOf.__init__
+VisionEgg.ParameterTypes.Instance.__init__
+VisionEgg.ParameterTypes.Sequence.__init__
+VisionEgg.ParameterTypes.SubClass.__init__
+VisionEgg.PyroApps.AST_ext.AST_Visitor.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalMetaParameters.__init__
+VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.__init__
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.__init__
+VisionEgg.PyroApps.DropinGUI.DropinMetaParameters.__init__
+VisionEgg.PyroApps.DropinServer.DropinMetaController.__init__
+VisionEgg.PyroApps.EPhysGUI.AppWindow.__init__
+VisionEgg.PyroApps.EPhysGUI.BarButton.__init__
+VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase.__init__
+VisionEgg.PyroApps.EPhysGUI.GammaFrame.__init__
+VisionEgg.PyroApps.EPhysGUI.ImageSequenceLauncher.__init__
+VisionEgg.PyroApps.EPhysGUI.Loop.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopContainedObject.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopParamDialog.__init__
+VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.__init__
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.__init__
+VisionEgg.PyroApps.EPhysServer.EPhysServer.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingMetaParameters.__init__
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.GridGUI.GridControlFrame.__init__
+VisionEgg.PyroApps.GridGUI.GridMetaParameters.__init__
+VisionEgg.PyroApps.GridServer.GridMetaController.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetMetaParameters.__init__
+VisionEgg.PyroApps.MouseTargetServer.MousePositionController.__init__
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetOrientationController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetPositionController.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.CallbackEntry.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionParameters.__init__
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingMetaParameters.__init__
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumMetaParameters.__init__
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.__init__
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.__init__
+VisionEgg.PyroApps.TargetGUI.TargetMetaParameters.__init__
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.__init__
+VisionEgg.PyroClient.PyroClient.__init__
+VisionEgg.PyroHelpers.PyroConstantController.__init__
+VisionEgg.PyroHelpers.PyroEncapsulatedController.__init__
+VisionEgg.PyroHelpers.PyroEvalStringController.__init__
+VisionEgg.PyroHelpers.PyroExecStringController.__init__
+VisionEgg.PyroHelpers.PyroListenController.__init__
+VisionEgg.PyroHelpers.PyroLocalDictController.__init__
+VisionEgg.PyroHelpers.PyroServer.__init__
+VisionEgg.QuickTime.MovieTexture.__init__
+VisionEgg.ResponseControl.KeyboardResponseController.__init__
+VisionEgg.ResponseControl.ResponseController.__init__
+VisionEgg.SphereMap.AzElGrid.__init__
+VisionEgg.SphereMap.SphereGrating.__init__
+VisionEgg.SphereMap.SphereMap.__init__
+VisionEgg.SphereMap.SphereWindow.__init__
+VisionEgg.TCPController.SocketListenController.__init__
+VisionEgg.TCPController.TCPController.__init__
+VisionEgg.TCPController.TCPServer.__init__
+VisionEgg.Text.BitmapText.__init__
+VisionEgg.Text.GlutTextBase.__init__
+VisionEgg.Text.StrokeText.__init__
+VisionEgg.Text.Text.__init__
+VisionEgg.Textures.FixationCross.__init__
+VisionEgg.Textures.Mask2D.__init__
+VisionEgg.Textures.SpinningDrum.__init__
+VisionEgg.Textures.Texture.__init__
+VisionEgg.Textures.TextureFromFile.__init__
+VisionEgg.Textures.TextureObject.__init__
+VisionEgg.Textures.TextureStimulusBaseClass.__init__
+VisionEgg.ThreeDeeMath.TransformMatrix.__init__
+VisionEgg.WrappedText.WrappedText.__init__
+VisionEgg.qtmovie.Movie.__init__
+VisionEgg.qtmovie.Rect.__init__" class="py-name" href="#" onclick="return doclink('link-11', '__init__', 'link-11');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt><tt class="py-name">master</tt><tt class="py-op">,</tt><tt class="py-name">borderwidth</tt><tt class="py-op">=</tt><tt class="py-number">20</tt><tt class="py-op">)</tt> </tt>
+<a name="L60"></a><tt class="py-lineno"> 60</tt>  <tt class="py-line">            <tt id="link-12" class="py-name" targets="Variable VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.title=VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame-class.html#title,Variable VisionEgg.PyroApps.DropinGUI.DropinControlFrame.title=VisionEgg.PyroApps.DropinGUI.DropinControlFrame-class.html#title,Variable VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.title=VisionEgg.PyroApps.FlatGratingG [...]
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.title
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.title
+VisionEgg.PyroApps.GridGUI.GridControlFrame.title
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.title
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.title
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.title
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.title" class="py-name" href="#" onclick="return doclink('link-12', 'title', 'link-12');">title</a></tt><tt class="py-op">=</tt><tt class="py-string">"Vision Egg: exception caught"</tt> </tt>
+<a name="L61"></a><tt class="py-lineno"> 61</tt>  <tt class="py-line">            <tt class="py-name">first_str</tt> <tt class="py-op">=</tt> <tt class="py-string">"An unhandled exception was caught."</tt> </tt>
+<a name="L62"></a><tt class="py-lineno"> 62</tt>  <tt class="py-line">            <tt class="py-name">type_value_str</tt> <tt class="py-op">=</tt> <tt class="py-string">"%s: %s"</tt><tt class="py-op">%</tt><tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">exc_type</tt><tt class="py-op">)</tt><tt class="py-op">,</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">exc_value</tt><tt class="py-op">)</tt><tt class="py-op">) [...]
+<a name="L63"></a><tt class="py-lineno"> 63</tt>  <tt class="py-line"> </tt>
+<a name="L64"></a><tt class="py-lineno"> 64</tt>  <tt class="py-line">            <tt class="py-name">frame</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt> </tt>
+<a name="L65"></a><tt class="py-lineno"> 65</tt>  <tt class="py-line"> </tt>
+<a name="L66"></a><tt class="py-lineno"> 66</tt>  <tt class="py-line">            <tt class="py-name">top</tt> <tt class="py-op">=</tt> <tt class="py-name">frame</tt><tt class="py-op">.</tt><tt class="py-name">winfo_toplevel</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L67"></a><tt class="py-lineno"> 67</tt>  <tt class="py-line">            <tt class="py-name">top</tt><tt class="py-op">.</tt><tt id="link-13" class="py-name"><a title="VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.title
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.title
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.title
+VisionEgg.PyroApps.GridGUI.GridControlFrame.title
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.title
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.title
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.title
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.title" class="py-name" href="#" onclick="return doclink('link-13', 'title', 'link-12');">title</a></tt><tt class="py-op">(</tt><tt id="link-14" class="py-name"><a title="VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.title
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.title
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.title
+VisionEgg.PyroApps.GridGUI.GridControlFrame.title
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.title
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.title
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.title
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.title" class="py-name" href="#" onclick="return doclink('link-14', 'title', 'link-12');">title</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L68"></a><tt class="py-lineno"> 68</tt>  <tt class="py-line">            <tt class="py-name">top</tt><tt class="py-op">.</tt><tt class="py-name">protocol</tt><tt class="py-op">(</tt><tt class="py-string">"WM_DELETE_WINDOW"</tt><tt class="py-op">,</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">close_window</tt><tt class="py-op">)</tt> </tt>
+<a name="L69"></a><tt class="py-lineno"> 69</tt>  <tt class="py-line"> </tt>
+<a name="L70"></a><tt class="py-lineno"> 70</tt>  <tt class="py-line">            <tt id="link-15" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-15', 'Tkinter', 'link-2');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">frame</tt><tt class="py-op">,</tt><tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-name">first_str</tt><tt class="py-op">)</tt><t [...]
+<a name="L71"></a><tt class="py-lineno"> 71</tt>  <tt class="py-line">            <tt id="link-16" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-16', 'Tkinter', 'link-2');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">frame</tt><tt class="py-op">,</tt><tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-name">type_value_str</tt><tt class="py-op">)</ [...]
+<a name="L72"></a><tt class="py-lineno"> 72</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">traceback_str</tt><tt class="py-op">:</tt> </tt>
+<a name="L73"></a><tt class="py-lineno"> 73</tt>  <tt class="py-line">                <tt id="link-17" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-17', 'Tkinter', 'link-2');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">frame</tt><tt class="py-op">,</tt><tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Traceback (most recent call last) [...]
+<a name="L74"></a><tt class="py-lineno"> 74</tt>  <tt class="py-line">                <tt id="link-18" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-18', 'Tkinter', 'link-2');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">frame</tt><tt class="py-op">,</tt><tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-name">traceback_str</tt><tt class="py-op"> [...]
+<a name="L75"></a><tt class="py-lineno"> 75</tt>  <tt class="py-line"> </tt>
+<a name="L76"></a><tt class="py-lineno"> 76</tt>  <tt class="py-line">            <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-19" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-19', 'Tkinter', 'link-2');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Button</tt><tt class="py-op">(</tt><tt class="py-name">frame</tt><tt class="py-op">,</tt><tt class="py-name">text</tt><tt class="py-op">=</tt><tt cla [...]
+<a name="L77"></a><tt class="py-lineno"> 77</tt>  <tt class="py-line">            <tt class="py-name">b</tt><tt class="py-op">.</tt><tt class="py-name">pack</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L78"></a><tt class="py-lineno"> 78</tt>  <tt class="py-line">            <tt class="py-name">b</tt><tt class="py-op">.</tt><tt class="py-name">focus_set</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L79"></a><tt class="py-lineno"> 79</tt>  <tt class="py-line">            <tt class="py-name">b</tt><tt class="py-op">.</tt><tt class="py-name">grab_set</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L80"></a><tt class="py-lineno"> 80</tt>  <tt class="py-line">            <tt class="py-name">b</tt><tt class="py-op">.</tt><tt class="py-name">bind</tt><tt class="py-op">(</tt><tt class="py-string">'<Return>'</tt><tt class="py-op">,</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">close_window</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L81"></a><tt class="py-lineno"> 81</tt>  <tt class="py-line"> </tt>
+<a name="L82"></a><tt class="py-lineno"> 82</tt>  <tt class="py-line">        <tt class="py-keyword">def</tt> <tt class="py-def-name">close_window</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt><tt class="py-param">dummy_arg</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L83"></a><tt class="py-lineno"> 83</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-20" class="py-name" targets="Method VisionEgg.PyroApps.EPhysGUI.AppWindow.quit()=VisionEgg.PyroApps.EPhysGUI.AppWindow-class.html#quit"><a title="VisionEgg.PyroApps.EPhysGUI.AppWindow.quit" class="py-name" href="#" onclick="return doclink('link-20', 'quit', 'link-20');">quit</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L84"></a><tt class="py-lineno"> 84</tt>  <tt class="py-line">    <tt class="py-comment"># create instance of class</tt> </tt>
+<a name="L85"></a><tt class="py-lineno"> 85</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">parent</tt> <tt class="py-op">=</tt> <tt id="link-21" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-21', 'Tkinter', 'link-2');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">_default_root</tt> </tt>
+<a name="L86"></a><tt class="py-lineno"> 86</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">parent</tt><tt class="py-op">:</tt> </tt>
+<a name="L87"></a><tt class="py-lineno"> 87</tt>  <tt class="py-line">        <tt class="py-name">top</tt> <tt class="py-op">=</tt> <tt id="link-22" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-22', 'Tkinter', 'link-2');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Toplevel</tt><tt class="py-op">(</tt><tt class="py-name">parent</tt><tt class="py-op">)</tt> </tt>
+<a name="L88"></a><tt class="py-lineno"> 88</tt>  <tt class="py-line">        <tt class="py-name">top</tt><tt class="py-op">.</tt><tt class="py-name">transient</tt><tt class="py-op">(</tt><tt class="py-name">parent</tt><tt class="py-op">)</tt> </tt>
+<a name="L89"></a><tt class="py-lineno"> 89</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L90"></a><tt class="py-lineno"> 90</tt>  <tt class="py-line">        <tt class="py-name">top</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L91"></a><tt class="py-lineno"> 91</tt>  <tt class="py-line">    <tt class="py-name">f</tt> <tt class="py-op">=</tt> <tt class="py-name">ShowExceptionFrame</tt><tt class="py-op">(</tt><tt class="py-name">top</tt><tt class="py-op">,</tt> <tt class="py-name">exc_type</tt><tt class="py-op">,</tt> <tt class="py-name">exc_value</tt><tt class="py-op">,</tt> <tt class="py-name">traceback_str</tt><tt class="py-op">)</tt> </tt>
+<a name="L92"></a><tt class="py-lineno"> 92</tt>  <tt class="py-line">    <tt class="py-name">f</tt><tt class="py-op">.</tt><tt class="py-name">pack</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L93"></a><tt class="py-lineno"> 93</tt>  <tt class="py-line">    <tt class="py-name">f</tt><tt class="py-op">.</tt><tt class="py-name">mainloop</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L94"></a><tt class="py-lineno"> 94</tt>  <tt class="py-line">    <tt class="py-name">f</tt><tt class="py-op">.</tt><tt class="py-name">winfo_toplevel</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-23" class="py-name" targets="Method VisionEgg.GUI.ToplevelDialog.destroy()=VisionEgg.GUI.ToplevelDialog-class.html#destroy,Method VisionEgg.PyroApps.EPhysGUI.AppWindow.destroy()=VisionEgg.PyroApps.EPhysGUI.AppWindow-class.html#destroy,Method Vi [...]
+VisionEgg.PyroApps.EPhysGUI.AppWindow.destroy
+VisionEgg.PyroApps.EPhysGUI.LoopParamDialog.destroy" class="py-name" href="#" onclick="return doclink('link-23', 'destroy', 'link-23');">destroy</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L95"></a><tt class="py-lineno"> 95</tt>  <tt class="py-line"> </tt>
+<a name="AppWindow"></a><div id="AppWindow-def"><a name="L96"></a><tt class="py-lineno"> 96</tt> <a class="py-toggle" href="#" id="AppWindow-toggle" onclick="return toggle('AppWindow');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.GUI.AppWindow-class.html">AppWindow</a><tt class="py-op">(</tt><tt class="py-base-class">Tkinter</tt><tt class="py-op">.</tt><tt class="py-base-class">Frame</tt><tt class="py-op">)</tt><tt class="py-op">:</t [...]
+</div><div id="AppWindow-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="AppWindow-expanded"><a name="L97"></a><tt class="py-lineno"> 97</tt>  <tt class="py-line">    <tt class="py-docstring">"""A GUI Window that can be subclassed for a main application window"""</tt> </tt>
+<a name="AppWindow.__init__"></a><div id="AppWindow.__init__-def"><a name="L98"></a><tt class="py-lineno"> 98</tt> <a class="py-toggle" href="#" id="AppWindow.__init__-toggle" onclick="return toggle('AppWindow.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.GUI.AppWindow-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt><tt class="py-param">master</tt><tt class="p [...]
+</div><div id="AppWindow.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="AppWindow.__init__-expanded"><a name="L99"></a><tt class="py-lineno"> 99</tt>  <tt class="py-line">        <tt id="link-24" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-24', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-25" class="py-name"><a title="VisionEgg.config" class="py-name" href="#" onclick= [...]
+<a name="L100"></a><tt class="py-lineno">100</tt>  <tt class="py-line">        <tt id="link-26" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-26', 'Tkinter', 'link-2');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Frame</tt><tt class="py-op">.</tt><tt id="link-27" class="py-name"><a title="VisionEgg.ClassWithParameters.__init__
+VisionEgg.Configuration.Config.__init__
+VisionEgg.Core.FixationSpot.__init__
+VisionEgg.Core.FrameTimer.__init__
+VisionEgg.Core.ModelView.__init__
+VisionEgg.Core.OrthographicProjection.__init__
+VisionEgg.Core.OrthographicProjectionNoZClip.__init__
+VisionEgg.Core.PerspectiveProjection.__init__
+VisionEgg.Core.Projection.__init__
+VisionEgg.Core.ProjectionBaseClass.__init__
+VisionEgg.Core.Screen.__init__
+VisionEgg.Core.SimplePerspectiveProjection.__init__
+VisionEgg.Core.Stimulus.__init__
+VisionEgg.Core.Viewport.__init__
+VisionEgg.Daq.Channel.__init__
+VisionEgg.Daq.DaqMode.__init__
+VisionEgg.Daq.Device.__init__
+VisionEgg.Daq.Functionality.__init__
+VisionEgg.Daq.SignalType.__init__
+VisionEgg.DaqKeyboard.KeyboardTriggerInController.__init__
+VisionEgg.DaqLPT.LPTChannel.__init__
+VisionEgg.DaqLPT.LPTDevice.__init__
+VisionEgg.DaqLPT.LPTTriggerInController.__init__
+VisionEgg.DaqLPT.LPTTriggerOutController.__init__
+VisionEgg.Deprecated.Message.__init__
+VisionEgg.Dots.DotArea2D.__init__
+VisionEgg.FlowControl.ConstantController.__init__
+VisionEgg.FlowControl.Controller.__init__
+VisionEgg.FlowControl.EncapsulatedController.__init__
+VisionEgg.FlowControl.EvalStringController.__init__
+VisionEgg.FlowControl.ExecStringController.__init__
+VisionEgg.FlowControl.FunctionController.__init__
+VisionEgg.FlowControl.Presentation.__init__
+VisionEgg.GLTrace.Wrapper.__init__
+VisionEgg.GUI.AppWindow.__init__
+VisionEgg.GUI.GetKeypressDialog.__init__
+VisionEgg.GUI.GraphicsConfigurationWindow.__init__
+VisionEgg.GUI.InfoFrame.__init__
+VisionEgg.GUI.ProgressBar.__init__
+VisionEgg.GUI.ToplevelDialog.__init__
+VisionEgg.Gratings.SinGrating2D.__init__
+VisionEgg.Gratings.SinGrating3D.__init__
+VisionEgg.MoreStimuli.Arrow.__init__
+VisionEgg.MoreStimuli.FilledCircle.__init__
+VisionEgg.MoreStimuli.Rectangle3D.__init__
+VisionEgg.MoreStimuli.Target2D.__init__
+VisionEgg.ParameterTypes.AnyOf.__init__
+VisionEgg.ParameterTypes.Instance.__init__
+VisionEgg.ParameterTypes.Sequence.__init__
+VisionEgg.ParameterTypes.SubClass.__init__
+VisionEgg.PyroApps.AST_ext.AST_Visitor.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalMetaParameters.__init__
+VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.__init__
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.__init__
+VisionEgg.PyroApps.DropinGUI.DropinMetaParameters.__init__
+VisionEgg.PyroApps.DropinServer.DropinMetaController.__init__
+VisionEgg.PyroApps.EPhysGUI.AppWindow.__init__
+VisionEgg.PyroApps.EPhysGUI.BarButton.__init__
+VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase.__init__
+VisionEgg.PyroApps.EPhysGUI.GammaFrame.__init__
+VisionEgg.PyroApps.EPhysGUI.ImageSequenceLauncher.__init__
+VisionEgg.PyroApps.EPhysGUI.Loop.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopContainedObject.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopParamDialog.__init__
+VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.__init__
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.__init__
+VisionEgg.PyroApps.EPhysServer.EPhysServer.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingMetaParameters.__init__
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.GridGUI.GridControlFrame.__init__
+VisionEgg.PyroApps.GridGUI.GridMetaParameters.__init__
+VisionEgg.PyroApps.GridServer.GridMetaController.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetMetaParameters.__init__
+VisionEgg.PyroApps.MouseTargetServer.MousePositionController.__init__
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetOrientationController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetPositionController.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.CallbackEntry.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionParameters.__init__
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingMetaParameters.__init__
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumMetaParameters.__init__
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.__init__
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.__init__
+VisionEgg.PyroApps.TargetGUI.TargetMetaParameters.__init__
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.__init__
+VisionEgg.PyroClient.PyroClient.__init__
+VisionEgg.PyroHelpers.PyroConstantController.__init__
+VisionEgg.PyroHelpers.PyroEncapsulatedController.__init__
+VisionEgg.PyroHelpers.PyroEvalStringController.__init__
+VisionEgg.PyroHelpers.PyroExecStringController.__init__
+VisionEgg.PyroHelpers.PyroListenController.__init__
+VisionEgg.PyroHelpers.PyroLocalDictController.__init__
+VisionEgg.PyroHelpers.PyroServer.__init__
+VisionEgg.QuickTime.MovieTexture.__init__
+VisionEgg.ResponseControl.KeyboardResponseController.__init__
+VisionEgg.ResponseControl.ResponseController.__init__
+VisionEgg.SphereMap.AzElGrid.__init__
+VisionEgg.SphereMap.SphereGrating.__init__
+VisionEgg.SphereMap.SphereMap.__init__
+VisionEgg.SphereMap.SphereWindow.__init__
+VisionEgg.TCPController.SocketListenController.__init__
+VisionEgg.TCPController.TCPController.__init__
+VisionEgg.TCPController.TCPServer.__init__
+VisionEgg.Text.BitmapText.__init__
+VisionEgg.Text.GlutTextBase.__init__
+VisionEgg.Text.StrokeText.__init__
+VisionEgg.Text.Text.__init__
+VisionEgg.Textures.FixationCross.__init__
+VisionEgg.Textures.Mask2D.__init__
+VisionEgg.Textures.SpinningDrum.__init__
+VisionEgg.Textures.Texture.__init__
+VisionEgg.Textures.TextureFromFile.__init__
+VisionEgg.Textures.TextureObject.__init__
+VisionEgg.Textures.TextureStimulusBaseClass.__init__
+VisionEgg.ThreeDeeMath.TransformMatrix.__init__
+VisionEgg.WrappedText.WrappedText.__init__
+VisionEgg.qtmovie.Movie.__init__
+VisionEgg.qtmovie.Rect.__init__" class="py-name" href="#" onclick="return doclink('link-27', '__init__', 'link-11');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt><tt class="py-name">master</tt><tt class="py-op">,</tt><tt class="py-op">**</tt><tt class="py-name">cnf</tt><tt class="py-op">)</tt> </tt>
+<a name="L101"></a><tt class="py-lineno">101</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">winfo_toplevel</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-28" class="py-name"><a title="VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.title
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.title
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.title
+VisionEgg.PyroApps.GridGUI.GridControlFrame.title
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.title
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.title
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.title
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.title" class="py-name" href="#" onclick="return doclink('link-28', 'title', 'link-12');">title</a></tt><tt class="py-op">(</tt><tt class="py-string">'Vision Egg'</tt><tt class="py-op">)</tt> </tt>
+<a name="L102"></a><tt class="py-lineno">102</tt>  <tt class="py-line"> </tt>
+<a name="L103"></a><tt class="py-lineno">103</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">info_frame</tt> <tt class="py-op">=</tt> <tt id="link-29" class="py-name" targets="Class VisionEgg.GUI.InfoFrame=VisionEgg.GUI.InfoFrame-class.html"><a title="VisionEgg.GUI.InfoFrame" class="py-name" href="#" onclick="return doclink('link-29', 'InfoFrame', 'link-29');">InfoFrame</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt [...]
+<a name="L104"></a><tt class="py-lineno">104</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">info_frame</tt><tt class="py-op">.</tt><tt class="py-name">pack</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L105"></a><tt class="py-lineno">105</tt>  <tt class="py-line"> </tt>
+<a name="L106"></a><tt class="py-lineno">106</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">idle_func</tt> <tt class="py-op">=</tt> <tt class="py-name">idle_func</tt> </tt>
+<a name="L107"></a><tt class="py-lineno">107</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">after</tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">,</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-30" class="py-name" targets="Method VisionEgg.GUI.AppWindow.idle()=VisionEgg.GUI.AppWindow-class.html#idle"><a title="VisionEgg.GUI.AppWindow.idle" class="py-name" href="#" onclick="return [...]
+</div><a name="L108"></a><tt class="py-lineno">108</tt>  <tt class="py-line"> </tt>
+<a name="AppWindow.idle"></a><div id="AppWindow.idle-def"><a name="L109"></a><tt class="py-lineno">109</tt> <a class="py-toggle" href="#" id="AppWindow.idle-toggle" onclick="return toggle('AppWindow.idle');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.GUI.AppWindow-class.html#idle">idle</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="AppWindow.idle-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="AppWindow.idle-expanded"><a name="L110"></a><tt class="py-lineno">110</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">idle_func</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L111"></a><tt class="py-lineno">111</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">after</tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">,</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-31" class="py-name"><a title="VisionEgg.GUI.AppWindow.idle" class="py-name" href="#" onclick="return doclink('link-31', 'idle', 'link-30');">idle</a></tt><tt class="py-op">)</tt> <tt class [...]
+</div></div><a name="L112"></a><tt class="py-lineno">112</tt>  <tt class="py-line"> </tt>
+<a name="ProgressBar"></a><div id="ProgressBar-def"><a name="L113"></a><tt class="py-lineno">113</tt> <a class="py-toggle" href="#" id="ProgressBar-toggle" onclick="return toggle('ProgressBar');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.GUI.ProgressBar-class.html">ProgressBar</a><tt class="py-op">(</tt><tt class="py-base-class">Tkinter</tt><tt class="py-op">.</tt><tt class="py-base-class">Frame</tt><tt class="py-op">)</tt><tt class [...]
+</div><div id="ProgressBar-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="ProgressBar-expanded"><a name="ProgressBar.__init__"></a><div id="ProgressBar.__init__-def"><a name="L114"></a><tt class="py-lineno">114</tt> <a class="py-toggle" href="#" id="ProgressBar.__init__-toggle" onclick="return toggle('ProgressBar.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.GUI.ProgressBar-class.html#__init__">__ [...]
+<a name="L115"></a><tt class="py-lineno">115</tt>  <tt class="py-line">                 <tt class="py-param">min</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-param">max</tt><tt class="py-op">=</tt><tt class="py-number">100</tt><tt class="py-op">,</tt> <tt class="py-param">width</tt><tt class="py-op">=</tt><tt class="py-number">100</tt><tt class="py-op">,</tt> <tt class="py-param">height</tt><tt class="py-op">=</tt><tt class="py-number">18 [...]
+<a name="L116"></a><tt class="py-lineno">116</tt>  <tt class="py-line">                 <tt class="py-param">doLabel</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py-op">,</tt> <tt class="py-param">fillColor</tt><tt class="py-op">=</tt><tt class="py-string">"LightSteelBlue1"</tt><tt class="py-op">,</tt> <tt class="py-param">background</tt><tt class="py-op">=</tt><tt class="py-string">"gray"</tt><tt class="py-op">,</tt> </tt>
+<a name="L117"></a><tt class="py-lineno">117</tt>  <tt class="py-line">                 <tt class="py-param">labelColor</tt><tt class="py-op">=</tt><tt class="py-string">"black"</tt><tt class="py-op">,</tt> <tt class="py-param">labelFont</tt><tt class="py-op">=</tt><tt class="py-string">"Helvetica"</tt><tt class="py-op">,</tt> </tt>
+<a name="L118"></a><tt class="py-lineno">118</tt>  <tt class="py-line">                 <tt class="py-param">labelText</tt><tt class="py-op">=</tt><tt class="py-string">""</tt><tt class="py-op">,</tt> <tt class="py-param">labelFormat</tt><tt class="py-op">=</tt><tt class="py-string">"%d%%"</tt><tt class="py-op">,</tt> </tt>
+<a name="L119"></a><tt class="py-lineno">119</tt>  <tt class="py-line">                 <tt class="py-param">value</tt><tt class="py-op">=</tt><tt class="py-number">50</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-param">cnf</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ProgressBar.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ProgressBar.__init__-expanded"><a name="L120"></a><tt class="py-lineno">120</tt>  <tt class="py-line">        <tt id="link-32" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-32', 'Tkinter', 'link-2');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Frame</tt><tt class="py-op">.</tt><tt id="link-33" class="py- [...]
+VisionEgg.Configuration.Config.__init__
+VisionEgg.Core.FixationSpot.__init__
+VisionEgg.Core.FrameTimer.__init__
+VisionEgg.Core.ModelView.__init__
+VisionEgg.Core.OrthographicProjection.__init__
+VisionEgg.Core.OrthographicProjectionNoZClip.__init__
+VisionEgg.Core.PerspectiveProjection.__init__
+VisionEgg.Core.Projection.__init__
+VisionEgg.Core.ProjectionBaseClass.__init__
+VisionEgg.Core.Screen.__init__
+VisionEgg.Core.SimplePerspectiveProjection.__init__
+VisionEgg.Core.Stimulus.__init__
+VisionEgg.Core.Viewport.__init__
+VisionEgg.Daq.Channel.__init__
+VisionEgg.Daq.DaqMode.__init__
+VisionEgg.Daq.Device.__init__
+VisionEgg.Daq.Functionality.__init__
+VisionEgg.Daq.SignalType.__init__
+VisionEgg.DaqKeyboard.KeyboardTriggerInController.__init__
+VisionEgg.DaqLPT.LPTChannel.__init__
+VisionEgg.DaqLPT.LPTDevice.__init__
+VisionEgg.DaqLPT.LPTTriggerInController.__init__
+VisionEgg.DaqLPT.LPTTriggerOutController.__init__
+VisionEgg.Deprecated.Message.__init__
+VisionEgg.Dots.DotArea2D.__init__
+VisionEgg.FlowControl.ConstantController.__init__
+VisionEgg.FlowControl.Controller.__init__
+VisionEgg.FlowControl.EncapsulatedController.__init__
+VisionEgg.FlowControl.EvalStringController.__init__
+VisionEgg.FlowControl.ExecStringController.__init__
+VisionEgg.FlowControl.FunctionController.__init__
+VisionEgg.FlowControl.Presentation.__init__
+VisionEgg.GLTrace.Wrapper.__init__
+VisionEgg.GUI.AppWindow.__init__
+VisionEgg.GUI.GetKeypressDialog.__init__
+VisionEgg.GUI.GraphicsConfigurationWindow.__init__
+VisionEgg.GUI.InfoFrame.__init__
+VisionEgg.GUI.ProgressBar.__init__
+VisionEgg.GUI.ToplevelDialog.__init__
+VisionEgg.Gratings.SinGrating2D.__init__
+VisionEgg.Gratings.SinGrating3D.__init__
+VisionEgg.MoreStimuli.Arrow.__init__
+VisionEgg.MoreStimuli.FilledCircle.__init__
+VisionEgg.MoreStimuli.Rectangle3D.__init__
+VisionEgg.MoreStimuli.Target2D.__init__
+VisionEgg.ParameterTypes.AnyOf.__init__
+VisionEgg.ParameterTypes.Instance.__init__
+VisionEgg.ParameterTypes.Sequence.__init__
+VisionEgg.ParameterTypes.SubClass.__init__
+VisionEgg.PyroApps.AST_ext.AST_Visitor.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalMetaParameters.__init__
+VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.__init__
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.__init__
+VisionEgg.PyroApps.DropinGUI.DropinMetaParameters.__init__
+VisionEgg.PyroApps.DropinServer.DropinMetaController.__init__
+VisionEgg.PyroApps.EPhysGUI.AppWindow.__init__
+VisionEgg.PyroApps.EPhysGUI.BarButton.__init__
+VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase.__init__
+VisionEgg.PyroApps.EPhysGUI.GammaFrame.__init__
+VisionEgg.PyroApps.EPhysGUI.ImageSequenceLauncher.__init__
+VisionEgg.PyroApps.EPhysGUI.Loop.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopContainedObject.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopParamDialog.__init__
+VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.__init__
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.__init__
+VisionEgg.PyroApps.EPhysServer.EPhysServer.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingMetaParameters.__init__
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.GridGUI.GridControlFrame.__init__
+VisionEgg.PyroApps.GridGUI.GridMetaParameters.__init__
+VisionEgg.PyroApps.GridServer.GridMetaController.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetMetaParameters.__init__
+VisionEgg.PyroApps.MouseTargetServer.MousePositionController.__init__
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetOrientationController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetPositionController.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.CallbackEntry.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionParameters.__init__
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingMetaParameters.__init__
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumMetaParameters.__init__
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.__init__
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.__init__
+VisionEgg.PyroApps.TargetGUI.TargetMetaParameters.__init__
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.__init__
+VisionEgg.PyroClient.PyroClient.__init__
+VisionEgg.PyroHelpers.PyroConstantController.__init__
+VisionEgg.PyroHelpers.PyroEncapsulatedController.__init__
+VisionEgg.PyroHelpers.PyroEvalStringController.__init__
+VisionEgg.PyroHelpers.PyroExecStringController.__init__
+VisionEgg.PyroHelpers.PyroListenController.__init__
+VisionEgg.PyroHelpers.PyroLocalDictController.__init__
+VisionEgg.PyroHelpers.PyroServer.__init__
+VisionEgg.QuickTime.MovieTexture.__init__
+VisionEgg.ResponseControl.KeyboardResponseController.__init__
+VisionEgg.ResponseControl.ResponseController.__init__
+VisionEgg.SphereMap.AzElGrid.__init__
+VisionEgg.SphereMap.SphereGrating.__init__
+VisionEgg.SphereMap.SphereMap.__init__
+VisionEgg.SphereMap.SphereWindow.__init__
+VisionEgg.TCPController.SocketListenController.__init__
+VisionEgg.TCPController.TCPController.__init__
+VisionEgg.TCPController.TCPServer.__init__
+VisionEgg.Text.BitmapText.__init__
+VisionEgg.Text.GlutTextBase.__init__
+VisionEgg.Text.StrokeText.__init__
+VisionEgg.Text.Text.__init__
+VisionEgg.Textures.FixationCross.__init__
+VisionEgg.Textures.Mask2D.__init__
+VisionEgg.Textures.SpinningDrum.__init__
+VisionEgg.Textures.Texture.__init__
+VisionEgg.Textures.TextureFromFile.__init__
+VisionEgg.Textures.TextureObject.__init__
+VisionEgg.Textures.TextureStimulusBaseClass.__init__
+VisionEgg.ThreeDeeMath.TransformMatrix.__init__
+VisionEgg.WrappedText.WrappedText.__init__
+VisionEgg.qtmovie.Movie.__init__
+VisionEgg.qtmovie.Rect.__init__" class="py-name" href="#" onclick="return doclink('link-33', '__init__', 'link-11');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt><tt class="py-name">master</tt><tt class="py-op">)</tt> </tt>
+<a name="L121"></a><tt class="py-lineno">121</tt>  <tt class="py-line">        <tt class="py-comment"># preserve various values</tt> </tt>
+<a name="L122"></a><tt class="py-lineno">122</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">master</tt><tt class="py-op">=</tt><tt class="py-name">master</tt> </tt>
+<a name="L123"></a><tt class="py-lineno">123</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">orientation</tt><tt class="py-op">=</tt><tt class="py-name">orientation</tt> </tt>
+<a name="L124"></a><tt class="py-lineno">124</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">min</tt><tt class="py-op">=</tt><tt class="py-name">min</tt> </tt>
+<a name="L125"></a><tt class="py-lineno">125</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">max</tt><tt class="py-op">=</tt><tt class="py-name">max</tt> </tt>
+<a name="L126"></a><tt class="py-lineno">126</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">width</tt><tt class="py-op">=</tt><tt class="py-name">width</tt> </tt>
+<a name="L127"></a><tt class="py-lineno">127</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">height</tt><tt class="py-op">=</tt><tt class="py-name">height</tt> </tt>
+<a name="L128"></a><tt class="py-lineno">128</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">doLabel</tt><tt class="py-op">=</tt><tt class="py-name">doLabel</tt> </tt>
+<a name="L129"></a><tt class="py-lineno">129</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">fillColor</tt><tt class="py-op">=</tt><tt class="py-name">fillColor</tt> </tt>
+<a name="L130"></a><tt class="py-lineno">130</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">labelFont</tt><tt class="py-op">=</tt> <tt class="py-name">labelFont</tt> </tt>
+<a name="L131"></a><tt class="py-lineno">131</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">labelColor</tt><tt class="py-op">=</tt><tt class="py-name">labelColor</tt> </tt>
+<a name="L132"></a><tt class="py-lineno">132</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">background</tt><tt class="py-op">=</tt><tt class="py-name">background</tt> </tt>
+<a name="L133"></a><tt class="py-lineno">133</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">labelText</tt><tt class="py-op">=</tt><tt class="py-name">labelText</tt> </tt>
+<a name="L134"></a><tt class="py-lineno">134</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">labelFormat</tt><tt class="py-op">=</tt><tt class="py-name">labelFormat</tt> </tt>
+<a name="L135"></a><tt class="py-lineno">135</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">value</tt><tt class="py-op">=</tt><tt class="py-name">value</tt> </tt>
+<a name="L136"></a><tt class="py-lineno">136</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">canvas</tt><tt class="py-op">=</tt><tt id="link-34" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-34', 'Tkinter', 'link-2');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Canvas</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt cla [...]
+<a name="L137"></a><tt class="py-lineno">137</tt>  <tt class="py-line">                                    <tt class="py-name">highlightthickness</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-name">background</tt><tt class="py-op">=</tt><tt class="py-name">background</tt><tt class="py-op">)</tt> </tt>
+<a name="L138"></a><tt class="py-lineno">138</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-35" class="py-name" targets="Method VisionEgg.Core.ProjectionBaseClass.scale()=VisionEgg.Core.ProjectionBaseClass-class.html#scale,Method VisionEgg.ThreeDeeMath.TransformMatrix.scale()=VisionEgg.ThreeDeeMath.TransformMatrix-class.html#scale"><a title="VisionEgg.Core.ProjectionBaseClass.scale
+VisionEgg.ThreeDeeMath.TransformMatrix.scale" class="py-name" href="#" onclick="return doclink('link-35', 'scale', 'link-35');">scale</a></tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">canvas</tt><tt class="py-op">.</tt><tt class="py-name">create_rectangle</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-name">width</tt><tt class="py-op" [...]
+<a name="L139"></a><tt class="py-lineno">139</tt>  <tt class="py-line">                                                <tt class="py-name">fill</tt><tt class="py-op">=</tt><tt class="py-name">fillColor</tt><tt class="py-op">)</tt> </tt>
+<a name="L140"></a><tt class="py-lineno">140</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">label</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">canvas</tt><tt class="py-op">.</tt><tt class="py-name">create_text</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">canvas</tt><tt class="py-op">.</tt><tt class="py-name">winfo_reqw [...]
+<a name="L141"></a><tt class="py-lineno">141</tt>  <tt class="py-line">                                           <tt class="py-name">height</tt> <tt class="py-op">/</tt> <tt class="py-number">2</tt><tt class="py-op">,</tt> <tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-name">labelText</tt><tt class="py-op">,</tt> </tt>
+<a name="L142"></a><tt class="py-lineno">142</tt>  <tt class="py-line">                                           <tt class="py-name">anchor</tt><tt class="py-op">=</tt><tt class="py-string">"c"</tt><tt class="py-op">,</tt> <tt class="py-name">fill</tt><tt class="py-op">=</tt><tt class="py-name">labelColor</tt><tt class="py-op">,</tt> </tt>
+<a name="L143"></a><tt class="py-lineno">143</tt>  <tt class="py-line">                                           <tt class="py-name">font</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">labelFont</tt><tt class="py-op">)</tt> </tt>
+<a name="L144"></a><tt class="py-lineno">144</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-36" class="py-name" targets="Method VisionEgg.GUI.InfoFrame.update()=VisionEgg.GUI.InfoFrame-class.html#update,Method VisionEgg.GUI.ProgressBar.update()=VisionEgg.GUI.ProgressBar-class.html#update,Method VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.update()=VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController-class.html#update,Me [...]
+VisionEgg.GUI.ProgressBar.update
+VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.update
+VisionEgg.PyroApps.DropinServer.DropinMetaController.update
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.update
+VisionEgg.PyroApps.GridServer.GridMetaController.update
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.update
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.update
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.update
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.update
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.update
+VisionEgg.QuickTime.MovieTexture.update
+VisionEgg.Textures.Texture.update" class="py-name" href="#" onclick="return doclink('link-36', 'update', 'link-36');">update</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L145"></a><tt class="py-lineno">145</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">canvas</tt><tt class="py-op">.</tt><tt class="py-name">pack</tt><tt class="py-op">(</tt><tt class="py-name">side</tt><tt class="py-op">=</tt><tt class="py-string">'top'</tt><tt class="py-op">,</tt> <tt class="py-name">fill</tt><tt class="py-op">=</tt><tt class="py-string">'x'</tt><tt class="py-op">,</tt> <tt class="py-name">expand</tt><tt [...]
+</div><a name="L146"></a><tt class="py-lineno">146</tt>  <tt class="py-line"> </tt>
+<a name="ProgressBar.updateProgress"></a><div id="ProgressBar.updateProgress-def"><a name="L147"></a><tt class="py-lineno">147</tt> <a class="py-toggle" href="#" id="ProgressBar.updateProgress-toggle" onclick="return toggle('ProgressBar.updateProgress');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.GUI.ProgressBar-class.html#updateProgress">updateProgress</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</ [...]
+</div><div id="ProgressBar.updateProgress-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ProgressBar.updateProgress-expanded"><a name="L148"></a><tt class="py-lineno">148</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">newMax</tt><tt class="py-op">:</tt> </tt>
+<a name="L149"></a><tt class="py-lineno">149</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">max</tt> <tt class="py-op">=</tt> <tt class="py-name">newMax</tt> </tt>
+<a name="L150"></a><tt class="py-lineno">150</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">value</tt> <tt class="py-op">=</tt> <tt class="py-name">newValue</tt> </tt>
+<a name="L151"></a><tt class="py-lineno">151</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-37" class="py-name"><a title="VisionEgg.GUI.InfoFrame.update
+VisionEgg.GUI.ProgressBar.update
+VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.update
+VisionEgg.PyroApps.DropinServer.DropinMetaController.update
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.update
+VisionEgg.PyroApps.GridServer.GridMetaController.update
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.update
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.update
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.update
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.update
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.update
+VisionEgg.QuickTime.MovieTexture.update
+VisionEgg.Textures.Texture.update" class="py-name" href="#" onclick="return doclink('link-37', 'update', 'link-36');">update</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L152"></a><tt class="py-lineno">152</tt>  <tt class="py-line"> </tt>
+<a name="ProgressBar.update"></a><div id="ProgressBar.update-def"><a name="L153"></a><tt class="py-lineno">153</tt> <a class="py-toggle" href="#" id="ProgressBar.update-toggle" onclick="return toggle('ProgressBar.update');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.GUI.ProgressBar-class.html#update">update</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ProgressBar.update-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ProgressBar.update-expanded"><a name="L154"></a><tt class="py-lineno">154</tt>  <tt class="py-line">        <tt class="py-comment"># Trim the values to be between min and max</tt> </tt>
+<a name="L155"></a><tt class="py-lineno">155</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">value</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">value</tt> </tt>
+<a name="L156"></a><tt class="py-lineno">156</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">value</tt> <tt class="py-op">></tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">max</tt><tt class="py-op">:</tt> </tt>
+<a name="L157"></a><tt class="py-lineno">157</tt>  <tt class="py-line">            <tt class="py-name">value</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">max</tt> </tt>
+<a name="L158"></a><tt class="py-lineno">158</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">value</tt> <tt class="py-op"><</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">min</tt><tt class="py-op">:</tt> </tt>
+<a name="L159"></a><tt class="py-lineno">159</tt>  <tt class="py-line">            <tt class="py-name">value</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">min</tt> </tt>
+<a name="L160"></a><tt class="py-lineno">160</tt>  <tt class="py-line">        <tt class="py-comment"># Adjust the rectangle</tt> </tt>
+<a name="L161"></a><tt class="py-lineno">161</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">orientation</tt> <tt class="py-op">==</tt> <tt class="py-string">"horizontal"</tt><tt class="py-op">:</tt> </tt>
+<a name="L162"></a><tt class="py-lineno">162</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">canvas</tt><tt class="py-op">.</tt><tt class="py-name">coords</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-38" class="py-name"><a title="VisionEgg.Core.ProjectionBaseClass.scale
+VisionEgg.ThreeDeeMath.TransformMatrix.scale" class="py-name" href="#" onclick="return doclink('link-38', 'scale', 'link-35');">scale</a></tt><tt class="py-op">,</tt> <tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-number">0</tt><tt class="py-op">,</tt> </tt>
+<a name="L163"></a><tt class="py-lineno">163</tt>  <tt class="py-line">              <tt id="link-39" class="py-name" targets="Class float=float-class.html"><a title="float" class="py-name" href="#" onclick="return doclink('link-39', 'float', 'link-39');">float</a></tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">)</tt> <tt class="py-op">/</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">max</tt> <tt class="py-op">*</tt> <tt class=" [...]
+<a name="L164"></a><tt class="py-lineno">164</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L165"></a><tt class="py-lineno">165</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">canvas</tt><tt class="py-op">.</tt><tt class="py-name">coords</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-40" class="py-name"><a title="VisionEgg.Core.ProjectionBaseClass.scale
+VisionEgg.ThreeDeeMath.TransformMatrix.scale" class="py-name" href="#" onclick="return doclink('link-40', 'scale', 'link-35');">scale</a></tt><tt class="py-op">,</tt> <tt class="py-number">0</tt><tt class="py-op">,</tt> </tt>
+<a name="L166"></a><tt class="py-lineno">166</tt>  <tt class="py-line">                               <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">height</tt> <tt class="py-op">-</tt> <tt class="py-op">(</tt><tt id="link-41" class="py-name"><a title="float" class="py-name" href="#" onclick="return doclink('link-41', 'float', 'link-39');">float</a></tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">)</tt> <tt class="py-op">/</tt> </tt>
+<a name="L167"></a><tt class="py-lineno">167</tt>  <tt class="py-line">                                              <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">max</tt><tt class="py-op">*</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">height</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L168"></a><tt class="py-lineno">168</tt>  <tt class="py-line">                               <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">width</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">height</tt><tt class="py-op">)</tt> </tt>
+<a name="L169"></a><tt class="py-lineno">169</tt>  <tt class="py-line">        <tt class="py-comment"># Now update the colors</tt> </tt>
+<a name="L170"></a><tt class="py-lineno">170</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">canvas</tt><tt class="py-op">.</tt><tt class="py-name">itemconfig</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-42" class="py-name"><a title="VisionEgg.Core.ProjectionBaseClass.scale
+VisionEgg.ThreeDeeMath.TransformMatrix.scale" class="py-name" href="#" onclick="return doclink('link-42', 'scale', 'link-35');">scale</a></tt><tt class="py-op">,</tt> <tt class="py-name">fill</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">fillColor</tt><tt class="py-op">)</tt> </tt>
+<a name="L171"></a><tt class="py-lineno">171</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">canvas</tt><tt class="py-op">.</tt><tt class="py-name">itemconfig</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">label</tt><tt class="py-op">,</tt> <tt class="py-name">fill</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">labelColor</ [...]
+<a name="L172"></a><tt class="py-lineno">172</tt>  <tt class="py-line">        <tt class="py-comment"># And update the label</tt> </tt>
+<a name="L173"></a><tt class="py-lineno">173</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">doLabel</tt><tt class="py-op">:</tt> </tt>
+<a name="L174"></a><tt class="py-lineno">174</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">value</tt><tt class="py-op">:</tt> </tt>
+<a name="L175"></a><tt class="py-lineno">175</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">value</tt> <tt class="py-op">>=</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt>
+<a name="L176"></a><tt class="py-lineno">176</tt>  <tt class="py-line">                    <tt class="py-name">pvalue</tt> <tt class="py-op">=</tt> <tt id="link-43" class="py-name" targets="Class int=int-class.html"><a title="int" class="py-name" href="#" onclick="return doclink('link-43', 'int', 'link-43');">int</a></tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt id="link-44" class="py-name"><a title="float" class="py-name" href="#" onclick="return doclink('link-44', 'float', 'l [...]
+<a name="L177"></a><tt class="py-lineno">177</tt>  <tt class="py-line">                                   <tt class="py-number">100.0</tt><tt class="py-op">)</tt> </tt>
+<a name="L178"></a><tt class="py-lineno">178</tt>  <tt class="py-line">                <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L179"></a><tt class="py-lineno">179</tt>  <tt class="py-line">                    <tt class="py-name">pvalue</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L180"></a><tt class="py-lineno">180</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">canvas</tt><tt class="py-op">.</tt><tt class="py-name">itemconfig</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">label</tt><tt class="py-op">,</tt> <tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">labe [...]
+<a name="L181"></a><tt class="py-lineno">181</tt>  <tt class="py-line">                                         <tt class="py-op">%</tt> <tt class="py-name">pvalue</tt><tt class="py-op">)</tt> </tt>
+<a name="L182"></a><tt class="py-lineno">182</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L183"></a><tt class="py-lineno">183</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">canvas</tt><tt class="py-op">.</tt><tt class="py-name">itemconfig</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">label</tt><tt class="py-op">,</tt> <tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">''</tt><tt class="py-op">)</tt> </tt>
+<a name="L184"></a><tt class="py-lineno">184</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L185"></a><tt class="py-lineno">185</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">canvas</tt><tt class="py-op">.</tt><tt class="py-name">itemconfig</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">label</tt><tt class="py-op">,</tt> <tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">labelFor [...]
+<a name="L186"></a><tt class="py-lineno">186</tt>  <tt class="py-line">                                   <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">labelText</tt><tt class="py-op">)</tt> </tt>
+<a name="L187"></a><tt class="py-lineno">187</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">canvas</tt><tt class="py-op">.</tt><tt class="py-name">update_idletasks</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L188"></a><tt class="py-lineno">188</tt>  <tt class="py-line"> </tt>
+<a name="GraphicsConfigurationWindow"></a><div id="GraphicsConfigurationWindow-def"><a name="L189"></a><tt class="py-lineno">189</tt> <a class="py-toggle" href="#" id="GraphicsConfigurationWindow-toggle" onclick="return toggle('GraphicsConfigurationWindow');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.GUI.GraphicsConfigurationWindow-class.html">GraphicsConfigurationWindow</a><tt class="py-op">(</tt><tt class="py-base-class">Tkinter</ [...]
+</div><div id="GraphicsConfigurationWindow-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="GraphicsConfigurationWindow-expanded"><a name="L190"></a><tt class="py-lineno">190</tt>  <tt class="py-line">    <tt class="py-docstring">"""Graphics Configuration Window"""</tt> </tt>
+<a name="GraphicsConfigurationWindow.__init__"></a><div id="GraphicsConfigurationWindow.__init__-def"><a name="L191"></a><tt class="py-lineno">191</tt> <a class="py-toggle" href="#" id="GraphicsConfigurationWindow.__init__-toggle" onclick="return toggle('GraphicsConfigurationWindow.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.GUI.GraphicsConfigurationWindow-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt cla [...]
+</div><div id="GraphicsConfigurationWindow.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="GraphicsConfigurationWindow.__init__-expanded"><a name="L192"></a><tt class="py-lineno">192</tt>  <tt class="py-line">        <tt id="link-46" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-46', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-47" class="py-name"><a title="VisionEgg.conf [...]
+<a name="L193"></a><tt class="py-lineno">193</tt>  <tt class="py-line">        <tt id="link-48" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-48', 'Tkinter', 'link-2');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Frame</tt><tt class="py-op">.</tt><tt id="link-49" class="py-name"><a title="VisionEgg.ClassWithParameters.__init__
+VisionEgg.Configuration.Config.__init__
+VisionEgg.Core.FixationSpot.__init__
+VisionEgg.Core.FrameTimer.__init__
+VisionEgg.Core.ModelView.__init__
+VisionEgg.Core.OrthographicProjection.__init__
+VisionEgg.Core.OrthographicProjectionNoZClip.__init__
+VisionEgg.Core.PerspectiveProjection.__init__
+VisionEgg.Core.Projection.__init__
+VisionEgg.Core.ProjectionBaseClass.__init__
+VisionEgg.Core.Screen.__init__
+VisionEgg.Core.SimplePerspectiveProjection.__init__
+VisionEgg.Core.Stimulus.__init__
+VisionEgg.Core.Viewport.__init__
+VisionEgg.Daq.Channel.__init__
+VisionEgg.Daq.DaqMode.__init__
+VisionEgg.Daq.Device.__init__
+VisionEgg.Daq.Functionality.__init__
+VisionEgg.Daq.SignalType.__init__
+VisionEgg.DaqKeyboard.KeyboardTriggerInController.__init__
+VisionEgg.DaqLPT.LPTChannel.__init__
+VisionEgg.DaqLPT.LPTDevice.__init__
+VisionEgg.DaqLPT.LPTTriggerInController.__init__
+VisionEgg.DaqLPT.LPTTriggerOutController.__init__
+VisionEgg.Deprecated.Message.__init__
+VisionEgg.Dots.DotArea2D.__init__
+VisionEgg.FlowControl.ConstantController.__init__
+VisionEgg.FlowControl.Controller.__init__
+VisionEgg.FlowControl.EncapsulatedController.__init__
+VisionEgg.FlowControl.EvalStringController.__init__
+VisionEgg.FlowControl.ExecStringController.__init__
+VisionEgg.FlowControl.FunctionController.__init__
+VisionEgg.FlowControl.Presentation.__init__
+VisionEgg.GLTrace.Wrapper.__init__
+VisionEgg.GUI.AppWindow.__init__
+VisionEgg.GUI.GetKeypressDialog.__init__
+VisionEgg.GUI.GraphicsConfigurationWindow.__init__
+VisionEgg.GUI.InfoFrame.__init__
+VisionEgg.GUI.ProgressBar.__init__
+VisionEgg.GUI.ToplevelDialog.__init__
+VisionEgg.Gratings.SinGrating2D.__init__
+VisionEgg.Gratings.SinGrating3D.__init__
+VisionEgg.MoreStimuli.Arrow.__init__
+VisionEgg.MoreStimuli.FilledCircle.__init__
+VisionEgg.MoreStimuli.Rectangle3D.__init__
+VisionEgg.MoreStimuli.Target2D.__init__
+VisionEgg.ParameterTypes.AnyOf.__init__
+VisionEgg.ParameterTypes.Instance.__init__
+VisionEgg.ParameterTypes.Sequence.__init__
+VisionEgg.ParameterTypes.SubClass.__init__
+VisionEgg.PyroApps.AST_ext.AST_Visitor.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalMetaParameters.__init__
+VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.__init__
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.__init__
+VisionEgg.PyroApps.DropinGUI.DropinMetaParameters.__init__
+VisionEgg.PyroApps.DropinServer.DropinMetaController.__init__
+VisionEgg.PyroApps.EPhysGUI.AppWindow.__init__
+VisionEgg.PyroApps.EPhysGUI.BarButton.__init__
+VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase.__init__
+VisionEgg.PyroApps.EPhysGUI.GammaFrame.__init__
+VisionEgg.PyroApps.EPhysGUI.ImageSequenceLauncher.__init__
+VisionEgg.PyroApps.EPhysGUI.Loop.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopContainedObject.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopParamDialog.__init__
+VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.__init__
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.__init__
+VisionEgg.PyroApps.EPhysServer.EPhysServer.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingMetaParameters.__init__
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.GridGUI.GridControlFrame.__init__
+VisionEgg.PyroApps.GridGUI.GridMetaParameters.__init__
+VisionEgg.PyroApps.GridServer.GridMetaController.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetMetaParameters.__init__
+VisionEgg.PyroApps.MouseTargetServer.MousePositionController.__init__
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetOrientationController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetPositionController.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.CallbackEntry.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionParameters.__init__
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingMetaParameters.__init__
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumMetaParameters.__init__
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.__init__
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.__init__
+VisionEgg.PyroApps.TargetGUI.TargetMetaParameters.__init__
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.__init__
+VisionEgg.PyroClient.PyroClient.__init__
+VisionEgg.PyroHelpers.PyroConstantController.__init__
+VisionEgg.PyroHelpers.PyroEncapsulatedController.__init__
+VisionEgg.PyroHelpers.PyroEvalStringController.__init__
+VisionEgg.PyroHelpers.PyroExecStringController.__init__
+VisionEgg.PyroHelpers.PyroListenController.__init__
+VisionEgg.PyroHelpers.PyroLocalDictController.__init__
+VisionEgg.PyroHelpers.PyroServer.__init__
+VisionEgg.QuickTime.MovieTexture.__init__
+VisionEgg.ResponseControl.KeyboardResponseController.__init__
+VisionEgg.ResponseControl.ResponseController.__init__
+VisionEgg.SphereMap.AzElGrid.__init__
+VisionEgg.SphereMap.SphereGrating.__init__
+VisionEgg.SphereMap.SphereMap.__init__
+VisionEgg.SphereMap.SphereWindow.__init__
+VisionEgg.TCPController.SocketListenController.__init__
+VisionEgg.TCPController.TCPController.__init__
+VisionEgg.TCPController.TCPServer.__init__
+VisionEgg.Text.BitmapText.__init__
+VisionEgg.Text.GlutTextBase.__init__
+VisionEgg.Text.StrokeText.__init__
+VisionEgg.Text.Text.__init__
+VisionEgg.Textures.FixationCross.__init__
+VisionEgg.Textures.Mask2D.__init__
+VisionEgg.Textures.SpinningDrum.__init__
+VisionEgg.Textures.Texture.__init__
+VisionEgg.Textures.TextureFromFile.__init__
+VisionEgg.Textures.TextureObject.__init__
+VisionEgg.Textures.TextureStimulusBaseClass.__init__
+VisionEgg.ThreeDeeMath.TransformMatrix.__init__
+VisionEgg.WrappedText.WrappedText.__init__
+VisionEgg.qtmovie.Movie.__init__
+VisionEgg.qtmovie.Rect.__init__" class="py-name" href="#" onclick="return doclink('link-49', '__init__', 'link-11');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt><tt class="py-name">master</tt><tt class="py-op">,</tt><tt class="py-op">**</tt><tt class="py-name">cnf</tt><tt class="py-op">)</tt> </tt>
+<a name="L194"></a><tt class="py-lineno">194</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">winfo_toplevel</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-50" class="py-name"><a title="VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.title
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.title
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.title
+VisionEgg.PyroApps.GridGUI.GridControlFrame.title
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.title
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.title
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.title
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.title" class="py-name" href="#" onclick="return doclink('link-50', 'title', 'link-12');">title</a></tt><tt class="py-op">(</tt><tt class="py-string">'Vision Egg - Graphics configuration'</tt><tt class="py-op">)</tt> </tt>
+<a name="L195"></a><tt class="py-lineno">195</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">pack</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L196"></a><tt class="py-lineno">196</tt>  <tt class="py-line"> </tt>
+<a name="L197"></a><tt class="py-lineno">197</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">clicked_ok</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> <tt class="py-comment"># So we can distinguish between clicking OK and closing the window</tt> </tt>
+<a name="L198"></a><tt class="py-lineno">198</tt>  <tt class="py-line"> </tt>
+<a name="L199"></a><tt class="py-lineno">199</tt>  <tt class="py-line">        <tt class="py-name">row</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L200"></a><tt class="py-lineno">200</tt>  <tt class="py-line">        <tt id="link-51" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-51', 'Tkinter', 'link-2');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> </tt>
+<a name="L201"></a><tt class="py-lineno">201</tt>  <tt class="py-line">                      <tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Vision Egg - Graphics configuration"</tt><tt class="py-op">,</tt> </tt>
+<a name="L202"></a><tt class="py-lineno">202</tt>  <tt class="py-line">                      <tt class="py-name">font</tt><tt class="py-op">=</tt><tt class="py-op">(</tt><tt class="py-string">"Helvetica"</tt><tt class="py-op">,</tt><tt class="py-number">14</tt><tt class="py-op">,</tt><tt class="py-string">"bold"</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</ [...]
+<a name="L203"></a><tt class="py-lineno">203</tt>  <tt class="py-line">        <tt class="py-name">row</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L204"></a><tt class="py-lineno">204</tt>  <tt class="py-line"> </tt>
+<a name="L205"></a><tt class="py-lineno">205</tt>  <tt class="py-line">        <tt class="py-comment">################## begin topframe ##############################</tt> </tt>
+<a name="L206"></a><tt class="py-lineno">206</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L207"></a><tt class="py-lineno">207</tt>  <tt class="py-line">        <tt class="py-name">topframe</tt> <tt class="py-op">=</tt> <tt id="link-52" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-52', 'Tkinter', 'link-2');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Frame</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
+<a name="L208"></a><tt class="py-lineno">208</tt>  <tt class="py-line">        <tt class="py-name">topframe</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-name">row</tt><tt class="py-op">,</tt><tt class="py-name">column</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">,</tt><tt class="py-name">columnspan</tt><tt class="py-op">=</tt><tt class="py-number">2</tt><tt c [...]
+<a name="L209"></a><tt class="py-lineno">209</tt>  <tt class="py-line">        <tt class="py-name">topframe_row</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L210"></a><tt class="py-lineno">210</tt>  <tt class="py-line"> </tt>
+<a name="L211"></a><tt class="py-lineno">211</tt>  <tt class="py-line">        <tt id="link-53" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-53', 'Tkinter', 'link-2');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">topframe</tt><tt class="py-op">,</tt> </tt>
+<a name="L212"></a><tt class="py-lineno">212</tt>  <tt class="py-line">                      <tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-54" class="py-name" targets="Method VisionEgg.Deprecated.Message.format_string()=VisionEgg.Deprecated.Message-class.html#format_string,Method VisionEgg.GUI.GraphicsConfigurationWindow.format_string()=VisionEgg.GUI.GraphicsConfigurationWindow-class.html#format_string"><a title="Vi [...]
+VisionEgg.GUI.GraphicsConfigurationWindow.format_string" class="py-name" href="#" onclick="return doclink('link-54', 'format_string', 'link-54');">format_string</a></tt><tt class="py-op">(</tt><tt class="py-string">"The default value for these variables and the presence of this dialog window can be controlled via the Vision Egg config file. If this file exists in the Vision Egg user directory, that file is used.  Otherwise, the configuration file found in the Vision Egg system directory  [...]
+<a name="L213"></a><tt class="py-lineno">213</tt>  <tt class="py-line">                      <tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-name">topframe_row</tt><tt class="py-op">,</tt><tt class="py-name">column</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py-op">,</tt><tt class="py-name">columnspan</tt><tt class="py-op">=</tt><tt class="py-numbe [...]
+<a name="L214"></a><tt class="py-lineno">214</tt>  <tt class="py-line">        <tt class="py-name">topframe_row</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L215"></a><tt class="py-lineno">215</tt>  <tt class="py-line"> </tt>
+<a name="L216"></a><tt class="py-lineno">216</tt>  <tt class="py-line">        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L217"></a><tt class="py-lineno">217</tt>  <tt class="py-line">            <tt class="py-keyword">import</tt> <tt class="py-name">_imaging</tt><tt class="py-op">,</tt> <tt class="py-name">_imagingtk</tt> </tt>
+<a name="L218"></a><tt class="py-lineno">218</tt>  <tt class="py-line">            <tt class="py-keyword">import</tt> <tt class="py-name">ImageFile</tt><tt class="py-op">,</tt> <tt class="py-name">ImageFileIO</tt><tt class="py-op">,</tt> <tt class="py-name">BmpImagePlugin</tt><tt class="py-op">,</tt> <tt class="py-name">JpegImagePlugin</tt> </tt>
+<a name="L219"></a><tt class="py-lineno">219</tt>  <tt class="py-line">            <tt class="py-keyword">import</tt> <tt class="py-name">Image</tt><tt class="py-op">,</tt><tt class="py-name">ImageTk</tt> </tt>
+<a name="L220"></a><tt class="py-lineno">220</tt>  <tt class="py-line">            <tt class="py-name">im</tt> <tt class="py-op">=</tt> <tt class="py-name">Image</tt><tt class="py-op">.</tt><tt class="py-name">open</tt><tt class="py-op">(</tt><tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">path</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt id="link-56" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="retu [...]
+<a name="L221"></a><tt class="py-lineno">221</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">tk_im</tt><tt class="py-op">=</tt><tt class="py-name">ImageTk</tt><tt class="py-op">.</tt><tt class="py-name">PhotoImage</tt><tt class="py-op">(</tt><tt class="py-name">im</tt><tt class="py-op">)</tt> </tt>
+<a name="L222"></a><tt class="py-lineno">222</tt>  <tt class="py-line">            <tt id="link-58" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-58', 'Tkinter', 'link-2');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">topframe</tt><tt class="py-op">,</tt><tt class="py-name">image</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><t [...]
+<a name="L223"></a><tt class="py-lineno">223</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt> <tt class="py-name">Exception</tt><tt class="py-op">,</tt><tt class="py-name">x</tt><tt class="py-op">:</tt> </tt>
+<a name="L224"></a><tt class="py-lineno">224</tt>  <tt class="py-line">            <tt id="link-59" class="py-name" targets="Variable VisionEgg.logger=VisionEgg-module.html#logger"><a title="VisionEgg.logger" class="py-name" href="#" onclick="return doclink('link-59', 'logger', 'link-59');">logger</a></tt> <tt class="py-op">=</tt> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">getLogger</tt><tt class="py-op">(</tt><tt class="py-string">'VisionEgg.GUI'</tt><tt [...]
+<a name="L225"></a><tt class="py-lineno">225</tt>  <tt class="py-line">            <tt id="link-60" class="py-name"><a title="VisionEgg.logger" class="py-name" href="#" onclick="return doclink('link-60', 'logger', 'link-59');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">"No Vision Egg logo :( because of error while "</tt> </tt>
+<a name="L226"></a><tt class="py-lineno">226</tt>  <tt class="py-line">                        <tt class="py-string">"trying to display image in "</tt> </tt>
+<a name="L227"></a><tt class="py-lineno">227</tt>  <tt class="py-line">                        <tt class="py-string">"GUI.GraphicsConfigurationWindow: %s: "</tt> </tt>
+<a name="L228"></a><tt class="py-lineno">228</tt>  <tt class="py-line">                        <tt class="py-string">"%s"</tt><tt class="py-op">%</tt><tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">x</tt><tt class="py-op">.</tt><tt class="py-name">__class__</tt><tt class="py-op">)</tt><tt class="py-op">,</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">x</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt clas [...]
+<a name="L229"></a><tt class="py-lineno">229</tt>  <tt class="py-line"> </tt>
+<a name="L230"></a><tt class="py-lineno">230</tt>  <tt class="py-line">        <tt class="py-comment">################## end topframe ##############################</tt> </tt>
+<a name="L231"></a><tt class="py-lineno">231</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L232"></a><tt class="py-lineno">232</tt>  <tt class="py-line">        <tt class="py-name">row</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L233"></a><tt class="py-lineno">233</tt>  <tt class="py-line"> </tt>
+<a name="L234"></a><tt class="py-lineno">234</tt>  <tt class="py-line">        <tt class="py-comment">################## begin file_frame ##############################</tt> </tt>
+<a name="L235"></a><tt class="py-lineno">235</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L236"></a><tt class="py-lineno">236</tt>  <tt class="py-line">        <tt class="py-name">file_frame</tt> <tt class="py-op">=</tt> <tt id="link-61" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-61', 'Tkinter', 'link-2');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Frame</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
+<a name="L237"></a><tt class="py-lineno">237</tt>  <tt class="py-line">        <tt class="py-name">file_frame</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-name">row</tt><tt class="py-op">,</tt><tt class="py-name">columnspan</tt><tt class="py-op">=</tt><tt class="py-number">2</tt><tt class="py-op">,</tt><tt class="py-name">sticky</tt><tt class="py-op">=</tt><tt id="link-62" class="py-name [...]
+<a name="L238"></a><tt class="py-lineno">238</tt>  <tt class="py-line"> </tt>
+<a name="L239"></a><tt class="py-lineno">239</tt>  <tt class="py-line">        <tt class="py-comment"># Script name and location</tt> </tt>
+<a name="L240"></a><tt class="py-lineno">240</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">file_row</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L241"></a><tt class="py-lineno">241</tt>  <tt class="py-line">        <tt id="link-64" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-64', 'Tkinter', 'link-2');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">file_frame</tt><tt class="py-op">,</tt> </tt>
+<a name="L242"></a><tt class="py-lineno">242</tt>  <tt class="py-line">                      <tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"This script:"</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-name">file_row</tt><tt class="py-op">,</tt><tt class="py-name">column</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="p [...]
+<a name="L243"></a><tt class="py-lineno">243</tt>  <tt class="py-line">        <tt id="link-66" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-66', 'Tkinter', 'link-2');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">file_frame</tt><tt class="py-op">,</tt> </tt>
+<a name="L244"></a><tt class="py-lineno">244</tt>  <tt class="py-line">                      <tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"%s"</tt><tt class="py-op">%</tt><tt class="py-op">(</tt><tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">path</tt><tt class="py-op">.</tt><tt class="py-name">abspath</tt><tt class="py-op">(</tt><tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">argv</tt><tt class="py-op">[</tt><t [...]
+<a name="L245"></a><tt class="py-lineno">245</tt>  <tt class="py-line">        <tt class="py-name">file_row</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L246"></a><tt class="py-lineno">246</tt>  <tt class="py-line">        <tt class="py-comment"># Vision Egg system dir</tt> </tt>
+<a name="L247"></a><tt class="py-lineno">247</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt id="link-68" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-68', 'Tkinter', 'link-2');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">file_frame</tt><tt class="py-op">,</tt> </tt>
+<a name="L248"></a><tt class="py-lineno">248</tt>  <tt class="py-line">                      <tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Vision Egg system directory:"</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-name">file_row</tt><tt class="py-op">,</tt><tt class="py-name">column</tt><tt class="py-op">=</tt><tt class="py-number">0< [...]
+<a name="L249"></a><tt class="py-lineno">249</tt>  <tt class="py-line">        <tt id="link-70" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-70', 'Tkinter', 'link-2');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">file_frame</tt><tt class="py-op">,</tt> </tt>
+<a name="L250"></a><tt class="py-lineno">250</tt>  <tt class="py-line">                      <tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"%s"</tt><tt class="py-op">%</tt><tt class="py-op">(</tt><tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">path</tt><tt class="py-op">.</tt><tt class="py-name">abspath</tt><tt class="py-op">(</tt><tt id="link-71" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('lin [...]
+<a name="L251"></a><tt class="py-lineno">251</tt>  <tt class="py-line">        <tt class="py-name">file_row</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L252"></a><tt class="py-lineno">252</tt>  <tt class="py-line"> </tt>
+<a name="L253"></a><tt class="py-lineno">253</tt>  <tt class="py-line">        <tt class="py-comment"># Vision Egg user dir</tt> </tt>
+<a name="L254"></a><tt class="py-lineno">254</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt id="link-74" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-74', 'Tkinter', 'link-2');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">file_frame</tt><tt class="py-op">,</tt> </tt>
+<a name="L255"></a><tt class="py-lineno">255</tt>  <tt class="py-line">                      <tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Vision Egg user directory:"</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-name">file_row</tt><tt class="py-op">,</tt><tt class="py-name">column</tt><tt class="py-op">=</tt><tt class="py-number">0</t [...]
+<a name="L256"></a><tt class="py-lineno">256</tt>  <tt class="py-line">        <tt id="link-76" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-76', 'Tkinter', 'link-2');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">file_frame</tt><tt class="py-op">,</tt> </tt>
+<a name="L257"></a><tt class="py-lineno">257</tt>  <tt class="py-line">                      <tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"%s"</tt><tt class="py-op">%</tt><tt class="py-op">(</tt><tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">path</tt><tt class="py-op">.</tt><tt class="py-name">abspath</tt><tt class="py-op">(</tt><tt id="link-77" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('lin [...]
+<a name="L258"></a><tt class="py-lineno">258</tt>  <tt class="py-line">        <tt class="py-name">file_row</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L259"></a><tt class="py-lineno">259</tt>  <tt class="py-line"> </tt>
+<a name="L260"></a><tt class="py-lineno">260</tt>  <tt class="py-line">        <tt class="py-comment"># Config file</tt> </tt>
+<a name="L261"></a><tt class="py-lineno">261</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt id="link-80" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-80', 'Tkinter', 'link-2');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">file_frame</tt><tt class="py-op">,</tt> </tt>
+<a name="L262"></a><tt class="py-lineno">262</tt>  <tt class="py-line">                      <tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Config file location:"</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-name">file_row</tt><tt class="py-op">,</tt><tt class="py-name">column</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt [...]
+<a name="L263"></a><tt class="py-lineno">263</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt id="link-82" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-82', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-83" class="py-name"><a title="VisionEgg.config" class="py-name" href="#" onclick="return doclink('link-83', 'config', 'link-9');">config</a></tt><tt class="py-op">.</tt><tt class="py-name" [...]
+<a name="L264"></a><tt class="py-lineno">264</tt>  <tt class="py-line">            <tt id="link-84" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-84', 'Tkinter', 'link-2');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">file_frame</tt><tt class="py-op">,</tt> </tt>
+<a name="L265"></a><tt class="py-lineno">265</tt>  <tt class="py-line">                          <tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"%s"</tt><tt class="py-op">%</tt><tt class="py-op">(</tt><tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">path</tt><tt class="py-op">.</tt><tt class="py-name">abspath</tt><tt class="py-op">(</tt><tt id="link-85" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink( [...]
+<a name="L266"></a><tt class="py-lineno">266</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L267"></a><tt class="py-lineno">267</tt>  <tt class="py-line">            <tt id="link-88" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-88', 'Tkinter', 'link-2');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">file_frame</tt><tt class="py-op">,</tt> </tt>
+<a name="L268"></a><tt class="py-lineno">268</tt>  <tt class="py-line">                          <tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"(None)"</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-name">file_row</tt><tt class="py-op">,</tt><tt class="py-name">column</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py- [...]
+<a name="L269"></a><tt class="py-lineno">269</tt>  <tt class="py-line">        <tt class="py-name">file_row</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L270"></a><tt class="py-lineno">270</tt>  <tt class="py-line"> </tt>
+<a name="L271"></a><tt class="py-lineno">271</tt>  <tt class="py-line">        <tt class="py-comment"># Log file location</tt> </tt>
+<a name="L272"></a><tt class="py-lineno">272</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt id="link-90" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-90', 'Tkinter', 'link-2');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">file_frame</tt><tt class="py-op">,</tt> </tt>
+<a name="L273"></a><tt class="py-lineno">273</tt>  <tt class="py-line">                      <tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Log file location:"</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-name">file_row</tt><tt class="py-op">,</tt><tt class="py-name">column</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt cl [...]
+<a name="L274"></a><tt class="py-lineno">274</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt id="link-92" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-92', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-93" class="py-name"><a title="VisionEgg.config" class="py-name" href="#" onclick="return doclink('link-93', 'config', 'link-9');">config</a></tt><tt class="py-op">.</tt><tt class="py-name" [...]
+<a name="L275"></a><tt class="py-lineno">275</tt>  <tt class="py-line">            <tt id="link-94" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-94', 'Tkinter', 'link-2');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">file_frame</tt><tt class="py-op">,</tt> </tt>
+<a name="L276"></a><tt class="py-lineno">276</tt>  <tt class="py-line">                          <tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"%s"</tt><tt class="py-op">%</tt><tt class="py-op">(</tt><tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">path</tt><tt class="py-op">.</tt><tt class="py-name">abspath</tt><tt class="py-op">(</tt><tt id="link-95" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink( [...]
+<a name="L277"></a><tt class="py-lineno">277</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L278"></a><tt class="py-lineno">278</tt>  <tt class="py-line">            <tt id="link-98" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-98', 'Tkinter', 'link-2');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">file_frame</tt><tt class="py-op">,</tt> </tt>
+<a name="L279"></a><tt class="py-lineno">279</tt>  <tt class="py-line">                          <tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"(stderr console)"</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-name">file_row</tt><tt class="py-op">,</tt><tt class="py-name">column</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt  [...]
+<a name="L280"></a><tt class="py-lineno">280</tt>  <tt class="py-line"> </tt>
+<a name="L281"></a><tt class="py-lineno">281</tt>  <tt class="py-line">        <tt class="py-comment">################## end file_frame ##############################</tt> </tt>
+<a name="L282"></a><tt class="py-lineno">282</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L283"></a><tt class="py-lineno">283</tt>  <tt class="py-line">        <tt class="py-name">row</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L284"></a><tt class="py-lineno">284</tt>  <tt class="py-line"> </tt>
+<a name="L285"></a><tt class="py-lineno">285</tt>  <tt class="py-line">        <tt class="py-comment">################## begin cf ##############################</tt> </tt>
+<a name="L286"></a><tt class="py-lineno">286</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L287"></a><tt class="py-lineno">287</tt>  <tt class="py-line">        <tt class="py-name">cf</tt> <tt class="py-op">=</tt> <tt id="link-100" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-100', 'Tkinter', 'link-2');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Frame</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
+<a name="L288"></a><tt class="py-lineno">288</tt>  <tt class="py-line">        <tt class="py-name">cf</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-name">row</tt><tt class="py-op">,</tt><tt class="py-name">column</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">,</tt><tt class="py-name">padx</tt><tt class="py-op">=</tt><tt class="py-number">10</tt><tt class="py-op [...]
+<a name="L289"></a><tt class="py-lineno">289</tt>  <tt class="py-line"> </tt>
+<a name="L290"></a><tt class="py-lineno">290</tt>  <tt class="py-line">        <tt class="py-name">cf_row</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L291"></a><tt class="py-lineno">291</tt>  <tt class="py-line">        <tt class="py-comment"># Fullscreen</tt> </tt>
+<a name="L292"></a><tt class="py-lineno">292</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">fullscreen</tt> <tt class="py-op">=</tt> <tt id="link-101" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-101', 'Tkinter', 'link-2');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">BooleanVar</tt><tt class="py-op">(</tt><tt class="py-op">)</ [...]
+<a name="L293"></a><tt class="py-lineno">293</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">fullscreen</tt><tt class="py-op">.</tt><tt id="link-102" class="py-name" targets="Method VisionEgg.ClassWithParameters.set()=VisionEgg.ClassWithParameters-class.html#set"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-102', 'set', 'link-102');">set</a></tt><tt class="py-op">(</tt><tt id [...]
+<a name="L294"></a><tt class="py-lineno">294</tt>  <tt class="py-line">        <tt id="link-105" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-105', 'Tkinter', 'link-2');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Checkbutton</tt><tt class="py-op">(</tt><tt class="py-name">cf</tt><tt class="py-op">,</tt> </tt>
+<a name="L295"></a><tt class="py-lineno">295</tt>  <tt class="py-line">                            <tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">'Fullscreen'</tt><tt class="py-op">,</tt> </tt>
+<a name="L296"></a><tt class="py-lineno">296</tt>  <tt class="py-line">                            <tt class="py-name">variable</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">fullscreen</tt><tt class="py-op">,</tt> </tt>
+<a name="L297"></a><tt class="py-lineno">297</tt>  <tt class="py-line">                            <tt class="py-name">relief</tt><tt class="py-op">=</tt><tt id="link-106" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-106', 'Tkinter', 'link-2');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">FLAT</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-nam [...]
+<a name="L298"></a><tt class="py-lineno">298</tt>  <tt class="py-line"> </tt>
+<a name="L299"></a><tt class="py-lineno">299</tt>  <tt class="py-line">        <tt class="py-name">cf_row</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L300"></a><tt class="py-lineno">300</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">synclync_present</tt> <tt class="py-op">=</tt> <tt id="link-108" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-108', 'Tkinter', 'link-2');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">BooleanVar</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L301"></a><tt class="py-lineno">301</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">synclync_present</tt><tt class="py-op">.</tt><tt id="link-109" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-109', 'set', 'link-102');">set</a></tt><tt class="py-op">(</tt><tt id="link-110" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return do [...]
+<a name="L302"></a><tt class="py-lineno">302</tt>  <tt class="py-line">        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L303"></a><tt class="py-lineno">303</tt>  <tt class="py-line">            <tt class="py-keyword">import</tt> <tt class="py-name">synclync</tt> </tt>
+<a name="L304"></a><tt class="py-lineno">304</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">show_synclync_option</tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L305"></a><tt class="py-lineno">305</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt><tt class="py-op">:</tt> </tt>
+<a name="L306"></a><tt class="py-lineno">306</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">show_synclync_option</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L307"></a><tt class="py-lineno">307</tt>  <tt class="py-line"> </tt>
+<a name="L308"></a><tt class="py-lineno">308</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">show_synclync_option</tt><tt class="py-op">:</tt> </tt>
+<a name="L309"></a><tt class="py-lineno">309</tt>  <tt class="py-line">            <tt id="link-112" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-112', 'Tkinter', 'link-2');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Checkbutton</tt><tt class="py-op">(</tt><tt class="py-name">cf</tt><tt class="py-op">,</tt> </tt>
+<a name="L310"></a><tt class="py-lineno">310</tt>  <tt class="py-line">                                <tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">'SyncLync device present'</tt><tt class="py-op">,</tt> </tt>
+<a name="L311"></a><tt class="py-lineno">311</tt>  <tt class="py-line">                                <tt class="py-name">variable</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">synclync_present</tt><tt class="py-op">,</tt> </tt>
+<a name="L312"></a><tt class="py-lineno">312</tt>  <tt class="py-line">                                <tt class="py-name">relief</tt><tt class="py-op">=</tt><tt id="link-113" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-113', 'Tkinter', 'link-2');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">FLAT</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py [...]
+<a name="L313"></a><tt class="py-lineno">313</tt>  <tt class="py-line"> </tt>
+<a name="L314"></a><tt class="py-lineno">314</tt>  <tt class="py-line"> </tt>
+<a name="L315"></a><tt class="py-lineno">315</tt>  <tt class="py-line">        <tt class="py-name">cf_row</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L316"></a><tt class="py-lineno">316</tt>  <tt class="py-line">        <tt class="py-comment"># Maximum priority</tt> </tt>
+<a name="L317"></a><tt class="py-lineno">317</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">maxpriority</tt> <tt class="py-op">=</tt> <tt id="link-115" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-115', 'Tkinter', 'link-2');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">BooleanVar</tt><tt class="py-op">(</tt><tt class="py-op">)< [...]
+<a name="L318"></a><tt class="py-lineno">318</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">maxpriority</tt><tt class="py-op">.</tt><tt id="link-116" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-116', 'set', 'link-102');">set</a></tt><tt class="py-op">(</tt><tt id="link-117" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink [...]
+<a name="L319"></a><tt class="py-lineno">319</tt>  <tt class="py-line"> </tt>
+<a name="L320"></a><tt class="py-lineno">320</tt>  <tt class="py-line">        <tt id="link-119" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-119', 'Tkinter', 'link-2');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Checkbutton</tt><tt class="py-op">(</tt><tt class="py-name">cf</tt><tt class="py-op">,</tt> </tt>
+<a name="L321"></a><tt class="py-lineno">321</tt>  <tt class="py-line">                            <tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">'Maximum priority (use with caution)'</tt><tt class="py-op">,</tt> </tt>
+<a name="L322"></a><tt class="py-lineno">322</tt>  <tt class="py-line">                            <tt class="py-name">variable</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">maxpriority</tt><tt class="py-op">,</tt> </tt>
+<a name="L323"></a><tt class="py-lineno">323</tt>  <tt class="py-line">                            <tt class="py-name">relief</tt><tt class="py-op">=</tt><tt id="link-120" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-120', 'Tkinter', 'link-2');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">FLAT</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-nam [...]
+<a name="L324"></a><tt class="py-lineno">324</tt>  <tt class="py-line">        <tt class="py-name">cf_row</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L325"></a><tt class="py-lineno">325</tt>  <tt class="py-line"> </tt>
+<a name="L326"></a><tt class="py-lineno">326</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">platform</tt><tt class="py-op">==</tt><tt class="py-string">'darwin'</tt><tt class="py-op">:</tt> </tt>
+<a name="L327"></a><tt class="py-lineno">327</tt>  <tt class="py-line">            <tt class="py-comment"># Only used on darwin platform</tt> </tt>
+<a name="L328"></a><tt class="py-lineno">328</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">darwin_conventional</tt> <tt class="py-op">=</tt> <tt id="link-122" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-122', 'Tkinter', 'link-2');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">IntVar</tt><tt class="py-op">(</tt><tt class="p [...]
+<a name="L329"></a><tt class="py-lineno">329</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">darwin_conventional</tt><tt class="py-op">.</tt><tt id="link-123" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-123', 'set', 'link-102');">set</a></tt><tt class="py-op">(</tt><tt id="link-124" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="re [...]
+<a name="L330"></a><tt class="py-lineno">330</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">darwin_priority</tt> <tt class="py-op">=</tt> <tt id="link-126" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-126', 'Tkinter', 'link-2');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">StringVar</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L331"></a><tt class="py-lineno">331</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">darwin_priority</tt><tt class="py-op">.</tt><tt id="link-127" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-127', 'set', 'link-102');">set</a></tt><tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt id="link-128" class="py-name"><a title= [...]
+<a name="L332"></a><tt class="py-lineno">332</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">darwin_realtime_period_denom</tt> <tt class="py-op">=</tt> <tt id="link-130" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-130', 'Tkinter', 'link-2');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">StringVar</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L333"></a><tt class="py-lineno">333</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">darwin_realtime_period_denom</tt><tt class="py-op">.</tt><tt id="link-131" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-131', 'set', 'link-102');">set</a></tt><tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt id="link-132" class="py-na [...]
+<a name="L334"></a><tt class="py-lineno">334</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">darwin_realtime_computation_denom</tt> <tt class="py-op">=</tt> <tt id="link-134" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-134', 'Tkinter', 'link-2');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">StringVar</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L335"></a><tt class="py-lineno">335</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">darwin_realtime_computation_denom</tt><tt class="py-op">.</tt><tt id="link-135" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-135', 'set', 'link-102');">set</a></tt><tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt id="link-136" class=" [...]
+<a name="L336"></a><tt class="py-lineno">336</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">darwin_realtime_constraint_denom</tt> <tt class="py-op">=</tt> <tt id="link-138" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-138', 'Tkinter', 'link-2');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">StringVar</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L337"></a><tt class="py-lineno">337</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">darwin_realtime_constraint_denom</tt><tt class="py-op">.</tt><tt id="link-139" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-139', 'set', 'link-102');">set</a></tt><tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt id="link-140" class="p [...]
+<a name="L338"></a><tt class="py-lineno">338</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">darwin_realtime_preemptible</tt> <tt class="py-op">=</tt> <tt id="link-142" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-142', 'Tkinter', 'link-2');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">BooleanVar</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L339"></a><tt class="py-lineno">339</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">darwin_realtime_preemptible</tt><tt class="py-op">.</tt><tt id="link-143" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-143', 'set', 'link-102');">set</a></tt><tt class="py-op">(</tt><tt class="py-keyword">not</tt> <tt id="link-144" class="py-name"><a title="VisionE [...]
+<a name="L340"></a><tt class="py-lineno">340</tt>  <tt class="py-line">            <tt id="link-146" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-146', 'Tkinter', 'link-2');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Button</tt><tt class="py-op">(</tt><tt class="py-name">cf</tt><tt class="py-op">,</tt><tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Maximum priority options..."</tt><tt [...]
+<a name="L341"></a><tt class="py-lineno">341</tt>  <tt class="py-line">                           <tt class="py-name">command</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-147" class="py-name" targets="Method VisionEgg.GUI.GraphicsConfigurationWindow.darwin_maxpriority_tune()=VisionEgg.GUI.GraphicsConfigurationWindow-class.html#darwin_maxpriority_tune"><a title="VisionEgg.GUI.GraphicsConfigurationWindow.darwin_maxpriority_tune" class="py-na [...]
+<a name="L342"></a><tt class="py-lineno">342</tt>  <tt class="py-line">            <tt class="py-name">cf_row</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L343"></a><tt class="py-lineno">343</tt>  <tt class="py-line"> </tt>
+<a name="L344"></a><tt class="py-lineno">344</tt>  <tt class="py-line">        <tt class="py-comment"># Sync swap</tt> </tt>
+<a name="L345"></a><tt class="py-lineno">345</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sync_swap</tt> <tt class="py-op">=</tt> <tt id="link-148" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-148', 'Tkinter', 'link-2');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">BooleanVar</tt><tt class="py-op">(</tt><tt class="py-op">)</t [...]
+<a name="L346"></a><tt class="py-lineno">346</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sync_swap</tt><tt class="py-op">.</tt><tt id="link-149" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-149', 'set', 'link-102');">set</a></tt><tt class="py-op">(</tt><tt id="link-150" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink(' [...]
+<a name="L347"></a><tt class="py-lineno">347</tt>  <tt class="py-line">        <tt id="link-152" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-152', 'Tkinter', 'link-2');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Checkbutton</tt><tt class="py-op">(</tt><tt class="py-name">cf</tt><tt class="py-op">,</tt> </tt>
+<a name="L348"></a><tt class="py-lineno">348</tt>  <tt class="py-line">                            <tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">'Attempt vsync'</tt><tt class="py-op">,</tt> </tt>
+<a name="L349"></a><tt class="py-lineno">349</tt>  <tt class="py-line">                            <tt class="py-name">variable</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sync_swap</tt><tt class="py-op">,</tt> </tt>
+<a name="L350"></a><tt class="py-lineno">350</tt>  <tt class="py-line">                            <tt class="py-name">relief</tt><tt class="py-op">=</tt><tt id="link-153" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-153', 'Tkinter', 'link-2');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">FLAT</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-nam [...]
+<a name="L351"></a><tt class="py-lineno">351</tt>  <tt class="py-line">        <tt class="py-name">cf_row</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L352"></a><tt class="py-lineno">352</tt>  <tt class="py-line"> </tt>
+<a name="L353"></a><tt class="py-lineno">353</tt>  <tt class="py-line">        <tt class="py-comment"># Frameless window</tt> </tt>
+<a name="L354"></a><tt class="py-lineno">354</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">frameless</tt> <tt class="py-op">=</tt> <tt id="link-155" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-155', 'Tkinter', 'link-2');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">BooleanVar</tt><tt class="py-op">(</tt><tt class="py-op">)</t [...]
+<a name="L355"></a><tt class="py-lineno">355</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">frameless</tt><tt class="py-op">.</tt><tt id="link-156" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-156', 'set', 'link-102');">set</a></tt><tt class="py-op">(</tt><tt id="link-157" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink(' [...]
+<a name="L356"></a><tt class="py-lineno">356</tt>  <tt class="py-line">        <tt id="link-159" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-159', 'Tkinter', 'link-2');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Checkbutton</tt><tt class="py-op">(</tt><tt class="py-name">cf</tt><tt class="py-op">,</tt> </tt>
+<a name="L357"></a><tt class="py-lineno">357</tt>  <tt class="py-line">                            <tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">'No frame around window'</tt><tt class="py-op">,</tt> </tt>
+<a name="L358"></a><tt class="py-lineno">358</tt>  <tt class="py-line">                            <tt class="py-name">variable</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">frameless</tt><tt class="py-op">,</tt> </tt>
+<a name="L359"></a><tt class="py-lineno">359</tt>  <tt class="py-line">                            <tt class="py-name">relief</tt><tt class="py-op">=</tt><tt id="link-160" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-160', 'Tkinter', 'link-2');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">FLAT</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-nam [...]
+<a name="L360"></a><tt class="py-lineno">360</tt>  <tt class="py-line">        <tt class="py-name">cf_row</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L361"></a><tt class="py-lineno">361</tt>  <tt class="py-line"> </tt>
+<a name="L362"></a><tt class="py-lineno">362</tt>  <tt class="py-line">        <tt class="py-comment"># Hide mouse</tt> </tt>
+<a name="L363"></a><tt class="py-lineno">363</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">mouse_visible</tt> <tt class="py-op">=</tt> <tt id="link-162" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-162', 'Tkinter', 'link-2');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">BooleanVar</tt><tt class="py-op">(</tt><tt class="py-op"> [...]
+<a name="L364"></a><tt class="py-lineno">364</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">mouse_visible</tt><tt class="py-op">.</tt><tt id="link-163" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-163', 'set', 'link-102');">set</a></tt><tt class="py-op">(</tt><tt class="py-keyword">not</tt> <tt id="link-164" class="py-name"><a title="VisionEgg" class="py-name [...]
+<a name="L365"></a><tt class="py-lineno">365</tt>  <tt class="py-line">        <tt id="link-166" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-166', 'Tkinter', 'link-2');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Checkbutton</tt><tt class="py-op">(</tt><tt class="py-name">cf</tt><tt class="py-op">,</tt> </tt>
+<a name="L366"></a><tt class="py-lineno">366</tt>  <tt class="py-line">                            <tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">'Mouse cursor visible'</tt><tt class="py-op">,</tt> </tt>
+<a name="L367"></a><tt class="py-lineno">367</tt>  <tt class="py-line">                            <tt class="py-name">variable</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">mouse_visible</tt><tt class="py-op">,</tt> </tt>
+<a name="L368"></a><tt class="py-lineno">368</tt>  <tt class="py-line">                            <tt class="py-name">relief</tt><tt class="py-op">=</tt><tt id="link-167" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-167', 'Tkinter', 'link-2');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">FLAT</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-nam [...]
+<a name="L369"></a><tt class="py-lineno">369</tt>  <tt class="py-line">        <tt class="py-name">cf_row</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L370"></a><tt class="py-lineno">370</tt>  <tt class="py-line"> </tt>
+<a name="L371"></a><tt class="py-lineno">371</tt>  <tt class="py-line">        <tt class="py-comment"># Stereo</tt> </tt>
+<a name="L372"></a><tt class="py-lineno">372</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stereo</tt> <tt class="py-op">=</tt> <tt id="link-169" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-169', 'Tkinter', 'link-2');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">BooleanVar</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L373"></a><tt class="py-lineno">373</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stereo</tt><tt class="py-op">.</tt><tt id="link-170" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-170', 'set', 'link-102');">set</a></tt><tt class="py-op">(</tt><tt id="link-171" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('lin [...]
+<a name="L374"></a><tt class="py-lineno">374</tt>  <tt class="py-line">        <tt id="link-173" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-173', 'Tkinter', 'link-2');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Checkbutton</tt><tt class="py-op">(</tt><tt class="py-name">cf</tt><tt class="py-op">,</tt> </tt>
+<a name="L375"></a><tt class="py-lineno">375</tt>  <tt class="py-line">                            <tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">'Stereo'</tt><tt class="py-op">,</tt> </tt>
+<a name="L376"></a><tt class="py-lineno">376</tt>  <tt class="py-line">                            <tt class="py-name">variable</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stereo</tt><tt class="py-op">,</tt> </tt>
+<a name="L377"></a><tt class="py-lineno">377</tt>  <tt class="py-line">                            <tt class="py-name">relief</tt><tt class="py-op">=</tt><tt id="link-174" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-174', 'Tkinter', 'link-2');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">FLAT</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-nam [...]
+<a name="L378"></a><tt class="py-lineno">378</tt>  <tt class="py-line">        <tt class="py-name">cf_row</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L379"></a><tt class="py-lineno">379</tt>  <tt class="py-line"> </tt>
+<a name="L380"></a><tt class="py-lineno">380</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">platform</tt> <tt class="py-op">==</tt> <tt class="py-string">'darwin'</tt><tt class="py-op">:</tt> </tt>
+<a name="L381"></a><tt class="py-lineno">381</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">version</tt> <tt class="py-op">==</tt> <tt class="py-string">'2.2 (#11, Jan  6 2002, 01:00:42) \n[GCC 2.95.2 19991024 (release)]'</tt><tt class="py-op">:</tt> </tt>
+<a name="L382"></a><tt class="py-lineno">382</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt id="link-176" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-176', 'Tkinter', 'link-2');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">TkVersion</tt> <tt class="py-op">==</tt> <tt class="py-number">8.4</tt><tt class="py-op">:</tt> </tt>
+<a name="L383"></a><tt class="py-lineno">383</tt>  <tt class="py-line">                    <tt class="py-comment"># The Tk in Bob Ippolito's kitchensink distro had</tt> </tt>
+<a name="L384"></a><tt class="py-lineno">384</tt>  <tt class="py-line"><tt class="py-comment"></tt>                    <tt class="py-comment"># a bug in Checkbutton</tt> </tt>
+<a name="L385"></a><tt class="py-lineno">385</tt>  <tt class="py-line"><tt class="py-comment"></tt>                    <tt id="link-177" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-177', 'Tkinter', 'link-2');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">cf</tt><tt class="py-op">,</tt><tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"I [...]
+<a name="L386"></a><tt class="py-lineno">386</tt>  <tt class="py-line">                    <tt class="py-name">cf_row</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L387"></a><tt class="py-lineno">387</tt>  <tt class="py-line">                    <tt id="link-178" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-178', 'Tkinter', 'link-2');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Button</tt><tt class="py-op">(</tt><tt class="py-name">cf</tt><tt class="py-op">,</tt><tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"PRESS ME FIRST"</tt><tt clas [...]
+<a name="L388"></a><tt class="py-lineno">388</tt>  <tt class="py-line">                    <tt class="py-name">cf_row</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L389"></a><tt class="py-lineno">389</tt>  <tt class="py-line"> </tt>
+<a name="L390"></a><tt class="py-lineno">390</tt>  <tt class="py-line">        <tt class="py-comment">################## end cf ##############################</tt> </tt>
+<a name="L391"></a><tt class="py-lineno">391</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L392"></a><tt class="py-lineno">392</tt>  <tt class="py-line">        <tt class="py-comment">################## begin entry_frame ###################</tt> </tt>
+<a name="L393"></a><tt class="py-lineno">393</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L394"></a><tt class="py-lineno">394</tt>  <tt class="py-line">        <tt class="py-name">entry_frame</tt> <tt class="py-op">=</tt> <tt id="link-179" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-179', 'Tkinter', 'link-2');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Frame</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
+<a name="L395"></a><tt class="py-lineno">395</tt>  <tt class="py-line">        <tt class="py-name">entry_frame</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-name">row</tt><tt class="py-op">,</tt><tt class="py-name">column</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py-op">,</tt><tt class="py-name">padx</tt><tt class="py-op">=</tt><tt class="py-number">10</tt><tt cla [...]
+<a name="L396"></a><tt class="py-lineno">396</tt>  <tt class="py-line">        <tt class="py-name">row</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L397"></a><tt class="py-lineno">397</tt>  <tt class="py-line">        <tt class="py-name">ef_row</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L398"></a><tt class="py-lineno">398</tt>  <tt class="py-line"> </tt>
+<a name="L399"></a><tt class="py-lineno">399</tt>  <tt class="py-line">        <tt class="py-comment"># frame rate</tt> </tt>
+<a name="L400"></a><tt class="py-lineno">400</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt id="link-180" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-180', 'Tkinter', 'link-2');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">entry_frame</tt><tt class="py-op">,</tt><tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"What [...]
+<a name="L401"></a><tt class="py-lineno">401</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">frame_rate</tt> <tt class="py-op">=</tt> <tt id="link-182" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-182', 'Tkinter', 'link-2');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">StringVar</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L402"></a><tt class="py-lineno">402</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">frame_rate</tt><tt class="py-op">.</tt><tt id="link-183" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-183', 'set', 'link-102');">set</a></tt><tt class="py-op">(</tt><tt class="py-string">"%s"</tt><tt class="py-op">%</tt><tt class="py-name">str</tt><tt class="py-op">(</ [...]
+<a name="L403"></a><tt class="py-lineno">403</tt>  <tt class="py-line">        <tt id="link-186" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-186', 'Tkinter', 'link-2');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Entry</tt><tt class="py-op">(</tt><tt class="py-name">entry_frame</tt><tt class="py-op">,</tt><tt class="py-name">textvariable</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op"> [...]
+<a name="L404"></a><tt class="py-lineno">404</tt>  <tt class="py-line">        <tt class="py-name">ef_row</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L405"></a><tt class="py-lineno">405</tt>  <tt class="py-line"> </tt>
+<a name="L406"></a><tt class="py-lineno">406</tt>  <tt class="py-line">        <tt class="py-comment"># width</tt> </tt>
+<a name="L407"></a><tt class="py-lineno">407</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt id="link-188" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-188', 'Tkinter', 'link-2');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">entry_frame</tt><tt class="py-op">,</tt><tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Wind [...]
+<a name="L408"></a><tt class="py-lineno">408</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">width</tt> <tt class="py-op">=</tt> <tt id="link-190" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-190', 'Tkinter', 'link-2');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">StringVar</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L409"></a><tt class="py-lineno">409</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">width</tt><tt class="py-op">.</tt><tt id="link-191" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-191', 'set', 'link-102');">set</a></tt><tt class="py-op">(</tt><tt class="py-string">"%s"</tt><tt class="py-op">%</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><t [...]
+<a name="L410"></a><tt class="py-lineno">410</tt>  <tt class="py-line">        <tt id="link-194" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-194', 'Tkinter', 'link-2');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Entry</tt><tt class="py-op">(</tt><tt class="py-name">entry_frame</tt><tt class="py-op">,</tt><tt class="py-name">textvariable</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op"> [...]
+<a name="L411"></a><tt class="py-lineno">411</tt>  <tt class="py-line">        <tt class="py-name">ef_row</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L412"></a><tt class="py-lineno">412</tt>  <tt class="py-line"> </tt>
+<a name="L413"></a><tt class="py-lineno">413</tt>  <tt class="py-line">        <tt class="py-comment"># height</tt> </tt>
+<a name="L414"></a><tt class="py-lineno">414</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt id="link-196" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-196', 'Tkinter', 'link-2');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">entry_frame</tt><tt class="py-op">,</tt><tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Wind [...]
+<a name="L415"></a><tt class="py-lineno">415</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">height</tt> <tt class="py-op">=</tt> <tt id="link-198" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-198', 'Tkinter', 'link-2');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">StringVar</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L416"></a><tt class="py-lineno">416</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">height</tt><tt class="py-op">.</tt><tt id="link-199" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-199', 'set', 'link-102');">set</a></tt><tt class="py-op">(</tt><tt class="py-string">"%s"</tt><tt class="py-op">%</tt><tt class="py-name">str</tt><tt class="py-op">(</tt>< [...]
+<a name="L417"></a><tt class="py-lineno">417</tt>  <tt class="py-line">        <tt id="link-202" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-202', 'Tkinter', 'link-2');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Entry</tt><tt class="py-op">(</tt><tt class="py-name">entry_frame</tt><tt class="py-op">,</tt><tt class="py-name">textvariable</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op"> [...]
+<a name="L418"></a><tt class="py-lineno">418</tt>  <tt class="py-line">        <tt class="py-name">ef_row</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L419"></a><tt class="py-lineno">419</tt>  <tt class="py-line"> </tt>
+<a name="L420"></a><tt class="py-lineno">420</tt>  <tt class="py-line">        <tt class="py-comment"># color depth</tt> </tt>
+<a name="L421"></a><tt class="py-lineno">421</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt id="link-204" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-204', 'Tkinter', 'link-2');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">entry_frame</tt><tt class="py-op">,</tt><tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Requ [...]
+<a name="L422"></a><tt class="py-lineno">422</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">color_depth</tt> <tt class="py-op">=</tt> <tt id="link-206" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-206', 'Tkinter', 'link-2');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">StringVar</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L423"></a><tt class="py-lineno">423</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">color_depth</tt><tt class="py-op">.</tt><tt id="link-207" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-207', 'set', 'link-102');">set</a></tt><tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt id="link-208" class="py-name"><a title="VisionE [...]
+<a name="L424"></a><tt class="py-lineno">424</tt>  <tt class="py-line">        <tt id="link-210" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-210', 'Tkinter', 'link-2');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Entry</tt><tt class="py-op">(</tt><tt class="py-name">entry_frame</tt><tt class="py-op">,</tt><tt class="py-name">textvariable</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op"> [...]
+<a name="L425"></a><tt class="py-lineno">425</tt>  <tt class="py-line">        <tt class="py-name">ef_row</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L426"></a><tt class="py-lineno">426</tt>  <tt class="py-line"> </tt>
+<a name="L427"></a><tt class="py-lineno">427</tt>  <tt class="py-line">        <tt class="py-comment"># red depth</tt> </tt>
+<a name="L428"></a><tt class="py-lineno">428</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt id="link-212" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-212', 'Tkinter', 'link-2');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">entry_frame</tt><tt class="py-op">,</tt><tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Requ [...]
+<a name="L429"></a><tt class="py-lineno">429</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">red_depth</tt> <tt class="py-op">=</tt> <tt id="link-214" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-214', 'Tkinter', 'link-2');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">StringVar</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L430"></a><tt class="py-lineno">430</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">red_depth</tt><tt class="py-op">.</tt><tt id="link-215" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-215', 'set', 'link-102');">set</a></tt><tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt id="link-216" class="py-name"><a title="VisionEgg [...]
+<a name="L431"></a><tt class="py-lineno">431</tt>  <tt class="py-line">        <tt id="link-218" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-218', 'Tkinter', 'link-2');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Entry</tt><tt class="py-op">(</tt><tt class="py-name">entry_frame</tt><tt class="py-op">,</tt><tt class="py-name">textvariable</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op"> [...]
+<a name="L432"></a><tt class="py-lineno">432</tt>  <tt class="py-line">        <tt class="py-name">ef_row</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L433"></a><tt class="py-lineno">433</tt>  <tt class="py-line"> </tt>
+<a name="L434"></a><tt class="py-lineno">434</tt>  <tt class="py-line">        <tt class="py-comment"># green depth</tt> </tt>
+<a name="L435"></a><tt class="py-lineno">435</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt id="link-220" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-220', 'Tkinter', 'link-2');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">entry_frame</tt><tt class="py-op">,</tt><tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Requ [...]
+<a name="L436"></a><tt class="py-lineno">436</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">green_depth</tt> <tt class="py-op">=</tt> <tt id="link-222" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-222', 'Tkinter', 'link-2');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">StringVar</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L437"></a><tt class="py-lineno">437</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">green_depth</tt><tt class="py-op">.</tt><tt id="link-223" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-223', 'set', 'link-102');">set</a></tt><tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt id="link-224" class="py-name"><a title="VisionE [...]
+<a name="L438"></a><tt class="py-lineno">438</tt>  <tt class="py-line">        <tt id="link-226" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-226', 'Tkinter', 'link-2');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Entry</tt><tt class="py-op">(</tt><tt class="py-name">entry_frame</tt><tt class="py-op">,</tt><tt class="py-name">textvariable</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op"> [...]
+<a name="L439"></a><tt class="py-lineno">439</tt>  <tt class="py-line">        <tt class="py-name">ef_row</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L440"></a><tt class="py-lineno">440</tt>  <tt class="py-line"> </tt>
+<a name="L441"></a><tt class="py-lineno">441</tt>  <tt class="py-line">        <tt class="py-comment"># blue depth</tt> </tt>
+<a name="L442"></a><tt class="py-lineno">442</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt id="link-228" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-228', 'Tkinter', 'link-2');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">entry_frame</tt><tt class="py-op">,</tt><tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Requ [...]
+<a name="L443"></a><tt class="py-lineno">443</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">blue_depth</tt> <tt class="py-op">=</tt> <tt id="link-230" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-230', 'Tkinter', 'link-2');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">StringVar</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L444"></a><tt class="py-lineno">444</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">blue_depth</tt><tt class="py-op">.</tt><tt id="link-231" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-231', 'set', 'link-102');">set</a></tt><tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt id="link-232" class="py-name"><a title="VisionEg [...]
+<a name="L445"></a><tt class="py-lineno">445</tt>  <tt class="py-line">        <tt id="link-234" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-234', 'Tkinter', 'link-2');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Entry</tt><tt class="py-op">(</tt><tt class="py-name">entry_frame</tt><tt class="py-op">,</tt><tt class="py-name">textvariable</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op"> [...]
+<a name="L446"></a><tt class="py-lineno">446</tt>  <tt class="py-line">        <tt class="py-name">ef_row</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L447"></a><tt class="py-lineno">447</tt>  <tt class="py-line"> </tt>
+<a name="L448"></a><tt class="py-lineno">448</tt>  <tt class="py-line">        <tt class="py-comment"># alpha depth</tt> </tt>
+<a name="L449"></a><tt class="py-lineno">449</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt id="link-236" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-236', 'Tkinter', 'link-2');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">entry_frame</tt><tt class="py-op">,</tt><tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Requ [...]
+<a name="L450"></a><tt class="py-lineno">450</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">alpha_depth</tt> <tt class="py-op">=</tt> <tt id="link-238" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-238', 'Tkinter', 'link-2');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">StringVar</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L451"></a><tt class="py-lineno">451</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">alpha_depth</tt><tt class="py-op">.</tt><tt id="link-239" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-239', 'set', 'link-102');">set</a></tt><tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt id="link-240" class="py-name"><a title="VisionE [...]
+<a name="L452"></a><tt class="py-lineno">452</tt>  <tt class="py-line">        <tt id="link-242" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-242', 'Tkinter', 'link-2');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Entry</tt><tt class="py-op">(</tt><tt class="py-name">entry_frame</tt><tt class="py-op">,</tt><tt class="py-name">textvariable</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op"> [...]
+<a name="L453"></a><tt class="py-lineno">453</tt>  <tt class="py-line">        <tt class="py-name">ef_row</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L454"></a><tt class="py-lineno">454</tt>  <tt class="py-line"> </tt>
+<a name="L455"></a><tt class="py-lineno">455</tt>  <tt class="py-line">        <tt class="py-comment">################## end entry_frame ###################</tt> </tt>
+<a name="L456"></a><tt class="py-lineno">456</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L457"></a><tt class="py-lineno">457</tt>  <tt class="py-line">        <tt class="py-comment">################## gamma_frame ###################</tt> </tt>
+<a name="L458"></a><tt class="py-lineno">458</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L459"></a><tt class="py-lineno">459</tt>  <tt class="py-line">        <tt class="py-comment"># gamma stuff</tt> </tt>
+<a name="L460"></a><tt class="py-lineno">460</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">row</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L461"></a><tt class="py-lineno">461</tt>  <tt class="py-line">        <tt class="py-name">gamma_frame</tt> <tt class="py-op">=</tt> <tt id="link-244" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-244', 'Tkinter', 'link-2');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Frame</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
+<a name="L462"></a><tt class="py-lineno">462</tt>  <tt class="py-line">        <tt class="py-name">gamma_frame</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-name">row</tt><tt class="py-op">,</tt><tt class="py-name">columnspan</tt><tt class="py-op">=</tt><tt class="py-number">2</tt><tt class="py-op">,</tt><tt class="py-name">sticky</tt><tt class="py-op">=</tt><tt class="py-string">"we"</tt [...]
+<a name="L463"></a><tt class="py-lineno">463</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">gamma_source</tt> <tt class="py-op">=</tt> <tt id="link-245" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-245', 'Tkinter', 'link-2');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">StringVar</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L464"></a><tt class="py-lineno">464</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">gamma_source</tt><tt class="py-op">.</tt><tt id="link-246" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-246', 'set', 'link-102');">set</a></tt><tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt id="link-247" class="py-name"><a title="Vision [...]
+<a name="L465"></a><tt class="py-lineno">465</tt>  <tt class="py-line">        <tt id="link-249" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-249', 'Tkinter', 'link-2');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">gamma_frame</tt><tt class="py-op">,</tt> </tt>
+<a name="L466"></a><tt class="py-lineno">466</tt>  <tt class="py-line">                      <tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Gamma:"</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">,</tt><tt class="py-name">column</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">)</tt> </tt>
+<a name="L467"></a><tt class="py-lineno">467</tt>  <tt class="py-line">        <tt id="link-250" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-250', 'Tkinter', 'link-2');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Radiobutton</tt><tt class="py-op">(</tt><tt class="py-name">gamma_frame</tt><tt class="py-op">,</tt> </tt>
+<a name="L468"></a><tt class="py-lineno">468</tt>  <tt class="py-line">                            <tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Native"</tt><tt class="py-op">,</tt> </tt>
+<a name="L469"></a><tt class="py-lineno">469</tt>  <tt class="py-line">                            <tt class="py-name">value</tt><tt class="py-op">=</tt><tt class="py-string">"none"</tt><tt class="py-op">,</tt> </tt>
+<a name="L470"></a><tt class="py-lineno">470</tt>  <tt class="py-line">                            <tt class="py-name">variable</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">gamma_source</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">,</tt><tt class="py-name">column</tt><tt clas [...]
+<a name="L471"></a><tt class="py-lineno">471</tt>  <tt class="py-line">        <tt id="link-251" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-251', 'Tkinter', 'link-2');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Radiobutton</tt><tt class="py-op">(</tt><tt class="py-name">gamma_frame</tt><tt class="py-op">,</tt> </tt>
+<a name="L472"></a><tt class="py-lineno">472</tt>  <tt class="py-line">                            <tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Quick"</tt><tt class="py-op">,</tt> </tt>
+<a name="L473"></a><tt class="py-lineno">473</tt>  <tt class="py-line">                            <tt class="py-name">value</tt><tt class="py-op">=</tt><tt class="py-string">"invert"</tt><tt class="py-op">,</tt> </tt>
+<a name="L474"></a><tt class="py-lineno">474</tt>  <tt class="py-line">                            <tt class="py-name">variable</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">gamma_source</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">,</tt><tt class="py-name">column</tt><tt clas [...]
+<a name="L475"></a><tt class="py-lineno">475</tt>  <tt class="py-line">        <tt id="link-252" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-252', 'Tkinter', 'link-2');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">gamma_frame</tt><tt class="py-op">,</tt> </tt>
+<a name="L476"></a><tt class="py-lineno">476</tt>  <tt class="py-line">                      <tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"R:"</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">,</tt><tt class="py-name">column</tt><tt class="py-op">=</tt><tt class="py-number">3</tt><tt class="py-op">)</tt> </tt>
+<a name="L477"></a><tt class="py-lineno">477</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">gamma_invert_red</tt> <tt class="py-op">=</tt> <tt id="link-253" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-253', 'Tkinter', 'link-2');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">DoubleVar</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L478"></a><tt class="py-lineno">478</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">gamma_invert_red</tt><tt class="py-op">.</tt><tt id="link-254" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-254', 'set', 'link-102');">set</a></tt><tt class="py-op">(</tt> <tt id="link-255" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return d [...]
+<a name="L479"></a><tt class="py-lineno">479</tt>  <tt class="py-line">        <tt id="link-257" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-257', 'Tkinter', 'link-2');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Entry</tt><tt class="py-op">(</tt><tt class="py-name">gamma_frame</tt><tt class="py-op">,</tt> </tt>
+<a name="L480"></a><tt class="py-lineno">480</tt>  <tt class="py-line">                      <tt class="py-name">textvariable</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">gamma_invert_red</tt><tt class="py-op">,</tt> </tt>
+<a name="L481"></a><tt class="py-lineno">481</tt>  <tt class="py-line">                      <tt class="py-name">width</tt><tt class="py-op">=</tt><tt class="py-number">3</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">,</tt><tt class="py-name">column</tt><tt class="py-op">=</tt><tt class="py-number">4</tt><tt class="py-op">)</tt> </tt>
+<a name="L482"></a><tt class="py-lineno">482</tt>  <tt class="py-line">        <tt id="link-258" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-258', 'Tkinter', 'link-2');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">gamma_frame</tt><tt class="py-op">,</tt> </tt>
+<a name="L483"></a><tt class="py-lineno">483</tt>  <tt class="py-line">                      <tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"G:"</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">,</tt><tt class="py-name">column</tt><tt class="py-op">=</tt><tt class="py-number">5</tt><tt class="py-op">)</tt> </tt>
+<a name="L484"></a><tt class="py-lineno">484</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">gamma_invert_green</tt> <tt class="py-op">=</tt> <tt id="link-259" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-259', 'Tkinter', 'link-2');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">DoubleVar</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L485"></a><tt class="py-lineno">485</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">gamma_invert_green</tt><tt class="py-op">.</tt><tt id="link-260" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-260', 'set', 'link-102');">set</a></tt><tt class="py-op">(</tt> <tt id="link-261" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return [...]
+<a name="L486"></a><tt class="py-lineno">486</tt>  <tt class="py-line">        <tt id="link-263" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-263', 'Tkinter', 'link-2');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Entry</tt><tt class="py-op">(</tt><tt class="py-name">gamma_frame</tt><tt class="py-op">,</tt> </tt>
+<a name="L487"></a><tt class="py-lineno">487</tt>  <tt class="py-line">                      <tt class="py-name">textvariable</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">gamma_invert_green</tt><tt class="py-op">,</tt> </tt>
+<a name="L488"></a><tt class="py-lineno">488</tt>  <tt class="py-line">                      <tt class="py-name">width</tt><tt class="py-op">=</tt><tt class="py-number">3</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">,</tt><tt class="py-name">column</tt><tt class="py-op">=</tt><tt class="py-number">6</tt><tt class="py-op">)</tt> </tt>
+<a name="L489"></a><tt class="py-lineno">489</tt>  <tt class="py-line">        <tt id="link-264" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-264', 'Tkinter', 'link-2');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">gamma_frame</tt><tt class="py-op">,</tt> </tt>
+<a name="L490"></a><tt class="py-lineno">490</tt>  <tt class="py-line">                      <tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"B:"</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">,</tt><tt class="py-name">column</tt><tt class="py-op">=</tt><tt class="py-number">7</tt><tt class="py-op">)</tt> </tt>
+<a name="L491"></a><tt class="py-lineno">491</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">gamma_invert_blue</tt> <tt class="py-op">=</tt> <tt id="link-265" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-265', 'Tkinter', 'link-2');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">DoubleVar</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L492"></a><tt class="py-lineno">492</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">gamma_invert_blue</tt><tt class="py-op">.</tt><tt id="link-266" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-266', 'set', 'link-102');">set</a></tt><tt class="py-op">(</tt> <tt id="link-267" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return  [...]
+<a name="L493"></a><tt class="py-lineno">493</tt>  <tt class="py-line">        <tt id="link-269" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-269', 'Tkinter', 'link-2');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Entry</tt><tt class="py-op">(</tt><tt class="py-name">gamma_frame</tt><tt class="py-op">,</tt> </tt>
+<a name="L494"></a><tt class="py-lineno">494</tt>  <tt class="py-line">                      <tt class="py-name">textvariable</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">gamma_invert_blue</tt><tt class="py-op">,</tt> </tt>
+<a name="L495"></a><tt class="py-lineno">495</tt>  <tt class="py-line">                      <tt class="py-name">width</tt><tt class="py-op">=</tt><tt class="py-number">3</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">,</tt><tt class="py-name">column</tt><tt class="py-op">=</tt><tt class="py-number">8</tt><tt class="py-op">)</tt> </tt>
+<a name="L496"></a><tt class="py-lineno">496</tt>  <tt class="py-line">        <tt id="link-270" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-270', 'Tkinter', 'link-2');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Radiobutton</tt><tt class="py-op">(</tt><tt class="py-name">gamma_frame</tt><tt class="py-op">,</tt> </tt>
+<a name="L497"></a><tt class="py-lineno">497</tt>  <tt class="py-line">                            <tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Custom:"</tt><tt class="py-op">,</tt> </tt>
+<a name="L498"></a><tt class="py-lineno">498</tt>  <tt class="py-line">                            <tt class="py-name">value</tt><tt class="py-op">=</tt><tt class="py-string">"file"</tt><tt class="py-op">,</tt> </tt>
+<a name="L499"></a><tt class="py-lineno">499</tt>  <tt class="py-line">                            <tt class="py-name">variable</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">gamma_source</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">,</tt><tt class="py-name">column</tt><tt clas [...]
+<a name="L500"></a><tt class="py-lineno">500</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">gamma_file</tt> <tt class="py-op">=</tt> <tt id="link-271" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-271', 'Tkinter', 'link-2');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">StringVar</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L501"></a><tt class="py-lineno">501</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">path</tt><tt class="py-op">.</tt><tt class="py-name">isfile</tt><tt class="py-op">(</tt><tt id="link-272" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-272', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-273" class="py-name"><a tit [...]
+<a name="L502"></a><tt class="py-lineno">502</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">gamma_file</tt><tt class="py-op">.</tt><tt id="link-274" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-274', 'set', 'link-102');">set</a></tt><tt class="py-op">(</tt> <tt id="link-275" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doc [...]
+<a name="L503"></a><tt class="py-lineno">503</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L504"></a><tt class="py-lineno">504</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">gamma_file</tt><tt class="py-op">.</tt><tt id="link-277" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-277', 'set', 'link-102');">set</a></tt><tt class="py-op">(</tt><tt class="py-string">""</tt><tt class="py-op">)</tt> </tt>
+<a name="L505"></a><tt class="py-lineno">505</tt>  <tt class="py-line">        <tt id="link-278" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-278', 'Tkinter', 'link-2');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Entry</tt><tt class="py-op">(</tt><tt class="py-name">gamma_frame</tt><tt class="py-op">,</tt> </tt>
+<a name="L506"></a><tt class="py-lineno">506</tt>  <tt class="py-line">                      <tt class="py-name">textvariable</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">gamma_file</tt><tt class="py-op">,</tt> </tt>
+<a name="L507"></a><tt class="py-lineno">507</tt>  <tt class="py-line">                      <tt class="py-name">width</tt><tt class="py-op">=</tt><tt class="py-number">15</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">,</tt><tt class="py-name">column</tt><tt class="py-op">=</tt><tt class="py-number">10</tt><tt class="py-op">)</tt> </tt>
+<a name="L508"></a><tt class="py-lineno">508</tt>  <tt class="py-line">        <tt id="link-279" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-279', 'Tkinter', 'link-2');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Button</tt><tt class="py-op">(</tt><tt class="py-name">gamma_frame</tt><tt class="py-op">,</tt> </tt>
+<a name="L509"></a><tt class="py-lineno">509</tt>  <tt class="py-line">                       <tt class="py-name">command</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-280" class="py-name" targets="Method VisionEgg.GUI.GraphicsConfigurationWindow.set_gamma_file()=VisionEgg.GUI.GraphicsConfigurationWindow-class.html#set_gamma_file"><a title="VisionEgg.GUI.GraphicsConfigurationWindow.set_gamma_file" class="py-name" href="#" onclick="return do [...]
+<a name="L510"></a><tt class="py-lineno">510</tt>  <tt class="py-line">                       <tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Set..."</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">,</tt><tt class="py-name">column</tt><tt class="py-op">=</tt><tt class="py-number">11</tt><tt class="py-op">)</ [...]
+<a name="L511"></a><tt class="py-lineno">511</tt>  <tt class="py-line"> </tt>
+<a name="L512"></a><tt class="py-lineno">512</tt>  <tt class="py-line">        <tt class="py-comment">################## end gamma_frame ###################</tt> </tt>
+<a name="L513"></a><tt class="py-lineno">513</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L514"></a><tt class="py-lineno">514</tt>  <tt class="py-line">        <tt class="py-name">row</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L515"></a><tt class="py-lineno">515</tt>  <tt class="py-line">        <tt class="py-name">bf</tt> <tt class="py-op">=</tt> <tt id="link-281" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-281', 'Tkinter', 'link-2');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Frame</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
+<a name="L516"></a><tt class="py-lineno">516</tt>  <tt class="py-line">        <tt class="py-name">bf</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-name">row</tt><tt class="py-op">,</tt><tt class="py-name">columnspan</tt><tt class="py-op">=</tt><tt class="py-number">2</tt><tt class="py-op">,</tt><tt class="py-name">sticky</tt><tt class="py-op">=</tt><tt id="link-282" class="py-name"><a ti [...]
+<a name="L517"></a><tt class="py-lineno">517</tt>  <tt class="py-line"> </tt>
+<a name="L518"></a><tt class="py-lineno">518</tt>  <tt class="py-line">        <tt class="py-comment"># Save settings to config file</tt> </tt>
+<a name="L519"></a><tt class="py-lineno">519</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-284" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-284', 'Tkinter', 'link-2');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Button</tt><tt class="py-op">(</tt><tt class="py-name">bf</tt><tt class="py-op">,</tt><tt class="py-name">text</tt><tt cla [...]
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.save" class="py-name" href="#" onclick="return doclink('link-285', 'save', 'link-285');">save</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L520"></a><tt class="py-lineno">520</tt>  <tt class="py-line">        <tt class="py-name">b</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">,</tt><tt class="py-name">column</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">,</tt><tt class="py-name">padx</tt><tt class="py-op">=</tt><tt class="py-number">20</tt><tt class="py-op" [...]
+<a name="L521"></a><tt class="py-lineno">521</tt>  <tt class="py-line">        <tt class="py-name">b</tt><tt class="py-op">.</tt><tt class="py-name">bind</tt><tt class="py-op">(</tt><tt class="py-string">'<Return>'</tt><tt class="py-op">,</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-286" class="py-name" targets="Method VisionEgg.GUI.GraphicsConfigurationWindow.start()=VisionEgg.GUI.GraphicsConfigurationWindow-class.html#start"><a title="VisionEgg.GUI.Graphi [...]
+<a name="L522"></a><tt class="py-lineno">522</tt>  <tt class="py-line"> </tt>
+<a name="L523"></a><tt class="py-lineno">523</tt>  <tt class="py-line">        <tt class="py-comment"># Start button</tt> </tt>
+<a name="L524"></a><tt class="py-lineno">524</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">b2</tt> <tt class="py-op">=</tt> <tt id="link-287" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-287', 'Tkinter', 'link-2');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Button</tt><tt class="py-op">(</tt><tt class="py-name">bf</tt><tt class="py-op">,</tt><tt class="py-name">text</tt><tt cl [...]
+<a name="L525"></a><tt class="py-lineno">525</tt>  <tt class="py-line">        <tt class="py-name">b2</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">,</tt><tt class="py-name">column</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py-op">,</tt><tt class="py-name">padx</tt><tt class="py-op">=</tt><tt class="py-number">20</tt><tt class="py-op [...]
+<a name="L526"></a><tt class="py-lineno">526</tt>  <tt class="py-line">        <tt class="py-name">b2</tt><tt class="py-op">.</tt><tt class="py-name">focus_force</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L527"></a><tt class="py-lineno">527</tt>  <tt class="py-line">        <tt class="py-name">b2</tt><tt class="py-op">.</tt><tt class="py-name">bind</tt><tt class="py-op">(</tt><tt class="py-string">'<Return>'</tt><tt class="py-op">,</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-289" class="py-name"><a title="VisionEgg.GUI.GraphicsConfigurationWindow.start" class="py-name" href="#" onclick="return doclink('link-289', 'start', 'link-286');">start</a></t [...]
+<a name="L528"></a><tt class="py-lineno">528</tt>  <tt class="py-line"> </tt>
+<a name="L529"></a><tt class="py-lineno">529</tt>  <tt class="py-line">        <tt class="py-comment"># Raise our application on darwin</tt> </tt>
+<a name="L530"></a><tt class="py-lineno">530</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">platform</tt> <tt class="py-op">==</tt> <tt class="py-string">'darwin'</tt><tt class="py-op">:</tt> </tt>
+<a name="L531"></a><tt class="py-lineno">531</tt>  <tt class="py-line">            <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L532"></a><tt class="py-lineno">532</tt>  <tt class="py-line">                <tt class="py-comment"># from Jack Jansen email 20 April 2003</tt> </tt>
+<a name="L533"></a><tt class="py-lineno">533</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-comment"># WMAvailable() returns true if you can use the window</tt> </tt>
+<a name="L534"></a><tt class="py-lineno">534</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-comment"># manager, and as a side #effect it raises the</tt> </tt>
+<a name="L535"></a><tt class="py-lineno">535</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-comment"># application to the foreground.</tt> </tt>
+<a name="L536"></a><tt class="py-lineno">536</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-keyword">import</tt> <tt class="py-name">MacOS</tt> </tt>
+<a name="L537"></a><tt class="py-lineno">537</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">MacOS</tt><tt class="py-op">.</tt><tt class="py-name">WMAvailable</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L538"></a><tt class="py-lineno">538</tt>  <tt class="py-line">                    <tt class="py-keyword">raise</tt> <tt class="py-string">"Cannot reach the window manager"</tt> </tt>
+<a name="L539"></a><tt class="py-lineno">539</tt>  <tt class="py-line">            <tt class="py-keyword">except</tt><tt class="py-op">:</tt> </tt>
+<a name="L540"></a><tt class="py-lineno">540</tt>  <tt class="py-line">                <tt class="py-keyword">pass</tt> </tt>
+</div><a name="L541"></a><tt class="py-lineno">541</tt>  <tt class="py-line"> </tt>
+<a name="GraphicsConfigurationWindow.set_gamma_file"></a><div id="GraphicsConfigurationWindow.set_gamma_file-def"><a name="L542"></a><tt class="py-lineno">542</tt> <a class="py-toggle" href="#" id="GraphicsConfigurationWindow.set_gamma_file-toggle" onclick="return toggle('GraphicsConfigurationWindow.set_gamma_file');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.GUI.GraphicsConfigurationWindow-class.html#set_gamma_file">set_gamma_fil [...]
+</div><div id="GraphicsConfigurationWindow.set_gamma_file-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="GraphicsConfigurationWindow.set_gamma_file-expanded"><a name="L543"></a><tt class="py-lineno">543</tt>  <tt class="py-line">        <tt class="py-name">filename</tt> <tt class="py-op">=</tt> <tt id="link-290" class="py-name"><a title="VisionEgg.GUI.tkFileDialog" class="py-name" href="#" onclick="return doclink('link-290', 'tkFileDialog', 'link-6');">tkFile [...]
+<a name="L544"></a><tt class="py-lineno">544</tt>  <tt class="py-line">            <tt class="py-name">parent</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> </tt>
+<a name="L545"></a><tt class="py-lineno">545</tt>  <tt class="py-line">            <tt class="py-name">defaultextension</tt><tt class="py-op">=</tt><tt class="py-string">".ve_gamma"</tt><tt class="py-op">,</tt> </tt>
+<a name="L546"></a><tt class="py-lineno">546</tt>  <tt class="py-line">            <tt class="py-name">filetypes</tt><tt class="py-op">=</tt><tt class="py-op">[</tt><tt class="py-op">(</tt><tt class="py-string">'Configuration file'</tt><tt class="py-op">,</tt><tt class="py-string">'*.ve_gamma'</tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L547"></a><tt class="py-lineno">547</tt>  <tt class="py-line">            <tt class="py-name">initialdir</tt><tt class="py-op">=</tt><tt id="link-291" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-291', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-292" class="py-name"><a title="VisionEgg.config" class="py-name" href="#" onclick="return doclink('link-292', 'config', 'link-9');">config</a></tt><tt cla [...]
+<a name="L548"></a><tt class="py-lineno">548</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">filename</tt><tt class="py-op">:</tt> </tt>
+<a name="L549"></a><tt class="py-lineno">549</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> </tt>
+<a name="L550"></a><tt class="py-lineno">550</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">gamma_file</tt><tt class="py-op">.</tt><tt id="link-293" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-293', 'set', 'link-102');">set</a></tt><tt class="py-op">(</tt><tt class="py-name">filename</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L551"></a><tt class="py-lineno">551</tt>  <tt class="py-line"> </tt>
+<a name="GraphicsConfigurationWindow.format_string"></a><div id="GraphicsConfigurationWindow.format_string-def"><a name="L552"></a><tt class="py-lineno">552</tt> <a class="py-toggle" href="#" id="GraphicsConfigurationWindow.format_string-toggle" onclick="return toggle('GraphicsConfigurationWindow.format_string');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.GUI.GraphicsConfigurationWindow-class.html#format_string">format_string</a>< [...]
+</div><div id="GraphicsConfigurationWindow.format_string-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="GraphicsConfigurationWindow.format_string-expanded"><a name="L553"></a><tt class="py-lineno">553</tt>  <tt class="py-line">        <tt class="py-comment"># This probably a slow way to do things, but it works!</tt> </tt>
+<a name="L554"></a><tt class="py-lineno">554</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">min_line_length</tt> <tt class="py-op">=</tt> <tt class="py-number">60</tt> </tt>
+<a name="L555"></a><tt class="py-lineno">555</tt>  <tt class="py-line">        <tt class="py-name">in_list</tt> <tt class="py-op">=</tt> <tt class="py-name">in_str</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L556"></a><tt class="py-lineno">556</tt>  <tt class="py-line">        <tt class="py-name">out_str</tt> <tt class="py-op">=</tt> <tt class="py-string">""</tt> </tt>
+<a name="L557"></a><tt class="py-lineno">557</tt>  <tt class="py-line">        <tt class="py-name">cur_line</tt> <tt class="py-op">=</tt> <tt class="py-string">""</tt> </tt>
+<a name="L558"></a><tt class="py-lineno">558</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">word</tt> <tt class="py-keyword">in</tt> <tt class="py-name">in_list</tt><tt class="py-op">:</tt> </tt>
+<a name="L559"></a><tt class="py-lineno">559</tt>  <tt class="py-line">            <tt class="py-name">cur_line</tt> <tt class="py-op">=</tt> <tt class="py-name">cur_line</tt> <tt class="py-op">+</tt> <tt class="py-name">word</tt> <tt class="py-op">+</tt> <tt class="py-string">" "</tt> </tt>
+<a name="L560"></a><tt class="py-lineno">560</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">cur_line</tt><tt class="py-op">)</tt> <tt class="py-op">></tt> <tt class="py-name">min_line_length</tt><tt class="py-op">:</tt> </tt>
+<a name="L561"></a><tt class="py-lineno">561</tt>  <tt class="py-line">                <tt class="py-name">out_str</tt> <tt class="py-op">=</tt> <tt class="py-name">out_str</tt> <tt class="py-op">+</tt> <tt class="py-name">cur_line</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-op">+</tt> <tt class="py-string">"\n"</tt> </tt>
+<a name="L562"></a><tt class="py-lineno">562</tt>  <tt class="py-line">                <tt class="py-name">cur_line</tt> <tt class="py-op">=</tt> <tt class="py-string">"    "</tt> </tt>
+<a name="L563"></a><tt class="py-lineno">563</tt>  <tt class="py-line">        <tt class="py-name">out_str</tt> <tt class="py-op">=</tt> <tt class="py-name">out_str</tt> <tt class="py-op">+</tt> <tt class="py-name">cur_line</tt> <tt class="py-op">+</tt> <tt class="py-string">"\n"</tt> </tt>
+<a name="L564"></a><tt class="py-lineno">564</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">out_str</tt> </tt>
+</div><a name="L565"></a><tt class="py-lineno">565</tt>  <tt class="py-line"> </tt>
+<a name="GraphicsConfigurationWindow.darwin_maxpriority_tune"></a><div id="GraphicsConfigurationWindow.darwin_maxpriority_tune-def"><a name="L566"></a><tt class="py-lineno">566</tt> <a class="py-toggle" href="#" id="GraphicsConfigurationWindow.darwin_maxpriority_tune-toggle" onclick="return toggle('GraphicsConfigurationWindow.darwin_maxpriority_tune');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.GUI.GraphicsConfigurationWindow-clas [...]
+</div><div id="GraphicsConfigurationWindow.darwin_maxpriority_tune-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="GraphicsConfigurationWindow.darwin_maxpriority_tune-expanded"><a name="L567"></a><tt class="py-lineno">567</tt>  <tt class="py-line">        <tt class="py-keyword">class</tt> <tt class="py-def-name">DarwinFineTuneDialog</tt><tt class="py-op">(</tt><tt class="py-base-class">ToplevelDialog</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L568"></a><tt class="py-lineno">568</tt>  <tt class="py-line">            <tt class="py-keyword">def</tt> <tt class="py-def-name">__init__</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt><tt class="py-param">parent</tt><tt class="py-op">,</tt><tt class="py-op">**</tt><tt class="py-param">cnf</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L569"></a><tt class="py-lineno">569</tt>  <tt class="py-line">                <tt class="py-comment"># Bugs in Tk 8.4a4 for Darwin seem to prevent use of "grid" in this dialog</tt> </tt>
+<a name="L570"></a><tt class="py-lineno">570</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt id="link-294" class="py-name" targets="Class VisionEgg.GUI.ToplevelDialog=VisionEgg.GUI.ToplevelDialog-class.html"><a title="VisionEgg.GUI.ToplevelDialog" class="py-name" href="#" onclick="return doclink('link-294', 'ToplevelDialog', 'link-294');">ToplevelDialog</a></tt><tt class="py-op">.</tt><tt id="link-295" class="py-name"><a title="VisionEgg.ClassWithParameters.__init__
+VisionEgg.Configuration.Config.__init__
+VisionEgg.Core.FixationSpot.__init__
+VisionEgg.Core.FrameTimer.__init__
+VisionEgg.Core.ModelView.__init__
+VisionEgg.Core.OrthographicProjection.__init__
+VisionEgg.Core.OrthographicProjectionNoZClip.__init__
+VisionEgg.Core.PerspectiveProjection.__init__
+VisionEgg.Core.Projection.__init__
+VisionEgg.Core.ProjectionBaseClass.__init__
+VisionEgg.Core.Screen.__init__
+VisionEgg.Core.SimplePerspectiveProjection.__init__
+VisionEgg.Core.Stimulus.__init__
+VisionEgg.Core.Viewport.__init__
+VisionEgg.Daq.Channel.__init__
+VisionEgg.Daq.DaqMode.__init__
+VisionEgg.Daq.Device.__init__
+VisionEgg.Daq.Functionality.__init__
+VisionEgg.Daq.SignalType.__init__
+VisionEgg.DaqKeyboard.KeyboardTriggerInController.__init__
+VisionEgg.DaqLPT.LPTChannel.__init__
+VisionEgg.DaqLPT.LPTDevice.__init__
+VisionEgg.DaqLPT.LPTTriggerInController.__init__
+VisionEgg.DaqLPT.LPTTriggerOutController.__init__
+VisionEgg.Deprecated.Message.__init__
+VisionEgg.Dots.DotArea2D.__init__
+VisionEgg.FlowControl.ConstantController.__init__
+VisionEgg.FlowControl.Controller.__init__
+VisionEgg.FlowControl.EncapsulatedController.__init__
+VisionEgg.FlowControl.EvalStringController.__init__
+VisionEgg.FlowControl.ExecStringController.__init__
+VisionEgg.FlowControl.FunctionController.__init__
+VisionEgg.FlowControl.Presentation.__init__
+VisionEgg.GLTrace.Wrapper.__init__
+VisionEgg.GUI.AppWindow.__init__
+VisionEgg.GUI.GetKeypressDialog.__init__
+VisionEgg.GUI.GraphicsConfigurationWindow.__init__
+VisionEgg.GUI.InfoFrame.__init__
+VisionEgg.GUI.ProgressBar.__init__
+VisionEgg.GUI.ToplevelDialog.__init__
+VisionEgg.Gratings.SinGrating2D.__init__
+VisionEgg.Gratings.SinGrating3D.__init__
+VisionEgg.MoreStimuli.Arrow.__init__
+VisionEgg.MoreStimuli.FilledCircle.__init__
+VisionEgg.MoreStimuli.Rectangle3D.__init__
+VisionEgg.MoreStimuli.Target2D.__init__
+VisionEgg.ParameterTypes.AnyOf.__init__
+VisionEgg.ParameterTypes.Instance.__init__
+VisionEgg.ParameterTypes.Sequence.__init__
+VisionEgg.ParameterTypes.SubClass.__init__
+VisionEgg.PyroApps.AST_ext.AST_Visitor.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalMetaParameters.__init__
+VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.__init__
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.__init__
+VisionEgg.PyroApps.DropinGUI.DropinMetaParameters.__init__
+VisionEgg.PyroApps.DropinServer.DropinMetaController.__init__
+VisionEgg.PyroApps.EPhysGUI.AppWindow.__init__
+VisionEgg.PyroApps.EPhysGUI.BarButton.__init__
+VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase.__init__
+VisionEgg.PyroApps.EPhysGUI.GammaFrame.__init__
+VisionEgg.PyroApps.EPhysGUI.ImageSequenceLauncher.__init__
+VisionEgg.PyroApps.EPhysGUI.Loop.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopContainedObject.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopParamDialog.__init__
+VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.__init__
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.__init__
+VisionEgg.PyroApps.EPhysServer.EPhysServer.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingMetaParameters.__init__
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.GridGUI.GridControlFrame.__init__
+VisionEgg.PyroApps.GridGUI.GridMetaParameters.__init__
+VisionEgg.PyroApps.GridServer.GridMetaController.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetMetaParameters.__init__
+VisionEgg.PyroApps.MouseTargetServer.MousePositionController.__init__
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetOrientationController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetPositionController.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.CallbackEntry.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionParameters.__init__
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingMetaParameters.__init__
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumMetaParameters.__init__
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.__init__
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.__init__
+VisionEgg.PyroApps.TargetGUI.TargetMetaParameters.__init__
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.__init__
+VisionEgg.PyroClient.PyroClient.__init__
+VisionEgg.PyroHelpers.PyroConstantController.__init__
+VisionEgg.PyroHelpers.PyroEncapsulatedController.__init__
+VisionEgg.PyroHelpers.PyroEvalStringController.__init__
+VisionEgg.PyroHelpers.PyroExecStringController.__init__
+VisionEgg.PyroHelpers.PyroListenController.__init__
+VisionEgg.PyroHelpers.PyroLocalDictController.__init__
+VisionEgg.PyroHelpers.PyroServer.__init__
+VisionEgg.QuickTime.MovieTexture.__init__
+VisionEgg.ResponseControl.KeyboardResponseController.__init__
+VisionEgg.ResponseControl.ResponseController.__init__
+VisionEgg.SphereMap.AzElGrid.__init__
+VisionEgg.SphereMap.SphereGrating.__init__
+VisionEgg.SphereMap.SphereMap.__init__
+VisionEgg.SphereMap.SphereWindow.__init__
+VisionEgg.TCPController.SocketListenController.__init__
+VisionEgg.TCPController.TCPController.__init__
+VisionEgg.TCPController.TCPServer.__init__
+VisionEgg.Text.BitmapText.__init__
+VisionEgg.Text.GlutTextBase.__init__
+VisionEgg.Text.StrokeText.__init__
+VisionEgg.Text.Text.__init__
+VisionEgg.Textures.FixationCross.__init__
+VisionEgg.Textures.Mask2D.__init__
+VisionEgg.Textures.SpinningDrum.__init__
+VisionEgg.Textures.Texture.__init__
+VisionEgg.Textures.TextureFromFile.__init__
+VisionEgg.Textures.TextureObject.__init__
+VisionEgg.Textures.TextureStimulusBaseClass.__init__
+VisionEgg.ThreeDeeMath.TransformMatrix.__init__
+VisionEgg.WrappedText.WrappedText.__init__
+VisionEgg.qtmovie.Movie.__init__
+VisionEgg.qtmovie.Rect.__init__" class="py-name" href="#" onclick="return doclink('link-295', '__init__', 'link-11');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt><tt class="py-op">**</tt><tt class="py-name">cnf</tt><tt class="py-op">)</tt> </tt>
+<a name="L571"></a><tt class="py-lineno">571</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-296" class="py-name"><a title="VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.title
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.title
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.title
+VisionEgg.PyroApps.GridGUI.GridControlFrame.title
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.title
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.title
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.title
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.title" class="py-name" href="#" onclick="return doclink('link-296', 'title', 'link-12');">title</a></tt><tt class="py-op">(</tt><tt class="py-string">"Fine tune maximum priority"</tt><tt class="py-op">)</tt> </tt>
+<a name="L572"></a><tt class="py-lineno">572</tt>  <tt class="py-line">                <tt class="py-name">f</tt> <tt class="py-op">=</tt> <tt id="link-297" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-297', 'Tkinter', 'link-2');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Frame</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
+<a name="L573"></a><tt class="py-lineno">573</tt>  <tt class="py-line">                <tt class="py-name">f</tt><tt class="py-op">.</tt><tt class="py-name">pack</tt><tt class="py-op">(</tt><tt class="py-name">expand</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py-op">,</tt><tt class="py-name">fill</tt><tt class="py-op">=</tt><tt id="link-298" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-298', 'Tkinter', 'li [...]
+<a name="L574"></a><tt class="py-lineno">574</tt>  <tt class="py-line">                <tt class="py-name">row</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L575"></a><tt class="py-lineno">575</tt>  <tt class="py-line">                <tt id="link-299" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-299', 'Tkinter', 'link-2');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">f</tt><tt class="py-op">,</tt> </tt>
+<a name="L576"></a><tt class="py-lineno">576</tt>  <tt class="py-line">                              <tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-name">parent</tt><tt class="py-op">.</tt><tt id="link-300" class="py-name"><a title="VisionEgg.Deprecated.Message.format_string
+VisionEgg.GUI.GraphicsConfigurationWindow.format_string" class="py-name" href="#" onclick="return doclink('link-300', 'format_string', 'link-54');">format_string</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L577"></a><tt class="py-lineno">577</tt>  <tt class="py-line"> </tt>
+<a name="L578"></a><tt class="py-lineno">578</tt>  <tt class="py-line">                    <tt class="py-string">"""This information is used by the Vision Egg when</tt> </tt>
+<a name="L579"></a><tt class="py-lineno">579</tt>  <tt class="py-line"><tt class="py-string">                    in "maximum priority" mode.  These values fine</tt> </tt>
+<a name="L580"></a><tt class="py-lineno">580</tt>  <tt class="py-line"><tt class="py-string">                    tune this behavior on the Mac OS X ("darwin")</tt> </tt>
+<a name="L581"></a><tt class="py-lineno">581</tt>  <tt class="py-line"><tt class="py-string">                    platform. For conventional priority, the valid</tt> </tt>
+<a name="L582"></a><tt class="py-lineno">582</tt>  <tt class="py-line"><tt class="py-string">                    values range from -20 (highest priority) to 20</tt> </tt>
+<a name="L583"></a><tt class="py-lineno">583</tt>  <tt class="py-line"><tt class="py-string">                    (worst priority).  In the realtime settings, the</tt> </tt>
+<a name="L584"></a><tt class="py-lineno">584</tt>  <tt class="py-line"><tt class="py-string">                    numerical values represent a fraction of the total</tt> </tt>
+<a name="L585"></a><tt class="py-lineno">585</tt>  <tt class="py-line"><tt class="py-string">                    cycles available on the computer. For more</tt> </tt>
+<a name="L586"></a><tt class="py-lineno">586</tt>  <tt class="py-line"><tt class="py-string">                    information, please refer to</tt> </tt>
+<a name="L587"></a><tt class="py-lineno">587</tt>  <tt class="py-line"><tt class="py-string">                    http://developer.apple.com/ techpubs/ macosx/</tt> </tt>
+<a name="L588"></a><tt class="py-lineno">588</tt>  <tt class="py-line"><tt class="py-string">                    Darwin/ General/ KernelProgramming/ scheduler/</tt> </tt>
+<a name="L589"></a><tt class="py-lineno">589</tt>  <tt class="py-line"><tt class="py-string">                    Using_Mach__pplications.html Hint: Try the</tt> </tt>
+<a name="L590"></a><tt class="py-lineno">590</tt>  <tt class="py-line"><tt class="py-string">                    realtime task method with the framerate as the</tt> </tt>
+<a name="L591"></a><tt class="py-lineno">591</tt>  <tt class="py-line"><tt class="py-string">                    denominator.  """</tt> </tt>
+<a name="L592"></a><tt class="py-lineno">592</tt>  <tt class="py-line"> </tt>
+<a name="L593"></a><tt class="py-lineno">593</tt>  <tt class="py-line">                    <tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-name">row</tt><tt class="py-op">,</tt><tt class="py-name">columnspan</tt><tt class="py-op">=</tt><tt class="py-number">4</tt><tt class="py-op">,</tt><tt class="py-name">column</tt><tt class="py-op">=</tt><tt cl [...]
+<a name="L594"></a><tt class="py-lineno">594</tt>  <tt class="py-line">                <tt class="py-name">row</tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L595"></a><tt class="py-lineno">595</tt>  <tt class="py-line"><tt class="py-comment">#                Tkinter.Checkbutton(f,text="Use conventional priority",variable=parent.darwin_conventional).grid(row=row,column=0,columnspan=4)</tt> </tt>
+<a name="L596"></a><tt class="py-lineno">596</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-name">row</tt> <tt class="py-op">=</tt> <tt class="py-number">2</tt> </tt>
+<a name="L597"></a><tt class="py-lineno">597</tt>  <tt class="py-line"><tt class="py-comment">#                Tkinter.Label(f,text="Conventional priority settings").grid(row=row,column=0,columnspan=2)</tt> </tt>
+<a name="L598"></a><tt class="py-lineno">598</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt id="link-301" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-301', 'Tkinter', 'link-2');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Radiobutton</tt><tt class="py-op">(</tt><tt class="py-name">f</tt><tt class="py-op">,</tt> </tt>
+<a name="L599"></a><tt class="py-lineno">599</tt>  <tt class="py-line">                              <tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Conventional priority method"</tt><tt class="py-op">,</tt> </tt>
+<a name="L600"></a><tt class="py-lineno">600</tt>  <tt class="py-line">                              <tt class="py-name">variable</tt><tt class="py-op">=</tt><tt class="py-name">parent</tt><tt class="py-op">.</tt><tt class="py-name">darwin_conventional</tt><tt class="py-op">,</tt> </tt>
+<a name="L601"></a><tt class="py-lineno">601</tt>  <tt class="py-line">                              <tt class="py-name">value</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-name">row</tt><tt class="py-op">,</tt><tt class="py-name">column</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">,</ [...]
+<a name="L602"></a><tt class="py-lineno">602</tt>  <tt class="py-line">                <tt class="py-name">row</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L603"></a><tt class="py-lineno">603</tt>  <tt class="py-line">                <tt id="link-302" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-302', 'Tkinter', 'link-2');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">f</tt><tt class="py-op">,</tt><tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Priority"</tt><tt class="py-op">)< [...]
+<a name="L604"></a><tt class="py-lineno">604</tt>  <tt class="py-line">                <tt id="link-304" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-304', 'Tkinter', 'link-2');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Entry</tt><tt class="py-op">(</tt><tt class="py-name">f</tt><tt class="py-op">,</tt><tt class="py-name">textvariable</tt><tt class="py-op">=</tt><tt class="py-name">parent</tt><tt class="py-op"> [...]
+<a name="L605"></a><tt class="py-lineno">605</tt>  <tt class="py-line">                <tt class="py-name">row</tt> <tt class="py-op">=</tt> <tt class="py-number">2</tt> </tt>
+<a name="L606"></a><tt class="py-lineno">606</tt>  <tt class="py-line">                <tt id="link-306" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-306', 'Tkinter', 'link-2');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Radiobutton</tt><tt class="py-op">(</tt><tt class="py-name">f</tt><tt class="py-op">,</tt> </tt>
+<a name="L607"></a><tt class="py-lineno">607</tt>  <tt class="py-line">                              <tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Realtime task method"</tt><tt class="py-op">,</tt> </tt>
+<a name="L608"></a><tt class="py-lineno">608</tt>  <tt class="py-line">                              <tt class="py-name">variable</tt><tt class="py-op">=</tt><tt class="py-name">parent</tt><tt class="py-op">.</tt><tt class="py-name">darwin_conventional</tt><tt class="py-op">,</tt> </tt>
+<a name="L609"></a><tt class="py-lineno">609</tt>  <tt class="py-line">                              <tt class="py-name">value</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-name">row</tt><tt class="py-op">,</tt><tt class="py-name">column</tt><tt class="py-op">=</tt><tt class="py-number">2</tt><tt class="py-op">,</ [...]
+<a name="L610"></a><tt class="py-lineno">610</tt>  <tt class="py-line"><tt class="py-comment">#                Tkinter.Label(f,text="Realtime settings").grid(row=row,column=2,columnspan=2)</tt> </tt>
+<a name="L611"></a><tt class="py-lineno">611</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-name">row</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L612"></a><tt class="py-lineno">612</tt>  <tt class="py-line">                <tt id="link-307" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-307', 'Tkinter', 'link-2');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">f</tt><tt class="py-op">,</tt><tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Realtime period denominator"</tt>< [...]
+<a name="L613"></a><tt class="py-lineno">613</tt>  <tt class="py-line">                <tt id="link-309" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-309', 'Tkinter', 'link-2');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Entry</tt><tt class="py-op">(</tt><tt class="py-name">f</tt><tt class="py-op">,</tt><tt class="py-name">textvariable</tt><tt class="py-op">=</tt><tt class="py-name">parent</tt><tt class="py-op"> [...]
+<a name="L614"></a><tt class="py-lineno">614</tt>  <tt class="py-line">                <tt class="py-name">row</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L615"></a><tt class="py-lineno">615</tt>  <tt class="py-line">                <tt id="link-311" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-311', 'Tkinter', 'link-2');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">f</tt><tt class="py-op">,</tt><tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Realtime computation denominator"< [...]
+<a name="L616"></a><tt class="py-lineno">616</tt>  <tt class="py-line">                <tt id="link-313" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-313', 'Tkinter', 'link-2');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Entry</tt><tt class="py-op">(</tt><tt class="py-name">f</tt><tt class="py-op">,</tt><tt class="py-name">textvariable</tt><tt class="py-op">=</tt><tt class="py-name">parent</tt><tt class="py-op"> [...]
+<a name="L617"></a><tt class="py-lineno">617</tt>  <tt class="py-line">                <tt class="py-name">row</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L618"></a><tt class="py-lineno">618</tt>  <tt class="py-line">                <tt id="link-315" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-315', 'Tkinter', 'link-2');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">f</tt><tt class="py-op">,</tt><tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Realtime constraint denominator"</ [...]
+<a name="L619"></a><tt class="py-lineno">619</tt>  <tt class="py-line">                <tt id="link-317" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-317', 'Tkinter', 'link-2');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Entry</tt><tt class="py-op">(</tt><tt class="py-name">f</tt><tt class="py-op">,</tt><tt class="py-name">textvariable</tt><tt class="py-op">=</tt><tt class="py-name">parent</tt><tt class="py-op"> [...]
+<a name="L620"></a><tt class="py-lineno">620</tt>  <tt class="py-line">                <tt class="py-name">row</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L621"></a><tt class="py-lineno">621</tt>  <tt class="py-line">                <tt id="link-319" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-319', 'Tkinter', 'link-2');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Checkbutton</tt><tt class="py-op">(</tt><tt class="py-name">f</tt><tt class="py-op">,</tt><tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Do not preempt"</tt><tt clas [...]
+<a name="L622"></a><tt class="py-lineno">622</tt>  <tt class="py-line">                <tt class="py-name">row</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L623"></a><tt class="py-lineno">623</tt>  <tt class="py-line">                <tt id="link-320" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-320', 'Tkinter', 'link-2');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Button</tt><tt class="py-op">(</tt><tt class="py-name">f</tt><tt class="py-op">,</tt> <tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"ok"</tt><tt class="py-op">,</tt> [...]
+<a name="L624"></a><tt class="py-lineno">624</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">wait_window</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L625"></a><tt class="py-lineno">625</tt>  <tt class="py-line"> </tt>
+<a name="L626"></a><tt class="py-lineno">626</tt>  <tt class="py-line">            <tt class="py-keyword">def</tt> <tt class="py-def-name">ok</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L627"></a><tt class="py-lineno">627</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-321" class="py-name"><a title="VisionEgg.GUI.ToplevelDialog.destroy
+VisionEgg.PyroApps.EPhysGUI.AppWindow.destroy
+VisionEgg.PyroApps.EPhysGUI.LoopParamDialog.destroy" class="py-name" href="#" onclick="return doclink('link-321', 'destroy', 'link-23');">destroy</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L628"></a><tt class="py-lineno">628</tt>  <tt class="py-line"> </tt>
+<a name="L629"></a><tt class="py-lineno">629</tt>  <tt class="py-line">        <tt class="py-name">DarwinFineTuneDialog</tt><tt class="py-op">(</tt><tt class="py-name">parent</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L630"></a><tt class="py-lineno">630</tt>  <tt class="py-line"> </tt>
+<a name="GraphicsConfigurationWindow._set_config_values"></a><div id="GraphicsConfigurationWindow._set_config_values-def"><a name="L631"></a><tt class="py-lineno">631</tt> <a class="py-toggle" href="#" id="GraphicsConfigurationWindow._set_config_values-toggle" onclick="return toggle('GraphicsConfigurationWindow._set_config_values');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.GUI.GraphicsConfigurationWindow-class.html#_set_config_v [...]
+</div><div id="GraphicsConfigurationWindow._set_config_values-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="GraphicsConfigurationWindow._set_config_values-expanded"><a name="L632"></a><tt class="py-lineno">632</tt>  <tt class="py-line">        <tt id="link-322" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-322', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-323" class="py-name">< [...]
+<a name="L633"></a><tt class="py-lineno">633</tt>  <tt class="py-line">        <tt id="link-326" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-326', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-327" class="py-name"><a title="VisionEgg.config" class="py-name" href="#" onclick="return doclink('link-327', 'config', 'link-9');">config</a></tt><tt class="py-op">.</tt><tt class="py-name">VISIONEGG_FULLSCREEN</tt>  [...]
+<a name="L634"></a><tt class="py-lineno">634</tt>  <tt class="py-line">        <tt id="link-329" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-329', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-330" class="py-name"><a title="VisionEgg.config" class="py-name" href="#" onclick="return doclink('link-330', 'config', 'link-9');">config</a></tt><tt class="py-op">.</tt><tt class="py-name">VISIONEGG_GAMMA_SOURCE</tt [...]
+<a name="L635"></a><tt class="py-lineno">635</tt>  <tt class="py-line">        <tt id="link-332" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-332', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-333" class="py-name"><a title="VisionEgg.config" class="py-name" href="#" onclick="return doclink('link-333', 'config', 'link-9');">config</a></tt><tt class="py-op">.</tt><tt class="py-name">VISIONEGG_GAMMA_INVERT_RED [...]
+<a name="L636"></a><tt class="py-lineno">636</tt>  <tt class="py-line">        <tt id="link-335" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-335', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-336" class="py-name"><a title="VisionEgg.config" class="py-name" href="#" onclick="return doclink('link-336', 'config', 'link-9');">config</a></tt><tt class="py-op">.</tt><tt class="py-name">VISIONEGG_GAMMA_INVERT_GRE [...]
+<a name="L637"></a><tt class="py-lineno">637</tt>  <tt class="py-line">        <tt id="link-338" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-338', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-339" class="py-name"><a title="VisionEgg.config" class="py-name" href="#" onclick="return doclink('link-339', 'config', 'link-9');">config</a></tt><tt class="py-op">.</tt><tt class="py-name">VISIONEGG_GAMMA_INVERT_BLU [...]
+<a name="L638"></a><tt class="py-lineno">638</tt>  <tt class="py-line">        <tt id="link-341" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-341', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-342" class="py-name"><a title="VisionEgg.config" class="py-name" href="#" onclick="return doclink('link-342', 'config', 'link-9');">config</a></tt><tt class="py-op">.</tt><tt class="py-name">VISIONEGG_GAMMA_FILE</tt>  [...]
+<a name="L639"></a><tt class="py-lineno">639</tt>  <tt class="py-line">        <tt id="link-344" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-344', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-345" class="py-name"><a title="VisionEgg.config" class="py-name" href="#" onclick="return doclink('link-345', 'config', 'link-9');">config</a></tt><tt class="py-op">.</tt><tt class="py-name">VISIONEGG_MAXPRIORITY</tt> [...]
+<a name="L640"></a><tt class="py-lineno">640</tt>  <tt class="py-line">        <tt id="link-347" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-347', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-348" class="py-name"><a title="VisionEgg.config" class="py-name" href="#" onclick="return doclink('link-348', 'config', 'link-9');">config</a></tt><tt class="py-op">.</tt><tt class="py-name">VISIONEGG_SYNC_SWAP</tt> < [...]
+<a name="L641"></a><tt class="py-lineno">641</tt>  <tt class="py-line">        <tt id="link-350" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-350', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-351" class="py-name"><a title="VisionEgg.config" class="py-name" href="#" onclick="return doclink('link-351', 'config', 'link-9');">config</a></tt><tt class="py-op">.</tt><tt class="py-name">VISIONEGG_FRAMELESS_WINDOW [...]
+<a name="L642"></a><tt class="py-lineno">642</tt>  <tt class="py-line">        <tt id="link-353" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-353', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-354" class="py-name"><a title="VisionEgg.config" class="py-name" href="#" onclick="return doclink('link-354', 'config', 'link-9');">config</a></tt><tt class="py-op">.</tt><tt class="py-name">VISIONEGG_HIDE_MOUSE</tt>  [...]
+<a name="L643"></a><tt class="py-lineno">643</tt>  <tt class="py-line">        <tt id="link-356" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-356', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-357" class="py-name"><a title="VisionEgg.config" class="py-name" href="#" onclick="return doclink('link-357', 'config', 'link-9');">config</a></tt><tt class="py-op">.</tt><tt class="py-name">VISIONEGG_REQUEST_STEREO</ [...]
+<a name="L644"></a><tt class="py-lineno">644</tt>  <tt class="py-line">        <tt id="link-359" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-359', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-360" class="py-name"><a title="VisionEgg.config" class="py-name" href="#" onclick="return doclink('link-360', 'config', 'link-9');">config</a></tt><tt class="py-op">.</tt><tt class="py-name">VISIONEGG_SCREEN_W</tt> <t [...]
+<a name="L645"></a><tt class="py-lineno">645</tt>  <tt class="py-line">        <tt id="link-363" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-363', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-364" class="py-name"><a title="VisionEgg.config" class="py-name" href="#" onclick="return doclink('link-364', 'config', 'link-9');">config</a></tt><tt class="py-op">.</tt><tt class="py-name">VISIONEGG_SCREEN_H</tt> <t [...]
+<a name="L646"></a><tt class="py-lineno">646</tt>  <tt class="py-line">        <tt id="link-367" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-367', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-368" class="py-name"><a title="VisionEgg.config" class="py-name" href="#" onclick="return doclink('link-368', 'config', 'link-9');">config</a></tt><tt class="py-op">.</tt><tt class="py-name">VISIONEGG_PREFERRED_BPP</t [...]
+<a name="L647"></a><tt class="py-lineno">647</tt>  <tt class="py-line">        <tt id="link-371" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-371', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-372" class="py-name"><a title="VisionEgg.config" class="py-name" href="#" onclick="return doclink('link-372', 'config', 'link-9');">config</a></tt><tt class="py-op">.</tt><tt class="py-name">VISIONEGG_REQUEST_RED_BITS [...]
+<a name="L648"></a><tt class="py-lineno">648</tt>  <tt class="py-line">        <tt id="link-375" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-375', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-376" class="py-name"><a title="VisionEgg.config" class="py-name" href="#" onclick="return doclink('link-376', 'config', 'link-9');">config</a></tt><tt class="py-op">.</tt><tt class="py-name">VISIONEGG_REQUEST_GREEN_BI [...]
+<a name="L649"></a><tt class="py-lineno">649</tt>  <tt class="py-line">        <tt id="link-379" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-379', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-380" class="py-name"><a title="VisionEgg.config" class="py-name" href="#" onclick="return doclink('link-380', 'config', 'link-9');">config</a></tt><tt class="py-op">.</tt><tt class="py-name">VISIONEGG_REQUEST_BLUE_BIT [...]
+<a name="L650"></a><tt class="py-lineno">650</tt>  <tt class="py-line">        <tt id="link-383" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-383', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-384" class="py-name"><a title="VisionEgg.config" class="py-name" href="#" onclick="return doclink('link-384', 'config', 'link-9');">config</a></tt><tt class="py-op">.</tt><tt class="py-name">VISIONEGG_REQUEST_ALPHA_BI [...]
+<a name="L651"></a><tt class="py-lineno">651</tt>  <tt class="py-line"> </tt>
+<a name="L652"></a><tt class="py-lineno">652</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">platform</tt><tt class="py-op">==</tt><tt class="py-string">'darwin'</tt><tt class="py-op">:</tt> </tt>
+<a name="L653"></a><tt class="py-lineno">653</tt>  <tt class="py-line">            <tt class="py-comment"># Only used on darwin platform</tt> </tt>
+<a name="L654"></a><tt class="py-lineno">654</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt id="link-387" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-387', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-388" class="py-name"><a title="VisionEgg.config" class="py-name" href="#" onclick="return doclink('link-388', 'config', 'link-9');">config</a></tt><tt class="py-op">.</tt><tt class="py- [...]
+<a name="L655"></a><tt class="py-lineno">655</tt>  <tt class="py-line">            <tt id="link-390" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-390', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-391" class="py-name"><a title="VisionEgg.config" class="py-name" href="#" onclick="return doclink('link-391', 'config', 'link-9');">config</a></tt><tt class="py-op">.</tt><tt class="py-name">VISIONEGG_DARWIN_CONVE [...]
+<a name="L656"></a><tt class="py-lineno">656</tt>  <tt class="py-line">            <tt id="link-394" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-394', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-395" class="py-name"><a title="VisionEgg.config" class="py-name" href="#" onclick="return doclink('link-395', 'config', 'link-9');">config</a></tt><tt class="py-op">.</tt><tt class="py-name">VISIONEGG_DARWIN_REALT [...]
+<a name="L657"></a><tt class="py-lineno">657</tt>  <tt class="py-line">            <tt id="link-398" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-398', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-399" class="py-name"><a title="VisionEgg.config" class="py-name" href="#" onclick="return doclink('link-399', 'config', 'link-9');">config</a></tt><tt class="py-op">.</tt><tt class="py-name">VISIONEGG_DARWIN_REALT [...]
+<a name="L658"></a><tt class="py-lineno">658</tt>  <tt class="py-line">            <tt id="link-402" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-402', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-403" class="py-name"><a title="VisionEgg.config" class="py-name" href="#" onclick="return doclink('link-403', 'config', 'link-9');">config</a></tt><tt class="py-op">.</tt><tt class="py-name">VISIONEGG_DARWIN_REALT [...]
+<a name="L659"></a><tt class="py-lineno">659</tt>  <tt class="py-line">            <tt id="link-406" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-406', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-407" class="py-name"><a title="VisionEgg.config" class="py-name" href="#" onclick="return doclink('link-407', 'config', 'link-9');">config</a></tt><tt class="py-op">.</tt><tt class="py-name">VISIONEGG_DARWIN_REALT [...]
+<a name="L660"></a><tt class="py-lineno">660</tt>  <tt class="py-line"> </tt>
+<a name="L661"></a><tt class="py-lineno">661</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">show_synclync_option</tt><tt class="py-op">:</tt> </tt>
+<a name="L662"></a><tt class="py-lineno">662</tt>  <tt class="py-line">            <tt id="link-410" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-410', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-411" class="py-name"><a title="VisionEgg.config" class="py-name" href="#" onclick="return doclink('link-411', 'config', 'link-9');">config</a></tt><tt class="py-op">.</tt><tt class="py-name">SYNCLYNC_PRESENT</tt>  [...]
+</div><a name="L663"></a><tt class="py-lineno">663</tt>  <tt class="py-line"> </tt>
+<a name="GraphicsConfigurationWindow.save"></a><div id="GraphicsConfigurationWindow.save-def"><a name="L664"></a><tt class="py-lineno">664</tt> <a class="py-toggle" href="#" id="GraphicsConfigurationWindow.save-toggle" onclick="return toggle('GraphicsConfigurationWindow.save');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.GUI.GraphicsConfigurationWindow-class.html#save">save</a><tt class="py-op">(</tt><tt class="py-param">self</tt>< [...]
+</div><div id="GraphicsConfigurationWindow.save-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="GraphicsConfigurationWindow.save-expanded"><a name="L665"></a><tt class="py-lineno">665</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_set_config_values</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L666"></a><tt class="py-lineno">666</tt>  <tt class="py-line">        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L667"></a><tt class="py-lineno">667</tt>  <tt class="py-line">            <tt id="link-413" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-413', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-414" class="py-name" targets="Module VisionEgg.Configuration=VisionEgg.Configuration-module.html"><a title="VisionEgg.Configuration" class="py-name" href="#" onclick="return doclink('link-414', 'Configuration', 'l [...]
+<a name="L668"></a><tt class="py-lineno">668</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt> <tt class="py-name">IOError</tt><tt class="py-op">,</tt> <tt class="py-name">x</tt><tt class="py-op">:</tt> </tt>
+<a name="L669"></a><tt class="py-lineno">669</tt>  <tt class="py-line">            <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L670"></a><tt class="py-lineno">670</tt>  <tt class="py-line">                <tt class="py-keyword">import</tt> <tt id="link-416" class="py-name"><a title="VisionEgg.GUI.tkMessageBox" class="py-name" href="#" onclick="return doclink('link-416', 'tkMessageBox', 'link-4');">tkMessageBox</a></tt> </tt>
+<a name="L671"></a><tt class="py-lineno">671</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">x</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">find</tt><tt class="py-op">(</tt><tt class="py-string">'Permission denied'</tt><tt class="py-op">)</tt> <tt class="py-op">!=</tt> <tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">:</tt> </tt>
+<a name="L672"></a><tt class="py-lineno">672</tt>  <tt class="py-line">                    <tt id="link-417" class="py-name"><a title="VisionEgg.GUI.tkMessageBox" class="py-name" href="#" onclick="return doclink('link-417', 'tkMessageBox', 'link-4');">tkMessageBox</a></tt><tt class="py-op">.</tt><tt class="py-name">showerror</tt><tt class="py-op">(</tt><tt id="link-418" class="py-name"><a title="VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.title
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.title
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.title
+VisionEgg.PyroApps.GridGUI.GridControlFrame.title
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.title
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.title
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.title
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.title" class="py-name" href="#" onclick="return doclink('link-418', 'title', 'link-12');">title</a></tt><tt class="py-op">=</tt><tt class="py-string">"Permission denied"</tt><tt class="py-op">,</tt> </tt>
+<a name="L673"></a><tt class="py-lineno">673</tt>  <tt class="py-line">                                           <tt id="link-419" class="py-name" targets="Variable VisionEgg.Core.message=VisionEgg.Core-module.html#message"><a title="VisionEgg.Core.message" class="py-name" href="#" onclick="return doclink('link-419', 'message', 'link-419');">message</a></tt><tt class="py-op">=</tt><tt class="py-string">"Permission denied when trying to save settings.\n\nTry making a copy of the config f [...]
+<a name="L674"></a><tt class="py-lineno">674</tt>  <tt class="py-line">            <tt class="py-keyword">except</tt><tt class="py-op">:</tt> </tt>
+<a name="L675"></a><tt class="py-lineno">675</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> <tt class="py-name">x</tt> </tt>
+</div><a name="L676"></a><tt class="py-lineno">676</tt>  <tt class="py-line"> </tt>
+<a name="GraphicsConfigurationWindow.start"></a><div id="GraphicsConfigurationWindow.start-def"><a name="L677"></a><tt class="py-lineno">677</tt> <a class="py-toggle" href="#" id="GraphicsConfigurationWindow.start-toggle" onclick="return toggle('GraphicsConfigurationWindow.start');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.GUI.GraphicsConfigurationWindow-class.html#start">start</a><tt class="py-op">(</tt><tt class="py-param">self [...]
+</div><div id="GraphicsConfigurationWindow.start-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="GraphicsConfigurationWindow.start-expanded"><a name="L678"></a><tt class="py-lineno">678</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">clicked_ok</tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L679"></a><tt class="py-lineno">679</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_set_config_values</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L680"></a><tt class="py-lineno">680</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">child</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">children</tt><tt class="py-op">.</tt><tt class="py-name">values</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L681"></a><tt class="py-lineno">681</tt>  <tt class="py-line">            <tt class="py-name">child</tt><tt class="py-op">.</tt><tt id="link-422" class="py-name"><a title="VisionEgg.GUI.ToplevelDialog.destroy
+VisionEgg.PyroApps.EPhysGUI.AppWindow.destroy
+VisionEgg.PyroApps.EPhysGUI.LoopParamDialog.destroy" class="py-name" href="#" onclick="return doclink('link-422', 'destroy', 'link-23');">destroy</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L682"></a><tt class="py-lineno">682</tt>  <tt class="py-line">        <tt id="link-423" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-423', 'Tkinter', 'link-2');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Tk</tt><tt class="py-op">.</tt><tt id="link-424" class="py-name"><a title="VisionEgg.GUI.ToplevelDialog.destroy
+VisionEgg.PyroApps.EPhysGUI.AppWindow.destroy
+VisionEgg.PyroApps.EPhysGUI.LoopParamDialog.destroy" class="py-name" href="#" onclick="return doclink('link-424', 'destroy', 'link-23');">destroy</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">master</tt><tt class="py-op">)</tt> <tt class="py-comment"># OK, now close myself</tt> </tt>
+</div></div><a name="L683"></a><tt class="py-lineno">683</tt>  <tt class="py-line"> </tt>
+<a name="InfoFrame"></a><div id="InfoFrame-def"><a name="L684"></a><tt class="py-lineno">684</tt> <a class="py-toggle" href="#" id="InfoFrame-toggle" onclick="return toggle('InfoFrame');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.GUI.InfoFrame-class.html">InfoFrame</a><tt class="py-op">(</tt><tt class="py-base-class">Tkinter</tt><tt class="py-op">.</tt><tt class="py-base-class">Frame</tt><tt class="py-op">)</tt><tt class="py-op">:</ [...]
+</div><div id="InfoFrame-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="InfoFrame-expanded"><a name="InfoFrame.__init__"></a><div id="InfoFrame.__init__-def"><a name="L685"></a><tt class="py-lineno">685</tt> <a class="py-toggle" href="#" id="InfoFrame.__init__-toggle" onclick="return toggle('InfoFrame.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.GUI.InfoFrame-class.html#__init__">__init__</a><tt  [...]
+</div><div id="InfoFrame.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="InfoFrame.__init__-expanded"><a name="L686"></a><tt class="py-lineno">686</tt>  <tt class="py-line">        <tt id="link-425" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-425', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-426" class="py-name"><a title="VisionEgg.config" class="py-name" href="#" oncl [...]
+<a name="L687"></a><tt class="py-lineno">687</tt>  <tt class="py-line">        <tt id="link-427" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-427', 'Tkinter', 'link-2');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Frame</tt><tt class="py-op">.</tt><tt id="link-428" class="py-name"><a title="VisionEgg.ClassWithParameters.__init__
+VisionEgg.Configuration.Config.__init__
+VisionEgg.Core.FixationSpot.__init__
+VisionEgg.Core.FrameTimer.__init__
+VisionEgg.Core.ModelView.__init__
+VisionEgg.Core.OrthographicProjection.__init__
+VisionEgg.Core.OrthographicProjectionNoZClip.__init__
+VisionEgg.Core.PerspectiveProjection.__init__
+VisionEgg.Core.Projection.__init__
+VisionEgg.Core.ProjectionBaseClass.__init__
+VisionEgg.Core.Screen.__init__
+VisionEgg.Core.SimplePerspectiveProjection.__init__
+VisionEgg.Core.Stimulus.__init__
+VisionEgg.Core.Viewport.__init__
+VisionEgg.Daq.Channel.__init__
+VisionEgg.Daq.DaqMode.__init__
+VisionEgg.Daq.Device.__init__
+VisionEgg.Daq.Functionality.__init__
+VisionEgg.Daq.SignalType.__init__
+VisionEgg.DaqKeyboard.KeyboardTriggerInController.__init__
+VisionEgg.DaqLPT.LPTChannel.__init__
+VisionEgg.DaqLPT.LPTDevice.__init__
+VisionEgg.DaqLPT.LPTTriggerInController.__init__
+VisionEgg.DaqLPT.LPTTriggerOutController.__init__
+VisionEgg.Deprecated.Message.__init__
+VisionEgg.Dots.DotArea2D.__init__
+VisionEgg.FlowControl.ConstantController.__init__
+VisionEgg.FlowControl.Controller.__init__
+VisionEgg.FlowControl.EncapsulatedController.__init__
+VisionEgg.FlowControl.EvalStringController.__init__
+VisionEgg.FlowControl.ExecStringController.__init__
+VisionEgg.FlowControl.FunctionController.__init__
+VisionEgg.FlowControl.Presentation.__init__
+VisionEgg.GLTrace.Wrapper.__init__
+VisionEgg.GUI.AppWindow.__init__
+VisionEgg.GUI.GetKeypressDialog.__init__
+VisionEgg.GUI.GraphicsConfigurationWindow.__init__
+VisionEgg.GUI.InfoFrame.__init__
+VisionEgg.GUI.ProgressBar.__init__
+VisionEgg.GUI.ToplevelDialog.__init__
+VisionEgg.Gratings.SinGrating2D.__init__
+VisionEgg.Gratings.SinGrating3D.__init__
+VisionEgg.MoreStimuli.Arrow.__init__
+VisionEgg.MoreStimuli.FilledCircle.__init__
+VisionEgg.MoreStimuli.Rectangle3D.__init__
+VisionEgg.MoreStimuli.Target2D.__init__
+VisionEgg.ParameterTypes.AnyOf.__init__
+VisionEgg.ParameterTypes.Instance.__init__
+VisionEgg.ParameterTypes.Sequence.__init__
+VisionEgg.ParameterTypes.SubClass.__init__
+VisionEgg.PyroApps.AST_ext.AST_Visitor.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalMetaParameters.__init__
+VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.__init__
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.__init__
+VisionEgg.PyroApps.DropinGUI.DropinMetaParameters.__init__
+VisionEgg.PyroApps.DropinServer.DropinMetaController.__init__
+VisionEgg.PyroApps.EPhysGUI.AppWindow.__init__
+VisionEgg.PyroApps.EPhysGUI.BarButton.__init__
+VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase.__init__
+VisionEgg.PyroApps.EPhysGUI.GammaFrame.__init__
+VisionEgg.PyroApps.EPhysGUI.ImageSequenceLauncher.__init__
+VisionEgg.PyroApps.EPhysGUI.Loop.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopContainedObject.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopParamDialog.__init__
+VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.__init__
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.__init__
+VisionEgg.PyroApps.EPhysServer.EPhysServer.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingMetaParameters.__init__
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.GridGUI.GridControlFrame.__init__
+VisionEgg.PyroApps.GridGUI.GridMetaParameters.__init__
+VisionEgg.PyroApps.GridServer.GridMetaController.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetMetaParameters.__init__
+VisionEgg.PyroApps.MouseTargetServer.MousePositionController.__init__
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetOrientationController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetPositionController.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.CallbackEntry.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionParameters.__init__
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingMetaParameters.__init__
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumMetaParameters.__init__
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.__init__
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.__init__
+VisionEgg.PyroApps.TargetGUI.TargetMetaParameters.__init__
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.__init__
+VisionEgg.PyroClient.PyroClient.__init__
+VisionEgg.PyroHelpers.PyroConstantController.__init__
+VisionEgg.PyroHelpers.PyroEncapsulatedController.__init__
+VisionEgg.PyroHelpers.PyroEvalStringController.__init__
+VisionEgg.PyroHelpers.PyroExecStringController.__init__
+VisionEgg.PyroHelpers.PyroListenController.__init__
+VisionEgg.PyroHelpers.PyroLocalDictController.__init__
+VisionEgg.PyroHelpers.PyroServer.__init__
+VisionEgg.QuickTime.MovieTexture.__init__
+VisionEgg.ResponseControl.KeyboardResponseController.__init__
+VisionEgg.ResponseControl.ResponseController.__init__
+VisionEgg.SphereMap.AzElGrid.__init__
+VisionEgg.SphereMap.SphereGrating.__init__
+VisionEgg.SphereMap.SphereMap.__init__
+VisionEgg.SphereMap.SphereWindow.__init__
+VisionEgg.TCPController.SocketListenController.__init__
+VisionEgg.TCPController.TCPController.__init__
+VisionEgg.TCPController.TCPServer.__init__
+VisionEgg.Text.BitmapText.__init__
+VisionEgg.Text.GlutTextBase.__init__
+VisionEgg.Text.StrokeText.__init__
+VisionEgg.Text.Text.__init__
+VisionEgg.Textures.FixationCross.__init__
+VisionEgg.Textures.Mask2D.__init__
+VisionEgg.Textures.SpinningDrum.__init__
+VisionEgg.Textures.Texture.__init__
+VisionEgg.Textures.TextureFromFile.__init__
+VisionEgg.Textures.TextureObject.__init__
+VisionEgg.Textures.TextureStimulusBaseClass.__init__
+VisionEgg.ThreeDeeMath.TransformMatrix.__init__
+VisionEgg.WrappedText.WrappedText.__init__
+VisionEgg.qtmovie.Movie.__init__
+VisionEgg.qtmovie.Rect.__init__" class="py-name" href="#" onclick="return doclink('link-428', '__init__', 'link-11');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt><tt class="py-name">master</tt><tt class="py-op">,</tt><tt class="py-op">**</tt><tt class="py-name">cnf</tt><tt class="py-op">)</tt> </tt>
+<a name="L688"></a><tt class="py-lineno">688</tt>  <tt class="py-line"> </tt>
+<a name="L689"></a><tt class="py-lineno">689</tt>  <tt class="py-line">        <tt id="link-429" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-429', 'Tkinter', 'link-2');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt><tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Vision Egg information:"</tt><tt class= [...]
+<a name="L690"></a><tt class="py-lineno">690</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sub_frame</tt> <tt class="py-op">=</tt> <tt id="link-430" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-430', 'Tkinter', 'link-2');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Frame</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt><t [...]
+<a name="L691"></a><tt class="py-lineno">691</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sub_frame</tt><tt class="py-op">.</tt><tt class="py-name">pack</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L692"></a><tt class="py-lineno">692</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-432" class="py-name"><a title="VisionEgg.GUI.InfoFrame.update
+VisionEgg.GUI.ProgressBar.update
+VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.update
+VisionEgg.PyroApps.DropinServer.DropinMetaController.update
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.update
+VisionEgg.PyroApps.GridServer.GridMetaController.update
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.update
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.update
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.update
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.update
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.update
+VisionEgg.QuickTime.MovieTexture.update
+VisionEgg.Textures.Texture.update" class="py-name" href="#" onclick="return doclink('link-432', 'update', 'link-36');">update</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L693"></a><tt class="py-lineno">693</tt>  <tt class="py-line"> </tt>
+<a name="InfoFrame.update"></a><div id="InfoFrame.update-def"><a name="L694"></a><tt class="py-lineno">694</tt> <a class="py-toggle" href="#" id="InfoFrame.update-toggle" onclick="return toggle('InfoFrame.update');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.GUI.InfoFrame-class.html#update">update</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="InfoFrame.update-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="InfoFrame.update-expanded"><a name="L695"></a><tt class="py-lineno">695</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">child</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sub_frame</tt><tt class="py-op">.</tt><tt class="py-name">children</tt><tt class="py-op">.</tt><tt class="py-na [...]
+<a name="L696"></a><tt class="py-lineno">696</tt>  <tt class="py-line">            <tt class="py-name">child</tt><tt class="py-op">.</tt><tt id="link-433" class="py-name"><a title="VisionEgg.GUI.ToplevelDialog.destroy
+VisionEgg.PyroApps.EPhysGUI.AppWindow.destroy
+VisionEgg.PyroApps.EPhysGUI.LoopParamDialog.destroy" class="py-name" href="#" onclick="return doclink('link-433', 'destroy', 'link-23');">destroy</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L697"></a><tt class="py-lineno">697</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt id="link-434" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-434', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-435" class="py-name"><a title="VisionEgg.config" class="py-name" href="#" onclick="return doclink('link-435', 'config', 'link-9');">config</a></tt><tt class="py-op">.</tt><tt class="py-n [...]
+<a name="L698"></a><tt class="py-lineno">698</tt>  <tt class="py-line">            <tt id="link-436" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-436', 'Tkinter', 'link-2');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sub_frame</tt><tt class="py-op">,</tt><tt class="py-name">text</tt><tt class="py-op">=</tt> [...]
+<a name="L699"></a><tt class="py-lineno">699</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L700"></a><tt class="py-lineno">700</tt>  <tt class="py-line">            <tt id="link-437" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-437', 'Tkinter', 'link-2');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sub_frame</tt><tt class="py-op">,</tt><tt class="py-name">text</tt><tt class="py-op">=</tt> [...]
+</div></div><a name="L701"></a><tt class="py-lineno">701</tt>  <tt class="py-line"><tt class="py-comment">##        if VisionEgg.config.VISIONEGG_TEXTURE_COMPRESSION:</tt> </tt>
+<a name="L702"></a><tt class="py-lineno">702</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">##            Tkinter.Label(self.sub_frame,text="Texture compression on").pack()</tt> </tt>
+<a name="L703"></a><tt class="py-lineno">703</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">##        else:</tt> </tt>
+<a name="L704"></a><tt class="py-lineno">704</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">##            Tkinter.Label(self.sub_frame,text="Texture compression off").pack()</tt> </tt>
+<a name="L705"></a><tt class="py-lineno">705</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L706"></a><tt class="py-lineno">706</tt>  <tt class="py-line">        <tt class="py-comment">#Tkinter.Button(self.sub_frame,text="Update information",command=self.update).pack()</tt> </tt>
+<a name="L707"></a><tt class="py-lineno">707</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="ToplevelDialog"></a><div id="ToplevelDialog-def"><a name="L708"></a><tt class="py-lineno">708</tt> <a class="py-toggle" href="#" id="ToplevelDialog-toggle" onclick="return toggle('ToplevelDialog');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.GUI.ToplevelDialog-class.html">ToplevelDialog</a><tt class="py-op">(</tt><tt class="py-base-class">Tkinter</tt><tt class="py-op">.</tt><tt class="py-base-class">Toplevel</tt><tt class="p [...]
+</div><div id="ToplevelDialog-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="ToplevelDialog-expanded"><a name="L709"></a><tt class="py-lineno">709</tt>  <tt class="py-line">    <tt class="py-docstring">"""Base class for a dialog that runs on the top level."""</tt> </tt>
+<a name="ToplevelDialog.__init__"></a><div id="ToplevelDialog.__init__-def"><a name="L710"></a><tt class="py-lineno">710</tt> <a class="py-toggle" href="#" id="ToplevelDialog.__init__-toggle" onclick="return toggle('ToplevelDialog.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.GUI.ToplevelDialog-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt><tt class="py-op"> [...]
+</div><div id="ToplevelDialog.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ToplevelDialog.__init__-expanded"><a name="L711"></a><tt class="py-lineno">711</tt>  <tt class="py-line">        <tt id="link-438" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-438', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-439" class="py-name"><a title="VisionEgg.config" class="py-name" hre [...]
+<a name="L712"></a><tt class="py-lineno">712</tt>  <tt class="py-line">        <tt id="link-440" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-440', 'Tkinter', 'link-2');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Toplevel</tt><tt class="py-op">.</tt><tt id="link-441" class="py-name"><a title="VisionEgg.ClassWithParameters.__init__
+VisionEgg.Configuration.Config.__init__
+VisionEgg.Core.FixationSpot.__init__
+VisionEgg.Core.FrameTimer.__init__
+VisionEgg.Core.ModelView.__init__
+VisionEgg.Core.OrthographicProjection.__init__
+VisionEgg.Core.OrthographicProjectionNoZClip.__init__
+VisionEgg.Core.PerspectiveProjection.__init__
+VisionEgg.Core.Projection.__init__
+VisionEgg.Core.ProjectionBaseClass.__init__
+VisionEgg.Core.Screen.__init__
+VisionEgg.Core.SimplePerspectiveProjection.__init__
+VisionEgg.Core.Stimulus.__init__
+VisionEgg.Core.Viewport.__init__
+VisionEgg.Daq.Channel.__init__
+VisionEgg.Daq.DaqMode.__init__
+VisionEgg.Daq.Device.__init__
+VisionEgg.Daq.Functionality.__init__
+VisionEgg.Daq.SignalType.__init__
+VisionEgg.DaqKeyboard.KeyboardTriggerInController.__init__
+VisionEgg.DaqLPT.LPTChannel.__init__
+VisionEgg.DaqLPT.LPTDevice.__init__
+VisionEgg.DaqLPT.LPTTriggerInController.__init__
+VisionEgg.DaqLPT.LPTTriggerOutController.__init__
+VisionEgg.Deprecated.Message.__init__
+VisionEgg.Dots.DotArea2D.__init__
+VisionEgg.FlowControl.ConstantController.__init__
+VisionEgg.FlowControl.Controller.__init__
+VisionEgg.FlowControl.EncapsulatedController.__init__
+VisionEgg.FlowControl.EvalStringController.__init__
+VisionEgg.FlowControl.ExecStringController.__init__
+VisionEgg.FlowControl.FunctionController.__init__
+VisionEgg.FlowControl.Presentation.__init__
+VisionEgg.GLTrace.Wrapper.__init__
+VisionEgg.GUI.AppWindow.__init__
+VisionEgg.GUI.GetKeypressDialog.__init__
+VisionEgg.GUI.GraphicsConfigurationWindow.__init__
+VisionEgg.GUI.InfoFrame.__init__
+VisionEgg.GUI.ProgressBar.__init__
+VisionEgg.GUI.ToplevelDialog.__init__
+VisionEgg.Gratings.SinGrating2D.__init__
+VisionEgg.Gratings.SinGrating3D.__init__
+VisionEgg.MoreStimuli.Arrow.__init__
+VisionEgg.MoreStimuli.FilledCircle.__init__
+VisionEgg.MoreStimuli.Rectangle3D.__init__
+VisionEgg.MoreStimuli.Target2D.__init__
+VisionEgg.ParameterTypes.AnyOf.__init__
+VisionEgg.ParameterTypes.Instance.__init__
+VisionEgg.ParameterTypes.Sequence.__init__
+VisionEgg.ParameterTypes.SubClass.__init__
+VisionEgg.PyroApps.AST_ext.AST_Visitor.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalMetaParameters.__init__
+VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.__init__
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.__init__
+VisionEgg.PyroApps.DropinGUI.DropinMetaParameters.__init__
+VisionEgg.PyroApps.DropinServer.DropinMetaController.__init__
+VisionEgg.PyroApps.EPhysGUI.AppWindow.__init__
+VisionEgg.PyroApps.EPhysGUI.BarButton.__init__
+VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase.__init__
+VisionEgg.PyroApps.EPhysGUI.GammaFrame.__init__
+VisionEgg.PyroApps.EPhysGUI.ImageSequenceLauncher.__init__
+VisionEgg.PyroApps.EPhysGUI.Loop.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopContainedObject.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopParamDialog.__init__
+VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.__init__
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.__init__
+VisionEgg.PyroApps.EPhysServer.EPhysServer.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingMetaParameters.__init__
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.GridGUI.GridControlFrame.__init__
+VisionEgg.PyroApps.GridGUI.GridMetaParameters.__init__
+VisionEgg.PyroApps.GridServer.GridMetaController.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetMetaParameters.__init__
+VisionEgg.PyroApps.MouseTargetServer.MousePositionController.__init__
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetOrientationController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetPositionController.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.CallbackEntry.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionParameters.__init__
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingMetaParameters.__init__
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumMetaParameters.__init__
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.__init__
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.__init__
+VisionEgg.PyroApps.TargetGUI.TargetMetaParameters.__init__
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.__init__
+VisionEgg.PyroClient.PyroClient.__init__
+VisionEgg.PyroHelpers.PyroConstantController.__init__
+VisionEgg.PyroHelpers.PyroEncapsulatedController.__init__
+VisionEgg.PyroHelpers.PyroEvalStringController.__init__
+VisionEgg.PyroHelpers.PyroExecStringController.__init__
+VisionEgg.PyroHelpers.PyroListenController.__init__
+VisionEgg.PyroHelpers.PyroLocalDictController.__init__
+VisionEgg.PyroHelpers.PyroServer.__init__
+VisionEgg.QuickTime.MovieTexture.__init__
+VisionEgg.ResponseControl.KeyboardResponseController.__init__
+VisionEgg.ResponseControl.ResponseController.__init__
+VisionEgg.SphereMap.AzElGrid.__init__
+VisionEgg.SphereMap.SphereGrating.__init__
+VisionEgg.SphereMap.SphereMap.__init__
+VisionEgg.SphereMap.SphereWindow.__init__
+VisionEgg.TCPController.SocketListenController.__init__
+VisionEgg.TCPController.TCPController.__init__
+VisionEgg.TCPController.TCPServer.__init__
+VisionEgg.Text.BitmapText.__init__
+VisionEgg.Text.GlutTextBase.__init__
+VisionEgg.Text.StrokeText.__init__
+VisionEgg.Text.Text.__init__
+VisionEgg.Textures.FixationCross.__init__
+VisionEgg.Textures.Mask2D.__init__
+VisionEgg.Textures.SpinningDrum.__init__
+VisionEgg.Textures.Texture.__init__
+VisionEgg.Textures.TextureFromFile.__init__
+VisionEgg.Textures.TextureObject.__init__
+VisionEgg.Textures.TextureStimulusBaseClass.__init__
+VisionEgg.ThreeDeeMath.TransformMatrix.__init__
+VisionEgg.WrappedText.WrappedText.__init__
+VisionEgg.qtmovie.Movie.__init__
+VisionEgg.qtmovie.Rect.__init__" class="py-name" href="#" onclick="return doclink('link-441', '__init__', 'link-11');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt><tt class="py-op">**</tt><tt class="py-name">kw</tt><tt class="py-op">)</tt> </tt>
+<a name="L713"></a><tt class="py-lineno">713</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">transient</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L714"></a><tt class="py-lineno">714</tt>  <tt class="py-line"> </tt>
+<a name="ToplevelDialog.destroy"></a><div id="ToplevelDialog.destroy-def"><a name="L715"></a><tt class="py-lineno">715</tt> <a class="py-toggle" href="#" id="ToplevelDialog.destroy-toggle" onclick="return toggle('ToplevelDialog.destroy');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.GUI.ToplevelDialog-class.html#destroy">destroy</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ToplevelDialog.destroy-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ToplevelDialog.destroy-expanded"><a name="L716"></a><tt class="py-lineno">716</tt>  <tt class="py-line">        <tt id="link-442" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-442', 'Tkinter', 'link-2');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Toplevel</tt><tt class="py-op">.</tt><tt id="link-443"  [...]
+VisionEgg.PyroApps.EPhysGUI.AppWindow.destroy
+VisionEgg.PyroApps.EPhysGUI.LoopParamDialog.destroy" class="py-name" href="#" onclick="return doclink('link-443', 'destroy', 'link-23');">destroy</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L717"></a><tt class="py-lineno">717</tt>  <tt class="py-line"> </tt>
+<a name="GetKeypressDialog"></a><div id="GetKeypressDialog-def"><a name="L718"></a><tt class="py-lineno">718</tt> <a class="py-toggle" href="#" id="GetKeypressDialog-toggle" onclick="return toggle('GetKeypressDialog');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.GUI.GetKeypressDialog-class.html">GetKeypressDialog</a><tt class="py-op">(</tt><tt class="py-base-class">ToplevelDialog</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="GetKeypressDialog-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="GetKeypressDialog-expanded"><a name="L719"></a><tt class="py-lineno">719</tt>  <tt class="py-line">    <tt class="py-docstring">"""Open a dialog box which returns when a valid key is pressed.</tt> </tt>
+<a name="L720"></a><tt class="py-lineno">720</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L721"></a><tt class="py-lineno">721</tt>  <tt class="py-line"><tt class="py-docstring">    Arguments are:</tt> </tt>
+<a name="L722"></a><tt class="py-lineno">722</tt>  <tt class="py-line"><tt class="py-docstring">    master - a Tkinter widget (defaults to None)</tt> </tt>
+<a name="L723"></a><tt class="py-lineno">723</tt>  <tt class="py-line"><tt class="py-docstring">    title - a string for the title bar of the widget</tt> </tt>
+<a name="L724"></a><tt class="py-lineno">724</tt>  <tt class="py-line"><tt class="py-docstring">    text - a string to display as the text in the body of the dialog</tt> </tt>
+<a name="L725"></a><tt class="py-lineno">725</tt>  <tt class="py-line"><tt class="py-docstring">    key_list - a list of acceptable keys, e.g. ['q','1','2','<Return>']</tt> </tt>
+<a name="L726"></a><tt class="py-lineno">726</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L727"></a><tt class="py-lineno">727</tt>  <tt class="py-line"><tt class="py-docstring">    The following example will print whatever character was pressed:</tt> </tt>
+<a name="L728"></a><tt class="py-lineno">728</tt>  <tt class="py-line"><tt class="py-docstring">    d = GetKeypressDialog(key_list=['q','1','2','<Return>','<Escape>'])</tt> </tt>
+<a name="L729"></a><tt class="py-lineno">729</tt>  <tt class="py-line"><tt class="py-docstring">    print d.result</tt> </tt>
+<a name="L730"></a><tt class="py-lineno">730</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L731"></a><tt class="py-lineno">731</tt>  <tt class="py-line"><tt class="py-docstring">    The implementation is somewhat obscure because a new Tk/Tcl</tt> </tt>
+<a name="L732"></a><tt class="py-lineno">732</tt>  <tt class="py-line"><tt class="py-docstring">    interpreter may be created if this Dialog is called with no</tt> </tt>
+<a name="L733"></a><tt class="py-lineno">733</tt>  <tt class="py-line"><tt class="py-docstring">    master widget."""</tt> </tt>
+<a name="GetKeypressDialog.__init__"></a><div id="GetKeypressDialog.__init__-def"><a name="L734"></a><tt class="py-lineno">734</tt> <a class="py-toggle" href="#" id="GetKeypressDialog.__init__-toggle" onclick="return toggle('GetKeypressDialog.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.GUI.GetKeypressDialog-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> </tt>
+<a name="L735"></a><tt class="py-lineno">735</tt>  <tt class="py-line">                 <tt class="py-param">title</tt><tt class="py-op">=</tt><tt class="py-string">"Press a key"</tt><tt class="py-op">,</tt> </tt>
+<a name="L736"></a><tt class="py-lineno">736</tt>  <tt class="py-line">                 <tt class="py-param">text</tt><tt class="py-op">=</tt><tt class="py-string">"Press a key"</tt><tt class="py-op">,</tt> </tt>
+<a name="L737"></a><tt class="py-lineno">737</tt>  <tt class="py-line">                 <tt class="py-param">key_list</tt><tt class="py-op">=</tt><tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L738"></a><tt class="py-lineno">738</tt>  <tt class="py-line">                 <tt class="py-op">**</tt><tt class="py-param">kw</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="GetKeypressDialog.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="GetKeypressDialog.__init__-expanded"><a name="L739"></a><tt class="py-lineno">739</tt>  <tt class="py-line"> </tt>
+<a name="L740"></a><tt class="py-lineno">740</tt>  <tt class="py-line">        <tt id="link-444" class="py-name"><a title="VisionEgg.GUI.ToplevelDialog" class="py-name" href="#" onclick="return doclink('link-444', 'ToplevelDialog', 'link-294');">ToplevelDialog</a></tt><tt class="py-op">.</tt><tt id="link-445" class="py-name"><a title="VisionEgg.ClassWithParameters.__init__
+VisionEgg.Configuration.Config.__init__
+VisionEgg.Core.FixationSpot.__init__
+VisionEgg.Core.FrameTimer.__init__
+VisionEgg.Core.ModelView.__init__
+VisionEgg.Core.OrthographicProjection.__init__
+VisionEgg.Core.OrthographicProjectionNoZClip.__init__
+VisionEgg.Core.PerspectiveProjection.__init__
+VisionEgg.Core.Projection.__init__
+VisionEgg.Core.ProjectionBaseClass.__init__
+VisionEgg.Core.Screen.__init__
+VisionEgg.Core.SimplePerspectiveProjection.__init__
+VisionEgg.Core.Stimulus.__init__
+VisionEgg.Core.Viewport.__init__
+VisionEgg.Daq.Channel.__init__
+VisionEgg.Daq.DaqMode.__init__
+VisionEgg.Daq.Device.__init__
+VisionEgg.Daq.Functionality.__init__
+VisionEgg.Daq.SignalType.__init__
+VisionEgg.DaqKeyboard.KeyboardTriggerInController.__init__
+VisionEgg.DaqLPT.LPTChannel.__init__
+VisionEgg.DaqLPT.LPTDevice.__init__
+VisionEgg.DaqLPT.LPTTriggerInController.__init__
+VisionEgg.DaqLPT.LPTTriggerOutController.__init__
+VisionEgg.Deprecated.Message.__init__
+VisionEgg.Dots.DotArea2D.__init__
+VisionEgg.FlowControl.ConstantController.__init__
+VisionEgg.FlowControl.Controller.__init__
+VisionEgg.FlowControl.EncapsulatedController.__init__
+VisionEgg.FlowControl.EvalStringController.__init__
+VisionEgg.FlowControl.ExecStringController.__init__
+VisionEgg.FlowControl.FunctionController.__init__
+VisionEgg.FlowControl.Presentation.__init__
+VisionEgg.GLTrace.Wrapper.__init__
+VisionEgg.GUI.AppWindow.__init__
+VisionEgg.GUI.GetKeypressDialog.__init__
+VisionEgg.GUI.GraphicsConfigurationWindow.__init__
+VisionEgg.GUI.InfoFrame.__init__
+VisionEgg.GUI.ProgressBar.__init__
+VisionEgg.GUI.ToplevelDialog.__init__
+VisionEgg.Gratings.SinGrating2D.__init__
+VisionEgg.Gratings.SinGrating3D.__init__
+VisionEgg.MoreStimuli.Arrow.__init__
+VisionEgg.MoreStimuli.FilledCircle.__init__
+VisionEgg.MoreStimuli.Rectangle3D.__init__
+VisionEgg.MoreStimuli.Target2D.__init__
+VisionEgg.ParameterTypes.AnyOf.__init__
+VisionEgg.ParameterTypes.Instance.__init__
+VisionEgg.ParameterTypes.Sequence.__init__
+VisionEgg.ParameterTypes.SubClass.__init__
+VisionEgg.PyroApps.AST_ext.AST_Visitor.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalMetaParameters.__init__
+VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.__init__
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.__init__
+VisionEgg.PyroApps.DropinGUI.DropinMetaParameters.__init__
+VisionEgg.PyroApps.DropinServer.DropinMetaController.__init__
+VisionEgg.PyroApps.EPhysGUI.AppWindow.__init__
+VisionEgg.PyroApps.EPhysGUI.BarButton.__init__
+VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase.__init__
+VisionEgg.PyroApps.EPhysGUI.GammaFrame.__init__
+VisionEgg.PyroApps.EPhysGUI.ImageSequenceLauncher.__init__
+VisionEgg.PyroApps.EPhysGUI.Loop.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopContainedObject.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopParamDialog.__init__
+VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.__init__
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.__init__
+VisionEgg.PyroApps.EPhysServer.EPhysServer.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingMetaParameters.__init__
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.GridGUI.GridControlFrame.__init__
+VisionEgg.PyroApps.GridGUI.GridMetaParameters.__init__
+VisionEgg.PyroApps.GridServer.GridMetaController.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetMetaParameters.__init__
+VisionEgg.PyroApps.MouseTargetServer.MousePositionController.__init__
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetOrientationController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetPositionController.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.CallbackEntry.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionParameters.__init__
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingMetaParameters.__init__
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumMetaParameters.__init__
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.__init__
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.__init__
+VisionEgg.PyroApps.TargetGUI.TargetMetaParameters.__init__
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.__init__
+VisionEgg.PyroClient.PyroClient.__init__
+VisionEgg.PyroHelpers.PyroConstantController.__init__
+VisionEgg.PyroHelpers.PyroEncapsulatedController.__init__
+VisionEgg.PyroHelpers.PyroEvalStringController.__init__
+VisionEgg.PyroHelpers.PyroExecStringController.__init__
+VisionEgg.PyroHelpers.PyroListenController.__init__
+VisionEgg.PyroHelpers.PyroLocalDictController.__init__
+VisionEgg.PyroHelpers.PyroServer.__init__
+VisionEgg.QuickTime.MovieTexture.__init__
+VisionEgg.ResponseControl.KeyboardResponseController.__init__
+VisionEgg.ResponseControl.ResponseController.__init__
+VisionEgg.SphereMap.AzElGrid.__init__
+VisionEgg.SphereMap.SphereGrating.__init__
+VisionEgg.SphereMap.SphereMap.__init__
+VisionEgg.SphereMap.SphereWindow.__init__
+VisionEgg.TCPController.SocketListenController.__init__
+VisionEgg.TCPController.TCPController.__init__
+VisionEgg.TCPController.TCPServer.__init__
+VisionEgg.Text.BitmapText.__init__
+VisionEgg.Text.GlutTextBase.__init__
+VisionEgg.Text.StrokeText.__init__
+VisionEgg.Text.Text.__init__
+VisionEgg.Textures.FixationCross.__init__
+VisionEgg.Textures.Mask2D.__init__
+VisionEgg.Textures.SpinningDrum.__init__
+VisionEgg.Textures.Texture.__init__
+VisionEgg.Textures.TextureFromFile.__init__
+VisionEgg.Textures.TextureObject.__init__
+VisionEgg.Textures.TextureStimulusBaseClass.__init__
+VisionEgg.ThreeDeeMath.TransformMatrix.__init__
+VisionEgg.WrappedText.WrappedText.__init__
+VisionEgg.qtmovie.Movie.__init__
+VisionEgg.qtmovie.Rect.__init__" class="py-name" href="#" onclick="return doclink('link-445', '__init__', 'link-11');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt><tt class="py-op">**</tt><tt class="py-name">kw</tt><tt class="py-op">)</tt> </tt>
+<a name="L741"></a><tt class="py-lineno">741</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-446" class="py-name"><a title="VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.title
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.title
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.title
+VisionEgg.PyroApps.GridGUI.GridControlFrame.title
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.title
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.title
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.title
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.title" class="py-name" href="#" onclick="return doclink('link-446', 'title', 'link-12');">title</a></tt><tt class="py-op">(</tt><tt id="link-447" class="py-name"><a title="VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.title
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.title
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.title
+VisionEgg.PyroApps.GridGUI.GridControlFrame.title
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.title
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.title
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.title
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.title" class="py-name" href="#" onclick="return doclink('link-447', 'title', 'link-12');">title</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L742"></a><tt class="py-lineno">742</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L743"></a><tt class="py-lineno">743</tt>  <tt class="py-line"> </tt>
+<a name="L744"></a><tt class="py-lineno">744</tt>  <tt class="py-line">        <tt class="py-comment"># The dialog box body</tt> </tt>
+<a name="L745"></a><tt class="py-lineno">745</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt id="link-448" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-448', 'Tkinter', 'link-2');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">frame</tt><tt class="py-op">,</tt> <tt class="py-name">text</tt><tt [...]
+<a name="L746"></a><tt class="py-lineno">746</tt>  <tt class="py-line"> </tt>
+<a name="L747"></a><tt class="py-lineno">747</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">key</tt> <tt class="py-keyword">in</tt> <tt class="py-name">key_list</tt><tt class="py-op">:</tt> </tt>
+<a name="L748"></a><tt class="py-lineno">748</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">bind</tt><tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">,</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-449" class="py-name" targets="Method VisionEgg.GUI.GetKeypressDialog.keypress()=VisionEgg.GUI.GetKeypressDialog-class.html#keypress"><a title="VisionEgg.GUI.GetKeypressDialog.keypress"  [...]
+<a name="L749"></a><tt class="py-lineno">749</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">wait_window</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L750"></a><tt class="py-lineno">750</tt>  <tt class="py-line"> </tt>
+<a name="GetKeypressDialog.keypress"></a><div id="GetKeypressDialog.keypress-def"><a name="L751"></a><tt class="py-lineno">751</tt> <a class="py-toggle" href="#" id="GetKeypressDialog.keypress-toggle" onclick="return toggle('GetKeypressDialog.keypress');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.GUI.GetKeypressDialog-class.html#keypress">keypress</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt><tt [...]
+</div><div id="GetKeypressDialog.keypress-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="GetKeypressDialog.keypress-expanded"><a name="L752"></a><tt class="py-lineno">752</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt class="py-name">tkinter_event</tt><tt class="py-op">.</tt><tt class="py-name">keysym</tt> </tt>
+<a name="L753"></a><tt class="py-lineno">753</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-450" class="py-name"><a title="VisionEgg.GUI.ToplevelDialog.destroy
+VisionEgg.PyroApps.EPhysGUI.AppWindow.destroy
+VisionEgg.PyroApps.EPhysGUI.LoopParamDialog.destroy" class="py-name" href="#" onclick="return doclink('link-450', 'destroy', 'link-23');">destroy</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L754"></a><tt class="py-lineno">754</tt>  <tt class="py-line"> </tt><script type="text/javascript">
+<!--
+expandto(location.href);
+// -->
+</script>
+</pre>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:49 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.GUI.AppWindow-class.html b/doc/reference/html/VisionEgg.GUI.AppWindow-class.html
new file mode 100644
index 0000000..2906a4e
--- /dev/null
+++ b/doc/reference/html/VisionEgg.GUI.AppWindow-class.html
@@ -0,0 +1,169 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.GUI.AppWindow</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.GUI-module.html">Module GUI</a> ::
+        Class AppWindow
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.GUI.AppWindow-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class AppWindow</h1><span class="codelink"><a href="VisionEgg.GUI-pysrc.html#AppWindow">source code</a></span><br /><br />
+<pre class="base-tree">
+??-106 --+
+         |
+        <strong class="uidshort">AppWindow</strong>
+</pre>
+
+<hr />
+<pre class="literalblock">
+A GUI Window that can be subclassed for a main application window
+
+</pre><br /><br />
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__init__"></a><span class="summary-sig-name">__init__</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">master</span>=<span class="summary-sig-default">None</span>,
+        <span class="summary-sig-arg">idle_func</span>=<span class="summary-sig-default">lambda: None</span>,
+        <span class="summary-sig-arg">**cnf</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.GUI-pysrc.html#AppWindow.__init__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="idle"></a><span class="summary-sig-name">idle</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.GUI-pysrc.html#AppWindow.idle">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.GUI.GetKeypressDialog-class.html b/doc/reference/html/VisionEgg.GUI.GetKeypressDialog-class.html
new file mode 100644
index 0000000..e372bd1
--- /dev/null
+++ b/doc/reference/html/VisionEgg.GUI.GetKeypressDialog-class.html
@@ -0,0 +1,231 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.GUI.GetKeypressDialog</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.GUI-module.html">Module GUI</a> ::
+        Class GetKeypressDialog
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.GUI.GetKeypressDialog-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class GetKeypressDialog</h1><span class="codelink"><a href="VisionEgg.GUI-pysrc.html#GetKeypressDialog">source code</a></span><br /><br />
+<pre class="base-tree">
+    ??-109 --+    
+             |    
+<a href="VisionEgg.GUI.ToplevelDialog-class.html">ToplevelDialog</a> --+
+                 |
+                <strong class="uidshort">GetKeypressDialog</strong>
+</pre>
+
+<hr />
+<pre class="literalblock">
+Open a dialog box which returns when a valid key is pressed.
+
+Arguments are:
+master - a Tkinter widget (defaults to None)
+title - a string for the title bar of the widget
+text - a string to display as the text in the body of the dialog
+key_list - a list of acceptable keys, e.g. ['q','1','2','<Return>']
+
+The following example will print whatever character was pressed:
+d = GetKeypressDialog(key_list=['q','1','2','<Return>','<Escape>'])
+print d.result
+
+The implementation is somewhat obscure because a new Tk/Tcl
+interpreter may be created if this Dialog is called with no
+master widget.
+
+</pre><br /><br />
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.GUI.GetKeypressDialog-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">title</span>=<span class="summary-sig-default">"Press a key"</span>,
+        <span class="summary-sig-arg">text</span>=<span class="summary-sig-default">"Press a key"</span>,
+        <span class="summary-sig-arg">key_list</span>=<span class="summary-sig-default">[]</span>,
+        <span class="summary-sig-arg">**kw</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.GUI-pysrc.html#GetKeypressDialog.__init__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="keypress"></a><span class="summary-sig-name">keypress</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">tkinter_event</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.GUI-pysrc.html#GetKeypressDialog.keypress">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.GUI.ToplevelDialog-class.html">ToplevelDialog</a></code></b>:
+      <code><a href="VisionEgg.GUI.ToplevelDialog-class.html#destroy">destroy</a></code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Method Details</span></td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">title</span>=<span class="sig-default">"Press a key"</span>,
+        <span class="sig-arg">text</span>=<span class="sig-default">"Press a key"</span>,
+        <span class="sig-arg">key_list</span>=<span class="sig-default">[]</span>,
+        <span class="sig-arg">**kw</span>)</span>
+    <br /><em class="fname">(Constructor)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.GUI-pysrc.html#GetKeypressDialog.__init__">source code</a></span> 
+    </td>
+  </table>
+  
+  
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.GUI.ToplevelDialog-class.html#__init__">ToplevelDialog.__init__</a>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.GUI.GraphicsConfigurationWindow-class.html b/doc/reference/html/VisionEgg.GUI.GraphicsConfigurationWindow-class.html
new file mode 100644
index 0000000..e883267
--- /dev/null
+++ b/doc/reference/html/VisionEgg.GUI.GraphicsConfigurationWindow-class.html
@@ -0,0 +1,236 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.GUI.GraphicsConfigurationWindow</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.GUI-module.html">Module GUI</a> ::
+        Class GraphicsConfigurationWindow
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.GUI.GraphicsConfigurationWindow-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class GraphicsConfigurationWindow</h1><span class="codelink"><a href="VisionEgg.GUI-pysrc.html#GraphicsConfigurationWindow">source code</a></span><br /><br />
+<pre class="base-tree">
+??-105 --+
+         |
+        <strong class="uidshort">GraphicsConfigurationWindow</strong>
+</pre>
+
+<hr />
+<pre class="literalblock">
+Graphics Configuration Window
+
+</pre><br /><br />
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__init__"></a><span class="summary-sig-name">__init__</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">master</span>=<span class="summary-sig-default">None</span>,
+        <span class="summary-sig-arg">**cnf</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.GUI-pysrc.html#GraphicsConfigurationWindow.__init__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="set_gamma_file"></a><span class="summary-sig-name">set_gamma_file</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">dummy_arg</span>=<span class="summary-sig-default">None</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.GUI-pysrc.html#GraphicsConfigurationWindow.set_gamma_file">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="format_string"></a><span class="summary-sig-name">format_string</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">in_str</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.GUI-pysrc.html#GraphicsConfigurationWindow.format_string">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="darwin_maxpriority_tune"></a><span class="summary-sig-name">darwin_maxpriority_tune</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.GUI-pysrc.html#GraphicsConfigurationWindow.darwin_maxpriority_tune">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="save"></a><span class="summary-sig-name">save</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">dummy_arg</span>=<span class="summary-sig-default">None</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.GUI-pysrc.html#GraphicsConfigurationWindow.save">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="start"></a><span class="summary-sig-name">start</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">dummy_arg</span>=<span class="summary-sig-default">None</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.GUI-pysrc.html#GraphicsConfigurationWindow.start">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.GUI.InfoFrame-class.html b/doc/reference/html/VisionEgg.GUI.InfoFrame-class.html
new file mode 100644
index 0000000..90d8da3
--- /dev/null
+++ b/doc/reference/html/VisionEgg.GUI.InfoFrame-class.html
@@ -0,0 +1,163 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.GUI.InfoFrame</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.GUI-module.html">Module GUI</a> ::
+        Class InfoFrame
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.GUI.InfoFrame-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class InfoFrame</h1><span class="codelink"><a href="VisionEgg.GUI-pysrc.html#InfoFrame">source code</a></span><br /><br />
+<pre class="base-tree">
+??-107 --+
+         |
+        <strong class="uidshort">InfoFrame</strong>
+</pre>
+
+<hr />
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__init__"></a><span class="summary-sig-name">__init__</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">master</span>=<span class="summary-sig-default">None</span>,
+        <span class="summary-sig-arg">**cnf</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.GUI-pysrc.html#InfoFrame.__init__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="update"></a><span class="summary-sig-name">update</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.GUI-pysrc.html#InfoFrame.update">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.GUI.ProgressBar-class.html b/doc/reference/html/VisionEgg.GUI.ProgressBar-class.html
new file mode 100644
index 0000000..1738275
--- /dev/null
+++ b/doc/reference/html/VisionEgg.GUI.ProgressBar-class.html
@@ -0,0 +1,194 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.GUI.ProgressBar</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.GUI-module.html">Module GUI</a> ::
+        Class ProgressBar
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.GUI.ProgressBar-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class ProgressBar</h1><span class="codelink"><a href="VisionEgg.GUI-pysrc.html#ProgressBar">source code</a></span><br /><br />
+<pre class="base-tree">
+??-110 --+
+         |
+        <strong class="uidshort">ProgressBar</strong>
+</pre>
+
+<hr />
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__init__"></a><span class="summary-sig-name">__init__</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">master</span>=<span class="summary-sig-default">None</span>,
+        <span class="summary-sig-arg">orientation</span>=<span class="summary-sig-default">"horizontal"</span>,
+        <span class="summary-sig-arg">min</span>=<span class="summary-sig-default">0</span>,
+        <span class="summary-sig-arg">max</span>=<span class="summary-sig-default">100</span>,
+        <span class="summary-sig-arg">width</span>=<span class="summary-sig-default">100</span>,
+        <span class="summary-sig-arg">height</span>=<span class="summary-sig-default">18</span>,
+        <span class="summary-sig-arg">doLabel</span>=<span class="summary-sig-default">1</span>,
+        <span class="summary-sig-arg">fillColor</span>=<span class="summary-sig-default">"LightSteelBlue1"</span>,
+        <span class="summary-sig-arg">background</span>=<span class="summary-sig-default">"gray"</span>,
+        <span class="summary-sig-arg">labelColor</span>=<span class="summary-sig-default">"black"</span>,
+        <span class="summary-sig-arg">labelFont</span>=<span class="summary-sig-default">"Helvetica"</span>,
+        <span class="summary-sig-arg">labelText</span>=<span class="summary-sig-default">""</span>,
+        <span class="summary-sig-arg">labelFormat</span>=<span class="summary-sig-default">"%d%%"</span>,
+        <span class="summary-sig-arg">value</span>=<span class="summary-sig-default">50</span>,
+        <span class="summary-sig-arg">**cnf</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.GUI-pysrc.html#ProgressBar.__init__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="updateProgress"></a><span class="summary-sig-name">updateProgress</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">newValue</span>,
+        <span class="summary-sig-arg">newMax</span>=<span class="summary-sig-default">None</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.GUI-pysrc.html#ProgressBar.updateProgress">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="update"></a><span class="summary-sig-name">update</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.GUI-pysrc.html#ProgressBar.update">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.GUI.ToplevelDialog-class.html b/doc/reference/html/VisionEgg.GUI.ToplevelDialog-class.html
new file mode 100644
index 0000000..4f42fab
--- /dev/null
+++ b/doc/reference/html/VisionEgg.GUI.ToplevelDialog-class.html
@@ -0,0 +1,167 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.GUI.ToplevelDialog</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.GUI-module.html">Module GUI</a> ::
+        Class ToplevelDialog
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.GUI.ToplevelDialog-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class ToplevelDialog</h1><span class="codelink"><a href="VisionEgg.GUI-pysrc.html#ToplevelDialog">source code</a></span><br /><br />
+<pre class="base-tree">
+??-109 --+
+         |
+        <strong class="uidshort">ToplevelDialog</strong>
+</pre>
+
+<hr />
+<pre class="literalblock">
+Base class for a dialog that runs on the top level.
+
+</pre><br /><br />
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__init__"></a><span class="summary-sig-name">__init__</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">**kw</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.GUI-pysrc.html#ToplevelDialog.__init__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="destroy"></a><span class="summary-sig-name">destroy</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.GUI-pysrc.html#ToplevelDialog.destroy">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.Gratings-module.html b/doc/reference/html/VisionEgg.Gratings-module.html
new file mode 100644
index 0000000..824d64a
--- /dev/null
+++ b/doc/reference/html/VisionEgg.Gratings-module.html
@@ -0,0 +1,172 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.Gratings</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        Module Gratings
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.Gratings-module.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== MODULE DESCRIPTION ==================== -->
+<h1 class="epydoc">Module Gratings</h1><span class="codelink"><a href="VisionEgg.Gratings-pysrc.html">source code</a></span><br /><br />
+<pre class="literalblock">
+
+Grating stimuli.
+
+</pre><br /><br />
+
+<!-- ==================== CLASSES ==================== -->
+<a name="section-Classes"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Classes</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.Gratings.LuminanceGratingCommon-class.html" class="summary-name">LuminanceGratingCommon</a><br />
+      Base class with common code to all ways of drawing luminance gratings.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.Gratings.AlphaGratingCommon-class.html" class="summary-name">AlphaGratingCommon</a><br />
+      Base class with common code to all ways of drawing gratings in alpha.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.Gratings.SinGrating2D-class.html" class="summary-name">SinGrating2D</a><br />
+      Sine wave grating stimulus
+
+This is a general-purpose, realtime sine-wave luminace grating
+generator.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.Gratings.SinGrating3D-class.html" class="summary-name">SinGrating3D</a><br />
+      Sine wave grating stimulus texture mapped onto quad in 3D
+
+This is a general-purpose, realtime sine-wave luminace grating
+generator.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.Gratings.NumSamplesTooLargeError-class.html" class="summary-name">NumSamplesTooLargeError</a>
+    </td>
+  </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.Gratings-pysrc.html b/doc/reference/html/VisionEgg.Gratings-pysrc.html
new file mode 100644
index 0000000..8a5cd96
--- /dev/null
+++ b/doc/reference/html/VisionEgg.Gratings-pysrc.html
@@ -0,0 +1,1191 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.Gratings</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        Module Gratings
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.Gratings-pysrc.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<h1 class="epydoc">Source Code for <a href="VisionEgg.Gratings-module.html">Module VisionEgg.Gratings</a></h1>
+<pre class="py-src">
+<a name="L1"></a><tt class="py-lineno">  1</tt>  <tt class="py-line"><tt class="py-comment"># The Vision Egg: Gratings</tt> </tt>
+<a name="L2"></a><tt class="py-lineno">  2</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L3"></a><tt class="py-lineno">  3</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Copyright (C) 2001-2003 Andrew Straw.</tt> </tt>
+<a name="L4"></a><tt class="py-lineno">  4</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Copyright (C) 2005,2008 California Institute of Technology</tt> </tt>
+<a name="L5"></a><tt class="py-lineno">  5</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L6"></a><tt class="py-lineno">  6</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># URL: <http://www.visionegg.org/></tt> </tt>
+<a name="L7"></a><tt class="py-lineno">  7</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L8"></a><tt class="py-lineno">  8</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Distributed under the terms of the GNU Lesser General Public License</tt> </tt>
+<a name="L9"></a><tt class="py-lineno">  9</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># (LGPL). See LICENSE.TXT that came with this file.</tt> </tt>
+<a name="L10"></a><tt class="py-lineno"> 10</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L11"></a><tt class="py-lineno"> 11</tt>  <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L12"></a><tt class="py-lineno"> 12</tt>  <tt class="py-line"><tt class="py-docstring">Grating stimuli.</tt> </tt>
+<a name="L13"></a><tt class="py-lineno"> 13</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L14"></a><tt class="py-lineno"> 14</tt>  <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L15"></a><tt class="py-lineno"> 15</tt>  <tt class="py-line"> </tt>
+<a name="L16"></a><tt class="py-lineno"> 16</tt>  <tt class="py-line"><tt class="py-comment">####################################################################</tt> </tt>
+<a name="L17"></a><tt class="py-lineno"> 17</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L18"></a><tt class="py-lineno"> 18</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#        Import all the necessary packages</tt> </tt>
+<a name="L19"></a><tt class="py-lineno"> 19</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L20"></a><tt class="py-lineno"> 20</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">####################################################################</tt> </tt>
+<a name="L21"></a><tt class="py-lineno"> 21</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L22"></a><tt class="py-lineno"> 22</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">logging</tt>                              <tt class="py-comment"># available in Python 2.3</tt> </tt>
+<a name="L23"></a><tt class="py-lineno"> 23</tt>  <tt class="py-line"> </tt>
+<a name="L24"></a><tt class="py-lineno"> 24</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-0" class="py-name" targets="Package VisionEgg=VisionEgg-module.html"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-0', 'VisionEgg', 'link-0');">VisionEgg</a></tt> </tt>
+<a name="L25"></a><tt class="py-lineno"> 25</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-1" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-1', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-2" class="py-name" targets="Module VisionEgg.Core=VisionEgg.Core-module.html"><a title="VisionEgg.Core" class="py-name" href="#" onclick="return doclink('link-2', 'Core', 'link-2');">Core</a></tt> </tt>
+<a name="L26"></a><tt class="py-lineno"> 26</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-3" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-3', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-4" class="py-name" targets="Module VisionEgg.Textures=VisionEgg.Textures-module.html"><a title="VisionEgg.Textures" class="py-name" href="#" onclick="return doclink('link-4', 'Textures', 'link-4' [...]
+<a name="L27"></a><tt class="py-lineno"> 27</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-5" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-5', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-6" class="py-name" targets="Module VisionEgg.ParameterTypes=VisionEgg.ParameterTypes-module.html"><a title="VisionEgg.ParameterTypes" class="py-name" href="#" onclick="return doclink('link-6', 'P [...]
+<a name="L28"></a><tt class="py-lineno"> 28</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">numpy</tt> </tt>
+<a name="L29"></a><tt class="py-lineno"> 29</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">math</tt><tt class="py-op">,</tt> <tt class="py-name">types</tt><tt class="py-op">,</tt> <tt class="py-name">string</tt> </tt>
+<a name="L30"></a><tt class="py-lineno"> 30</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-7" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-7', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-8" class="py-name" targets="Module VisionEgg.GL=VisionEgg.GL-module.html"><a title="VisionEgg.GL" class="py-name" href="#" onclick="return doclink('link-8', 'GL', 'link-8');">GL</a></tt> <tt clas [...]
+<a name="L31"></a><tt class="py-lineno"> 31</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">_vegl</tt> </tt>
+<a name="L32"></a><tt class="py-lineno"> 32</tt>  <tt class="py-line"> </tt>
+<a name="_get_type_info"></a><div id="_get_type_info-def"><a name="L33"></a><tt class="py-lineno"> 33</tt> <a class="py-toggle" href="#" id="_get_type_info-toggle" onclick="return toggle('_get_type_info');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.Gratings-module.html#_get_type_info">_get_type_info</a><tt class="py-op">(</tt> <tt class="py-param">bitdepth</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_get_type_info-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="_get_type_info-expanded"><a name="L34"></a><tt class="py-lineno"> 34</tt>  <tt class="py-line">    <tt class="py-docstring">"""Private helper function to calculate type info based on bit depth"""</tt> </tt>
+<a name="L35"></a><tt class="py-lineno"> 35</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">bitdepth</tt> <tt class="py-op">==</tt> <tt class="py-number">8</tt><tt class="py-op">:</tt> </tt>
+<a name="L36"></a><tt class="py-lineno"> 36</tt>  <tt class="py-line">        <tt class="py-name">gl_type</tt> <tt class="py-op">=</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_UNSIGNED_BYTE</tt> </tt>
+<a name="L37"></a><tt class="py-lineno"> 37</tt>  <tt class="py-line">        <tt class="py-name">numpy_dtype</tt> <tt class="py-op">=</tt> <tt class="py-name">numpy</tt><tt class="py-op">.</tt><tt class="py-name">uint8</tt> </tt>
+<a name="L38"></a><tt class="py-lineno"> 38</tt>  <tt class="py-line">        <tt class="py-name">max_int_val</tt> <tt class="py-op">=</tt> <tt id="link-9" class="py-name" targets="Class float=float-class.html"><a title="float" class="py-name" href="#" onclick="return doclink('link-9', 'float', 'link-9');">float</a></tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-number">2</tt><tt class="py-op">**</tt><tt class="py-number">8</tt><tt class="py-op">)</tt><tt class="py-op" [...]
+<a name="L39"></a><tt class="py-lineno"> 39</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt class="py-name">bitdepth</tt> <tt class="py-op">==</tt> <tt class="py-number">12</tt><tt class="py-op">:</tt> </tt>
+<a name="L40"></a><tt class="py-lineno"> 40</tt>  <tt class="py-line">        <tt class="py-name">gl_type</tt> <tt class="py-op">=</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_SHORT</tt> </tt>
+<a name="L41"></a><tt class="py-lineno"> 41</tt>  <tt class="py-line">        <tt class="py-name">numpy_dtype</tt> <tt class="py-op">=</tt> <tt class="py-name">numpy</tt><tt class="py-op">.</tt><tt class="py-name">int16</tt> </tt>
+<a name="L42"></a><tt class="py-lineno"> 42</tt>  <tt class="py-line">        <tt class="py-name">max_int_val</tt> <tt class="py-op">=</tt> <tt id="link-10" class="py-name"><a title="float" class="py-name" href="#" onclick="return doclink('link-10', 'float', 'link-9');">float</a></tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-number">2</tt><tt class="py-op">**</tt><tt class="py-number">15</tt><tt class="py-op">)</tt><tt class="py-op">-</tt><tt class="py-number">1</tt>< [...]
+<a name="L43"></a><tt class="py-lineno"> 43</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt class="py-name">bitdepth</tt> <tt class="py-op">==</tt> <tt class="py-number">16</tt><tt class="py-op">:</tt> </tt>
+<a name="L44"></a><tt class="py-lineno"> 44</tt>  <tt class="py-line">        <tt class="py-name">gl_type</tt> <tt class="py-op">=</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_INT</tt> </tt>
+<a name="L45"></a><tt class="py-lineno"> 45</tt>  <tt class="py-line">        <tt class="py-name">numpy_dtype</tt> <tt class="py-op">=</tt> <tt class="py-name">numpy</tt><tt class="py-op">.</tt><tt class="py-name">int32</tt> </tt>
+<a name="L46"></a><tt class="py-lineno"> 46</tt>  <tt class="py-line">        <tt class="py-name">max_int_val</tt> <tt class="py-op">=</tt> <tt id="link-11" class="py-name"><a title="float" class="py-name" href="#" onclick="return doclink('link-11', 'float', 'link-9');">float</a></tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-number">2.</tt><tt class="py-op">**</tt><tt class="py-number">31.</tt><tt class="py-op">)</tt><tt class="py-op">-</tt><tt class="py-number">1</tt [...]
+<a name="L47"></a><tt class="py-lineno"> 47</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L48"></a><tt class="py-lineno"> 48</tt>  <tt class="py-line">        <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">"supported bitdepths are 8, 12, and 16."</tt><tt class="py-op">)</tt> </tt>
+<a name="L49"></a><tt class="py-lineno"> 49</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">gl_type</tt><tt class="py-op">,</tt> <tt class="py-name">numpy_dtype</tt><tt class="py-op">,</tt> <tt class="py-name">max_int_val</tt> </tt>
+</div><a name="L50"></a><tt class="py-lineno"> 50</tt>  <tt class="py-line"> </tt>
+<a name="LuminanceGratingCommon"></a><div id="LuminanceGratingCommon-def"><a name="L51"></a><tt class="py-lineno"> 51</tt> <a class="py-toggle" href="#" id="LuminanceGratingCommon-toggle" onclick="return toggle('LuminanceGratingCommon');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.Gratings.LuminanceGratingCommon-class.html">LuminanceGratingCommon</a><tt class="py-op">(</tt><tt class="py-base-class">VisionEgg</tt><tt class="py-op">.</ [...]
+</div><div id="LuminanceGratingCommon-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="LuminanceGratingCommon-expanded"><a name="L52"></a><tt class="py-lineno"> 52</tt>  <tt class="py-line">    <tt class="py-docstring">"""Base class with common code to all ways of drawing luminance gratings.</tt> </tt>
+<a name="L53"></a><tt class="py-lineno"> 53</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L54"></a><tt class="py-lineno"> 54</tt>  <tt class="py-line"><tt class="py-docstring">    Parameters</tt> </tt>
+<a name="L55"></a><tt class="py-lineno"> 55</tt>  <tt class="py-line"><tt class="py-docstring">    ==========</tt> </tt>
+<a name="L56"></a><tt class="py-lineno"> 56</tt>  <tt class="py-line"><tt class="py-docstring">    bit_depth -- precision with which grating is calculated and sent to OpenGL (UnsignedInteger)</tt> </tt>
+<a name="L57"></a><tt class="py-lineno"> 57</tt>  <tt class="py-line"><tt class="py-docstring">                 Default: 8</tt> </tt>
+<a name="L58"></a><tt class="py-lineno"> 58</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L59"></a><tt class="py-lineno"> 59</tt>  <tt class="py-line"> </tt>
+<a name="L60"></a><tt class="py-lineno"> 60</tt>  <tt class="py-line">    <tt id="link-12" class="py-name" targets="Variable VisionEgg.ClassWithParameters.parameters_and_defaults=VisionEgg.ClassWithParameters-class.html#parameters_and_defaults,Variable VisionEgg.Core.FixationSpot.parameters_and_defaults=VisionEgg.Core.FixationSpot-class.html#parameters_and_defaults,Variable VisionEgg.Core.ProjectionBaseClass.parameters_and_defaults=VisionEgg.Core.ProjectionBaseClass-class.html#parameters [...]
+VisionEgg.Core.FixationSpot.parameters_and_defaults
+VisionEgg.Core.ProjectionBaseClass.parameters_and_defaults
+VisionEgg.Core.Screen.parameters_and_defaults
+VisionEgg.Core.Viewport.parameters_and_defaults
+VisionEgg.Daq.Buffered.parameters_and_defaults
+VisionEgg.Dots.DotArea2D.parameters_and_defaults
+VisionEgg.FlowControl.Presentation.parameters_and_defaults
+VisionEgg.Gratings.AlphaGratingCommon.parameters_and_defaults
+VisionEgg.Gratings.LuminanceGratingCommon.parameters_and_defaults
+VisionEgg.Gratings.SinGrating2D.parameters_and_defaults
+VisionEgg.Gratings.SinGrating3D.parameters_and_defaults
+VisionEgg.MoreStimuli.Arrow.parameters_and_defaults
+VisionEgg.MoreStimuli.FilledCircle.parameters_and_defaults
+VisionEgg.MoreStimuli.Rectangle3D.parameters_and_defaults
+VisionEgg.MoreStimuli.Target2D.parameters_and_defaults
+VisionEgg.PyroApps.EPhysGUI.Loop.parameters_and_defaults
+VisionEgg.SphereMap.AzElGrid.parameters_and_defaults
+VisionEgg.SphereMap.SphereGrating.parameters_and_defaults
+VisionEgg.SphereMap.SphereMap.parameters_and_defaults
+VisionEgg.SphereMap.SphereWindow.parameters_and_defaults
+VisionEgg.Text.BitmapText.parameters_and_defaults
+VisionEgg.Text.GlutTextBase.parameters_and_defaults
+VisionEgg.Text.StrokeText.parameters_and_defaults
+VisionEgg.Text.Text.parameters_and_defaults
+VisionEgg.Textures.FixationCross.parameters_and_defaults
+VisionEgg.Textures.SpinningDrum.parameters_and_defaults
+VisionEgg.Textures.TextureStimulus.parameters_and_defaults
+VisionEgg.Textures.TextureStimulus3D.parameters_and_defaults
+VisionEgg.Textures.TextureStimulusBaseClass.parameters_and_defaults
+VisionEgg.WrappedText.WrappedText.parameters_and_defaults" class="py-name" href="#" onclick="return doclink('link-12', 'parameters_and_defaults', 'link-12');">parameters_and_defaults</a></tt> <tt class="py-op">=</tt> <tt id="link-13" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-13', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-14" class="py-name" targets="Class VisionEgg.ParameterDefinition=VisionEgg.Parame [...]
+<a name="L61"></a><tt class="py-lineno"> 61</tt>  <tt class="py-line">        <tt class="py-string">'bit_depth'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-number">8</tt><tt class="py-op">,</tt> </tt>
+<a name="L62"></a><tt class="py-lineno"> 62</tt>  <tt class="py-line">                     <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-15" class="py-name" targets="Class VisionEgg.ParameterTypes.UnsignedInteger=VisionEgg.ParameterTypes.UnsignedInteger-class.html"><a title="VisionEgg.ParameterTypes.UnsignedInteger" class="py-name" href="#" onclick="return doclink('link-15', 'UnsignedInteger', 'link-15');">UnsignedInteger</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L63"></a><tt class="py-lineno"> 63</tt>  <tt class="py-line">                     <tt class="py-string">'precision with which grating is calculated and sent to OpenGL'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L64"></a><tt class="py-lineno"> 64</tt>  <tt class="py-line">        <tt class="py-op">}</tt><tt class="py-op">)</tt> </tt>
+<a name="L65"></a><tt class="py-lineno"> 65</tt>  <tt class="py-line"> </tt>
+<a name="L66"></a><tt class="py-lineno"> 66</tt>  <tt class="py-line">    <tt class="py-name">__slots__</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt> </tt>
+<a name="L67"></a><tt class="py-lineno"> 67</tt>  <tt class="py-line">        <tt class="py-string">'gl_internal_format'</tt><tt class="py-op">,</tt> </tt>
+<a name="L68"></a><tt class="py-lineno"> 68</tt>  <tt class="py-line">        <tt class="py-string">'format'</tt><tt class="py-op">,</tt> </tt>
+<a name="L69"></a><tt class="py-lineno"> 69</tt>  <tt class="py-line">        <tt class="py-string">'gl_type'</tt><tt class="py-op">,</tt> </tt>
+<a name="L70"></a><tt class="py-lineno"> 70</tt>  <tt class="py-line">        <tt class="py-string">'numpy_dtype'</tt><tt class="py-op">,</tt> </tt>
+<a name="L71"></a><tt class="py-lineno"> 71</tt>  <tt class="py-line">        <tt class="py-string">'max_int_val'</tt><tt class="py-op">,</tt> </tt>
+<a name="L72"></a><tt class="py-lineno"> 72</tt>  <tt class="py-line">        <tt class="py-string">'cached_bit_depth'</tt><tt class="py-op">,</tt> </tt>
+<a name="L73"></a><tt class="py-lineno"> 73</tt>  <tt class="py-line">        <tt class="py-op">)</tt> </tt>
+<a name="L74"></a><tt class="py-lineno"> 74</tt>  <tt class="py-line"> </tt>
+<a name="LuminanceGratingCommon.calculate_bit_depth_dependencies"></a><div id="LuminanceGratingCommon.calculate_bit_depth_dependencies-def"><a name="L75"></a><tt class="py-lineno"> 75</tt> <a class="py-toggle" href="#" id="LuminanceGratingCommon.calculate_bit_depth_dependencies-toggle" onclick="return toggle('LuminanceGratingCommon.calculate_bit_depth_dependencies');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.Gratings.LuminanceGra [...]
+</div><div id="LuminanceGratingCommon.calculate_bit_depth_dependencies-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="LuminanceGratingCommon.calculate_bit_depth_dependencies-expanded"><a name="L76"></a><tt class="py-lineno"> 76</tt>  <tt class="py-line">        <tt class="py-docstring">"""Calculate a number of parameters dependent on bit depth."""</tt> </tt>
+<a name="L77"></a><tt class="py-lineno"> 77</tt>  <tt class="py-line">        <tt class="py-name">bit_depth_warning</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
+<a name="L78"></a><tt class="py-lineno"> 78</tt>  <tt class="py-line">        <tt class="py-name">p</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt> <tt class="py-comment"># shorthand</tt> </tt>
+<a name="L79"></a><tt class="py-lineno"> 79</tt>  <tt class="py-line"> </tt>
+<a name="L80"></a><tt class="py-lineno"> 80</tt>  <tt class="py-line">        <tt class="py-name">red_bits</tt> <tt class="py-op">=</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glGetIntegerv</tt><tt class="py-op">(</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_RED_BITS</tt> <tt class="py-op">)</tt> </tt>
+<a name="L81"></a><tt class="py-lineno"> 81</tt>  <tt class="py-line">        <tt class="py-name">green_bits</tt> <tt class="py-op">=</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glGetIntegerv</tt><tt class="py-op">(</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_GREEN_BITS</tt> <tt class="py-op">)</tt> </tt>
+<a name="L82"></a><tt class="py-lineno"> 82</tt>  <tt class="py-line">        <tt class="py-name">blue_bits</tt> <tt class="py-op">=</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glGetIntegerv</tt><tt class="py-op">(</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_BLUE_BITS</tt> <tt class="py-op">)</tt> </tt>
+<a name="L83"></a><tt class="py-lineno"> 83</tt>  <tt class="py-line">        <tt class="py-name">min_bits</tt> <tt class="py-op">=</tt> <tt class="py-name">min</tt><tt class="py-op">(</tt> <tt class="py-op">(</tt><tt class="py-name">red_bits</tt><tt class="py-op">,</tt><tt class="py-name">green_bits</tt><tt class="py-op">,</tt><tt class="py-name">blue_bits</tt><tt class="py-op">)</tt> <tt class="py-op">)</tt> </tt>
+<a name="L84"></a><tt class="py-lineno"> 84</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">min_bits</tt> <tt class="py-op"><</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">bit_depth</tt><tt class="py-op">:</tt> </tt>
+<a name="L85"></a><tt class="py-lineno"> 85</tt>  <tt class="py-line">            <tt id="link-16" class="py-name" targets="Variable VisionEgg.logger=VisionEgg-module.html#logger"><a title="VisionEgg.logger" class="py-name" href="#" onclick="return doclink('link-16', 'logger', 'link-16');">logger</a></tt> <tt class="py-op">=</tt> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">getLogger</tt><tt class="py-op">(</tt><tt class="py-string">'VisionEgg.Gratings'</tt [...]
+<a name="L86"></a><tt class="py-lineno"> 86</tt>  <tt class="py-line">            <tt id="link-17" class="py-name"><a title="VisionEgg.logger" class="py-name" href="#" onclick="return doclink('link-17', 'logger', 'link-16');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">warning</tt><tt class="py-op">(</tt><tt class="py-string">"Requested bit depth of %d in "</tt> </tt>
+<a name="L87"></a><tt class="py-lineno"> 87</tt>  <tt class="py-line">                           <tt class="py-string">"LuminanceGratingCommon, which is "</tt> </tt>
+<a name="L88"></a><tt class="py-lineno"> 88</tt>  <tt class="py-line">                           <tt class="py-string">"greater than your current OpenGL context "</tt> </tt>
+<a name="L89"></a><tt class="py-lineno"> 89</tt>  <tt class="py-line">                           <tt class="py-string">"supports (%d)."</tt><tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">bit_depth</tt><tt class="py-op">,</tt><tt class="py-name">min_bits</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L90"></a><tt class="py-lineno"> 90</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">gl_internal_format</tt> <tt class="py-op">=</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_LUMINANCE</tt> </tt>
+<a name="L91"></a><tt class="py-lineno"> 91</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">format</tt> <tt class="py-op">=</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_LUMINANCE</tt> </tt>
+<a name="L92"></a><tt class="py-lineno"> 92</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">gl_type</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">numpy_dtype</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">max_int_val</tt> <tt class="py-op">=</tt> <tt class="py-name">_get_type_info</tt><tt class="py-op">(</tt> <tt class=" [...]
+<a name="L93"></a><tt class="py-lineno"> 93</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">cached_bit_depth</tt> <tt class="py-op">=</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">bit_depth</tt> </tt>
+</div></div><a name="L94"></a><tt class="py-lineno"> 94</tt>  <tt class="py-line"> </tt>
+<a name="AlphaGratingCommon"></a><div id="AlphaGratingCommon-def"><a name="L95"></a><tt class="py-lineno"> 95</tt> <a class="py-toggle" href="#" id="AlphaGratingCommon-toggle" onclick="return toggle('AlphaGratingCommon');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.Gratings.AlphaGratingCommon-class.html">AlphaGratingCommon</a><tt class="py-op">(</tt><tt class="py-base-class">VisionEgg</tt><tt class="py-op">.</tt><tt class="py-base-cl [...]
+</div><div id="AlphaGratingCommon-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="AlphaGratingCommon-expanded"><a name="L96"></a><tt class="py-lineno"> 96</tt>  <tt class="py-line">    <tt class="py-docstring">"""Base class with common code to all ways of drawing gratings in alpha.</tt> </tt>
+<a name="L97"></a><tt class="py-lineno"> 97</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L98"></a><tt class="py-lineno"> 98</tt>  <tt class="py-line"><tt class="py-docstring">    This class is currently not used by any other classes.</tt> </tt>
+<a name="L99"></a><tt class="py-lineno"> 99</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L100"></a><tt class="py-lineno">100</tt>  <tt class="py-line"><tt class="py-docstring">    Parameters</tt> </tt>
+<a name="L101"></a><tt class="py-lineno">101</tt>  <tt class="py-line"><tt class="py-docstring">    ==========</tt> </tt>
+<a name="L102"></a><tt class="py-lineno">102</tt>  <tt class="py-line"><tt class="py-docstring">    bit_depth -- precision with which grating is calculated and sent to OpenGL (UnsignedInteger)</tt> </tt>
+<a name="L103"></a><tt class="py-lineno">103</tt>  <tt class="py-line"><tt class="py-docstring">                 Default: 8</tt> </tt>
+<a name="L104"></a><tt class="py-lineno">104</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L105"></a><tt class="py-lineno">105</tt>  <tt class="py-line"> </tt>
+<a name="L106"></a><tt class="py-lineno">106</tt>  <tt class="py-line">    <tt id="link-18" class="py-name"><a title="VisionEgg.ClassWithParameters.parameters_and_defaults
+VisionEgg.Core.FixationSpot.parameters_and_defaults
+VisionEgg.Core.ProjectionBaseClass.parameters_and_defaults
+VisionEgg.Core.Screen.parameters_and_defaults
+VisionEgg.Core.Viewport.parameters_and_defaults
+VisionEgg.Daq.Buffered.parameters_and_defaults
+VisionEgg.Dots.DotArea2D.parameters_and_defaults
+VisionEgg.FlowControl.Presentation.parameters_and_defaults
+VisionEgg.Gratings.AlphaGratingCommon.parameters_and_defaults
+VisionEgg.Gratings.LuminanceGratingCommon.parameters_and_defaults
+VisionEgg.Gratings.SinGrating2D.parameters_and_defaults
+VisionEgg.Gratings.SinGrating3D.parameters_and_defaults
+VisionEgg.MoreStimuli.Arrow.parameters_and_defaults
+VisionEgg.MoreStimuli.FilledCircle.parameters_and_defaults
+VisionEgg.MoreStimuli.Rectangle3D.parameters_and_defaults
+VisionEgg.MoreStimuli.Target2D.parameters_and_defaults
+VisionEgg.PyroApps.EPhysGUI.Loop.parameters_and_defaults
+VisionEgg.SphereMap.AzElGrid.parameters_and_defaults
+VisionEgg.SphereMap.SphereGrating.parameters_and_defaults
+VisionEgg.SphereMap.SphereMap.parameters_and_defaults
+VisionEgg.SphereMap.SphereWindow.parameters_and_defaults
+VisionEgg.Text.BitmapText.parameters_and_defaults
+VisionEgg.Text.GlutTextBase.parameters_and_defaults
+VisionEgg.Text.StrokeText.parameters_and_defaults
+VisionEgg.Text.Text.parameters_and_defaults
+VisionEgg.Textures.FixationCross.parameters_and_defaults
+VisionEgg.Textures.SpinningDrum.parameters_and_defaults
+VisionEgg.Textures.TextureStimulus.parameters_and_defaults
+VisionEgg.Textures.TextureStimulus3D.parameters_and_defaults
+VisionEgg.Textures.TextureStimulusBaseClass.parameters_and_defaults
+VisionEgg.WrappedText.WrappedText.parameters_and_defaults" class="py-name" href="#" onclick="return doclink('link-18', 'parameters_and_defaults', 'link-12');">parameters_and_defaults</a></tt> <tt class="py-op">=</tt> <tt id="link-19" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-19', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-20" class="py-name"><a title="VisionEgg.ParameterDefinition" class="py-name" href [...]
+<a name="L107"></a><tt class="py-lineno">107</tt>  <tt class="py-line">        <tt class="py-string">'bit_depth'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-number">8</tt><tt class="py-op">,</tt> </tt>
+<a name="L108"></a><tt class="py-lineno">108</tt>  <tt class="py-line">                     <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-21" class="py-name"><a title="VisionEgg.ParameterTypes.UnsignedInteger" class="py-name" href="#" onclick="return doclink('link-21', 'UnsignedInteger', 'link-15');">UnsignedInteger</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L109"></a><tt class="py-lineno">109</tt>  <tt class="py-line">                     <tt class="py-string">'precision with which grating is calculated and sent to OpenGL'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L110"></a><tt class="py-lineno">110</tt>  <tt class="py-line">        <tt class="py-op">}</tt><tt class="py-op">)</tt> </tt>
+<a name="L111"></a><tt class="py-lineno">111</tt>  <tt class="py-line"> </tt>
+<a name="L112"></a><tt class="py-lineno">112</tt>  <tt class="py-line">    <tt class="py-name">__slots__</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt> </tt>
+<a name="L113"></a><tt class="py-lineno">113</tt>  <tt class="py-line">        <tt class="py-string">'gl_internal_format'</tt><tt class="py-op">,</tt> </tt>
+<a name="L114"></a><tt class="py-lineno">114</tt>  <tt class="py-line">        <tt class="py-string">'format'</tt><tt class="py-op">,</tt> </tt>
+<a name="L115"></a><tt class="py-lineno">115</tt>  <tt class="py-line">        <tt class="py-string">'gl_type'</tt><tt class="py-op">,</tt> </tt>
+<a name="L116"></a><tt class="py-lineno">116</tt>  <tt class="py-line">        <tt class="py-string">'numpy_dtype'</tt><tt class="py-op">,</tt> </tt>
+<a name="L117"></a><tt class="py-lineno">117</tt>  <tt class="py-line">        <tt class="py-string">'max_int_val'</tt><tt class="py-op">,</tt> </tt>
+<a name="L118"></a><tt class="py-lineno">118</tt>  <tt class="py-line">        <tt class="py-string">'cached_bit_depth'</tt><tt class="py-op">,</tt> </tt>
+<a name="L119"></a><tt class="py-lineno">119</tt>  <tt class="py-line">        <tt class="py-op">)</tt> </tt>
+<a name="L120"></a><tt class="py-lineno">120</tt>  <tt class="py-line"> </tt>
+<a name="AlphaGratingCommon.calculate_bit_depth_dependencies"></a><div id="AlphaGratingCommon.calculate_bit_depth_dependencies-def"><a name="L121"></a><tt class="py-lineno">121</tt> <a class="py-toggle" href="#" id="AlphaGratingCommon.calculate_bit_depth_dependencies-toggle" onclick="return toggle('AlphaGratingCommon.calculate_bit_depth_dependencies');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.Gratings.AlphaGratingCommon-class.ht [...]
+</div><div id="AlphaGratingCommon.calculate_bit_depth_dependencies-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="AlphaGratingCommon.calculate_bit_depth_dependencies-expanded"><a name="L122"></a><tt class="py-lineno">122</tt>  <tt class="py-line">        <tt class="py-docstring">"""Calculate a number of parameters dependent on bit depth."""</tt> </tt>
+<a name="L123"></a><tt class="py-lineno">123</tt>  <tt class="py-line">        <tt class="py-name">p</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt> <tt class="py-comment"># shorthand</tt> </tt>
+<a name="L124"></a><tt class="py-lineno">124</tt>  <tt class="py-line">        <tt class="py-name">alpha_bit_depth</tt> <tt class="py-op">=</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glGetIntegerv</tt><tt class="py-op">(</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_ALPHA_BITS</tt> <tt class="py-op">)</tt> </tt>
+<a name="L125"></a><tt class="py-lineno">125</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">alpha_bit_depth</tt> <tt class="py-op"><</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">bit_depth</tt><tt class="py-op">:</tt> </tt>
+<a name="L126"></a><tt class="py-lineno">126</tt>  <tt class="py-line">            <tt id="link-22" class="py-name"><a title="VisionEgg.logger" class="py-name" href="#" onclick="return doclink('link-22', 'logger', 'link-16');">logger</a></tt> <tt class="py-op">=</tt> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">getLogger</tt><tt class="py-op">(</tt><tt class="py-string">'VisionEgg.Gratings'</tt><tt class="py-op">)</tt> </tt>
+<a name="L127"></a><tt class="py-lineno">127</tt>  <tt class="py-line">            <tt id="link-23" class="py-name"><a title="VisionEgg.logger" class="py-name" href="#" onclick="return doclink('link-23', 'logger', 'link-16');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">warning</tt><tt class="py-op">(</tt><tt class="py-string">"Requested bit depth of %d, which is "</tt> </tt>
+<a name="L128"></a><tt class="py-lineno">128</tt>  <tt class="py-line">                           <tt class="py-string">"greater than your current OpenGL context "</tt> </tt>
+<a name="L129"></a><tt class="py-lineno">129</tt>  <tt class="py-line">                           <tt class="py-string">"supports (%d)."</tt><tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">bit_depth</tt><tt class="py-op">,</tt><tt class="py-name">min_bits</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L130"></a><tt class="py-lineno">130</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">gl_internal_format</tt> <tt class="py-op">=</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_ALPHA</tt> </tt>
+<a name="L131"></a><tt class="py-lineno">131</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">format</tt> <tt class="py-op">=</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_ALPHA</tt> </tt>
+<a name="L132"></a><tt class="py-lineno">132</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">gl_type</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">numpy_dtype</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">max_int_val</tt> <tt class="py-op">=</tt> <tt class="py-name">_get_type_info</tt><tt class="py-op">(</tt> <tt class= [...]
+<a name="L133"></a><tt class="py-lineno">133</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">cached_bit_depth</tt> <tt class="py-op">=</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">bit_depth</tt> </tt>
+</div></div><a name="L134"></a><tt class="py-lineno">134</tt>  <tt class="py-line"> </tt>
+<a name="SinGrating2D"></a><div id="SinGrating2D-def"><a name="L135"></a><tt class="py-lineno">135</tt> <a class="py-toggle" href="#" id="SinGrating2D-toggle" onclick="return toggle('SinGrating2D');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.Gratings.SinGrating2D-class.html">SinGrating2D</a><tt class="py-op">(</tt><tt class="py-base-class">LuminanceGratingCommon</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="SinGrating2D-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="SinGrating2D-expanded"><a name="L136"></a><tt class="py-lineno">136</tt>  <tt class="py-line">    <tt class="py-docstring">"""Sine wave grating stimulus</tt> </tt>
+<a name="L137"></a><tt class="py-lineno">137</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L138"></a><tt class="py-lineno">138</tt>  <tt class="py-line"><tt class="py-docstring">    This is a general-purpose, realtime sine-wave luminace grating</tt> </tt>
+<a name="L139"></a><tt class="py-lineno">139</tt>  <tt class="py-line"><tt class="py-docstring">    generator. To acheive an arbitrary orientation, this class rotates</tt> </tt>
+<a name="L140"></a><tt class="py-lineno">140</tt>  <tt class="py-line"><tt class="py-docstring">    a textured quad.  To draw a grating with sides that always remain</tt> </tt>
+<a name="L141"></a><tt class="py-lineno">141</tt>  <tt class="py-line"><tt class="py-docstring">    horizontal and vertical, draw a large grating in a small viewport.</tt> </tt>
+<a name="L142"></a><tt class="py-lineno">142</tt>  <tt class="py-line"><tt class="py-docstring">    (The viewport will clip anything beyond its edges.)</tt> </tt>
+<a name="L143"></a><tt class="py-lineno">143</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L144"></a><tt class="py-lineno">144</tt>  <tt class="py-line"><tt class="py-docstring">    Parameters</tt> </tt>
+<a name="L145"></a><tt class="py-lineno">145</tt>  <tt class="py-line"><tt class="py-docstring">    ==========</tt> </tt>
+<a name="L146"></a><tt class="py-lineno">146</tt>  <tt class="py-line"><tt class="py-docstring">    anchor                      -- specifies how position parameter is interpreted (String)</tt> </tt>
+<a name="L147"></a><tt class="py-lineno">147</tt>  <tt class="py-line"><tt class="py-docstring">                                   Default: center</tt> </tt>
+<a name="L148"></a><tt class="py-lineno">148</tt>  <tt class="py-line"><tt class="py-docstring">    bit_depth                   -- precision with which grating is calculated and sent to OpenGL (UnsignedInteger)</tt> </tt>
+<a name="L149"></a><tt class="py-lineno">149</tt>  <tt class="py-line"><tt class="py-docstring">                                   Inherited from LuminanceGratingCommon</tt> </tt>
+<a name="L150"></a><tt class="py-lineno">150</tt>  <tt class="py-line"><tt class="py-docstring">                                   Default: 8</tt> </tt>
+<a name="L151"></a><tt class="py-lineno">151</tt>  <tt class="py-line"><tt class="py-docstring">    color1                      -- (AnyOf(Sequence3 of Real or Sequence4 of Real))</tt> </tt>
+<a name="L152"></a><tt class="py-lineno">152</tt>  <tt class="py-line"><tt class="py-docstring">                                   Default: (1.0, 1.0, 1.0)</tt> </tt>
+<a name="L153"></a><tt class="py-lineno">153</tt>  <tt class="py-line"><tt class="py-docstring">    color2                      -- optional color with which to perform interpolation with color1 in RGB space (AnyOf(Sequence3 of Real or Sequence4 of Real))</tt> </tt>
+<a name="L154"></a><tt class="py-lineno">154</tt>  <tt class="py-line"><tt class="py-docstring">                                   Default: (determined at runtime)</tt> </tt>
+<a name="L155"></a><tt class="py-lineno">155</tt>  <tt class="py-line"><tt class="py-docstring">    contrast                    -- (Real)</tt> </tt>
+<a name="L156"></a><tt class="py-lineno">156</tt>  <tt class="py-line"><tt class="py-docstring">                                   Default: 1.0</tt> </tt>
+<a name="L157"></a><tt class="py-lineno">157</tt>  <tt class="py-line"><tt class="py-docstring">    depth                       -- (Real)</tt> </tt>
+<a name="L158"></a><tt class="py-lineno">158</tt>  <tt class="py-line"><tt class="py-docstring">                                   Default: (determined at runtime)</tt> </tt>
+<a name="L159"></a><tt class="py-lineno">159</tt>  <tt class="py-line"><tt class="py-docstring">    ignore_time                 -- (Boolean)</tt> </tt>
+<a name="L160"></a><tt class="py-lineno">160</tt>  <tt class="py-line"><tt class="py-docstring">                                   Default: False</tt> </tt>
+<a name="L161"></a><tt class="py-lineno">161</tt>  <tt class="py-line"><tt class="py-docstring">    mask                        -- optional masking function (Instance of <class 'VisionEgg.Textures.Mask2D'>)</tt> </tt>
+<a name="L162"></a><tt class="py-lineno">162</tt>  <tt class="py-line"><tt class="py-docstring">                                   Default: (determined at runtime)</tt> </tt>
+<a name="L163"></a><tt class="py-lineno">163</tt>  <tt class="py-line"><tt class="py-docstring">    max_alpha                   -- (Real)</tt> </tt>
+<a name="L164"></a><tt class="py-lineno">164</tt>  <tt class="py-line"><tt class="py-docstring">                                   Default: 1.0</tt> </tt>
+<a name="L165"></a><tt class="py-lineno">165</tt>  <tt class="py-line"><tt class="py-docstring">    num_samples                 -- (UnsignedInteger)</tt> </tt>
+<a name="L166"></a><tt class="py-lineno">166</tt>  <tt class="py-line"><tt class="py-docstring">                                   Default: 512</tt> </tt>
+<a name="L167"></a><tt class="py-lineno">167</tt>  <tt class="py-line"><tt class="py-docstring">    on                          -- draw stimulus? (Boolean)</tt> </tt>
+<a name="L168"></a><tt class="py-lineno">168</tt>  <tt class="py-line"><tt class="py-docstring">                                   Default: True</tt> </tt>
+<a name="L169"></a><tt class="py-lineno">169</tt>  <tt class="py-line"><tt class="py-docstring">    orientation                 -- (Real)</tt> </tt>
+<a name="L170"></a><tt class="py-lineno">170</tt>  <tt class="py-line"><tt class="py-docstring">                                   Default: 0.0</tt> </tt>
+<a name="L171"></a><tt class="py-lineno">171</tt>  <tt class="py-line"><tt class="py-docstring">    pedestal                    -- (Real)</tt> </tt>
+<a name="L172"></a><tt class="py-lineno">172</tt>  <tt class="py-line"><tt class="py-docstring">                                   Default: 0.5</tt> </tt>
+<a name="L173"></a><tt class="py-lineno">173</tt>  <tt class="py-line"><tt class="py-docstring">    phase_at_t0                 -- (Real)</tt> </tt>
+<a name="L174"></a><tt class="py-lineno">174</tt>  <tt class="py-line"><tt class="py-docstring">                                   Default: 0.0</tt> </tt>
+<a name="L175"></a><tt class="py-lineno">175</tt>  <tt class="py-line"><tt class="py-docstring">    position                    -- (units: eye coordinates) (Sequence2 of Real)</tt> </tt>
+<a name="L176"></a><tt class="py-lineno">176</tt>  <tt class="py-line"><tt class="py-docstring">                                   Default: (320.0, 240.0)</tt> </tt>
+<a name="L177"></a><tt class="py-lineno">177</tt>  <tt class="py-line"><tt class="py-docstring">    recalculate_phase_tolerance -- (Real)</tt> </tt>
+<a name="L178"></a><tt class="py-lineno">178</tt>  <tt class="py-line"><tt class="py-docstring">                                   Default: (determined at runtime)</tt> </tt>
+<a name="L179"></a><tt class="py-lineno">179</tt>  <tt class="py-line"><tt class="py-docstring">    size                        -- defines coordinate size of grating (in eye coordinates) (Sequence2 of Real)</tt> </tt>
+<a name="L180"></a><tt class="py-lineno">180</tt>  <tt class="py-line"><tt class="py-docstring">                                   Default: (640.0, 480.0)</tt> </tt>
+<a name="L181"></a><tt class="py-lineno">181</tt>  <tt class="py-line"><tt class="py-docstring">    spatial_freq                -- frequency defined relative to coordinates defined in size parameter (units: cycles/eye_coord_unit) (Real)</tt> </tt>
+<a name="L182"></a><tt class="py-lineno">182</tt>  <tt class="py-line"><tt class="py-docstring">                                   Default: 0.0078125</tt> </tt>
+<a name="L183"></a><tt class="py-lineno">183</tt>  <tt class="py-line"><tt class="py-docstring">    t0_time_sec_absolute        -- (Real)</tt> </tt>
+<a name="L184"></a><tt class="py-lineno">184</tt>  <tt class="py-line"><tt class="py-docstring">                                   Default: (determined at runtime)</tt> </tt>
+<a name="L185"></a><tt class="py-lineno">185</tt>  <tt class="py-line"><tt class="py-docstring">    temporal_freq_hz            -- (Real)</tt> </tt>
+<a name="L186"></a><tt class="py-lineno">186</tt>  <tt class="py-line"><tt class="py-docstring">                                   Default: 5.0</tt> </tt>
+<a name="L187"></a><tt class="py-lineno">187</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L188"></a><tt class="py-lineno">188</tt>  <tt class="py-line"> </tt>
+<a name="L189"></a><tt class="py-lineno">189</tt>  <tt class="py-line">    <tt id="link-24" class="py-name"><a title="VisionEgg.ClassWithParameters.parameters_and_defaults
+VisionEgg.Core.FixationSpot.parameters_and_defaults
+VisionEgg.Core.ProjectionBaseClass.parameters_and_defaults
+VisionEgg.Core.Screen.parameters_and_defaults
+VisionEgg.Core.Viewport.parameters_and_defaults
+VisionEgg.Daq.Buffered.parameters_and_defaults
+VisionEgg.Dots.DotArea2D.parameters_and_defaults
+VisionEgg.FlowControl.Presentation.parameters_and_defaults
+VisionEgg.Gratings.AlphaGratingCommon.parameters_and_defaults
+VisionEgg.Gratings.LuminanceGratingCommon.parameters_and_defaults
+VisionEgg.Gratings.SinGrating2D.parameters_and_defaults
+VisionEgg.Gratings.SinGrating3D.parameters_and_defaults
+VisionEgg.MoreStimuli.Arrow.parameters_and_defaults
+VisionEgg.MoreStimuli.FilledCircle.parameters_and_defaults
+VisionEgg.MoreStimuli.Rectangle3D.parameters_and_defaults
+VisionEgg.MoreStimuli.Target2D.parameters_and_defaults
+VisionEgg.PyroApps.EPhysGUI.Loop.parameters_and_defaults
+VisionEgg.SphereMap.AzElGrid.parameters_and_defaults
+VisionEgg.SphereMap.SphereGrating.parameters_and_defaults
+VisionEgg.SphereMap.SphereMap.parameters_and_defaults
+VisionEgg.SphereMap.SphereWindow.parameters_and_defaults
+VisionEgg.Text.BitmapText.parameters_and_defaults
+VisionEgg.Text.GlutTextBase.parameters_and_defaults
+VisionEgg.Text.StrokeText.parameters_and_defaults
+VisionEgg.Text.Text.parameters_and_defaults
+VisionEgg.Textures.FixationCross.parameters_and_defaults
+VisionEgg.Textures.SpinningDrum.parameters_and_defaults
+VisionEgg.Textures.TextureStimulus.parameters_and_defaults
+VisionEgg.Textures.TextureStimulus3D.parameters_and_defaults
+VisionEgg.Textures.TextureStimulusBaseClass.parameters_and_defaults
+VisionEgg.WrappedText.WrappedText.parameters_and_defaults" class="py-name" href="#" onclick="return doclink('link-24', 'parameters_and_defaults', 'link-12');">parameters_and_defaults</a></tt> <tt class="py-op">=</tt> <tt id="link-25" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-25', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-26" class="py-name"><a title="VisionEgg.ParameterDefinition" class="py-name" href [...]
+<a name="L190"></a><tt class="py-lineno">190</tt>  <tt class="py-line">        <tt class="py-string">'on'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-name">True</tt><tt class="py-op">,</tt> </tt>
+<a name="L191"></a><tt class="py-lineno">191</tt>  <tt class="py-line">              <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-27" class="py-name" targets="Class VisionEgg.ParameterTypes.Boolean=VisionEgg.ParameterTypes.Boolean-class.html"><a title="VisionEgg.ParameterTypes.Boolean" class="py-name" href="#" onclick="return doclink('link-27', 'Boolean', 'link-27');">Boolean</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L192"></a><tt class="py-lineno">192</tt>  <tt class="py-line">              <tt class="py-string">"draw stimulus?"</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L193"></a><tt class="py-lineno">193</tt>  <tt class="py-line">        <tt class="py-string">'mask'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-comment"># allows window onto otherwise (tilted) rectangular grating</tt> </tt>
+<a name="L194"></a><tt class="py-lineno">194</tt>  <tt class="py-line">                <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-28" class="py-name" targets="Class VisionEgg.ParameterTypes.Instance=VisionEgg.ParameterTypes.Instance-class.html"><a title="VisionEgg.ParameterTypes.Instance" class="py-name" href="#" onclick="return doclink('link-28', 'Instance', 'link-28');">Instance</a></tt><tt class="py-op">(</tt><tt id="link-29" class="py-name"><a title="Vision [...]
+<a name="L195"></a><tt class="py-lineno">195</tt>  <tt class="py-line">                <tt class="py-string">"optional masking function"</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L196"></a><tt class="py-lineno">196</tt>  <tt class="py-line">        <tt class="py-string">'contrast'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-number">1.0</tt><tt class="py-op">,</tt> </tt>
+<a name="L197"></a><tt class="py-lineno">197</tt>  <tt class="py-line">                    <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-32" class="py-name" targets="Class VisionEgg.ParameterTypes.Real=VisionEgg.ParameterTypes.Real-class.html"><a title="VisionEgg.ParameterTypes.Real" class="py-name" href="#" onclick="return doclink('link-32', 'Real', 'link-32');">Real</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L198"></a><tt class="py-lineno">198</tt>  <tt class="py-line">        <tt class="py-string">'pedestal'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-number">0.5</tt><tt class="py-op">,</tt> </tt>
+<a name="L199"></a><tt class="py-lineno">199</tt>  <tt class="py-line">                    <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-33" class="py-name"><a title="VisionEgg.ParameterTypes.Real" class="py-name" href="#" onclick="return doclink('link-33', 'Real', 'link-32');">Real</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L200"></a><tt class="py-lineno">200</tt>  <tt class="py-line">        <tt class="py-string">'position'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-number">320.0</tt><tt class="py-op">,</tt><tt class="py-number">240.0</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-comment"># in eye coordinates</tt> </tt>
+<a name="L201"></a><tt class="py-lineno">201</tt>  <tt class="py-line">                    <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-34" class="py-name" targets="Class VisionEgg.ParameterTypes.Sequence2=VisionEgg.ParameterTypes.Sequence2-class.html"><a title="VisionEgg.ParameterTypes.Sequence2" class="py-name" href="#" onclick="return doclink('link-34', 'Sequence2', 'link-34');">Sequence2</a></tt><tt class="py-op">(</tt><tt class="py-name">ve_types</tt><tt cla [...]
+<a name="L202"></a><tt class="py-lineno">202</tt>  <tt class="py-line">                    <tt class="py-string">"(units: eye coordinates)"</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L203"></a><tt class="py-lineno">203</tt>  <tt class="py-line">        <tt class="py-string">'anchor'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-string">'center'</tt><tt class="py-op">,</tt> </tt>
+<a name="L204"></a><tt class="py-lineno">204</tt>  <tt class="py-line">                  <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-36" class="py-name" targets="Class VisionEgg.ParameterTypes.String=VisionEgg.ParameterTypes.String-class.html"><a title="VisionEgg.ParameterTypes.String" class="py-name" href="#" onclick="return doclink('link-36', 'String', 'link-36');">String</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L205"></a><tt class="py-lineno">205</tt>  <tt class="py-line">                  <tt class="py-string">"specifies how position parameter is interpreted"</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L206"></a><tt class="py-lineno">206</tt>  <tt class="py-line">        <tt class="py-string">'depth'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-comment"># if not None, turns on depth testing and allows for occlusion</tt> </tt>
+<a name="L207"></a><tt class="py-lineno">207</tt>  <tt class="py-line">                 <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-37" class="py-name"><a title="VisionEgg.ParameterTypes.Real" class="py-name" href="#" onclick="return doclink('link-37', 'Real', 'link-32');">Real</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L208"></a><tt class="py-lineno">208</tt>  <tt class="py-line">        <tt class="py-string">'size'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-number">640.0</tt><tt class="py-op">,</tt><tt class="py-number">480.0</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L209"></a><tt class="py-lineno">209</tt>  <tt class="py-line">                <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-38" class="py-name"><a title="VisionEgg.ParameterTypes.Sequence2" class="py-name" href="#" onclick="return doclink('link-38', 'Sequence2', 'link-34');">Sequence2</a></tt><tt class="py-op">(</tt><tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-39" class="py-name"><a title="VisionEgg.ParameterTypes.Real" class="py- [...]
+<a name="L210"></a><tt class="py-lineno">210</tt>  <tt class="py-line">                <tt class="py-string">"defines coordinate size of grating (in eye coordinates)"</tt><tt class="py-op">,</tt> </tt>
+<a name="L211"></a><tt class="py-lineno">211</tt>  <tt class="py-line">                <tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L212"></a><tt class="py-lineno">212</tt>  <tt class="py-line">        <tt class="py-string">'spatial_freq'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-number">1.0</tt><tt class="py-op">/</tt><tt class="py-number">128.0</tt><tt class="py-op">,</tt> <tt class="py-comment"># cycles/eye coord units</tt> </tt>
+<a name="L213"></a><tt class="py-lineno">213</tt>  <tt class="py-line">                        <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-40" class="py-name"><a title="VisionEgg.ParameterTypes.Real" class="py-name" href="#" onclick="return doclink('link-40', 'Real', 'link-32');">Real</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L214"></a><tt class="py-lineno">214</tt>  <tt class="py-line">                        <tt class="py-string">"frequency defined relative to coordinates defined in size parameter (units: cycles/eye_coord_unit)"</tt><tt class="py-op">,</tt> </tt>
+<a name="L215"></a><tt class="py-lineno">215</tt>  <tt class="py-line">                        <tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L216"></a><tt class="py-lineno">216</tt>  <tt class="py-line">        <tt class="py-string">'temporal_freq_hz'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-number">5.0</tt><tt class="py-op">,</tt> <tt class="py-comment"># hz</tt> </tt>
+<a name="L217"></a><tt class="py-lineno">217</tt>  <tt class="py-line">                            <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-41" class="py-name"><a title="VisionEgg.ParameterTypes.Real" class="py-name" href="#" onclick="return doclink('link-41', 'Real', 'link-32');">Real</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L218"></a><tt class="py-lineno">218</tt>  <tt class="py-line">        <tt class="py-string">'t0_time_sec_absolute'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-comment"># Will be assigned during first call to draw()</tt> </tt>
+<a name="L219"></a><tt class="py-lineno">219</tt>  <tt class="py-line">                                <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-42" class="py-name"><a title="VisionEgg.ParameterTypes.Real" class="py-name" href="#" onclick="return doclink('link-42', 'Real', 'link-32');">Real</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L220"></a><tt class="py-lineno">220</tt>  <tt class="py-line">        <tt class="py-string">'ignore_time'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-name">False</tt><tt class="py-op">,</tt> <tt class="py-comment"># ignore temporal frequency variable - allow control purely with phase_at_t0</tt> </tt>
+<a name="L221"></a><tt class="py-lineno">221</tt>  <tt class="py-line">                       <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-43" class="py-name"><a title="VisionEgg.ParameterTypes.Boolean" class="py-name" href="#" onclick="return doclink('link-43', 'Boolean', 'link-27');">Boolean</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L222"></a><tt class="py-lineno">222</tt>  <tt class="py-line">        <tt class="py-string">'phase_at_t0'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-number">0.0</tt><tt class="py-op">,</tt> <tt class="py-comment"># degrees [0.0-360.0]</tt> </tt>
+<a name="L223"></a><tt class="py-lineno">223</tt>  <tt class="py-line">                       <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-44" class="py-name"><a title="VisionEgg.ParameterTypes.Real" class="py-name" href="#" onclick="return doclink('link-44', 'Real', 'link-32');">Real</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L224"></a><tt class="py-lineno">224</tt>  <tt class="py-line">        <tt class="py-string">'orientation'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-number">0.0</tt><tt class="py-op">,</tt> <tt class="py-comment"># 0=right, 90=up</tt> </tt>
+<a name="L225"></a><tt class="py-lineno">225</tt>  <tt class="py-line">                       <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-45" class="py-name"><a title="VisionEgg.ParameterTypes.Real" class="py-name" href="#" onclick="return doclink('link-45', 'Real', 'link-32');">Real</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L226"></a><tt class="py-lineno">226</tt>  <tt class="py-line">        <tt class="py-string">'num_samples'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-number">512</tt><tt class="py-op">,</tt> <tt class="py-comment"># number of spatial samples, should be a power of 2</tt> </tt>
+<a name="L227"></a><tt class="py-lineno">227</tt>  <tt class="py-line">                       <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-46" class="py-name"><a title="VisionEgg.ParameterTypes.UnsignedInteger" class="py-name" href="#" onclick="return doclink('link-46', 'UnsignedInteger', 'link-15');">UnsignedInteger</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L228"></a><tt class="py-lineno">228</tt>  <tt class="py-line">        <tt class="py-string">'max_alpha'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-number">1.0</tt><tt class="py-op">,</tt> <tt class="py-comment"># controls "opacity": 1.0 = completely opaque, 0.0 = completely transparent</tt> </tt>
+<a name="L229"></a><tt class="py-lineno">229</tt>  <tt class="py-line">                     <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-47" class="py-name"><a title="VisionEgg.ParameterTypes.Real" class="py-name" href="#" onclick="return doclink('link-47', 'Real', 'link-32');">Real</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L230"></a><tt class="py-lineno">230</tt>  <tt class="py-line">        <tt class="py-string">'color1'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-number">1.0</tt><tt class="py-op">,</tt> <tt class="py-number">1.0</tt><tt class="py-op">,</tt> <tt class="py-number">1.0</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-comment"># alpha is ignored (if given) -- use max_alpha parameter</tt> </tt>
+<a name="L231"></a><tt class="py-lineno">231</tt>  <tt class="py-line">                  <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-48" class="py-name" targets="Class VisionEgg.ParameterTypes.AnyOf=VisionEgg.ParameterTypes.AnyOf-class.html"><a title="VisionEgg.ParameterTypes.AnyOf" class="py-name" href="#" onclick="return doclink('link-48', 'AnyOf', 'link-48');">AnyOf</a></tt><tt class="py-op">(</tt><tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt i [...]
+<a name="L232"></a><tt class="py-lineno">232</tt>  <tt class="py-line">                                 <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-51" class="py-name" targets="Class VisionEgg.ParameterTypes.Sequence4=VisionEgg.ParameterTypes.Sequence4-class.html"><a title="VisionEgg.ParameterTypes.Sequence4" class="py-name" href="#" onclick="return doclink('link-51', 'Sequence4', 'link-51');">Sequence4</a></tt><tt class="py-op">(</tt><tt class="py-name">ve_type [...]
+<a name="L233"></a><tt class="py-lineno">233</tt>  <tt class="py-line">        <tt class="py-string">'color2'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-comment"># perform interpolation with color1 in RGB space.</tt> </tt>
+<a name="L234"></a><tt class="py-lineno">234</tt>  <tt class="py-line">                  <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-53" class="py-name"><a title="VisionEgg.ParameterTypes.AnyOf" class="py-name" href="#" onclick="return doclink('link-53', 'AnyOf', 'link-48');">AnyOf</a></tt><tt class="py-op">(</tt><tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-54" class="py-name"><a title="VisionEgg.ParameterTypes.Sequence3" class="py-name" [...]
+<a name="L235"></a><tt class="py-lineno">235</tt>  <tt class="py-line">                                 <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-56" class="py-name"><a title="VisionEgg.ParameterTypes.Sequence4" class="py-name" href="#" onclick="return doclink('link-56', 'Sequence4', 'link-51');">Sequence4</a></tt><tt class="py-op">(</tt><tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-57" class="py-name"><a title="VisionEgg.ParameterTypes [...]
+<a name="L236"></a><tt class="py-lineno">236</tt>  <tt class="py-line">                  <tt class="py-string">"optional color with which to perform interpolation with color1 in RGB space"</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L237"></a><tt class="py-lineno">237</tt>  <tt class="py-line">        <tt class="py-string">'recalculate_phase_tolerance'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-comment"># only recalculate texture when phase is changed by more than this amount, None for always recalculate. (Saves time.)</tt> </tt>
+<a name="L238"></a><tt class="py-lineno">238</tt>  <tt class="py-line">                                       <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-58" class="py-name"><a title="VisionEgg.ParameterTypes.Real" class="py-name" href="#" onclick="return doclink('link-58', 'Real', 'link-32');">Real</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L239"></a><tt class="py-lineno">239</tt>  <tt class="py-line">        <tt class="py-op">}</tt><tt class="py-op">)</tt> </tt>
+<a name="L240"></a><tt class="py-lineno">240</tt>  <tt class="py-line"> </tt>
+<a name="L241"></a><tt class="py-lineno">241</tt>  <tt class="py-line">    <tt class="py-name">__slots__</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt> </tt>
+<a name="L242"></a><tt class="py-lineno">242</tt>  <tt class="py-line">        <tt class="py-string">'_texture_object_id'</tt><tt class="py-op">,</tt> </tt>
+<a name="L243"></a><tt class="py-lineno">243</tt>  <tt class="py-line">        <tt class="py-string">'_last_phase'</tt><tt class="py-op">,</tt> </tt>
+<a name="L244"></a><tt class="py-lineno">244</tt>  <tt class="py-line">        <tt class="py-op">)</tt> </tt>
+<a name="L245"></a><tt class="py-lineno">245</tt>  <tt class="py-line"> </tt>
+<a name="SinGrating2D.__init__"></a><div id="SinGrating2D.__init__-def"><a name="L246"></a><tt class="py-lineno">246</tt> <a class="py-toggle" href="#" id="SinGrating2D.__init__-toggle" onclick="return toggle('SinGrating2D.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.Gratings.SinGrating2D-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt><tt class="py-op">**</t [...]
+</div><div id="SinGrating2D.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SinGrating2D.__init__-expanded"><a name="L247"></a><tt class="py-lineno">247</tt>  <tt class="py-line">        <tt id="link-59" class="py-name" targets="Class VisionEgg.Gratings.LuminanceGratingCommon=VisionEgg.Gratings.LuminanceGratingCommon-class.html"><a title="VisionEgg.Gratings.LuminanceGratingCommon" class="py-name" href="#" onclick="return doclink('link-59', 'LuminanceG [...]
+VisionEgg.Configuration.Config.__init__
+VisionEgg.Core.FixationSpot.__init__
+VisionEgg.Core.FrameTimer.__init__
+VisionEgg.Core.ModelView.__init__
+VisionEgg.Core.OrthographicProjection.__init__
+VisionEgg.Core.OrthographicProjectionNoZClip.__init__
+VisionEgg.Core.PerspectiveProjection.__init__
+VisionEgg.Core.Projection.__init__
+VisionEgg.Core.ProjectionBaseClass.__init__
+VisionEgg.Core.Screen.__init__
+VisionEgg.Core.SimplePerspectiveProjection.__init__
+VisionEgg.Core.Stimulus.__init__
+VisionEgg.Core.Viewport.__init__
+VisionEgg.Daq.Channel.__init__
+VisionEgg.Daq.DaqMode.__init__
+VisionEgg.Daq.Device.__init__
+VisionEgg.Daq.Functionality.__init__
+VisionEgg.Daq.SignalType.__init__
+VisionEgg.DaqKeyboard.KeyboardTriggerInController.__init__
+VisionEgg.DaqLPT.LPTChannel.__init__
+VisionEgg.DaqLPT.LPTDevice.__init__
+VisionEgg.DaqLPT.LPTTriggerInController.__init__
+VisionEgg.DaqLPT.LPTTriggerOutController.__init__
+VisionEgg.Deprecated.Message.__init__
+VisionEgg.Dots.DotArea2D.__init__
+VisionEgg.FlowControl.ConstantController.__init__
+VisionEgg.FlowControl.Controller.__init__
+VisionEgg.FlowControl.EncapsulatedController.__init__
+VisionEgg.FlowControl.EvalStringController.__init__
+VisionEgg.FlowControl.ExecStringController.__init__
+VisionEgg.FlowControl.FunctionController.__init__
+VisionEgg.FlowControl.Presentation.__init__
+VisionEgg.GLTrace.Wrapper.__init__
+VisionEgg.GUI.AppWindow.__init__
+VisionEgg.GUI.GetKeypressDialog.__init__
+VisionEgg.GUI.GraphicsConfigurationWindow.__init__
+VisionEgg.GUI.InfoFrame.__init__
+VisionEgg.GUI.ProgressBar.__init__
+VisionEgg.GUI.ToplevelDialog.__init__
+VisionEgg.Gratings.SinGrating2D.__init__
+VisionEgg.Gratings.SinGrating3D.__init__
+VisionEgg.MoreStimuli.Arrow.__init__
+VisionEgg.MoreStimuli.FilledCircle.__init__
+VisionEgg.MoreStimuli.Rectangle3D.__init__
+VisionEgg.MoreStimuli.Target2D.__init__
+VisionEgg.ParameterTypes.AnyOf.__init__
+VisionEgg.ParameterTypes.Instance.__init__
+VisionEgg.ParameterTypes.Sequence.__init__
+VisionEgg.ParameterTypes.SubClass.__init__
+VisionEgg.PyroApps.AST_ext.AST_Visitor.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalMetaParameters.__init__
+VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.__init__
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.__init__
+VisionEgg.PyroApps.DropinGUI.DropinMetaParameters.__init__
+VisionEgg.PyroApps.DropinServer.DropinMetaController.__init__
+VisionEgg.PyroApps.EPhysGUI.AppWindow.__init__
+VisionEgg.PyroApps.EPhysGUI.BarButton.__init__
+VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase.__init__
+VisionEgg.PyroApps.EPhysGUI.GammaFrame.__init__
+VisionEgg.PyroApps.EPhysGUI.ImageSequenceLauncher.__init__
+VisionEgg.PyroApps.EPhysGUI.Loop.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopContainedObject.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopParamDialog.__init__
+VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.__init__
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.__init__
+VisionEgg.PyroApps.EPhysServer.EPhysServer.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingMetaParameters.__init__
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.GridGUI.GridControlFrame.__init__
+VisionEgg.PyroApps.GridGUI.GridMetaParameters.__init__
+VisionEgg.PyroApps.GridServer.GridMetaController.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetMetaParameters.__init__
+VisionEgg.PyroApps.MouseTargetServer.MousePositionController.__init__
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetOrientationController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetPositionController.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.CallbackEntry.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionParameters.__init__
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingMetaParameters.__init__
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumMetaParameters.__init__
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.__init__
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.__init__
+VisionEgg.PyroApps.TargetGUI.TargetMetaParameters.__init__
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.__init__
+VisionEgg.PyroClient.PyroClient.__init__
+VisionEgg.PyroHelpers.PyroConstantController.__init__
+VisionEgg.PyroHelpers.PyroEncapsulatedController.__init__
+VisionEgg.PyroHelpers.PyroEvalStringController.__init__
+VisionEgg.PyroHelpers.PyroExecStringController.__init__
+VisionEgg.PyroHelpers.PyroListenController.__init__
+VisionEgg.PyroHelpers.PyroLocalDictController.__init__
+VisionEgg.PyroHelpers.PyroServer.__init__
+VisionEgg.QuickTime.MovieTexture.__init__
+VisionEgg.ResponseControl.KeyboardResponseController.__init__
+VisionEgg.ResponseControl.ResponseController.__init__
+VisionEgg.SphereMap.AzElGrid.__init__
+VisionEgg.SphereMap.SphereGrating.__init__
+VisionEgg.SphereMap.SphereMap.__init__
+VisionEgg.SphereMap.SphereWindow.__init__
+VisionEgg.TCPController.SocketListenController.__init__
+VisionEgg.TCPController.TCPController.__init__
+VisionEgg.TCPController.TCPServer.__init__
+VisionEgg.Text.BitmapText.__init__
+VisionEgg.Text.GlutTextBase.__init__
+VisionEgg.Text.StrokeText.__init__
+VisionEgg.Text.Text.__init__
+VisionEgg.Textures.FixationCross.__init__
+VisionEgg.Textures.Mask2D.__init__
+VisionEgg.Textures.SpinningDrum.__init__
+VisionEgg.Textures.Texture.__init__
+VisionEgg.Textures.TextureFromFile.__init__
+VisionEgg.Textures.TextureObject.__init__
+VisionEgg.Textures.TextureStimulusBaseClass.__init__
+VisionEgg.ThreeDeeMath.TransformMatrix.__init__
+VisionEgg.WrappedText.WrappedText.__init__
+VisionEgg.qtmovie.Movie.__init__
+VisionEgg.qtmovie.Rect.__init__" class="py-name" href="#" onclick="return doclink('link-60', '__init__', 'link-60');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt><tt class="py-op">**</tt><tt class="py-name">kw</tt><tt class="py-op">)</tt> </tt>
+<a name="L248"></a><tt class="py-lineno">248</tt>  <tt class="py-line"> </tt>
+<a name="L249"></a><tt class="py-lineno">249</tt>  <tt class="py-line">        <tt class="py-name">p</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt> <tt class="py-comment"># shorthand</tt> </tt>
+<a name="L250"></a><tt class="py-lineno">250</tt>  <tt class="py-line"> </tt>
+<a name="L251"></a><tt class="py-lineno">251</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_texture_object_id</tt> <tt class="py-op">=</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glGenTextures</tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="L252"></a><tt class="py-lineno">252</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">mask</tt><tt class="py-op">:</tt> </tt>
+<a name="L253"></a><tt class="py-lineno">253</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glActiveTextureARB</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE0_ARB</tt><tt class="py-op">)</tt> </tt>
+<a name="L254"></a><tt class="py-lineno">254</tt>  <tt class="py-line">        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glBindTexture</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE_1D</tt><tt class="py-op">,</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_texture_object_id</tt><tt class="py-op">)</tt> </tt>
+<a name="L255"></a><tt class="py-lineno">255</tt>  <tt class="py-line"> </tt>
+<a name="L256"></a><tt class="py-lineno">256</tt>  <tt class="py-line">        <tt class="py-comment"># Do error-checking on texture to make sure it will load</tt> </tt>
+<a name="L257"></a><tt class="py-lineno">257</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">max_dim</tt> <tt class="py-op">=</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glGetIntegerv</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_MAX_TEXTURE_SIZE</tt><tt class="py-op">)</tt> </tt>
+<a name="L258"></a><tt class="py-lineno">258</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">num_samples</tt> <tt class="py-op">></tt> <tt class="py-name">max_dim</tt><tt class="py-op">:</tt> </tt>
+<a name="L259"></a><tt class="py-lineno">259</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt id="link-61" class="py-name" targets="Class VisionEgg.Gratings.NumSamplesTooLargeError=VisionEgg.Gratings.NumSamplesTooLargeError-class.html"><a title="VisionEgg.Gratings.NumSamplesTooLargeError" class="py-name" href="#" onclick="return doclink('link-61', 'NumSamplesTooLargeError', 'link-61');">NumSamplesTooLargeError</a></tt><tt class="py-op">(</tt><tt class="py-strin [...]
+<a name="L260"></a><tt class="py-lineno">260</tt>  <tt class="py-line"> </tt>
+<a name="L261"></a><tt class="py-lineno">261</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-62" class="py-name" targets="Method VisionEgg.Gratings.AlphaGratingCommon.calculate_bit_depth_dependencies()=VisionEgg.Gratings.AlphaGratingCommon-class.html#calculate_bit_depth_dependencies,Method VisionEgg.Gratings.LuminanceGratingCommon.calculate_bit_depth_dependencies()=VisionEgg.Gratings.LuminanceGratingCommon-class.html#calculate_bit_depth [...]
+VisionEgg.Gratings.LuminanceGratingCommon.calculate_bit_depth_dependencies" class="py-name" href="#" onclick="return doclink('link-62', 'calculate_bit_depth_dependencies', 'link-62');">calculate_bit_depth_dependencies</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L262"></a><tt class="py-lineno">262</tt>  <tt class="py-line"> </tt>
+<a name="L263"></a><tt class="py-lineno">263</tt>  <tt class="py-line">        <tt class="py-name">w</tt> <tt class="py-op">=</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt id="link-63" class="py-name" targets="Variable VisionEgg.Core.Screen.size=VisionEgg.Core.Screen-class.html#size"><a title="VisionEgg.Core.Screen.size" class="py-name" href="#" onclick="return doclink('link-63', 'size', 'link-63');">size</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class= [...]
+<a name="L264"></a><tt class="py-lineno">264</tt>  <tt class="py-line">        <tt class="py-name">inc</tt> <tt class="py-op">=</tt> <tt class="py-name">w</tt><tt class="py-op">/</tt><tt id="link-64" class="py-name"><a title="float" class="py-name" href="#" onclick="return doclink('link-64', 'float', 'link-9');">float</a></tt><tt class="py-op">(</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">num_samples</tt><tt class="py-op">)</tt> </tt>
+<a name="L265"></a><tt class="py-lineno">265</tt>  <tt class="py-line">        <tt class="py-name">phase</tt> <tt class="py-op">=</tt> <tt class="py-number">0.0</tt> <tt class="py-comment"># this data won't get used - don't care about phase</tt> </tt>
+<a name="L266"></a><tt class="py-lineno">266</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_last_phase</tt> <tt class="py-op">=</tt> <tt class="py-name">phase</tt> </tt>
+<a name="L267"></a><tt class="py-lineno">267</tt>  <tt class="py-line">        <tt class="py-name">floating_point_sin</tt> <tt class="py-op">=</tt> <tt class="py-name">numpy</tt><tt class="py-op">.</tt><tt class="py-name">sin</tt><tt class="py-op">(</tt><tt class="py-number">2.0</tt><tt class="py-op">*</tt><tt class="py-name">math</tt><tt class="py-op">.</tt><tt class="py-name">pi</tt><tt class="py-op">*</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">spatial_fr [...]
+<a name="L268"></a><tt class="py-lineno">268</tt>  <tt class="py-line">        <tt class="py-name">floating_point_sin</tt> <tt class="py-op">=</tt> <tt class="py-name">numpy</tt><tt class="py-op">.</tt><tt class="py-name">clip</tt><tt class="py-op">(</tt><tt class="py-name">floating_point_sin</tt><tt class="py-op">,</tt><tt class="py-number">0.0</tt><tt class="py-op">,</tt><tt class="py-number">1.0</tt><tt class="py-op">)</tt> <tt class="py-comment"># allow square wave generation if cont [...]
+<a name="L269"></a><tt class="py-lineno">269</tt>  <tt class="py-line">        <tt class="py-name">texel_data</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">floating_point_sin</tt><tt class="py-op">*</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">max_int_val</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">astype</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-na [...]
+<a name="L270"></a><tt class="py-lineno">270</tt>  <tt class="py-line"> </tt>
+<a name="L271"></a><tt class="py-lineno">271</tt>  <tt class="py-line">        <tt class="py-comment"># Because the MAX_TEXTURE_SIZE method is insensitive to the current</tt> </tt>
+<a name="L272"></a><tt class="py-lineno">272</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># state of the video system, another check must be done using</tt> </tt>
+<a name="L273"></a><tt class="py-lineno">273</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># "proxy textures".</tt> </tt>
+<a name="L274"></a><tt class="py-lineno">274</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glTexImage1D</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_PROXY_TEXTURE_1D</tt><tt class="py-op">,</tt>            <tt class="py-comment"># target</tt> </tt>
+<a name="L275"></a><tt class="py-lineno">275</tt>  <tt class="py-line">                        <tt class="py-number">0</tt><tt class="py-op">,</tt>                                 <tt class="py-comment"># level</tt> </tt>
+<a name="L276"></a><tt class="py-lineno">276</tt>  <tt class="py-line">                        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">gl_internal_format</tt><tt class="py-op">,</tt>           <tt class="py-comment"># video RAM internal format</tt> </tt>
+<a name="L277"></a><tt class="py-lineno">277</tt>  <tt class="py-line">                        <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">num_samples</tt><tt class="py-op">,</tt>                     <tt class="py-comment"># width</tt> </tt>
+<a name="L278"></a><tt class="py-lineno">278</tt>  <tt class="py-line">                        <tt class="py-number">0</tt><tt class="py-op">,</tt>                                 <tt class="py-comment"># border</tt> </tt>
+<a name="L279"></a><tt class="py-lineno">279</tt>  <tt class="py-line">                        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">format</tt><tt class="py-op">,</tt>                       <tt class="py-comment"># format of texel data</tt> </tt>
+<a name="L280"></a><tt class="py-lineno">280</tt>  <tt class="py-line">                        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">gl_type</tt><tt class="py-op">,</tt>                      <tt class="py-comment"># type of texel data</tt> </tt>
+<a name="L281"></a><tt class="py-lineno">281</tt>  <tt class="py-line">                        <tt class="py-name">texel_data</tt><tt class="py-op">)</tt>                        <tt class="py-comment"># texel data (irrelevant for proxy)</tt> </tt>
+<a name="L282"></a><tt class="py-lineno">282</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glGetTexLevelParameteriv</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_PROXY_TEXTURE_1D</tt><tt class="py-op">,</tt> <tt class="py-comment"># Need PyOpenGL >= 2.0</tt> </tt>
+<a name="L283"></a><tt class="py-lineno">283</tt>  <tt class="py-line">                                       <tt class="py-number">0</tt><tt class="py-op">,</tt> </tt>
+<a name="L284"></a><tt class="py-lineno">284</tt>  <tt class="py-line">                                       <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE_WIDTH</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt>
+<a name="L285"></a><tt class="py-lineno">285</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt id="link-66" class="py-name"><a title="VisionEgg.Gratings.NumSamplesTooLargeError" class="py-name" href="#" onclick="return doclink('link-66', 'NumSamplesTooLargeError', 'link-61');">NumSamplesTooLargeError</a></tt><tt class="py-op">(</tt><tt class="py-string">"Grating num_samples is too wide for your video system!"</tt><tt class="py-op">)</tt> </tt>
+<a name="L286"></a><tt class="py-lineno">286</tt>  <tt class="py-line"> </tt>
+<a name="L287"></a><tt class="py-lineno">287</tt>  <tt class="py-line">        <tt class="py-comment"># If we got here, it worked and we can load the texture for real.</tt> </tt>
+<a name="L288"></a><tt class="py-lineno">288</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glTexImage1D</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE_1D</tt><tt class="py-op">,</tt>                  <tt class="py-comment"># target</tt> </tt>
+<a name="L289"></a><tt class="py-lineno">289</tt>  <tt class="py-line">                        <tt class="py-number">0</tt><tt class="py-op">,</tt>                                 <tt class="py-comment"># level</tt> </tt>
+<a name="L290"></a><tt class="py-lineno">290</tt>  <tt class="py-line">                        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">gl_internal_format</tt><tt class="py-op">,</tt>           <tt class="py-comment"># video RAM internal format</tt> </tt>
+<a name="L291"></a><tt class="py-lineno">291</tt>  <tt class="py-line">                        <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">num_samples</tt><tt class="py-op">,</tt>                     <tt class="py-comment"># width</tt> </tt>
+<a name="L292"></a><tt class="py-lineno">292</tt>  <tt class="py-line">                        <tt class="py-number">0</tt><tt class="py-op">,</tt>                                 <tt class="py-comment"># border</tt> </tt>
+<a name="L293"></a><tt class="py-lineno">293</tt>  <tt class="py-line">                        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">format</tt><tt class="py-op">,</tt>                       <tt class="py-comment"># format of texel data</tt> </tt>
+<a name="L294"></a><tt class="py-lineno">294</tt>  <tt class="py-line">                        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">gl_type</tt><tt class="py-op">,</tt>                      <tt class="py-comment"># type of texel data</tt> </tt>
+<a name="L295"></a><tt class="py-lineno">295</tt>  <tt class="py-line">                        <tt class="py-name">texel_data</tt><tt class="py-op">)</tt>                        <tt class="py-comment"># texel data</tt> </tt>
+<a name="L296"></a><tt class="py-lineno">296</tt>  <tt class="py-line"> </tt>
+<a name="L297"></a><tt class="py-lineno">297</tt>  <tt class="py-line">        <tt class="py-comment"># Set texture object defaults</tt> </tt>
+<a name="L298"></a><tt class="py-lineno">298</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glTexParameteri</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE_1D</tt><tt class="py-op">,</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE_WRAP_S</tt><tt class="py-op">,</tt><tt class="py-name">gl</tt><tt class="py [...]
+<a name="L299"></a><tt class="py-lineno">299</tt>  <tt class="py-line">        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glTexParameteri</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE_1D</tt><tt class="py-op">,</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE_WRAP_T</tt><tt class="py-op">,</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-nam [...]
+<a name="L300"></a><tt class="py-lineno">300</tt>  <tt class="py-line">        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glTexParameteri</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE_1D</tt><tt class="py-op">,</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE_MAG_FILTER</tt><tt class="py-op">,</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py [...]
+<a name="L301"></a><tt class="py-lineno">301</tt>  <tt class="py-line">        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glTexParameteri</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE_1D</tt><tt class="py-op">,</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE_MIN_FILTER</tt><tt class="py-op">,</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py [...]
+<a name="L302"></a><tt class="py-lineno">302</tt>  <tt class="py-line"> </tt>
+<a name="L303"></a><tt class="py-lineno">303</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">color2</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L304"></a><tt class="py-lineno">304</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt id="link-67" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-67', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-68" class="py-name"><a title="VisionEgg.Core" class="py-name" href="#" onclick="return doclink('link-68', 'Core', 'link-2');">Core</a></tt><tt class="py-op">.</tt><tt class="py-name">g [...]
+<a name="L305"></a><tt class="py-lineno">305</tt>  <tt class="py-line">                <tt id="link-71" class="py-name"><a title="VisionEgg.logger" class="py-name" href="#" onclick="return doclink('link-71', 'logger', 'link-16');">logger</a></tt> <tt class="py-op">=</tt> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">getLogger</tt><tt class="py-op">(</tt><tt class="py-string">'VisionEgg.Gratings'</tt><tt class="py-op">)</tt> </tt>
+<a name="L306"></a><tt class="py-lineno">306</tt>  <tt class="py-line">                <tt id="link-72" class="py-name"><a title="VisionEgg.logger" class="py-name" href="#" onclick="return doclink('link-72', 'logger', 'link-16');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">warning</tt><tt class="py-op">(</tt><tt class="py-string">"Your video card and driver have known "</tt> </tt>
+<a name="L307"></a><tt class="py-lineno">307</tt>  <tt class="py-line">                               <tt class="py-string">"bugs which prevent them from rendering "</tt> </tt>
+<a name="L308"></a><tt class="py-lineno">308</tt>  <tt class="py-line">                               <tt class="py-string">"color gratings properly."</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L309"></a><tt class="py-lineno">309</tt>  <tt class="py-line"> </tt>
+<a name="SinGrating2D.__del__"></a><div id="SinGrating2D.__del__-def"><a name="L310"></a><tt class="py-lineno">310</tt> <a class="py-toggle" href="#" id="SinGrating2D.__del__-toggle" onclick="return toggle('SinGrating2D.__del__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.Gratings.SinGrating2D-class.html#__del__">__del__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="SinGrating2D.__del__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SinGrating2D.__del__-expanded"><a name="L311"></a><tt class="py-lineno">311</tt>  <tt class="py-line">        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glDeleteTextures</tt><tt class="py-op">(</tt> <tt class="py-op">[</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_texture_object_id</tt><tt class="py-op">]</tt> <tt clas [...]
+</div><a name="L312"></a><tt class="py-lineno">312</tt>  <tt class="py-line"> </tt>
+<a name="SinGrating2D.draw"></a><div id="SinGrating2D.draw-def"><a name="L313"></a><tt class="py-lineno">313</tt> <a class="py-toggle" href="#" id="SinGrating2D.draw-toggle" onclick="return toggle('SinGrating2D.draw');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.Gratings.SinGrating2D-class.html#draw">draw</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="SinGrating2D.draw-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SinGrating2D.draw-expanded"><a name="L314"></a><tt class="py-lineno">314</tt>  <tt class="py-line">        <tt class="py-name">p</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt> <tt class="py-comment"># shorthand</tt> </tt>
+<a name="L315"></a><tt class="py-lineno">315</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">on</tt><tt class="py-op">:</tt> </tt>
+<a name="L316"></a><tt class="py-lineno">316</tt>  <tt class="py-line">            <tt class="py-comment"># calculate center</tt> </tt>
+<a name="L317"></a><tt class="py-lineno">317</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">center</tt> <tt class="py-op">=</tt> <tt id="link-73" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-73', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt class="py-name">_get_center</tt><tt class="py-op">(</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">position</tt> [...]
+<a name="L318"></a><tt class="py-lineno">318</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">mask</tt><tt class="py-op">:</tt> </tt>
+<a name="L319"></a><tt class="py-lineno">319</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glActiveTextureARB</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE0_ARB</tt><tt class="py-op">)</tt> </tt>
+<a name="L320"></a><tt class="py-lineno">320</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glBindTexture</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE_1D</tt><tt class="py-op">,</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_texture_object_id</tt><tt class="py-op">)</tt> </tt>
+<a name="L321"></a><tt class="py-lineno">321</tt>  <tt class="py-line"> </tt>
+<a name="L322"></a><tt class="py-lineno">322</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glEnable</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE_1D</tt><tt class="py-op">)</tt> </tt>
+<a name="L323"></a><tt class="py-lineno">323</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glDisable</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE_2D</tt><tt class="py-op">)</tt> </tt>
+<a name="L324"></a><tt class="py-lineno">324</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">bit_depth</tt> <tt class="py-op">!=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">cached_bit_depth</tt><tt class="py-op">:</tt> </tt>
+<a name="L325"></a><tt class="py-lineno">325</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-75" class="py-name"><a title="VisionEgg.Gratings.AlphaGratingCommon.calculate_bit_depth_dependencies
+VisionEgg.Gratings.LuminanceGratingCommon.calculate_bit_depth_dependencies" class="py-name" href="#" onclick="return doclink('link-75', 'calculate_bit_depth_dependencies', 'link-62');">calculate_bit_depth_dependencies</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L326"></a><tt class="py-lineno">326</tt>  <tt class="py-line"> </tt>
+<a name="L327"></a><tt class="py-lineno">327</tt>  <tt class="py-line">            <tt class="py-comment"># Clear the modeview matrix</tt> </tt>
+<a name="L328"></a><tt class="py-lineno">328</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glMatrixMode</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_MODELVIEW</tt><tt class="py-op">)</tt> </tt>
+<a name="L329"></a><tt class="py-lineno">329</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glPushMatrix</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L330"></a><tt class="py-lineno">330</tt>  <tt class="py-line"> </tt>
+<a name="L331"></a><tt class="py-lineno">331</tt>  <tt class="py-line">            <tt class="py-comment"># Rotate about the center of the texture</tt> </tt>
+<a name="L332"></a><tt class="py-lineno">332</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glTranslate</tt><tt class="py-op">(</tt><tt class="py-name">center</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L333"></a><tt class="py-lineno">333</tt>  <tt class="py-line">                           <tt class="py-name">center</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L334"></a><tt class="py-lineno">334</tt>  <tt class="py-line">                           <tt class="py-number">0</tt><tt class="py-op">)</tt> </tt>
+<a name="L335"></a><tt class="py-lineno">335</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glRotate</tt><tt class="py-op">(</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">orientation</tt><tt class="py-op">,</tt><tt class="py-number">0</tt><tt class="py-op">,</tt><tt class="py-number">0</tt><tt class="py-op">,</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="L336"></a><tt class="py-lineno">336</tt>  <tt class="py-line"> </tt>
+<a name="L337"></a><tt class="py-lineno">337</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">depth</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L338"></a><tt class="py-lineno">338</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glDisable</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_DEPTH_TEST</tt><tt class="py-op">)</tt> </tt>
+<a name="L339"></a><tt class="py-lineno">339</tt>  <tt class="py-line">                <tt class="py-name">depth</tt> <tt class="py-op">=</tt> <tt class="py-number">0.0</tt> </tt>
+<a name="L340"></a><tt class="py-lineno">340</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L341"></a><tt class="py-lineno">341</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glEnable</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_DEPTH_TEST</tt><tt class="py-op">)</tt> </tt>
+<a name="L342"></a><tt class="py-lineno">342</tt>  <tt class="py-line">                <tt class="py-name">depth</tt> <tt class="py-op">=</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">depth</tt> </tt>
+<a name="L343"></a><tt class="py-lineno">343</tt>  <tt class="py-line"> </tt>
+<a name="L344"></a><tt class="py-lineno">344</tt>  <tt class="py-line">            <tt class="py-comment"># allow max_alpha value to control blending</tt> </tt>
+<a name="L345"></a><tt class="py-lineno">345</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glEnable</tt><tt class="py-op">(</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_BLEND</tt> <tt class="py-op">)</tt> </tt>
+<a name="L346"></a><tt class="py-lineno">346</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glBlendFunc</tt><tt class="py-op">(</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_SRC_ALPHA</tt><tt class="py-op">,</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_ONE_MINUS_SRC_ALPHA</tt> <tt class="py-op">)</tt> </tt>
+<a name="L347"></a><tt class="py-lineno">347</tt>  <tt class="py-line"> </tt>
+<a name="L348"></a><tt class="py-lineno">348</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">color2</tt><tt class="py-op">:</tt> </tt>
+<a name="L349"></a><tt class="py-lineno">349</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glTexEnvi</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE_ENV</tt><tt class="py-op">,</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE_ENV_MODE</tt><tt class="py-op">,</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class= [...]
+<a name="L350"></a><tt class="py-lineno">350</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glTexEnvfv</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE_ENV</tt><tt class="py-op">,</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE_ENV_COLOR</tt><tt class="py-op">,</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class [...]
+<a name="L351"></a><tt class="py-lineno">351</tt>  <tt class="py-line">                <tt class="py-comment">## alpha is ignored because the texture base internal format is luminance</tt> </tt>
+<a name="L352"></a><tt class="py-lineno">352</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L353"></a><tt class="py-lineno">353</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glTexEnvi</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE_ENV</tt><tt class="py-op">,</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE_ENV_MODE</tt><tt class="py-op">,</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class= [...]
+<a name="L354"></a><tt class="py-lineno">354</tt>  <tt class="py-line"> </tt>
+<a name="L355"></a><tt class="py-lineno">355</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">t0_time_sec_absolute</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt> <tt class="py-keyword">and</tt> <tt class="py-keyword">not</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">ignore_time</tt><tt class="py-op">:</tt> </tt>
+<a name="L356"></a><tt class="py-lineno">356</tt>  <tt class="py-line">                <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">t0_time_sec_absolute</tt> <tt class="py-op">=</tt> <tt id="link-76" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-76', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-77" class="py-name" targets="Variable VisionEgg.time_func=VisionEgg-module.html#time_func" [...]
+<a name="L357"></a><tt class="py-lineno">357</tt>  <tt class="py-line"> </tt>
+<a name="L358"></a><tt class="py-lineno">358</tt>  <tt class="py-line">            <tt class="py-name">w</tt> <tt class="py-op">=</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt id="link-78" class="py-name"><a title="VisionEgg.Core.Screen.size" class="py-name" href="#" onclick="return doclink('link-78', 'size', 'link-63');">size</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt>
+<a name="L359"></a><tt class="py-lineno">359</tt>  <tt class="py-line">            <tt class="py-name">inc</tt> <tt class="py-op">=</tt> <tt class="py-name">w</tt><tt class="py-op">/</tt><tt id="link-79" class="py-name"><a title="float" class="py-name" href="#" onclick="return doclink('link-79', 'float', 'link-9');">float</a></tt><tt class="py-op">(</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">num_samples</tt><tt class="py-op">)</tt> </tt>
+<a name="L360"></a><tt class="py-lineno">360</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">ignore_time</tt><tt class="py-op">:</tt> </tt>
+<a name="L361"></a><tt class="py-lineno">361</tt>  <tt class="py-line">                <tt class="py-name">phase</tt> <tt class="py-op">=</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">phase_at_t0</tt> </tt>
+<a name="L362"></a><tt class="py-lineno">362</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L363"></a><tt class="py-lineno">363</tt>  <tt class="py-line">                <tt class="py-name">t_var</tt> <tt class="py-op">=</tt> <tt id="link-80" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-80', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-81" class="py-name"><a title="VisionEgg.time_func" class="py-name" href="#" onclick="return doclink('link-81', 'time_func', 'link-77');">time_func</a></tt> [...]
+<a name="L364"></a><tt class="py-lineno">364</tt>  <tt class="py-line">                <tt class="py-name">phase</tt> <tt class="py-op">=</tt> <tt class="py-name">t_var</tt><tt class="py-op">*</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">temporal_freq_hz</tt><tt class="py-op">*</tt><tt class="py-op">-</tt><tt class="py-number">360.0</tt> <tt class="py-op">+</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">phase_at_t0</tt> </tt>
+<a name="L365"></a><tt class="py-lineno">365</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">recalculate_phase_tolerance</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt> <tt class="py-keyword">or</tt> <tt class="py-name">abs</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_last_phase</tt> <tt class="py-op">-</tt> <tt class="py-na [...]
+<a name="L366"></a><tt class="py-lineno">366</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_last_phase</tt> <tt class="py-op">=</tt> <tt class="py-name">phase</tt> <tt class="py-comment"># we're re-drawing the phase at this angle</tt> </tt>
+<a name="L367"></a><tt class="py-lineno">367</tt>  <tt class="py-line">                <tt class="py-name">floating_point_sin</tt> <tt class="py-op">=</tt> <tt class="py-name">numpy</tt><tt class="py-op">.</tt><tt class="py-name">sin</tt><tt class="py-op">(</tt><tt class="py-number">2.0</tt><tt class="py-op">*</tt><tt class="py-name">math</tt><tt class="py-op">.</tt><tt class="py-name">pi</tt><tt class="py-op">*</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">sp [...]
+<a name="L368"></a><tt class="py-lineno">368</tt>  <tt class="py-line">                <tt class="py-name">floating_point_sin</tt> <tt class="py-op">=</tt> <tt class="py-name">numpy</tt><tt class="py-op">.</tt><tt class="py-name">clip</tt><tt class="py-op">(</tt><tt class="py-name">floating_point_sin</tt><tt class="py-op">,</tt><tt class="py-number">0.0</tt><tt class="py-op">,</tt><tt class="py-number">1.0</tt><tt class="py-op">)</tt> <tt class="py-comment"># allow square wave generation [...]
+<a name="L369"></a><tt class="py-lineno">369</tt>  <tt class="py-line">                <tt class="py-name">texel_data</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">floating_point_sin</tt><tt class="py-op">*</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">max_int_val</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">astype</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt clas [...]
+<a name="L370"></a><tt class="py-lineno">370</tt>  <tt class="py-line">                <tt class="py-comment"># PyOpenGL 2.0.1.09 has a bug, so use our own wrapper</tt> </tt>
+<a name="L371"></a><tt class="py-lineno">371</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-name">_vegl</tt><tt class="py-op">.</tt><tt class="py-name">veglTexSubImage1D</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE_1D</tt><tt class="py-op">,</tt> <tt class="py-comment"># target</tt> </tt>
+<a name="L372"></a><tt class="py-lineno">372</tt>  <tt class="py-line">                                        <tt class="py-number">0</tt><tt class="py-op">,</tt>                <tt class="py-comment"># level</tt> </tt>
+<a name="L373"></a><tt class="py-lineno">373</tt>  <tt class="py-line">                                        <tt class="py-number">0</tt><tt class="py-op">,</tt>                <tt class="py-comment"># x offset</tt> </tt>
+<a name="L374"></a><tt class="py-lineno">374</tt>  <tt class="py-line">                                        <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">num_samples</tt><tt class="py-op">,</tt>    <tt class="py-comment"># width</tt> </tt>
+<a name="L375"></a><tt class="py-lineno">375</tt>  <tt class="py-line">                                        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">format</tt><tt class="py-op">,</tt>      <tt class="py-comment"># format of new texel data</tt> </tt>
+<a name="L376"></a><tt class="py-lineno">376</tt>  <tt class="py-line">                                        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">gl_type</tt><tt class="py-op">,</tt>     <tt class="py-comment"># type of new texel data</tt> </tt>
+<a name="L377"></a><tt class="py-lineno">377</tt>  <tt class="py-line">                                        <tt class="py-name">texel_data</tt><tt class="py-op">)</tt>       <tt class="py-comment"># new texel data</tt> </tt>
+<a name="L378"></a><tt class="py-lineno">378</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt>
+<a name="L379"></a><tt class="py-lineno">379</tt>  <tt class="py-line">                    <tt class="py-name">compare_array</tt> <tt class="py-op">=</tt> <tt class="py-name">numpy</tt><tt class="py-op">.</tt><tt class="py-name">empty</tt><tt class="py-op">(</tt><tt class="py-name">texel_data</tt><tt class="py-op">.</tt><tt class="py-name">shape</tt><tt class="py-op">,</tt><tt class="py-name">dtype</tt><tt class="py-op">=</tt><tt class="py-name">texel_data</tt><tt class="py-op">.</tt><tt [...]
+<a name="L380"></a><tt class="py-lineno">380</tt>  <tt class="py-line">                    <tt class="py-name">pixels</tt> <tt class="py-op">=</tt> <tt class="py-name">_vegl</tt><tt class="py-op">.</tt><tt class="py-name">veglGetTexImage</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE_1D</tt><tt class="py-op">,</tt> <tt class="py-comment"># target</tt> </tt>
+<a name="L381"></a><tt class="py-lineno">381</tt>  <tt class="py-line">                                                   <tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-comment"># level</tt> </tt>
+<a name="L382"></a><tt class="py-lineno">382</tt>  <tt class="py-line">                                                   <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">format</tt><tt class="py-op">,</tt> <tt class="py-comment"># format</tt> </tt>
+<a name="L383"></a><tt class="py-lineno">383</tt>  <tt class="py-line">                                                   <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">gl_type</tt><tt class="py-op">,</tt> <tt class="py-comment"># type</tt> </tt>
+<a name="L384"></a><tt class="py-lineno">384</tt>  <tt class="py-line">                                                   <tt class="py-name">compare_array</tt><tt class="py-op">)</tt> </tt>
+<a name="L385"></a><tt class="py-lineno">385</tt>  <tt class="py-line">                    <tt class="py-keyword">assert</tt> <tt class="py-name">numpy</tt><tt class="py-op">.</tt><tt class="py-name">allclose</tt><tt class="py-op">(</tt> <tt class="py-name">compare_array</tt><tt class="py-op">,</tt> <tt class="py-name">texel_data</tt> <tt class="py-op">)</tt> </tt>
+<a name="L386"></a><tt class="py-lineno">386</tt>  <tt class="py-line"> </tt>
+<a name="L387"></a><tt class="py-lineno">387</tt>  <tt class="py-line">            <tt class="py-name">h_w</tt> <tt class="py-op">=</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt id="link-83" class="py-name"><a title="VisionEgg.Core.Screen.size" class="py-name" href="#" onclick="return doclink('link-83', 'size', 'link-63');">size</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">/</tt><tt class="py-number">2.0</tt> </tt>
+<a name="L388"></a><tt class="py-lineno">388</tt>  <tt class="py-line">            <tt class="py-name">h_h</tt> <tt class="py-op">=</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt id="link-84" class="py-name"><a title="VisionEgg.Core.Screen.size" class="py-name" href="#" onclick="return doclink('link-84', 'size', 'link-63');">size</a></tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">/</tt><tt class="py-number">2.0</tt> </tt>
+<a name="L389"></a><tt class="py-lineno">389</tt>  <tt class="py-line"> </tt>
+<a name="L390"></a><tt class="py-lineno">390</tt>  <tt class="py-line">            <tt class="py-name">l</tt> <tt class="py-op">=</tt> <tt class="py-op">-</tt><tt class="py-name">h_w</tt> </tt>
+<a name="L391"></a><tt class="py-lineno">391</tt>  <tt class="py-line">            <tt class="py-name">r</tt> <tt class="py-op">=</tt> <tt class="py-name">h_w</tt> </tt>
+<a name="L392"></a><tt class="py-lineno">392</tt>  <tt class="py-line">            <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt class="py-op">-</tt><tt class="py-name">h_h</tt> </tt>
+<a name="L393"></a><tt class="py-lineno">393</tt>  <tt class="py-line">            <tt class="py-name">t</tt> <tt class="py-op">=</tt> <tt class="py-name">h_h</tt> </tt>
+<a name="L394"></a><tt class="py-lineno">394</tt>  <tt class="py-line"> </tt>
+<a name="L395"></a><tt class="py-lineno">395</tt>  <tt class="py-line">            <tt class="py-comment"># in the case of only color1,</tt> </tt>
+<a name="L396"></a><tt class="py-lineno">396</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># the texel data multiplies color1 to produce a color</tt> </tt>
+<a name="L397"></a><tt class="py-lineno">397</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L398"></a><tt class="py-lineno">398</tt>  <tt class="py-line">            <tt class="py-comment"># with color2,</tt> </tt>
+<a name="L399"></a><tt class="py-lineno">399</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># the texel data linearly interpolates between color1 and color2</tt> </tt>
+<a name="L400"></a><tt class="py-lineno">400</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L401"></a><tt class="py-lineno">401</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glColor4f</tt><tt class="py-op">(</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">color1</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">,</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">color1</tt><tt class="py-op">[</tt><tt class="py- [...]
+<a name="L402"></a><tt class="py-lineno">402</tt>  <tt class="py-line"> </tt>
+<a name="L403"></a><tt class="py-lineno">403</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">mask</tt><tt class="py-op">:</tt> </tt>
+<a name="L404"></a><tt class="py-lineno">404</tt>  <tt class="py-line">                <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">mask</tt><tt class="py-op">.</tt><tt id="link-85" class="py-name" targets="Method VisionEgg.Textures.Mask2D.draw_masked_quad()=VisionEgg.Textures.Mask2D-class.html#draw_masked_quad"><a title="VisionEgg.Textures.Mask2D.draw_masked_quad" class="py-name" href="#" onclick="return doclink('link-85', 'draw_masked_quad', 'link-85');">draw_m [...]
+<a name="L405"></a><tt class="py-lineno">405</tt>  <tt class="py-line">                                        <tt class="py-name">l</tt><tt class="py-op">,</tt><tt class="py-name">r</tt><tt class="py-op">,</tt><tt class="py-name">b</tt><tt class="py-op">,</tt><tt class="py-name">t</tt><tt class="py-op">,</tt> <tt class="py-comment"># l,r,b,t in eye coordinates</tt> </tt>
+<a name="L406"></a><tt class="py-lineno">406</tt>  <tt class="py-line">                                        <tt class="py-name">depth</tt> <tt class="py-op">)</tt> <tt class="py-comment"># also in eye coordinates</tt> </tt>
+<a name="L407"></a><tt class="py-lineno">407</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L408"></a><tt class="py-lineno">408</tt>  <tt class="py-line">                <tt class="py-comment"># draw unmasked quad</tt> </tt>
+<a name="L409"></a><tt class="py-lineno">409</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glBegin</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_QUADS</tt><tt class="py-op">)</tt> </tt>
+<a name="L410"></a><tt class="py-lineno">410</tt>  <tt class="py-line"> </tt>
+<a name="L411"></a><tt class="py-lineno">411</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glTexCoord2f</tt><tt class="py-op">(</tt><tt class="py-number">0.0</tt><tt class="py-op">,</tt><tt class="py-number">0.0</tt><tt class="py-op">)</tt> </tt>
+<a name="L412"></a><tt class="py-lineno">412</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glVertex3f</tt><tt class="py-op">(</tt><tt class="py-name">l</tt><tt class="py-op">,</tt><tt class="py-name">b</tt><tt class="py-op">,</tt><tt class="py-name">depth</tt><tt class="py-op">)</tt> </tt>
+<a name="L413"></a><tt class="py-lineno">413</tt>  <tt class="py-line"> </tt>
+<a name="L414"></a><tt class="py-lineno">414</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glTexCoord2f</tt><tt class="py-op">(</tt><tt class="py-number">1.0</tt><tt class="py-op">,</tt><tt class="py-number">0.0</tt><tt class="py-op">)</tt> </tt>
+<a name="L415"></a><tt class="py-lineno">415</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glVertex3f</tt><tt class="py-op">(</tt><tt class="py-name">r</tt><tt class="py-op">,</tt><tt class="py-name">b</tt><tt class="py-op">,</tt><tt class="py-name">depth</tt><tt class="py-op">)</tt> </tt>
+<a name="L416"></a><tt class="py-lineno">416</tt>  <tt class="py-line"> </tt>
+<a name="L417"></a><tt class="py-lineno">417</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glTexCoord2f</tt><tt class="py-op">(</tt><tt class="py-number">1.0</tt><tt class="py-op">,</tt><tt class="py-number">1.0</tt><tt class="py-op">)</tt> </tt>
+<a name="L418"></a><tt class="py-lineno">418</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glVertex3f</tt><tt class="py-op">(</tt><tt class="py-name">r</tt><tt class="py-op">,</tt><tt class="py-name">t</tt><tt class="py-op">,</tt><tt class="py-name">depth</tt><tt class="py-op">)</tt> </tt>
+<a name="L419"></a><tt class="py-lineno">419</tt>  <tt class="py-line"> </tt>
+<a name="L420"></a><tt class="py-lineno">420</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glTexCoord2f</tt><tt class="py-op">(</tt><tt class="py-number">0.0</tt><tt class="py-op">,</tt><tt class="py-number">1.0</tt><tt class="py-op">)</tt> </tt>
+<a name="L421"></a><tt class="py-lineno">421</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glVertex3f</tt><tt class="py-op">(</tt><tt class="py-name">l</tt><tt class="py-op">,</tt><tt class="py-name">t</tt><tt class="py-op">,</tt><tt class="py-name">depth</tt><tt class="py-op">)</tt> </tt>
+<a name="L422"></a><tt class="py-lineno">422</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glEnd</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-comment"># GL_QUADS</tt> </tt>
+<a name="L423"></a><tt class="py-lineno">423</tt>  <tt class="py-line"> </tt>
+<a name="L424"></a><tt class="py-lineno">424</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glDisable</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE_1D</tt><tt class="py-op">)</tt> </tt>
+<a name="L425"></a><tt class="py-lineno">425</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glPopMatrix</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L426"></a><tt class="py-lineno">426</tt>  <tt class="py-line"> </tt>
+<a name="SinGrating3D"></a><div id="SinGrating3D-def"><a name="L427"></a><tt class="py-lineno">427</tt> <a class="py-toggle" href="#" id="SinGrating3D-toggle" onclick="return toggle('SinGrating3D');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.Gratings.SinGrating3D-class.html">SinGrating3D</a><tt class="py-op">(</tt><tt class="py-base-class">LuminanceGratingCommon</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="SinGrating3D-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="SinGrating3D-expanded"><a name="L428"></a><tt class="py-lineno">428</tt>  <tt class="py-line">    <tt class="py-docstring">"""Sine wave grating stimulus texture mapped onto quad in 3D</tt> </tt>
+<a name="L429"></a><tt class="py-lineno">429</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L430"></a><tt class="py-lineno">430</tt>  <tt class="py-line"><tt class="py-docstring">    This is a general-purpose, realtime sine-wave luminace grating</tt> </tt>
+<a name="L431"></a><tt class="py-lineno">431</tt>  <tt class="py-line"><tt class="py-docstring">    generator. This 3D version doesn't support an orientation</tt> </tt>
+<a name="L432"></a><tt class="py-lineno">432</tt>  <tt class="py-line"><tt class="py-docstring">    parameter.  This could be implemented, but for now should be done</tt> </tt>
+<a name="L433"></a><tt class="py-lineno">433</tt>  <tt class="py-line"><tt class="py-docstring">    by orienting the quad in 3D.</tt> </tt>
+<a name="L434"></a><tt class="py-lineno">434</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L435"></a><tt class="py-lineno">435</tt>  <tt class="py-line"><tt class="py-docstring">    Parameters</tt> </tt>
+<a name="L436"></a><tt class="py-lineno">436</tt>  <tt class="py-line"><tt class="py-docstring">    ==========</tt> </tt>
+<a name="L437"></a><tt class="py-lineno">437</tt>  <tt class="py-line"><tt class="py-docstring">    bit_depth                   -- precision with which grating is calculated and sent to OpenGL (UnsignedInteger)</tt> </tt>
+<a name="L438"></a><tt class="py-lineno">438</tt>  <tt class="py-line"><tt class="py-docstring">                                   Inherited from LuminanceGratingCommon</tt> </tt>
+<a name="L439"></a><tt class="py-lineno">439</tt>  <tt class="py-line"><tt class="py-docstring">                                   Default: 8</tt> </tt>
+<a name="L440"></a><tt class="py-lineno">440</tt>  <tt class="py-line"><tt class="py-docstring">    color1                      -- (AnyOf(Sequence3 of Real or Sequence4 of Real))</tt> </tt>
+<a name="L441"></a><tt class="py-lineno">441</tt>  <tt class="py-line"><tt class="py-docstring">                                   Default: (1.0, 1.0, 1.0)</tt> </tt>
+<a name="L442"></a><tt class="py-lineno">442</tt>  <tt class="py-line"><tt class="py-docstring">    color2                      -- optional color with which to perform interpolation with color1 in RGB space (AnyOf(Sequence3 of Real or Sequence4 of Real))</tt> </tt>
+<a name="L443"></a><tt class="py-lineno">443</tt>  <tt class="py-line"><tt class="py-docstring">                                   Default: (determined at runtime)</tt> </tt>
+<a name="L444"></a><tt class="py-lineno">444</tt>  <tt class="py-line"><tt class="py-docstring">    contrast                    -- (Real)</tt> </tt>
+<a name="L445"></a><tt class="py-lineno">445</tt>  <tt class="py-line"><tt class="py-docstring">                                   Default: 1.0</tt> </tt>
+<a name="L446"></a><tt class="py-lineno">446</tt>  <tt class="py-line"><tt class="py-docstring">    depth                       -- (Real)</tt> </tt>
+<a name="L447"></a><tt class="py-lineno">447</tt>  <tt class="py-line"><tt class="py-docstring">                                   Default: (determined at runtime)</tt> </tt>
+<a name="L448"></a><tt class="py-lineno">448</tt>  <tt class="py-line"><tt class="py-docstring">    depth_test                  -- perform depth test? (Boolean)</tt> </tt>
+<a name="L449"></a><tt class="py-lineno">449</tt>  <tt class="py-line"><tt class="py-docstring">                                   Default: True</tt> </tt>
+<a name="L450"></a><tt class="py-lineno">450</tt>  <tt class="py-line"><tt class="py-docstring">    ignore_time                 -- (Boolean)</tt> </tt>
+<a name="L451"></a><tt class="py-lineno">451</tt>  <tt class="py-line"><tt class="py-docstring">                                   Default: False</tt> </tt>
+<a name="L452"></a><tt class="py-lineno">452</tt>  <tt class="py-line"><tt class="py-docstring">    lowerleft                   -- vertex position (units: eye coordinates) (AnyOf(Sequence3 of Real or Sequence4 of Real))</tt> </tt>
+<a name="L453"></a><tt class="py-lineno">453</tt>  <tt class="py-line"><tt class="py-docstring">                                   Default: (0.0, 0.0, -1.0)</tt> </tt>
+<a name="L454"></a><tt class="py-lineno">454</tt>  <tt class="py-line"><tt class="py-docstring">    lowerright                  -- vertex position (units: eye coordinates) (AnyOf(Sequence3 of Real or Sequence4 of Real))</tt> </tt>
+<a name="L455"></a><tt class="py-lineno">455</tt>  <tt class="py-line"><tt class="py-docstring">                                   Default: (1.0, 0.0, -1.0)</tt> </tt>
+<a name="L456"></a><tt class="py-lineno">456</tt>  <tt class="py-line"><tt class="py-docstring">    mask                        -- optional masking function (Instance of <class 'VisionEgg.Textures.Mask2D'>)</tt> </tt>
+<a name="L457"></a><tt class="py-lineno">457</tt>  <tt class="py-line"><tt class="py-docstring">                                   Default: (determined at runtime)</tt> </tt>
+<a name="L458"></a><tt class="py-lineno">458</tt>  <tt class="py-line"><tt class="py-docstring">    max_alpha                   -- (Real)</tt> </tt>
+<a name="L459"></a><tt class="py-lineno">459</tt>  <tt class="py-line"><tt class="py-docstring">                                   Default: 1.0</tt> </tt>
+<a name="L460"></a><tt class="py-lineno">460</tt>  <tt class="py-line"><tt class="py-docstring">    num_samples                 -- (UnsignedInteger)</tt> </tt>
+<a name="L461"></a><tt class="py-lineno">461</tt>  <tt class="py-line"><tt class="py-docstring">                                   Default: 512</tt> </tt>
+<a name="L462"></a><tt class="py-lineno">462</tt>  <tt class="py-line"><tt class="py-docstring">    on                          -- draw stimulus? (Boolean)</tt> </tt>
+<a name="L463"></a><tt class="py-lineno">463</tt>  <tt class="py-line"><tt class="py-docstring">                                   Default: True</tt> </tt>
+<a name="L464"></a><tt class="py-lineno">464</tt>  <tt class="py-line"><tt class="py-docstring">    pedestal                    -- (Real)</tt> </tt>
+<a name="L465"></a><tt class="py-lineno">465</tt>  <tt class="py-line"><tt class="py-docstring">                                   Default: 0.5</tt> </tt>
+<a name="L466"></a><tt class="py-lineno">466</tt>  <tt class="py-line"><tt class="py-docstring">    phase_at_t0                 -- (Real)</tt> </tt>
+<a name="L467"></a><tt class="py-lineno">467</tt>  <tt class="py-line"><tt class="py-docstring">                                   Default: 0.0</tt> </tt>
+<a name="L468"></a><tt class="py-lineno">468</tt>  <tt class="py-line"><tt class="py-docstring">    recalculate_phase_tolerance -- (Real)</tt> </tt>
+<a name="L469"></a><tt class="py-lineno">469</tt>  <tt class="py-line"><tt class="py-docstring">                                   Default: (determined at runtime)</tt> </tt>
+<a name="L470"></a><tt class="py-lineno">470</tt>  <tt class="py-line"><tt class="py-docstring">    size                        -- defines coordinate size of grating (in eye coordinates) (Sequence2 of Real)</tt> </tt>
+<a name="L471"></a><tt class="py-lineno">471</tt>  <tt class="py-line"><tt class="py-docstring">                                   Default: (1.0, 1.0)</tt> </tt>
+<a name="L472"></a><tt class="py-lineno">472</tt>  <tt class="py-line"><tt class="py-docstring">    spatial_freq                -- frequency defined relative to coordinates defined in size parameter (units; cycles/eye_coord_unit) (Real)</tt> </tt>
+<a name="L473"></a><tt class="py-lineno">473</tt>  <tt class="py-line"><tt class="py-docstring">                                   Default: 4.0</tt> </tt>
+<a name="L474"></a><tt class="py-lineno">474</tt>  <tt class="py-line"><tt class="py-docstring">    t0_time_sec_absolute        -- (Real)</tt> </tt>
+<a name="L475"></a><tt class="py-lineno">475</tt>  <tt class="py-line"><tt class="py-docstring">                                   Default: (determined at runtime)</tt> </tt>
+<a name="L476"></a><tt class="py-lineno">476</tt>  <tt class="py-line"><tt class="py-docstring">    temporal_freq_hz            -- (Real)</tt> </tt>
+<a name="L477"></a><tt class="py-lineno">477</tt>  <tt class="py-line"><tt class="py-docstring">                                   Default: 5.0</tt> </tt>
+<a name="L478"></a><tt class="py-lineno">478</tt>  <tt class="py-line"><tt class="py-docstring">    upperleft                   -- vertex position (units: eye coordinates) (AnyOf(Sequence3 of Real or Sequence4 of Real))</tt> </tt>
+<a name="L479"></a><tt class="py-lineno">479</tt>  <tt class="py-line"><tt class="py-docstring">                                   Default: (0.0, 1.0, -1.0)</tt> </tt>
+<a name="L480"></a><tt class="py-lineno">480</tt>  <tt class="py-line"><tt class="py-docstring">    upperright                  -- vertex position (units: eye coordinates) (AnyOf(Sequence3 of Real or Sequence4 of Real))</tt> </tt>
+<a name="L481"></a><tt class="py-lineno">481</tt>  <tt class="py-line"><tt class="py-docstring">                                   Default: (1.0, 1.0, -1.0)</tt> </tt>
+<a name="L482"></a><tt class="py-lineno">482</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L483"></a><tt class="py-lineno">483</tt>  <tt class="py-line"> </tt>
+<a name="L484"></a><tt class="py-lineno">484</tt>  <tt class="py-line">    <tt id="link-86" class="py-name"><a title="VisionEgg.ClassWithParameters.parameters_and_defaults
+VisionEgg.Core.FixationSpot.parameters_and_defaults
+VisionEgg.Core.ProjectionBaseClass.parameters_and_defaults
+VisionEgg.Core.Screen.parameters_and_defaults
+VisionEgg.Core.Viewport.parameters_and_defaults
+VisionEgg.Daq.Buffered.parameters_and_defaults
+VisionEgg.Dots.DotArea2D.parameters_and_defaults
+VisionEgg.FlowControl.Presentation.parameters_and_defaults
+VisionEgg.Gratings.AlphaGratingCommon.parameters_and_defaults
+VisionEgg.Gratings.LuminanceGratingCommon.parameters_and_defaults
+VisionEgg.Gratings.SinGrating2D.parameters_and_defaults
+VisionEgg.Gratings.SinGrating3D.parameters_and_defaults
+VisionEgg.MoreStimuli.Arrow.parameters_and_defaults
+VisionEgg.MoreStimuli.FilledCircle.parameters_and_defaults
+VisionEgg.MoreStimuli.Rectangle3D.parameters_and_defaults
+VisionEgg.MoreStimuli.Target2D.parameters_and_defaults
+VisionEgg.PyroApps.EPhysGUI.Loop.parameters_and_defaults
+VisionEgg.SphereMap.AzElGrid.parameters_and_defaults
+VisionEgg.SphereMap.SphereGrating.parameters_and_defaults
+VisionEgg.SphereMap.SphereMap.parameters_and_defaults
+VisionEgg.SphereMap.SphereWindow.parameters_and_defaults
+VisionEgg.Text.BitmapText.parameters_and_defaults
+VisionEgg.Text.GlutTextBase.parameters_and_defaults
+VisionEgg.Text.StrokeText.parameters_and_defaults
+VisionEgg.Text.Text.parameters_and_defaults
+VisionEgg.Textures.FixationCross.parameters_and_defaults
+VisionEgg.Textures.SpinningDrum.parameters_and_defaults
+VisionEgg.Textures.TextureStimulus.parameters_and_defaults
+VisionEgg.Textures.TextureStimulus3D.parameters_and_defaults
+VisionEgg.Textures.TextureStimulusBaseClass.parameters_and_defaults
+VisionEgg.WrappedText.WrappedText.parameters_and_defaults" class="py-name" href="#" onclick="return doclink('link-86', 'parameters_and_defaults', 'link-12');">parameters_and_defaults</a></tt> <tt class="py-op">=</tt> <tt id="link-87" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-87', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-88" class="py-name"><a title="VisionEgg.ParameterDefinition" class="py-name" href [...]
+<a name="L485"></a><tt class="py-lineno">485</tt>  <tt class="py-line">        <tt class="py-string">'on'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-name">True</tt><tt class="py-op">,</tt> </tt>
+<a name="L486"></a><tt class="py-lineno">486</tt>  <tt class="py-line">              <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-89" class="py-name"><a title="VisionEgg.ParameterTypes.Boolean" class="py-name" href="#" onclick="return doclink('link-89', 'Boolean', 'link-27');">Boolean</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L487"></a><tt class="py-lineno">487</tt>  <tt class="py-line">              <tt class="py-string">"draw stimulus?"</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L488"></a><tt class="py-lineno">488</tt>  <tt class="py-line">        <tt class="py-string">'mask'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-comment"># allows window onto otherwise (tilted) rectangular grating</tt> </tt>
+<a name="L489"></a><tt class="py-lineno">489</tt>  <tt class="py-line">                <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-90" class="py-name"><a title="VisionEgg.ParameterTypes.Instance" class="py-name" href="#" onclick="return doclink('link-90', 'Instance', 'link-28');">Instance</a></tt><tt class="py-op">(</tt><tt id="link-91" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-91', 'VisionEgg', 'link-0');">Visio [...]
+<a name="L490"></a><tt class="py-lineno">490</tt>  <tt class="py-line">                <tt class="py-string">"optional masking function"</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L491"></a><tt class="py-lineno">491</tt>  <tt class="py-line">        <tt class="py-string">'contrast'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-number">1.0</tt><tt class="py-op">,</tt> </tt>
+<a name="L492"></a><tt class="py-lineno">492</tt>  <tt class="py-line">                    <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-94" class="py-name"><a title="VisionEgg.ParameterTypes.Real" class="py-name" href="#" onclick="return doclink('link-94', 'Real', 'link-32');">Real</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L493"></a><tt class="py-lineno">493</tt>  <tt class="py-line">        <tt class="py-string">'pedestal'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-number">0.5</tt><tt class="py-op">,</tt> </tt>
+<a name="L494"></a><tt class="py-lineno">494</tt>  <tt class="py-line">                    <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-95" class="py-name"><a title="VisionEgg.ParameterTypes.Real" class="py-name" href="#" onclick="return doclink('link-95', 'Real', 'link-32');">Real</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L495"></a><tt class="py-lineno">495</tt>  <tt class="py-line">        <tt class="py-string">'depth'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-comment"># if not None, turns on depth testing and allows for occlusion</tt> </tt>
+<a name="L496"></a><tt class="py-lineno">496</tt>  <tt class="py-line">                 <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-96" class="py-name"><a title="VisionEgg.ParameterTypes.Real" class="py-name" href="#" onclick="return doclink('link-96', 'Real', 'link-32');">Real</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L497"></a><tt class="py-lineno">497</tt>  <tt class="py-line">        <tt class="py-string">'size'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-number">1.0</tt><tt class="py-op">,</tt><tt class="py-number">1.0</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-comment"># in eye coordinates</tt> </tt>
+<a name="L498"></a><tt class="py-lineno">498</tt>  <tt class="py-line">                <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-97" class="py-name"><a title="VisionEgg.ParameterTypes.Sequence2" class="py-name" href="#" onclick="return doclink('link-97', 'Sequence2', 'link-34');">Sequence2</a></tt><tt class="py-op">(</tt><tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-98" class="py-name"><a title="VisionEgg.ParameterTypes.Real" class="py- [...]
+<a name="L499"></a><tt class="py-lineno">499</tt>  <tt class="py-line">                <tt class="py-string">"defines coordinate size of grating (in eye coordinates)"</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L500"></a><tt class="py-lineno">500</tt>  <tt class="py-line">        <tt class="py-string">'spatial_freq'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-number">4.0</tt><tt class="py-op">,</tt> <tt class="py-comment"># cycles/eye coord units</tt> </tt>
+<a name="L501"></a><tt class="py-lineno">501</tt>  <tt class="py-line">                        <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-99" class="py-name"><a title="VisionEgg.ParameterTypes.Real" class="py-name" href="#" onclick="return doclink('link-99', 'Real', 'link-32');">Real</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L502"></a><tt class="py-lineno">502</tt>  <tt class="py-line">                        <tt class="py-string">"frequency defined relative to coordinates defined in size parameter (units; cycles/eye_coord_unit)"</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L503"></a><tt class="py-lineno">503</tt>  <tt class="py-line">        <tt class="py-string">'temporal_freq_hz'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-number">5.0</tt><tt class="py-op">,</tt> <tt class="py-comment"># hz</tt> </tt>
+<a name="L504"></a><tt class="py-lineno">504</tt>  <tt class="py-line">                            <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-100" class="py-name"><a title="VisionEgg.ParameterTypes.Real" class="py-name" href="#" onclick="return doclink('link-100', 'Real', 'link-32');">Real</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L505"></a><tt class="py-lineno">505</tt>  <tt class="py-line">        <tt class="py-string">'t0_time_sec_absolute'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-comment"># Will be assigned during first call to draw()</tt> </tt>
+<a name="L506"></a><tt class="py-lineno">506</tt>  <tt class="py-line">                                <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-101" class="py-name"><a title="VisionEgg.ParameterTypes.Real" class="py-name" href="#" onclick="return doclink('link-101', 'Real', 'link-32');">Real</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L507"></a><tt class="py-lineno">507</tt>  <tt class="py-line">        <tt class="py-string">'ignore_time'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-name">False</tt><tt class="py-op">,</tt> <tt class="py-comment"># ignore temporal frequency variable - allow control purely with phase_at_t0</tt> </tt>
+<a name="L508"></a><tt class="py-lineno">508</tt>  <tt class="py-line">                       <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-102" class="py-name"><a title="VisionEgg.ParameterTypes.Boolean" class="py-name" href="#" onclick="return doclink('link-102', 'Boolean', 'link-27');">Boolean</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L509"></a><tt class="py-lineno">509</tt>  <tt class="py-line">        <tt class="py-string">'phase_at_t0'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-number">0.0</tt><tt class="py-op">,</tt> <tt class="py-comment"># degrees [0.0-360.0]</tt> </tt>
+<a name="L510"></a><tt class="py-lineno">510</tt>  <tt class="py-line">                       <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-103" class="py-name"><a title="VisionEgg.ParameterTypes.Real" class="py-name" href="#" onclick="return doclink('link-103', 'Real', 'link-32');">Real</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L511"></a><tt class="py-lineno">511</tt>  <tt class="py-line">        <tt class="py-string">'num_samples'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-number">512</tt><tt class="py-op">,</tt> <tt class="py-comment"># number of spatial samples, should be a power of 2</tt> </tt>
+<a name="L512"></a><tt class="py-lineno">512</tt>  <tt class="py-line">                       <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-104" class="py-name"><a title="VisionEgg.ParameterTypes.UnsignedInteger" class="py-name" href="#" onclick="return doclink('link-104', 'UnsignedInteger', 'link-15');">UnsignedInteger</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L513"></a><tt class="py-lineno">513</tt>  <tt class="py-line">        <tt class="py-string">'max_alpha'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-number">1.0</tt><tt class="py-op">,</tt> <tt class="py-comment"># controls "opacity": 1.0 = completely opaque, 0.0 = completely transparent</tt> </tt>
+<a name="L514"></a><tt class="py-lineno">514</tt>  <tt class="py-line">                     <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-105" class="py-name"><a title="VisionEgg.ParameterTypes.Real" class="py-name" href="#" onclick="return doclink('link-105', 'Real', 'link-32');">Real</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L515"></a><tt class="py-lineno">515</tt>  <tt class="py-line">        <tt class="py-string">'color1'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-number">1.0</tt><tt class="py-op">,</tt> <tt class="py-number">1.0</tt><tt class="py-op">,</tt> <tt class="py-number">1.0</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-comment"># alpha is ignored (if given) -- use max_alpha parameter</tt> </tt>
+<a name="L516"></a><tt class="py-lineno">516</tt>  <tt class="py-line">                  <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-106" class="py-name"><a title="VisionEgg.ParameterTypes.AnyOf" class="py-name" href="#" onclick="return doclink('link-106', 'AnyOf', 'link-48');">AnyOf</a></tt><tt class="py-op">(</tt><tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-107" class="py-name"><a title="VisionEgg.ParameterTypes.Sequence3" class="py-na [...]
+<a name="L517"></a><tt class="py-lineno">517</tt>  <tt class="py-line">                                 <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-109" class="py-name"><a title="VisionEgg.ParameterTypes.Sequence4" class="py-name" href="#" onclick="return doclink('link-109', 'Sequence4', 'link-51');">Sequence4</a></tt><tt class="py-op">(</tt><tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-110" class="py-name"><a title="VisionEgg.ParameterTy [...]
+<a name="L518"></a><tt class="py-lineno">518</tt>  <tt class="py-line">        <tt class="py-string">'color2'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-comment"># perform interpolation with color1 in RGB space.</tt> </tt>
+<a name="L519"></a><tt class="py-lineno">519</tt>  <tt class="py-line">                  <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-111" class="py-name"><a title="VisionEgg.ParameterTypes.AnyOf" class="py-name" href="#" onclick="return doclink('link-111', 'AnyOf', 'link-48');">AnyOf</a></tt><tt class="py-op">(</tt><tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-112" class="py-name"><a title="VisionEgg.ParameterTypes.Sequence3" class="py-na [...]
+<a name="L520"></a><tt class="py-lineno">520</tt>  <tt class="py-line">                                 <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-114" class="py-name"><a title="VisionEgg.ParameterTypes.Sequence4" class="py-name" href="#" onclick="return doclink('link-114', 'Sequence4', 'link-51');">Sequence4</a></tt><tt class="py-op">(</tt><tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-115" class="py-name"><a title="VisionEgg.ParameterTy [...]
+<a name="L521"></a><tt class="py-lineno">521</tt>  <tt class="py-line">                  <tt class="py-string">"optional color with which to perform interpolation with color1 in RGB space"</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L522"></a><tt class="py-lineno">522</tt>  <tt class="py-line">        <tt class="py-string">'recalculate_phase_tolerance'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-comment"># only recalculate texture when phase is changed by more than this amount, None for always recalculate. (Saves time.)</tt> </tt>
+<a name="L523"></a><tt class="py-lineno">523</tt>  <tt class="py-line">                                       <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-116" class="py-name"><a title="VisionEgg.ParameterTypes.Real" class="py-name" href="#" onclick="return doclink('link-116', 'Real', 'link-32');">Real</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L524"></a><tt class="py-lineno">524</tt>  <tt class="py-line">        <tt class="py-string">'depth_test'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-name">True</tt><tt class="py-op">,</tt> </tt>
+<a name="L525"></a><tt class="py-lineno">525</tt>  <tt class="py-line">                      <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-117" class="py-name"><a title="VisionEgg.ParameterTypes.Boolean" class="py-name" href="#" onclick="return doclink('link-117', 'Boolean', 'link-27');">Boolean</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L526"></a><tt class="py-lineno">526</tt>  <tt class="py-line">                      <tt class="py-string">"perform depth test?"</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L527"></a><tt class="py-lineno">527</tt>  <tt class="py-line">        <tt class="py-string">'lowerleft'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-number">0.0</tt><tt class="py-op">,</tt><tt class="py-number">0.0</tt><tt class="py-op">,</tt><tt class="py-op">-</tt><tt class="py-number">1.0</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-comment"># in eye coordinates</tt> </tt>
+<a name="L528"></a><tt class="py-lineno">528</tt>  <tt class="py-line">                     <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-118" class="py-name"><a title="VisionEgg.ParameterTypes.AnyOf" class="py-name" href="#" onclick="return doclink('link-118', 'AnyOf', 'link-48');">AnyOf</a></tt><tt class="py-op">(</tt><tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-119" class="py-name"><a title="VisionEgg.ParameterTypes.Sequence3" class="py [...]
+<a name="L529"></a><tt class="py-lineno">529</tt>  <tt class="py-line">                                    <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-121" class="py-name"><a title="VisionEgg.ParameterTypes.Sequence4" class="py-name" href="#" onclick="return doclink('link-121', 'Sequence4', 'link-51');">Sequence4</a></tt><tt class="py-op">(</tt><tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-122" class="py-name"><a title="VisionEgg.Paramete [...]
+<a name="L530"></a><tt class="py-lineno">530</tt>  <tt class="py-line">                     <tt class="py-string">"vertex position (units: eye coordinates)"</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L531"></a><tt class="py-lineno">531</tt>  <tt class="py-line">        <tt class="py-string">'lowerright'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-number">1.0</tt><tt class="py-op">,</tt><tt class="py-number">0.0</tt><tt class="py-op">,</tt><tt class="py-op">-</tt><tt class="py-number">1.0</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-comment"># in eye coordinates</tt> </tt>
+<a name="L532"></a><tt class="py-lineno">532</tt>  <tt class="py-line">                      <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-123" class="py-name"><a title="VisionEgg.ParameterTypes.AnyOf" class="py-name" href="#" onclick="return doclink('link-123', 'AnyOf', 'link-48');">AnyOf</a></tt><tt class="py-op">(</tt><tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-124" class="py-name"><a title="VisionEgg.ParameterTypes.Sequence3" class="p [...]
+<a name="L533"></a><tt class="py-lineno">533</tt>  <tt class="py-line">                                     <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-126" class="py-name"><a title="VisionEgg.ParameterTypes.Sequence4" class="py-name" href="#" onclick="return doclink('link-126', 'Sequence4', 'link-51');">Sequence4</a></tt><tt class="py-op">(</tt><tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-127" class="py-name"><a title="VisionEgg.Paramet [...]
+<a name="L534"></a><tt class="py-lineno">534</tt>  <tt class="py-line">                      <tt class="py-string">"vertex position (units: eye coordinates)"</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L535"></a><tt class="py-lineno">535</tt>  <tt class="py-line">        <tt class="py-string">'upperleft'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-number">0.0</tt><tt class="py-op">,</tt><tt class="py-number">1.0</tt><tt class="py-op">,</tt><tt class="py-op">-</tt><tt class="py-number">1.0</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-comment"># in eye coordinates</tt> </tt>
+<a name="L536"></a><tt class="py-lineno">536</tt>  <tt class="py-line">                     <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-128" class="py-name"><a title="VisionEgg.ParameterTypes.AnyOf" class="py-name" href="#" onclick="return doclink('link-128', 'AnyOf', 'link-48');">AnyOf</a></tt><tt class="py-op">(</tt><tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-129" class="py-name"><a title="VisionEgg.ParameterTypes.Sequence3" class="py [...]
+<a name="L537"></a><tt class="py-lineno">537</tt>  <tt class="py-line">                                    <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-131" class="py-name"><a title="VisionEgg.ParameterTypes.Sequence4" class="py-name" href="#" onclick="return doclink('link-131', 'Sequence4', 'link-51');">Sequence4</a></tt><tt class="py-op">(</tt><tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-132" class="py-name"><a title="VisionEgg.Paramete [...]
+<a name="L538"></a><tt class="py-lineno">538</tt>  <tt class="py-line">                     <tt class="py-string">"vertex position (units: eye coordinates)"</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L539"></a><tt class="py-lineno">539</tt>  <tt class="py-line">        <tt class="py-string">'upperright'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-number">1.0</tt><tt class="py-op">,</tt><tt class="py-number">1.0</tt><tt class="py-op">,</tt><tt class="py-op">-</tt><tt class="py-number">1.0</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-comment"># in eye coordinates</tt> </tt>
+<a name="L540"></a><tt class="py-lineno">540</tt>  <tt class="py-line">                      <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-133" class="py-name"><a title="VisionEgg.ParameterTypes.AnyOf" class="py-name" href="#" onclick="return doclink('link-133', 'AnyOf', 'link-48');">AnyOf</a></tt><tt class="py-op">(</tt><tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-134" class="py-name"><a title="VisionEgg.ParameterTypes.Sequence3" class="p [...]
+<a name="L541"></a><tt class="py-lineno">541</tt>  <tt class="py-line">                                     <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-136" class="py-name"><a title="VisionEgg.ParameterTypes.Sequence4" class="py-name" href="#" onclick="return doclink('link-136', 'Sequence4', 'link-51');">Sequence4</a></tt><tt class="py-op">(</tt><tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-137" class="py-name"><a title="VisionEgg.Paramet [...]
+<a name="L542"></a><tt class="py-lineno">542</tt>  <tt class="py-line">                      <tt class="py-string">"vertex position (units: eye coordinates)"</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L543"></a><tt class="py-lineno">543</tt>  <tt class="py-line">        <tt class="py-op">}</tt><tt class="py-op">)</tt> </tt>
+<a name="L544"></a><tt class="py-lineno">544</tt>  <tt class="py-line"> </tt>
+<a name="L545"></a><tt class="py-lineno">545</tt>  <tt class="py-line">    <tt class="py-name">__slots__</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt> </tt>
+<a name="L546"></a><tt class="py-lineno">546</tt>  <tt class="py-line">        <tt class="py-string">'_texture_object_id'</tt><tt class="py-op">,</tt> </tt>
+<a name="L547"></a><tt class="py-lineno">547</tt>  <tt class="py-line">        <tt class="py-string">'_last_phase'</tt><tt class="py-op">,</tt> </tt>
+<a name="L548"></a><tt class="py-lineno">548</tt>  <tt class="py-line">        <tt class="py-op">)</tt> </tt>
+<a name="L549"></a><tt class="py-lineno">549</tt>  <tt class="py-line"> </tt>
+<a name="SinGrating3D.__init__"></a><div id="SinGrating3D.__init__-def"><a name="L550"></a><tt class="py-lineno">550</tt> <a class="py-toggle" href="#" id="SinGrating3D.__init__-toggle" onclick="return toggle('SinGrating3D.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.Gratings.SinGrating3D-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt><tt class="py-op">**</t [...]
+</div><div id="SinGrating3D.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SinGrating3D.__init__-expanded"><a name="L551"></a><tt class="py-lineno">551</tt>  <tt class="py-line">        <tt id="link-138" class="py-name"><a title="VisionEgg.Gratings.LuminanceGratingCommon" class="py-name" href="#" onclick="return doclink('link-138', 'LuminanceGratingCommon', 'link-59');">LuminanceGratingCommon</a></tt><tt class="py-op">.</tt><tt id="link-139" class="p [...]
+VisionEgg.Configuration.Config.__init__
+VisionEgg.Core.FixationSpot.__init__
+VisionEgg.Core.FrameTimer.__init__
+VisionEgg.Core.ModelView.__init__
+VisionEgg.Core.OrthographicProjection.__init__
+VisionEgg.Core.OrthographicProjectionNoZClip.__init__
+VisionEgg.Core.PerspectiveProjection.__init__
+VisionEgg.Core.Projection.__init__
+VisionEgg.Core.ProjectionBaseClass.__init__
+VisionEgg.Core.Screen.__init__
+VisionEgg.Core.SimplePerspectiveProjection.__init__
+VisionEgg.Core.Stimulus.__init__
+VisionEgg.Core.Viewport.__init__
+VisionEgg.Daq.Channel.__init__
+VisionEgg.Daq.DaqMode.__init__
+VisionEgg.Daq.Device.__init__
+VisionEgg.Daq.Functionality.__init__
+VisionEgg.Daq.SignalType.__init__
+VisionEgg.DaqKeyboard.KeyboardTriggerInController.__init__
+VisionEgg.DaqLPT.LPTChannel.__init__
+VisionEgg.DaqLPT.LPTDevice.__init__
+VisionEgg.DaqLPT.LPTTriggerInController.__init__
+VisionEgg.DaqLPT.LPTTriggerOutController.__init__
+VisionEgg.Deprecated.Message.__init__
+VisionEgg.Dots.DotArea2D.__init__
+VisionEgg.FlowControl.ConstantController.__init__
+VisionEgg.FlowControl.Controller.__init__
+VisionEgg.FlowControl.EncapsulatedController.__init__
+VisionEgg.FlowControl.EvalStringController.__init__
+VisionEgg.FlowControl.ExecStringController.__init__
+VisionEgg.FlowControl.FunctionController.__init__
+VisionEgg.FlowControl.Presentation.__init__
+VisionEgg.GLTrace.Wrapper.__init__
+VisionEgg.GUI.AppWindow.__init__
+VisionEgg.GUI.GetKeypressDialog.__init__
+VisionEgg.GUI.GraphicsConfigurationWindow.__init__
+VisionEgg.GUI.InfoFrame.__init__
+VisionEgg.GUI.ProgressBar.__init__
+VisionEgg.GUI.ToplevelDialog.__init__
+VisionEgg.Gratings.SinGrating2D.__init__
+VisionEgg.Gratings.SinGrating3D.__init__
+VisionEgg.MoreStimuli.Arrow.__init__
+VisionEgg.MoreStimuli.FilledCircle.__init__
+VisionEgg.MoreStimuli.Rectangle3D.__init__
+VisionEgg.MoreStimuli.Target2D.__init__
+VisionEgg.ParameterTypes.AnyOf.__init__
+VisionEgg.ParameterTypes.Instance.__init__
+VisionEgg.ParameterTypes.Sequence.__init__
+VisionEgg.ParameterTypes.SubClass.__init__
+VisionEgg.PyroApps.AST_ext.AST_Visitor.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalMetaParameters.__init__
+VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.__init__
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.__init__
+VisionEgg.PyroApps.DropinGUI.DropinMetaParameters.__init__
+VisionEgg.PyroApps.DropinServer.DropinMetaController.__init__
+VisionEgg.PyroApps.EPhysGUI.AppWindow.__init__
+VisionEgg.PyroApps.EPhysGUI.BarButton.__init__
+VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase.__init__
+VisionEgg.PyroApps.EPhysGUI.GammaFrame.__init__
+VisionEgg.PyroApps.EPhysGUI.ImageSequenceLauncher.__init__
+VisionEgg.PyroApps.EPhysGUI.Loop.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopContainedObject.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopParamDialog.__init__
+VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.__init__
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.__init__
+VisionEgg.PyroApps.EPhysServer.EPhysServer.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingMetaParameters.__init__
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.GridGUI.GridControlFrame.__init__
+VisionEgg.PyroApps.GridGUI.GridMetaParameters.__init__
+VisionEgg.PyroApps.GridServer.GridMetaController.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetMetaParameters.__init__
+VisionEgg.PyroApps.MouseTargetServer.MousePositionController.__init__
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetOrientationController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetPositionController.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.CallbackEntry.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionParameters.__init__
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingMetaParameters.__init__
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumMetaParameters.__init__
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.__init__
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.__init__
+VisionEgg.PyroApps.TargetGUI.TargetMetaParameters.__init__
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.__init__
+VisionEgg.PyroClient.PyroClient.__init__
+VisionEgg.PyroHelpers.PyroConstantController.__init__
+VisionEgg.PyroHelpers.PyroEncapsulatedController.__init__
+VisionEgg.PyroHelpers.PyroEvalStringController.__init__
+VisionEgg.PyroHelpers.PyroExecStringController.__init__
+VisionEgg.PyroHelpers.PyroListenController.__init__
+VisionEgg.PyroHelpers.PyroLocalDictController.__init__
+VisionEgg.PyroHelpers.PyroServer.__init__
+VisionEgg.QuickTime.MovieTexture.__init__
+VisionEgg.ResponseControl.KeyboardResponseController.__init__
+VisionEgg.ResponseControl.ResponseController.__init__
+VisionEgg.SphereMap.AzElGrid.__init__
+VisionEgg.SphereMap.SphereGrating.__init__
+VisionEgg.SphereMap.SphereMap.__init__
+VisionEgg.SphereMap.SphereWindow.__init__
+VisionEgg.TCPController.SocketListenController.__init__
+VisionEgg.TCPController.TCPController.__init__
+VisionEgg.TCPController.TCPServer.__init__
+VisionEgg.Text.BitmapText.__init__
+VisionEgg.Text.GlutTextBase.__init__
+VisionEgg.Text.StrokeText.__init__
+VisionEgg.Text.Text.__init__
+VisionEgg.Textures.FixationCross.__init__
+VisionEgg.Textures.Mask2D.__init__
+VisionEgg.Textures.SpinningDrum.__init__
+VisionEgg.Textures.Texture.__init__
+VisionEgg.Textures.TextureFromFile.__init__
+VisionEgg.Textures.TextureObject.__init__
+VisionEgg.Textures.TextureStimulusBaseClass.__init__
+VisionEgg.ThreeDeeMath.TransformMatrix.__init__
+VisionEgg.WrappedText.WrappedText.__init__
+VisionEgg.qtmovie.Movie.__init__
+VisionEgg.qtmovie.Rect.__init__" class="py-name" href="#" onclick="return doclink('link-139', '__init__', 'link-60');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt><tt class="py-op">**</tt><tt class="py-name">kw</tt><tt class="py-op">)</tt> </tt>
+<a name="L552"></a><tt class="py-lineno">552</tt>  <tt class="py-line"> </tt>
+<a name="L553"></a><tt class="py-lineno">553</tt>  <tt class="py-line">        <tt class="py-name">p</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt> <tt class="py-comment"># shorthand</tt> </tt>
+<a name="L554"></a><tt class="py-lineno">554</tt>  <tt class="py-line"> </tt>
+<a name="L555"></a><tt class="py-lineno">555</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_texture_object_id</tt> <tt class="py-op">=</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glGenTextures</tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="L556"></a><tt class="py-lineno">556</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">mask</tt><tt class="py-op">:</tt> </tt>
+<a name="L557"></a><tt class="py-lineno">557</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glActiveTextureARB</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE0_ARB</tt><tt class="py-op">)</tt> </tt>
+<a name="L558"></a><tt class="py-lineno">558</tt>  <tt class="py-line">        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glBindTexture</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE_1D</tt><tt class="py-op">,</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_texture_object_id</tt><tt class="py-op">)</tt> </tt>
+<a name="L559"></a><tt class="py-lineno">559</tt>  <tt class="py-line"> </tt>
+<a name="L560"></a><tt class="py-lineno">560</tt>  <tt class="py-line">        <tt class="py-comment"># Do error-checking on texture to make sure it will load</tt> </tt>
+<a name="L561"></a><tt class="py-lineno">561</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">max_dim</tt> <tt class="py-op">=</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glGetIntegerv</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_MAX_TEXTURE_SIZE</tt><tt class="py-op">)</tt> </tt>
+<a name="L562"></a><tt class="py-lineno">562</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">num_samples</tt> <tt class="py-op">></tt> <tt class="py-name">max_dim</tt><tt class="py-op">:</tt> </tt>
+<a name="L563"></a><tt class="py-lineno">563</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt id="link-140" class="py-name"><a title="VisionEgg.Gratings.NumSamplesTooLargeError" class="py-name" href="#" onclick="return doclink('link-140', 'NumSamplesTooLargeError', 'link-61');">NumSamplesTooLargeError</a></tt><tt class="py-op">(</tt><tt class="py-string">"Grating num_samples too large for video system.\nOpenGL reports maximum size of %d"</tt><tt class="py-op">% [...]
+<a name="L564"></a><tt class="py-lineno">564</tt>  <tt class="py-line"> </tt>
+<a name="L565"></a><tt class="py-lineno">565</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-141" class="py-name"><a title="VisionEgg.Gratings.AlphaGratingCommon.calculate_bit_depth_dependencies
+VisionEgg.Gratings.LuminanceGratingCommon.calculate_bit_depth_dependencies" class="py-name" href="#" onclick="return doclink('link-141', 'calculate_bit_depth_dependencies', 'link-62');">calculate_bit_depth_dependencies</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L566"></a><tt class="py-lineno">566</tt>  <tt class="py-line"> </tt>
+<a name="L567"></a><tt class="py-lineno">567</tt>  <tt class="py-line">        <tt class="py-name">w</tt> <tt class="py-op">=</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt id="link-142" class="py-name"><a title="VisionEgg.Core.Screen.size" class="py-name" href="#" onclick="return doclink('link-142', 'size', 'link-63');">size</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt>
+<a name="L568"></a><tt class="py-lineno">568</tt>  <tt class="py-line">        <tt class="py-name">inc</tt> <tt class="py-op">=</tt> <tt class="py-name">w</tt><tt class="py-op">/</tt><tt id="link-143" class="py-name"><a title="float" class="py-name" href="#" onclick="return doclink('link-143', 'float', 'link-9');">float</a></tt><tt class="py-op">(</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">num_samples</tt><tt class="py-op">)</tt> </tt>
+<a name="L569"></a><tt class="py-lineno">569</tt>  <tt class="py-line">        <tt class="py-name">phase</tt> <tt class="py-op">=</tt> <tt class="py-number">0.0</tt> <tt class="py-comment"># this data won't get used - don't care about phase</tt> </tt>
+<a name="L570"></a><tt class="py-lineno">570</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_last_phase</tt> <tt class="py-op">=</tt> <tt class="py-name">phase</tt> </tt>
+<a name="L571"></a><tt class="py-lineno">571</tt>  <tt class="py-line">        <tt class="py-name">floating_point_sin</tt> <tt class="py-op">=</tt> <tt class="py-name">numpy</tt><tt class="py-op">.</tt><tt class="py-name">sin</tt><tt class="py-op">(</tt><tt class="py-number">2.0</tt><tt class="py-op">*</tt><tt class="py-name">math</tt><tt class="py-op">.</tt><tt class="py-name">pi</tt><tt class="py-op">*</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">spatial_fr [...]
+<a name="L572"></a><tt class="py-lineno">572</tt>  <tt class="py-line">        <tt class="py-name">floating_point_sin</tt> <tt class="py-op">=</tt> <tt class="py-name">numpy</tt><tt class="py-op">.</tt><tt class="py-name">clip</tt><tt class="py-op">(</tt><tt class="py-name">floating_point_sin</tt><tt class="py-op">,</tt><tt class="py-number">0.0</tt><tt class="py-op">,</tt><tt class="py-number">1.0</tt><tt class="py-op">)</tt> <tt class="py-comment"># allow square wave generation if cont [...]
+<a name="L573"></a><tt class="py-lineno">573</tt>  <tt class="py-line">        <tt class="py-name">texel_data</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">floating_point_sin</tt><tt class="py-op">*</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">max_int_val</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">astype</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-na [...]
+<a name="L574"></a><tt class="py-lineno">574</tt>  <tt class="py-line"> </tt>
+<a name="L575"></a><tt class="py-lineno">575</tt>  <tt class="py-line">        <tt class="py-comment"># Because the MAX_TEXTURE_SIZE method is insensitive to the current</tt> </tt>
+<a name="L576"></a><tt class="py-lineno">576</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># state of the video system, another check must be done using</tt> </tt>
+<a name="L577"></a><tt class="py-lineno">577</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># "proxy textures".</tt> </tt>
+<a name="L578"></a><tt class="py-lineno">578</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glTexImage1D</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_PROXY_TEXTURE_1D</tt><tt class="py-op">,</tt>            <tt class="py-comment"># target</tt> </tt>
+<a name="L579"></a><tt class="py-lineno">579</tt>  <tt class="py-line">                        <tt class="py-number">0</tt><tt class="py-op">,</tt>                                 <tt class="py-comment"># level</tt> </tt>
+<a name="L580"></a><tt class="py-lineno">580</tt>  <tt class="py-line">                        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">gl_internal_format</tt><tt class="py-op">,</tt>           <tt class="py-comment"># video RAM internal format</tt> </tt>
+<a name="L581"></a><tt class="py-lineno">581</tt>  <tt class="py-line">                        <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">num_samples</tt><tt class="py-op">,</tt>                     <tt class="py-comment"># width</tt> </tt>
+<a name="L582"></a><tt class="py-lineno">582</tt>  <tt class="py-line">                        <tt class="py-number">0</tt><tt class="py-op">,</tt>                                 <tt class="py-comment"># border</tt> </tt>
+<a name="L583"></a><tt class="py-lineno">583</tt>  <tt class="py-line">                        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">format</tt><tt class="py-op">,</tt>                       <tt class="py-comment"># format of texel data</tt> </tt>
+<a name="L584"></a><tt class="py-lineno">584</tt>  <tt class="py-line">                        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">gl_type</tt><tt class="py-op">,</tt>                      <tt class="py-comment"># type of texel data</tt> </tt>
+<a name="L585"></a><tt class="py-lineno">585</tt>  <tt class="py-line">                        <tt class="py-name">texel_data</tt><tt class="py-op">)</tt>                        <tt class="py-comment"># texel data (irrelevant for proxy)</tt> </tt>
+<a name="L586"></a><tt class="py-lineno">586</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glGetTexLevelParameteriv</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_PROXY_TEXTURE_1D</tt><tt class="py-op">,</tt> <tt class="py-comment"># Need PyOpenGL >= 2.0</tt> </tt>
+<a name="L587"></a><tt class="py-lineno">587</tt>  <tt class="py-line">                                       <tt class="py-number">0</tt><tt class="py-op">,</tt> </tt>
+<a name="L588"></a><tt class="py-lineno">588</tt>  <tt class="py-line">                                       <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE_WIDTH</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt>
+<a name="L589"></a><tt class="py-lineno">589</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt id="link-145" class="py-name"><a title="VisionEgg.Gratings.NumSamplesTooLargeError" class="py-name" href="#" onclick="return doclink('link-145', 'NumSamplesTooLargeError', 'link-61');">NumSamplesTooLargeError</a></tt><tt class="py-op">(</tt><tt class="py-string">"Grating num_samples is too wide for your video system!"</tt><tt class="py-op">)</tt> </tt>
+<a name="L590"></a><tt class="py-lineno">590</tt>  <tt class="py-line"> </tt>
+<a name="L591"></a><tt class="py-lineno">591</tt>  <tt class="py-line">        <tt class="py-comment"># If we got here, it worked and we can load the texture for real.</tt> </tt>
+<a name="L592"></a><tt class="py-lineno">592</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glTexImage1D</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE_1D</tt><tt class="py-op">,</tt>                  <tt class="py-comment"># target</tt> </tt>
+<a name="L593"></a><tt class="py-lineno">593</tt>  <tt class="py-line">                        <tt class="py-number">0</tt><tt class="py-op">,</tt>                                 <tt class="py-comment"># level</tt> </tt>
+<a name="L594"></a><tt class="py-lineno">594</tt>  <tt class="py-line">                        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">gl_internal_format</tt><tt class="py-op">,</tt>           <tt class="py-comment"># video RAM internal format</tt> </tt>
+<a name="L595"></a><tt class="py-lineno">595</tt>  <tt class="py-line">                        <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">num_samples</tt><tt class="py-op">,</tt>                     <tt class="py-comment"># width</tt> </tt>
+<a name="L596"></a><tt class="py-lineno">596</tt>  <tt class="py-line">                        <tt class="py-number">0</tt><tt class="py-op">,</tt>                                 <tt class="py-comment"># border</tt> </tt>
+<a name="L597"></a><tt class="py-lineno">597</tt>  <tt class="py-line">                        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">format</tt><tt class="py-op">,</tt>                       <tt class="py-comment"># format of texel data</tt> </tt>
+<a name="L598"></a><tt class="py-lineno">598</tt>  <tt class="py-line">                        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">gl_type</tt><tt class="py-op">,</tt>                      <tt class="py-comment"># type of texel data</tt> </tt>
+<a name="L599"></a><tt class="py-lineno">599</tt>  <tt class="py-line">                        <tt class="py-name">texel_data</tt><tt class="py-op">)</tt>                        <tt class="py-comment"># texel data</tt> </tt>
+<a name="L600"></a><tt class="py-lineno">600</tt>  <tt class="py-line"> </tt>
+<a name="L601"></a><tt class="py-lineno">601</tt>  <tt class="py-line">        <tt class="py-comment"># Set texture object defaults</tt> </tt>
+<a name="L602"></a><tt class="py-lineno">602</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glTexParameteri</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE_1D</tt><tt class="py-op">,</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE_WRAP_S</tt><tt class="py-op">,</tt><tt class="py-name">gl</tt><tt class="py [...]
+<a name="L603"></a><tt class="py-lineno">603</tt>  <tt class="py-line">        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glTexParameteri</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE_1D</tt><tt class="py-op">,</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE_WRAP_T</tt><tt class="py-op">,</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-nam [...]
+<a name="L604"></a><tt class="py-lineno">604</tt>  <tt class="py-line">        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glTexParameteri</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE_1D</tt><tt class="py-op">,</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE_MAG_FILTER</tt><tt class="py-op">,</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py [...]
+<a name="L605"></a><tt class="py-lineno">605</tt>  <tt class="py-line">        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glTexParameteri</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE_1D</tt><tt class="py-op">,</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE_MIN_FILTER</tt><tt class="py-op">,</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py [...]
+<a name="L606"></a><tt class="py-lineno">606</tt>  <tt class="py-line"> </tt>
+<a name="L607"></a><tt class="py-lineno">607</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">color2</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L608"></a><tt class="py-lineno">608</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt id="link-146" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-146', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-147" class="py-name"><a title="VisionEgg.Core" class="py-name" href="#" onclick="return doclink('link-147', 'Core', 'link-2');">Core</a></tt><tt class="py-op">.</tt><tt class="py-nam [...]
+<a name="L609"></a><tt class="py-lineno">609</tt>  <tt class="py-line">                <tt id="link-150" class="py-name"><a title="VisionEgg.logger" class="py-name" href="#" onclick="return doclink('link-150', 'logger', 'link-16');">logger</a></tt> <tt class="py-op">=</tt> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">getLogger</tt><tt class="py-op">(</tt><tt class="py-string">'VisionEgg.Gratings'</tt><tt class="py-op">)</tt> </tt>
+<a name="L610"></a><tt class="py-lineno">610</tt>  <tt class="py-line">                <tt id="link-151" class="py-name"><a title="VisionEgg.logger" class="py-name" href="#" onclick="return doclink('link-151', 'logger', 'link-16');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">warning</tt><tt class="py-op">(</tt><tt class="py-string">"Your video card and driver have known "</tt> </tt>
+<a name="L611"></a><tt class="py-lineno">611</tt>  <tt class="py-line">                               <tt class="py-string">"bugs which prevent them from rendering "</tt> </tt>
+<a name="L612"></a><tt class="py-lineno">612</tt>  <tt class="py-line">                               <tt class="py-string">"color gratings properly."</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L613"></a><tt class="py-lineno">613</tt>  <tt class="py-line"> </tt>
+<a name="SinGrating3D.__del__"></a><div id="SinGrating3D.__del__-def"><a name="L614"></a><tt class="py-lineno">614</tt> <a class="py-toggle" href="#" id="SinGrating3D.__del__-toggle" onclick="return toggle('SinGrating3D.__del__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.Gratings.SinGrating3D-class.html#__del__">__del__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="SinGrating3D.__del__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SinGrating3D.__del__-expanded"><a name="L615"></a><tt class="py-lineno">615</tt>  <tt class="py-line">        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glDeleteTextures</tt><tt class="py-op">(</tt> <tt class="py-op">[</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_texture_object_id</tt><tt class="py-op">]</tt> <tt clas [...]
+</div><a name="L616"></a><tt class="py-lineno">616</tt>  <tt class="py-line"> </tt>
+<a name="SinGrating3D.draw"></a><div id="SinGrating3D.draw-def"><a name="L617"></a><tt class="py-lineno">617</tt> <a class="py-toggle" href="#" id="SinGrating3D.draw-toggle" onclick="return toggle('SinGrating3D.draw');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.Gratings.SinGrating3D-class.html#draw">draw</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="SinGrating3D.draw-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SinGrating3D.draw-expanded"><a name="L618"></a><tt class="py-lineno">618</tt>  <tt class="py-line">        <tt class="py-name">p</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt> <tt class="py-comment"># shorthand</tt> </tt>
+<a name="L619"></a><tt class="py-lineno">619</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">on</tt><tt class="py-op">:</tt> </tt>
+<a name="L620"></a><tt class="py-lineno">620</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">mask</tt><tt class="py-op">:</tt> </tt>
+<a name="L621"></a><tt class="py-lineno">621</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glActiveTextureARB</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE0_ARB</tt><tt class="py-op">)</tt> </tt>
+<a name="L622"></a><tt class="py-lineno">622</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">depth_test</tt><tt class="py-op">:</tt> </tt>
+<a name="L623"></a><tt class="py-lineno">623</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glEnable</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_DEPTH_TEST</tt><tt class="py-op">)</tt> </tt>
+<a name="L624"></a><tt class="py-lineno">624</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L625"></a><tt class="py-lineno">625</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glDisable</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_DEPTH_TEST</tt><tt class="py-op">)</tt> </tt>
+<a name="L626"></a><tt class="py-lineno">626</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glBindTexture</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE_1D</tt><tt class="py-op">,</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_texture_object_id</tt><tt class="py-op">)</tt> </tt>
+<a name="L627"></a><tt class="py-lineno">627</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glEnable</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE_1D</tt><tt class="py-op">)</tt> </tt>
+<a name="L628"></a><tt class="py-lineno">628</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glDisable</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE_2D</tt><tt class="py-op">)</tt> </tt>
+<a name="L629"></a><tt class="py-lineno">629</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">bit_depth</tt> <tt class="py-op">!=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">cached_bit_depth</tt><tt class="py-op">:</tt> </tt>
+<a name="L630"></a><tt class="py-lineno">630</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-152" class="py-name"><a title="VisionEgg.Gratings.AlphaGratingCommon.calculate_bit_depth_dependencies
+VisionEgg.Gratings.LuminanceGratingCommon.calculate_bit_depth_dependencies" class="py-name" href="#" onclick="return doclink('link-152', 'calculate_bit_depth_dependencies', 'link-62');">calculate_bit_depth_dependencies</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L631"></a><tt class="py-lineno">631</tt>  <tt class="py-line"> </tt>
+<a name="L632"></a><tt class="py-lineno">632</tt>  <tt class="py-line">            <tt class="py-comment"># allow max_alpha value to control blending</tt> </tt>
+<a name="L633"></a><tt class="py-lineno">633</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glEnable</tt><tt class="py-op">(</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_BLEND</tt> <tt class="py-op">)</tt> </tt>
+<a name="L634"></a><tt class="py-lineno">634</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glBlendFunc</tt><tt class="py-op">(</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_SRC_ALPHA</tt><tt class="py-op">,</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_ONE_MINUS_SRC_ALPHA</tt> <tt class="py-op">)</tt> </tt>
+<a name="L635"></a><tt class="py-lineno">635</tt>  <tt class="py-line"> </tt>
+<a name="L636"></a><tt class="py-lineno">636</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">color2</tt><tt class="py-op">:</tt> </tt>
+<a name="L637"></a><tt class="py-lineno">637</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glTexEnvi</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE_ENV</tt><tt class="py-op">,</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE_ENV_MODE</tt><tt class="py-op">,</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class= [...]
+<a name="L638"></a><tt class="py-lineno">638</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glTexEnvfv</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE_ENV</tt><tt class="py-op">,</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE_ENV_COLOR</tt><tt class="py-op">,</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class [...]
+<a name="L639"></a><tt class="py-lineno">639</tt>  <tt class="py-line">                <tt class="py-comment">## alpha is ignored because the texture base internal format is luminance</tt> </tt>
+<a name="L640"></a><tt class="py-lineno">640</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L641"></a><tt class="py-lineno">641</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glTexEnvi</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE_ENV</tt><tt class="py-op">,</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE_ENV_MODE</tt><tt class="py-op">,</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class= [...]
+<a name="L642"></a><tt class="py-lineno">642</tt>  <tt class="py-line"> </tt>
+<a name="L643"></a><tt class="py-lineno">643</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">t0_time_sec_absolute</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt> <tt class="py-keyword">and</tt> <tt class="py-keyword">not</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">ignore_time</tt><tt class="py-op">:</tt> </tt>
+<a name="L644"></a><tt class="py-lineno">644</tt>  <tt class="py-line">                <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">t0_time_sec_absolute</tt> <tt class="py-op">=</tt> <tt id="link-153" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-153', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-154" class="py-name"><a title="VisionEgg.time_func" class="py-name" href="#" onclick="re [...]
+<a name="L645"></a><tt class="py-lineno">645</tt>  <tt class="py-line"> </tt>
+<a name="L646"></a><tt class="py-lineno">646</tt>  <tt class="py-line">            <tt class="py-name">w</tt> <tt class="py-op">=</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt id="link-155" class="py-name"><a title="VisionEgg.Core.Screen.size" class="py-name" href="#" onclick="return doclink('link-155', 'size', 'link-63');">size</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt>
+<a name="L647"></a><tt class="py-lineno">647</tt>  <tt class="py-line">            <tt class="py-name">inc</tt> <tt class="py-op">=</tt> <tt class="py-name">w</tt><tt class="py-op">/</tt><tt id="link-156" class="py-name"><a title="float" class="py-name" href="#" onclick="return doclink('link-156', 'float', 'link-9');">float</a></tt><tt class="py-op">(</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">num_samples</tt><tt class="py-op">)</tt> </tt>
+<a name="L648"></a><tt class="py-lineno">648</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">ignore_time</tt><tt class="py-op">:</tt> </tt>
+<a name="L649"></a><tt class="py-lineno">649</tt>  <tt class="py-line">                <tt class="py-name">phase</tt> <tt class="py-op">=</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">phase_at_t0</tt> </tt>
+<a name="L650"></a><tt class="py-lineno">650</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L651"></a><tt class="py-lineno">651</tt>  <tt class="py-line">                <tt class="py-name">t_var</tt> <tt class="py-op">=</tt> <tt id="link-157" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-157', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-158" class="py-name"><a title="VisionEgg.time_func" class="py-name" href="#" onclick="return doclink('link-158', 'time_func', 'link-77');">time_func</a>< [...]
+<a name="L652"></a><tt class="py-lineno">652</tt>  <tt class="py-line">                <tt class="py-name">phase</tt> <tt class="py-op">=</tt> <tt class="py-name">t_var</tt><tt class="py-op">*</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">temporal_freq_hz</tt><tt class="py-op">*</tt><tt class="py-op">-</tt><tt class="py-number">360.0</tt> <tt class="py-op">+</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">phase_at_t0</tt> </tt>
+<a name="L653"></a><tt class="py-lineno">653</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">recalculate_phase_tolerance</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt> <tt class="py-keyword">or</tt> <tt class="py-name">abs</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_last_phase</tt> <tt class="py-op">-</tt> <tt class="py-na [...]
+<a name="L654"></a><tt class="py-lineno">654</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_last_phase</tt> <tt class="py-op">=</tt> <tt class="py-name">phase</tt> <tt class="py-comment"># we're re-drawing the phase at this angle</tt> </tt>
+<a name="L655"></a><tt class="py-lineno">655</tt>  <tt class="py-line">                <tt class="py-name">floating_point_sin</tt> <tt class="py-op">=</tt> <tt class="py-name">numpy</tt><tt class="py-op">.</tt><tt class="py-name">sin</tt><tt class="py-op">(</tt><tt class="py-number">2.0</tt><tt class="py-op">*</tt><tt class="py-name">math</tt><tt class="py-op">.</tt><tt class="py-name">pi</tt><tt class="py-op">*</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">sp [...]
+<a name="L656"></a><tt class="py-lineno">656</tt>  <tt class="py-line">                <tt class="py-name">floating_point_sin</tt> <tt class="py-op">=</tt> <tt class="py-name">numpy</tt><tt class="py-op">.</tt><tt class="py-name">clip</tt><tt class="py-op">(</tt><tt class="py-name">floating_point_sin</tt><tt class="py-op">,</tt><tt class="py-number">0.0</tt><tt class="py-op">,</tt><tt class="py-number">1.0</tt><tt class="py-op">)</tt> <tt class="py-comment"># allow square wave generation [...]
+<a name="L657"></a><tt class="py-lineno">657</tt>  <tt class="py-line">                <tt class="py-name">texel_data</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">floating_point_sin</tt><tt class="py-op">*</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">max_int_val</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">astype</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt clas [...]
+<a name="L658"></a><tt class="py-lineno">658</tt>  <tt class="py-line"> </tt>
+<a name="L659"></a><tt class="py-lineno">659</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glTexSubImage1D</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE_1D</tt><tt class="py-op">,</tt> <tt class="py-comment"># target</tt> </tt>
+<a name="L660"></a><tt class="py-lineno">660</tt>  <tt class="py-line">                                   <tt class="py-number">0</tt><tt class="py-op">,</tt>                <tt class="py-comment"># level</tt> </tt>
+<a name="L661"></a><tt class="py-lineno">661</tt>  <tt class="py-line">                                   <tt class="py-number">0</tt><tt class="py-op">,</tt>                <tt class="py-comment"># x offset</tt> </tt>
+<a name="L662"></a><tt class="py-lineno">662</tt>  <tt class="py-line">                                   <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">num_samples</tt><tt class="py-op">,</tt>    <tt class="py-comment"># width</tt> </tt>
+<a name="L663"></a><tt class="py-lineno">663</tt>  <tt class="py-line">                                   <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">format</tt><tt class="py-op">,</tt>      <tt class="py-comment"># format of new texel data</tt> </tt>
+<a name="L664"></a><tt class="py-lineno">664</tt>  <tt class="py-line">                                   <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">gl_type</tt><tt class="py-op">,</tt>     <tt class="py-comment"># type of new texel data</tt> </tt>
+<a name="L665"></a><tt class="py-lineno">665</tt>  <tt class="py-line">                                   <tt class="py-name">texel_data</tt><tt class="py-op">)</tt>       <tt class="py-comment"># new texel data</tt> </tt>
+<a name="L666"></a><tt class="py-lineno">666</tt>  <tt class="py-line"> </tt>
+<a name="L667"></a><tt class="py-lineno">667</tt>  <tt class="py-line">            <tt class="py-comment"># in the case of only color1,</tt> </tt>
+<a name="L668"></a><tt class="py-lineno">668</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># the texel data multiplies color1 to produce a color</tt> </tt>
+<a name="L669"></a><tt class="py-lineno">669</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L670"></a><tt class="py-lineno">670</tt>  <tt class="py-line">            <tt class="py-comment"># with color2,</tt> </tt>
+<a name="L671"></a><tt class="py-lineno">671</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># the texel data linearly interpolates between color1 and color2</tt> </tt>
+<a name="L672"></a><tt class="py-lineno">672</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L673"></a><tt class="py-lineno">673</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glColor4f</tt><tt class="py-op">(</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">color1</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">,</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">color1</tt><tt class="py-op">[</tt><tt class="py- [...]
+<a name="L674"></a><tt class="py-lineno">674</tt>  <tt class="py-line"> </tt>
+<a name="L675"></a><tt class="py-lineno">675</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">mask</tt><tt class="py-op">:</tt> </tt>
+<a name="L676"></a><tt class="py-lineno">676</tt>  <tt class="py-line">                <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">mask</tt><tt class="py-op">.</tt><tt id="link-160" class="py-name" targets="Method VisionEgg.Textures.Mask2D.draw_masked_quad_3d()=VisionEgg.Textures.Mask2D-class.html#draw_masked_quad_3d"><a title="VisionEgg.Textures.Mask2D.draw_masked_quad_3d" class="py-name" href="#" onclick="return doclink('link-160', 'draw_masked_quad_3d', 'link [...]
+<a name="L677"></a><tt class="py-lineno">677</tt>  <tt class="py-line">                                           <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">lowerleft</tt><tt class="py-op">,</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">lowerright</tt><tt class="py-op">,</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">upperright</tt><tt class="py-op">,</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><t [...]
+<a name="L678"></a><tt class="py-lineno">678</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L679"></a><tt class="py-lineno">679</tt>  <tt class="py-line">                <tt class="py-comment"># draw unmasked quad</tt> </tt>
+<a name="L680"></a><tt class="py-lineno">680</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glBegin</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_QUADS</tt><tt class="py-op">)</tt> </tt>
+<a name="L681"></a><tt class="py-lineno">681</tt>  <tt class="py-line"> </tt>
+<a name="L682"></a><tt class="py-lineno">682</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glTexCoord2f</tt><tt class="py-op">(</tt><tt class="py-number">0.0</tt><tt class="py-op">,</tt><tt class="py-number">0.0</tt><tt class="py-op">)</tt> </tt>
+<a name="L683"></a><tt class="py-lineno">683</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glVertex3f</tt><tt class="py-op">(</tt><tt class="py-op">*</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">lowerleft</tt><tt class="py-op">)</tt> </tt>
+<a name="L684"></a><tt class="py-lineno">684</tt>  <tt class="py-line"> </tt>
+<a name="L685"></a><tt class="py-lineno">685</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glTexCoord2f</tt><tt class="py-op">(</tt><tt class="py-number">1.0</tt><tt class="py-op">,</tt><tt class="py-number">0.0</tt><tt class="py-op">)</tt> </tt>
+<a name="L686"></a><tt class="py-lineno">686</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glVertex3f</tt><tt class="py-op">(</tt><tt class="py-op">*</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">lowerright</tt><tt class="py-op">)</tt> </tt>
+<a name="L687"></a><tt class="py-lineno">687</tt>  <tt class="py-line"> </tt>
+<a name="L688"></a><tt class="py-lineno">688</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glTexCoord2f</tt><tt class="py-op">(</tt><tt class="py-number">1.0</tt><tt class="py-op">,</tt><tt class="py-number">1.0</tt><tt class="py-op">)</tt> </tt>
+<a name="L689"></a><tt class="py-lineno">689</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glVertex3f</tt><tt class="py-op">(</tt><tt class="py-op">*</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">upperright</tt><tt class="py-op">)</tt> </tt>
+<a name="L690"></a><tt class="py-lineno">690</tt>  <tt class="py-line"> </tt>
+<a name="L691"></a><tt class="py-lineno">691</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glTexCoord2f</tt><tt class="py-op">(</tt><tt class="py-number">0.0</tt><tt class="py-op">,</tt><tt class="py-number">1.0</tt><tt class="py-op">)</tt> </tt>
+<a name="L692"></a><tt class="py-lineno">692</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glVertex3f</tt><tt class="py-op">(</tt><tt class="py-op">*</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">upperleft</tt><tt class="py-op">)</tt> </tt>
+<a name="L693"></a><tt class="py-lineno">693</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glEnd</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-comment"># GL_QUADS</tt> </tt>
+<a name="L694"></a><tt class="py-lineno">694</tt>  <tt class="py-line"> </tt>
+<a name="L695"></a><tt class="py-lineno">695</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glDisable</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE_1D</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L696"></a><tt class="py-lineno">696</tt>  <tt class="py-line"> </tt>
+<a name="NumSamplesTooLargeError"></a><div id="NumSamplesTooLargeError-def"><a name="L697"></a><tt class="py-lineno">697</tt> <a class="py-toggle" href="#" id="NumSamplesTooLargeError-toggle" onclick="return toggle('NumSamplesTooLargeError');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.Gratings.NumSamplesTooLargeError-class.html">NumSamplesTooLargeError</a><tt class="py-op">(</tt> <tt class="py-base-class">RuntimeError</tt> <tt class [...]
+</div><div id="NumSamplesTooLargeError-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="NumSamplesTooLargeError-expanded"><a name="L698"></a><tt class="py-lineno">698</tt>  <tt class="py-line">    <tt class="py-keyword">pass</tt> </tt>
+</div><a name="L699"></a><tt class="py-lineno">699</tt>  <tt class="py-line"> </tt><script type="text/javascript">
+<!--
+expandto(location.href);
+// -->
+</script>
+</pre>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:47 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.Gratings.AlphaGratingCommon-class.html b/doc/reference/html/VisionEgg.Gratings.AlphaGratingCommon-class.html
new file mode 100644
index 0000000..076c6d0
--- /dev/null
+++ b/doc/reference/html/VisionEgg.Gratings.AlphaGratingCommon-class.html
@@ -0,0 +1,259 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.Gratings.AlphaGratingCommon</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.Gratings-module.html">Module Gratings</a> ::
+        Class AlphaGratingCommon
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.Gratings.AlphaGratingCommon-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class AlphaGratingCommon</h1><span class="codelink"><a href="VisionEgg.Gratings-pysrc.html#AlphaGratingCommon">source code</a></span><br /><br />
+<pre class="base-tree">
+         object --+        
+                  |        
+<a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a> --+    
+                      |    
+          <a href="VisionEgg.Core.Stimulus-class.html">Core.Stimulus</a> --+
+                          |
+                         <strong class="uidshort">AlphaGratingCommon</strong>
+</pre>
+
+<hr />
+<pre class="literalblock">
+Base class with common code to all ways of drawing gratings in alpha.
+
+This class is currently not used by any other classes.
+
+Parameters
+==========
+bit_depth -- precision with which grating is calculated and sent to OpenGL (UnsignedInteger)
+             Default: 8
+
+</pre><br /><br />
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="calculate_bit_depth_dependencies"></a><span class="summary-sig-name">calculate_bit_depth_dependencies</span>(<span class="summary-sig-arg">self</span>)</span><br />
+      Calculate a number of parameters dependent on bit depth.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.Gratings-pysrc.html#AlphaGratingCommon.calculate_bit_depth_dependencies">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.Core.Stimulus-class.html">Core.Stimulus</a></code></b>:
+      <code><a href="VisionEgg.Core.Stimulus-class.html#__init__">__init__</a></code>,
+      <code><a href="VisionEgg.Core.Stimulus-class.html#draw">draw</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a></code></b>:
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__getstate__">__getstate__</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__setstate__">__setstate__</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#get_specified_type">get_specified_type</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#is_constant_parameter">is_constant_parameter</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#set">set</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#verify_parameters">verify_parameters</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__delattr__</code>,
+      <code>__getattribute__</code>,
+      <code>__hash__</code>,
+      <code>__new__</code>,
+      <code>__reduce__</code>,
+      <code>__reduce_ex__</code>,
+      <code>__repr__</code>,
+      <code>__setattr__</code>,
+      <code>__str__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Class Variables</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.Gratings.AlphaGratingCommon-class.html#parameters_and_defaults" class="summary-name">parameters_and_defaults</a> = <code title="VisionEgg.ParameterDefinition({'bit_depth':(8, ve_types.UnsignedIntege\
+r, 'precision with which grating is calculated and sent to OpenGL'),})">VisionEgg.ParameterDefinition({'bit_<code class="variable-ellipsis">...</code></code>
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a></code></b>:
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__safe_for_unpickling__">__safe_for_unpickling__</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#constant_parameters_and_defaults">constant_parameters_and_defaults</a></code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Properties</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__class__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLE DETAILS ==================== -->
+<a name="section-ClassVariableDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Class Variable Details</span></td>
+</tr>
+</table>
+<a name="parameters_and_defaults"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">parameters_and_defaults</h3>
+  
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+VisionEgg.ParameterDefinition({'bit_depth':(8, ve_types.UnsignedIntege<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+r, 'precision with which grating is calculated and sent to OpenGL'),})
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.Gratings.LuminanceGratingCommon-class.html b/doc/reference/html/VisionEgg.Gratings.LuminanceGratingCommon-class.html
new file mode 100644
index 0000000..6720c8c
--- /dev/null
+++ b/doc/reference/html/VisionEgg.Gratings.LuminanceGratingCommon-class.html
@@ -0,0 +1,257 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.Gratings.LuminanceGratingCommon</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.Gratings-module.html">Module Gratings</a> ::
+        Class LuminanceGratingCommon
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.Gratings.LuminanceGratingCommon-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class LuminanceGratingCommon</h1><span class="codelink"><a href="VisionEgg.Gratings-pysrc.html#LuminanceGratingCommon">source code</a></span><br /><br />
+<pre class="base-tree">
+         object --+        
+                  |        
+<a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a> --+    
+                      |    
+          <a href="VisionEgg.Core.Stimulus-class.html">Core.Stimulus</a> --+
+                          |
+                         <strong class="uidshort">LuminanceGratingCommon</strong>
+</pre>
+
+<hr />
+<pre class="literalblock">
+Base class with common code to all ways of drawing luminance gratings.
+
+Parameters
+==========
+bit_depth -- precision with which grating is calculated and sent to OpenGL (UnsignedInteger)
+             Default: 8
+
+</pre><br /><br />
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="calculate_bit_depth_dependencies"></a><span class="summary-sig-name">calculate_bit_depth_dependencies</span>(<span class="summary-sig-arg">self</span>)</span><br />
+      Calculate a number of parameters dependent on bit depth.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.Gratings-pysrc.html#LuminanceGratingCommon.calculate_bit_depth_dependencies">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.Core.Stimulus-class.html">Core.Stimulus</a></code></b>:
+      <code><a href="VisionEgg.Core.Stimulus-class.html#__init__">__init__</a></code>,
+      <code><a href="VisionEgg.Core.Stimulus-class.html#draw">draw</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a></code></b>:
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__getstate__">__getstate__</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__setstate__">__setstate__</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#get_specified_type">get_specified_type</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#is_constant_parameter">is_constant_parameter</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#set">set</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#verify_parameters">verify_parameters</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__delattr__</code>,
+      <code>__getattribute__</code>,
+      <code>__hash__</code>,
+      <code>__new__</code>,
+      <code>__reduce__</code>,
+      <code>__reduce_ex__</code>,
+      <code>__repr__</code>,
+      <code>__setattr__</code>,
+      <code>__str__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Class Variables</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.Gratings.LuminanceGratingCommon-class.html#parameters_and_defaults" class="summary-name">parameters_and_defaults</a> = <code title="VisionEgg.ParameterDefinition({'bit_depth':(8, ve_types.UnsignedIntege\
+r, 'precision with which grating is calculated and sent to OpenGL'),})">VisionEgg.ParameterDefinition({'bit_<code class="variable-ellipsis">...</code></code>
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a></code></b>:
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__safe_for_unpickling__">__safe_for_unpickling__</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#constant_parameters_and_defaults">constant_parameters_and_defaults</a></code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Properties</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__class__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLE DETAILS ==================== -->
+<a name="section-ClassVariableDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Class Variable Details</span></td>
+</tr>
+</table>
+<a name="parameters_and_defaults"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">parameters_and_defaults</h3>
+  
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+VisionEgg.ParameterDefinition({'bit_depth':(8, ve_types.UnsignedIntege<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+r, 'precision with which grating is calculated and sent to OpenGL'),})
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.Gratings.NumSamplesTooLargeError-class.html b/doc/reference/html/VisionEgg.Gratings.NumSamplesTooLargeError-class.html
new file mode 100644
index 0000000..f98fd31
--- /dev/null
+++ b/doc/reference/html/VisionEgg.Gratings.NumSamplesTooLargeError-class.html
@@ -0,0 +1,180 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.Gratings.NumSamplesTooLargeError</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.Gratings-module.html">Module Gratings</a> ::
+        Class NumSamplesTooLargeError
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.Gratings.NumSamplesTooLargeError-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class NumSamplesTooLargeError</h1><span class="codelink"><a href="VisionEgg.Gratings-pysrc.html#NumSamplesTooLargeError">source code</a></span><br /><br />
+<pre class="base-tree">
+              object --+                
+                       |                
+exceptions.BaseException --+            
+                           |            
+        exceptions.Exception --+        
+                               |        
+        exceptions.StandardError --+    
+                                   |    
+             exceptions.RuntimeError --+
+                                       |
+                                      <strong class="uidshort">NumSamplesTooLargeError</strong>
+</pre>
+
+<hr />
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.RuntimeError</code></b>:
+      <code>__init__</code>,
+      <code>__new__</code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.BaseException</code></b>:
+      <code>__delattr__</code>,
+      <code>__getattribute__</code>,
+      <code>__getitem__</code>,
+      <code>__getslice__</code>,
+      <code>__reduce__</code>,
+      <code>__repr__</code>,
+      <code>__setattr__</code>,
+      <code>__setstate__</code>,
+      <code>__str__</code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__hash__</code>,
+      <code>__reduce_ex__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Properties</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.BaseException</code></b>:
+      <code>args</code>,
+      <code>message</code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__class__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.Gratings.SinGrating2D-class.html b/doc/reference/html/VisionEgg.Gratings.SinGrating2D-class.html
new file mode 100644
index 0000000..34ed1c7
--- /dev/null
+++ b/doc/reference/html/VisionEgg.Gratings.SinGrating2D-class.html
@@ -0,0 +1,422 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.Gratings.SinGrating2D</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.Gratings-module.html">Module Gratings</a> ::
+        Class SinGrating2D
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.Gratings.SinGrating2D-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class SinGrating2D</h1><span class="codelink"><a href="VisionEgg.Gratings-pysrc.html#SinGrating2D">source code</a></span><br /><br />
+<pre class="base-tree">
+         object --+            
+                  |            
+<a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a> --+        
+                      |        
+          <a href="VisionEgg.Core.Stimulus-class.html">Core.Stimulus</a> --+    
+                          |    
+     <a href="VisionEgg.Gratings.LuminanceGratingCommon-class.html">LuminanceGratingCommon</a> --+
+                              |
+                             <strong class="uidshort">SinGrating2D</strong>
+</pre>
+
+<hr />
+<pre class="literalblock">
+Sine wave grating stimulus
+
+This is a general-purpose, realtime sine-wave luminace grating
+generator. To acheive an arbitrary orientation, this class rotates
+a textured quad.  To draw a grating with sides that always remain
+horizontal and vertical, draw a large grating in a small viewport.
+(The viewport will clip anything beyond its edges.)
+
+Parameters
+==========
+anchor                      -- specifies how position parameter is interpreted (String)
+                               Default: center
+bit_depth                   -- precision with which grating is calculated and sent to OpenGL (UnsignedInteger)
+                               Inherited from LuminanceGratingCommon
+                               Default: 8
+color1                      -- (AnyOf(Sequence3 of Real or Sequence4 of Real))
+                               Default: (1.0, 1.0, 1.0)
+color2                      -- optional color with which to perform interpolation with color1 in RGB space (AnyOf(Sequence3 of Real or Sequence4 of Real))
+                               Default: (determined at runtime)
+contrast                    -- (Real)
+                               Default: 1.0
+depth                       -- (Real)
+                               Default: (determined at runtime)
+ignore_time                 -- (Boolean)
+                               Default: False
+mask                        -- optional masking function (Instance of <class 'VisionEgg.Textures.Mask2D'>)
+                               Default: (determined at runtime)
+max_alpha                   -- (Real)
+                               Default: 1.0
+num_samples                 -- (UnsignedInteger)
+                               Default: 512
+on                          -- draw stimulus? (Boolean)
+                               Default: True
+orientation                 -- (Real)
+                               Default: 0.0
+pedestal                    -- (Real)
+                               Default: 0.5
+phase_at_t0                 -- (Real)
+                               Default: 0.0
+position                    -- (units: eye coordinates) (Sequence2 of Real)
+                               Default: (320.0, 240.0)
+recalculate_phase_tolerance -- (Real)
+                               Default: (determined at runtime)
+size                        -- defines coordinate size of grating (in eye coordinates) (Sequence2 of Real)
+                               Default: (640.0, 480.0)
+spatial_freq                -- frequency defined relative to coordinates defined in size parameter (units: cycles/eye_coord_unit) (Real)
+                               Default: 0.0078125
+t0_time_sec_absolute        -- (Real)
+                               Default: (determined at runtime)
+temporal_freq_hz            -- (Real)
+                               Default: 5.0
+
+</pre><br /><br />
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.Gratings.SinGrating2D-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">**kw</span>)</span><br />
+      Instantiate and get ready to draw.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.Gratings-pysrc.html#SinGrating2D.__init__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__del__"></a><span class="summary-sig-name">__del__</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.Gratings-pysrc.html#SinGrating2D.__del__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.Gratings.SinGrating2D-class.html#draw" class="summary-sig-name">draw</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      Draw the stimulus.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.Gratings-pysrc.html#SinGrating2D.draw">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.Gratings.LuminanceGratingCommon-class.html">LuminanceGratingCommon</a></code></b>:
+      <code><a href="VisionEgg.Gratings.LuminanceGratingCommon-class.html#calculate_bit_depth_dependencies">calculate_bit_depth_dependencies</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a></code></b>:
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__getstate__">__getstate__</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__setstate__">__setstate__</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#get_specified_type">get_specified_type</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#is_constant_parameter">is_constant_parameter</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#set">set</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#verify_parameters">verify_parameters</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__delattr__</code>,
+      <code>__getattribute__</code>,
+      <code>__hash__</code>,
+      <code>__new__</code>,
+      <code>__reduce__</code>,
+      <code>__reduce_ex__</code>,
+      <code>__repr__</code>,
+      <code>__setattr__</code>,
+      <code>__str__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Class Variables</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.Gratings.SinGrating2D-class.html#parameters_and_defaults" class="summary-name">parameters_and_defaults</a> = <code title="VisionEgg.ParameterDefinition({'on':(True, ve_types.Boolean, "draw sti\
+mulus?"), 'mask':(None, ve_types.Instance(VisionEgg.Textures.Mask2D), \
+"optional masking function"), 'contrast':(1.0, ve_types.Real), 'pedest\
+al':(0.5, ve_types.Real), 'position':((320.0, 240.0), ve_types.Sequenc\
+e2(ve_types.Real), "(units: eye coordinates)"), 'anchor':('center', ve\
+_types.String, "specifies how position parameter is interpreted"), 'de\
+pth':(None, ve_types.Real), 'size':((640.0, 480.0), ve_types.Sequence2\
+(ve_types.Real), "defines coordinate size of grating (in eye coordinat\
+...">VisionEgg.ParameterDefinition({'on':<code class="variable-ellipsis">...</code></code>
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a></code></b>:
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__safe_for_unpickling__">__safe_for_unpickling__</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#constant_parameters_and_defaults">constant_parameters_and_defaults</a></code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Properties</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__class__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Method Details</span></td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">**kw</span>)</span>
+    <br /><em class="fname">(Constructor)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.Gratings-pysrc.html#SinGrating2D.__init__">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Instantiate and get ready to draw.
+
+Set parameter values and create anything needed to draw the
+stimulus including OpenGL state variables such display lists
+and texture objects.
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.Core.Stimulus-class.html#__init__">Core.Stimulus.__init__</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="draw"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">draw</span>(<span class="sig-arg">self</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.Gratings-pysrc.html#SinGrating2D.draw">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Draw the stimulus. (Called by Viewport instance.)
+
+This method is called every frame.  This method actually
+performs the OpenGL calls to draw the stimulus.
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.Core.Stimulus-class.html#draw">Core.Stimulus.draw</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== CLASS VARIABLE DETAILS ==================== -->
+<a name="section-ClassVariableDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Class Variable Details</span></td>
+</tr>
+</table>
+<a name="parameters_and_defaults"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">parameters_and_defaults</h3>
+  
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+VisionEgg.ParameterDefinition({'on':(True, ve_types.Boolean, "draw sti<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+mulus?"), 'mask':(None, ve_types.Instance(VisionEgg.Textures.Mask2D), <span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+"optional masking function"), 'contrast':(1.0, ve_types.Real), 'pedest<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+al':(0.5, ve_types.Real), 'position':((320.0, 240.0), ve_types.Sequenc<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+e2(ve_types.Real), "(units: eye coordinates)"), 'anchor':('center', ve<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+_types.String, "specifies how position parameter is interpreted"), 'de<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+pth':(None, ve_types.Real), 'size':((640.0, 480.0), ve_types.Sequence2<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+(ve_types.Real), "defines coordinate size of grating (in eye coordinat<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+<code class="variable-ellipsis">...</code>
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.Gratings.SinGrating3D-class.html b/doc/reference/html/VisionEgg.Gratings.SinGrating3D-class.html
new file mode 100644
index 0000000..f4f23fd
--- /dev/null
+++ b/doc/reference/html/VisionEgg.Gratings.SinGrating3D-class.html
@@ -0,0 +1,425 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.Gratings.SinGrating3D</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.Gratings-module.html">Module Gratings</a> ::
+        Class SinGrating3D
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.Gratings.SinGrating3D-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class SinGrating3D</h1><span class="codelink"><a href="VisionEgg.Gratings-pysrc.html#SinGrating3D">source code</a></span><br /><br />
+<pre class="base-tree">
+         object --+            
+                  |            
+<a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a> --+        
+                      |        
+          <a href="VisionEgg.Core.Stimulus-class.html">Core.Stimulus</a> --+    
+                          |    
+     <a href="VisionEgg.Gratings.LuminanceGratingCommon-class.html">LuminanceGratingCommon</a> --+
+                              |
+                             <strong class="uidshort">SinGrating3D</strong>
+</pre>
+
+<hr />
+<pre class="literalblock">
+Sine wave grating stimulus texture mapped onto quad in 3D
+
+This is a general-purpose, realtime sine-wave luminace grating
+generator. This 3D version doesn't support an orientation
+parameter.  This could be implemented, but for now should be done
+by orienting the quad in 3D.
+
+Parameters
+==========
+bit_depth                   -- precision with which grating is calculated and sent to OpenGL (UnsignedInteger)
+                               Inherited from LuminanceGratingCommon
+                               Default: 8
+color1                      -- (AnyOf(Sequence3 of Real or Sequence4 of Real))
+                               Default: (1.0, 1.0, 1.0)
+color2                      -- optional color with which to perform interpolation with color1 in RGB space (AnyOf(Sequence3 of Real or Sequence4 of Real))
+                               Default: (determined at runtime)
+contrast                    -- (Real)
+                               Default: 1.0
+depth                       -- (Real)
+                               Default: (determined at runtime)
+depth_test                  -- perform depth test? (Boolean)
+                               Default: True
+ignore_time                 -- (Boolean)
+                               Default: False
+lowerleft                   -- vertex position (units: eye coordinates) (AnyOf(Sequence3 of Real or Sequence4 of Real))
+                               Default: (0.0, 0.0, -1.0)
+lowerright                  -- vertex position (units: eye coordinates) (AnyOf(Sequence3 of Real or Sequence4 of Real))
+                               Default: (1.0, 0.0, -1.0)
+mask                        -- optional masking function (Instance of <class 'VisionEgg.Textures.Mask2D'>)
+                               Default: (determined at runtime)
+max_alpha                   -- (Real)
+                               Default: 1.0
+num_samples                 -- (UnsignedInteger)
+                               Default: 512
+on                          -- draw stimulus? (Boolean)
+                               Default: True
+pedestal                    -- (Real)
+                               Default: 0.5
+phase_at_t0                 -- (Real)
+                               Default: 0.0
+recalculate_phase_tolerance -- (Real)
+                               Default: (determined at runtime)
+size                        -- defines coordinate size of grating (in eye coordinates) (Sequence2 of Real)
+                               Default: (1.0, 1.0)
+spatial_freq                -- frequency defined relative to coordinates defined in size parameter (units; cycles/eye_coord_unit) (Real)
+                               Default: 4.0
+t0_time_sec_absolute        -- (Real)
+                               Default: (determined at runtime)
+temporal_freq_hz            -- (Real)
+                               Default: 5.0
+upperleft                   -- vertex position (units: eye coordinates) (AnyOf(Sequence3 of Real or Sequence4 of Real))
+                               Default: (0.0, 1.0, -1.0)
+upperright                  -- vertex position (units: eye coordinates) (AnyOf(Sequence3 of Real or Sequence4 of Real))
+                               Default: (1.0, 1.0, -1.0)
+
+</pre><br /><br />
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.Gratings.SinGrating3D-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">**kw</span>)</span><br />
+      Instantiate and get ready to draw.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.Gratings-pysrc.html#SinGrating3D.__init__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__del__"></a><span class="summary-sig-name">__del__</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.Gratings-pysrc.html#SinGrating3D.__del__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.Gratings.SinGrating3D-class.html#draw" class="summary-sig-name">draw</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      Draw the stimulus.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.Gratings-pysrc.html#SinGrating3D.draw">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.Gratings.LuminanceGratingCommon-class.html">LuminanceGratingCommon</a></code></b>:
+      <code><a href="VisionEgg.Gratings.LuminanceGratingCommon-class.html#calculate_bit_depth_dependencies">calculate_bit_depth_dependencies</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a></code></b>:
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__getstate__">__getstate__</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__setstate__">__setstate__</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#get_specified_type">get_specified_type</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#is_constant_parameter">is_constant_parameter</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#set">set</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#verify_parameters">verify_parameters</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__delattr__</code>,
+      <code>__getattribute__</code>,
+      <code>__hash__</code>,
+      <code>__new__</code>,
+      <code>__reduce__</code>,
+      <code>__reduce_ex__</code>,
+      <code>__repr__</code>,
+      <code>__setattr__</code>,
+      <code>__str__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Class Variables</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.Gratings.SinGrating3D-class.html#parameters_and_defaults" class="summary-name">parameters_and_defaults</a> = <code title="VisionEgg.ParameterDefinition({'on':(True, ve_types.Boolean, "draw sti\
+mulus?"), 'mask':(None, ve_types.Instance(VisionEgg.Textures.Mask2D), \
+"optional masking function"), 'contrast':(1.0, ve_types.Real), 'pedest\
+al':(0.5, ve_types.Real), 'depth':(None, ve_types.Real), 'size':((1.0,\
+ 1.0), ve_types.Sequence2(ve_types.Real), "defines coordinate size of \
+grating (in eye coordinates)"), 'spatial_freq':(4.0, ve_types.Real, "f\
+requency defined relative to coordinates defined in size parameter (un\
+its; cycles/eye_coord_unit)"), 'temporal_freq_hz':(5.0, ve_types.Real)\
+...">VisionEgg.ParameterDefinition({'on':<code class="variable-ellipsis">...</code></code>
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a></code></b>:
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__safe_for_unpickling__">__safe_for_unpickling__</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#constant_parameters_and_defaults">constant_parameters_and_defaults</a></code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Properties</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__class__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Method Details</span></td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">**kw</span>)</span>
+    <br /><em class="fname">(Constructor)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.Gratings-pysrc.html#SinGrating3D.__init__">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Instantiate and get ready to draw.
+
+Set parameter values and create anything needed to draw the
+stimulus including OpenGL state variables such display lists
+and texture objects.
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.Core.Stimulus-class.html#__init__">Core.Stimulus.__init__</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="draw"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">draw</span>(<span class="sig-arg">self</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.Gratings-pysrc.html#SinGrating3D.draw">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Draw the stimulus. (Called by Viewport instance.)
+
+This method is called every frame.  This method actually
+performs the OpenGL calls to draw the stimulus.
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.Core.Stimulus-class.html#draw">Core.Stimulus.draw</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== CLASS VARIABLE DETAILS ==================== -->
+<a name="section-ClassVariableDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Class Variable Details</span></td>
+</tr>
+</table>
+<a name="parameters_and_defaults"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">parameters_and_defaults</h3>
+  
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+VisionEgg.ParameterDefinition({'on':(True, ve_types.Boolean, "draw sti<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+mulus?"), 'mask':(None, ve_types.Instance(VisionEgg.Textures.Mask2D), <span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+"optional masking function"), 'contrast':(1.0, ve_types.Real), 'pedest<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+al':(0.5, ve_types.Real), 'depth':(None, ve_types.Real), 'size':((1.0,<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+ 1.0), ve_types.Sequence2(ve_types.Real), "defines coordinate size of <span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+grating (in eye coordinates)"), 'spatial_freq':(4.0, ve_types.Real, "f<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+requency defined relative to coordinates defined in size parameter (un<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+its; cycles/eye_coord_unit)"), 'temporal_freq_hz':(5.0, ve_types.Real)<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+<code class="variable-ellipsis">...</code>
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.MoreStimuli-module.html b/doc/reference/html/VisionEgg.MoreStimuli-module.html
new file mode 100644
index 0000000..1faec94
--- /dev/null
+++ b/doc/reference/html/VisionEgg.MoreStimuli-module.html
@@ -0,0 +1,159 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.MoreStimuli</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        Module MoreStimuli
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.MoreStimuli-module.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== MODULE DESCRIPTION ==================== -->
+<h1 class="epydoc">Module MoreStimuli</h1><span class="codelink"><a href="VisionEgg.MoreStimuli-pysrc.html">source code</a></span><br /><br />
+<pre class="literalblock">
+
+Assorted stimuli.
+
+</pre><br /><br />
+
+<!-- ==================== CLASSES ==================== -->
+<a name="section-Classes"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Classes</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.MoreStimuli.Target2D-class.html" class="summary-name">Target2D</a><br />
+      Rectanglular stimulus.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.MoreStimuli.Rectangle3D-class.html" class="summary-name">Rectangle3D</a><br />
+      Solid color rectangle positioned explicitly by four vertices.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.MoreStimuli.Arrow-class.html" class="summary-name">Arrow</a><br />
+      Arrow stimulus.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.MoreStimuli.FilledCircle-class.html" class="summary-name">FilledCircle</a><br />
+      A circular stimulus, typically used as a fixation point.
+    </td>
+  </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.MoreStimuli-pysrc.html b/doc/reference/html/VisionEgg.MoreStimuli-pysrc.html
new file mode 100644
index 0000000..4d1035c
--- /dev/null
+++ b/doc/reference/html/VisionEgg.MoreStimuli-pysrc.html
@@ -0,0 +1,1256 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.MoreStimuli</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        Module MoreStimuli
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.MoreStimuli-pysrc.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<h1 class="epydoc">Source Code for <a href="VisionEgg.MoreStimuli-module.html">Module VisionEgg.MoreStimuli</a></h1>
+<pre class="py-src">
+<a name="L1"></a><tt class="py-lineno">  1</tt>  <tt class="py-line"><tt class="py-comment"># The Vision Egg: MoreStimuli</tt> </tt>
+<a name="L2"></a><tt class="py-lineno">  2</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L3"></a><tt class="py-lineno">  3</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Copyright (C) 2001-2003 Andrew Straw.</tt> </tt>
+<a name="L4"></a><tt class="py-lineno">  4</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#           (C) 2005 by Hertie Institute for Clinical Brain Research,</tt> </tt>
+<a name="L5"></a><tt class="py-lineno">  5</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#            Department of Cognitive Neurology, University of Tuebingen</tt> </tt>
+<a name="L6"></a><tt class="py-lineno">  6</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#           (C) 2005,2008 California Institute of Technology</tt> </tt>
+<a name="L7"></a><tt class="py-lineno">  7</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#           (C) 2006 Peter Jurica and Gijs Plomp</tt> </tt>
+<a name="L8"></a><tt class="py-lineno">  8</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L9"></a><tt class="py-lineno">  9</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># URL: http://www.visionegg.org</tt> </tt>
+<a name="L10"></a><tt class="py-lineno"> 10</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L11"></a><tt class="py-lineno"> 11</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Distributed under the terms of the GNU Lesser General Public License</tt> </tt>
+<a name="L12"></a><tt class="py-lineno"> 12</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># (LGPL). See LICENSE.TXT that came with this file.</tt> </tt>
+<a name="L13"></a><tt class="py-lineno"> 13</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L14"></a><tt class="py-lineno"> 14</tt>  <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L15"></a><tt class="py-lineno"> 15</tt>  <tt class="py-line"><tt class="py-docstring">Assorted stimuli.</tt> </tt>
+<a name="L16"></a><tt class="py-lineno"> 16</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L17"></a><tt class="py-lineno"> 17</tt>  <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L18"></a><tt class="py-lineno"> 18</tt>  <tt class="py-line"> </tt>
+<a name="L19"></a><tt class="py-lineno"> 19</tt>  <tt class="py-line"><tt class="py-comment">####################################################################</tt> </tt>
+<a name="L20"></a><tt class="py-lineno"> 20</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L21"></a><tt class="py-lineno"> 21</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#        Import all the necessary packages</tt> </tt>
+<a name="L22"></a><tt class="py-lineno"> 22</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L23"></a><tt class="py-lineno"> 23</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">####################################################################</tt> </tt>
+<a name="L24"></a><tt class="py-lineno"> 24</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L25"></a><tt class="py-lineno"> 25</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">logging</tt> </tt>
+<a name="L26"></a><tt class="py-lineno"> 26</tt>  <tt class="py-line"> </tt>
+<a name="L27"></a><tt class="py-lineno"> 27</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-0" class="py-name" targets="Package VisionEgg=VisionEgg-module.html"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-0', 'VisionEgg', 'link-0');">VisionEgg</a></tt> </tt>
+<a name="L28"></a><tt class="py-lineno"> 28</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-1" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-1', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-2" class="py-name" targets="Module VisionEgg.Core=VisionEgg.Core-module.html"><a title="VisionEgg.Core" class="py-name" href="#" onclick="return doclink('link-2', 'Core', 'link-2');">Core</a></tt> </tt>
+<a name="L29"></a><tt class="py-lineno"> 29</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-3" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-3', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-4" class="py-name" targets="Module VisionEgg.ParameterTypes=VisionEgg.ParameterTypes-module.html"><a title="VisionEgg.ParameterTypes" class="py-name" href="#" onclick="return doclink('link-4', 'P [...]
+<a name="L30"></a><tt class="py-lineno"> 30</tt>  <tt class="py-line"> </tt>
+<a name="L31"></a><tt class="py-lineno"> 31</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">numpy</tt><tt class="py-op">.</tt><tt class="py-name">oldnumeric</tt> <tt class="py-keyword">as</tt> <tt class="py-name">Numeric</tt> </tt>
+<a name="L32"></a><tt class="py-lineno"> 32</tt>  <tt class="py-line"> </tt>
+<a name="L33"></a><tt class="py-lineno"> 33</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">math</tt> </tt>
+<a name="L34"></a><tt class="py-lineno"> 34</tt>  <tt class="py-line"> </tt>
+<a name="L35"></a><tt class="py-lineno"> 35</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-5" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-5', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-6" class="py-name" targets="Module VisionEgg.GL=VisionEgg.GL-module.html"><a title="VisionEgg.GL" class="py-name" href="#" onclick="return doclink('link-6', 'GL', 'link-6');">GL</a></tt> <tt clas [...]
+<a name="L36"></a><tt class="py-lineno"> 36</tt>  <tt class="py-line"> </tt>
+<a name="Target2D"></a><div id="Target2D-def"><a name="L37"></a><tt class="py-lineno"> 37</tt> <a class="py-toggle" href="#" id="Target2D-toggle" onclick="return toggle('Target2D');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.MoreStimuli.Target2D-class.html">Target2D</a><tt class="py-op">(</tt><tt class="py-base-class">VisionEgg</tt><tt class="py-op">.</tt><tt class="py-base-class">Core</tt><tt class="py-op">.</tt><tt class="py-base- [...]
+</div><div id="Target2D-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="Target2D-expanded"><a name="L38"></a><tt class="py-lineno"> 38</tt>  <tt class="py-line">    <tt class="py-docstring">"""Rectanglular stimulus.</tt> </tt>
+<a name="L39"></a><tt class="py-lineno"> 39</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L40"></a><tt class="py-lineno"> 40</tt>  <tt class="py-line"><tt class="py-docstring">    Parameters</tt> </tt>
+<a name="L41"></a><tt class="py-lineno"> 41</tt>  <tt class="py-line"><tt class="py-docstring">    ==========</tt> </tt>
+<a name="L42"></a><tt class="py-lineno"> 42</tt>  <tt class="py-line"><tt class="py-docstring">    anchor        -- specifies how position parameter is interpreted (String)</tt> </tt>
+<a name="L43"></a><tt class="py-lineno"> 43</tt>  <tt class="py-line"><tt class="py-docstring">                     Default: center</tt> </tt>
+<a name="L44"></a><tt class="py-lineno"> 44</tt>  <tt class="py-line"><tt class="py-docstring">    anti_aliasing -- (Boolean)</tt> </tt>
+<a name="L45"></a><tt class="py-lineno"> 45</tt>  <tt class="py-line"><tt class="py-docstring">                     Default: True</tt> </tt>
+<a name="L46"></a><tt class="py-lineno"> 46</tt>  <tt class="py-line"><tt class="py-docstring">    center        -- DEPRECATED: don't use (Sequence2 of Real)</tt> </tt>
+<a name="L47"></a><tt class="py-lineno"> 47</tt>  <tt class="py-line"><tt class="py-docstring">                     Default: (determined at runtime)</tt> </tt>
+<a name="L48"></a><tt class="py-lineno"> 48</tt>  <tt class="py-line"><tt class="py-docstring">    color         -- (AnyOf(Sequence3 of Real or Sequence4 of Real))</tt> </tt>
+<a name="L49"></a><tt class="py-lineno"> 49</tt>  <tt class="py-line"><tt class="py-docstring">                     Default: (1.0, 1.0, 1.0)</tt> </tt>
+<a name="L50"></a><tt class="py-lineno"> 50</tt>  <tt class="py-line"><tt class="py-docstring">    on            -- draw stimulus? (Boolean) (Boolean)</tt> </tt>
+<a name="L51"></a><tt class="py-lineno"> 51</tt>  <tt class="py-line"><tt class="py-docstring">                     Default: True</tt> </tt>
+<a name="L52"></a><tt class="py-lineno"> 52</tt>  <tt class="py-line"><tt class="py-docstring">    orientation   -- (Real)</tt> </tt>
+<a name="L53"></a><tt class="py-lineno"> 53</tt>  <tt class="py-line"><tt class="py-docstring">                     Default: 0.0</tt> </tt>
+<a name="L54"></a><tt class="py-lineno"> 54</tt>  <tt class="py-line"><tt class="py-docstring">    position      -- units: eye coordinates (AnyOf(Sequence2 of Real or Sequence3 of Real or Sequence4 of Real))</tt> </tt>
+<a name="L55"></a><tt class="py-lineno"> 55</tt>  <tt class="py-line"><tt class="py-docstring">                     Default: (320.0, 240.0)</tt> </tt>
+<a name="L56"></a><tt class="py-lineno"> 56</tt>  <tt class="py-line"><tt class="py-docstring">    size          -- units: eye coordinates (Sequence2 of Real)</tt> </tt>
+<a name="L57"></a><tt class="py-lineno"> 57</tt>  <tt class="py-line"><tt class="py-docstring">                     Default: (64.0, 16.0)</tt> </tt>
+<a name="L58"></a><tt class="py-lineno"> 58</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L59"></a><tt class="py-lineno"> 59</tt>  <tt class="py-line"> </tt>
+<a name="L60"></a><tt class="py-lineno"> 60</tt>  <tt class="py-line">    <tt id="link-7" class="py-name" targets="Variable VisionEgg.ClassWithParameters.parameters_and_defaults=VisionEgg.ClassWithParameters-class.html#parameters_and_defaults,Variable VisionEgg.Core.FixationSpot.parameters_and_defaults=VisionEgg.Core.FixationSpot-class.html#parameters_and_defaults,Variable VisionEgg.Core.ProjectionBaseClass.parameters_and_defaults=VisionEgg.Core.ProjectionBaseClass-class.html#parameters_ [...]
+VisionEgg.Core.FixationSpot.parameters_and_defaults
+VisionEgg.Core.ProjectionBaseClass.parameters_and_defaults
+VisionEgg.Core.Screen.parameters_and_defaults
+VisionEgg.Core.Viewport.parameters_and_defaults
+VisionEgg.Daq.Buffered.parameters_and_defaults
+VisionEgg.Dots.DotArea2D.parameters_and_defaults
+VisionEgg.FlowControl.Presentation.parameters_and_defaults
+VisionEgg.Gratings.AlphaGratingCommon.parameters_and_defaults
+VisionEgg.Gratings.LuminanceGratingCommon.parameters_and_defaults
+VisionEgg.Gratings.SinGrating2D.parameters_and_defaults
+VisionEgg.Gratings.SinGrating3D.parameters_and_defaults
+VisionEgg.MoreStimuli.Arrow.parameters_and_defaults
+VisionEgg.MoreStimuli.FilledCircle.parameters_and_defaults
+VisionEgg.MoreStimuli.Rectangle3D.parameters_and_defaults
+VisionEgg.MoreStimuli.Target2D.parameters_and_defaults
+VisionEgg.PyroApps.EPhysGUI.Loop.parameters_and_defaults
+VisionEgg.SphereMap.AzElGrid.parameters_and_defaults
+VisionEgg.SphereMap.SphereGrating.parameters_and_defaults
+VisionEgg.SphereMap.SphereMap.parameters_and_defaults
+VisionEgg.SphereMap.SphereWindow.parameters_and_defaults
+VisionEgg.Text.BitmapText.parameters_and_defaults
+VisionEgg.Text.GlutTextBase.parameters_and_defaults
+VisionEgg.Text.StrokeText.parameters_and_defaults
+VisionEgg.Text.Text.parameters_and_defaults
+VisionEgg.Textures.FixationCross.parameters_and_defaults
+VisionEgg.Textures.SpinningDrum.parameters_and_defaults
+VisionEgg.Textures.TextureStimulus.parameters_and_defaults
+VisionEgg.Textures.TextureStimulus3D.parameters_and_defaults
+VisionEgg.Textures.TextureStimulusBaseClass.parameters_and_defaults
+VisionEgg.WrappedText.WrappedText.parameters_and_defaults" class="py-name" href="#" onclick="return doclink('link-7', 'parameters_and_defaults', 'link-7');">parameters_and_defaults</a></tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> </tt>
+<a name="L61"></a><tt class="py-lineno"> 61</tt>  <tt class="py-line">        <tt class="py-string">'on'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-name">True</tt><tt class="py-op">,</tt> </tt>
+<a name="L62"></a><tt class="py-lineno"> 62</tt>  <tt class="py-line">              <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-8" class="py-name" targets="Class VisionEgg.ParameterTypes.Boolean=VisionEgg.ParameterTypes.Boolean-class.html"><a title="VisionEgg.ParameterTypes.Boolean" class="py-name" href="#" onclick="return doclink('link-8', 'Boolean', 'link-8');">Boolean</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L63"></a><tt class="py-lineno"> 63</tt>  <tt class="py-line">              <tt class="py-string">"draw stimulus? (Boolean)"</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L64"></a><tt class="py-lineno"> 64</tt>  <tt class="py-line">        <tt class="py-string">'color'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-number">1.0</tt><tt class="py-op">,</tt><tt class="py-number">1.0</tt><tt class="py-op">,</tt><tt class="py-number">1.0</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L65"></a><tt class="py-lineno"> 65</tt>  <tt class="py-line">                 <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-9" class="py-name" targets="Class VisionEgg.ParameterTypes.AnyOf=VisionEgg.ParameterTypes.AnyOf-class.html"><a title="VisionEgg.ParameterTypes.AnyOf" class="py-name" href="#" onclick="return doclink('link-9', 'AnyOf', 'link-9');">AnyOf</a></tt><tt class="py-op">(</tt><tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="li [...]
+<a name="L66"></a><tt class="py-lineno"> 66</tt>  <tt class="py-line">                                <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-12" class="py-name" targets="Class VisionEgg.ParameterTypes.Sequence4=VisionEgg.ParameterTypes.Sequence4-class.html"><a title="VisionEgg.ParameterTypes.Sequence4" class="py-name" href="#" onclick="return doclink('link-12', 'Sequence4', 'link-12');">Sequence4</a></tt><tt class="py-op">(</tt><tt class="py-name">ve_types< [...]
+<a name="L67"></a><tt class="py-lineno"> 67</tt>  <tt class="py-line">        <tt class="py-string">'anti_aliasing'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-name">True</tt><tt class="py-op">,</tt> </tt>
+<a name="L68"></a><tt class="py-lineno"> 68</tt>  <tt class="py-line">                         <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-14" class="py-name"><a title="VisionEgg.ParameterTypes.Boolean" class="py-name" href="#" onclick="return doclink('link-14', 'Boolean', 'link-8');">Boolean</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L69"></a><tt class="py-lineno"> 69</tt>  <tt class="py-line">        <tt class="py-string">'orientation'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-number">0.0</tt><tt class="py-op">,</tt> </tt>
+<a name="L70"></a><tt class="py-lineno"> 70</tt>  <tt class="py-line">                       <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-15" class="py-name"><a title="VisionEgg.ParameterTypes.Real" class="py-name" href="#" onclick="return doclink('link-15', 'Real', 'link-11');">Real</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L71"></a><tt class="py-lineno"> 71</tt>  <tt class="py-line">        <tt class="py-string">'position'</tt> <tt class="py-op">:</tt> <tt class="py-op">(</tt> <tt class="py-op">(</tt> <tt class="py-number">320.0</tt><tt class="py-op">,</tt> <tt class="py-number">240.0</tt> <tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L72"></a><tt class="py-lineno"> 72</tt>  <tt class="py-line">                       <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-16" class="py-name"><a title="VisionEgg.ParameterTypes.AnyOf" class="py-name" href="#" onclick="return doclink('link-16', 'AnyOf', 'link-9');">AnyOf</a></tt><tt class="py-op">(</tt><tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-17" class="py-name" targets="Class VisionEgg.ParameterTypes.Sequence2=VisionEg [...]
+<a name="L73"></a><tt class="py-lineno"> 73</tt>  <tt class="py-line">                                      <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-19" class="py-name"><a title="VisionEgg.ParameterTypes.Sequence3" class="py-name" href="#" onclick="return doclink('link-19', 'Sequence3', 'link-10');">Sequence3</a></tt><tt class="py-op">(</tt><tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-20" class="py-name"><a title="VisionEgg.ParameterT [...]
+<a name="L74"></a><tt class="py-lineno"> 74</tt>  <tt class="py-line">                                      <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-21" class="py-name"><a title="VisionEgg.ParameterTypes.Sequence4" class="py-name" href="#" onclick="return doclink('link-21', 'Sequence4', 'link-12');">Sequence4</a></tt><tt class="py-op">(</tt><tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-22" class="py-name"><a title="VisionEgg.ParameterT [...]
+<a name="L75"></a><tt class="py-lineno"> 75</tt>  <tt class="py-line">                       <tt class="py-string">"units: eye coordinates"</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L76"></a><tt class="py-lineno"> 76</tt>  <tt class="py-line">        <tt class="py-string">'anchor'</tt> <tt class="py-op">:</tt> <tt class="py-op">(</tt><tt class="py-string">'center'</tt><tt class="py-op">,</tt> </tt>
+<a name="L77"></a><tt class="py-lineno"> 77</tt>  <tt class="py-line">                    <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-23" class="py-name" targets="Class VisionEgg.ParameterTypes.String=VisionEgg.ParameterTypes.String-class.html"><a title="VisionEgg.ParameterTypes.String" class="py-name" href="#" onclick="return doclink('link-23', 'String', 'link-23');">String</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L78"></a><tt class="py-lineno"> 78</tt>  <tt class="py-line">                    <tt class="py-string">"specifies how position parameter is interpreted"</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L79"></a><tt class="py-lineno"> 79</tt>  <tt class="py-line">        <tt class="py-string">'size'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-number">64.0</tt><tt class="py-op">,</tt><tt class="py-number">16.0</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L80"></a><tt class="py-lineno"> 80</tt>  <tt class="py-line">                <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-24" class="py-name"><a title="VisionEgg.ParameterTypes.Sequence2" class="py-name" href="#" onclick="return doclink('link-24', 'Sequence2', 'link-17');">Sequence2</a></tt><tt class="py-op">(</tt><tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-25" class="py-name"><a title="VisionEgg.ParameterTypes.Real" class="py-n [...]
+<a name="L81"></a><tt class="py-lineno"> 81</tt>  <tt class="py-line">                <tt class="py-string">"units: eye coordinates"</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L82"></a><tt class="py-lineno"> 82</tt>  <tt class="py-line">        <tt class="py-string">'center'</tt> <tt class="py-op">:</tt> <tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
+<a name="L83"></a><tt class="py-lineno"> 83</tt>  <tt class="py-line">                    <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-26" class="py-name"><a title="VisionEgg.ParameterTypes.Sequence2" class="py-name" href="#" onclick="return doclink('link-26', 'Sequence2', 'link-17');">Sequence2</a></tt><tt class="py-op">(</tt><tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-27" class="py-name"><a title="VisionEgg.ParameterTypes.Real" class=" [...]
+<a name="L84"></a><tt class="py-lineno"> 84</tt>  <tt class="py-line">                    <tt class="py-string">"DEPRECATED: don't use"</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L85"></a><tt class="py-lineno"> 85</tt>  <tt class="py-line">        <tt class="py-op">}</tt> </tt>
+<a name="L86"></a><tt class="py-lineno"> 86</tt>  <tt class="py-line"> </tt>
+<a name="L87"></a><tt class="py-lineno"> 87</tt>  <tt class="py-line">    <tt class="py-name">__slots__</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt> </tt>
+<a name="L88"></a><tt class="py-lineno"> 88</tt>  <tt class="py-line">        <tt class="py-string">'_gave_alpha_warning'</tt><tt class="py-op">,</tt> </tt>
+<a name="L89"></a><tt class="py-lineno"> 89</tt>  <tt class="py-line">        <tt class="py-op">)</tt> </tt>
+<a name="L90"></a><tt class="py-lineno"> 90</tt>  <tt class="py-line"> </tt>
+<a name="Target2D.__init__"></a><div id="Target2D.__init__-def"><a name="L91"></a><tt class="py-lineno"> 91</tt> <a class="py-toggle" href="#" id="Target2D.__init__-toggle" onclick="return toggle('Target2D.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.MoreStimuli.Target2D-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt><tt class="py-op">**</tt><tt class="py-pa [...]
+</div><div id="Target2D.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Target2D.__init__-expanded"><a name="L92"></a><tt class="py-lineno"> 92</tt>  <tt class="py-line">        <tt id="link-28" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-28', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-29" class="py-name"><a title="VisionEgg.Core" class="py-name" href="#" onclick="ret [...]
+VisionEgg.Configuration.Config.__init__
+VisionEgg.Core.FixationSpot.__init__
+VisionEgg.Core.FrameTimer.__init__
+VisionEgg.Core.ModelView.__init__
+VisionEgg.Core.OrthographicProjection.__init__
+VisionEgg.Core.OrthographicProjectionNoZClip.__init__
+VisionEgg.Core.PerspectiveProjection.__init__
+VisionEgg.Core.Projection.__init__
+VisionEgg.Core.ProjectionBaseClass.__init__
+VisionEgg.Core.Screen.__init__
+VisionEgg.Core.SimplePerspectiveProjection.__init__
+VisionEgg.Core.Stimulus.__init__
+VisionEgg.Core.Viewport.__init__
+VisionEgg.Daq.Channel.__init__
+VisionEgg.Daq.DaqMode.__init__
+VisionEgg.Daq.Device.__init__
+VisionEgg.Daq.Functionality.__init__
+VisionEgg.Daq.SignalType.__init__
+VisionEgg.DaqKeyboard.KeyboardTriggerInController.__init__
+VisionEgg.DaqLPT.LPTChannel.__init__
+VisionEgg.DaqLPT.LPTDevice.__init__
+VisionEgg.DaqLPT.LPTTriggerInController.__init__
+VisionEgg.DaqLPT.LPTTriggerOutController.__init__
+VisionEgg.Deprecated.Message.__init__
+VisionEgg.Dots.DotArea2D.__init__
+VisionEgg.FlowControl.ConstantController.__init__
+VisionEgg.FlowControl.Controller.__init__
+VisionEgg.FlowControl.EncapsulatedController.__init__
+VisionEgg.FlowControl.EvalStringController.__init__
+VisionEgg.FlowControl.ExecStringController.__init__
+VisionEgg.FlowControl.FunctionController.__init__
+VisionEgg.FlowControl.Presentation.__init__
+VisionEgg.GLTrace.Wrapper.__init__
+VisionEgg.GUI.AppWindow.__init__
+VisionEgg.GUI.GetKeypressDialog.__init__
+VisionEgg.GUI.GraphicsConfigurationWindow.__init__
+VisionEgg.GUI.InfoFrame.__init__
+VisionEgg.GUI.ProgressBar.__init__
+VisionEgg.GUI.ToplevelDialog.__init__
+VisionEgg.Gratings.SinGrating2D.__init__
+VisionEgg.Gratings.SinGrating3D.__init__
+VisionEgg.MoreStimuli.Arrow.__init__
+VisionEgg.MoreStimuli.FilledCircle.__init__
+VisionEgg.MoreStimuli.Rectangle3D.__init__
+VisionEgg.MoreStimuli.Target2D.__init__
+VisionEgg.ParameterTypes.AnyOf.__init__
+VisionEgg.ParameterTypes.Instance.__init__
+VisionEgg.ParameterTypes.Sequence.__init__
+VisionEgg.ParameterTypes.SubClass.__init__
+VisionEgg.PyroApps.AST_ext.AST_Visitor.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalMetaParameters.__init__
+VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.__init__
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.__init__
+VisionEgg.PyroApps.DropinGUI.DropinMetaParameters.__init__
+VisionEgg.PyroApps.DropinServer.DropinMetaController.__init__
+VisionEgg.PyroApps.EPhysGUI.AppWindow.__init__
+VisionEgg.PyroApps.EPhysGUI.BarButton.__init__
+VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase.__init__
+VisionEgg.PyroApps.EPhysGUI.GammaFrame.__init__
+VisionEgg.PyroApps.EPhysGUI.ImageSequenceLauncher.__init__
+VisionEgg.PyroApps.EPhysGUI.Loop.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopContainedObject.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopParamDialog.__init__
+VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.__init__
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.__init__
+VisionEgg.PyroApps.EPhysServer.EPhysServer.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingMetaParameters.__init__
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.GridGUI.GridControlFrame.__init__
+VisionEgg.PyroApps.GridGUI.GridMetaParameters.__init__
+VisionEgg.PyroApps.GridServer.GridMetaController.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetMetaParameters.__init__
+VisionEgg.PyroApps.MouseTargetServer.MousePositionController.__init__
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetOrientationController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetPositionController.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.CallbackEntry.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionParameters.__init__
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingMetaParameters.__init__
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumMetaParameters.__init__
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.__init__
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.__init__
+VisionEgg.PyroApps.TargetGUI.TargetMetaParameters.__init__
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.__init__
+VisionEgg.PyroClient.PyroClient.__init__
+VisionEgg.PyroHelpers.PyroConstantController.__init__
+VisionEgg.PyroHelpers.PyroEncapsulatedController.__init__
+VisionEgg.PyroHelpers.PyroEvalStringController.__init__
+VisionEgg.PyroHelpers.PyroExecStringController.__init__
+VisionEgg.PyroHelpers.PyroListenController.__init__
+VisionEgg.PyroHelpers.PyroLocalDictController.__init__
+VisionEgg.PyroHelpers.PyroServer.__init__
+VisionEgg.QuickTime.MovieTexture.__init__
+VisionEgg.ResponseControl.KeyboardResponseController.__init__
+VisionEgg.ResponseControl.ResponseController.__init__
+VisionEgg.SphereMap.AzElGrid.__init__
+VisionEgg.SphereMap.SphereGrating.__init__
+VisionEgg.SphereMap.SphereMap.__init__
+VisionEgg.SphereMap.SphereWindow.__init__
+VisionEgg.TCPController.SocketListenController.__init__
+VisionEgg.TCPController.TCPController.__init__
+VisionEgg.TCPController.TCPServer.__init__
+VisionEgg.Text.BitmapText.__init__
+VisionEgg.Text.GlutTextBase.__init__
+VisionEgg.Text.StrokeText.__init__
+VisionEgg.Text.Text.__init__
+VisionEgg.Textures.FixationCross.__init__
+VisionEgg.Textures.Mask2D.__init__
+VisionEgg.Textures.SpinningDrum.__init__
+VisionEgg.Textures.Texture.__init__
+VisionEgg.Textures.TextureFromFile.__init__
+VisionEgg.Textures.TextureObject.__init__
+VisionEgg.Textures.TextureStimulusBaseClass.__init__
+VisionEgg.ThreeDeeMath.TransformMatrix.__init__
+VisionEgg.WrappedText.WrappedText.__init__
+VisionEgg.qtmovie.Movie.__init__
+VisionEgg.qtmovie.Rect.__init__" class="py-name" href="#" onclick="return doclink('link-31', '__init__', 'link-31');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt><tt class="py-op">**</tt><tt class="py-name">kw</tt><tt class="py-op">)</tt> </tt>
+<a name="L93"></a><tt class="py-lineno"> 93</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_gave_alpha_warning</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+</div><a name="L94"></a><tt class="py-lineno"> 94</tt>  <tt class="py-line"> </tt>
+<a name="Target2D.draw"></a><div id="Target2D.draw-def"><a name="L95"></a><tt class="py-lineno"> 95</tt> <a class="py-toggle" href="#" id="Target2D.draw-toggle" onclick="return toggle('Target2D.draw');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.MoreStimuli.Target2D-class.html#draw">draw</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Target2D.draw-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Target2D.draw-expanded"><a name="L96"></a><tt class="py-lineno"> 96</tt>  <tt class="py-line">        <tt class="py-name">p</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt> <tt class="py-comment"># shorthand</tt> </tt>
+<a name="L97"></a><tt class="py-lineno"> 97</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">center</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L98"></a><tt class="py-lineno"> 98</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt id="link-32" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-32', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-33" class="py-name" targets="Variable VisionEgg.config=VisionEgg-module.html#config"><a title="Vi [...]
+<a name="L99"></a><tt class="py-lineno"> 99</tt>  <tt class="py-line">                <tt id="link-34" class="py-name" targets="Variable VisionEgg.logger=VisionEgg-module.html#logger"><a title="VisionEgg.logger" class="py-name" href="#" onclick="return doclink('link-34', 'logger', 'link-34');">logger</a></tt> <tt class="py-op">=</tt> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">getLogger</tt><tt class="py-op">(</tt><tt class="py-string">'VisionEgg.MoreStimu [...]
+<a name="L100"></a><tt class="py-lineno">100</tt>  <tt class="py-line">                <tt id="link-35" class="py-name"><a title="VisionEgg.logger" class="py-name" href="#" onclick="return doclink('link-35', 'logger', 'link-34');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">warning</tt><tt class="py-op">(</tt><tt class="py-string">"Specifying Target2D by deprecated "</tt> </tt>
+<a name="L101"></a><tt class="py-lineno">101</tt>  <tt class="py-line">                               <tt class="py-string">"'center' parameter deprecated.  Use "</tt> </tt>
+<a name="L102"></a><tt class="py-lineno">102</tt>  <tt class="py-line">                               <tt class="py-string">"'position' parameter instead.  (Allows "</tt> </tt>
+<a name="L103"></a><tt class="py-lineno">103</tt>  <tt class="py-line">                               <tt class="py-string">"use of 'anchor' parameter to set to "</tt> </tt>
+<a name="L104"></a><tt class="py-lineno">104</tt>  <tt class="py-line">                               <tt class="py-string">"other values.)"</tt><tt class="py-op">)</tt> </tt>
+<a name="L105"></a><tt class="py-lineno">105</tt>  <tt class="py-line">                <tt id="link-36" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-36', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-37" class="py-name"><a title="VisionEgg.config" class="py-name" href="#" onclick="return doclink('link-37', 'config', 'link-33');">config</a></tt><tt class="py-op">.</tt><tt class="py-name">_GAVE_CENTER_DEPRECAT [...]
+<a name="L106"></a><tt class="py-lineno">106</tt>  <tt class="py-line">            <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">anchor</tt> <tt class="py-op">=</tt> <tt class="py-string">'center'</tt> </tt>
+<a name="L107"></a><tt class="py-lineno">107</tt>  <tt class="py-line">            <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">position</tt> <tt class="py-op">=</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">center</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">center</tt><tt class="py-op">[</tt><tt class="py [...]
+<a name="L108"></a><tt class="py-lineno">108</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">on</tt><tt class="py-op">:</tt> </tt>
+<a name="L109"></a><tt class="py-lineno">109</tt>  <tt class="py-line">            <tt class="py-comment"># calculate center</tt> </tt>
+<a name="L110"></a><tt class="py-lineno">110</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">center</tt> <tt class="py-op">=</tt> <tt id="link-38" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-38', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt class="py-name">_get_center</tt><tt class="py-op">(</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">position</tt> [...]
+<a name="L111"></a><tt class="py-lineno">111</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glMatrixMode</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_MODELVIEW</tt><tt class="py-op">)</tt> </tt>
+<a name="L112"></a><tt class="py-lineno">112</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glPushMatrix</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L113"></a><tt class="py-lineno">113</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glTranslate</tt><tt class="py-op">(</tt><tt class="py-name">center</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">,</tt><tt class="py-name">center</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">,</tt><tt class="py-number">0.0</tt><tt cl [...]
+<a name="L114"></a><tt class="py-lineno">114</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glRotate</tt><tt class="py-op">(</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">orientation</tt><tt class="py-op">,</tt><tt class="py-number">0.0</tt><tt class="py-op">,</tt><tt class="py-number">0.0</tt><tt class="py-op">,</tt><tt class="py-number">1.0</tt><tt class="py-op">)</tt> </tt>
+<a name="L115"></a><tt class="py-lineno">115</tt>  <tt class="py-line"> </tt>
+<a name="L116"></a><tt class="py-lineno">116</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">color</tt><tt class="py-op">)</tt><tt class="py-op">==</tt><tt class="py-number">3</tt><tt class="py-op">:</tt> </tt>
+<a name="L117"></a><tt class="py-lineno">117</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glColor3f</tt><tt class="py-op">(</tt><tt class="py-op">*</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">color</tt><tt class="py-op">)</tt> </tt>
+<a name="L118"></a><tt class="py-lineno">118</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">color</tt><tt class="py-op">)</tt><tt class="py-op">==</tt><tt class="py-number">4</tt><tt class="py-op">:</tt> </tt>
+<a name="L119"></a><tt class="py-lineno">119</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glColor4f</tt><tt class="py-op">(</tt><tt class="py-op">*</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">color</tt><tt class="py-op">)</tt> </tt>
+<a name="L120"></a><tt class="py-lineno">120</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glDisable</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_DEPTH_TEST</tt><tt class="py-op">)</tt> </tt>
+<a name="L121"></a><tt class="py-lineno">121</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glDisable</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE_2D</tt><tt class="py-op">)</tt> </tt>
+<a name="L122"></a><tt class="py-lineno">122</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glBlendFunc</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_SRC_ALPHA</tt><tt class="py-op">,</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_ONE_MINUS_SRC_ALPHA</tt><tt class="py-op">)</tt> </tt>
+<a name="L123"></a><tt class="py-lineno">123</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glEnable</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_BLEND</tt><tt class="py-op">)</tt> </tt>
+<a name="L124"></a><tt class="py-lineno">124</tt>  <tt class="py-line"> </tt>
+<a name="L125"></a><tt class="py-lineno">125</tt>  <tt class="py-line">            <tt class="py-name">w</tt> <tt class="py-op">=</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt id="link-40" class="py-name"><a title="VisionEgg.Core.Screen.size" class="py-name" href="#" onclick="return doclink('link-40', 'size', 'link-39');">size</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">/</tt><tt class="py-number">2.0</tt> </tt>
+<a name="L126"></a><tt class="py-lineno">126</tt>  <tt class="py-line">            <tt class="py-name">h</tt> <tt class="py-op">=</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt id="link-41" class="py-name"><a title="VisionEgg.Core.Screen.size" class="py-name" href="#" onclick="return doclink('link-41', 'size', 'link-39');">size</a></tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">/</tt><tt class="py-number">2.0</tt> </tt>
+<a name="L127"></a><tt class="py-lineno">127</tt>  <tt class="py-line"> </tt>
+<a name="L128"></a><tt class="py-lineno">128</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glBegin</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_QUADS</tt><tt class="py-op">)</tt> </tt>
+<a name="L129"></a><tt class="py-lineno">129</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glVertex3f</tt><tt class="py-op">(</tt><tt class="py-op">-</tt><tt class="py-name">w</tt><tt class="py-op">,</tt><tt class="py-op">-</tt><tt class="py-name">h</tt><tt class="py-op">,</tt> <tt class="py-number">0.0</tt><tt class="py-op">)</tt> </tt>
+<a name="L130"></a><tt class="py-lineno">130</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glVertex3f</tt><tt class="py-op">(</tt> <tt class="py-name">w</tt><tt class="py-op">,</tt><tt class="py-op">-</tt><tt class="py-name">h</tt><tt class="py-op">,</tt> <tt class="py-number">0.0</tt><tt class="py-op">)</tt> </tt>
+<a name="L131"></a><tt class="py-lineno">131</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glVertex3f</tt><tt class="py-op">(</tt> <tt class="py-name">w</tt><tt class="py-op">,</tt> <tt class="py-name">h</tt><tt class="py-op">,</tt> <tt class="py-number">0.0</tt><tt class="py-op">)</tt> </tt>
+<a name="L132"></a><tt class="py-lineno">132</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glVertex3f</tt><tt class="py-op">(</tt><tt class="py-op">-</tt><tt class="py-name">w</tt><tt class="py-op">,</tt> <tt class="py-name">h</tt><tt class="py-op">,</tt> <tt class="py-number">0.0</tt><tt class="py-op">)</tt> </tt>
+<a name="L133"></a><tt class="py-lineno">133</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glEnd</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-comment"># GL_QUADS</tt> </tt>
+<a name="L134"></a><tt class="py-lineno">134</tt>  <tt class="py-line"> </tt>
+<a name="L135"></a><tt class="py-lineno">135</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">anti_aliasing</tt><tt class="py-op">:</tt> </tt>
+<a name="L136"></a><tt class="py-lineno">136</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_gave_alpha_warning</tt><tt class="py-op">:</tt> </tt>
+<a name="L137"></a><tt class="py-lineno">137</tt>  <tt class="py-line">                    <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">color</tt><tt class="py-op">)</tt> <tt class="py-op">></tt> <tt class="py-number">3</tt> <tt class="py-keyword">and</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">color</tt><tt class="py-op">[</tt><tt class="py-number [...]
+<a name="L138"></a><tt class="py-lineno">138</tt>  <tt class="py-line">                        <tt id="link-42" class="py-name"><a title="VisionEgg.logger" class="py-name" href="#" onclick="return doclink('link-42', 'logger', 'link-34');">logger</a></tt> <tt class="py-op">=</tt> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">getLogger</tt><tt class="py-op">(</tt><tt class="py-string">'VisionEgg.MoreStimuli'</tt><tt class="py-op">)</tt> </tt>
+<a name="L139"></a><tt class="py-lineno">139</tt>  <tt class="py-line">                        <tt id="link-43" class="py-name"><a title="VisionEgg.logger" class="py-name" href="#" onclick="return doclink('link-43', 'logger', 'link-34');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">warning</tt><tt class="py-op">(</tt><tt class="py-string">"The parameter anti_aliasing is "</tt> </tt>
+<a name="L140"></a><tt class="py-lineno">140</tt>  <tt class="py-line">                                       <tt class="py-string">"set to true in the Target2D "</tt> </tt>
+<a name="L141"></a><tt class="py-lineno">141</tt>  <tt class="py-line">                                       <tt class="py-string">"stimulus class, but the color "</tt> </tt>
+<a name="L142"></a><tt class="py-lineno">142</tt>  <tt class="py-line">                                       <tt class="py-string">"parameter specifies an alpha "</tt> </tt>
+<a name="L143"></a><tt class="py-lineno">143</tt>  <tt class="py-line">                                       <tt class="py-string">"value other than 1.0.  To "</tt> </tt>
+<a name="L144"></a><tt class="py-lineno">144</tt>  <tt class="py-line">                                       <tt class="py-string">"acheive anti-aliasing, ensure "</tt> </tt>
+<a name="L145"></a><tt class="py-lineno">145</tt>  <tt class="py-line">                                       <tt class="py-string">"that the alpha value for the "</tt> </tt>
+<a name="L146"></a><tt class="py-lineno">146</tt>  <tt class="py-line">                                       <tt class="py-string">"color parameter is 1.0."</tt><tt class="py-op">)</tt> </tt>
+<a name="L147"></a><tt class="py-lineno">147</tt>  <tt class="py-line">                        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_gave_alpha_warning</tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L148"></a><tt class="py-lineno">148</tt>  <tt class="py-line"> </tt>
+<a name="L149"></a><tt class="py-lineno">149</tt>  <tt class="py-line">                <tt class="py-comment"># We've already drawn a filled polygon (aliased), now</tt> </tt>
+<a name="L150"></a><tt class="py-lineno">150</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-comment"># redraw the outline of the polygon (with</tt> </tt>
+<a name="L151"></a><tt class="py-lineno">151</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-comment"># anti-aliasing).  (Using GL_POLYGON_SMOOTH results in</tt> </tt>
+<a name="L152"></a><tt class="py-lineno">152</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-comment"># artifactual lines where triangles were joined to</tt> </tt>
+<a name="L153"></a><tt class="py-lineno">153</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-comment"># create quad, at least on some OpenGL</tt> </tt>
+<a name="L154"></a><tt class="py-lineno">154</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-comment"># implementations.)</tt> </tt>
+<a name="L155"></a><tt class="py-lineno">155</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L156"></a><tt class="py-lineno">156</tt>  <tt class="py-line">                <tt class="py-comment"># Calculate coverage value for each pixel of outline</tt> </tt>
+<a name="L157"></a><tt class="py-lineno">157</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-comment"># and store as alpha</tt> </tt>
+<a name="L158"></a><tt class="py-lineno">158</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glEnable</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_LINE_SMOOTH</tt><tt class="py-op">)</tt> </tt>
+<a name="L159"></a><tt class="py-lineno">159</tt>  <tt class="py-line">                <tt class="py-comment"># Now specify how to use the alpha value</tt> </tt>
+<a name="L160"></a><tt class="py-lineno">160</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glBlendFunc</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_SRC_ALPHA</tt><tt class="py-op">,</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_ONE_MINUS_SRC_ALPHA</tt><tt class="py-op">)</tt> </tt>
+<a name="L161"></a><tt class="py-lineno">161</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glEnable</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_BLEND</tt><tt class="py-op">)</tt> </tt>
+<a name="L162"></a><tt class="py-lineno">162</tt>  <tt class="py-line"> </tt>
+<a name="L163"></a><tt class="py-lineno">163</tt>  <tt class="py-line">                <tt class="py-comment"># Draw a second polygon in line mode, so the edges are anti-aliased</tt> </tt>
+<a name="L164"></a><tt class="py-lineno">164</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glPolygonMode</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_FRONT_AND_BACK</tt><tt class="py-op">,</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_LINE</tt><tt class="py-op">)</tt> </tt>
+<a name="L165"></a><tt class="py-lineno">165</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glBegin</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_QUADS</tt><tt class="py-op">)</tt> </tt>
+<a name="L166"></a><tt class="py-lineno">166</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glVertex3f</tt><tt class="py-op">(</tt><tt class="py-op">-</tt><tt class="py-name">w</tt><tt class="py-op">,</tt><tt class="py-op">-</tt><tt class="py-name">h</tt><tt class="py-op">,</tt> <tt class="py-number">0.0</tt><tt class="py-op">)</tt><tt class="py-op">;</tt> </tt>
+<a name="L167"></a><tt class="py-lineno">167</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glVertex3f</tt><tt class="py-op">(</tt> <tt class="py-name">w</tt><tt class="py-op">,</tt><tt class="py-op">-</tt><tt class="py-name">h</tt><tt class="py-op">,</tt> <tt class="py-number">0.0</tt><tt class="py-op">)</tt><tt class="py-op">;</tt> </tt>
+<a name="L168"></a><tt class="py-lineno">168</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glVertex3f</tt><tt class="py-op">(</tt> <tt class="py-name">w</tt><tt class="py-op">,</tt> <tt class="py-name">h</tt><tt class="py-op">,</tt> <tt class="py-number">0.0</tt><tt class="py-op">)</tt><tt class="py-op">;</tt> </tt>
+<a name="L169"></a><tt class="py-lineno">169</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glVertex3f</tt><tt class="py-op">(</tt><tt class="py-op">-</tt><tt class="py-name">w</tt><tt class="py-op">,</tt> <tt class="py-name">h</tt><tt class="py-op">,</tt> <tt class="py-number">0.0</tt><tt class="py-op">)</tt><tt class="py-op">;</tt> </tt>
+<a name="L170"></a><tt class="py-lineno">170</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glEnd</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-comment"># GL_QUADS</tt> </tt>
+<a name="L171"></a><tt class="py-lineno">171</tt>  <tt class="py-line"> </tt>
+<a name="L172"></a><tt class="py-lineno">172</tt>  <tt class="py-line">                <tt class="py-comment"># Set the polygon mode back to fill mode</tt> </tt>
+<a name="L173"></a><tt class="py-lineno">173</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glPolygonMode</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_FRONT_AND_BACK</tt><tt class="py-op">,</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_FILL</tt><tt class="py-op">)</tt> </tt>
+<a name="L174"></a><tt class="py-lineno">174</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glDisable</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_LINE_SMOOTH</tt><tt class="py-op">)</tt> </tt>
+<a name="L175"></a><tt class="py-lineno">175</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glPopMatrix</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L176"></a><tt class="py-lineno">176</tt>  <tt class="py-line"> </tt>
+<a name="Rectangle3D"></a><div id="Rectangle3D-def"><a name="L177"></a><tt class="py-lineno">177</tt> <a class="py-toggle" href="#" id="Rectangle3D-toggle" onclick="return toggle('Rectangle3D');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.MoreStimuli.Rectangle3D-class.html">Rectangle3D</a><tt class="py-op">(</tt><tt class="py-base-class">VisionEgg</tt><tt class="py-op">.</tt><tt class="py-base-class">Core</tt><tt class="py-op">.</tt> [...]
+</div><div id="Rectangle3D-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="Rectangle3D-expanded"><a name="L178"></a><tt class="py-lineno">178</tt>  <tt class="py-line">    <tt class="py-docstring">"""Solid color rectangle positioned explicitly by four vertices.</tt> </tt>
+<a name="L179"></a><tt class="py-lineno">179</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L180"></a><tt class="py-lineno">180</tt>  <tt class="py-line"><tt class="py-docstring">    Parameters</tt> </tt>
+<a name="L181"></a><tt class="py-lineno">181</tt>  <tt class="py-line"><tt class="py-docstring">    ==========</tt> </tt>
+<a name="L182"></a><tt class="py-lineno">182</tt>  <tt class="py-line"><tt class="py-docstring">    color   -- (AnyOf(Sequence3 of Real or Sequence4 of Real))</tt> </tt>
+<a name="L183"></a><tt class="py-lineno">183</tt>  <tt class="py-line"><tt class="py-docstring">               Default: (1.0, 1.0, 1.0, 1.0)</tt> </tt>
+<a name="L184"></a><tt class="py-lineno">184</tt>  <tt class="py-line"><tt class="py-docstring">    on      -- (Boolean)</tt> </tt>
+<a name="L185"></a><tt class="py-lineno">185</tt>  <tt class="py-line"><tt class="py-docstring">               Default: True</tt> </tt>
+<a name="L186"></a><tt class="py-lineno">186</tt>  <tt class="py-line"><tt class="py-docstring">    vertex1 -- units: eye coordinates (AnyOf(Sequence3 of Real or Sequence4 of Real))</tt> </tt>
+<a name="L187"></a><tt class="py-lineno">187</tt>  <tt class="py-line"><tt class="py-docstring">               Default: (-10.0, 0.0, -10.0)</tt> </tt>
+<a name="L188"></a><tt class="py-lineno">188</tt>  <tt class="py-line"><tt class="py-docstring">    vertex2 -- units: eye coordinates (AnyOf(Sequence3 of Real or Sequence4 of Real))</tt> </tt>
+<a name="L189"></a><tt class="py-lineno">189</tt>  <tt class="py-line"><tt class="py-docstring">               Default: (-10.0, 0.0, 10.0)</tt> </tt>
+<a name="L190"></a><tt class="py-lineno">190</tt>  <tt class="py-line"><tt class="py-docstring">    vertex3 -- units: eye coordinates (AnyOf(Sequence3 of Real or Sequence4 of Real))</tt> </tt>
+<a name="L191"></a><tt class="py-lineno">191</tt>  <tt class="py-line"><tt class="py-docstring">               Default: (10.0, 0.0, 10.0)</tt> </tt>
+<a name="L192"></a><tt class="py-lineno">192</tt>  <tt class="py-line"><tt class="py-docstring">    vertex4 -- units: eye coordinates (AnyOf(Sequence3 of Real or Sequence4 of Real))</tt> </tt>
+<a name="L193"></a><tt class="py-lineno">193</tt>  <tt class="py-line"><tt class="py-docstring">               Default: (10.0, 0.0, -10.0)</tt> </tt>
+<a name="L194"></a><tt class="py-lineno">194</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L195"></a><tt class="py-lineno">195</tt>  <tt class="py-line"> </tt>
+<a name="L196"></a><tt class="py-lineno">196</tt>  <tt class="py-line">    <tt id="link-44" class="py-name"><a title="VisionEgg.ClassWithParameters.parameters_and_defaults
+VisionEgg.Core.FixationSpot.parameters_and_defaults
+VisionEgg.Core.ProjectionBaseClass.parameters_and_defaults
+VisionEgg.Core.Screen.parameters_and_defaults
+VisionEgg.Core.Viewport.parameters_and_defaults
+VisionEgg.Daq.Buffered.parameters_and_defaults
+VisionEgg.Dots.DotArea2D.parameters_and_defaults
+VisionEgg.FlowControl.Presentation.parameters_and_defaults
+VisionEgg.Gratings.AlphaGratingCommon.parameters_and_defaults
+VisionEgg.Gratings.LuminanceGratingCommon.parameters_and_defaults
+VisionEgg.Gratings.SinGrating2D.parameters_and_defaults
+VisionEgg.Gratings.SinGrating3D.parameters_and_defaults
+VisionEgg.MoreStimuli.Arrow.parameters_and_defaults
+VisionEgg.MoreStimuli.FilledCircle.parameters_and_defaults
+VisionEgg.MoreStimuli.Rectangle3D.parameters_and_defaults
+VisionEgg.MoreStimuli.Target2D.parameters_and_defaults
+VisionEgg.PyroApps.EPhysGUI.Loop.parameters_and_defaults
+VisionEgg.SphereMap.AzElGrid.parameters_and_defaults
+VisionEgg.SphereMap.SphereGrating.parameters_and_defaults
+VisionEgg.SphereMap.SphereMap.parameters_and_defaults
+VisionEgg.SphereMap.SphereWindow.parameters_and_defaults
+VisionEgg.Text.BitmapText.parameters_and_defaults
+VisionEgg.Text.GlutTextBase.parameters_and_defaults
+VisionEgg.Text.StrokeText.parameters_and_defaults
+VisionEgg.Text.Text.parameters_and_defaults
+VisionEgg.Textures.FixationCross.parameters_and_defaults
+VisionEgg.Textures.SpinningDrum.parameters_and_defaults
+VisionEgg.Textures.TextureStimulus.parameters_and_defaults
+VisionEgg.Textures.TextureStimulus3D.parameters_and_defaults
+VisionEgg.Textures.TextureStimulusBaseClass.parameters_and_defaults
+VisionEgg.WrappedText.WrappedText.parameters_and_defaults" class="py-name" href="#" onclick="return doclink('link-44', 'parameters_and_defaults', 'link-7');">parameters_and_defaults</a></tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> </tt>
+<a name="L197"></a><tt class="py-lineno">197</tt>  <tt class="py-line">        <tt class="py-string">'on'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-name">True</tt><tt class="py-op">,</tt> </tt>
+<a name="L198"></a><tt class="py-lineno">198</tt>  <tt class="py-line">              <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-45" class="py-name"><a title="VisionEgg.ParameterTypes.Boolean" class="py-name" href="#" onclick="return doclink('link-45', 'Boolean', 'link-8');">Boolean</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L199"></a><tt class="py-lineno">199</tt>  <tt class="py-line">        <tt class="py-string">'color'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-number">1.0</tt><tt class="py-op">,</tt><tt class="py-number">1.0</tt><tt class="py-op">,</tt><tt class="py-number">1.0</tt><tt class="py-op">,</tt><tt class="py-number">1.0</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L200"></a><tt class="py-lineno">200</tt>  <tt class="py-line">                 <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-46" class="py-name"><a title="VisionEgg.ParameterTypes.AnyOf" class="py-name" href="#" onclick="return doclink('link-46', 'AnyOf', 'link-9');">AnyOf</a></tt><tt class="py-op">(</tt><tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-47" class="py-name"><a title="VisionEgg.ParameterTypes.Sequence3" class="py-name" h [...]
+<a name="L201"></a><tt class="py-lineno">201</tt>  <tt class="py-line">                                <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-49" class="py-name"><a title="VisionEgg.ParameterTypes.Sequence4" class="py-name" href="#" onclick="return doclink('link-49', 'Sequence4', 'link-12');">Sequence4</a></tt><tt class="py-op">(</tt><tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-50" class="py-name"><a title="VisionEgg.ParameterTypes. [...]
+<a name="L202"></a><tt class="py-lineno">202</tt>  <tt class="py-line">        <tt class="py-string">'vertex1'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-op">(</tt> <tt class="py-op">-</tt><tt class="py-number">10.0</tt><tt class="py-op">,</tt> <tt class="py-number">0.0</tt><tt class="py-op">,</tt> <tt class="py-op">-</tt><tt class="py-number">10.0</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L203"></a><tt class="py-lineno">203</tt>  <tt class="py-line">                   <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-51" class="py-name"><a title="VisionEgg.ParameterTypes.AnyOf" class="py-name" href="#" onclick="return doclink('link-51', 'AnyOf', 'link-9');">AnyOf</a></tt><tt class="py-op">(</tt><tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-52" class="py-name"><a title="VisionEgg.ParameterTypes.Sequence3" class="py-name" [...]
+<a name="L204"></a><tt class="py-lineno">204</tt>  <tt class="py-line">                                  <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-54" class="py-name"><a title="VisionEgg.ParameterTypes.Sequence4" class="py-name" href="#" onclick="return doclink('link-54', 'Sequence4', 'link-12');">Sequence4</a></tt><tt class="py-op">(</tt><tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-55" class="py-name"><a title="VisionEgg.ParameterType [...]
+<a name="L205"></a><tt class="py-lineno">205</tt>  <tt class="py-line">                 <tt class="py-string">"units: eye coordinates"</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L206"></a><tt class="py-lineno">206</tt>  <tt class="py-line">        <tt class="py-string">'vertex2'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-op">(</tt> <tt class="py-op">-</tt><tt class="py-number">10.0</tt><tt class="py-op">,</tt> <tt class="py-number">0.0</tt><tt class="py-op">,</tt>  <tt class="py-number">10.0</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L207"></a><tt class="py-lineno">207</tt>  <tt class="py-line">                   <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-56" class="py-name"><a title="VisionEgg.ParameterTypes.AnyOf" class="py-name" href="#" onclick="return doclink('link-56', 'AnyOf', 'link-9');">AnyOf</a></tt><tt class="py-op">(</tt><tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-57" class="py-name"><a title="VisionEgg.ParameterTypes.Sequence3" class="py-name" [...]
+<a name="L208"></a><tt class="py-lineno">208</tt>  <tt class="py-line">                                  <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-59" class="py-name"><a title="VisionEgg.ParameterTypes.Sequence4" class="py-name" href="#" onclick="return doclink('link-59', 'Sequence4', 'link-12');">Sequence4</a></tt><tt class="py-op">(</tt><tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-60" class="py-name"><a title="VisionEgg.ParameterType [...]
+<a name="L209"></a><tt class="py-lineno">209</tt>  <tt class="py-line">                 <tt class="py-string">"units: eye coordinates"</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L210"></a><tt class="py-lineno">210</tt>  <tt class="py-line">        <tt class="py-string">'vertex3'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-op">(</tt>  <tt class="py-number">10.0</tt><tt class="py-op">,</tt> <tt class="py-number">0.0</tt><tt class="py-op">,</tt>  <tt class="py-number">10.0</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L211"></a><tt class="py-lineno">211</tt>  <tt class="py-line">                   <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-61" class="py-name"><a title="VisionEgg.ParameterTypes.AnyOf" class="py-name" href="#" onclick="return doclink('link-61', 'AnyOf', 'link-9');">AnyOf</a></tt><tt class="py-op">(</tt><tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-62" class="py-name"><a title="VisionEgg.ParameterTypes.Sequence3" class="py-name" [...]
+<a name="L212"></a><tt class="py-lineno">212</tt>  <tt class="py-line">                                  <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-64" class="py-name"><a title="VisionEgg.ParameterTypes.Sequence4" class="py-name" href="#" onclick="return doclink('link-64', 'Sequence4', 'link-12');">Sequence4</a></tt><tt class="py-op">(</tt><tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-65" class="py-name"><a title="VisionEgg.ParameterType [...]
+<a name="L213"></a><tt class="py-lineno">213</tt>  <tt class="py-line">                 <tt class="py-string">"units: eye coordinates"</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L214"></a><tt class="py-lineno">214</tt>  <tt class="py-line">        <tt class="py-string">'vertex4'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-op">(</tt>  <tt class="py-number">10.0</tt><tt class="py-op">,</tt> <tt class="py-number">0.0</tt><tt class="py-op">,</tt> <tt class="py-op">-</tt><tt class="py-number">10.0</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L215"></a><tt class="py-lineno">215</tt>  <tt class="py-line">                   <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-66" class="py-name"><a title="VisionEgg.ParameterTypes.AnyOf" class="py-name" href="#" onclick="return doclink('link-66', 'AnyOf', 'link-9');">AnyOf</a></tt><tt class="py-op">(</tt><tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-67" class="py-name"><a title="VisionEgg.ParameterTypes.Sequence3" class="py-name" [...]
+<a name="L216"></a><tt class="py-lineno">216</tt>  <tt class="py-line">                                  <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-69" class="py-name"><a title="VisionEgg.ParameterTypes.Sequence4" class="py-name" href="#" onclick="return doclink('link-69', 'Sequence4', 'link-12');">Sequence4</a></tt><tt class="py-op">(</tt><tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-70" class="py-name"><a title="VisionEgg.ParameterType [...]
+<a name="L217"></a><tt class="py-lineno">217</tt>  <tt class="py-line">                 <tt class="py-string">"units: eye coordinates"</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L218"></a><tt class="py-lineno">218</tt>  <tt class="py-line">        <tt class="py-op">}</tt> </tt>
+<a name="L219"></a><tt class="py-lineno">219</tt>  <tt class="py-line"> </tt>
+<a name="Rectangle3D.__init__"></a><div id="Rectangle3D.__init__-def"><a name="L220"></a><tt class="py-lineno">220</tt> <a class="py-toggle" href="#" id="Rectangle3D.__init__-toggle" onclick="return toggle('Rectangle3D.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.MoreStimuli.Rectangle3D-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt><tt class="py-op">**</tt> [...]
+</div><div id="Rectangle3D.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Rectangle3D.__init__-expanded"><a name="L221"></a><tt class="py-lineno">221</tt>  <tt class="py-line">        <tt id="link-71" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-71', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-72" class="py-name"><a title="VisionEgg.Core" class="py-name" href="#" oncli [...]
+VisionEgg.Configuration.Config.__init__
+VisionEgg.Core.FixationSpot.__init__
+VisionEgg.Core.FrameTimer.__init__
+VisionEgg.Core.ModelView.__init__
+VisionEgg.Core.OrthographicProjection.__init__
+VisionEgg.Core.OrthographicProjectionNoZClip.__init__
+VisionEgg.Core.PerspectiveProjection.__init__
+VisionEgg.Core.Projection.__init__
+VisionEgg.Core.ProjectionBaseClass.__init__
+VisionEgg.Core.Screen.__init__
+VisionEgg.Core.SimplePerspectiveProjection.__init__
+VisionEgg.Core.Stimulus.__init__
+VisionEgg.Core.Viewport.__init__
+VisionEgg.Daq.Channel.__init__
+VisionEgg.Daq.DaqMode.__init__
+VisionEgg.Daq.Device.__init__
+VisionEgg.Daq.Functionality.__init__
+VisionEgg.Daq.SignalType.__init__
+VisionEgg.DaqKeyboard.KeyboardTriggerInController.__init__
+VisionEgg.DaqLPT.LPTChannel.__init__
+VisionEgg.DaqLPT.LPTDevice.__init__
+VisionEgg.DaqLPT.LPTTriggerInController.__init__
+VisionEgg.DaqLPT.LPTTriggerOutController.__init__
+VisionEgg.Deprecated.Message.__init__
+VisionEgg.Dots.DotArea2D.__init__
+VisionEgg.FlowControl.ConstantController.__init__
+VisionEgg.FlowControl.Controller.__init__
+VisionEgg.FlowControl.EncapsulatedController.__init__
+VisionEgg.FlowControl.EvalStringController.__init__
+VisionEgg.FlowControl.ExecStringController.__init__
+VisionEgg.FlowControl.FunctionController.__init__
+VisionEgg.FlowControl.Presentation.__init__
+VisionEgg.GLTrace.Wrapper.__init__
+VisionEgg.GUI.AppWindow.__init__
+VisionEgg.GUI.GetKeypressDialog.__init__
+VisionEgg.GUI.GraphicsConfigurationWindow.__init__
+VisionEgg.GUI.InfoFrame.__init__
+VisionEgg.GUI.ProgressBar.__init__
+VisionEgg.GUI.ToplevelDialog.__init__
+VisionEgg.Gratings.SinGrating2D.__init__
+VisionEgg.Gratings.SinGrating3D.__init__
+VisionEgg.MoreStimuli.Arrow.__init__
+VisionEgg.MoreStimuli.FilledCircle.__init__
+VisionEgg.MoreStimuli.Rectangle3D.__init__
+VisionEgg.MoreStimuli.Target2D.__init__
+VisionEgg.ParameterTypes.AnyOf.__init__
+VisionEgg.ParameterTypes.Instance.__init__
+VisionEgg.ParameterTypes.Sequence.__init__
+VisionEgg.ParameterTypes.SubClass.__init__
+VisionEgg.PyroApps.AST_ext.AST_Visitor.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalMetaParameters.__init__
+VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.__init__
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.__init__
+VisionEgg.PyroApps.DropinGUI.DropinMetaParameters.__init__
+VisionEgg.PyroApps.DropinServer.DropinMetaController.__init__
+VisionEgg.PyroApps.EPhysGUI.AppWindow.__init__
+VisionEgg.PyroApps.EPhysGUI.BarButton.__init__
+VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase.__init__
+VisionEgg.PyroApps.EPhysGUI.GammaFrame.__init__
+VisionEgg.PyroApps.EPhysGUI.ImageSequenceLauncher.__init__
+VisionEgg.PyroApps.EPhysGUI.Loop.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopContainedObject.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopParamDialog.__init__
+VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.__init__
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.__init__
+VisionEgg.PyroApps.EPhysServer.EPhysServer.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingMetaParameters.__init__
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.GridGUI.GridControlFrame.__init__
+VisionEgg.PyroApps.GridGUI.GridMetaParameters.__init__
+VisionEgg.PyroApps.GridServer.GridMetaController.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetMetaParameters.__init__
+VisionEgg.PyroApps.MouseTargetServer.MousePositionController.__init__
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetOrientationController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetPositionController.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.CallbackEntry.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionParameters.__init__
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingMetaParameters.__init__
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumMetaParameters.__init__
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.__init__
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.__init__
+VisionEgg.PyroApps.TargetGUI.TargetMetaParameters.__init__
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.__init__
+VisionEgg.PyroClient.PyroClient.__init__
+VisionEgg.PyroHelpers.PyroConstantController.__init__
+VisionEgg.PyroHelpers.PyroEncapsulatedController.__init__
+VisionEgg.PyroHelpers.PyroEvalStringController.__init__
+VisionEgg.PyroHelpers.PyroExecStringController.__init__
+VisionEgg.PyroHelpers.PyroListenController.__init__
+VisionEgg.PyroHelpers.PyroLocalDictController.__init__
+VisionEgg.PyroHelpers.PyroServer.__init__
+VisionEgg.QuickTime.MovieTexture.__init__
+VisionEgg.ResponseControl.KeyboardResponseController.__init__
+VisionEgg.ResponseControl.ResponseController.__init__
+VisionEgg.SphereMap.AzElGrid.__init__
+VisionEgg.SphereMap.SphereGrating.__init__
+VisionEgg.SphereMap.SphereMap.__init__
+VisionEgg.SphereMap.SphereWindow.__init__
+VisionEgg.TCPController.SocketListenController.__init__
+VisionEgg.TCPController.TCPController.__init__
+VisionEgg.TCPController.TCPServer.__init__
+VisionEgg.Text.BitmapText.__init__
+VisionEgg.Text.GlutTextBase.__init__
+VisionEgg.Text.StrokeText.__init__
+VisionEgg.Text.Text.__init__
+VisionEgg.Textures.FixationCross.__init__
+VisionEgg.Textures.Mask2D.__init__
+VisionEgg.Textures.SpinningDrum.__init__
+VisionEgg.Textures.Texture.__init__
+VisionEgg.Textures.TextureFromFile.__init__
+VisionEgg.Textures.TextureObject.__init__
+VisionEgg.Textures.TextureStimulusBaseClass.__init__
+VisionEgg.ThreeDeeMath.TransformMatrix.__init__
+VisionEgg.WrappedText.WrappedText.__init__
+VisionEgg.qtmovie.Movie.__init__
+VisionEgg.qtmovie.Rect.__init__" class="py-name" href="#" onclick="return doclink('link-74', '__init__', 'link-31');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt><tt class="py-op">**</tt><tt class="py-name">kw</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L222"></a><tt class="py-lineno">222</tt>  <tt class="py-line"> </tt>
+<a name="Rectangle3D.draw"></a><div id="Rectangle3D.draw-def"><a name="L223"></a><tt class="py-lineno">223</tt> <a class="py-toggle" href="#" id="Rectangle3D.draw-toggle" onclick="return toggle('Rectangle3D.draw');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.MoreStimuli.Rectangle3D-class.html#draw">draw</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Rectangle3D.draw-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Rectangle3D.draw-expanded"><a name="L224"></a><tt class="py-lineno">224</tt>  <tt class="py-line">        <tt class="py-name">p</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt> <tt class="py-comment"># shorthand</tt> </tt>
+<a name="L225"></a><tt class="py-lineno">225</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">on</tt><tt class="py-op">:</tt> </tt>
+<a name="L226"></a><tt class="py-lineno">226</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">color</tt><tt class="py-op">)</tt><tt class="py-op">==</tt><tt class="py-number">3</tt><tt class="py-op">:</tt> </tt>
+<a name="L227"></a><tt class="py-lineno">227</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glColor3f</tt><tt class="py-op">(</tt><tt class="py-op">*</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">color</tt><tt class="py-op">)</tt> </tt>
+<a name="L228"></a><tt class="py-lineno">228</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">color</tt><tt class="py-op">)</tt><tt class="py-op">==</tt><tt class="py-number">4</tt><tt class="py-op">:</tt> </tt>
+<a name="L229"></a><tt class="py-lineno">229</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glColor4f</tt><tt class="py-op">(</tt><tt class="py-op">*</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">color</tt><tt class="py-op">)</tt> </tt>
+<a name="L230"></a><tt class="py-lineno">230</tt>  <tt class="py-line"> </tt>
+<a name="L231"></a><tt class="py-lineno">231</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glDisable</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE_2D</tt><tt class="py-op">)</tt> </tt>
+<a name="L232"></a><tt class="py-lineno">232</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glDisable</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_DEPTH_TEST</tt><tt class="py-op">)</tt> </tt>
+<a name="L233"></a><tt class="py-lineno">233</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glDisable</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_BLEND</tt><tt class="py-op">)</tt> </tt>
+<a name="L234"></a><tt class="py-lineno">234</tt>  <tt class="py-line"> </tt>
+<a name="L235"></a><tt class="py-lineno">235</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glBegin</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_QUADS</tt><tt class="py-op">)</tt> </tt>
+<a name="L236"></a><tt class="py-lineno">236</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glVertex</tt><tt class="py-op">(</tt><tt class="py-op">*</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">vertex1</tt><tt class="py-op">)</tt> </tt>
+<a name="L237"></a><tt class="py-lineno">237</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glVertex</tt><tt class="py-op">(</tt><tt class="py-op">*</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">vertex2</tt><tt class="py-op">)</tt> </tt>
+<a name="L238"></a><tt class="py-lineno">238</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glVertex</tt><tt class="py-op">(</tt><tt class="py-op">*</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">vertex3</tt><tt class="py-op">)</tt> </tt>
+<a name="L239"></a><tt class="py-lineno">239</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glVertex</tt><tt class="py-op">(</tt><tt class="py-op">*</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">vertex4</tt><tt class="py-op">)</tt> </tt>
+<a name="L240"></a><tt class="py-lineno">240</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glEnd</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-comment"># GL_QUADS</tt> </tt>
+<a name="L241"></a><tt class="py-lineno">241</tt>  <tt class="py-line"> </tt>
+<a name="L242"></a><tt class="py-lineno">242</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glDisable</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE_2D</tt><tt class="py-op">)</tt> </tt>
+<a name="L243"></a><tt class="py-lineno">243</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glDisable</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_BLEND</tt><tt class="py-op">)</tt> </tt>
+<a name="L244"></a><tt class="py-lineno">244</tt>  <tt class="py-line"> </tt>
+<a name="L245"></a><tt class="py-lineno">245</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glBegin</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_QUADS</tt><tt class="py-op">)</tt> </tt>
+<a name="L246"></a><tt class="py-lineno">246</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glVertex</tt><tt class="py-op">(</tt><tt class="py-op">*</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">vertex1</tt><tt class="py-op">)</tt> </tt>
+<a name="L247"></a><tt class="py-lineno">247</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glVertex</tt><tt class="py-op">(</tt><tt class="py-op">*</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">vertex2</tt><tt class="py-op">)</tt> </tt>
+<a name="L248"></a><tt class="py-lineno">248</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glVertex</tt><tt class="py-op">(</tt><tt class="py-op">*</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">vertex3</tt><tt class="py-op">)</tt> </tt>
+<a name="L249"></a><tt class="py-lineno">249</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glVertex</tt><tt class="py-op">(</tt><tt class="py-op">*</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">vertex4</tt><tt class="py-op">)</tt> </tt>
+<a name="L250"></a><tt class="py-lineno">250</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glEnd</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-comment"># GL_QUADS</tt> </tt>
+</div></div><a name="L251"></a><tt class="py-lineno">251</tt>  <tt class="py-line"> </tt>
+<a name="Arrow"></a><div id="Arrow-def"><a name="L252"></a><tt class="py-lineno">252</tt> <a class="py-toggle" href="#" id="Arrow-toggle" onclick="return toggle('Arrow');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.MoreStimuli.Arrow-class.html">Arrow</a><tt class="py-op">(</tt><tt class="py-base-class">VisionEgg</tt><tt class="py-op">.</tt><tt class="py-base-class">Core</tt><tt class="py-op">.</tt><tt class="py-base-class">Stimulus</ [...]
+</div><div id="Arrow-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="Arrow-expanded"><a name="L253"></a><tt class="py-lineno">253</tt>  <tt class="py-line">    <tt class="py-docstring">"""Arrow stimulus.</tt> </tt>
+<a name="L254"></a><tt class="py-lineno">254</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L255"></a><tt class="py-lineno">255</tt>  <tt class="py-line"><tt class="py-docstring">    Parameters</tt> </tt>
+<a name="L256"></a><tt class="py-lineno">256</tt>  <tt class="py-line"><tt class="py-docstring">    ==========</tt> </tt>
+<a name="L257"></a><tt class="py-lineno">257</tt>  <tt class="py-line"><tt class="py-docstring">    anchor        -- (String)</tt> </tt>
+<a name="L258"></a><tt class="py-lineno">258</tt>  <tt class="py-line"><tt class="py-docstring">                     Default: center</tt> </tt>
+<a name="L259"></a><tt class="py-lineno">259</tt>  <tt class="py-line"><tt class="py-docstring">    anti_aliasing -- (Boolean)</tt> </tt>
+<a name="L260"></a><tt class="py-lineno">260</tt>  <tt class="py-line"><tt class="py-docstring">                     Default: True</tt> </tt>
+<a name="L261"></a><tt class="py-lineno">261</tt>  <tt class="py-line"><tt class="py-docstring">    color         -- (AnyOf(Sequence3 of Real or Sequence4 of Real))</tt> </tt>
+<a name="L262"></a><tt class="py-lineno">262</tt>  <tt class="py-line"><tt class="py-docstring">                     Default: (1.0, 1.0, 1.0)</tt> </tt>
+<a name="L263"></a><tt class="py-lineno">263</tt>  <tt class="py-line"><tt class="py-docstring">    on            -- (Boolean)</tt> </tt>
+<a name="L264"></a><tt class="py-lineno">264</tt>  <tt class="py-line"><tt class="py-docstring">                     Default: True</tt> </tt>
+<a name="L265"></a><tt class="py-lineno">265</tt>  <tt class="py-line"><tt class="py-docstring">    orientation   -- (Real)</tt> </tt>
+<a name="L266"></a><tt class="py-lineno">266</tt>  <tt class="py-line"><tt class="py-docstring">                     Default: 0.0</tt> </tt>
+<a name="L267"></a><tt class="py-lineno">267</tt>  <tt class="py-line"><tt class="py-docstring">    position      -- units: eye coordinates (AnyOf(Sequence2 of Real or Sequence3 of Real or Sequence4 of Real))</tt> </tt>
+<a name="L268"></a><tt class="py-lineno">268</tt>  <tt class="py-line"><tt class="py-docstring">                     Default: (320.0, 240.0)</tt> </tt>
+<a name="L269"></a><tt class="py-lineno">269</tt>  <tt class="py-line"><tt class="py-docstring">    size          -- (Sequence2 of Real)</tt> </tt>
+<a name="L270"></a><tt class="py-lineno">270</tt>  <tt class="py-line"><tt class="py-docstring">                     Default: (64.0, 16.0)</tt> </tt>
+<a name="L271"></a><tt class="py-lineno">271</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L272"></a><tt class="py-lineno">272</tt>  <tt class="py-line"> </tt>
+<a name="L273"></a><tt class="py-lineno">273</tt>  <tt class="py-line">    <tt id="link-75" class="py-name"><a title="VisionEgg.ClassWithParameters.parameters_and_defaults
+VisionEgg.Core.FixationSpot.parameters_and_defaults
+VisionEgg.Core.ProjectionBaseClass.parameters_and_defaults
+VisionEgg.Core.Screen.parameters_and_defaults
+VisionEgg.Core.Viewport.parameters_and_defaults
+VisionEgg.Daq.Buffered.parameters_and_defaults
+VisionEgg.Dots.DotArea2D.parameters_and_defaults
+VisionEgg.FlowControl.Presentation.parameters_and_defaults
+VisionEgg.Gratings.AlphaGratingCommon.parameters_and_defaults
+VisionEgg.Gratings.LuminanceGratingCommon.parameters_and_defaults
+VisionEgg.Gratings.SinGrating2D.parameters_and_defaults
+VisionEgg.Gratings.SinGrating3D.parameters_and_defaults
+VisionEgg.MoreStimuli.Arrow.parameters_and_defaults
+VisionEgg.MoreStimuli.FilledCircle.parameters_and_defaults
+VisionEgg.MoreStimuli.Rectangle3D.parameters_and_defaults
+VisionEgg.MoreStimuli.Target2D.parameters_and_defaults
+VisionEgg.PyroApps.EPhysGUI.Loop.parameters_and_defaults
+VisionEgg.SphereMap.AzElGrid.parameters_and_defaults
+VisionEgg.SphereMap.SphereGrating.parameters_and_defaults
+VisionEgg.SphereMap.SphereMap.parameters_and_defaults
+VisionEgg.SphereMap.SphereWindow.parameters_and_defaults
+VisionEgg.Text.BitmapText.parameters_and_defaults
+VisionEgg.Text.GlutTextBase.parameters_and_defaults
+VisionEgg.Text.StrokeText.parameters_and_defaults
+VisionEgg.Text.Text.parameters_and_defaults
+VisionEgg.Textures.FixationCross.parameters_and_defaults
+VisionEgg.Textures.SpinningDrum.parameters_and_defaults
+VisionEgg.Textures.TextureStimulus.parameters_and_defaults
+VisionEgg.Textures.TextureStimulus3D.parameters_and_defaults
+VisionEgg.Textures.TextureStimulusBaseClass.parameters_and_defaults
+VisionEgg.WrappedText.WrappedText.parameters_and_defaults" class="py-name" href="#" onclick="return doclink('link-75', 'parameters_and_defaults', 'link-7');">parameters_and_defaults</a></tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> </tt>
+<a name="L274"></a><tt class="py-lineno">274</tt>  <tt class="py-line">        <tt class="py-string">'on'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-name">True</tt><tt class="py-op">,</tt> </tt>
+<a name="L275"></a><tt class="py-lineno">275</tt>  <tt class="py-line">              <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-76" class="py-name"><a title="VisionEgg.ParameterTypes.Boolean" class="py-name" href="#" onclick="return doclink('link-76', 'Boolean', 'link-8');">Boolean</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L276"></a><tt class="py-lineno">276</tt>  <tt class="py-line">        <tt class="py-string">'color'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-number">1.0</tt><tt class="py-op">,</tt><tt class="py-number">1.0</tt><tt class="py-op">,</tt><tt class="py-number">1.0</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L277"></a><tt class="py-lineno">277</tt>  <tt class="py-line">                 <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-77" class="py-name"><a title="VisionEgg.ParameterTypes.AnyOf" class="py-name" href="#" onclick="return doclink('link-77', 'AnyOf', 'link-9');">AnyOf</a></tt><tt class="py-op">(</tt><tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-78" class="py-name"><a title="VisionEgg.ParameterTypes.Sequence3" class="py-name" h [...]
+<a name="L278"></a><tt class="py-lineno">278</tt>  <tt class="py-line">                                <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-80" class="py-name"><a title="VisionEgg.ParameterTypes.Sequence4" class="py-name" href="#" onclick="return doclink('link-80', 'Sequence4', 'link-12');">Sequence4</a></tt><tt class="py-op">(</tt><tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-81" class="py-name"><a title="VisionEgg.ParameterTypes. [...]
+<a name="L279"></a><tt class="py-lineno">279</tt>  <tt class="py-line">        <tt class="py-string">'anti_aliasing'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-name">True</tt><tt class="py-op">,</tt> </tt>
+<a name="L280"></a><tt class="py-lineno">280</tt>  <tt class="py-line">                         <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-82" class="py-name"><a title="VisionEgg.ParameterTypes.Boolean" class="py-name" href="#" onclick="return doclink('link-82', 'Boolean', 'link-8');">Boolean</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L281"></a><tt class="py-lineno">281</tt>  <tt class="py-line">        <tt class="py-string">'orientation'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-number">0.0</tt><tt class="py-op">,</tt> <tt class="py-comment"># 0.0 degrees = right, 90.0 degrees = up</tt> </tt>
+<a name="L282"></a><tt class="py-lineno">282</tt>  <tt class="py-line">                       <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-83" class="py-name"><a title="VisionEgg.ParameterTypes.Real" class="py-name" href="#" onclick="return doclink('link-83', 'Real', 'link-11');">Real</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L283"></a><tt class="py-lineno">283</tt>  <tt class="py-line">        <tt class="py-string">'position'</tt> <tt class="py-op">:</tt> <tt class="py-op">(</tt> <tt class="py-op">(</tt> <tt class="py-number">320.0</tt><tt class="py-op">,</tt> <tt class="py-number">240.0</tt> <tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-comment"># In eye coordinates</tt> </tt>
+<a name="L284"></a><tt class="py-lineno">284</tt>  <tt class="py-line">                       <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-84" class="py-name"><a title="VisionEgg.ParameterTypes.AnyOf" class="py-name" href="#" onclick="return doclink('link-84', 'AnyOf', 'link-9');">AnyOf</a></tt><tt class="py-op">(</tt><tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-85" class="py-name"><a title="VisionEgg.ParameterTypes.Sequence2" class="py-n [...]
+<a name="L285"></a><tt class="py-lineno">285</tt>  <tt class="py-line">                                      <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-87" class="py-name"><a title="VisionEgg.ParameterTypes.Sequence3" class="py-name" href="#" onclick="return doclink('link-87', 'Sequence3', 'link-10');">Sequence3</a></tt><tt class="py-op">(</tt><tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-88" class="py-name"><a title="VisionEgg.Parameter [...]
+<a name="L286"></a><tt class="py-lineno">286</tt>  <tt class="py-line">                                      <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-89" class="py-name"><a title="VisionEgg.ParameterTypes.Sequence4" class="py-name" href="#" onclick="return doclink('link-89', 'Sequence4', 'link-12');">Sequence4</a></tt><tt class="py-op">(</tt><tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-90" class="py-name"><a title="VisionEgg.Parameter [...]
+<a name="L287"></a><tt class="py-lineno">287</tt>  <tt class="py-line">                       <tt class="py-string">"units: eye coordinates"</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L288"></a><tt class="py-lineno">288</tt>  <tt class="py-line">        <tt class="py-string">'anchor'</tt> <tt class="py-op">:</tt> <tt class="py-op">(</tt><tt class="py-string">'center'</tt><tt class="py-op">,</tt> </tt>
+<a name="L289"></a><tt class="py-lineno">289</tt>  <tt class="py-line">                    <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-91" class="py-name"><a title="VisionEgg.ParameterTypes.String" class="py-name" href="#" onclick="return doclink('link-91', 'String', 'link-23');">String</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L290"></a><tt class="py-lineno">290</tt>  <tt class="py-line">        <tt class="py-string">'size'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-number">64.0</tt><tt class="py-op">,</tt><tt class="py-number">16.0</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-comment"># In eye coordinates</tt> </tt>
+<a name="L291"></a><tt class="py-lineno">291</tt>  <tt class="py-line">                <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-92" class="py-name"><a title="VisionEgg.ParameterTypes.Sequence2" class="py-name" href="#" onclick="return doclink('link-92', 'Sequence2', 'link-17');">Sequence2</a></tt><tt class="py-op">(</tt><tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-93" class="py-name"><a title="VisionEgg.ParameterTypes.Real" class="py- [...]
+<a name="L292"></a><tt class="py-lineno">292</tt>  <tt class="py-line">        <tt class="py-op">}</tt> </tt>
+<a name="L293"></a><tt class="py-lineno">293</tt>  <tt class="py-line"> </tt>
+<a name="L294"></a><tt class="py-lineno">294</tt>  <tt class="py-line">    <tt class="py-name">__slots__</tt> <tt class="py-op">=</tt> <tt id="link-94" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-94', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-95" class="py-name"><a title="VisionEgg.Core" class="py-name" href="#" onclick="return doclink('link-95', 'Core', 'link-2');">Core</a></tt><tt class="py-op">.</tt> [...]
+<a name="L295"></a><tt class="py-lineno">295</tt>  <tt class="py-line">        <tt class="py-string">'_gave_alpha_warning'</tt><tt class="py-op">,</tt> </tt>
+<a name="L296"></a><tt class="py-lineno">296</tt>  <tt class="py-line">        <tt class="py-op">)</tt> </tt>
+<a name="L297"></a><tt class="py-lineno">297</tt>  <tt class="py-line"> </tt>
+<a name="Arrow.__init__"></a><div id="Arrow.__init__-def"><a name="L298"></a><tt class="py-lineno">298</tt> <a class="py-toggle" href="#" id="Arrow.__init__-toggle" onclick="return toggle('Arrow.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.MoreStimuli.Arrow-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt><tt class="py-op">**</tt><tt class="py-param">kw</tt><t [...]
+</div><div id="Arrow.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Arrow.__init__-expanded"><a name="L299"></a><tt class="py-lineno">299</tt>  <tt class="py-line">        <tt id="link-97" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-97', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-98" class="py-name"><a title="VisionEgg.Core" class="py-name" href="#" onclick="return d [...]
+VisionEgg.Configuration.Config.__init__
+VisionEgg.Core.FixationSpot.__init__
+VisionEgg.Core.FrameTimer.__init__
+VisionEgg.Core.ModelView.__init__
+VisionEgg.Core.OrthographicProjection.__init__
+VisionEgg.Core.OrthographicProjectionNoZClip.__init__
+VisionEgg.Core.PerspectiveProjection.__init__
+VisionEgg.Core.Projection.__init__
+VisionEgg.Core.ProjectionBaseClass.__init__
+VisionEgg.Core.Screen.__init__
+VisionEgg.Core.SimplePerspectiveProjection.__init__
+VisionEgg.Core.Stimulus.__init__
+VisionEgg.Core.Viewport.__init__
+VisionEgg.Daq.Channel.__init__
+VisionEgg.Daq.DaqMode.__init__
+VisionEgg.Daq.Device.__init__
+VisionEgg.Daq.Functionality.__init__
+VisionEgg.Daq.SignalType.__init__
+VisionEgg.DaqKeyboard.KeyboardTriggerInController.__init__
+VisionEgg.DaqLPT.LPTChannel.__init__
+VisionEgg.DaqLPT.LPTDevice.__init__
+VisionEgg.DaqLPT.LPTTriggerInController.__init__
+VisionEgg.DaqLPT.LPTTriggerOutController.__init__
+VisionEgg.Deprecated.Message.__init__
+VisionEgg.Dots.DotArea2D.__init__
+VisionEgg.FlowControl.ConstantController.__init__
+VisionEgg.FlowControl.Controller.__init__
+VisionEgg.FlowControl.EncapsulatedController.__init__
+VisionEgg.FlowControl.EvalStringController.__init__
+VisionEgg.FlowControl.ExecStringController.__init__
+VisionEgg.FlowControl.FunctionController.__init__
+VisionEgg.FlowControl.Presentation.__init__
+VisionEgg.GLTrace.Wrapper.__init__
+VisionEgg.GUI.AppWindow.__init__
+VisionEgg.GUI.GetKeypressDialog.__init__
+VisionEgg.GUI.GraphicsConfigurationWindow.__init__
+VisionEgg.GUI.InfoFrame.__init__
+VisionEgg.GUI.ProgressBar.__init__
+VisionEgg.GUI.ToplevelDialog.__init__
+VisionEgg.Gratings.SinGrating2D.__init__
+VisionEgg.Gratings.SinGrating3D.__init__
+VisionEgg.MoreStimuli.Arrow.__init__
+VisionEgg.MoreStimuli.FilledCircle.__init__
+VisionEgg.MoreStimuli.Rectangle3D.__init__
+VisionEgg.MoreStimuli.Target2D.__init__
+VisionEgg.ParameterTypes.AnyOf.__init__
+VisionEgg.ParameterTypes.Instance.__init__
+VisionEgg.ParameterTypes.Sequence.__init__
+VisionEgg.ParameterTypes.SubClass.__init__
+VisionEgg.PyroApps.AST_ext.AST_Visitor.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalMetaParameters.__init__
+VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.__init__
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.__init__
+VisionEgg.PyroApps.DropinGUI.DropinMetaParameters.__init__
+VisionEgg.PyroApps.DropinServer.DropinMetaController.__init__
+VisionEgg.PyroApps.EPhysGUI.AppWindow.__init__
+VisionEgg.PyroApps.EPhysGUI.BarButton.__init__
+VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase.__init__
+VisionEgg.PyroApps.EPhysGUI.GammaFrame.__init__
+VisionEgg.PyroApps.EPhysGUI.ImageSequenceLauncher.__init__
+VisionEgg.PyroApps.EPhysGUI.Loop.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopContainedObject.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopParamDialog.__init__
+VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.__init__
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.__init__
+VisionEgg.PyroApps.EPhysServer.EPhysServer.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingMetaParameters.__init__
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.GridGUI.GridControlFrame.__init__
+VisionEgg.PyroApps.GridGUI.GridMetaParameters.__init__
+VisionEgg.PyroApps.GridServer.GridMetaController.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetMetaParameters.__init__
+VisionEgg.PyroApps.MouseTargetServer.MousePositionController.__init__
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetOrientationController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetPositionController.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.CallbackEntry.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionParameters.__init__
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingMetaParameters.__init__
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumMetaParameters.__init__
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.__init__
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.__init__
+VisionEgg.PyroApps.TargetGUI.TargetMetaParameters.__init__
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.__init__
+VisionEgg.PyroClient.PyroClient.__init__
+VisionEgg.PyroHelpers.PyroConstantController.__init__
+VisionEgg.PyroHelpers.PyroEncapsulatedController.__init__
+VisionEgg.PyroHelpers.PyroEvalStringController.__init__
+VisionEgg.PyroHelpers.PyroExecStringController.__init__
+VisionEgg.PyroHelpers.PyroListenController.__init__
+VisionEgg.PyroHelpers.PyroLocalDictController.__init__
+VisionEgg.PyroHelpers.PyroServer.__init__
+VisionEgg.QuickTime.MovieTexture.__init__
+VisionEgg.ResponseControl.KeyboardResponseController.__init__
+VisionEgg.ResponseControl.ResponseController.__init__
+VisionEgg.SphereMap.AzElGrid.__init__
+VisionEgg.SphereMap.SphereGrating.__init__
+VisionEgg.SphereMap.SphereMap.__init__
+VisionEgg.SphereMap.SphereWindow.__init__
+VisionEgg.TCPController.SocketListenController.__init__
+VisionEgg.TCPController.TCPController.__init__
+VisionEgg.TCPController.TCPServer.__init__
+VisionEgg.Text.BitmapText.__init__
+VisionEgg.Text.GlutTextBase.__init__
+VisionEgg.Text.StrokeText.__init__
+VisionEgg.Text.Text.__init__
+VisionEgg.Textures.FixationCross.__init__
+VisionEgg.Textures.Mask2D.__init__
+VisionEgg.Textures.SpinningDrum.__init__
+VisionEgg.Textures.Texture.__init__
+VisionEgg.Textures.TextureFromFile.__init__
+VisionEgg.Textures.TextureObject.__init__
+VisionEgg.Textures.TextureStimulusBaseClass.__init__
+VisionEgg.ThreeDeeMath.TransformMatrix.__init__
+VisionEgg.WrappedText.WrappedText.__init__
+VisionEgg.qtmovie.Movie.__init__
+VisionEgg.qtmovie.Rect.__init__" class="py-name" href="#" onclick="return doclink('link-100', '__init__', 'link-31');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt><tt class="py-op">**</tt><tt class="py-name">kw</tt><tt class="py-op">)</tt> </tt>
+<a name="L300"></a><tt class="py-lineno">300</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_gave_alpha_warning</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+</div><a name="L301"></a><tt class="py-lineno">301</tt>  <tt class="py-line"> </tt>
+<a name="Arrow.draw"></a><div id="Arrow.draw-def"><a name="L302"></a><tt class="py-lineno">302</tt> <a class="py-toggle" href="#" id="Arrow.draw-toggle" onclick="return toggle('Arrow.draw');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.MoreStimuli.Arrow-class.html#draw">draw</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Arrow.draw-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Arrow.draw-expanded"><a name="L303"></a><tt class="py-lineno">303</tt>  <tt class="py-line">        <tt class="py-name">p</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt> <tt class="py-comment"># Shorthand</tt> </tt>
+<a name="L304"></a><tt class="py-lineno">304</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">on</tt><tt class="py-op">:</tt> </tt>
+<a name="L305"></a><tt class="py-lineno">305</tt>  <tt class="py-line">            <tt class="py-comment"># Calculate center</tt> </tt>
+<a name="L306"></a><tt class="py-lineno">306</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">center</tt> <tt class="py-op">=</tt> <tt id="link-101" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-101', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt class="py-name">_get_center</tt><tt class="py-op">(</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">position</t [...]
+<a name="L307"></a><tt class="py-lineno">307</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glMatrixMode</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_MODELVIEW</tt><tt class="py-op">)</tt> </tt>
+<a name="L308"></a><tt class="py-lineno">308</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glPushMatrix</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L309"></a><tt class="py-lineno">309</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glTranslate</tt><tt class="py-op">(</tt><tt class="py-name">center</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">,</tt><tt class="py-name">center</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">,</tt><tt class="py-number">0.0</tt><tt cl [...]
+<a name="L310"></a><tt class="py-lineno">310</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glRotate</tt><tt class="py-op">(</tt><tt class="py-op">-</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">orientation</tt><tt class="py-op">,</tt><tt class="py-number">0.0</tt><tt class="py-op">,</tt><tt class="py-number">0.0</tt><tt class="py-op">,</tt><tt class="py-number">1.0</tt><tt class="py-op">)</tt> </tt>
+<a name="L311"></a><tt class="py-lineno">311</tt>  <tt class="py-line"> </tt>
+<a name="L312"></a><tt class="py-lineno">312</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">color</tt><tt class="py-op">)</tt><tt class="py-op">==</tt><tt class="py-number">3</tt><tt class="py-op">:</tt> </tt>
+<a name="L313"></a><tt class="py-lineno">313</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glColor3f</tt><tt class="py-op">(</tt><tt class="py-op">*</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">color</tt><tt class="py-op">)</tt> </tt>
+<a name="L314"></a><tt class="py-lineno">314</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">color</tt><tt class="py-op">)</tt><tt class="py-op">==</tt><tt class="py-number">4</tt><tt class="py-op">:</tt> </tt>
+<a name="L315"></a><tt class="py-lineno">315</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glColor4f</tt><tt class="py-op">(</tt><tt class="py-op">*</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">color</tt><tt class="py-op">)</tt> </tt>
+<a name="L316"></a><tt class="py-lineno">316</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glDisable</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_DEPTH_TEST</tt><tt class="py-op">)</tt> </tt>
+<a name="L317"></a><tt class="py-lineno">317</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glDisable</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE_2D</tt><tt class="py-op">)</tt> </tt>
+<a name="L318"></a><tt class="py-lineno">318</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glBlendFunc</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_SRC_ALPHA</tt><tt class="py-op">,</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_ONE_MINUS_SRC_ALPHA</tt><tt class="py-op">)</tt> </tt>
+<a name="L319"></a><tt class="py-lineno">319</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glEnable</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_BLEND</tt><tt class="py-op">)</tt> </tt>
+<a name="L320"></a><tt class="py-lineno">320</tt>  <tt class="py-line"> </tt>
+<a name="L321"></a><tt class="py-lineno">321</tt>  <tt class="py-line">            <tt class="py-name">w</tt> <tt class="py-op">=</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt id="link-103" class="py-name"><a title="VisionEgg.Core.Screen.size" class="py-name" href="#" onclick="return doclink('link-103', 'size', 'link-39');">size</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">/</tt><tt class="py-number">2.0</tt> </tt>
+<a name="L322"></a><tt class="py-lineno">322</tt>  <tt class="py-line">            <tt class="py-name">h</tt> <tt class="py-op">=</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt id="link-104" class="py-name"><a title="VisionEgg.Core.Screen.size" class="py-name" href="#" onclick="return doclink('link-104', 'size', 'link-39');">size</a></tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">/</tt><tt class="py-number">2.0</tt> </tt>
+<a name="L323"></a><tt class="py-lineno">323</tt>  <tt class="py-line"> </tt>
+<a name="L324"></a><tt class="py-lineno">324</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glBegin</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_QUADS</tt><tt class="py-op">)</tt> <tt class="py-comment"># Draw Rectangle</tt> </tt>
+<a name="L325"></a><tt class="py-lineno">325</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glVertex3f</tt><tt class="py-op">(</tt> <tt class="py-number">0.25</tt><tt class="py-op">*</tt><tt class="py-name">w</tt><tt class="py-op">,</tt> <tt class="py-name">h</tt><tt class="py-op">,</tt> <tt class="py-number">0.0</tt><tt class="py-op">)</tt> </tt>
+<a name="L326"></a><tt class="py-lineno">326</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glVertex3f</tt><tt class="py-op">(</tt><tt class="py-op">-</tt><tt class="py-name">w</tt><tt class="py-op">,</tt> <tt class="py-name">h</tt><tt class="py-op">,</tt> <tt class="py-number">0.0</tt><tt class="py-op">)</tt> </tt>
+<a name="L327"></a><tt class="py-lineno">327</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glVertex3f</tt><tt class="py-op">(</tt><tt class="py-op">-</tt><tt class="py-name">w</tt><tt class="py-op">,</tt><tt class="py-op">-</tt><tt class="py-name">h</tt><tt class="py-op">,</tt> <tt class="py-number">0.0</tt><tt class="py-op">)</tt> </tt>
+<a name="L328"></a><tt class="py-lineno">328</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glVertex3f</tt><tt class="py-op">(</tt> <tt class="py-number">0.25</tt><tt class="py-op">*</tt><tt class="py-name">w</tt><tt class="py-op">,</tt> <tt class="py-op">-</tt><tt class="py-name">h</tt><tt class="py-op">,</tt> <tt class="py-number">0.0</tt><tt class="py-op">)</tt> </tt>
+<a name="L329"></a><tt class="py-lineno">329</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glEnd</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-comment"># GL_QUADS</tt> </tt>
+<a name="L330"></a><tt class="py-lineno">330</tt>  <tt class="py-line"> </tt>
+<a name="L331"></a><tt class="py-lineno">331</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glBegin</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TRIANGLES</tt><tt class="py-op">)</tt> <tt class="py-comment"># Draw Triangle</tt> </tt>
+<a name="L332"></a><tt class="py-lineno">332</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glVertex3f</tt><tt class="py-op">(</tt> <tt class="py-number">1.00</tt><tt class="py-op">*</tt><tt class="py-name">w</tt><tt class="py-op">,</tt> <tt class="py-number">0.0</tt><tt class="py-op">*</tt><tt class="py-name">h</tt><tt class="py-op">,</tt> <tt class="py-number">0.0</tt><tt class="py-op">)</tt> <tt class="py-comment"># Top</tt> </tt>
+<a name="L333"></a><tt class="py-lineno">333</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glVertex3f</tt><tt class="py-op">(</tt> <tt class="py-number">0.25</tt><tt class="py-op">*</tt><tt class="py-name">w</tt><tt class="py-op">,</tt><tt class="py-op">-</tt><tt class="py-number">3.0</tt><tt class="py-op">*</tt><tt class="py-name">h</tt><tt class="py-op">,</tt> <tt class="py-number">0.0</tt><tt class="py-op">)</tt> </tt>
+<a name="L334"></a><tt class="py-lineno">334</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glVertex3f</tt><tt class="py-op">(</tt> <tt class="py-number">0.25</tt><tt class="py-op">*</tt><tt class="py-name">w</tt><tt class="py-op">,</tt> <tt class="py-number">3.0</tt><tt class="py-op">*</tt><tt class="py-name">h</tt><tt class="py-op">,</tt> <tt class="py-number">0.0</tt><tt class="py-op">)</tt> </tt>
+<a name="L335"></a><tt class="py-lineno">335</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glEnd</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-comment"># GL_QUADS</tt> </tt>
+<a name="L336"></a><tt class="py-lineno">336</tt>  <tt class="py-line"> </tt>
+<a name="L337"></a><tt class="py-lineno">337</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">anti_aliasing</tt><tt class="py-op">:</tt> </tt>
+<a name="L338"></a><tt class="py-lineno">338</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_gave_alpha_warning</tt><tt class="py-op">:</tt> </tt>
+<a name="L339"></a><tt class="py-lineno">339</tt>  <tt class="py-line">                    <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">color</tt><tt class="py-op">)</tt> <tt class="py-op">></tt> <tt class="py-number">3</tt> <tt class="py-keyword">and</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">color</tt><tt class="py-op">[</tt><tt class="py-number [...]
+<a name="L340"></a><tt class="py-lineno">340</tt>  <tt class="py-line">                        <tt id="link-105" class="py-name"><a title="VisionEgg.logger" class="py-name" href="#" onclick="return doclink('link-105', 'logger', 'link-34');">logger</a></tt> <tt class="py-op">=</tt> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">getLogger</tt><tt class="py-op">(</tt><tt class="py-string">'VisionEgg.Arrow'</tt><tt class="py-op">)</tt> </tt>
+<a name="L341"></a><tt class="py-lineno">341</tt>  <tt class="py-line">                        <tt id="link-106" class="py-name"><a title="VisionEgg.logger" class="py-name" href="#" onclick="return doclink('link-106', 'logger', 'link-34');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">warning</tt><tt class="py-op">(</tt><tt class="py-string">"The parameter anti_aliasing is "</tt> </tt>
+<a name="L342"></a><tt class="py-lineno">342</tt>  <tt class="py-line">                                       <tt class="py-string">"set to true in the Arrow "</tt> </tt>
+<a name="L343"></a><tt class="py-lineno">343</tt>  <tt class="py-line">                                       <tt class="py-string">"stimulus class, but the color "</tt> </tt>
+<a name="L344"></a><tt class="py-lineno">344</tt>  <tt class="py-line">                                       <tt class="py-string">"parameter specifies an alpha "</tt> </tt>
+<a name="L345"></a><tt class="py-lineno">345</tt>  <tt class="py-line">                                       <tt class="py-string">"value other than 1.0.  To "</tt> </tt>
+<a name="L346"></a><tt class="py-lineno">346</tt>  <tt class="py-line">                                       <tt class="py-string">"acheive anti-aliasing, ensure "</tt> </tt>
+<a name="L347"></a><tt class="py-lineno">347</tt>  <tt class="py-line">                                       <tt class="py-string">"that the alpha value for the "</tt> </tt>
+<a name="L348"></a><tt class="py-lineno">348</tt>  <tt class="py-line">                                       <tt class="py-string">"color parameter is 1.0."</tt><tt class="py-op">)</tt> </tt>
+<a name="L349"></a><tt class="py-lineno">349</tt>  <tt class="py-line">                        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_gave_alpha_warning</tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L350"></a><tt class="py-lineno">350</tt>  <tt class="py-line"> </tt>
+<a name="L351"></a><tt class="py-lineno">351</tt>  <tt class="py-line">                <tt class="py-comment"># We've already drawn a filled polygon (aliased), now redraw</tt> </tt>
+<a name="L352"></a><tt class="py-lineno">352</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-comment"># the outline of the polygon (with anti-aliasing). (Using</tt> </tt>
+<a name="L353"></a><tt class="py-lineno">353</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-comment"># GL_POLYGON_SMOOTH results in artifactual lines where</tt> </tt>
+<a name="L354"></a><tt class="py-lineno">354</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-comment"># triangles were joined to create quad, at least on some OpenGL</tt> </tt>
+<a name="L355"></a><tt class="py-lineno">355</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-comment"># implementations.)</tt> </tt>
+<a name="L356"></a><tt class="py-lineno">356</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L357"></a><tt class="py-lineno">357</tt>  <tt class="py-line">                <tt class="py-comment"># Calculate coverage value for each pixel of outline</tt> </tt>
+<a name="L358"></a><tt class="py-lineno">358</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-comment"># and store as alpha</tt> </tt>
+<a name="L359"></a><tt class="py-lineno">359</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glEnable</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_LINE_SMOOTH</tt><tt class="py-op">)</tt> </tt>
+<a name="L360"></a><tt class="py-lineno">360</tt>  <tt class="py-line">                <tt class="py-comment"># Now specify how to use the alpha value</tt> </tt>
+<a name="L361"></a><tt class="py-lineno">361</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glBlendFunc</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_SRC_ALPHA</tt><tt class="py-op">,</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_ONE_MINUS_SRC_ALPHA</tt><tt class="py-op">)</tt> </tt>
+<a name="L362"></a><tt class="py-lineno">362</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glEnable</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_BLEND</tt><tt class="py-op">)</tt> </tt>
+<a name="L363"></a><tt class="py-lineno">363</tt>  <tt class="py-line"> </tt>
+<a name="L364"></a><tt class="py-lineno">364</tt>  <tt class="py-line">                <tt class="py-comment"># Draw a second polygon in line mode, so the edges are anti-aliased</tt> </tt>
+<a name="L365"></a><tt class="py-lineno">365</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glPolygonMode</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_FRONT_AND_BACK</tt><tt class="py-op">,</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_LINE</tt><tt class="py-op">)</tt> </tt>
+<a name="L366"></a><tt class="py-lineno">366</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glBegin</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_QUADS</tt><tt class="py-op">)</tt> </tt>
+<a name="L367"></a><tt class="py-lineno">367</tt>  <tt class="py-line"> </tt>
+<a name="L368"></a><tt class="py-lineno">368</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glVertex3f</tt><tt class="py-op">(</tt> <tt class="py-number">0.25</tt><tt class="py-op">*</tt><tt class="py-name">w</tt><tt class="py-op">,</tt> <tt class="py-name">h</tt><tt class="py-op">,</tt> <tt class="py-number">0.0</tt><tt class="py-op">)</tt> <tt class="py-comment"># Draw Rectangle</tt> </tt>
+<a name="L369"></a><tt class="py-lineno">369</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glVertex3f</tt><tt class="py-op">(</tt><tt class="py-op">-</tt><tt class="py-name">w</tt><tt class="py-op">,</tt> <tt class="py-name">h</tt><tt class="py-op">,</tt> <tt class="py-number">0.0</tt><tt class="py-op">)</tt> </tt>
+<a name="L370"></a><tt class="py-lineno">370</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glVertex3f</tt><tt class="py-op">(</tt><tt class="py-op">-</tt><tt class="py-name">w</tt><tt class="py-op">,</tt><tt class="py-op">-</tt><tt class="py-name">h</tt><tt class="py-op">,</tt> <tt class="py-number">0.0</tt><tt class="py-op">)</tt> </tt>
+<a name="L371"></a><tt class="py-lineno">371</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glVertex3f</tt><tt class="py-op">(</tt> <tt class="py-number">0.25</tt><tt class="py-op">*</tt><tt class="py-name">w</tt><tt class="py-op">,</tt> <tt class="py-op">-</tt><tt class="py-name">h</tt><tt class="py-op">,</tt> <tt class="py-number">0.0</tt><tt class="py-op">)</tt> </tt>
+<a name="L372"></a><tt class="py-lineno">372</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glVertex3f</tt><tt class="py-op">(</tt> <tt class="py-number">1.00</tt><tt class="py-op">*</tt><tt class="py-name">w</tt><tt class="py-op">,</tt> <tt class="py-number">0.0</tt><tt class="py-op">*</tt><tt class="py-name">h</tt><tt class="py-op">,</tt> <tt class="py-number">0.0</tt><tt class="py-op">)</tt> <tt class="py-comment"># Dra [...]
+<a name="L373"></a><tt class="py-lineno">373</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glVertex3f</tt><tt class="py-op">(</tt> <tt class="py-number">0.25</tt><tt class="py-op">*</tt><tt class="py-name">w</tt><tt class="py-op">,</tt><tt class="py-op">-</tt><tt class="py-number">3.0</tt><tt class="py-op">*</tt><tt class="py-name">h</tt><tt class="py-op">,</tt> <tt class="py-number">0.0</tt><tt class="py-op">)</tt> </tt>
+<a name="L374"></a><tt class="py-lineno">374</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glVertex3f</tt><tt class="py-op">(</tt> <tt class="py-number">0.25</tt><tt class="py-op">*</tt><tt class="py-name">w</tt><tt class="py-op">,</tt> <tt class="py-number">3.0</tt><tt class="py-op">*</tt><tt class="py-name">h</tt><tt class="py-op">,</tt> <tt class="py-number">0.0</tt><tt class="py-op">)</tt> </tt>
+<a name="L375"></a><tt class="py-lineno">375</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glEnd</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-comment"># GL_QUADS</tt> </tt>
+<a name="L376"></a><tt class="py-lineno">376</tt>  <tt class="py-line"> </tt>
+<a name="L377"></a><tt class="py-lineno">377</tt>  <tt class="py-line">                <tt class="py-comment"># Set the polygon mode back to fill mode</tt> </tt>
+<a name="L378"></a><tt class="py-lineno">378</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glPolygonMode</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_FRONT_AND_BACK</tt><tt class="py-op">,</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_FILL</tt><tt class="py-op">)</tt> </tt>
+<a name="L379"></a><tt class="py-lineno">379</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glDisable</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_LINE_SMOOTH</tt><tt class="py-op">)</tt> </tt>
+<a name="L380"></a><tt class="py-lineno">380</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glPopMatrix</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L381"></a><tt class="py-lineno">381</tt>  <tt class="py-line"> </tt>
+<a name="FilledCircle"></a><div id="FilledCircle-def"><a name="L382"></a><tt class="py-lineno">382</tt> <a class="py-toggle" href="#" id="FilledCircle-toggle" onclick="return toggle('FilledCircle');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.MoreStimuli.FilledCircle-class.html">FilledCircle</a><tt class="py-op">(</tt><tt class="py-base-class">VisionEgg</tt><tt class="py-op">.</tt><tt class="py-base-class">Core</tt><tt class="py-op"> [...]
+</div><div id="FilledCircle-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="FilledCircle-expanded"><a name="L383"></a><tt class="py-lineno">383</tt>  <tt class="py-line">    <tt class="py-docstring">"""  A circular stimulus, typically used as a fixation point.</tt> </tt>
+<a name="L384"></a><tt class="py-lineno">384</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L385"></a><tt class="py-lineno">385</tt>  <tt class="py-line"><tt class="py-docstring">    (Note, this implementation almost certainly could be made faster</tt> </tt>
+<a name="L386"></a><tt class="py-lineno">386</tt>  <tt class="py-line"><tt class="py-docstring">    using display lists.)</tt> </tt>
+<a name="L387"></a><tt class="py-lineno">387</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L388"></a><tt class="py-lineno">388</tt>  <tt class="py-line"><tt class="py-docstring">    Parameters</tt> </tt>
+<a name="L389"></a><tt class="py-lineno">389</tt>  <tt class="py-line"><tt class="py-docstring">    ==========</tt> </tt>
+<a name="L390"></a><tt class="py-lineno">390</tt>  <tt class="py-line"><tt class="py-docstring">    anchor        -- how position parameter is used (String)</tt> </tt>
+<a name="L391"></a><tt class="py-lineno">391</tt>  <tt class="py-line"><tt class="py-docstring">                     Default: center</tt> </tt>
+<a name="L392"></a><tt class="py-lineno">392</tt>  <tt class="py-line"><tt class="py-docstring">    anti_aliasing -- (Boolean)</tt> </tt>
+<a name="L393"></a><tt class="py-lineno">393</tt>  <tt class="py-line"><tt class="py-docstring">                     Default: True</tt> </tt>
+<a name="L394"></a><tt class="py-lineno">394</tt>  <tt class="py-line"><tt class="py-docstring">    color         -- color (AnyOf(Sequence3 of Real or Sequence4 of Real))</tt> </tt>
+<a name="L395"></a><tt class="py-lineno">395</tt>  <tt class="py-line"><tt class="py-docstring">                     Default: (1.0, 1.0, 1.0)</tt> </tt>
+<a name="L396"></a><tt class="py-lineno">396</tt>  <tt class="py-line"><tt class="py-docstring">    num_triangles -- number of triangles used to draw circle (Integer)</tt> </tt>
+<a name="L397"></a><tt class="py-lineno">397</tt>  <tt class="py-line"><tt class="py-docstring">                     Default: 51</tt> </tt>
+<a name="L398"></a><tt class="py-lineno">398</tt>  <tt class="py-line"><tt class="py-docstring">    on            -- draw? (Boolean)</tt> </tt>
+<a name="L399"></a><tt class="py-lineno">399</tt>  <tt class="py-line"><tt class="py-docstring">                     Default: True</tt> </tt>
+<a name="L400"></a><tt class="py-lineno">400</tt>  <tt class="py-line"><tt class="py-docstring">    position      -- position in eye coordinates (AnyOf(Sequence2 of Real or Sequence3 of Real or Sequence4 of Real))</tt> </tt>
+<a name="L401"></a><tt class="py-lineno">401</tt>  <tt class="py-line"><tt class="py-docstring">                     Default: (320.0, 240.0)</tt> </tt>
+<a name="L402"></a><tt class="py-lineno">402</tt>  <tt class="py-line"><tt class="py-docstring">    radius        -- radius in eye coordinates (Real)</tt> </tt>
+<a name="L403"></a><tt class="py-lineno">403</tt>  <tt class="py-line"><tt class="py-docstring">                     Default: 2.0</tt> </tt>
+<a name="L404"></a><tt class="py-lineno">404</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L405"></a><tt class="py-lineno">405</tt>  <tt class="py-line"> </tt>
+<a name="L406"></a><tt class="py-lineno">406</tt>  <tt class="py-line">    <tt id="link-107" class="py-name"><a title="VisionEgg.ClassWithParameters.parameters_and_defaults
+VisionEgg.Core.FixationSpot.parameters_and_defaults
+VisionEgg.Core.ProjectionBaseClass.parameters_and_defaults
+VisionEgg.Core.Screen.parameters_and_defaults
+VisionEgg.Core.Viewport.parameters_and_defaults
+VisionEgg.Daq.Buffered.parameters_and_defaults
+VisionEgg.Dots.DotArea2D.parameters_and_defaults
+VisionEgg.FlowControl.Presentation.parameters_and_defaults
+VisionEgg.Gratings.AlphaGratingCommon.parameters_and_defaults
+VisionEgg.Gratings.LuminanceGratingCommon.parameters_and_defaults
+VisionEgg.Gratings.SinGrating2D.parameters_and_defaults
+VisionEgg.Gratings.SinGrating3D.parameters_and_defaults
+VisionEgg.MoreStimuli.Arrow.parameters_and_defaults
+VisionEgg.MoreStimuli.FilledCircle.parameters_and_defaults
+VisionEgg.MoreStimuli.Rectangle3D.parameters_and_defaults
+VisionEgg.MoreStimuli.Target2D.parameters_and_defaults
+VisionEgg.PyroApps.EPhysGUI.Loop.parameters_and_defaults
+VisionEgg.SphereMap.AzElGrid.parameters_and_defaults
+VisionEgg.SphereMap.SphereGrating.parameters_and_defaults
+VisionEgg.SphereMap.SphereMap.parameters_and_defaults
+VisionEgg.SphereMap.SphereWindow.parameters_and_defaults
+VisionEgg.Text.BitmapText.parameters_and_defaults
+VisionEgg.Text.GlutTextBase.parameters_and_defaults
+VisionEgg.Text.StrokeText.parameters_and_defaults
+VisionEgg.Text.Text.parameters_and_defaults
+VisionEgg.Textures.FixationCross.parameters_and_defaults
+VisionEgg.Textures.SpinningDrum.parameters_and_defaults
+VisionEgg.Textures.TextureStimulus.parameters_and_defaults
+VisionEgg.Textures.TextureStimulus3D.parameters_and_defaults
+VisionEgg.Textures.TextureStimulusBaseClass.parameters_and_defaults
+VisionEgg.WrappedText.WrappedText.parameters_and_defaults" class="py-name" href="#" onclick="return doclink('link-107', 'parameters_and_defaults', 'link-7');">parameters_and_defaults</a></tt> <tt class="py-op">=</tt> <tt id="link-108" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-108', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-109" class="py-name" targets="Class VisionEgg.ParameterDefinition=VisionEgg.Par [...]
+<a name="L407"></a><tt class="py-lineno">407</tt>  <tt class="py-line">        <tt class="py-string">'on'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-name">True</tt><tt class="py-op">,</tt> </tt>
+<a name="L408"></a><tt class="py-lineno">408</tt>  <tt class="py-line">              <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-110" class="py-name"><a title="VisionEgg.ParameterTypes.Boolean" class="py-name" href="#" onclick="return doclink('link-110', 'Boolean', 'link-8');">Boolean</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L409"></a><tt class="py-lineno">409</tt>  <tt class="py-line">              <tt class="py-string">'draw?'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L410"></a><tt class="py-lineno">410</tt>  <tt class="py-line">        <tt class="py-string">'color'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-number">1.0</tt><tt class="py-op">,</tt><tt class="py-number">1.0</tt><tt class="py-op">,</tt><tt class="py-number">1.0</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L411"></a><tt class="py-lineno">411</tt>  <tt class="py-line">                 <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-111" class="py-name"><a title="VisionEgg.ParameterTypes.AnyOf" class="py-name" href="#" onclick="return doclink('link-111', 'AnyOf', 'link-9');">AnyOf</a></tt><tt class="py-op">(</tt><tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-112" class="py-name"><a title="VisionEgg.ParameterTypes.Sequence3" class="py-name [...]
+<a name="L412"></a><tt class="py-lineno">412</tt>  <tt class="py-line">                                <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-114" class="py-name"><a title="VisionEgg.ParameterTypes.Sequence4" class="py-name" href="#" onclick="return doclink('link-114', 'Sequence4', 'link-12');">Sequence4</a></tt><tt class="py-op">(</tt><tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-115" class="py-name"><a title="VisionEgg.ParameterTyp [...]
+<a name="L413"></a><tt class="py-lineno">413</tt>  <tt class="py-line">                 <tt class="py-string">'color'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L414"></a><tt class="py-lineno">414</tt>  <tt class="py-line">        <tt class="py-string">'anti_aliasing'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-name">True</tt><tt class="py-op">,</tt> </tt>
+<a name="L415"></a><tt class="py-lineno">415</tt>  <tt class="py-line">                         <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-116" class="py-name"><a title="VisionEgg.ParameterTypes.Boolean" class="py-name" href="#" onclick="return doclink('link-116', 'Boolean', 'link-8');">Boolean</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L416"></a><tt class="py-lineno">416</tt>  <tt class="py-line">        <tt class="py-string">'position'</tt> <tt class="py-op">:</tt> <tt class="py-op">(</tt> <tt class="py-op">(</tt> <tt class="py-number">320.0</tt><tt class="py-op">,</tt> <tt class="py-number">240.0</tt> <tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-comment"># in eye coordinates</tt> </tt>
+<a name="L417"></a><tt class="py-lineno">417</tt>  <tt class="py-line">                       <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-117" class="py-name"><a title="VisionEgg.ParameterTypes.AnyOf" class="py-name" href="#" onclick="return doclink('link-117', 'AnyOf', 'link-9');">AnyOf</a></tt><tt class="py-op">(</tt><tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-118" class="py-name"><a title="VisionEgg.ParameterTypes.Sequence2" class="p [...]
+<a name="L418"></a><tt class="py-lineno">418</tt>  <tt class="py-line">                                      <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-120" class="py-name"><a title="VisionEgg.ParameterTypes.Sequence3" class="py-name" href="#" onclick="return doclink('link-120', 'Sequence3', 'link-10');">Sequence3</a></tt><tt class="py-op">(</tt><tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-121" class="py-name"><a title="VisionEgg.Parame [...]
+<a name="L419"></a><tt class="py-lineno">419</tt>  <tt class="py-line">                                      <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-122" class="py-name"><a title="VisionEgg.ParameterTypes.Sequence4" class="py-name" href="#" onclick="return doclink('link-122', 'Sequence4', 'link-12');">Sequence4</a></tt><tt class="py-op">(</tt><tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-123" class="py-name"><a title="VisionEgg.Parame [...]
+<a name="L420"></a><tt class="py-lineno">420</tt>  <tt class="py-line">                       <tt class="py-string">'position in eye coordinates'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L421"></a><tt class="py-lineno">421</tt>  <tt class="py-line">        <tt class="py-string">'anchor'</tt> <tt class="py-op">:</tt> <tt class="py-op">(</tt><tt class="py-string">'center'</tt><tt class="py-op">,</tt> </tt>
+<a name="L422"></a><tt class="py-lineno">422</tt>  <tt class="py-line">                    <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-124" class="py-name"><a title="VisionEgg.ParameterTypes.String" class="py-name" href="#" onclick="return doclink('link-124', 'String', 'link-23');">String</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L423"></a><tt class="py-lineno">423</tt>  <tt class="py-line">                    <tt class="py-string">'how position parameter is used'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L424"></a><tt class="py-lineno">424</tt>  <tt class="py-line">        <tt class="py-string">'radius'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-number">2.0</tt><tt class="py-op">,</tt> </tt>
+<a name="L425"></a><tt class="py-lineno">425</tt>  <tt class="py-line">                  <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-125" class="py-name"><a title="VisionEgg.ParameterTypes.Real" class="py-name" href="#" onclick="return doclink('link-125', 'Real', 'link-11');">Real</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L426"></a><tt class="py-lineno">426</tt>  <tt class="py-line">                  <tt class="py-string">'radius in eye coordinates'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L427"></a><tt class="py-lineno">427</tt>  <tt class="py-line">        <tt class="py-string">'num_triangles'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-number">51</tt><tt class="py-op">,</tt> </tt>
+<a name="L428"></a><tt class="py-lineno">428</tt>  <tt class="py-line">                         <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-126" class="py-name" targets="Class VisionEgg.ParameterTypes.Integer=VisionEgg.ParameterTypes.Integer-class.html"><a title="VisionEgg.ParameterTypes.Integer" class="py-name" href="#" onclick="return doclink('link-126', 'Integer', 'link-126');">Integer</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L429"></a><tt class="py-lineno">429</tt>  <tt class="py-line">                         <tt class="py-string">'number of triangles used to draw circle'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L430"></a><tt class="py-lineno">430</tt>  <tt class="py-line">        <tt class="py-op">}</tt><tt class="py-op">)</tt> </tt>
+<a name="L431"></a><tt class="py-lineno">431</tt>  <tt class="py-line">    <tt class="py-name">__slots__</tt> <tt class="py-op">=</tt> <tt id="link-127" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-127', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-128" class="py-name"><a title="VisionEgg.Core" class="py-name" href="#" onclick="return doclink('link-128', 'Core', 'link-2');">Core</a></tt><tt class="py-op">.< [...]
+<a name="L432"></a><tt class="py-lineno">432</tt>  <tt class="py-line">        <tt class="py-string">'_gave_alpha_warning'</tt><tt class="py-op">,</tt> </tt>
+<a name="L433"></a><tt class="py-lineno">433</tt>  <tt class="py-line">        <tt class="py-op">)</tt> </tt>
+<a name="L434"></a><tt class="py-lineno">434</tt>  <tt class="py-line"> </tt>
+<a name="FilledCircle.__init__"></a><div id="FilledCircle.__init__-def"><a name="L435"></a><tt class="py-lineno">435</tt> <a class="py-toggle" href="#" id="FilledCircle.__init__-toggle" onclick="return toggle('FilledCircle.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.MoreStimuli.FilledCircle-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt><tt class="py-op">** [...]
+</div><div id="FilledCircle.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="FilledCircle.__init__-expanded"><a name="L436"></a><tt class="py-lineno">436</tt>  <tt class="py-line">        <tt id="link-130" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-130', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-131" class="py-name"><a title="VisionEgg.Core" class="py-name" href="#"  [...]
+VisionEgg.Configuration.Config.__init__
+VisionEgg.Core.FixationSpot.__init__
+VisionEgg.Core.FrameTimer.__init__
+VisionEgg.Core.ModelView.__init__
+VisionEgg.Core.OrthographicProjection.__init__
+VisionEgg.Core.OrthographicProjectionNoZClip.__init__
+VisionEgg.Core.PerspectiveProjection.__init__
+VisionEgg.Core.Projection.__init__
+VisionEgg.Core.ProjectionBaseClass.__init__
+VisionEgg.Core.Screen.__init__
+VisionEgg.Core.SimplePerspectiveProjection.__init__
+VisionEgg.Core.Stimulus.__init__
+VisionEgg.Core.Viewport.__init__
+VisionEgg.Daq.Channel.__init__
+VisionEgg.Daq.DaqMode.__init__
+VisionEgg.Daq.Device.__init__
+VisionEgg.Daq.Functionality.__init__
+VisionEgg.Daq.SignalType.__init__
+VisionEgg.DaqKeyboard.KeyboardTriggerInController.__init__
+VisionEgg.DaqLPT.LPTChannel.__init__
+VisionEgg.DaqLPT.LPTDevice.__init__
+VisionEgg.DaqLPT.LPTTriggerInController.__init__
+VisionEgg.DaqLPT.LPTTriggerOutController.__init__
+VisionEgg.Deprecated.Message.__init__
+VisionEgg.Dots.DotArea2D.__init__
+VisionEgg.FlowControl.ConstantController.__init__
+VisionEgg.FlowControl.Controller.__init__
+VisionEgg.FlowControl.EncapsulatedController.__init__
+VisionEgg.FlowControl.EvalStringController.__init__
+VisionEgg.FlowControl.ExecStringController.__init__
+VisionEgg.FlowControl.FunctionController.__init__
+VisionEgg.FlowControl.Presentation.__init__
+VisionEgg.GLTrace.Wrapper.__init__
+VisionEgg.GUI.AppWindow.__init__
+VisionEgg.GUI.GetKeypressDialog.__init__
+VisionEgg.GUI.GraphicsConfigurationWindow.__init__
+VisionEgg.GUI.InfoFrame.__init__
+VisionEgg.GUI.ProgressBar.__init__
+VisionEgg.GUI.ToplevelDialog.__init__
+VisionEgg.Gratings.SinGrating2D.__init__
+VisionEgg.Gratings.SinGrating3D.__init__
+VisionEgg.MoreStimuli.Arrow.__init__
+VisionEgg.MoreStimuli.FilledCircle.__init__
+VisionEgg.MoreStimuli.Rectangle3D.__init__
+VisionEgg.MoreStimuli.Target2D.__init__
+VisionEgg.ParameterTypes.AnyOf.__init__
+VisionEgg.ParameterTypes.Instance.__init__
+VisionEgg.ParameterTypes.Sequence.__init__
+VisionEgg.ParameterTypes.SubClass.__init__
+VisionEgg.PyroApps.AST_ext.AST_Visitor.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalMetaParameters.__init__
+VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.__init__
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.__init__
+VisionEgg.PyroApps.DropinGUI.DropinMetaParameters.__init__
+VisionEgg.PyroApps.DropinServer.DropinMetaController.__init__
+VisionEgg.PyroApps.EPhysGUI.AppWindow.__init__
+VisionEgg.PyroApps.EPhysGUI.BarButton.__init__
+VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase.__init__
+VisionEgg.PyroApps.EPhysGUI.GammaFrame.__init__
+VisionEgg.PyroApps.EPhysGUI.ImageSequenceLauncher.__init__
+VisionEgg.PyroApps.EPhysGUI.Loop.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopContainedObject.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopParamDialog.__init__
+VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.__init__
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.__init__
+VisionEgg.PyroApps.EPhysServer.EPhysServer.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingMetaParameters.__init__
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.GridGUI.GridControlFrame.__init__
+VisionEgg.PyroApps.GridGUI.GridMetaParameters.__init__
+VisionEgg.PyroApps.GridServer.GridMetaController.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetMetaParameters.__init__
+VisionEgg.PyroApps.MouseTargetServer.MousePositionController.__init__
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetOrientationController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetPositionController.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.CallbackEntry.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionParameters.__init__
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingMetaParameters.__init__
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumMetaParameters.__init__
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.__init__
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.__init__
+VisionEgg.PyroApps.TargetGUI.TargetMetaParameters.__init__
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.__init__
+VisionEgg.PyroClient.PyroClient.__init__
+VisionEgg.PyroHelpers.PyroConstantController.__init__
+VisionEgg.PyroHelpers.PyroEncapsulatedController.__init__
+VisionEgg.PyroHelpers.PyroEvalStringController.__init__
+VisionEgg.PyroHelpers.PyroExecStringController.__init__
+VisionEgg.PyroHelpers.PyroListenController.__init__
+VisionEgg.PyroHelpers.PyroLocalDictController.__init__
+VisionEgg.PyroHelpers.PyroServer.__init__
+VisionEgg.QuickTime.MovieTexture.__init__
+VisionEgg.ResponseControl.KeyboardResponseController.__init__
+VisionEgg.ResponseControl.ResponseController.__init__
+VisionEgg.SphereMap.AzElGrid.__init__
+VisionEgg.SphereMap.SphereGrating.__init__
+VisionEgg.SphereMap.SphereMap.__init__
+VisionEgg.SphereMap.SphereWindow.__init__
+VisionEgg.TCPController.SocketListenController.__init__
+VisionEgg.TCPController.TCPController.__init__
+VisionEgg.TCPController.TCPServer.__init__
+VisionEgg.Text.BitmapText.__init__
+VisionEgg.Text.GlutTextBase.__init__
+VisionEgg.Text.StrokeText.__init__
+VisionEgg.Text.Text.__init__
+VisionEgg.Textures.FixationCross.__init__
+VisionEgg.Textures.Mask2D.__init__
+VisionEgg.Textures.SpinningDrum.__init__
+VisionEgg.Textures.Texture.__init__
+VisionEgg.Textures.TextureFromFile.__init__
+VisionEgg.Textures.TextureObject.__init__
+VisionEgg.Textures.TextureStimulusBaseClass.__init__
+VisionEgg.ThreeDeeMath.TransformMatrix.__init__
+VisionEgg.WrappedText.WrappedText.__init__
+VisionEgg.qtmovie.Movie.__init__
+VisionEgg.qtmovie.Rect.__init__" class="py-name" href="#" onclick="return doclink('link-133', '__init__', 'link-31');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt><tt class="py-op">**</tt><tt class="py-name">kw</tt><tt class="py-op">)</tt> </tt>
+<a name="L437"></a><tt class="py-lineno">437</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_gave_alpha_warning</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+</div><a name="L438"></a><tt class="py-lineno">438</tt>  <tt class="py-line"> </tt>
+<a name="FilledCircle.draw"></a><div id="FilledCircle.draw-def"><a name="L439"></a><tt class="py-lineno">439</tt> <a class="py-toggle" href="#" id="FilledCircle.draw-toggle" onclick="return toggle('FilledCircle.draw');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.MoreStimuli.FilledCircle-class.html#draw">draw</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="FilledCircle.draw-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="FilledCircle.draw-expanded"><a name="L440"></a><tt class="py-lineno">440</tt>  <tt class="py-line">        <tt class="py-name">p</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt> <tt class="py-comment"># shorthand</tt> </tt>
+<a name="L441"></a><tt class="py-lineno">441</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">on</tt><tt class="py-op">:</tt> </tt>
+<a name="L442"></a><tt class="py-lineno">442</tt>  <tt class="py-line">            <tt class="py-comment"># calculate center</tt> </tt>
+<a name="L443"></a><tt class="py-lineno">443</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">center</tt> <tt class="py-op">=</tt> <tt id="link-134" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-134', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt class="py-name">_get_center</tt><tt class="py-op">(</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">position</t [...]
+<a name="L444"></a><tt class="py-lineno">444</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glDisable</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_DEPTH_TEST</tt><tt class="py-op">)</tt> </tt>
+<a name="L445"></a><tt class="py-lineno">445</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glDisable</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE_2D</tt><tt class="py-op">)</tt> </tt>
+<a name="L446"></a><tt class="py-lineno">446</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glDisable</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_BLEND</tt><tt class="py-op">)</tt> </tt>
+<a name="L447"></a><tt class="py-lineno">447</tt>  <tt class="py-line"> </tt>
+<a name="L448"></a><tt class="py-lineno">448</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">color</tt><tt class="py-op">)</tt><tt class="py-op">==</tt><tt class="py-number">3</tt><tt class="py-op">:</tt> </tt>
+<a name="L449"></a><tt class="py-lineno">449</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glColor3f</tt><tt class="py-op">(</tt><tt class="py-op">*</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">color</tt><tt class="py-op">)</tt> </tt>
+<a name="L450"></a><tt class="py-lineno">450</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">color</tt><tt class="py-op">)</tt><tt class="py-op">==</tt><tt class="py-number">4</tt><tt class="py-op">:</tt> </tt>
+<a name="L451"></a><tt class="py-lineno">451</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glColor4f</tt><tt class="py-op">(</tt><tt class="py-op">*</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">color</tt><tt class="py-op">)</tt> </tt>
+<a name="L452"></a><tt class="py-lineno">452</tt>  <tt class="py-line"> </tt>
+<a name="L453"></a><tt class="py-lineno">453</tt>  <tt class="py-line">          <tt class="py-comment"># Build filled circle from points</tt> </tt>
+<a name="L454"></a><tt class="py-lineno">454</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#           gl.glBegin(gl.GL_POINTS)</tt> </tt>
+<a name="L455"></a><tt class="py-lineno">455</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#           radius = int(math.ceil(p.radius))</tt> </tt>
+<a name="L456"></a><tt class="py-lineno">456</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#           for i in range(-radius, radius):</tt> </tt>
+<a name="L457"></a><tt class="py-lineno">457</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#               for j in range(-radius, radius):</tt> </tt>
+<a name="L458"></a><tt class="py-lineno">458</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#                   if(i * i + j * j < radius * radius):</tt> </tt>
+<a name="L459"></a><tt class="py-lineno">459</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#                       gl.glVertex3f(p.position[0] + i, p.position[1] + j, 0.0)</tt> </tt>
+<a name="L460"></a><tt class="py-lineno">460</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#           gl.glEnd() # GL_POINTS</tt> </tt>
+<a name="L461"></a><tt class="py-lineno">461</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L462"></a><tt class="py-lineno">462</tt>  <tt class="py-line">            <tt class="py-comment"># Build filled circle from triangles (this is typically faster</tt> </tt>
+<a name="L463"></a><tt class="py-lineno">463</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># then the commented code above with the points)</tt> </tt>
+<a name="L464"></a><tt class="py-lineno">464</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glBegin</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TRIANGLE_FAN</tt><tt class="py-op">)</tt> </tt>
+<a name="L465"></a><tt class="py-lineno">465</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glVertex3f</tt><tt class="py-op">(</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">position</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">position</tt><tt class="py-op">[</tt><tt clas [...]
+<a name="L466"></a><tt class="py-lineno">466</tt>  <tt class="py-line">            <tt class="py-name">angles</tt> <tt class="py-op">=</tt> <tt class="py-name">Numeric</tt><tt class="py-op">.</tt><tt class="py-name">arange</tt><tt class="py-op">(</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">num_triangles</tt><tt class="py-op">)</tt><tt class="py-op">/</tt><tt id="link-135" class="py-name" targets="Class float=float-class.html"><a title="float" class="py-name" [...]
+<a name="L467"></a><tt class="py-lineno">467</tt>  <tt class="py-line">            <tt class="py-name">verts</tt> <tt class="py-op">=</tt> <tt class="py-name">Numeric</tt><tt class="py-op">.</tt><tt class="py-name">zeros</tt><tt class="py-op">(</tt> <tt class="py-op">(</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">num_triangles</tt><tt class="py-op">,</tt><tt class="py-number">2</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">Numeric</ [...]
+<a name="L468"></a><tt class="py-lineno">468</tt>  <tt class="py-line">            <tt class="py-name">verts</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">,</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">position</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">+</tt> <tt class="py-name">p</tt><tt class="py-op"> [...]
+<a name="L469"></a><tt class="py-lineno">469</tt>  <tt class="py-line">            <tt class="py-name">verts</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">,</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">position</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-op">+</tt> <tt class="py-name">p</tt><tt class="py-op"> [...]
+<a name="L470"></a><tt class="py-lineno">470</tt>  <tt class="py-line">            <tt class="py-keyword">for</tt> <tt class="py-name">i</tt> <tt class="py-keyword">in</tt> <tt class="py-name">range</tt><tt class="py-op">(</tt><tt class="py-name">verts</tt><tt class="py-op">.</tt><tt class="py-name">shape</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L471"></a><tt class="py-lineno">471</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glVertex2fv</tt><tt class="py-op">(</tt><tt class="py-name">verts</tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L472"></a><tt class="py-lineno">472</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glVertex2fv</tt><tt class="py-op">(</tt><tt class="py-name">verts</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L473"></a><tt class="py-lineno">473</tt>  <tt class="py-line"> </tt>
+<a name="L474"></a><tt class="py-lineno">474</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glEnd</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-comment"># GL_TRIANGLE_FAN</tt> </tt>
+<a name="L475"></a><tt class="py-lineno">475</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">anti_aliasing</tt><tt class="py-op">:</tt> </tt>
+<a name="L476"></a><tt class="py-lineno">476</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_gave_alpha_warning</tt><tt class="py-op">:</tt> </tt>
+<a name="L477"></a><tt class="py-lineno">477</tt>  <tt class="py-line">                    <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">color</tt><tt class="py-op">)</tt> <tt class="py-op">></tt> <tt class="py-number">3</tt> <tt class="py-keyword">and</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">color</tt><tt class="py-op">[</tt><tt class="py-number [...]
+<a name="L478"></a><tt class="py-lineno">478</tt>  <tt class="py-line">                        <tt id="link-136" class="py-name"><a title="VisionEgg.logger" class="py-name" href="#" onclick="return doclink('link-136', 'logger', 'link-34');">logger</a></tt> <tt class="py-op">=</tt> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">getLogger</tt><tt class="py-op">(</tt><tt class="py-string">'VisionEgg.Arrow'</tt><tt class="py-op">)</tt> </tt>
+<a name="L479"></a><tt class="py-lineno">479</tt>  <tt class="py-line">                        <tt id="link-137" class="py-name"><a title="VisionEgg.logger" class="py-name" href="#" onclick="return doclink('link-137', 'logger', 'link-34');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">warning</tt><tt class="py-op">(</tt><tt class="py-string">"The parameter anti_aliasing is "</tt> </tt>
+<a name="L480"></a><tt class="py-lineno">480</tt>  <tt class="py-line">                                       <tt class="py-string">"set to true in the Arrow "</tt> </tt>
+<a name="L481"></a><tt class="py-lineno">481</tt>  <tt class="py-line">                                       <tt class="py-string">"stimulus class, but the color "</tt> </tt>
+<a name="L482"></a><tt class="py-lineno">482</tt>  <tt class="py-line">                                       <tt class="py-string">"parameter specifies an alpha "</tt> </tt>
+<a name="L483"></a><tt class="py-lineno">483</tt>  <tt class="py-line">                                       <tt class="py-string">"value other than 1.0.  To "</tt> </tt>
+<a name="L484"></a><tt class="py-lineno">484</tt>  <tt class="py-line">                                       <tt class="py-string">"acheive anti-aliasing, ensure "</tt> </tt>
+<a name="L485"></a><tt class="py-lineno">485</tt>  <tt class="py-line">                                       <tt class="py-string">"that the alpha value for the "</tt> </tt>
+<a name="L486"></a><tt class="py-lineno">486</tt>  <tt class="py-line">                                       <tt class="py-string">"color parameter is 1.0."</tt><tt class="py-op">)</tt> </tt>
+<a name="L487"></a><tt class="py-lineno">487</tt>  <tt class="py-line">                        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_gave_alpha_warning</tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L488"></a><tt class="py-lineno">488</tt>  <tt class="py-line"> </tt>
+<a name="L489"></a><tt class="py-lineno">489</tt>  <tt class="py-line">                        <tt class="py-comment"># We've already drawn a filled polygon (aliased), now redraw</tt> </tt>
+<a name="L490"></a><tt class="py-lineno">490</tt>  <tt class="py-line"><tt class="py-comment"></tt>                        <tt class="py-comment"># the outline of the polygon (with anti-aliasing). (Using</tt> </tt>
+<a name="L491"></a><tt class="py-lineno">491</tt>  <tt class="py-line"><tt class="py-comment"></tt>                        <tt class="py-comment"># GL_POLYGON_SMOOTH results in artifactual lines where</tt> </tt>
+<a name="L492"></a><tt class="py-lineno">492</tt>  <tt class="py-line"><tt class="py-comment"></tt>                        <tt class="py-comment"># triangles were joined to create quad, at least on some OpenGL</tt> </tt>
+<a name="L493"></a><tt class="py-lineno">493</tt>  <tt class="py-line"><tt class="py-comment"></tt>                        <tt class="py-comment"># implementations.)</tt> </tt>
+<a name="L494"></a><tt class="py-lineno">494</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L495"></a><tt class="py-lineno">495</tt>  <tt class="py-line">                <tt class="py-comment"># Calculate coverage value for each pixel of outline</tt> </tt>
+<a name="L496"></a><tt class="py-lineno">496</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-comment"># and store as alpha</tt> </tt>
+<a name="L497"></a><tt class="py-lineno">497</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glEnable</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_LINE_SMOOTH</tt><tt class="py-op">)</tt> </tt>
+<a name="L498"></a><tt class="py-lineno">498</tt>  <tt class="py-line">                <tt class="py-comment"># Now specify how to use the alpha value</tt> </tt>
+<a name="L499"></a><tt class="py-lineno">499</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glBlendFunc</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_SRC_ALPHA</tt><tt class="py-op">,</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_ONE_MINUS_SRC_ALPHA</tt><tt class="py-op">)</tt> </tt>
+<a name="L500"></a><tt class="py-lineno">500</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glEnable</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_BLEND</tt><tt class="py-op">)</tt> </tt>
+<a name="L501"></a><tt class="py-lineno">501</tt>  <tt class="py-line"> </tt>
+<a name="L502"></a><tt class="py-lineno">502</tt>  <tt class="py-line">                <tt class="py-comment"># Draw a second polygon in line mode, so the edges are anti-aliased</tt> </tt>
+<a name="L503"></a><tt class="py-lineno">503</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glPolygonMode</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_FRONT_AND_BACK</tt><tt class="py-op">,</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_LINE</tt><tt class="py-op">)</tt> </tt>
+<a name="L504"></a><tt class="py-lineno">504</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glBegin</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TRIANGLE_FAN</tt><tt class="py-op">)</tt> </tt>
+<a name="L505"></a><tt class="py-lineno">505</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glVertex3f</tt><tt class="py-op">(</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">position</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">position</tt><tt class="py-op">[</tt><tt  [...]
+<a name="L506"></a><tt class="py-lineno">506</tt>  <tt class="py-line">                <tt class="py-name">angles</tt> <tt class="py-op">=</tt> <tt class="py-name">Numeric</tt><tt class="py-op">.</tt><tt class="py-name">arange</tt><tt class="py-op">(</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">num_triangles</tt><tt class="py-op">)</tt><tt class="py-op">/</tt><tt id="link-138" class="py-name"><a title="float" class="py-name" href="#" onclick="return doclink(' [...]
+<a name="L507"></a><tt class="py-lineno">507</tt>  <tt class="py-line">                <tt class="py-name">verts</tt> <tt class="py-op">=</tt> <tt class="py-name">Numeric</tt><tt class="py-op">.</tt><tt class="py-name">zeros</tt><tt class="py-op">(</tt> <tt class="py-op">(</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">num_triangles</tt><tt class="py-op">,</tt><tt class="py-number">2</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">Numer [...]
+<a name="L508"></a><tt class="py-lineno">508</tt>  <tt class="py-line">                <tt class="py-name">verts</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">,</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">position</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">+</tt> <tt class="py-name">p</tt><tt class="py- [...]
+<a name="L509"></a><tt class="py-lineno">509</tt>  <tt class="py-line">                <tt class="py-name">verts</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">,</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">position</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-op">+</tt> <tt class="py-name">p</tt><tt class="py- [...]
+<a name="L510"></a><tt class="py-lineno">510</tt>  <tt class="py-line">                <tt class="py-keyword">for</tt> <tt class="py-name">i</tt> <tt class="py-keyword">in</tt> <tt class="py-name">range</tt><tt class="py-op">(</tt><tt class="py-name">verts</tt><tt class="py-op">.</tt><tt class="py-name">shape</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L511"></a><tt class="py-lineno">511</tt>  <tt class="py-line">                    <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glVertex2fv</tt><tt class="py-op">(</tt><tt class="py-name">verts</tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L512"></a><tt class="py-lineno">512</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glVertex2fv</tt><tt class="py-op">(</tt><tt class="py-name">verts</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L513"></a><tt class="py-lineno">513</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glEnd</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-comment"># GL_TRIANGLE_FAN</tt> </tt>
+<a name="L514"></a><tt class="py-lineno">514</tt>  <tt class="py-line"> </tt>
+<a name="L515"></a><tt class="py-lineno">515</tt>  <tt class="py-line">                <tt class="py-comment"># Set the polygon mode back to fill mode</tt> </tt>
+<a name="L516"></a><tt class="py-lineno">516</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glPolygonMode</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_FRONT_AND_BACK</tt><tt class="py-op">,</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_FILL</tt><tt class="py-op">)</tt> </tt>
+<a name="L517"></a><tt class="py-lineno">517</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glDisable</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_LINE_SMOOTH</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L518"></a><tt class="py-lineno">518</tt>  <tt class="py-line"> </tt><script type="text/javascript">
+<!--
+expandto(location.href);
+// -->
+</script>
+</pre>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:48 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.MoreStimuli.Arrow-class.html b/doc/reference/html/VisionEgg.MoreStimuli.Arrow-class.html
new file mode 100644
index 0000000..b6cc3e3
--- /dev/null
+++ b/doc/reference/html/VisionEgg.MoreStimuli.Arrow-class.html
@@ -0,0 +1,366 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.MoreStimuli.Arrow</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.MoreStimuli-module.html">Module MoreStimuli</a> ::
+        Class Arrow
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.MoreStimuli.Arrow-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class Arrow</h1><span class="codelink"><a href="VisionEgg.MoreStimuli-pysrc.html#Arrow">source code</a></span><br /><br />
+<pre class="base-tree">
+         object --+        
+                  |        
+<a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a> --+    
+                      |    
+          <a href="VisionEgg.Core.Stimulus-class.html">Core.Stimulus</a> --+
+                          |
+                         <strong class="uidshort">Arrow</strong>
+</pre>
+
+<hr />
+<pre class="literalblock">
+Arrow stimulus.
+
+Parameters
+==========
+anchor        -- (String)
+                 Default: center
+anti_aliasing -- (Boolean)
+                 Default: True
+color         -- (AnyOf(Sequence3 of Real or Sequence4 of Real))
+                 Default: (1.0, 1.0, 1.0)
+on            -- (Boolean)
+                 Default: True
+orientation   -- (Real)
+                 Default: 0.0
+position      -- units: eye coordinates (AnyOf(Sequence2 of Real or Sequence3 of Real or Sequence4 of Real))
+                 Default: (320.0, 240.0)
+size          -- (Sequence2 of Real)
+                 Default: (64.0, 16.0)
+
+</pre><br /><br />
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.MoreStimuli.Arrow-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">**kw</span>)</span><br />
+      Instantiate and get ready to draw.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.MoreStimuli-pysrc.html#Arrow.__init__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.MoreStimuli.Arrow-class.html#draw" class="summary-sig-name">draw</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      Draw the stimulus.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.MoreStimuli-pysrc.html#Arrow.draw">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a></code></b>:
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__getstate__">__getstate__</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__setstate__">__setstate__</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#get_specified_type">get_specified_type</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#is_constant_parameter">is_constant_parameter</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#set">set</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#verify_parameters">verify_parameters</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__delattr__</code>,
+      <code>__getattribute__</code>,
+      <code>__hash__</code>,
+      <code>__new__</code>,
+      <code>__reduce__</code>,
+      <code>__reduce_ex__</code>,
+      <code>__repr__</code>,
+      <code>__setattr__</code>,
+      <code>__str__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Class Variables</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.MoreStimuli.Arrow-class.html#parameters_and_defaults" class="summary-name">parameters_and_defaults</a> = <code title="{'on':(True, ve_types.Boolean), 'color':((1.0, 1.0, 1.0), ve_types.Any\
+Of(ve_types.Sequence3(ve_types.Real), ve_types.Sequence4(ve_types.Real\
+))), 'anti_aliasing':(True, ve_types.Boolean), 'orientation':(0.0, ve_\
+types.Real), 'position':((320.0, 240.0), ve_types.AnyOf(ve_types.Seque\
+nce2(ve_types.Real), ve_types.Sequence3(ve_types.Real), ve_types.Seque\
+nce4(ve_types.Real)), "units: eye coordinates"), 'anchor':('center', v\
+e_types.String), 'size':((64.0, 16.0), ve_types.Sequence2(ve_types.Rea\
+l)),}">{'on':(True, ve_types.Boolean), 'col<code class="variable-ellipsis">...</code></code>
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a></code></b>:
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__safe_for_unpickling__">__safe_for_unpickling__</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#constant_parameters_and_defaults">constant_parameters_and_defaults</a></code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Properties</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__class__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Method Details</span></td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">**kw</span>)</span>
+    <br /><em class="fname">(Constructor)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.MoreStimuli-pysrc.html#Arrow.__init__">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Instantiate and get ready to draw.
+
+Set parameter values and create anything needed to draw the
+stimulus including OpenGL state variables such display lists
+and texture objects.
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.Core.Stimulus-class.html#__init__">Core.Stimulus.__init__</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="draw"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">draw</span>(<span class="sig-arg">self</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.MoreStimuli-pysrc.html#Arrow.draw">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Draw the stimulus. (Called by Viewport instance.)
+
+This method is called every frame.  This method actually
+performs the OpenGL calls to draw the stimulus.
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.Core.Stimulus-class.html#draw">Core.Stimulus.draw</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== CLASS VARIABLE DETAILS ==================== -->
+<a name="section-ClassVariableDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Class Variable Details</span></td>
+</tr>
+</table>
+<a name="parameters_and_defaults"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">parameters_and_defaults</h3>
+  
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+{'on':(True, ve_types.Boolean), 'color':((1.0, 1.0, 1.0), ve_types.Any<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+Of(ve_types.Sequence3(ve_types.Real), ve_types.Sequence4(ve_types.Real<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+))), 'anti_aliasing':(True, ve_types.Boolean), 'orientation':(0.0, ve_<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+types.Real), 'position':((320.0, 240.0), ve_types.AnyOf(ve_types.Seque<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+nce2(ve_types.Real), ve_types.Sequence3(ve_types.Real), ve_types.Seque<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+nce4(ve_types.Real)), "units: eye coordinates"), 'anchor':('center', v<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+e_types.String), 'size':((64.0, 16.0), ve_types.Sequence2(ve_types.Rea<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+l)),}
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.MoreStimuli.FilledCircle-class.html b/doc/reference/html/VisionEgg.MoreStimuli.FilledCircle-class.html
new file mode 100644
index 0000000..48a7957
--- /dev/null
+++ b/doc/reference/html/VisionEgg.MoreStimuli.FilledCircle-class.html
@@ -0,0 +1,371 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.MoreStimuli.FilledCircle</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.MoreStimuli-module.html">Module MoreStimuli</a> ::
+        Class FilledCircle
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.MoreStimuli.FilledCircle-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class FilledCircle</h1><span class="codelink"><a href="VisionEgg.MoreStimuli-pysrc.html#FilledCircle">source code</a></span><br /><br />
+<pre class="base-tree">
+         object --+        
+                  |        
+<a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a> --+    
+                      |    
+          <a href="VisionEgg.Core.Stimulus-class.html">Core.Stimulus</a> --+
+                          |
+                         <strong class="uidshort">FilledCircle</strong>
+</pre>
+
+<hr />
+<pre class="literalblock">
+A circular stimulus, typically used as a fixation point.
+
+(Note, this implementation almost certainly could be made faster
+using display lists.)
+
+Parameters
+==========
+anchor        -- how position parameter is used (String)
+                 Default: center
+anti_aliasing -- (Boolean)
+                 Default: True
+color         -- color (AnyOf(Sequence3 of Real or Sequence4 of Real))
+                 Default: (1.0, 1.0, 1.0)
+num_triangles -- number of triangles used to draw circle (Integer)
+                 Default: 51
+on            -- draw? (Boolean)
+                 Default: True
+position      -- position in eye coordinates (AnyOf(Sequence2 of Real or Sequence3 of Real or Sequence4 of Real))
+                 Default: (320.0, 240.0)
+radius        -- radius in eye coordinates (Real)
+                 Default: 2.0
+
+</pre><br /><br />
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.MoreStimuli.FilledCircle-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">**kw</span>)</span><br />
+      Instantiate and get ready to draw.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.MoreStimuli-pysrc.html#FilledCircle.__init__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.MoreStimuli.FilledCircle-class.html#draw" class="summary-sig-name">draw</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      Draw the stimulus.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.MoreStimuli-pysrc.html#FilledCircle.draw">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a></code></b>:
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__getstate__">__getstate__</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__setstate__">__setstate__</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#get_specified_type">get_specified_type</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#is_constant_parameter">is_constant_parameter</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#set">set</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#verify_parameters">verify_parameters</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__delattr__</code>,
+      <code>__getattribute__</code>,
+      <code>__hash__</code>,
+      <code>__new__</code>,
+      <code>__reduce__</code>,
+      <code>__reduce_ex__</code>,
+      <code>__repr__</code>,
+      <code>__setattr__</code>,
+      <code>__str__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Class Variables</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.MoreStimuli.FilledCircle-class.html#parameters_and_defaults" class="summary-name">parameters_and_defaults</a> = <code title="VisionEgg.ParameterDefinition({'on':(True, ve_types.Boolean, 'draw?'),\
+ 'color':((1.0, 1.0, 1.0), ve_types.AnyOf(ve_types.Sequence3(ve_types.\
+Real), ve_types.Sequence4(ve_types.Real)), 'color'), 'anti_aliasing':(\
+True, ve_types.Boolean), 'position':((320.0, 240.0), ve_types.AnyOf(ve\
+_types.Sequence2(ve_types.Real), ve_types.Sequence3(ve_types.Real), ve\
+_types.Sequence4(ve_types.Real)), 'position in eye coordinates'), 'anc\
+hor':('center', ve_types.String, 'how position parameter is used'), 'r\
+adius':(2.0, ve_types.Real, 'radius in eye coordinates'), 'num_triangl\
+...">VisionEgg.ParameterDefinition({'on':<code class="variable-ellipsis">...</code></code>
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a></code></b>:
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__safe_for_unpickling__">__safe_for_unpickling__</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#constant_parameters_and_defaults">constant_parameters_and_defaults</a></code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Properties</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__class__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Method Details</span></td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">**kw</span>)</span>
+    <br /><em class="fname">(Constructor)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.MoreStimuli-pysrc.html#FilledCircle.__init__">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Instantiate and get ready to draw.
+
+Set parameter values and create anything needed to draw the
+stimulus including OpenGL state variables such display lists
+and texture objects.
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.Core.Stimulus-class.html#__init__">Core.Stimulus.__init__</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="draw"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">draw</span>(<span class="sig-arg">self</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.MoreStimuli-pysrc.html#FilledCircle.draw">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Draw the stimulus. (Called by Viewport instance.)
+
+This method is called every frame.  This method actually
+performs the OpenGL calls to draw the stimulus.
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.Core.Stimulus-class.html#draw">Core.Stimulus.draw</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== CLASS VARIABLE DETAILS ==================== -->
+<a name="section-ClassVariableDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Class Variable Details</span></td>
+</tr>
+</table>
+<a name="parameters_and_defaults"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">parameters_and_defaults</h3>
+  
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+VisionEgg.ParameterDefinition({'on':(True, ve_types.Boolean, 'draw?'),<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+ 'color':((1.0, 1.0, 1.0), ve_types.AnyOf(ve_types.Sequence3(ve_types.<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+Real), ve_types.Sequence4(ve_types.Real)), 'color'), 'anti_aliasing':(<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+True, ve_types.Boolean), 'position':((320.0, 240.0), ve_types.AnyOf(ve<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+_types.Sequence2(ve_types.Real), ve_types.Sequence3(ve_types.Real), ve<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+_types.Sequence4(ve_types.Real)), 'position in eye coordinates'), 'anc<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+hor':('center', ve_types.String, 'how position parameter is used'), 'r<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+adius':(2.0, ve_types.Real, 'radius in eye coordinates'), 'num_triangl<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+<code class="variable-ellipsis">...</code>
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.MoreStimuli.Rectangle3D-class.html b/doc/reference/html/VisionEgg.MoreStimuli.Rectangle3D-class.html
new file mode 100644
index 0000000..1c95fc6
--- /dev/null
+++ b/doc/reference/html/VisionEgg.MoreStimuli.Rectangle3D-class.html
@@ -0,0 +1,366 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.MoreStimuli.Rectangle3D</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.MoreStimuli-module.html">Module MoreStimuli</a> ::
+        Class Rectangle3D
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.MoreStimuli.Rectangle3D-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class Rectangle3D</h1><span class="codelink"><a href="VisionEgg.MoreStimuli-pysrc.html#Rectangle3D">source code</a></span><br /><br />
+<pre class="base-tree">
+         object --+        
+                  |        
+<a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a> --+    
+                      |    
+          <a href="VisionEgg.Core.Stimulus-class.html">Core.Stimulus</a> --+
+                          |
+                         <strong class="uidshort">Rectangle3D</strong>
+</pre>
+
+<hr />
+<pre class="literalblock">
+Solid color rectangle positioned explicitly by four vertices.
+
+Parameters
+==========
+color   -- (AnyOf(Sequence3 of Real or Sequence4 of Real))
+           Default: (1.0, 1.0, 1.0, 1.0)
+on      -- (Boolean)
+           Default: True
+vertex1 -- units: eye coordinates (AnyOf(Sequence3 of Real or Sequence4 of Real))
+           Default: (-10.0, 0.0, -10.0)
+vertex2 -- units: eye coordinates (AnyOf(Sequence3 of Real or Sequence4 of Real))
+           Default: (-10.0, 0.0, 10.0)
+vertex3 -- units: eye coordinates (AnyOf(Sequence3 of Real or Sequence4 of Real))
+           Default: (10.0, 0.0, 10.0)
+vertex4 -- units: eye coordinates (AnyOf(Sequence3 of Real or Sequence4 of Real))
+           Default: (10.0, 0.0, -10.0)
+
+</pre><br /><br />
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.MoreStimuli.Rectangle3D-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">**kw</span>)</span><br />
+      Instantiate and get ready to draw.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.MoreStimuli-pysrc.html#Rectangle3D.__init__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.MoreStimuli.Rectangle3D-class.html#draw" class="summary-sig-name">draw</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      Draw the stimulus.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.MoreStimuli-pysrc.html#Rectangle3D.draw">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a></code></b>:
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__getstate__">__getstate__</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__setstate__">__setstate__</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#get_specified_type">get_specified_type</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#is_constant_parameter">is_constant_parameter</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#set">set</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#verify_parameters">verify_parameters</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__delattr__</code>,
+      <code>__getattribute__</code>,
+      <code>__hash__</code>,
+      <code>__new__</code>,
+      <code>__reduce__</code>,
+      <code>__reduce_ex__</code>,
+      <code>__repr__</code>,
+      <code>__setattr__</code>,
+      <code>__str__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Class Variables</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.MoreStimuli.Rectangle3D-class.html#parameters_and_defaults" class="summary-name">parameters_and_defaults</a> = <code title="{'on':(True, ve_types.Boolean), 'color':((1.0, 1.0, 1.0, 1.0), ve_type\
+s.AnyOf(ve_types.Sequence3(ve_types.Real), ve_types.Sequence4(ve_types\
+.Real))), 'vertex1':((-10.0, 0.0,-10.0), ve_types.AnyOf(ve_types.Seque\
+nce3(ve_types.Real), ve_types.Sequence4(ve_types.Real)), "units: eye c\
+oordinates"), 'vertex2':((-10.0, 0.0, 10.0), ve_types.AnyOf(ve_types.S\
+equence3(ve_types.Real), ve_types.Sequence4(ve_types.Real)), "units: e\
+ye coordinates"), 'vertex3':((10.0, 0.0, 10.0), ve_types.AnyOf(ve_type\
+s.Sequence3(ve_types.Real), ve_types.Sequence4(ve_types.Real)), "units\
+...">{'on':(True, ve_types.Boolean), 'col<code class="variable-ellipsis">...</code></code>
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a></code></b>:
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__safe_for_unpickling__">__safe_for_unpickling__</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#constant_parameters_and_defaults">constant_parameters_and_defaults</a></code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Properties</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__class__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Method Details</span></td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">**kw</span>)</span>
+    <br /><em class="fname">(Constructor)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.MoreStimuli-pysrc.html#Rectangle3D.__init__">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Instantiate and get ready to draw.
+
+Set parameter values and create anything needed to draw the
+stimulus including OpenGL state variables such display lists
+and texture objects.
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.Core.Stimulus-class.html#__init__">Core.Stimulus.__init__</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="draw"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">draw</span>(<span class="sig-arg">self</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.MoreStimuli-pysrc.html#Rectangle3D.draw">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Draw the stimulus. (Called by Viewport instance.)
+
+This method is called every frame.  This method actually
+performs the OpenGL calls to draw the stimulus.
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.Core.Stimulus-class.html#draw">Core.Stimulus.draw</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== CLASS VARIABLE DETAILS ==================== -->
+<a name="section-ClassVariableDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Class Variable Details</span></td>
+</tr>
+</table>
+<a name="parameters_and_defaults"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">parameters_and_defaults</h3>
+  
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+{'on':(True, ve_types.Boolean), 'color':((1.0, 1.0, 1.0, 1.0), ve_type<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+s.AnyOf(ve_types.Sequence3(ve_types.Real), ve_types.Sequence4(ve_types<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+.Real))), 'vertex1':((-10.0, 0.0,-10.0), ve_types.AnyOf(ve_types.Seque<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+nce3(ve_types.Real), ve_types.Sequence4(ve_types.Real)), "units: eye c<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+oordinates"), 'vertex2':((-10.0, 0.0, 10.0), ve_types.AnyOf(ve_types.S<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+equence3(ve_types.Real), ve_types.Sequence4(ve_types.Real)), "units: e<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+ye coordinates"), 'vertex3':((10.0, 0.0, 10.0), ve_types.AnyOf(ve_type<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+s.Sequence3(ve_types.Real), ve_types.Sequence4(ve_types.Real)), "units<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+<code class="variable-ellipsis">...</code>
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.MoreStimuli.Target2D-class.html b/doc/reference/html/VisionEgg.MoreStimuli.Target2D-class.html
new file mode 100644
index 0000000..32f3096
--- /dev/null
+++ b/doc/reference/html/VisionEgg.MoreStimuli.Target2D-class.html
@@ -0,0 +1,370 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.MoreStimuli.Target2D</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.MoreStimuli-module.html">Module MoreStimuli</a> ::
+        Class Target2D
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.MoreStimuli.Target2D-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class Target2D</h1><span class="codelink"><a href="VisionEgg.MoreStimuli-pysrc.html#Target2D">source code</a></span><br /><br />
+<pre class="base-tree">
+         object --+        
+                  |        
+<a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a> --+    
+                      |    
+          <a href="VisionEgg.Core.Stimulus-class.html">Core.Stimulus</a> --+
+                          |
+                         <strong class="uidshort">Target2D</strong>
+</pre>
+
+<hr />
+<pre class="literalblock">
+Rectanglular stimulus.
+
+Parameters
+==========
+anchor        -- specifies how position parameter is interpreted (String)
+                 Default: center
+anti_aliasing -- (Boolean)
+                 Default: True
+center        -- DEPRECATED: don't use (Sequence2 of Real)
+                 Default: (determined at runtime)
+color         -- (AnyOf(Sequence3 of Real or Sequence4 of Real))
+                 Default: (1.0, 1.0, 1.0)
+on            -- draw stimulus? (Boolean) (Boolean)
+                 Default: True
+orientation   -- (Real)
+                 Default: 0.0
+position      -- units: eye coordinates (AnyOf(Sequence2 of Real or Sequence3 of Real or Sequence4 of Real))
+                 Default: (320.0, 240.0)
+size          -- units: eye coordinates (Sequence2 of Real)
+                 Default: (64.0, 16.0)
+
+</pre><br /><br />
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.MoreStimuli.Target2D-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">**kw</span>)</span><br />
+      Instantiate and get ready to draw.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.MoreStimuli-pysrc.html#Target2D.__init__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.MoreStimuli.Target2D-class.html#draw" class="summary-sig-name">draw</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      Draw the stimulus.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.MoreStimuli-pysrc.html#Target2D.draw">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a></code></b>:
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__getstate__">__getstate__</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__setstate__">__setstate__</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#get_specified_type">get_specified_type</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#is_constant_parameter">is_constant_parameter</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#set">set</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#verify_parameters">verify_parameters</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__delattr__</code>,
+      <code>__getattribute__</code>,
+      <code>__hash__</code>,
+      <code>__new__</code>,
+      <code>__reduce__</code>,
+      <code>__reduce_ex__</code>,
+      <code>__repr__</code>,
+      <code>__setattr__</code>,
+      <code>__str__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Class Variables</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.MoreStimuli.Target2D-class.html#parameters_and_defaults" class="summary-name">parameters_and_defaults</a> = <code title="{'on':(True, ve_types.Boolean, "draw stimulus? (Boolean)"), 'color':((\
+1.0, 1.0, 1.0), ve_types.AnyOf(ve_types.Sequence3(ve_types.Real), ve_t\
+ypes.Sequence4(ve_types.Real))), 'anti_aliasing':(True, ve_types.Boole\
+an), 'orientation':(0.0, ve_types.Real), 'position':((320.0, 240.0), v\
+e_types.AnyOf(ve_types.Sequence2(ve_types.Real), ve_types.Sequence3(ve\
+_types.Real), ve_types.Sequence4(ve_types.Real)), "units: eye coordina\
+tes"), 'anchor':('center', ve_types.String, "specifies how position pa\
+rameter is interpreted"), 'size':((64.0, 16.0), ve_types.Sequence2(ve_\
+...">{'on':(True, ve_types.Boolean, "draw<code class="variable-ellipsis">...</code></code>
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a></code></b>:
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__safe_for_unpickling__">__safe_for_unpickling__</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#constant_parameters_and_defaults">constant_parameters_and_defaults</a></code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Properties</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__class__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Method Details</span></td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">**kw</span>)</span>
+    <br /><em class="fname">(Constructor)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.MoreStimuli-pysrc.html#Target2D.__init__">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Instantiate and get ready to draw.
+
+Set parameter values and create anything needed to draw the
+stimulus including OpenGL state variables such display lists
+and texture objects.
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.Core.Stimulus-class.html#__init__">Core.Stimulus.__init__</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="draw"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">draw</span>(<span class="sig-arg">self</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.MoreStimuli-pysrc.html#Target2D.draw">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Draw the stimulus. (Called by Viewport instance.)
+
+This method is called every frame.  This method actually
+performs the OpenGL calls to draw the stimulus.
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.Core.Stimulus-class.html#draw">Core.Stimulus.draw</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== CLASS VARIABLE DETAILS ==================== -->
+<a name="section-ClassVariableDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Class Variable Details</span></td>
+</tr>
+</table>
+<a name="parameters_and_defaults"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">parameters_and_defaults</h3>
+  
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+{'on':(True, ve_types.Boolean, "draw stimulus? (Boolean)"), 'color':((<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+1.0, 1.0, 1.0), ve_types.AnyOf(ve_types.Sequence3(ve_types.Real), ve_t<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+ypes.Sequence4(ve_types.Real))), 'anti_aliasing':(True, ve_types.Boole<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+an), 'orientation':(0.0, ve_types.Real), 'position':((320.0, 240.0), v<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+e_types.AnyOf(ve_types.Sequence2(ve_types.Real), ve_types.Sequence3(ve<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+_types.Real), ve_types.Sequence4(ve_types.Real)), "units: eye coordina<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+tes"), 'anchor':('center', ve_types.String, "specifies how position pa<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+rameter is interpreted"), 'size':((64.0, 16.0), ve_types.Sequence2(ve_<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+<code class="variable-ellipsis">...</code>
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.ParameterDefinition-class.html b/doc/reference/html/VisionEgg.ParameterDefinition-class.html
new file mode 100644
index 0000000..502129b
--- /dev/null
+++ b/doc/reference/html/VisionEgg.ParameterDefinition-class.html
@@ -0,0 +1,221 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.ParameterDefinition</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        Class ParameterDefinition
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.ParameterDefinition-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class ParameterDefinition</h1><span class="codelink"><a href="VisionEgg-pysrc.html#ParameterDefinition">source code</a></span><br /><br />
+<pre class="base-tree">
+object --+    
+         |    
+      dict --+
+             |
+            <strong class="uidshort">ParameterDefinition</strong>
+</pre>
+
+<hr />
+<pre class="literalblock">
+Define parameters used in ClassWithParameters
+    
+
+</pre><br /><br />
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>dict</code></b>:
+      <code>__cmp__</code>,
+      <code>__contains__</code>,
+      <code>__delitem__</code>,
+      <code>__eq__</code>,
+      <code>__ge__</code>,
+      <code>__getattribute__</code>,
+      <code>__getitem__</code>,
+      <code>__gt__</code>,
+      <code>__hash__</code>,
+      <code>__init__</code>,
+      <code>__iter__</code>,
+      <code>__le__</code>,
+      <code>__len__</code>,
+      <code>__lt__</code>,
+      <code>__ne__</code>,
+      <code>__new__</code>,
+      <code>__repr__</code>,
+      <code>__setitem__</code>,
+      <code>clear</code>,
+      <code>copy</code>,
+      <code>fromkeys</code>,
+      <code>get</code>,
+      <code>has_key</code>,
+      <code>items</code>,
+      <code>iteritems</code>,
+      <code>iterkeys</code>,
+      <code>itervalues</code>,
+      <code>keys</code>,
+      <code>pop</code>,
+      <code>popitem</code>,
+      <code>setdefault</code>,
+      <code>update</code>,
+      <code>values</code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__delattr__</code>,
+      <code>__reduce__</code>,
+      <code>__reduce_ex__</code>,
+      <code>__setattr__</code>,
+      <code>__str__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Class Variables</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="DEPRECATED"></a><span class="summary-name">DEPRECATED</span> = <code title="1">1</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="OPENGL_ENUM"></a><span class="summary-name">OPENGL_ENUM</span> = <code title="2">2</code>
+    </td>
+  </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Properties</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__class__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.ParameterTypes-module.html b/doc/reference/html/VisionEgg.ParameterTypes-module.html
new file mode 100644
index 0000000..0b82b87
--- /dev/null
+++ b/doc/reference/html/VisionEgg.ParameterTypes-module.html
@@ -0,0 +1,421 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.ParameterTypes</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        Module ParameterTypes
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.ParameterTypes-module.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== MODULE DESCRIPTION ==================== -->
+<h1 class="epydoc">Module ParameterTypes</h1><span class="codelink"><a href="VisionEgg.ParameterTypes-pysrc.html">source code</a></span><br /><br />
+<pre class="literalblock">
+
+Type checking for the Vision Egg.
+
+</pre><br /><br />
+
+<!-- ==================== CLASSES ==================== -->
+<a name="section-Classes"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Classes</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.ParameterTypes.ParameterTypeDef-class.html" class="summary-name">ParameterTypeDef</a><br />
+      Base class for all parameter type definitions
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.ParameterTypes.AnyOf-class.html" class="summary-name">AnyOf</a>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.ParameterTypes.NoneMC-class.html" class="summary-name">NoneMC</a><br />
+      metaclass for NoneType
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.ParameterTypes.NoneType-class.html" class="summary-name">NoneType</a>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.ParameterTypes.BooleanMC-class.html" class="summary-name">BooleanMC</a><br />
+      metaclass for Boolean
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.ParameterTypes.Boolean-class.html" class="summary-name">Boolean</a>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.ParameterTypes.CallableMC-class.html" class="summary-name">CallableMC</a><br />
+      metaclass for Callable
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.ParameterTypes.Callable-class.html" class="summary-name">Callable</a>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.ParameterTypes.AnyClassMC-class.html" class="summary-name">AnyClassMC</a><br />
+      metaclass for AnyClass
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.ParameterTypes.AnyClass-class.html" class="summary-name">AnyClass</a><br />
+      parameter is a class
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.ParameterTypes.SubClass-class.html" class="summary-name">SubClass</a><br />
+      parameter is derived from base_class
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.ParameterTypes.Instance-class.html" class="summary-name">Instance</a><br />
+      parameter is an instance of class_type
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.ParameterTypes.IntegerMC-class.html" class="summary-name">IntegerMC</a><br />
+      metaclass for Integer
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.ParameterTypes.Integer-class.html" class="summary-name">Integer</a>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.ParameterTypes.UnsignedIntegerMC-class.html" class="summary-name">UnsignedIntegerMC</a><br />
+      metaclass for UnsignedInteger
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.ParameterTypes.UnsignedInteger-class.html" class="summary-name">UnsignedInteger</a>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.ParameterTypes.RealMC-class.html" class="summary-name">RealMC</a><br />
+      metaclass for Real
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.ParameterTypes.Real-class.html" class="summary-name">Real</a>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.ParameterTypes.Sequence-class.html" class="summary-name">Sequence</a><br />
+      A tuple, list or Numeric array
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.ParameterTypes.Sequence2-class.html" class="summary-name">Sequence2</a>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.ParameterTypes.Sequence3-class.html" class="summary-name">Sequence3</a>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.ParameterTypes.Sequence4-class.html" class="summary-name">Sequence4</a>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.ParameterTypes.Sequence4x4-class.html" class="summary-name">Sequence4x4</a>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.ParameterTypes.StringMC-class.html" class="summary-name">StringMC</a><br />
+      metaclass for String
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.ParameterTypes.String-class.html" class="summary-name">String</a>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.ParameterTypes.UnicodeMC-class.html" class="summary-name">UnicodeMC</a><br />
+      metaclass for Unicode
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.ParameterTypes.Unicode-class.html" class="summary-name">Unicode</a>
+    </td>
+  </tr>
+</table>
+<!-- ==================== FUNCTIONS ==================== -->
+<a name="section-Functions"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Functions</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="get_all_classes_list"></a><span class="summary-sig-name">get_all_classes_list</span>(<span class="summary-sig-arg">klass</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.ParameterTypes-pysrc.html#get_all_classes_list">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="is_parameter_type_def"></a><span class="summary-sig-name">is_parameter_type_def</span>(<span class="summary-sig-arg">item_type</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.ParameterTypes-pysrc.html#is_parameter_type_def">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="get_type"></a><span class="summary-sig-name">get_type</span>(<span class="summary-sig-arg">value</span>)</span><br />
+      Take a value and return best guess of ParameterTypeDef it is.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.ParameterTypes-pysrc.html#get_type">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="assert_type"></a><span class="summary-sig-name">assert_type</span>(<span class="summary-sig-arg">check_type</span>,
+        <span class="summary-sig-arg">require_type</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.ParameterTypes-pysrc.html#assert_type">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+</table>
+<!-- ==================== VARIABLES ==================== -->
+<a name="section-Variables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Variables</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="array_types"></a><span class="summary-name">array_types</span> = <code title="[numpy.ndarray]">[numpy.ndarray]</code>
+    </td>
+  </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.ParameterTypes-pysrc.html b/doc/reference/html/VisionEgg.ParameterTypes-pysrc.html
new file mode 100644
index 0000000..2306678
--- /dev/null
+++ b/doc/reference/html/VisionEgg.ParameterTypes-pysrc.html
@@ -0,0 +1,1033 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.ParameterTypes</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        Module ParameterTypes
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.ParameterTypes-pysrc.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<h1 class="epydoc">Source Code for <a href="VisionEgg.ParameterTypes-module.html">Module VisionEgg.ParameterTypes</a></h1>
+<pre class="py-src">
+<a name="L1"></a><tt class="py-lineno">  1</tt>  <tt class="py-line"><tt class="py-comment"># The Vision Egg: ParameterTypes</tt> </tt>
+<a name="L2"></a><tt class="py-lineno">  2</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L3"></a><tt class="py-lineno">  3</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Copyright (C) 2001-2003 Andrew Straw</tt> </tt>
+<a name="L4"></a><tt class="py-lineno">  4</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Copyright (C) 2005,2008 California Insitute of Technology</tt> </tt>
+<a name="L5"></a><tt class="py-lineno">  5</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L6"></a><tt class="py-lineno">  6</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># URL: <http://www.visionegg.org/></tt> </tt>
+<a name="L7"></a><tt class="py-lineno">  7</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L8"></a><tt class="py-lineno">  8</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Distributed under the terms of the GNU Lesser General Public License</tt> </tt>
+<a name="L9"></a><tt class="py-lineno">  9</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># (LGPL). See LICENSE.TXT that came with this file.</tt> </tt>
+<a name="L10"></a><tt class="py-lineno"> 10</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L11"></a><tt class="py-lineno"> 11</tt>  <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L12"></a><tt class="py-lineno"> 12</tt>  <tt class="py-line"><tt class="py-docstring">Type checking for the Vision Egg.</tt> </tt>
+<a name="L13"></a><tt class="py-lineno"> 13</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L14"></a><tt class="py-lineno"> 14</tt>  <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L15"></a><tt class="py-lineno"> 15</tt>  <tt class="py-line"> </tt>
+<a name="L16"></a><tt class="py-lineno"> 16</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-0" class="py-name" targets="Package VisionEgg=VisionEgg-module.html"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-0', 'VisionEgg', 'link-0');">VisionEgg</a></tt> </tt>
+<a name="L17"></a><tt class="py-lineno"> 17</tt>  <tt class="py-line"> </tt>
+<a name="L18"></a><tt class="py-lineno"> 18</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">types</tt><tt class="py-op">,</tt> <tt class="py-name">warnings</tt> </tt>
+<a name="L19"></a><tt class="py-lineno"> 19</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">numpy</tt> </tt>
+<a name="L20"></a><tt class="py-lineno"> 20</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">numpy</tt><tt class="py-op">.</tt><tt class="py-name">oldnumeric</tt> <tt class="py-keyword">as</tt> <tt class="py-name">numpyNumeric</tt> </tt>
+<a name="L21"></a><tt class="py-lineno"> 21</tt>  <tt class="py-line"> </tt>
+<a name="L22"></a><tt class="py-lineno"> 22</tt>  <tt class="py-line"><tt id="link-1" class="py-name" targets="Variable VisionEgg.ParameterTypes.array_types=VisionEgg.ParameterTypes-module.html#array_types,Variable VisionEgg.Textures.array_types=VisionEgg.Textures-module.html#array_types"><a title="VisionEgg.ParameterTypes.array_types
+VisionEgg.Textures.array_types" class="py-name" href="#" onclick="return doclink('link-1', 'array_types', 'link-1');">array_types</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">numpy</tt><tt class="py-op">.</tt><tt class="py-name">ndarray</tt><tt class="py-op">]</tt> </tt>
+<a name="L23"></a><tt class="py-lineno"> 23</tt>  <tt class="py-line"><tt class="py-comment"># Allow use of numarray and original Numeric Texture data without requiring either</tt> </tt>
+<a name="L24"></a><tt class="py-lineno"> 24</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L25"></a><tt class="py-lineno"> 25</tt>  <tt class="py-line">    <tt class="py-keyword">import</tt> <tt class="py-name">numarray</tt> </tt>
+<a name="L26"></a><tt class="py-lineno"> 26</tt>  <tt class="py-line">    <tt id="link-2" class="py-name"><a title="VisionEgg.ParameterTypes.array_types
+VisionEgg.Textures.array_types" class="py-name" href="#" onclick="return doclink('link-2', 'array_types', 'link-1');">array_types</a></tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt> <tt class="py-name">numarray</tt><tt class="py-op">.</tt><tt class="py-name">numarraycore</tt><tt class="py-op">.</tt><tt class="py-name">NumArray</tt> <tt class="py-op">)</tt> </tt>
+<a name="L27"></a><tt class="py-lineno"> 27</tt>  <tt class="py-line"><tt class="py-keyword">except</tt> <tt class="py-name">ImportError</tt><tt class="py-op">:</tt> </tt>
+<a name="L28"></a><tt class="py-lineno"> 28</tt>  <tt class="py-line">    <tt class="py-keyword">pass</tt> </tt>
+<a name="L29"></a><tt class="py-lineno"> 29</tt>  <tt class="py-line"><tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L30"></a><tt class="py-lineno"> 30</tt>  <tt class="py-line">    <tt class="py-keyword">import</tt> <tt class="py-name">Numeric</tt> <tt class="py-keyword">as</tt> <tt class="py-name">orig_Numeric</tt> </tt>
+<a name="L31"></a><tt class="py-lineno"> 31</tt>  <tt class="py-line">    <tt id="link-3" class="py-name"><a title="VisionEgg.ParameterTypes.array_types
+VisionEgg.Textures.array_types" class="py-name" href="#" onclick="return doclink('link-3', 'array_types', 'link-1');">array_types</a></tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt> <tt class="py-name">orig_Numeric</tt><tt class="py-op">.</tt><tt class="py-name">ArrayType</tt> <tt class="py-op">)</tt> </tt>
+<a name="L32"></a><tt class="py-lineno"> 32</tt>  <tt class="py-line"><tt class="py-keyword">except</tt> <tt class="py-name">ImportError</tt><tt class="py-op">:</tt> </tt>
+<a name="L33"></a><tt class="py-lineno"> 33</tt>  <tt class="py-line">    <tt class="py-keyword">pass</tt> </tt>
+<a name="L34"></a><tt class="py-lineno"> 34</tt>  <tt class="py-line"> </tt>
+<a name="ParameterTypeDef"></a><div id="ParameterTypeDef-def"><a name="L35"></a><tt class="py-lineno"> 35</tt> <a class="py-toggle" href="#" id="ParameterTypeDef-toggle" onclick="return toggle('ParameterTypeDef');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.ParameterTypes.ParameterTypeDef-class.html">ParameterTypeDef</a><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ParameterTypeDef-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="ParameterTypeDef-expanded"><a name="L36"></a><tt class="py-lineno"> 36</tt>  <tt class="py-line">    <tt class="py-docstring">"""Base class for all parameter type definitions"""</tt> </tt>
+<a name="ParameterTypeDef.verify"></a><div id="ParameterTypeDef.verify-def"><a name="L37"></a><tt class="py-lineno"> 37</tt> <a class="py-toggle" href="#" id="ParameterTypeDef.verify-toggle" onclick="return toggle('ParameterTypeDef.verify');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.ParameterTypes.ParameterTypeDef-class.html#verify">verify</a><tt class="py-op">(</tt><tt class="py-param">value</tt><tt class="py-op">)</tt><tt class [...]
+</div><div id="ParameterTypeDef.verify-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ParameterTypeDef.verify-expanded"><a name="L38"></a><tt class="py-lineno"> 38</tt>  <tt class="py-line">        <tt class="py-comment"># override this method with type-checking code</tt> </tt>
+<a name="L39"></a><tt class="py-lineno"> 39</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">raise</tt> <tt class="py-name">RuntimeError</tt><tt class="py-op">(</tt><tt class="py-string">'must override base class method verify'</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L40"></a><tt class="py-lineno"> 40</tt>  <tt class="py-line">    <tt id="link-4" class="py-name" targets="Static Method VisionEgg.ParameterTypes.AnyClass.verify()=VisionEgg.ParameterTypes.AnyClass-class.html#verify,Method VisionEgg.ParameterTypes.AnyOf.verify()=VisionEgg.ParameterTypes.AnyOf-class.html#verify,Static Method VisionEgg.ParameterTypes.Boolean.verify()=VisionEgg.ParameterTypes.Boolean-class.html#verify,Static Method VisionEgg.ParameterTypes.Callable.verify()=Vi [...]
+VisionEgg.ParameterTypes.AnyOf.verify
+VisionEgg.ParameterTypes.Boolean.verify
+VisionEgg.ParameterTypes.Callable.verify
+VisionEgg.ParameterTypes.Instance.verify
+VisionEgg.ParameterTypes.Integer.verify
+VisionEgg.ParameterTypes.NoneType.verify
+VisionEgg.ParameterTypes.ParameterTypeDef.verify
+VisionEgg.ParameterTypes.Real.verify
+VisionEgg.ParameterTypes.Sequence.verify
+VisionEgg.ParameterTypes.Sequence2.verify
+VisionEgg.ParameterTypes.Sequence3.verify
+VisionEgg.ParameterTypes.Sequence4.verify
+VisionEgg.ParameterTypes.Sequence4x4.verify
+VisionEgg.ParameterTypes.String.verify
+VisionEgg.ParameterTypes.SubClass.verify
+VisionEgg.ParameterTypes.Unicode.verify
+VisionEgg.ParameterTypes.UnsignedInteger.verify" class="py-name" href="#" onclick="return doclink('link-4', 'verify', 'link-4');">verify</a></tt> <tt class="py-op">=</tt> <tt class="py-name">staticmethod</tt><tt class="py-op">(</tt><tt id="link-5" class="py-name"><a title="VisionEgg.ParameterTypes.AnyClass.verify
+VisionEgg.ParameterTypes.AnyOf.verify
+VisionEgg.ParameterTypes.Boolean.verify
+VisionEgg.ParameterTypes.Callable.verify
+VisionEgg.ParameterTypes.Instance.verify
+VisionEgg.ParameterTypes.Integer.verify
+VisionEgg.ParameterTypes.NoneType.verify
+VisionEgg.ParameterTypes.ParameterTypeDef.verify
+VisionEgg.ParameterTypes.Real.verify
+VisionEgg.ParameterTypes.Sequence.verify
+VisionEgg.ParameterTypes.Sequence2.verify
+VisionEgg.ParameterTypes.Sequence3.verify
+VisionEgg.ParameterTypes.Sequence4.verify
+VisionEgg.ParameterTypes.Sequence4x4.verify
+VisionEgg.ParameterTypes.String.verify
+VisionEgg.ParameterTypes.SubClass.verify
+VisionEgg.ParameterTypes.Unicode.verify
+VisionEgg.ParameterTypes.UnsignedInteger.verify" class="py-name" href="#" onclick="return doclink('link-5', 'verify', 'link-4');">verify</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L41"></a><tt class="py-lineno"> 41</tt>  <tt class="py-line"> </tt>
+<a name="get_all_classes_list"></a><div id="get_all_classes_list-def"><a name="L42"></a><tt class="py-lineno"> 42</tt> <a class="py-toggle" href="#" id="get_all_classes_list-toggle" onclick="return toggle('get_all_classes_list');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.ParameterTypes-module.html#get_all_classes_list">get_all_classes_list</a><tt class="py-op">(</tt><tt class="py-param">klass</tt><tt class="py-op">)</tt><tt class="py [...]
+</div><div id="get_all_classes_list-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="get_all_classes_list-expanded"><a name="L43"></a><tt class="py-lineno"> 43</tt>  <tt class="py-line">    <tt class="py-comment">#assert(type(klass) == types.ClassType)</tt> </tt>
+<a name="L44"></a><tt class="py-lineno"> 44</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">klass</tt><tt class="py-op">]</tt> </tt>
+<a name="L45"></a><tt class="py-lineno"> 45</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">base_klass</tt> <tt class="py-keyword">in</tt> <tt class="py-name">klass</tt><tt class="py-op">.</tt><tt class="py-name">__bases__</tt><tt class="py-op">:</tt> </tt>
+<a name="L46"></a><tt class="py-lineno"> 46</tt>  <tt class="py-line">        <tt class="py-name">result</tt><tt class="py-op">.</tt><tt class="py-name">extend</tt><tt class="py-op">(</tt><tt id="link-6" class="py-name" targets="Function VisionEgg.ParameterTypes.get_all_classes_list()=VisionEgg.ParameterTypes-module.html#get_all_classes_list"><a title="VisionEgg.ParameterTypes.get_all_classes_list" class="py-name" href="#" onclick="return doclink('link-6', 'get_all_classes_list', 'link-6 [...]
+<a name="L47"></a><tt class="py-lineno"> 47</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">result</tt> </tt>
+</div><a name="L48"></a><tt class="py-lineno"> 48</tt>  <tt class="py-line"> </tt>
+<a name="is_parameter_type_def"></a><div id="is_parameter_type_def-def"><a name="L49"></a><tt class="py-lineno"> 49</tt> <a class="py-toggle" href="#" id="is_parameter_type_def-toggle" onclick="return toggle('is_parameter_type_def');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.ParameterTypes-module.html#is_parameter_type_def">is_parameter_type_def</a><tt class="py-op">(</tt><tt class="py-param">item_type</tt><tt class="py-op">)</tt><tt [...]
+</div><div id="is_parameter_type_def-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="is_parameter_type_def-expanded"><a name="L50"></a><tt class="py-lineno"> 50</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">item_type</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-name">types</tt><tt class="py-op">.</tt><tt class="py-name">ClassType</tt><tt class="py-op">:< [...]
+<a name="L51"></a><tt class="py-lineno"> 51</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt id="link-7" class="py-name" targets="Class VisionEgg.ParameterTypes.Sequence=VisionEgg.ParameterTypes.Sequence-class.html"><a title="VisionEgg.ParameterTypes.Sequence" class="py-name" href="#" onclick="return doclink('link-7', 'Sequence', 'link-7');">Sequence</a></tt> <tt class="py-keyword">in</tt> <tt id="link-8" class="py-name"><a title="VisionEgg.ParameterTypes.get_all_clas [...]
+<a name="L52"></a><tt class="py-lineno"> 52</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">TypeError</tt><tt class="py-op">(</tt><tt class="py-string">"Sequence definition must be an instance (with a contained type)."</tt><tt class="py-op">)</tt> </tt>
+<a name="L53"></a><tt class="py-lineno"> 53</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L54"></a><tt class="py-lineno"> 54</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt id="link-9" class="py-name" targets="Class VisionEgg.ParameterTypes.ParameterTypeDef=VisionEgg.ParameterTypes.ParameterTypeDef-class.html"><a title="VisionEgg.ParameterTypes.ParameterTypeDef" class="py-name" href="#" onclick="return doclink('link-9', 'ParameterTypeDef', 'link-9');">ParameterTypeDef</a></tt> <tt class="py-keyword">in</tt> <tt id="link-10" class="py-name [...]
+<a name="L55"></a><tt class="py-lineno"> 55</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">item_type</tt><tt class="py-op">,</tt><tt id="link-11" class="py-name"><a title="VisionEgg.ParameterTypes.ParameterTypeDef" class="py-name" href="#" onclick="return doclink('link-11', 'ParameterTypeDef', 'link-9');">ParameterTypeDef</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L56"></a><tt class="py-lineno"> 56</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">True</tt> </tt>
+<a name="L57"></a><tt class="py-lineno"> 57</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt class="py-name">issubclass</tt><tt class="py-op">(</tt><tt class="py-name">item_type</tt><tt class="py-op">,</tt><tt id="link-12" class="py-name"><a title="VisionEgg.ParameterTypes.ParameterTypeDef" class="py-name" href="#" onclick="return doclink('link-12', 'ParameterTypeDef', 'link-9');">ParameterTypeDef</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> <tt class="py-co [...]
+<a name="L58"></a><tt class="py-lineno"> 58</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">True</tt> </tt>
+<a name="L59"></a><tt class="py-lineno"> 59</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt class="py-name">item_type</tt> <tt class="py-op">==</tt> <tt class="py-name">types</tt><tt class="py-op">.</tt><tt id="link-13" class="py-name" targets="Class VisionEgg.ParameterTypes.NoneType=VisionEgg.ParameterTypes.NoneType-class.html"><a title="VisionEgg.ParameterTypes.NoneType" class="py-name" href="#" onclick="return doclink('link-13', 'NoneType', 'link-13');">NoneType</a> [...]
+<a name="L60"></a><tt class="py-lineno"> 60</tt>  <tt class="py-line">        <tt class="py-name">warnings</tt><tt class="py-op">.</tt><tt class="py-name">warn</tt><tt class="py-op">(</tt><tt class="py-string">"types.NoneType will stop being a supported type "</tt><tt class="py-op">+</tt>\ </tt>
+<a name="L61"></a><tt class="py-lineno"> 61</tt>  <tt class="py-line">                      <tt class="py-string">"argument.  Please call "</tt><tt class="py-op">+</tt>\ </tt>
+<a name="L62"></a><tt class="py-lineno"> 62</tt>  <tt class="py-line">                      <tt class="py-string">"VisionEgg.ParameterTypes.get_type(None) to get the "</tt><tt class="py-op">+</tt>\ </tt>
+<a name="L63"></a><tt class="py-lineno"> 63</tt>  <tt class="py-line">                      <tt class="py-string">"supported value"</tt><tt class="py-op">,</tt><tt class="py-name">DeprecationWarning</tt><tt class="py-op">,</tt><tt class="py-name">stacklevel</tt><tt class="py-op">=</tt><tt class="py-number">2</tt><tt class="py-op">)</tt> </tt>
+<a name="L64"></a><tt class="py-lineno"> 64</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">True</tt> </tt>
+<a name="L65"></a><tt class="py-lineno"> 65</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L66"></a><tt class="py-lineno"> 66</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">False</tt> </tt>
+</div><a name="L67"></a><tt class="py-lineno"> 67</tt>  <tt class="py-line"> </tt>
+<a name="AnyOf"></a><div id="AnyOf-def"><a name="L68"></a><tt class="py-lineno"> 68</tt> <a class="py-toggle" href="#" id="AnyOf-toggle" onclick="return toggle('AnyOf');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.ParameterTypes.AnyOf-class.html">AnyOf</a><tt class="py-op">(</tt><tt class="py-base-class">ParameterTypeDef</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="AnyOf-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="AnyOf-expanded"><a name="AnyOf.__init__"></a><div id="AnyOf.__init__-def"><a name="L69"></a><tt class="py-lineno"> 69</tt> <a class="py-toggle" href="#" id="AnyOf.__init__-toggle" onclick="return toggle('AnyOf.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.ParameterTypes.AnyOf-class.html#__init__">__init__</a><tt class="py-op">(</t [...]
+</div><div id="AnyOf.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="AnyOf.__init__-expanded"><a name="L70"></a><tt class="py-lineno"> 70</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">item_type</tt> <tt class="py-keyword">in</tt> <tt class="py-name">item_types</tt><tt class="py-op">:</tt> </tt>
+<a name="L71"></a><tt class="py-lineno"> 71</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt id="link-14" class="py-name" targets="Function VisionEgg.ParameterTypes.is_parameter_type_def()=VisionEgg.ParameterTypes-module.html#is_parameter_type_def"><a title="VisionEgg.ParameterTypes.is_parameter_type_def" class="py-name" href="#" onclick="return doclink('link-14', 'is_parameter_type_def', 'link-14');">is_parameter_type_def</a></tt>< [...]
+<a name="L72"></a><tt class="py-lineno"> 72</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> <tt class="py-name">TypeError</tt><tt class="py-op">(</tt><tt class="py-string">"%s is not a valid type definition"</tt><tt class="py-op">)</tt> </tt>
+<a name="L73"></a><tt class="py-lineno"> 73</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">item_types</tt> <tt class="py-op">=</tt> <tt class="py-name">item_types</tt> </tt>
+</div><a name="AnyOf.__str__"></a><div id="AnyOf.__str__-def"><a name="L74"></a><tt class="py-lineno"> 74</tt> <a class="py-toggle" href="#" id="AnyOf.__str__-toggle" onclick="return toggle('AnyOf.__str__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.ParameterTypes.AnyOf-class.html#__str__">__str__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="AnyOf.__str__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="AnyOf.__str__-expanded"><a name="L75"></a><tt class="py-lineno"> 75</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-string">'AnyOf(%s)'</tt><tt class="py-op">%</tt><tt class="py-op">(</tt><tt class="py-string">' or '</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">map</tt><tt class="py-op">(</tt><t [...]
+</div><a name="AnyOf.verify"></a><div id="AnyOf.verify-def"><a name="L76"></a><tt class="py-lineno"> 76</tt> <a class="py-toggle" href="#" id="AnyOf.verify-toggle" onclick="return toggle('AnyOf.verify');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.ParameterTypes.AnyOf-class.html#verify">verify</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt><tt class="py-param">is_any_of</tt><tt class="py-op">)</tt> [...]
+</div><div id="AnyOf.verify-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="AnyOf.verify-expanded"><a name="L77"></a><tt class="py-lineno"> 77</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">item_type</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">item_types</tt><tt class="py-op">:</tt> </tt>
+<a name="L78"></a><tt class="py-lineno"> 78</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">item_type</tt><tt class="py-op">.</tt><tt id="link-15" class="py-name"><a title="VisionEgg.ParameterTypes.AnyClass.verify
+VisionEgg.ParameterTypes.AnyOf.verify
+VisionEgg.ParameterTypes.Boolean.verify
+VisionEgg.ParameterTypes.Callable.verify
+VisionEgg.ParameterTypes.Instance.verify
+VisionEgg.ParameterTypes.Integer.verify
+VisionEgg.ParameterTypes.NoneType.verify
+VisionEgg.ParameterTypes.ParameterTypeDef.verify
+VisionEgg.ParameterTypes.Real.verify
+VisionEgg.ParameterTypes.Sequence.verify
+VisionEgg.ParameterTypes.Sequence2.verify
+VisionEgg.ParameterTypes.Sequence3.verify
+VisionEgg.ParameterTypes.Sequence4.verify
+VisionEgg.ParameterTypes.Sequence4x4.verify
+VisionEgg.ParameterTypes.String.verify
+VisionEgg.ParameterTypes.SubClass.verify
+VisionEgg.ParameterTypes.Unicode.verify
+VisionEgg.ParameterTypes.UnsignedInteger.verify" class="py-name" href="#" onclick="return doclink('link-15', 'verify', 'link-4');">verify</a></tt><tt class="py-op">(</tt><tt class="py-name">is_any_of</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L79"></a><tt class="py-lineno"> 79</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-name">True</tt> </tt>
+<a name="L80"></a><tt class="py-lineno"> 80</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">False</tt> </tt>
+</div><a name="AnyOf.get_item_types"></a><div id="AnyOf.get_item_types-def"><a name="L81"></a><tt class="py-lineno"> 81</tt> <a class="py-toggle" href="#" id="AnyOf.get_item_types-toggle" onclick="return toggle('AnyOf.get_item_types');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.ParameterTypes.AnyOf-class.html#get_item_types">get_item_types</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class=" [...]
+</div><div id="AnyOf.get_item_types-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="AnyOf.get_item_types-expanded"><a name="L82"></a><tt class="py-lineno"> 82</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">item_types</tt> </tt>
+</div></div><a name="L83"></a><tt class="py-lineno"> 83</tt>  <tt class="py-line"> </tt>
+<a name="NoneMC"></a><div id="NoneMC-def"><a name="L84"></a><tt class="py-lineno"> 84</tt> <a class="py-toggle" href="#" id="NoneMC-toggle" onclick="return toggle('NoneMC');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.ParameterTypes.NoneMC-class.html">NoneMC</a><tt class="py-op">(</tt><tt class="py-base-class">type</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NoneMC-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="NoneMC-expanded"><a name="L85"></a><tt class="py-lineno"> 85</tt>  <tt class="py-line">    <tt class="py-docstring">"""metaclass for NoneType"""</tt> </tt>
+<a name="NoneMC.__str__"></a><div id="NoneMC.__str__-def"><a name="L86"></a><tt class="py-lineno"> 86</tt> <a class="py-toggle" href="#" id="NoneMC.__str__-toggle" onclick="return toggle('NoneMC.__str__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.ParameterTypes.NoneMC-class.html#__str__">__str__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NoneMC.__str__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NoneMC.__str__-expanded"><a name="L87"></a><tt class="py-lineno"> 87</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-string">'None'</tt> </tt>
+</div></div><a name="L88"></a><tt class="py-lineno"> 88</tt>  <tt class="py-line"> </tt>
+<a name="NoneType"></a><div id="NoneType-def"><a name="L89"></a><tt class="py-lineno"> 89</tt> <a class="py-toggle" href="#" id="NoneType-toggle" onclick="return toggle('NoneType');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.ParameterTypes.NoneType-class.html">NoneType</a><tt class="py-op">(</tt><tt class="py-base-class">ParameterTypeDef</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NoneType-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="NoneType-expanded"><a name="L90"></a><tt class="py-lineno"> 90</tt>  <tt class="py-line">    <tt class="py-name">__metaclass__</tt> <tt class="py-op">=</tt> <tt id="link-16" class="py-name" targets="Class VisionEgg.ParameterTypes.NoneMC=VisionEgg.ParameterTypes.NoneMC-class.html"><a title="VisionEgg.ParameterTypes.NoneMC" class="py-name" href="#" onclick="return doclink('link-16', 'NoneMC', 'l [...]
+<a name="NoneType.verify"></a><div id="NoneType.verify-def"><a name="L91"></a><tt class="py-lineno"> 91</tt> <a class="py-toggle" href="#" id="NoneType.verify-toggle" onclick="return toggle('NoneType.verify');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.ParameterTypes.NoneType-class.html#verify">verify</a><tt class="py-op">(</tt><tt class="py-param">is_none</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NoneType.verify-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="NoneType.verify-expanded"><a name="L92"></a><tt class="py-lineno"> 92</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">is_none</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt> </tt>
+</div><a name="L93"></a><tt class="py-lineno"> 93</tt>  <tt class="py-line">    <tt id="link-17" class="py-name"><a title="VisionEgg.ParameterTypes.AnyClass.verify
+VisionEgg.ParameterTypes.AnyOf.verify
+VisionEgg.ParameterTypes.Boolean.verify
+VisionEgg.ParameterTypes.Callable.verify
+VisionEgg.ParameterTypes.Instance.verify
+VisionEgg.ParameterTypes.Integer.verify
+VisionEgg.ParameterTypes.NoneType.verify
+VisionEgg.ParameterTypes.ParameterTypeDef.verify
+VisionEgg.ParameterTypes.Real.verify
+VisionEgg.ParameterTypes.Sequence.verify
+VisionEgg.ParameterTypes.Sequence2.verify
+VisionEgg.ParameterTypes.Sequence3.verify
+VisionEgg.ParameterTypes.Sequence4.verify
+VisionEgg.ParameterTypes.Sequence4x4.verify
+VisionEgg.ParameterTypes.String.verify
+VisionEgg.ParameterTypes.SubClass.verify
+VisionEgg.ParameterTypes.Unicode.verify
+VisionEgg.ParameterTypes.UnsignedInteger.verify" class="py-name" href="#" onclick="return doclink('link-17', 'verify', 'link-4');">verify</a></tt> <tt class="py-op">=</tt> <tt class="py-name">staticmethod</tt><tt class="py-op">(</tt><tt id="link-18" class="py-name"><a title="VisionEgg.ParameterTypes.AnyClass.verify
+VisionEgg.ParameterTypes.AnyOf.verify
+VisionEgg.ParameterTypes.Boolean.verify
+VisionEgg.ParameterTypes.Callable.verify
+VisionEgg.ParameterTypes.Instance.verify
+VisionEgg.ParameterTypes.Integer.verify
+VisionEgg.ParameterTypes.NoneType.verify
+VisionEgg.ParameterTypes.ParameterTypeDef.verify
+VisionEgg.ParameterTypes.Real.verify
+VisionEgg.ParameterTypes.Sequence.verify
+VisionEgg.ParameterTypes.Sequence2.verify
+VisionEgg.ParameterTypes.Sequence3.verify
+VisionEgg.ParameterTypes.Sequence4.verify
+VisionEgg.ParameterTypes.Sequence4x4.verify
+VisionEgg.ParameterTypes.String.verify
+VisionEgg.ParameterTypes.SubClass.verify
+VisionEgg.ParameterTypes.Unicode.verify
+VisionEgg.ParameterTypes.UnsignedInteger.verify" class="py-name" href="#" onclick="return doclink('link-18', 'verify', 'link-4');">verify</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L94"></a><tt class="py-lineno"> 94</tt>  <tt class="py-line"> </tt>
+<a name="BooleanMC"></a><div id="BooleanMC-def"><a name="L95"></a><tt class="py-lineno"> 95</tt> <a class="py-toggle" href="#" id="BooleanMC-toggle" onclick="return toggle('BooleanMC');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.ParameterTypes.BooleanMC-class.html">BooleanMC</a><tt class="py-op">(</tt><tt class="py-base-class">type</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="BooleanMC-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="BooleanMC-expanded"><a name="L96"></a><tt class="py-lineno"> 96</tt>  <tt class="py-line">    <tt class="py-docstring">"""metaclass for Boolean"""</tt> </tt>
+<a name="BooleanMC.__str__"></a><div id="BooleanMC.__str__-def"><a name="L97"></a><tt class="py-lineno"> 97</tt> <a class="py-toggle" href="#" id="BooleanMC.__str__-toggle" onclick="return toggle('BooleanMC.__str__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.ParameterTypes.BooleanMC-class.html#__str__">__str__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="BooleanMC.__str__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="BooleanMC.__str__-expanded"><a name="L98"></a><tt class="py-lineno"> 98</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-string">'Boolean'</tt> </tt>
+</div></div><a name="L99"></a><tt class="py-lineno"> 99</tt>  <tt class="py-line"> </tt>
+<a name="Boolean"></a><div id="Boolean-def"><a name="L100"></a><tt class="py-lineno">100</tt> <a class="py-toggle" href="#" id="Boolean-toggle" onclick="return toggle('Boolean');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.ParameterTypes.Boolean-class.html">Boolean</a><tt class="py-op">(</tt><tt class="py-base-class">ParameterTypeDef</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Boolean-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="Boolean-expanded"><a name="L101"></a><tt class="py-lineno">101</tt>  <tt class="py-line">    <tt class="py-name">__metaclass__</tt> <tt class="py-op">=</tt> <tt id="link-19" class="py-name" targets="Class VisionEgg.ParameterTypes.BooleanMC=VisionEgg.ParameterTypes.BooleanMC-class.html"><a title="VisionEgg.ParameterTypes.BooleanMC" class="py-name" href="#" onclick="return doclink('link-19', 'Boo [...]
+<a name="Boolean.verify"></a><div id="Boolean.verify-def"><a name="L102"></a><tt class="py-lineno">102</tt> <a class="py-toggle" href="#" id="Boolean.verify-toggle" onclick="return toggle('Boolean.verify');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.ParameterTypes.Boolean-class.html#verify">verify</a><tt class="py-op">(</tt><tt class="py-param">is_boolean</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Boolean.verify-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Boolean.verify-expanded"><a name="L103"></a><tt class="py-lineno">103</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">is_boolean</tt><tt class="py-op">,</tt><tt class="py-op">(</tt><tt class="py-name">bool</tt><tt class="py-op">,</tt><tt id="link-20" class="py-name" targets="Class int=int- [...]
+<a name="L104"></a><tt class="py-lineno">104</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">True</tt> </tt>
+<a name="L105"></a><tt class="py-lineno">105</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L106"></a><tt class="py-lineno">106</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">False</tt> </tt>
+</div><a name="L107"></a><tt class="py-lineno">107</tt>  <tt class="py-line">    <tt id="link-21" class="py-name"><a title="VisionEgg.ParameterTypes.AnyClass.verify
+VisionEgg.ParameterTypes.AnyOf.verify
+VisionEgg.ParameterTypes.Boolean.verify
+VisionEgg.ParameterTypes.Callable.verify
+VisionEgg.ParameterTypes.Instance.verify
+VisionEgg.ParameterTypes.Integer.verify
+VisionEgg.ParameterTypes.NoneType.verify
+VisionEgg.ParameterTypes.ParameterTypeDef.verify
+VisionEgg.ParameterTypes.Real.verify
+VisionEgg.ParameterTypes.Sequence.verify
+VisionEgg.ParameterTypes.Sequence2.verify
+VisionEgg.ParameterTypes.Sequence3.verify
+VisionEgg.ParameterTypes.Sequence4.verify
+VisionEgg.ParameterTypes.Sequence4x4.verify
+VisionEgg.ParameterTypes.String.verify
+VisionEgg.ParameterTypes.SubClass.verify
+VisionEgg.ParameterTypes.Unicode.verify
+VisionEgg.ParameterTypes.UnsignedInteger.verify" class="py-name" href="#" onclick="return doclink('link-21', 'verify', 'link-4');">verify</a></tt> <tt class="py-op">=</tt> <tt class="py-name">staticmethod</tt><tt class="py-op">(</tt><tt id="link-22" class="py-name"><a title="VisionEgg.ParameterTypes.AnyClass.verify
+VisionEgg.ParameterTypes.AnyOf.verify
+VisionEgg.ParameterTypes.Boolean.verify
+VisionEgg.ParameterTypes.Callable.verify
+VisionEgg.ParameterTypes.Instance.verify
+VisionEgg.ParameterTypes.Integer.verify
+VisionEgg.ParameterTypes.NoneType.verify
+VisionEgg.ParameterTypes.ParameterTypeDef.verify
+VisionEgg.ParameterTypes.Real.verify
+VisionEgg.ParameterTypes.Sequence.verify
+VisionEgg.ParameterTypes.Sequence2.verify
+VisionEgg.ParameterTypes.Sequence3.verify
+VisionEgg.ParameterTypes.Sequence4.verify
+VisionEgg.ParameterTypes.Sequence4x4.verify
+VisionEgg.ParameterTypes.String.verify
+VisionEgg.ParameterTypes.SubClass.verify
+VisionEgg.ParameterTypes.Unicode.verify
+VisionEgg.ParameterTypes.UnsignedInteger.verify" class="py-name" href="#" onclick="return doclink('link-22', 'verify', 'link-4');">verify</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L108"></a><tt class="py-lineno">108</tt>  <tt class="py-line"> </tt>
+<a name="CallableMC"></a><div id="CallableMC-def"><a name="L109"></a><tt class="py-lineno">109</tt> <a class="py-toggle" href="#" id="CallableMC-toggle" onclick="return toggle('CallableMC');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.ParameterTypes.CallableMC-class.html">CallableMC</a><tt class="py-op">(</tt><tt class="py-base-class">type</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="CallableMC-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="CallableMC-expanded"><a name="L110"></a><tt class="py-lineno">110</tt>  <tt class="py-line">    <tt class="py-docstring">"""metaclass for Callable"""</tt> </tt>
+<a name="CallableMC.__str__"></a><div id="CallableMC.__str__-def"><a name="L111"></a><tt class="py-lineno">111</tt> <a class="py-toggle" href="#" id="CallableMC.__str__-toggle" onclick="return toggle('CallableMC.__str__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.ParameterTypes.CallableMC-class.html#__str__">__str__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="CallableMC.__str__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="CallableMC.__str__-expanded"><a name="L112"></a><tt class="py-lineno">112</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-string">'Callable'</tt> </tt>
+</div></div><a name="L113"></a><tt class="py-lineno">113</tt>  <tt class="py-line"> </tt>
+<a name="Callable"></a><div id="Callable-def"><a name="L114"></a><tt class="py-lineno">114</tt> <a class="py-toggle" href="#" id="Callable-toggle" onclick="return toggle('Callable');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.ParameterTypes.Callable-class.html">Callable</a><tt class="py-op">(</tt><tt class="py-base-class">ParameterTypeDef</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Callable-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="Callable-expanded"><a name="L115"></a><tt class="py-lineno">115</tt>  <tt class="py-line">    <tt class="py-name">__metaclass__</tt> <tt class="py-op">=</tt> <tt id="link-23" class="py-name" targets="Class VisionEgg.ParameterTypes.CallableMC=VisionEgg.ParameterTypes.CallableMC-class.html"><a title="VisionEgg.ParameterTypes.CallableMC" class="py-name" href="#" onclick="return doclink('link-23', [...]
+<a name="Callable.verify"></a><div id="Callable.verify-def"><a name="L116"></a><tt class="py-lineno">116</tt> <a class="py-toggle" href="#" id="Callable.verify-toggle" onclick="return toggle('Callable.verify');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.ParameterTypes.Callable-class.html#verify">verify</a><tt class="py-op">(</tt><tt class="py-param">is_callable</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Callable.verify-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Callable.verify-expanded"><a name="L117"></a><tt class="py-lineno">117</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">callable</tt><tt class="py-op">(</tt><tt class="py-name">is_callable</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L118"></a><tt class="py-lineno">118</tt>  <tt class="py-line">    <tt id="link-24" class="py-name"><a title="VisionEgg.ParameterTypes.AnyClass.verify
+VisionEgg.ParameterTypes.AnyOf.verify
+VisionEgg.ParameterTypes.Boolean.verify
+VisionEgg.ParameterTypes.Callable.verify
+VisionEgg.ParameterTypes.Instance.verify
+VisionEgg.ParameterTypes.Integer.verify
+VisionEgg.ParameterTypes.NoneType.verify
+VisionEgg.ParameterTypes.ParameterTypeDef.verify
+VisionEgg.ParameterTypes.Real.verify
+VisionEgg.ParameterTypes.Sequence.verify
+VisionEgg.ParameterTypes.Sequence2.verify
+VisionEgg.ParameterTypes.Sequence3.verify
+VisionEgg.ParameterTypes.Sequence4.verify
+VisionEgg.ParameterTypes.Sequence4x4.verify
+VisionEgg.ParameterTypes.String.verify
+VisionEgg.ParameterTypes.SubClass.verify
+VisionEgg.ParameterTypes.Unicode.verify
+VisionEgg.ParameterTypes.UnsignedInteger.verify" class="py-name" href="#" onclick="return doclink('link-24', 'verify', 'link-4');">verify</a></tt> <tt class="py-op">=</tt> <tt class="py-name">staticmethod</tt><tt class="py-op">(</tt><tt id="link-25" class="py-name"><a title="VisionEgg.ParameterTypes.AnyClass.verify
+VisionEgg.ParameterTypes.AnyOf.verify
+VisionEgg.ParameterTypes.Boolean.verify
+VisionEgg.ParameterTypes.Callable.verify
+VisionEgg.ParameterTypes.Instance.verify
+VisionEgg.ParameterTypes.Integer.verify
+VisionEgg.ParameterTypes.NoneType.verify
+VisionEgg.ParameterTypes.ParameterTypeDef.verify
+VisionEgg.ParameterTypes.Real.verify
+VisionEgg.ParameterTypes.Sequence.verify
+VisionEgg.ParameterTypes.Sequence2.verify
+VisionEgg.ParameterTypes.Sequence3.verify
+VisionEgg.ParameterTypes.Sequence4.verify
+VisionEgg.ParameterTypes.Sequence4x4.verify
+VisionEgg.ParameterTypes.String.verify
+VisionEgg.ParameterTypes.SubClass.verify
+VisionEgg.ParameterTypes.Unicode.verify
+VisionEgg.ParameterTypes.UnsignedInteger.verify" class="py-name" href="#" onclick="return doclink('link-25', 'verify', 'link-4');">verify</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L119"></a><tt class="py-lineno">119</tt>  <tt class="py-line"> </tt>
+<a name="AnyClassMC"></a><div id="AnyClassMC-def"><a name="L120"></a><tt class="py-lineno">120</tt> <a class="py-toggle" href="#" id="AnyClassMC-toggle" onclick="return toggle('AnyClassMC');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.ParameterTypes.AnyClassMC-class.html">AnyClassMC</a><tt class="py-op">(</tt><tt class="py-base-class">type</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="AnyClassMC-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="AnyClassMC-expanded"><a name="L121"></a><tt class="py-lineno">121</tt>  <tt class="py-line">    <tt class="py-docstring">"""metaclass for AnyClass"""</tt> </tt>
+<a name="AnyClassMC.__str__"></a><div id="AnyClassMC.__str__-def"><a name="L122"></a><tt class="py-lineno">122</tt> <a class="py-toggle" href="#" id="AnyClassMC.__str__-toggle" onclick="return toggle('AnyClassMC.__str__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.ParameterTypes.AnyClassMC-class.html#__str__">__str__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="AnyClassMC.__str__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="AnyClassMC.__str__-expanded"><a name="L123"></a><tt class="py-lineno">123</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-string">'AnyClass'</tt> </tt>
+</div></div><a name="L124"></a><tt class="py-lineno">124</tt>  <tt class="py-line"> </tt>
+<a name="AnyClass"></a><div id="AnyClass-def"><a name="L125"></a><tt class="py-lineno">125</tt> <a class="py-toggle" href="#" id="AnyClass-toggle" onclick="return toggle('AnyClass');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.ParameterTypes.AnyClass-class.html">AnyClass</a><tt class="py-op">(</tt><tt class="py-base-class">ParameterTypeDef</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="AnyClass-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="AnyClass-expanded"><a name="L126"></a><tt class="py-lineno">126</tt>  <tt class="py-line">    <tt class="py-docstring">"""parameter is a class"""</tt> </tt>
+<a name="L127"></a><tt class="py-lineno">127</tt>  <tt class="py-line">    <tt class="py-name">__metaclass__</tt> <tt class="py-op">=</tt> <tt id="link-26" class="py-name" targets="Class VisionEgg.ParameterTypes.AnyClassMC=VisionEgg.ParameterTypes.AnyClassMC-class.html"><a title="VisionEgg.ParameterTypes.AnyClassMC" class="py-name" href="#" onclick="return doclink('link-26', 'AnyClassMC', 'link-26');">AnyClassMC</a></tt> </tt>
+<a name="AnyClass.verify"></a><div id="AnyClass.verify-def"><a name="L128"></a><tt class="py-lineno">128</tt> <a class="py-toggle" href="#" id="AnyClass.verify-toggle" onclick="return toggle('AnyClass.verify');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.ParameterTypes.AnyClass-class.html#verify">verify</a><tt class="py-op">(</tt><tt class="py-param">is_class</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="AnyClass.verify-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="AnyClass.verify-expanded"><a name="L129"></a><tt class="py-lineno">129</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">is_class</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-name">types</tt><tt class="py-op">.</tt><tt class="py-name">ClassType</tt> </tt>
+</div><a name="L130"></a><tt class="py-lineno">130</tt>  <tt class="py-line">    <tt id="link-27" class="py-name"><a title="VisionEgg.ParameterTypes.AnyClass.verify
+VisionEgg.ParameterTypes.AnyOf.verify
+VisionEgg.ParameterTypes.Boolean.verify
+VisionEgg.ParameterTypes.Callable.verify
+VisionEgg.ParameterTypes.Instance.verify
+VisionEgg.ParameterTypes.Integer.verify
+VisionEgg.ParameterTypes.NoneType.verify
+VisionEgg.ParameterTypes.ParameterTypeDef.verify
+VisionEgg.ParameterTypes.Real.verify
+VisionEgg.ParameterTypes.Sequence.verify
+VisionEgg.ParameterTypes.Sequence2.verify
+VisionEgg.ParameterTypes.Sequence3.verify
+VisionEgg.ParameterTypes.Sequence4.verify
+VisionEgg.ParameterTypes.Sequence4x4.verify
+VisionEgg.ParameterTypes.String.verify
+VisionEgg.ParameterTypes.SubClass.verify
+VisionEgg.ParameterTypes.Unicode.verify
+VisionEgg.ParameterTypes.UnsignedInteger.verify" class="py-name" href="#" onclick="return doclink('link-27', 'verify', 'link-4');">verify</a></tt> <tt class="py-op">=</tt> <tt class="py-name">staticmethod</tt><tt class="py-op">(</tt><tt id="link-28" class="py-name"><a title="VisionEgg.ParameterTypes.AnyClass.verify
+VisionEgg.ParameterTypes.AnyOf.verify
+VisionEgg.ParameterTypes.Boolean.verify
+VisionEgg.ParameterTypes.Callable.verify
+VisionEgg.ParameterTypes.Instance.verify
+VisionEgg.ParameterTypes.Integer.verify
+VisionEgg.ParameterTypes.NoneType.verify
+VisionEgg.ParameterTypes.ParameterTypeDef.verify
+VisionEgg.ParameterTypes.Real.verify
+VisionEgg.ParameterTypes.Sequence.verify
+VisionEgg.ParameterTypes.Sequence2.verify
+VisionEgg.ParameterTypes.Sequence3.verify
+VisionEgg.ParameterTypes.Sequence4.verify
+VisionEgg.ParameterTypes.Sequence4x4.verify
+VisionEgg.ParameterTypes.String.verify
+VisionEgg.ParameterTypes.SubClass.verify
+VisionEgg.ParameterTypes.Unicode.verify
+VisionEgg.ParameterTypes.UnsignedInteger.verify" class="py-name" href="#" onclick="return doclink('link-28', 'verify', 'link-4');">verify</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L131"></a><tt class="py-lineno">131</tt>  <tt class="py-line"> </tt>
+<a name="SubClass"></a><div id="SubClass-def"><a name="L132"></a><tt class="py-lineno">132</tt> <a class="py-toggle" href="#" id="SubClass-toggle" onclick="return toggle('SubClass');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.ParameterTypes.SubClass-class.html">SubClass</a><tt class="py-op">(</tt><tt class="py-base-class">ParameterTypeDef</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="SubClass-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="SubClass-expanded"><a name="L133"></a><tt class="py-lineno">133</tt>  <tt class="py-line">    <tt class="py-docstring">"""parameter is derived from base_class"""</tt> </tt>
+<a name="SubClass.__init__"></a><div id="SubClass.__init__-def"><a name="L134"></a><tt class="py-lineno">134</tt> <a class="py-toggle" href="#" id="SubClass.__init__-toggle" onclick="return toggle('SubClass.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.ParameterTypes.SubClass-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt><tt class="py-param">base_class</tt>< [...]
+</div><div id="SubClass.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SubClass.__init__-expanded"><a name="L135"></a><tt class="py-lineno">135</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">base_class</tt><tt class="py-op">)</tt> <tt class="py-op">!=</tt> <tt class="py-name">types</tt><tt class="py-op">.</tt><tt class="py-name">ClassType</tt><tt class="py-op"> [...]
+<a name="L136"></a><tt class="py-lineno">136</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">TypeError</tt><tt class="py-op">(</tt><tt class="py-string">"base_class must be ClassType"</tt><tt class="py-op">)</tt> </tt>
+<a name="L137"></a><tt class="py-lineno">137</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">base_class</tt> <tt class="py-op">=</tt> <tt class="py-name">base_class</tt> </tt>
+</div><a name="SubClass.verify"></a><div id="SubClass.verify-def"><a name="L138"></a><tt class="py-lineno">138</tt> <a class="py-toggle" href="#" id="SubClass.verify-toggle" onclick="return toggle('SubClass.verify');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.ParameterTypes.SubClass-class.html#verify">verify</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt><tt class="py-param">is_class</tt><tt class [...]
+</div><div id="SubClass.verify-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SubClass.verify-expanded"><a name="L139"></a><tt class="py-lineno">139</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">base_class</tt><tt class="py-op">)</tt> <tt class="py-op">!=</tt> <tt class="py-name">types</tt><tt class="py-op">.</tt><tt [...]
+<a name="L140"></a><tt class="py-lineno">140</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">False</tt> </tt>
+<a name="L141"></a><tt class="py-lineno">141</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">base_class</tt> <tt class="py-keyword">in</tt> <tt id="link-29" class="py-name"><a title="VisionEgg.ParameterTypes.get_all_classes_list" class="py-name" href="#" onclick="return doclink('link-29', 'get_all_classes_list', 'link-6');">get_all_classes_list</a></tt><tt class="py-op">(</tt><tt class="py-name" [...]
+</div><a name="SubClass.__str__"></a><div id="SubClass.__str__-def"><a name="L142"></a><tt class="py-lineno">142</tt> <a class="py-toggle" href="#" id="SubClass.__str__-toggle" onclick="return toggle('SubClass.__str__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.ParameterTypes.SubClass-class.html#__str__">__str__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="SubClass.__str__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SubClass.__str__-expanded"><a name="L143"></a><tt class="py-lineno">143</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-string">'SubClass of %s'</tt><tt class="py-op">%</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">base_class</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L144"></a><tt class="py-lineno">144</tt>  <tt class="py-line"> </tt>
+<a name="Instance"></a><div id="Instance-def"><a name="L145"></a><tt class="py-lineno">145</tt> <a class="py-toggle" href="#" id="Instance-toggle" onclick="return toggle('Instance');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.ParameterTypes.Instance-class.html">Instance</a><tt class="py-op">(</tt><tt class="py-base-class">ParameterTypeDef</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Instance-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="Instance-expanded"><a name="L146"></a><tt class="py-lineno">146</tt>  <tt class="py-line">    <tt class="py-docstring">"""parameter is an instance of class_type"""</tt> </tt>
+<a name="Instance.__init__"></a><div id="Instance.__init__-def"><a name="L147"></a><tt class="py-lineno">147</tt> <a class="py-toggle" href="#" id="Instance.__init__-toggle" onclick="return toggle('Instance.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.ParameterTypes.Instance-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt><tt class="py-param">class_type</tt>< [...]
+</div><div id="Instance.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Instance.__init__-expanded"><a name="L148"></a><tt class="py-lineno">148</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">class_type</tt><tt class="py-op">)</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-name">types</tt><tt class="py-o [...]
+<a name="L149"></a><tt class="py-lineno">149</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">TypeError</tt><tt class="py-op">(</tt><tt class="py-string">"expected a class type"</tt><tt class="py-op">)</tt> </tt>
+<a name="L150"></a><tt class="py-lineno">150</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">class_type</tt> <tt class="py-op">=</tt> <tt class="py-name">class_type</tt> </tt>
+</div><a name="Instance.__str__"></a><div id="Instance.__str__-def"><a name="L151"></a><tt class="py-lineno">151</tt> <a class="py-toggle" href="#" id="Instance.__str__-toggle" onclick="return toggle('Instance.__str__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.ParameterTypes.Instance-class.html#__str__">__str__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Instance.__str__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Instance.__str__-expanded"><a name="L152"></a><tt class="py-lineno">152</tt>  <tt class="py-line">        <tt class="py-name">contained_string</tt> <tt class="py-op">=</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">class_type</tt><tt class="py-op">)</tt> </tt>
+<a name="L153"></a><tt class="py-lineno">153</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-string">'Instance of %s'</tt><tt class="py-op">%</tt><tt class="py-name">contained_string</tt> </tt>
+</div><a name="Instance.verify"></a><div id="Instance.verify-def"><a name="L154"></a><tt class="py-lineno">154</tt> <a class="py-toggle" href="#" id="Instance.verify-toggle" onclick="return toggle('Instance.verify');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.ParameterTypes.Instance-class.html#verify">verify</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt><tt class="py-param">is_instance</tt><tt cl [...]
+</div><div id="Instance.verify-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Instance.verify-expanded"><a name="L155"></a><tt class="py-lineno">155</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">is_instance</tt><tt class="py-op">,</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">class_type</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L156"></a><tt class="py-lineno">156</tt>  <tt class="py-line"> </tt>
+<a name="IntegerMC"></a><div id="IntegerMC-def"><a name="L157"></a><tt class="py-lineno">157</tt> <a class="py-toggle" href="#" id="IntegerMC-toggle" onclick="return toggle('IntegerMC');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.ParameterTypes.IntegerMC-class.html">IntegerMC</a><tt class="py-op">(</tt><tt class="py-base-class">type</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="IntegerMC-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="IntegerMC-expanded"><a name="L158"></a><tt class="py-lineno">158</tt>  <tt class="py-line">    <tt class="py-docstring">"""metaclass for Integer"""</tt> </tt>
+<a name="IntegerMC.__str__"></a><div id="IntegerMC.__str__-def"><a name="L159"></a><tt class="py-lineno">159</tt> <a class="py-toggle" href="#" id="IntegerMC.__str__-toggle" onclick="return toggle('IntegerMC.__str__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.ParameterTypes.IntegerMC-class.html#__str__">__str__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="IntegerMC.__str__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="IntegerMC.__str__-expanded"><a name="L160"></a><tt class="py-lineno">160</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-string">'Integer'</tt> </tt>
+</div></div><a name="L161"></a><tt class="py-lineno">161</tt>  <tt class="py-line"> </tt>
+<a name="Integer"></a><div id="Integer-def"><a name="L162"></a><tt class="py-lineno">162</tt> <a class="py-toggle" href="#" id="Integer-toggle" onclick="return toggle('Integer');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.ParameterTypes.Integer-class.html">Integer</a><tt class="py-op">(</tt><tt class="py-base-class">ParameterTypeDef</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Integer-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="Integer-expanded"><a name="L163"></a><tt class="py-lineno">163</tt>  <tt class="py-line">    <tt class="py-name">__metaclass__</tt> <tt class="py-op">=</tt> <tt id="link-30" class="py-name" targets="Class VisionEgg.ParameterTypes.IntegerMC=VisionEgg.ParameterTypes.IntegerMC-class.html"><a title="VisionEgg.ParameterTypes.IntegerMC" class="py-name" href="#" onclick="return doclink('link-30', 'Int [...]
+<a name="Integer.verify"></a><div id="Integer.verify-def"><a name="L164"></a><tt class="py-lineno">164</tt> <a class="py-toggle" href="#" id="Integer.verify-toggle" onclick="return toggle('Integer.verify');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.ParameterTypes.Integer-class.html#verify">verify</a><tt class="py-op">(</tt><tt class="py-param">is_integer</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Integer.verify-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Integer.verify-expanded"><a name="L165"></a><tt class="py-lineno">165</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">is_integer</tt><tt class="py-op">,</tt><tt class="py-op">(</tt><tt id="link-31" class="py-name"><a title="int" class="py-name" href="#" onclick="return doclink('link-31 [...]
+</div><a name="L166"></a><tt class="py-lineno">166</tt>  <tt class="py-line">    <tt id="link-32" class="py-name"><a title="VisionEgg.ParameterTypes.AnyClass.verify
+VisionEgg.ParameterTypes.AnyOf.verify
+VisionEgg.ParameterTypes.Boolean.verify
+VisionEgg.ParameterTypes.Callable.verify
+VisionEgg.ParameterTypes.Instance.verify
+VisionEgg.ParameterTypes.Integer.verify
+VisionEgg.ParameterTypes.NoneType.verify
+VisionEgg.ParameterTypes.ParameterTypeDef.verify
+VisionEgg.ParameterTypes.Real.verify
+VisionEgg.ParameterTypes.Sequence.verify
+VisionEgg.ParameterTypes.Sequence2.verify
+VisionEgg.ParameterTypes.Sequence3.verify
+VisionEgg.ParameterTypes.Sequence4.verify
+VisionEgg.ParameterTypes.Sequence4x4.verify
+VisionEgg.ParameterTypes.String.verify
+VisionEgg.ParameterTypes.SubClass.verify
+VisionEgg.ParameterTypes.Unicode.verify
+VisionEgg.ParameterTypes.UnsignedInteger.verify" class="py-name" href="#" onclick="return doclink('link-32', 'verify', 'link-4');">verify</a></tt> <tt class="py-op">=</tt> <tt class="py-name">staticmethod</tt><tt class="py-op">(</tt><tt id="link-33" class="py-name"><a title="VisionEgg.ParameterTypes.AnyClass.verify
+VisionEgg.ParameterTypes.AnyOf.verify
+VisionEgg.ParameterTypes.Boolean.verify
+VisionEgg.ParameterTypes.Callable.verify
+VisionEgg.ParameterTypes.Instance.verify
+VisionEgg.ParameterTypes.Integer.verify
+VisionEgg.ParameterTypes.NoneType.verify
+VisionEgg.ParameterTypes.ParameterTypeDef.verify
+VisionEgg.ParameterTypes.Real.verify
+VisionEgg.ParameterTypes.Sequence.verify
+VisionEgg.ParameterTypes.Sequence2.verify
+VisionEgg.ParameterTypes.Sequence3.verify
+VisionEgg.ParameterTypes.Sequence4.verify
+VisionEgg.ParameterTypes.Sequence4x4.verify
+VisionEgg.ParameterTypes.String.verify
+VisionEgg.ParameterTypes.SubClass.verify
+VisionEgg.ParameterTypes.Unicode.verify
+VisionEgg.ParameterTypes.UnsignedInteger.verify" class="py-name" href="#" onclick="return doclink('link-33', 'verify', 'link-4');">verify</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L167"></a><tt class="py-lineno">167</tt>  <tt class="py-line"> </tt>
+<a name="UnsignedIntegerMC"></a><div id="UnsignedIntegerMC-def"><a name="L168"></a><tt class="py-lineno">168</tt> <a class="py-toggle" href="#" id="UnsignedIntegerMC-toggle" onclick="return toggle('UnsignedIntegerMC');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.ParameterTypes.UnsignedIntegerMC-class.html">UnsignedIntegerMC</a><tt class="py-op">(</tt><tt class="py-base-class">IntegerMC</tt><tt class="py-op">)</tt><tt class="py-op">:< [...]
+</div><div id="UnsignedIntegerMC-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="UnsignedIntegerMC-expanded"><a name="L169"></a><tt class="py-lineno">169</tt>  <tt class="py-line">    <tt class="py-docstring">"""metaclass for UnsignedInteger"""</tt> </tt>
+<a name="UnsignedIntegerMC.__str__"></a><div id="UnsignedIntegerMC.__str__-def"><a name="L170"></a><tt class="py-lineno">170</tt> <a class="py-toggle" href="#" id="UnsignedIntegerMC.__str__-toggle" onclick="return toggle('UnsignedIntegerMC.__str__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.ParameterTypes.UnsignedIntegerMC-class.html#__str__">__str__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</t [...]
+</div><div id="UnsignedIntegerMC.__str__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="UnsignedIntegerMC.__str__-expanded"><a name="L171"></a><tt class="py-lineno">171</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-string">'UnsignedInteger'</tt> </tt>
+</div></div><a name="L172"></a><tt class="py-lineno">172</tt>  <tt class="py-line"> </tt>
+<a name="UnsignedInteger"></a><div id="UnsignedInteger-def"><a name="L173"></a><tt class="py-lineno">173</tt> <a class="py-toggle" href="#" id="UnsignedInteger-toggle" onclick="return toggle('UnsignedInteger');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.ParameterTypes.UnsignedInteger-class.html">UnsignedInteger</a><tt class="py-op">(</tt><tt class="py-base-class">Integer</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="UnsignedInteger-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="UnsignedInteger-expanded"><a name="L174"></a><tt class="py-lineno">174</tt>  <tt class="py-line">    <tt class="py-name">__metaclass__</tt> <tt class="py-op">=</tt> <tt id="link-34" class="py-name" targets="Class VisionEgg.ParameterTypes.UnsignedIntegerMC=VisionEgg.ParameterTypes.UnsignedIntegerMC-class.html"><a title="VisionEgg.ParameterTypes.UnsignedIntegerMC" class="py-name" href="#" [...]
+<a name="UnsignedInteger.verify"></a><div id="UnsignedInteger.verify-def"><a name="L175"></a><tt class="py-lineno">175</tt> <a class="py-toggle" href="#" id="UnsignedInteger.verify-toggle" onclick="return toggle('UnsignedInteger.verify');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.ParameterTypes.UnsignedInteger-class.html#verify">verify</a><tt class="py-op">(</tt><tt class="py-param">is_unsigned_integer</tt><tt class="py-op">)</tt [...]
+</div><div id="UnsignedInteger.verify-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="UnsignedInteger.verify-expanded"><a name="L176"></a><tt class="py-lineno">176</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt id="link-35" class="py-name" targets="Class VisionEgg.ParameterTypes.Integer=VisionEgg.ParameterTypes.Integer-class.html"><a title="VisionEgg.ParameterTypes.Integer" class="py-name" href="#" onclick= [...]
+VisionEgg.ParameterTypes.AnyOf.verify
+VisionEgg.ParameterTypes.Boolean.verify
+VisionEgg.ParameterTypes.Callable.verify
+VisionEgg.ParameterTypes.Instance.verify
+VisionEgg.ParameterTypes.Integer.verify
+VisionEgg.ParameterTypes.NoneType.verify
+VisionEgg.ParameterTypes.ParameterTypeDef.verify
+VisionEgg.ParameterTypes.Real.verify
+VisionEgg.ParameterTypes.Sequence.verify
+VisionEgg.ParameterTypes.Sequence2.verify
+VisionEgg.ParameterTypes.Sequence3.verify
+VisionEgg.ParameterTypes.Sequence4.verify
+VisionEgg.ParameterTypes.Sequence4x4.verify
+VisionEgg.ParameterTypes.String.verify
+VisionEgg.ParameterTypes.SubClass.verify
+VisionEgg.ParameterTypes.Unicode.verify
+VisionEgg.ParameterTypes.UnsignedInteger.verify" class="py-name" href="#" onclick="return doclink('link-36', 'verify', 'link-4');">verify</a></tt><tt class="py-op">(</tt><tt class="py-name">is_unsigned_integer</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L177"></a><tt class="py-lineno">177</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">False</tt> </tt>
+<a name="L178"></a><tt class="py-lineno">178</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">is_unsigned_integer</tt> <tt class="py-op">>=</tt> <tt class="py-number">0</tt> </tt>
+</div><a name="L179"></a><tt class="py-lineno">179</tt>  <tt class="py-line">    <tt id="link-37" class="py-name"><a title="VisionEgg.ParameterTypes.AnyClass.verify
+VisionEgg.ParameterTypes.AnyOf.verify
+VisionEgg.ParameterTypes.Boolean.verify
+VisionEgg.ParameterTypes.Callable.verify
+VisionEgg.ParameterTypes.Instance.verify
+VisionEgg.ParameterTypes.Integer.verify
+VisionEgg.ParameterTypes.NoneType.verify
+VisionEgg.ParameterTypes.ParameterTypeDef.verify
+VisionEgg.ParameterTypes.Real.verify
+VisionEgg.ParameterTypes.Sequence.verify
+VisionEgg.ParameterTypes.Sequence2.verify
+VisionEgg.ParameterTypes.Sequence3.verify
+VisionEgg.ParameterTypes.Sequence4.verify
+VisionEgg.ParameterTypes.Sequence4x4.verify
+VisionEgg.ParameterTypes.String.verify
+VisionEgg.ParameterTypes.SubClass.verify
+VisionEgg.ParameterTypes.Unicode.verify
+VisionEgg.ParameterTypes.UnsignedInteger.verify" class="py-name" href="#" onclick="return doclink('link-37', 'verify', 'link-4');">verify</a></tt> <tt class="py-op">=</tt> <tt class="py-name">staticmethod</tt><tt class="py-op">(</tt><tt id="link-38" class="py-name"><a title="VisionEgg.ParameterTypes.AnyClass.verify
+VisionEgg.ParameterTypes.AnyOf.verify
+VisionEgg.ParameterTypes.Boolean.verify
+VisionEgg.ParameterTypes.Callable.verify
+VisionEgg.ParameterTypes.Instance.verify
+VisionEgg.ParameterTypes.Integer.verify
+VisionEgg.ParameterTypes.NoneType.verify
+VisionEgg.ParameterTypes.ParameterTypeDef.verify
+VisionEgg.ParameterTypes.Real.verify
+VisionEgg.ParameterTypes.Sequence.verify
+VisionEgg.ParameterTypes.Sequence2.verify
+VisionEgg.ParameterTypes.Sequence3.verify
+VisionEgg.ParameterTypes.Sequence4.verify
+VisionEgg.ParameterTypes.Sequence4x4.verify
+VisionEgg.ParameterTypes.String.verify
+VisionEgg.ParameterTypes.SubClass.verify
+VisionEgg.ParameterTypes.Unicode.verify
+VisionEgg.ParameterTypes.UnsignedInteger.verify" class="py-name" href="#" onclick="return doclink('link-38', 'verify', 'link-4');">verify</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L180"></a><tt class="py-lineno">180</tt>  <tt class="py-line"> </tt>
+<a name="RealMC"></a><div id="RealMC-def"><a name="L181"></a><tt class="py-lineno">181</tt> <a class="py-toggle" href="#" id="RealMC-toggle" onclick="return toggle('RealMC');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.ParameterTypes.RealMC-class.html">RealMC</a><tt class="py-op">(</tt><tt class="py-base-class">type</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="RealMC-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="RealMC-expanded"><a name="L182"></a><tt class="py-lineno">182</tt>  <tt class="py-line">    <tt class="py-docstring">"""metaclass for Real"""</tt> </tt>
+<a name="RealMC.__str__"></a><div id="RealMC.__str__-def"><a name="L183"></a><tt class="py-lineno">183</tt> <a class="py-toggle" href="#" id="RealMC.__str__-toggle" onclick="return toggle('RealMC.__str__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.ParameterTypes.RealMC-class.html#__str__">__str__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="RealMC.__str__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="RealMC.__str__-expanded"><a name="L184"></a><tt class="py-lineno">184</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-string">'Real'</tt> </tt>
+</div></div><a name="L185"></a><tt class="py-lineno">185</tt>  <tt class="py-line"> </tt>
+<a name="Real"></a><div id="Real-def"><a name="L186"></a><tt class="py-lineno">186</tt> <a class="py-toggle" href="#" id="Real-toggle" onclick="return toggle('Real');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.ParameterTypes.Real-class.html">Real</a><tt class="py-op">(</tt><tt class="py-base-class">ParameterTypeDef</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Real-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="Real-expanded"><a name="L187"></a><tt class="py-lineno">187</tt>  <tt class="py-line">    <tt class="py-name">__metaclass__</tt> <tt class="py-op">=</tt> <tt id="link-39" class="py-name" targets="Class VisionEgg.ParameterTypes.RealMC=VisionEgg.ParameterTypes.RealMC-class.html"><a title="VisionEgg.ParameterTypes.RealMC" class="py-name" href="#" onclick="return doclink('link-39', 'RealMC', 'link-39' [...]
+<a name="Real.verify"></a><div id="Real.verify-def"><a name="L188"></a><tt class="py-lineno">188</tt> <a class="py-toggle" href="#" id="Real.verify-toggle" onclick="return toggle('Real.verify');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.ParameterTypes.Real-class.html#verify">verify</a><tt class="py-op">(</tt><tt class="py-param">is_real</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Real.verify-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Real.verify-expanded"><a name="L189"></a><tt class="py-lineno">189</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">is_real</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt id="link-40" class="py-name"><a title="int" class="py-name" href="#" onclick="return doclink('link-40', 'int', 'l [...]
+<a name="L190"></a><tt class="py-lineno">190</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">True</tt> </tt>
+<a name="L191"></a><tt class="py-lineno">191</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">is_real</tt><tt class="py-op">)</tt> <tt class="py-keyword">in</tt> <tt id="link-42" class="py-name"><a title="VisionEgg.ParameterTypes.array_types
+VisionEgg.Textures.array_types" class="py-name" href="#" onclick="return doclink('link-42', 'array_types', 'link-1');">array_types</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L192"></a><tt class="py-lineno">192</tt>  <tt class="py-line">            <tt class="py-comment"># scalars can be Numeric arrays</tt> </tt>
+<a name="L193"></a><tt class="py-lineno">193</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">is_real</tt><tt class="py-op">.</tt><tt class="py-name">shape</tt><tt class="py-op">)</tt><tt class="py-op">==</tt><tt class="py-number">0</tt><tt class="py-op">:</tt> </tt>
+<a name="L194"></a><tt class="py-lineno">194</tt>  <tt class="py-line">                <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L195"></a><tt class="py-lineno">195</tt>  <tt class="py-line">                    <tt id="link-43" class="py-name"><a title="float" class="py-name" href="#" onclick="return doclink('link-43', 'float', 'link-41');">float</a></tt><tt class="py-op">(</tt><tt class="py-name">is_real</tt><tt class="py-op">)</tt> </tt>
+<a name="L196"></a><tt class="py-lineno">196</tt>  <tt class="py-line">                    <tt class="py-keyword">return</tt> <tt class="py-name">True</tt> </tt>
+<a name="L197"></a><tt class="py-lineno">197</tt>  <tt class="py-line">                <tt class="py-keyword">except</tt><tt class="py-op">:</tt> </tt>
+<a name="L198"></a><tt class="py-lineno">198</tt>  <tt class="py-line">                    <tt class="py-keyword">return</tt> <tt class="py-name">False</tt> </tt>
+<a name="L199"></a><tt class="py-lineno">199</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">False</tt> </tt>
+</div><a name="L200"></a><tt class="py-lineno">200</tt>  <tt class="py-line">    <tt id="link-44" class="py-name"><a title="VisionEgg.ParameterTypes.AnyClass.verify
+VisionEgg.ParameterTypes.AnyOf.verify
+VisionEgg.ParameterTypes.Boolean.verify
+VisionEgg.ParameterTypes.Callable.verify
+VisionEgg.ParameterTypes.Instance.verify
+VisionEgg.ParameterTypes.Integer.verify
+VisionEgg.ParameterTypes.NoneType.verify
+VisionEgg.ParameterTypes.ParameterTypeDef.verify
+VisionEgg.ParameterTypes.Real.verify
+VisionEgg.ParameterTypes.Sequence.verify
+VisionEgg.ParameterTypes.Sequence2.verify
+VisionEgg.ParameterTypes.Sequence3.verify
+VisionEgg.ParameterTypes.Sequence4.verify
+VisionEgg.ParameterTypes.Sequence4x4.verify
+VisionEgg.ParameterTypes.String.verify
+VisionEgg.ParameterTypes.SubClass.verify
+VisionEgg.ParameterTypes.Unicode.verify
+VisionEgg.ParameterTypes.UnsignedInteger.verify" class="py-name" href="#" onclick="return doclink('link-44', 'verify', 'link-4');">verify</a></tt> <tt class="py-op">=</tt> <tt class="py-name">staticmethod</tt><tt class="py-op">(</tt><tt id="link-45" class="py-name"><a title="VisionEgg.ParameterTypes.AnyClass.verify
+VisionEgg.ParameterTypes.AnyOf.verify
+VisionEgg.ParameterTypes.Boolean.verify
+VisionEgg.ParameterTypes.Callable.verify
+VisionEgg.ParameterTypes.Instance.verify
+VisionEgg.ParameterTypes.Integer.verify
+VisionEgg.ParameterTypes.NoneType.verify
+VisionEgg.ParameterTypes.ParameterTypeDef.verify
+VisionEgg.ParameterTypes.Real.verify
+VisionEgg.ParameterTypes.Sequence.verify
+VisionEgg.ParameterTypes.Sequence2.verify
+VisionEgg.ParameterTypes.Sequence3.verify
+VisionEgg.ParameterTypes.Sequence4.verify
+VisionEgg.ParameterTypes.Sequence4x4.verify
+VisionEgg.ParameterTypes.String.verify
+VisionEgg.ParameterTypes.SubClass.verify
+VisionEgg.ParameterTypes.Unicode.verify
+VisionEgg.ParameterTypes.UnsignedInteger.verify" class="py-name" href="#" onclick="return doclink('link-45', 'verify', 'link-4');">verify</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L201"></a><tt class="py-lineno">201</tt>  <tt class="py-line"> </tt>
+<a name="Sequence"></a><div id="Sequence-def"><a name="L202"></a><tt class="py-lineno">202</tt> <a class="py-toggle" href="#" id="Sequence-toggle" onclick="return toggle('Sequence');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.ParameterTypes.Sequence-class.html">Sequence</a><tt class="py-op">(</tt><tt class="py-base-class">ParameterTypeDef</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Sequence-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="Sequence-expanded"><a name="L203"></a><tt class="py-lineno">203</tt>  <tt class="py-line">    <tt class="py-docstring">"""A tuple, list or Numeric array"""</tt> </tt>
+<a name="Sequence.__init__"></a><div id="Sequence.__init__-def"><a name="L204"></a><tt class="py-lineno">204</tt> <a class="py-toggle" href="#" id="Sequence.__init__-toggle" onclick="return toggle('Sequence.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.ParameterTypes.Sequence-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt><tt class="py-param">item_type</tt><t [...]
+</div><div id="Sequence.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Sequence.__init__-expanded"><a name="L205"></a><tt class="py-lineno">205</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt id="link-46" class="py-name"><a title="VisionEgg.ParameterTypes.is_parameter_type_def" class="py-name" href="#" onclick="return doclink('link-46', 'is_parameter_type_def', 'link-14');">is_parameter_type_def</a [...]
+<a name="L206"></a><tt class="py-lineno">206</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">TypeError</tt><tt class="py-op">(</tt><tt class="py-string">"%s is not a valid type definition"</tt><tt class="py-op">%</tt><tt class="py-name">item_type</tt><tt class="py-op">)</tt> </tt>
+<a name="L207"></a><tt class="py-lineno">207</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">item_type</tt> <tt class="py-op">=</tt> <tt class="py-name">item_type</tt> </tt>
+</div><a name="Sequence.__str__"></a><div id="Sequence.__str__-def"><a name="L208"></a><tt class="py-lineno">208</tt> <a class="py-toggle" href="#" id="Sequence.__str__-toggle" onclick="return toggle('Sequence.__str__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.ParameterTypes.Sequence-class.html#__str__">__str__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Sequence.__str__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Sequence.__str__-expanded"><a name="L209"></a><tt class="py-lineno">209</tt>  <tt class="py-line">        <tt class="py-name">contained_string</tt> <tt class="py-op">=</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">item_type</tt><tt class="py-op">)</tt> </tt>
+<a name="L210"></a><tt class="py-lineno">210</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-string">'Sequence of %s'</tt><tt class="py-op">%</tt><tt class="py-name">contained_string</tt> </tt>
+</div><a name="Sequence.verify"></a><div id="Sequence.verify-def"><a name="L211"></a><tt class="py-lineno">211</tt> <a class="py-toggle" href="#" id="Sequence.verify-toggle" onclick="return toggle('Sequence.verify');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.ParameterTypes.Sequence-class.html#verify">verify</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt><tt class="py-param">is_sequence</tt><tt cl [...]
+</div><div id="Sequence.verify-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Sequence.verify-expanded"><a name="L212"></a><tt class="py-lineno">212</tt>  <tt class="py-line">        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L213"></a><tt class="py-lineno">213</tt>  <tt class="py-line">            <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">is_sequence</tt><tt class="py-op">)</tt> </tt>
+<a name="L214"></a><tt class="py-lineno">214</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt> <tt class="py-name">TypeError</tt><tt class="py-op">:</tt> </tt>
+<a name="L215"></a><tt class="py-lineno">215</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">False</tt> </tt>
+<a name="L216"></a><tt class="py-lineno">216</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">i</tt> <tt class="py-keyword">in</tt> <tt class="py-name">xrange</tt><tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">is_sequence</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L217"></a><tt class="py-lineno">217</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">item_type</tt><tt class="py-op">.</tt><tt id="link-47" class="py-name"><a title="VisionEgg.ParameterTypes.AnyClass.verify
+VisionEgg.ParameterTypes.AnyOf.verify
+VisionEgg.ParameterTypes.Boolean.verify
+VisionEgg.ParameterTypes.Callable.verify
+VisionEgg.ParameterTypes.Instance.verify
+VisionEgg.ParameterTypes.Integer.verify
+VisionEgg.ParameterTypes.NoneType.verify
+VisionEgg.ParameterTypes.ParameterTypeDef.verify
+VisionEgg.ParameterTypes.Real.verify
+VisionEgg.ParameterTypes.Sequence.verify
+VisionEgg.ParameterTypes.Sequence2.verify
+VisionEgg.ParameterTypes.Sequence3.verify
+VisionEgg.ParameterTypes.Sequence4.verify
+VisionEgg.ParameterTypes.Sequence4x4.verify
+VisionEgg.ParameterTypes.String.verify
+VisionEgg.ParameterTypes.SubClass.verify
+VisionEgg.ParameterTypes.Unicode.verify
+VisionEgg.ParameterTypes.UnsignedInteger.verify" class="py-name" href="#" onclick="return doclink('link-47', 'verify', 'link-4');">verify</a></tt><tt class="py-op">(</tt><tt class="py-name">is_sequence</tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L218"></a><tt class="py-lineno">218</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-name">False</tt> </tt>
+<a name="L219"></a><tt class="py-lineno">219</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">True</tt> </tt>
+</div></div><a name="L220"></a><tt class="py-lineno">220</tt>  <tt class="py-line"> </tt>
+<a name="Sequence2"></a><div id="Sequence2-def"><a name="L221"></a><tt class="py-lineno">221</tt> <a class="py-toggle" href="#" id="Sequence2-toggle" onclick="return toggle('Sequence2');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.ParameterTypes.Sequence2-class.html">Sequence2</a><tt class="py-op">(</tt><tt class="py-base-class">Sequence</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Sequence2-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="Sequence2-expanded"><a name="Sequence2.__str__"></a><div id="Sequence2.__str__-def"><a name="L222"></a><tt class="py-lineno">222</tt> <a class="py-toggle" href="#" id="Sequence2.__str__-toggle" onclick="return toggle('Sequence2.__str__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.ParameterTypes.Sequence2-class.html#__str__">__str__</a [...]
+</div><div id="Sequence2.__str__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Sequence2.__str__-expanded"><a name="L223"></a><tt class="py-lineno">223</tt>  <tt class="py-line">        <tt class="py-name">contained_string</tt> <tt class="py-op">=</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">item_type</tt><tt class="py-op">)</tt> </tt>
+<a name="L224"></a><tt class="py-lineno">224</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-string">'Sequence2 of %s'</tt><tt class="py-op">%</tt><tt class="py-name">contained_string</tt> </tt>
+</div><a name="Sequence2.verify"></a><div id="Sequence2.verify-def"><a name="L225"></a><tt class="py-lineno">225</tt> <a class="py-toggle" href="#" id="Sequence2.verify-toggle" onclick="return toggle('Sequence2.verify');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.ParameterTypes.Sequence2-class.html#verify">verify</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt><tt class="py-param">is_sequence2</tt> [...]
+</div><div id="Sequence2.verify-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Sequence2.verify-expanded"><a name="L226"></a><tt class="py-lineno">226</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt id="link-48" class="py-name"><a title="VisionEgg.ParameterTypes.Sequence" class="py-name" href="#" onclick="return doclink('link-48', 'Sequence', 'link-7');">Sequence</a></tt><tt class="py-op">.</tt><tt id="link [...]
+VisionEgg.ParameterTypes.AnyOf.verify
+VisionEgg.ParameterTypes.Boolean.verify
+VisionEgg.ParameterTypes.Callable.verify
+VisionEgg.ParameterTypes.Instance.verify
+VisionEgg.ParameterTypes.Integer.verify
+VisionEgg.ParameterTypes.NoneType.verify
+VisionEgg.ParameterTypes.ParameterTypeDef.verify
+VisionEgg.ParameterTypes.Real.verify
+VisionEgg.ParameterTypes.Sequence.verify
+VisionEgg.ParameterTypes.Sequence2.verify
+VisionEgg.ParameterTypes.Sequence3.verify
+VisionEgg.ParameterTypes.Sequence4.verify
+VisionEgg.ParameterTypes.Sequence4x4.verify
+VisionEgg.ParameterTypes.String.verify
+VisionEgg.ParameterTypes.SubClass.verify
+VisionEgg.ParameterTypes.Unicode.verify
+VisionEgg.ParameterTypes.UnsignedInteger.verify" class="py-name" href="#" onclick="return doclink('link-49', 'verify', 'link-4');">verify</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt><tt class="py-name">is_sequence2</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L227"></a><tt class="py-lineno">227</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">False</tt> </tt>
+<a name="L228"></a><tt class="py-lineno">228</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">is_sequence2</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">2</tt><tt class="py-op">:</tt> </tt>
+<a name="L229"></a><tt class="py-lineno">229</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">False</tt> </tt>
+<a name="L230"></a><tt class="py-lineno">230</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">True</tt> </tt>
+</div></div><a name="L231"></a><tt class="py-lineno">231</tt>  <tt class="py-line"> </tt>
+<a name="Sequence3"></a><div id="Sequence3-def"><a name="L232"></a><tt class="py-lineno">232</tt> <a class="py-toggle" href="#" id="Sequence3-toggle" onclick="return toggle('Sequence3');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.ParameterTypes.Sequence3-class.html">Sequence3</a><tt class="py-op">(</tt><tt class="py-base-class">Sequence</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Sequence3-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="Sequence3-expanded"><a name="Sequence3.__str__"></a><div id="Sequence3.__str__-def"><a name="L233"></a><tt class="py-lineno">233</tt> <a class="py-toggle" href="#" id="Sequence3.__str__-toggle" onclick="return toggle('Sequence3.__str__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.ParameterTypes.Sequence3-class.html#__str__">__str__</a [...]
+</div><div id="Sequence3.__str__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Sequence3.__str__-expanded"><a name="L234"></a><tt class="py-lineno">234</tt>  <tt class="py-line">        <tt class="py-name">contained_string</tt> <tt class="py-op">=</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">item_type</tt><tt class="py-op">)</tt> </tt>
+<a name="L235"></a><tt class="py-lineno">235</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-string">'Sequence3 of %s'</tt><tt class="py-op">%</tt><tt class="py-name">contained_string</tt> </tt>
+</div><a name="Sequence3.verify"></a><div id="Sequence3.verify-def"><a name="L236"></a><tt class="py-lineno">236</tt> <a class="py-toggle" href="#" id="Sequence3.verify-toggle" onclick="return toggle('Sequence3.verify');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.ParameterTypes.Sequence3-class.html#verify">verify</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt><tt class="py-param">is_sequence3</tt> [...]
+</div><div id="Sequence3.verify-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Sequence3.verify-expanded"><a name="L237"></a><tt class="py-lineno">237</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt id="link-50" class="py-name"><a title="VisionEgg.ParameterTypes.Sequence" class="py-name" href="#" onclick="return doclink('link-50', 'Sequence', 'link-7');">Sequence</a></tt><tt class="py-op">.</tt><tt id="link [...]
+VisionEgg.ParameterTypes.AnyOf.verify
+VisionEgg.ParameterTypes.Boolean.verify
+VisionEgg.ParameterTypes.Callable.verify
+VisionEgg.ParameterTypes.Instance.verify
+VisionEgg.ParameterTypes.Integer.verify
+VisionEgg.ParameterTypes.NoneType.verify
+VisionEgg.ParameterTypes.ParameterTypeDef.verify
+VisionEgg.ParameterTypes.Real.verify
+VisionEgg.ParameterTypes.Sequence.verify
+VisionEgg.ParameterTypes.Sequence2.verify
+VisionEgg.ParameterTypes.Sequence3.verify
+VisionEgg.ParameterTypes.Sequence4.verify
+VisionEgg.ParameterTypes.Sequence4x4.verify
+VisionEgg.ParameterTypes.String.verify
+VisionEgg.ParameterTypes.SubClass.verify
+VisionEgg.ParameterTypes.Unicode.verify
+VisionEgg.ParameterTypes.UnsignedInteger.verify" class="py-name" href="#" onclick="return doclink('link-51', 'verify', 'link-4');">verify</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt><tt class="py-name">is_sequence3</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L238"></a><tt class="py-lineno">238</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">False</tt> </tt>
+<a name="L239"></a><tt class="py-lineno">239</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">is_sequence3</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">3</tt><tt class="py-op">:</tt> </tt>
+<a name="L240"></a><tt class="py-lineno">240</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">False</tt> </tt>
+<a name="L241"></a><tt class="py-lineno">241</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">True</tt> </tt>
+</div></div><a name="L242"></a><tt class="py-lineno">242</tt>  <tt class="py-line"> </tt>
+<a name="Sequence4"></a><div id="Sequence4-def"><a name="L243"></a><tt class="py-lineno">243</tt> <a class="py-toggle" href="#" id="Sequence4-toggle" onclick="return toggle('Sequence4');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.ParameterTypes.Sequence4-class.html">Sequence4</a><tt class="py-op">(</tt><tt class="py-base-class">Sequence</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Sequence4-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="Sequence4-expanded"><a name="Sequence4.__str__"></a><div id="Sequence4.__str__-def"><a name="L244"></a><tt class="py-lineno">244</tt> <a class="py-toggle" href="#" id="Sequence4.__str__-toggle" onclick="return toggle('Sequence4.__str__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.ParameterTypes.Sequence4-class.html#__str__">__str__</a [...]
+</div><div id="Sequence4.__str__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Sequence4.__str__-expanded"><a name="L245"></a><tt class="py-lineno">245</tt>  <tt class="py-line">        <tt class="py-name">contained_string</tt> <tt class="py-op">=</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">item_type</tt><tt class="py-op">)</tt> </tt>
+<a name="L246"></a><tt class="py-lineno">246</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-string">'Sequence4 of %s'</tt><tt class="py-op">%</tt><tt class="py-name">contained_string</tt> </tt>
+</div><a name="Sequence4.verify"></a><div id="Sequence4.verify-def"><a name="L247"></a><tt class="py-lineno">247</tt> <a class="py-toggle" href="#" id="Sequence4.verify-toggle" onclick="return toggle('Sequence4.verify');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.ParameterTypes.Sequence4-class.html#verify">verify</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt><tt class="py-param">is_sequence4</tt> [...]
+</div><div id="Sequence4.verify-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Sequence4.verify-expanded"><a name="L248"></a><tt class="py-lineno">248</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt id="link-52" class="py-name"><a title="VisionEgg.ParameterTypes.Sequence" class="py-name" href="#" onclick="return doclink('link-52', 'Sequence', 'link-7');">Sequence</a></tt><tt class="py-op">.</tt><tt id="link [...]
+VisionEgg.ParameterTypes.AnyOf.verify
+VisionEgg.ParameterTypes.Boolean.verify
+VisionEgg.ParameterTypes.Callable.verify
+VisionEgg.ParameterTypes.Instance.verify
+VisionEgg.ParameterTypes.Integer.verify
+VisionEgg.ParameterTypes.NoneType.verify
+VisionEgg.ParameterTypes.ParameterTypeDef.verify
+VisionEgg.ParameterTypes.Real.verify
+VisionEgg.ParameterTypes.Sequence.verify
+VisionEgg.ParameterTypes.Sequence2.verify
+VisionEgg.ParameterTypes.Sequence3.verify
+VisionEgg.ParameterTypes.Sequence4.verify
+VisionEgg.ParameterTypes.Sequence4x4.verify
+VisionEgg.ParameterTypes.String.verify
+VisionEgg.ParameterTypes.SubClass.verify
+VisionEgg.ParameterTypes.Unicode.verify
+VisionEgg.ParameterTypes.UnsignedInteger.verify" class="py-name" href="#" onclick="return doclink('link-53', 'verify', 'link-4');">verify</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt><tt class="py-name">is_sequence4</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L249"></a><tt class="py-lineno">249</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">False</tt> </tt>
+<a name="L250"></a><tt class="py-lineno">250</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">is_sequence4</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">4</tt><tt class="py-op">:</tt> </tt>
+<a name="L251"></a><tt class="py-lineno">251</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">False</tt> </tt>
+<a name="L252"></a><tt class="py-lineno">252</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">True</tt> </tt>
+</div></div><a name="L253"></a><tt class="py-lineno">253</tt>  <tt class="py-line"> </tt>
+<a name="Sequence4x4"></a><div id="Sequence4x4-def"><a name="L254"></a><tt class="py-lineno">254</tt> <a class="py-toggle" href="#" id="Sequence4x4-toggle" onclick="return toggle('Sequence4x4');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.ParameterTypes.Sequence4x4-class.html">Sequence4x4</a><tt class="py-op">(</tt><tt class="py-base-class">Sequence4</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Sequence4x4-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="Sequence4x4-expanded"><a name="Sequence4x4.__str__"></a><div id="Sequence4x4.__str__-def"><a name="L255"></a><tt class="py-lineno">255</tt> <a class="py-toggle" href="#" id="Sequence4x4.__str__-toggle" onclick="return toggle('Sequence4x4.__str__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.ParameterTypes.Sequence4x4-class.html#__str [...]
+</div><div id="Sequence4x4.__str__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Sequence4x4.__str__-expanded"><a name="L256"></a><tt class="py-lineno">256</tt>  <tt class="py-line">        <tt class="py-name">contained_string</tt> <tt class="py-op">=</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">item_type</tt><tt class="py-op">)</tt> </tt>
+<a name="L257"></a><tt class="py-lineno">257</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-string">'Sequence4x4 of %s'</tt><tt class="py-op">%</tt><tt class="py-name">contained_string</tt> </tt>
+</div><a name="Sequence4x4.verify"></a><div id="Sequence4x4.verify-def"><a name="L258"></a><tt class="py-lineno">258</tt> <a class="py-toggle" href="#" id="Sequence4x4.verify-toggle" onclick="return toggle('Sequence4x4.verify');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.ParameterTypes.Sequence4x4-class.html#verify">verify</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt><tt class="py-param">is_sequ [...]
+</div><div id="Sequence4x4.verify-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Sequence4x4.verify-expanded"><a name="L259"></a><tt class="py-lineno">259</tt>  <tt class="py-line">        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L260"></a><tt class="py-lineno">260</tt>  <tt class="py-line">            <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">is_sequence4x4</tt><tt class="py-op">)</tt> </tt>
+<a name="L261"></a><tt class="py-lineno">261</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt> <tt class="py-name">TypeError</tt><tt class="py-op">:</tt> </tt>
+<a name="L262"></a><tt class="py-lineno">262</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">False</tt> </tt>
+<a name="L263"></a><tt class="py-lineno">263</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">is_sequence4x4</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">4</tt><tt class="py-op">:</tt> </tt>
+<a name="L264"></a><tt class="py-lineno">264</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">False</tt> </tt>
+<a name="L265"></a><tt class="py-lineno">265</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">i</tt> <tt class="py-keyword">in</tt> <tt class="py-name">range</tt><tt class="py-op">(</tt><tt class="py-number">4</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L266"></a><tt class="py-lineno">266</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt id="link-54" class="py-name" targets="Class VisionEgg.ParameterTypes.Sequence4=VisionEgg.ParameterTypes.Sequence4-class.html"><a title="VisionEgg.ParameterTypes.Sequence4" class="py-name" href="#" onclick="return doclink('link-54', 'Sequence4', 'link-54');">Sequence4</a></tt><tt class="py-op">.</tt><tt id="link-55" class="py-name"><a title= [...]
+VisionEgg.ParameterTypes.AnyOf.verify
+VisionEgg.ParameterTypes.Boolean.verify
+VisionEgg.ParameterTypes.Callable.verify
+VisionEgg.ParameterTypes.Instance.verify
+VisionEgg.ParameterTypes.Integer.verify
+VisionEgg.ParameterTypes.NoneType.verify
+VisionEgg.ParameterTypes.ParameterTypeDef.verify
+VisionEgg.ParameterTypes.Real.verify
+VisionEgg.ParameterTypes.Sequence.verify
+VisionEgg.ParameterTypes.Sequence2.verify
+VisionEgg.ParameterTypes.Sequence3.verify
+VisionEgg.ParameterTypes.Sequence4.verify
+VisionEgg.ParameterTypes.Sequence4x4.verify
+VisionEgg.ParameterTypes.String.verify
+VisionEgg.ParameterTypes.SubClass.verify
+VisionEgg.ParameterTypes.Unicode.verify
+VisionEgg.ParameterTypes.UnsignedInteger.verify" class="py-name" href="#" onclick="return doclink('link-55', 'verify', 'link-4');">verify</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt><tt class="py-name">is_sequence4x4</tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L267"></a><tt class="py-lineno">267</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-name">False</tt> </tt>
+<a name="L268"></a><tt class="py-lineno">268</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">True</tt> </tt>
+</div></div><a name="L269"></a><tt class="py-lineno">269</tt>  <tt class="py-line"> </tt>
+<a name="StringMC"></a><div id="StringMC-def"><a name="L270"></a><tt class="py-lineno">270</tt> <a class="py-toggle" href="#" id="StringMC-toggle" onclick="return toggle('StringMC');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.ParameterTypes.StringMC-class.html">StringMC</a><tt class="py-op">(</tt><tt class="py-base-class">type</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="StringMC-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="StringMC-expanded"><a name="L271"></a><tt class="py-lineno">271</tt>  <tt class="py-line">    <tt class="py-docstring">"""metaclass for String"""</tt> </tt>
+<a name="StringMC.__str__"></a><div id="StringMC.__str__-def"><a name="L272"></a><tt class="py-lineno">272</tt> <a class="py-toggle" href="#" id="StringMC.__str__-toggle" onclick="return toggle('StringMC.__str__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.ParameterTypes.StringMC-class.html#__str__">__str__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="StringMC.__str__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="StringMC.__str__-expanded"><a name="L273"></a><tt class="py-lineno">273</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-string">'String'</tt> </tt>
+</div></div><a name="L274"></a><tt class="py-lineno">274</tt>  <tt class="py-line"> </tt>
+<a name="String"></a><div id="String-def"><a name="L275"></a><tt class="py-lineno">275</tt> <a class="py-toggle" href="#" id="String-toggle" onclick="return toggle('String');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.ParameterTypes.String-class.html">String</a><tt class="py-op">(</tt><tt class="py-base-class">ParameterTypeDef</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="String-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="String-expanded"><a name="L276"></a><tt class="py-lineno">276</tt>  <tt class="py-line">    <tt class="py-name">__metaclass__</tt> <tt class="py-op">=</tt> <tt id="link-56" class="py-name" targets="Class VisionEgg.ParameterTypes.StringMC=VisionEgg.ParameterTypes.StringMC-class.html"><a title="VisionEgg.ParameterTypes.StringMC" class="py-name" href="#" onclick="return doclink('link-56', 'StringMC [...]
+<a name="String.verify"></a><div id="String.verify-def"><a name="L277"></a><tt class="py-lineno">277</tt> <a class="py-toggle" href="#" id="String.verify-toggle" onclick="return toggle('String.verify');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.ParameterTypes.String-class.html#verify">verify</a><tt class="py-op">(</tt><tt class="py-param">is_string</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="String.verify-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="String.verify-expanded"><a name="L278"></a><tt class="py-lineno">278</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">is_string</tt><tt class="py-op">,</tt><tt class="py-name">str</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L279"></a><tt class="py-lineno">279</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">True</tt> </tt>
+<a name="L280"></a><tt class="py-lineno">280</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L281"></a><tt class="py-lineno">281</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">False</tt> </tt>
+</div><a name="L282"></a><tt class="py-lineno">282</tt>  <tt class="py-line">    <tt id="link-57" class="py-name"><a title="VisionEgg.ParameterTypes.AnyClass.verify
+VisionEgg.ParameterTypes.AnyOf.verify
+VisionEgg.ParameterTypes.Boolean.verify
+VisionEgg.ParameterTypes.Callable.verify
+VisionEgg.ParameterTypes.Instance.verify
+VisionEgg.ParameterTypes.Integer.verify
+VisionEgg.ParameterTypes.NoneType.verify
+VisionEgg.ParameterTypes.ParameterTypeDef.verify
+VisionEgg.ParameterTypes.Real.verify
+VisionEgg.ParameterTypes.Sequence.verify
+VisionEgg.ParameterTypes.Sequence2.verify
+VisionEgg.ParameterTypes.Sequence3.verify
+VisionEgg.ParameterTypes.Sequence4.verify
+VisionEgg.ParameterTypes.Sequence4x4.verify
+VisionEgg.ParameterTypes.String.verify
+VisionEgg.ParameterTypes.SubClass.verify
+VisionEgg.ParameterTypes.Unicode.verify
+VisionEgg.ParameterTypes.UnsignedInteger.verify" class="py-name" href="#" onclick="return doclink('link-57', 'verify', 'link-4');">verify</a></tt> <tt class="py-op">=</tt> <tt class="py-name">staticmethod</tt><tt class="py-op">(</tt><tt id="link-58" class="py-name"><a title="VisionEgg.ParameterTypes.AnyClass.verify
+VisionEgg.ParameterTypes.AnyOf.verify
+VisionEgg.ParameterTypes.Boolean.verify
+VisionEgg.ParameterTypes.Callable.verify
+VisionEgg.ParameterTypes.Instance.verify
+VisionEgg.ParameterTypes.Integer.verify
+VisionEgg.ParameterTypes.NoneType.verify
+VisionEgg.ParameterTypes.ParameterTypeDef.verify
+VisionEgg.ParameterTypes.Real.verify
+VisionEgg.ParameterTypes.Sequence.verify
+VisionEgg.ParameterTypes.Sequence2.verify
+VisionEgg.ParameterTypes.Sequence3.verify
+VisionEgg.ParameterTypes.Sequence4.verify
+VisionEgg.ParameterTypes.Sequence4x4.verify
+VisionEgg.ParameterTypes.String.verify
+VisionEgg.ParameterTypes.SubClass.verify
+VisionEgg.ParameterTypes.Unicode.verify
+VisionEgg.ParameterTypes.UnsignedInteger.verify" class="py-name" href="#" onclick="return doclink('link-58', 'verify', 'link-4');">verify</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L283"></a><tt class="py-lineno">283</tt>  <tt class="py-line"> </tt>
+<a name="UnicodeMC"></a><div id="UnicodeMC-def"><a name="L284"></a><tt class="py-lineno">284</tt> <a class="py-toggle" href="#" id="UnicodeMC-toggle" onclick="return toggle('UnicodeMC');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.ParameterTypes.UnicodeMC-class.html">UnicodeMC</a><tt class="py-op">(</tt><tt class="py-base-class">type</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="UnicodeMC-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="UnicodeMC-expanded"><a name="L285"></a><tt class="py-lineno">285</tt>  <tt class="py-line">    <tt class="py-docstring">"""metaclass for Unicode"""</tt> </tt>
+<a name="UnicodeMC.__str__"></a><div id="UnicodeMC.__str__-def"><a name="L286"></a><tt class="py-lineno">286</tt> <a class="py-toggle" href="#" id="UnicodeMC.__str__-toggle" onclick="return toggle('UnicodeMC.__str__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.ParameterTypes.UnicodeMC-class.html#__str__">__str__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="UnicodeMC.__str__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="UnicodeMC.__str__-expanded"><a name="L287"></a><tt class="py-lineno">287</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-string">'Unicode'</tt> </tt>
+</div></div><a name="L288"></a><tt class="py-lineno">288</tt>  <tt class="py-line"> </tt>
+<a name="Unicode"></a><div id="Unicode-def"><a name="L289"></a><tt class="py-lineno">289</tt> <a class="py-toggle" href="#" id="Unicode-toggle" onclick="return toggle('Unicode');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.ParameterTypes.Unicode-class.html">Unicode</a><tt class="py-op">(</tt><tt class="py-base-class">ParameterTypeDef</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Unicode-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="Unicode-expanded"><a name="L290"></a><tt class="py-lineno">290</tt>  <tt class="py-line">    <tt class="py-name">__metaclass__</tt> <tt class="py-op">=</tt> <tt id="link-59" class="py-name" targets="Class VisionEgg.ParameterTypes.UnicodeMC=VisionEgg.ParameterTypes.UnicodeMC-class.html"><a title="VisionEgg.ParameterTypes.UnicodeMC" class="py-name" href="#" onclick="return doclink('link-59', 'Uni [...]
+<a name="Unicode.verify"></a><div id="Unicode.verify-def"><a name="L291"></a><tt class="py-lineno">291</tt> <a class="py-toggle" href="#" id="Unicode.verify-toggle" onclick="return toggle('Unicode.verify');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.ParameterTypes.Unicode-class.html#verify">verify</a><tt class="py-op">(</tt><tt class="py-param">is_unicode</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Unicode.verify-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Unicode.verify-expanded"><a name="L292"></a><tt class="py-lineno">292</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">is_unicode</tt><tt class="py-op">,</tt><tt class="py-name">unicode</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L293"></a><tt class="py-lineno">293</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">True</tt> </tt>
+<a name="L294"></a><tt class="py-lineno">294</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L295"></a><tt class="py-lineno">295</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">False</tt> </tt>
+</div><a name="L296"></a><tt class="py-lineno">296</tt>  <tt class="py-line">    <tt id="link-60" class="py-name"><a title="VisionEgg.ParameterTypes.AnyClass.verify
+VisionEgg.ParameterTypes.AnyOf.verify
+VisionEgg.ParameterTypes.Boolean.verify
+VisionEgg.ParameterTypes.Callable.verify
+VisionEgg.ParameterTypes.Instance.verify
+VisionEgg.ParameterTypes.Integer.verify
+VisionEgg.ParameterTypes.NoneType.verify
+VisionEgg.ParameterTypes.ParameterTypeDef.verify
+VisionEgg.ParameterTypes.Real.verify
+VisionEgg.ParameterTypes.Sequence.verify
+VisionEgg.ParameterTypes.Sequence2.verify
+VisionEgg.ParameterTypes.Sequence3.verify
+VisionEgg.ParameterTypes.Sequence4.verify
+VisionEgg.ParameterTypes.Sequence4x4.verify
+VisionEgg.ParameterTypes.String.verify
+VisionEgg.ParameterTypes.SubClass.verify
+VisionEgg.ParameterTypes.Unicode.verify
+VisionEgg.ParameterTypes.UnsignedInteger.verify" class="py-name" href="#" onclick="return doclink('link-60', 'verify', 'link-4');">verify</a></tt> <tt class="py-op">=</tt> <tt class="py-name">staticmethod</tt><tt class="py-op">(</tt><tt id="link-61" class="py-name"><a title="VisionEgg.ParameterTypes.AnyClass.verify
+VisionEgg.ParameterTypes.AnyOf.verify
+VisionEgg.ParameterTypes.Boolean.verify
+VisionEgg.ParameterTypes.Callable.verify
+VisionEgg.ParameterTypes.Instance.verify
+VisionEgg.ParameterTypes.Integer.verify
+VisionEgg.ParameterTypes.NoneType.verify
+VisionEgg.ParameterTypes.ParameterTypeDef.verify
+VisionEgg.ParameterTypes.Real.verify
+VisionEgg.ParameterTypes.Sequence.verify
+VisionEgg.ParameterTypes.Sequence2.verify
+VisionEgg.ParameterTypes.Sequence3.verify
+VisionEgg.ParameterTypes.Sequence4.verify
+VisionEgg.ParameterTypes.Sequence4x4.verify
+VisionEgg.ParameterTypes.String.verify
+VisionEgg.ParameterTypes.SubClass.verify
+VisionEgg.ParameterTypes.Unicode.verify
+VisionEgg.ParameterTypes.UnsignedInteger.verify" class="py-name" href="#" onclick="return doclink('link-61', 'verify', 'link-4');">verify</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L297"></a><tt class="py-lineno">297</tt>  <tt class="py-line"> </tt>
+<a name="get_type"></a><div id="get_type-def"><a name="L298"></a><tt class="py-lineno">298</tt> <a class="py-toggle" href="#" id="get_type-toggle" onclick="return toggle('get_type');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.ParameterTypes-module.html#get_type">get_type</a><tt class="py-op">(</tt><tt class="py-param">value</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="get_type-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="get_type-expanded"><a name="L299"></a><tt class="py-lineno">299</tt>  <tt class="py-line">    <tt class="py-docstring">"""Take a value and return best guess of ParameterTypeDef it is."""</tt> </tt>
+<a name="L300"></a><tt class="py-lineno">300</tt>  <tt class="py-line">    <tt class="py-name">py_type</tt> <tt class="py-op">=</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">)</tt> </tt>
+<a name="L301"></a><tt class="py-lineno">301</tt>  <tt class="py-line"> </tt>
+<a name="L302"></a><tt class="py-lineno">302</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">,</tt><tt class="py-name">bool</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L303"></a><tt class="py-lineno">303</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt id="link-62" class="py-name" targets="Class VisionEgg.ParameterTypes.Boolean=VisionEgg.ParameterTypes.Boolean-class.html"><a title="VisionEgg.ParameterTypes.Boolean" class="py-name" href="#" onclick="return doclink('link-62', 'Boolean', 'link-62');">Boolean</a></tt> </tt>
+<a name="L304"></a><tt class="py-lineno">304</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt class="py-name">value</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L305"></a><tt class="py-lineno">305</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt id="link-63" class="py-name"><a title="VisionEgg.ParameterTypes.NoneType" class="py-name" href="#" onclick="return doclink('link-63', 'NoneType', 'link-13');">NoneType</a></tt> </tt>
+<a name="L306"></a><tt class="py-lineno">306</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">,</tt><tt class="py-op">(</tt><tt id="link-64" class="py-name"><a title="int" class="py-name" href="#" onclick="return doclink('link-64', 'int', 'link-20');">int</a></tt><tt class="py-op">,</tt><tt class="py-name">numpy</tt><tt class="py-op">.</tt><tt class="py-name">integer</ [...]
+<a name="L307"></a><tt class="py-lineno">307</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">py_type</tt> <tt class="py-op">>=</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt>
+<a name="L308"></a><tt class="py-lineno">308</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt id="link-65" class="py-name" targets="Class VisionEgg.ParameterTypes.UnsignedInteger=VisionEgg.ParameterTypes.UnsignedInteger-class.html"><a title="VisionEgg.ParameterTypes.UnsignedInteger" class="py-name" href="#" onclick="return doclink('link-65', 'UnsignedInteger', 'link-65');">UnsignedInteger</a></tt> </tt>
+<a name="L309"></a><tt class="py-lineno">309</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L310"></a><tt class="py-lineno">310</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt id="link-66" class="py-name"><a title="VisionEgg.ParameterTypes.Integer" class="py-name" href="#" onclick="return doclink('link-66', 'Integer', 'link-35');">Integer</a></tt> </tt>
+<a name="L311"></a><tt class="py-lineno">311</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">,</tt><tt class="py-op">(</tt><tt id="link-67" class="py-name"><a title="float" class="py-name" href="#" onclick="return doclink('link-67', 'float', 'link-41');">float</a></tt><tt class="py-op">,</tt><tt class="py-name">numpy</tt><tt class="py-op">.</tt><tt class="py-name">flo [...]
+<a name="L312"></a><tt class="py-lineno">312</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt id="link-68" class="py-name" targets="Class VisionEgg.ParameterTypes.Real=VisionEgg.ParameterTypes.Real-class.html"><a title="VisionEgg.ParameterTypes.Real" class="py-name" href="#" onclick="return doclink('link-68', 'Real', 'link-68');">Real</a></tt> </tt>
+<a name="L313"></a><tt class="py-lineno">313</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt class="py-name">py_type</tt> <tt class="py-op">==</tt> <tt class="py-name">types</tt><tt class="py-op">.</tt><tt class="py-name">InstanceType</tt><tt class="py-op">:</tt> </tt>
+<a name="L314"></a><tt class="py-lineno">314</tt>  <tt class="py-line">        <tt class="py-comment"># hmm, impossible to figure out appropriate class of all possible base classes</tt> </tt>
+<a name="L315"></a><tt class="py-lineno">315</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">return</tt> <tt id="link-69" class="py-name" targets="Class VisionEgg.ParameterTypes.Instance=VisionEgg.ParameterTypes.Instance-class.html"><a title="VisionEgg.ParameterTypes.Instance" class="py-name" href="#" onclick="return doclink('link-69', 'Instance', 'link-69');">Instance</a></tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">.</ [...]
+<a name="L316"></a><tt class="py-lineno">316</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt class="py-name">callable</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L317"></a><tt class="py-lineno">317</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt id="link-70" class="py-name" targets="Class VisionEgg.ParameterTypes.Callable=VisionEgg.ParameterTypes.Callable-class.html"><a title="VisionEgg.ParameterTypes.Callable" class="py-name" href="#" onclick="return doclink('link-70', 'Callable', 'link-70');">Callable</a></tt> </tt>
+<a name="L318"></a><tt class="py-lineno">318</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L319"></a><tt class="py-lineno">319</tt>  <tt class="py-line">        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L320"></a><tt class="py-lineno">320</tt>  <tt class="py-line">            <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">)</tt> </tt>
+<a name="L321"></a><tt class="py-lineno">321</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt> <tt class="py-name">TypeError</tt><tt class="py-op">:</tt> </tt>
+<a name="L322"></a><tt class="py-lineno">322</tt>  <tt class="py-line">            <tt class="py-name">is_sequence</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
+<a name="L323"></a><tt class="py-lineno">323</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L324"></a><tt class="py-lineno">324</tt>  <tt class="py-line">            <tt class="py-name">is_sequence</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
+<a name="L325"></a><tt class="py-lineno">325</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">is_sequence</tt><tt class="py-op">:</tt> </tt>
+<a name="L326"></a><tt class="py-lineno">326</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">4</tt><tt class="py-op">:</tt> </tt>
+<a name="L327"></a><tt class="py-lineno">327</tt>  <tt class="py-line">                <tt class="py-comment"># see if it's a 4x4 sequence</tt> </tt>
+<a name="L328"></a><tt class="py-lineno">328</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-name">is_sequence4x4</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
+<a name="L329"></a><tt class="py-lineno">329</tt>  <tt class="py-line">                <tt class="py-keyword">for</tt> <tt class="py-name">i</tt> <tt class="py-keyword">in</tt> <tt class="py-name">range</tt><tt class="py-op">(</tt><tt class="py-number">4</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L330"></a><tt class="py-lineno">330</tt>  <tt class="py-line">                    <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L331"></a><tt class="py-lineno">331</tt>  <tt class="py-line">                        <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L332"></a><tt class="py-lineno">332</tt>  <tt class="py-line">                    <tt class="py-keyword">except</tt> <tt class="py-name">TypeError</tt><tt class="py-op">:</tt> </tt>
+<a name="L333"></a><tt class="py-lineno">333</tt>  <tt class="py-line">                        <tt class="py-name">is_sequence4x4</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
+<a name="L334"></a><tt class="py-lineno">334</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">is_sequence4x4</tt><tt class="py-op">:</tt> </tt>
+<a name="L335"></a><tt class="py-lineno">335</tt>  <tt class="py-line">                    <tt class="py-name">sequence4x4_type</tt> <tt class="py-op">=</tt> <tt id="link-71" class="py-name" targets="Function VisionEgg.ParameterTypes.get_type()=VisionEgg.ParameterTypes-module.html#get_type,Method VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.get_type()=VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html#get_type,Function VisionEgg.get_type()=Visio [...]
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.get_type
+VisionEgg.get_type" class="py-name" href="#" onclick="return doclink('link-71', 'get_type', 'link-71');">get_type</a></tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> <tt class="py-comment"># XXX assume all same types</tt> </tt>
+<a name="L336"></a><tt class="py-lineno">336</tt>  <tt class="py-line">                    <tt class="py-keyword">return</tt> <tt id="link-72" class="py-name" targets="Class VisionEgg.ParameterTypes.Sequence4x4=VisionEgg.ParameterTypes.Sequence4x4-class.html"><a title="VisionEgg.ParameterTypes.Sequence4x4" class="py-name" href="#" onclick="return doclink('link-72', 'Sequence4x4', 'link-72');">Sequence4x4</a></tt><tt class="py-op">(</tt><tt class="py-name">sequence4x4_type</tt><tt class=" [...]
+<a name="L337"></a><tt class="py-lineno">337</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-name">str</tt><tt class="py-op">:</tt> </tt>
+<a name="L338"></a><tt class="py-lineno">338</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt id="link-73" class="py-name" targets="Class VisionEgg.ParameterTypes.String=VisionEgg.ParameterTypes.String-class.html"><a title="VisionEgg.ParameterTypes.String" class="py-name" href="#" onclick="return doclink('link-73', 'String', 'link-73');">String</a></tt> </tt>
+<a name="L339"></a><tt class="py-lineno">339</tt>  <tt class="py-line">            <tt class="py-name">lcd_type</tt> <tt class="py-op">=</tt> <tt id="link-74" class="py-name"><a title="VisionEgg.ParameterTypes.get_type
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.get_type
+VisionEgg.get_type" class="py-name" href="#" onclick="return doclink('link-74', 'get_type', 'link-71');">get_type</a></tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> <tt class="py-comment"># lowest common denominator type</tt> </tt>
+<a name="L340"></a><tt class="py-lineno">340</tt>  <tt class="py-line">            <tt class="py-keyword">for</tt> <tt class="py-name">i</tt> <tt class="py-keyword">in</tt> <tt class="py-name">range</tt><tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L341"></a><tt class="py-lineno">341</tt>  <tt class="py-line">                <tt class="py-name">this_type</tt> <tt class="py-op">=</tt> <tt id="link-75" class="py-name"><a title="VisionEgg.ParameterTypes.get_type
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.get_type
+VisionEgg.get_type" class="py-name" href="#" onclick="return doclink('link-75', 'get_type', 'link-71');">get_type</a></tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L342"></a><tt class="py-lineno">342</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">lcd_type</tt> <tt class="py-op">!=</tt> <tt class="py-name">this_type</tt><tt class="py-op">:</tt> </tt>
+<a name="L343"></a><tt class="py-lineno">343</tt>  <tt class="py-line">                    <tt class="py-comment"># find lowest common denominator type</tt> </tt>
+<a name="L344"></a><tt class="py-lineno">344</tt>  <tt class="py-line"><tt class="py-comment"></tt>                    <tt class="py-keyword">if</tt> <tt class="py-name">lcd_type</tt><tt class="py-op">.</tt><tt id="link-76" class="py-name"><a title="VisionEgg.ParameterTypes.AnyClass.verify
+VisionEgg.ParameterTypes.AnyOf.verify
+VisionEgg.ParameterTypes.Boolean.verify
+VisionEgg.ParameterTypes.Callable.verify
+VisionEgg.ParameterTypes.Instance.verify
+VisionEgg.ParameterTypes.Integer.verify
+VisionEgg.ParameterTypes.NoneType.verify
+VisionEgg.ParameterTypes.ParameterTypeDef.verify
+VisionEgg.ParameterTypes.Real.verify
+VisionEgg.ParameterTypes.Sequence.verify
+VisionEgg.ParameterTypes.Sequence2.verify
+VisionEgg.ParameterTypes.Sequence3.verify
+VisionEgg.ParameterTypes.Sequence4.verify
+VisionEgg.ParameterTypes.Sequence4x4.verify
+VisionEgg.ParameterTypes.String.verify
+VisionEgg.ParameterTypes.SubClass.verify
+VisionEgg.ParameterTypes.Unicode.verify
+VisionEgg.ParameterTypes.UnsignedInteger.verify" class="py-name" href="#" onclick="return doclink('link-76', 'verify', 'link-4');">verify</a></tt><tt class="py-op">(</tt> <tt class="py-name">this_type</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L345"></a><tt class="py-lineno">345</tt>  <tt class="py-line">                        <tt class="py-keyword">continue</tt> <tt class="py-comment"># covered by lowest common denominator</tt> </tt>
+<a name="L346"></a><tt class="py-lineno">346</tt>  <tt class="py-line">                    <tt class="py-keyword">elif</tt> <tt class="py-name">this_type</tt><tt class="py-op">.</tt><tt id="link-77" class="py-name"><a title="VisionEgg.ParameterTypes.AnyClass.verify
+VisionEgg.ParameterTypes.AnyOf.verify
+VisionEgg.ParameterTypes.Boolean.verify
+VisionEgg.ParameterTypes.Callable.verify
+VisionEgg.ParameterTypes.Instance.verify
+VisionEgg.ParameterTypes.Integer.verify
+VisionEgg.ParameterTypes.NoneType.verify
+VisionEgg.ParameterTypes.ParameterTypeDef.verify
+VisionEgg.ParameterTypes.Real.verify
+VisionEgg.ParameterTypes.Sequence.verify
+VisionEgg.ParameterTypes.Sequence2.verify
+VisionEgg.ParameterTypes.Sequence3.verify
+VisionEgg.ParameterTypes.Sequence4.verify
+VisionEgg.ParameterTypes.Sequence4x4.verify
+VisionEgg.ParameterTypes.String.verify
+VisionEgg.ParameterTypes.SubClass.verify
+VisionEgg.ParameterTypes.Unicode.verify
+VisionEgg.ParameterTypes.UnsignedInteger.verify" class="py-name" href="#" onclick="return doclink('link-77', 'verify', 'link-4');">verify</a></tt><tt class="py-op">(</tt> <tt class="py-name">lcd_type</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L347"></a><tt class="py-lineno">347</tt>  <tt class="py-line">                        <tt class="py-name">lcd_type</tt> <tt class="py-op">=</tt> <tt class="py-name">this_type</tt> <tt class="py-comment"># new lowest common denominator</tt> </tt>
+<a name="L348"></a><tt class="py-lineno">348</tt>  <tt class="py-line">                    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L349"></a><tt class="py-lineno">349</tt>  <tt class="py-line">                        <tt class="py-name">lcd_type</tt> <tt class="py-op">=</tt> <tt id="link-78" class="py-name" targets="Class VisionEgg.ParameterTypes.AnyOf=VisionEgg.ParameterTypes.AnyOf-class.html"><a title="VisionEgg.ParameterTypes.AnyOf" class="py-name" href="#" onclick="return doclink('link-78', 'AnyOf', 'link-78');">AnyOf</a></tt><tt class="py-op">(</tt> <tt class="py-name">lcd_type</tt><tt class="py-op">,< [...]
+<a name="L350"></a><tt class="py-lineno">350</tt>  <tt class="py-line">            <tt class="py-name">sequence_type</tt> <tt class="py-op">=</tt> <tt class="py-name">lcd_type</tt> </tt>
+<a name="L351"></a><tt class="py-lineno">351</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">2</tt><tt class="py-op">:</tt> </tt>
+<a name="L352"></a><tt class="py-lineno">352</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt id="link-79" class="py-name" targets="Class VisionEgg.ParameterTypes.Sequence2=VisionEgg.ParameterTypes.Sequence2-class.html"><a title="VisionEgg.ParameterTypes.Sequence2" class="py-name" href="#" onclick="return doclink('link-79', 'Sequence2', 'link-79');">Sequence2</a></tt><tt class="py-op">(</tt><tt class="py-name">sequence_type</tt><tt class="py-op">)</tt> </tt>
+<a name="L353"></a><tt class="py-lineno">353</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">3</tt><tt class="py-op">:</tt> </tt>
+<a name="L354"></a><tt class="py-lineno">354</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt id="link-80" class="py-name" targets="Class VisionEgg.ParameterTypes.Sequence3=VisionEgg.ParameterTypes.Sequence3-class.html"><a title="VisionEgg.ParameterTypes.Sequence3" class="py-name" href="#" onclick="return doclink('link-80', 'Sequence3', 'link-80');">Sequence3</a></tt><tt class="py-op">(</tt><tt class="py-name">sequence_type</tt><tt class="py-op">)</tt> </tt>
+<a name="L355"></a><tt class="py-lineno">355</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">4</tt><tt class="py-op">:</tt> </tt>
+<a name="L356"></a><tt class="py-lineno">356</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt id="link-81" class="py-name"><a title="VisionEgg.ParameterTypes.Sequence4" class="py-name" href="#" onclick="return doclink('link-81', 'Sequence4', 'link-54');">Sequence4</a></tt><tt class="py-op">(</tt><tt class="py-name">sequence_type</tt><tt class="py-op">)</tt> </tt>
+<a name="L357"></a><tt class="py-lineno">357</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L358"></a><tt class="py-lineno">358</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt id="link-82" class="py-name"><a title="VisionEgg.ParameterTypes.Sequence" class="py-name" href="#" onclick="return doclink('link-82', 'Sequence', 'link-7');">Sequence</a></tt><tt class="py-op">(</tt><tt class="py-name">sequence_type</tt><tt class="py-op">)</tt> </tt>
+<a name="L359"></a><tt class="py-lineno">359</tt>  <tt class="py-line">    <tt class="py-comment"># finally, one last check:</tt> </tt>
+<a name="L360"></a><tt class="py-lineno">360</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">,</tt> <tt class="py-name">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L361"></a><tt class="py-lineno">361</tt>  <tt class="py-line">        <tt class="py-comment"># new style class</tt> </tt>
+<a name="L362"></a><tt class="py-lineno">362</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># hmm, impossible to figure out appropriate class of all possible base classes</tt> </tt>
+<a name="L363"></a><tt class="py-lineno">363</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">return</tt> <tt id="link-83" class="py-name"><a title="VisionEgg.ParameterTypes.Instance" class="py-name" href="#" onclick="return doclink('link-83', 'Instance', 'link-69');">Instance</a></tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">.</tt><tt class="py-name">__class__</tt><tt class="py-op">)</tt> </tt>
+<a name="L364"></a><tt class="py-lineno">364</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L365"></a><tt class="py-lineno">365</tt>  <tt class="py-line">        <tt class="py-keyword">raise</tt> <tt class="py-name">TypeError</tt><tt class="py-op">(</tt><tt class="py-string">"Unable to determine type for '%s'"</tt><tt class="py-op">%</tt><tt class="py-name">value</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L366"></a><tt class="py-lineno">366</tt>  <tt class="py-line"> </tt>
+<a name="assert_type"></a><div id="assert_type-def"><a name="L367"></a><tt class="py-lineno">367</tt> <a class="py-toggle" href="#" id="assert_type-toggle" onclick="return toggle('assert_type');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.ParameterTypes-module.html#assert_type">assert_type</a><tt class="py-op">(</tt><tt class="py-param">check_type</tt><tt class="py-op">,</tt><tt class="py-param">require_type</tt><tt class="py-op">)</tt [...]
+</div><div id="assert_type-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="assert_type-expanded"><a name="L368"></a><tt class="py-lineno">368</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt id="link-84" class="py-name"><a title="VisionEgg.ParameterTypes.is_parameter_type_def" class="py-name" href="#" onclick="return doclink('link-84', 'is_parameter_type_def', 'link-14');">is_parameter_type_def</a></tt><tt class="py- [...]
+<a name="L369"></a><tt class="py-lineno">369</tt>  <tt class="py-line">        <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">"require a ParameterTypeDef as argument (not %s)"</tt><tt class="py-op">%</tt><tt class="py-name">check_type</tt><tt class="py-op">)</tt> </tt>
+<a name="L370"></a><tt class="py-lineno">370</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt id="link-85" class="py-name"><a title="VisionEgg.ParameterTypes.is_parameter_type_def" class="py-name" href="#" onclick="return doclink('link-85', 'is_parameter_type_def', 'link-14');">is_parameter_type_def</a></tt><tt class="py-op">(</tt><tt class="py-name">require_type</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L371"></a><tt class="py-lineno">371</tt>  <tt class="py-line">        <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">"require a ParameterTypeDef as argument (not %s)"</tt><tt class="py-op">%</tt><tt class="py-name">require_type</tt><tt class="py-op">)</tt> </tt>
+<a name="L372"></a><tt class="py-lineno">372</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">check_type</tt> <tt class="py-op">==</tt> <tt class="py-name">require_type</tt><tt class="py-op">:</tt> </tt>
+<a name="L373"></a><tt class="py-lineno">373</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> </tt>
+<a name="L374"></a><tt class="py-lineno">374</tt>  <tt class="py-line"> </tt>
+<a name="L375"></a><tt class="py-lineno">375</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">check_type</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt id="link-86" class="py-name"><a title="VisionEgg.ParameterTypes.Integer" class="py-name" href="#" onclick="return doclink('link-86', 'Integer', 'link-35');">Integer</a></tt><tt class="py-op">,</tt><tt id="link-87" class="py-name"><a title="VisionEgg.ParameterTypes.UnsignedInteger" class="py [...]
+<a name="L376"></a><tt class="py-lineno">376</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-comment"># let integers pass as booleans</tt> </tt>
+<a name="L377"></a><tt class="py-lineno">377</tt>  <tt class="py-line">    <tt class="py-comment"># XXX doesn't check if Instance is actually instance of proper class</tt> </tt>
+<a name="L378"></a><tt class="py-lineno">378</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">check_type</tt><tt class="py-op">,</tt><tt id="link-89" class="py-name"><a title="VisionEgg.ParameterTypes.ParameterTypeDef" class="py-name" href="#" onclick="return doclink('link-89', 'ParameterTypeDef', 'link-9');">ParameterTypeDef</a></tt><tt class="py-op">)</tt><tt class="py [...]
+<a name="L379"></a><tt class="py-lineno">379</tt>  <tt class="py-line">        <tt class="py-name">check_class</tt> <tt class="py-op">=</tt> <tt class="py-name">check_type</tt><tt class="py-op">.</tt><tt class="py-name">__class__</tt> </tt>
+<a name="L380"></a><tt class="py-lineno">380</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L381"></a><tt class="py-lineno">381</tt>  <tt class="py-line">        <tt class="py-name">check_class</tt> <tt class="py-op">=</tt> <tt class="py-name">check_type</tt> </tt>
+<a name="L382"></a><tt class="py-lineno">382</tt>  <tt class="py-line"> </tt>
+<a name="L383"></a><tt class="py-lineno">383</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">require_type</tt><tt class="py-op">,</tt><tt id="link-90" class="py-name"><a title="VisionEgg.ParameterTypes.ParameterTypeDef" class="py-name" href="#" onclick="return doclink('link-90', 'ParameterTypeDef', 'link-9');">ParameterTypeDef</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L384"></a><tt class="py-lineno">384</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">require_type</tt><tt class="py-op">,</tt><tt id="link-91" class="py-name"><a title="VisionEgg.ParameterTypes.AnyOf" class="py-name" href="#" onclick="return doclink('link-91', 'AnyOf', 'link-78');">AnyOf</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L385"></a><tt class="py-lineno">385</tt>  <tt class="py-line">            <tt class="py-name">passed</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
+<a name="L386"></a><tt class="py-lineno">386</tt>  <tt class="py-line">            <tt class="py-keyword">for</tt> <tt class="py-name">ok_type</tt> <tt class="py-keyword">in</tt> <tt class="py-name">require_type</tt><tt class="py-op">.</tt><tt id="link-92" class="py-name" targets="Method VisionEgg.ParameterTypes.AnyOf.get_item_types()=VisionEgg.ParameterTypes.AnyOf-class.html#get_item_types"><a title="VisionEgg.ParameterTypes.AnyOf.get_item_types" class="py-name" href="#" onclick="return [...]
+<a name="L387"></a><tt class="py-lineno">387</tt>  <tt class="py-line">                <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L388"></a><tt class="py-lineno">388</tt>  <tt class="py-line">                    <tt id="link-93" class="py-name" targets="Function VisionEgg.ParameterTypes.assert_type()=VisionEgg.ParameterTypes-module.html#assert_type,Function VisionEgg.assert_type()=VisionEgg-module.html#assert_type"><a title="VisionEgg.ParameterTypes.assert_type
+VisionEgg.assert_type" class="py-name" href="#" onclick="return doclink('link-93', 'assert_type', 'link-93');">assert_type</a></tt><tt class="py-op">(</tt><tt class="py-name">check_type</tt><tt class="py-op">,</tt> <tt class="py-name">ok_type</tt> <tt class="py-op">)</tt> </tt>
+<a name="L389"></a><tt class="py-lineno">389</tt>  <tt class="py-line">                    <tt class="py-keyword">return</tt> <tt class="py-comment"># it's ok</tt> </tt>
+<a name="L390"></a><tt class="py-lineno">390</tt>  <tt class="py-line">                <tt class="py-keyword">except</tt><tt class="py-op">:</tt> </tt>
+<a name="L391"></a><tt class="py-lineno">391</tt>  <tt class="py-line">                    <tt class="py-keyword">pass</tt> </tt>
+<a name="L392"></a><tt class="py-lineno">392</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L393"></a><tt class="py-lineno">393</tt>  <tt class="py-line">            <tt class="py-name">require_class</tt> <tt class="py-op">=</tt> <tt class="py-name">require_type</tt><tt class="py-op">.</tt><tt class="py-name">__class__</tt> </tt>
+<a name="L394"></a><tt class="py-lineno">394</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L395"></a><tt class="py-lineno">395</tt>  <tt class="py-line">        <tt class="py-name">require_class</tt> <tt class="py-op">=</tt> <tt class="py-name">require_type</tt> </tt>
+<a name="L396"></a><tt class="py-lineno">396</tt>  <tt class="py-line"> </tt>
+<a name="L397"></a><tt class="py-lineno">397</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">require_class</tt> <tt class="py-keyword">in</tt> <tt id="link-94" class="py-name"><a title="VisionEgg.ParameterTypes.get_all_classes_list" class="py-name" href="#" onclick="return doclink('link-94', 'get_all_classes_list', 'link-6');">get_all_classes_list</a></tt><tt class="py-op">(</tt><tt class="py-name">check_class</tt><tt class="py-op">)</tt><tt class="py-op" [...]
+<a name="L398"></a><tt class="py-lineno">398</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> </tt>
+<a name="L399"></a><tt class="py-lineno">399</tt>  <tt class="py-line"> </tt>
+<a name="L400"></a><tt class="py-lineno">400</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">issubclass</tt><tt class="py-op">(</tt><tt class="py-name">require_class</tt><tt class="py-op">,</tt><tt id="link-95" class="py-name"><a title="VisionEgg.ParameterTypes.Real" class="py-name" href="#" onclick="return doclink('link-95', 'Real', 'link-68');">Real</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L401"></a><tt class="py-lineno">401</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">issubclass</tt><tt class="py-op">(</tt><tt class="py-name">check_class</tt><tt class="py-op">,</tt><tt id="link-96" class="py-name"><a title="VisionEgg.ParameterTypes.Boolean" class="py-name" href="#" onclick="return doclink('link-96', 'Boolean', 'link-62');">Boolean</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L402"></a><tt class="py-lineno">402</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> </tt>
+<a name="L403"></a><tt class="py-lineno">403</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">issubclass</tt><tt class="py-op">(</tt><tt class="py-name">check_class</tt><tt class="py-op">,</tt><tt id="link-97" class="py-name"><a title="VisionEgg.ParameterTypes.Integer" class="py-name" href="#" onclick="return doclink('link-97', 'Integer', 'link-35');">Integer</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L404"></a><tt class="py-lineno">404</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> </tt>
+<a name="L405"></a><tt class="py-lineno">405</tt>  <tt class="py-line"> </tt>
+<a name="L406"></a><tt class="py-lineno">406</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">issubclass</tt><tt class="py-op">(</tt><tt class="py-name">require_class</tt><tt class="py-op">,</tt><tt id="link-98" class="py-name"><a title="VisionEgg.ParameterTypes.Integer" class="py-name" href="#" onclick="return doclink('link-98', 'Integer', 'link-35');">Integer</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L407"></a><tt class="py-lineno">407</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">issubclass</tt><tt class="py-op">(</tt><tt class="py-name">check_class</tt><tt class="py-op">,</tt><tt id="link-99" class="py-name"><a title="VisionEgg.ParameterTypes.Boolean" class="py-name" href="#" onclick="return doclink('link-99', 'Boolean', 'link-62');">Boolean</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L408"></a><tt class="py-lineno">408</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> </tt>
+<a name="L409"></a><tt class="py-lineno">409</tt>  <tt class="py-line"> </tt>
+<a name="L410"></a><tt class="py-lineno">410</tt>  <tt class="py-line">    <tt class="py-keyword">raise</tt> <tt class="py-name">TypeError</tt><tt class="py-op">(</tt><tt class="py-string">"%s not of type %s"</tt><tt class="py-op">%</tt><tt class="py-op">(</tt><tt class="py-name">check_type</tt><tt class="py-op">,</tt><tt class="py-name">require_type</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L411"></a><tt class="py-lineno">411</tt>  <tt class="py-line"> </tt><script type="text/javascript">
+<!--
+expandto(location.href);
+// -->
+</script>
+</pre>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:48 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.ParameterTypes.AnyClass-class.html b/doc/reference/html/VisionEgg.ParameterTypes.AnyClass-class.html
new file mode 100644
index 0000000..b80940b
--- /dev/null
+++ b/doc/reference/html/VisionEgg.ParameterTypes.AnyClass-class.html
@@ -0,0 +1,243 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.ParameterTypes.AnyClass</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.ParameterTypes-module.html">Module ParameterTypes</a> ::
+        Class AnyClass
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.ParameterTypes.AnyClass-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class AnyClass</h1><span class="codelink"><a href="VisionEgg.ParameterTypes-pysrc.html#AnyClass">source code</a></span><br /><br />
+<pre class="base-tree">
+      object --+    
+               |    
+<a href="VisionEgg.ParameterTypes.ParameterTypeDef-class.html">ParameterTypeDef</a> --+
+                   |
+                  <strong class="uidshort">AnyClass</strong>
+</pre>
+
+<hr />
+<pre class="literalblock">
+parameter is a class
+
+</pre><br /><br />
+
+<!-- ==================== NESTED CLASSES ==================== -->
+<a name="section-NestedClasses"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Nested Classes</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.ParameterTypes.AnyClassMC-class.html" class="summary-name">__metaclass__</a><br />
+      metaclass for AnyClass
+    </td>
+  </tr>
+</table>
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__delattr__</code>,
+      <code>__getattribute__</code>,
+      <code>__hash__</code>,
+      <code>__init__</code>,
+      <code>__new__</code>,
+      <code>__reduce__</code>,
+      <code>__reduce_ex__</code>,
+      <code>__repr__</code>,
+      <code>__setattr__</code>,
+      <code>__str__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== STATIC METHODS ==================== -->
+<a name="section-StaticMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Static Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.ParameterTypes.AnyClass-class.html#verify" class="summary-sig-name">verify</a>(<span class="summary-sig-arg">is_class</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.ParameterTypes-pysrc.html#AnyClass.verify">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Properties</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__class__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Method Details</span></td>
+</tr>
+</table>
+<a name="verify"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">verify</span>(<span class="sig-arg">is_class</span>)</span>
+    <br /><em class="fname">Static Method</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.ParameterTypes-pysrc.html#AnyClass.verify">source code</a></span> 
+    </td>
+  </table>
+  
+  
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.ParameterTypes.ParameterTypeDef-class.html#verify">ParameterTypeDef.verify</a>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.ParameterTypes.AnyClassMC-class.html b/doc/reference/html/VisionEgg.ParameterTypes.AnyClassMC-class.html
new file mode 100644
index 0000000..97ad77c
--- /dev/null
+++ b/doc/reference/html/VisionEgg.ParameterTypes.AnyClassMC-class.html
@@ -0,0 +1,238 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.ParameterTypes.AnyClassMC</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.ParameterTypes-module.html">Module ParameterTypes</a> ::
+        Class AnyClassMC
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.ParameterTypes.AnyClassMC-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== TYPE DESCRIPTION ==================== -->
+<h1 class="epydoc">Type AnyClassMC</h1><span class="codelink"><a href="VisionEgg.ParameterTypes-pysrc.html#AnyClassMC">source code</a></span><br /><br />
+<pre class="base-tree">
+object --+    
+         |    
+      type --+
+             |
+            <strong class="uidshort">AnyClassMC</strong>
+</pre>
+
+<hr />
+<pre class="literalblock">
+metaclass for AnyClass
+
+</pre><br /><br />
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.ParameterTypes.AnyClassMC-class.html#__str__" class="summary-sig-name">__str__</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      str(x)</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.ParameterTypes-pysrc.html#AnyClassMC.__str__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>type</code></b>:
+      <code>__call__</code>,
+      <code>__cmp__</code>,
+      <code>__delattr__</code>,
+      <code>__getattribute__</code>,
+      <code>__hash__</code>,
+      <code>__new__</code>,
+      <code>__repr__</code>,
+      <code>__setattr__</code>,
+      <code>__subclasses__</code>,
+      <code>mro</code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__init__</code>,
+      <code>__reduce__</code>,
+      <code>__reduce_ex__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Properties</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>type</code></b>:
+      <code>__base__</code>,
+      <code>__bases__</code>,
+      <code>__basicsize__</code>,
+      <code>__dictoffset__</code>,
+      <code>__flags__</code>,
+      <code>__itemsize__</code>,
+      <code>__mro__</code>,
+      <code>__name__</code>,
+      <code>__weakrefoffset__</code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__class__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Method Details</span></td>
+</tr>
+</table>
+<a name="__str__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__str__</span>(<span class="sig-arg">self</span>)</span>
+    <br /><em class="fname">(Informal representation operator)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.ParameterTypes-pysrc.html#AnyClassMC.__str__">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+str(x)
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      object.__str__
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.ParameterTypes.AnyOf-class.html b/doc/reference/html/VisionEgg.ParameterTypes.AnyOf-class.html
new file mode 100644
index 0000000..203b253
--- /dev/null
+++ b/doc/reference/html/VisionEgg.ParameterTypes.AnyOf-class.html
@@ -0,0 +1,317 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.ParameterTypes.AnyOf</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.ParameterTypes-module.html">Module ParameterTypes</a> ::
+        Class AnyOf
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.ParameterTypes.AnyOf-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class AnyOf</h1><span class="codelink"><a href="VisionEgg.ParameterTypes-pysrc.html#AnyOf">source code</a></span><br /><br />
+<pre class="base-tree">
+      object --+    
+               |    
+<a href="VisionEgg.ParameterTypes.ParameterTypeDef-class.html">ParameterTypeDef</a> --+
+                   |
+                  <strong class="uidshort">AnyOf</strong>
+</pre>
+
+<hr />
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.ParameterTypes.AnyOf-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">*item_types</span>)</span><br />
+      x.__init__(...) initializes x; see x.__class__.__doc__ for signature</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.ParameterTypes-pysrc.html#AnyOf.__init__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.ParameterTypes.AnyOf-class.html#__str__" class="summary-sig-name">__str__</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      str(x)</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.ParameterTypes-pysrc.html#AnyOf.__str__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.ParameterTypes.AnyOf-class.html#verify" class="summary-sig-name">verify</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">is_any_of</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.ParameterTypes-pysrc.html#AnyOf.verify">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="get_item_types"></a><span class="summary-sig-name">get_item_types</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.ParameterTypes-pysrc.html#AnyOf.get_item_types">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__delattr__</code>,
+      <code>__getattribute__</code>,
+      <code>__hash__</code>,
+      <code>__new__</code>,
+      <code>__reduce__</code>,
+      <code>__reduce_ex__</code>,
+      <code>__repr__</code>,
+      <code>__setattr__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Properties</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__class__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Method Details</span></td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">*item_types</span>)</span>
+    <br /><em class="fname">(Constructor)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.ParameterTypes-pysrc.html#AnyOf.__init__">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+x.__init__(...) initializes x; see x.__class__.__doc__ for signature
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      object.__init__
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="__str__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__str__</span>(<span class="sig-arg">self</span>)</span>
+    <br /><em class="fname">(Informal representation operator)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.ParameterTypes-pysrc.html#AnyOf.__str__">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+str(x)
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      object.__str__
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="verify"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">verify</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">is_any_of</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.ParameterTypes-pysrc.html#AnyOf.verify">source code</a></span> 
+    </td>
+  </table>
+  
+  
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.ParameterTypes.ParameterTypeDef-class.html#verify">ParameterTypeDef.verify</a>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.ParameterTypes.Boolean-class.html b/doc/reference/html/VisionEgg.ParameterTypes.Boolean-class.html
new file mode 100644
index 0000000..178a2f0
--- /dev/null
+++ b/doc/reference/html/VisionEgg.ParameterTypes.Boolean-class.html
@@ -0,0 +1,238 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.ParameterTypes.Boolean</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.ParameterTypes-module.html">Module ParameterTypes</a> ::
+        Class Boolean
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.ParameterTypes.Boolean-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class Boolean</h1><span class="codelink"><a href="VisionEgg.ParameterTypes-pysrc.html#Boolean">source code</a></span><br /><br />
+<pre class="base-tree">
+      object --+    
+               |    
+<a href="VisionEgg.ParameterTypes.ParameterTypeDef-class.html">ParameterTypeDef</a> --+
+                   |
+                  <strong class="uidshort">Boolean</strong>
+</pre>
+
+<hr />
+<!-- ==================== NESTED CLASSES ==================== -->
+<a name="section-NestedClasses"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Nested Classes</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.ParameterTypes.BooleanMC-class.html" class="summary-name">__metaclass__</a><br />
+      metaclass for Boolean
+    </td>
+  </tr>
+</table>
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__delattr__</code>,
+      <code>__getattribute__</code>,
+      <code>__hash__</code>,
+      <code>__init__</code>,
+      <code>__new__</code>,
+      <code>__reduce__</code>,
+      <code>__reduce_ex__</code>,
+      <code>__repr__</code>,
+      <code>__setattr__</code>,
+      <code>__str__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== STATIC METHODS ==================== -->
+<a name="section-StaticMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Static Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.ParameterTypes.Boolean-class.html#verify" class="summary-sig-name">verify</a>(<span class="summary-sig-arg">is_boolean</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.ParameterTypes-pysrc.html#Boolean.verify">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Properties</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__class__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Method Details</span></td>
+</tr>
+</table>
+<a name="verify"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">verify</span>(<span class="sig-arg">is_boolean</span>)</span>
+    <br /><em class="fname">Static Method</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.ParameterTypes-pysrc.html#Boolean.verify">source code</a></span> 
+    </td>
+  </table>
+  
+  
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.ParameterTypes.ParameterTypeDef-class.html#verify">ParameterTypeDef.verify</a>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.ParameterTypes.BooleanMC-class.html b/doc/reference/html/VisionEgg.ParameterTypes.BooleanMC-class.html
new file mode 100644
index 0000000..bbd01fd
--- /dev/null
+++ b/doc/reference/html/VisionEgg.ParameterTypes.BooleanMC-class.html
@@ -0,0 +1,238 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.ParameterTypes.BooleanMC</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.ParameterTypes-module.html">Module ParameterTypes</a> ::
+        Class BooleanMC
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.ParameterTypes.BooleanMC-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== TYPE DESCRIPTION ==================== -->
+<h1 class="epydoc">Type BooleanMC</h1><span class="codelink"><a href="VisionEgg.ParameterTypes-pysrc.html#BooleanMC">source code</a></span><br /><br />
+<pre class="base-tree">
+object --+    
+         |    
+      type --+
+             |
+            <strong class="uidshort">BooleanMC</strong>
+</pre>
+
+<hr />
+<pre class="literalblock">
+metaclass for Boolean
+
+</pre><br /><br />
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.ParameterTypes.BooleanMC-class.html#__str__" class="summary-sig-name">__str__</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      str(x)</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.ParameterTypes-pysrc.html#BooleanMC.__str__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>type</code></b>:
+      <code>__call__</code>,
+      <code>__cmp__</code>,
+      <code>__delattr__</code>,
+      <code>__getattribute__</code>,
+      <code>__hash__</code>,
+      <code>__new__</code>,
+      <code>__repr__</code>,
+      <code>__setattr__</code>,
+      <code>__subclasses__</code>,
+      <code>mro</code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__init__</code>,
+      <code>__reduce__</code>,
+      <code>__reduce_ex__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Properties</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>type</code></b>:
+      <code>__base__</code>,
+      <code>__bases__</code>,
+      <code>__basicsize__</code>,
+      <code>__dictoffset__</code>,
+      <code>__flags__</code>,
+      <code>__itemsize__</code>,
+      <code>__mro__</code>,
+      <code>__name__</code>,
+      <code>__weakrefoffset__</code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__class__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Method Details</span></td>
+</tr>
+</table>
+<a name="__str__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__str__</span>(<span class="sig-arg">self</span>)</span>
+    <br /><em class="fname">(Informal representation operator)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.ParameterTypes-pysrc.html#BooleanMC.__str__">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+str(x)
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      object.__str__
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.ParameterTypes.Callable-class.html b/doc/reference/html/VisionEgg.ParameterTypes.Callable-class.html
new file mode 100644
index 0000000..a904590
--- /dev/null
+++ b/doc/reference/html/VisionEgg.ParameterTypes.Callable-class.html
@@ -0,0 +1,238 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.ParameterTypes.Callable</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.ParameterTypes-module.html">Module ParameterTypes</a> ::
+        Class Callable
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.ParameterTypes.Callable-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class Callable</h1><span class="codelink"><a href="VisionEgg.ParameterTypes-pysrc.html#Callable">source code</a></span><br /><br />
+<pre class="base-tree">
+      object --+    
+               |    
+<a href="VisionEgg.ParameterTypes.ParameterTypeDef-class.html">ParameterTypeDef</a> --+
+                   |
+                  <strong class="uidshort">Callable</strong>
+</pre>
+
+<hr />
+<!-- ==================== NESTED CLASSES ==================== -->
+<a name="section-NestedClasses"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Nested Classes</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.ParameterTypes.CallableMC-class.html" class="summary-name">__metaclass__</a><br />
+      metaclass for Callable
+    </td>
+  </tr>
+</table>
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__delattr__</code>,
+      <code>__getattribute__</code>,
+      <code>__hash__</code>,
+      <code>__init__</code>,
+      <code>__new__</code>,
+      <code>__reduce__</code>,
+      <code>__reduce_ex__</code>,
+      <code>__repr__</code>,
+      <code>__setattr__</code>,
+      <code>__str__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== STATIC METHODS ==================== -->
+<a name="section-StaticMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Static Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.ParameterTypes.Callable-class.html#verify" class="summary-sig-name">verify</a>(<span class="summary-sig-arg">is_callable</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.ParameterTypes-pysrc.html#Callable.verify">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Properties</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__class__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Method Details</span></td>
+</tr>
+</table>
+<a name="verify"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">verify</span>(<span class="sig-arg">is_callable</span>)</span>
+    <br /><em class="fname">Static Method</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.ParameterTypes-pysrc.html#Callable.verify">source code</a></span> 
+    </td>
+  </table>
+  
+  
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.ParameterTypes.ParameterTypeDef-class.html#verify">ParameterTypeDef.verify</a>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.ParameterTypes.CallableMC-class.html b/doc/reference/html/VisionEgg.ParameterTypes.CallableMC-class.html
new file mode 100644
index 0000000..ec9fae8
--- /dev/null
+++ b/doc/reference/html/VisionEgg.ParameterTypes.CallableMC-class.html
@@ -0,0 +1,238 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.ParameterTypes.CallableMC</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.ParameterTypes-module.html">Module ParameterTypes</a> ::
+        Class CallableMC
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.ParameterTypes.CallableMC-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== TYPE DESCRIPTION ==================== -->
+<h1 class="epydoc">Type CallableMC</h1><span class="codelink"><a href="VisionEgg.ParameterTypes-pysrc.html#CallableMC">source code</a></span><br /><br />
+<pre class="base-tree">
+object --+    
+         |    
+      type --+
+             |
+            <strong class="uidshort">CallableMC</strong>
+</pre>
+
+<hr />
+<pre class="literalblock">
+metaclass for Callable
+
+</pre><br /><br />
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.ParameterTypes.CallableMC-class.html#__str__" class="summary-sig-name">__str__</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      str(x)</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.ParameterTypes-pysrc.html#CallableMC.__str__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>type</code></b>:
+      <code>__call__</code>,
+      <code>__cmp__</code>,
+      <code>__delattr__</code>,
+      <code>__getattribute__</code>,
+      <code>__hash__</code>,
+      <code>__new__</code>,
+      <code>__repr__</code>,
+      <code>__setattr__</code>,
+      <code>__subclasses__</code>,
+      <code>mro</code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__init__</code>,
+      <code>__reduce__</code>,
+      <code>__reduce_ex__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Properties</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>type</code></b>:
+      <code>__base__</code>,
+      <code>__bases__</code>,
+      <code>__basicsize__</code>,
+      <code>__dictoffset__</code>,
+      <code>__flags__</code>,
+      <code>__itemsize__</code>,
+      <code>__mro__</code>,
+      <code>__name__</code>,
+      <code>__weakrefoffset__</code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__class__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Method Details</span></td>
+</tr>
+</table>
+<a name="__str__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__str__</span>(<span class="sig-arg">self</span>)</span>
+    <br /><em class="fname">(Informal representation operator)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.ParameterTypes-pysrc.html#CallableMC.__str__">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+str(x)
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      object.__str__
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.ParameterTypes.Instance-class.html b/doc/reference/html/VisionEgg.ParameterTypes.Instance-class.html
new file mode 100644
index 0000000..6974d8e
--- /dev/null
+++ b/doc/reference/html/VisionEgg.ParameterTypes.Instance-class.html
@@ -0,0 +1,306 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.ParameterTypes.Instance</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.ParameterTypes-module.html">Module ParameterTypes</a> ::
+        Class Instance
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.ParameterTypes.Instance-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class Instance</h1><span class="codelink"><a href="VisionEgg.ParameterTypes-pysrc.html#Instance">source code</a></span><br /><br />
+<pre class="base-tree">
+      object --+    
+               |    
+<a href="VisionEgg.ParameterTypes.ParameterTypeDef-class.html">ParameterTypeDef</a> --+
+                   |
+                  <strong class="uidshort">Instance</strong>
+</pre>
+
+<hr />
+<pre class="literalblock">
+parameter is an instance of class_type
+
+</pre><br /><br />
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.ParameterTypes.Instance-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">class_type</span>)</span><br />
+      x.__init__(...) initializes x; see x.__class__.__doc__ for signature</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.ParameterTypes-pysrc.html#Instance.__init__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.ParameterTypes.Instance-class.html#__str__" class="summary-sig-name">__str__</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      str(x)</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.ParameterTypes-pysrc.html#Instance.__str__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.ParameterTypes.Instance-class.html#verify" class="summary-sig-name">verify</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">is_instance</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.ParameterTypes-pysrc.html#Instance.verify">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__delattr__</code>,
+      <code>__getattribute__</code>,
+      <code>__hash__</code>,
+      <code>__new__</code>,
+      <code>__reduce__</code>,
+      <code>__reduce_ex__</code>,
+      <code>__repr__</code>,
+      <code>__setattr__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Properties</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__class__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Method Details</span></td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">class_type</span>)</span>
+    <br /><em class="fname">(Constructor)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.ParameterTypes-pysrc.html#Instance.__init__">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+x.__init__(...) initializes x; see x.__class__.__doc__ for signature
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      object.__init__
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="__str__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__str__</span>(<span class="sig-arg">self</span>)</span>
+    <br /><em class="fname">(Informal representation operator)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.ParameterTypes-pysrc.html#Instance.__str__">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+str(x)
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      object.__str__
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="verify"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">verify</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">is_instance</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.ParameterTypes-pysrc.html#Instance.verify">source code</a></span> 
+    </td>
+  </table>
+  
+  
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.ParameterTypes.ParameterTypeDef-class.html#verify">ParameterTypeDef.verify</a>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.ParameterTypes.Integer-class.html b/doc/reference/html/VisionEgg.ParameterTypes.Integer-class.html
new file mode 100644
index 0000000..ceaeae8
--- /dev/null
+++ b/doc/reference/html/VisionEgg.ParameterTypes.Integer-class.html
@@ -0,0 +1,238 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.ParameterTypes.Integer</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.ParameterTypes-module.html">Module ParameterTypes</a> ::
+        Class Integer
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.ParameterTypes.Integer-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class Integer</h1><span class="codelink"><a href="VisionEgg.ParameterTypes-pysrc.html#Integer">source code</a></span><br /><br />
+<pre class="base-tree">
+      object --+    
+               |    
+<a href="VisionEgg.ParameterTypes.ParameterTypeDef-class.html">ParameterTypeDef</a> --+
+                   |
+                  <strong class="uidshort">Integer</strong>
+</pre>
+
+<hr />
+<!-- ==================== NESTED CLASSES ==================== -->
+<a name="section-NestedClasses"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Nested Classes</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.ParameterTypes.IntegerMC-class.html" class="summary-name">__metaclass__</a><br />
+      metaclass for Integer
+    </td>
+  </tr>
+</table>
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__delattr__</code>,
+      <code>__getattribute__</code>,
+      <code>__hash__</code>,
+      <code>__init__</code>,
+      <code>__new__</code>,
+      <code>__reduce__</code>,
+      <code>__reduce_ex__</code>,
+      <code>__repr__</code>,
+      <code>__setattr__</code>,
+      <code>__str__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== STATIC METHODS ==================== -->
+<a name="section-StaticMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Static Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.ParameterTypes.Integer-class.html#verify" class="summary-sig-name">verify</a>(<span class="summary-sig-arg">is_integer</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.ParameterTypes-pysrc.html#Integer.verify">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Properties</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__class__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Method Details</span></td>
+</tr>
+</table>
+<a name="verify"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">verify</span>(<span class="sig-arg">is_integer</span>)</span>
+    <br /><em class="fname">Static Method</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.ParameterTypes-pysrc.html#Integer.verify">source code</a></span> 
+    </td>
+  </table>
+  
+  
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.ParameterTypes.ParameterTypeDef-class.html#verify">ParameterTypeDef.verify</a>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.ParameterTypes.IntegerMC-class.html b/doc/reference/html/VisionEgg.ParameterTypes.IntegerMC-class.html
new file mode 100644
index 0000000..71ba1d9
--- /dev/null
+++ b/doc/reference/html/VisionEgg.ParameterTypes.IntegerMC-class.html
@@ -0,0 +1,238 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.ParameterTypes.IntegerMC</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.ParameterTypes-module.html">Module ParameterTypes</a> ::
+        Class IntegerMC
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.ParameterTypes.IntegerMC-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== TYPE DESCRIPTION ==================== -->
+<h1 class="epydoc">Type IntegerMC</h1><span class="codelink"><a href="VisionEgg.ParameterTypes-pysrc.html#IntegerMC">source code</a></span><br /><br />
+<pre class="base-tree">
+object --+    
+         |    
+      type --+
+             |
+            <strong class="uidshort">IntegerMC</strong>
+</pre>
+
+<hr />
+<pre class="literalblock">
+metaclass for Integer
+
+</pre><br /><br />
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.ParameterTypes.IntegerMC-class.html#__str__" class="summary-sig-name">__str__</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      str(x)</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.ParameterTypes-pysrc.html#IntegerMC.__str__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>type</code></b>:
+      <code>__call__</code>,
+      <code>__cmp__</code>,
+      <code>__delattr__</code>,
+      <code>__getattribute__</code>,
+      <code>__hash__</code>,
+      <code>__new__</code>,
+      <code>__repr__</code>,
+      <code>__setattr__</code>,
+      <code>__subclasses__</code>,
+      <code>mro</code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__init__</code>,
+      <code>__reduce__</code>,
+      <code>__reduce_ex__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Properties</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>type</code></b>:
+      <code>__base__</code>,
+      <code>__bases__</code>,
+      <code>__basicsize__</code>,
+      <code>__dictoffset__</code>,
+      <code>__flags__</code>,
+      <code>__itemsize__</code>,
+      <code>__mro__</code>,
+      <code>__name__</code>,
+      <code>__weakrefoffset__</code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__class__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Method Details</span></td>
+</tr>
+</table>
+<a name="__str__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__str__</span>(<span class="sig-arg">self</span>)</span>
+    <br /><em class="fname">(Informal representation operator)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.ParameterTypes-pysrc.html#IntegerMC.__str__">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+str(x)
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      object.__str__
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.ParameterTypes.NoneMC-class.html b/doc/reference/html/VisionEgg.ParameterTypes.NoneMC-class.html
new file mode 100644
index 0000000..6fc54da
--- /dev/null
+++ b/doc/reference/html/VisionEgg.ParameterTypes.NoneMC-class.html
@@ -0,0 +1,238 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.ParameterTypes.NoneMC</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.ParameterTypes-module.html">Module ParameterTypes</a> ::
+        Class NoneMC
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.ParameterTypes.NoneMC-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== TYPE DESCRIPTION ==================== -->
+<h1 class="epydoc">Type NoneMC</h1><span class="codelink"><a href="VisionEgg.ParameterTypes-pysrc.html#NoneMC">source code</a></span><br /><br />
+<pre class="base-tree">
+object --+    
+         |    
+      type --+
+             |
+            <strong class="uidshort">NoneMC</strong>
+</pre>
+
+<hr />
+<pre class="literalblock">
+metaclass for NoneType
+
+</pre><br /><br />
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.ParameterTypes.NoneMC-class.html#__str__" class="summary-sig-name">__str__</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      str(x)</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.ParameterTypes-pysrc.html#NoneMC.__str__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>type</code></b>:
+      <code>__call__</code>,
+      <code>__cmp__</code>,
+      <code>__delattr__</code>,
+      <code>__getattribute__</code>,
+      <code>__hash__</code>,
+      <code>__new__</code>,
+      <code>__repr__</code>,
+      <code>__setattr__</code>,
+      <code>__subclasses__</code>,
+      <code>mro</code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__init__</code>,
+      <code>__reduce__</code>,
+      <code>__reduce_ex__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Properties</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>type</code></b>:
+      <code>__base__</code>,
+      <code>__bases__</code>,
+      <code>__basicsize__</code>,
+      <code>__dictoffset__</code>,
+      <code>__flags__</code>,
+      <code>__itemsize__</code>,
+      <code>__mro__</code>,
+      <code>__name__</code>,
+      <code>__weakrefoffset__</code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__class__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Method Details</span></td>
+</tr>
+</table>
+<a name="__str__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__str__</span>(<span class="sig-arg">self</span>)</span>
+    <br /><em class="fname">(Informal representation operator)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.ParameterTypes-pysrc.html#NoneMC.__str__">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+str(x)
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      object.__str__
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.ParameterTypes.NoneType-class.html b/doc/reference/html/VisionEgg.ParameterTypes.NoneType-class.html
new file mode 100644
index 0000000..0f5874e
--- /dev/null
+++ b/doc/reference/html/VisionEgg.ParameterTypes.NoneType-class.html
@@ -0,0 +1,238 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.ParameterTypes.NoneType</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.ParameterTypes-module.html">Module ParameterTypes</a> ::
+        Class NoneType
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.ParameterTypes.NoneType-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class NoneType</h1><span class="codelink"><a href="VisionEgg.ParameterTypes-pysrc.html#NoneType">source code</a></span><br /><br />
+<pre class="base-tree">
+      object --+    
+               |    
+<a href="VisionEgg.ParameterTypes.ParameterTypeDef-class.html">ParameterTypeDef</a> --+
+                   |
+                  <strong class="uidshort">NoneType</strong>
+</pre>
+
+<hr />
+<!-- ==================== NESTED CLASSES ==================== -->
+<a name="section-NestedClasses"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Nested Classes</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.ParameterTypes.NoneMC-class.html" class="summary-name">__metaclass__</a><br />
+      metaclass for NoneType
+    </td>
+  </tr>
+</table>
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__delattr__</code>,
+      <code>__getattribute__</code>,
+      <code>__hash__</code>,
+      <code>__init__</code>,
+      <code>__new__</code>,
+      <code>__reduce__</code>,
+      <code>__reduce_ex__</code>,
+      <code>__repr__</code>,
+      <code>__setattr__</code>,
+      <code>__str__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== STATIC METHODS ==================== -->
+<a name="section-StaticMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Static Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.ParameterTypes.NoneType-class.html#verify" class="summary-sig-name">verify</a>(<span class="summary-sig-arg">is_none</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.ParameterTypes-pysrc.html#NoneType.verify">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Properties</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__class__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Method Details</span></td>
+</tr>
+</table>
+<a name="verify"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">verify</span>(<span class="sig-arg">is_none</span>)</span>
+    <br /><em class="fname">Static Method</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.ParameterTypes-pysrc.html#NoneType.verify">source code</a></span> 
+    </td>
+  </table>
+  
+  
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.ParameterTypes.ParameterTypeDef-class.html#verify">ParameterTypeDef.verify</a>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.ParameterTypes.ParameterTypeDef-class.html b/doc/reference/html/VisionEgg.ParameterTypes.ParameterTypeDef-class.html
new file mode 100644
index 0000000..fd82cbd
--- /dev/null
+++ b/doc/reference/html/VisionEgg.ParameterTypes.ParameterTypeDef-class.html
@@ -0,0 +1,191 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.ParameterTypes.ParameterTypeDef</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.ParameterTypes-module.html">Module ParameterTypes</a> ::
+        Class ParameterTypeDef
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.ParameterTypes.ParameterTypeDef-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class ParameterTypeDef</h1><span class="codelink"><a href="VisionEgg.ParameterTypes-pysrc.html#ParameterTypeDef">source code</a></span><br /><br />
+<pre class="base-tree">
+object --+
+         |
+        <strong class="uidshort">ParameterTypeDef</strong>
+</pre>
+
+<hr />
+<pre class="literalblock">
+Base class for all parameter type definitions
+
+</pre><br /><br />
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__delattr__</code>,
+      <code>__getattribute__</code>,
+      <code>__hash__</code>,
+      <code>__init__</code>,
+      <code>__new__</code>,
+      <code>__reduce__</code>,
+      <code>__reduce_ex__</code>,
+      <code>__repr__</code>,
+      <code>__setattr__</code>,
+      <code>__str__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== STATIC METHODS ==================== -->
+<a name="section-StaticMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Static Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="verify"></a><span class="summary-sig-name">verify</span>(<span class="summary-sig-arg">value</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.ParameterTypes-pysrc.html#ParameterTypeDef.verify">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Properties</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__class__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.ParameterTypes.Real-class.html b/doc/reference/html/VisionEgg.ParameterTypes.Real-class.html
new file mode 100644
index 0000000..77d9e5f
--- /dev/null
+++ b/doc/reference/html/VisionEgg.ParameterTypes.Real-class.html
@@ -0,0 +1,238 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.ParameterTypes.Real</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.ParameterTypes-module.html">Module ParameterTypes</a> ::
+        Class Real
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.ParameterTypes.Real-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class Real</h1><span class="codelink"><a href="VisionEgg.ParameterTypes-pysrc.html#Real">source code</a></span><br /><br />
+<pre class="base-tree">
+      object --+    
+               |    
+<a href="VisionEgg.ParameterTypes.ParameterTypeDef-class.html">ParameterTypeDef</a> --+
+                   |
+                  <strong class="uidshort">Real</strong>
+</pre>
+
+<hr />
+<!-- ==================== NESTED CLASSES ==================== -->
+<a name="section-NestedClasses"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Nested Classes</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.ParameterTypes.RealMC-class.html" class="summary-name">__metaclass__</a><br />
+      metaclass for Real
+    </td>
+  </tr>
+</table>
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__delattr__</code>,
+      <code>__getattribute__</code>,
+      <code>__hash__</code>,
+      <code>__init__</code>,
+      <code>__new__</code>,
+      <code>__reduce__</code>,
+      <code>__reduce_ex__</code>,
+      <code>__repr__</code>,
+      <code>__setattr__</code>,
+      <code>__str__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== STATIC METHODS ==================== -->
+<a name="section-StaticMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Static Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.ParameterTypes.Real-class.html#verify" class="summary-sig-name">verify</a>(<span class="summary-sig-arg">is_real</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.ParameterTypes-pysrc.html#Real.verify">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Properties</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__class__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Method Details</span></td>
+</tr>
+</table>
+<a name="verify"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">verify</span>(<span class="sig-arg">is_real</span>)</span>
+    <br /><em class="fname">Static Method</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.ParameterTypes-pysrc.html#Real.verify">source code</a></span> 
+    </td>
+  </table>
+  
+  
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.ParameterTypes.ParameterTypeDef-class.html#verify">ParameterTypeDef.verify</a>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.ParameterTypes.RealMC-class.html b/doc/reference/html/VisionEgg.ParameterTypes.RealMC-class.html
new file mode 100644
index 0000000..dc5aceb
--- /dev/null
+++ b/doc/reference/html/VisionEgg.ParameterTypes.RealMC-class.html
@@ -0,0 +1,238 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.ParameterTypes.RealMC</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.ParameterTypes-module.html">Module ParameterTypes</a> ::
+        Class RealMC
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.ParameterTypes.RealMC-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== TYPE DESCRIPTION ==================== -->
+<h1 class="epydoc">Type RealMC</h1><span class="codelink"><a href="VisionEgg.ParameterTypes-pysrc.html#RealMC">source code</a></span><br /><br />
+<pre class="base-tree">
+object --+    
+         |    
+      type --+
+             |
+            <strong class="uidshort">RealMC</strong>
+</pre>
+
+<hr />
+<pre class="literalblock">
+metaclass for Real
+
+</pre><br /><br />
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.ParameterTypes.RealMC-class.html#__str__" class="summary-sig-name">__str__</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      str(x)</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.ParameterTypes-pysrc.html#RealMC.__str__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>type</code></b>:
+      <code>__call__</code>,
+      <code>__cmp__</code>,
+      <code>__delattr__</code>,
+      <code>__getattribute__</code>,
+      <code>__hash__</code>,
+      <code>__new__</code>,
+      <code>__repr__</code>,
+      <code>__setattr__</code>,
+      <code>__subclasses__</code>,
+      <code>mro</code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__init__</code>,
+      <code>__reduce__</code>,
+      <code>__reduce_ex__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Properties</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>type</code></b>:
+      <code>__base__</code>,
+      <code>__bases__</code>,
+      <code>__basicsize__</code>,
+      <code>__dictoffset__</code>,
+      <code>__flags__</code>,
+      <code>__itemsize__</code>,
+      <code>__mro__</code>,
+      <code>__name__</code>,
+      <code>__weakrefoffset__</code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__class__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Method Details</span></td>
+</tr>
+</table>
+<a name="__str__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__str__</span>(<span class="sig-arg">self</span>)</span>
+    <br /><em class="fname">(Informal representation operator)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.ParameterTypes-pysrc.html#RealMC.__str__">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+str(x)
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      object.__str__
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.ParameterTypes.Sequence-class.html b/doc/reference/html/VisionEgg.ParameterTypes.Sequence-class.html
new file mode 100644
index 0000000..8d5bcac
--- /dev/null
+++ b/doc/reference/html/VisionEgg.ParameterTypes.Sequence-class.html
@@ -0,0 +1,306 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.ParameterTypes.Sequence</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.ParameterTypes-module.html">Module ParameterTypes</a> ::
+        Class Sequence
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.ParameterTypes.Sequence-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class Sequence</h1><span class="codelink"><a href="VisionEgg.ParameterTypes-pysrc.html#Sequence">source code</a></span><br /><br />
+<pre class="base-tree">
+      object --+    
+               |    
+<a href="VisionEgg.ParameterTypes.ParameterTypeDef-class.html">ParameterTypeDef</a> --+
+                   |
+                  <strong class="uidshort">Sequence</strong>
+</pre>
+
+<hr />
+<pre class="literalblock">
+A tuple, list or Numeric array
+
+</pre><br /><br />
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.ParameterTypes.Sequence-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">item_type</span>)</span><br />
+      x.__init__(...) initializes x; see x.__class__.__doc__ for signature</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.ParameterTypes-pysrc.html#Sequence.__init__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.ParameterTypes.Sequence-class.html#__str__" class="summary-sig-name">__str__</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      str(x)</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.ParameterTypes-pysrc.html#Sequence.__str__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.ParameterTypes.Sequence-class.html#verify" class="summary-sig-name">verify</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">is_sequence</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.ParameterTypes-pysrc.html#Sequence.verify">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__delattr__</code>,
+      <code>__getattribute__</code>,
+      <code>__hash__</code>,
+      <code>__new__</code>,
+      <code>__reduce__</code>,
+      <code>__reduce_ex__</code>,
+      <code>__repr__</code>,
+      <code>__setattr__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Properties</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__class__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Method Details</span></td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">item_type</span>)</span>
+    <br /><em class="fname">(Constructor)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.ParameterTypes-pysrc.html#Sequence.__init__">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+x.__init__(...) initializes x; see x.__class__.__doc__ for signature
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      object.__init__
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="__str__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__str__</span>(<span class="sig-arg">self</span>)</span>
+    <br /><em class="fname">(Informal representation operator)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.ParameterTypes-pysrc.html#Sequence.__str__">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+str(x)
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      object.__str__
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="verify"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">verify</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">is_sequence</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.ParameterTypes-pysrc.html#Sequence.verify">source code</a></span> 
+    </td>
+  </table>
+  
+  
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.ParameterTypes.ParameterTypeDef-class.html#verify">ParameterTypeDef.verify</a>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.ParameterTypes.Sequence2-class.html b/doc/reference/html/VisionEgg.ParameterTypes.Sequence2-class.html
new file mode 100644
index 0000000..bfc3498
--- /dev/null
+++ b/doc/reference/html/VisionEgg.ParameterTypes.Sequence2-class.html
@@ -0,0 +1,259 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.ParameterTypes.Sequence2</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.ParameterTypes-module.html">Module ParameterTypes</a> ::
+        Class Sequence2
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.ParameterTypes.Sequence2-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class Sequence2</h1><span class="codelink"><a href="VisionEgg.ParameterTypes-pysrc.html#Sequence2">source code</a></span><br /><br />
+<pre class="base-tree">
+      object --+        
+               |        
+<a href="VisionEgg.ParameterTypes.ParameterTypeDef-class.html">ParameterTypeDef</a> --+    
+                   |    
+            <a href="VisionEgg.ParameterTypes.Sequence-class.html">Sequence</a> --+
+                       |
+                      <strong class="uidshort">Sequence2</strong>
+</pre>
+
+<hr />
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.ParameterTypes.Sequence2-class.html#__str__" class="summary-sig-name">__str__</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      str(x)</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.ParameterTypes-pysrc.html#Sequence2.__str__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.ParameterTypes.Sequence2-class.html#verify" class="summary-sig-name">verify</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">is_sequence2</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.ParameterTypes-pysrc.html#Sequence2.verify">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.ParameterTypes.Sequence-class.html">Sequence</a></code></b>:
+      <code><a href="VisionEgg.ParameterTypes.Sequence-class.html#__init__">__init__</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__delattr__</code>,
+      <code>__getattribute__</code>,
+      <code>__hash__</code>,
+      <code>__new__</code>,
+      <code>__reduce__</code>,
+      <code>__reduce_ex__</code>,
+      <code>__repr__</code>,
+      <code>__setattr__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Properties</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__class__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Method Details</span></td>
+</tr>
+</table>
+<a name="__str__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__str__</span>(<span class="sig-arg">self</span>)</span>
+    <br /><em class="fname">(Informal representation operator)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.ParameterTypes-pysrc.html#Sequence2.__str__">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+str(x)
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.ParameterTypes.Sequence-class.html#__str__">Sequence.__str__</a>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="verify"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">verify</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">is_sequence2</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.ParameterTypes-pysrc.html#Sequence2.verify">source code</a></span> 
+    </td>
+  </table>
+  
+  
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.ParameterTypes.Sequence-class.html#verify">Sequence.verify</a>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.ParameterTypes.Sequence3-class.html b/doc/reference/html/VisionEgg.ParameterTypes.Sequence3-class.html
new file mode 100644
index 0000000..4ab3bec
--- /dev/null
+++ b/doc/reference/html/VisionEgg.ParameterTypes.Sequence3-class.html
@@ -0,0 +1,259 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.ParameterTypes.Sequence3</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.ParameterTypes-module.html">Module ParameterTypes</a> ::
+        Class Sequence3
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.ParameterTypes.Sequence3-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class Sequence3</h1><span class="codelink"><a href="VisionEgg.ParameterTypes-pysrc.html#Sequence3">source code</a></span><br /><br />
+<pre class="base-tree">
+      object --+        
+               |        
+<a href="VisionEgg.ParameterTypes.ParameterTypeDef-class.html">ParameterTypeDef</a> --+    
+                   |    
+            <a href="VisionEgg.ParameterTypes.Sequence-class.html">Sequence</a> --+
+                       |
+                      <strong class="uidshort">Sequence3</strong>
+</pre>
+
+<hr />
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.ParameterTypes.Sequence3-class.html#__str__" class="summary-sig-name">__str__</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      str(x)</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.ParameterTypes-pysrc.html#Sequence3.__str__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.ParameterTypes.Sequence3-class.html#verify" class="summary-sig-name">verify</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">is_sequence3</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.ParameterTypes-pysrc.html#Sequence3.verify">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.ParameterTypes.Sequence-class.html">Sequence</a></code></b>:
+      <code><a href="VisionEgg.ParameterTypes.Sequence-class.html#__init__">__init__</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__delattr__</code>,
+      <code>__getattribute__</code>,
+      <code>__hash__</code>,
+      <code>__new__</code>,
+      <code>__reduce__</code>,
+      <code>__reduce_ex__</code>,
+      <code>__repr__</code>,
+      <code>__setattr__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Properties</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__class__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Method Details</span></td>
+</tr>
+</table>
+<a name="__str__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__str__</span>(<span class="sig-arg">self</span>)</span>
+    <br /><em class="fname">(Informal representation operator)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.ParameterTypes-pysrc.html#Sequence3.__str__">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+str(x)
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.ParameterTypes.Sequence-class.html#__str__">Sequence.__str__</a>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="verify"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">verify</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">is_sequence3</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.ParameterTypes-pysrc.html#Sequence3.verify">source code</a></span> 
+    </td>
+  </table>
+  
+  
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.ParameterTypes.Sequence-class.html#verify">Sequence.verify</a>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.ParameterTypes.Sequence4-class.html b/doc/reference/html/VisionEgg.ParameterTypes.Sequence4-class.html
new file mode 100644
index 0000000..dbeb556
--- /dev/null
+++ b/doc/reference/html/VisionEgg.ParameterTypes.Sequence4-class.html
@@ -0,0 +1,259 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.ParameterTypes.Sequence4</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.ParameterTypes-module.html">Module ParameterTypes</a> ::
+        Class Sequence4
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.ParameterTypes.Sequence4-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class Sequence4</h1><span class="codelink"><a href="VisionEgg.ParameterTypes-pysrc.html#Sequence4">source code</a></span><br /><br />
+<pre class="base-tree">
+      object --+        
+               |        
+<a href="VisionEgg.ParameterTypes.ParameterTypeDef-class.html">ParameterTypeDef</a> --+    
+                   |    
+            <a href="VisionEgg.ParameterTypes.Sequence-class.html">Sequence</a> --+
+                       |
+                      <strong class="uidshort">Sequence4</strong>
+</pre>
+
+<hr />
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.ParameterTypes.Sequence4-class.html#__str__" class="summary-sig-name">__str__</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      str(x)</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.ParameterTypes-pysrc.html#Sequence4.__str__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.ParameterTypes.Sequence4-class.html#verify" class="summary-sig-name">verify</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">is_sequence4</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.ParameterTypes-pysrc.html#Sequence4.verify">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.ParameterTypes.Sequence-class.html">Sequence</a></code></b>:
+      <code><a href="VisionEgg.ParameterTypes.Sequence-class.html#__init__">__init__</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__delattr__</code>,
+      <code>__getattribute__</code>,
+      <code>__hash__</code>,
+      <code>__new__</code>,
+      <code>__reduce__</code>,
+      <code>__reduce_ex__</code>,
+      <code>__repr__</code>,
+      <code>__setattr__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Properties</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__class__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Method Details</span></td>
+</tr>
+</table>
+<a name="__str__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__str__</span>(<span class="sig-arg">self</span>)</span>
+    <br /><em class="fname">(Informal representation operator)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.ParameterTypes-pysrc.html#Sequence4.__str__">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+str(x)
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.ParameterTypes.Sequence-class.html#__str__">Sequence.__str__</a>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="verify"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">verify</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">is_sequence4</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.ParameterTypes-pysrc.html#Sequence4.verify">source code</a></span> 
+    </td>
+  </table>
+  
+  
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.ParameterTypes.Sequence-class.html#verify">Sequence.verify</a>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.ParameterTypes.Sequence4x4-class.html b/doc/reference/html/VisionEgg.ParameterTypes.Sequence4x4-class.html
new file mode 100644
index 0000000..9bccce9
--- /dev/null
+++ b/doc/reference/html/VisionEgg.ParameterTypes.Sequence4x4-class.html
@@ -0,0 +1,261 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.ParameterTypes.Sequence4x4</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.ParameterTypes-module.html">Module ParameterTypes</a> ::
+        Class Sequence4x4
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.ParameterTypes.Sequence4x4-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class Sequence4x4</h1><span class="codelink"><a href="VisionEgg.ParameterTypes-pysrc.html#Sequence4x4">source code</a></span><br /><br />
+<pre class="base-tree">
+      object --+            
+               |            
+<a href="VisionEgg.ParameterTypes.ParameterTypeDef-class.html">ParameterTypeDef</a> --+        
+                   |        
+            <a href="VisionEgg.ParameterTypes.Sequence-class.html">Sequence</a> --+    
+                       |    
+               <a href="VisionEgg.ParameterTypes.Sequence4-class.html">Sequence4</a> --+
+                           |
+                          <strong class="uidshort">Sequence4x4</strong>
+</pre>
+
+<hr />
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.ParameterTypes.Sequence4x4-class.html#__str__" class="summary-sig-name">__str__</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      str(x)</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.ParameterTypes-pysrc.html#Sequence4x4.__str__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.ParameterTypes.Sequence4x4-class.html#verify" class="summary-sig-name">verify</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">is_sequence4x4</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.ParameterTypes-pysrc.html#Sequence4x4.verify">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.ParameterTypes.Sequence-class.html">Sequence</a></code></b>:
+      <code><a href="VisionEgg.ParameterTypes.Sequence-class.html#__init__">__init__</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__delattr__</code>,
+      <code>__getattribute__</code>,
+      <code>__hash__</code>,
+      <code>__new__</code>,
+      <code>__reduce__</code>,
+      <code>__reduce_ex__</code>,
+      <code>__repr__</code>,
+      <code>__setattr__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Properties</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__class__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Method Details</span></td>
+</tr>
+</table>
+<a name="__str__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__str__</span>(<span class="sig-arg">self</span>)</span>
+    <br /><em class="fname">(Informal representation operator)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.ParameterTypes-pysrc.html#Sequence4x4.__str__">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+str(x)
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.ParameterTypes.Sequence4-class.html#__str__">Sequence4.__str__</a>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="verify"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">verify</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">is_sequence4x4</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.ParameterTypes-pysrc.html#Sequence4x4.verify">source code</a></span> 
+    </td>
+  </table>
+  
+  
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.ParameterTypes.Sequence4-class.html#verify">Sequence4.verify</a>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.ParameterTypes.String-class.html b/doc/reference/html/VisionEgg.ParameterTypes.String-class.html
new file mode 100644
index 0000000..422fbdd
--- /dev/null
+++ b/doc/reference/html/VisionEgg.ParameterTypes.String-class.html
@@ -0,0 +1,238 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.ParameterTypes.String</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.ParameterTypes-module.html">Module ParameterTypes</a> ::
+        Class String
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.ParameterTypes.String-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class String</h1><span class="codelink"><a href="VisionEgg.ParameterTypes-pysrc.html#String">source code</a></span><br /><br />
+<pre class="base-tree">
+      object --+    
+               |    
+<a href="VisionEgg.ParameterTypes.ParameterTypeDef-class.html">ParameterTypeDef</a> --+
+                   |
+                  <strong class="uidshort">String</strong>
+</pre>
+
+<hr />
+<!-- ==================== NESTED CLASSES ==================== -->
+<a name="section-NestedClasses"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Nested Classes</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.ParameterTypes.StringMC-class.html" class="summary-name">__metaclass__</a><br />
+      metaclass for String
+    </td>
+  </tr>
+</table>
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__delattr__</code>,
+      <code>__getattribute__</code>,
+      <code>__hash__</code>,
+      <code>__init__</code>,
+      <code>__new__</code>,
+      <code>__reduce__</code>,
+      <code>__reduce_ex__</code>,
+      <code>__repr__</code>,
+      <code>__setattr__</code>,
+      <code>__str__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== STATIC METHODS ==================== -->
+<a name="section-StaticMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Static Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.ParameterTypes.String-class.html#verify" class="summary-sig-name">verify</a>(<span class="summary-sig-arg">is_string</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.ParameterTypes-pysrc.html#String.verify">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Properties</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__class__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Method Details</span></td>
+</tr>
+</table>
+<a name="verify"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">verify</span>(<span class="sig-arg">is_string</span>)</span>
+    <br /><em class="fname">Static Method</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.ParameterTypes-pysrc.html#String.verify">source code</a></span> 
+    </td>
+  </table>
+  
+  
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.ParameterTypes.ParameterTypeDef-class.html#verify">ParameterTypeDef.verify</a>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.ParameterTypes.StringMC-class.html b/doc/reference/html/VisionEgg.ParameterTypes.StringMC-class.html
new file mode 100644
index 0000000..f7043c2
--- /dev/null
+++ b/doc/reference/html/VisionEgg.ParameterTypes.StringMC-class.html
@@ -0,0 +1,238 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.ParameterTypes.StringMC</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.ParameterTypes-module.html">Module ParameterTypes</a> ::
+        Class StringMC
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.ParameterTypes.StringMC-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== TYPE DESCRIPTION ==================== -->
+<h1 class="epydoc">Type StringMC</h1><span class="codelink"><a href="VisionEgg.ParameterTypes-pysrc.html#StringMC">source code</a></span><br /><br />
+<pre class="base-tree">
+object --+    
+         |    
+      type --+
+             |
+            <strong class="uidshort">StringMC</strong>
+</pre>
+
+<hr />
+<pre class="literalblock">
+metaclass for String
+
+</pre><br /><br />
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.ParameterTypes.StringMC-class.html#__str__" class="summary-sig-name">__str__</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      str(x)</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.ParameterTypes-pysrc.html#StringMC.__str__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>type</code></b>:
+      <code>__call__</code>,
+      <code>__cmp__</code>,
+      <code>__delattr__</code>,
+      <code>__getattribute__</code>,
+      <code>__hash__</code>,
+      <code>__new__</code>,
+      <code>__repr__</code>,
+      <code>__setattr__</code>,
+      <code>__subclasses__</code>,
+      <code>mro</code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__init__</code>,
+      <code>__reduce__</code>,
+      <code>__reduce_ex__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Properties</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>type</code></b>:
+      <code>__base__</code>,
+      <code>__bases__</code>,
+      <code>__basicsize__</code>,
+      <code>__dictoffset__</code>,
+      <code>__flags__</code>,
+      <code>__itemsize__</code>,
+      <code>__mro__</code>,
+      <code>__name__</code>,
+      <code>__weakrefoffset__</code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__class__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Method Details</span></td>
+</tr>
+</table>
+<a name="__str__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__str__</span>(<span class="sig-arg">self</span>)</span>
+    <br /><em class="fname">(Informal representation operator)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.ParameterTypes-pysrc.html#StringMC.__str__">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+str(x)
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      object.__str__
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.ParameterTypes.SubClass-class.html b/doc/reference/html/VisionEgg.ParameterTypes.SubClass-class.html
new file mode 100644
index 0000000..b367743
--- /dev/null
+++ b/doc/reference/html/VisionEgg.ParameterTypes.SubClass-class.html
@@ -0,0 +1,306 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.ParameterTypes.SubClass</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.ParameterTypes-module.html">Module ParameterTypes</a> ::
+        Class SubClass
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.ParameterTypes.SubClass-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class SubClass</h1><span class="codelink"><a href="VisionEgg.ParameterTypes-pysrc.html#SubClass">source code</a></span><br /><br />
+<pre class="base-tree">
+      object --+    
+               |    
+<a href="VisionEgg.ParameterTypes.ParameterTypeDef-class.html">ParameterTypeDef</a> --+
+                   |
+                  <strong class="uidshort">SubClass</strong>
+</pre>
+
+<hr />
+<pre class="literalblock">
+parameter is derived from base_class
+
+</pre><br /><br />
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.ParameterTypes.SubClass-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">base_class</span>)</span><br />
+      x.__init__(...) initializes x; see x.__class__.__doc__ for signature</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.ParameterTypes-pysrc.html#SubClass.__init__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.ParameterTypes.SubClass-class.html#verify" class="summary-sig-name">verify</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">is_class</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.ParameterTypes-pysrc.html#SubClass.verify">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.ParameterTypes.SubClass-class.html#__str__" class="summary-sig-name">__str__</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      str(x)</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.ParameterTypes-pysrc.html#SubClass.__str__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__delattr__</code>,
+      <code>__getattribute__</code>,
+      <code>__hash__</code>,
+      <code>__new__</code>,
+      <code>__reduce__</code>,
+      <code>__reduce_ex__</code>,
+      <code>__repr__</code>,
+      <code>__setattr__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Properties</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__class__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Method Details</span></td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">base_class</span>)</span>
+    <br /><em class="fname">(Constructor)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.ParameterTypes-pysrc.html#SubClass.__init__">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+x.__init__(...) initializes x; see x.__class__.__doc__ for signature
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      object.__init__
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="verify"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">verify</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">is_class</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.ParameterTypes-pysrc.html#SubClass.verify">source code</a></span> 
+    </td>
+  </table>
+  
+  
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.ParameterTypes.ParameterTypeDef-class.html#verify">ParameterTypeDef.verify</a>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="__str__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__str__</span>(<span class="sig-arg">self</span>)</span>
+    <br /><em class="fname">(Informal representation operator)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.ParameterTypes-pysrc.html#SubClass.__str__">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+str(x)
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      object.__str__
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.ParameterTypes.Unicode-class.html b/doc/reference/html/VisionEgg.ParameterTypes.Unicode-class.html
new file mode 100644
index 0000000..cd9d194
--- /dev/null
+++ b/doc/reference/html/VisionEgg.ParameterTypes.Unicode-class.html
@@ -0,0 +1,238 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.ParameterTypes.Unicode</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.ParameterTypes-module.html">Module ParameterTypes</a> ::
+        Class Unicode
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.ParameterTypes.Unicode-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class Unicode</h1><span class="codelink"><a href="VisionEgg.ParameterTypes-pysrc.html#Unicode">source code</a></span><br /><br />
+<pre class="base-tree">
+      object --+    
+               |    
+<a href="VisionEgg.ParameterTypes.ParameterTypeDef-class.html">ParameterTypeDef</a> --+
+                   |
+                  <strong class="uidshort">Unicode</strong>
+</pre>
+
+<hr />
+<!-- ==================== NESTED CLASSES ==================== -->
+<a name="section-NestedClasses"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Nested Classes</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.ParameterTypes.UnicodeMC-class.html" class="summary-name">__metaclass__</a><br />
+      metaclass for Unicode
+    </td>
+  </tr>
+</table>
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__delattr__</code>,
+      <code>__getattribute__</code>,
+      <code>__hash__</code>,
+      <code>__init__</code>,
+      <code>__new__</code>,
+      <code>__reduce__</code>,
+      <code>__reduce_ex__</code>,
+      <code>__repr__</code>,
+      <code>__setattr__</code>,
+      <code>__str__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== STATIC METHODS ==================== -->
+<a name="section-StaticMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Static Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.ParameterTypes.Unicode-class.html#verify" class="summary-sig-name">verify</a>(<span class="summary-sig-arg">is_unicode</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.ParameterTypes-pysrc.html#Unicode.verify">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Properties</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__class__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Method Details</span></td>
+</tr>
+</table>
+<a name="verify"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">verify</span>(<span class="sig-arg">is_unicode</span>)</span>
+    <br /><em class="fname">Static Method</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.ParameterTypes-pysrc.html#Unicode.verify">source code</a></span> 
+    </td>
+  </table>
+  
+  
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.ParameterTypes.ParameterTypeDef-class.html#verify">ParameterTypeDef.verify</a>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.ParameterTypes.UnicodeMC-class.html b/doc/reference/html/VisionEgg.ParameterTypes.UnicodeMC-class.html
new file mode 100644
index 0000000..47cfa84
--- /dev/null
+++ b/doc/reference/html/VisionEgg.ParameterTypes.UnicodeMC-class.html
@@ -0,0 +1,238 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.ParameterTypes.UnicodeMC</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.ParameterTypes-module.html">Module ParameterTypes</a> ::
+        Class UnicodeMC
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.ParameterTypes.UnicodeMC-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== TYPE DESCRIPTION ==================== -->
+<h1 class="epydoc">Type UnicodeMC</h1><span class="codelink"><a href="VisionEgg.ParameterTypes-pysrc.html#UnicodeMC">source code</a></span><br /><br />
+<pre class="base-tree">
+object --+    
+         |    
+      type --+
+             |
+            <strong class="uidshort">UnicodeMC</strong>
+</pre>
+
+<hr />
+<pre class="literalblock">
+metaclass for Unicode
+
+</pre><br /><br />
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.ParameterTypes.UnicodeMC-class.html#__str__" class="summary-sig-name">__str__</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      str(x)</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.ParameterTypes-pysrc.html#UnicodeMC.__str__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>type</code></b>:
+      <code>__call__</code>,
+      <code>__cmp__</code>,
+      <code>__delattr__</code>,
+      <code>__getattribute__</code>,
+      <code>__hash__</code>,
+      <code>__new__</code>,
+      <code>__repr__</code>,
+      <code>__setattr__</code>,
+      <code>__subclasses__</code>,
+      <code>mro</code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__init__</code>,
+      <code>__reduce__</code>,
+      <code>__reduce_ex__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Properties</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>type</code></b>:
+      <code>__base__</code>,
+      <code>__bases__</code>,
+      <code>__basicsize__</code>,
+      <code>__dictoffset__</code>,
+      <code>__flags__</code>,
+      <code>__itemsize__</code>,
+      <code>__mro__</code>,
+      <code>__name__</code>,
+      <code>__weakrefoffset__</code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__class__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Method Details</span></td>
+</tr>
+</table>
+<a name="__str__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__str__</span>(<span class="sig-arg">self</span>)</span>
+    <br /><em class="fname">(Informal representation operator)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.ParameterTypes-pysrc.html#UnicodeMC.__str__">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+str(x)
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      object.__str__
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.ParameterTypes.UnsignedInteger-class.html b/doc/reference/html/VisionEgg.ParameterTypes.UnsignedInteger-class.html
new file mode 100644
index 0000000..5e2e51b
--- /dev/null
+++ b/doc/reference/html/VisionEgg.ParameterTypes.UnsignedInteger-class.html
@@ -0,0 +1,240 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.ParameterTypes.UnsignedInteger</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.ParameterTypes-module.html">Module ParameterTypes</a> ::
+        Class UnsignedInteger
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.ParameterTypes.UnsignedInteger-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class UnsignedInteger</h1><span class="codelink"><a href="VisionEgg.ParameterTypes-pysrc.html#UnsignedInteger">source code</a></span><br /><br />
+<pre class="base-tree">
+      object --+        
+               |        
+<a href="VisionEgg.ParameterTypes.ParameterTypeDef-class.html">ParameterTypeDef</a> --+    
+                   |    
+             <a href="VisionEgg.ParameterTypes.Integer-class.html">Integer</a> --+
+                       |
+                      <strong class="uidshort">UnsignedInteger</strong>
+</pre>
+
+<hr />
+<!-- ==================== NESTED CLASSES ==================== -->
+<a name="section-NestedClasses"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Nested Classes</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.ParameterTypes.UnsignedIntegerMC-class.html" class="summary-name">__metaclass__</a><br />
+      metaclass for UnsignedInteger
+    </td>
+  </tr>
+</table>
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__delattr__</code>,
+      <code>__getattribute__</code>,
+      <code>__hash__</code>,
+      <code>__init__</code>,
+      <code>__new__</code>,
+      <code>__reduce__</code>,
+      <code>__reduce_ex__</code>,
+      <code>__repr__</code>,
+      <code>__setattr__</code>,
+      <code>__str__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== STATIC METHODS ==================== -->
+<a name="section-StaticMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Static Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.ParameterTypes.UnsignedInteger-class.html#verify" class="summary-sig-name">verify</a>(<span class="summary-sig-arg">is_unsigned_integer</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.ParameterTypes-pysrc.html#UnsignedInteger.verify">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Properties</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__class__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Method Details</span></td>
+</tr>
+</table>
+<a name="verify"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">verify</span>(<span class="sig-arg">is_unsigned_integer</span>)</span>
+    <br /><em class="fname">Static Method</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.ParameterTypes-pysrc.html#UnsignedInteger.verify">source code</a></span> 
+    </td>
+  </table>
+  
+  
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.ParameterTypes.Integer-class.html#verify">Integer.verify</a>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.ParameterTypes.UnsignedIntegerMC-class.html b/doc/reference/html/VisionEgg.ParameterTypes.UnsignedIntegerMC-class.html
new file mode 100644
index 0000000..e802851
--- /dev/null
+++ b/doc/reference/html/VisionEgg.ParameterTypes.UnsignedIntegerMC-class.html
@@ -0,0 +1,239 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.ParameterTypes.UnsignedIntegerMC</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.ParameterTypes-module.html">Module ParameterTypes</a> ::
+        Class UnsignedIntegerMC
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.ParameterTypes.UnsignedIntegerMC-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== TYPE DESCRIPTION ==================== -->
+<h1 class="epydoc">Type UnsignedIntegerMC</h1><span class="codelink"><a href="VisionEgg.ParameterTypes-pysrc.html#UnsignedIntegerMC">source code</a></span><br /><br />
+<pre class="base-tree">
+object --+        
+         |        
+      type --+    
+             |    
+     <a href="VisionEgg.ParameterTypes.IntegerMC-class.html">IntegerMC</a> --+
+                 |
+                <strong class="uidshort">UnsignedIntegerMC</strong>
+</pre>
+
+<hr />
+<pre class="literalblock">
+metaclass for UnsignedInteger
+
+</pre><br /><br />
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.ParameterTypes.UnsignedIntegerMC-class.html#__str__" class="summary-sig-name">__str__</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      str(x)</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.ParameterTypes-pysrc.html#UnsignedIntegerMC.__str__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>type</code></b>:
+      <code>__call__</code>,
+      <code>__cmp__</code>,
+      <code>__delattr__</code>,
+      <code>__getattribute__</code>,
+      <code>__hash__</code>,
+      <code>__new__</code>,
+      <code>__repr__</code>,
+      <code>__setattr__</code>,
+      <code>__subclasses__</code>,
+      <code>mro</code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__init__</code>,
+      <code>__reduce__</code>,
+      <code>__reduce_ex__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Properties</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>type</code></b>:
+      <code>__base__</code>,
+      <code>__bases__</code>,
+      <code>__basicsize__</code>,
+      <code>__dictoffset__</code>,
+      <code>__flags__</code>,
+      <code>__itemsize__</code>,
+      <code>__mro__</code>,
+      <code>__name__</code>,
+      <code>__weakrefoffset__</code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__class__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Method Details</span></td>
+</tr>
+</table>
+<a name="__str__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__str__</span>(<span class="sig-arg">self</span>)</span>
+    <br /><em class="fname">(Informal representation operator)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.ParameterTypes-pysrc.html#UnsignedIntegerMC.__str__">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+str(x)
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.ParameterTypes.IntegerMC-class.html#__str__">IntegerMC.__str__</a>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.Parameters-class.html b/doc/reference/html/VisionEgg.Parameters-class.html
new file mode 100644
index 0000000..588d259
--- /dev/null
+++ b/doc/reference/html/VisionEgg.Parameters-class.html
@@ -0,0 +1,119 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.Parameters</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        Class Parameters
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.Parameters-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class Parameters</h1><span class="codelink"><a href="VisionEgg-pysrc.html#Parameters">source code</a></span><br /><br />
+<pre class="literalblock">
+Parameter container.
+
+Simple empty class to act something like a C struct.
+
+</pre><br /><br />
+
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.PlatformDependent-module.html b/doc/reference/html/VisionEgg.PlatformDependent-module.html
new file mode 100644
index 0000000..61f58bb
--- /dev/null
+++ b/doc/reference/html/VisionEgg.PlatformDependent-module.html
@@ -0,0 +1,292 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.PlatformDependent</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        Module PlatformDependent
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.PlatformDependent-module.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== MODULE DESCRIPTION ==================== -->
+<h1 class="epydoc">Module PlatformDependent</h1><span class="codelink"><a href="VisionEgg.PlatformDependent-pysrc.html">source code</a></span><br /><br />
+<pre class="literalblock">
+
+Implementations of functions which vary by platform.
+
+</pre><br /><br />
+
+<!-- ==================== FUNCTIONS ==================== -->
+<a name="section-Functions"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Functions</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.PlatformDependent-module.html#set_priority" class="summary-sig-name">set_priority</a>(<span class="summary-sig-arg">*args</span>,
+        <span class="summary-sig-arg">**kw</span>)</span><br />
+      Set the priority of the Vision Egg application.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PlatformDependent-pysrc.html#set_priority">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="linux_but_unknown_drivers"></a><span class="summary-sig-name">linux_but_unknown_drivers</span>()</span><br />
+      Warn that platform is linux, but drivers not known.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PlatformDependent-pysrc.html#linux_but_unknown_drivers">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="sync_swap_with_vbl_pre_gl_init"></a><span class="summary-sig-name">sync_swap_with_vbl_pre_gl_init</span>()</span><br />
+      Try to synchronize buffer swapping and vertical retrace before starting OpenGL.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PlatformDependent-pysrc.html#sync_swap_with_vbl_pre_gl_init">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="sync_swap_with_vbl_post_gl_init"></a><span class="summary-sig-name">sync_swap_with_vbl_post_gl_init</span>()</span><br />
+      Try to synchronize buffer swapping and vertical retrace after starting OpenGL.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PlatformDependent-pysrc.html#sync_swap_with_vbl_post_gl_init">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="query_refresh_rate"></a><span class="summary-sig-name">query_refresh_rate</span>(<span class="summary-sig-arg">screen</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PlatformDependent-pysrc.html#query_refresh_rate">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.PlatformDependent-module.html#attempt_to_load_multitexturing" class="summary-sig-name">attempt_to_load_multitexturing</a>()</span><br />
+      Attempt to load multitexturing functions and constants.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PlatformDependent-pysrc.html#attempt_to_load_multitexturing">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+</table>
+<!-- ==================== FUNCTION DETAILS ==================== -->
+<a name="section-FunctionDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Function Details</span></td>
+</tr>
+</table>
+<a name="set_priority"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">set_priority</span>(<span class="sig-arg">*args</span>,
+        <span class="sig-arg">**kw</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.PlatformDependent-pysrc.html#set_priority">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Set the priority of the Vision Egg application.
+
+Defaults to maximum priority, but can be changed via keyword
+arguments.
+
+Raises an exception on failure.
+
+</pre>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<a name="attempt_to_load_multitexturing"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">attempt_to_load_multitexturing</span>()</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.PlatformDependent-pysrc.html#attempt_to_load_multitexturing">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Attempt to load multitexturing functions and constants.
+
+Inserts the results into the gl module, which makes them globally
+available.
+
+</pre>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.PlatformDependent-pysrc.html b/doc/reference/html/VisionEgg.PlatformDependent-pysrc.html
new file mode 100644
index 0000000..e9936d9
--- /dev/null
+++ b/doc/reference/html/VisionEgg.PlatformDependent-pysrc.html
@@ -0,0 +1,373 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.PlatformDependent</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        Module PlatformDependent
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.PlatformDependent-pysrc.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<h1 class="epydoc">Source Code for <a href="VisionEgg.PlatformDependent-module.html">Module VisionEgg.PlatformDependent</a></h1>
+<pre class="py-src">
+<a name="L1"></a><tt class="py-lineno">  1</tt>  <tt class="py-line"><tt class="py-comment"># The Vision Egg: PlatformDependent</tt> </tt>
+<a name="L2"></a><tt class="py-lineno">  2</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L3"></a><tt class="py-lineno">  3</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Copyright (C) 2001-2003 Andrew Straw.</tt> </tt>
+<a name="L4"></a><tt class="py-lineno">  4</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Copyright (C) 2008 California Institute of Technology</tt> </tt>
+<a name="L5"></a><tt class="py-lineno">  5</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L6"></a><tt class="py-lineno">  6</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># URL: <http://www.visionegg.org/></tt> </tt>
+<a name="L7"></a><tt class="py-lineno">  7</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L8"></a><tt class="py-lineno">  8</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Distributed under the terms of the GNU Lesser General Public License</tt> </tt>
+<a name="L9"></a><tt class="py-lineno">  9</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># (LGPL). See LICENSE.TXT that came with this file.</tt> </tt>
+<a name="L10"></a><tt class="py-lineno"> 10</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L11"></a><tt class="py-lineno"> 11</tt>  <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L12"></a><tt class="py-lineno"> 12</tt>  <tt class="py-line"><tt class="py-docstring">Implementations of functions which vary by platform.</tt> </tt>
+<a name="L13"></a><tt class="py-lineno"> 13</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L14"></a><tt class="py-lineno"> 14</tt>  <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L15"></a><tt class="py-lineno"> 15</tt>  <tt class="py-line"> </tt>
+<a name="L16"></a><tt class="py-lineno"> 16</tt>  <tt class="py-line"><tt class="py-comment">####################################################################</tt> </tt>
+<a name="L17"></a><tt class="py-lineno"> 17</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L18"></a><tt class="py-lineno"> 18</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#        Import all the necessary packages</tt> </tt>
+<a name="L19"></a><tt class="py-lineno"> 19</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L20"></a><tt class="py-lineno"> 20</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">####################################################################</tt> </tt>
+<a name="L21"></a><tt class="py-lineno"> 21</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L22"></a><tt class="py-lineno"> 22</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">logging</tt> </tt>
+<a name="L23"></a><tt class="py-lineno"> 23</tt>  <tt class="py-line"> </tt>
+<a name="L24"></a><tt class="py-lineno"> 24</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">sys</tt><tt class="py-op">,</tt> <tt class="py-name">os</tt> </tt>
+<a name="L25"></a><tt class="py-lineno"> 25</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-0" class="py-name" targets="Package VisionEgg=VisionEgg-module.html"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-0', 'VisionEgg', 'link-0');">VisionEgg</a></tt> </tt>
+<a name="L26"></a><tt class="py-lineno"> 26</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-1" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-1', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-2" class="py-name" targets="Module VisionEgg.Core=VisionEgg.Core-module.html"><a title="VisionEgg.Core" class="py-name" href="#" onclick="return doclink('link-2', 'Core', 'link-2');">Core</a></tt> </tt>
+<a name="L27"></a><tt class="py-lineno"> 27</tt>  <tt class="py-line"> </tt>
+<a name="L28"></a><tt class="py-lineno"> 28</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-3" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-3', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-4" class="py-name" targets="Module VisionEgg.GL=VisionEgg.GL-module.html"><a title="VisionEgg.GL" class="py-name" href="#" onclick="return doclink('link-4', 'GL', 'link-4');">GL</a></tt> <tt clas [...]
+<a name="L29"></a><tt class="py-lineno"> 29</tt>  <tt class="py-line"> </tt>
+<a name="set_priority"></a><div id="set_priority-def"><a name="L30"></a><tt class="py-lineno"> 30</tt> <a class="py-toggle" href="#" id="set_priority-toggle" onclick="return toggle('set_priority');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PlatformDependent-module.html#set_priority">set_priority</a><tt class="py-op">(</tt><tt class="py-op">*</tt><tt class="py-param">args</tt><tt class="py-op">,</tt><tt class="py-op">**</tt><tt class= [...]
+</div><div id="set_priority-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="set_priority-expanded"><a name="L31"></a><tt class="py-lineno"> 31</tt>  <tt class="py-line">    <tt class="py-docstring">"""Set the priority of the Vision Egg application.</tt> </tt>
+<a name="L32"></a><tt class="py-lineno"> 32</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L33"></a><tt class="py-lineno"> 33</tt>  <tt class="py-line"><tt class="py-docstring">    Defaults to maximum priority, but can be changed via keyword</tt> </tt>
+<a name="L34"></a><tt class="py-lineno"> 34</tt>  <tt class="py-line"><tt class="py-docstring">    arguments.</tt> </tt>
+<a name="L35"></a><tt class="py-lineno"> 35</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L36"></a><tt class="py-lineno"> 36</tt>  <tt class="py-line"><tt class="py-docstring">    Raises an exception on failure.</tt> </tt>
+<a name="L37"></a><tt class="py-lineno"> 37</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L38"></a><tt class="py-lineno"> 38</tt>  <tt class="py-line"> </tt>
+<a name="L39"></a><tt class="py-lineno"> 39</tt>  <tt class="py-line">    <tt class="py-comment"># potential keywords</tt> </tt>
+<a name="L40"></a><tt class="py-lineno"> 40</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">parse_me</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-string">"darwin_realtime_period_denom"</tt><tt class="py-op">,</tt> </tt>
+<a name="L41"></a><tt class="py-lineno"> 41</tt>  <tt class="py-line">                <tt class="py-string">"darwin_realtime_computation_denom"</tt><tt class="py-op">,</tt> </tt>
+<a name="L42"></a><tt class="py-lineno"> 42</tt>  <tt class="py-line">                <tt class="py-string">"darwin_realtime_constraint_denom"</tt><tt class="py-op">,</tt> </tt>
+<a name="L43"></a><tt class="py-lineno"> 43</tt>  <tt class="py-line">                <tt class="py-string">"darwin_realtime_preemptible"</tt><tt class="py-op">,</tt> </tt>
+<a name="L44"></a><tt class="py-lineno"> 44</tt>  <tt class="py-line">                <tt class="py-string">"darwin_maxpriority_conventional_not_realtime"</tt><tt class="py-op">,</tt> </tt>
+<a name="L45"></a><tt class="py-lineno"> 45</tt>  <tt class="py-line">                <tt class="py-string">"darwin_conventional_priority"</tt><tt class="py-op">,</tt> </tt>
+<a name="L46"></a><tt class="py-lineno"> 46</tt>  <tt class="py-line">                <tt class="py-string">"darwin_pthread_priority"</tt><tt class="py-op">]</tt> </tt>
+<a name="L47"></a><tt class="py-lineno"> 47</tt>  <tt class="py-line"> </tt>
+<a name="L48"></a><tt class="py-lineno"> 48</tt>  <tt class="py-line">    <tt id="link-5" class="py-name" targets="Variable VisionEgg.logger=VisionEgg-module.html#logger"><a title="VisionEgg.logger" class="py-name" href="#" onclick="return doclink('link-5', 'logger', 'link-5');">logger</a></tt> <tt class="py-op">=</tt> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">getLogger</tt><tt class="py-op">(</tt><tt class="py-string">'VisionEgg.PlatformDependent'</tt>< [...]
+<a name="L49"></a><tt class="py-lineno"> 49</tt>  <tt class="py-line">    <tt class="py-name">params</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L50"></a><tt class="py-lineno"> 50</tt>  <tt class="py-line"> </tt>
+<a name="L51"></a><tt class="py-lineno"> 51</tt>  <tt class="py-line">    <tt class="py-comment"># set variable in local namespace</tt> </tt>
+<a name="L52"></a><tt class="py-lineno"> 52</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">for</tt> <tt class="py-name">word</tt> <tt class="py-keyword">in</tt> <tt class="py-name">parse_me</tt><tt class="py-op">:</tt> </tt>
+<a name="L53"></a><tt class="py-lineno"> 53</tt>  <tt class="py-line">        <tt class="py-comment"># set the value from VisionEgg.config</tt> </tt>
+<a name="L54"></a><tt class="py-lineno"> 54</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">config_name</tt> <tt class="py-op">=</tt> <tt class="py-string">"VISIONEGG_"</tt><tt class="py-op">+</tt><tt class="py-name">word</tt><tt class="py-op">.</tt><tt class="py-name">upper</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L55"></a><tt class="py-lineno"> 55</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt id="link-6" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-6', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-7" class="py-name" targets="Variable VisionEgg.config=VisionEgg-module.html#config"><a title="VisionEgg.config" class="py-name" href="# [...]
+<a name="L56"></a><tt class="py-lineno"> 56</tt>  <tt class="py-line">            <tt class="py-name">value</tt> <tt class="py-op">=</tt> <tt class="py-name">getattr</tt><tt class="py-op">(</tt><tt id="link-8" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-8', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-9" class="py-name"><a title="VisionEgg.config" class="py-name" href="#" onclick="return doclink('link-9',  [...]
+<a name="L57"></a><tt class="py-lineno"> 57</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L58"></a><tt class="py-lineno"> 58</tt>  <tt class="py-line">            <tt class="py-name">value</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L59"></a><tt class="py-lineno"> 59</tt>  <tt class="py-line">        <tt class="py-comment"># override default value if present in keyword arguments</tt> </tt>
+<a name="L60"></a><tt class="py-lineno"> 60</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">word</tt> <tt class="py-keyword">in</tt> <tt class="py-name">kw</tt><tt class="py-op">.</tt><tt class="py-name">keys</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L61"></a><tt class="py-lineno"> 61</tt>  <tt class="py-line">            <tt class="py-name">value</tt> <tt class="py-op">=</tt> <tt class="py-name">kw</tt><tt class="py-op">[</tt><tt class="py-name">word</tt><tt class="py-op">]</tt> </tt>
+<a name="L62"></a><tt class="py-lineno"> 62</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">value</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L63"></a><tt class="py-lineno"> 63</tt>  <tt class="py-line">            <tt class="py-name">params</tt><tt class="py-op">[</tt><tt class="py-name">word</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">value</tt> </tt>
+<a name="L64"></a><tt class="py-lineno"> 64</tt>  <tt class="py-line"> </tt>
+<a name="L65"></a><tt class="py-lineno"> 65</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">platform</tt> <tt class="py-op">==</tt> <tt class="py-string">'darwin'</tt><tt class="py-op">:</tt> </tt>
+<a name="L66"></a><tt class="py-lineno"> 66</tt>  <tt class="py-line"> </tt>
+<a name="L67"></a><tt class="py-lineno"> 67</tt>  <tt class="py-line">        <tt class="py-comment"># Everything to support realtime in Apple Mac OS X is based on</tt> </tt>
+<a name="L68"></a><tt class="py-lineno"> 68</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># the following two things:</tt> </tt>
+<a name="L69"></a><tt class="py-lineno"> 69</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment">#</tt> </tt>
+<a name="L70"></a><tt class="py-lineno"> 70</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># 1) http://developer.apple.com/techpubs/macosx/Darwin/General/KernelProgramming/scheduler/Using_Mach__pplications.html</tt> </tt>
+<a name="L71"></a><tt class="py-lineno"> 71</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment">#</tt> </tt>
+<a name="L72"></a><tt class="py-lineno"> 72</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># 2) The Mac OS X port of the Esound daemon.</tt> </tt>
+<a name="L73"></a><tt class="py-lineno"> 73</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L74"></a><tt class="py-lineno"> 74</tt>  <tt class="py-line">        <tt class="py-keyword">import</tt> <tt class="py-name">darwin_maxpriority</tt> </tt>
+<a name="L75"></a><tt class="py-lineno"> 75</tt>  <tt class="py-line"> </tt>
+<a name="L76"></a><tt class="py-lineno"> 76</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">params</tt><tt class="py-op">[</tt><tt class="py-string">'darwin_maxpriority_conventional_not_realtime'</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
+<a name="L77"></a><tt class="py-lineno"> 77</tt>  <tt class="py-line">            <tt class="py-name">process</tt> <tt class="py-op">=</tt> <tt class="py-name">darwin_maxpriority</tt><tt class="py-op">.</tt><tt class="py-name">PRIO_PROCESS</tt> </tt>
+<a name="L78"></a><tt class="py-lineno"> 78</tt>  <tt class="py-line">            <tt class="py-name">policy</tt> <tt class="py-op">=</tt> <tt class="py-name">darwin_maxpriority</tt><tt class="py-op">.</tt><tt id="link-10" class="py-name" targets="Variable VisionEgg.posix_maxpriority.SCHED_RR=VisionEgg.posix_maxpriority-module.html#SCHED_RR"><a title="VisionEgg.posix_maxpriority.SCHED_RR" class="py-name" href="#" onclick="return doclink('link-10', 'SCHED_RR', 'link-10');">SCHED_RR</a></t [...]
+<a name="L79"></a><tt class="py-lineno"> 79</tt>  <tt class="py-line"> </tt>
+<a name="L80"></a><tt class="py-lineno"> 80</tt>  <tt class="py-line">            <tt id="link-11" class="py-name"><a title="VisionEgg.logger" class="py-name" href="#" onclick="return doclink('link-11', 'logger', 'link-5');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">"Setting max priority mode for darwin platform "</tt> </tt>
+<a name="L81"></a><tt class="py-lineno"> 81</tt>  <tt class="py-line">                        <tt class="py-string">"using conventional priority %d."</tt><tt class="py-op">%</tt><tt class="py-op">(</tt> </tt>
+<a name="L82"></a><tt class="py-lineno"> 82</tt>  <tt class="py-line">                        <tt class="py-name">params</tt><tt class="py-op">[</tt><tt class="py-string">'darwin_conventional_priority'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L83"></a><tt class="py-lineno"> 83</tt>  <tt class="py-line"> </tt>
+<a name="L84"></a><tt class="py-lineno"> 84</tt>  <tt class="py-line">            <tt class="py-comment"># set the priority of the current process</tt> </tt>
+<a name="L85"></a><tt class="py-lineno"> 85</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">darwin_maxpriority</tt><tt class="py-op">.</tt><tt class="py-name">setpriority</tt><tt class="py-op">(</tt><tt class="py-name">process</tt><tt class="py-op">,</tt><tt class="py-number">0</tt><tt class="py-op">,</tt><tt class="py-name">params</tt><tt class="py-op">[</tt><tt class="py-string">'darwin_conventional_priority'</tt><tt class="py-op">]</tt><tt class=" [...]
+<a name="L86"></a><tt class="py-lineno"> 86</tt>  <tt class="py-line"> </tt>
+<a name="L87"></a><tt class="py-lineno"> 87</tt>  <tt class="py-line">            <tt class="py-comment"># This sets the pthread priority, which only prioritizes</tt> </tt>
+<a name="L88"></a><tt class="py-lineno"> 88</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># threads in the process.  Might as well do it, but it</tt> </tt>
+<a name="L89"></a><tt class="py-lineno"> 89</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># shouldn't matter unless we're running multi-threaded.</tt> </tt>
+<a name="L90"></a><tt class="py-lineno"> 90</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">darwin_pthread_priority</tt> <tt class="py-op">=</tt> <tt class="py-name">params</tt><tt class="py-op">[</tt><tt class="py-string">'darwin_pthread_priority'</tt><tt class="py-op">]</tt> </tt>
+<a name="L91"></a><tt class="py-lineno"> 91</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">darwin_pthread_priority</tt> <tt class="py-op">==</tt> <tt class="py-string">"max"</tt><tt class="py-op">:</tt> <tt class="py-comment"># should otherwise be an int</tt> </tt>
+<a name="L92"></a><tt class="py-lineno"> 92</tt>  <tt class="py-line">                <tt class="py-name">darwin_pthread_priority</tt> <tt class="py-op">=</tt> <tt class="py-name">darwin_maxpriority</tt><tt class="py-op">.</tt><tt id="link-12" class="py-name" targets="Variable VisionEgg.posix_maxpriority.sched_get_priority_max=VisionEgg.posix_maxpriority-module.html#sched_get_priority_max"><a title="VisionEgg.posix_maxpriority.sched_get_priority_max" class="py-name" href="#" onclick="ret [...]
+<a name="L93"></a><tt class="py-lineno"> 93</tt>  <tt class="py-line"> </tt>
+<a name="L94"></a><tt class="py-lineno"> 94</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">darwin_maxpriority</tt><tt class="py-op">.</tt><tt class="py-name">set_self_pthread_priority</tt><tt class="py-op">(</tt><tt class="py-name">policy</tt><tt class="py-op">,</tt> </tt>
+<a name="L95"></a><tt class="py-lineno"> 95</tt>  <tt class="py-line">                                                            <tt class="py-name">darwin_pthread_priority</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">:</tt> </tt>
+<a name="L96"></a><tt class="py-lineno"> 96</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> <tt class="py-name">RuntimeError</tt><tt class="py-op">(</tt><tt class="py-string">"set_self_pthread failed."</tt><tt class="py-op">)</tt> </tt>
+<a name="L97"></a><tt class="py-lineno"> 97</tt>  <tt class="py-line"> </tt>
+<a name="L98"></a><tt class="py-lineno"> 98</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L99"></a><tt class="py-lineno"> 99</tt>  <tt class="py-line">            <tt class="py-name">bus_speed</tt> <tt class="py-op">=</tt> <tt class="py-name">darwin_maxpriority</tt><tt class="py-op">.</tt><tt class="py-name">get_bus_speed</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L100"></a><tt class="py-lineno">100</tt>  <tt class="py-line">            <tt id="link-13" class="py-name"><a title="VisionEgg.logger" class="py-name" href="#" onclick="return doclink('link-13', 'logger', 'link-5');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">"Setting max priority mode for darwin platform "</tt> </tt>
+<a name="L101"></a><tt class="py-lineno">101</tt>  <tt class="py-line">                        <tt class="py-string">"using realtime threads. ( period = %d / %d, "</tt> </tt>
+<a name="L102"></a><tt class="py-lineno">102</tt>  <tt class="py-line">                        <tt class="py-string">"computation = %d / %d, constraint = %d / %d, "</tt> </tt>
+<a name="L103"></a><tt class="py-lineno">103</tt>  <tt class="py-line">                        <tt class="py-string">"preemptible = %d )"</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt> </tt>
+<a name="L104"></a><tt class="py-lineno">104</tt>  <tt class="py-line">                        <tt class="py-name">bus_speed</tt><tt class="py-op">,</tt> <tt class="py-name">params</tt><tt class="py-op">[</tt><tt class="py-string">'darwin_realtime_period_denom'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L105"></a><tt class="py-lineno">105</tt>  <tt class="py-line">                        <tt class="py-name">bus_speed</tt><tt class="py-op">,</tt> <tt class="py-name">params</tt><tt class="py-op">[</tt><tt class="py-string">'darwin_realtime_computation_denom'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L106"></a><tt class="py-lineno">106</tt>  <tt class="py-line">                        <tt class="py-name">bus_speed</tt><tt class="py-op">,</tt> <tt class="py-name">params</tt><tt class="py-op">[</tt><tt class="py-string">'darwin_realtime_constraint_denom'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L107"></a><tt class="py-lineno">107</tt>  <tt class="py-line">                        <tt class="py-name">params</tt><tt class="py-op">[</tt><tt class="py-string">'darwin_realtime_preemptible'</tt><tt class="py-op">]</tt> <tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L108"></a><tt class="py-lineno">108</tt>  <tt class="py-line">            <tt class="py-name">period</tt> <tt class="py-op">=</tt> <tt class="py-name">bus_speed</tt> <tt class="py-op">/</tt> <tt class="py-name">params</tt><tt class="py-op">[</tt><tt class="py-string">'darwin_realtime_period_denom'</tt><tt class="py-op">]</tt> </tt>
+<a name="L109"></a><tt class="py-lineno">109</tt>  <tt class="py-line">            <tt class="py-name">computation</tt> <tt class="py-op">=</tt> <tt class="py-name">bus_speed</tt> <tt class="py-op">/</tt> <tt class="py-name">params</tt><tt class="py-op">[</tt><tt class="py-string">'darwin_realtime_computation_denom'</tt><tt class="py-op">]</tt> </tt>
+<a name="L110"></a><tt class="py-lineno">110</tt>  <tt class="py-line">            <tt class="py-name">constraint</tt> <tt class="py-op">=</tt> <tt class="py-name">bus_speed</tt> <tt class="py-op">/</tt> <tt class="py-name">params</tt><tt class="py-op">[</tt><tt class="py-string">'darwin_realtime_constraint_denom'</tt><tt class="py-op">]</tt> </tt>
+<a name="L111"></a><tt class="py-lineno">111</tt>  <tt class="py-line">            <tt class="py-name">preemptible</tt> <tt class="py-op">=</tt> <tt class="py-name">params</tt><tt class="py-op">[</tt><tt class="py-string">'darwin_realtime_preemptible'</tt><tt class="py-op">]</tt> </tt>
+<a name="L112"></a><tt class="py-lineno">112</tt>  <tt class="py-line"> </tt>
+<a name="L113"></a><tt class="py-lineno">113</tt>  <tt class="py-line">            <tt class="py-name">darwin_maxpriority</tt><tt class="py-op">.</tt><tt class="py-name">set_self_thread_time_constraint_policy</tt><tt class="py-op">(</tt> <tt class="py-name">period</tt><tt class="py-op">,</tt> <tt class="py-name">computation</tt><tt class="py-op">,</tt> <tt class="py-name">constraint</tt><tt class="py-op">,</tt> <tt class="py-name">preemptible</tt> <tt class="py-op">)</tt> </tt>
+<a name="L114"></a><tt class="py-lineno">114</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">platform</tt> <tt class="py-op">==</tt> <tt class="py-string">'win32'</tt><tt class="py-op">:</tt> </tt>
+<a name="L115"></a><tt class="py-lineno">115</tt>  <tt class="py-line">        <tt class="py-keyword">import</tt> <tt id="link-14" class="py-name" targets="Module VisionEgg.win32_maxpriority=VisionEgg.win32_maxpriority-module.html"><a title="VisionEgg.win32_maxpriority" class="py-name" href="#" onclick="return doclink('link-14', 'win32_maxpriority', 'link-14');">win32_maxpriority</a></tt> </tt>
+<a name="L116"></a><tt class="py-lineno">116</tt>  <tt class="py-line">        <tt id="link-15" class="py-name"><a title="VisionEgg.logger" class="py-name" href="#" onclick="return doclink('link-15', 'logger', 'link-5');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">"Setting priority for win32 platform to "</tt> </tt>
+<a name="L117"></a><tt class="py-lineno">117</tt>  <tt class="py-line">                    <tt class="py-string">"HIGH_PRIORITY_CLASS, THREAD_PRIORITY_HIGHEST. "</tt> </tt>
+<a name="L118"></a><tt class="py-lineno">118</tt>  <tt class="py-line">                    <tt class="py-string">"(This is Microsoft's maximum recommended priority, "</tt> </tt>
+<a name="L119"></a><tt class="py-lineno">119</tt>  <tt class="py-line">                    <tt class="py-string">"but you could still raise it higher.)"</tt><tt class="py-op">)</tt> </tt>
+<a name="L120"></a><tt class="py-lineno">120</tt>  <tt class="py-line">        <tt id="link-16" class="py-name"><a title="VisionEgg.win32_maxpriority" class="py-name" href="#" onclick="return doclink('link-16', 'win32_maxpriority', 'link-14');">win32_maxpriority</a></tt><tt class="py-op">.</tt><tt id="link-17" class="py-name" targets="Variable VisionEgg.win32_maxpriority.set_self_process_priority_class=VisionEgg.win32_maxpriority-module.html#set_self_process_priority_class"><a title="Vis [...]
+<a name="L121"></a><tt class="py-lineno">121</tt>  <tt class="py-line">            <tt id="link-18" class="py-name"><a title="VisionEgg.win32_maxpriority" class="py-name" href="#" onclick="return doclink('link-18', 'win32_maxpriority', 'link-14');">win32_maxpriority</a></tt><tt class="py-op">.</tt><tt id="link-19" class="py-name" targets="Variable VisionEgg.win32_maxpriority.HIGH_PRIORITY_CLASS=VisionEgg.win32_maxpriority-module.html#HIGH_PRIORITY_CLASS"><a title="VisionEgg.win32_maxprio [...]
+<a name="L122"></a><tt class="py-lineno">122</tt>  <tt class="py-line">        <tt id="link-20" class="py-name"><a title="VisionEgg.win32_maxpriority" class="py-name" href="#" onclick="return doclink('link-20', 'win32_maxpriority', 'link-14');">win32_maxpriority</a></tt><tt class="py-op">.</tt><tt id="link-21" class="py-name" targets="Variable VisionEgg.win32_maxpriority.set_self_thread_priority=VisionEgg.win32_maxpriority-module.html#set_self_thread_priority"><a title="VisionEgg.win32_m [...]
+<a name="L123"></a><tt class="py-lineno">123</tt>  <tt class="py-line">            <tt id="link-22" class="py-name"><a title="VisionEgg.win32_maxpriority" class="py-name" href="#" onclick="return doclink('link-22', 'win32_maxpriority', 'link-14');">win32_maxpriority</a></tt><tt class="py-op">.</tt><tt id="link-23" class="py-name" targets="Variable VisionEgg.win32_maxpriority.THREAD_PRIORITY_HIGHEST=VisionEgg.win32_maxpriority-module.html#THREAD_PRIORITY_HIGHEST"><a title="VisionEgg.win32 [...]
+<a name="L124"></a><tt class="py-lineno">124</tt>  <tt class="py-line"> </tt>
+<a name="L125"></a><tt class="py-lineno">125</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">platform</tt><tt class="py-op">.</tt><tt class="py-name">startswith</tt><tt class="py-op">(</tt><tt class="py-string">'irix'</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">platform</tt><tt class="py-op">.</tt><tt class="py-name [...]
+<a name="L126"></a><tt class="py-lineno">126</tt>  <tt class="py-line">        <tt class="py-keyword">import</tt> <tt id="link-24" class="py-name" targets="Module VisionEgg.posix_maxpriority=VisionEgg.posix_maxpriority-module.html"><a title="VisionEgg.posix_maxpriority" class="py-name" href="#" onclick="return doclink('link-24', 'posix_maxpriority', 'link-24');">posix_maxpriority</a></tt> </tt>
+<a name="L127"></a><tt class="py-lineno">127</tt>  <tt class="py-line">        <tt class="py-name">policy</tt> <tt class="py-op">=</tt> <tt id="link-25" class="py-name"><a title="VisionEgg.posix_maxpriority" class="py-name" href="#" onclick="return doclink('link-25', 'posix_maxpriority', 'link-24');">posix_maxpriority</a></tt><tt class="py-op">.</tt><tt id="link-26" class="py-name" targets="Variable VisionEgg.posix_maxpriority.SCHED_FIFO=VisionEgg.posix_maxpriority-module.html#SCHED_FIFO [...]
+<a name="L128"></a><tt class="py-lineno">128</tt>  <tt class="py-line">        <tt class="py-name">max_priority</tt> <tt class="py-op">=</tt> <tt id="link-27" class="py-name"><a title="VisionEgg.posix_maxpriority" class="py-name" href="#" onclick="return doclink('link-27', 'posix_maxpriority', 'link-24');">posix_maxpriority</a></tt><tt class="py-op">.</tt><tt id="link-28" class="py-name"><a title="VisionEgg.posix_maxpriority.sched_get_priority_max" class="py-name" href="#" onclick="retur [...]
+<a name="L129"></a><tt class="py-lineno">129</tt>  <tt class="py-line">        <tt id="link-29" class="py-name"><a title="VisionEgg.logger" class="py-name" href="#" onclick="return doclink('link-29', 'logger', 'link-5');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">"Setting priority for POSIX-compatible platform to "</tt> </tt>
+<a name="L130"></a><tt class="py-lineno">130</tt>  <tt class="py-line">                    <tt class="py-string">"policy SCHED_FIFO and priority to "</tt> </tt>
+<a name="L131"></a><tt class="py-lineno">131</tt>  <tt class="py-line">                    <tt class="py-string">"%d"</tt><tt class="py-op">%</tt><tt class="py-name">max_priority</tt><tt class="py-op">)</tt> </tt>
+<a name="L132"></a><tt class="py-lineno">132</tt>  <tt class="py-line">        <tt id="link-30" class="py-name"><a title="VisionEgg.posix_maxpriority" class="py-name" href="#" onclick="return doclink('link-30', 'posix_maxpriority', 'link-24');">posix_maxpriority</a></tt><tt class="py-op">.</tt><tt id="link-31" class="py-name" targets="Variable VisionEgg.posix_maxpriority.set_self_policy_priority=VisionEgg.posix_maxpriority-module.html#set_self_policy_priority"><a title="VisionEgg.posix_m [...]
+<a name="L133"></a><tt class="py-lineno">133</tt>  <tt class="py-line">        <tt id="link-32" class="py-name"><a title="VisionEgg.posix_maxpriority" class="py-name" href="#" onclick="return doclink('link-32', 'posix_maxpriority', 'link-24');">posix_maxpriority</a></tt><tt class="py-op">.</tt><tt id="link-33" class="py-name" targets="Variable VisionEgg.posix_maxpriority.stop_memory_paging=VisionEgg.posix_maxpriority-module.html#stop_memory_paging"><a title="VisionEgg.posix_maxpriority.s [...]
+<a name="L134"></a><tt class="py-lineno">134</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L135"></a><tt class="py-lineno">135</tt>  <tt class="py-line">        <tt class="py-keyword">raise</tt> <tt class="py-name">RuntimeError</tt><tt class="py-op">(</tt><tt class="py-string">"Cannot change priority.  Unknown platform '%s'"</tt><tt class="py-op">%</tt><tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">platform</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L136"></a><tt class="py-lineno">136</tt>  <tt class="py-line"> </tt>
+<a name="linux_but_unknown_drivers"></a><div id="linux_but_unknown_drivers-def"><a name="L137"></a><tt class="py-lineno">137</tt> <a class="py-toggle" href="#" id="linux_but_unknown_drivers-toggle" onclick="return toggle('linux_but_unknown_drivers');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PlatformDependent-module.html#linux_but_unknown_drivers">linux_but_unknown_drivers</a><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class= [...]
+</div><div id="linux_but_unknown_drivers-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="linux_but_unknown_drivers-expanded"><a name="L138"></a><tt class="py-lineno">138</tt>  <tt class="py-line">    <tt class="py-docstring">"""Warn that platform is linux, but drivers not known."""</tt> </tt>
+<a name="L139"></a><tt class="py-lineno">139</tt>  <tt class="py-line">    <tt class="py-comment"># If you've added support for other drivers to sync with VBLANK under</tt> </tt>
+<a name="L140"></a><tt class="py-lineno">140</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># linux, please let me know how!</tt> </tt>
+<a name="L141"></a><tt class="py-lineno">141</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-34" class="py-name"><a title="VisionEgg.logger" class="py-name" href="#" onclick="return doclink('link-34', 'logger', 'link-5');">logger</a></tt> <tt class="py-op">=</tt> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">getLogger</tt><tt class="py-op">(</tt><tt class="py-string">'VisionEgg.PlatformDependent'</tt><tt class="py-op">)</tt> </tt>
+<a name="L142"></a><tt class="py-lineno">142</tt>  <tt class="py-line">    <tt id="link-35" class="py-name"><a title="VisionEgg.logger" class="py-name" href="#" onclick="return doclink('link-35', 'logger', 'link-5');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">warning</tt><tt class="py-op">(</tt><tt class="py-string">"Could not sync buffer swapping to vblank because "</tt> </tt>
+<a name="L143"></a><tt class="py-lineno">143</tt>  <tt class="py-line">                   <tt class="py-string">"you are running linux but not known/supported "</tt> </tt>
+<a name="L144"></a><tt class="py-lineno">144</tt>  <tt class="py-line">                   <tt class="py-string">"drivers (only nVidia and recent Mesa DRI Radeon "</tt> </tt>
+<a name="L145"></a><tt class="py-lineno">145</tt>  <tt class="py-line">                   <tt class="py-string">"currently supported)."</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L146"></a><tt class="py-lineno">146</tt>  <tt class="py-line"> </tt>
+<a name="sync_swap_with_vbl_pre_gl_init"></a><div id="sync_swap_with_vbl_pre_gl_init-def"><a name="L147"></a><tt class="py-lineno">147</tt> <a class="py-toggle" href="#" id="sync_swap_with_vbl_pre_gl_init-toggle" onclick="return toggle('sync_swap_with_vbl_pre_gl_init');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PlatformDependent-module.html#sync_swap_with_vbl_pre_gl_init">sync_swap_with_vbl_pre_gl_init</a><tt class="py-op">(</tt><tt  [...]
+</div><div id="sync_swap_with_vbl_pre_gl_init-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="sync_swap_with_vbl_pre_gl_init-expanded"><a name="L148"></a><tt class="py-lineno">148</tt>  <tt class="py-line">    <tt class="py-docstring">"""Try to synchronize buffer swapping and vertical retrace before starting OpenGL."""</tt> </tt>
+<a name="L149"></a><tt class="py-lineno">149</tt>  <tt class="py-line">    <tt class="py-name">success</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L150"></a><tt class="py-lineno">150</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">platform</tt><tt class="py-op">.</tt><tt class="py-name">startswith</tt><tt class="py-op">(</tt><tt class="py-string">"linux"</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L151"></a><tt class="py-lineno">151</tt>  <tt class="py-line">        <tt class="py-comment"># Unfotunately, cannot check do glGetString(GL_VENDOR) to</tt> </tt>
+<a name="L152"></a><tt class="py-lineno">152</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># check if drivers are nVidia because we have to do that requires</tt> </tt>
+<a name="L153"></a><tt class="py-lineno">153</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># OpenGL context started, but this variable must be set</tt> </tt>
+<a name="L154"></a><tt class="py-lineno">154</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># before OpenGL context started!</tt> </tt>
+<a name="L155"></a><tt class="py-lineno">155</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L156"></a><tt class="py-lineno">156</tt>  <tt class="py-line">        <tt class="py-comment"># Assume drivers are nVidia or recent ATI</tt> </tt>
+<a name="L157"></a><tt class="py-lineno">157</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt id="link-36" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-36', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-37" class="py-name"><a title="VisionEgg.Core" class="py-name" href="#" onclick="return doclink('link-37', 'Core', 'link-2');">Core</a></tt><tt class="py-op">.</tt><tt id="link-38" class="py-n [...]
+<a name="L158"></a><tt class="py-lineno">158</tt>  <tt class="py-line">        <tt class="py-comment"># Set for nVidia linux</tt> </tt>
+<a name="L159"></a><tt class="py-lineno">159</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">environ</tt><tt class="py-op">[</tt><tt class="py-string">"__GL_SYNC_TO_VBLANK"</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-string">"1"</tt> </tt>
+<a name="L160"></a><tt class="py-lineno">160</tt>  <tt class="py-line">        <tt class="py-comment"># Set for recent linux Mesa DRI Radeon</tt> </tt>
+<a name="L161"></a><tt class="py-lineno">161</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">environ</tt><tt class="py-op">[</tt><tt class="py-string">"LIBGL_SYNC_REFRESH"</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-string">"1"</tt> </tt>
+<a name="L162"></a><tt class="py-lineno">162</tt>  <tt class="py-line">        <tt class="py-name">success</tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L163"></a><tt class="py-lineno">163</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">platform</tt><tt class="py-op">.</tt><tt class="py-name">startswith</tt><tt class="py-op">(</tt><tt class="py-string">"irix"</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L164"></a><tt class="py-lineno">164</tt>  <tt class="py-line">        <tt class="py-comment"># I think this is set using the GLX swap_control SGI</tt> </tt>
+<a name="L165"></a><tt class="py-lineno">165</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># extension.  A C extension could be to be written to change</tt> </tt>
+<a name="L166"></a><tt class="py-lineno">166</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># this value. (It probably cannot be set through an OpenGL</tt> </tt>
+<a name="L167"></a><tt class="py-lineno">167</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># extension or an SDL/pygame feature.)</tt> </tt>
+<a name="L168"></a><tt class="py-lineno">168</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt id="link-40" class="py-name"><a title="VisionEgg.logger" class="py-name" href="#" onclick="return doclink('link-40', 'logger', 'link-5');">logger</a></tt> <tt class="py-op">=</tt> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">getLogger</tt><tt class="py-op">(</tt><tt class="py-string">'VisionEgg.PlatformDependent'</tt><tt class="py-op">)</tt> </tt>
+<a name="L169"></a><tt class="py-lineno">169</tt>  <tt class="py-line">        <tt id="link-41" class="py-name"><a title="VisionEgg.logger" class="py-name" href="#" onclick="return doclink('link-41', 'logger', 'link-5');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">"IRIX platform detected, assuming retrace sync."</tt><tt class="py-op">)</tt> </tt>
+<a name="L170"></a><tt class="py-lineno">170</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">success</tt> </tt>
+</div><a name="L171"></a><tt class="py-lineno">171</tt>  <tt class="py-line"> </tt>
+<a name="sync_swap_with_vbl_post_gl_init"></a><div id="sync_swap_with_vbl_post_gl_init-def"><a name="L172"></a><tt class="py-lineno">172</tt> <a class="py-toggle" href="#" id="sync_swap_with_vbl_post_gl_init-toggle" onclick="return toggle('sync_swap_with_vbl_post_gl_init');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PlatformDependent-module.html#sync_swap_with_vbl_post_gl_init">sync_swap_with_vbl_post_gl_init</a><tt class="py-op">(</t [...]
+</div><div id="sync_swap_with_vbl_post_gl_init-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="sync_swap_with_vbl_post_gl_init-expanded"><a name="L173"></a><tt class="py-lineno">173</tt>  <tt class="py-line">    <tt class="py-docstring">"""Try to synchronize buffer swapping and vertical retrace after starting OpenGL."""</tt> </tt>
+<a name="L174"></a><tt class="py-lineno">174</tt>  <tt class="py-line">    <tt class="py-name">success</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L175"></a><tt class="py-lineno">175</tt>  <tt class="py-line">    <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L176"></a><tt class="py-lineno">176</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">platform</tt> <tt class="py-op">==</tt> <tt class="py-string">"win32"</tt><tt class="py-op">:</tt> </tt>
+<a name="L177"></a><tt class="py-lineno">177</tt>  <tt class="py-line">            <tt class="py-keyword">import</tt> <tt class="py-name">OpenGL</tt><tt class="py-op">.</tt><tt class="py-name">WGL</tt><tt class="py-op">.</tt><tt class="py-name">EXT</tt><tt class="py-op">.</tt><tt class="py-name">swap_control</tt> </tt>
+<a name="L178"></a><tt class="py-lineno">178</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">OpenGL</tt><tt class="py-op">.</tt><tt class="py-name">WGL</tt><tt class="py-op">.</tt><tt class="py-name">EXT</tt><tt class="py-op">.</tt><tt class="py-name">swap_control</tt><tt class="py-op">.</tt><tt class="py-name">wglInitSwapControlARB</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> <tt class="py-comment"># Returns 1 if i [...]
+<a name="L179"></a><tt class="py-lineno">179</tt>  <tt class="py-line">                <tt class="py-name">OpenGL</tt><tt class="py-op">.</tt><tt class="py-name">WGL</tt><tt class="py-op">.</tt><tt class="py-name">EXT</tt><tt class="py-op">.</tt><tt class="py-name">swap_control</tt><tt class="py-op">.</tt><tt class="py-name">wglSwapIntervalEXT</tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> <tt class="py-comment"># Swap only at frame syncs</tt> </tt>
+<a name="L180"></a><tt class="py-lineno">180</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">OpenGL</tt><tt class="py-op">.</tt><tt class="py-name">WGL</tt><tt class="py-op">.</tt><tt class="py-name">EXT</tt><tt class="py-op">.</tt><tt class="py-name">swap_control</tt><tt class="py-op">.</tt><tt class="py-name">wglGetSwapIntervalEXT</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">1</tt><tt c [...]
+<a name="L181"></a><tt class="py-lineno">181</tt>  <tt class="py-line">                    <tt class="py-name">success</tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L182"></a><tt class="py-lineno">182</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">platform</tt> <tt class="py-op">==</tt> <tt class="py-string">"darwin"</tt><tt class="py-op">:</tt> </tt>
+<a name="L183"></a><tt class="py-lineno">183</tt>  <tt class="py-line">            <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L184"></a><tt class="py-lineno">184</tt>  <tt class="py-line">                <tt class="py-keyword">import</tt> <tt class="py-name">_darwin_sync_swap</tt> </tt>
+<a name="L185"></a><tt class="py-lineno">185</tt>  <tt class="py-line">                <tt class="py-name">_darwin_sync_swap</tt><tt class="py-op">.</tt><tt class="py-name">sync_swap</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L186"></a><tt class="py-lineno">186</tt>  <tt class="py-line">                <tt class="py-name">success</tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L187"></a><tt class="py-lineno">187</tt>  <tt class="py-line">            <tt class="py-keyword">except</tt> <tt class="py-name">Exception</tt><tt class="py-op">,</tt><tt class="py-name">x</tt><tt class="py-op">:</tt> </tt>
+<a name="L188"></a><tt class="py-lineno">188</tt>  <tt class="py-line">                <tt id="link-42" class="py-name"><a title="VisionEgg.logger" class="py-name" href="#" onclick="return doclink('link-42', 'logger', 'link-5');">logger</a></tt> <tt class="py-op">=</tt> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">getLogger</tt><tt class="py-op">(</tt><tt class="py-string">'VisionEgg.PlatformDependent'</tt><tt class="py-op">)</tt> </tt>
+<a name="L189"></a><tt class="py-lineno">189</tt>  <tt class="py-line">                <tt id="link-43" class="py-name"><a title="VisionEgg.logger" class="py-name" href="#" onclick="return doclink('link-43', 'logger', 'link-5');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">warning</tt><tt class="py-op">(</tt><tt class="py-string">"Failed trying to synchronize buffer "</tt> </tt>
+<a name="L190"></a><tt class="py-lineno">190</tt>  <tt class="py-line">                               <tt class="py-string">"swapping on darwin: %s: %s"</tt><tt class="py-op">%</tt><tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">x</tt><tt class="py-op">.</tt><tt class="py-name">__class__</tt><tt class="py-op">)</tt><tt class="py-op">,</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">x</tt><tt class="py-op">)</tt>< [...]
+<a name="L191"></a><tt class="py-lineno">191</tt>  <tt class="py-line">    <tt class="py-keyword">except</tt><tt class="py-op">:</tt> </tt>
+<a name="L192"></a><tt class="py-lineno">192</tt>  <tt class="py-line">        <tt class="py-keyword">pass</tt> </tt>
+<a name="L193"></a><tt class="py-lineno">193</tt>  <tt class="py-line"> </tt>
+<a name="L194"></a><tt class="py-lineno">194</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">success</tt> </tt>
+</div><a name="L195"></a><tt class="py-lineno">195</tt>  <tt class="py-line"> </tt>
+<a name="query_refresh_rate"></a><div id="query_refresh_rate-def"><a name="L196"></a><tt class="py-lineno">196</tt> <a class="py-toggle" href="#" id="query_refresh_rate-toggle" onclick="return toggle('query_refresh_rate');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PlatformDependent-module.html#query_refresh_rate">query_refresh_rate</a><tt class="py-op">(</tt><tt class="py-param">screen</tt><tt class="py-op">)</tt><tt class="py-op">:< [...]
+</div><div id="query_refresh_rate-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="query_refresh_rate-expanded"><a name="L197"></a><tt class="py-lineno">197</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">platform</tt> <tt class="py-op">==</tt> <tt class="py-string">'win32'</tt><tt class="py-op">:</tt> </tt>
+<a name="L198"></a><tt class="py-lineno">198</tt>  <tt class="py-line">        <tt class="py-keyword">import</tt> <tt id="link-44" class="py-name" targets="Module VisionEgg.win32_getrefresh=VisionEgg.win32_getrefresh-module.html"><a title="VisionEgg.win32_getrefresh" class="py-name" href="#" onclick="return doclink('link-44', 'win32_getrefresh', 'link-44');">win32_getrefresh</a></tt> </tt>
+<a name="L199"></a><tt class="py-lineno">199</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt id="link-45" class="py-name"><a title="VisionEgg.win32_getrefresh" class="py-name" href="#" onclick="return doclink('link-45', 'win32_getrefresh', 'link-44');">win32_getrefresh</a></tt><tt class="py-op">.</tt><tt id="link-46" class="py-name" targets="Variable VisionEgg.darwin_getrefresh.getrefresh=VisionEgg.darwin_getrefresh-module.html#getrefresh,Variable VisionEgg.win32 [...]
+VisionEgg.win32_getrefresh.getrefresh" class="py-name" href="#" onclick="return doclink('link-46', 'getrefresh', 'link-46');">getrefresh</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L200"></a><tt class="py-lineno">200</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">platform</tt> <tt class="py-op">==</tt> <tt class="py-string">'darwin'</tt><tt class="py-op">:</tt> </tt>
+<a name="L201"></a><tt class="py-lineno">201</tt>  <tt class="py-line">        <tt class="py-keyword">import</tt> <tt id="link-47" class="py-name" targets="Module VisionEgg.darwin_getrefresh=VisionEgg.darwin_getrefresh-module.html"><a title="VisionEgg.darwin_getrefresh" class="py-name" href="#" onclick="return doclink('link-47', 'darwin_getrefresh', 'link-47');">darwin_getrefresh</a></tt> </tt>
+<a name="L202"></a><tt class="py-lineno">202</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt id="link-48" class="py-name"><a title="VisionEgg.darwin_getrefresh" class="py-name" href="#" onclick="return doclink('link-48', 'darwin_getrefresh', 'link-47');">darwin_getrefresh</a></tt><tt class="py-op">.</tt><tt id="link-49" class="py-name"><a title="VisionEgg.darwin_getrefresh.getrefresh
+VisionEgg.win32_getrefresh.getrefresh" class="py-name" href="#" onclick="return doclink('link-49', 'getrefresh', 'link-46');">getrefresh</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L203"></a><tt class="py-lineno">203</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L204"></a><tt class="py-lineno">204</tt>  <tt class="py-line">        <tt class="py-keyword">raise</tt> <tt class="py-name">NotImplementedError</tt><tt class="py-op">(</tt><tt class="py-string">"Platform dependent code to query frame rate not implemented on this platform."</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L205"></a><tt class="py-lineno">205</tt>  <tt class="py-line"> </tt>
+<a name="attempt_to_load_multitexturing"></a><div id="attempt_to_load_multitexturing-def"><a name="L206"></a><tt class="py-lineno">206</tt> <a class="py-toggle" href="#" id="attempt_to_load_multitexturing-toggle" onclick="return toggle('attempt_to_load_multitexturing');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PlatformDependent-module.html#attempt_to_load_multitexturing">attempt_to_load_multitexturing</a><tt class="py-op">(</tt><tt  [...]
+</div><div id="attempt_to_load_multitexturing-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="attempt_to_load_multitexturing-expanded"><a name="L207"></a><tt class="py-lineno">207</tt>  <tt class="py-line">    <tt class="py-docstring">"""Attempt to load multitexturing functions and constants.</tt> </tt>
+<a name="L208"></a><tt class="py-lineno">208</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L209"></a><tt class="py-lineno">209</tt>  <tt class="py-line"><tt class="py-docstring">    Inserts the results into the gl module, which makes them globally</tt> </tt>
+<a name="L210"></a><tt class="py-lineno">210</tt>  <tt class="py-line"><tt class="py-docstring">    available."""</tt> </tt>
+<a name="L211"></a><tt class="py-lineno">211</tt>  <tt class="py-line">    <tt id="link-50" class="py-name"><a title="VisionEgg.logger" class="py-name" href="#" onclick="return doclink('link-50', 'logger', 'link-5');">logger</a></tt> <tt class="py-op">=</tt> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">getLogger</tt><tt class="py-op">(</tt><tt class="py-string">'VisionEgg.PlatformDependent'</tt><tt class="py-op">)</tt> </tt>
+<a name="L212"></a><tt class="py-lineno">212</tt>  <tt class="py-line">    <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L213"></a><tt class="py-lineno">213</tt>  <tt class="py-line">        <tt class="py-keyword">import</tt> <tt class="py-name">ctypes</tt> </tt>
+<a name="L214"></a><tt class="py-lineno">214</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">platform</tt><tt class="py-op">.</tt><tt class="py-name">startswith</tt><tt class="py-op">(</tt><tt class="py-string">'linux'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L215"></a><tt class="py-lineno">215</tt>  <tt class="py-line">            <tt class="py-name">libGL</tt> <tt class="py-op">=</tt> <tt class="py-name">ctypes</tt><tt class="py-op">.</tt><tt class="py-name">cdll</tt><tt class="py-op">.</tt><tt class="py-name">LoadLibrary</tt><tt class="py-op">(</tt><tt class="py-string">'/usr/lib/libGL.so'</tt><tt class="py-op">)</tt> </tt>
+<a name="L216"></a><tt class="py-lineno">216</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">platform</tt> <tt class="py-op">==</tt> <tt class="py-string">'win32'</tt><tt class="py-op">:</tt> </tt>
+<a name="L217"></a><tt class="py-lineno">217</tt>  <tt class="py-line">            <tt class="py-name">libGL</tt> <tt class="py-op">=</tt> <tt class="py-name">ctypes</tt><tt class="py-op">.</tt><tt class="py-name">cdll</tt><tt class="py-op">.</tt><tt class="py-name">LoadLibrary</tt><tt class="py-op">(</tt><tt class="py-string">'opengl32.dll'</tt><tt class="py-op">)</tt> </tt>
+<a name="L218"></a><tt class="py-lineno">218</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L219"></a><tt class="py-lineno">219</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">NotImplementedError</tt><tt class="py-op">(</tt><tt class="py-string">"ctypes support not added for this platform"</tt><tt class="py-op">)</tt> </tt>
+<a name="L220"></a><tt class="py-lineno">220</tt>  <tt class="py-line"> </tt>
+<a name="L221"></a><tt class="py-lineno">221</tt>  <tt class="py-line">        <tt class="py-comment"># make sure libGL has the appropriate functions</tt> </tt>
+<a name="L222"></a><tt class="py-lineno">222</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">libGL</tt><tt class="py-op">.</tt><tt class="py-name">glGetString</tt><tt class="py-op">.</tt><tt class="py-name">restype</tt> <tt class="py-op">=</tt> <tt class="py-name">ctypes</tt><tt class="py-op">.</tt><tt class="py-name">c_char_p</tt> </tt>
+<a name="L223"></a><tt class="py-lineno">223</tt>  <tt class="py-line">        <tt class="py-name">vers</tt> <tt class="py-op">=</tt> <tt class="py-name">libGL</tt><tt class="py-op">.</tt><tt class="py-name">glGetString</tt><tt class="py-op">(</tt> <tt class="py-name">ctypes</tt><tt class="py-op">.</tt><tt class="py-name">c_int</tt><tt class="py-op">(</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_VERSION</tt> <tt class="py-op">)</tt> <tt class="py-op">)</ [...]
+<a name="L224"></a><tt class="py-lineno">224</tt>  <tt class="py-line">        <tt id="link-51" class="py-name"><a title="VisionEgg.logger" class="py-name" href="#" onclick="return doclink('link-51', 'logger', 'link-5');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">debug</tt><tt class="py-op">(</tt><tt class="py-string">"ctypes loaded OpenGL %s"</tt><tt class="py-op">%</tt><tt class="py-name">vers</tt><tt class="py-op">)</tt> </tt>
+<a name="L225"></a><tt class="py-lineno">225</tt>  <tt class="py-line"> </tt>
+<a name="L226"></a><tt class="py-lineno">226</tt>  <tt class="py-line">        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glActiveTexture</tt> <tt class="py-op">=</tt> <tt class="py-name">libGL</tt><tt class="py-op">.</tt><tt class="py-name">glActiveTexture</tt> </tt>
+<a name="L227"></a><tt class="py-lineno">227</tt>  <tt class="py-line">        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glActiveTexture</tt><tt class="py-op">.</tt><tt class="py-name">argtypes</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">ctypes</tt><tt class="py-op">.</tt><tt class="py-name">c_int</tt><tt class="py-op">]</tt> </tt>
+<a name="L228"></a><tt class="py-lineno">228</tt>  <tt class="py-line"> </tt>
+<a name="L229"></a><tt class="py-lineno">229</tt>  <tt class="py-line">        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glMultiTexCoord2f</tt> <tt class="py-op">=</tt> <tt class="py-name">libGL</tt><tt class="py-op">.</tt><tt class="py-name">glMultiTexCoord2f</tt> </tt>
+<a name="L230"></a><tt class="py-lineno">230</tt>  <tt class="py-line">        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glMultiTexCoord2f</tt><tt class="py-op">.</tt><tt class="py-name">argtypes</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">ctypes</tt><tt class="py-op">.</tt><tt class="py-name">c_int</tt><tt class="py-op">,</tt> <tt class="py-name">ctypes</tt><tt class="py-op">.</tt><tt class="py-name">c_float</tt><tt class="py-op [...]
+<a name="L231"></a><tt class="py-lineno">231</tt>  <tt class="py-line"> </tt>
+<a name="L232"></a><tt class="py-lineno">232</tt>  <tt class="py-line">        <tt class="py-comment"># assign constants found by looking at gl.h</tt> </tt>
+<a name="L233"></a><tt class="py-lineno">233</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE0</tt> <tt class="py-op">=</tt> <tt class="py-number">0x84C0</tt> </tt>
+<a name="L234"></a><tt class="py-lineno">234</tt>  <tt class="py-line">        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE1</tt> <tt class="py-op">=</tt> <tt class="py-number">0x84C1</tt> </tt>
+<a name="L235"></a><tt class="py-lineno">235</tt>  <tt class="py-line"> </tt>
+<a name="L236"></a><tt class="py-lineno">236</tt>  <tt class="py-line">        <tt id="link-52" class="py-name"><a title="VisionEgg.logger" class="py-name" href="#" onclick="return doclink('link-52', 'logger', 'link-5');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">debug</tt><tt class="py-op">(</tt><tt class="py-string">"ctypes loaded OpenGL library and multitexture names "</tt> </tt>
+<a name="L237"></a><tt class="py-lineno">237</tt>  <tt class="py-line">                     <tt class="py-string">"are present.  Workaround appears successful. "</tt><tt class="py-op">)</tt> </tt>
+<a name="L238"></a><tt class="py-lineno">238</tt>  <tt class="py-line">    <tt class="py-keyword">except</tt> <tt class="py-name">Exception</tt><tt class="py-op">,</tt> <tt class="py-name">x</tt><tt class="py-op">:</tt> </tt>
+<a name="L239"></a><tt class="py-lineno">239</tt>  <tt class="py-line">        <tt id="link-53" class="py-name"><a title="VisionEgg.logger" class="py-name" href="#" onclick="return doclink('link-53', 'logger', 'link-5');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">debug</tt><tt class="py-op">(</tt><tt class="py-string">"ctypes loading of OpenGL library failed %s: "</tt> </tt>
+<a name="L240"></a><tt class="py-lineno">240</tt>  <tt class="py-line">                     <tt class="py-string">"%s"</tt><tt class="py-op">%</tt><tt class="py-op">(</tt><tt class="py-name">x</tt><tt class="py-op">.</tt><tt class="py-name">__class__</tt><tt class="py-op">,</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">x</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L241"></a><tt class="py-lineno">241</tt>  <tt class="py-line"> </tt>
+<a name="L242"></a><tt class="py-lineno">242</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt id="link-54" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-54', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-55" class="py-name"><a title="VisionEgg.Core" class="py-name" href="#" onclick="return doclink('link-55', 'Core', 'link-2');">Core</a></tt><tt class="py-op">.</tt><tt id="link-56" class="p [...]
+<a name="L243"></a><tt class="py-lineno">243</tt>  <tt class="py-line">            <tt class="py-comment"># copy from extenstion</tt> </tt>
+<a name="L244"></a><tt class="py-lineno">244</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glActiveTexture</tt> <tt class="py-op">=</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glActiveTextureARB</tt> </tt>
+<a name="L245"></a><tt class="py-lineno">245</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glMultiTexCoord2f</tt> <tt class="py-op">=</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glMultiTexCoord2fARB</tt> </tt>
+<a name="L246"></a><tt class="py-lineno">246</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE0</tt> <tt class="py-op">=</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE0_ARB</tt> </tt>
+<a name="L247"></a><tt class="py-lineno">247</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE1</tt> <tt class="py-op">=</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE1_ARB</tt> </tt>
+<a name="L248"></a><tt class="py-lineno">248</tt>  <tt class="py-line">            <tt id="link-57" class="py-name"><a title="VisionEgg.logger" class="py-name" href="#" onclick="return doclink('link-57', 'logger', 'link-5');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">debug</tt><tt class="py-op">(</tt><tt class="py-string">"loaded multitexturing ARB extension"</tt><tt class="py-op">)</tt> </tt>
+<a name="L249"></a><tt class="py-lineno">249</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L250"></a><tt class="py-lineno">250</tt>  <tt class="py-line">            <tt id="link-58" class="py-name"><a title="VisionEgg.logger" class="py-name" href="#" onclick="return doclink('link-58', 'logger', 'link-5');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">warning</tt><tt class="py-op">(</tt><tt class="py-string">"multitexturing not available after trying "</tt> </tt>
+<a name="L251"></a><tt class="py-lineno">251</tt>  <tt class="py-line">                           <tt class="py-string">"ctypes and the OpenGL ARB extension. Some "</tt> </tt>
+<a name="L252"></a><tt class="py-lineno">252</tt>  <tt class="py-line">                           <tt class="py-string">"features will not be available"</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L253"></a><tt class="py-lineno">253</tt>  <tt class="py-line"> </tt><script type="text/javascript">
+<!--
+expandto(location.href);
+// -->
+</script>
+</pre>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:47 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.PyroApps-module.html b/doc/reference/html/VisionEgg.PyroApps-module.html
new file mode 100644
index 0000000..d2ede20
--- /dev/null
+++ b/doc/reference/html/VisionEgg.PyroApps-module.html
@@ -0,0 +1,155 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.PyroApps</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        Package PyroApps
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.PyroApps-module.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== PACKAGE DESCRIPTION ==================== -->
+<h1 class="epydoc">Package PyroApps</h1><span class="codelink"><a href="VisionEgg.PyroApps-pysrc.html">source code</a></span><br /><br />
+<pre class="literalblock">
+
+VisionEgg subpackage providing support for demo applications based on Pyro
+
+</pre><br /><br />
+
+<!-- ==================== SUBMODULES ==================== -->
+<a name="section-Submodules"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Submodules</span></td>
+</tr>
+  <tr><td class="summary">
+  <ul class="nomargin">
+    <li> <strong class="uidlink"><a href="VisionEgg.PyroApps.AST_ext-module.html">VisionEgg.PyroApps.AST_ext</a></strong>    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.PyroApps.ColorCalGUI-module.html">VisionEgg.PyroApps.ColorCalGUI</a></strong>: <em class="summary">Handle luminance and color calibration stimulus (client-side)</em>    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.PyroApps.ColorCalServer-module.html">VisionEgg.PyroApps.ColorCalServer</a></strong>: <em class="summary">Handle luminance and color calibration stimulus (server-side)</em>    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.PyroApps.DropinGUI-module.html">VisionEgg.PyroApps.DropinGUI</a></strong>    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.PyroApps.DropinServer-module.html">VisionEgg.PyroApps.DropinServer</a></strong>    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.PyroApps.EPhysGUI-module.html">VisionEgg.PyroApps.EPhysGUI</a></strong>    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.PyroApps.EPhysGUIUtils-module.html">VisionEgg.PyroApps.EPhysGUIUtils</a></strong>    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.PyroApps.EPhysServer-module.html">VisionEgg.PyroApps.EPhysServer</a></strong>    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.PyroApps.FlatGratingGUI-module.html">VisionEgg.PyroApps.FlatGratingGUI</a></strong>: <em class="summary">Handle sinusoidal gratings (client-side)</em>    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.PyroApps.FlatGratingServer-module.html">VisionEgg.PyroApps.FlatGratingServer</a></strong>: <em class="summary">Handle sinusoidal gratings (server-side)</em>    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.PyroApps.GridGUI-module.html">VisionEgg.PyroApps.GridGUI</a></strong>    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.PyroApps.GridServer-module.html">VisionEgg.PyroApps.GridServer</a></strong>    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.PyroApps.MouseTargetGUI-module.html">VisionEgg.PyroApps.MouseTargetGUI</a></strong>: <em class="summary">Handle mouse controlled small target stimulus (client-side)</em>    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.PyroApps.MouseTargetServer-module.html">VisionEgg.PyroApps.MouseTargetServer</a></strong>: <em class="summary">Handle mouse-controlled small targets (server-side)</em>    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.PyroApps.ScreenPositionGUI-module.html">VisionEgg.PyroApps.ScreenPositionGUI</a></strong>: <em class="summary">Handle 3D perspective projection (client-side)</em>    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.PyroApps.ScreenPositionServer-module.html">VisionEgg.PyroApps.ScreenPositionServer</a></strong>: <em class="summary">Handle 3D perspective projection (server-side)</em>    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.PyroApps.SphereGratingGUI-module.html">VisionEgg.PyroApps.SphereGratingGUI</a></strong>: <em class="summary">Handle perspective-distorted sinusoidal gratings (client-side)</em>    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.PyroApps.SphereGratingServer-module.html">VisionEgg.PyroApps.SphereGratingServer</a></strong>: <em class="summary">Handle perspective-distorted sinusoidal gratings (server-side)</em>    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.PyroApps.SpinningDrumGUI-module.html">VisionEgg.PyroApps.SpinningDrumGUI</a></strong>    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.PyroApps.SpinningDrumServer-module.html">VisionEgg.PyroApps.SpinningDrumServer</a></strong>    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.PyroApps.TargetGUI-module.html">VisionEgg.PyroApps.TargetGUI</a></strong>: <em class="summary">Handle small target stimulus (client-side)</em>    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.PyroApps.TargetServer-module.html">VisionEgg.PyroApps.TargetServer</a></strong>: <em class="summary">Handle small targets gratings (server-side)</em>    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.PyroApps.VarTypes-module.html">VisionEgg.PyroApps.VarTypes</a></strong>    </li>
+  </ul></td></tr>
+</table>
+
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.PyroApps-pysrc.html b/doc/reference/html/VisionEgg.PyroApps-pysrc.html
new file mode 100644
index 0000000..31b6b26
--- /dev/null
+++ b/doc/reference/html/VisionEgg.PyroApps-pysrc.html
@@ -0,0 +1,135 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.PyroApps</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        Package PyroApps
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.PyroApps-pysrc.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<h1 class="epydoc">Source Code for <a href="VisionEgg.PyroApps-module.html">Package VisionEgg.PyroApps</a></h1>
+<pre class="py-src">
+<a name="L1"></a><tt class="py-lineno"> 1</tt>  <tt class="py-line"><tt class="py-comment">#</tt> </tt>
+<a name="L2"></a><tt class="py-lineno"> 2</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># The Vision Egg: PyroApps</tt> </tt>
+<a name="L3"></a><tt class="py-lineno"> 3</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L4"></a><tt class="py-lineno"> 4</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Copyright (C) 2001-2003 Andrew Straw.</tt> </tt>
+<a name="L5"></a><tt class="py-lineno"> 5</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Author: Andrew Straw <astraw at users.sourceforge.net></tt> </tt>
+<a name="L6"></a><tt class="py-lineno"> 6</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># URL: <http://www.visionegg.org/></tt> </tt>
+<a name="L7"></a><tt class="py-lineno"> 7</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L8"></a><tt class="py-lineno"> 8</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Distributed under the terms of the GNU Lesser General Public License</tt> </tt>
+<a name="L9"></a><tt class="py-lineno"> 9</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># (LGPL). See LICENSE.TXT that came with this file.</tt> </tt>
+<a name="L10"></a><tt class="py-lineno">10</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L11"></a><tt class="py-lineno">11</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># $Id$</tt> </tt>
+<a name="L12"></a><tt class="py-lineno">12</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L13"></a><tt class="py-lineno">13</tt>  <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L14"></a><tt class="py-lineno">14</tt>  <tt class="py-line"><tt class="py-docstring">VisionEgg subpackage providing support for demo applications based on Pyro</tt> </tt>
+<a name="L15"></a><tt class="py-lineno">15</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L16"></a><tt class="py-lineno">16</tt>  <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L17"></a><tt class="py-lineno">17</tt>  <tt class="py-line"> </tt><script type="text/javascript">
+<!--
+expandto(location.href);
+// -->
+</script>
+</pre>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:50 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.PyroApps.AST_ext-module.html b/doc/reference/html/VisionEgg.PyroApps.AST_ext-module.html
new file mode 100644
index 0000000..3b85c6e
--- /dev/null
+++ b/doc/reference/html/VisionEgg.PyroApps.AST_ext-module.html
@@ -0,0 +1,234 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.PyroApps.AST_ext</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.PyroApps-module.html">Package PyroApps</a> ::
+        Module AST_ext
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.PyroApps.AST_ext-module.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== MODULE DESCRIPTION ==================== -->
+<h1 class="epydoc">Module AST_ext</h1><span class="codelink"><a href="VisionEgg.PyroApps.AST_ext-pysrc.html">source code</a></span><br /><br />
+<!-- ==================== CLASSES ==================== -->
+<a name="section-Classes"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Classes</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.PyroApps.AST_ext.AST_Visitor-class.html" class="summary-name">AST_Visitor</a>
+    </td>
+  </tr>
+</table>
+<!-- ==================== FUNCTIONS ==================== -->
+<a name="section-Functions"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Functions</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="gen_assign_val_subtree"></a><span class="summary-sig-name">gen_assign_val_subtree</span>(<span class="summary-sig-arg">assign_val</span>,
+        <span class="summary-sig-arg">assign_val_type</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.AST_ext-pysrc.html#gen_assign_val_subtree">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="modify_AST"></a><span class="summary-sig-name">modify_AST</span>(<span class="summary-sig-arg">myAST</span>,
+        <span class="summary-sig-arg">assign_name</span>,
+        <span class="summary-sig-arg">assign_val</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.AST_ext-pysrc.html#modify_AST">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="extract_from_AST"></a><span class="summary-sig-name">extract_from_AST</span>(<span class="summary-sig-arg">myAST</span>,
+        <span class="summary-sig-arg">assign_name</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.AST_ext-pysrc.html#extract_from_AST">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+</table>
+<!-- ==================== VARIABLES ==================== -->
+<a name="section-Variables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Variables</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.PyroApps.AST_ext-module.html#name_sequence" class="summary-name">name_sequence</a> = <code title="[292, 293, 294, 295, 297, 298, 299, 300, 301, 302, 303, 304, 305]">[292, 293, 294, 295, 297, 298, 299, 300, 301, <code class="variable-ellipsis">...</code></code>
+    </td>
+  </tr>
+</table>
+<!-- ==================== VARIABLES DETAILS ==================== -->
+<a name="section-VariablesDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Variables Details</span></td>
+</tr>
+</table>
+<a name="name_sequence"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">name_sequence</h3>
+  
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+[292, 293, 294, 295, 297, 298, 299, 300, 301, 302, 303, 304, 305]
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.PyroApps.AST_ext-pysrc.html b/doc/reference/html/VisionEgg.PyroApps.AST_ext-pysrc.html
new file mode 100644
index 0000000..2d6c701
--- /dev/null
+++ b/doc/reference/html/VisionEgg.PyroApps.AST_ext-pysrc.html
@@ -0,0 +1,327 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.PyroApps.AST_ext</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.PyroApps-module.html">Package PyroApps</a> ::
+        Module AST_ext
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.PyroApps.AST_ext-pysrc.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<h1 class="epydoc">Source Code for <a href="VisionEgg.PyroApps.AST_ext-module.html">Module VisionEgg.PyroApps.AST_ext</a></h1>
+<pre class="py-src">
+<a name="L1"></a><tt class="py-lineno">  1</tt>  <tt class="py-line"><tt class="py-comment">## Automatically adapted for numpy.oldnumeric Jun 18, 2007 by alter_code1.py</tt> </tt>
+<a name="L2"></a><tt class="py-lineno">  2</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L3"></a><tt class="py-lineno">  3</tt>  <tt class="py-line"><tt class="py-comment"># The Vision Egg: AST_ext</tt> </tt>
+<a name="L4"></a><tt class="py-lineno">  4</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L5"></a><tt class="py-lineno">  5</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Copyright (C) 2004 Imran S. Ali, Lachlan Dowd</tt> </tt>
+<a name="L6"></a><tt class="py-lineno">  6</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L7"></a><tt class="py-lineno">  7</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Authors: Imran S. Ali, Lachlan Dowd</tt> </tt>
+<a name="L8"></a><tt class="py-lineno">  8</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># URL: <http://www.visionegg.org/></tt> </tt>
+<a name="L9"></a><tt class="py-lineno">  9</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L10"></a><tt class="py-lineno"> 10</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Distributed under the terms of the GNU Lesser General Public License</tt> </tt>
+<a name="L11"></a><tt class="py-lineno"> 11</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># (LGPL). See LICENSE.TXT that came with this file.</tt> </tt>
+<a name="L12"></a><tt class="py-lineno"> 12</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L13"></a><tt class="py-lineno"> 13</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># $Id$</tt> </tt>
+<a name="L14"></a><tt class="py-lineno"> 14</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L15"></a><tt class="py-lineno"> 15</tt>  <tt class="py-line"><tt class="py-comment"># This "AST extensions" module works for Python 2.2.1</tt> </tt>
+<a name="L16"></a><tt class="py-lineno"> 16</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Because the structure of code trees changes with different Python versions, this module may not work with some</tt> </tt>
+<a name="L17"></a><tt class="py-lineno"> 17</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># previous Python releases, or future releases.</tt> </tt>
+<a name="L18"></a><tt class="py-lineno"> 18</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L19"></a><tt class="py-lineno"> 19</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">pprint</tt> </tt>
+<a name="L20"></a><tt class="py-lineno"> 20</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">parser</tt> </tt>
+<a name="L21"></a><tt class="py-lineno"> 21</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">symbol</tt> </tt>
+<a name="L22"></a><tt class="py-lineno"> 22</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">token</tt> </tt>
+<a name="L23"></a><tt class="py-lineno"> 23</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">tokenize</tt> </tt>
+<a name="L24"></a><tt class="py-lineno"> 24</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">sys</tt> </tt>
+<a name="L25"></a><tt class="py-lineno"> 25</tt>  <tt class="py-line"> </tt>
+<a name="L26"></a><tt class="py-lineno"> 26</tt>  <tt class="py-line"><tt class="py-comment"># Hopefully, the node ID numbers in the name sequence is all that</tt> </tt>
+<a name="L27"></a><tt class="py-lineno"> 27</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># needs to be changed in order to get this module working with</tt> </tt>
+<a name="L28"></a><tt class="py-lineno"> 28</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># different Python release versions.</tt> </tt>
+<a name="L29"></a><tt class="py-lineno"> 29</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L30"></a><tt class="py-lineno"> 30</tt>  <tt class="py-line"><tt id="link-0" class="py-name" targets="Variable VisionEgg.PyroApps.AST_ext.name_sequence=VisionEgg.PyroApps.AST_ext-module.html#name_sequence"><a title="VisionEgg.PyroApps.AST_ext.name_sequence" class="py-name" href="#" onclick="return doclink('link-0', 'name_sequence', 'link-0');">name_sequence</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-number">292</tt><tt class="py-op">,</tt> <tt class= [...]
+<a name="L31"></a><tt class="py-lineno"> 31</tt>  <tt class="py-line"><tt class="py-number">303</tt><tt class="py-op">,</tt> <tt class="py-number">304</tt><tt class="py-op">,</tt> <tt class="py-number">305</tt><tt class="py-op">]</tt> </tt>
+<a name="L32"></a><tt class="py-lineno"> 32</tt>  <tt class="py-line"> </tt>
+<a name="L33"></a><tt class="py-lineno"> 33</tt>  <tt class="py-line"><tt class="py-comment"># Method for generating an AST sub tree (in list form) suitable for a</tt> </tt>
+<a name="gen_assign_val_subtree"></a><div id="gen_assign_val_subtree-def"><a name="L34"></a><tt class="py-lineno"> 34</tt> <a class="py-toggle" href="#" id="gen_assign_val_subtree-toggle" onclick="return toggle('gen_assign_val_subtree');">-</a><tt class="py-line"><tt class="py-comment"></tt><tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.AST_ext-module.html#gen_assign_val_subtree">gen_assign_val_subtree</a><tt class="py-op">(</tt><tt class="py-param">assig [...]
+</div><div id="gen_assign_val_subtree-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="gen_assign_val_subtree-expanded"><a name="L35"></a><tt class="py-lineno"> 35</tt>  <tt class="py-line">    <tt id="link-1" class="py-name"><a title="VisionEgg.PyroApps.AST_ext.name_sequence" class="py-name" href="#" onclick="return doclink('link-1', 'name_sequence', 'link-0');">name_sequence</a></tt><tt class="py-op">.</tt><tt class="py-name">reverse</tt><tt class="py-op">(</tt>< [...]
+<a name="L36"></a><tt class="py-lineno"> 36</tt>  <tt class="py-line">    <tt class="py-name">sublist</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L37"></a><tt class="py-lineno"> 37</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">assign_val_type</tt> <tt class="py-op">==</tt> <tt class="py-number">2</tt><tt class="py-op">:</tt> </tt>
+<a name="L38"></a><tt class="py-lineno"> 38</tt>  <tt class="py-line">        <tt class="py-name">sublist</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-number">2</tt><tt class="py-op">,</tt> <tt class="py-string">'%(assign_val)d'</tt> <tt class="py-op">%</tt> <tt class="py-name">vars</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">]</tt> </tt>
+<a name="L39"></a><tt class="py-lineno"> 39</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt class="py-name">assign_val_type</tt> <tt class="py-op">==</tt> <tt class="py-number">1</tt><tt class="py-op">:</tt> </tt>
+<a name="L40"></a><tt class="py-lineno"> 40</tt>  <tt class="py-line">        <tt class="py-name">sublist</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-number">2</tt><tt class="py-op">,</tt> <tt class="py-string">'%(assign_val)f'</tt> <tt class="py-op">%</tt> <tt class="py-name">vars</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">]</tt> </tt>
+<a name="L41"></a><tt class="py-lineno"> 41</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt class="py-name">assign_val_type</tt> <tt class="py-op">==</tt> <tt class="py-number">3</tt><tt class="py-op">:</tt> </tt>
+<a name="L42"></a><tt class="py-lineno"> 42</tt>  <tt class="py-line">        <tt class="py-name">sublist</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-number">3</tt><tt class="py-op">,</tt> <tt class="py-string">'"%(assign_val)s"'</tt> <tt class="py-op">%</tt> <tt class="py-name">vars</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">]</tt> </tt>
+<a name="L43"></a><tt class="py-lineno"> 43</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">val</tt> <tt class="py-keyword">in</tt> <tt id="link-2" class="py-name"><a title="VisionEgg.PyroApps.AST_ext.name_sequence" class="py-name" href="#" onclick="return doclink('link-2', 'name_sequence', 'link-0');">name_sequence</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">:</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt  [...]
+<a name="L44"></a><tt class="py-lineno"> 44</tt>  <tt class="py-line">        <tt class="py-name">sublist</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">val</tt><tt class="py-op">,</tt> <tt class="py-name">sublist</tt><tt class="py-op">]</tt> </tt>
+<a name="L45"></a><tt class="py-lineno"> 45</tt>  <tt class="py-line">    <tt id="link-4" class="py-name"><a title="VisionEgg.PyroApps.AST_ext.name_sequence" class="py-name" href="#" onclick="return doclink('link-4', 'name_sequence', 'link-0');">name_sequence</a></tt><tt class="py-op">.</tt><tt class="py-name">reverse</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L46"></a><tt class="py-lineno"> 46</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">sublist</tt> </tt>
+</div><a name="L47"></a><tt class="py-lineno"> 47</tt>  <tt class="py-line"> </tt>
+<a name="L48"></a><tt class="py-lineno"> 48</tt>  <tt class="py-line"> </tt>
+<a name="AST_Visitor"></a><div id="AST_Visitor-def"><a name="L49"></a><tt class="py-lineno"> 49</tt> <a class="py-toggle" href="#" id="AST_Visitor-toggle" onclick="return toggle('AST_Visitor');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.PyroApps.AST_ext.AST_Visitor-class.html">AST_Visitor</a><tt class="py-op">:</tt> </tt>
+</div><div id="AST_Visitor-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="AST_Visitor-expanded"><a name="AST_Visitor.__init__"></a><div id="AST_Visitor.__init__-def"><a name="L50"></a><tt class="py-lineno"> 50</tt> <a class="py-toggle" href="#" id="AST_Visitor.__init__-toggle" onclick="return toggle('AST_Visitor.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.AST_ext.AST_Visitor-class.html# [...]
+</div><div id="AST_Visitor.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="AST_Visitor.__init__-expanded"><a name="L51"></a><tt class="py-lineno"> 51</tt>  <tt class="py-line">        <tt class="py-comment"># Flags:</tt> </tt>
+<a name="L52"></a><tt class="py-lineno"> 52</tt>  <tt class="py-line"><tt class="py-comment"></tt>         </tt>
+<a name="L53"></a><tt class="py-lineno"> 53</tt>  <tt class="py-line">        <tt class="py-comment"># Checking assignment name (ie. "x = ..." where we are</tt> </tt>
+<a name="L54"></a><tt class="py-lineno"> 54</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># checking if 'x' == 'assign_name'):</tt> </tt>
+<a name="L55"></a><tt class="py-lineno"> 55</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">checking_assign_name</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L56"></a><tt class="py-lineno"> 56</tt>  <tt class="py-line">         </tt>
+<a name="L57"></a><tt class="py-lineno"> 57</tt>  <tt class="py-line">        <tt class="py-comment"># Setting assignment value (we are changing a found occurrence</tt> </tt>
+<a name="L58"></a><tt class="py-lineno"> 58</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># of "assign_name = x" to "assign_name = assign_val"):</tt> </tt>
+<a name="L59"></a><tt class="py-lineno"> 59</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">setting_assign_val</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L60"></a><tt class="py-lineno"> 60</tt>  <tt class="py-line">         </tt>
+<a name="L61"></a><tt class="py-lineno"> 61</tt>  <tt class="py-line">        <tt class="py-comment"># Index of where the AST visitor is currently at in the</tt> </tt>
+<a name="L62"></a><tt class="py-lineno"> 62</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># 'name_sequence' defined earlier:</tt> </tt>
+<a name="L63"></a><tt class="py-lineno"> 63</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">name_seq_index</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L64"></a><tt class="py-lineno"> 64</tt>  <tt class="py-line">         </tt>
+<a name="L65"></a><tt class="py-lineno"> 65</tt>  <tt class="py-line">        <tt class="py-comment"># AST visitor expects a subtree associated with</tt> </tt>
+<a name="L66"></a><tt class="py-lineno"> 66</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># assignment/"=":</tt> </tt>
+<a name="L67"></a><tt class="py-lineno"> 67</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">expecting_equals</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L68"></a><tt class="py-lineno"> 68</tt>  <tt class="py-line">         </tt>
+<a name="L69"></a><tt class="py-lineno"> 69</tt>  <tt class="py-line">        <tt class="py-comment"># Extracting assignment value (we are extracting the 'x' from</tt> </tt>
+<a name="L70"></a><tt class="py-lineno"> 70</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># a found occurrence of "assign_name = x"):</tt> </tt>
+<a name="L71"></a><tt class="py-lineno"> 71</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">extracting_assign_val</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L72"></a><tt class="py-lineno"> 72</tt>  <tt class="py-line">         </tt>
+<a name="L73"></a><tt class="py-lineno"> 73</tt>  <tt class="py-line">        <tt class="py-comment"># Extracted assignment value:</tt> </tt>
+<a name="L74"></a><tt class="py-lineno"> 74</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">extracted_val</tt> <tt class="py-op">=</tt> <tt class="py-string">"not found"</tt> </tt>
+<a name="L75"></a><tt class="py-lineno"> 75</tt>  <tt class="py-line">         </tt>
+<a name="L76"></a><tt class="py-lineno"> 76</tt>  <tt class="py-line">        <tt class="py-comment"># Are we modifying an AST? Otherwise we're extracting</tt> </tt>
+<a name="L77"></a><tt class="py-lineno"> 77</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># information from an AST:</tt> </tt>
+<a name="L78"></a><tt class="py-lineno"> 78</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">modifying_AST</tt> <tt class="py-op">=</tt> <tt class="py-name">modifying_AST</tt> </tt>
+</div><a name="L79"></a><tt class="py-lineno"> 79</tt>  <tt class="py-line"> </tt>
+<a name="AST_Visitor.traverse"></a><div id="AST_Visitor.traverse-def"><a name="L80"></a><tt class="py-lineno"> 80</tt> <a class="py-toggle" href="#" id="AST_Visitor.traverse-toggle" onclick="return toggle('AST_Visitor.traverse');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.AST_ext.AST_Visitor-class.html#traverse">traverse</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param" [...]
+</div><div id="AST_Visitor.traverse-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="AST_Visitor.traverse-expanded"><a name="L81"></a><tt class="py-lineno"> 81</tt>  <tt class="py-line"> </tt>
+<a name="L82"></a><tt class="py-lineno"> 82</tt>  <tt class="py-line">        <tt class="py-comment"># If we have a single element (terminating leaf node):</tt> </tt>
+<a name="L83"></a><tt class="py-lineno"> 83</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">AST_sublist</tt><tt class="py-op">)</tt> <tt class="py-op">!=</tt> <tt class="py-name">list</tt><tt class="py-op">:</tt> </tt>
+<a name="L84"></a><tt class="py-lineno"> 84</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">AST_sublist</tt> </tt>
+<a name="L85"></a><tt class="py-lineno"> 85</tt>  <tt class="py-line"> </tt>
+<a name="L86"></a><tt class="py-lineno"> 86</tt>  <tt class="py-line">        <tt class="py-comment"># If we have a sub tree of the form [x, [....]]:</tt> </tt>
+<a name="L87"></a><tt class="py-lineno"> 87</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">elif</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">AST_sublist</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">2</tt><tt class="py-op">:</tt> </tt>
+<a name="L88"></a><tt class="py-lineno"> 88</tt>  <tt class="py-line"> </tt>
+<a name="L89"></a><tt class="py-lineno"> 89</tt>  <tt class="py-line">            <tt class="py-comment"># If we are somewhere in the 'name_sequence' defined</tt> </tt>
+<a name="L90"></a><tt class="py-lineno"> 90</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># earlier: [292, [293, [294, [295, [297, [298, [299, [300,</tt> </tt>
+<a name="L91"></a><tt class="py-lineno"> 91</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># [301, [302, [303, [304, [305, ...</tt> </tt>
+<a name="L92"></a><tt class="py-lineno"> 92</tt>  <tt class="py-line"><tt class="py-comment"></tt>             </tt>
+<a name="L93"></a><tt class="py-lineno"> 93</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">name_seq_index</tt> <tt class="py-op">></tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt>
+<a name="L94"></a><tt class="py-lineno"> 94</tt>  <tt class="py-line">                <tt class="py-comment"># If we are at the end of the 'name_sequence':</tt> </tt>
+<a name="L95"></a><tt class="py-lineno"> 95</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">name_seq_index</tt> <tt class="py-op">==</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt id="link-5" class="py-name"><a title="VisionEgg.PyroApps.AST_ext.name_sequence" class="py-name" href="#" onclick="return doclink('link-5', 'name_sequence', 'link-0');">name [...]
+<a name="L96"></a><tt class="py-lineno"> 96</tt>  <tt class="py-line">                    <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">AST_sublist</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">3</tt><tt class="py-op">:</tt> </tt>
+<a name="L97"></a><tt class="py-lineno"> 97</tt>  <tt class="py-line">                        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">extracting_assign_val</tt> <tt class="py-op">==</tt> <tt class="py-number">1</tt><tt class="py-op">:</tt> </tt>
+<a name="L98"></a><tt class="py-lineno"> 98</tt>  <tt class="py-line">                            <tt class="py-name">extracted_val</tt> <tt class="py-op">=</tt> <tt class="py-name">AST_sublist</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
+<a name="L99"></a><tt class="py-lineno"> 99</tt>  <tt class="py-line">                            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">extracted_val</tt> <tt class="py-op">=</tt> <tt class="py-name">extracted_val</tt> </tt>
+<a name="L100"></a><tt class="py-lineno">100</tt>  <tt class="py-line">                            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">extracting_assign_val</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L101"></a><tt class="py-lineno">101</tt>  <tt class="py-line">                        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L102"></a><tt class="py-lineno">102</tt>  <tt class="py-line">                            <tt class="py-comment"># Enter new mode: AST visitor will check</tt> </tt>
+<a name="L103"></a><tt class="py-lineno">103</tt>  <tt class="py-line"><tt class="py-comment"></tt>                            <tt class="py-comment"># the name associated with the</tt> </tt>
+<a name="L104"></a><tt class="py-lineno">104</tt>  <tt class="py-line"><tt class="py-comment"></tt>                            <tt class="py-comment"># 'name_sequence' to see if it will match</tt> </tt>
+<a name="L105"></a><tt class="py-lineno">105</tt>  <tt class="py-line"><tt class="py-comment"></tt>                            <tt class="py-comment"># 'assign_name':</tt> </tt>
+<a name="L106"></a><tt class="py-lineno">106</tt>  <tt class="py-line"><tt class="py-comment"></tt>                            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">checking_assign_name</tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L107"></a><tt class="py-lineno">107</tt>  <tt class="py-line">                    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">name_seq_index</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L108"></a><tt class="py-lineno">108</tt>  <tt class="py-line"> </tt>
+<a name="L109"></a><tt class="py-lineno">109</tt>  <tt class="py-line">                <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L110"></a><tt class="py-lineno">110</tt>  <tt class="py-line">                    <tt class="py-name">expected_val</tt> <tt class="py-op">=</tt> <tt id="link-7" class="py-name"><a title="VisionEgg.PyroApps.AST_ext.name_sequence" class="py-name" href="#" onclick="return doclink('link-7', 'name_sequence', 'link-0');">name_sequence</a></tt><tt class="py-op">[</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">name_seq_index</tt><tt class="py-op">]</tt> </tt>
+<a name="L111"></a><tt class="py-lineno">111</tt>  <tt class="py-line">                    <tt class="py-keyword">if</tt> <tt class="py-name">AST_sublist</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-name">expected_val</tt><tt class="py-op">:</tt> </tt>
+<a name="L112"></a><tt class="py-lineno">112</tt>  <tt class="py-line">                        <tt class="py-comment"># Update position in 'name_sequence':</tt> </tt>
+<a name="L113"></a><tt class="py-lineno">113</tt>  <tt class="py-line"><tt class="py-comment"></tt>                        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">name_seq_index</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">name_seq_index</tt> <tt class="py-op">+</tt> <tt class="py-number">1</tt> </tt>
+<a name="L114"></a><tt class="py-lineno">114</tt>  <tt class="py-line">                    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L115"></a><tt class="py-lineno">115</tt>  <tt class="py-line">                        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">name_seq_index</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L116"></a><tt class="py-lineno">116</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-name">AST_sublist</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">:</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-op">+</tt> <tt class="py-op">[</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-8" class="py-name" targets="Method VisionEgg.PyroApps.AST_ext.AST_Visitor.traverse()=Visio [...]
+<a name="L117"></a><tt class="py-lineno">117</tt>  <tt class="py-line"> </tt>
+<a name="L118"></a><tt class="py-lineno">118</tt>  <tt class="py-line">            <tt class="py-comment"># Else we are in some arbitrary sequence:</tt> </tt>
+<a name="L119"></a><tt class="py-lineno">119</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># [a, [b, [c, [d, [e, [...</tt> </tt>
+<a name="L120"></a><tt class="py-lineno">120</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L121"></a><tt class="py-lineno">121</tt>  <tt class="py-line">                <tt class="py-comment"># If we are at the start of the 'name_sequence':</tt> </tt>
+<a name="L122"></a><tt class="py-lineno">122</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-keyword">if</tt> <tt class="py-name">AST_sublist</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-number">292</tt><tt class="py-op">:</tt> </tt>
+<a name="L123"></a><tt class="py-lineno">123</tt>  <tt class="py-line">                    <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">setting_assign_val</tt> <tt class="py-op">==</tt> <tt class="py-number">1</tt><tt class="py-op">:</tt> </tt>
+<a name="L124"></a><tt class="py-lineno">124</tt>  <tt class="py-line">                        <tt class="py-name">AST_sublist</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">assign_val_subtree</tt> </tt>
+<a name="L125"></a><tt class="py-lineno">125</tt>  <tt class="py-line">                        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">setting_assign_val</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L126"></a><tt class="py-lineno">126</tt>  <tt class="py-line">                    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L127"></a><tt class="py-lineno">127</tt>  <tt class="py-line">                        <tt class="py-comment"># Enter new mode: AST visitor will check to</tt> </tt>
+<a name="L128"></a><tt class="py-lineno">128</tt>  <tt class="py-line"><tt class="py-comment"></tt>                        <tt class="py-comment"># see if we are progressing through the</tt> </tt>
+<a name="L129"></a><tt class="py-lineno">129</tt>  <tt class="py-line"><tt class="py-comment"></tt>                        <tt class="py-comment"># 'name_sequence' defined earlier:</tt> </tt>
+<a name="L130"></a><tt class="py-lineno">130</tt>  <tt class="py-line"><tt class="py-comment"></tt>                        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">name_seq_index</tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L131"></a><tt class="py-lineno">131</tt>  <tt class="py-line">                    <tt class="py-keyword">return</tt> <tt class="py-name">AST_sublist</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">:</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-op">+</tt> <tt class="py-op">[</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-9" class="py-name"><a title="VisionEgg.PyroApps.AST_ext.AST_Visitor.traverse" class="p [...]
+<a name="L132"></a><tt class="py-lineno">132</tt>  <tt class="py-line">                <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L133"></a><tt class="py-lineno">133</tt>  <tt class="py-line">                    <tt class="py-keyword">return</tt> <tt class="py-name">AST_sublist</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">:</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-op">+</tt> <tt class="py-op">[</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-10" class="py-name"><a title="VisionEgg.PyroApps.AST_ext.AST_Visitor.traverse" class=" [...]
+<a name="L134"></a><tt class="py-lineno">134</tt>  <tt class="py-line"> </tt>
+<a name="L135"></a><tt class="py-lineno">135</tt>  <tt class="py-line">        <tt class="py-comment"># If we have a sub tree with 3 parent nodes:</tt> </tt>
+<a name="L136"></a><tt class="py-lineno">136</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">elif</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">AST_sublist</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">3</tt><tt class="py-op">:</tt> </tt>
+<a name="L137"></a><tt class="py-lineno">137</tt>  <tt class="py-line"> </tt>
+<a name="L138"></a><tt class="py-lineno">138</tt>  <tt class="py-line">            <tt class="py-comment"># If the second parent node is a single element</tt> </tt>
+<a name="L139"></a><tt class="py-lineno">139</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># (terminating leaf node):</tt> </tt>
+<a name="L140"></a><tt class="py-lineno">140</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">if</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">AST_sublist</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> <tt class="py-op">!=</tt> <tt class="py-name">list</tt><tt class="py-op">:</tt> </tt>
+<a name="L141"></a><tt class="py-lineno">141</tt>  <tt class="py-line">                <tt class="py-comment"># If the current AST visitor mode is set to checking</tt> </tt>
+<a name="L142"></a><tt class="py-lineno">142</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-comment"># for equality with "assign_name" (ie. "x = ..." where</tt> </tt>
+<a name="L143"></a><tt class="py-lineno">143</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-comment"># we are checking if 'x' == 'assign_name')::</tt> </tt>
+<a name="L144"></a><tt class="py-lineno">144</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">checking_assign_name</tt> <tt class="py-op">==</tt> <tt class="py-number">1</tt><tt class="py-op">:</tt> </tt>
+<a name="L145"></a><tt class="py-lineno">145</tt>  <tt class="py-line">                    <tt class="py-comment"># If 'x' == 'assign_name' (see above):</tt> </tt>
+<a name="L146"></a><tt class="py-lineno">146</tt>  <tt class="py-line"><tt class="py-comment"></tt>                    <tt class="py-keyword">if</tt> <tt class="py-name">AST_sublist</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-name">assign_name</tt><tt class="py-op">:</tt> </tt>
+<a name="L147"></a><tt class="py-lineno">147</tt>  <tt class="py-line">                        <tt class="py-comment"># Enter new mode: AST visitor will check to</tt> </tt>
+<a name="L148"></a><tt class="py-lineno">148</tt>  <tt class="py-line"><tt class="py-comment"></tt>                        <tt class="py-comment"># see if the current sub tree is associated</tt> </tt>
+<a name="L149"></a><tt class="py-lineno">149</tt>  <tt class="py-line"><tt class="py-comment"></tt>                        <tt class="py-comment"># with assignment/"=":</tt> </tt>
+<a name="L150"></a><tt class="py-lineno">150</tt>  <tt class="py-line"><tt class="py-comment"></tt>                        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">expecting_equals</tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L151"></a><tt class="py-lineno">151</tt>  <tt class="py-line">                    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">checking_assign_name</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L152"></a><tt class="py-lineno">152</tt>  <tt class="py-line"> </tt>
+<a name="L153"></a><tt class="py-lineno">153</tt>  <tt class="py-line">                <tt class="py-comment"># If the current AST visitor mode is set to check if</tt> </tt>
+<a name="L154"></a><tt class="py-lineno">154</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-comment"># the current sub tree is associated with</tt> </tt>
+<a name="L155"></a><tt class="py-lineno">155</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-comment"># assignment/"=":</tt> </tt>
+<a name="L156"></a><tt class="py-lineno">156</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-keyword">elif</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">expecting_equals</tt> <tt class="py-op">==</tt> <tt class="py-number">1</tt><tt class="py-op">:</tt> </tt>
+<a name="L157"></a><tt class="py-lineno">157</tt>  <tt class="py-line">                    <tt class="py-comment"># If the current AST sub tree is associated with</tt> </tt>
+<a name="L158"></a><tt class="py-lineno">158</tt>  <tt class="py-line"><tt class="py-comment"></tt>                    <tt class="py-comment"># assignment/"=":</tt> </tt>
+<a name="L159"></a><tt class="py-lineno">159</tt>  <tt class="py-line"><tt class="py-comment"></tt>                    <tt class="py-keyword">if</tt> <tt class="py-name">AST_sublist</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-string">'='</tt><tt class="py-op">:</tt> </tt>
+<a name="L160"></a><tt class="py-lineno">160</tt>  <tt class="py-line">                        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">modifying_AST</tt> <tt class="py-op">==</tt> <tt class="py-number">1</tt><tt class="py-op">:</tt> </tt>
+<a name="L161"></a><tt class="py-lineno">161</tt>  <tt class="py-line">                            <tt class="py-comment"># Enter new mode: AST visitor will change</tt> </tt>
+<a name="L162"></a><tt class="py-lineno">162</tt>  <tt class="py-line"><tt class="py-comment"></tt>                            <tt class="py-comment"># the assignment value to</tt> </tt>
+<a name="L163"></a><tt class="py-lineno">163</tt>  <tt class="py-line"><tt class="py-comment"></tt>                            <tt class="py-comment"># "assign_val_subtree":</tt> </tt>
+<a name="L164"></a><tt class="py-lineno">164</tt>  <tt class="py-line"><tt class="py-comment"></tt>                            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">setting_assign_val</tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L165"></a><tt class="py-lineno">165</tt>  <tt class="py-line">                        <tt class="py-keyword">elif</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">modifying_AST</tt> <tt class="py-op">==</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt>
+<a name="L166"></a><tt class="py-lineno">166</tt>  <tt class="py-line">                            <tt class="py-comment"># Enter new mode: AST visitor will extract</tt> </tt>
+<a name="L167"></a><tt class="py-lineno">167</tt>  <tt class="py-line"><tt class="py-comment"></tt>                            <tt class="py-comment"># the assignment value of "assign_name":</tt> </tt>
+<a name="L168"></a><tt class="py-lineno">168</tt>  <tt class="py-line"><tt class="py-comment"></tt>                            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">extracting_assign_val</tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L169"></a><tt class="py-lineno">169</tt>  <tt class="py-line">                    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">expecting_equals</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L170"></a><tt class="py-lineno">170</tt>  <tt class="py-line"> </tt>
+<a name="L171"></a><tt class="py-lineno">171</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-name">AST_sublist</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">:</tt><tt class="py-number">2</tt><tt class="py-op">]</tt> </tt>
+<a name="L172"></a><tt class="py-lineno">172</tt>  <tt class="py-line"> </tt>
+<a name="L173"></a><tt class="py-lineno">173</tt>  <tt class="py-line">        <tt class="py-comment"># If we are somewhere within the 'name_sequence':</tt> </tt>
+<a name="L174"></a><tt class="py-lineno">174</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">name_seq_index</tt> <tt class="py-op">></tt> <tt class="py-number">0</tt> <tt class="py-keyword">or</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">name_seq_index</tt> <tt class="py-op"><</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt> [...]
+<a name="L175"></a><tt class="py-lineno">175</tt>  <tt class="py-line">            <tt class="py-comment"># If the AST visitor is extracting the value of "assign_name":</tt> </tt>
+<a name="L176"></a><tt class="py-lineno">176</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">extracting_assign_val</tt> <tt class="py-op">==</tt> <tt class="py-number">1</tt><tt class="py-op">:</tt> </tt>
+<a name="L177"></a><tt class="py-lineno">177</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">extracted_val</tt> <tt class="py-op">=</tt> <tt class="py-string">"compound"</tt> </tt>
+<a name="L178"></a><tt class="py-lineno">178</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">extracting_assign_val</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L179"></a><tt class="py-lineno">179</tt>  <tt class="py-line"> </tt>
+<a name="L180"></a><tt class="py-lineno">180</tt>  <tt class="py-line"> </tt>
+<a name="L181"></a><tt class="py-lineno">181</tt>  <tt class="py-line">        <tt class="py-comment"># For all other types of sub trees, AST visitor will traverse</tt> </tt>
+<a name="L182"></a><tt class="py-lineno">182</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># in a depth first search pattern:</tt> </tt>
+<a name="L183"></a><tt class="py-lineno">183</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">sub_list</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L184"></a><tt class="py-lineno">184</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">x</tt> <tt class="py-keyword">in</tt> <tt class="py-name">AST_sublist</tt><tt class="py-op">:</tt> </tt>
+<a name="L185"></a><tt class="py-lineno">185</tt>  <tt class="py-line">            <tt class="py-name">sub_list</tt> <tt class="py-op">=</tt> <tt class="py-name">sub_list</tt> <tt class="py-op">+</tt> <tt class="py-op">[</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-12" class="py-name"><a title="VisionEgg.PyroApps.AST_ext.AST_Visitor.traverse" class="py-name" href="#" onclick="return doclink('link-12', 'traverse', 'link-8');">traverse</a></tt><tt class="py-op">(</ [...]
+<a name="L186"></a><tt class="py-lineno">186</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">sub_list</tt> </tt>
+</div></div><a name="L187"></a><tt class="py-lineno">187</tt>  <tt class="py-line"> </tt>
+<a name="modify_AST"></a><div id="modify_AST-def"><a name="L188"></a><tt class="py-lineno">188</tt> <a class="py-toggle" href="#" id="modify_AST-toggle" onclick="return toggle('modify_AST');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.AST_ext-module.html#modify_AST">modify_AST</a><tt class="py-op">(</tt><tt class="py-param">myAST</tt><tt class="py-op">,</tt> <tt class="py-param">assign_name</tt><tt class="py-op">,</tt> <tt cla [...]
+</div><div id="modify_AST-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="modify_AST-expanded"><a name="L189"></a><tt class="py-lineno">189</tt>  <tt class="py-line">    <tt class="py-name">myAST_Visitor</tt> <tt class="py-op">=</tt> <tt id="link-13" class="py-name" targets="Class VisionEgg.PyroApps.AST_ext.AST_Visitor=VisionEgg.PyroApps.AST_ext.AST_Visitor-class.html"><a title="VisionEgg.PyroApps.AST_ext.AST_Visitor" class="py-name" href="#" onclick="return docli [...]
+<a name="L190"></a><tt class="py-lineno">190</tt>  <tt class="py-line">    <tt class="py-name">old_AST_list</tt> <tt class="py-op">=</tt> <tt class="py-name">myAST</tt><tt class="py-op">.</tt><tt class="py-name">tolist</tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="L191"></a><tt class="py-lineno">191</tt>  <tt class="py-line">    <tt class="py-name">assign_val_type</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L192"></a><tt class="py-lineno">192</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">assign_val</tt><tt class="py-op">,</tt> <tt id="link-14" class="py-name" targets="Class int=int-class.html"><a title="int" class="py-name" href="#" onclick="return doclink('link-14', 'int', 'link-14');">int</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L193"></a><tt class="py-lineno">193</tt>  <tt class="py-line">        <tt class="py-name">assign_val_type</tt> <tt class="py-op">=</tt> <tt class="py-number">2</tt> </tt>
+<a name="L194"></a><tt class="py-lineno">194</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">assign_val</tt><tt class="py-op">,</tt> <tt id="link-15" class="py-name" targets="Class float=float-class.html"><a title="float" class="py-name" href="#" onclick="return doclink('link-15', 'float', 'link-15');">float</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L195"></a><tt class="py-lineno">195</tt>  <tt class="py-line">        <tt class="py-name">assign_val_type</tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L196"></a><tt class="py-lineno">196</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">assign_val</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-name">str</tt><tt class="py-op">:</tt> </tt>
+<a name="L197"></a><tt class="py-lineno">197</tt>  <tt class="py-line">        <tt class="py-name">assign_val_type</tt> <tt class="py-op">=</tt> <tt class="py-number">3</tt> </tt>
+<a name="L198"></a><tt class="py-lineno">198</tt>  <tt class="py-line">    <tt class="py-name">new_AST_list</tt> <tt class="py-op">=</tt> <tt class="py-name">myAST_Visitor</tt><tt class="py-op">.</tt><tt id="link-16" class="py-name"><a title="VisionEgg.PyroApps.AST_ext.AST_Visitor.traverse" class="py-name" href="#" onclick="return doclink('link-16', 'traverse', 'link-8');">traverse</a></tt><tt class="py-op">(</tt><tt class="py-name">old_AST_list</tt><tt class="py-op">,</tt> <tt class="py [...]
+<a name="L199"></a><tt class="py-lineno">199</tt>  <tt class="py-line">    <tt class="py-name">myNewAST</tt> <tt class="py-op">=</tt> <tt class="py-name">parser</tt><tt class="py-op">.</tt><tt class="py-name">sequence2ast</tt><tt class="py-op">(</tt><tt class="py-name">new_AST_list</tt><tt class="py-op">)</tt> </tt>
+<a name="L200"></a><tt class="py-lineno">200</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">myNewAST</tt> </tt>
+</div><a name="L201"></a><tt class="py-lineno">201</tt>  <tt class="py-line"> </tt>
+<a name="L202"></a><tt class="py-lineno">202</tt>  <tt class="py-line"><tt class="py-comment"># Extract the assigned value of a variable from an AST. Retains the type.</tt> </tt>
+<a name="extract_from_AST"></a><div id="extract_from_AST-def"><a name="L203"></a><tt class="py-lineno">203</tt> <a class="py-toggle" href="#" id="extract_from_AST-toggle" onclick="return toggle('extract_from_AST');">-</a><tt class="py-line"><tt class="py-comment"></tt><tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.AST_ext-module.html#extract_from_AST">extract_from_AST</a><tt class="py-op">(</tt><tt class="py-param">myAST</tt><tt class="py-op">,</tt> <tt c [...]
+</div><div id="extract_from_AST-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="extract_from_AST-expanded"><a name="L204"></a><tt class="py-lineno">204</tt>  <tt class="py-line">    <tt class="py-name">myAST_Visitor</tt> <tt class="py-op">=</tt> <tt id="link-18" class="py-name"><a title="VisionEgg.PyroApps.AST_ext.AST_Visitor" class="py-name" href="#" onclick="return doclink('link-18', 'AST_Visitor', 'link-13');">AST_Visitor</a></tt><tt class="py-op">(</tt><tt cla [...]
+<a name="L205"></a><tt class="py-lineno">205</tt>  <tt class="py-line">    <tt class="py-name">old_AST_list</tt> <tt class="py-op">=</tt> <tt class="py-name">myAST</tt><tt class="py-op">.</tt><tt class="py-name">tolist</tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="L206"></a><tt class="py-lineno">206</tt>  <tt class="py-line">    <tt class="py-name">new_AST_list</tt> <tt class="py-op">=</tt> <tt class="py-name">myAST_Visitor</tt><tt class="py-op">.</tt><tt id="link-19" class="py-name"><a title="VisionEgg.PyroApps.AST_ext.AST_Visitor.traverse" class="py-name" href="#" onclick="return doclink('link-19', 'traverse', 'link-8');">traverse</a></tt><tt class="py-op">(</tt><tt class="py-name">old_AST_list</tt><tt class="py-op">,</tt> <tt class="py [...]
+<a name="L207"></a><tt class="py-lineno">207</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">myAST_Visitor</tt><tt class="py-op">.</tt><tt class="py-name">extracted_val</tt> </tt>
+</div><a name="L208"></a><tt class="py-lineno">208</tt>  <tt class="py-line"> </tt><script type="text/javascript">
+<!--
+expandto(location.href);
+// -->
+</script>
+</pre>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:49 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.PyroApps.AST_ext.AST_Visitor-class.html b/doc/reference/html/VisionEgg.PyroApps.AST_ext.AST_Visitor-class.html
new file mode 100644
index 0000000..ef967a2
--- /dev/null
+++ b/doc/reference/html/VisionEgg.PyroApps.AST_ext.AST_Visitor-class.html
@@ -0,0 +1,159 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.PyroApps.AST_ext.AST_Visitor</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.PyroApps-module.html">Package PyroApps</a> ::
+        <a href="VisionEgg.PyroApps.AST_ext-module.html">Module AST_ext</a> ::
+        Class AST_Visitor
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.PyroApps.AST_ext.AST_Visitor-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class AST_Visitor</h1><span class="codelink"><a href="VisionEgg.PyroApps.AST_ext-pysrc.html#AST_Visitor">source code</a></span><br /><br />
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__init__"></a><span class="summary-sig-name">__init__</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">modifying_AST</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.AST_ext-pysrc.html#AST_Visitor.__init__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="traverse"></a><span class="summary-sig-name">traverse</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">AST_sublist</span>,
+        <span class="summary-sig-arg">assign_name</span>,
+        <span class="summary-sig-arg">assign_val_subtree</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.AST_ext-pysrc.html#AST_Visitor.traverse">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.PyroApps.ColorCalGUI-module.html b/doc/reference/html/VisionEgg.PyroApps.ColorCalGUI-module.html
new file mode 100644
index 0000000..6ae19d4
--- /dev/null
+++ b/doc/reference/html/VisionEgg.PyroApps.ColorCalGUI-module.html
@@ -0,0 +1,196 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.PyroApps.ColorCalGUI</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.PyroApps-module.html">Package PyroApps</a> ::
+        Module ColorCalGUI
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.PyroApps.ColorCalGUI-module.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== MODULE DESCRIPTION ==================== -->
+<h1 class="epydoc">Module ColorCalGUI</h1><span class="codelink"><a href="VisionEgg.PyroApps.ColorCalGUI-pysrc.html">source code</a></span><br /><br />
+<pre class="literalblock">
+Handle luminance and color calibration stimulus (client-side)
+
+</pre><br /><br />
+
+<hr />
+<div class="fields">      <p><strong>Version:</strong>
+        1.1.dev
+      </p>
+      <p><strong>Author:</strong>
+        Andrew Straw <astraw at users.sourceforge.net>
+      </p>
+</div><!-- ==================== CLASSES ==================== -->
+<a name="section-Classes"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Classes</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.PyroApps.ColorCalGUI.ColorCalMetaParameters-class.html" class="summary-name">ColorCalMetaParameters</a>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame-class.html" class="summary-name">ColorCalControlFrame</a>
+    </td>
+  </tr>
+</table>
+<!-- ==================== FUNCTIONS ==================== -->
+<a name="section-Functions"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Functions</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="get_control_list"></a><span class="summary-sig-name">get_control_list</span>()</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.ColorCalGUI-pysrc.html#get_control_list">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+</table>
+<!-- ==================== VARIABLES ==================== -->
+<a name="section-Variables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Variables</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="__cvs__"></a><span class="summary-name">__cvs__</span> = <code title="string.split('$Revision$') [1]">string.split('$Revision$') [1]</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="__date__"></a><span class="summary-name">__date__</span> = <code title="string.join(string.split('$Date$') [1: 3], ' ')">string.join(string.split('$Date$') [1: 3], ' ')</code>
+    </td>
+  </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.PyroApps.ColorCalGUI-pysrc.html b/doc/reference/html/VisionEgg.PyroApps.ColorCalGUI-pysrc.html
new file mode 100644
index 0000000..f08c771
--- /dev/null
+++ b/doc/reference/html/VisionEgg.PyroApps.ColorCalGUI-pysrc.html
@@ -0,0 +1,436 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.PyroApps.ColorCalGUI</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.PyroApps-module.html">Package PyroApps</a> ::
+        Module ColorCalGUI
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.PyroApps.ColorCalGUI-pysrc.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<h1 class="epydoc">Source Code for <a href="VisionEgg.PyroApps.ColorCalGUI-module.html">Module VisionEgg.PyroApps.ColorCalGUI</a></h1>
+<pre class="py-src">
+<a name="L1"></a><tt class="py-lineno"> 1</tt>  <tt class="py-line"><tt class="py-comment">#!/usr/bin/env python</tt> </tt>
+<a name="L2"></a><tt class="py-lineno"> 2</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L3"></a><tt class="py-lineno"> 3</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># The Vision Egg: ColorCalGUI</tt> </tt>
+<a name="L4"></a><tt class="py-lineno"> 4</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L5"></a><tt class="py-lineno"> 5</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Copyright (C) 2001-2003 Andrew Straw.</tt> </tt>
+<a name="L6"></a><tt class="py-lineno"> 6</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Author: Andrew Straw <astraw at users.sourceforge.net></tt> </tt>
+<a name="L7"></a><tt class="py-lineno"> 7</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># URL: <http://www.visionegg.org/></tt> </tt>
+<a name="L8"></a><tt class="py-lineno"> 8</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L9"></a><tt class="py-lineno"> 9</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Distributed under the terms of the GNU Lesser General Public License</tt> </tt>
+<a name="L10"></a><tt class="py-lineno">10</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># (LGPL). See LICENSE.TXT that came with this file.</tt> </tt>
+<a name="L11"></a><tt class="py-lineno">11</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L12"></a><tt class="py-lineno">12</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># $Id$</tt> </tt>
+<a name="L13"></a><tt class="py-lineno">13</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L14"></a><tt class="py-lineno">14</tt>  <tt class="py-line"><tt class="py-docstring">"""Handle luminance and color calibration stimulus (client-side)"""</tt> </tt>
+<a name="L15"></a><tt class="py-lineno">15</tt>  <tt class="py-line"> </tt>
+<a name="L16"></a><tt class="py-lineno">16</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-0" class="py-name" targets="Package VisionEgg=VisionEgg-module.html"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-0', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">,</tt> <tt class="py-name">string</tt> </tt>
+<a name="L17"></a><tt class="py-lineno">17</tt>  <tt class="py-line"><tt id="link-1" class="py-name" targets="Variable VisionEgg.DaqKeyboard.__version__=VisionEgg.DaqKeyboard-module.html#__version__,Variable VisionEgg.DaqLPT.__version__=VisionEgg.DaqLPT-module.html#__version__,Variable VisionEgg.GL.__version__=VisionEgg.GL-module.html#__version__,Variable VisionEgg.PyroApps.EPhysGUI.__version__=VisionEgg.PyroApps.EPhysGUI-module.html#__version__,Variable VisionEgg.PyroApps.EPhysGUIUtils. [...]
+VisionEgg.DaqLPT.__version__
+VisionEgg.GL.__version__
+VisionEgg.PyroApps.EPhysGUI.__version__
+VisionEgg.PyroApps.EPhysGUIUtils.__version__
+VisionEgg.PyroApps.EPhysServer.__version__
+VisionEgg.PyroApps.GridGUI.__version__
+VisionEgg.PyroApps.GridServer.__version__
+VisionEgg.PyroApps.ScreenPositionGUI.__version__
+VisionEgg.PyroApps.ScreenPositionServer.__version__
+VisionEgg.PyroApps.SpinningDrumGUI.__version__
+VisionEgg.PyroApps.SpinningDrumServer.__version__
+VisionEgg.PyroHelpers.__version__
+VisionEgg.QuickTime.__version__
+VisionEgg.ResponseControl.__version__
+VisionEgg.SphereMap.__version__
+VisionEgg.TCPController.__version__" class="py-name" href="#" onclick="return doclink('link-1', '__version__', 'link-1');">__version__</a></tt> <tt class="py-op">=</tt> <tt id="link-2" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-2', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-3" class="py-name" targets="Variable VisionEgg.release_name=VisionEgg-module.html#release_name"><a title="VisionEgg.release_name" c [...]
+<a name="L18"></a><tt class="py-lineno">18</tt>  <tt class="py-line"><tt id="link-4" class="py-name" targets="Variable VisionEgg.PyroApps.ColorCalGUI.__cvs__=VisionEgg.PyroApps.ColorCalGUI-module.html#__cvs__,Variable VisionEgg.PyroApps.ColorCalServer.__cvs__=VisionEgg.PyroApps.ColorCalServer-module.html#__cvs__,Variable VisionEgg.PyroApps.EPhysGUI.__cvs__=VisionEgg.PyroApps.EPhysGUI-module.html#__cvs__,Variable VisionEgg.PyroApps.EPhysGUIUtils.__cvs__=VisionEgg.PyroApps.EPhysGUIUtils-mo [...]
+VisionEgg.PyroApps.ColorCalServer.__cvs__
+VisionEgg.PyroApps.EPhysGUI.__cvs__
+VisionEgg.PyroApps.EPhysGUIUtils.__cvs__
+VisionEgg.PyroApps.EPhysServer.__cvs__
+VisionEgg.PyroApps.FlatGratingGUI.__cvs__
+VisionEgg.PyroApps.FlatGratingServer.__cvs__
+VisionEgg.PyroApps.GridGUI.__cvs__
+VisionEgg.PyroApps.GridServer.__cvs__
+VisionEgg.PyroApps.MouseTargetGUI.__cvs__
+VisionEgg.PyroApps.MouseTargetServer.__cvs__
+VisionEgg.PyroApps.ScreenPositionGUI.__cvs__
+VisionEgg.PyroApps.ScreenPositionServer.__cvs__
+VisionEgg.PyroApps.SphereGratingGUI.__cvs__
+VisionEgg.PyroApps.SphereGratingServer.__cvs__
+VisionEgg.PyroApps.SpinningDrumGUI.__cvs__
+VisionEgg.PyroApps.SpinningDrumServer.__cvs__
+VisionEgg.PyroApps.TargetGUI.__cvs__
+VisionEgg.PyroApps.TargetServer.__cvs__
+VisionEgg.PyroClient.__cvs__
+VisionEgg.PyroHelpers.__cvs__
+VisionEgg.TCPController.__cvs__" class="py-name" href="#" onclick="return doclink('link-4', '__cvs__', 'link-4');">__cvs__</a></tt> <tt class="py-op">=</tt> <tt class="py-name">string</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'$Revision$'</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
+<a name="L19"></a><tt class="py-lineno">19</tt>  <tt class="py-line"><tt id="link-5" class="py-name" targets="Variable VisionEgg.PyroApps.ColorCalGUI.__date__=VisionEgg.PyroApps.ColorCalGUI-module.html#__date__,Variable VisionEgg.PyroApps.ColorCalServer.__date__=VisionEgg.PyroApps.ColorCalServer-module.html#__date__,Variable VisionEgg.PyroApps.EPhysGUI.__date__=VisionEgg.PyroApps.EPhysGUI-module.html#__date__,Variable VisionEgg.PyroApps.EPhysGUIUtils.__date__=VisionEgg.PyroApps.EPhysGUIU [...]
+VisionEgg.PyroApps.ColorCalServer.__date__
+VisionEgg.PyroApps.EPhysGUI.__date__
+VisionEgg.PyroApps.EPhysGUIUtils.__date__
+VisionEgg.PyroApps.EPhysServer.__date__
+VisionEgg.PyroApps.FlatGratingGUI.__date__
+VisionEgg.PyroApps.FlatGratingServer.__date__
+VisionEgg.PyroApps.GridGUI.__date__
+VisionEgg.PyroApps.GridServer.__date__
+VisionEgg.PyroApps.MouseTargetGUI.__date__
+VisionEgg.PyroApps.MouseTargetServer.__date__
+VisionEgg.PyroApps.ScreenPositionGUI.__date__
+VisionEgg.PyroApps.ScreenPositionServer.__date__
+VisionEgg.PyroApps.SphereGratingGUI.__date__
+VisionEgg.PyroApps.SphereGratingServer.__date__
+VisionEgg.PyroApps.SpinningDrumGUI.__date__
+VisionEgg.PyroApps.SpinningDrumServer.__date__
+VisionEgg.PyroApps.TargetGUI.__date__
+VisionEgg.PyroApps.TargetServer.__date__
+VisionEgg.PyroClient.__date__
+VisionEgg.PyroHelpers.__date__
+VisionEgg.TCPController.__date__" class="py-name" href="#" onclick="return doclink('link-5', '__date__', 'link-5');">__date__</a></tt> <tt class="py-op">=</tt> <tt class="py-name">string</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">string</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'$Date$'</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt  [...]
+<a name="L20"></a><tt class="py-lineno">20</tt>  <tt class="py-line"><tt id="link-6" class="py-name" targets="Variable VisionEgg.PyroApps.EPhysGUI.__author__=VisionEgg.PyroApps.EPhysGUI-module.html#__author__,Variable VisionEgg.PyroApps.EPhysGUIUtils.__author__=VisionEgg.PyroApps.EPhysGUIUtils-module.html#__author__,Variable VisionEgg.PyroApps.EPhysServer.__author__=VisionEgg.PyroApps.EPhysServer-module.html#__author__,Variable VisionEgg.PyroApps.GridGUI.__author__=VisionEgg.PyroApps.Gri [...]
+VisionEgg.PyroApps.EPhysGUIUtils.__author__
+VisionEgg.PyroApps.EPhysServer.__author__
+VisionEgg.PyroApps.GridGUI.__author__
+VisionEgg.PyroApps.GridServer.__author__
+VisionEgg.PyroApps.SpinningDrumGUI.__author__
+VisionEgg.PyroApps.SpinningDrumServer.__author__" class="py-name" href="#" onclick="return doclink('link-6', '__author__', 'link-6');">__author__</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'Andrew Straw <astraw at users.sourceforge.net>'</tt> </tt>
+<a name="L21"></a><tt class="py-lineno">21</tt>  <tt class="py-line"> </tt>
+<a name="L22"></a><tt class="py-lineno">22</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">sys</tt><tt class="py-op">,</tt> <tt class="py-name">os</tt> </tt>
+<a name="L23"></a><tt class="py-lineno">23</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-7" class="py-name" targets="Variable VisionEgg.GUI.Tkinter=VisionEgg.GUI-module.html#Tkinter"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-7', 'Tkinter', 'link-7');">Tkinter</a></tt> </tt>
+<a name="L24"></a><tt class="py-lineno">24</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-8" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-8', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-9" class="py-name" targets="Package VisionEgg.PyroApps=VisionEgg.PyroApps-module.html"><a title="VisionEgg.PyroApps" class="py-name" href="#" onclick="return doclink('link-9', 'PyroApps', 'link-9' [...]
+<a name="L25"></a><tt class="py-lineno">25</tt>  <tt class="py-line"> </tt>
+<a name="get_control_list"></a><div id="get_control_list-def"><a name="L26"></a><tt class="py-lineno">26</tt> <a class="py-toggle" href="#" id="get_control_list-toggle" onclick="return toggle('get_control_list');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.ColorCalGUI-module.html#get_control_list">get_control_list</a><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="get_control_list-collapsed" style="display:none;" pad="++" indent="++++"></div><div id="get_control_list-expanded"><a name="L27"></a><tt class="py-lineno">27</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-op">[</tt><tt class="py-op">(</tt><tt class="py-string">"color_cal_server"</tt><tt class="py-op">,</tt><tt id="link-11" class="py-name" targets="Class VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame=VisionEgg.PyroApps.ColorCalGUI.ColorC [...]
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.title
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.title
+VisionEgg.PyroApps.GridGUI.GridControlFrame.title
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.title
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.title
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.title
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.title" class="py-name" href="#" onclick="return doclink('link-13', 'title', 'link-13');">title</a></tt><tt class="py-op">)</tt><tt class="py-op">]</tt> </tt>
+</div><a name="L28"></a><tt class="py-lineno">28</tt>  <tt class="py-line"> </tt>
+<a name="ColorCalMetaParameters"></a><div id="ColorCalMetaParameters-def"><a name="L29"></a><tt class="py-lineno">29</tt> <a class="py-toggle" href="#" id="ColorCalMetaParameters-toggle" onclick="return toggle('ColorCalMetaParameters');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.PyroApps.ColorCalGUI.ColorCalMetaParameters-class.html">ColorCalMetaParameters</a><tt class="py-op">:</tt> </tt>
+</div><div id="ColorCalMetaParameters-collapsed" style="display:none;" pad="++" indent="++++"></div><div id="ColorCalMetaParameters-expanded"><a name="ColorCalMetaParameters.__init__"></a><div id="ColorCalMetaParameters.__init__-def"><a name="L30"></a><tt class="py-lineno">30</tt> <a class="py-toggle" href="#" id="ColorCalMetaParameters.__init__-toggle" onclick="return toggle('ColorCalMetaParameters.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-de [...]
+</div><div id="ColorCalMetaParameters.__init__-collapsed" style="display:none;" pad="++" indent="++++++++"></div><div id="ColorCalMetaParameters.__init__-expanded"><a name="L31"></a><tt class="py-lineno">31</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">color</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-number">1.0</tt><tt class="py-op">,</tt> <tt class="py-number">1.0</tt><tt class="py-op">,</tt> <tt clas [...]
+</div></div><a name="L32"></a><tt class="py-lineno">32</tt>  <tt class="py-line">         </tt>
+<a name="ColorCalControlFrame"></a><div id="ColorCalControlFrame-def"><a name="L33"></a><tt class="py-lineno">33</tt> <a class="py-toggle" href="#" id="ColorCalControlFrame-toggle" onclick="return toggle('ColorCalControlFrame');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame-class.html">ColorCalControlFrame</a><tt class="py-op">(</tt><tt class="py-base-class">client_utils</tt><tt class="py-op">. [...]
+</div><div id="ColorCalControlFrame-collapsed" style="display:none;" pad="++" indent="++++"></div><div id="ColorCalControlFrame-expanded"><a name="L34"></a><tt class="py-lineno">34</tt>  <tt class="py-line">    <tt id="link-14" class="py-name"><a title="VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.title
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.title
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.title
+VisionEgg.PyroApps.GridGUI.GridControlFrame.title
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.title
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.title
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.title
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.title" class="py-name" href="#" onclick="return doclink('link-14', 'title', 'link-13');">title</a></tt> <tt class="py-op">=</tt> <tt class="py-string">"Color Calibration"</tt> </tt>
+<a name="ColorCalControlFrame.__init__"></a><div id="ColorCalControlFrame.__init__-def"><a name="L35"></a><tt class="py-lineno">35</tt> <a class="py-toggle" href="#" id="ColorCalControlFrame.__init__-toggle" onclick="return toggle('ColorCalControlFrame.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</ [...]
+</div><div id="ColorCalControlFrame.__init__-collapsed" style="display:none;" pad="++" indent="++++++++"></div><div id="ColorCalControlFrame.__init__-expanded"><a name="L36"></a><tt class="py-lineno">36</tt>  <tt class="py-line">        <tt class="py-name">client_utils</tt><tt class="py-op">.</tt><tt id="link-15" class="py-name" targets="Class VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame=VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html"><a title="VisionEgg.PyroAp [...]
+VisionEgg.Configuration.Config.__init__
+VisionEgg.Core.FixationSpot.__init__
+VisionEgg.Core.FrameTimer.__init__
+VisionEgg.Core.ModelView.__init__
+VisionEgg.Core.OrthographicProjection.__init__
+VisionEgg.Core.OrthographicProjectionNoZClip.__init__
+VisionEgg.Core.PerspectiveProjection.__init__
+VisionEgg.Core.Projection.__init__
+VisionEgg.Core.ProjectionBaseClass.__init__
+VisionEgg.Core.Screen.__init__
+VisionEgg.Core.SimplePerspectiveProjection.__init__
+VisionEgg.Core.Stimulus.__init__
+VisionEgg.Core.Viewport.__init__
+VisionEgg.Daq.Channel.__init__
+VisionEgg.Daq.DaqMode.__init__
+VisionEgg.Daq.Device.__init__
+VisionEgg.Daq.Functionality.__init__
+VisionEgg.Daq.SignalType.__init__
+VisionEgg.DaqKeyboard.KeyboardTriggerInController.__init__
+VisionEgg.DaqLPT.LPTChannel.__init__
+VisionEgg.DaqLPT.LPTDevice.__init__
+VisionEgg.DaqLPT.LPTTriggerInController.__init__
+VisionEgg.DaqLPT.LPTTriggerOutController.__init__
+VisionEgg.Deprecated.Message.__init__
+VisionEgg.Dots.DotArea2D.__init__
+VisionEgg.FlowControl.ConstantController.__init__
+VisionEgg.FlowControl.Controller.__init__
+VisionEgg.FlowControl.EncapsulatedController.__init__
+VisionEgg.FlowControl.EvalStringController.__init__
+VisionEgg.FlowControl.ExecStringController.__init__
+VisionEgg.FlowControl.FunctionController.__init__
+VisionEgg.FlowControl.Presentation.__init__
+VisionEgg.GLTrace.Wrapper.__init__
+VisionEgg.GUI.AppWindow.__init__
+VisionEgg.GUI.GetKeypressDialog.__init__
+VisionEgg.GUI.GraphicsConfigurationWindow.__init__
+VisionEgg.GUI.InfoFrame.__init__
+VisionEgg.GUI.ProgressBar.__init__
+VisionEgg.GUI.ToplevelDialog.__init__
+VisionEgg.Gratings.SinGrating2D.__init__
+VisionEgg.Gratings.SinGrating3D.__init__
+VisionEgg.MoreStimuli.Arrow.__init__
+VisionEgg.MoreStimuli.FilledCircle.__init__
+VisionEgg.MoreStimuli.Rectangle3D.__init__
+VisionEgg.MoreStimuli.Target2D.__init__
+VisionEgg.ParameterTypes.AnyOf.__init__
+VisionEgg.ParameterTypes.Instance.__init__
+VisionEgg.ParameterTypes.Sequence.__init__
+VisionEgg.ParameterTypes.SubClass.__init__
+VisionEgg.PyroApps.AST_ext.AST_Visitor.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalMetaParameters.__init__
+VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.__init__
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.__init__
+VisionEgg.PyroApps.DropinGUI.DropinMetaParameters.__init__
+VisionEgg.PyroApps.DropinServer.DropinMetaController.__init__
+VisionEgg.PyroApps.EPhysGUI.AppWindow.__init__
+VisionEgg.PyroApps.EPhysGUI.BarButton.__init__
+VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase.__init__
+VisionEgg.PyroApps.EPhysGUI.GammaFrame.__init__
+VisionEgg.PyroApps.EPhysGUI.ImageSequenceLauncher.__init__
+VisionEgg.PyroApps.EPhysGUI.Loop.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopContainedObject.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopParamDialog.__init__
+VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.__init__
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.__init__
+VisionEgg.PyroApps.EPhysServer.EPhysServer.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingMetaParameters.__init__
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.GridGUI.GridControlFrame.__init__
+VisionEgg.PyroApps.GridGUI.GridMetaParameters.__init__
+VisionEgg.PyroApps.GridServer.GridMetaController.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetMetaParameters.__init__
+VisionEgg.PyroApps.MouseTargetServer.MousePositionController.__init__
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetOrientationController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetPositionController.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.CallbackEntry.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionParameters.__init__
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingMetaParameters.__init__
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumMetaParameters.__init__
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.__init__
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.__init__
+VisionEgg.PyroApps.TargetGUI.TargetMetaParameters.__init__
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.__init__
+VisionEgg.PyroClient.PyroClient.__init__
+VisionEgg.PyroHelpers.PyroConstantController.__init__
+VisionEgg.PyroHelpers.PyroEncapsulatedController.__init__
+VisionEgg.PyroHelpers.PyroEvalStringController.__init__
+VisionEgg.PyroHelpers.PyroExecStringController.__init__
+VisionEgg.PyroHelpers.PyroListenController.__init__
+VisionEgg.PyroHelpers.PyroLocalDictController.__init__
+VisionEgg.PyroHelpers.PyroServer.__init__
+VisionEgg.QuickTime.MovieTexture.__init__
+VisionEgg.ResponseControl.KeyboardResponseController.__init__
+VisionEgg.ResponseControl.ResponseController.__init__
+VisionEgg.SphereMap.AzElGrid.__init__
+VisionEgg.SphereMap.SphereGrating.__init__
+VisionEgg.SphereMap.SphereMap.__init__
+VisionEgg.SphereMap.SphereWindow.__init__
+VisionEgg.TCPController.SocketListenController.__init__
+VisionEgg.TCPController.TCPController.__init__
+VisionEgg.TCPController.TCPServer.__init__
+VisionEgg.Text.BitmapText.__init__
+VisionEgg.Text.GlutTextBase.__init__
+VisionEgg.Text.StrokeText.__init__
+VisionEgg.Text.Text.__init__
+VisionEgg.Textures.FixationCross.__init__
+VisionEgg.Textures.Mask2D.__init__
+VisionEgg.Textures.SpinningDrum.__init__
+VisionEgg.Textures.Texture.__init__
+VisionEgg.Textures.TextureFromFile.__init__
+VisionEgg.Textures.TextureObject.__init__
+VisionEgg.Textures.TextureStimulusBaseClass.__init__
+VisionEgg.ThreeDeeMath.TransformMatrix.__init__
+VisionEgg.WrappedText.WrappedText.__init__
+VisionEgg.qtmovie.Movie.__init__
+VisionEgg.qtmovie.Rect.__init__" class="py-name" href="#" onclick="return doclink('link-16', '__init__', 'link-16');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> </tt>
+<a name="L37"></a><tt class="py-lineno">37</tt>  <tt class="py-line">                                                   <tt class="py-name">master</tt><tt class="py-op">,</tt> </tt>
+<a name="L38"></a><tt class="py-lineno">38</tt>  <tt class="py-line">                                                   <tt class="py-name">suppress_go_buttons</tt><tt class="py-op">,</tt> </tt>
+<a name="L39"></a><tt class="py-lineno">39</tt>  <tt class="py-line">                                                   <tt id="link-17" class="py-name"><a title="VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame" class="py-name" href="#" onclick="return doclink('link-17', 'ColorCalControlFrame', 'link-11');">ColorCalControlFrame</a></tt><tt class="py-op">.</tt><tt id="link-18" class="py-name"><a title="VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.title
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.title
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.title
+VisionEgg.PyroApps.GridGUI.GridControlFrame.title
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.title
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.title
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.title
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.title" class="py-name" href="#" onclick="return doclink('link-18', 'title', 'link-13');">title</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L40"></a><tt class="py-lineno">40</tt>  <tt class="py-line">                                                   <tt id="link-19" class="py-name" targets="Class VisionEgg.PyroApps.ColorCalGUI.ColorCalMetaParameters=VisionEgg.PyroApps.ColorCalGUI.ColorCalMetaParameters-class.html"><a title="VisionEgg.PyroApps.ColorCalGUI.ColorCalMetaParameters" class="py-name" href="#" onclick="return doclink('link-19', 'ColorCalMetaParameters', 'link-19');">ColorCalMetaParameters</a></tt><tt class [...]
+<a name="L41"></a><tt class="py-lineno">41</tt>  <tt class="py-line">                                                   <tt class="py-op">**</tt><tt class="py-name">kw</tt><tt class="py-op">)</tt> </tt>
+<a name="L42"></a><tt class="py-lineno">42</tt>  <tt class="py-line"> </tt>
+<a name="L43"></a><tt class="py-lineno">43</tt>  <tt class="py-line">        <tt class="py-name">param_frame</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">param_frame</tt> <tt class="py-comment"># shorthand for self.param_frame created in base class</tt> </tt>
+<a name="L44"></a><tt class="py-lineno">44</tt>  <tt class="py-line"> </tt>
+<a name="L45"></a><tt class="py-lineno">45</tt>  <tt class="py-line">        <tt class="py-comment"># Allow columns to expand</tt> </tt>
+<a name="L46"></a><tt class="py-lineno">46</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">param_frame</tt><tt class="py-op">.</tt><tt class="py-name">columnconfigure</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">,</tt><tt class="py-name">weight</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="L47"></a><tt class="py-lineno">47</tt>  <tt class="py-line">        <tt class="py-name">param_frame</tt><tt class="py-op">.</tt><tt class="py-name">columnconfigure</tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">,</tt><tt class="py-name">weight</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="L48"></a><tt class="py-lineno">48</tt>  <tt class="py-line">         </tt>
+<a name="L49"></a><tt class="py-lineno">49</tt>  <tt class="py-line">        <tt class="py-name">pf_row</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L50"></a><tt class="py-lineno">50</tt>  <tt class="py-line">        <tt id="link-20" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-20', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">param_frame</tt><tt class="py-op">,</tt><tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Red:"</tt><tt class="py-op">)</tt><t [...]
+<a name="L51"></a><tt class="py-lineno">51</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">red_tk_var</tt> <tt class="py-op">=</tt> <tt id="link-21" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-21', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">DoubleVar</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L52"></a><tt class="py-lineno">52</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">red_tk_var</tt><tt class="py-op">.</tt><tt id="link-22" class="py-name" targets="Method VisionEgg.ClassWithParameters.set()=VisionEgg.ClassWithParameters-class.html#set"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-22', 'set', 'link-22');">set</a></tt><tt class="py-op">(</tt><tt class=" [...]
+<a name="L53"></a><tt class="py-lineno">53</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-23" class="py-name" targets="Method VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.make_callback_entry()=VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#make_callback_entry"><a title="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.make_callback_entry" class="py-name" href="#" onclick="return doclink('link-23', 'make_ [...]
+<a name="L54"></a><tt class="py-lineno">54</tt>  <tt class="py-line"> </tt>
+<a name="L55"></a><tt class="py-lineno">55</tt>  <tt class="py-line">        <tt class="py-name">pf_row</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L56"></a><tt class="py-lineno">56</tt>  <tt class="py-line">        <tt id="link-24" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-24', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">param_frame</tt><tt class="py-op">,</tt><tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Green:"</tt><tt class="py-op">)</tt> [...]
+<a name="L57"></a><tt class="py-lineno">57</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">green_tk_var</tt> <tt class="py-op">=</tt> <tt id="link-25" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-25', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">DoubleVar</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L58"></a><tt class="py-lineno">58</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">green_tk_var</tt><tt class="py-op">.</tt><tt id="link-26" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-26', 'set', 'link-22');">set</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op"> [...]
+<a name="L59"></a><tt class="py-lineno">59</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-27" class="py-name"><a title="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.make_callback_entry" class="py-name" href="#" onclick="return doclink('link-27', 'make_callback_entry', 'link-23');">make_callback_entry</a></tt><tt class="py-op">(</tt><tt class="py-name">textvariable</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt cl [...]
+<a name="L60"></a><tt class="py-lineno">60</tt>  <tt class="py-line"> </tt>
+<a name="L61"></a><tt class="py-lineno">61</tt>  <tt class="py-line">        <tt class="py-name">pf_row</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L62"></a><tt class="py-lineno">62</tt>  <tt class="py-line">        <tt id="link-28" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-28', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">param_frame</tt><tt class="py-op">,</tt><tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Blue:"</tt><tt class="py-op">)</tt>< [...]
+<a name="L63"></a><tt class="py-lineno">63</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">blue_tk_var</tt> <tt class="py-op">=</tt> <tt id="link-29" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-29', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">DoubleVar</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L64"></a><tt class="py-lineno">64</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">blue_tk_var</tt><tt class="py-op">.</tt><tt id="link-30" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-30', 'set', 'link-22');">set</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op">. [...]
+<a name="L65"></a><tt class="py-lineno">65</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-31" class="py-name"><a title="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.make_callback_entry" class="py-name" href="#" onclick="return doclink('link-31', 'make_callback_entry', 'link-23');">make_callback_entry</a></tt><tt class="py-op">(</tt><tt class="py-name">textvariable</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt cl [...]
+</div><a name="L66"></a><tt class="py-lineno">66</tt>  <tt class="py-line"> </tt>
+<a name="ColorCalControlFrame.get_shortname"></a><div id="ColorCalControlFrame.get_shortname-def"><a name="L67"></a><tt class="py-lineno">67</tt> <a class="py-toggle" href="#" id="ColorCalControlFrame.get_shortname-toggle" onclick="return toggle('ColorCalControlFrame.get_shortname');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame-class.html#get_shortname">get_shortname</a><tt class="py-op">(</ [...]
+</div><div id="ColorCalControlFrame.get_shortname-collapsed" style="display:none;" pad="++" indent="++++++++"></div><div id="ColorCalControlFrame.get_shortname-expanded"><a name="L68"></a><tt class="py-lineno">68</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-string">"color_cal"</tt> </tt>
+</div><a name="L69"></a><tt class="py-lineno">69</tt>  <tt class="py-line"> </tt>
+<a name="ColorCalControlFrame.update_tk_vars"></a><div id="ColorCalControlFrame.update_tk_vars-def"><a name="L70"></a><tt class="py-lineno">70</tt> <a class="py-toggle" href="#" id="ColorCalControlFrame.update_tk_vars-toggle" onclick="return toggle('ColorCalControlFrame.update_tk_vars');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame-class.html#update_tk_vars">update_tk_vars</a><tt class="py-o [...]
+</div><div id="ColorCalControlFrame.update_tk_vars-collapsed" style="display:none;" pad="++" indent="++++++++"></div><div id="ColorCalControlFrame.update_tk_vars-expanded"><a name="L71"></a><tt class="py-lineno">71</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">red_tk_var</tt><tt class="py-op">.</tt><tt id="link-32" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('lin [...]
+<a name="L72"></a><tt class="py-lineno">72</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">green_tk_var</tt><tt class="py-op">.</tt><tt id="link-33" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-33', 'set', 'link-22');">set</a></tt><tt class="py-op">(</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op" [...]
+<a name="L73"></a><tt class="py-lineno">73</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">blue_tk_var</tt><tt class="py-op">.</tt><tt id="link-34" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-34', 'set', 'link-22');">set</a></tt><tt class="py-op">(</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op"> [...]
+</div><a name="L74"></a><tt class="py-lineno">74</tt>  <tt class="py-line">         </tt>
+<a name="ColorCalControlFrame.send_values"></a><div id="ColorCalControlFrame.send_values-def"><a name="L75"></a><tt class="py-lineno">75</tt> <a class="py-toggle" href="#" id="ColorCalControlFrame.send_values-toggle" onclick="return toggle('ColorCalControlFrame.send_values');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame-class.html#send_values">send_values</a><tt class="py-op">(</tt><tt class [...]
+</div><div id="ColorCalControlFrame.send_values-collapsed" style="display:none;" pad="++" indent="++++++++"></div><div id="ColorCalControlFrame.send_values-expanded"><a name="L76"></a><tt class="py-lineno">76</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op">.</tt><tt class="py-name">color</tt> <tt class="py-op">=</tt>  <tt class="py-op">(</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt>< [...]
+<a name="L77"></a><tt class="py-lineno">77</tt>  <tt class="py-line">                                    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">green_tk_var</tt><tt class="py-op">.</tt><tt id="link-36" class="py-name"><a title="VisionEgg.PyroClient.PyroClient.get" class="py-name" href="#" onclick="return doclink('link-36', 'get', 'link-35');">get</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L78"></a><tt class="py-lineno">78</tt>  <tt class="py-line">                                    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">blue_tk_var</tt><tt class="py-op">.</tt><tt id="link-37" class="py-name"><a title="VisionEgg.PyroClient.PyroClient.get" class="py-name" href="#" onclick="return doclink('link-37', 'get', 'link-35');">get</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L79"></a><tt class="py-lineno">79</tt>  <tt class="py-line">                                    <tt class="py-number">0.0</tt> <tt class="py-op">)</tt> </tt>
+<a name="L80"></a><tt class="py-lineno">80</tt>  <tt class="py-line"> </tt>
+<a name="L81"></a><tt class="py-lineno">81</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">connected</tt><tt class="py-op">:</tt> </tt>
+<a name="L82"></a><tt class="py-lineno">82</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_controller</tt><tt class="py-op">.</tt><tt id="link-38" class="py-name" targets="Method VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.set_parameters()=VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController-class.html#set_parameters,Method VisionEgg.PyroApps.DropinServer.DropinMetaController.set_parameters()=VisionEgg.P [...]
+VisionEgg.PyroApps.DropinServer.DropinMetaController.set_parameters
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.set_parameters
+VisionEgg.PyroApps.GridServer.GridMetaController.set_parameters
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.set_parameters
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.set_parameters
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.set_parameters
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.set_parameters
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.set_parameters" class="py-name" href="#" onclick="return doclink('link-38', 'set_parameters', 'link-38');">set_parameters</a></tt><tt class="py-op">(</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt> <tt class="py-op">)</tt> </tt>
+</div><a name="L83"></a><tt class="py-lineno">83</tt>  <tt class="py-line"> </tt>
+<a name="ColorCalControlFrame.get_duration_sec"></a><div id="ColorCalControlFrame.get_duration_sec-def"><a name="L84"></a><tt class="py-lineno">84</tt> <a class="py-toggle" href="#" id="ColorCalControlFrame.get_duration_sec-toggle" onclick="return toggle('ColorCalControlFrame.get_duration_sec');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame-class.html#get_duration_sec">get_duration_sec</a><tt [...]
+</div><div id="ColorCalControlFrame.get_duration_sec-collapsed" style="display:none;" pad="++" indent="++++++++"></div><div id="ColorCalControlFrame.get_duration_sec-expanded"><a name="L85"></a><tt class="py-lineno">85</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-number">0.0</tt> </tt>
+</div></div><a name="L86"></a><tt class="py-lineno">86</tt>  <tt class="py-line"> </tt>
+<a name="L87"></a><tt class="py-lineno">87</tt>  <tt class="py-line"><tt class="py-keyword">if</tt> <tt class="py-name">__name__</tt><tt class="py-op">==</tt><tt class="py-string">'__main__'</tt><tt class="py-op">:</tt> </tt>
+<a name="L88"></a><tt class="py-lineno">88</tt>  <tt class="py-line">    <tt class="py-name">frame</tt> <tt class="py-op">=</tt> <tt id="link-39" class="py-name"><a title="VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame" class="py-name" href="#" onclick="return doclink('link-39', 'ColorCalControlFrame', 'link-11');">ColorCalControlFrame</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L89"></a><tt class="py-lineno">89</tt>  <tt class="py-line">    <tt class="py-name">frame</tt><tt class="py-op">.</tt><tt class="py-name">pack</tt><tt class="py-op">(</tt><tt class="py-name">expand</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py-op">,</tt><tt class="py-name">fill</tt><tt class="py-op">=</tt><tt id="link-40" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-40', 'Tkinter', 'link-7');">Tki [...]
+<a name="L90"></a><tt class="py-lineno">90</tt>  <tt class="py-line">    <tt class="py-name">frame</tt><tt class="py-op">.</tt><tt class="py-name">winfo_toplevel</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-41" class="py-name"><a title="VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.title
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.title
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.title
+VisionEgg.PyroApps.GridGUI.GridControlFrame.title
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.title
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.title
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.title
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.title" class="py-name" href="#" onclick="return doclink('link-41', 'title', 'link-13');">title</a></tt><tt class="py-op">(</tt><tt class="py-string">"%s"</tt><tt class="py-op">%</tt><tt class="py-op">(</tt><tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">path</tt><tt class="py-op">.</tt><tt class="py-name">basename</tt><tt class="py-op">(</tt><tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">path</ [...]
+<a name="L91"></a><tt class="py-lineno">91</tt>  <tt class="py-line">    <tt class="py-name">frame</tt><tt class="py-op">.</tt><tt class="py-name">mainloop</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L92"></a><tt class="py-lineno">92</tt>  <tt class="py-line"> </tt><script type="text/javascript">
+<!--
+expandto(location.href);
+// -->
+</script>
+</pre>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:47 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame-class.html b/doc/reference/html/VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame-class.html
new file mode 100644
index 0000000..e0e746f
--- /dev/null
+++ b/doc/reference/html/VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame-class.html
@@ -0,0 +1,597 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.PyroApps-module.html">Package PyroApps</a> ::
+        <a href="VisionEgg.PyroApps.ColorCalGUI-module.html">Module ColorCalGUI</a> ::
+        Class ColorCalControlFrame
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class ColorCalControlFrame</h1><span class="codelink"><a href="VisionEgg.PyroApps.ColorCalGUI-pysrc.html#ColorCalControlFrame">source code</a></span><br /><br />
+<pre class="base-tree">
+      Tkinter.Misc --+                
+                     |                
+    Tkinter.BaseWidget --+            
+                         |            
+          Tkinter.Pack --+            
+                         |            
+         Tkinter.Place --+            
+                         |            
+          Tkinter.Grid --+            
+                         |            
+            Tkinter.Widget --+        
+                             |        
+                 Tkinter.Frame --+    
+                                 |    
+<a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html">EPhysGUIUtils.StimulusControlFrame</a> --+
+                                     |
+                                    <strong class="uidshort">ColorCalControlFrame</strong>
+</pre>
+
+<hr />
+<!-- ==================== NESTED CLASSES ==================== -->
+<a name="section-NestedClasses"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Nested Classes</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>Tkinter.Misc</code></b>:
+      <code><a href="float-class.html">getdouble</a></code>,
+      <code><a href="int-class.html">getint</a></code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">master</span>=<span class="summary-sig-default">None</span>,
+        <span class="summary-sig-arg">suppress_go_buttons</span>=<span class="summary-sig-default">0</span>,
+        <span class="summary-sig-arg">**kw</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.ColorCalGUI-pysrc.html#ColorCalControlFrame.__init__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame-class.html#get_shortname" class="summary-sig-name">get_shortname</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      Used as basename for saving parameter files and other ID purposes</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.ColorCalGUI-pysrc.html#ColorCalControlFrame.get_shortname">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame-class.html#update_tk_vars" class="summary-sig-name">update_tk_vars</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      Update Tkinter variables with (new) values from meta_params</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.ColorCalGUI-pysrc.html#ColorCalControlFrame.update_tk_vars">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame-class.html#send_values" class="summary-sig-name">send_values</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">dummy_arg</span>=<span class="summary-sig-default">None</span>)</span><br />
+      Update meta_params variables with values from Tkinter fields</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.ColorCalGUI-pysrc.html#ColorCalControlFrame.send_values">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame-class.html#get_duration_sec" class="summary-sig-name">get_duration_sec</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      Calculate total duration in go loop</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.ColorCalGUI-pysrc.html#ColorCalControlFrame.get_duration_sec">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html">EPhysGUIUtils.StimulusControlFrame</a></code></b>:
+      <code><a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#connect">connect</a></code>,
+      <code><a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#get_loopable_variable_names">get_loopable_variable_names</a></code>,
+      <code><a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#get_matlab_string">get_matlab_string</a></code>,
+      <code><a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#get_parameters_as_m_strings">get_parameters_as_m_strings</a></code>,
+      <code><a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#get_parameters_as_py_strings">get_parameters_as_py_strings</a></code>,
+      <code><a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#get_parameters_dict">get_parameters_dict</a></code>,
+      <code><a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#go">go</a></code>,
+      <code><a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#make_callback_entry">make_callback_entry</a></code>,
+      <code><a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#quit_server">quit_server</a></code>,
+      <code><a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#set_loopable_variable">set_loopable_variable</a></code>,
+      <code><a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#set_param_dict">set_param_dict</a></code>,
+      <code><a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#set_parameters_dict">set_parameters_dict</a></code>,
+      <code><a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#standalone_connect">standalone_connect</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>Tkinter.BaseWidget</code></b>:
+      <code>destroy</code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>Tkinter.Misc</code></b>:
+      <code>__getitem__</code>,
+      <code>__setitem__</code>,
+      <code>__str__</code>,
+      <code>after</code>,
+      <code>after_cancel</code>,
+      <code>after_idle</code>,
+      <code>bbox</code>,
+      <code>bell</code>,
+      <code>bind</code>,
+      <code>bind_all</code>,
+      <code>bind_class</code>,
+      <code>bindtags</code>,
+      <code>cget</code>,
+      <code>clipboard_append</code>,
+      <code>clipboard_clear</code>,
+      <code>clipboard_get</code>,
+      <code>colormodel</code>,
+      <code>columnconfigure</code>,
+      <code>config</code>,
+      <code>configure</code>,
+      <code>deletecommand</code>,
+      <code>event_add</code>,
+      <code>event_delete</code>,
+      <code>event_generate</code>,
+      <code>event_info</code>,
+      <code>focus</code>,
+      <code>focus_displayof</code>,
+      <code>focus_force</code>,
+      <code>focus_get</code>,
+      <code>focus_lastfor</code>,
+      <code>focus_set</code>,
+      <code>getboolean</code>,
+      <code>getvar</code>,
+      <code>grab_current</code>,
+      <code>grab_release</code>,
+      <code>grab_set</code>,
+      <code>grab_set_global</code>,
+      <code>grab_status</code>,
+      <code>grid_bbox</code>,
+      <code>grid_columnconfigure</code>,
+      <code>grid_location</code>,
+      <code>grid_propagate</code>,
+      <code>grid_rowconfigure</code>,
+      <code>grid_size</code>,
+      <code>grid_slaves</code>,
+      <code>image_names</code>,
+      <code>image_types</code>,
+      <code>keys</code>,
+      <code>lift</code>,
+      <code>lower</code>,
+      <code>mainloop</code>,
+      <code>nametowidget</code>,
+      <code>option_add</code>,
+      <code>option_clear</code>,
+      <code>option_get</code>,
+      <code>option_readfile</code>,
+      <code>pack_propagate</code>,
+      <code>pack_slaves</code>,
+      <code>place_slaves</code>,
+      <code>propagate</code>,
+      <code>quit</code>,
+      <code>register</code>,
+      <code>rowconfigure</code>,
+      <code>selection_clear</code>,
+      <code>selection_get</code>,
+      <code>selection_handle</code>,
+      <code>selection_own</code>,
+      <code>selection_own_get</code>,
+      <code>send</code>,
+      <code>setvar</code>,
+      <code>size</code>,
+      <code>slaves</code>,
+      <code>tk_bisque</code>,
+      <code>tk_focusFollowsMouse</code>,
+      <code>tk_focusNext</code>,
+      <code>tk_focusPrev</code>,
+      <code>tk_menuBar</code>,
+      <code>tk_setPalette</code>,
+      <code>tk_strictMotif</code>,
+      <code>tkraise</code>,
+      <code>unbind</code>,
+      <code>unbind_all</code>,
+      <code>unbind_class</code>,
+      <code>update</code>,
+      <code>update_idletasks</code>,
+      <code>wait_variable</code>,
+      <code>wait_visibility</code>,
+      <code>wait_window</code>,
+      <code>waitvar</code>,
+      <code>winfo_atom</code>,
+      <code>winfo_atomname</code>,
+      <code>winfo_cells</code>,
+      <code>winfo_children</code>,
+      <code>winfo_class</code>,
+      <code>winfo_colormapfull</code>,
+      <code>winfo_containing</code>,
+      <code>winfo_depth</code>,
+      <code>winfo_exists</code>,
+      <code>winfo_fpixels</code>,
+      <code>winfo_geometry</code>,
+      <code>winfo_height</code>,
+      <code>winfo_id</code>,
+      <code>winfo_interps</code>,
+      <code>winfo_ismapped</code>,
+      <code>winfo_manager</code>,
+      <code>winfo_name</code>,
+      <code>winfo_parent</code>,
+      <code>winfo_pathname</code>,
+      <code>winfo_pixels</code>,
+      <code>winfo_pointerx</code>,
+      <code>winfo_pointerxy</code>,
+      <code>winfo_pointery</code>,
+      <code>winfo_reqheight</code>,
+      <code>winfo_reqwidth</code>,
+      <code>winfo_rgb</code>,
+      <code>winfo_rootx</code>,
+      <code>winfo_rooty</code>,
+      <code>winfo_screen</code>,
+      <code>winfo_screencells</code>,
+      <code>winfo_screendepth</code>,
+      <code>winfo_screenheight</code>,
+      <code>winfo_screenmmheight</code>,
+      <code>winfo_screenmmwidth</code>,
+      <code>winfo_screenvisual</code>,
+      <code>winfo_screenwidth</code>,
+      <code>winfo_server</code>,
+      <code>winfo_toplevel</code>,
+      <code>winfo_viewable</code>,
+      <code>winfo_visual</code>,
+      <code>winfo_visualid</code>,
+      <code>winfo_visualsavailable</code>,
+      <code>winfo_vrootheight</code>,
+      <code>winfo_vrootwidth</code>,
+      <code>winfo_vrootx</code>,
+      <code>winfo_vrooty</code>,
+      <code>winfo_width</code>,
+      <code>winfo_x</code>,
+      <code>winfo_y</code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>Tkinter.Pack</code></b>:
+      <code>forget</code>,
+      <code>info</code>,
+      <code>pack</code>,
+      <code>pack_configure</code>,
+      <code>pack_forget</code>,
+      <code>pack_info</code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>Tkinter.Place</code></b>:
+      <code>place</code>,
+      <code>place_configure</code>,
+      <code>place_forget</code>,
+      <code>place_info</code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>Tkinter.Grid</code></b>:
+      <code>grid</code>,
+      <code>grid_configure</code>,
+      <code>grid_forget</code>,
+      <code>grid_info</code>,
+      <code>grid_remove</code>,
+      <code>location</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Class Variables</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="title"></a><span class="summary-name">title</span> = <code title=""Color Calibration"">"Color Calibration"</code>
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>Tkinter.Misc</code></b>:
+      <code>_noarg_</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Method Details</span></td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">master</span>=<span class="sig-default">None</span>,
+        <span class="sig-arg">suppress_go_buttons</span>=<span class="sig-default">0</span>,
+        <span class="sig-arg">**kw</span>)</span>
+    <br /><em class="fname">(Constructor)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.PyroApps.ColorCalGUI-pysrc.html#ColorCalControlFrame.__init__">source code</a></span> 
+    </td>
+  </table>
+  
+  
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#__init__">EPhysGUIUtils.StimulusControlFrame.__init__</a>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="get_shortname"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">get_shortname</span>(<span class="sig-arg">self</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.PyroApps.ColorCalGUI-pysrc.html#ColorCalControlFrame.get_shortname">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Used as basename for saving parameter files and other ID purposes
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#get_shortname">EPhysGUIUtils.StimulusControlFrame.get_shortname</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="update_tk_vars"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">update_tk_vars</span>(<span class="sig-arg">self</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.PyroApps.ColorCalGUI-pysrc.html#ColorCalControlFrame.update_tk_vars">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Update Tkinter variables with (new) values from meta_params
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#update_tk_vars">EPhysGUIUtils.StimulusControlFrame.update_tk_vars</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="send_values"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">send_values</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">dummy_arg</span>=<span class="sig-default">None</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.PyroApps.ColorCalGUI-pysrc.html#ColorCalControlFrame.send_values">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Update meta_params variables with values from Tkinter fields
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#send_values">EPhysGUIUtils.StimulusControlFrame.send_values</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="get_duration_sec"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">get_duration_sec</span>(<span class="sig-arg">self</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.PyroApps.ColorCalGUI-pysrc.html#ColorCalControlFrame.get_duration_sec">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Calculate total duration in go loop
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#get_duration_sec">EPhysGUIUtils.StimulusControlFrame.get_duration_sec</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.PyroApps.ColorCalGUI.ColorCalMetaParameters-class.html b/doc/reference/html/VisionEgg.PyroApps.ColorCalGUI.ColorCalMetaParameters-class.html
new file mode 100644
index 0000000..66cd8d8
--- /dev/null
+++ b/doc/reference/html/VisionEgg.PyroApps.ColorCalGUI.ColorCalMetaParameters-class.html
@@ -0,0 +1,139 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.PyroApps.ColorCalGUI.ColorCalMetaParameters</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.PyroApps-module.html">Package PyroApps</a> ::
+        <a href="VisionEgg.PyroApps.ColorCalGUI-module.html">Module ColorCalGUI</a> ::
+        Class ColorCalMetaParameters
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.PyroApps.ColorCalGUI.ColorCalMetaParameters-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class ColorCalMetaParameters</h1><span class="codelink"><a href="VisionEgg.PyroApps.ColorCalGUI-pysrc.html#ColorCalMetaParameters">source code</a></span><br /><br />
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__init__"></a><span class="summary-sig-name">__init__</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.ColorCalGUI-pysrc.html#ColorCalMetaParameters.__init__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.PyroApps.ColorCalServer-module.html b/doc/reference/html/VisionEgg.PyroApps.ColorCalServer-module.html
new file mode 100644
index 0000000..7b6e0e5
--- /dev/null
+++ b/doc/reference/html/VisionEgg.PyroApps.ColorCalServer-module.html
@@ -0,0 +1,221 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.PyroApps.ColorCalServer</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.PyroApps-module.html">Package PyroApps</a> ::
+        Module ColorCalServer
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.PyroApps.ColorCalServer-module.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== MODULE DESCRIPTION ==================== -->
+<h1 class="epydoc">Module ColorCalServer</h1><span class="codelink"><a href="VisionEgg.PyroApps.ColorCalServer-pysrc.html">source code</a></span><br /><br />
+<pre class="literalblock">
+Handle luminance and color calibration stimulus (server-side)
+
+</pre><br /><br />
+
+<hr />
+<div class="fields">      <p><strong>Version:</strong>
+        1.1.dev
+      </p>
+      <p><strong>Author:</strong>
+        Andrew Straw <astraw at users.sourceforge.net>
+      </p>
+</div><!-- ==================== CLASSES ==================== -->
+<a name="section-Classes"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Classes</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController-class.html" class="summary-name">ColorCalMetaController</a>
+    </td>
+  </tr>
+</table>
+<!-- ==================== FUNCTIONS ==================== -->
+<a name="section-Functions"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Functions</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="get_meta_controller_class"></a><span class="summary-sig-name">get_meta_controller_class</span>()</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.ColorCalServer-pysrc.html#get_meta_controller_class">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="make_stimuli"></a><span class="summary-sig-name">make_stimuli</span>()</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.ColorCalServer-pysrc.html#make_stimuli">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="get_meta_controller_stimkey"></a><span class="summary-sig-name">get_meta_controller_stimkey</span>()</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.ColorCalServer-pysrc.html#get_meta_controller_stimkey">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+</table>
+<!-- ==================== VARIABLES ==================== -->
+<a name="section-Variables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Variables</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="__cvs__"></a><span class="summary-name">__cvs__</span> = <code title="string.split('$Revision$') [1]">string.split('$Revision$') [1]</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="__date__"></a><span class="summary-name">__date__</span> = <code title="string.join(string.split('$Date$') [1: 3], ' ')">string.join(string.split('$Date$') [1: 3], ' ')</code>
+    </td>
+  </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.PyroApps.ColorCalServer-pysrc.html b/doc/reference/html/VisionEgg.PyroApps.ColorCalServer-pysrc.html
new file mode 100644
index 0000000..e0d2ad3
--- /dev/null
+++ b/doc/reference/html/VisionEgg.PyroApps.ColorCalServer-pysrc.html
@@ -0,0 +1,443 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.PyroApps.ColorCalServer</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.PyroApps-module.html">Package PyroApps</a> ::
+        Module ColorCalServer
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.PyroApps.ColorCalServer-pysrc.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<h1 class="epydoc">Source Code for <a href="VisionEgg.PyroApps.ColorCalServer-module.html">Module VisionEgg.PyroApps.ColorCalServer</a></h1>
+<pre class="py-src">
+<a name="L1"></a><tt class="py-lineno"> 1</tt>  <tt class="py-line"><tt class="py-comment">#!/usr/bin/env python</tt> </tt>
+<a name="L2"></a><tt class="py-lineno"> 2</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L3"></a><tt class="py-lineno"> 3</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># The Vision Egg: ColorCalServer</tt> </tt>
+<a name="L4"></a><tt class="py-lineno"> 4</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L5"></a><tt class="py-lineno"> 5</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Copyright (C) 2001-2003 Andrew Straw.</tt> </tt>
+<a name="L6"></a><tt class="py-lineno"> 6</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Author: Andrew Straw <astraw at users.sourceforge.net></tt> </tt>
+<a name="L7"></a><tt class="py-lineno"> 7</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># URL: <http://www.visionegg.org/></tt> </tt>
+<a name="L8"></a><tt class="py-lineno"> 8</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L9"></a><tt class="py-lineno"> 9</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Distributed under the terms of the GNU Lesser General Public License</tt> </tt>
+<a name="L10"></a><tt class="py-lineno">10</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># (LGPL). See LICENSE.TXT that came with this file.</tt> </tt>
+<a name="L11"></a><tt class="py-lineno">11</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L12"></a><tt class="py-lineno">12</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># $Id$</tt> </tt>
+<a name="L13"></a><tt class="py-lineno">13</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L14"></a><tt class="py-lineno">14</tt>  <tt class="py-line"><tt class="py-docstring">"""Handle luminance and color calibration stimulus (server-side)"""</tt> </tt>
+<a name="L15"></a><tt class="py-lineno">15</tt>  <tt class="py-line"> </tt>
+<a name="L16"></a><tt class="py-lineno">16</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-0" class="py-name" targets="Package VisionEgg=VisionEgg-module.html"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-0', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">,</tt> <tt class="py-name">string</tt> </tt>
+<a name="L17"></a><tt class="py-lineno">17</tt>  <tt class="py-line"><tt id="link-1" class="py-name" targets="Variable VisionEgg.DaqKeyboard.__version__=VisionEgg.DaqKeyboard-module.html#__version__,Variable VisionEgg.DaqLPT.__version__=VisionEgg.DaqLPT-module.html#__version__,Variable VisionEgg.GL.__version__=VisionEgg.GL-module.html#__version__,Variable VisionEgg.PyroApps.EPhysGUI.__version__=VisionEgg.PyroApps.EPhysGUI-module.html#__version__,Variable VisionEgg.PyroApps.EPhysGUIUtils. [...]
+VisionEgg.DaqLPT.__version__
+VisionEgg.GL.__version__
+VisionEgg.PyroApps.EPhysGUI.__version__
+VisionEgg.PyroApps.EPhysGUIUtils.__version__
+VisionEgg.PyroApps.EPhysServer.__version__
+VisionEgg.PyroApps.GridGUI.__version__
+VisionEgg.PyroApps.GridServer.__version__
+VisionEgg.PyroApps.ScreenPositionGUI.__version__
+VisionEgg.PyroApps.ScreenPositionServer.__version__
+VisionEgg.PyroApps.SpinningDrumGUI.__version__
+VisionEgg.PyroApps.SpinningDrumServer.__version__
+VisionEgg.PyroHelpers.__version__
+VisionEgg.QuickTime.__version__
+VisionEgg.ResponseControl.__version__
+VisionEgg.SphereMap.__version__
+VisionEgg.TCPController.__version__" class="py-name" href="#" onclick="return doclink('link-1', '__version__', 'link-1');">__version__</a></tt> <tt class="py-op">=</tt> <tt id="link-2" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-2', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-3" class="py-name" targets="Variable VisionEgg.release_name=VisionEgg-module.html#release_name"><a title="VisionEgg.release_name" c [...]
+<a name="L18"></a><tt class="py-lineno">18</tt>  <tt class="py-line"><tt id="link-4" class="py-name" targets="Variable VisionEgg.PyroApps.ColorCalGUI.__cvs__=VisionEgg.PyroApps.ColorCalGUI-module.html#__cvs__,Variable VisionEgg.PyroApps.ColorCalServer.__cvs__=VisionEgg.PyroApps.ColorCalServer-module.html#__cvs__,Variable VisionEgg.PyroApps.EPhysGUI.__cvs__=VisionEgg.PyroApps.EPhysGUI-module.html#__cvs__,Variable VisionEgg.PyroApps.EPhysGUIUtils.__cvs__=VisionEgg.PyroApps.EPhysGUIUtils-mo [...]
+VisionEgg.PyroApps.ColorCalServer.__cvs__
+VisionEgg.PyroApps.EPhysGUI.__cvs__
+VisionEgg.PyroApps.EPhysGUIUtils.__cvs__
+VisionEgg.PyroApps.EPhysServer.__cvs__
+VisionEgg.PyroApps.FlatGratingGUI.__cvs__
+VisionEgg.PyroApps.FlatGratingServer.__cvs__
+VisionEgg.PyroApps.GridGUI.__cvs__
+VisionEgg.PyroApps.GridServer.__cvs__
+VisionEgg.PyroApps.MouseTargetGUI.__cvs__
+VisionEgg.PyroApps.MouseTargetServer.__cvs__
+VisionEgg.PyroApps.ScreenPositionGUI.__cvs__
+VisionEgg.PyroApps.ScreenPositionServer.__cvs__
+VisionEgg.PyroApps.SphereGratingGUI.__cvs__
+VisionEgg.PyroApps.SphereGratingServer.__cvs__
+VisionEgg.PyroApps.SpinningDrumGUI.__cvs__
+VisionEgg.PyroApps.SpinningDrumServer.__cvs__
+VisionEgg.PyroApps.TargetGUI.__cvs__
+VisionEgg.PyroApps.TargetServer.__cvs__
+VisionEgg.PyroClient.__cvs__
+VisionEgg.PyroHelpers.__cvs__
+VisionEgg.TCPController.__cvs__" class="py-name" href="#" onclick="return doclink('link-4', '__cvs__', 'link-4');">__cvs__</a></tt> <tt class="py-op">=</tt> <tt class="py-name">string</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'$Revision$'</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
+<a name="L19"></a><tt class="py-lineno">19</tt>  <tt class="py-line"><tt id="link-5" class="py-name" targets="Variable VisionEgg.PyroApps.ColorCalGUI.__date__=VisionEgg.PyroApps.ColorCalGUI-module.html#__date__,Variable VisionEgg.PyroApps.ColorCalServer.__date__=VisionEgg.PyroApps.ColorCalServer-module.html#__date__,Variable VisionEgg.PyroApps.EPhysGUI.__date__=VisionEgg.PyroApps.EPhysGUI-module.html#__date__,Variable VisionEgg.PyroApps.EPhysGUIUtils.__date__=VisionEgg.PyroApps.EPhysGUIU [...]
+VisionEgg.PyroApps.ColorCalServer.__date__
+VisionEgg.PyroApps.EPhysGUI.__date__
+VisionEgg.PyroApps.EPhysGUIUtils.__date__
+VisionEgg.PyroApps.EPhysServer.__date__
+VisionEgg.PyroApps.FlatGratingGUI.__date__
+VisionEgg.PyroApps.FlatGratingServer.__date__
+VisionEgg.PyroApps.GridGUI.__date__
+VisionEgg.PyroApps.GridServer.__date__
+VisionEgg.PyroApps.MouseTargetGUI.__date__
+VisionEgg.PyroApps.MouseTargetServer.__date__
+VisionEgg.PyroApps.ScreenPositionGUI.__date__
+VisionEgg.PyroApps.ScreenPositionServer.__date__
+VisionEgg.PyroApps.SphereGratingGUI.__date__
+VisionEgg.PyroApps.SphereGratingServer.__date__
+VisionEgg.PyroApps.SpinningDrumGUI.__date__
+VisionEgg.PyroApps.SpinningDrumServer.__date__
+VisionEgg.PyroApps.TargetGUI.__date__
+VisionEgg.PyroApps.TargetServer.__date__
+VisionEgg.PyroClient.__date__
+VisionEgg.PyroHelpers.__date__
+VisionEgg.TCPController.__date__" class="py-name" href="#" onclick="return doclink('link-5', '__date__', 'link-5');">__date__</a></tt> <tt class="py-op">=</tt> <tt class="py-name">string</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">string</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'$Date$'</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt  [...]
+<a name="L20"></a><tt class="py-lineno">20</tt>  <tt class="py-line"><tt id="link-6" class="py-name" targets="Variable VisionEgg.PyroApps.EPhysGUI.__author__=VisionEgg.PyroApps.EPhysGUI-module.html#__author__,Variable VisionEgg.PyroApps.EPhysGUIUtils.__author__=VisionEgg.PyroApps.EPhysGUIUtils-module.html#__author__,Variable VisionEgg.PyroApps.EPhysServer.__author__=VisionEgg.PyroApps.EPhysServer-module.html#__author__,Variable VisionEgg.PyroApps.GridGUI.__author__=VisionEgg.PyroApps.Gri [...]
+VisionEgg.PyroApps.EPhysGUIUtils.__author__
+VisionEgg.PyroApps.EPhysServer.__author__
+VisionEgg.PyroApps.GridGUI.__author__
+VisionEgg.PyroApps.GridServer.__author__
+VisionEgg.PyroApps.SpinningDrumGUI.__author__
+VisionEgg.PyroApps.SpinningDrumServer.__author__" class="py-name" href="#" onclick="return doclink('link-6', '__author__', 'link-6');">__author__</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'Andrew Straw <astraw at users.sourceforge.net>'</tt> </tt>
+<a name="L21"></a><tt class="py-lineno">21</tt>  <tt class="py-line"> </tt>
+<a name="L22"></a><tt class="py-lineno">22</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">sys</tt><tt class="py-op">,</tt> <tt class="py-name">os</tt><tt class="py-op">,</tt> <tt class="py-name">math</tt> </tt>
+<a name="L23"></a><tt class="py-lineno">23</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-7" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-7', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-8" class="py-name" targets="Module VisionEgg.Core=VisionEgg.Core-module.html"><a title="VisionEgg.Core" class="py-name" href="#" onclick="return doclink('link-8', 'Core', 'link-8');">Core</a></tt> </tt>
+<a name="L24"></a><tt class="py-lineno">24</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-9" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-9', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-10" class="py-name" targets="Module VisionEgg.FlowControl=VisionEgg.FlowControl-module.html"><a title="VisionEgg.FlowControl" class="py-name" href="#" onclick="return doclink('link-10', 'FlowContr [...]
+<a name="L25"></a><tt class="py-lineno">25</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-11" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-11', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-12" class="py-name" targets="Module VisionEgg.PyroHelpers=VisionEgg.PyroHelpers-module.html"><a title="VisionEgg.PyroHelpers" class="py-name" href="#" onclick="return doclink('link-12', 'PyroHel [...]
+<a name="L26"></a><tt class="py-lineno">26</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">Pyro</tt><tt class="py-op">.</tt><tt class="py-name">core</tt> </tt>
+<a name="L27"></a><tt class="py-lineno">27</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">pygame</tt><tt class="py-op">,</tt> <tt class="py-name">pygame</tt><tt class="py-op">.</tt><tt class="py-name">locals</tt> </tt>
+<a name="L28"></a><tt class="py-lineno">28</tt>  <tt class="py-line"> </tt>
+<a name="L29"></a><tt class="py-lineno">29</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-13" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-13', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-14" class="py-name" targets="Package VisionEgg.PyroApps=VisionEgg.PyroApps-module.html"><a title="VisionEgg.PyroApps" class="py-name" href="#" onclick="return doclink('link-14', 'PyroApps', 'link- [...]
+<a name="L30"></a><tt class="py-lineno">30</tt>  <tt class="py-line"> </tt>
+<a name="ColorCalMetaController"></a><div id="ColorCalMetaController-def"><a name="L31"></a><tt class="py-lineno">31</tt> <a class="py-toggle" href="#" id="ColorCalMetaController-toggle" onclick="return toggle('ColorCalMetaController');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController-class.html">ColorCalMetaController</a><tt class="py-op">(</tt> <tt class="py-base-class">Pyro</tt><tt class=" [...]
+</div><div id="ColorCalMetaController-collapsed" style="display:none;" pad="++" indent="++++"></div><div id="ColorCalMetaController-expanded"><a name="ColorCalMetaController.__init__"></a><div id="ColorCalMetaController.__init__-def"><a name="L32"></a><tt class="py-lineno">32</tt> <a class="py-toggle" href="#" id="ColorCalMetaController.__init__-toggle" onclick="return toggle('ColorCalMetaController.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-de [...]
+</div><div id="ColorCalMetaController.__init__-collapsed" style="display:none;" pad="++" indent="++++++++"></div><div id="ColorCalMetaController.__init__-expanded"><a name="L33"></a><tt class="py-lineno">33</tt>  <tt class="py-line">        <tt class="py-name">Pyro</tt><tt class="py-op">.</tt><tt class="py-name">core</tt><tt class="py-op">.</tt><tt class="py-name">ObjBase</tt><tt class="py-op">.</tt><tt id="link-17" class="py-name" targets="Method VisionEgg.ClassWithParameters.__init__() [...]
+VisionEgg.Configuration.Config.__init__
+VisionEgg.Core.FixationSpot.__init__
+VisionEgg.Core.FrameTimer.__init__
+VisionEgg.Core.ModelView.__init__
+VisionEgg.Core.OrthographicProjection.__init__
+VisionEgg.Core.OrthographicProjectionNoZClip.__init__
+VisionEgg.Core.PerspectiveProjection.__init__
+VisionEgg.Core.Projection.__init__
+VisionEgg.Core.ProjectionBaseClass.__init__
+VisionEgg.Core.Screen.__init__
+VisionEgg.Core.SimplePerspectiveProjection.__init__
+VisionEgg.Core.Stimulus.__init__
+VisionEgg.Core.Viewport.__init__
+VisionEgg.Daq.Channel.__init__
+VisionEgg.Daq.DaqMode.__init__
+VisionEgg.Daq.Device.__init__
+VisionEgg.Daq.Functionality.__init__
+VisionEgg.Daq.SignalType.__init__
+VisionEgg.DaqKeyboard.KeyboardTriggerInController.__init__
+VisionEgg.DaqLPT.LPTChannel.__init__
+VisionEgg.DaqLPT.LPTDevice.__init__
+VisionEgg.DaqLPT.LPTTriggerInController.__init__
+VisionEgg.DaqLPT.LPTTriggerOutController.__init__
+VisionEgg.Deprecated.Message.__init__
+VisionEgg.Dots.DotArea2D.__init__
+VisionEgg.FlowControl.ConstantController.__init__
+VisionEgg.FlowControl.Controller.__init__
+VisionEgg.FlowControl.EncapsulatedController.__init__
+VisionEgg.FlowControl.EvalStringController.__init__
+VisionEgg.FlowControl.ExecStringController.__init__
+VisionEgg.FlowControl.FunctionController.__init__
+VisionEgg.FlowControl.Presentation.__init__
+VisionEgg.GLTrace.Wrapper.__init__
+VisionEgg.GUI.AppWindow.__init__
+VisionEgg.GUI.GetKeypressDialog.__init__
+VisionEgg.GUI.GraphicsConfigurationWindow.__init__
+VisionEgg.GUI.InfoFrame.__init__
+VisionEgg.GUI.ProgressBar.__init__
+VisionEgg.GUI.ToplevelDialog.__init__
+VisionEgg.Gratings.SinGrating2D.__init__
+VisionEgg.Gratings.SinGrating3D.__init__
+VisionEgg.MoreStimuli.Arrow.__init__
+VisionEgg.MoreStimuli.FilledCircle.__init__
+VisionEgg.MoreStimuli.Rectangle3D.__init__
+VisionEgg.MoreStimuli.Target2D.__init__
+VisionEgg.ParameterTypes.AnyOf.__init__
+VisionEgg.ParameterTypes.Instance.__init__
+VisionEgg.ParameterTypes.Sequence.__init__
+VisionEgg.ParameterTypes.SubClass.__init__
+VisionEgg.PyroApps.AST_ext.AST_Visitor.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalMetaParameters.__init__
+VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.__init__
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.__init__
+VisionEgg.PyroApps.DropinGUI.DropinMetaParameters.__init__
+VisionEgg.PyroApps.DropinServer.DropinMetaController.__init__
+VisionEgg.PyroApps.EPhysGUI.AppWindow.__init__
+VisionEgg.PyroApps.EPhysGUI.BarButton.__init__
+VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase.__init__
+VisionEgg.PyroApps.EPhysGUI.GammaFrame.__init__
+VisionEgg.PyroApps.EPhysGUI.ImageSequenceLauncher.__init__
+VisionEgg.PyroApps.EPhysGUI.Loop.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopContainedObject.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopParamDialog.__init__
+VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.__init__
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.__init__
+VisionEgg.PyroApps.EPhysServer.EPhysServer.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingMetaParameters.__init__
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.GridGUI.GridControlFrame.__init__
+VisionEgg.PyroApps.GridGUI.GridMetaParameters.__init__
+VisionEgg.PyroApps.GridServer.GridMetaController.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetMetaParameters.__init__
+VisionEgg.PyroApps.MouseTargetServer.MousePositionController.__init__
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetOrientationController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetPositionController.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.CallbackEntry.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionParameters.__init__
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingMetaParameters.__init__
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumMetaParameters.__init__
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.__init__
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.__init__
+VisionEgg.PyroApps.TargetGUI.TargetMetaParameters.__init__
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.__init__
+VisionEgg.PyroClient.PyroClient.__init__
+VisionEgg.PyroHelpers.PyroConstantController.__init__
+VisionEgg.PyroHelpers.PyroEncapsulatedController.__init__
+VisionEgg.PyroHelpers.PyroEvalStringController.__init__
+VisionEgg.PyroHelpers.PyroExecStringController.__init__
+VisionEgg.PyroHelpers.PyroListenController.__init__
+VisionEgg.PyroHelpers.PyroLocalDictController.__init__
+VisionEgg.PyroHelpers.PyroServer.__init__
+VisionEgg.QuickTime.MovieTexture.__init__
+VisionEgg.ResponseControl.KeyboardResponseController.__init__
+VisionEgg.ResponseControl.ResponseController.__init__
+VisionEgg.SphereMap.AzElGrid.__init__
+VisionEgg.SphereMap.SphereGrating.__init__
+VisionEgg.SphereMap.SphereMap.__init__
+VisionEgg.SphereMap.SphereWindow.__init__
+VisionEgg.TCPController.SocketListenController.__init__
+VisionEgg.TCPController.TCPController.__init__
+VisionEgg.TCPController.TCPServer.__init__
+VisionEgg.Text.BitmapText.__init__
+VisionEgg.Text.GlutTextBase.__init__
+VisionEgg.Text.StrokeText.__init__
+VisionEgg.Text.Text.__init__
+VisionEgg.Textures.FixationCross.__init__
+VisionEgg.Textures.Mask2D.__init__
+VisionEgg.Textures.SpinningDrum.__init__
+VisionEgg.Textures.Texture.__init__
+VisionEgg.Textures.TextureFromFile.__init__
+VisionEgg.Textures.TextureObject.__init__
+VisionEgg.Textures.TextureStimulusBaseClass.__init__
+VisionEgg.ThreeDeeMath.TransformMatrix.__init__
+VisionEgg.WrappedText.WrappedText.__init__
+VisionEgg.qtmovie.Movie.__init__
+VisionEgg.qtmovie.Rect.__init__" class="py-name" href="#" onclick="return doclink('link-17', '__init__', 'link-17');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
+<a name="L34"></a><tt class="py-lineno">34</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt> <tt class="py-op">=</tt> <tt id="link-18" class="py-name"><a title="VisionEgg.PyroApps.ColorCalGUI.ColorCalMetaParameters" class="py-name" href="#" onclick="return doclink('link-18', 'ColorCalMetaParameters', 'link-16');">ColorCalMetaParameters</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L35"></a><tt class="py-lineno">35</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">screen</tt><tt class="py-op">,</tt><tt id="link-19" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-19', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-20" class="py-name"><a title="VisionEgg.Core [...]
+<a name="L36"></a><tt class="py-lineno">36</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">"Expecting instance of VisionEgg.Core.Screen"</tt><tt class="py-op">)</tt> </tt>
+<a name="L37"></a><tt class="py-lineno">37</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">presentation</tt><tt class="py-op">,</tt><tt id="link-22" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-22', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-23" class="py-name"><a title="VisionEg [...]
+<a name="L38"></a><tt class="py-lineno">38</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">"Expecting instance of VisionEgg.FlowControl.Presentation"</tt><tt class="py-op">)</tt> </tt>
+<a name="L39"></a><tt class="py-lineno">39</tt>  <tt class="py-line">         </tt>
+<a name="L40"></a><tt class="py-lineno">40</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">screen</tt> <tt class="py-op">=</tt> <tt class="py-name">screen</tt> </tt>
+<a name="L41"></a><tt class="py-lineno">41</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">p</tt> <tt class="py-op">=</tt> <tt class="py-name">presentation</tt> </tt>
+<a name="L42"></a><tt class="py-lineno">42</tt>  <tt class="py-line"> </tt>
+<a name="L43"></a><tt class="py-lineno">43</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-25" class="py-name" targets="Method VisionEgg.GUI.InfoFrame.update()=VisionEgg.GUI.InfoFrame-class.html#update,Method VisionEgg.GUI.ProgressBar.update()=VisionEgg.GUI.ProgressBar-class.html#update,Method VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.update()=VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController-class.html#update,Meth [...]
+VisionEgg.GUI.ProgressBar.update
+VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.update
+VisionEgg.PyroApps.DropinServer.DropinMetaController.update
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.update
+VisionEgg.PyroApps.GridServer.GridMetaController.update
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.update
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.update
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.update
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.update
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.update
+VisionEgg.QuickTime.MovieTexture.update
+VisionEgg.Textures.Texture.update" class="py-name" href="#" onclick="return doclink('link-25', 'update', 'link-25');">update</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-comment"># set stimulus parameters to initial defaults</tt> </tt>
+</div><a name="L44"></a><tt class="py-lineno">44</tt>  <tt class="py-line"> </tt>
+<a name="ColorCalMetaController.get_parameters"></a><div id="ColorCalMetaController.get_parameters-def"><a name="L45"></a><tt class="py-lineno">45</tt> <a class="py-toggle" href="#" id="ColorCalMetaController.get_parameters-toggle" onclick="return toggle('ColorCalMetaController.get_parameters');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController-class.html#get_parameters">get_parameters</a><t [...]
+</div><div id="ColorCalMetaController.get_parameters-collapsed" style="display:none;" pad="++" indent="++++++++"></div><div id="ColorCalMetaController.get_parameters-expanded"><a name="L46"></a><tt class="py-lineno">46</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt> </tt>
+</div><a name="L47"></a><tt class="py-lineno">47</tt>  <tt class="py-line"> </tt>
+<a name="ColorCalMetaController.set_parameters"></a><div id="ColorCalMetaController.set_parameters-def"><a name="L48"></a><tt class="py-lineno">48</tt> <a class="py-toggle" href="#" id="ColorCalMetaController.set_parameters-toggle" onclick="return toggle('ColorCalMetaController.set_parameters');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController-class.html#set_parameters">set_parameters</a><t [...]
+</div><div id="ColorCalMetaController.set_parameters-collapsed" style="display:none;" pad="++" indent="++++++++"></div><div id="ColorCalMetaController.set_parameters-expanded"><a name="L49"></a><tt class="py-lineno">49</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">new_parameters</tt><tt class="py-op">,</tt> <tt id="link-26" class="py-name"><a title="VisionEgg.PyroApps.ColorCalGUI.ColorCalMet [...]
+<a name="L50"></a><tt class="py-lineno">50</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt> <tt class="py-op">=</tt> <tt class="py-name">new_parameters</tt> </tt>
+<a name="L51"></a><tt class="py-lineno">51</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L52"></a><tt class="py-lineno">52</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">"Argument to set_parameters must be instance of ColorCalMetaParameters"</tt><tt class="py-op">)</tt> </tt>
+<a name="L53"></a><tt class="py-lineno">53</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-27" class="py-name"><a title="VisionEgg.GUI.InfoFrame.update
+VisionEgg.GUI.ProgressBar.update
+VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.update
+VisionEgg.PyroApps.DropinServer.DropinMetaController.update
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.update
+VisionEgg.PyroApps.GridServer.GridMetaController.update
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.update
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.update
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.update
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.update
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.update
+VisionEgg.QuickTime.MovieTexture.update
+VisionEgg.Textures.Texture.update" class="py-name" href="#" onclick="return doclink('link-27', 'update', 'link-25');">update</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L54"></a><tt class="py-lineno">54</tt>  <tt class="py-line">         </tt>
+<a name="ColorCalMetaController.update"></a><div id="ColorCalMetaController.update-def"><a name="L55"></a><tt class="py-lineno">55</tt> <a class="py-toggle" href="#" id="ColorCalMetaController.update-toggle" onclick="return toggle('ColorCalMetaController.update');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController-class.html#update">update</a><tt class="py-op">(</tt><tt class="py-param">self< [...]
+</div><div id="ColorCalMetaController.update-collapsed" style="display:none;" pad="++" indent="++++++++"></div><div id="ColorCalMetaController.update-expanded"><a name="L56"></a><tt class="py-lineno">56</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">screen</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">bgcolor</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt>< [...]
+</div><a name="L57"></a><tt class="py-lineno">57</tt>  <tt class="py-line"> </tt>
+<a name="ColorCalMetaController.go"></a><div id="ColorCalMetaController.go-def"><a name="L58"></a><tt class="py-lineno">58</tt> <a class="py-toggle" href="#" id="ColorCalMetaController.go-toggle" onclick="return toggle('ColorCalMetaController.go');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController-class.html#go">go</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)< [...]
+</div><div id="ColorCalMetaController.go-collapsed" style="display:none;" pad="++" indent="++++++++"></div><div id="ColorCalMetaController.go-expanded"><a name="L59"></a><tt class="py-lineno">59</tt>  <tt class="py-line">        <tt class="py-keyword">pass</tt> </tt>
+</div><a name="L60"></a><tt class="py-lineno">60</tt>  <tt class="py-line"> </tt>
+<a name="ColorCalMetaController.quit_server"></a><div id="ColorCalMetaController.quit_server-def"><a name="L61"></a><tt class="py-lineno">61</tt> <a class="py-toggle" href="#" id="ColorCalMetaController.quit_server-toggle" onclick="return toggle('ColorCalMetaController.quit_server');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController-class.html#quit_server">quit_server</a><tt class="py-op">(< [...]
+</div><div id="ColorCalMetaController.quit_server-collapsed" style="display:none;" pad="++" indent="++++++++"></div><div id="ColorCalMetaController.quit_server-expanded"><a name="L62"></a><tt class="py-lineno">62</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt id="link-28" class="py-name" targets="Method VisionEgg.PyroApps.EPhysGUI.AppWin [...]
+</div></div><a name="L63"></a><tt class="py-lineno">63</tt>  <tt class="py-line"> </tt>
+<a name="get_meta_controller_class"></a><div id="get_meta_controller_class-def"><a name="L64"></a><tt class="py-lineno">64</tt> <a class="py-toggle" href="#" id="get_meta_controller_class-toggle" onclick="return toggle('get_meta_controller_class');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.ColorCalServer-module.html#get_meta_controller_class">get_meta_controller_class</a><tt class="py-op">(</tt><tt class="py-op">)</tt><tt cl [...]
+</div><div id="get_meta_controller_class-collapsed" style="display:none;" pad="++" indent="++++"></div><div id="get_meta_controller_class-expanded"><a name="L65"></a><tt class="py-lineno">65</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt id="link-29" class="py-name" targets="Class VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController=VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController-class.html"><a title="VisionEgg.PyroApps.ColorCalServer.ColorCalMetaContro [...]
+</div><a name="L66"></a><tt class="py-lineno">66</tt>  <tt class="py-line"> </tt>
+<a name="make_stimuli"></a><div id="make_stimuli-def"><a name="L67"></a><tt class="py-lineno">67</tt> <a class="py-toggle" href="#" id="make_stimuli-toggle" onclick="return toggle('make_stimuli');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.ColorCalServer-module.html#make_stimuli">make_stimuli</a><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="make_stimuli-collapsed" style="display:none;" pad="++" indent="++++"></div><div id="make_stimuli-expanded"><a name="L68"></a><tt class="py-lineno">68</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+</div><a name="L69"></a><tt class="py-lineno">69</tt>  <tt class="py-line"> </tt>
+<a name="get_meta_controller_stimkey"></a><div id="get_meta_controller_stimkey-def"><a name="L70"></a><tt class="py-lineno">70</tt> <a class="py-toggle" href="#" id="get_meta_controller_stimkey-toggle" onclick="return toggle('get_meta_controller_stimkey');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.ColorCalServer-module.html#get_meta_controller_stimkey">get_meta_controller_stimkey</a><tt class="py-op">(</tt><tt class="py-op"> [...]
+</div><div id="get_meta_controller_stimkey-collapsed" style="display:none;" pad="++" indent="++++"></div><div id="get_meta_controller_stimkey-expanded"><a name="L71"></a><tt class="py-lineno">71</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-string">"color_cal_server"</tt> </tt>
+</div><a name="L72"></a><tt class="py-lineno">72</tt>  <tt class="py-line"> </tt>
+<a name="L73"></a><tt class="py-lineno">73</tt>  <tt class="py-line"><tt class="py-comment"># Don't do anything unless this script is being run</tt> </tt>
+<a name="L74"></a><tt class="py-lineno">74</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-keyword">if</tt> <tt class="py-name">__name__</tt> <tt class="py-op">==</tt> <tt class="py-string">'__main__'</tt><tt class="py-op">:</tt> </tt>
+<a name="L75"></a><tt class="py-lineno">75</tt>  <tt class="py-line">     </tt>
+<a name="L76"></a><tt class="py-lineno">76</tt>  <tt class="py-line">    <tt class="py-name">pyro_server</tt> <tt class="py-op">=</tt> <tt id="link-30" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-30', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-31" class="py-name"><a title="VisionEgg.PyroHelpers" class="py-name" href="#" onclick="return doclink('link-31', 'PyroHelpers', 'link-12');">PyroHelpers</a></tt><t [...]
+<a name="L77"></a><tt class="py-lineno">77</tt>  <tt class="py-line"> </tt>
+<a name="L78"></a><tt class="py-lineno">78</tt>  <tt class="py-line">    <tt class="py-name">screen</tt> <tt class="py-op">=</tt> <tt id="link-33" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-33', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-34" class="py-name"><a title="VisionEgg.Core" class="py-name" href="#" onclick="return doclink('link-34', 'Core', 'link-8');">Core</a></tt><tt class="py-op">.</tt><tt i [...]
+<a name="L79"></a><tt class="py-lineno">79</tt>  <tt class="py-line"> </tt>
+<a name="L80"></a><tt class="py-lineno">80</tt>  <tt class="py-line">    <tt class="py-comment"># get Vision Egg stimulus ready to go</tt> </tt>
+<a name="L81"></a><tt class="py-lineno">81</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">p</tt> <tt class="py-op">=</tt> <tt id="link-37" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-37', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-38" class="py-name"><a title="VisionEgg.FlowControl" class="py-name" href="#" onclick="return doclink('link-38', 'FlowControl', 'link-10');">Flow [...]
+<a name="L82"></a><tt class="py-lineno">82</tt>  <tt class="py-line"> </tt>
+<a name="L83"></a><tt class="py-lineno">83</tt>  <tt class="py-line">    <tt class="py-name">stimuli</tt> <tt class="py-op">=</tt> <tt id="link-40" class="py-name" targets="Function VisionEgg.PyroApps.ColorCalServer.make_stimuli()=VisionEgg.PyroApps.ColorCalServer-module.html#make_stimuli,Function VisionEgg.PyroApps.DropinServer.make_stimuli()=VisionEgg.PyroApps.DropinServer-module.html#make_stimuli,Function VisionEgg.PyroApps.FlatGratingServer.make_stimuli()=VisionEgg.PyroApps.FlatGrati [...]
+VisionEgg.PyroApps.DropinServer.make_stimuli
+VisionEgg.PyroApps.FlatGratingServer.make_stimuli
+VisionEgg.PyroApps.GridServer.make_stimuli
+VisionEgg.PyroApps.MouseTargetServer.make_stimuli
+VisionEgg.PyroApps.SphereGratingServer.make_stimuli
+VisionEgg.PyroApps.SpinningDrumServer.make_stimuli
+VisionEgg.PyroApps.TargetServer.make_stimuli" class="py-name" href="#" onclick="return doclink('link-40', 'make_stimuli', 'link-40');">make_stimuli</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L84"></a><tt class="py-lineno">84</tt>  <tt class="py-line">     </tt>
+<a name="L85"></a><tt class="py-lineno">85</tt>  <tt class="py-line">    <tt class="py-comment"># now hand over control of grating and mask to FlatGratingExperimentMetaController</tt> </tt>
+<a name="L86"></a><tt class="py-lineno">86</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">meta_controller</tt> <tt class="py-op">=</tt> <tt id="link-41" class="py-name"><a title="VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController" class="py-name" href="#" onclick="return doclink('link-41', 'ColorCalMetaController', 'link-29');">ColorCalMetaController</a></tt><tt class="py-op">(</tt><tt class="py-name">screen</tt><tt class="py-op">,</tt><tt class="py-n [...]
+<a name="L87"></a><tt class="py-lineno">87</tt>  <tt class="py-line">    <tt class="py-name">pyro_server</tt><tt class="py-op">.</tt><tt id="link-42" class="py-name" targets="Method VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.connect()=VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#connect,Method VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.connect()=VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html#connect,Method Vi [...]
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.connect
+VisionEgg.PyroHelpers.PyroServer.connect" class="py-name" href="#" onclick="return doclink('link-42', 'connect', 'link-42');">connect</a></tt><tt class="py-op">(</tt><tt class="py-name">meta_controller</tt><tt class="py-op">,</tt><tt id="link-43" class="py-name" targets="Function VisionEgg.PyroApps.ColorCalServer.get_meta_controller_stimkey()=VisionEgg.PyroApps.ColorCalServer-module.html#get_meta_controller_stimkey,Function VisionEgg.PyroApps.DropinServer.get_meta_controller_stimkey()=Vi [...]
+VisionEgg.PyroApps.DropinServer.get_meta_controller_stimkey
+VisionEgg.PyroApps.FlatGratingServer.get_meta_controller_stimkey
+VisionEgg.PyroApps.GridServer.get_meta_controller_stimkey
+VisionEgg.PyroApps.MouseTargetServer.get_meta_controller_stimkey
+VisionEgg.PyroApps.SphereGratingServer.get_meta_controller_stimkey
+VisionEgg.PyroApps.SpinningDrumServer.get_meta_controller_stimkey
+VisionEgg.PyroApps.TargetServer.get_meta_controller_stimkey" class="py-name" href="#" onclick="return doclink('link-43', 'get_meta_controller_stimkey', 'link-43');">get_meta_controller_stimkey</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L88"></a><tt class="py-lineno">88</tt>  <tt class="py-line"> </tt>
+<a name="L89"></a><tt class="py-lineno">89</tt>  <tt class="py-line">    <tt class="py-comment"># get listener controller and register it</tt> </tt>
+<a name="L90"></a><tt class="py-lineno">90</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">p</tt><tt class="py-op">.</tt><tt id="link-44" class="py-name" targets="Method VisionEgg.FlowControl.Presentation.add_controller()=VisionEgg.FlowControl.Presentation-class.html#add_controller,Method VisionEgg.PyroHelpers.PyroLocalDictController.add_controller()=VisionEgg.PyroHelpers.PyroLocalDictController-class.html#add_controller"><a title="VisionEgg.FlowControl.Pres [...]
+VisionEgg.PyroHelpers.PyroLocalDictController.add_controller" class="py-name" href="#" onclick="return doclink('link-44', 'add_controller', 'link-44');">add_controller</a></tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-name">pyro_server</tt><tt class="py-op">.</tt><tt id="link-45" class="py-name" targets="Method VisionEgg.PyroHelpers.PyroServer.create_listener_controller()=VisionEgg.Pyro [...]
+<a name="L91"></a><tt class="py-lineno">91</tt>  <tt class="py-line"> </tt>
+<a name="L92"></a><tt class="py-lineno">92</tt>  <tt class="py-line">    <tt class="py-comment"># enter endless loop</tt> </tt>
+<a name="L93"></a><tt class="py-lineno">93</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">p</tt><tt class="py-op">.</tt><tt id="link-46" class="py-name" targets="Method VisionEgg.FlowControl.Presentation.run_forever()=VisionEgg.FlowControl.Presentation-class.html#run_forever"><a title="VisionEgg.FlowControl.Presentation.run_forever" class="py-name" href="#" onclick="return doclink('link-46', 'run_forever', 'link-46');">run_forever</a></tt><tt class="py-op"> [...]
+<a name="L94"></a><tt class="py-lineno">94</tt>  <tt class="py-line"> </tt><script type="text/javascript">
+<!--
+expandto(location.href);
+// -->
+</script>
+</pre>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:50 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController-class.html b/doc/reference/html/VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController-class.html
new file mode 100644
index 0000000..5e7ee01
--- /dev/null
+++ b/doc/reference/html/VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController-class.html
@@ -0,0 +1,284 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.PyroApps-module.html">Package PyroApps</a> ::
+        <a href="VisionEgg.PyroApps.ColorCalServer-module.html">Module ColorCalServer</a> ::
+        Class ColorCalMetaController
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class ColorCalMetaController</h1><span class="codelink"><a href="VisionEgg.PyroApps.ColorCalServer-pysrc.html#ColorCalMetaController">source code</a></span><br /><br />
+<pre class="base-tree">
+Pyro.core.ObjBase --+
+                    |
+                   <strong class="uidshort">ColorCalMetaController</strong>
+</pre>
+
+<hr />
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">screen</span>,
+        <span class="summary-sig-arg">presentation</span>,
+        <span class="summary-sig-arg">stimuli</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.ColorCalServer-pysrc.html#ColorCalMetaController.__init__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="get_parameters"></a><span class="summary-sig-name">get_parameters</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.ColorCalServer-pysrc.html#ColorCalMetaController.get_parameters">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="set_parameters"></a><span class="summary-sig-name">set_parameters</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">new_parameters</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.ColorCalServer-pysrc.html#ColorCalMetaController.set_parameters">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="update"></a><span class="summary-sig-name">update</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.ColorCalServer-pysrc.html#ColorCalMetaController.update">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="go"></a><span class="summary-sig-name">go</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.ColorCalServer-pysrc.html#ColorCalMetaController.go">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="quit_server"></a><span class="summary-sig-name">quit_server</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.ColorCalServer-pysrc.html#ColorCalMetaController.quit_server">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>Pyro.core.ObjBase</code></b>:
+      <code>GUID</code>,
+      <code>Pyro_dyncall</code>,
+      <code>delegateTo</code>,
+      <code>getAttrProxy</code>,
+      <code>getDaemon</code>,
+      <code>getLocalStorage</code>,
+      <code>getProxy</code>,
+      <code>remote_retrieve_code</code>,
+      <code>remote_supply_code</code>,
+      <code>setCodeValidator</code>,
+      <code>setGUID</code>,
+      <code>setPyroDaemon</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Method Details</span></td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">screen</span>,
+        <span class="sig-arg">presentation</span>,
+        <span class="sig-arg">stimuli</span>)</span>
+    <br /><em class="fname">(Constructor)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.PyroApps.ColorCalServer-pysrc.html#ColorCalMetaController.__init__">source code</a></span> 
+    </td>
+  </table>
+  
+  
+  <dl class="fields">
+    <dt>Overrides:
+      Pyro.core.ObjBase.__init__
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.PyroApps.DropinGUI-module.html b/doc/reference/html/VisionEgg.PyroApps.DropinGUI-module.html
new file mode 100644
index 0000000..fa6d9cc
--- /dev/null
+++ b/doc/reference/html/VisionEgg.PyroApps.DropinGUI-module.html
@@ -0,0 +1,161 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.PyroApps.DropinGUI</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.PyroApps-module.html">Package PyroApps</a> ::
+        Module DropinGUI
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.PyroApps.DropinGUI-module.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== MODULE DESCRIPTION ==================== -->
+<h1 class="epydoc">Module DropinGUI</h1><span class="codelink"><a href="VisionEgg.PyroApps.DropinGUI-pysrc.html">source code</a></span><br /><br />
+<!-- ==================== CLASSES ==================== -->
+<a name="section-Classes"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Classes</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.PyroApps.DropinGUI.DropinMetaParameters-class.html" class="summary-name">DropinMetaParameters</a>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.PyroApps.DropinGUI.DropinControlFrame-class.html" class="summary-name">DropinControlFrame</a>
+    </td>
+  </tr>
+</table>
+<!-- ==================== FUNCTIONS ==================== -->
+<a name="section-Functions"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Functions</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="get_control_list"></a><span class="summary-sig-name">get_control_list</span>()</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.DropinGUI-pysrc.html#get_control_list">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.PyroApps.DropinGUI-pysrc.html b/doc/reference/html/VisionEgg.PyroApps.DropinGUI-pysrc.html
new file mode 100644
index 0000000..b0f62a6
--- /dev/null
+++ b/doc/reference/html/VisionEgg.PyroApps.DropinGUI-pysrc.html
@@ -0,0 +1,414 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.PyroApps.DropinGUI</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.PyroApps-module.html">Package PyroApps</a> ::
+        Module DropinGUI
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.PyroApps.DropinGUI-pysrc.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<h1 class="epydoc">Source Code for <a href="VisionEgg.PyroApps.DropinGUI-module.html">Module VisionEgg.PyroApps.DropinGUI</a></h1>
+<pre class="py-src">
+<a name="L1"></a><tt class="py-lineno">  1</tt>  <tt class="py-line"><tt class="py-comment"># The Vision Egg: DropinGUI</tt> </tt>
+<a name="L2"></a><tt class="py-lineno">  2</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L3"></a><tt class="py-lineno">  3</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Copyright (C) 2004 Imran S. Ali, Lachlan Dowd, Andrew Straw</tt> </tt>
+<a name="L4"></a><tt class="py-lineno">  4</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Copyright (C) 2004 California Institute of Technology</tt> </tt>
+<a name="L5"></a><tt class="py-lineno">  5</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L6"></a><tt class="py-lineno">  6</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Authors: Imran S. Ali, Lachlan Dowd, Andrew Straw</tt> </tt>
+<a name="L7"></a><tt class="py-lineno">  7</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># URL: <http://www.visionegg.org/></tt> </tt>
+<a name="L8"></a><tt class="py-lineno">  8</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L9"></a><tt class="py-lineno">  9</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Distributed under the terms of the GNU Lesser General Public License</tt> </tt>
+<a name="L10"></a><tt class="py-lineno"> 10</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># (LGPL). See LICENSE.TXT that came with this file.</tt> </tt>
+<a name="L11"></a><tt class="py-lineno"> 11</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L12"></a><tt class="py-lineno"> 12</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># $Id$</tt> </tt>
+<a name="L13"></a><tt class="py-lineno"> 13</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L14"></a><tt class="py-lineno"> 14</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-0" class="py-name" targets="Package VisionEgg=VisionEgg-module.html"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-0', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">,</tt> <tt class="py-name">string</tt> </tt>
+<a name="L15"></a><tt class="py-lineno"> 15</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">sys</tt><tt class="py-op">,</tt> <tt class="py-name">os</tt> </tt>
+<a name="L16"></a><tt class="py-lineno"> 16</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-1" class="py-name" targets="Variable VisionEgg.GUI.Tkinter=VisionEgg.GUI-module.html#Tkinter"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-1', 'Tkinter', 'link-1');">Tkinter</a></tt> </tt>
+<a name="L17"></a><tt class="py-lineno"> 17</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-2" class="py-name" targets="Variable VisionEgg.GUI.tkMessageBox=VisionEgg.GUI-module.html#tkMessageBox"><a title="VisionEgg.GUI.tkMessageBox" class="py-name" href="#" onclick="return doclink('link-2', 'tkMessageBox', 'link-2');">tkMessageBox</a></tt> </tt>
+<a name="L18"></a><tt class="py-lineno"> 18</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-3" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-3', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-4" class="py-name" targets="Package VisionEgg.PyroApps=VisionEgg.PyroApps-module.html"><a title="VisionEgg.PyroApps" class="py-name" href="#" onclick="return doclink('link-4', 'PyroApps', 'link-4 [...]
+<a name="L19"></a><tt class="py-lineno"> 19</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-7" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-7', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-8" class="py-name"><a title="VisionEgg.PyroApps" class="py-name" href="#" onclick="return doclink('link-8', 'PyroApps', 'link-4');">PyroApps</a></tt><tt class="py-op">.</tt><tt id="link-9" class= [...]
+<a name="L20"></a><tt class="py-lineno"> 20</tt>  <tt class="py-line"> </tt>
+<a name="get_control_list"></a><div id="get_control_list-def"><a name="L21"></a><tt class="py-lineno"> 21</tt> <a class="py-toggle" href="#" id="get_control_list-toggle" onclick="return toggle('get_control_list');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.DropinGUI-module.html#get_control_list">get_control_list</a><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="get_control_list-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="get_control_list-expanded"><a name="L22"></a><tt class="py-lineno"> 22</tt>  <tt class="py-line">   <tt class="py-keyword">return</tt> <tt class="py-op">[</tt><tt class="py-op">(</tt><tt class="py-string">"dropin_server"</tt><tt class="py-op">,</tt><tt id="link-10" class="py-name" targets="Class VisionEgg.PyroApps.DropinGUI.DropinControlFrame=VisionEgg.PyroApps.DropinGUI.DropinControlF [...]
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.title
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.title
+VisionEgg.PyroApps.GridGUI.GridControlFrame.title
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.title
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.title
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.title
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.title" class="py-name" href="#" onclick="return doclink('link-12', 'title', 'link-12');">title</a></tt><tt class="py-op">)</tt><tt class="py-op">]</tt> </tt>
+</div><a name="L23"></a><tt class="py-lineno"> 23</tt>  <tt class="py-line"> </tt>
+<a name="DropinMetaParameters"></a><div id="DropinMetaParameters-def"><a name="L24"></a><tt class="py-lineno"> 24</tt> <a class="py-toggle" href="#" id="DropinMetaParameters-toggle" onclick="return toggle('DropinMetaParameters');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.PyroApps.DropinGUI.DropinMetaParameters-class.html">DropinMetaParameters</a><tt class="py-op">:</tt> </tt>
+</div><div id="DropinMetaParameters-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="DropinMetaParameters-expanded"><a name="DropinMetaParameters.__init__"></a><div id="DropinMetaParameters.__init__-def"><a name="L25"></a><tt class="py-lineno"> 25</tt> <a class="py-toggle" href="#" id="DropinMetaParameters.__init__-toggle" onclick="return toggle('DropinMetaParameters.__init__');">-</a><tt class="py-line">   <tt class="py-keyword">def</tt> <a class="py-def-name" hre [...]
+</div><div id="DropinMetaParameters.__init__-collapsed" style="display:none;" pad="+++" indent="+++++++"></div><div id="DropinMetaParameters.__init__-expanded"><a name="L26"></a><tt class="py-lineno"> 26</tt>  <tt class="py-line">      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">vars_list</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+</div></div><a name="L27"></a><tt class="py-lineno"> 27</tt>  <tt class="py-line"> </tt>
+<a name="DropinControlFrame"></a><div id="DropinControlFrame-def"><a name="L28"></a><tt class="py-lineno"> 28</tt> <a class="py-toggle" href="#" id="DropinControlFrame-toggle" onclick="return toggle('DropinControlFrame');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.PyroApps.DropinGUI.DropinControlFrame-class.html">DropinControlFrame</a><tt class="py-op">(</tt><tt class="py-base-class">client_utils</tt><tt class="py-op">.</tt><tt clas [...]
+</div><div id="DropinControlFrame-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="DropinControlFrame-expanded"><a name="L29"></a><tt class="py-lineno"> 29</tt>  <tt class="py-line">   <tt id="link-13" class="py-name"><a title="VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.title
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.title
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.title
+VisionEgg.PyroApps.GridGUI.GridControlFrame.title
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.title
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.title
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.title
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.title" class="py-name" href="#" onclick="return doclink('link-13', 'title', 'link-12');">title</a></tt> <tt class="py-op">=</tt> <tt class="py-string">"Vision Egg Script"</tt> </tt>
+<a name="L30"></a><tt class="py-lineno"> 30</tt>  <tt class="py-line"> </tt>
+<a name="DropinControlFrame.__init__"></a><div id="DropinControlFrame.__init__-def"><a name="L31"></a><tt class="py-lineno"> 31</tt> <a class="py-toggle" href="#" id="DropinControlFrame.__init__-toggle" onclick="return toggle('DropinControlFrame.__init__');">-</a><tt class="py-line">   <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.DropinGUI.DropinControlFrame-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class [...]
+</div><div id="DropinControlFrame.__init__-collapsed" style="display:none;" pad="+++" indent="+++++++"></div><div id="DropinControlFrame.__init__-expanded"><a name="L32"></a><tt class="py-lineno"> 32</tt>  <tt class="py-line">      <tt class="py-name">client_utils</tt><tt class="py-op">.</tt><tt id="link-14" class="py-name" targets="Class VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame=VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html"><a title="VisionEgg.PyroApps.EP [...]
+VisionEgg.Configuration.Config.__init__
+VisionEgg.Core.FixationSpot.__init__
+VisionEgg.Core.FrameTimer.__init__
+VisionEgg.Core.ModelView.__init__
+VisionEgg.Core.OrthographicProjection.__init__
+VisionEgg.Core.OrthographicProjectionNoZClip.__init__
+VisionEgg.Core.PerspectiveProjection.__init__
+VisionEgg.Core.Projection.__init__
+VisionEgg.Core.ProjectionBaseClass.__init__
+VisionEgg.Core.Screen.__init__
+VisionEgg.Core.SimplePerspectiveProjection.__init__
+VisionEgg.Core.Stimulus.__init__
+VisionEgg.Core.Viewport.__init__
+VisionEgg.Daq.Channel.__init__
+VisionEgg.Daq.DaqMode.__init__
+VisionEgg.Daq.Device.__init__
+VisionEgg.Daq.Functionality.__init__
+VisionEgg.Daq.SignalType.__init__
+VisionEgg.DaqKeyboard.KeyboardTriggerInController.__init__
+VisionEgg.DaqLPT.LPTChannel.__init__
+VisionEgg.DaqLPT.LPTDevice.__init__
+VisionEgg.DaqLPT.LPTTriggerInController.__init__
+VisionEgg.DaqLPT.LPTTriggerOutController.__init__
+VisionEgg.Deprecated.Message.__init__
+VisionEgg.Dots.DotArea2D.__init__
+VisionEgg.FlowControl.ConstantController.__init__
+VisionEgg.FlowControl.Controller.__init__
+VisionEgg.FlowControl.EncapsulatedController.__init__
+VisionEgg.FlowControl.EvalStringController.__init__
+VisionEgg.FlowControl.ExecStringController.__init__
+VisionEgg.FlowControl.FunctionController.__init__
+VisionEgg.FlowControl.Presentation.__init__
+VisionEgg.GLTrace.Wrapper.__init__
+VisionEgg.GUI.AppWindow.__init__
+VisionEgg.GUI.GetKeypressDialog.__init__
+VisionEgg.GUI.GraphicsConfigurationWindow.__init__
+VisionEgg.GUI.InfoFrame.__init__
+VisionEgg.GUI.ProgressBar.__init__
+VisionEgg.GUI.ToplevelDialog.__init__
+VisionEgg.Gratings.SinGrating2D.__init__
+VisionEgg.Gratings.SinGrating3D.__init__
+VisionEgg.MoreStimuli.Arrow.__init__
+VisionEgg.MoreStimuli.FilledCircle.__init__
+VisionEgg.MoreStimuli.Rectangle3D.__init__
+VisionEgg.MoreStimuli.Target2D.__init__
+VisionEgg.ParameterTypes.AnyOf.__init__
+VisionEgg.ParameterTypes.Instance.__init__
+VisionEgg.ParameterTypes.Sequence.__init__
+VisionEgg.ParameterTypes.SubClass.__init__
+VisionEgg.PyroApps.AST_ext.AST_Visitor.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalMetaParameters.__init__
+VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.__init__
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.__init__
+VisionEgg.PyroApps.DropinGUI.DropinMetaParameters.__init__
+VisionEgg.PyroApps.DropinServer.DropinMetaController.__init__
+VisionEgg.PyroApps.EPhysGUI.AppWindow.__init__
+VisionEgg.PyroApps.EPhysGUI.BarButton.__init__
+VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase.__init__
+VisionEgg.PyroApps.EPhysGUI.GammaFrame.__init__
+VisionEgg.PyroApps.EPhysGUI.ImageSequenceLauncher.__init__
+VisionEgg.PyroApps.EPhysGUI.Loop.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopContainedObject.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopParamDialog.__init__
+VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.__init__
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.__init__
+VisionEgg.PyroApps.EPhysServer.EPhysServer.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingMetaParameters.__init__
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.GridGUI.GridControlFrame.__init__
+VisionEgg.PyroApps.GridGUI.GridMetaParameters.__init__
+VisionEgg.PyroApps.GridServer.GridMetaController.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetMetaParameters.__init__
+VisionEgg.PyroApps.MouseTargetServer.MousePositionController.__init__
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetOrientationController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetPositionController.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.CallbackEntry.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionParameters.__init__
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingMetaParameters.__init__
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumMetaParameters.__init__
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.__init__
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.__init__
+VisionEgg.PyroApps.TargetGUI.TargetMetaParameters.__init__
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.__init__
+VisionEgg.PyroClient.PyroClient.__init__
+VisionEgg.PyroHelpers.PyroConstantController.__init__
+VisionEgg.PyroHelpers.PyroEncapsulatedController.__init__
+VisionEgg.PyroHelpers.PyroEvalStringController.__init__
+VisionEgg.PyroHelpers.PyroExecStringController.__init__
+VisionEgg.PyroHelpers.PyroListenController.__init__
+VisionEgg.PyroHelpers.PyroLocalDictController.__init__
+VisionEgg.PyroHelpers.PyroServer.__init__
+VisionEgg.QuickTime.MovieTexture.__init__
+VisionEgg.ResponseControl.KeyboardResponseController.__init__
+VisionEgg.ResponseControl.ResponseController.__init__
+VisionEgg.SphereMap.AzElGrid.__init__
+VisionEgg.SphereMap.SphereGrating.__init__
+VisionEgg.SphereMap.SphereMap.__init__
+VisionEgg.SphereMap.SphereWindow.__init__
+VisionEgg.TCPController.SocketListenController.__init__
+VisionEgg.TCPController.TCPController.__init__
+VisionEgg.TCPController.TCPServer.__init__
+VisionEgg.Text.BitmapText.__init__
+VisionEgg.Text.GlutTextBase.__init__
+VisionEgg.Text.StrokeText.__init__
+VisionEgg.Text.Text.__init__
+VisionEgg.Textures.FixationCross.__init__
+VisionEgg.Textures.Mask2D.__init__
+VisionEgg.Textures.SpinningDrum.__init__
+VisionEgg.Textures.Texture.__init__
+VisionEgg.Textures.TextureFromFile.__init__
+VisionEgg.Textures.TextureObject.__init__
+VisionEgg.Textures.TextureStimulusBaseClass.__init__
+VisionEgg.ThreeDeeMath.TransformMatrix.__init__
+VisionEgg.WrappedText.WrappedText.__init__
+VisionEgg.qtmovie.Movie.__init__
+VisionEgg.qtmovie.Rect.__init__" class="py-name" href="#" onclick="return doclink('link-15', '__init__', 'link-15');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> </tt>
+<a name="L33"></a><tt class="py-lineno"> 33</tt>  <tt class="py-line">                                                 <tt class="py-name">master</tt><tt class="py-op">,</tt> </tt>
+<a name="L34"></a><tt class="py-lineno"> 34</tt>  <tt class="py-line">                                                 <tt class="py-name">suppress_go_buttons</tt><tt class="py-op">,</tt> </tt>
+<a name="L35"></a><tt class="py-lineno"> 35</tt>  <tt class="py-line">                                                 <tt id="link-16" class="py-name"><a title="VisionEgg.PyroApps.DropinGUI.DropinControlFrame" class="py-name" href="#" onclick="return doclink('link-16', 'DropinControlFrame', 'link-10');">DropinControlFrame</a></tt><tt class="py-op">.</tt><tt id="link-17" class="py-name"><a title="VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.title
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.title
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.title
+VisionEgg.PyroApps.GridGUI.GridControlFrame.title
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.title
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.title
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.title
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.title" class="py-name" href="#" onclick="return doclink('link-17', 'title', 'link-12');">title</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L36"></a><tt class="py-lineno"> 36</tt>  <tt class="py-line">                                                 <tt id="link-18" class="py-name" targets="Class VisionEgg.PyroApps.DropinGUI.DropinMetaParameters=VisionEgg.PyroApps.DropinGUI.DropinMetaParameters-class.html"><a title="VisionEgg.PyroApps.DropinGUI.DropinMetaParameters" class="py-name" href="#" onclick="return doclink('link-18', 'DropinMetaParameters', 'link-18');">DropinMetaParameters</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L37"></a><tt class="py-lineno"> 37</tt>  <tt class="py-line">                                                 <tt class="py-op">**</tt><tt class="py-name">kw</tt><tt class="py-op">)</tt> </tt>
+<a name="L38"></a><tt class="py-lineno"> 38</tt>  <tt class="py-line"> </tt>
+<a name="L39"></a><tt class="py-lineno"> 39</tt>  <tt class="py-line">      <tt class="py-name">param_frame</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">param_frame</tt> <tt class="py-comment"># shorthand for self.param_frame created in base class</tt> </tt>
+<a name="L40"></a><tt class="py-lineno"> 40</tt>  <tt class="py-line">      <tt class="py-name">param_frame</tt><tt class="py-op">.</tt><tt class="py-name">columnconfigure</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">,</tt><tt class="py-name">weight</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="L41"></a><tt class="py-lineno"> 41</tt>  <tt class="py-line">      <tt class="py-name">param_frame</tt><tt class="py-op">.</tt><tt class="py-name">columnconfigure</tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">,</tt><tt class="py-name">weight</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="L42"></a><tt class="py-lineno"> 42</tt>  <tt class="py-line">      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">vars_list</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L43"></a><tt class="py-lineno"> 43</tt>  <tt class="py-line">      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">error_names</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+</div><a name="L44"></a><tt class="py-lineno"> 44</tt>  <tt class="py-line">       </tt>
+<a name="DropinControlFrame.get_shortname"></a><div id="DropinControlFrame.get_shortname-def"><a name="L45"></a><tt class="py-lineno"> 45</tt> <a class="py-toggle" href="#" id="DropinControlFrame.get_shortname-toggle" onclick="return toggle('DropinControlFrame.get_shortname');">-</a><tt class="py-line">   <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.DropinGUI.DropinControlFrame-class.html#get_shortname">get_shortname</a><tt class="py-op">(</tt><tt class [...]
+</div><div id="DropinControlFrame.get_shortname-collapsed" style="display:none;" pad="+++" indent="+++++++"></div><div id="DropinControlFrame.get_shortname-expanded"><a name="L46"></a><tt class="py-lineno"> 46</tt>  <tt class="py-line">      <tt class="py-keyword">return</tt> <tt class="py-string">"dropin"</tt> </tt>
+</div><a name="L47"></a><tt class="py-lineno"> 47</tt>  <tt class="py-line"> </tt>
+<a name="DropinControlFrame.update_tk_vars"></a><div id="DropinControlFrame.update_tk_vars-def"><a name="L48"></a><tt class="py-lineno"> 48</tt> <a class="py-toggle" href="#" id="DropinControlFrame.update_tk_vars-toggle" onclick="return toggle('DropinControlFrame.update_tk_vars');">-</a><tt class="py-line">   <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.DropinGUI.DropinControlFrame-class.html#update_tk_vars">update_tk_vars</a><tt class="py-op">(</tt><tt [...]
+</div><div id="DropinControlFrame.update_tk_vars-collapsed" style="display:none;" pad="+++" indent="+++++++"></div><div id="DropinControlFrame.update_tk_vars-expanded"><a name="L49"></a><tt class="py-lineno"> 49</tt>  <tt class="py-line">      <tt class="py-keyword">pass</tt> </tt>
+</div><a name="L50"></a><tt class="py-lineno"> 50</tt>  <tt class="py-line"> </tt>
+<a name="L51"></a><tt class="py-lineno"> 51</tt>  <tt class="py-line"> </tt>
+<a name="DropinControlFrame.send_values"></a><div id="DropinControlFrame.send_values-def"><a name="L52"></a><tt class="py-lineno"> 52</tt> <a class="py-toggle" href="#" id="DropinControlFrame.send_values-toggle" onclick="return toggle('DropinControlFrame.send_values');">-</a><tt class="py-line">   <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.DropinGUI.DropinControlFrame-class.html#send_values">send_values</a><tt class="py-op">(</tt><tt class="py-param"> [...]
+</div><div id="DropinControlFrame.send_values-collapsed" style="display:none;" pad="+++" indent="+++++++"></div><div id="DropinControlFrame.send_values-expanded"><a name="L53"></a><tt class="py-lineno"> 53</tt>  <tt class="py-line"> </tt>
+<a name="L54"></a><tt class="py-lineno"> 54</tt>  <tt class="py-line">      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op">.</tt><tt class="py-name">vars_list</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L55"></a><tt class="py-lineno"> 55</tt>  <tt class="py-line">      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">error_names</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L56"></a><tt class="py-lineno"> 56</tt>  <tt class="py-line">       </tt>
+<a name="L57"></a><tt class="py-lineno"> 57</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">vars_list</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L58"></a><tt class="py-lineno"> 58</tt>  <tt class="py-line">         <tt class="py-keyword">return</tt> <tt class="py-number">0</tt> </tt>
+<a name="L59"></a><tt class="py-lineno"> 59</tt>  <tt class="py-line">       </tt>
+<a name="L60"></a><tt class="py-lineno"> 60</tt>  <tt class="py-line">      <tt class="py-keyword">for</tt> <tt class="py-name">var</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">vars_list</tt><tt class="py-op">:</tt> </tt>
+<a name="L61"></a><tt class="py-lineno"> 61</tt>  <tt class="py-line">         <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">var</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">3</tt><tt class="py-op">:</tt> </tt>
+<a name="L62"></a><tt class="py-lineno"> 62</tt>  <tt class="py-line">            <tt class="py-name">var_type</tt> <tt class="py-op">=</tt> <tt class="py-name">var</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt>
+<a name="L63"></a><tt class="py-lineno"> 63</tt>  <tt class="py-line">            <tt class="py-name">var_name</tt> <tt class="py-op">=</tt> <tt class="py-name">var</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
+<a name="L64"></a><tt class="py-lineno"> 64</tt>  <tt class="py-line">            <tt class="py-name">var_val_holder</tt> <tt class="py-op">=</tt> <tt class="py-name">var</tt><tt class="py-op">[</tt><tt class="py-number">2</tt><tt class="py-op">]</tt> </tt>
+<a name="L65"></a><tt class="py-lineno"> 65</tt>  <tt class="py-line">            <tt class="py-name">var_val</tt> <tt class="py-op">=</tt> <tt class="py-name">var_val_holder</tt><tt class="py-op">.</tt><tt id="link-19" class="py-name" targets="Method VisionEgg.PyroClient.PyroClient.get()=VisionEgg.PyroClient.PyroClient-class.html#get"><a title="VisionEgg.PyroClient.PyroClient.get" class="py-name" href="#" onclick="return doclink('link-19', 'get', 'link-19');">get</a></tt><tt class="py-o [...]
+<a name="L66"></a><tt class="py-lineno"> 66</tt>  <tt class="py-line">            <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L67"></a><tt class="py-lineno"> 67</tt>  <tt class="py-line">               <tt class="py-keyword">if</tt> <tt class="py-name">var_val</tt> <tt class="py-op">==</tt> <tt class="py-string">"compound"</tt><tt class="py-op">:</tt> </tt>
+<a name="L68"></a><tt class="py-lineno"> 68</tt>  <tt class="py-line">                  <tt class="py-keyword">pass</tt> </tt>
+<a name="L69"></a><tt class="py-lineno"> 69</tt>  <tt class="py-line">               <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L70"></a><tt class="py-lineno"> 70</tt>  <tt class="py-line">                  <tt class="py-keyword">if</tt> <tt id="link-20" class="py-name"><a title="VisionEgg.PyroApps.VarTypes" class="py-name" href="#" onclick="return doclink('link-20', 'VarTypes', 'link-5');">VarTypes</a></tt><tt class="py-op">.</tt><tt id="link-21" class="py-name" targets="Function VisionEgg.PyroApps.VarTypes.getType()=VisionEgg.PyroApps.VarTypes-module.html#getType"><a title="VisionEgg.PyroApps.VarTypes. [...]
+<a name="L71"></a><tt class="py-lineno"> 71</tt>  <tt class="py-line">                     <tt class="py-name">var_typed_val</tt> <tt class="py-op">=</tt> <tt id="link-22" class="py-name" targets="Class float=float-class.html"><a title="float" class="py-name" href="#" onclick="return doclink('link-22', 'float', 'link-22');">float</a></tt><tt class="py-op">(</tt><tt class="py-name">var_val</tt><tt class="py-op">)</tt> </tt>
+<a name="L72"></a><tt class="py-lineno"> 72</tt>  <tt class="py-line">                  <tt class="py-keyword">elif</tt> <tt id="link-23" class="py-name"><a title="VisionEgg.PyroApps.VarTypes" class="py-name" href="#" onclick="return doclink('link-23', 'VarTypes', 'link-5');">VarTypes</a></tt><tt class="py-op">.</tt><tt id="link-24" class="py-name"><a title="VisionEgg.PyroApps.VarTypes.getType" class="py-name" href="#" onclick="return doclink('link-24', 'getType', 'link-21');">getType</a [...]
+<a name="L73"></a><tt class="py-lineno"> 73</tt>  <tt class="py-line">                     <tt class="py-name">var_typed_val</tt> <tt class="py-op">=</tt> <tt id="link-25" class="py-name" targets="Class int=int-class.html"><a title="int" class="py-name" href="#" onclick="return doclink('link-25', 'int', 'link-25');">int</a></tt><tt class="py-op">(</tt><tt id="link-26" class="py-name"><a title="float" class="py-name" href="#" onclick="return doclink('link-26', 'float', 'link-22');">float< [...]
+<a name="L74"></a><tt class="py-lineno"> 74</tt>  <tt class="py-line">                  <tt class="py-keyword">elif</tt> <tt id="link-27" class="py-name"><a title="VisionEgg.PyroApps.VarTypes" class="py-name" href="#" onclick="return doclink('link-27', 'VarTypes', 'link-5');">VarTypes</a></tt><tt class="py-op">.</tt><tt id="link-28" class="py-name"><a title="VisionEgg.PyroApps.VarTypes.getType" class="py-name" href="#" onclick="return doclink('link-28', 'getType', 'link-21');">getType</a [...]
+<a name="L75"></a><tt class="py-lineno"> 75</tt>  <tt class="py-line">                     <tt class="py-name">var_typed_val</tt> <tt class="py-op">=</tt> <tt class="py-name">var_val</tt> </tt>
+<a name="L76"></a><tt class="py-lineno"> 76</tt>  <tt class="py-line">                  <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L77"></a><tt class="py-lineno"> 77</tt>  <tt class="py-line">                     <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L78"></a><tt class="py-lineno"> 78</tt>  <tt class="py-line">                  <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op">.</tt><tt class="py-name">vars_list</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-name">var_name</tt><tt class="py-op">,</tt> <tt class="py-name">var_typed_val</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L79"></a><tt class="py-lineno"> 79</tt>  <tt class="py-line">            <tt class="py-keyword">except</tt> <tt class="py-name">ValueError</tt><tt class="py-op">:</tt> </tt>
+<a name="L80"></a><tt class="py-lineno"> 80</tt>  <tt class="py-line">               <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">error_names</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">var_name</tt><tt class="py-op">)</tt> </tt>
+<a name="L81"></a><tt class="py-lineno"> 81</tt>  <tt class="py-line"> </tt>
+<a name="L82"></a><tt class="py-lineno"> 82</tt>  <tt class="py-line"> </tt>
+<a name="L83"></a><tt class="py-lineno"> 83</tt>  <tt class="py-line">       </tt>
+<a name="L84"></a><tt class="py-lineno"> 84</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">error_names</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt>
+<a name="L85"></a><tt class="py-lineno"> 85</tt>  <tt class="py-line">         <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_controller</tt><tt class="py-op">.</tt><tt id="link-29" class="py-name" targets="Method VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.set_parameters()=VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController-class.html#set_parameters,Method VisionEgg.PyroApps.DropinServer.DropinMetaController.set_parameters()=VisionEgg.Pyr [...]
+VisionEgg.PyroApps.DropinServer.DropinMetaController.set_parameters
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.set_parameters
+VisionEgg.PyroApps.GridServer.GridMetaController.set_parameters
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.set_parameters
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.set_parameters
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.set_parameters
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.set_parameters
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.set_parameters" class="py-name" href="#" onclick="return doclink('link-29', 'set_parameters', 'link-29');">set_parameters</a></tt><tt class="py-op">(</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt> <tt class="py-op">)</tt> </tt>
+<a name="L86"></a><tt class="py-lineno"> 86</tt>  <tt class="py-line">         <tt class="py-keyword">return</tt> <tt class="py-number">1</tt> </tt>
+<a name="L87"></a><tt class="py-lineno"> 87</tt>  <tt class="py-line">      <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L88"></a><tt class="py-lineno"> 88</tt>  <tt class="py-line">         <tt class="py-name">all_error_names</tt> <tt class="py-op">=</tt> <tt class="py-string">"Invalid value(s) for the following variable(s):\n"</tt> </tt>
+<a name="L89"></a><tt class="py-lineno"> 89</tt>  <tt class="py-line">         <tt class="py-keyword">for</tt> <tt class="py-name">error_name</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">error_names</tt><tt class="py-op">:</tt> </tt>
+<a name="L90"></a><tt class="py-lineno"> 90</tt>  <tt class="py-line">            <tt class="py-name">all_error_names</tt> <tt class="py-op">=</tt> <tt class="py-name">all_error_names</tt> <tt class="py-op">+</tt> <tt class="py-name">error_name</tt> <tt class="py-op">+</tt> <tt class="py-string">"\n"</tt> </tt>
+<a name="L91"></a><tt class="py-lineno"> 91</tt>  <tt class="py-line">         <tt id="link-30" class="py-name"><a title="VisionEgg.GUI.tkMessageBox" class="py-name" href="#" onclick="return doclink('link-30', 'tkMessageBox', 'link-2');">tkMessageBox</a></tt><tt class="py-op">.</tt><tt class="py-name">showerror</tt><tt class="py-op">(</tt><tt class="py-string">"Invalid value(s)"</tt><tt class="py-op">,</tt> <tt class="py-name">all_error_names</tt><tt class="py-op">)</tt> </tt>
+<a name="L92"></a><tt class="py-lineno"> 92</tt>  <tt class="py-line">         <tt class="py-keyword">return</tt> <tt class="py-number">0</tt> </tt>
+</div><a name="L93"></a><tt class="py-lineno"> 93</tt>  <tt class="py-line"> </tt>
+<a name="DropinControlFrame.get_duration_sec"></a><div id="DropinControlFrame.get_duration_sec-def"><a name="L94"></a><tt class="py-lineno"> 94</tt> <a class="py-toggle" href="#" id="DropinControlFrame.get_duration_sec-toggle" onclick="return toggle('DropinControlFrame.get_duration_sec');">-</a><tt class="py-line">   <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.DropinGUI.DropinControlFrame-class.html#get_duration_sec">get_duration_sec</a><tt class="py-o [...]
+</div><div id="DropinControlFrame.get_duration_sec-collapsed" style="display:none;" pad="+++" indent="+++++++"></div><div id="DropinControlFrame.get_duration_sec-expanded"><a name="L95"></a><tt class="py-lineno"> 95</tt>  <tt class="py-line">      <tt class="py-comment"># XXX not implemented yet</tt> </tt>
+<a name="L96"></a><tt class="py-lineno"> 96</tt>  <tt class="py-line"><tt class="py-comment"></tt>      <tt class="py-keyword">return</tt> <tt class="py-op">-</tt><tt class="py-number">1</tt> </tt>
+</div><a name="L97"></a><tt class="py-lineno"> 97</tt>  <tt class="py-line"> </tt>
+<a name="L98"></a><tt class="py-lineno"> 98</tt>  <tt class="py-line">   <tt class="py-comment"># Creates the variable Entry and Label widgets:</tt> </tt>
+<a name="DropinControlFrame.gen_var_widgets"></a><div id="DropinControlFrame.gen_var_widgets-def"><a name="L99"></a><tt class="py-lineno"> 99</tt> <a class="py-toggle" href="#" id="DropinControlFrame.gen_var_widgets-toggle" onclick="return toggle('DropinControlFrame.gen_var_widgets');">-</a><tt class="py-line"><tt class="py-comment"></tt>   <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.DropinGUI.DropinControlFrame-class.html#gen_var_widgets">gen_var_widg [...]
+</div><div id="DropinControlFrame.gen_var_widgets-collapsed" style="display:none;" pad="+++" indent="+++++++"></div><div id="DropinControlFrame.gen_var_widgets-expanded"><a name="L100"></a><tt class="py-lineno">100</tt>  <tt class="py-line">      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">vars_list</tt> <tt class="py-op">=</tt> <tt class="py-name">vars_list</tt> </tt>
+<a name="L101"></a><tt class="py-lineno">101</tt>  <tt class="py-line">      <tt class="py-name">param_frame</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">param_frame</tt> <tt class="py-comment"># shorthand for self.param_frame created in base class</tt> </tt>
+<a name="L102"></a><tt class="py-lineno">102</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-name">demoscript_filename</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L103"></a><tt class="py-lineno">103</tt>  <tt class="py-line">         <tt class="py-name">label</tt> <tt class="py-op">=</tt> <tt class="py-string">"No demo file loaded"</tt> </tt>
+<a name="L104"></a><tt class="py-lineno">104</tt>  <tt class="py-line">      <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L105"></a><tt class="py-lineno">105</tt>  <tt class="py-line">         <tt class="py-name">label</tt> <tt class="py-op">=</tt> <tt class="py-name">demoscript_filename</tt> </tt>
+<a name="L106"></a><tt class="py-lineno">106</tt>  <tt class="py-line">      <tt id="link-31" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-31', 'Tkinter', 'link-1');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">param_frame</tt><tt class="py-op">,</tt> </tt>
+<a name="L107"></a><tt class="py-lineno">107</tt>  <tt class="py-line">                    <tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-name">label</tt><tt class="py-op">,</tt> </tt>
+<a name="L108"></a><tt class="py-lineno">108</tt>  <tt class="py-line">                    <tt class="py-name">font</tt><tt class="py-op">=</tt><tt class="py-op">(</tt><tt class="py-string">"Helvetica"</tt><tt class="py-op">,</tt><tt class="py-number">8</tt><tt class="py-op">,</tt><tt class="py-string">"bold"</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt> [...]
+<a name="L109"></a><tt class="py-lineno">109</tt>  <tt class="py-line">      <tt class="py-name">row_num</tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L110"></a><tt class="py-lineno">110</tt>  <tt class="py-line"> </tt>
+<a name="L111"></a><tt class="py-lineno">111</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">vars_list</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L112"></a><tt class="py-lineno">112</tt>  <tt class="py-line">         <tt class="py-keyword">return</tt> </tt>
+<a name="L113"></a><tt class="py-lineno">113</tt>  <tt class="py-line">      <tt class="py-keyword">for</tt> <tt class="py-name">var</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">vars_list</tt><tt class="py-op">:</tt> </tt>
+<a name="L114"></a><tt class="py-lineno">114</tt>  <tt class="py-line">         <tt class="py-name">var_label</tt> <tt class="py-op">=</tt> <tt id="link-32" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-32', 'Tkinter', 'link-1');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">param_frame</tt><tt class="py-op">,</tt><tt class="py-name">text</tt><tt class="py-op">=< [...]
+<a name="L115"></a><tt class="py-lineno">115</tt>  <tt class="py-line">         <tt class="py-comment"># Create a Tkinter string variable holder:</tt> </tt>
+<a name="L116"></a><tt class="py-lineno">116</tt>  <tt class="py-line"><tt class="py-comment"></tt>         <tt class="py-name">var_val_holder</tt> <tt class="py-op">=</tt> <tt id="link-33" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-33', 'Tkinter', 'link-1');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">StringVar</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L117"></a><tt class="py-lineno">117</tt>  <tt class="py-line">         <tt class="py-comment"># Set to its value:</tt> </tt>
+<a name="L118"></a><tt class="py-lineno">118</tt>  <tt class="py-line"><tt class="py-comment"></tt>         <tt class="py-name">var_val_holder</tt><tt class="py-op">.</tt><tt id="link-34" class="py-name" targets="Method VisionEgg.ClassWithParameters.set()=VisionEgg.ClassWithParameters-class.html#set"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-34', 'set', 'link-34');">set</a></tt><tt class="py-op">(</tt><tt class="py-name">var</tt>< [...]
+<a name="L119"></a><tt class="py-lineno">119</tt>  <tt class="py-line">         <tt class="py-comment"># Create (indirectly) Entry widgets:</tt> </tt>
+<a name="L120"></a><tt class="py-lineno">120</tt>  <tt class="py-line"><tt class="py-comment"></tt>         <tt class="py-comment"># Render variables which were "not found" as non-modifiable for user:</tt> </tt>
+<a name="L121"></a><tt class="py-lineno">121</tt>  <tt class="py-line"><tt class="py-comment"></tt>         <tt class="py-keyword">if</tt> <tt class="py-name">var</tt><tt class="py-op">[</tt><tt class="py-number">2</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-string">"not found"</tt><tt class="py-op">:</tt> </tt>
+<a name="L122"></a><tt class="py-lineno">122</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-35" class="py-name" targets="Method VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.make_callback_entry()=VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#make_callback_entry"><a title="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.make_callback_entry" class="py-name" href="#" onclick="return doclink('link-35',  [...]
+<a name="L123"></a><tt class="py-lineno">123</tt>  <tt class="py-line">            <tt class="py-keyword">del</tt> <tt class="py-name">var</tt><tt class="py-op">[</tt><tt class="py-number">2</tt><tt class="py-op">]</tt> </tt>
+<a name="L124"></a><tt class="py-lineno">124</tt>  <tt class="py-line">         <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L125"></a><tt class="py-lineno">125</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-36" class="py-name"><a title="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.make_callback_entry" class="py-name" href="#" onclick="return doclink('link-36', 'make_callback_entry', 'link-35');">make_callback_entry</a></tt><tt class="py-op">(</tt><tt class="py-name">textvariable</tt><tt class="py-op">=</tt><tt class="py-name">var_val_h [...]
+<a name="L126"></a><tt class="py-lineno">126</tt>  <tt class="py-line">            <tt class="py-name">var</tt><tt class="py-op">[</tt><tt class="py-number">2</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">var_val_holder</tt> </tt>
+<a name="L127"></a><tt class="py-lineno">127</tt>  <tt class="py-line">         <tt class="py-name">row_num</tt> <tt class="py-op">=</tt> <tt class="py-name">row_num</tt> <tt class="py-op">+</tt> <tt class="py-number">1</tt> </tt>
+</div></div><a name="L128"></a><tt class="py-lineno">128</tt>  <tt class="py-line"> </tt>
+<a name="L129"></a><tt class="py-lineno">129</tt>  <tt class="py-line"><tt class="py-keyword">if</tt> <tt class="py-name">__name__</tt><tt class="py-op">==</tt><tt class="py-string">'__main__'</tt><tt class="py-op">:</tt> </tt>
+<a name="L130"></a><tt class="py-lineno">130</tt>  <tt class="py-line">   <tt class="py-name">frame</tt> <tt class="py-op">=</tt> <tt id="link-37" class="py-name"><a title="VisionEgg.PyroApps.DropinGUI.DropinControlFrame" class="py-name" href="#" onclick="return doclink('link-37', 'DropinControlFrame', 'link-10');">DropinControlFrame</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L131"></a><tt class="py-lineno">131</tt>  <tt class="py-line">   <tt class="py-name">frame</tt><tt class="py-op">.</tt><tt class="py-name">pack</tt><tt class="py-op">(</tt><tt class="py-name">expand</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py-op">,</tt><tt class="py-name">fill</tt><tt class="py-op">=</tt><tt id="link-38" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-38', 'Tkinter', 'link-1');">Tk [...]
+<a name="L132"></a><tt class="py-lineno">132</tt>  <tt class="py-line">   <tt class="py-name">frame</tt><tt class="py-op">.</tt><tt class="py-name">winfo_toplevel</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-39" class="py-name"><a title="VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.title
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.title
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.title
+VisionEgg.PyroApps.GridGUI.GridControlFrame.title
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.title
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.title
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.title
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.title" class="py-name" href="#" onclick="return doclink('link-39', 'title', 'link-12');">title</a></tt><tt class="py-op">(</tt><tt class="py-string">"%s"</tt><tt class="py-op">%</tt><tt class="py-op">(</tt><tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">path</tt><tt class="py-op">.</tt><tt class="py-name">basename</tt><tt class="py-op">(</tt><tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">path</ [...]
+<a name="L133"></a><tt class="py-lineno">133</tt>  <tt class="py-line">   <tt class="py-name">frame</tt><tt class="py-op">.</tt><tt class="py-name">mainloop</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L134"></a><tt class="py-lineno">134</tt>  <tt class="py-line"> </tt><script type="text/javascript">
+<!--
+expandto(location.href);
+// -->
+</script>
+</pre>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:48 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.PyroApps.DropinGUI.DropinControlFrame-class.html b/doc/reference/html/VisionEgg.PyroApps.DropinGUI.DropinControlFrame-class.html
new file mode 100644
index 0000000..fb053b1
--- /dev/null
+++ b/doc/reference/html/VisionEgg.PyroApps.DropinGUI.DropinControlFrame-class.html
@@ -0,0 +1,615 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.PyroApps.DropinGUI.DropinControlFrame</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.PyroApps-module.html">Package PyroApps</a> ::
+        <a href="VisionEgg.PyroApps.DropinGUI-module.html">Module DropinGUI</a> ::
+        Class DropinControlFrame
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.PyroApps.DropinGUI.DropinControlFrame-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class DropinControlFrame</h1><span class="codelink"><a href="VisionEgg.PyroApps.DropinGUI-pysrc.html#DropinControlFrame">source code</a></span><br /><br />
+<pre class="base-tree">
+      Tkinter.Misc --+                
+                     |                
+    Tkinter.BaseWidget --+            
+                         |            
+          Tkinter.Pack --+            
+                         |            
+         Tkinter.Place --+            
+                         |            
+          Tkinter.Grid --+            
+                         |            
+            Tkinter.Widget --+        
+                             |        
+                 Tkinter.Frame --+    
+                                 |    
+<a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html">EPhysGUIUtils.StimulusControlFrame</a> --+
+                                     |
+                                    <strong class="uidshort">DropinControlFrame</strong>
+</pre>
+
+<hr />
+<!-- ==================== NESTED CLASSES ==================== -->
+<a name="section-NestedClasses"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Nested Classes</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>Tkinter.Misc</code></b>:
+      <code><a href="float-class.html">getdouble</a></code>,
+      <code><a href="int-class.html">getint</a></code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.PyroApps.DropinGUI.DropinControlFrame-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">master</span>=<span class="summary-sig-default">None</span>,
+        <span class="summary-sig-arg">suppress_go_buttons</span>=<span class="summary-sig-default">0</span>,
+        <span class="summary-sig-arg">**kw</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.DropinGUI-pysrc.html#DropinControlFrame.__init__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.PyroApps.DropinGUI.DropinControlFrame-class.html#get_shortname" class="summary-sig-name">get_shortname</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      Used as basename for saving parameter files and other ID purposes</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.DropinGUI-pysrc.html#DropinControlFrame.get_shortname">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.PyroApps.DropinGUI.DropinControlFrame-class.html#update_tk_vars" class="summary-sig-name">update_tk_vars</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      Update Tkinter variables with (new) values from meta_params</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.DropinGUI-pysrc.html#DropinControlFrame.update_tk_vars">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.PyroApps.DropinGUI.DropinControlFrame-class.html#send_values" class="summary-sig-name">send_values</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">dummy_arg</span>=<span class="summary-sig-default">None</span>)</span><br />
+      Update meta_params variables with values from Tkinter fields</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.DropinGUI-pysrc.html#DropinControlFrame.send_values">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.PyroApps.DropinGUI.DropinControlFrame-class.html#get_duration_sec" class="summary-sig-name">get_duration_sec</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      Calculate total duration in go loop</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.DropinGUI-pysrc.html#DropinControlFrame.get_duration_sec">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="gen_var_widgets"></a><span class="summary-sig-name">gen_var_widgets</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">demoscript_filename</span>,
+        <span class="summary-sig-arg">vars_list</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.DropinGUI-pysrc.html#DropinControlFrame.gen_var_widgets">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html">EPhysGUIUtils.StimulusControlFrame</a></code></b>:
+      <code><a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#connect">connect</a></code>,
+      <code><a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#get_loopable_variable_names">get_loopable_variable_names</a></code>,
+      <code><a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#get_matlab_string">get_matlab_string</a></code>,
+      <code><a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#get_parameters_as_m_strings">get_parameters_as_m_strings</a></code>,
+      <code><a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#get_parameters_as_py_strings">get_parameters_as_py_strings</a></code>,
+      <code><a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#get_parameters_dict">get_parameters_dict</a></code>,
+      <code><a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#go">go</a></code>,
+      <code><a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#make_callback_entry">make_callback_entry</a></code>,
+      <code><a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#quit_server">quit_server</a></code>,
+      <code><a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#set_loopable_variable">set_loopable_variable</a></code>,
+      <code><a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#set_param_dict">set_param_dict</a></code>,
+      <code><a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#set_parameters_dict">set_parameters_dict</a></code>,
+      <code><a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#standalone_connect">standalone_connect</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>Tkinter.BaseWidget</code></b>:
+      <code>destroy</code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>Tkinter.Misc</code></b>:
+      <code>__getitem__</code>,
+      <code>__setitem__</code>,
+      <code>__str__</code>,
+      <code>after</code>,
+      <code>after_cancel</code>,
+      <code>after_idle</code>,
+      <code>bbox</code>,
+      <code>bell</code>,
+      <code>bind</code>,
+      <code>bind_all</code>,
+      <code>bind_class</code>,
+      <code>bindtags</code>,
+      <code>cget</code>,
+      <code>clipboard_append</code>,
+      <code>clipboard_clear</code>,
+      <code>clipboard_get</code>,
+      <code>colormodel</code>,
+      <code>columnconfigure</code>,
+      <code>config</code>,
+      <code>configure</code>,
+      <code>deletecommand</code>,
+      <code>event_add</code>,
+      <code>event_delete</code>,
+      <code>event_generate</code>,
+      <code>event_info</code>,
+      <code>focus</code>,
+      <code>focus_displayof</code>,
+      <code>focus_force</code>,
+      <code>focus_get</code>,
+      <code>focus_lastfor</code>,
+      <code>focus_set</code>,
+      <code>getboolean</code>,
+      <code>getvar</code>,
+      <code>grab_current</code>,
+      <code>grab_release</code>,
+      <code>grab_set</code>,
+      <code>grab_set_global</code>,
+      <code>grab_status</code>,
+      <code>grid_bbox</code>,
+      <code>grid_columnconfigure</code>,
+      <code>grid_location</code>,
+      <code>grid_propagate</code>,
+      <code>grid_rowconfigure</code>,
+      <code>grid_size</code>,
+      <code>grid_slaves</code>,
+      <code>image_names</code>,
+      <code>image_types</code>,
+      <code>keys</code>,
+      <code>lift</code>,
+      <code>lower</code>,
+      <code>mainloop</code>,
+      <code>nametowidget</code>,
+      <code>option_add</code>,
+      <code>option_clear</code>,
+      <code>option_get</code>,
+      <code>option_readfile</code>,
+      <code>pack_propagate</code>,
+      <code>pack_slaves</code>,
+      <code>place_slaves</code>,
+      <code>propagate</code>,
+      <code>quit</code>,
+      <code>register</code>,
+      <code>rowconfigure</code>,
+      <code>selection_clear</code>,
+      <code>selection_get</code>,
+      <code>selection_handle</code>,
+      <code>selection_own</code>,
+      <code>selection_own_get</code>,
+      <code>send</code>,
+      <code>setvar</code>,
+      <code>size</code>,
+      <code>slaves</code>,
+      <code>tk_bisque</code>,
+      <code>tk_focusFollowsMouse</code>,
+      <code>tk_focusNext</code>,
+      <code>tk_focusPrev</code>,
+      <code>tk_menuBar</code>,
+      <code>tk_setPalette</code>,
+      <code>tk_strictMotif</code>,
+      <code>tkraise</code>,
+      <code>unbind</code>,
+      <code>unbind_all</code>,
+      <code>unbind_class</code>,
+      <code>update</code>,
+      <code>update_idletasks</code>,
+      <code>wait_variable</code>,
+      <code>wait_visibility</code>,
+      <code>wait_window</code>,
+      <code>waitvar</code>,
+      <code>winfo_atom</code>,
+      <code>winfo_atomname</code>,
+      <code>winfo_cells</code>,
+      <code>winfo_children</code>,
+      <code>winfo_class</code>,
+      <code>winfo_colormapfull</code>,
+      <code>winfo_containing</code>,
+      <code>winfo_depth</code>,
+      <code>winfo_exists</code>,
+      <code>winfo_fpixels</code>,
+      <code>winfo_geometry</code>,
+      <code>winfo_height</code>,
+      <code>winfo_id</code>,
+      <code>winfo_interps</code>,
+      <code>winfo_ismapped</code>,
+      <code>winfo_manager</code>,
+      <code>winfo_name</code>,
+      <code>winfo_parent</code>,
+      <code>winfo_pathname</code>,
+      <code>winfo_pixels</code>,
+      <code>winfo_pointerx</code>,
+      <code>winfo_pointerxy</code>,
+      <code>winfo_pointery</code>,
+      <code>winfo_reqheight</code>,
+      <code>winfo_reqwidth</code>,
+      <code>winfo_rgb</code>,
+      <code>winfo_rootx</code>,
+      <code>winfo_rooty</code>,
+      <code>winfo_screen</code>,
+      <code>winfo_screencells</code>,
+      <code>winfo_screendepth</code>,
+      <code>winfo_screenheight</code>,
+      <code>winfo_screenmmheight</code>,
+      <code>winfo_screenmmwidth</code>,
+      <code>winfo_screenvisual</code>,
+      <code>winfo_screenwidth</code>,
+      <code>winfo_server</code>,
+      <code>winfo_toplevel</code>,
+      <code>winfo_viewable</code>,
+      <code>winfo_visual</code>,
+      <code>winfo_visualid</code>,
+      <code>winfo_visualsavailable</code>,
+      <code>winfo_vrootheight</code>,
+      <code>winfo_vrootwidth</code>,
+      <code>winfo_vrootx</code>,
+      <code>winfo_vrooty</code>,
+      <code>winfo_width</code>,
+      <code>winfo_x</code>,
+      <code>winfo_y</code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>Tkinter.Pack</code></b>:
+      <code>forget</code>,
+      <code>info</code>,
+      <code>pack</code>,
+      <code>pack_configure</code>,
+      <code>pack_forget</code>,
+      <code>pack_info</code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>Tkinter.Place</code></b>:
+      <code>place</code>,
+      <code>place_configure</code>,
+      <code>place_forget</code>,
+      <code>place_info</code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>Tkinter.Grid</code></b>:
+      <code>grid</code>,
+      <code>grid_configure</code>,
+      <code>grid_forget</code>,
+      <code>grid_info</code>,
+      <code>grid_remove</code>,
+      <code>location</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Class Variables</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="title"></a><span class="summary-name">title</span> = <code title=""Vision Egg Script"">"Vision Egg Script"</code>
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>Tkinter.Misc</code></b>:
+      <code>_noarg_</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Method Details</span></td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">master</span>=<span class="sig-default">None</span>,
+        <span class="sig-arg">suppress_go_buttons</span>=<span class="sig-default">0</span>,
+        <span class="sig-arg">**kw</span>)</span>
+    <br /><em class="fname">(Constructor)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.PyroApps.DropinGUI-pysrc.html#DropinControlFrame.__init__">source code</a></span> 
+    </td>
+  </table>
+  
+  
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#__init__">EPhysGUIUtils.StimulusControlFrame.__init__</a>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="get_shortname"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">get_shortname</span>(<span class="sig-arg">self</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.PyroApps.DropinGUI-pysrc.html#DropinControlFrame.get_shortname">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Used as basename for saving parameter files and other ID purposes
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#get_shortname">EPhysGUIUtils.StimulusControlFrame.get_shortname</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="update_tk_vars"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">update_tk_vars</span>(<span class="sig-arg">self</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.PyroApps.DropinGUI-pysrc.html#DropinControlFrame.update_tk_vars">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Update Tkinter variables with (new) values from meta_params
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#update_tk_vars">EPhysGUIUtils.StimulusControlFrame.update_tk_vars</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="send_values"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">send_values</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">dummy_arg</span>=<span class="sig-default">None</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.PyroApps.DropinGUI-pysrc.html#DropinControlFrame.send_values">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Update meta_params variables with values from Tkinter fields
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#send_values">EPhysGUIUtils.StimulusControlFrame.send_values</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="get_duration_sec"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">get_duration_sec</span>(<span class="sig-arg">self</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.PyroApps.DropinGUI-pysrc.html#DropinControlFrame.get_duration_sec">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Calculate total duration in go loop
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#get_duration_sec">EPhysGUIUtils.StimulusControlFrame.get_duration_sec</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.PyroApps.DropinGUI.DropinMetaParameters-class.html b/doc/reference/html/VisionEgg.PyroApps.DropinGUI.DropinMetaParameters-class.html
new file mode 100644
index 0000000..63bf3b0
--- /dev/null
+++ b/doc/reference/html/VisionEgg.PyroApps.DropinGUI.DropinMetaParameters-class.html
@@ -0,0 +1,139 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.PyroApps.DropinGUI.DropinMetaParameters</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.PyroApps-module.html">Package PyroApps</a> ::
+        <a href="VisionEgg.PyroApps.DropinGUI-module.html">Module DropinGUI</a> ::
+        Class DropinMetaParameters
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.PyroApps.DropinGUI.DropinMetaParameters-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class DropinMetaParameters</h1><span class="codelink"><a href="VisionEgg.PyroApps.DropinGUI-pysrc.html#DropinMetaParameters">source code</a></span><br /><br />
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__init__"></a><span class="summary-sig-name">__init__</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.DropinGUI-pysrc.html#DropinMetaParameters.__init__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.PyroApps.DropinServer-module.html b/doc/reference/html/VisionEgg.PyroApps.DropinServer-module.html
new file mode 100644
index 0000000..4a18a9b
--- /dev/null
+++ b/doc/reference/html/VisionEgg.PyroApps.DropinServer-module.html
@@ -0,0 +1,186 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.PyroApps.DropinServer</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.PyroApps-module.html">Package PyroApps</a> ::
+        Module DropinServer
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.PyroApps.DropinServer-module.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== MODULE DESCRIPTION ==================== -->
+<h1 class="epydoc">Module DropinServer</h1><span class="codelink"><a href="VisionEgg.PyroApps.DropinServer-pysrc.html">source code</a></span><br /><br />
+<!-- ==================== CLASSES ==================== -->
+<a name="section-Classes"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Classes</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.PyroApps.DropinServer.DropinMetaController-class.html" class="summary-name">DropinMetaController</a>
+    </td>
+  </tr>
+</table>
+<!-- ==================== FUNCTIONS ==================== -->
+<a name="section-Functions"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Functions</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="get_meta_controller_class"></a><span class="summary-sig-name">get_meta_controller_class</span>()</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.DropinServer-pysrc.html#get_meta_controller_class">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="make_stimuli"></a><span class="summary-sig-name">make_stimuli</span>()</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.DropinServer-pysrc.html#make_stimuli">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="get_meta_controller_stimkey"></a><span class="summary-sig-name">get_meta_controller_stimkey</span>()</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.DropinServer-pysrc.html#get_meta_controller_stimkey">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.PyroApps.DropinServer-pysrc.html b/doc/reference/html/VisionEgg.PyroApps.DropinServer-pysrc.html
new file mode 100644
index 0000000..443956d
--- /dev/null
+++ b/doc/reference/html/VisionEgg.PyroApps.DropinServer-pysrc.html
@@ -0,0 +1,316 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.PyroApps.DropinServer</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.PyroApps-module.html">Package PyroApps</a> ::
+        Module DropinServer
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.PyroApps.DropinServer-pysrc.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<h1 class="epydoc">Source Code for <a href="VisionEgg.PyroApps.DropinServer-module.html">Module VisionEgg.PyroApps.DropinServer</a></h1>
+<pre class="py-src">
+<a name="L1"></a><tt class="py-lineno"> 1</tt>  <tt class="py-line"><tt class="py-comment"># The Vision Egg: DropinServer</tt> </tt>
+<a name="L2"></a><tt class="py-lineno"> 2</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L3"></a><tt class="py-lineno"> 3</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Copyright (C) 2004 Imran S. Ali, Lachlan Dowd, Andrew Straw</tt> </tt>
+<a name="L4"></a><tt class="py-lineno"> 4</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Copyright (C) 2004 California Institute of Technology</tt> </tt>
+<a name="L5"></a><tt class="py-lineno"> 5</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L6"></a><tt class="py-lineno"> 6</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Authors: Imran S. Ali, Lachlan Dowd, Andrew Straw</tt> </tt>
+<a name="L7"></a><tt class="py-lineno"> 7</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># URL: <http://www.visionegg.org/></tt> </tt>
+<a name="L8"></a><tt class="py-lineno"> 8</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L9"></a><tt class="py-lineno"> 9</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Distributed under the terms of the GNU Lesser General Public License</tt> </tt>
+<a name="L10"></a><tt class="py-lineno">10</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># (LGPL). See LICENSE.TXT that came with this file.</tt> </tt>
+<a name="L11"></a><tt class="py-lineno">11</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L12"></a><tt class="py-lineno">12</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># $Id$</tt> </tt>
+<a name="L13"></a><tt class="py-lineno">13</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L14"></a><tt class="py-lineno">14</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-0" class="py-name" targets="Package VisionEgg=VisionEgg-module.html"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-0', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">,</tt> <tt class="py-name">string</tt> </tt>
+<a name="L15"></a><tt class="py-lineno">15</tt>  <tt class="py-line"> </tt>
+<a name="L16"></a><tt class="py-lineno">16</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">sys</tt><tt class="py-op">,</tt> <tt class="py-name">os</tt><tt class="py-op">,</tt> <tt class="py-name">math</tt> </tt>
+<a name="L17"></a><tt class="py-lineno">17</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-1" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-1', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-2" class="py-name" targets="Module VisionEgg.Core=VisionEgg.Core-module.html"><a title="VisionEgg.Core" class="py-name" href="#" onclick="return doclink('link-2', 'Core', 'link-2');">Core</a></tt> </tt>
+<a name="L18"></a><tt class="py-lineno">18</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-3" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-3', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-4" class="py-name" targets="Module VisionEgg.FlowControl=VisionEgg.FlowControl-module.html"><a title="VisionEgg.FlowControl" class="py-name" href="#" onclick="return doclink('link-4', 'FlowControl [...]
+<a name="L19"></a><tt class="py-lineno">19</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-5" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-5', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-6" class="py-name" targets="Module VisionEgg.Textures=VisionEgg.Textures-module.html"><a title="VisionEgg.Textures" class="py-name" href="#" onclick="return doclink('link-6', 'Textures', 'link-6') [...]
+<a name="L20"></a><tt class="py-lineno">20</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-7" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-7', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-8" class="py-name" targets="Module VisionEgg.SphereMap=VisionEgg.SphereMap-module.html,Class VisionEgg.SphereMap.SphereMap=VisionEgg.SphereMap.SphereMap-class.html"><a title="VisionEgg.SphereMap
+VisionEgg.SphereMap.SphereMap" class="py-name" href="#" onclick="return doclink('link-8', 'SphereMap', 'link-8');">SphereMap</a></tt> </tt>
+<a name="L21"></a><tt class="py-lineno">21</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-9" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-9', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-10" class="py-name" targets="Module VisionEgg.PyroHelpers=VisionEgg.PyroHelpers-module.html"><a title="VisionEgg.PyroHelpers" class="py-name" href="#" onclick="return doclink('link-10', 'PyroHelpe [...]
+<a name="L22"></a><tt class="py-lineno">22</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">Pyro</tt><tt class="py-op">.</tt><tt class="py-name">core</tt> </tt>
+<a name="L23"></a><tt class="py-lineno">23</tt>  <tt class="py-line"> </tt>
+<a name="L24"></a><tt class="py-lineno">24</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-11" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-11', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-12" class="py-name" targets="Package VisionEgg.PyroApps=VisionEgg.PyroApps-module.html"><a title="VisionEgg.PyroApps" class="py-name" href="#" onclick="return doclink('link-12', 'PyroApps', 'link- [...]
+<a name="L25"></a><tt class="py-lineno">25</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-15" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-15', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-16" class="py-name"><a title="VisionEgg.PyroApps" class="py-name" href="#" onclick="return doclink('link-16', 'PyroApps', 'link-12');">PyroApps</a></tt><tt class="py-op">.</tt><tt id="link-17" cla [...]
+<a name="L26"></a><tt class="py-lineno">26</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-19" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-19', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-20" class="py-name"><a title="VisionEgg.PyroApps" class="py-name" href="#" onclick="return doclink('link-20', 'PyroApps', 'link-12');">PyroApps</a></tt><tt class="py-op">.</tt><tt id="link-21" cla [...]
+<a name="L27"></a><tt class="py-lineno">27</tt>  <tt class="py-line"> </tt>
+<a name="DropinMetaController"></a><div id="DropinMetaController-def"><a name="L28"></a><tt class="py-lineno">28</tt> <a class="py-toggle" href="#" id="DropinMetaController-toggle" onclick="return toggle('DropinMetaController');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.PyroApps.DropinServer.DropinMetaController-class.html">DropinMetaController</a><tt class="py-op">(</tt> <tt class="py-base-class">Pyro</tt><tt class="py-op">.</tt>< [...]
+</div><div id="DropinMetaController-collapsed" style="display:none;" pad="++" indent="++++"></div><div id="DropinMetaController-expanded"><a name="DropinMetaController.__init__"></a><div id="DropinMetaController.__init__-def"><a name="L29"></a><tt class="py-lineno">29</tt> <a class="py-toggle" href="#" id="DropinMetaController.__init__-toggle" onclick="return toggle('DropinMetaController.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href [...]
+</div><div id="DropinMetaController.__init__-collapsed" style="display:none;" pad="++" indent="++++++++"></div><div id="DropinMetaController.__init__-expanded"><a name="L30"></a><tt class="py-lineno">30</tt>  <tt class="py-line">        <tt class="py-name">Pyro</tt><tt class="py-op">.</tt><tt class="py-name">core</tt><tt class="py-op">.</tt><tt class="py-name">ObjBase</tt><tt class="py-op">.</tt><tt id="link-23" class="py-name" targets="Method VisionEgg.ClassWithParameters.__init__()=Vis [...]
+VisionEgg.Configuration.Config.__init__
+VisionEgg.Core.FixationSpot.__init__
+VisionEgg.Core.FrameTimer.__init__
+VisionEgg.Core.ModelView.__init__
+VisionEgg.Core.OrthographicProjection.__init__
+VisionEgg.Core.OrthographicProjectionNoZClip.__init__
+VisionEgg.Core.PerspectiveProjection.__init__
+VisionEgg.Core.Projection.__init__
+VisionEgg.Core.ProjectionBaseClass.__init__
+VisionEgg.Core.Screen.__init__
+VisionEgg.Core.SimplePerspectiveProjection.__init__
+VisionEgg.Core.Stimulus.__init__
+VisionEgg.Core.Viewport.__init__
+VisionEgg.Daq.Channel.__init__
+VisionEgg.Daq.DaqMode.__init__
+VisionEgg.Daq.Device.__init__
+VisionEgg.Daq.Functionality.__init__
+VisionEgg.Daq.SignalType.__init__
+VisionEgg.DaqKeyboard.KeyboardTriggerInController.__init__
+VisionEgg.DaqLPT.LPTChannel.__init__
+VisionEgg.DaqLPT.LPTDevice.__init__
+VisionEgg.DaqLPT.LPTTriggerInController.__init__
+VisionEgg.DaqLPT.LPTTriggerOutController.__init__
+VisionEgg.Deprecated.Message.__init__
+VisionEgg.Dots.DotArea2D.__init__
+VisionEgg.FlowControl.ConstantController.__init__
+VisionEgg.FlowControl.Controller.__init__
+VisionEgg.FlowControl.EncapsulatedController.__init__
+VisionEgg.FlowControl.EvalStringController.__init__
+VisionEgg.FlowControl.ExecStringController.__init__
+VisionEgg.FlowControl.FunctionController.__init__
+VisionEgg.FlowControl.Presentation.__init__
+VisionEgg.GLTrace.Wrapper.__init__
+VisionEgg.GUI.AppWindow.__init__
+VisionEgg.GUI.GetKeypressDialog.__init__
+VisionEgg.GUI.GraphicsConfigurationWindow.__init__
+VisionEgg.GUI.InfoFrame.__init__
+VisionEgg.GUI.ProgressBar.__init__
+VisionEgg.GUI.ToplevelDialog.__init__
+VisionEgg.Gratings.SinGrating2D.__init__
+VisionEgg.Gratings.SinGrating3D.__init__
+VisionEgg.MoreStimuli.Arrow.__init__
+VisionEgg.MoreStimuli.FilledCircle.__init__
+VisionEgg.MoreStimuli.Rectangle3D.__init__
+VisionEgg.MoreStimuli.Target2D.__init__
+VisionEgg.ParameterTypes.AnyOf.__init__
+VisionEgg.ParameterTypes.Instance.__init__
+VisionEgg.ParameterTypes.Sequence.__init__
+VisionEgg.ParameterTypes.SubClass.__init__
+VisionEgg.PyroApps.AST_ext.AST_Visitor.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalMetaParameters.__init__
+VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.__init__
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.__init__
+VisionEgg.PyroApps.DropinGUI.DropinMetaParameters.__init__
+VisionEgg.PyroApps.DropinServer.DropinMetaController.__init__
+VisionEgg.PyroApps.EPhysGUI.AppWindow.__init__
+VisionEgg.PyroApps.EPhysGUI.BarButton.__init__
+VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase.__init__
+VisionEgg.PyroApps.EPhysGUI.GammaFrame.__init__
+VisionEgg.PyroApps.EPhysGUI.ImageSequenceLauncher.__init__
+VisionEgg.PyroApps.EPhysGUI.Loop.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopContainedObject.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopParamDialog.__init__
+VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.__init__
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.__init__
+VisionEgg.PyroApps.EPhysServer.EPhysServer.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingMetaParameters.__init__
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.GridGUI.GridControlFrame.__init__
+VisionEgg.PyroApps.GridGUI.GridMetaParameters.__init__
+VisionEgg.PyroApps.GridServer.GridMetaController.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetMetaParameters.__init__
+VisionEgg.PyroApps.MouseTargetServer.MousePositionController.__init__
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetOrientationController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetPositionController.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.CallbackEntry.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionParameters.__init__
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingMetaParameters.__init__
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumMetaParameters.__init__
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.__init__
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.__init__
+VisionEgg.PyroApps.TargetGUI.TargetMetaParameters.__init__
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.__init__
+VisionEgg.PyroClient.PyroClient.__init__
+VisionEgg.PyroHelpers.PyroConstantController.__init__
+VisionEgg.PyroHelpers.PyroEncapsulatedController.__init__
+VisionEgg.PyroHelpers.PyroEvalStringController.__init__
+VisionEgg.PyroHelpers.PyroExecStringController.__init__
+VisionEgg.PyroHelpers.PyroListenController.__init__
+VisionEgg.PyroHelpers.PyroLocalDictController.__init__
+VisionEgg.PyroHelpers.PyroServer.__init__
+VisionEgg.QuickTime.MovieTexture.__init__
+VisionEgg.ResponseControl.KeyboardResponseController.__init__
+VisionEgg.ResponseControl.ResponseController.__init__
+VisionEgg.SphereMap.AzElGrid.__init__
+VisionEgg.SphereMap.SphereGrating.__init__
+VisionEgg.SphereMap.SphereMap.__init__
+VisionEgg.SphereMap.SphereWindow.__init__
+VisionEgg.TCPController.SocketListenController.__init__
+VisionEgg.TCPController.TCPController.__init__
+VisionEgg.TCPController.TCPServer.__init__
+VisionEgg.Text.BitmapText.__init__
+VisionEgg.Text.GlutTextBase.__init__
+VisionEgg.Text.StrokeText.__init__
+VisionEgg.Text.Text.__init__
+VisionEgg.Textures.FixationCross.__init__
+VisionEgg.Textures.Mask2D.__init__
+VisionEgg.Textures.SpinningDrum.__init__
+VisionEgg.Textures.Texture.__init__
+VisionEgg.Textures.TextureFromFile.__init__
+VisionEgg.Textures.TextureObject.__init__
+VisionEgg.Textures.TextureStimulusBaseClass.__init__
+VisionEgg.ThreeDeeMath.TransformMatrix.__init__
+VisionEgg.WrappedText.WrappedText.__init__
+VisionEgg.qtmovie.Movie.__init__
+VisionEgg.qtmovie.Rect.__init__" class="py-name" href="#" onclick="return doclink('link-23', '__init__', 'link-23');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
+<a name="L31"></a><tt class="py-lineno">31</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt> <tt class="py-op">=</tt> <tt id="link-24" class="py-name"><a title="VisionEgg.PyroApps.DropinGUI.DropinMetaParameters" class="py-name" href="#" onclick="return doclink('link-24', 'DropinMetaParameters', 'link-22');">DropinMetaParameters</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L32"></a><tt class="py-lineno">32</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">p</tt> <tt class="py-op">=</tt> <tt class="py-name">presentation</tt> </tt>
+<a name="L33"></a><tt class="py-lineno">33</tt>  <tt class="py-line">        <tt class="py-keyword">print</tt> <tt class="py-string">'DropinMetaController presentation'</tt><tt class="py-op">,</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">p</tt> </tt>
+</div><a name="L34"></a><tt class="py-lineno">34</tt>  <tt class="py-line">         </tt>
+<a name="DropinMetaController.get_parameters"></a><div id="DropinMetaController.get_parameters-def"><a name="L35"></a><tt class="py-lineno">35</tt> <a class="py-toggle" href="#" id="DropinMetaController.get_parameters-toggle" onclick="return toggle('DropinMetaController.get_parameters');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.DropinServer.DropinMetaController-class.html#get_parameters">get_parameters</a><tt class="py- [...]
+</div><div id="DropinMetaController.get_parameters-collapsed" style="display:none;" pad="++" indent="++++++++"></div><div id="DropinMetaController.get_parameters-expanded"><a name="L36"></a><tt class="py-lineno">36</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt> </tt>
+</div><a name="L37"></a><tt class="py-lineno">37</tt>  <tt class="py-line"> </tt>
+<a name="DropinMetaController.set_parameters"></a><div id="DropinMetaController.set_parameters-def"><a name="L38"></a><tt class="py-lineno">38</tt> <a class="py-toggle" href="#" id="DropinMetaController.set_parameters-toggle" onclick="return toggle('DropinMetaController.set_parameters');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.DropinServer.DropinMetaController-class.html#set_parameters">set_parameters</a><tt class="py- [...]
+</div><div id="DropinMetaController.set_parameters-collapsed" style="display:none;" pad="++" indent="++++++++"></div><div id="DropinMetaController.set_parameters-expanded"><a name="L39"></a><tt class="py-lineno">39</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt> <tt class="py-op">=</tt> <tt class="py-name">new_parameters</tt> </tt>
+<a name="L40"></a><tt class="py-lineno">40</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-25" class="py-name" targets="Method VisionEgg.GUI.InfoFrame.update()=VisionEgg.GUI.InfoFrame-class.html#update,Method VisionEgg.GUI.ProgressBar.update()=VisionEgg.GUI.ProgressBar-class.html#update,Method VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.update()=VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController-class.html#update,Meth [...]
+VisionEgg.GUI.ProgressBar.update
+VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.update
+VisionEgg.PyroApps.DropinServer.DropinMetaController.update
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.update
+VisionEgg.PyroApps.GridServer.GridMetaController.update
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.update
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.update
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.update
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.update
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.update
+VisionEgg.QuickTime.MovieTexture.update
+VisionEgg.Textures.Texture.update" class="py-name" href="#" onclick="return doclink('link-25', 'update', 'link-25');">update</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L41"></a><tt class="py-lineno">41</tt>  <tt class="py-line">         </tt>
+<a name="DropinMetaController.update"></a><div id="DropinMetaController.update-def"><a name="L42"></a><tt class="py-lineno">42</tt> <a class="py-toggle" href="#" id="DropinMetaController.update-toggle" onclick="return toggle('DropinMetaController.update');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.DropinServer.DropinMetaController-class.html#update">update</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt clas [...]
+</div><div id="DropinMetaController.update-collapsed" style="display:none;" pad="++" indent="++++++++"></div><div id="DropinMetaController.update-expanded"><a name="L43"></a><tt class="py-lineno">43</tt>  <tt class="py-line">        <tt class="py-keyword">pass</tt> </tt>
+</div><a name="L44"></a><tt class="py-lineno">44</tt>  <tt class="py-line"> </tt>
+<a name="DropinMetaController.go"></a><div id="DropinMetaController.go-def"><a name="L45"></a><tt class="py-lineno">45</tt> <a class="py-toggle" href="#" id="DropinMetaController.go-toggle" onclick="return toggle('DropinMetaController.go');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.DropinServer.DropinMetaController-class.html#go">go</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt clas [...]
+</div><div id="DropinMetaController.go-collapsed" style="display:none;" pad="++" indent="++++++++"></div><div id="DropinMetaController.go-expanded"><a name="L46"></a><tt class="py-lineno">46</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">enter_go_loop</tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt>
+</div><a name="L47"></a><tt class="py-lineno">47</tt>  <tt class="py-line"> </tt>
+<a name="DropinMetaController.quit_server"></a><div id="DropinMetaController.quit_server-def"><a name="L48"></a><tt class="py-lineno">48</tt> <a class="py-toggle" href="#" id="DropinMetaController.quit_server-toggle" onclick="return toggle('DropinMetaController.quit_server');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.DropinServer.DropinMetaController-class.html#quit_server">quit_server</a><tt class="py-op">(</tt><tt clas [...]
+</div><div id="DropinMetaController.quit_server-collapsed" style="display:none;" pad="++" indent="++++++++"></div><div id="DropinMetaController.quit_server-expanded"><a name="L49"></a><tt class="py-lineno">49</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt id="link-26" class="py-name" targets="Method VisionEgg.PyroApps.EPhysGUI.AppWindow. [...]
+</div></div><a name="L50"></a><tt class="py-lineno">50</tt>  <tt class="py-line"> </tt>
+<a name="get_meta_controller_class"></a><div id="get_meta_controller_class-def"><a name="L51"></a><tt class="py-lineno">51</tt> <a class="py-toggle" href="#" id="get_meta_controller_class-toggle" onclick="return toggle('get_meta_controller_class');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.DropinServer-module.html#get_meta_controller_class">get_meta_controller_class</a><tt class="py-op">(</tt><tt class="py-op">)</tt><tt clas [...]
+</div><div id="get_meta_controller_class-collapsed" style="display:none;" pad="++" indent="++++"></div><div id="get_meta_controller_class-expanded"><a name="L52"></a><tt class="py-lineno">52</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt id="link-27" class="py-name" targets="Class VisionEgg.PyroApps.DropinServer.DropinMetaController=VisionEgg.PyroApps.DropinServer.DropinMetaController-class.html"><a title="VisionEgg.PyroApps.DropinServer.DropinMetaController" class= [...]
+</div><a name="L53"></a><tt class="py-lineno">53</tt>  <tt class="py-line"> </tt>
+<a name="make_stimuli"></a><div id="make_stimuli-def"><a name="L54"></a><tt class="py-lineno">54</tt> <a class="py-toggle" href="#" id="make_stimuli-toggle" onclick="return toggle('make_stimuli');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.DropinServer-module.html#make_stimuli">make_stimuli</a><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="make_stimuli-collapsed" style="display:none;" pad="++" indent="++++"></div><div id="make_stimuli-expanded"><a name="L55"></a><tt class="py-lineno">55</tt>  <tt class="py-line">    <tt class="py-keyword">pass</tt> </tt>
+</div><a name="L56"></a><tt class="py-lineno">56</tt>  <tt class="py-line"> </tt>
+<a name="get_meta_controller_stimkey"></a><div id="get_meta_controller_stimkey-def"><a name="L57"></a><tt class="py-lineno">57</tt> <a class="py-toggle" href="#" id="get_meta_controller_stimkey-toggle" onclick="return toggle('get_meta_controller_stimkey');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.DropinServer-module.html#get_meta_controller_stimkey">get_meta_controller_stimkey</a><tt class="py-op">(</tt><tt class="py-op">)< [...]
+</div><div id="get_meta_controller_stimkey-collapsed" style="display:none;" pad="++" indent="++++"></div><div id="get_meta_controller_stimkey-expanded"><a name="L58"></a><tt class="py-lineno">58</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-string">"dropin_server"</tt> </tt>
+</div><a name="L59"></a><tt class="py-lineno">59</tt>  <tt class="py-line"> </tt><script type="text/javascript">
+<!--
+expandto(location.href);
+// -->
+</script>
+</pre>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:48 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.PyroApps.DropinServer.DropinMetaController-class.html b/doc/reference/html/VisionEgg.PyroApps.DropinServer.DropinMetaController-class.html
new file mode 100644
index 0000000..fb29b96
--- /dev/null
+++ b/doc/reference/html/VisionEgg.PyroApps.DropinServer.DropinMetaController-class.html
@@ -0,0 +1,284 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.PyroApps.DropinServer.DropinMetaController</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.PyroApps-module.html">Package PyroApps</a> ::
+        <a href="VisionEgg.PyroApps.DropinServer-module.html">Module DropinServer</a> ::
+        Class DropinMetaController
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.PyroApps.DropinServer.DropinMetaController-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class DropinMetaController</h1><span class="codelink"><a href="VisionEgg.PyroApps.DropinServer-pysrc.html#DropinMetaController">source code</a></span><br /><br />
+<pre class="base-tree">
+Pyro.core.ObjBase --+
+                    |
+                   <strong class="uidshort">DropinMetaController</strong>
+</pre>
+
+<hr />
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.PyroApps.DropinServer.DropinMetaController-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">screen</span>,
+        <span class="summary-sig-arg">presentation</span>,
+        <span class="summary-sig-arg">stimuli</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.DropinServer-pysrc.html#DropinMetaController.__init__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="get_parameters"></a><span class="summary-sig-name">get_parameters</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.DropinServer-pysrc.html#DropinMetaController.get_parameters">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="set_parameters"></a><span class="summary-sig-name">set_parameters</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">new_parameters</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.DropinServer-pysrc.html#DropinMetaController.set_parameters">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="update"></a><span class="summary-sig-name">update</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.DropinServer-pysrc.html#DropinMetaController.update">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="go"></a><span class="summary-sig-name">go</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.DropinServer-pysrc.html#DropinMetaController.go">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="quit_server"></a><span class="summary-sig-name">quit_server</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.DropinServer-pysrc.html#DropinMetaController.quit_server">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>Pyro.core.ObjBase</code></b>:
+      <code>GUID</code>,
+      <code>Pyro_dyncall</code>,
+      <code>delegateTo</code>,
+      <code>getAttrProxy</code>,
+      <code>getDaemon</code>,
+      <code>getLocalStorage</code>,
+      <code>getProxy</code>,
+      <code>remote_retrieve_code</code>,
+      <code>remote_supply_code</code>,
+      <code>setCodeValidator</code>,
+      <code>setGUID</code>,
+      <code>setPyroDaemon</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Method Details</span></td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">screen</span>,
+        <span class="sig-arg">presentation</span>,
+        <span class="sig-arg">stimuli</span>)</span>
+    <br /><em class="fname">(Constructor)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.PyroApps.DropinServer-pysrc.html#DropinMetaController.__init__">source code</a></span> 
+    </td>
+  </table>
+  
+  
+  <dl class="fields">
+    <dt>Overrides:
+      Pyro.core.ObjBase.__init__
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.PyroApps.EPhysGUI-module.html b/doc/reference/html/VisionEgg.PyroApps.EPhysGUI-module.html
new file mode 100644
index 0000000..909cb52
--- /dev/null
+++ b/doc/reference/html/VisionEgg.PyroApps.EPhysGUI-module.html
@@ -0,0 +1,287 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.PyroApps.EPhysGUI</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.PyroApps-module.html">Package PyroApps</a> ::
+        Module EPhysGUI
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.PyroApps.EPhysGUI-module.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== MODULE DESCRIPTION ==================== -->
+<h1 class="epydoc">Module EPhysGUI</h1><span class="codelink"><a href="VisionEgg.PyroApps.EPhysGUI-pysrc.html">source code</a></span><br /><br />
+<!-- ==================== CLASSES ==================== -->
+<a name="section-Classes"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Classes</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase-class.html" class="summary-name">ContainedObjectBase</a><br />
+      Base class to encapsulate objects, provides useful methods when used in GUI
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.PyroApps.EPhysGUI.ScrollListFrame-class.html" class="summary-name">ScrollListFrame</a>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.PyroApps.EPhysGUI.Loop-class.html" class="summary-name">Loop</a>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.PyroApps.EPhysGUI.LoopContainedObject-class.html" class="summary-name">LoopContainedObject</a><br />
+      Container for Loop class
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.PyroApps.EPhysGUI.LoopParamDialog-class.html" class="summary-name">LoopParamDialog</a>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.PyroApps.EPhysGUI.GammaFrame-class.html" class="summary-name">GammaFrame</a>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.PyroApps.EPhysGUI.ImageSequenceLauncher-class.html" class="summary-name">ImageSequenceLauncher</a>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.PyroApps.EPhysGUI.AppWindow-class.html" class="summary-name">AppWindow</a>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.PyroApps.EPhysGUI.BarButton-class.html" class="summary-name">BarButton</a>
+    </td>
+  </tr>
+</table>
+<!-- ==================== FUNCTIONS ==================== -->
+<a name="section-Functions"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Functions</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="get_server"></a><span class="summary-sig-name">get_server</span>(<span class="summary-sig-arg">hostname</span>=<span class="summary-sig-default">""</span>,
+        <span class="summary-sig-arg">port</span>=<span class="summary-sig-default">7766</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.EPhysGUI-pysrc.html#get_server">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+</table>
+<!-- ==================== VARIABLES ==================== -->
+<a name="section-Variables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Variables</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="__version__"></a><span class="summary-name">__version__</span> = <code title="'1.1.dev'">'1.1.dev'</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="__cvs__"></a><span class="summary-name">__cvs__</span> = <code title="'$Revision: 1455 $'.split() [1]">'$Revision: 1455 $'.split() [1]</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.PyroApps.EPhysGUI-module.html#__date__" class="summary-name">__date__</a> = <code title="' '.join('$Date: 2008-06-07 08:42:14 -0700 (Sat, 07 Jun 2008) $'.split\
+() [1: 3])">' '.join('$Date: 2008-06-07 08:42:14 -0700 (Sat, 07<code class="variable-ellipsis">...</code></code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="__author__"></a><span class="summary-name">__author__</span> = <code title="'Andrew Straw <astraw at users.sourceforge.net>'">'Andrew Straw <astraw at users.sourceforge.net>'</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="client_list"></a><span class="summary-name">client_list</span> = <code title="[]">[]</code>
+    </td>
+  </tr>
+</table>
+<!-- ==================== VARIABLES DETAILS ==================== -->
+<a name="section-VariablesDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Variables Details</span></td>
+</tr>
+</table>
+<a name="__date__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">__date__</h3>
+  
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+' '.join('$Date: 2008-06-07 08:42:14 -0700 (Sat, 07 Jun 2008) $'.split<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+() [1: 3])
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.PyroApps.EPhysGUI-pysrc.html b/doc/reference/html/VisionEgg.PyroApps.EPhysGUI-pysrc.html
new file mode 100644
index 0000000..8ca8371
--- /dev/null
+++ b/doc/reference/html/VisionEgg.PyroApps.EPhysGUI-pysrc.html
@@ -0,0 +1,3604 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.PyroApps.EPhysGUI</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.PyroApps-module.html">Package PyroApps</a> ::
+        Module EPhysGUI
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.PyroApps.EPhysGUI-pysrc.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<h1 class="epydoc">Source Code for <a href="VisionEgg.PyroApps.EPhysGUI-module.html">Module VisionEgg.PyroApps.EPhysGUI</a></h1>
+<pre class="py-src">
+<a name="L1"></a><tt class="py-lineno">   1</tt>  <tt class="py-line"><tt class="py-comment">#!/usr/bin/env python</tt> </tt>
+<a name="L2"></a><tt class="py-lineno">   2</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L3"></a><tt class="py-lineno">   3</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># The Vision Egg: EPhysGUI</tt> </tt>
+<a name="L4"></a><tt class="py-lineno">   4</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L5"></a><tt class="py-lineno">   5</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Copyright (C) 2001-2004 Andrew Straw.</tt> </tt>
+<a name="L6"></a><tt class="py-lineno">   6</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Copyright (C) 2004 Imran S. Ali, Lachlan Dowd</tt> </tt>
+<a name="L7"></a><tt class="py-lineno">   7</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Copyright (C) 2004, 2008 California Institute of Technology</tt> </tt>
+<a name="L8"></a><tt class="py-lineno">   8</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L9"></a><tt class="py-lineno">   9</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Author: Andrew Straw <astraw at users.sourceforge.net></tt> </tt>
+<a name="L10"></a><tt class="py-lineno">  10</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># URL: <http://www.visionegg.org/></tt> </tt>
+<a name="L11"></a><tt class="py-lineno">  11</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L12"></a><tt class="py-lineno">  12</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Distributed under the terms of the GNU Lesser General Public License</tt> </tt>
+<a name="L13"></a><tt class="py-lineno">  13</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># (LGPL). See LICENSE.TXT that came with this file.</tt> </tt>
+<a name="L14"></a><tt class="py-lineno">  14</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L15"></a><tt class="py-lineno">  15</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># $Id: EPhysGUI.py 1455 2008-06-07 15:42:14Z astraw $</tt> </tt>
+<a name="L16"></a><tt class="py-lineno">  16</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L17"></a><tt class="py-lineno">  17</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-0" class="py-name" targets="Package VisionEgg=VisionEgg-module.html"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-0', 'VisionEgg', 'link-0');">VisionEgg</a></tt> </tt>
+<a name="L18"></a><tt class="py-lineno">  18</tt>  <tt class="py-line"><tt id="link-1" class="py-name" targets="Variable VisionEgg.DaqKeyboard.__version__=VisionEgg.DaqKeyboard-module.html#__version__,Variable VisionEgg.DaqLPT.__version__=VisionEgg.DaqLPT-module.html#__version__,Variable VisionEgg.GL.__version__=VisionEgg.GL-module.html#__version__,Variable VisionEgg.PyroApps.EPhysGUI.__version__=VisionEgg.PyroApps.EPhysGUI-module.html#__version__,Variable VisionEgg.PyroApps.EPhysGUIUtil [...]
+VisionEgg.DaqLPT.__version__
+VisionEgg.GL.__version__
+VisionEgg.PyroApps.EPhysGUI.__version__
+VisionEgg.PyroApps.EPhysGUIUtils.__version__
+VisionEgg.PyroApps.EPhysServer.__version__
+VisionEgg.PyroApps.GridGUI.__version__
+VisionEgg.PyroApps.GridServer.__version__
+VisionEgg.PyroApps.ScreenPositionGUI.__version__
+VisionEgg.PyroApps.ScreenPositionServer.__version__
+VisionEgg.PyroApps.SpinningDrumGUI.__version__
+VisionEgg.PyroApps.SpinningDrumServer.__version__
+VisionEgg.PyroHelpers.__version__
+VisionEgg.QuickTime.__version__
+VisionEgg.ResponseControl.__version__
+VisionEgg.SphereMap.__version__
+VisionEgg.TCPController.__version__" class="py-name" href="#" onclick="return doclink('link-1', '__version__', 'link-1');">__version__</a></tt> <tt class="py-op">=</tt> <tt id="link-2" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-2', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-3" class="py-name" targets="Variable VisionEgg.release_name=VisionEgg-module.html#release_name"><a title="VisionEgg.release_name" c [...]
+<a name="L19"></a><tt class="py-lineno">  19</tt>  <tt class="py-line"><tt id="link-4" class="py-name" targets="Variable VisionEgg.PyroApps.ColorCalGUI.__cvs__=VisionEgg.PyroApps.ColorCalGUI-module.html#__cvs__,Variable VisionEgg.PyroApps.ColorCalServer.__cvs__=VisionEgg.PyroApps.ColorCalServer-module.html#__cvs__,Variable VisionEgg.PyroApps.EPhysGUI.__cvs__=VisionEgg.PyroApps.EPhysGUI-module.html#__cvs__,Variable VisionEgg.PyroApps.EPhysGUIUtils.__cvs__=VisionEgg.PyroApps.EPhysGUIUtils- [...]
+VisionEgg.PyroApps.ColorCalServer.__cvs__
+VisionEgg.PyroApps.EPhysGUI.__cvs__
+VisionEgg.PyroApps.EPhysGUIUtils.__cvs__
+VisionEgg.PyroApps.EPhysServer.__cvs__
+VisionEgg.PyroApps.FlatGratingGUI.__cvs__
+VisionEgg.PyroApps.FlatGratingServer.__cvs__
+VisionEgg.PyroApps.GridGUI.__cvs__
+VisionEgg.PyroApps.GridServer.__cvs__
+VisionEgg.PyroApps.MouseTargetGUI.__cvs__
+VisionEgg.PyroApps.MouseTargetServer.__cvs__
+VisionEgg.PyroApps.ScreenPositionGUI.__cvs__
+VisionEgg.PyroApps.ScreenPositionServer.__cvs__
+VisionEgg.PyroApps.SphereGratingGUI.__cvs__
+VisionEgg.PyroApps.SphereGratingServer.__cvs__
+VisionEgg.PyroApps.SpinningDrumGUI.__cvs__
+VisionEgg.PyroApps.SpinningDrumServer.__cvs__
+VisionEgg.PyroApps.TargetGUI.__cvs__
+VisionEgg.PyroApps.TargetServer.__cvs__
+VisionEgg.PyroClient.__cvs__
+VisionEgg.PyroHelpers.__cvs__
+VisionEgg.TCPController.__cvs__" class="py-name" href="#" onclick="return doclink('link-4', '__cvs__', 'link-4');">__cvs__</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'$Revision: 1455 $'</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
+<a name="L20"></a><tt class="py-lineno">  20</tt>  <tt class="py-line"><tt id="link-5" class="py-name" targets="Variable VisionEgg.PyroApps.ColorCalGUI.__date__=VisionEgg.PyroApps.ColorCalGUI-module.html#__date__,Variable VisionEgg.PyroApps.ColorCalServer.__date__=VisionEgg.PyroApps.ColorCalServer-module.html#__date__,Variable VisionEgg.PyroApps.EPhysGUI.__date__=VisionEgg.PyroApps.EPhysGUI-module.html#__date__,Variable VisionEgg.PyroApps.EPhysGUIUtils.__date__=VisionEgg.PyroApps.EPhysGU [...]
+VisionEgg.PyroApps.ColorCalServer.__date__
+VisionEgg.PyroApps.EPhysGUI.__date__
+VisionEgg.PyroApps.EPhysGUIUtils.__date__
+VisionEgg.PyroApps.EPhysServer.__date__
+VisionEgg.PyroApps.FlatGratingGUI.__date__
+VisionEgg.PyroApps.FlatGratingServer.__date__
+VisionEgg.PyroApps.GridGUI.__date__
+VisionEgg.PyroApps.GridServer.__date__
+VisionEgg.PyroApps.MouseTargetGUI.__date__
+VisionEgg.PyroApps.MouseTargetServer.__date__
+VisionEgg.PyroApps.ScreenPositionGUI.__date__
+VisionEgg.PyroApps.ScreenPositionServer.__date__
+VisionEgg.PyroApps.SphereGratingGUI.__date__
+VisionEgg.PyroApps.SphereGratingServer.__date__
+VisionEgg.PyroApps.SpinningDrumGUI.__date__
+VisionEgg.PyroApps.SpinningDrumServer.__date__
+VisionEgg.PyroApps.TargetGUI.__date__
+VisionEgg.PyroApps.TargetServer.__date__
+VisionEgg.PyroClient.__date__
+VisionEgg.PyroHelpers.__date__
+VisionEgg.TCPController.__date__" class="py-name" href="#" onclick="return doclink('link-5', '__date__', 'link-5');">__date__</a></tt> <tt class="py-op">=</tt> <tt class="py-string">' '</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-string">'$Date: 2008-06-07 08:42:14 -0700 (Sat, 07 Jun 2008) $'</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-num [...]
+<a name="L21"></a><tt class="py-lineno">  21</tt>  <tt class="py-line"><tt id="link-6" class="py-name" targets="Variable VisionEgg.PyroApps.EPhysGUI.__author__=VisionEgg.PyroApps.EPhysGUI-module.html#__author__,Variable VisionEgg.PyroApps.EPhysGUIUtils.__author__=VisionEgg.PyroApps.EPhysGUIUtils-module.html#__author__,Variable VisionEgg.PyroApps.EPhysServer.__author__=VisionEgg.PyroApps.EPhysServer-module.html#__author__,Variable VisionEgg.PyroApps.GridGUI.__author__=VisionEgg.PyroApps.G [...]
+VisionEgg.PyroApps.EPhysGUIUtils.__author__
+VisionEgg.PyroApps.EPhysServer.__author__
+VisionEgg.PyroApps.GridGUI.__author__
+VisionEgg.PyroApps.GridServer.__author__
+VisionEgg.PyroApps.SpinningDrumGUI.__author__
+VisionEgg.PyroApps.SpinningDrumServer.__author__" class="py-name" href="#" onclick="return doclink('link-6', '__author__', 'link-6');">__author__</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'Andrew Straw <astraw at users.sourceforge.net>'</tt> </tt>
+<a name="L22"></a><tt class="py-lineno">  22</tt>  <tt class="py-line"> </tt>
+<a name="L23"></a><tt class="py-lineno">  23</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">sys</tt><tt class="py-op">,</tt> <tt class="py-name">socket</tt><tt class="py-op">,</tt> <tt class="py-name">re</tt><tt class="py-op">,</tt> <tt class="py-name">time</tt><tt class="py-op">,</tt> <tt class="py-name">string</tt><tt class="py-op">,</tt> <tt class="py-name">types</tt><tt class="py-op">,</tt> <tt class="py-name">os</tt> </tt>
+<a name="L24"></a><tt class="py-lineno">  24</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">parser</tt><tt class="py-op">,</tt> <tt class="py-name">symbol</tt><tt class="py-op">,</tt> <tt class="py-name">token</tt><tt class="py-op">,</tt> <tt class="py-name">compiler</tt> </tt>
+<a name="L25"></a><tt class="py-lineno">  25</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">pickle</tt><tt class="py-op">,</tt> <tt class="py-name">random</tt><tt class="py-op">,</tt> <tt class="py-name">math</tt><tt class="py-op">,</tt> <tt class="py-name">threading</tt> </tt>
+<a name="L26"></a><tt class="py-lineno">  26</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-7" class="py-name" targets="Variable VisionEgg.GUI.Tkinter=VisionEgg.GUI-module.html#Tkinter"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-7', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">,</tt> <tt id="link-8" class="py-name" targets="Variable VisionEgg.GUI.tkMessageBox=VisionEgg.GUI-module.html#tkMessageBox"><a tit [...]
+<a name="L27"></a><tt class="py-lineno">  27</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">StringIO</tt> </tt>
+<a name="L28"></a><tt class="py-lineno">  28</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">Pyro</tt> </tt>
+<a name="L29"></a><tt class="py-lineno">  29</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">numpy</tt> </tt>
+<a name="L30"></a><tt class="py-lineno">  30</tt>  <tt class="py-line"> </tt>
+<a name="L31"></a><tt class="py-lineno">  31</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-10" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-10', 'VisionEgg', 'link-0');">VisionEgg</a></tt> </tt>
+<a name="L32"></a><tt class="py-lineno">  32</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-11" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-11', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-12" class="py-name" targets="Module VisionEgg.PyroClient=VisionEgg.PyroClient-module.html,Class VisionEgg.PyroClient.PyroClient=VisionEgg.PyroClient.PyroClient-class.html"><a title="VisionEgg. [...]
+VisionEgg.PyroClient.PyroClient" class="py-name" href="#" onclick="return doclink('link-12', 'PyroClient', 'link-12');">PyroClient</a></tt> </tt>
+<a name="L33"></a><tt class="py-lineno">  33</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-13" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-13', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-14" class="py-name" targets="Package VisionEgg.PyroApps=VisionEgg.PyroApps-module.html"><a title="VisionEgg.PyroApps" class="py-name" href="#" onclick="return doclink('link-14', 'PyroApps', 'l [...]
+<a name="L34"></a><tt class="py-lineno">  34</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-16" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-16', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-17" class="py-name" targets="Module VisionEgg.GUI=VisionEgg.GUI-module.html"><a title="VisionEgg.GUI" class="py-name" href="#" onclick="return doclink('link-17', 'GUI', 'link-17');">GUI</a></t [...]
+<a name="L35"></a><tt class="py-lineno">  35</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-18" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-18', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-19" class="py-name" targets="Module VisionEgg.ParameterTypes=VisionEgg.ParameterTypes-module.html"><a title="VisionEgg.ParameterTypes" class="py-name" href="#" onclick="return doclink('link-19 [...]
+<a name="L36"></a><tt class="py-lineno">  36</tt>  <tt class="py-line"> </tt>
+<a name="L37"></a><tt class="py-lineno">  37</tt>  <tt class="py-line"><tt class="py-comment"># Add your client modules here</tt> </tt>
+<a name="L38"></a><tt class="py-lineno">  38</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-keyword">import</tt> <tt id="link-20" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-20', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-21" class="py-name"><a title="VisionEgg.PyroApps" class="py-name" href="#" onclick="return doclink('link-21', 'PyroApps', 'link-14');">PyroApps</a></tt><tt class="p [...]
+<a name="L39"></a><tt class="py-lineno">  39</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-23" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-23', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-24" class="py-name"><a title="VisionEgg.PyroApps" class="py-name" href="#" onclick="return doclink('link-24', 'PyroApps', 'link-14');">PyroApps</a></tt><tt class="py-op">.</tt><tt id="link-25" [...]
+<a name="L40"></a><tt class="py-lineno">  40</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-26" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-26', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-27" class="py-name"><a title="VisionEgg.PyroApps" class="py-name" href="#" onclick="return doclink('link-27', 'PyroApps', 'link-14');">PyroApps</a></tt><tt class="py-op">.</tt><tt id="link-28" [...]
+<a name="L41"></a><tt class="py-lineno">  41</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-29" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-29', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-30" class="py-name"><a title="VisionEgg.PyroApps" class="py-name" href="#" onclick="return doclink('link-30', 'PyroApps', 'link-14');">PyroApps</a></tt><tt class="py-op">.</tt><tt id="link-31" [...]
+<a name="L42"></a><tt class="py-lineno">  42</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-32" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-32', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-33" class="py-name"><a title="VisionEgg.PyroApps" class="py-name" href="#" onclick="return doclink('link-33', 'PyroApps', 'link-14');">PyroApps</a></tt><tt class="py-op">.</tt><tt id="link-34" [...]
+<a name="L43"></a><tt class="py-lineno">  43</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-35" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-35', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-36" class="py-name"><a title="VisionEgg.PyroApps" class="py-name" href="#" onclick="return doclink('link-36', 'PyroApps', 'link-14');">PyroApps</a></tt><tt class="py-op">.</tt><tt id="link-37" [...]
+<a name="L44"></a><tt class="py-lineno">  44</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-38" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-38', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-39" class="py-name"><a title="VisionEgg.PyroApps" class="py-name" href="#" onclick="return doclink('link-39', 'PyroApps', 'link-14');">PyroApps</a></tt><tt class="py-op">.</tt><tt id="link-40" [...]
+<a name="L45"></a><tt class="py-lineno">  45</tt>  <tt class="py-line"> </tt>
+<a name="L46"></a><tt class="py-lineno">  46</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-41" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-41', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-42" class="py-name"><a title="VisionEgg.PyroApps" class="py-name" href="#" onclick="return doclink('link-42', 'PyroApps', 'link-14');">PyroApps</a></tt><tt class="py-op">.</tt><tt id="link-43" [...]
+<a name="L47"></a><tt class="py-lineno">  47</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-44" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-44', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-45" class="py-name"><a title="VisionEgg.PyroApps" class="py-name" href="#" onclick="return doclink('link-45', 'PyroApps', 'link-14');">PyroApps</a></tt><tt class="py-op">.</tt><tt id="link-46" [...]
+<a name="L48"></a><tt class="py-lineno">  48</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-48" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-48', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-49" class="py-name"><a title="VisionEgg.PyroApps" class="py-name" href="#" onclick="return doclink('link-49', 'PyroApps', 'link-14');">PyroApps</a></tt><tt class="py-op">.</tt><tt id="link-50" [...]
+<a name="L49"></a><tt class="py-lineno">  49</tt>  <tt class="py-line"> </tt>
+<a name="L50"></a><tt class="py-lineno">  50</tt>  <tt class="py-line"><tt id="link-52" class="py-name" targets="Variable VisionEgg.PyroApps.EPhysGUI.client_list=VisionEgg.PyroApps.EPhysGUI-module.html#client_list"><a title="VisionEgg.PyroApps.EPhysGUI.client_list" class="py-name" href="#" onclick="return doclink('link-52', 'client_list', 'link-52');">client_list</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L51"></a><tt class="py-lineno">  51</tt>  <tt class="py-line"><tt id="link-53" class="py-name"><a title="VisionEgg.PyroApps.EPhysGUI.client_list" class="py-name" href="#" onclick="return doclink('link-53', 'client_list', 'link-52');">client_list</a></tt><tt class="py-op">.</tt><tt class="py-name">extend</tt><tt class="py-op">(</tt> <tt id="link-54" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-54', 'VisionEgg', 'link-0');">VisionEgg< [...]
+VisionEgg.PyroApps.DropinGUI.get_control_list
+VisionEgg.PyroApps.FlatGratingGUI.get_control_list
+VisionEgg.PyroApps.GridGUI.get_control_list
+VisionEgg.PyroApps.MouseTargetGUI.get_control_list
+VisionEgg.PyroApps.SphereGratingGUI.get_control_list
+VisionEgg.PyroApps.SpinningDrumGUI.get_control_list
+VisionEgg.PyroApps.TargetGUI.get_control_list" class="py-name" href="#" onclick="return doclink('link-57', 'get_control_list', 'link-57');">get_control_list</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">)</tt> </tt>
+<a name="L52"></a><tt class="py-lineno">  52</tt>  <tt class="py-line"><tt id="link-58" class="py-name"><a title="VisionEgg.PyroApps.EPhysGUI.client_list" class="py-name" href="#" onclick="return doclink('link-58', 'client_list', 'link-52');">client_list</a></tt><tt class="py-op">.</tt><tt class="py-name">extend</tt><tt class="py-op">(</tt> <tt id="link-59" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-59', 'VisionEgg', 'link-0');">VisionEgg< [...]
+VisionEgg.PyroApps.DropinGUI.get_control_list
+VisionEgg.PyroApps.FlatGratingGUI.get_control_list
+VisionEgg.PyroApps.GridGUI.get_control_list
+VisionEgg.PyroApps.MouseTargetGUI.get_control_list
+VisionEgg.PyroApps.SphereGratingGUI.get_control_list
+VisionEgg.PyroApps.SpinningDrumGUI.get_control_list
+VisionEgg.PyroApps.TargetGUI.get_control_list" class="py-name" href="#" onclick="return doclink('link-62', 'get_control_list', 'link-57');">get_control_list</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">)</tt> </tt>
+<a name="L53"></a><tt class="py-lineno">  53</tt>  <tt class="py-line"><tt id="link-63" class="py-name"><a title="VisionEgg.PyroApps.EPhysGUI.client_list" class="py-name" href="#" onclick="return doclink('link-63', 'client_list', 'link-52');">client_list</a></tt><tt class="py-op">.</tt><tt class="py-name">extend</tt><tt class="py-op">(</tt> <tt id="link-64" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-64', 'VisionEgg', 'link-0');">VisionEgg< [...]
+VisionEgg.PyroApps.DropinGUI.get_control_list
+VisionEgg.PyroApps.FlatGratingGUI.get_control_list
+VisionEgg.PyroApps.GridGUI.get_control_list
+VisionEgg.PyroApps.MouseTargetGUI.get_control_list
+VisionEgg.PyroApps.SphereGratingGUI.get_control_list
+VisionEgg.PyroApps.SpinningDrumGUI.get_control_list
+VisionEgg.PyroApps.TargetGUI.get_control_list" class="py-name" href="#" onclick="return doclink('link-67', 'get_control_list', 'link-57');">get_control_list</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">)</tt> </tt>
+<a name="L54"></a><tt class="py-lineno">  54</tt>  <tt class="py-line"><tt id="link-68" class="py-name"><a title="VisionEgg.PyroApps.EPhysGUI.client_list" class="py-name" href="#" onclick="return doclink('link-68', 'client_list', 'link-52');">client_list</a></tt><tt class="py-op">.</tt><tt class="py-name">extend</tt><tt class="py-op">(</tt> <tt id="link-69" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-69', 'VisionEgg', 'link-0');">VisionEgg< [...]
+VisionEgg.PyroApps.DropinGUI.get_control_list
+VisionEgg.PyroApps.FlatGratingGUI.get_control_list
+VisionEgg.PyroApps.GridGUI.get_control_list
+VisionEgg.PyroApps.MouseTargetGUI.get_control_list
+VisionEgg.PyroApps.SphereGratingGUI.get_control_list
+VisionEgg.PyroApps.SpinningDrumGUI.get_control_list
+VisionEgg.PyroApps.TargetGUI.get_control_list" class="py-name" href="#" onclick="return doclink('link-72', 'get_control_list', 'link-57');">get_control_list</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">)</tt> </tt>
+<a name="L55"></a><tt class="py-lineno">  55</tt>  <tt class="py-line"><tt id="link-73" class="py-name"><a title="VisionEgg.PyroApps.EPhysGUI.client_list" class="py-name" href="#" onclick="return doclink('link-73', 'client_list', 'link-52');">client_list</a></tt><tt class="py-op">.</tt><tt class="py-name">extend</tt><tt class="py-op">(</tt> <tt id="link-74" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-74', 'VisionEgg', 'link-0');">VisionEgg< [...]
+VisionEgg.PyroApps.DropinGUI.get_control_list
+VisionEgg.PyroApps.FlatGratingGUI.get_control_list
+VisionEgg.PyroApps.GridGUI.get_control_list
+VisionEgg.PyroApps.MouseTargetGUI.get_control_list
+VisionEgg.PyroApps.SphereGratingGUI.get_control_list
+VisionEgg.PyroApps.SpinningDrumGUI.get_control_list
+VisionEgg.PyroApps.TargetGUI.get_control_list" class="py-name" href="#" onclick="return doclink('link-77', 'get_control_list', 'link-57');">get_control_list</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">)</tt> </tt>
+<a name="L56"></a><tt class="py-lineno">  56</tt>  <tt class="py-line"><tt id="link-78" class="py-name"><a title="VisionEgg.PyroApps.EPhysGUI.client_list" class="py-name" href="#" onclick="return doclink('link-78', 'client_list', 'link-52');">client_list</a></tt><tt class="py-op">.</tt><tt class="py-name">extend</tt><tt class="py-op">(</tt> <tt id="link-79" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-79', 'VisionEgg', 'link-0');">VisionEgg< [...]
+VisionEgg.PyroApps.DropinGUI.get_control_list
+VisionEgg.PyroApps.FlatGratingGUI.get_control_list
+VisionEgg.PyroApps.GridGUI.get_control_list
+VisionEgg.PyroApps.MouseTargetGUI.get_control_list
+VisionEgg.PyroApps.SphereGratingGUI.get_control_list
+VisionEgg.PyroApps.SpinningDrumGUI.get_control_list
+VisionEgg.PyroApps.TargetGUI.get_control_list" class="py-name" href="#" onclick="return doclink('link-82', 'get_control_list', 'link-57');">get_control_list</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">)</tt> </tt>
+<a name="L57"></a><tt class="py-lineno">  57</tt>  <tt class="py-line"><tt id="link-83" class="py-name"><a title="VisionEgg.PyroApps.EPhysGUI.client_list" class="py-name" href="#" onclick="return doclink('link-83', 'client_list', 'link-52');">client_list</a></tt><tt class="py-op">.</tt><tt class="py-name">extend</tt><tt class="py-op">(</tt> <tt id="link-84" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-84', 'VisionEgg', 'link-0');">VisionEgg< [...]
+VisionEgg.PyroApps.DropinGUI.get_control_list
+VisionEgg.PyroApps.FlatGratingGUI.get_control_list
+VisionEgg.PyroApps.GridGUI.get_control_list
+VisionEgg.PyroApps.MouseTargetGUI.get_control_list
+VisionEgg.PyroApps.SphereGratingGUI.get_control_list
+VisionEgg.PyroApps.SpinningDrumGUI.get_control_list
+VisionEgg.PyroApps.TargetGUI.get_control_list" class="py-name" href="#" onclick="return doclink('link-87', 'get_control_list', 'link-57');">get_control_list</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">)</tt> </tt>
+<a name="L58"></a><tt class="py-lineno">  58</tt>  <tt class="py-line"><tt id="link-88" class="py-name"><a title="VisionEgg.PyroApps.EPhysGUI.client_list" class="py-name" href="#" onclick="return doclink('link-88', 'client_list', 'link-52');">client_list</a></tt><tt class="py-op">.</tt><tt class="py-name">extend</tt><tt class="py-op">(</tt> <tt id="link-89" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-89', 'VisionEgg', 'link-0');">VisionEgg< [...]
+VisionEgg.PyroApps.DropinGUI.get_control_list
+VisionEgg.PyroApps.FlatGratingGUI.get_control_list
+VisionEgg.PyroApps.GridGUI.get_control_list
+VisionEgg.PyroApps.MouseTargetGUI.get_control_list
+VisionEgg.PyroApps.SphereGratingGUI.get_control_list
+VisionEgg.PyroApps.SpinningDrumGUI.get_control_list
+VisionEgg.PyroApps.TargetGUI.get_control_list" class="py-name" href="#" onclick="return doclink('link-92', 'get_control_list', 'link-57');">get_control_list</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">)</tt> </tt>
+<a name="L59"></a><tt class="py-lineno">  59</tt>  <tt class="py-line"> </tt>
+<a name="ContainedObjectBase"></a><div id="ContainedObjectBase-def"><a name="L60"></a><tt class="py-lineno">  60</tt> <a class="py-toggle" href="#" id="ContainedObjectBase-toggle" onclick="return toggle('ContainedObjectBase');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase-class.html">ContainedObjectBase</a><tt class="py-op">:</tt> </tt>
+</div><div id="ContainedObjectBase-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="ContainedObjectBase-expanded"><a name="L61"></a><tt class="py-lineno">  61</tt>  <tt class="py-line">    <tt class="py-docstring">"""Base class to encapsulate objects, provides useful methods when used in GUI"""</tt> </tt>
+<a name="ContainedObjectBase.__init__"></a><div id="ContainedObjectBase.__init__-def"><a name="L62"></a><tt class="py-lineno">  62</tt> <a class="py-toggle" href="#" id="ContainedObjectBase.__init__-toggle" onclick="return toggle('ContainedObjectBase.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt [...]
+</div><div id="ContainedObjectBase.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ContainedObjectBase.__init__-expanded"><a name="L63"></a><tt class="py-lineno">  63</tt>  <tt class="py-line">        <tt class="py-keyword">raise</tt> <tt class="py-name">RuntimeError</tt><tt class="py-op">(</tt><tt class="py-string">"Abstract base class!"</tt><tt class="py-op">)</tt> </tt>
+</div><a name="ContainedObjectBase.get_str_30"></a><div id="ContainedObjectBase.get_str_30-def"><a name="L64"></a><tt class="py-lineno">  64</tt> <a class="py-toggle" href="#" id="ContainedObjectBase.get_str_30-toggle" onclick="return toggle('ContainedObjectBase.get_str_30');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase-class.html#get_str_30">get_str_30</a><tt class="py-op">(</tt><tt class="py-p [...]
+</div><div id="ContainedObjectBase.get_str_30-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ContainedObjectBase.get_str_30-expanded"><a name="L65"></a><tt class="py-lineno">  65</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-string">"**** this is a generic str_30 ****"</tt> </tt>
+</div><a name="ContainedObjectBase.get_contained"></a><div id="ContainedObjectBase.get_contained-def"><a name="L66"></a><tt class="py-lineno">  66</tt> <a class="py-toggle" href="#" id="ContainedObjectBase.get_contained-toggle" onclick="return toggle('ContainedObjectBase.get_contained');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase-class.html#get_contained">get_contained</a><tt class="py-op">(</ [...]
+</div><div id="ContainedObjectBase.get_contained-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ContainedObjectBase.get_contained-expanded"><a name="L67"></a><tt class="py-lineno">  67</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">contained</tt> </tt>
+</div><a name="L68"></a><tt class="py-lineno">  68</tt>  <tt class="py-line">    <tt id="link-93" class="py-name" targets="Variable VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase.header=VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase-class.html#header,Variable VisionEgg.PyroApps.EPhysGUI.LoopContainedObject.header=VisionEgg.PyroApps.EPhysGUI.LoopContainedObject-class.html#header"><a title="VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase.header
+VisionEgg.PyroApps.EPhysGUI.LoopContainedObject.header" class="py-name" href="#" onclick="return doclink('link-93', 'header', 'link-93');">header</a></tt> <tt class="py-op">=</tt> <tt class="py-string">"unknown parameters"</tt> </tt>
+</div><a name="L69"></a><tt class="py-lineno">  69</tt>  <tt class="py-line"> </tt>
+<a name="ScrollListFrame"></a><div id="ScrollListFrame-def"><a name="L70"></a><tt class="py-lineno">  70</tt> <a class="py-toggle" href="#" id="ScrollListFrame-toggle" onclick="return toggle('ScrollListFrame');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.PyroApps.EPhysGUI.ScrollListFrame-class.html">ScrollListFrame</a><tt class="py-op">(</tt><tt class="py-base-class">Tkinter</tt><tt class="py-op">.</tt><tt class="py-base-class">Frame [...]
+</div><div id="ScrollListFrame-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="ScrollListFrame-expanded"><a name="ScrollListFrame.__init__"></a><div id="ScrollListFrame.__init__-def"><a name="L71"></a><tt class="py-lineno">  71</tt> <a class="py-toggle" href="#" id="ScrollListFrame.__init__-toggle" onclick="return toggle('ScrollListFrame.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.EPhys [...]
+<a name="L72"></a><tt class="py-lineno">  72</tt>  <tt class="py-line">                 <tt class="py-param">container_class</tt><tt class="py-op">=</tt><tt id="link-94" class="py-name" targets="Class VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase=VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase-class.html"><a title="VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase" class="py-name" href="#" onclick="return doclink('link-94', 'ContainedObjectBase', 'link-94');">ContainedObjectBase</a></tt> [...]
+<a name="L73"></a><tt class="py-lineno">  73</tt>  <tt class="py-line">                 <tt class="py-op">**</tt><tt class="py-param">cnf</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ScrollListFrame.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ScrollListFrame.__init__-expanded"><a name="L74"></a><tt class="py-lineno">  74</tt>  <tt class="py-line">        <tt id="link-95" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-95', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Frame</tt><tt class="py-op">.</tt><tt id="link-96" c [...]
+VisionEgg.Configuration.Config.__init__
+VisionEgg.Core.FixationSpot.__init__
+VisionEgg.Core.FrameTimer.__init__
+VisionEgg.Core.ModelView.__init__
+VisionEgg.Core.OrthographicProjection.__init__
+VisionEgg.Core.OrthographicProjectionNoZClip.__init__
+VisionEgg.Core.PerspectiveProjection.__init__
+VisionEgg.Core.Projection.__init__
+VisionEgg.Core.ProjectionBaseClass.__init__
+VisionEgg.Core.Screen.__init__
+VisionEgg.Core.SimplePerspectiveProjection.__init__
+VisionEgg.Core.Stimulus.__init__
+VisionEgg.Core.Viewport.__init__
+VisionEgg.Daq.Channel.__init__
+VisionEgg.Daq.DaqMode.__init__
+VisionEgg.Daq.Device.__init__
+VisionEgg.Daq.Functionality.__init__
+VisionEgg.Daq.SignalType.__init__
+VisionEgg.DaqKeyboard.KeyboardTriggerInController.__init__
+VisionEgg.DaqLPT.LPTChannel.__init__
+VisionEgg.DaqLPT.LPTDevice.__init__
+VisionEgg.DaqLPT.LPTTriggerInController.__init__
+VisionEgg.DaqLPT.LPTTriggerOutController.__init__
+VisionEgg.Deprecated.Message.__init__
+VisionEgg.Dots.DotArea2D.__init__
+VisionEgg.FlowControl.ConstantController.__init__
+VisionEgg.FlowControl.Controller.__init__
+VisionEgg.FlowControl.EncapsulatedController.__init__
+VisionEgg.FlowControl.EvalStringController.__init__
+VisionEgg.FlowControl.ExecStringController.__init__
+VisionEgg.FlowControl.FunctionController.__init__
+VisionEgg.FlowControl.Presentation.__init__
+VisionEgg.GLTrace.Wrapper.__init__
+VisionEgg.GUI.AppWindow.__init__
+VisionEgg.GUI.GetKeypressDialog.__init__
+VisionEgg.GUI.GraphicsConfigurationWindow.__init__
+VisionEgg.GUI.InfoFrame.__init__
+VisionEgg.GUI.ProgressBar.__init__
+VisionEgg.GUI.ToplevelDialog.__init__
+VisionEgg.Gratings.SinGrating2D.__init__
+VisionEgg.Gratings.SinGrating3D.__init__
+VisionEgg.MoreStimuli.Arrow.__init__
+VisionEgg.MoreStimuli.FilledCircle.__init__
+VisionEgg.MoreStimuli.Rectangle3D.__init__
+VisionEgg.MoreStimuli.Target2D.__init__
+VisionEgg.ParameterTypes.AnyOf.__init__
+VisionEgg.ParameterTypes.Instance.__init__
+VisionEgg.ParameterTypes.Sequence.__init__
+VisionEgg.ParameterTypes.SubClass.__init__
+VisionEgg.PyroApps.AST_ext.AST_Visitor.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalMetaParameters.__init__
+VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.__init__
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.__init__
+VisionEgg.PyroApps.DropinGUI.DropinMetaParameters.__init__
+VisionEgg.PyroApps.DropinServer.DropinMetaController.__init__
+VisionEgg.PyroApps.EPhysGUI.AppWindow.__init__
+VisionEgg.PyroApps.EPhysGUI.BarButton.__init__
+VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase.__init__
+VisionEgg.PyroApps.EPhysGUI.GammaFrame.__init__
+VisionEgg.PyroApps.EPhysGUI.ImageSequenceLauncher.__init__
+VisionEgg.PyroApps.EPhysGUI.Loop.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopContainedObject.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopParamDialog.__init__
+VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.__init__
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.__init__
+VisionEgg.PyroApps.EPhysServer.EPhysServer.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingMetaParameters.__init__
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.GridGUI.GridControlFrame.__init__
+VisionEgg.PyroApps.GridGUI.GridMetaParameters.__init__
+VisionEgg.PyroApps.GridServer.GridMetaController.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetMetaParameters.__init__
+VisionEgg.PyroApps.MouseTargetServer.MousePositionController.__init__
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetOrientationController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetPositionController.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.CallbackEntry.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionParameters.__init__
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingMetaParameters.__init__
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumMetaParameters.__init__
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.__init__
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.__init__
+VisionEgg.PyroApps.TargetGUI.TargetMetaParameters.__init__
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.__init__
+VisionEgg.PyroClient.PyroClient.__init__
+VisionEgg.PyroHelpers.PyroConstantController.__init__
+VisionEgg.PyroHelpers.PyroEncapsulatedController.__init__
+VisionEgg.PyroHelpers.PyroEvalStringController.__init__
+VisionEgg.PyroHelpers.PyroExecStringController.__init__
+VisionEgg.PyroHelpers.PyroListenController.__init__
+VisionEgg.PyroHelpers.PyroLocalDictController.__init__
+VisionEgg.PyroHelpers.PyroServer.__init__
+VisionEgg.QuickTime.MovieTexture.__init__
+VisionEgg.ResponseControl.KeyboardResponseController.__init__
+VisionEgg.ResponseControl.ResponseController.__init__
+VisionEgg.SphereMap.AzElGrid.__init__
+VisionEgg.SphereMap.SphereGrating.__init__
+VisionEgg.SphereMap.SphereMap.__init__
+VisionEgg.SphereMap.SphereWindow.__init__
+VisionEgg.TCPController.SocketListenController.__init__
+VisionEgg.TCPController.TCPController.__init__
+VisionEgg.TCPController.TCPServer.__init__
+VisionEgg.Text.BitmapText.__init__
+VisionEgg.Text.GlutTextBase.__init__
+VisionEgg.Text.StrokeText.__init__
+VisionEgg.Text.Text.__init__
+VisionEgg.Textures.FixationCross.__init__
+VisionEgg.Textures.Mask2D.__init__
+VisionEgg.Textures.SpinningDrum.__init__
+VisionEgg.Textures.Texture.__init__
+VisionEgg.Textures.TextureFromFile.__init__
+VisionEgg.Textures.TextureObject.__init__
+VisionEgg.Textures.TextureStimulusBaseClass.__init__
+VisionEgg.ThreeDeeMath.TransformMatrix.__init__
+VisionEgg.WrappedText.WrappedText.__init__
+VisionEgg.qtmovie.Movie.__init__
+VisionEgg.qtmovie.Rect.__init__" class="py-name" href="#" onclick="return doclink('link-96', '__init__', 'link-96');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-name">master</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-name">cnf</tt><tt class="py-op">)</tt> </tt>
+<a name="L75"></a><tt class="py-lineno">  75</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">list_of_contained_objects</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L76"></a><tt class="py-lineno">  76</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">list</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L77"></a><tt class="py-lineno">  77</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L78"></a><tt class="py-lineno">  78</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">list</tt> <tt class="py-op">=</tt> <tt class="py-name">list_of_contained_objects</tt> </tt>
+<a name="L79"></a><tt class="py-lineno">  79</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">container_class</tt> <tt class="py-op">=</tt> <tt class="py-name">container_class</tt> </tt>
+<a name="L80"></a><tt class="py-lineno">  80</tt>  <tt class="py-line"> </tt>
+<a name="L81"></a><tt class="py-lineno">  81</tt>  <tt class="py-line">        <tt class="py-comment"># allow column to expand</tt> </tt>
+<a name="L82"></a><tt class="py-lineno">  82</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">columnconfigure</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">,</tt><tt class="py-name">weight</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="L83"></a><tt class="py-lineno">  83</tt>  <tt class="py-line"> </tt>
+<a name="L84"></a><tt class="py-lineno">  84</tt>  <tt class="py-line">        <tt class="py-comment"># The frame that has the list and the vscroll</tt> </tt>
+<a name="L85"></a><tt class="py-lineno">  85</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">frame</tt> <tt class="py-op">=</tt> <tt id="link-97" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-97', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Frame</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt  [...]
+<a name="L86"></a><tt class="py-lineno">  86</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">frame</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">,</tt><tt class="py-name">sticky</tt><tt class="py-op">=</tt><tt class="py-string">"nwes"</tt><tt class="py-op">)</tt> </tt>
+<a name="L87"></a><tt class="py-lineno">  87</tt>  <tt class="py-line"> </tt>
+<a name="L88"></a><tt class="py-lineno">  88</tt>  <tt class="py-line">        <tt class="py-comment"># allow column to expand</tt> </tt>
+<a name="L89"></a><tt class="py-lineno">  89</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">frame</tt><tt class="py-op">.</tt><tt class="py-name">columnconfigure</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">,</tt><tt class="py-name">weight</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="L90"></a><tt class="py-lineno">  90</tt>  <tt class="py-line"> </tt>
+<a name="L91"></a><tt class="py-lineno">  91</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">frame</tt><tt class="py-op">.</tt><tt class="py-name">vscroll</tt> <tt class="py-op">=</tt> <tt id="link-98" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-98', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Scrollbar</tt><tt class="py-op">(</tt>< [...]
+<a name="L92"></a><tt class="py-lineno">  92</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">frame</tt><tt class="py-op">.</tt><tt class="py-name">hscroll</tt> <tt class="py-op">=</tt> <tt id="link-100" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-100', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Scrollbar</tt><tt class="py-op">(</tt [...]
+<a name="L93"></a><tt class="py-lineno">  93</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">frame</tt><tt class="py-op">.</tt><tt id="link-102" class="py-name" targets="Variable VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.title=VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame-class.html#title,Variable VisionEgg.PyroApps.DropinGUI.DropinControlFrame.title=VisionEgg.PyroApps.DropinGUI.DropinControlFrame-class.html#title [...]
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.title
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.title
+VisionEgg.PyroApps.GridGUI.GridControlFrame.title
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.title
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.title
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.title
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.title" class="py-name" href="#" onclick="return doclink('link-102', 'title', 'link-102');">title</a></tt> <tt class="py-op">=</tt> <tt id="link-103" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-103', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Listbox</tt><tt class="py-op">(</tt> </tt>
+<a name="L94"></a><tt class="py-lineno">  94</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">frame</tt><tt class="py-op">,</tt> </tt>
+<a name="L95"></a><tt class="py-lineno">  95</tt>  <tt class="py-line">            <tt class="py-name">relief</tt><tt class="py-op">=</tt><tt id="link-104" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-104', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">FLAT</tt><tt class="py-op">,</tt> </tt>
+<a name="L96"></a><tt class="py-lineno">  96</tt>  <tt class="py-line">            <tt class="py-name">font</tt><tt class="py-op">=</tt><tt class="py-op">(</tt><tt class="py-string">'courier'</tt><tt class="py-op">,</tt><tt class="py-number">10</tt><tt class="py-op">,</tt><tt class="py-string">'bold'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L97"></a><tt class="py-lineno">  97</tt>  <tt class="py-line">            <tt class="py-name">height</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py-op">,</tt> </tt>
+<a name="L98"></a><tt class="py-lineno">  98</tt>  <tt class="py-line"><tt class="py-comment">#            selectbackground='#eed5b7',</tt> </tt>
+<a name="L99"></a><tt class="py-lineno">  99</tt>  <tt class="py-line"><tt class="py-comment">#            selectborderwidth=0,</tt> </tt>
+<a name="L100"></a><tt class="py-lineno"> 100</tt>  <tt class="py-line"><tt class="py-comment">#            selectmode=None,</tt> </tt>
+<a name="L101"></a><tt class="py-lineno"> 101</tt>  <tt class="py-line">            <tt class="py-name">exportselection</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">)</tt> </tt>
+<a name="L102"></a><tt class="py-lineno"> 102</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">frame</tt><tt class="py-op">.</tt><tt id="link-105" class="py-name"><a title="VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.title
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.title
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.title
+VisionEgg.PyroApps.GridGUI.GridControlFrame.title
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.title
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.title
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.title
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.title" class="py-name" href="#" onclick="return doclink('link-105', 'title', 'link-102');">title</a></tt><tt class="py-op">.</tt><tt class="py-name">insert</tt><tt class="py-op">(</tt><tt id="link-106" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-106', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">END</tt><tt class="py-op">,</tt> <tt class="py-na [...]
+VisionEgg.PyroApps.EPhysGUI.LoopContainedObject.header" class="py-name" href="#" onclick="return doclink('link-107', 'header', 'link-93');">header</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L103"></a><tt class="py-lineno"> 103</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">frame</tt><tt class="py-op">.</tt><tt class="py-name">list</tt> <tt class="py-op">=</tt> <tt id="link-108" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-108', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Listbox</tt><tt class="py-op">(</tt> </tt>
+<a name="L104"></a><tt class="py-lineno"> 104</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">frame</tt><tt class="py-op">,</tt> </tt>
+<a name="L105"></a><tt class="py-lineno"> 105</tt>  <tt class="py-line">            <tt class="py-name">relief</tt><tt class="py-op">=</tt><tt id="link-109" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-109', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">SUNKEN</tt><tt class="py-op">,</tt> </tt>
+<a name="L106"></a><tt class="py-lineno"> 106</tt>  <tt class="py-line">            <tt class="py-name">font</tt><tt class="py-op">=</tt><tt class="py-op">(</tt><tt class="py-string">'courier'</tt><tt class="py-op">,</tt><tt class="py-number">10</tt><tt class="py-op">,</tt><tt class="py-string">'normal'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L107"></a><tt class="py-lineno"> 107</tt>  <tt class="py-line">            <tt class="py-name">width</tt><tt class="py-op">=</tt><tt class="py-number">40</tt><tt class="py-op">,</tt> <tt class="py-name">height</tt><tt class="py-op">=</tt><tt class="py-number">10</tt><tt class="py-op">,</tt> </tt>
+<a name="L108"></a><tt class="py-lineno"> 108</tt>  <tt class="py-line">            <tt class="py-name">selectbackground</tt><tt class="py-op">=</tt><tt class="py-string">'#eed5b7'</tt><tt class="py-op">,</tt> </tt>
+<a name="L109"></a><tt class="py-lineno"> 109</tt>  <tt class="py-line">            <tt class="py-name">selectborderwidth</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> </tt>
+<a name="L110"></a><tt class="py-lineno"> 110</tt>  <tt class="py-line">            <tt class="py-name">selectmode</tt><tt class="py-op">=</tt><tt id="link-110" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-110', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">BROWSE</tt><tt class="py-op">,</tt> </tt>
+<a name="L111"></a><tt class="py-lineno"> 111</tt>  <tt class="py-line">            <tt class="py-name">xscroll</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">frame</tt><tt class="py-op">.</tt><tt class="py-name">hscroll</tt><tt class="py-op">.</tt><tt id="link-111" class="py-name" targets="Method VisionEgg.ClassWithParameters.set()=VisionEgg.ClassWithParameters-class.html#set"><a title="VisionEgg.ClassWithParameters.set" class="py-na [...]
+<a name="L112"></a><tt class="py-lineno"> 112</tt>  <tt class="py-line">            <tt class="py-name">yscroll</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">frame</tt><tt class="py-op">.</tt><tt class="py-name">vscroll</tt><tt class="py-op">.</tt><tt id="link-112" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-112', 'set', 'link-111');">set</a></tt><tt class="py-op [...]
+<a name="L113"></a><tt class="py-lineno"> 113</tt>  <tt class="py-line">            <tt class="py-name">exportselection</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">)</tt> </tt>
+<a name="L114"></a><tt class="py-lineno"> 114</tt>  <tt class="py-line"> </tt>
+<a name="L115"></a><tt class="py-lineno"> 115</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">frame</tt><tt class="py-op">.</tt><tt class="py-name">hscroll</tt><tt class="py-op">[</tt><tt class="py-string">'command'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-113" class="py-name" targets="Method VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.delegate_hscroll [...]
+<a name="L116"></a><tt class="py-lineno"> 116</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">frame</tt><tt class="py-op">.</tt><tt class="py-name">hscroll</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-number">3</tt><tt class="py-op">,</tt><tt class="py-name">column</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class [...]
+<a name="L117"></a><tt class="py-lineno"> 117</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">frame</tt><tt class="py-op">.</tt><tt class="py-name">vscroll</tt><tt class="py-op">[</tt><tt class="py-string">'command'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">frame</tt><tt class="py-op">.</tt><tt class="py-name">list</tt><tt class="py-op">.</tt><tt [...]
+<a name="L118"></a><tt class="py-lineno"> 118</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">frame</tt><tt class="py-op">.</tt><tt class="py-name">vscroll</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-number">2</tt><tt class="py-op">,</tt><tt class="py-name">column</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class [...]
+<a name="L119"></a><tt class="py-lineno"> 119</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">frame</tt><tt class="py-op">.</tt><tt id="link-114" class="py-name"><a title="VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.title
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.title
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.title
+VisionEgg.PyroApps.GridGUI.GridControlFrame.title
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.title
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.title
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.title
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.title" class="py-name" href="#" onclick="return doclink('link-114', 'title', 'link-102');">title</a></tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py-op">,</tt><tt class="py-name">column</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">,</tt><tt class="py-name">ipady</tt><tt class="py-op">=</ [...]
+<a name="L120"></a><tt class="py-lineno"> 120</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">frame</tt><tt class="py-op">.</tt><tt class="py-name">list</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-number">2</tt><tt class="py-op">,</tt><tt class="py-name">column</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="p [...]
+<a name="L121"></a><tt class="py-lineno"> 121</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">frame</tt><tt class="py-op">.</tt><tt class="py-name">list</tt><tt class="py-op">.</tt><tt class="py-name">bind</tt><tt class="py-op">(</tt><tt class="py-string">'<Double-Button-1>'</tt><tt class="py-op">,</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-115" class="py-name" targets="Method VisionEgg.PyroApps.E [...]
+<a name="L122"></a><tt class="py-lineno"> 122</tt>  <tt class="py-line"> </tt>
+<a name="L123"></a><tt class="py-lineno"> 123</tt>  <tt class="py-line">        <tt class="py-comment"># The buttons on bottom</tt> </tt>
+<a name="L124"></a><tt class="py-lineno"> 124</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">bar</tt> <tt class="py-op">=</tt> <tt id="link-116" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-116', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Frame</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt [...]
+<a name="L125"></a><tt class="py-lineno"> 125</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">bar</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py-op">,</tt><tt class="py-name">sticky</tt><tt class="py-op">=</tt><tt class="py-string">"we"</tt><tt class="py-op">)</tt> </tt>
+<a name="L126"></a><tt class="py-lineno"> 126</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">bar</tt><tt class="py-op">.</tt><tt id="link-117" class="py-name" targets="Method VisionEgg.Deprecated.Message.add()=VisionEgg.Deprecated.Message-class.html#add"><a title="VisionEgg.Deprecated.Message.add" class="py-name" href="#" onclick="return doclink('link-117', 'add', 'link-117');">add</a></tt> <tt class="py-op">=</tt> <tt id="link- [...]
+<a name="L127"></a><tt class="py-lineno"> 127</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">bar</tt><tt class="py-op">.</tt><tt id="link-120" class="py-name"><a title="VisionEgg.Deprecated.Message.add" class="py-name" href="#" onclick="return doclink('link-120', 'add', 'link-117');">add</a></tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt cl [...]
+<a name="L128"></a><tt class="py-lineno"> 128</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">bar</tt><tt class="py-op">.</tt><tt class="py-name">edit</tt> <tt class="py-op">=</tt> <tt id="link-121" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-121', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Button</tt><tt class="py-op">(</tt><tt cl [...]
+<a name="L129"></a><tt class="py-lineno"> 129</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">bar</tt><tt class="py-op">.</tt><tt class="py-name">edit</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">,</tt><tt class="py-name">column</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py- [...]
+<a name="L130"></a><tt class="py-lineno"> 130</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">bar</tt><tt class="py-op">.</tt><tt class="py-name">remove</tt> <tt class="py-op">=</tt> <tt id="link-123" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-123', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Button</tt><tt class="py-op">(</tt><tt  [...]
+<a name="L131"></a><tt class="py-lineno"> 131</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">bar</tt><tt class="py-op">.</tt><tt class="py-name">remove</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">,</tt><tt class="py-name">column</tt><tt class="py-op">=</tt><tt class="py-number">2</tt><tt class="p [...]
+<a name="L132"></a><tt class="py-lineno"> 132</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">bar</tt><tt class="py-op">.</tt><tt class="py-name">move_up</tt> <tt class="py-op">=</tt> <tt id="link-125" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-125', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Button</tt><tt class="py-op">(</tt><tt [...]
+<a name="L133"></a><tt class="py-lineno"> 133</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">bar</tt><tt class="py-op">.</tt><tt class="py-name">move_up</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">,</tt><tt class="py-name">column</tt><tt class="py-op">=</tt><tt class="py-number">3</tt><tt class=" [...]
+<a name="L134"></a><tt class="py-lineno"> 134</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">bar</tt><tt class="py-op">.</tt><tt class="py-name">move_down</tt> <tt class="py-op">=</tt> <tt id="link-127" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-127', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Button</tt><tt class="py-op">(</tt>< [...]
+<a name="L135"></a><tt class="py-lineno"> 135</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">bar</tt><tt class="py-op">.</tt><tt class="py-name">move_down</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">,</tt><tt class="py-name">column</tt><tt class="py-op">=</tt><tt class="py-number">4</tt><tt class [...]
+<a name="L136"></a><tt class="py-lineno"> 136</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">bar</tt><tt class="py-op">.</tt><tt class="py-name">tk_menuBar</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">bar</tt><tt class="py-op">.</tt><tt id="link-129" class="py-name"><a title="VisionEgg.Deprecated.Message.add" class="py-name" href="#" onclick="return doclink('link-129', 'add [...]
+<a name="L137"></a><tt class="py-lineno"> 137</tt>  <tt class="py-line">        <tt class="py-comment">#Lachie- My bar for setting parent</tt> </tt>
+<a name="L138"></a><tt class="py-lineno"> 138</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">bar</tt><tt class="py-op">.</tt><tt class="py-name">merge</tt> <tt class="py-op">=</tt> <tt id="link-130" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-130', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Button</tt>< [...]
+<a name="L139"></a><tt class="py-lineno"> 139</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">bar</tt><tt class="py-op">.</tt><tt class="py-name">merge</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">,</tt><tt class="py-name">column</tt><tt class="py-op">=</tt><tt class="py-number">5</tt><tt class="py [...]
+<a name="L140"></a><tt class="py-lineno"> 140</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">bar</tt><tt class="py-op">.</tt><tt class="py-name">tk_menuBar</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">bar</tt><tt class="py-op">.</tt><tt id="link-132" class="py-name"><a title="VisionEgg.Deprecated.Message.add" class="py-name" href="#" onclick="return doclink('link-132', 'add [...]
+<a name="L141"></a><tt class="py-lineno"> 141</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-133" class="py-name" targets="Method VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.update_now()=VisionEgg.PyroApps.EPhysGUI.ScrollListFrame-class.html#update_now"><a title="VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.update_now" class="py-name" href="#" onclick="return doclink('link-133', 'update_now', 'link-133');">update_now</a></tt><tt class=" [...]
+</div><a name="L142"></a><tt class="py-lineno"> 142</tt>  <tt class="py-line"> </tt>
+<a name="ScrollListFrame.list2D_coordinates"></a><div id="ScrollListFrame.list2D_coordinates-def"><a name="L143"></a><tt class="py-lineno"> 143</tt> <a class="py-toggle" href="#" id="ScrollListFrame.list2D_coordinates-toggle" onclick="return toggle('ScrollListFrame.list2D_coordinates');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.EPhysGUI.ScrollListFrame-class.html#list2D_coordinates">list2D_coordinates</a><tt class="py-op [...]
+</div><div id="ScrollListFrame.list2D_coordinates-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ScrollListFrame.list2D_coordinates-expanded"><a name="L144"></a><tt class="py-lineno"> 144</tt>  <tt class="py-line">        <tt class="py-comment"># This is a function for finding the 2-d</tt> </tt>
+<a name="L145"></a><tt class="py-lineno"> 145</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># list coordinates of an element which may be inside a</tt> </tt>
+<a name="L146"></a><tt class="py-lineno"> 146</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># list-nested-list.</tt> </tt>
+<a name="L147"></a><tt class="py-lineno"> 147</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># eg. if x = [[e, e, e], [e], [e, e]]</tt> </tt>
+<a name="L148"></a><tt class="py-lineno"> 148</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># Then the coordinates of the element at index 4 is: (2, 0)</tt> </tt>
+<a name="L149"></a><tt class="py-lineno"> 149</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment">#</tt> </tt>
+<a name="L150"></a><tt class="py-lineno"> 150</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># Initialization:</tt> </tt>
+<a name="L151"></a><tt class="py-lineno"> 151</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">i</tt> <tt class="py-op">=</tt> <tt class="py-op">-</tt><tt class="py-number">1</tt> </tt>
+<a name="L152"></a><tt class="py-lineno"> 152</tt>  <tt class="py-line">        <tt class="py-name">j</tt> <tt class="py-op">=</tt> <tt class="py-op">-</tt><tt class="py-number">1</tt> </tt>
+<a name="L153"></a><tt class="py-lineno"> 153</tt>  <tt class="py-line">        <tt class="py-name">element_count</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L154"></a><tt class="py-lineno"> 154</tt>  <tt class="py-line">        <tt class="py-comment"># Main body:</tt> </tt>
+<a name="L155"></a><tt class="py-lineno"> 155</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">for</tt> <tt class="py-name">nested_list</tt> <tt class="py-keyword">in</tt> <tt class="py-name">main_list</tt><tt class="py-op">:</tt> </tt>
+<a name="L156"></a><tt class="py-lineno"> 156</tt>  <tt class="py-line">            <tt class="py-name">j</tt> <tt class="py-op">=</tt> <tt class="py-op">-</tt><tt class="py-number">1</tt> </tt>
+<a name="L157"></a><tt class="py-lineno"> 157</tt>  <tt class="py-line">            <tt class="py-name">i</tt> <tt class="py-op">=</tt> <tt class="py-name">i</tt> <tt class="py-op">+</tt> <tt class="py-number">1</tt> </tt>
+<a name="L158"></a><tt class="py-lineno"> 158</tt>  <tt class="py-line">            <tt class="py-keyword">for</tt> <tt class="py-name">element</tt> <tt class="py-keyword">in</tt> <tt class="py-name">nested_list</tt><tt class="py-op">:</tt> </tt>
+<a name="L159"></a><tt class="py-lineno"> 159</tt>  <tt class="py-line">                <tt class="py-name">j</tt> <tt class="py-op">=</tt> <tt class="py-name">j</tt> <tt class="py-op">+</tt> <tt class="py-number">1</tt> </tt>
+<a name="L160"></a><tt class="py-lineno"> 160</tt>  <tt class="py-line">                <tt class="py-name">element_count</tt> <tt class="py-op">=</tt> <tt class="py-name">element_count</tt> <tt class="py-op">+</tt> <tt class="py-number">1</tt> </tt>
+<a name="L161"></a><tt class="py-lineno"> 161</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">element_count</tt> <tt class="py-op">-</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-name">main_index</tt><tt class="py-op">:</tt> </tt>
+<a name="L162"></a><tt class="py-lineno"> 162</tt>  <tt class="py-line">                    <tt class="py-keyword">return</tt> <tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">,</tt> <tt class="py-name">j</tt><tt class="py-op">]</tt> </tt>
+<a name="L163"></a><tt class="py-lineno"> 163</tt>  <tt class="py-line">        <tt class="py-comment"># Unsuccessful exit:</tt> </tt>
+<a name="L164"></a><tt class="py-lineno"> 164</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">return</tt> <tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">,</tt> <tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
+</div><a name="L165"></a><tt class="py-lineno"> 165</tt>  <tt class="py-line"> </tt>
+<a name="ScrollListFrame.delegate_hscroll"></a><div id="ScrollListFrame.delegate_hscroll-def"><a name="L166"></a><tt class="py-lineno"> 166</tt> <a class="py-toggle" href="#" id="ScrollListFrame.delegate_hscroll-toggle" onclick="return toggle('ScrollListFrame.delegate_hscroll');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.EPhysGUI.ScrollListFrame-class.html#delegate_hscroll">delegate_hscroll</a><tt class="py-op">(</tt><tt  [...]
+</div><div id="ScrollListFrame.delegate_hscroll-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ScrollListFrame.delegate_hscroll-expanded"><a name="L167"></a><tt class="py-lineno"> 167</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">frame</tt><tt class="py-op">.</tt><tt id="link-134" class="py-name"><a title="VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.title
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.title
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.title
+VisionEgg.PyroApps.GridGUI.GridControlFrame.title
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.title
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.title
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.title
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.title" class="py-name" href="#" onclick="return doclink('link-134', 'title', 'link-102');">title</a></tt><tt class="py-op">.</tt><tt class="py-name">xview</tt><tt class="py-op">(</tt><tt class="py-op">*</tt><tt class="py-name">args</tt><tt class="py-op">,</tt><tt class="py-op">**</tt><tt class="py-name">kw</tt><tt class="py-op">)</tt> </tt>
+<a name="L168"></a><tt class="py-lineno"> 168</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">frame</tt><tt class="py-op">.</tt><tt class="py-name">list</tt><tt class="py-op">.</tt><tt class="py-name">xview</tt><tt class="py-op">(</tt><tt class="py-op">*</tt><tt class="py-name">args</tt><tt class="py-op">,</tt><tt class="py-op">**</tt><tt class="py-name">kw</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L169"></a><tt class="py-lineno"> 169</tt>  <tt class="py-line"> </tt>
+<a name="ScrollListFrame.get_list_uncontained"></a><div id="ScrollListFrame.get_list_uncontained-def"><a name="L170"></a><tt class="py-lineno"> 170</tt> <a class="py-toggle" href="#" id="ScrollListFrame.get_list_uncontained-toggle" onclick="return toggle('ScrollListFrame.get_list_uncontained');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.EPhysGUI.ScrollListFrame-class.html#get_list_uncontained">get_list_uncontained</a><tt  [...]
+</div><div id="ScrollListFrame.get_list_uncontained-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ScrollListFrame.get_list_uncontained-expanded"><a name="L171"></a><tt class="py-lineno"> 171</tt>  <tt class="py-line">        <tt class="py-name">results</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L172"></a><tt class="py-lineno"> 172</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">contained_object_item</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">list</tt><tt class="py-op">:</tt> </tt>
+<a name="L173"></a><tt class="py-lineno"> 173</tt>  <tt class="py-line">            <tt class="py-comment">#results.append( contained_object_item.get_contained() )</tt> </tt>
+<a name="L174"></a><tt class="py-lineno"> 174</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">results</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt> <tt class="py-name">contained_object_item</tt> <tt class="py-op">)</tt> </tt>
+<a name="L175"></a><tt class="py-lineno"> 175</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">results</tt> </tt>
+</div><a name="L176"></a><tt class="py-lineno"> 176</tt>  <tt class="py-line"> </tt>
+<a name="ScrollListFrame.update_now"></a><div id="ScrollListFrame.update_now-def"><a name="L177"></a><tt class="py-lineno"> 177</tt> <a class="py-toggle" href="#" id="ScrollListFrame.update_now-toggle" onclick="return toggle('ScrollListFrame.update_now');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.EPhysGUI.ScrollListFrame-class.html#update_now">update_now</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class= [...]
+</div><div id="ScrollListFrame.update_now-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ScrollListFrame.update_now-expanded"><a name="L178"></a><tt class="py-lineno"> 178</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">frame</tt><tt class="py-op">.</tt><tt class="py-name">list</tt><tt class="py-op">.</tt><tt class="py-name">delete</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py [...]
+<a name="L179"></a><tt class="py-lineno"> 179</tt>  <tt class="py-line">        <tt class="py-name">max_len</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L180"></a><tt class="py-lineno"> 180</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">loop_container</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">list</tt><tt class="py-op">:</tt> </tt>
+<a name="L181"></a><tt class="py-lineno"> 181</tt>  <tt class="py-line">            <tt class="py-keyword">for</tt> <tt class="py-name">loop</tt> <tt class="py-keyword">in</tt> <tt class="py-name">loop_container</tt><tt class="py-op">:</tt> </tt>
+<a name="L182"></a><tt class="py-lineno"> 182</tt>  <tt class="py-line">                <tt class="py-name">item_str_30</tt> <tt class="py-op">=</tt> <tt class="py-name">loop</tt><tt class="py-op">.</tt><tt id="link-136" class="py-name" targets="Method VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase.get_str_30()=VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase-class.html#get_str_30,Method VisionEgg.PyroApps.EPhysGUI.LoopContainedObject.get_str_30()=VisionEgg.PyroApps.EPhysGUI.LoopContaine [...]
+VisionEgg.PyroApps.EPhysGUI.LoopContainedObject.get_str_30" class="py-name" href="#" onclick="return doclink('link-136', 'get_str_30', 'link-136');">get_str_30</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L183"></a><tt class="py-lineno"> 183</tt>  <tt class="py-line">                <tt class="py-name">max_len</tt> <tt class="py-op">=</tt> <tt class="py-name">max</tt><tt class="py-op">(</tt><tt class="py-name">max_len</tt><tt class="py-op">,</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">item_str_30</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L184"></a><tt class="py-lineno"> 184</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">frame</tt><tt class="py-op">.</tt><tt class="py-name">list</tt><tt class="py-op">.</tt><tt class="py-name">insert</tt><tt class="py-op">(</tt><tt id="link-137" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-137', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</t [...]
+<a name="L185"></a><tt class="py-lineno"> 185</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">frame</tt><tt class="py-op">.</tt><tt class="py-name">list</tt><tt class="py-op">.</tt><tt class="py-name">insert</tt><tt class="py-op">(</tt><tt id="link-138" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-138', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><t [...]
+<a name="L186"></a><tt class="py-lineno"> 186</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">frame</tt><tt class="py-op">.</tt><tt id="link-139" class="py-name"><a title="VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.title
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.title
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.title
+VisionEgg.PyroApps.GridGUI.GridControlFrame.title
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.title
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.title
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.title
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.title" class="py-name" href="#" onclick="return doclink('link-139', 'title', 'link-102');">title</a></tt><tt class="py-op">.</tt><tt class="py-name">delete</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">,</tt><tt id="link-140" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-140', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-nam [...]
+<a name="L187"></a><tt class="py-lineno"> 187</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">frame</tt><tt class="py-op">.</tt><tt id="link-141" class="py-name"><a title="VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.title
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.title
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.title
+VisionEgg.PyroApps.GridGUI.GridControlFrame.title
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.title
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.title
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.title
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.title" class="py-name" href="#" onclick="return doclink('link-141', 'title', 'link-102');">title</a></tt><tt class="py-op">.</tt><tt class="py-name">insert</tt><tt class="py-op">(</tt><tt id="link-142" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-142', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">END</tt><tt class="py-op">,</tt> <tt class="py-na [...]
+VisionEgg.PyroApps.EPhysGUI.LoopContainedObject.header" class="py-name" href="#" onclick="return doclink('link-143', 'header', 'link-93');">header</a></tt><tt class="py-op">.</tt><tt class="py-name">ljust</tt><tt class="py-op">(</tt><tt class="py-name">max_len</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L188"></a><tt class="py-lineno"> 188</tt>  <tt class="py-line"> </tt>
+<a name="ScrollListFrame.add_new"></a><div id="ScrollListFrame.add_new-def"><a name="L189"></a><tt class="py-lineno"> 189</tt> <a class="py-toggle" href="#" id="ScrollListFrame.add_new-toggle" onclick="return toggle('ScrollListFrame.add_new');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.EPhysGUI.ScrollListFrame-class.html#add_new">add_new</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt  [...]
+</div><div id="ScrollListFrame.add_new-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ScrollListFrame.add_new-expanded"><a name="L190"></a><tt class="py-lineno"> 190</tt>  <tt class="py-line">        <tt class="py-name">contained_object</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-144" class="py-name" targets="Method VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.make_contained_object()=VisionEgg.PyroApps.EPhys [...]
+<a name="L191"></a><tt class="py-lineno"> 191</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">contained_object</tt><tt class="py-op">:</tt> </tt>
+<a name="L192"></a><tt class="py-lineno"> 192</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">list</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt> <tt class="py-op">[</tt><tt class="py-name">contained_object</tt><tt class="py-op">]</tt> <tt class="py-op">)</tt> </tt>
+<a name="L193"></a><tt class="py-lineno"> 193</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-145" class="py-name"><a title="VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.update_now" class="py-name" href="#" onclick="return doclink('link-145', 'update_now', 'link-133');">update_now</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L194"></a><tt class="py-lineno"> 194</tt>  <tt class="py-line"> </tt>
+<a name="ScrollListFrame.edit_selected"></a><div id="ScrollListFrame.edit_selected-def"><a name="L195"></a><tt class="py-lineno"> 195</tt> <a class="py-toggle" href="#" id="ScrollListFrame.edit_selected-toggle" onclick="return toggle('ScrollListFrame.edit_selected');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.EPhysGUI.ScrollListFrame-class.html#edit_selected">edit_selected</a><tt class="py-op">(</tt><tt class="py-param">s [...]
+</div><div id="ScrollListFrame.edit_selected-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ScrollListFrame.edit_selected-expanded"><a name="L196"></a><tt class="py-lineno"> 196</tt>  <tt class="py-line">        <tt class="py-name">selected</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-146" class="py-name" targets="Method VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.get_selected()=VisionEgg.PyroApps.EPhysGUI.S [...]
+<a name="L197"></a><tt class="py-lineno"> 197</tt>  <tt class="py-line">        <tt class="py-comment"># Get 2-D list coordinates of selected object of class "LoopContainedObject":</tt> </tt>
+<a name="L198"></a><tt class="py-lineno"> 198</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">loop_coordinates</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-147" class="py-name" targets="Method VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.list2D_coordinates()=VisionEgg.PyroApps.EPhysGUI.ScrollListFrame-class.html#list2D_coordinates"><a title="VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.list2D_coordinates"  [...]
+<a name="L199"></a><tt class="py-lineno"> 199</tt>  <tt class="py-line">        <tt class="py-name">main_list_index</tt> <tt class="py-op">=</tt> <tt class="py-name">loop_coordinates</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt>
+<a name="L200"></a><tt class="py-lineno"> 200</tt>  <tt class="py-line">        <tt class="py-name">loop_list_index</tt> <tt class="py-op">=</tt> <tt class="py-name">loop_coordinates</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
+<a name="L201"></a><tt class="py-lineno"> 201</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">selected</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L202"></a><tt class="py-lineno"> 202</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">list</tt><tt class="py-op">[</tt><tt class="py-name">main_list_index</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">1</tt><tt class="py-op">:</tt> </tt>
+<a name="L203"></a><tt class="py-lineno"> 203</tt>  <tt class="py-line">                <tt class="py-name">orig_contained_object</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">list</tt><tt class="py-op">[</tt><tt class="py-name">main_list_index</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-name">loop_list_index</tt><tt class="py-op">]</tt> </tt>
+<a name="L204"></a><tt class="py-lineno"> 204</tt>  <tt class="py-line">                <tt class="py-name">modified_contained_object</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-148" class="py-name" targets="Method VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.edit_contained_object()=VisionEgg.PyroApps.EPhysGUI.ScrollListFrame-class.html#edit_contained_object"><a title="VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.edit_contained_object" cl [...]
+<a name="L205"></a><tt class="py-lineno"> 205</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">modified_contained_object</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> <tt class="py-comment"># "Cancel" press results in None</tt> </tt>
+<a name="L206"></a><tt class="py-lineno"> 206</tt>  <tt class="py-line">                    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">list</tt><tt class="py-op">[</tt><tt class="py-name">main_list_index</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-name">loop_list_index</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">modified_contained_object</tt> </tt>
+<a name="L207"></a><tt class="py-lineno"> 207</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-149" class="py-name"><a title="VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.update_now" class="py-name" href="#" onclick="return doclink('link-149', 'update_now', 'link-133');">update_now</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L208"></a><tt class="py-lineno"> 208</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L209"></a><tt class="py-lineno"> 209</tt>  <tt class="py-line">                <tt id="link-150" class="py-name"><a title="VisionEgg.GUI.tkMessageBox" class="py-name" href="#" onclick="return doclink('link-150', 'tkMessageBox', 'link-8');">tkMessageBox</a></tt><tt class="py-op">.</tt><tt class="py-name">showerror</tt><tt class="py-op">(</tt><tt class="py-string">"Cannot edit this variable"</tt><tt class="py-op">,</tt> <tt class="py-string">"This variable needs to be isolated/unm [...]
+</div><a name="L210"></a><tt class="py-lineno"> 210</tt>  <tt class="py-line"> </tt>
+<a name="ScrollListFrame.remove_selected"></a><div id="ScrollListFrame.remove_selected-def"><a name="L211"></a><tt class="py-lineno"> 211</tt> <a class="py-toggle" href="#" id="ScrollListFrame.remove_selected-toggle" onclick="return toggle('ScrollListFrame.remove_selected');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.EPhysGUI.ScrollListFrame-class.html#remove_selected">remove_selected</a><tt class="py-op">(</tt><tt class= [...]
+</div><div id="ScrollListFrame.remove_selected-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ScrollListFrame.remove_selected-expanded"><a name="L212"></a><tt class="py-lineno"> 212</tt>  <tt class="py-line">        <tt class="py-name">selected</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-151" class="py-name"><a title="VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.get_selected" class="py-name" href="#" onclick [...]
+<a name="L213"></a><tt class="py-lineno"> 213</tt>  <tt class="py-line">        <tt class="py-comment"># Get 2-D list coordinates of selected object of class "LoopContainedObject":</tt> </tt>
+<a name="L214"></a><tt class="py-lineno"> 214</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">loop_coordinates</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-152" class="py-name"><a title="VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.list2D_coordinates" class="py-name" href="#" onclick="return doclink('link-152', 'list2D_coordinates', 'link-147');">list2D_coordinates</a></tt><tt class="py-op">(</tt><tt clas [...]
+<a name="L215"></a><tt class="py-lineno"> 215</tt>  <tt class="py-line">        <tt class="py-name">main_list_index</tt> <tt class="py-op">=</tt> <tt class="py-name">loop_coordinates</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt>
+<a name="L216"></a><tt class="py-lineno"> 216</tt>  <tt class="py-line">        <tt class="py-name">loop_list_index</tt> <tt class="py-op">=</tt> <tt class="py-name">loop_coordinates</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
+<a name="L217"></a><tt class="py-lineno"> 217</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">selected</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L218"></a><tt class="py-lineno"> 218</tt>  <tt class="py-line">            <tt class="py-keyword">del</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">list</tt><tt class="py-op">[</tt><tt class="py-name">main_list_index</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-name">loop_list_index</tt><tt class="py-op">]</tt> </tt>
+<a name="L219"></a><tt class="py-lineno"> 219</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">list</tt><tt class="py-op">[</tt><tt class="py-name">main_list_index</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
+<a name="L220"></a><tt class="py-lineno"> 220</tt>  <tt class="py-line">                <tt class="py-keyword">del</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">list</tt><tt class="py-op">[</tt><tt class="py-name">main_list_index</tt><tt class="py-op">]</tt> </tt>
+<a name="L221"></a><tt class="py-lineno"> 221</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-153" class="py-name"><a title="VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.update_now" class="py-name" href="#" onclick="return doclink('link-153', 'update_now', 'link-133');">update_now</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L222"></a><tt class="py-lineno"> 222</tt>  <tt class="py-line"> </tt>
+<a name="ScrollListFrame.move_selected_up"></a><div id="ScrollListFrame.move_selected_up-def"><a name="L223"></a><tt class="py-lineno"> 223</tt> <a class="py-toggle" href="#" id="ScrollListFrame.move_selected_up-toggle" onclick="return toggle('ScrollListFrame.move_selected_up');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.EPhysGUI.ScrollListFrame-class.html#move_selected_up">move_selected_up</a><tt class="py-op">(</tt><tt  [...]
+</div><div id="ScrollListFrame.move_selected_up-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ScrollListFrame.move_selected_up-expanded"><a name="L224"></a><tt class="py-lineno"> 224</tt>  <tt class="py-line">        <tt class="py-name">selected</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-154" class="py-name"><a title="VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.get_selected" class="py-name" href="#" oncli [...]
+<a name="L225"></a><tt class="py-lineno"> 225</tt>  <tt class="py-line">        <tt class="py-comment"># Get 2-D list coordinates of selected object of class "LoopContainedObject":</tt> </tt>
+<a name="L226"></a><tt class="py-lineno"> 226</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">loop_coordinates</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-155" class="py-name"><a title="VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.list2D_coordinates" class="py-name" href="#" onclick="return doclink('link-155', 'list2D_coordinates', 'link-147');">list2D_coordinates</a></tt><tt class="py-op">(</tt><tt clas [...]
+<a name="L227"></a><tt class="py-lineno"> 227</tt>  <tt class="py-line">        <tt class="py-name">main_list_index</tt> <tt class="py-op">=</tt> <tt class="py-name">loop_coordinates</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt>
+<a name="L228"></a><tt class="py-lineno"> 228</tt>  <tt class="py-line">        <tt class="py-name">loop_list_index</tt> <tt class="py-op">=</tt> <tt class="py-name">loop_coordinates</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
+<a name="L229"></a><tt class="py-lineno"> 229</tt>  <tt class="py-line">        <tt class="py-name">new_selected_index</tt> <tt class="py-op">=</tt> <tt class="py-name">selected</tt> </tt>
+<a name="L230"></a><tt class="py-lineno"> 230</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">selected</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L231"></a><tt class="py-lineno"> 231</tt>  <tt class="py-line">            <tt class="py-comment"># If the selected variable is first in its "loop_list":</tt> </tt>
+<a name="L232"></a><tt class="py-lineno"> 232</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">if</tt> <tt class="py-name">loop_list_index</tt> <tt class="py-op">==</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt>
+<a name="L233"></a><tt class="py-lineno"> 233</tt>  <tt class="py-line">                <tt class="py-comment"># If not the first "loop_list":</tt> </tt>
+<a name="L234"></a><tt class="py-lineno"> 234</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-keyword">if</tt> <tt class="py-name">main_list_index</tt> <tt class="py-op">!=</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt>
+<a name="L235"></a><tt class="py-lineno"> 235</tt>  <tt class="py-line">                    <tt class="py-comment"># Then we move up the entire "loop_list":</tt> </tt>
+<a name="L236"></a><tt class="py-lineno"> 236</tt>  <tt class="py-line"><tt class="py-comment"></tt>                    <tt class="py-name">selected_loop_list</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">list</tt><tt class="py-op">[</tt><tt class="py-name">main_list_index</tt><tt class="py-op">]</tt> </tt>
+<a name="L237"></a><tt class="py-lineno"> 237</tt>  <tt class="py-line">                    <tt class="py-keyword">del</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">list</tt><tt class="py-op">[</tt><tt class="py-name">main_list_index</tt><tt class="py-op">]</tt> </tt>
+<a name="L238"></a><tt class="py-lineno"> 238</tt>  <tt class="py-line">                    <tt class="py-name">new_main_list_index</tt> <tt class="py-op">=</tt> <tt class="py-name">main_list_index</tt> <tt class="py-op">-</tt> <tt class="py-number">1</tt> </tt>
+<a name="L239"></a><tt class="py-lineno"> 239</tt>  <tt class="py-line">                    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">list</tt><tt class="py-op">.</tt><tt class="py-name">insert</tt><tt class="py-op">(</tt><tt class="py-name">new_main_list_index</tt><tt class="py-op">,</tt> <tt class="py-name">selected_loop_list</tt><tt class="py-op">)</tt> </tt>
+<a name="L240"></a><tt class="py-lineno"> 240</tt>  <tt class="py-line">                    <tt class="py-name">new_selected_index</tt> <tt class="py-op">=</tt> <tt class="py-name">selected</tt> <tt class="py-op">-</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">list</tt><tt class="py-op">[</tt><tt class="py-name">main_list_index</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L241"></a><tt class="py-lineno"> 241</tt>  <tt class="py-line">                    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-156" class="py-name"><a title="VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.update_now" class="py-name" href="#" onclick="return doclink('link-156', 'update_now', 'link-133');">update_now</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L242"></a><tt class="py-lineno"> 242</tt>  <tt class="py-line"> </tt>
+<a name="L243"></a><tt class="py-lineno"> 243</tt>  <tt class="py-line">            <tt class="py-comment"># Else we just move up a variable within a "loop_list":</tt> </tt>
+<a name="L244"></a><tt class="py-lineno"> 244</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L245"></a><tt class="py-lineno"> 245</tt>  <tt class="py-line">                <tt class="py-name">selected_loop_container</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">list</tt><tt class="py-op">[</tt><tt class="py-name">main_list_index</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-name">loop_list_index</tt><tt class="py-op">]</tt> </tt>
+<a name="L246"></a><tt class="py-lineno"> 246</tt>  <tt class="py-line">                <tt class="py-keyword">del</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">list</tt><tt class="py-op">[</tt><tt class="py-name">main_list_index</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-name">loop_list_index</tt><tt class="py-op">]</tt> </tt>
+<a name="L247"></a><tt class="py-lineno"> 247</tt>  <tt class="py-line">                <tt class="py-name">new_loop_list_index</tt> <tt class="py-op">=</tt> <tt class="py-name">loop_list_index</tt> <tt class="py-op">-</tt> <tt class="py-number">1</tt> </tt>
+<a name="L248"></a><tt class="py-lineno"> 248</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">list</tt><tt class="py-op">[</tt><tt class="py-name">main_list_index</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">insert</tt><tt class="py-op">(</tt><tt class="py-name">new_loop_list_index</tt><tt class="py-op">,</tt> <tt class="py-name">selected_loop_container</tt><tt class="py-op">)</tt> </tt>
+<a name="L249"></a><tt class="py-lineno"> 249</tt>  <tt class="py-line">                <tt class="py-name">new_selected_index</tt> <tt class="py-op">=</tt> <tt class="py-name">selected</tt> <tt class="py-op">-</tt> <tt class="py-number">1</tt> </tt>
+<a name="L250"></a><tt class="py-lineno"> 250</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-157" class="py-name"><a title="VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.update_now" class="py-name" href="#" onclick="return doclink('link-157', 'update_now', 'link-133');">update_now</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L251"></a><tt class="py-lineno"> 251</tt>  <tt class="py-line"> </tt>
+<a name="L252"></a><tt class="py-lineno"> 252</tt>  <tt class="py-line">            <tt class="py-name">new_selected_index</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-158" class="py-name" targets="Method VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.map_to_listbox_index()=VisionEgg.PyroApps.EPhysGUI.ScrollListFrame-class.html#map_to_listbox_index"><a title="VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.map_to_listbox_index" class="py-name"  [...]
+<a name="L253"></a><tt class="py-lineno"> 253</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">frame</tt><tt class="py-op">.</tt><tt class="py-name">list</tt><tt class="py-op">.</tt><tt class="py-name">selection_set</tt><tt class="py-op">(</tt><tt class="py-name">new_selected_index</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L254"></a><tt class="py-lineno"> 254</tt>  <tt class="py-line"> </tt>
+<a name="ScrollListFrame.move_selected_down"></a><div id="ScrollListFrame.move_selected_down-def"><a name="L255"></a><tt class="py-lineno"> 255</tt> <a class="py-toggle" href="#" id="ScrollListFrame.move_selected_down-toggle" onclick="return toggle('ScrollListFrame.move_selected_down');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.EPhysGUI.ScrollListFrame-class.html#move_selected_down">move_selected_down</a><tt class="py-op [...]
+</div><div id="ScrollListFrame.move_selected_down-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ScrollListFrame.move_selected_down-expanded"><a name="L256"></a><tt class="py-lineno"> 256</tt>  <tt class="py-line">        <tt class="py-name">selected</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-159" class="py-name"><a title="VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.get_selected" class="py-name" href="#" o [...]
+<a name="L257"></a><tt class="py-lineno"> 257</tt>  <tt class="py-line">        <tt class="py-comment"># Get 2-D list coordinates of selected object of class "LoopContainedObject":</tt> </tt>
+<a name="L258"></a><tt class="py-lineno"> 258</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">loop_coordinates</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-160" class="py-name"><a title="VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.list2D_coordinates" class="py-name" href="#" onclick="return doclink('link-160', 'list2D_coordinates', 'link-147');">list2D_coordinates</a></tt><tt class="py-op">(</tt><tt clas [...]
+<a name="L259"></a><tt class="py-lineno"> 259</tt>  <tt class="py-line">        <tt class="py-name">main_list_index</tt> <tt class="py-op">=</tt> <tt class="py-name">loop_coordinates</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt>
+<a name="L260"></a><tt class="py-lineno"> 260</tt>  <tt class="py-line">        <tt class="py-name">loop_list_index</tt> <tt class="py-op">=</tt> <tt class="py-name">loop_coordinates</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
+<a name="L261"></a><tt class="py-lineno"> 261</tt>  <tt class="py-line">        <tt class="py-name">new_selected_index</tt> <tt class="py-op">=</tt> <tt class="py-name">selected</tt> </tt>
+<a name="L262"></a><tt class="py-lineno"> 262</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">selected</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L263"></a><tt class="py-lineno"> 263</tt>  <tt class="py-line">            <tt class="py-comment"># If the selected variable is last in its "loop_list":</tt> </tt>
+<a name="L264"></a><tt class="py-lineno"> 264</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">if</tt> <tt class="py-name">loop_list_index</tt> <tt class="py-op">==</tt> <tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">list</tt><tt class="py-op">[</tt><tt class="py-name">main_list_index</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> <tt class=" [...]
+<a name="L265"></a><tt class="py-lineno"> 265</tt>  <tt class="py-line">                <tt class="py-comment"># If not the last "loop_list":</tt> </tt>
+<a name="L266"></a><tt class="py-lineno"> 266</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-keyword">if</tt> <tt class="py-name">main_list_index</tt> <tt class="py-op">!=</tt> <tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">list</tt><tt class="py-op">)</tt> <tt class="py-op">-</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt><tt class="py-op"> [...]
+<a name="L267"></a><tt class="py-lineno"> 267</tt>  <tt class="py-line">                    <tt class="py-comment"># Then we move down the entire "loop_list":</tt> </tt>
+<a name="L268"></a><tt class="py-lineno"> 268</tt>  <tt class="py-line"><tt class="py-comment"></tt>                    <tt class="py-name">selected_loop_list</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">list</tt><tt class="py-op">[</tt><tt class="py-name">main_list_index</tt><tt class="py-op">]</tt> </tt>
+<a name="L269"></a><tt class="py-lineno"> 269</tt>  <tt class="py-line">                    <tt class="py-keyword">del</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">list</tt><tt class="py-op">[</tt><tt class="py-name">main_list_index</tt><tt class="py-op">]</tt> </tt>
+<a name="L270"></a><tt class="py-lineno"> 270</tt>  <tt class="py-line">                    <tt class="py-name">new_main_list_index</tt> <tt class="py-op">=</tt> <tt class="py-name">main_list_index</tt> <tt class="py-op">+</tt> <tt class="py-number">1</tt> </tt>
+<a name="L271"></a><tt class="py-lineno"> 271</tt>  <tt class="py-line">                    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">list</tt><tt class="py-op">.</tt><tt class="py-name">insert</tt><tt class="py-op">(</tt><tt class="py-name">new_main_list_index</tt><tt class="py-op">,</tt> <tt class="py-name">selected_loop_list</tt><tt class="py-op">)</tt> </tt>
+<a name="L272"></a><tt class="py-lineno"> 272</tt>  <tt class="py-line">                    <tt class="py-name">new_selected_index</tt> <tt class="py-op">=</tt> <tt class="py-name">selected</tt> <tt class="py-op">+</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">list</tt><tt class="py-op">[</tt><tt class="py-name">main_list_index</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L273"></a><tt class="py-lineno"> 273</tt>  <tt class="py-line">                    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-161" class="py-name"><a title="VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.update_now" class="py-name" href="#" onclick="return doclink('link-161', 'update_now', 'link-133');">update_now</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L274"></a><tt class="py-lineno"> 274</tt>  <tt class="py-line"> </tt>
+<a name="L275"></a><tt class="py-lineno"> 275</tt>  <tt class="py-line">            <tt class="py-comment"># Else we just move down a variable within a "loop_list":</tt> </tt>
+<a name="L276"></a><tt class="py-lineno"> 276</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment">#elif loop_list_index != (len(self.list[main_list_index]) - 1):</tt> </tt>
+<a name="L277"></a><tt class="py-lineno"> 277</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L278"></a><tt class="py-lineno"> 278</tt>  <tt class="py-line">                <tt class="py-name">selected_loop_container</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">list</tt><tt class="py-op">[</tt><tt class="py-name">main_list_index</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-name">loop_list_index</tt><tt class="py-op">]</tt> </tt>
+<a name="L279"></a><tt class="py-lineno"> 279</tt>  <tt class="py-line">                <tt class="py-keyword">del</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">list</tt><tt class="py-op">[</tt><tt class="py-name">main_list_index</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-name">loop_list_index</tt><tt class="py-op">]</tt> </tt>
+<a name="L280"></a><tt class="py-lineno"> 280</tt>  <tt class="py-line">                <tt class="py-name">new_loop_list_index</tt> <tt class="py-op">=</tt> <tt class="py-name">loop_list_index</tt> <tt class="py-op">+</tt> <tt class="py-number">1</tt> </tt>
+<a name="L281"></a><tt class="py-lineno"> 281</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">list</tt><tt class="py-op">[</tt><tt class="py-name">main_list_index</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">insert</tt><tt class="py-op">(</tt><tt class="py-name">new_loop_list_index</tt><tt class="py-op">,</tt> <tt class="py-name">selected_loop_container</tt><tt class="py-op">)</tt> </tt>
+<a name="L282"></a><tt class="py-lineno"> 282</tt>  <tt class="py-line">                <tt class="py-name">new_selected_index</tt> <tt class="py-op">=</tt> <tt class="py-name">selected</tt> <tt class="py-op">+</tt> <tt class="py-number">1</tt> </tt>
+<a name="L283"></a><tt class="py-lineno"> 283</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-162" class="py-name"><a title="VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.update_now" class="py-name" href="#" onclick="return doclink('link-162', 'update_now', 'link-133');">update_now</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L284"></a><tt class="py-lineno"> 284</tt>  <tt class="py-line">            <tt class="py-comment">#else:</tt> </tt>
+<a name="L285"></a><tt class="py-lineno"> 285</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-comment">#tkMessageBox.showerror("Cannot move this variable down", "Select unmerge instead")</tt> </tt>
+<a name="L286"></a><tt class="py-lineno"> 286</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L287"></a><tt class="py-lineno"> 287</tt>  <tt class="py-line">            <tt class="py-name">new_selected_index</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-163" class="py-name"><a title="VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.map_to_listbox_index" class="py-name" href="#" onclick="return doclink('link-163', 'map_to_listbox_index', 'link-158');">map_to_listbox_index</a></tt><tt class="py-op">(</tt><tt class="py-name">new_ [...]
+<a name="L288"></a><tt class="py-lineno"> 288</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">frame</tt><tt class="py-op">.</tt><tt class="py-name">list</tt><tt class="py-op">.</tt><tt class="py-name">selection_set</tt><tt class="py-op">(</tt><tt class="py-name">new_selected_index</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L289"></a><tt class="py-lineno"> 289</tt>  <tt class="py-line"> </tt>
+<a name="L290"></a><tt class="py-lineno"> 290</tt>  <tt class="py-line"> </tt>
+<a name="L291"></a><tt class="py-lineno"> 291</tt>  <tt class="py-line"> </tt>
+<a name="L292"></a><tt class="py-lineno"> 292</tt>  <tt class="py-line"> </tt>
+<a name="L293"></a><tt class="py-lineno"> 293</tt>  <tt class="py-line"> </tt>
+<a name="L294"></a><tt class="py-lineno"> 294</tt>  <tt class="py-line"> </tt>
+<a name="L295"></a><tt class="py-lineno"> 295</tt>  <tt class="py-line"> </tt>
+<a name="ScrollListFrame.make_merge"></a><div id="ScrollListFrame.make_merge-def"><a name="L296"></a><tt class="py-lineno"> 296</tt> <a class="py-toggle" href="#" id="ScrollListFrame.make_merge-toggle" onclick="return toggle('ScrollListFrame.make_merge');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.EPhysGUI.ScrollListFrame-class.html#make_merge">make_merge</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class= [...]
+</div><div id="ScrollListFrame.make_merge-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ScrollListFrame.make_merge-expanded"><a name="L297"></a><tt class="py-lineno"> 297</tt>  <tt class="py-line">        <tt class="py-comment"># Notes:</tt> </tt>
+<a name="L298"></a><tt class="py-lineno"> 298</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># "self.list" is a list of lists, each of which, a</tt> </tt>
+<a name="L299"></a><tt class="py-lineno"> 299</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># "loop_list", contains "LoopContainedObject" class objects:</tt> </tt>
+<a name="L300"></a><tt class="py-lineno"> 300</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># eg. [[a], [b, c], [d]]</tt> </tt>
+<a name="L301"></a><tt class="py-lineno"> 301</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">selected</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-164" class="py-name"><a title="VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.get_selected" class="py-name" href="#" onclick="return doclink('link-164', 'get_selected', 'link-146');">get_selected</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L302"></a><tt class="py-lineno"> 302</tt>  <tt class="py-line"> </tt>
+<a name="L303"></a><tt class="py-lineno"> 303</tt>  <tt class="py-line">        <tt class="py-name">merge_error</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L304"></a><tt class="py-lineno"> 304</tt>  <tt class="py-line">        <tt class="py-name">merge_error_msg</tt> <tt class="py-op">=</tt> <tt class="py-string">""</tt> </tt>
+<a name="L305"></a><tt class="py-lineno"> 305</tt>  <tt class="py-line"> </tt>
+<a name="L306"></a><tt class="py-lineno"> 306</tt>  <tt class="py-line">        <tt class="py-comment"># The purpose of this function is to "merge" selected objects of class</tt> </tt>
+<a name="L307"></a><tt class="py-lineno"> 307</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># "LoopContainedObject" into a preceding list:</tt> </tt>
+<a name="L308"></a><tt class="py-lineno"> 308</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># eg. [[a], [b, c], [d]] => [[a], [b, c, d]]]</tt> </tt>
+<a name="L309"></a><tt class="py-lineno"> 309</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># where selected 'd' was "merged" into preceding list.</tt> </tt>
+<a name="L310"></a><tt class="py-lineno"> 310</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># Note, this function can also perform the reverse, provided that the</tt> </tt>
+<a name="L311"></a><tt class="py-lineno"> 311</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># the selected object of class "LoopContainedObject" is the LAST one</tt> </tt>
+<a name="L312"></a><tt class="py-lineno"> 312</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># in its "loop_list".</tt> </tt>
+<a name="L313"></a><tt class="py-lineno"> 313</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># Supported cases:</tt> </tt>
+<a name="L314"></a><tt class="py-lineno"> 314</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># [[a], [b*, c], [d]] => [[a, b, c], [d]] merge</tt> </tt>
+<a name="L315"></a><tt class="py-lineno"> 315</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># [[a], [b, c*], [d]] => [[a], [b], [c, d]] unmerge</tt> </tt>
+<a name="L316"></a><tt class="py-lineno"> 316</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># Unsupported cases:</tt> </tt>
+<a name="L317"></a><tt class="py-lineno"> 317</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># [[a], [b, c*, d], [e]] => cannot unmerge!</tt> </tt>
+<a name="L318"></a><tt class="py-lineno"> 318</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L319"></a><tt class="py-lineno"> 319</tt>  <tt class="py-line">        <tt class="py-comment"># Get 2-D list coordinates of selected object of class "LoopContainedObject":</tt> </tt>
+<a name="L320"></a><tt class="py-lineno"> 320</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">loop_coordinates</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-165" class="py-name"><a title="VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.list2D_coordinates" class="py-name" href="#" onclick="return doclink('link-165', 'list2D_coordinates', 'link-147');">list2D_coordinates</a></tt><tt class="py-op">(</tt><tt clas [...]
+<a name="L321"></a><tt class="py-lineno"> 321</tt>  <tt class="py-line">        <tt class="py-name">main_list_index</tt> <tt class="py-op">=</tt> <tt class="py-name">loop_coordinates</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt>
+<a name="L322"></a><tt class="py-lineno"> 322</tt>  <tt class="py-line">        <tt class="py-name">loop_list_index</tt> <tt class="py-op">=</tt> <tt class="py-name">loop_coordinates</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
+<a name="L323"></a><tt class="py-lineno"> 323</tt>  <tt class="py-line"> </tt>
+<a name="L324"></a><tt class="py-lineno"> 324</tt>  <tt class="py-line">        <tt class="py-comment"># Checking that an item is actually selected:</tt> </tt>
+<a name="L325"></a><tt class="py-lineno"> 325</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">selected</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L326"></a><tt class="py-lineno"> 326</tt>  <tt class="py-line"> </tt>
+<a name="L327"></a><tt class="py-lineno"> 327</tt>  <tt class="py-line">            <tt class="py-name">selected_loop_list</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">list</tt><tt class="py-op">[</tt><tt class="py-name">main_list_index</tt><tt class="py-op">]</tt> </tt>
+<a name="L328"></a><tt class="py-lineno"> 328</tt>  <tt class="py-line">            <tt class="py-name">selected_loop_container</tt> <tt class="py-op">=</tt> <tt class="py-name">selected_loop_list</tt><tt class="py-op">[</tt><tt class="py-name">loop_list_index</tt><tt class="py-op">]</tt> </tt>
+<a name="L329"></a><tt class="py-lineno"> 329</tt>  <tt class="py-line">            <tt class="py-name">preceding_loop_container</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">list</tt><tt class="py-op">[</tt><tt class="py-name">main_list_index</tt> <tt class="py-op">-</tt> <tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt>
+<a name="L330"></a><tt class="py-lineno"> 330</tt>  <tt class="py-line"> </tt>
+<a name="L331"></a><tt class="py-lineno"> 331</tt>  <tt class="py-line">            <tt class="py-comment"># Trying to perform merge?</tt> </tt>
+<a name="L332"></a><tt class="py-lineno"> 332</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">if</tt> <tt class="py-name">loop_list_index</tt> <tt class="py-op">==</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt>
+<a name="L333"></a><tt class="py-lineno"> 333</tt>  <tt class="py-line"> </tt>
+<a name="L334"></a><tt class="py-lineno"> 334</tt>  <tt class="py-line">                <tt class="py-comment"># Ensure selected "LoopContainerObject" is not in first "loop_list":</tt> </tt>
+<a name="L335"></a><tt class="py-lineno"> 335</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-keyword">if</tt> <tt class="py-name">main_list_index</tt> <tt class="py-op">></tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt>
+<a name="L336"></a><tt class="py-lineno"> 336</tt>  <tt class="py-line"> </tt>
+<a name="L337"></a><tt class="py-lineno"> 337</tt>  <tt class="py-line">                    <tt class="py-comment"># Can only carry out merge if "Loop" object sequence lengths are</tt> </tt>
+<a name="L338"></a><tt class="py-lineno"> 338</tt>  <tt class="py-line"><tt class="py-comment"></tt>                    <tt class="py-comment"># the same length within a "loop_list":</tt> </tt>
+<a name="L339"></a><tt class="py-lineno"> 339</tt>  <tt class="py-line"><tt class="py-comment"></tt>                    <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">selected_loop_container</tt><tt class="py-op">.</tt><tt class="py-name">contained</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">sequence</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-na [...]
+<a name="L340"></a><tt class="py-lineno"> 340</tt>  <tt class="py-line"> </tt>
+<a name="L341"></a><tt class="py-lineno"> 341</tt>  <tt class="py-line">                        <tt class="py-comment"># Perform the merge. All variables that are currently merged with the selected variable,</tt> </tt>
+<a name="L342"></a><tt class="py-lineno"> 342</tt>  <tt class="py-line"><tt class="py-comment"></tt>                        <tt class="py-comment"># are merged with the new variable(s) as well.</tt> </tt>
+<a name="L343"></a><tt class="py-lineno"> 343</tt>  <tt class="py-line"><tt class="py-comment"></tt>                        <tt class="py-name">i</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L344"></a><tt class="py-lineno"> 344</tt>  <tt class="py-line">                        <tt class="py-name">max_index</tt> <tt class="py-op">=</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">selected_loop_list</tt><tt class="py-op">)</tt> </tt>
+<a name="L345"></a><tt class="py-lineno"> 345</tt>  <tt class="py-line">                        <tt class="py-keyword">while</tt> <tt class="py-name">i</tt> <tt class="py-op"><</tt> <tt class="py-name">max_index</tt><tt class="py-op">:</tt> </tt>
+<a name="L346"></a><tt class="py-lineno"> 346</tt>  <tt class="py-line">                            <tt class="py-name">dummy_loop_container</tt> <tt class="py-op">=</tt> <tt class="py-name">selected_loop_list</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt>
+<a name="L347"></a><tt class="py-lineno"> 347</tt>  <tt class="py-line">                            <tt class="py-keyword">del</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">list</tt><tt class="py-op">[</tt><tt class="py-name">main_list_index</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt>
+<a name="L348"></a><tt class="py-lineno"> 348</tt>  <tt class="py-line">                            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">list</tt><tt class="py-op">[</tt><tt class="py-name">main_list_index</tt> <tt class="py-op">-</tt> <tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">dummy_loop_container</tt><tt class="py-op">)</tt> </tt>
+<a name="L349"></a><tt class="py-lineno"> 349</tt>  <tt class="py-line">                            <tt class="py-name">i</tt> <tt class="py-op">=</tt> <tt class="py-name">i</tt> <tt class="py-op">+</tt> <tt class="py-number">1</tt> </tt>
+<a name="L350"></a><tt class="py-lineno"> 350</tt>  <tt class="py-line"> </tt>
+<a name="L351"></a><tt class="py-lineno"> 351</tt>  <tt class="py-line">                        <tt class="py-comment"># Remove the selected "loop_list" if it is now empty:</tt> </tt>
+<a name="L352"></a><tt class="py-lineno"> 352</tt>  <tt class="py-line"><tt class="py-comment"></tt>                        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">list</tt><tt class="py-op">[</tt><tt class="py-name">main_list_index</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
+<a name="L353"></a><tt class="py-lineno"> 353</tt>  <tt class="py-line">                            <tt class="py-keyword">del</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">list</tt><tt class="py-op">[</tt><tt class="py-name">main_list_index</tt><tt class="py-op">]</tt> </tt>
+<a name="L354"></a><tt class="py-lineno"> 354</tt>  <tt class="py-line"> </tt>
+<a name="L355"></a><tt class="py-lineno"> 355</tt>  <tt class="py-line">                    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L356"></a><tt class="py-lineno"> 356</tt>  <tt class="py-line">                        <tt class="py-name">merge_error</tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L357"></a><tt class="py-lineno"> 357</tt>  <tt class="py-line">                        <tt class="py-name">merge_error_msg</tt> <tt class="py-op">=</tt> <tt class="py-string">"Cannot merge variables with different sequence lengths"</tt> </tt>
+<a name="L358"></a><tt class="py-lineno"> 358</tt>  <tt class="py-line"> </tt>
+<a name="L359"></a><tt class="py-lineno"> 359</tt>  <tt class="py-line">                <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L360"></a><tt class="py-lineno"> 360</tt>  <tt class="py-line">                    <tt class="py-name">merge_error</tt> <tt class="py-op">=</tt> <tt class="py-number">3</tt> </tt>
+<a name="L361"></a><tt class="py-lineno"> 361</tt>  <tt class="py-line">                    <tt class="py-comment">#merge_error_msg = "Variable is at the top level"</tt> </tt>
+<a name="L362"></a><tt class="py-lineno"> 362</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L363"></a><tt class="py-lineno"> 363</tt>  <tt class="py-line">            <tt class="py-comment"># Trying to perform an "unmerge":</tt> </tt>
+<a name="L364"></a><tt class="py-lineno"> 364</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L365"></a><tt class="py-lineno"> 365</tt>  <tt class="py-line"> </tt>
+<a name="L366"></a><tt class="py-lineno"> 366</tt>  <tt class="py-line">                <tt class="py-comment"># Ensure selected "LoopContainerObject" is last object in its "loop_list":</tt> </tt>
+<a name="L367"></a><tt class="py-lineno"> 367</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-keyword">if</tt> <tt class="py-name">loop_list_index</tt> <tt class="py-op">==</tt> <tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">selected_loop_list</tt><tt class="py-op">)</tt> <tt class="py-op">-</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L368"></a><tt class="py-lineno"> 368</tt>  <tt class="py-line"> </tt>
+<a name="L369"></a><tt class="py-lineno"> 369</tt>  <tt class="py-line">                    <tt class="py-comment"># Perform the unmerge:</tt> </tt>
+<a name="L370"></a><tt class="py-lineno"> 370</tt>  <tt class="py-line"><tt class="py-comment"></tt>                    <tt class="py-keyword">del</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">list</tt><tt class="py-op">[</tt><tt class="py-name">main_list_index</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-name">loop_list_index</tt><tt class="py-op">]</tt> </tt>
+<a name="L371"></a><tt class="py-lineno"> 371</tt>  <tt class="py-line">                    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">list</tt><tt class="py-op">.</tt><tt class="py-name">insert</tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-name">main_list_index</tt> <tt class="py-op">+</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-name">selected_loop_container</tt> [...]
+<a name="L372"></a><tt class="py-lineno"> 372</tt>  <tt class="py-line"> </tt>
+<a name="L373"></a><tt class="py-lineno"> 373</tt>  <tt class="py-line">                <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L374"></a><tt class="py-lineno"> 374</tt>  <tt class="py-line">                    <tt class="py-name">merge_error</tt> <tt class="py-op">=</tt> <tt class="py-number">2</tt> </tt>
+<a name="L375"></a><tt class="py-lineno"> 375</tt>  <tt class="py-line">                    <tt class="py-name">merge_error_msg</tt> <tt class="py-op">=</tt> <tt class="py-string">"Unmerge lowest variable in this cluster first"</tt> </tt>
+<a name="L376"></a><tt class="py-lineno"> 376</tt>  <tt class="py-line"> </tt>
+<a name="L377"></a><tt class="py-lineno"> 377</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">merge_error</tt> <tt class="py-op">==</tt> <tt class="py-number">1</tt><tt class="py-op">:</tt> </tt>
+<a name="L378"></a><tt class="py-lineno"> 378</tt>  <tt class="py-line">            <tt id="link-166" class="py-name"><a title="VisionEgg.GUI.tkMessageBox" class="py-name" href="#" onclick="return doclink('link-166', 'tkMessageBox', 'link-8');">tkMessageBox</a></tt><tt class="py-op">.</tt><tt class="py-name">showerror</tt><tt class="py-op">(</tt><tt class="py-string">"Cannot perform merge"</tt><tt class="py-op">,</tt> <tt class="py-name">merge_error_msg</tt><tt class="py-op">)</tt> </tt>
+<a name="L379"></a><tt class="py-lineno"> 379</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">merge_error</tt> <tt class="py-op">==</tt> <tt class="py-number">2</tt><tt class="py-op">:</tt> </tt>
+<a name="L380"></a><tt class="py-lineno"> 380</tt>  <tt class="py-line">            <tt id="link-167" class="py-name"><a title="VisionEgg.GUI.tkMessageBox" class="py-name" href="#" onclick="return doclink('link-167', 'tkMessageBox', 'link-8');">tkMessageBox</a></tt><tt class="py-op">.</tt><tt class="py-name">showerror</tt><tt class="py-op">(</tt><tt class="py-string">"Cannot perform unmerge"</tt><tt class="py-op">,</tt> <tt class="py-name">merge_error_msg</tt><tt class="py-op">)</tt> </tt>
+<a name="L381"></a><tt class="py-lineno"> 381</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">merge_error</tt> <tt class="py-op">==</tt> <tt class="py-number">3</tt><tt class="py-op">:</tt> </tt>
+<a name="L382"></a><tt class="py-lineno"> 382</tt>  <tt class="py-line">            <tt class="py-comment"># non critical errors</tt> </tt>
+<a name="L383"></a><tt class="py-lineno"> 383</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">pass</tt> </tt>
+<a name="L384"></a><tt class="py-lineno"> 384</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L385"></a><tt class="py-lineno"> 385</tt>  <tt class="py-line">            <tt class="py-comment">#debugger:</tt> </tt>
+<a name="L386"></a><tt class="py-lineno"> 386</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment">#print len(self.list)</tt> </tt>
+<a name="L387"></a><tt class="py-lineno"> 387</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment">#print ""</tt> </tt>
+<a name="L388"></a><tt class="py-lineno"> 388</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment">#for x in self.list:</tt> </tt>
+<a name="L389"></a><tt class="py-lineno"> 389</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment">#    print len(x)</tt> </tt>
+<a name="L390"></a><tt class="py-lineno"> 390</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment">#print "--------------"</tt> </tt>
+<a name="L391"></a><tt class="py-lineno"> 391</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-168" class="py-name"><a title="VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.update_now" class="py-name" href="#" onclick="return doclink('link-168', 'update_now', 'link-133');">update_now</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L392"></a><tt class="py-lineno"> 392</tt>  <tt class="py-line"> </tt>
+<a name="L393"></a><tt class="py-lineno"> 393</tt>  <tt class="py-line"> </tt>
+<a name="L394"></a><tt class="py-lineno"> 394</tt>  <tt class="py-line"> </tt>
+<a name="ScrollListFrame.make_contained_object"></a><div id="ScrollListFrame.make_contained_object-def"><a name="L395"></a><tt class="py-lineno"> 395</tt> <a class="py-toggle" href="#" id="ScrollListFrame.make_contained_object-toggle" onclick="return toggle('ScrollListFrame.make_contained_object');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.EPhysGUI.ScrollListFrame-class.html#make_contained_object">make_contained_object</ [...]
+</div><div id="ScrollListFrame.make_contained_object-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ScrollListFrame.make_contained_object-expanded"><a name="L396"></a><tt class="py-lineno"> 396</tt>  <tt class="py-line">        <tt class="py-docstring">"""Factory function for ContainedObjectBase"""</tt> </tt>
+<a name="L397"></a><tt class="py-lineno"> 397</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">container_class</tt> <tt class="py-op">==</tt> <tt id="link-169" class="py-name" targets="Class VisionEgg.PyroApps.EPhysGUI.LoopContainedObject=VisionEgg.PyroApps.EPhysGUI.LoopContainedObject-class.html"><a title="VisionEgg.PyroApps.EPhysGUI.LoopContainedObject" class="py-name" href="#" onclick="return doclink('link-169', 'LoopContainedObject', 'link-169');"> [...]
+<a name="L398"></a><tt class="py-lineno"> 398</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-170" class="py-name" targets="Method VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.make_loop_contained_object()=VisionEgg.PyroApps.EPhysGUI.ScrollListFrame-class.html#make_loop_contained_object"><a title="VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.make_loop_contained_object" class="py-name" href="#" onclick [...]
+<a name="L399"></a><tt class="py-lineno"> 399</tt>  <tt class="py-line">        <tt class="py-name">params</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L400"></a><tt class="py-lineno"> 400</tt>  <tt class="py-line">        <tt class="py-name">p</tt> <tt class="py-op">=</tt> <tt class="py-name">container_class</tt><tt class="py-op">.</tt><tt class="py-name">contained_class</tt><tt class="py-op">.</tt><tt id="link-171" class="py-name" targets="Variable VisionEgg.ClassWithParameters.parameters_and_defaults=VisionEgg.ClassWithParameters-class.html#parameters_and_defaults,Variable VisionEgg.Core.FixationSpot.parameters_and_defaults= [...]
+VisionEgg.Core.FixationSpot.parameters_and_defaults
+VisionEgg.Core.ProjectionBaseClass.parameters_and_defaults
+VisionEgg.Core.Screen.parameters_and_defaults
+VisionEgg.Core.Viewport.parameters_and_defaults
+VisionEgg.Daq.Buffered.parameters_and_defaults
+VisionEgg.Dots.DotArea2D.parameters_and_defaults
+VisionEgg.FlowControl.Presentation.parameters_and_defaults
+VisionEgg.Gratings.AlphaGratingCommon.parameters_and_defaults
+VisionEgg.Gratings.LuminanceGratingCommon.parameters_and_defaults
+VisionEgg.Gratings.SinGrating2D.parameters_and_defaults
+VisionEgg.Gratings.SinGrating3D.parameters_and_defaults
+VisionEgg.MoreStimuli.Arrow.parameters_and_defaults
+VisionEgg.MoreStimuli.FilledCircle.parameters_and_defaults
+VisionEgg.MoreStimuli.Rectangle3D.parameters_and_defaults
+VisionEgg.MoreStimuli.Target2D.parameters_and_defaults
+VisionEgg.PyroApps.EPhysGUI.Loop.parameters_and_defaults
+VisionEgg.SphereMap.AzElGrid.parameters_and_defaults
+VisionEgg.SphereMap.SphereGrating.parameters_and_defaults
+VisionEgg.SphereMap.SphereMap.parameters_and_defaults
+VisionEgg.SphereMap.SphereWindow.parameters_and_defaults
+VisionEgg.Text.BitmapText.parameters_and_defaults
+VisionEgg.Text.GlutTextBase.parameters_and_defaults
+VisionEgg.Text.StrokeText.parameters_and_defaults
+VisionEgg.Text.Text.parameters_and_defaults
+VisionEgg.Textures.FixationCross.parameters_and_defaults
+VisionEgg.Textures.SpinningDrum.parameters_and_defaults
+VisionEgg.Textures.TextureStimulus.parameters_and_defaults
+VisionEgg.Textures.TextureStimulus3D.parameters_and_defaults
+VisionEgg.Textures.TextureStimulusBaseClass.parameters_and_defaults
+VisionEgg.WrappedText.WrappedText.parameters_and_defaults" class="py-name" href="#" onclick="return doclink('link-171', 'parameters_and_defaults', 'link-171');">parameters_and_defaults</a></tt> </tt>
+<a name="L401"></a><tt class="py-lineno"> 401</tt>  <tt class="py-line">        <tt class="py-name">keys</tt> <tt class="py-op">=</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">keys</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L402"></a><tt class="py-lineno"> 402</tt>  <tt class="py-line">        <tt class="py-name">keys</tt><tt class="py-op">.</tt><tt class="py-name">sort</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L403"></a><tt class="py-lineno"> 403</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">pname</tt> <tt class="py-keyword">in</tt> <tt class="py-name">keys</tt><tt class="py-op">:</tt> </tt>
+<a name="L404"></a><tt class="py-lineno"> 404</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">p</tt><tt class="py-op">[</tt><tt class="py-name">pname</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-172" class="py-name" targets="Class VisionEgg.ParameterTypes.String=VisionEgg.ParameterTypes.String- [...]
+<a name="L405"></a><tt class="py-lineno"> 405</tt>  <tt class="py-line">                <tt class="py-name">params</tt><tt class="py-op">[</tt><tt class="py-name">pname</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">tkSimpleDialog</tt><tt class="py-op">.</tt><tt class="py-name">askstring</tt><tt class="py-op">(</tt><tt class="py-name">pname</tt><tt class="py-op">,</tt><tt class="py-name">pname</tt><tt class="py-op">,</tt><tt class="py-name">initialvalue</tt><tt [...]
+<a name="L406"></a><tt class="py-lineno"> 406</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-name">p</tt><tt class="py-op">[</tt><tt class="py-name">pname</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-173" class="py-name" targets="Class VisionEgg.ParameterTypes.Integer=VisionEgg.ParameterTypes.Inte [...]
+<a name="L407"></a><tt class="py-lineno"> 407</tt>  <tt class="py-line">                <tt class="py-name">params</tt><tt class="py-op">[</tt><tt class="py-name">pname</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">tkSimpleDialog</tt><tt class="py-op">.</tt><tt class="py-name">askinteger</tt><tt class="py-op">(</tt><tt class="py-name">pname</tt><tt class="py-op">,</tt><tt class="py-name">pname</tt><tt class="py-op">,</tt><tt class="py-name">initialvalue</tt><t [...]
+<a name="L408"></a><tt class="py-lineno"> 408</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-name">p</tt><tt class="py-op">[</tt><tt class="py-name">pname</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-174" class="py-name" targets="Class VisionEgg.ParameterTypes.Real=VisionEgg.ParameterTypes.Real-cl [...]
+<a name="L409"></a><tt class="py-lineno"> 409</tt>  <tt class="py-line">                <tt class="py-name">params</tt><tt class="py-op">[</tt><tt class="py-name">pname</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">tkSimpleDialog</tt><tt class="py-op">.</tt><tt class="py-name">askfloat</tt><tt class="py-op">(</tt><tt class="py-name">pname</tt><tt class="py-op">,</tt><tt class="py-name">pname</tt><tt class="py-op">,</tt><tt class="py-name">initialvalue</tt><tt  [...]
+<a name="L410"></a><tt class="py-lineno"> 410</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-name">p</tt><tt class="py-op">[</tt><tt class="py-name">pname</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-175" class="py-name" targets="Class VisionEgg.ParameterTypes.Sequence=VisionEgg.ParameterTypes.Seq [...]
+<a name="L411"></a><tt class="py-lineno"> 411</tt>  <tt class="py-line">                <tt class="py-name">params</tt><tt class="py-op">[</tt><tt class="py-name">pname</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">eval</tt><tt class="py-op">(</tt><tt class="py-string">"["</tt><tt class="py-op">+</tt><tt class="py-name">tkSimpleDialog</tt><tt class="py-op">.</tt><tt class="py-name">askstring</tt><tt class="py-op">(</tt><tt class="py-name">pname</tt><tt class=" [...]
+<a name="L412"></a><tt class="py-lineno"> 412</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">params</tt><tt class="py-op">[</tt><tt class="py-name">pname</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">types</tt><tt class="py-op">.</tt><tt class="py-name">ListType</tt><tt class="py-op">:</tt> </tt>
+<a name="L413"></a><tt class="py-lineno"> 413</tt>  <tt class="py-line">                    <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">"You must enter a list in the form of '[1,2,3]'"</tt><tt class="py-op">)</tt> </tt>
+<a name="L414"></a><tt class="py-lineno"> 414</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L415"></a><tt class="py-lineno"> 415</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> <tt class="py-name">NotImplementedError</tt><tt class="py-op">(</tt><tt class="py-string">"Don't know about type %s"</tt><tt class="py-op">%</tt><tt class="py-op">(</tt><tt class="py-name">p</tt><tt class="py-op">[</tt><tt class="py-name">pname</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">,</ [...]
+<a name="L416"></a><tt class="py-lineno"> 416</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">params</tt><tt class="py-op">[</tt><tt class="py-name">pname</tt><tt class="py-op">]</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L417"></a><tt class="py-lineno"> 417</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> <tt class="py-name">RuntimeError</tt><tt class="py-op">(</tt><tt class="py-string">"Input cancelled"</tt><tt class="py-op">)</tt> </tt>
+<a name="L418"></a><tt class="py-lineno"> 418</tt>  <tt class="py-line">        <tt class="py-name">contained</tt> <tt class="py-op">=</tt> <tt class="py-name">container_class</tt><tt class="py-op">.</tt><tt class="py-name">contained_class</tt><tt class="py-op">(</tt><tt class="py-op">**</tt><tt class="py-name">params</tt><tt class="py-op">)</tt> <tt class="py-comment"># call constructor</tt> </tt>
+<a name="L419"></a><tt class="py-lineno"> 419</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">container_class</tt><tt class="py-op">(</tt><tt class="py-name">contained</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L420"></a><tt class="py-lineno"> 420</tt>  <tt class="py-line"> </tt>
+<a name="ScrollListFrame.edit_contained_object"></a><div id="ScrollListFrame.edit_contained_object-def"><a name="L421"></a><tt class="py-lineno"> 421</tt> <a class="py-toggle" href="#" id="ScrollListFrame.edit_contained_object-toggle" onclick="return toggle('ScrollListFrame.edit_contained_object');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.EPhysGUI.ScrollListFrame-class.html#edit_contained_object">edit_contained_object</ [...]
+</div><div id="ScrollListFrame.edit_contained_object-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ScrollListFrame.edit_contained_object-expanded"><a name="L422"></a><tt class="py-lineno"> 422</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">contained_object</tt><tt class="py-op">,</tt><tt id="link-176" class="py-name"><a title="Vis [...]
+<a name="L423"></a><tt class="py-lineno"> 423</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">NotImplementedError</tt><tt class="py-op">(</tt><tt class="py-string">""</tt><tt class="py-op">)</tt> </tt>
+<a name="L424"></a><tt class="py-lineno"> 424</tt>  <tt class="py-line">        <tt class="py-name">orig_contained</tt> <tt class="py-op">=</tt> <tt class="py-name">contained_object</tt><tt class="py-op">.</tt><tt id="link-177" class="py-name" targets="Method VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase.get_contained()=VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase-class.html#get_contained"><a title="VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase.get_contained" class="py-name" href= [...]
+<a name="L425"></a><tt class="py-lineno"> 425</tt>  <tt class="py-line">        <tt class="py-name">d</tt> <tt class="py-op">=</tt> <tt id="link-178" class="py-name" targets="Class VisionEgg.PyroApps.EPhysGUI.LoopParamDialog=VisionEgg.PyroApps.EPhysGUI.LoopParamDialog-class.html"><a title="VisionEgg.PyroApps.EPhysGUI.LoopParamDialog" class="py-name" href="#" onclick="return doclink('link-178', 'LoopParamDialog', 'link-178');">LoopParamDialog</a></tt><tt class="py-op">(</tt><tt class="py- [...]
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.title
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.title
+VisionEgg.PyroApps.GridGUI.GridControlFrame.title
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.title
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.title
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.title
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.title" class="py-name" href="#" onclick="return doclink('link-179', 'title', 'link-102');">title</a></tt><tt class="py-op">=</tt><tt class="py-string">"Loop Parameters"</tt><tt class="py-op">,</tt> <tt class="py-name">orig_values</tt><tt class="py-op">=</tt><tt class="py-name">orig_contained</tt> <tt class="py-op">)</tt> </tt>
+<a name="L426"></a><tt class="py-lineno"> 426</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">d</tt><tt class="py-op">.</tt><tt class="py-name">result</tt><tt class="py-op">:</tt> </tt>
+<a name="L427"></a><tt class="py-lineno"> 427</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt id="link-180" class="py-name"><a title="VisionEgg.PyroApps.EPhysGUI.LoopContainedObject" class="py-name" href="#" onclick="return doclink('link-180', 'LoopContainedObject', 'link-169');">LoopContainedObject</a></tt><tt class="py-op">(</tt><tt class="py-name">d</tt><tt class="py-op">.</tt><tt class="py-name">result</tt><tt class="py-op">)</tt> </tt>
+<a name="L428"></a><tt class="py-lineno"> 428</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L429"></a><tt class="py-lineno"> 429</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> </tt>
+</div><a name="L430"></a><tt class="py-lineno"> 430</tt>  <tt class="py-line"> </tt>
+<a name="ScrollListFrame.make_loop_contained_object"></a><div id="ScrollListFrame.make_loop_contained_object-def"><a name="L431"></a><tt class="py-lineno"> 431</tt> <a class="py-toggle" href="#" id="ScrollListFrame.make_loop_contained_object-toggle" onclick="return toggle('ScrollListFrame.make_loop_contained_object');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.EPhysGUI.ScrollListFrame-class.html#make_loop_contained_object [...]
+</div><div id="ScrollListFrame.make_loop_contained_object-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ScrollListFrame.make_loop_contained_object-expanded"><a name="L432"></a><tt class="py-lineno"> 432</tt>  <tt class="py-line">        <tt class="py-name">d</tt> <tt class="py-op">=</tt> <tt id="link-181" class="py-name"><a title="VisionEgg.PyroApps.EPhysGUI.LoopParamDialog" class="py-name" href="#" onclick="return doclink('link-181', 'LoopParamDialog', 'li [...]
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.title
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.title
+VisionEgg.PyroApps.GridGUI.GridControlFrame.title
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.title
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.title
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.title
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.title" class="py-name" href="#" onclick="return doclink('link-182', 'title', 'link-102');">title</a></tt><tt class="py-op">=</tt><tt class="py-string">"Loop Parameters"</tt> <tt class="py-op">)</tt> </tt>
+<a name="L433"></a><tt class="py-lineno"> 433</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">d</tt><tt class="py-op">.</tt><tt class="py-name">result</tt><tt class="py-op">:</tt> </tt>
+<a name="L434"></a><tt class="py-lineno"> 434</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt id="link-183" class="py-name"><a title="VisionEgg.PyroApps.EPhysGUI.LoopContainedObject" class="py-name" href="#" onclick="return doclink('link-183', 'LoopContainedObject', 'link-169');">LoopContainedObject</a></tt><tt class="py-op">(</tt><tt class="py-name">d</tt><tt class="py-op">.</tt><tt class="py-name">result</tt><tt class="py-op">)</tt> </tt>
+<a name="L435"></a><tt class="py-lineno"> 435</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L436"></a><tt class="py-lineno"> 436</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> </tt>
+</div><a name="L437"></a><tt class="py-lineno"> 437</tt>  <tt class="py-line"> </tt>
+<a name="L438"></a><tt class="py-lineno"> 438</tt>  <tt class="py-line">    <tt class="py-comment"># Returns index of selected item ignoring blank listbox entries:</tt> </tt>
+<a name="L439"></a><tt class="py-lineno"> 439</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># eg. if listbox had:</tt> </tt>
+<a name="L440"></a><tt class="py-lineno"> 440</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#</tt> </tt>
+<a name="L441"></a><tt class="py-lineno"> 441</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># 0 a</tt> </tt>
+<a name="L442"></a><tt class="py-lineno"> 442</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># 1 b</tt> </tt>
+<a name="L443"></a><tt class="py-lineno"> 443</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># 2</tt> </tt>
+<a name="L444"></a><tt class="py-lineno"> 444</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># 3 c</tt> </tt>
+<a name="L445"></a><tt class="py-lineno"> 445</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># 4 d</tt> </tt>
+<a name="L446"></a><tt class="py-lineno"> 446</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#</tt> </tt>
+<a name="L447"></a><tt class="py-lineno"> 447</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># Then the index of element 'c' would be 2</tt> </tt>
+<a name="ScrollListFrame.get_selected"></a><div id="ScrollListFrame.get_selected-def"><a name="L448"></a><tt class="py-lineno"> 448</tt> <a class="py-toggle" href="#" id="ScrollListFrame.get_selected-toggle" onclick="return toggle('ScrollListFrame.get_selected');">-</a><tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.EPhysGUI.ScrollListFrame-class.html#get_selected">get_selected</a><tt class="py-op">(</tt> [...]
+</div><div id="ScrollListFrame.get_selected-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ScrollListFrame.get_selected-expanded"><a name="L449"></a><tt class="py-lineno"> 449</tt>  <tt class="py-line">        <tt class="py-name">items</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">frame</tt><tt class="py-op">.</tt><tt class="py-name">list</tt><tt class="py-op">.</tt><tt class="py-name">curselection</tt [...]
+<a name="L450"></a><tt class="py-lineno"> 450</tt>  <tt class="py-line">        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L451"></a><tt class="py-lineno"> 451</tt>  <tt class="py-line">            <tt class="py-name">items</tt> <tt class="py-op">=</tt> <tt class="py-name">map</tt><tt class="py-op">(</tt><tt id="link-184" class="py-name" targets="Class int=int-class.html"><a title="int" class="py-name" href="#" onclick="return doclink('link-184', 'int', 'link-184');">int</a></tt><tt class="py-op">,</tt> <tt class="py-name">items</tt><tt class="py-op">)</tt> </tt>
+<a name="L452"></a><tt class="py-lineno"> 452</tt>  <tt class="py-line"> </tt>
+<a name="L453"></a><tt class="py-lineno"> 453</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt> <tt class="py-name">ValueError</tt><tt class="py-op">:</tt> <tt class="py-keyword">pass</tt> </tt>
+<a name="L454"></a><tt class="py-lineno"> 454</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">items</tt><tt class="py-op">)</tt> <tt class="py-op">></tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt>
+<a name="L455"></a><tt class="py-lineno"> 455</tt>  <tt class="py-line">            <tt class="py-name">selected_item_index</tt> <tt class="py-op">=</tt> <tt class="py-name">items</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt>
+<a name="L456"></a><tt class="py-lineno"> 456</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">frame</tt><tt class="py-op">.</tt><tt class="py-name">list</tt><tt class="py-op">.</tt><tt id="link-185" class="py-name" targets="Method VisionEgg.PyroClient.PyroClient.get()=VisionEgg.PyroClient.PyroClient-class.html#get"><a title="VisionEgg.PyroClient.PyroClient.get" class="py-name" href="#" onclick=" [...]
+<a name="L457"></a><tt class="py-lineno"> 457</tt>  <tt class="py-line">                <tt class="py-name">blankentrycount</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L458"></a><tt class="py-lineno"> 458</tt>  <tt class="py-line">                <tt class="py-name">i</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L459"></a><tt class="py-lineno"> 459</tt>  <tt class="py-line">                <tt class="py-keyword">while</tt> <tt class="py-name">i</tt> <tt class="py-op"><</tt> <tt class="py-name">selected_item_index</tt><tt class="py-op">:</tt> </tt>
+<a name="L460"></a><tt class="py-lineno"> 460</tt>  <tt class="py-line">                    <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">frame</tt><tt class="py-op">.</tt><tt class="py-name">list</tt><tt class="py-op">.</tt><tt id="link-186" class="py-name"><a title="VisionEgg.PyroClient.PyroClient.get" class="py-name" href="#" onclick="return doclink('link-186', 'get', 'link-185');">get</a></tt><tt class="py-op">(</tt><tt class= [...]
+<a name="L461"></a><tt class="py-lineno"> 461</tt>  <tt class="py-line">                        <tt class="py-name">blankentrycount</tt> <tt class="py-op">=</tt> <tt class="py-name">blankentrycount</tt> <tt class="py-op">+</tt> <tt class="py-number">1</tt> </tt>
+<a name="L462"></a><tt class="py-lineno"> 462</tt>  <tt class="py-line">                    <tt class="py-name">i</tt> <tt class="py-op">=</tt> <tt class="py-name">i</tt> <tt class="py-op">+</tt> <tt class="py-number">1</tt> </tt>
+<a name="L463"></a><tt class="py-lineno"> 463</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-op">(</tt><tt class="py-name">selected_item_index</tt> <tt class="py-op">-</tt> <tt class="py-name">blankentrycount</tt><tt class="py-op">)</tt> </tt>
+<a name="L464"></a><tt class="py-lineno"> 464</tt>  <tt class="py-line"> </tt>
+<a name="L465"></a><tt class="py-lineno"> 465</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt>
+</div><a name="L466"></a><tt class="py-lineno"> 466</tt>  <tt class="py-line"> </tt>
+<a name="L467"></a><tt class="py-lineno"> 467</tt>  <tt class="py-line"> </tt>
+<a name="L468"></a><tt class="py-lineno"> 468</tt>  <tt class="py-line">    <tt class="py-comment"># Performs reverse of above:</tt> </tt>
+<a name="L469"></a><tt class="py-lineno"> 469</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># eg. if listbox had:</tt> </tt>
+<a name="L470"></a><tt class="py-lineno"> 470</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#</tt> </tt>
+<a name="L471"></a><tt class="py-lineno"> 471</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># 0 a</tt> </tt>
+<a name="L472"></a><tt class="py-lineno"> 472</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># 1 b</tt> </tt>
+<a name="L473"></a><tt class="py-lineno"> 473</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># 2</tt> </tt>
+<a name="L474"></a><tt class="py-lineno"> 474</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># 3 c</tt> </tt>
+<a name="L475"></a><tt class="py-lineno"> 475</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># 4 d</tt> </tt>
+<a name="L476"></a><tt class="py-lineno"> 476</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">#</tt> </tt>
+<a name="L477"></a><tt class="py-lineno"> 477</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># Then "mapping" of given index 2 would result in return value of 3</tt> </tt>
+<a name="ScrollListFrame.map_to_listbox_index"></a><div id="ScrollListFrame.map_to_listbox_index-def"><a name="L478"></a><tt class="py-lineno"> 478</tt> <a class="py-toggle" href="#" id="ScrollListFrame.map_to_listbox_index-toggle" onclick="return toggle('ScrollListFrame.map_to_listbox_index');">-</a><tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.EPhysGUI.ScrollListFrame-class.html#map_to_listbox_index"> [...]
+</div><div id="ScrollListFrame.map_to_listbox_index-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ScrollListFrame.map_to_listbox_index-expanded"><a name="L479"></a><tt class="py-lineno"> 479</tt>  <tt class="py-line">        <tt class="py-name">validentrycount</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L480"></a><tt class="py-lineno"> 480</tt>  <tt class="py-line">        <tt class="py-name">i</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L481"></a><tt class="py-lineno"> 481</tt>  <tt class="py-line">        <tt class="py-keyword">while</tt> <tt class="py-name">i</tt> <tt class="py-op"><</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">frame</tt><tt class="py-op">.</tt><tt class="py-name">list</tt><tt class="py-op">.</tt><tt id="link-187" class="py-name" targets="Variable VisionEgg.Core.Screen.size=VisionEgg.Core.Screen-class.html#size"><a title="VisionEgg.Core.Screen.size" class=" [...]
+<a name="L482"></a><tt class="py-lineno"> 482</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">frame</tt><tt class="py-op">.</tt><tt class="py-name">list</tt><tt class="py-op">.</tt><tt id="link-188" class="py-name"><a title="VisionEgg.PyroClient.PyroClient.get" class="py-name" href="#" onclick="return doclink('link-188', 'get', 'link-185');">get</a></tt><tt class="py-op">(</tt><tt class="py-name [...]
+<a name="L483"></a><tt class="py-lineno"> 483</tt>  <tt class="py-line">                <tt class="py-name">validentrycount</tt> <tt class="py-op">=</tt> <tt class="py-name">validentrycount</tt> <tt class="py-op">+</tt> <tt class="py-number">1</tt> </tt>
+<a name="L484"></a><tt class="py-lineno"> 484</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">validentrycount</tt> <tt class="py-op">==</tt> <tt class="py-op">(</tt><tt class="py-name">index</tt> <tt class="py-op">+</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L485"></a><tt class="py-lineno"> 485</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-name">i</tt> </tt>
+<a name="L486"></a><tt class="py-lineno"> 486</tt>  <tt class="py-line">            <tt class="py-name">i</tt> <tt class="py-op">=</tt> <tt class="py-name">i</tt> <tt class="py-op">+</tt> <tt class="py-number">1</tt> </tt>
+<a name="L487"></a><tt class="py-lineno"> 487</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-op">-</tt><tt class="py-number">1</tt> </tt>
+</div></div><a name="L488"></a><tt class="py-lineno"> 488</tt>  <tt class="py-line"><tt class="py-comment">###################################################</tt> </tt>
+<a name="L489"></a><tt class="py-lineno"> 489</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="Loop"></a><div id="Loop-def"><a name="L490"></a><tt class="py-lineno"> 490</tt> <a class="py-toggle" href="#" id="Loop-toggle" onclick="return toggle('Loop');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.PyroApps.EPhysGUI.Loop-class.html">Loop</a><tt class="py-op">(</tt><tt class="py-base-class">VisionEgg</tt><tt class="py-op">.</tt><tt class="py-base-class">ClassWithParameters</tt><tt class="py-op">)</tt><tt class="py-op">:< [...]
+</div><div id="Loop-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="Loop-expanded"><a name="L491"></a><tt class="py-lineno"> 491</tt>  <tt class="py-line">    <tt id="link-189" class="py-name"><a title="VisionEgg.ClassWithParameters.parameters_and_defaults
+VisionEgg.Core.FixationSpot.parameters_and_defaults
+VisionEgg.Core.ProjectionBaseClass.parameters_and_defaults
+VisionEgg.Core.Screen.parameters_and_defaults
+VisionEgg.Core.Viewport.parameters_and_defaults
+VisionEgg.Daq.Buffered.parameters_and_defaults
+VisionEgg.Dots.DotArea2D.parameters_and_defaults
+VisionEgg.FlowControl.Presentation.parameters_and_defaults
+VisionEgg.Gratings.AlphaGratingCommon.parameters_and_defaults
+VisionEgg.Gratings.LuminanceGratingCommon.parameters_and_defaults
+VisionEgg.Gratings.SinGrating2D.parameters_and_defaults
+VisionEgg.Gratings.SinGrating3D.parameters_and_defaults
+VisionEgg.MoreStimuli.Arrow.parameters_and_defaults
+VisionEgg.MoreStimuli.FilledCircle.parameters_and_defaults
+VisionEgg.MoreStimuli.Rectangle3D.parameters_and_defaults
+VisionEgg.MoreStimuli.Target2D.parameters_and_defaults
+VisionEgg.PyroApps.EPhysGUI.Loop.parameters_and_defaults
+VisionEgg.SphereMap.AzElGrid.parameters_and_defaults
+VisionEgg.SphereMap.SphereGrating.parameters_and_defaults
+VisionEgg.SphereMap.SphereMap.parameters_and_defaults
+VisionEgg.SphereMap.SphereWindow.parameters_and_defaults
+VisionEgg.Text.BitmapText.parameters_and_defaults
+VisionEgg.Text.GlutTextBase.parameters_and_defaults
+VisionEgg.Text.StrokeText.parameters_and_defaults
+VisionEgg.Text.Text.parameters_and_defaults
+VisionEgg.Textures.FixationCross.parameters_and_defaults
+VisionEgg.Textures.SpinningDrum.parameters_and_defaults
+VisionEgg.Textures.TextureStimulus.parameters_and_defaults
+VisionEgg.Textures.TextureStimulus3D.parameters_and_defaults
+VisionEgg.Textures.TextureStimulusBaseClass.parameters_and_defaults
+VisionEgg.WrappedText.WrappedText.parameters_and_defaults" class="py-name" href="#" onclick="return doclink('link-189', 'parameters_and_defaults', 'link-171');">parameters_and_defaults</a></tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-string">'variable'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-string">'<repeat>'</tt><tt class="py-op">,</tt> </tt>
+<a name="L492"></a><tt class="py-lineno"> 492</tt>  <tt class="py-line">                                           <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-190" class="py-name"><a title="VisionEgg.ParameterTypes.String" class="py-name" href="#" onclick="return doclink('link-190', 'String', 'link-172');">String</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L493"></a><tt class="py-lineno"> 493</tt>  <tt class="py-line">                               <tt class="py-string">'sequence'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">,</tt> <tt class="py-number">1</tt><tt class="py-op">,</tt> <tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L494"></a><tt class="py-lineno"> 494</tt>  <tt class="py-line">                                           <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-191" class="py-name"><a title="VisionEgg.ParameterTypes.Sequence" class="py-name" href="#" onclick="return doclink('link-191', 'Sequence', 'link-175');">Sequence</a></tt><tt class="py-op">(</tt><tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-192" class="py-name"><a title="VisionEgg.Pa [...]
+<a name="L495"></a><tt class="py-lineno"> 495</tt>  <tt class="py-line">                               <tt class="py-string">'rest_duration_sec'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-number">1.0</tt><tt class="py-op">,</tt> </tt>
+<a name="L496"></a><tt class="py-lineno"> 496</tt>  <tt class="py-line">                                                    <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-193" class="py-name"><a title="VisionEgg.ParameterTypes.Real" class="py-name" href="#" onclick="return doclink('link-193', 'Real', 'link-174');">Real</a></tt><tt class="py-op">)</tt><tt class="py-op">}</tt> </tt>
+<a name="L497"></a><tt class="py-lineno"> 497</tt>  <tt class="py-line">    <tt class="py-name">__slots__</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt> </tt>
+<a name="L498"></a><tt class="py-lineno"> 498</tt>  <tt class="py-line">        <tt class="py-string">'num_done'</tt><tt class="py-op">,</tt> </tt>
+<a name="L499"></a><tt class="py-lineno"> 499</tt>  <tt class="py-line">        <tt class="py-op">)</tt> </tt>
+<a name="L500"></a><tt class="py-lineno"> 500</tt>  <tt class="py-line"> </tt>
+<a name="L501"></a><tt class="py-lineno"> 501</tt>  <tt class="py-line"> </tt>
+<a name="Loop.__init__"></a><div id="Loop.__init__-def"><a name="L502"></a><tt class="py-lineno"> 502</tt> <a class="py-toggle" href="#" id="Loop.__init__-toggle" onclick="return toggle('Loop.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.EPhysGUI.Loop-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt><tt class="py-op">**</tt><tt class="py-param">kw</tt> [...]
+</div><div id="Loop.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Loop.__init__-expanded"><a name="L503"></a><tt class="py-lineno"> 503</tt>  <tt class="py-line">        <tt id="link-194" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-194', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-195" class="py-name" targets="Class VisionEgg.ClassWithParameters=VisionEgg.ClassWithP [...]
+VisionEgg.Configuration.Config.__init__
+VisionEgg.Core.FixationSpot.__init__
+VisionEgg.Core.FrameTimer.__init__
+VisionEgg.Core.ModelView.__init__
+VisionEgg.Core.OrthographicProjection.__init__
+VisionEgg.Core.OrthographicProjectionNoZClip.__init__
+VisionEgg.Core.PerspectiveProjection.__init__
+VisionEgg.Core.Projection.__init__
+VisionEgg.Core.ProjectionBaseClass.__init__
+VisionEgg.Core.Screen.__init__
+VisionEgg.Core.SimplePerspectiveProjection.__init__
+VisionEgg.Core.Stimulus.__init__
+VisionEgg.Core.Viewport.__init__
+VisionEgg.Daq.Channel.__init__
+VisionEgg.Daq.DaqMode.__init__
+VisionEgg.Daq.Device.__init__
+VisionEgg.Daq.Functionality.__init__
+VisionEgg.Daq.SignalType.__init__
+VisionEgg.DaqKeyboard.KeyboardTriggerInController.__init__
+VisionEgg.DaqLPT.LPTChannel.__init__
+VisionEgg.DaqLPT.LPTDevice.__init__
+VisionEgg.DaqLPT.LPTTriggerInController.__init__
+VisionEgg.DaqLPT.LPTTriggerOutController.__init__
+VisionEgg.Deprecated.Message.__init__
+VisionEgg.Dots.DotArea2D.__init__
+VisionEgg.FlowControl.ConstantController.__init__
+VisionEgg.FlowControl.Controller.__init__
+VisionEgg.FlowControl.EncapsulatedController.__init__
+VisionEgg.FlowControl.EvalStringController.__init__
+VisionEgg.FlowControl.ExecStringController.__init__
+VisionEgg.FlowControl.FunctionController.__init__
+VisionEgg.FlowControl.Presentation.__init__
+VisionEgg.GLTrace.Wrapper.__init__
+VisionEgg.GUI.AppWindow.__init__
+VisionEgg.GUI.GetKeypressDialog.__init__
+VisionEgg.GUI.GraphicsConfigurationWindow.__init__
+VisionEgg.GUI.InfoFrame.__init__
+VisionEgg.GUI.ProgressBar.__init__
+VisionEgg.GUI.ToplevelDialog.__init__
+VisionEgg.Gratings.SinGrating2D.__init__
+VisionEgg.Gratings.SinGrating3D.__init__
+VisionEgg.MoreStimuli.Arrow.__init__
+VisionEgg.MoreStimuli.FilledCircle.__init__
+VisionEgg.MoreStimuli.Rectangle3D.__init__
+VisionEgg.MoreStimuli.Target2D.__init__
+VisionEgg.ParameterTypes.AnyOf.__init__
+VisionEgg.ParameterTypes.Instance.__init__
+VisionEgg.ParameterTypes.Sequence.__init__
+VisionEgg.ParameterTypes.SubClass.__init__
+VisionEgg.PyroApps.AST_ext.AST_Visitor.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalMetaParameters.__init__
+VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.__init__
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.__init__
+VisionEgg.PyroApps.DropinGUI.DropinMetaParameters.__init__
+VisionEgg.PyroApps.DropinServer.DropinMetaController.__init__
+VisionEgg.PyroApps.EPhysGUI.AppWindow.__init__
+VisionEgg.PyroApps.EPhysGUI.BarButton.__init__
+VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase.__init__
+VisionEgg.PyroApps.EPhysGUI.GammaFrame.__init__
+VisionEgg.PyroApps.EPhysGUI.ImageSequenceLauncher.__init__
+VisionEgg.PyroApps.EPhysGUI.Loop.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopContainedObject.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopParamDialog.__init__
+VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.__init__
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.__init__
+VisionEgg.PyroApps.EPhysServer.EPhysServer.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingMetaParameters.__init__
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.GridGUI.GridControlFrame.__init__
+VisionEgg.PyroApps.GridGUI.GridMetaParameters.__init__
+VisionEgg.PyroApps.GridServer.GridMetaController.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetMetaParameters.__init__
+VisionEgg.PyroApps.MouseTargetServer.MousePositionController.__init__
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetOrientationController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetPositionController.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.CallbackEntry.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionParameters.__init__
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingMetaParameters.__init__
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumMetaParameters.__init__
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.__init__
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.__init__
+VisionEgg.PyroApps.TargetGUI.TargetMetaParameters.__init__
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.__init__
+VisionEgg.PyroClient.PyroClient.__init__
+VisionEgg.PyroHelpers.PyroConstantController.__init__
+VisionEgg.PyroHelpers.PyroEncapsulatedController.__init__
+VisionEgg.PyroHelpers.PyroEvalStringController.__init__
+VisionEgg.PyroHelpers.PyroExecStringController.__init__
+VisionEgg.PyroHelpers.PyroListenController.__init__
+VisionEgg.PyroHelpers.PyroLocalDictController.__init__
+VisionEgg.PyroHelpers.PyroServer.__init__
+VisionEgg.QuickTime.MovieTexture.__init__
+VisionEgg.ResponseControl.KeyboardResponseController.__init__
+VisionEgg.ResponseControl.ResponseController.__init__
+VisionEgg.SphereMap.AzElGrid.__init__
+VisionEgg.SphereMap.SphereGrating.__init__
+VisionEgg.SphereMap.SphereMap.__init__
+VisionEgg.SphereMap.SphereWindow.__init__
+VisionEgg.TCPController.SocketListenController.__init__
+VisionEgg.TCPController.TCPController.__init__
+VisionEgg.TCPController.TCPServer.__init__
+VisionEgg.Text.BitmapText.__init__
+VisionEgg.Text.GlutTextBase.__init__
+VisionEgg.Text.StrokeText.__init__
+VisionEgg.Text.Text.__init__
+VisionEgg.Textures.FixationCross.__init__
+VisionEgg.Textures.Mask2D.__init__
+VisionEgg.Textures.SpinningDrum.__init__
+VisionEgg.Textures.Texture.__init__
+VisionEgg.Textures.TextureFromFile.__init__
+VisionEgg.Textures.TextureObject.__init__
+VisionEgg.Textures.TextureStimulusBaseClass.__init__
+VisionEgg.ThreeDeeMath.TransformMatrix.__init__
+VisionEgg.WrappedText.WrappedText.__init__
+VisionEgg.qtmovie.Movie.__init__
+VisionEgg.qtmovie.Rect.__init__" class="py-name" href="#" onclick="return doclink('link-196', '__init__', 'link-96');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt><tt class="py-op">**</tt><tt class="py-name">kw</tt><tt class="py-op">)</tt> </tt>
+<a name="L504"></a><tt class="py-lineno"> 504</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">num_done</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+</div><a name="Loop.is_done"></a><div id="Loop.is_done-def"><a name="L505"></a><tt class="py-lineno"> 505</tt> <a class="py-toggle" href="#" id="Loop.is_done-toggle" onclick="return toggle('Loop.is_done');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.EPhysGUI.Loop-class.html#is_done">is_done</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Loop.is_done-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Loop.is_done-expanded"><a name="L506"></a><tt class="py-lineno"> 506</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">num_done</tt> <tt class="py-op">>=</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">paramete [...]
+</div><a name="Loop.get_current"></a><div id="Loop.get_current-def"><a name="L507"></a><tt class="py-lineno"> 507</tt> <a class="py-toggle" href="#" id="Loop.get_current-toggle" onclick="return toggle('Loop.get_current');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.EPhysGUI.Loop-class.html#get_current">get_current</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Loop.get_current-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Loop.get_current-expanded"><a name="L508"></a><tt class="py-lineno"> 508</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">sequence</tt><tt class="py-op">[</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name" [...]
+</div><a name="Loop.advance"></a><div id="Loop.advance-def"><a name="L509"></a><tt class="py-lineno"> 509</tt> <a class="py-toggle" href="#" id="Loop.advance-toggle" onclick="return toggle('Loop.advance');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.EPhysGUI.Loop-class.html#advance">advance</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Loop.advance-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Loop.advance-expanded"><a name="L510"></a><tt class="py-lineno"> 510</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">num_done</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+</div><a name="Loop.reset"></a><div id="Loop.reset-def"><a name="L511"></a><tt class="py-lineno"> 511</tt> <a class="py-toggle" href="#" id="Loop.reset-toggle" onclick="return toggle('Loop.reset');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.EPhysGUI.Loop-class.html#reset">reset</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Loop.reset-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Loop.reset-expanded"><a name="L512"></a><tt class="py-lineno"> 512</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">num_done</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+</div></div><a name="L513"></a><tt class="py-lineno"> 513</tt>  <tt class="py-line"> </tt>
+<a name="LoopContainedObject"></a><div id="LoopContainedObject-def"><a name="L514"></a><tt class="py-lineno"> 514</tt> <a class="py-toggle" href="#" id="LoopContainedObject-toggle" onclick="return toggle('LoopContainedObject');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.PyroApps.EPhysGUI.LoopContainedObject-class.html">LoopContainedObject</a><tt class="py-op">(</tt><tt class="py-base-class">ContainedObjectBase</tt><tt class="py-op"> [...]
+</div><div id="LoopContainedObject-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="LoopContainedObject-expanded"><a name="L515"></a><tt class="py-lineno"> 515</tt>  <tt class="py-line">    <tt class="py-docstring">"""Container for Loop class"""</tt> </tt>
+<a name="L516"></a><tt class="py-lineno"> 516</tt>  <tt class="py-line">    <tt class="py-name">contained_class</tt> <tt class="py-op">=</tt> <tt id="link-197" class="py-name" targets="Class VisionEgg.PyroApps.EPhysGUI.Loop=VisionEgg.PyroApps.EPhysGUI.Loop-class.html"><a title="VisionEgg.PyroApps.EPhysGUI.Loop" class="py-name" href="#" onclick="return doclink('link-197', 'Loop', 'link-197');">Loop</a></tt> </tt>
+<a name="L517"></a><tt class="py-lineno"> 517</tt>  <tt class="py-line">    <tt id="link-198" class="py-name"><a title="VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase.header
+VisionEgg.PyroApps.EPhysGUI.LoopContainedObject.header" class="py-name" href="#" onclick="return doclink('link-198', 'header', 'link-93');">header</a></tt> <tt class="py-op">=</tt> <tt class="py-string">"     variable    rest   N  values"</tt> </tt>
+<a name="LoopContainedObject.__init__"></a><div id="LoopContainedObject.__init__-def"><a name="L518"></a><tt class="py-lineno"> 518</tt> <a class="py-toggle" href="#" id="LoopContainedObject.__init__-toggle" onclick="return toggle('LoopContainedObject.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.EPhysGUI.LoopContainedObject-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><t [...]
+</div><div id="LoopContainedObject.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="LoopContainedObject.__init__-expanded"><a name="L519"></a><tt class="py-lineno"> 519</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">contained</tt> <tt class="py-op">=</tt> <tt class="py-name">contained</tt> </tt>
+</div><a name="LoopContainedObject.get_str_30"></a><div id="LoopContainedObject.get_str_30-def"><a name="L520"></a><tt class="py-lineno"> 520</tt> <a class="py-toggle" href="#" id="LoopContainedObject.get_str_30-toggle" onclick="return toggle('LoopContainedObject.get_str_30');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.EPhysGUI.LoopContainedObject-class.html#get_str_30">get_str_30</a><tt class="py-op">(</tt><tt class="py- [...]
+</div><div id="LoopContainedObject.get_str_30-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="LoopContainedObject.get_str_30-expanded"><a name="L521"></a><tt class="py-lineno"> 521</tt>  <tt class="py-line">        <tt class="py-name">p</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">contained</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt> </tt>
+<a name="L522"></a><tt class="py-lineno"> 522</tt>  <tt class="py-line">        <tt class="py-name">seq_str</tt> <tt class="py-op">=</tt> <tt class="py-string">""</tt> </tt>
+<a name="L523"></a><tt class="py-lineno"> 523</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">val</tt> <tt class="py-keyword">in</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">sequence</tt><tt class="py-op">:</tt> </tt>
+<a name="L524"></a><tt class="py-lineno"> 524</tt>  <tt class="py-line">            <tt class="py-name">seq_str</tt> <tt class="py-op">+=</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">val</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt class="py-string">" "</tt> </tt>
+<a name="L525"></a><tt class="py-lineno"> 525</tt>  <tt class="py-line">        <tt class="py-name">name_str</tt> <tt class="py-op">=</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">variable</tt> </tt>
+<a name="L526"></a><tt class="py-lineno"> 526</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">name_str</tt><tt class="py-op">)</tt> <tt class="py-op">></tt> <tt class="py-number">15</tt><tt class="py-op">:</tt> </tt>
+<a name="L527"></a><tt class="py-lineno"> 527</tt>  <tt class="py-line">            <tt class="py-name">name_str</tt> <tt class="py-op">=</tt> <tt class="py-name">name_str</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-number">15</tt><tt class="py-op">]</tt> </tt>
+<a name="L528"></a><tt class="py-lineno"> 528</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-string">"% 15s % 4s % 4d  % 4s"</tt><tt class="py-op">%</tt><tt class="py-op">(</tt><tt class="py-name">name_str</tt><tt class="py-op">,</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">rest_duration_sec</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">len</tt> [...]
+</div></div><a name="L529"></a><tt class="py-lineno"> 529</tt>  <tt class="py-line"> </tt>
+<a name="LoopParamDialog"></a><div id="LoopParamDialog-def"><a name="L530"></a><tt class="py-lineno"> 530</tt> <a class="py-toggle" href="#" id="LoopParamDialog-toggle" onclick="return toggle('LoopParamDialog');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.PyroApps.EPhysGUI.LoopParamDialog-class.html">LoopParamDialog</a><tt class="py-op">(</tt><tt class="py-base-class">tkSimpleDialog</tt><tt class="py-op">.</tt><tt class="py-base-clas [...]
+</div><div id="LoopParamDialog-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="LoopParamDialog-expanded"><a name="LoopParamDialog.__init__"></a><div id="LoopParamDialog.__init__-def"><a name="L531"></a><tt class="py-lineno"> 531</tt> <a class="py-toggle" href="#" id="LoopParamDialog.__init__-toggle" onclick="return toggle('LoopParamDialog.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.EPhy [...]
+</div><div id="LoopParamDialog.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="LoopParamDialog.__init__-expanded"><a name="L532"></a><tt class="py-lineno"> 532</tt>  <tt class="py-line">        <tt class="py-comment">#intercept orig_values argument</tt> </tt>
+<a name="L533"></a><tt class="py-lineno"> 533</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">kw</tt><tt class="py-op">.</tt><tt class="py-name">has_key</tt><tt class="py-op">(</tt><tt class="py-string">'orig_values'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L534"></a><tt class="py-lineno"> 534</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">orig_values</tt> <tt class="py-op">=</tt> <tt class="py-name">kw</tt><tt class="py-op">[</tt><tt class="py-string">'orig_values'</tt><tt class="py-op">]</tt> </tt>
+<a name="L535"></a><tt class="py-lineno"> 535</tt>  <tt class="py-line">            <tt class="py-keyword">del</tt> <tt class="py-name">kw</tt><tt class="py-op">[</tt><tt class="py-string">'orig_values'</tt><tt class="py-op">]</tt> </tt>
+<a name="L536"></a><tt class="py-lineno"> 536</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L537"></a><tt class="py-lineno"> 537</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">orig_values</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L538"></a><tt class="py-lineno"> 538</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">tkSimpleDialog</tt><tt class="py-op">.</tt><tt class="py-name">Dialog</tt><tt class="py-op">.</tt><tt id="link-199" class="py-name"><a title="VisionEgg.ClassWithParameters.__init__
+VisionEgg.Configuration.Config.__init__
+VisionEgg.Core.FixationSpot.__init__
+VisionEgg.Core.FrameTimer.__init__
+VisionEgg.Core.ModelView.__init__
+VisionEgg.Core.OrthographicProjection.__init__
+VisionEgg.Core.OrthographicProjectionNoZClip.__init__
+VisionEgg.Core.PerspectiveProjection.__init__
+VisionEgg.Core.Projection.__init__
+VisionEgg.Core.ProjectionBaseClass.__init__
+VisionEgg.Core.Screen.__init__
+VisionEgg.Core.SimplePerspectiveProjection.__init__
+VisionEgg.Core.Stimulus.__init__
+VisionEgg.Core.Viewport.__init__
+VisionEgg.Daq.Channel.__init__
+VisionEgg.Daq.DaqMode.__init__
+VisionEgg.Daq.Device.__init__
+VisionEgg.Daq.Functionality.__init__
+VisionEgg.Daq.SignalType.__init__
+VisionEgg.DaqKeyboard.KeyboardTriggerInController.__init__
+VisionEgg.DaqLPT.LPTChannel.__init__
+VisionEgg.DaqLPT.LPTDevice.__init__
+VisionEgg.DaqLPT.LPTTriggerInController.__init__
+VisionEgg.DaqLPT.LPTTriggerOutController.__init__
+VisionEgg.Deprecated.Message.__init__
+VisionEgg.Dots.DotArea2D.__init__
+VisionEgg.FlowControl.ConstantController.__init__
+VisionEgg.FlowControl.Controller.__init__
+VisionEgg.FlowControl.EncapsulatedController.__init__
+VisionEgg.FlowControl.EvalStringController.__init__
+VisionEgg.FlowControl.ExecStringController.__init__
+VisionEgg.FlowControl.FunctionController.__init__
+VisionEgg.FlowControl.Presentation.__init__
+VisionEgg.GLTrace.Wrapper.__init__
+VisionEgg.GUI.AppWindow.__init__
+VisionEgg.GUI.GetKeypressDialog.__init__
+VisionEgg.GUI.GraphicsConfigurationWindow.__init__
+VisionEgg.GUI.InfoFrame.__init__
+VisionEgg.GUI.ProgressBar.__init__
+VisionEgg.GUI.ToplevelDialog.__init__
+VisionEgg.Gratings.SinGrating2D.__init__
+VisionEgg.Gratings.SinGrating3D.__init__
+VisionEgg.MoreStimuli.Arrow.__init__
+VisionEgg.MoreStimuli.FilledCircle.__init__
+VisionEgg.MoreStimuli.Rectangle3D.__init__
+VisionEgg.MoreStimuli.Target2D.__init__
+VisionEgg.ParameterTypes.AnyOf.__init__
+VisionEgg.ParameterTypes.Instance.__init__
+VisionEgg.ParameterTypes.Sequence.__init__
+VisionEgg.ParameterTypes.SubClass.__init__
+VisionEgg.PyroApps.AST_ext.AST_Visitor.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalMetaParameters.__init__
+VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.__init__
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.__init__
+VisionEgg.PyroApps.DropinGUI.DropinMetaParameters.__init__
+VisionEgg.PyroApps.DropinServer.DropinMetaController.__init__
+VisionEgg.PyroApps.EPhysGUI.AppWindow.__init__
+VisionEgg.PyroApps.EPhysGUI.BarButton.__init__
+VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase.__init__
+VisionEgg.PyroApps.EPhysGUI.GammaFrame.__init__
+VisionEgg.PyroApps.EPhysGUI.ImageSequenceLauncher.__init__
+VisionEgg.PyroApps.EPhysGUI.Loop.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopContainedObject.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopParamDialog.__init__
+VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.__init__
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.__init__
+VisionEgg.PyroApps.EPhysServer.EPhysServer.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingMetaParameters.__init__
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.GridGUI.GridControlFrame.__init__
+VisionEgg.PyroApps.GridGUI.GridMetaParameters.__init__
+VisionEgg.PyroApps.GridServer.GridMetaController.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetMetaParameters.__init__
+VisionEgg.PyroApps.MouseTargetServer.MousePositionController.__init__
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetOrientationController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetPositionController.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.CallbackEntry.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionParameters.__init__
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingMetaParameters.__init__
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumMetaParameters.__init__
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.__init__
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.__init__
+VisionEgg.PyroApps.TargetGUI.TargetMetaParameters.__init__
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.__init__
+VisionEgg.PyroClient.PyroClient.__init__
+VisionEgg.PyroHelpers.PyroConstantController.__init__
+VisionEgg.PyroHelpers.PyroEncapsulatedController.__init__
+VisionEgg.PyroHelpers.PyroEvalStringController.__init__
+VisionEgg.PyroHelpers.PyroExecStringController.__init__
+VisionEgg.PyroHelpers.PyroListenController.__init__
+VisionEgg.PyroHelpers.PyroLocalDictController.__init__
+VisionEgg.PyroHelpers.PyroServer.__init__
+VisionEgg.QuickTime.MovieTexture.__init__
+VisionEgg.ResponseControl.KeyboardResponseController.__init__
+VisionEgg.ResponseControl.ResponseController.__init__
+VisionEgg.SphereMap.AzElGrid.__init__
+VisionEgg.SphereMap.SphereGrating.__init__
+VisionEgg.SphereMap.SphereMap.__init__
+VisionEgg.SphereMap.SphereWindow.__init__
+VisionEgg.TCPController.SocketListenController.__init__
+VisionEgg.TCPController.TCPController.__init__
+VisionEgg.TCPController.TCPServer.__init__
+VisionEgg.Text.BitmapText.__init__
+VisionEgg.Text.GlutTextBase.__init__
+VisionEgg.Text.StrokeText.__init__
+VisionEgg.Text.Text.__init__
+VisionEgg.Textures.FixationCross.__init__
+VisionEgg.Textures.Mask2D.__init__
+VisionEgg.Textures.SpinningDrum.__init__
+VisionEgg.Textures.Texture.__init__
+VisionEgg.Textures.TextureFromFile.__init__
+VisionEgg.Textures.TextureObject.__init__
+VisionEgg.Textures.TextureStimulusBaseClass.__init__
+VisionEgg.ThreeDeeMath.TransformMatrix.__init__
+VisionEgg.WrappedText.WrappedText.__init__
+VisionEgg.qtmovie.Movie.__init__
+VisionEgg.qtmovie.Rect.__init__" class="py-name" href="#" onclick="return doclink('link-199', '__init__', 'link-96');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-op">*</tt><tt class="py-name">args</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-name">kw</tt> <tt class="py-op">)</tt> </tt>
+</div><a name="L539"></a><tt class="py-lineno"> 539</tt>  <tt class="py-line"> </tt>
+<a name="LoopParamDialog.body"></a><div id="LoopParamDialog.body-def"><a name="L540"></a><tt class="py-lineno"> 540</tt> <a class="py-toggle" href="#" id="LoopParamDialog.body-toggle" onclick="return toggle('LoopParamDialog.body');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.EPhysGUI.LoopParamDialog-class.html#body">body</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt><tt class="py-param">m [...]
+</div><div id="LoopParamDialog.body-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="LoopParamDialog.body-expanded"><a name="L541"></a><tt class="py-lineno"> 541</tt>  <tt class="py-line">        <tt id="link-200" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-200', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">mas [...]
+<a name="L542"></a><tt class="py-lineno"> 542</tt>  <tt class="py-line">                      <tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Add sequence of automatic variable values"</tt><tt class="py-op">,</tt> </tt>
+<a name="L543"></a><tt class="py-lineno"> 543</tt>  <tt class="py-line">                      <tt class="py-name">font</tt><tt class="py-op">=</tt><tt class="py-op">(</tt><tt class="py-string">"Helvetica"</tt><tt class="py-op">,</tt><tt class="py-number">12</tt><tt class="py-op">,</tt><tt class="py-string">"bold"</tt><tt class="py-op">)</tt><tt class="py-op">,</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row< [...]
+<a name="L544"></a><tt class="py-lineno"> 544</tt>  <tt class="py-line"> </tt>
+<a name="L545"></a><tt class="py-lineno"> 545</tt>  <tt class="py-line">        <tt class="py-name">var_frame</tt> <tt class="py-op">=</tt> <tt id="link-201" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-201', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Frame</tt><tt class="py-op">(</tt><tt class="py-name">master</tt><tt class="py-op">,</tt> </tt>
+<a name="L546"></a><tt class="py-lineno"> 546</tt>  <tt class="py-line">                                  <tt class="py-name">relief</tt><tt class="py-op">=</tt><tt id="link-202" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-202', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">GROOVE</tt><tt class="py-op">,</tt> </tt>
+<a name="L547"></a><tt class="py-lineno"> 547</tt>  <tt class="py-line">                                  <tt class="py-name">borderwidth</tt><tt class="py-op">=</tt><tt class="py-number">2</tt><tt class="py-op">)</tt> </tt>
+<a name="L548"></a><tt class="py-lineno"> 548</tt>  <tt class="py-line">        <tt class="py-name">var_frame</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py-op">,</tt><tt class="py-name">column</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">)</tt> </tt>
+<a name="L549"></a><tt class="py-lineno"> 549</tt>  <tt class="py-line"> </tt>
+<a name="L550"></a><tt class="py-lineno"> 550</tt>  <tt class="py-line">        <tt class="py-name">sequence_frame</tt> <tt class="py-op">=</tt> <tt id="link-203" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-203', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Frame</tt><tt class="py-op">(</tt><tt class="py-name">master</tt><tt class="py-op">)</tt> </tt>
+<a name="L551"></a><tt class="py-lineno"> 551</tt>  <tt class="py-line">        <tt class="py-name">sequence_frame</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py-op">,</tt><tt class="py-name">column</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="L552"></a><tt class="py-lineno"> 552</tt>  <tt class="py-line"> </tt>
+<a name="L553"></a><tt class="py-lineno"> 553</tt>  <tt class="py-line">        <tt class="py-name">rest_dur_frame</tt> <tt class="py-op">=</tt> <tt id="link-204" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-204', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Frame</tt><tt class="py-op">(</tt><tt class="py-name">master</tt><tt class="py-op">)</tt> </tt>
+<a name="L554"></a><tt class="py-lineno"> 554</tt>  <tt class="py-line">        <tt class="py-name">rest_dur_frame</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-number">2</tt><tt class="py-op">,</tt><tt class="py-name">column</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">,</tt><tt class="py-name">columnspan</tt><tt class="py-op">=</tt><tt class="py-number">2</t [...]
+<a name="L555"></a><tt class="py-lineno"> 555</tt>  <tt class="py-line"> </tt>
+<a name="L556"></a><tt class="py-lineno"> 556</tt>  <tt class="py-line">        <tt class="py-comment"># loopable variable frame stuff</tt> </tt>
+<a name="L557"></a><tt class="py-lineno"> 557</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">global</tt> <tt class="py-name">loopable_variables</tt> </tt>
+<a name="L558"></a><tt class="py-lineno"> 558</tt>  <tt class="py-line">        <tt class="py-name">num_cols</tt> <tt class="py-op">=</tt> <tt id="link-205" class="py-name"><a title="int" class="py-name" href="#" onclick="return doclink('link-205', 'int', 'link-184');">int</a></tt><tt class="py-op">(</tt><tt class="py-name">math</tt><tt class="py-op">.</tt><tt class="py-name">ceil</tt><tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">loopable [...]
+<a name="L559"></a><tt class="py-lineno"> 559</tt>  <tt class="py-line"> </tt>
+<a name="L560"></a><tt class="py-lineno"> 560</tt>  <tt class="py-line">        <tt class="py-name">var_frame_row</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L561"></a><tt class="py-lineno"> 561</tt>  <tt class="py-line">        <tt id="link-206" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-206', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">var_frame</tt><tt class="py-op">,</tt> </tt>
+<a name="L562"></a><tt class="py-lineno"> 562</tt>  <tt class="py-line">                      <tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Select a variable"</tt><tt class="py-op">,</tt> </tt>
+<a name="L563"></a><tt class="py-lineno"> 563</tt>  <tt class="py-line">                      <tt class="py-name">font</tt><tt class="py-op">=</tt><tt class="py-op">(</tt><tt class="py-string">"Helvetica"</tt><tt class="py-op">,</tt><tt class="py-number">12</tt><tt class="py-op">,</tt><tt class="py-string">"bold"</tt><tt class="py-op">)</tt><tt class="py-op">,</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row< [...]
+<a name="L564"></a><tt class="py-lineno"> 564</tt>  <tt class="py-line">                                                          <tt class="py-name">column</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> </tt>
+<a name="L565"></a><tt class="py-lineno"> 565</tt>  <tt class="py-line">                                                          <tt class="py-name">columnspan</tt><tt class="py-op">=</tt><tt class="py-name">num_cols</tt><tt class="py-op">)</tt> </tt>
+<a name="L566"></a><tt class="py-lineno"> 566</tt>  <tt class="py-line"> </tt>
+<a name="L567"></a><tt class="py-lineno"> 567</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">var_name</tt> <tt class="py-op">=</tt> <tt id="link-207" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-207', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">StringVar</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L568"></a><tt class="py-lineno"> 568</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">var_name</tt><tt class="py-op">.</tt><tt id="link-208" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-208', 'set', 'link-111');">set</a></tt><tt class="py-op">(</tt><tt class="py-string">"<repeat>"</tt><tt class="py-op">)</tt> </tt>
+<a name="L569"></a><tt class="py-lineno"> 569</tt>  <tt class="py-line">        <tt class="py-name">var_names</tt> <tt class="py-op">=</tt> <tt class="py-name">loopable_variables</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> <tt class="py-comment"># copy</tt> </tt>
+<a name="L570"></a><tt class="py-lineno"> 570</tt>  <tt class="py-line">        <tt class="py-name">var_names</tt><tt class="py-op">.</tt><tt class="py-name">sort</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L571"></a><tt class="py-lineno"> 571</tt>  <tt class="py-line"> </tt>
+<a name="L572"></a><tt class="py-lineno"> 572</tt>  <tt class="py-line">        <tt class="py-name">var_frame_row</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L573"></a><tt class="py-lineno"> 573</tt>  <tt class="py-line">        <tt id="link-209" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-209', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Radiobutton</tt><tt class="py-op">(</tt> <tt class="py-name">var_frame</tt><tt class="py-op">,</tt> </tt>
+<a name="L574"></a><tt class="py-lineno"> 574</tt>  <tt class="py-line">                     <tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Repeat (Average)"</tt><tt class="py-op">,</tt> </tt>
+<a name="L575"></a><tt class="py-lineno"> 575</tt>  <tt class="py-line">                     <tt class="py-name">variable</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">var_name</tt><tt class="py-op">,</tt> </tt>
+<a name="L576"></a><tt class="py-lineno"> 576</tt>  <tt class="py-line">                     <tt class="py-name">value</tt><tt class="py-op">=</tt><tt class="py-string">"<repeat>"</tt><tt class="py-op">,</tt> </tt>
+<a name="L577"></a><tt class="py-lineno"> 577</tt>  <tt class="py-line">                     <tt class="py-name">anchor</tt><tt class="py-op">=</tt><tt id="link-210" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-210', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">W</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</t [...]
+<a name="L578"></a><tt class="py-lineno"> 578</tt>  <tt class="py-line">                                            <tt class="py-name">column</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> </tt>
+<a name="L579"></a><tt class="py-lineno"> 579</tt>  <tt class="py-line">                                            <tt class="py-name">sticky</tt><tt class="py-op">=</tt><tt class="py-string">"w"</tt><tt class="py-op">)</tt> </tt>
+<a name="L580"></a><tt class="py-lineno"> 580</tt>  <tt class="py-line">        <tt class="py-name">var_frame_row</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L581"></a><tt class="py-lineno"> 581</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">var_name</tt> <tt class="py-keyword">in</tt> <tt class="py-name">var_names</tt><tt class="py-op">:</tt> </tt>
+<a name="L582"></a><tt class="py-lineno"> 582</tt>  <tt class="py-line">            <tt class="py-name">use_row</tt> <tt class="py-op">=</tt> <tt class="py-name">var_frame_row</tt><tt class="py-op">%</tt><tt class="py-number">10</tt><tt class="py-op">+</tt><tt class="py-number">1</tt> </tt>
+<a name="L583"></a><tt class="py-lineno"> 583</tt>  <tt class="py-line">            <tt id="link-211" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-211', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Radiobutton</tt><tt class="py-op">(</tt> <tt class="py-name">var_frame</tt><tt class="py-op">,</tt> </tt>
+<a name="L584"></a><tt class="py-lineno"> 584</tt>  <tt class="py-line">                                 <tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-name">var_name</tt><tt class="py-op">,</tt> </tt>
+<a name="L585"></a><tt class="py-lineno"> 585</tt>  <tt class="py-line">                                 <tt class="py-name">variable</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">var_name</tt><tt class="py-op">,</tt> </tt>
+<a name="L586"></a><tt class="py-lineno"> 586</tt>  <tt class="py-line">                                 <tt class="py-name">value</tt><tt class="py-op">=</tt><tt class="py-name">var_name</tt><tt class="py-op">,</tt> </tt>
+<a name="L587"></a><tt class="py-lineno"> 587</tt>  <tt class="py-line">                                 <tt class="py-name">anchor</tt><tt class="py-op">=</tt><tt id="link-212" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-212', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">W</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py- [...]
+<a name="L588"></a><tt class="py-lineno"> 588</tt>  <tt class="py-line">                                                        <tt class="py-name">column</tt><tt class="py-op">=</tt><tt id="link-213" class="py-name"><a title="int" class="py-name" href="#" onclick="return doclink('link-213', 'int', 'link-184');">int</a></tt><tt class="py-op">(</tt><tt class="py-name">math</tt><tt class="py-op">.</tt><tt class="py-name">floor</tt><tt class="py-op">(</tt><tt class="py-name">var_frame_row</ [...]
+<a name="L589"></a><tt class="py-lineno"> 589</tt>  <tt class="py-line">                                                        <tt class="py-name">sticky</tt><tt class="py-op">=</tt><tt class="py-string">"w"</tt><tt class="py-op">)</tt> </tt>
+<a name="L590"></a><tt class="py-lineno"> 590</tt>  <tt class="py-line">            <tt class="py-name">var_frame_row</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L591"></a><tt class="py-lineno"> 591</tt>  <tt class="py-line"> </tt>
+<a name="L592"></a><tt class="py-lineno"> 592</tt>  <tt class="py-line">        <tt class="py-comment"># sequence entry frame</tt> </tt>
+<a name="L593"></a><tt class="py-lineno"> 593</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">seq_row</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L594"></a><tt class="py-lineno"> 594</tt>  <tt class="py-line">        <tt id="link-214" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-214', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">sequence_frame</tt><tt class="py-op">,</tt> </tt>
+<a name="L595"></a><tt class="py-lineno"> 595</tt>  <tt class="py-line">                      <tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Sequence values"</tt><tt class="py-op">,</tt> </tt>
+<a name="L596"></a><tt class="py-lineno"> 596</tt>  <tt class="py-line">                      <tt class="py-name">font</tt><tt class="py-op">=</tt><tt class="py-op">(</tt><tt class="py-string">"Helvetica"</tt><tt class="py-op">,</tt><tt class="py-number">12</tt><tt class="py-op">,</tt><tt class="py-string">"bold"</tt><tt class="py-op">)</tt><tt class="py-op">,</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row< [...]
+<a name="L597"></a><tt class="py-lineno"> 597</tt>  <tt class="py-line"> </tt>
+<a name="L598"></a><tt class="py-lineno"> 598</tt>  <tt class="py-line">        <tt class="py-name">seq_row</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L599"></a><tt class="py-lineno"> 599</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sequence_type</tt> <tt class="py-op">=</tt> <tt id="link-215" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-215', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">StringVar</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L600"></a><tt class="py-lineno"> 600</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sequence_type</tt><tt class="py-op">.</tt><tt id="link-216" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-216', 'set', 'link-111');">set</a></tt><tt class="py-op">(</tt><tt class="py-string">"manual"</tt><tt class="py-op">)</tt> </tt>
+<a name="L601"></a><tt class="py-lineno"> 601</tt>  <tt class="py-line"> </tt>
+<a name="L602"></a><tt class="py-lineno"> 602</tt>  <tt class="py-line">        <tt id="link-217" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-217', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Radiobutton</tt><tt class="py-op">(</tt> <tt class="py-name">sequence_frame</tt><tt class="py-op">,</tt> </tt>
+<a name="L603"></a><tt class="py-lineno"> 603</tt>  <tt class="py-line">                     <tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Manual:"</tt><tt class="py-op">,</tt> </tt>
+<a name="L604"></a><tt class="py-lineno"> 604</tt>  <tt class="py-line">                     <tt class="py-name">variable</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sequence_type</tt><tt class="py-op">,</tt> </tt>
+<a name="L605"></a><tt class="py-lineno"> 605</tt>  <tt class="py-line">                     <tt class="py-name">value</tt><tt class="py-op">=</tt><tt class="py-string">"manual"</tt><tt class="py-op">,</tt> </tt>
+<a name="L606"></a><tt class="py-lineno"> 606</tt>  <tt class="py-line">                     <tt class="py-name">anchor</tt><tt class="py-op">=</tt><tt id="link-218" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-218', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">W</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</t [...]
+<a name="L607"></a><tt class="py-lineno"> 607</tt>  <tt class="py-line"> </tt>
+<a name="L608"></a><tt class="py-lineno"> 608</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sequence_manual_string</tt> <tt class="py-op">=</tt> <tt id="link-219" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-219', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">StringVar</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L609"></a><tt class="py-lineno"> 609</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sequence_manual_string</tt><tt class="py-op">.</tt><tt id="link-220" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-220', 'set', 'link-111');">set</a></tt><tt class="py-op">(</tt><tt class="py-string">"[1,2,3]"</tt><tt class="py-op">)</tt> </tt>
+<a name="L610"></a><tt class="py-lineno"> 610</tt>  <tt class="py-line">        <tt id="link-221" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-221', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Entry</tt><tt class="py-op">(</tt><tt class="py-name">sequence_frame</tt><tt class="py-op">,</tt> </tt>
+<a name="L611"></a><tt class="py-lineno"> 611</tt>  <tt class="py-line">                      <tt class="py-name">textvariable</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sequence_manual_string</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-name">seq_row</tt><tt class="py-op">,</tt><tt class="py-name">column</ [...]
+<a name="L612"></a><tt class="py-lineno"> 612</tt>  <tt class="py-line"> </tt>
+<a name="L613"></a><tt class="py-lineno"> 613</tt>  <tt class="py-line">        <tt class="py-name">seq_row</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L614"></a><tt class="py-lineno"> 614</tt>  <tt class="py-line">        <tt id="link-222" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-222', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Radiobutton</tt><tt class="py-op">(</tt> <tt class="py-name">sequence_frame</tt><tt class="py-op">,</tt> </tt>
+<a name="L615"></a><tt class="py-lineno"> 615</tt>  <tt class="py-line">                     <tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Linear:"</tt><tt class="py-op">,</tt> </tt>
+<a name="L616"></a><tt class="py-lineno"> 616</tt>  <tt class="py-line">                     <tt class="py-name">variable</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sequence_type</tt><tt class="py-op">,</tt> </tt>
+<a name="L617"></a><tt class="py-lineno"> 617</tt>  <tt class="py-line">                     <tt class="py-name">value</tt><tt class="py-op">=</tt><tt class="py-string">"linear"</tt><tt class="py-op">,</tt> </tt>
+<a name="L618"></a><tt class="py-lineno"> 618</tt>  <tt class="py-line">                     <tt class="py-name">anchor</tt><tt class="py-op">=</tt><tt id="link-223" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-223', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">W</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</t [...]
+<a name="L619"></a><tt class="py-lineno"> 619</tt>  <tt class="py-line"> </tt>
+<a name="L620"></a><tt class="py-lineno"> 620</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">lin_start_tk</tt> <tt class="py-op">=</tt> <tt id="link-224" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-224', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">DoubleVar</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L621"></a><tt class="py-lineno"> 621</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">lin_start_tk</tt><tt class="py-op">.</tt><tt id="link-225" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-225', 'set', 'link-111');">set</a></tt><tt class="py-op">(</tt><tt class="py-number">1.0</tt><tt class="py-op">)</tt> </tt>
+<a name="L622"></a><tt class="py-lineno"> 622</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">lin_stop_tk</tt> <tt class="py-op">=</tt> <tt id="link-226" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-226', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">DoubleVar</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L623"></a><tt class="py-lineno"> 623</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">lin_stop_tk</tt><tt class="py-op">.</tt><tt id="link-227" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-227', 'set', 'link-111');">set</a></tt><tt class="py-op">(</tt><tt class="py-number">100.0</tt><tt class="py-op">)</tt> </tt>
+<a name="L624"></a><tt class="py-lineno"> 624</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">lin_n_tk</tt> <tt class="py-op">=</tt> <tt id="link-228" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-228', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">IntVar</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L625"></a><tt class="py-lineno"> 625</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">lin_n_tk</tt><tt class="py-op">.</tt><tt id="link-229" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-229', 'set', 'link-111');">set</a></tt><tt class="py-op">(</tt><tt class="py-number">3</tt><tt class="py-op">)</tt> </tt>
+<a name="L626"></a><tt class="py-lineno"> 626</tt>  <tt class="py-line"> </tt>
+<a name="L627"></a><tt class="py-lineno"> 627</tt>  <tt class="py-line">        <tt class="py-name">lin_frame</tt> <tt class="py-op">=</tt> <tt id="link-230" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-230', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Frame</tt><tt class="py-op">(</tt> <tt class="py-name">sequence_frame</tt><tt class="py-op">)</tt> </tt>
+<a name="L628"></a><tt class="py-lineno"> 628</tt>  <tt class="py-line">        <tt class="py-name">lin_frame</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-name">seq_row</tt><tt class="py-op">,</tt><tt class="py-name">column</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="L629"></a><tt class="py-lineno"> 629</tt>  <tt class="py-line">        <tt id="link-231" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-231', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">lin_frame</tt><tt class="py-op">,</tt><tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"start:"</tt><tt class="py-op">)</ [...]
+<a name="L630"></a><tt class="py-lineno"> 630</tt>  <tt class="py-line">        <tt id="link-232" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-232', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Entry</tt><tt class="py-op">(</tt><tt class="py-name">lin_frame</tt><tt class="py-op">,</tt><tt class="py-name">textvariable</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">. [...]
+<a name="L631"></a><tt class="py-lineno"> 631</tt>  <tt class="py-line">        <tt id="link-233" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-233', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">lin_frame</tt><tt class="py-op">,</tt><tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"  stop:"</tt><tt class="py-op">)< [...]
+<a name="L632"></a><tt class="py-lineno"> 632</tt>  <tt class="py-line">        <tt id="link-234" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-234', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Entry</tt><tt class="py-op">(</tt><tt class="py-name">lin_frame</tt><tt class="py-op">,</tt><tt class="py-name">textvariable</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">. [...]
+<a name="L633"></a><tt class="py-lineno"> 633</tt>  <tt class="py-line">        <tt id="link-235" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-235', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">lin_frame</tt><tt class="py-op">,</tt><tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"  N:"</tt><tt class="py-op">)</tt [...]
+<a name="L634"></a><tt class="py-lineno"> 634</tt>  <tt class="py-line">        <tt id="link-236" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-236', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Entry</tt><tt class="py-op">(</tt><tt class="py-name">lin_frame</tt><tt class="py-op">,</tt><tt class="py-name">textvariable</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">. [...]
+<a name="L635"></a><tt class="py-lineno"> 635</tt>  <tt class="py-line"> </tt>
+<a name="L636"></a><tt class="py-lineno"> 636</tt>  <tt class="py-line">        <tt class="py-name">seq_row</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L637"></a><tt class="py-lineno"> 637</tt>  <tt class="py-line">        <tt id="link-237" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-237', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Radiobutton</tt><tt class="py-op">(</tt> <tt class="py-name">sequence_frame</tt><tt class="py-op">,</tt> </tt>
+<a name="L638"></a><tt class="py-lineno"> 638</tt>  <tt class="py-line">                     <tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Log:"</tt><tt class="py-op">,</tt> </tt>
+<a name="L639"></a><tt class="py-lineno"> 639</tt>  <tt class="py-line">                     <tt class="py-name">variable</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sequence_type</tt><tt class="py-op">,</tt> </tt>
+<a name="L640"></a><tt class="py-lineno"> 640</tt>  <tt class="py-line">                     <tt class="py-name">value</tt><tt class="py-op">=</tt><tt class="py-string">"log"</tt><tt class="py-op">,</tt> </tt>
+<a name="L641"></a><tt class="py-lineno"> 641</tt>  <tt class="py-line">                     <tt class="py-name">anchor</tt><tt class="py-op">=</tt><tt id="link-238" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-238', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">W</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</t [...]
+<a name="L642"></a><tt class="py-lineno"> 642</tt>  <tt class="py-line"> </tt>
+<a name="L643"></a><tt class="py-lineno"> 643</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">log_start_tk</tt> <tt class="py-op">=</tt> <tt id="link-239" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-239', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">DoubleVar</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L644"></a><tt class="py-lineno"> 644</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">log_start_tk</tt><tt class="py-op">.</tt><tt id="link-240" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-240', 'set', 'link-111');">set</a></tt><tt class="py-op">(</tt><tt class="py-op">-</tt><tt class="py-number">1.0</tt><tt class="py-op">)</tt> </tt>
+<a name="L645"></a><tt class="py-lineno"> 645</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">log_stop_tk</tt> <tt class="py-op">=</tt> <tt id="link-241" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-241', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">DoubleVar</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L646"></a><tt class="py-lineno"> 646</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">log_stop_tk</tt><tt class="py-op">.</tt><tt id="link-242" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-242', 'set', 'link-111');">set</a></tt><tt class="py-op">(</tt><tt class="py-number">2.0</tt><tt class="py-op">)</tt> </tt>
+<a name="L647"></a><tt class="py-lineno"> 647</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">log_n_tk</tt> <tt class="py-op">=</tt> <tt id="link-243" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-243', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">IntVar</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L648"></a><tt class="py-lineno"> 648</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">log_n_tk</tt><tt class="py-op">.</tt><tt id="link-244" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-244', 'set', 'link-111');">set</a></tt><tt class="py-op">(</tt><tt class="py-number">5</tt><tt class="py-op">)</tt> </tt>
+<a name="L649"></a><tt class="py-lineno"> 649</tt>  <tt class="py-line"> </tt>
+<a name="L650"></a><tt class="py-lineno"> 650</tt>  <tt class="py-line">        <tt class="py-name">log_frame</tt> <tt class="py-op">=</tt> <tt id="link-245" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-245', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Frame</tt><tt class="py-op">(</tt> <tt class="py-name">sequence_frame</tt><tt class="py-op">)</tt> </tt>
+<a name="L651"></a><tt class="py-lineno"> 651</tt>  <tt class="py-line">        <tt class="py-name">log_frame</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-name">seq_row</tt><tt class="py-op">,</tt><tt class="py-name">column</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="L652"></a><tt class="py-lineno"> 652</tt>  <tt class="py-line">        <tt id="link-246" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-246', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">log_frame</tt><tt class="py-op">,</tt><tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"start: 10^"</tt><tt class="py-op" [...]
+<a name="L653"></a><tt class="py-lineno"> 653</tt>  <tt class="py-line">        <tt id="link-247" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-247', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Entry</tt><tt class="py-op">(</tt><tt class="py-name">log_frame</tt><tt class="py-op">,</tt><tt class="py-name">textvariable</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">. [...]
+<a name="L654"></a><tt class="py-lineno"> 654</tt>  <tt class="py-line">        <tt id="link-248" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-248', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">log_frame</tt><tt class="py-op">,</tt><tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"  stop: 10^"</tt><tt class="py-op [...]
+<a name="L655"></a><tt class="py-lineno"> 655</tt>  <tt class="py-line">        <tt id="link-249" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-249', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Entry</tt><tt class="py-op">(</tt><tt class="py-name">log_frame</tt><tt class="py-op">,</tt><tt class="py-name">textvariable</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">. [...]
+<a name="L656"></a><tt class="py-lineno"> 656</tt>  <tt class="py-line">        <tt id="link-250" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-250', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">log_frame</tt><tt class="py-op">,</tt><tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"  N:"</tt><tt class="py-op">)</tt [...]
+<a name="L657"></a><tt class="py-lineno"> 657</tt>  <tt class="py-line">        <tt id="link-251" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-251', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Entry</tt><tt class="py-op">(</tt><tt class="py-name">log_frame</tt><tt class="py-op">,</tt><tt class="py-name">textvariable</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">. [...]
+<a name="L658"></a><tt class="py-lineno"> 658</tt>  <tt class="py-line"> </tt>
+<a name="L659"></a><tt class="py-lineno"> 659</tt>  <tt class="py-line">        <tt class="py-name">seq_row</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L660"></a><tt class="py-lineno"> 660</tt>  <tt class="py-line">        <tt id="link-252" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-252', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Radiobutton</tt><tt class="py-op">(</tt> <tt class="py-name">sequence_frame</tt><tt class="py-op">,</tt> </tt>
+<a name="L661"></a><tt class="py-lineno"> 661</tt>  <tt class="py-line">                     <tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Log:"</tt><tt class="py-op">,</tt> </tt>
+<a name="L662"></a><tt class="py-lineno"> 662</tt>  <tt class="py-line">                     <tt class="py-name">variable</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sequence_type</tt><tt class="py-op">,</tt> </tt>
+<a name="L663"></a><tt class="py-lineno"> 663</tt>  <tt class="py-line">                     <tt class="py-name">value</tt><tt class="py-op">=</tt><tt class="py-string">"logb"</tt><tt class="py-op">,</tt> </tt>
+<a name="L664"></a><tt class="py-lineno"> 664</tt>  <tt class="py-line">                     <tt class="py-name">anchor</tt><tt class="py-op">=</tt><tt id="link-253" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-253', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">W</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</t [...]
+<a name="L665"></a><tt class="py-lineno"> 665</tt>  <tt class="py-line"> </tt>
+<a name="L666"></a><tt class="py-lineno"> 666</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">logb_start_tk</tt> <tt class="py-op">=</tt> <tt id="link-254" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-254', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">DoubleVar</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L667"></a><tt class="py-lineno"> 667</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">logb_start_tk</tt><tt class="py-op">.</tt><tt id="link-255" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-255', 'set', 'link-111');">set</a></tt><tt class="py-op">(</tt><tt class="py-number">0.1</tt><tt class="py-op">)</tt> </tt>
+<a name="L668"></a><tt class="py-lineno"> 668</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">logb_stop_tk</tt> <tt class="py-op">=</tt> <tt id="link-256" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-256', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">DoubleVar</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L669"></a><tt class="py-lineno"> 669</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">logb_stop_tk</tt><tt class="py-op">.</tt><tt id="link-257" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-257', 'set', 'link-111');">set</a></tt><tt class="py-op">(</tt><tt class="py-number">100.0</tt><tt class="py-op">)</tt> </tt>
+<a name="L670"></a><tt class="py-lineno"> 670</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">logb_n_tk</tt> <tt class="py-op">=</tt> <tt id="link-258" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-258', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">IntVar</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L671"></a><tt class="py-lineno"> 671</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">logb_n_tk</tt><tt class="py-op">.</tt><tt id="link-259" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-259', 'set', 'link-111');">set</a></tt><tt class="py-op">(</tt><tt class="py-number">5</tt><tt class="py-op">)</tt> </tt>
+<a name="L672"></a><tt class="py-lineno"> 672</tt>  <tt class="py-line"> </tt>
+<a name="L673"></a><tt class="py-lineno"> 673</tt>  <tt class="py-line">        <tt class="py-name">logb_frame</tt> <tt class="py-op">=</tt> <tt id="link-260" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-260', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Frame</tt><tt class="py-op">(</tt> <tt class="py-name">sequence_frame</tt><tt class="py-op">)</tt> </tt>
+<a name="L674"></a><tt class="py-lineno"> 674</tt>  <tt class="py-line">        <tt class="py-name">logb_frame</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-name">seq_row</tt><tt class="py-op">,</tt><tt class="py-name">column</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="L675"></a><tt class="py-lineno"> 675</tt>  <tt class="py-line">        <tt id="link-261" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-261', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">logb_frame</tt><tt class="py-op">,</tt><tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"start:"</tt><tt class="py-op">)< [...]
+<a name="L676"></a><tt class="py-lineno"> 676</tt>  <tt class="py-line">        <tt id="link-262" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-262', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Entry</tt><tt class="py-op">(</tt><tt class="py-name">logb_frame</tt><tt class="py-op">,</tt><tt class="py-name">textvariable</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op"> [...]
+<a name="L677"></a><tt class="py-lineno"> 677</tt>  <tt class="py-line">        <tt id="link-263" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-263', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">logb_frame</tt><tt class="py-op">,</tt><tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"  stop:"</tt><tt class="py-op">) [...]
+<a name="L678"></a><tt class="py-lineno"> 678</tt>  <tt class="py-line">        <tt id="link-264" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-264', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Entry</tt><tt class="py-op">(</tt><tt class="py-name">logb_frame</tt><tt class="py-op">,</tt><tt class="py-name">textvariable</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op"> [...]
+<a name="L679"></a><tt class="py-lineno"> 679</tt>  <tt class="py-line">        <tt id="link-265" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-265', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">logb_frame</tt><tt class="py-op">,</tt><tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"  N:"</tt><tt class="py-op">)</t [...]
+<a name="L680"></a><tt class="py-lineno"> 680</tt>  <tt class="py-line">        <tt id="link-266" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-266', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Entry</tt><tt class="py-op">(</tt><tt class="py-name">logb_frame</tt><tt class="py-op">,</tt><tt class="py-name">textvariable</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op"> [...]
+<a name="L681"></a><tt class="py-lineno"> 681</tt>  <tt class="py-line"> </tt>
+<a name="L682"></a><tt class="py-lineno"> 682</tt>  <tt class="py-line">        <tt class="py-comment"># rest duration frame</tt> </tt>
+<a name="L683"></a><tt class="py-lineno"> 683</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt id="link-267" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-267', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">rest_dur_frame</tt><tt class="py-op">,</tt> </tt>
+<a name="L684"></a><tt class="py-lineno"> 684</tt>  <tt class="py-line">                      <tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Other sequence parameters"</tt><tt class="py-op">,</tt> </tt>
+<a name="L685"></a><tt class="py-lineno"> 685</tt>  <tt class="py-line">                      <tt class="py-name">font</tt><tt class="py-op">=</tt><tt class="py-op">(</tt><tt class="py-string">"Helvetica"</tt><tt class="py-op">,</tt><tt class="py-number">12</tt><tt class="py-op">,</tt><tt class="py-string">"bold"</tt><tt class="py-op">)</tt><tt class="py-op">,</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row< [...]
+<a name="L686"></a><tt class="py-lineno"> 686</tt>  <tt class="py-line"> </tt>
+<a name="L687"></a><tt class="py-lineno"> 687</tt>  <tt class="py-line">        <tt id="link-268" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-268', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">rest_dur_frame</tt><tt class="py-op">,</tt> </tt>
+<a name="L688"></a><tt class="py-lineno"> 688</tt>  <tt class="py-line">                      <tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Interval duration (seconds)"</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py-op">,</tt><tt class="py-name">column</tt><tt class="py-op">=</tt><tt class="py-number">0</tt>< [...]
+<a name="L689"></a><tt class="py-lineno"> 689</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">rest_dur</tt> <tt class="py-op">=</tt> <tt id="link-269" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-269', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">DoubleVar</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L690"></a><tt class="py-lineno"> 690</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">rest_dur</tt><tt class="py-op">.</tt><tt id="link-270" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-270', 'set', 'link-111');">set</a></tt><tt class="py-op">(</tt><tt class="py-number">0.5</tt><tt class="py-op">)</tt> </tt>
+<a name="L691"></a><tt class="py-lineno"> 691</tt>  <tt class="py-line">        <tt id="link-271" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-271', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Entry</tt><tt class="py-op">(</tt><tt class="py-name">rest_dur_frame</tt><tt class="py-op">,</tt> </tt>
+<a name="L692"></a><tt class="py-lineno"> 692</tt>  <tt class="py-line">                      <tt class="py-name">textvariable</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">rest_dur</tt><tt class="py-op">,</tt> </tt>
+<a name="L693"></a><tt class="py-lineno"> 693</tt>  <tt class="py-line">                      <tt class="py-name">width</tt><tt class="py-op">=</tt><tt class="py-number">10</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py-op">,</tt><tt class="py-name">column</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="L694"></a><tt class="py-lineno"> 694</tt>  <tt class="py-line"> </tt>
+<a name="L695"></a><tt class="py-lineno"> 695</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">shuffle_tk_var</tt> <tt class="py-op">=</tt> <tt id="link-272" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-272', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">BooleanVar</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L696"></a><tt class="py-lineno"> 696</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">shuffle_tk_var</tt><tt class="py-op">.</tt><tt id="link-273" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-273', 'set', 'link-111');">set</a></tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">)</tt> </tt>
+<a name="L697"></a><tt class="py-lineno"> 697</tt>  <tt class="py-line">        <tt id="link-274" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-274', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Checkbutton</tt><tt class="py-op">(</tt> <tt class="py-name">rest_dur_frame</tt><tt class="py-op">,</tt> </tt>
+<a name="L698"></a><tt class="py-lineno"> 698</tt>  <tt class="py-line">                             <tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Shuffle sequence order"</tt><tt class="py-op">,</tt> </tt>
+<a name="L699"></a><tt class="py-lineno"> 699</tt>  <tt class="py-line">                             <tt class="py-name">variable</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">shuffle_tk_var</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-number">2</tt><tt class="py-op">,</tt><tt class="py-name">column</tt><tt cl [...]
+<a name="L700"></a><tt class="py-lineno"> 700</tt>  <tt class="py-line"> </tt>
+<a name="L701"></a><tt class="py-lineno"> 701</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">orig_values</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L702"></a><tt class="py-lineno"> 702</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">var_name</tt><tt class="py-op">.</tt><tt id="link-275" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-275', 'set', 'link-111');">set</a></tt><tt class="py-op">(</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">orig_values</tt><tt class=" [...]
+<a name="L703"></a><tt class="py-lineno"> 703</tt>  <tt class="py-line"> </tt>
+<a name="L704"></a><tt class="py-lineno"> 704</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sequence_manual_string</tt><tt class="py-op">.</tt><tt id="link-276" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-276', 'set', 'link-111');">set</a></tt><tt class="py-op">(</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt c [...]
+<a name="L705"></a><tt class="py-lineno"> 705</tt>  <tt class="py-line"> </tt>
+<a name="L706"></a><tt class="py-lineno"> 706</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">rest_dur</tt><tt class="py-op">.</tt><tt id="link-277" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-277', 'set', 'link-111');">set</a></tt><tt class="py-op">(</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">orig_values</tt><tt class=" [...]
+</div><a name="L707"></a><tt class="py-lineno"> 707</tt>  <tt class="py-line"> </tt>
+<a name="L708"></a><tt class="py-lineno"> 708</tt>  <tt class="py-line"> </tt>
+<a name="LoopParamDialog.validate"></a><div id="LoopParamDialog.validate-def"><a name="L709"></a><tt class="py-lineno"> 709</tt> <a class="py-toggle" href="#" id="LoopParamDialog.validate-toggle" onclick="return toggle('LoopParamDialog.validate');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.EPhysGUI.LoopParamDialog-class.html#validate">validate</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</t [...]
+</div><div id="LoopParamDialog.validate-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="LoopParamDialog.validate-expanded"><a name="L710"></a><tt class="py-lineno"> 710</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sequence_type</tt><tt class="py-op">.</tt><tt id="link-278" class="py-name"><a title="VisionEgg.PyroClient.PyroClient.get" class="py-name" href="#" onclick= [...]
+<a name="L711"></a><tt class="py-lineno"> 711</tt>  <tt class="py-line">            <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L712"></a><tt class="py-lineno"> 712</tt>  <tt class="py-line">                <tt class="py-name">seq</tt> <tt class="py-op">=</tt> <tt class="py-name">eval</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sequence_manual_string</tt><tt class="py-op">.</tt><tt id="link-279" class="py-name"><a title="VisionEgg.PyroClient.PyroClient.get" class="py-name" href="#" onclick="return doclink('link-279', 'get', 'link-185');">get</a></t [...]
+<a name="L713"></a><tt class="py-lineno"> 713</tt>  <tt class="py-line">            <tt class="py-keyword">except</tt> <tt class="py-name">Exception</tt><tt class="py-op">,</tt> <tt class="py-name">x</tt><tt class="py-op">:</tt> </tt>
+<a name="L714"></a><tt class="py-lineno"> 714</tt>  <tt class="py-line">                <tt id="link-280" class="py-name"><a title="VisionEgg.GUI.tkMessageBox" class="py-name" href="#" onclick="return doclink('link-280', 'tkMessageBox', 'link-8');">tkMessageBox</a></tt><tt class="py-op">.</tt><tt class="py-name">showwarning</tt><tt class="py-op">(</tt><tt class="py-string">"Invalid sequence parameters"</tt><tt class="py-op">,</tt> </tt>
+<a name="L715"></a><tt class="py-lineno"> 715</tt>  <tt class="py-line">                                         <tt class="py-string">"Manual sequence entry: %s"</tt><tt class="py-op">%</tt><tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">x</tt><tt class="py-op">)</tt><tt class="py-op">,</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L716"></a><tt class="py-lineno"> 716</tt>  <tt class="py-line">                                         <tt class="py-name">parent</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
+<a name="L717"></a><tt class="py-lineno"> 717</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-number">0</tt> </tt>
+<a name="L718"></a><tt class="py-lineno"> 718</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">seq</tt><tt class="py-op">)</tt> <tt class="py-op">!=</tt> <tt class="py-name">types</tt><tt class="py-op">.</tt><tt class="py-name">ListType</tt><tt class="py-op">:</tt> </tt>
+<a name="L719"></a><tt class="py-lineno"> 719</tt>  <tt class="py-line">                <tt id="link-281" class="py-name"><a title="VisionEgg.GUI.tkMessageBox" class="py-name" href="#" onclick="return doclink('link-281', 'tkMessageBox', 'link-8');">tkMessageBox</a></tt><tt class="py-op">.</tt><tt class="py-name">showwarning</tt><tt class="py-op">(</tt><tt class="py-string">"Invalid sequence parameters"</tt><tt class="py-op">,</tt> </tt>
+<a name="L720"></a><tt class="py-lineno"> 720</tt>  <tt class="py-line">                                         <tt class="py-string">"Manual sequence entry: Not a list"</tt><tt class="py-op">,</tt> </tt>
+<a name="L721"></a><tt class="py-lineno"> 721</tt>  <tt class="py-line">                                         <tt class="py-name">parent</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
+<a name="L722"></a><tt class="py-lineno"> 722</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-number">0</tt> </tt>
+<a name="L723"></a><tt class="py-lineno"> 723</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sequence_type</tt><tt class="py-op">.</tt><tt id="link-282" class="py-name"><a title="VisionEgg.PyroClient.PyroClient.get" class="py-name" href="#" onclick="return doclink('link-282', 'get', 'link-185');">get</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py- [...]
+<a name="L724"></a><tt class="py-lineno"> 724</tt>  <tt class="py-line">            <tt id="link-283" class="py-name" targets="Method VisionEgg.GUI.GraphicsConfigurationWindow.start()=VisionEgg.GUI.GraphicsConfigurationWindow-class.html#start"><a title="VisionEgg.GUI.GraphicsConfigurationWindow.start" class="py-name" href="#" onclick="return doclink('link-283', 'start', 'link-283');">start</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="p [...]
+<a name="L725"></a><tt class="py-lineno"> 725</tt>  <tt class="py-line">            <tt class="py-name">stop</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">lin_stop_tk</tt><tt class="py-op">.</tt><tt id="link-285" class="py-name"><a title="VisionEgg.PyroClient.PyroClient.get" class="py-name" href="#" onclick="return doclink('link-285', 'get', 'link-185');">get</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L726"></a><tt class="py-lineno"> 726</tt>  <tt class="py-line">            <tt class="py-name">n</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">lin_n_tk</tt><tt class="py-op">.</tt><tt id="link-286" class="py-name"><a title="VisionEgg.PyroClient.PyroClient.get" class="py-name" href="#" onclick="return doclink('link-286', 'get', 'link-185');">get</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L727"></a><tt class="py-lineno"> 727</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">n</tt> <tt class="py-op"><</tt> <tt class="py-number">2</tt><tt class="py-op">:</tt> </tt>
+<a name="L728"></a><tt class="py-lineno"> 728</tt>  <tt class="py-line">                <tt id="link-287" class="py-name"><a title="VisionEgg.GUI.tkMessageBox" class="py-name" href="#" onclick="return doclink('link-287', 'tkMessageBox', 'link-8');">tkMessageBox</a></tt><tt class="py-op">.</tt><tt class="py-name">showwarning</tt><tt class="py-op">(</tt><tt class="py-string">"Invalid sequence parameters"</tt><tt class="py-op">,</tt> </tt>
+<a name="L729"></a><tt class="py-lineno"> 729</tt>  <tt class="py-line">                                         <tt class="py-string">"Must have n >= 2."</tt><tt class="py-op">,</tt> </tt>
+<a name="L730"></a><tt class="py-lineno"> 730</tt>  <tt class="py-line">                                         <tt class="py-name">parent</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
+<a name="L731"></a><tt class="py-lineno"> 731</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-number">0</tt> </tt>
+<a name="L732"></a><tt class="py-lineno"> 732</tt>  <tt class="py-line"> </tt>
+<a name="L733"></a><tt class="py-lineno"> 733</tt>  <tt class="py-line">            <tt class="py-name">incr</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">stop</tt><tt class="py-op">-</tt><tt id="link-288" class="py-name"><a title="VisionEgg.GUI.GraphicsConfigurationWindow.start" class="py-name" href="#" onclick="return doclink('link-288', 'start', 'link-283');">start</a></tt><tt class="py-op">)</tt><tt class="py-op">/</tt><tt id="link-289" class="py-name" tar [...]
+<a name="L734"></a><tt class="py-lineno"> 734</tt>  <tt class="py-line">            <tt class="py-name">seq</tt> <tt class="py-op">=</tt> <tt class="py-name">range</tt><tt class="py-op">(</tt><tt class="py-name">n</tt><tt class="py-op">)</tt> </tt>
+<a name="L735"></a><tt class="py-lineno"> 735</tt>  <tt class="py-line">            <tt class="py-keyword">for</tt> <tt class="py-name">i</tt> <tt class="py-keyword">in</tt> <tt class="py-name">range</tt><tt class="py-op">(</tt><tt class="py-name">n</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L736"></a><tt class="py-lineno"> 736</tt>  <tt class="py-line">                <tt class="py-name">seq</tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">i</tt><tt class="py-op">*</tt><tt class="py-name">incr</tt> <tt class="py-op">+</tt> <tt id="link-290" class="py-name"><a title="VisionEgg.GUI.GraphicsConfigurationWindow.start" class="py-name" href="#" onclick="return doclink('link-290', 'start', 'link-28 [...]
+<a name="L737"></a><tt class="py-lineno"> 737</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sequence_type</tt><tt class="py-op">.</tt><tt id="link-291" class="py-name"><a title="VisionEgg.PyroClient.PyroClient.get" class="py-name" href="#" onclick="return doclink('link-291', 'get', 'link-185');">get</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py- [...]
+<a name="L738"></a><tt class="py-lineno"> 738</tt>  <tt class="py-line">            <tt id="link-292" class="py-name"><a title="VisionEgg.GUI.GraphicsConfigurationWindow.start" class="py-name" href="#" onclick="return doclink('link-292', 'start', 'link-283');">start</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">log_start_tk</tt><tt class="py-op">.</tt><tt id="link-293" class="py-name"><a title="VisionEgg.PyroClient.PyroClient.g [...]
+<a name="L739"></a><tt class="py-lineno"> 739</tt>  <tt class="py-line">            <tt class="py-name">stop</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">log_stop_tk</tt><tt class="py-op">.</tt><tt id="link-294" class="py-name"><a title="VisionEgg.PyroClient.PyroClient.get" class="py-name" href="#" onclick="return doclink('link-294', 'get', 'link-185');">get</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L740"></a><tt class="py-lineno"> 740</tt>  <tt class="py-line">            <tt class="py-name">n</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">log_n_tk</tt><tt class="py-op">.</tt><tt id="link-295" class="py-name"><a title="VisionEgg.PyroClient.PyroClient.get" class="py-name" href="#" onclick="return doclink('link-295', 'get', 'link-185');">get</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L741"></a><tt class="py-lineno"> 741</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">n</tt> <tt class="py-op"><</tt> <tt class="py-number">2</tt><tt class="py-op">:</tt> </tt>
+<a name="L742"></a><tt class="py-lineno"> 742</tt>  <tt class="py-line">                <tt id="link-296" class="py-name"><a title="VisionEgg.GUI.tkMessageBox" class="py-name" href="#" onclick="return doclink('link-296', 'tkMessageBox', 'link-8');">tkMessageBox</a></tt><tt class="py-op">.</tt><tt class="py-name">showwarning</tt><tt class="py-op">(</tt><tt class="py-string">"Invalid sequence parameters"</tt><tt class="py-op">,</tt> </tt>
+<a name="L743"></a><tt class="py-lineno"> 743</tt>  <tt class="py-line">                                         <tt class="py-string">"Must have n >= 2."</tt><tt class="py-op">,</tt> </tt>
+<a name="L744"></a><tt class="py-lineno"> 744</tt>  <tt class="py-line">                                         <tt class="py-name">parent</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
+<a name="L745"></a><tt class="py-lineno"> 745</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-number">0</tt> </tt>
+<a name="L746"></a><tt class="py-lineno"> 746</tt>  <tt class="py-line"> </tt>
+<a name="L747"></a><tt class="py-lineno"> 747</tt>  <tt class="py-line">            <tt class="py-name">incr</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">stop</tt><tt class="py-op">-</tt><tt id="link-297" class="py-name"><a title="VisionEgg.GUI.GraphicsConfigurationWindow.start" class="py-name" href="#" onclick="return doclink('link-297', 'start', 'link-283');">start</a></tt><tt class="py-op">)</tt><tt class="py-op">/</tt><tt id="link-298" class="py-name"><a  [...]
+<a name="L748"></a><tt class="py-lineno"> 748</tt>  <tt class="py-line">            <tt class="py-name">seq</tt> <tt class="py-op">=</tt> <tt class="py-name">range</tt><tt class="py-op">(</tt><tt class="py-name">n</tt><tt class="py-op">)</tt> </tt>
+<a name="L749"></a><tt class="py-lineno"> 749</tt>  <tt class="py-line">            <tt class="py-keyword">for</tt> <tt class="py-name">i</tt> <tt class="py-keyword">in</tt> <tt class="py-name">range</tt><tt class="py-op">(</tt><tt class="py-name">n</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L750"></a><tt class="py-lineno"> 750</tt>  <tt class="py-line">                <tt class="py-name">seq</tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-number">10.0</tt><tt class="py-op">**</tt><tt class="py-op">(</tt> <tt class="py-name">i</tt><tt class="py-op">*</tt><tt class="py-name">incr</tt> <tt class="py-op">+</tt> <tt id="link-299" class="py-name"><a title="VisionEgg.GUI.GraphicsConfigurationWindow.star [...]
+<a name="L751"></a><tt class="py-lineno"> 751</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sequence_type</tt><tt class="py-op">.</tt><tt id="link-300" class="py-name"><a title="VisionEgg.PyroClient.PyroClient.get" class="py-name" href="#" onclick="return doclink('link-300', 'get', 'link-185');">get</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py- [...]
+<a name="L752"></a><tt class="py-lineno"> 752</tt>  <tt class="py-line">            <tt id="link-301" class="py-name"><a title="VisionEgg.GUI.GraphicsConfigurationWindow.start" class="py-name" href="#" onclick="return doclink('link-301', 'start', 'link-283');">start</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">logb_start_tk</tt><tt class="py-op">.</tt><tt id="link-302" class="py-name"><a title="VisionEgg.PyroClient.PyroClient. [...]
+<a name="L753"></a><tt class="py-lineno"> 753</tt>  <tt class="py-line">            <tt class="py-name">stop</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">logb_stop_tk</tt><tt class="py-op">.</tt><tt id="link-303" class="py-name"><a title="VisionEgg.PyroClient.PyroClient.get" class="py-name" href="#" onclick="return doclink('link-303', 'get', 'link-185');">get</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L754"></a><tt class="py-lineno"> 754</tt>  <tt class="py-line">            <tt id="link-304" class="py-name"><a title="VisionEgg.GUI.GraphicsConfigurationWindow.start" class="py-name" href="#" onclick="return doclink('link-304', 'start', 'link-283');">start</a></tt> <tt class="py-op">=</tt> <tt class="py-name">math</tt><tt class="py-op">.</tt><tt class="py-name">log10</tt><tt class="py-op">(</tt><tt id="link-305" class="py-name"><a title="VisionEgg.GUI.GraphicsConfigurationWindo [...]
+<a name="L755"></a><tt class="py-lineno"> 755</tt>  <tt class="py-line">            <tt class="py-name">stop</tt> <tt class="py-op">=</tt> <tt class="py-name">math</tt><tt class="py-op">.</tt><tt class="py-name">log10</tt><tt class="py-op">(</tt><tt class="py-name">stop</tt><tt class="py-op">)</tt> </tt>
+<a name="L756"></a><tt class="py-lineno"> 756</tt>  <tt class="py-line">            <tt class="py-name">n</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">logb_n_tk</tt><tt class="py-op">.</tt><tt id="link-306" class="py-name"><a title="VisionEgg.PyroClient.PyroClient.get" class="py-name" href="#" onclick="return doclink('link-306', 'get', 'link-185');">get</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L757"></a><tt class="py-lineno"> 757</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">n</tt> <tt class="py-op"><</tt> <tt class="py-number">2</tt><tt class="py-op">:</tt> </tt>
+<a name="L758"></a><tt class="py-lineno"> 758</tt>  <tt class="py-line">                <tt id="link-307" class="py-name"><a title="VisionEgg.GUI.tkMessageBox" class="py-name" href="#" onclick="return doclink('link-307', 'tkMessageBox', 'link-8');">tkMessageBox</a></tt><tt class="py-op">.</tt><tt class="py-name">showwarning</tt><tt class="py-op">(</tt><tt class="py-string">"Invalid sequence parameters"</tt><tt class="py-op">,</tt> </tt>
+<a name="L759"></a><tt class="py-lineno"> 759</tt>  <tt class="py-line">                                         <tt class="py-string">"Must have n >= 2."</tt><tt class="py-op">,</tt> </tt>
+<a name="L760"></a><tt class="py-lineno"> 760</tt>  <tt class="py-line">                                         <tt class="py-name">parent</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
+<a name="L761"></a><tt class="py-lineno"> 761</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-number">0</tt> </tt>
+<a name="L762"></a><tt class="py-lineno"> 762</tt>  <tt class="py-line">            <tt class="py-name">incr</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">stop</tt><tt class="py-op">-</tt><tt id="link-308" class="py-name"><a title="VisionEgg.GUI.GraphicsConfigurationWindow.start" class="py-name" href="#" onclick="return doclink('link-308', 'start', 'link-283');">start</a></tt><tt class="py-op">)</tt><tt class="py-op">/</tt><tt id="link-309" class="py-name"><a  [...]
+<a name="L763"></a><tt class="py-lineno"> 763</tt>  <tt class="py-line">            <tt class="py-name">seq</tt> <tt class="py-op">=</tt> <tt class="py-name">range</tt><tt class="py-op">(</tt><tt class="py-name">n</tt><tt class="py-op">)</tt> </tt>
+<a name="L764"></a><tt class="py-lineno"> 764</tt>  <tt class="py-line">            <tt class="py-keyword">for</tt> <tt class="py-name">i</tt> <tt class="py-keyword">in</tt> <tt class="py-name">range</tt><tt class="py-op">(</tt><tt class="py-name">n</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L765"></a><tt class="py-lineno"> 765</tt>  <tt class="py-line">                <tt class="py-name">seq</tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-number">10.0</tt><tt class="py-op">**</tt><tt class="py-op">(</tt> <tt class="py-name">i</tt><tt class="py-op">*</tt><tt class="py-name">incr</tt> <tt class="py-op">+</tt> <tt id="link-310" class="py-name"><a title="VisionEgg.GUI.GraphicsConfigurationWindow.star [...]
+<a name="L766"></a><tt class="py-lineno"> 766</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L767"></a><tt class="py-lineno"> 767</tt>  <tt class="py-line">            <tt id="link-311" class="py-name"><a title="VisionEgg.GUI.tkMessageBox" class="py-name" href="#" onclick="return doclink('link-311', 'tkMessageBox', 'link-8');">tkMessageBox</a></tt><tt class="py-op">.</tt><tt class="py-name">showwarning</tt><tt class="py-op">(</tt><tt class="py-string">"Invalid sequence parameters"</tt><tt class="py-op">,</tt> </tt>
+<a name="L768"></a><tt class="py-lineno"> 768</tt>  <tt class="py-line">                                     <tt class="py-string">"Invalid sequence type."</tt><tt class="py-op">,</tt> </tt>
+<a name="L769"></a><tt class="py-lineno"> 769</tt>  <tt class="py-line">                                     <tt class="py-name">parent</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
+<a name="L770"></a><tt class="py-lineno"> 770</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-number">0</tt> </tt>
+<a name="L771"></a><tt class="py-lineno"> 771</tt>  <tt class="py-line">        <tt class="py-name">rest_dur_sec</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">rest_dur</tt><tt class="py-op">.</tt><tt id="link-312" class="py-name"><a title="VisionEgg.PyroClient.PyroClient.get" class="py-name" href="#" onclick="return doclink('link-312', 'get', 'link-185');">get</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L772"></a><tt class="py-lineno"> 772</tt>  <tt class="py-line"> </tt>
+<a name="L773"></a><tt class="py-lineno"> 773</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">shuffle_tk_var</tt><tt class="py-op">.</tt><tt id="link-313" class="py-name"><a title="VisionEgg.PyroClient.PyroClient.get" class="py-name" href="#" onclick="return doclink('link-313', 'get', 'link-185');">get</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L774"></a><tt class="py-lineno"> 774</tt>  <tt class="py-line">            <tt class="py-name">random</tt><tt class="py-op">.</tt><tt class="py-name">shuffle</tt><tt class="py-op">(</tt><tt class="py-name">seq</tt><tt class="py-op">)</tt> </tt>
+<a name="L775"></a><tt class="py-lineno"> 775</tt>  <tt class="py-line"> </tt>
+<a name="L776"></a><tt class="py-lineno"> 776</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt id="link-314" class="py-name"><a title="VisionEgg.PyroApps.EPhysGUI.Loop" class="py-name" href="#" onclick="return doclink('link-314', 'Loop', 'link-197');">Loop</a></tt><tt class="py-op">(</tt><tt class="py-name">variable</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op"> [...]
+<a name="L777"></a><tt class="py-lineno"> 777</tt>  <tt class="py-line">                           <tt class="py-name">sequence</tt><tt class="py-op">=</tt><tt class="py-name">seq</tt><tt class="py-op">,</tt> </tt>
+<a name="L778"></a><tt class="py-lineno"> 778</tt>  <tt class="py-line">                           <tt class="py-name">rest_duration_sec</tt><tt class="py-op">=</tt><tt class="py-name">rest_dur_sec</tt><tt class="py-op">)</tt> </tt>
+<a name="L779"></a><tt class="py-lineno"> 779</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-number">1</tt> </tt>
+</div><a name="L780"></a><tt class="py-lineno"> 780</tt>  <tt class="py-line"> </tt>
+<a name="LoopParamDialog.destroy"></a><div id="LoopParamDialog.destroy-def"><a name="L781"></a><tt class="py-lineno"> 781</tt> <a class="py-toggle" href="#" id="LoopParamDialog.destroy-toggle" onclick="return toggle('LoopParamDialog.destroy');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.EPhysGUI.LoopParamDialog-class.html#destroy">destroy</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt  [...]
+</div><div id="LoopParamDialog.destroy-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="LoopParamDialog.destroy-expanded"><a name="L782"></a><tt class="py-lineno"> 782</tt>  <tt class="py-line">        <tt class="py-comment"># clear tk variables</tt> </tt>
+<a name="L783"></a><tt class="py-lineno"> 783</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">var_name</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L784"></a><tt class="py-lineno"> 784</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sequence_type</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L785"></a><tt class="py-lineno"> 785</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sequence_manual_string</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L786"></a><tt class="py-lineno"> 786</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">rest_dur</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L787"></a><tt class="py-lineno"> 787</tt>  <tt class="py-line">        <tt class="py-comment"># call master's destroy method</tt> </tt>
+<a name="L788"></a><tt class="py-lineno"> 788</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">tkSimpleDialog</tt><tt class="py-op">.</tt><tt class="py-name">Dialog</tt><tt class="py-op">.</tt><tt id="link-316" class="py-name" targets="Method VisionEgg.GUI.ToplevelDialog.destroy()=VisionEgg.GUI.ToplevelDialog-class.html#destroy,Method VisionEgg.PyroApps.EPhysGUI.AppWindow.destroy()=VisionEgg.PyroApps.EPhysGUI.AppWindow-class.html#destroy,Method VisionEgg. [...]
+VisionEgg.PyroApps.EPhysGUI.AppWindow.destroy
+VisionEgg.PyroApps.EPhysGUI.LoopParamDialog.destroy" class="py-name" href="#" onclick="return doclink('link-316', 'destroy', 'link-316');">destroy</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L789"></a><tt class="py-lineno"> 789</tt>  <tt class="py-line"> </tt>
+<a name="get_server"></a><div id="get_server-def"><a name="L790"></a><tt class="py-lineno"> 790</tt> <a class="py-toggle" href="#" id="get_server-toggle" onclick="return toggle('get_server');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.EPhysGUI-module.html#get_server">get_server</a><tt class="py-op">(</tt><tt class="py-param">hostname</tt><tt class="py-op">=</tt><tt class="py-string">""</tt><tt class="py-op">,</tt><tt class="p [...]
+</div><div id="get_server-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="get_server-expanded"><a name="L791"></a><tt class="py-lineno"> 791</tt>  <tt class="py-line">    <tt class="py-keyword">class</tt> <tt class="py-def-name">ConnectWindow</tt><tt class="py-op">(</tt><tt class="py-base-class">Tkinter</tt><tt class="py-op">.</tt><tt class="py-base-class">Frame</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L792"></a><tt class="py-lineno"> 792</tt>  <tt class="py-line">        <tt class="py-keyword">def</tt> <tt class="py-def-name">__init__</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt><tt class="py-param">master</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt><tt class="py-param">hostname</tt><tt class="py-op">=</tt><tt class="py-string">""</tt><tt class="py-op">,</tt><tt class="py-param">port</tt><tt class="py-o [...]
+<a name="L793"></a><tt class="py-lineno"> 793</tt>  <tt class="py-line">            <tt class="py-comment"># Allow VisionEgg Tkinter exception window</tt> </tt>
+<a name="L794"></a><tt class="py-lineno"> 794</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt id="link-317" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-317', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-318" class="py-name" targets="Variable VisionEgg.config=VisionEgg-module.html#config"><a title="VisionEgg.config" class="py-name" href="#" onclick="return doclink('link-318', 'config', [...]
+<a name="L795"></a><tt class="py-lineno"> 795</tt>  <tt class="py-line"> </tt>
+<a name="L796"></a><tt class="py-lineno"> 796</tt>  <tt class="py-line">            <tt id="link-319" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-319', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Frame</tt><tt class="py-op">.</tt><tt id="link-320" class="py-name"><a title="VisionEgg.ClassWithParameters.__init__
+VisionEgg.Configuration.Config.__init__
+VisionEgg.Core.FixationSpot.__init__
+VisionEgg.Core.FrameTimer.__init__
+VisionEgg.Core.ModelView.__init__
+VisionEgg.Core.OrthographicProjection.__init__
+VisionEgg.Core.OrthographicProjectionNoZClip.__init__
+VisionEgg.Core.PerspectiveProjection.__init__
+VisionEgg.Core.Projection.__init__
+VisionEgg.Core.ProjectionBaseClass.__init__
+VisionEgg.Core.Screen.__init__
+VisionEgg.Core.SimplePerspectiveProjection.__init__
+VisionEgg.Core.Stimulus.__init__
+VisionEgg.Core.Viewport.__init__
+VisionEgg.Daq.Channel.__init__
+VisionEgg.Daq.DaqMode.__init__
+VisionEgg.Daq.Device.__init__
+VisionEgg.Daq.Functionality.__init__
+VisionEgg.Daq.SignalType.__init__
+VisionEgg.DaqKeyboard.KeyboardTriggerInController.__init__
+VisionEgg.DaqLPT.LPTChannel.__init__
+VisionEgg.DaqLPT.LPTDevice.__init__
+VisionEgg.DaqLPT.LPTTriggerInController.__init__
+VisionEgg.DaqLPT.LPTTriggerOutController.__init__
+VisionEgg.Deprecated.Message.__init__
+VisionEgg.Dots.DotArea2D.__init__
+VisionEgg.FlowControl.ConstantController.__init__
+VisionEgg.FlowControl.Controller.__init__
+VisionEgg.FlowControl.EncapsulatedController.__init__
+VisionEgg.FlowControl.EvalStringController.__init__
+VisionEgg.FlowControl.ExecStringController.__init__
+VisionEgg.FlowControl.FunctionController.__init__
+VisionEgg.FlowControl.Presentation.__init__
+VisionEgg.GLTrace.Wrapper.__init__
+VisionEgg.GUI.AppWindow.__init__
+VisionEgg.GUI.GetKeypressDialog.__init__
+VisionEgg.GUI.GraphicsConfigurationWindow.__init__
+VisionEgg.GUI.InfoFrame.__init__
+VisionEgg.GUI.ProgressBar.__init__
+VisionEgg.GUI.ToplevelDialog.__init__
+VisionEgg.Gratings.SinGrating2D.__init__
+VisionEgg.Gratings.SinGrating3D.__init__
+VisionEgg.MoreStimuli.Arrow.__init__
+VisionEgg.MoreStimuli.FilledCircle.__init__
+VisionEgg.MoreStimuli.Rectangle3D.__init__
+VisionEgg.MoreStimuli.Target2D.__init__
+VisionEgg.ParameterTypes.AnyOf.__init__
+VisionEgg.ParameterTypes.Instance.__init__
+VisionEgg.ParameterTypes.Sequence.__init__
+VisionEgg.ParameterTypes.SubClass.__init__
+VisionEgg.PyroApps.AST_ext.AST_Visitor.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalMetaParameters.__init__
+VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.__init__
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.__init__
+VisionEgg.PyroApps.DropinGUI.DropinMetaParameters.__init__
+VisionEgg.PyroApps.DropinServer.DropinMetaController.__init__
+VisionEgg.PyroApps.EPhysGUI.AppWindow.__init__
+VisionEgg.PyroApps.EPhysGUI.BarButton.__init__
+VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase.__init__
+VisionEgg.PyroApps.EPhysGUI.GammaFrame.__init__
+VisionEgg.PyroApps.EPhysGUI.ImageSequenceLauncher.__init__
+VisionEgg.PyroApps.EPhysGUI.Loop.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopContainedObject.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopParamDialog.__init__
+VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.__init__
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.__init__
+VisionEgg.PyroApps.EPhysServer.EPhysServer.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingMetaParameters.__init__
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.GridGUI.GridControlFrame.__init__
+VisionEgg.PyroApps.GridGUI.GridMetaParameters.__init__
+VisionEgg.PyroApps.GridServer.GridMetaController.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetMetaParameters.__init__
+VisionEgg.PyroApps.MouseTargetServer.MousePositionController.__init__
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetOrientationController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetPositionController.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.CallbackEntry.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionParameters.__init__
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingMetaParameters.__init__
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumMetaParameters.__init__
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.__init__
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.__init__
+VisionEgg.PyroApps.TargetGUI.TargetMetaParameters.__init__
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.__init__
+VisionEgg.PyroClient.PyroClient.__init__
+VisionEgg.PyroHelpers.PyroConstantController.__init__
+VisionEgg.PyroHelpers.PyroEncapsulatedController.__init__
+VisionEgg.PyroHelpers.PyroEvalStringController.__init__
+VisionEgg.PyroHelpers.PyroExecStringController.__init__
+VisionEgg.PyroHelpers.PyroListenController.__init__
+VisionEgg.PyroHelpers.PyroLocalDictController.__init__
+VisionEgg.PyroHelpers.PyroServer.__init__
+VisionEgg.QuickTime.MovieTexture.__init__
+VisionEgg.ResponseControl.KeyboardResponseController.__init__
+VisionEgg.ResponseControl.ResponseController.__init__
+VisionEgg.SphereMap.AzElGrid.__init__
+VisionEgg.SphereMap.SphereGrating.__init__
+VisionEgg.SphereMap.SphereMap.__init__
+VisionEgg.SphereMap.SphereWindow.__init__
+VisionEgg.TCPController.SocketListenController.__init__
+VisionEgg.TCPController.TCPController.__init__
+VisionEgg.TCPController.TCPServer.__init__
+VisionEgg.Text.BitmapText.__init__
+VisionEgg.Text.GlutTextBase.__init__
+VisionEgg.Text.StrokeText.__init__
+VisionEgg.Text.Text.__init__
+VisionEgg.Textures.FixationCross.__init__
+VisionEgg.Textures.Mask2D.__init__
+VisionEgg.Textures.SpinningDrum.__init__
+VisionEgg.Textures.Texture.__init__
+VisionEgg.Textures.TextureFromFile.__init__
+VisionEgg.Textures.TextureObject.__init__
+VisionEgg.Textures.TextureStimulusBaseClass.__init__
+VisionEgg.ThreeDeeMath.TransformMatrix.__init__
+VisionEgg.WrappedText.WrappedText.__init__
+VisionEgg.qtmovie.Movie.__init__
+VisionEgg.qtmovie.Rect.__init__" class="py-name" href="#" onclick="return doclink('link-320', '__init__', 'link-96');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt><tt class="py-name">master</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-name">kw</tt><tt class="py-op">)</tt> </tt>
+<a name="L797"></a><tt class="py-lineno"> 797</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">winfo_toplevel</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-321" class="py-name"><a title="VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.title
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.title
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.title
+VisionEgg.PyroApps.GridGUI.GridControlFrame.title
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.title
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.title
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.title
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.title" class="py-name" href="#" onclick="return doclink('link-321', 'title', 'link-102');">title</a></tt><tt class="py-op">(</tt><tt class="py-string">"EPhysGUI Connect - Vision Egg"</tt><tt class="py-op">)</tt> </tt>
+<a name="L798"></a><tt class="py-lineno"> 798</tt>  <tt class="py-line">            <tt class="py-name">current_row</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L799"></a><tt class="py-lineno"> 799</tt>  <tt class="py-line">            <tt id="link-322" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-322', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt id="link-323" class="py-name" targets="Class VisionEgg.Deprecated.Message=VisionEgg.Deprecated.Message-class.html"><a title="VisionEgg.Deprecated.Message" class="py-name" href="#" onclick="return doclink('link-323 [...]
+<a name="L800"></a><tt class="py-lineno"> 800</tt>  <tt class="py-line">                          <tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">'Welcome to the "EPhys GUI" of the Vision Egg!\n\n'</tt><tt class="py-op">+</tt>\ </tt>
+<a name="L801"></a><tt class="py-lineno"> 801</tt>  <tt class="py-line">                          <tt class="py-string">'Please enter the hostname '</tt><tt class="py-op">+</tt>\ </tt>
+<a name="L802"></a><tt class="py-lineno"> 802</tt>  <tt class="py-line">                          <tt class="py-string">'and port number '</tt><tt class="py-op">+</tt>\ </tt>
+<a name="L803"></a><tt class="py-lineno"> 803</tt>  <tt class="py-line">                          <tt class="py-string">'of the computer on which you have the '</tt><tt class="py-op">+</tt>\ </tt>
+<a name="L804"></a><tt class="py-lineno"> 804</tt>  <tt class="py-line">                          <tt class="py-string">'"EPhys server" running.'</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-name">current_row</tt><tt class="py-op">,</tt><tt class="py-name">column</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">,</tt><tt class="py-name">co [...]
+<a name="L805"></a><tt class="py-lineno"> 805</tt>  <tt class="py-line">            <tt class="py-name">hostname</tt> <tt class="py-op">=</tt> <tt class="py-string">'localhost'</tt> </tt>
+<a name="L806"></a><tt class="py-lineno"> 806</tt>  <tt class="py-line"> </tt>
+<a name="L807"></a><tt class="py-lineno"> 807</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">hostname_tk</tt> <tt class="py-op">=</tt> <tt id="link-324" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-324', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">StringVar</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L808"></a><tt class="py-lineno"> 808</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">hostname_tk</tt><tt class="py-op">.</tt><tt id="link-325" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-325', 'set', 'link-111');">set</a></tt><tt class="py-op">(</tt><tt class="py-name">hostname</tt><tt class="py-op">)</tt> </tt>
+<a name="L809"></a><tt class="py-lineno"> 809</tt>  <tt class="py-line">            <tt class="py-name">current_row</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L810"></a><tt class="py-lineno"> 810</tt>  <tt class="py-line">            <tt id="link-326" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-326', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt><tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Hostname:"</tt><tt class="py-op">) [...]
+<a name="L811"></a><tt class="py-lineno"> 811</tt>  <tt class="py-line">            <tt id="link-327" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-327', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Entry</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt><tt class="py-name">textvariable</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.< [...]
+<a name="L812"></a><tt class="py-lineno"> 812</tt>  <tt class="py-line"> </tt>
+<a name="L813"></a><tt class="py-lineno"> 813</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">port_tk</tt> <tt class="py-op">=</tt> <tt id="link-328" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-328', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">IntVar</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L814"></a><tt class="py-lineno"> 814</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">port_tk</tt><tt class="py-op">.</tt><tt id="link-329" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-329', 'set', 'link-111');">set</a></tt><tt class="py-op">(</tt><tt class="py-name">port</tt><tt class="py-op">)</tt> </tt>
+<a name="L815"></a><tt class="py-lineno"> 815</tt>  <tt class="py-line">            <tt class="py-name">current_row</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L816"></a><tt class="py-lineno"> 816</tt>  <tt class="py-line">            <tt id="link-330" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-330', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt><tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Port:"</tt><tt class="py-op">)</tt [...]
+<a name="L817"></a><tt class="py-lineno"> 817</tt>  <tt class="py-line">            <tt id="link-331" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-331', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Entry</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt><tt class="py-name">textvariable</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.< [...]
+<a name="L818"></a><tt class="py-lineno"> 818</tt>  <tt class="py-line"> </tt>
+<a name="L819"></a><tt class="py-lineno"> 819</tt>  <tt class="py-line">            <tt class="py-name">current_row</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L820"></a><tt class="py-lineno"> 820</tt>  <tt class="py-line">            <tt class="py-name">bf</tt> <tt class="py-op">=</tt> <tt id="link-332" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-332', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Frame</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
+<a name="L821"></a><tt class="py-lineno"> 821</tt>  <tt class="py-line">            <tt class="py-name">bf</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-name">current_row</tt><tt class="py-op">,</tt><tt class="py-name">column</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">,</tt><tt class="py-name">columnspan</tt><tt class="py-op">=</tt><tt class="py-number">2</t [...]
+<a name="L822"></a><tt class="py-lineno"> 822</tt>  <tt class="py-line">            <tt class="py-name">ok</tt><tt class="py-op">=</tt><tt id="link-333" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-333', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Button</tt><tt class="py-op">(</tt><tt class="py-name">bf</tt><tt class="py-op">,</tt><tt class="py-name">text</tt><tt class="py-op">=</tt><tt cla [...]
+<a name="L823"></a><tt class="py-lineno"> 823</tt>  <tt class="py-line">            <tt class="py-name">ok</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">,</tt><tt class="py-name">column</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">)</tt> </tt>
+<a name="L824"></a><tt class="py-lineno"> 824</tt>  <tt class="py-line">            <tt class="py-name">ok</tt><tt class="py-op">.</tt><tt class="py-name">focus_force</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L825"></a><tt class="py-lineno"> 825</tt>  <tt class="py-line">            <tt class="py-name">ok</tt><tt class="py-op">.</tt><tt class="py-name">bind</tt><tt class="py-op">(</tt><tt class="py-string">'<Return>'</tt><tt class="py-op">,</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">ok</tt><tt class="py-op">)</tt> </tt>
+<a name="L826"></a><tt class="py-lineno"> 826</tt>  <tt class="py-line">            <tt id="link-334" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-334', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Button</tt><tt class="py-op">(</tt><tt class="py-name">bf</tt><tt class="py-op">,</tt><tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Cancel"</tt><tt class="py-op">,</tt [...]
+<a name="L827"></a><tt class="py-lineno"> 827</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+</div><a name="L828"></a><tt class="py-lineno"> 828</tt>  <tt class="py-line"> </tt>
+<a name="L829"></a><tt class="py-lineno"> 829</tt>  <tt class="py-line">        <tt class="py-keyword">def</tt> <tt class="py-def-name">ok</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt><tt class="py-param">dummy_arg</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L830"></a><tt class="py-lineno"> 830</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">hostname_tk</tt><tt class="py-op">.</tt><tt id="link-336" class="py-name"><a title="VisionEgg.PyroClient.PyroClient.get" class="py-name" href="#" onclick="return doclink('link-336', 'get', 'link-185'); [...]
+<a name="L831"></a><tt class="py-lineno"> 831</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-338" class="py-name"><a title="VisionEgg.GUI.ToplevelDialog.destroy
+VisionEgg.PyroApps.EPhysGUI.AppWindow.destroy
+VisionEgg.PyroApps.EPhysGUI.LoopParamDialog.destroy" class="py-name" href="#" onclick="return doclink('link-338', 'destroy', 'link-316');">destroy</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L832"></a><tt class="py-lineno"> 832</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-339" class="py-name"><a title="VisionEgg.PyroApps.EPhysGUI.AppWindow.quit" class="py-name" href="#" onclick="return doclink('link-339', 'quit', 'link-335');">quit</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L833"></a><tt class="py-lineno"> 833</tt>  <tt class="py-line"> </tt>
+<a name="L834"></a><tt class="py-lineno"> 834</tt>  <tt class="py-line">    <tt class="py-name">connect_win</tt> <tt class="py-op">=</tt> <tt class="py-name">ConnectWindow</tt><tt class="py-op">(</tt><tt class="py-name">hostname</tt><tt class="py-op">=</tt><tt class="py-name">hostname</tt><tt class="py-op">,</tt><tt class="py-name">port</tt><tt class="py-op">=</tt><tt class="py-name">port</tt><tt class="py-op">)</tt> </tt>
+<a name="L835"></a><tt class="py-lineno"> 835</tt>  <tt class="py-line">    <tt class="py-name">connect_win</tt><tt class="py-op">.</tt><tt class="py-name">pack</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L836"></a><tt class="py-lineno"> 836</tt>  <tt class="py-line">    <tt class="py-name">connect_win</tt><tt class="py-op">.</tt><tt class="py-name">mainloop</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L837"></a><tt class="py-lineno"> 837</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">connect_win</tt><tt class="py-op">.</tt><tt class="py-name">result</tt> </tt>
+</div><a name="L838"></a><tt class="py-lineno"> 838</tt>  <tt class="py-line"> </tt>
+<a name="GammaFrame"></a><div id="GammaFrame-def"><a name="L839"></a><tt class="py-lineno"> 839</tt> <a class="py-toggle" href="#" id="GammaFrame-toggle" onclick="return toggle('GammaFrame');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.PyroApps.EPhysGUI.GammaFrame-class.html">GammaFrame</a><tt class="py-op">(</tt><tt class="py-base-class">Tkinter</tt><tt class="py-op">.</tt><tt class="py-base-class">Frame</tt><tt class="py-op">)</tt> [...]
+</div><div id="GammaFrame-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="GammaFrame-expanded"><a name="GammaFrame.__init__"></a><div id="GammaFrame.__init__-def"><a name="L840"></a><tt class="py-lineno"> 840</tt> <a class="py-toggle" href="#" id="GammaFrame.__init__-toggle" onclick="return toggle('GammaFrame.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.EPhysGUI.GammaFrame-class.html#__i [...]
+<a name="L841"></a><tt class="py-lineno"> 841</tt>  <tt class="py-line">                 <tt class="py-param">master</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
+<a name="L842"></a><tt class="py-lineno"> 842</tt>  <tt class="py-line">                 <tt class="py-param">ephys_server</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt><tt class="py-op">**</tt><tt class="py-param">kw</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="GammaFrame.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="GammaFrame.__init__-expanded"><a name="L843"></a><tt class="py-lineno"> 843</tt>  <tt class="py-line">        <tt id="link-340" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-340', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Frame</tt><tt class="py-op">.</tt><tt id="link-341" class=" [...]
+VisionEgg.Configuration.Config.__init__
+VisionEgg.Core.FixationSpot.__init__
+VisionEgg.Core.FrameTimer.__init__
+VisionEgg.Core.ModelView.__init__
+VisionEgg.Core.OrthographicProjection.__init__
+VisionEgg.Core.OrthographicProjectionNoZClip.__init__
+VisionEgg.Core.PerspectiveProjection.__init__
+VisionEgg.Core.Projection.__init__
+VisionEgg.Core.ProjectionBaseClass.__init__
+VisionEgg.Core.Screen.__init__
+VisionEgg.Core.SimplePerspectiveProjection.__init__
+VisionEgg.Core.Stimulus.__init__
+VisionEgg.Core.Viewport.__init__
+VisionEgg.Daq.Channel.__init__
+VisionEgg.Daq.DaqMode.__init__
+VisionEgg.Daq.Device.__init__
+VisionEgg.Daq.Functionality.__init__
+VisionEgg.Daq.SignalType.__init__
+VisionEgg.DaqKeyboard.KeyboardTriggerInController.__init__
+VisionEgg.DaqLPT.LPTChannel.__init__
+VisionEgg.DaqLPT.LPTDevice.__init__
+VisionEgg.DaqLPT.LPTTriggerInController.__init__
+VisionEgg.DaqLPT.LPTTriggerOutController.__init__
+VisionEgg.Deprecated.Message.__init__
+VisionEgg.Dots.DotArea2D.__init__
+VisionEgg.FlowControl.ConstantController.__init__
+VisionEgg.FlowControl.Controller.__init__
+VisionEgg.FlowControl.EncapsulatedController.__init__
+VisionEgg.FlowControl.EvalStringController.__init__
+VisionEgg.FlowControl.ExecStringController.__init__
+VisionEgg.FlowControl.FunctionController.__init__
+VisionEgg.FlowControl.Presentation.__init__
+VisionEgg.GLTrace.Wrapper.__init__
+VisionEgg.GUI.AppWindow.__init__
+VisionEgg.GUI.GetKeypressDialog.__init__
+VisionEgg.GUI.GraphicsConfigurationWindow.__init__
+VisionEgg.GUI.InfoFrame.__init__
+VisionEgg.GUI.ProgressBar.__init__
+VisionEgg.GUI.ToplevelDialog.__init__
+VisionEgg.Gratings.SinGrating2D.__init__
+VisionEgg.Gratings.SinGrating3D.__init__
+VisionEgg.MoreStimuli.Arrow.__init__
+VisionEgg.MoreStimuli.FilledCircle.__init__
+VisionEgg.MoreStimuli.Rectangle3D.__init__
+VisionEgg.MoreStimuli.Target2D.__init__
+VisionEgg.ParameterTypes.AnyOf.__init__
+VisionEgg.ParameterTypes.Instance.__init__
+VisionEgg.ParameterTypes.Sequence.__init__
+VisionEgg.ParameterTypes.SubClass.__init__
+VisionEgg.PyroApps.AST_ext.AST_Visitor.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalMetaParameters.__init__
+VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.__init__
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.__init__
+VisionEgg.PyroApps.DropinGUI.DropinMetaParameters.__init__
+VisionEgg.PyroApps.DropinServer.DropinMetaController.__init__
+VisionEgg.PyroApps.EPhysGUI.AppWindow.__init__
+VisionEgg.PyroApps.EPhysGUI.BarButton.__init__
+VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase.__init__
+VisionEgg.PyroApps.EPhysGUI.GammaFrame.__init__
+VisionEgg.PyroApps.EPhysGUI.ImageSequenceLauncher.__init__
+VisionEgg.PyroApps.EPhysGUI.Loop.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopContainedObject.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopParamDialog.__init__
+VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.__init__
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.__init__
+VisionEgg.PyroApps.EPhysServer.EPhysServer.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingMetaParameters.__init__
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.GridGUI.GridControlFrame.__init__
+VisionEgg.PyroApps.GridGUI.GridMetaParameters.__init__
+VisionEgg.PyroApps.GridServer.GridMetaController.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetMetaParameters.__init__
+VisionEgg.PyroApps.MouseTargetServer.MousePositionController.__init__
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetOrientationController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetPositionController.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.CallbackEntry.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionParameters.__init__
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingMetaParameters.__init__
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumMetaParameters.__init__
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.__init__
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.__init__
+VisionEgg.PyroApps.TargetGUI.TargetMetaParameters.__init__
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.__init__
+VisionEgg.PyroClient.PyroClient.__init__
+VisionEgg.PyroHelpers.PyroConstantController.__init__
+VisionEgg.PyroHelpers.PyroEncapsulatedController.__init__
+VisionEgg.PyroHelpers.PyroEvalStringController.__init__
+VisionEgg.PyroHelpers.PyroExecStringController.__init__
+VisionEgg.PyroHelpers.PyroListenController.__init__
+VisionEgg.PyroHelpers.PyroLocalDictController.__init__
+VisionEgg.PyroHelpers.PyroServer.__init__
+VisionEgg.QuickTime.MovieTexture.__init__
+VisionEgg.ResponseControl.KeyboardResponseController.__init__
+VisionEgg.ResponseControl.ResponseController.__init__
+VisionEgg.SphereMap.AzElGrid.__init__
+VisionEgg.SphereMap.SphereGrating.__init__
+VisionEgg.SphereMap.SphereMap.__init__
+VisionEgg.SphereMap.SphereWindow.__init__
+VisionEgg.TCPController.SocketListenController.__init__
+VisionEgg.TCPController.TCPController.__init__
+VisionEgg.TCPController.TCPServer.__init__
+VisionEgg.Text.BitmapText.__init__
+VisionEgg.Text.GlutTextBase.__init__
+VisionEgg.Text.StrokeText.__init__
+VisionEgg.Text.Text.__init__
+VisionEgg.Textures.FixationCross.__init__
+VisionEgg.Textures.Mask2D.__init__
+VisionEgg.Textures.SpinningDrum.__init__
+VisionEgg.Textures.Texture.__init__
+VisionEgg.Textures.TextureFromFile.__init__
+VisionEgg.Textures.TextureObject.__init__
+VisionEgg.Textures.TextureStimulusBaseClass.__init__
+VisionEgg.ThreeDeeMath.TransformMatrix.__init__
+VisionEgg.WrappedText.WrappedText.__init__
+VisionEgg.qtmovie.Movie.__init__
+VisionEgg.qtmovie.Rect.__init__" class="py-name" href="#" onclick="return doclink('link-341', '__init__', 'link-96');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt><tt class="py-name">master</tt><tt class="py-op">,</tt><tt class="py-op">**</tt><tt class="py-name">kw</tt><tt class="py-op">)</tt> </tt>
+<a name="L844"></a><tt class="py-lineno"> 844</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">winfo_toplevel</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-342" class="py-name"><a title="VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.title
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.title
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.title
+VisionEgg.PyroApps.GridGUI.GridControlFrame.title
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.title
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.title
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.title
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.title" class="py-name" href="#" onclick="return doclink('link-342', 'title', 'link-102');">title</a></tt><tt class="py-op">(</tt><tt class="py-string">"Gamma - Vision Egg"</tt><tt class="py-op">)</tt> </tt>
+<a name="L845"></a><tt class="py-lineno"> 845</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">ephys_server</tt> <tt class="py-op">=</tt> <tt class="py-name">ephys_server</tt> </tt>
+<a name="L846"></a><tt class="py-lineno"> 846</tt>  <tt class="py-line"> </tt>
+<a name="L847"></a><tt class="py-lineno"> 847</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">columnconfigure</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">,</tt><tt class="py-name">weight</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="L848"></a><tt class="py-lineno"> 848</tt>  <tt class="py-line"> </tt>
+<a name="L849"></a><tt class="py-lineno"> 849</tt>  <tt class="py-line">        <tt class="py-name">row</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L850"></a><tt class="py-lineno"> 850</tt>  <tt class="py-line">        <tt id="link-343" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-343', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> </tt>
+<a name="L851"></a><tt class="py-lineno"> 851</tt>  <tt class="py-line">                      <tt class="py-name">font</tt><tt class="py-op">=</tt><tt class="py-op">(</tt><tt class="py-string">"Helvetica"</tt><tt class="py-op">,</tt><tt class="py-number">12</tt><tt class="py-op">,</tt><tt class="py-string">"bold"</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L852"></a><tt class="py-lineno"> 852</tt>  <tt class="py-line">                      <tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Load Gamma Table"</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-name">row</tt><tt class="py-op">)</tt> </tt>
+<a name="L853"></a><tt class="py-lineno"> 853</tt>  <tt class="py-line"> </tt>
+<a name="L854"></a><tt class="py-lineno"> 854</tt>  <tt class="py-line">        <tt class="py-name">row</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L855"></a><tt class="py-lineno"> 855</tt>  <tt class="py-line">        <tt id="link-344" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-344', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Button</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> </tt>
+<a name="L856"></a><tt class="py-lineno"> 856</tt>  <tt class="py-line">                       <tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Set from .ve_gamma file..."</tt><tt class="py-op">,</tt> </tt>
+<a name="L857"></a><tt class="py-lineno"> 857</tt>  <tt class="py-line">                       <tt class="py-name">command</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-345" class="py-name" targets="Method VisionEgg.PyroApps.EPhysGUI.GammaFrame.set_from_file()=VisionEgg.PyroApps.EPhysGUI.GammaFrame-class.html#set_from_file"><a title="VisionEgg.PyroApps.EPhysGUI.GammaFrame.set_from_file" class="py-name" href="#" onclick="return doclink('link [...]
+<a name="L858"></a><tt class="py-lineno"> 858</tt>  <tt class="py-line"> </tt>
+<a name="L859"></a><tt class="py-lineno"> 859</tt>  <tt class="py-line">        <tt class="py-name">row</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L860"></a><tt class="py-lineno"> 860</tt>  <tt class="py-line">        <tt id="link-346" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-346', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Button</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> </tt>
+<a name="L861"></a><tt class="py-lineno"> 861</tt>  <tt class="py-line">                       <tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Set to monitor default (linear gamma table)"</tt><tt class="py-op">,</tt> </tt>
+<a name="L862"></a><tt class="py-lineno"> 862</tt>  <tt class="py-line">                       <tt class="py-name">command</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-347" class="py-name" targets="Method VisionEgg.PyroApps.EPhysGUI.GammaFrame.set_monitor_default()=VisionEgg.PyroApps.EPhysGUI.GammaFrame-class.html#set_monitor_default"><a title="VisionEgg.PyroApps.EPhysGUI.GammaFrame.set_monitor_default" class="py-name" href="#" onclick="re [...]
+<a name="L863"></a><tt class="py-lineno"> 863</tt>  <tt class="py-line"> </tt>
+<a name="L864"></a><tt class="py-lineno"> 864</tt>  <tt class="py-line">        <tt class="py-name">row</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L865"></a><tt class="py-lineno"> 865</tt>  <tt class="py-line">        <tt class="py-name">invert_frame</tt> <tt class="py-op">=</tt> <tt id="link-348" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-348', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Frame</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
+<a name="L866"></a><tt class="py-lineno"> 866</tt>  <tt class="py-line">        <tt class="py-name">invert_frame</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-name">row</tt><tt class="py-op">,</tt><tt class="py-name">sticky</tt><tt class="py-op">=</tt><tt class="py-string">"we"</tt><tt class="py-op">)</tt> </tt>
+<a name="L867"></a><tt class="py-lineno"> 867</tt>  <tt class="py-line"> </tt>
+<a name="L868"></a><tt class="py-lineno"> 868</tt>  <tt class="py-line">        <tt id="link-349" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-349', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Button</tt><tt class="py-op">(</tt><tt class="py-name">invert_frame</tt><tt class="py-op">,</tt> </tt>
+<a name="L869"></a><tt class="py-lineno"> 869</tt>  <tt class="py-line">                       <tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Linearize luminance for gammas"</tt><tt class="py-op">,</tt> </tt>
+<a name="L870"></a><tt class="py-lineno"> 870</tt>  <tt class="py-line">                       <tt class="py-name">command</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-350" class="py-name" targets="Method VisionEgg.PyroApps.EPhysGUI.GammaFrame.linearize()=VisionEgg.PyroApps.EPhysGUI.GammaFrame-class.html#linearize"><a title="VisionEgg.PyroApps.EPhysGUI.GammaFrame.linearize" class="py-name" href="#" onclick="return doclink('link-350', 'line [...]
+<a name="L871"></a><tt class="py-lineno"> 871</tt>  <tt class="py-line"> </tt>
+<a name="L872"></a><tt class="py-lineno"> 872</tt>  <tt class="py-line">        <tt id="link-351" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-351', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">invert_frame</tt><tt class="py-op">,</tt> </tt>
+<a name="L873"></a><tt class="py-lineno"> 873</tt>  <tt class="py-line">                      <tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Red:"</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">,</tt><tt class="py-name">column</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="L874"></a><tt class="py-lineno"> 874</tt>  <tt class="py-line"> </tt>
+<a name="L875"></a><tt class="py-lineno"> 875</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">red_gamma</tt> <tt class="py-op">=</tt> <tt id="link-352" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-352', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">DoubleVar</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L876"></a><tt class="py-lineno"> 876</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">red_gamma</tt><tt class="py-op">.</tt><tt id="link-353" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-353', 'set', 'link-111');">set</a></tt><tt class="py-op">(</tt><tt class="py-number">2.2</tt><tt class="py-op">)</tt> </tt>
+<a name="L877"></a><tt class="py-lineno"> 877</tt>  <tt class="py-line"> </tt>
+<a name="L878"></a><tt class="py-lineno"> 878</tt>  <tt class="py-line">        <tt id="link-354" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-354', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Entry</tt><tt class="py-op">(</tt><tt class="py-name">invert_frame</tt><tt class="py-op">,</tt> </tt>
+<a name="L879"></a><tt class="py-lineno"> 879</tt>  <tt class="py-line">                      <tt class="py-name">textvariable</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">red_gamma</tt><tt class="py-op">,</tt> </tt>
+<a name="L880"></a><tt class="py-lineno"> 880</tt>  <tt class="py-line">                      <tt class="py-name">width</tt><tt class="py-op">=</tt><tt class="py-number">5</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">,</tt><tt class="py-name">column</tt><tt class="py-op">=</tt><tt class="py-number">2</tt><tt class="py-op">)</tt> </tt>
+<a name="L881"></a><tt class="py-lineno"> 881</tt>  <tt class="py-line"> </tt>
+<a name="L882"></a><tt class="py-lineno"> 882</tt>  <tt class="py-line">        <tt id="link-355" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-355', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">invert_frame</tt><tt class="py-op">,</tt> </tt>
+<a name="L883"></a><tt class="py-lineno"> 883</tt>  <tt class="py-line">                      <tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Green:"</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">,</tt><tt class="py-name">column</tt><tt class="py-op">=</tt><tt class="py-number">3</tt><tt class="py-op">)</t [...]
+<a name="L884"></a><tt class="py-lineno"> 884</tt>  <tt class="py-line"> </tt>
+<a name="L885"></a><tt class="py-lineno"> 885</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">green_gamma</tt> <tt class="py-op">=</tt> <tt id="link-356" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-356', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">DoubleVar</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L886"></a><tt class="py-lineno"> 886</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">green_gamma</tt><tt class="py-op">.</tt><tt id="link-357" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-357', 'set', 'link-111');">set</a></tt><tt class="py-op">(</tt><tt class="py-number">2.2</tt><tt class="py-op">)</tt> </tt>
+<a name="L887"></a><tt class="py-lineno"> 887</tt>  <tt class="py-line"> </tt>
+<a name="L888"></a><tt class="py-lineno"> 888</tt>  <tt class="py-line">        <tt id="link-358" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-358', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Entry</tt><tt class="py-op">(</tt><tt class="py-name">invert_frame</tt><tt class="py-op">,</tt> </tt>
+<a name="L889"></a><tt class="py-lineno"> 889</tt>  <tt class="py-line">                      <tt class="py-name">textvariable</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">green_gamma</tt><tt class="py-op">,</tt> </tt>
+<a name="L890"></a><tt class="py-lineno"> 890</tt>  <tt class="py-line">                      <tt class="py-name">width</tt><tt class="py-op">=</tt><tt class="py-number">5</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">,</tt><tt class="py-name">column</tt><tt class="py-op">=</tt><tt class="py-number">4</tt><tt class="py-op">)</tt> </tt>
+<a name="L891"></a><tt class="py-lineno"> 891</tt>  <tt class="py-line"> </tt>
+<a name="L892"></a><tt class="py-lineno"> 892</tt>  <tt class="py-line">        <tt id="link-359" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-359', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">invert_frame</tt><tt class="py-op">,</tt> </tt>
+<a name="L893"></a><tt class="py-lineno"> 893</tt>  <tt class="py-line">                      <tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Blue:"</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">,</tt><tt class="py-name">column</tt><tt class="py-op">=</tt><tt class="py-number">5</tt><tt class="py-op">)</tt> </tt>
+<a name="L894"></a><tt class="py-lineno"> 894</tt>  <tt class="py-line"> </tt>
+<a name="L895"></a><tt class="py-lineno"> 895</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">blue_gamma</tt> <tt class="py-op">=</tt> <tt id="link-360" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-360', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">DoubleVar</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L896"></a><tt class="py-lineno"> 896</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">blue_gamma</tt><tt class="py-op">.</tt><tt id="link-361" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-361', 'set', 'link-111');">set</a></tt><tt class="py-op">(</tt><tt class="py-number">2.2</tt><tt class="py-op">)</tt> </tt>
+<a name="L897"></a><tt class="py-lineno"> 897</tt>  <tt class="py-line"> </tt>
+<a name="L898"></a><tt class="py-lineno"> 898</tt>  <tt class="py-line">        <tt id="link-362" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-362', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Entry</tt><tt class="py-op">(</tt><tt class="py-name">invert_frame</tt><tt class="py-op">,</tt> </tt>
+<a name="L899"></a><tt class="py-lineno"> 899</tt>  <tt class="py-line">                      <tt class="py-name">textvariable</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">blue_gamma</tt><tt class="py-op">,</tt> </tt>
+<a name="L900"></a><tt class="py-lineno"> 900</tt>  <tt class="py-line">                      <tt class="py-name">width</tt><tt class="py-op">=</tt><tt class="py-number">5</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">,</tt><tt class="py-name">column</tt><tt class="py-op">=</tt><tt class="py-number">6</tt><tt class="py-op">)</tt> </tt>
+<a name="L901"></a><tt class="py-lineno"> 901</tt>  <tt class="py-line"> </tt>
+<a name="L902"></a><tt class="py-lineno"> 902</tt>  <tt class="py-line">        <tt class="py-name">row</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L903"></a><tt class="py-lineno"> 903</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">success_label</tt> <tt class="py-op">=</tt> <tt id="link-363" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-363', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</ [...]
+<a name="L904"></a><tt class="py-lineno"> 904</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">success_label</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-name">row</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L905"></a><tt class="py-lineno"> 905</tt>  <tt class="py-line"> </tt>
+<a name="GammaFrame.get_corrected_gamma_table"></a><div id="GammaFrame.get_corrected_gamma_table-def"><a name="L906"></a><tt class="py-lineno"> 906</tt> <a class="py-toggle" href="#" id="GammaFrame.get_corrected_gamma_table-toggle" onclick="return toggle('GammaFrame.get_corrected_gamma_table');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.EPhysGUI.GammaFrame-class.html#get_corrected_gamma_table">get_corrected_gamma_table</a [...]
+</div><div id="GammaFrame.get_corrected_gamma_table-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="GammaFrame.get_corrected_gamma_table-expanded"><a name="L907"></a><tt class="py-lineno"> 907</tt>  <tt class="py-line">        <tt class="py-comment"># c is a constant scale factor.  It is always 1.0 when</tt> </tt>
+<a name="L908"></a><tt class="py-lineno"> 908</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># luminance is normalized to range [0.0,1.0] and input units</tt> </tt>
+<a name="L909"></a><tt class="py-lineno"> 909</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># in range [0.0,1.0], as is OpenGL standard.</tt> </tt>
+<a name="L910"></a><tt class="py-lineno"> 910</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">c</tt> <tt class="py-op">=</tt> <tt class="py-number">1.0</tt> </tt>
+<a name="L911"></a><tt class="py-lineno"> 911</tt>  <tt class="py-line">        <tt class="py-name">inc</tt> <tt class="py-op">=</tt> <tt class="py-number">1.0</tt><tt class="py-op">/</tt><tt class="py-number">255</tt> </tt>
+<a name="L912"></a><tt class="py-lineno"> 912</tt>  <tt class="py-line">        <tt class="py-name">target_luminances</tt> <tt class="py-op">=</tt> <tt class="py-name">numpy</tt><tt class="py-op">.</tt><tt class="py-name">arange</tt><tt class="py-op">(</tt><tt class="py-number">0.0</tt><tt class="py-op">,</tt><tt class="py-number">1.0</tt><tt class="py-op">+</tt><tt class="py-name">inc</tt><tt class="py-op">,</tt><tt class="py-name">inc</tt><tt class="py-op">)</tt> </tt>
+<a name="L913"></a><tt class="py-lineno"> 913</tt>  <tt class="py-line">        <tt class="py-name">output_ramp</tt> <tt class="py-op">=</tt> <tt class="py-name">numpy</tt><tt class="py-op">.</tt><tt class="py-name">zeros</tt><tt class="py-op">(</tt><tt class="py-name">target_luminances</tt><tt class="py-op">.</tt><tt class="py-name">shape</tt><tt class="py-op">,</tt><tt class="py-name">dtype</tt><tt class="py-op">=</tt><tt class="py-name">numpy</tt><tt class="py-op">.</tt><tt class="py- [...]
+<a name="L914"></a><tt class="py-lineno"> 914</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">i</tt> <tt class="py-keyword">in</tt> <tt class="py-name">range</tt><tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">target_luminances</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L915"></a><tt class="py-lineno"> 915</tt>  <tt class="py-line">            <tt class="py-name">L</tt> <tt class="py-op">=</tt> <tt class="py-name">target_luminances</tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">]</tt> </tt>
+<a name="L916"></a><tt class="py-lineno"> 916</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">L</tt> <tt class="py-op">==</tt> <tt class="py-number">0.0</tt><tt class="py-op">:</tt> </tt>
+<a name="L917"></a><tt class="py-lineno"> 917</tt>  <tt class="py-line">                <tt class="py-name">v_88fp</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L918"></a><tt class="py-lineno"> 918</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L919"></a><tt class="py-lineno"> 919</tt>  <tt class="py-line">                <tt class="py-name">v</tt> <tt class="py-op">=</tt> <tt class="py-name">math</tt><tt class="py-op">.</tt><tt class="py-name">exp</tt><tt class="py-op">(</tt> <tt class="py-op">(</tt><tt class="py-name">math</tt><tt class="py-op">.</tt><tt class="py-name">log</tt><tt class="py-op">(</tt><tt class="py-name">L</tt><tt class="py-op">)</tt> <tt class="py-op">-</tt> <tt class="py-name">math</tt><tt class="p [...]
+<a name="L920"></a><tt class="py-lineno"> 920</tt>  <tt class="py-line">                <tt class="py-name">v_88fp</tt> <tt class="py-op">=</tt> <tt id="link-364" class="py-name"><a title="int" class="py-name" href="#" onclick="return doclink('link-364', 'int', 'link-184');">int</a></tt><tt class="py-op">(</tt><tt class="py-name">round</tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-name">v</tt><tt class="py-op">*</tt><tt class="py-number">255</tt><tt class="py-op">)</t [...]
+<a name="L921"></a><tt class="py-lineno"> 921</tt>  <tt class="py-line">            <tt class="py-name">output_ramp</tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">v_88fp</tt> <tt class="py-comment"># 8.8 fixed point format</tt> </tt>
+<a name="L922"></a><tt class="py-lineno"> 922</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">output_ramp</tt><tt class="py-op">)</tt> <tt class="py-comment"># convert to Python list</tt> </tt>
+</div><a name="L923"></a><tt class="py-lineno"> 923</tt>  <tt class="py-line"> </tt>
+<a name="GammaFrame.linearize"></a><div id="GammaFrame.linearize-def"><a name="L924"></a><tt class="py-lineno"> 924</tt> <a class="py-toggle" href="#" id="GammaFrame.linearize-toggle" onclick="return toggle('GammaFrame.linearize');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.EPhysGUI.GammaFrame-class.html#linearize">linearize</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-pa [...]
+</div><div id="GammaFrame.linearize-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="GammaFrame.linearize-expanded"><a name="L925"></a><tt class="py-lineno"> 925</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">success_label</tt><tt class="py-op">.</tt><tt class="py-name">configure</tt><tt class="py-op">(</tt><tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Setting..."</tt><tt [...]
+<a name="L926"></a><tt class="py-lineno"> 926</tt>  <tt class="py-line">        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L927"></a><tt class="py-lineno"> 927</tt>  <tt class="py-line">            <tt class="py-name">red</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-365" class="py-name" targets="Method VisionEgg.PyroApps.EPhysGUI.GammaFrame.get_corrected_gamma_table()=VisionEgg.PyroApps.EPhysGUI.GammaFrame-class.html#get_corrected_gamma_table"><a title="VisionEgg.PyroApps.EPhysGUI.GammaFrame.get_corrected_gamma_table" class="py-name" href="#" onclic [...]
+<a name="L928"></a><tt class="py-lineno"> 928</tt>  <tt class="py-line">            <tt class="py-name">green</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-367" class="py-name"><a title="VisionEgg.PyroApps.EPhysGUI.GammaFrame.get_corrected_gamma_table" class="py-name" href="#" onclick="return doclink('link-367', 'get_corrected_gamma_table', 'link-365');">get_corrected_gamma_table</a></tt><tt class="py-op">(</tt><tt class="py-name">self</t [...]
+<a name="L929"></a><tt class="py-lineno"> 929</tt>  <tt class="py-line">            <tt class="py-name">blue</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-369" class="py-name"><a title="VisionEgg.PyroApps.EPhysGUI.GammaFrame.get_corrected_gamma_table" class="py-name" href="#" onclick="return doclink('link-369', 'get_corrected_gamma_table', 'link-365');">get_corrected_gamma_table</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt [...]
+<a name="L930"></a><tt class="py-lineno"> 930</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt><tt class="py-op">:</tt> </tt>
+<a name="L931"></a><tt class="py-lineno"> 931</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">success_label</tt><tt class="py-op">.</tt><tt class="py-name">configure</tt><tt class="py-op">(</tt><tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Calculation error"</tt><tt class="py-op">)</tt> </tt>
+<a name="L932"></a><tt class="py-lineno"> 932</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> </tt>
+<a name="L933"></a><tt class="py-lineno"> 933</tt>  <tt class="py-line">        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L934"></a><tt class="py-lineno"> 934</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">ephys_server</tt><tt class="py-op">.</tt><tt id="link-371" class="py-name" targets="Method VisionEgg.Core.Screen.set_gamma_ramp()=VisionEgg.Core.Screen-class.html#set_gamma_ramp,Method VisionEgg.PyroApps.EPhysServer.EPhysServer.set_gamma_ramp()=VisionEgg.PyroApps.EPhysServer.EPhysServer-class.html#set_g [...]
+VisionEgg.PyroApps.EPhysServer.EPhysServer.set_gamma_ramp" class="py-name" href="#" onclick="return doclink('link-371', 'set_gamma_ramp', 'link-371');">set_gamma_ramp</a></tt><tt class="py-op">(</tt><tt class="py-name">red</tt><tt class="py-op">,</tt><tt class="py-name">green</tt><tt class="py-op">,</tt><tt class="py-name">blue</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L935"></a><tt class="py-lineno"> 935</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">success_label</tt><tt class="py-op">.</tt><tt class="py-name">configure</tt><tt class="py-op">(</tt><tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Success"</tt><tt class="py-op">)</tt> </tt>
+<a name="L936"></a><tt class="py-lineno"> 936</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L937"></a><tt class="py-lineno"> 937</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">success_label</tt><tt class="py-op">.</tt><tt class="py-name">configure</tt><tt class="py-op">(</tt><tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Failed: Invalid gamma values?"</tt><tt class="py-op">)</tt> </tt>
+<a name="L938"></a><tt class="py-lineno"> 938</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt> <tt class="py-name">Exception</tt><tt class="py-op">,</tt><tt class="py-name">x</tt><tt class="py-op">:</tt> </tt>
+<a name="L939"></a><tt class="py-lineno"> 939</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">success_label</tt><tt class="py-op">.</tt><tt class="py-name">configure</tt><tt class="py-op">(</tt><tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Failed: %s: %s"</tt><tt class="py-op">%</tt><tt class="py-op">(</tt><tt class="py-name">x</tt><tt class="py-op">.</tt><tt class="py-name">__class__</tt><tt cla [...]
+<a name="L940"></a><tt class="py-lineno"> 940</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> </tt>
+</div><a name="L941"></a><tt class="py-lineno"> 941</tt>  <tt class="py-line"> </tt>
+<a name="GammaFrame.set_monitor_default"></a><div id="GammaFrame.set_monitor_default-def"><a name="L942"></a><tt class="py-lineno"> 942</tt> <a class="py-toggle" href="#" id="GammaFrame.set_monitor_default-toggle" onclick="return toggle('GammaFrame.set_monitor_default');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.EPhysGUI.GammaFrame-class.html#set_monitor_default">set_monitor_default</a><tt class="py-op">(</tt><tt class=" [...]
+</div><div id="GammaFrame.set_monitor_default-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="GammaFrame.set_monitor_default-expanded"><a name="L943"></a><tt class="py-lineno"> 943</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">success_label</tt><tt class="py-op">.</tt><tt class="py-name">configure</tt><tt class="py-op">(</tt><tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string"> [...]
+<a name="L944"></a><tt class="py-lineno"> 944</tt>  <tt class="py-line">        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L945"></a><tt class="py-lineno"> 945</tt>  <tt class="py-line">            <tt class="py-name">red</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-372" class="py-name"><a title="VisionEgg.PyroApps.EPhysGUI.GammaFrame.get_corrected_gamma_table" class="py-name" href="#" onclick="return doclink('link-372', 'get_corrected_gamma_table', 'link-365');">get_corrected_gamma_table</a></tt><tt class="py-op">(</tt><tt class="py-number">1.0</tt [...]
+<a name="L946"></a><tt class="py-lineno"> 946</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt><tt class="py-op">:</tt> </tt>
+<a name="L947"></a><tt class="py-lineno"> 947</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">success_label</tt><tt class="py-op">.</tt><tt class="py-name">configure</tt><tt class="py-op">(</tt><tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Calculation error"</tt><tt class="py-op">)</tt> </tt>
+<a name="L948"></a><tt class="py-lineno"> 948</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> </tt>
+<a name="L949"></a><tt class="py-lineno"> 949</tt>  <tt class="py-line">        <tt class="py-name">green</tt> <tt class="py-op">=</tt> <tt class="py-name">red</tt> </tt>
+<a name="L950"></a><tt class="py-lineno"> 950</tt>  <tt class="py-line">        <tt class="py-name">blue</tt> <tt class="py-op">=</tt> <tt class="py-name">red</tt> </tt>
+<a name="L951"></a><tt class="py-lineno"> 951</tt>  <tt class="py-line">        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L952"></a><tt class="py-lineno"> 952</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">ephys_server</tt><tt class="py-op">.</tt><tt id="link-373" class="py-name"><a title="VisionEgg.Core.Screen.set_gamma_ramp
+VisionEgg.PyroApps.EPhysServer.EPhysServer.set_gamma_ramp" class="py-name" href="#" onclick="return doclink('link-373', 'set_gamma_ramp', 'link-371');">set_gamma_ramp</a></tt><tt class="py-op">(</tt><tt class="py-name">red</tt><tt class="py-op">,</tt><tt class="py-name">green</tt><tt class="py-op">,</tt><tt class="py-name">blue</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L953"></a><tt class="py-lineno"> 953</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">success_label</tt><tt class="py-op">.</tt><tt class="py-name">configure</tt><tt class="py-op">(</tt><tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Success"</tt><tt class="py-op">)</tt> </tt>
+<a name="L954"></a><tt class="py-lineno"> 954</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L955"></a><tt class="py-lineno"> 955</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">success_label</tt><tt class="py-op">.</tt><tt class="py-name">configure</tt><tt class="py-op">(</tt><tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Failed: Invalid gamma values?"</tt><tt class="py-op">)</tt> </tt>
+<a name="L956"></a><tt class="py-lineno"> 956</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt> <tt class="py-name">Exception</tt><tt class="py-op">,</tt><tt class="py-name">x</tt><tt class="py-op">:</tt> </tt>
+<a name="L957"></a><tt class="py-lineno"> 957</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">success_label</tt><tt class="py-op">.</tt><tt class="py-name">configure</tt><tt class="py-op">(</tt><tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Failed: %s: %s"</tt><tt class="py-op">%</tt><tt class="py-op">(</tt><tt class="py-name">x</tt><tt class="py-op">.</tt><tt class="py-name">__class__</tt><tt cla [...]
+<a name="L958"></a><tt class="py-lineno"> 958</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> </tt>
+</div><a name="L959"></a><tt class="py-lineno"> 959</tt>  <tt class="py-line"> </tt>
+<a name="GammaFrame.set_from_file"></a><div id="GammaFrame.set_from_file-def"><a name="L960"></a><tt class="py-lineno"> 960</tt> <a class="py-toggle" href="#" id="GammaFrame.set_from_file-toggle" onclick="return toggle('GammaFrame.set_from_file');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.EPhysGUI.GammaFrame-class.html#set_from_file">set_from_file</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op" [...]
+</div><div id="GammaFrame.set_from_file-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="GammaFrame.set_from_file-expanded"><a name="L961"></a><tt class="py-lineno"> 961</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">success_label</tt><tt class="py-op">.</tt><tt class="py-name">configure</tt><tt class="py-op">(</tt><tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Setting..." [...]
+<a name="L962"></a><tt class="py-lineno"> 962</tt>  <tt class="py-line">        <tt class="py-name">filename</tt> <tt class="py-op">=</tt> <tt id="link-374" class="py-name"><a title="VisionEgg.GUI.tkFileDialog" class="py-name" href="#" onclick="return doclink('link-374', 'tkFileDialog', 'link-9');">tkFileDialog</a></tt><tt class="py-op">.</tt><tt class="py-name">askopenfilename</tt><tt class="py-op">(</tt> </tt>
+<a name="L963"></a><tt class="py-lineno"> 963</tt>  <tt class="py-line">            <tt class="py-name">parent</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> </tt>
+<a name="L964"></a><tt class="py-lineno"> 964</tt>  <tt class="py-line">            <tt class="py-name">defaultextension</tt><tt class="py-op">=</tt><tt class="py-string">".ve_gamma"</tt><tt class="py-op">,</tt> </tt>
+<a name="L965"></a><tt class="py-lineno"> 965</tt>  <tt class="py-line">            <tt class="py-name">filetypes</tt><tt class="py-op">=</tt><tt class="py-op">[</tt><tt class="py-op">(</tt><tt class="py-string">'Configuration file'</tt><tt class="py-op">,</tt><tt class="py-string">'*.ve_gamma'</tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L966"></a><tt class="py-lineno"> 966</tt>  <tt class="py-line">            <tt class="py-name">initialdir</tt><tt class="py-op">=</tt><tt id="link-375" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-375', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-376" class="py-name"><a title="VisionEgg.config" class="py-name" href="#" onclick="return doclink('link-376', 'config', 'link-318');">config</a></tt><tt  [...]
+<a name="L967"></a><tt class="py-lineno"> 967</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">filename</tt><tt class="py-op">:</tt> </tt>
+<a name="L968"></a><tt class="py-lineno"> 968</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">success_label</tt><tt class="py-op">.</tt><tt class="py-name">configure</tt><tt class="py-op">(</tt><tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"No file given"</tt><tt class="py-op">)</tt> </tt>
+<a name="L969"></a><tt class="py-lineno"> 969</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> </tt>
+<a name="L970"></a><tt class="py-lineno"> 970</tt>  <tt class="py-line">        <tt class="py-name">fd</tt> <tt class="py-op">=</tt> <tt class="py-name">open</tt><tt class="py-op">(</tt><tt class="py-name">filename</tt><tt class="py-op">,</tt><tt class="py-string">"r"</tt><tt class="py-op">)</tt> </tt>
+<a name="L971"></a><tt class="py-lineno"> 971</tt>  <tt class="py-line">        <tt class="py-name">gamma_values</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L972"></a><tt class="py-lineno"> 972</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">line</tt> <tt class="py-keyword">in</tt> <tt class="py-name">fd</tt><tt class="py-op">.</tt><tt class="py-name">readlines</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L973"></a><tt class="py-lineno"> 973</tt>  <tt class="py-line">            <tt class="py-name">line</tt> <tt class="py-op">=</tt> <tt class="py-name">line</tt><tt class="py-op">.</tt><tt class="py-name">strip</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-comment"># remove leading/trailing whitespace</tt> </tt>
+<a name="L974"></a><tt class="py-lineno"> 974</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">line</tt><tt class="py-op">.</tt><tt class="py-name">startswith</tt><tt class="py-op">(</tt><tt class="py-string">"#"</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> <tt class="py-comment"># comment, ignore</tt> </tt>
+<a name="L975"></a><tt class="py-lineno"> 975</tt>  <tt class="py-line">                <tt class="py-keyword">continue</tt> </tt>
+<a name="L976"></a><tt class="py-lineno"> 976</tt>  <tt class="py-line">            <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L977"></a><tt class="py-lineno"> 977</tt>  <tt class="py-line">                <tt class="py-name">gamma_values</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt> <tt class="py-name">map</tt><tt class="py-op">(</tt><tt id="link-377" class="py-name"><a title="int" class="py-name" href="#" onclick="return doclink('link-377', 'int', 'link-184');">int</a></tt><tt class="py-op">,</tt> <tt class="py-name">line</tt><tt class="py-op">.</tt><tt class="py- [...]
+<a name="L978"></a><tt class="py-lineno"> 978</tt>  <tt class="py-line">            <tt class="py-keyword">except</tt> <tt class="py-name">Exception</tt><tt class="py-op">,</tt> <tt class="py-name">x</tt><tt class="py-op">:</tt> </tt>
+<a name="L979"></a><tt class="py-lineno"> 979</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">success_label</tt><tt class="py-op">.</tt><tt class="py-name">configure</tt><tt class="py-op">(</tt><tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"File error"</tt><tt class="py-op">)</tt> </tt>
+<a name="L980"></a><tt class="py-lineno"> 980</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> </tt>
+<a name="L981"></a><tt class="py-lineno"> 981</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">gamma_values</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> <tt class="py-op">!=</tt> <tt class="py-number">3</tt><tt class="py-op">:</tt> </tt>
+<a name="L982"></a><tt class="py-lineno"> 982</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">success_label</tt><tt class="py-op">.</tt><tt class="py-name">configure</tt><tt class="py-op">(</tt><tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"File error"</tt><tt class="py-op">)</tt> </tt>
+<a name="L983"></a><tt class="py-lineno"> 983</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> <tt class="py-name">RuntimeError</tt><tt class="py-op">(</tt><tt class="py-string">"expected 3 values per gamma entry"</tt><tt class="py-op">)</tt> </tt>
+<a name="L984"></a><tt class="py-lineno"> 984</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">gamma_values</tt><tt class="py-op">)</tt> <tt class="py-op">!=</tt> <tt class="py-number">256</tt><tt class="py-op">:</tt> </tt>
+<a name="L985"></a><tt class="py-lineno"> 985</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">success_label</tt><tt class="py-op">.</tt><tt class="py-name">configure</tt><tt class="py-op">(</tt><tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"File error"</tt><tt class="py-op">)</tt> </tt>
+<a name="L986"></a><tt class="py-lineno"> 986</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">RuntimeError</tt><tt class="py-op">(</tt><tt class="py-string">"expected 256 gamma entries"</tt><tt class="py-op">)</tt> </tt>
+<a name="L987"></a><tt class="py-lineno"> 987</tt>  <tt class="py-line">        <tt class="py-name">red</tt><tt class="py-op">,</tt> <tt class="py-name">green</tt><tt class="py-op">,</tt> <tt class="py-name">blue</tt> <tt class="py-op">=</tt> <tt class="py-name">zip</tt><tt class="py-op">(</tt><tt class="py-op">*</tt><tt class="py-name">gamma_values</tt><tt class="py-op">)</tt> </tt>
+<a name="L988"></a><tt class="py-lineno"> 988</tt>  <tt class="py-line">        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L989"></a><tt class="py-lineno"> 989</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">ephys_server</tt><tt class="py-op">.</tt><tt id="link-378" class="py-name"><a title="VisionEgg.Core.Screen.set_gamma_ramp
+VisionEgg.PyroApps.EPhysServer.EPhysServer.set_gamma_ramp" class="py-name" href="#" onclick="return doclink('link-378', 'set_gamma_ramp', 'link-371');">set_gamma_ramp</a></tt><tt class="py-op">(</tt><tt class="py-name">red</tt><tt class="py-op">,</tt><tt class="py-name">green</tt><tt class="py-op">,</tt><tt class="py-name">blue</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L990"></a><tt class="py-lineno"> 990</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">success_label</tt><tt class="py-op">.</tt><tt class="py-name">configure</tt><tt class="py-op">(</tt><tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Success"</tt><tt class="py-op">)</tt> </tt>
+<a name="L991"></a><tt class="py-lineno"> 991</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L992"></a><tt class="py-lineno"> 992</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">success_label</tt><tt class="py-op">.</tt><tt class="py-name">configure</tt><tt class="py-op">(</tt><tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Failed: Invalid gamma values?"</tt><tt class="py-op">)</tt> </tt>
+<a name="L993"></a><tt class="py-lineno"> 993</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt> <tt class="py-name">Exception</tt><tt class="py-op">,</tt><tt class="py-name">x</tt><tt class="py-op">:</tt> </tt>
+<a name="L994"></a><tt class="py-lineno"> 994</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">success_label</tt><tt class="py-op">.</tt><tt class="py-name">configure</tt><tt class="py-op">(</tt><tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Failed: %s: %s"</tt><tt class="py-op">%</tt><tt class="py-op">(</tt><tt class="py-name">x</tt><tt class="py-op">.</tt><tt class="py-name">__class__</tt><tt cla [...]
+<a name="L995"></a><tt class="py-lineno"> 995</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> </tt>
+</div></div><a name="L996"></a><tt class="py-lineno"> 996</tt>  <tt class="py-line"> </tt>
+<a name="ImageSequenceLauncher"></a><div id="ImageSequenceLauncher-def"><a name="L997"></a><tt class="py-lineno"> 997</tt> <a class="py-toggle" href="#" id="ImageSequenceLauncher-toggle" onclick="return toggle('ImageSequenceLauncher');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.PyroApps.EPhysGUI.ImageSequenceLauncher-class.html">ImageSequenceLauncher</a><tt class="py-op">(</tt><tt class="py-base-class">Tkinter</tt><tt class="py-op"> [...]
+</div><div id="ImageSequenceLauncher-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="ImageSequenceLauncher-expanded"><a name="ImageSequenceLauncher.__init__"></a><div id="ImageSequenceLauncher.__init__-def"><a name="L998"></a><tt class="py-lineno"> 998</tt> <a class="py-toggle" href="#" id="ImageSequenceLauncher.__init__-toggle" onclick="return toggle('ImageSequenceLauncher.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def [...]
+</div><div id="ImageSequenceLauncher.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ImageSequenceLauncher.__init__-expanded"><a name="L999"></a><tt class="py-lineno"> 999</tt>  <tt class="py-line">        <tt id="link-379" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-379', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Toplevel</tt><tt class="py-op">.</tt> [...]
+VisionEgg.Configuration.Config.__init__
+VisionEgg.Core.FixationSpot.__init__
+VisionEgg.Core.FrameTimer.__init__
+VisionEgg.Core.ModelView.__init__
+VisionEgg.Core.OrthographicProjection.__init__
+VisionEgg.Core.OrthographicProjectionNoZClip.__init__
+VisionEgg.Core.PerspectiveProjection.__init__
+VisionEgg.Core.Projection.__init__
+VisionEgg.Core.ProjectionBaseClass.__init__
+VisionEgg.Core.Screen.__init__
+VisionEgg.Core.SimplePerspectiveProjection.__init__
+VisionEgg.Core.Stimulus.__init__
+VisionEgg.Core.Viewport.__init__
+VisionEgg.Daq.Channel.__init__
+VisionEgg.Daq.DaqMode.__init__
+VisionEgg.Daq.Device.__init__
+VisionEgg.Daq.Functionality.__init__
+VisionEgg.Daq.SignalType.__init__
+VisionEgg.DaqKeyboard.KeyboardTriggerInController.__init__
+VisionEgg.DaqLPT.LPTChannel.__init__
+VisionEgg.DaqLPT.LPTDevice.__init__
+VisionEgg.DaqLPT.LPTTriggerInController.__init__
+VisionEgg.DaqLPT.LPTTriggerOutController.__init__
+VisionEgg.Deprecated.Message.__init__
+VisionEgg.Dots.DotArea2D.__init__
+VisionEgg.FlowControl.ConstantController.__init__
+VisionEgg.FlowControl.Controller.__init__
+VisionEgg.FlowControl.EncapsulatedController.__init__
+VisionEgg.FlowControl.EvalStringController.__init__
+VisionEgg.FlowControl.ExecStringController.__init__
+VisionEgg.FlowControl.FunctionController.__init__
+VisionEgg.FlowControl.Presentation.__init__
+VisionEgg.GLTrace.Wrapper.__init__
+VisionEgg.GUI.AppWindow.__init__
+VisionEgg.GUI.GetKeypressDialog.__init__
+VisionEgg.GUI.GraphicsConfigurationWindow.__init__
+VisionEgg.GUI.InfoFrame.__init__
+VisionEgg.GUI.ProgressBar.__init__
+VisionEgg.GUI.ToplevelDialog.__init__
+VisionEgg.Gratings.SinGrating2D.__init__
+VisionEgg.Gratings.SinGrating3D.__init__
+VisionEgg.MoreStimuli.Arrow.__init__
+VisionEgg.MoreStimuli.FilledCircle.__init__
+VisionEgg.MoreStimuli.Rectangle3D.__init__
+VisionEgg.MoreStimuli.Target2D.__init__
+VisionEgg.ParameterTypes.AnyOf.__init__
+VisionEgg.ParameterTypes.Instance.__init__
+VisionEgg.ParameterTypes.Sequence.__init__
+VisionEgg.ParameterTypes.SubClass.__init__
+VisionEgg.PyroApps.AST_ext.AST_Visitor.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalMetaParameters.__init__
+VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.__init__
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.__init__
+VisionEgg.PyroApps.DropinGUI.DropinMetaParameters.__init__
+VisionEgg.PyroApps.DropinServer.DropinMetaController.__init__
+VisionEgg.PyroApps.EPhysGUI.AppWindow.__init__
+VisionEgg.PyroApps.EPhysGUI.BarButton.__init__
+VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase.__init__
+VisionEgg.PyroApps.EPhysGUI.GammaFrame.__init__
+VisionEgg.PyroApps.EPhysGUI.ImageSequenceLauncher.__init__
+VisionEgg.PyroApps.EPhysGUI.Loop.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopContainedObject.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopParamDialog.__init__
+VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.__init__
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.__init__
+VisionEgg.PyroApps.EPhysServer.EPhysServer.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingMetaParameters.__init__
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.GridGUI.GridControlFrame.__init__
+VisionEgg.PyroApps.GridGUI.GridMetaParameters.__init__
+VisionEgg.PyroApps.GridServer.GridMetaController.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetMetaParameters.__init__
+VisionEgg.PyroApps.MouseTargetServer.MousePositionController.__init__
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetOrientationController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetPositionController.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.CallbackEntry.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionParameters.__init__
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingMetaParameters.__init__
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumMetaParameters.__init__
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.__init__
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.__init__
+VisionEgg.PyroApps.TargetGUI.TargetMetaParameters.__init__
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.__init__
+VisionEgg.PyroClient.PyroClient.__init__
+VisionEgg.PyroHelpers.PyroConstantController.__init__
+VisionEgg.PyroHelpers.PyroEncapsulatedController.__init__
+VisionEgg.PyroHelpers.PyroEvalStringController.__init__
+VisionEgg.PyroHelpers.PyroExecStringController.__init__
+VisionEgg.PyroHelpers.PyroListenController.__init__
+VisionEgg.PyroHelpers.PyroLocalDictController.__init__
+VisionEgg.PyroHelpers.PyroServer.__init__
+VisionEgg.QuickTime.MovieTexture.__init__
+VisionEgg.ResponseControl.KeyboardResponseController.__init__
+VisionEgg.ResponseControl.ResponseController.__init__
+VisionEgg.SphereMap.AzElGrid.__init__
+VisionEgg.SphereMap.SphereGrating.__init__
+VisionEgg.SphereMap.SphereMap.__init__
+VisionEgg.SphereMap.SphereWindow.__init__
+VisionEgg.TCPController.SocketListenController.__init__
+VisionEgg.TCPController.TCPController.__init__
+VisionEgg.TCPController.TCPServer.__init__
+VisionEgg.Text.BitmapText.__init__
+VisionEgg.Text.GlutTextBase.__init__
+VisionEgg.Text.StrokeText.__init__
+VisionEgg.Text.Text.__init__
+VisionEgg.Textures.FixationCross.__init__
+VisionEgg.Textures.Mask2D.__init__
+VisionEgg.Textures.SpinningDrum.__init__
+VisionEgg.Textures.Texture.__init__
+VisionEgg.Textures.TextureFromFile.__init__
+VisionEgg.Textures.TextureObject.__init__
+VisionEgg.Textures.TextureStimulusBaseClass.__init__
+VisionEgg.ThreeDeeMath.TransformMatrix.__init__
+VisionEgg.WrappedText.WrappedText.__init__
+VisionEgg.qtmovie.Movie.__init__
+VisionEgg.qtmovie.Rect.__init__" class="py-name" href="#" onclick="return doclink('link-380', '__init__', 'link-96');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt><tt class="py-name">master</tt><tt class="py-op">,</tt><tt class="py-op">**</tt><tt class="py-name">cnf</tt><tt class="py-op">)</tt> </tt>
+<a name="L1000"></a><tt class="py-lineno">1000</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">ephys_server</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L1001"></a><tt class="py-lineno">1001</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">"Must specify ephys_server"</tt><tt class="py-op">)</tt> </tt>
+<a name="L1002"></a><tt class="py-lineno">1002</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">ephys_server</tt> <tt class="py-op">=</tt> <tt class="py-name">ephys_server</tt> </tt>
+<a name="L1003"></a><tt class="py-lineno">1003</tt>  <tt class="py-line"> </tt>
+<a name="L1004"></a><tt class="py-lineno">1004</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">columnconfigure</tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">,</tt><tt class="py-name">weight</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="L1005"></a><tt class="py-lineno">1005</tt>  <tt class="py-line"> </tt>
+<a name="L1006"></a><tt class="py-lineno">1006</tt>  <tt class="py-line">        <tt class="py-name">row</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L1007"></a><tt class="py-lineno">1007</tt>  <tt class="py-line">        <tt id="link-381" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-381', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt><tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Frames per second"</tt><tt class="py- [...]
+<a name="L1008"></a><tt class="py-lineno">1008</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">fps_var</tt> <tt class="py-op">=</tt> <tt id="link-382" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-382', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">DoubleVar</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1009"></a><tt class="py-lineno">1009</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">fps_var</tt><tt class="py-op">.</tt><tt id="link-383" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-383', 'set', 'link-111');">set</a></tt><tt class="py-op">(</tt><tt class="py-number">12.0</tt><tt class="py-op">)</tt> </tt>
+<a name="L1010"></a><tt class="py-lineno">1010</tt>  <tt class="py-line">        <tt id="link-384" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-384', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Entry</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt><tt class="py-name">textvariable</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt [...]
+<a name="L1011"></a><tt class="py-lineno">1011</tt>  <tt class="py-line">        <tt class="py-name">row</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L1012"></a><tt class="py-lineno">1012</tt>  <tt class="py-line">        <tt id="link-385" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-385', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt><tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Filename base"</tt><tt class="py-op"> [...]
+<a name="L1013"></a><tt class="py-lineno">1013</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">filename_base</tt> <tt class="py-op">=</tt> <tt id="link-386" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-386', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">StringVar</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1014"></a><tt class="py-lineno">1014</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">filename_base</tt><tt class="py-op">.</tt><tt id="link-387" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-387', 'set', 'link-111');">set</a></tt><tt class="py-op">(</tt><tt class="py-string">"im"</tt><tt class="py-op">)</tt> </tt>
+<a name="L1015"></a><tt class="py-lineno">1015</tt>  <tt class="py-line">        <tt id="link-388" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-388', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Entry</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt><tt class="py-name">textvariable</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt [...]
+<a name="L1016"></a><tt class="py-lineno">1016</tt>  <tt class="py-line">        <tt class="py-name">row</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L1017"></a><tt class="py-lineno">1017</tt>  <tt class="py-line">        <tt id="link-389" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-389', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt><tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Filename suffix"</tt><tt class="py-op [...]
+<a name="L1018"></a><tt class="py-lineno">1018</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">filename_suffix</tt> <tt class="py-op">=</tt> <tt id="link-390" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-390', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">StringVar</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1019"></a><tt class="py-lineno">1019</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">filename_suffix</tt><tt class="py-op">.</tt><tt id="link-391" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-391', 'set', 'link-111');">set</a></tt><tt class="py-op">(</tt><tt class="py-string">".tif"</tt><tt class="py-op">)</tt> </tt>
+<a name="L1020"></a><tt class="py-lineno">1020</tt>  <tt class="py-line">        <tt id="link-392" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-392', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Entry</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt><tt class="py-name">textvariable</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt [...]
+<a name="L1021"></a><tt class="py-lineno">1021</tt>  <tt class="py-line">        <tt class="py-name">row</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L1022"></a><tt class="py-lineno">1022</tt>  <tt class="py-line">        <tt id="link-393" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-393', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt><tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Save directory on server"</tt><tt cla [...]
+<a name="L1023"></a><tt class="py-lineno">1023</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">server_save_dir</tt> <tt class="py-op">=</tt> <tt id="link-394" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-394', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">StringVar</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1024"></a><tt class="py-lineno">1024</tt>  <tt class="py-line">        <tt class="py-name">server_dir</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">ephys_server</tt><tt class="py-op">.</tt><tt id="link-395" class="py-name" targets="Method VisionEgg.PyroApps.EPhysServer.EPhysServer.get_cwd()=VisionEgg.PyroApps.EPhysServer.EPhysServer-class.html#get_cwd"><a title="VisionEgg.PyroApps.EPhysServer.EPhysServer.get_cwd" class="p [...]
+<a name="L1025"></a><tt class="py-lineno">1025</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">server_save_dir</tt><tt class="py-op">.</tt><tt id="link-396" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-396', 'set', 'link-111');">set</a></tt><tt class="py-op">(</tt><tt class="py-name">server_dir</tt><tt class="py-op">)</tt> </tt>
+<a name="L1026"></a><tt class="py-lineno">1026</tt>  <tt class="py-line">        <tt id="link-397" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-397', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Entry</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt><tt class="py-name">textvariable</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt [...]
+<a name="L1027"></a><tt class="py-lineno">1027</tt>  <tt class="py-line">        <tt class="py-name">row</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L1028"></a><tt class="py-lineno">1028</tt>  <tt class="py-line">        <tt id="link-398" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-398', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Button</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt><tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Save movie"</tt><tt class="py-op">,< [...]
+<a name="L1029"></a><tt class="py-lineno">1029</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">focus_set</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1030"></a><tt class="py-lineno">1030</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">grab_set</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="ImageSequenceLauncher.do_it"></a><div id="ImageSequenceLauncher.do_it-def"><a name="L1031"></a><tt class="py-lineno">1031</tt> <a class="py-toggle" href="#" id="ImageSequenceLauncher.do_it-toggle" onclick="return toggle('ImageSequenceLauncher.do_it');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.EPhysGUI.ImageSequenceLauncher-class.html#do_it">do_it</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt [...]
+</div><div id="ImageSequenceLauncher.do_it-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ImageSequenceLauncher.do_it-expanded"><a name="L1032"></a><tt class="py-lineno">1032</tt>  <tt class="py-line">        <tt class="py-name">fps</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">fps_var</tt><tt class="py-op">.</tt><tt id="link-400" class="py-name"><a title="VisionEgg.PyroClient.PyroClient.get" class="py [...]
+<a name="L1033"></a><tt class="py-lineno">1033</tt>  <tt class="py-line">        <tt class="py-name">filename_base</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">filename_base</tt><tt class="py-op">.</tt><tt id="link-401" class="py-name"><a title="VisionEgg.PyroClient.PyroClient.get" class="py-name" href="#" onclick="return doclink('link-401', 'get', 'link-185');">get</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1034"></a><tt class="py-lineno">1034</tt>  <tt class="py-line">        <tt class="py-name">filename_suffix</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">filename_suffix</tt><tt class="py-op">.</tt><tt id="link-402" class="py-name"><a title="VisionEgg.PyroClient.PyroClient.get" class="py-name" href="#" onclick="return doclink('link-402', 'get', 'link-185');">get</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1035"></a><tt class="py-lineno">1035</tt>  <tt class="py-line">        <tt class="py-name">server_save_dir</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">server_save_dir</tt><tt class="py-op">.</tt><tt id="link-403" class="py-name"><a title="VisionEgg.PyroClient.PyroClient.get" class="py-name" href="#" onclick="return doclink('link-403', 'get', 'link-185');">get</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1036"></a><tt class="py-lineno">1036</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">ephys_server</tt><tt class="py-op">.</tt><tt id="link-404" class="py-name" targets="Method VisionEgg.PyroApps.EPhysGUI.AppWindow.save_image_sequence()=VisionEgg.PyroApps.EPhysGUI.AppWindow-class.html#save_image_sequence,Method VisionEgg.PyroApps.EPhysServer.EPhysServer.save_image_sequence()=VisionEgg.PyroApps.EPhysServer.EPhysServer-cla [...]
+VisionEgg.PyroApps.EPhysServer.EPhysServer.save_image_sequence" class="py-name" href="#" onclick="return doclink('link-404', 'save_image_sequence', 'link-404');">save_image_sequence</a></tt><tt class="py-op">(</tt><tt class="py-name">fps</tt><tt class="py-op">=</tt><tt class="py-name">fps</tt><tt class="py-op">,</tt> </tt>
+<a name="L1037"></a><tt class="py-lineno">1037</tt>  <tt class="py-line">                                              <tt class="py-name">filename_base</tt><tt class="py-op">=</tt><tt class="py-name">filename_base</tt><tt class="py-op">,</tt> </tt>
+<a name="L1038"></a><tt class="py-lineno">1038</tt>  <tt class="py-line">                                              <tt class="py-name">filename_suffix</tt><tt class="py-op">=</tt><tt class="py-name">filename_suffix</tt><tt class="py-op">,</tt> </tt>
+<a name="L1039"></a><tt class="py-lineno">1039</tt>  <tt class="py-line">                                              <tt class="py-name">save_dir</tt><tt class="py-op">=</tt><tt class="py-name">server_save_dir</tt><tt class="py-op">)</tt> </tt>
+<a name="L1040"></a><tt class="py-lineno">1040</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-405" class="py-name"><a title="VisionEgg.GUI.ToplevelDialog.destroy
+VisionEgg.PyroApps.EPhysGUI.AppWindow.destroy
+VisionEgg.PyroApps.EPhysGUI.LoopParamDialog.destroy" class="py-name" href="#" onclick="return doclink('link-405', 'destroy', 'link-316');">destroy</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L1041"></a><tt class="py-lineno">1041</tt>  <tt class="py-line"> </tt>
+<a name="AppWindow"></a><div id="AppWindow-def"><a name="L1042"></a><tt class="py-lineno">1042</tt> <a class="py-toggle" href="#" id="AppWindow-toggle" onclick="return toggle('AppWindow');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.PyroApps.EPhysGUI.AppWindow-class.html">AppWindow</a><tt class="py-op">(</tt><tt class="py-base-class">Tkinter</tt><tt class="py-op">.</tt><tt class="py-base-class">Frame</tt><tt class="py-op">)</tt><tt c [...]
+</div><div id="AppWindow-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="AppWindow-expanded"><a name="AppWindow.__init__"></a><div id="AppWindow.__init__-def"><a name="L1043"></a><tt class="py-lineno">1043</tt> <a class="py-toggle" href="#" id="AppWindow.__init__-toggle" onclick="return toggle('AppWindow.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.EPhysGUI.AppWindow-class.html#__init__" [...]
+<a name="L1044"></a><tt class="py-lineno">1044</tt>  <tt class="py-line">                 <tt class="py-param">master</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
+<a name="L1045"></a><tt class="py-lineno">1045</tt>  <tt class="py-line">                 <tt class="py-param">client_list</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
+<a name="L1046"></a><tt class="py-lineno">1046</tt>  <tt class="py-line">                 <tt class="py-param">server_hostname</tt><tt class="py-op">=</tt><tt class="py-string">''</tt><tt class="py-op">,</tt> </tt>
+<a name="L1047"></a><tt class="py-lineno">1047</tt>  <tt class="py-line">                 <tt class="py-param">server_port</tt><tt class="py-op">=</tt><tt class="py-number">7766</tt><tt class="py-op">,</tt> </tt>
+<a name="L1048"></a><tt class="py-lineno">1048</tt>  <tt class="py-line">                 <tt class="py-op">**</tt><tt class="py-param">cnf</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="AppWindow.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="AppWindow.__init__-expanded"><a name="L1049"></a><tt class="py-lineno">1049</tt>  <tt class="py-line"> </tt>
+<a name="L1050"></a><tt class="py-lineno">1050</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt id="link-406" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-406', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">,</tt> <tt class="py-string">'_exception_hook_keeper'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1051"></a><tt class="py-lineno">1051</tt>  <tt class="py-line">            <tt class="py-comment"># Keep original exception handler</tt> </tt>
+<a name="L1052"></a><tt class="py-lineno">1052</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_orig_report_callback_exception</tt> <tt class="py-op">=</tt> <tt id="link-407" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-407', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Tk</tt><tt class="py-op">.</tt><t [...]
+<a name="L1053"></a><tt class="py-lineno">1053</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_tk</tt> <tt class="py-op">=</tt> <tt id="link-408" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-408', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Tk</tt> </tt>
+<a name="L1054"></a><tt class="py-lineno">1054</tt>  <tt class="py-line">            <tt class="py-comment"># Use Vision Egg exception handler</tt> </tt>
+<a name="L1055"></a><tt class="py-lineno">1055</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt id="link-409" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-409', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Tk</tt><tt class="py-op">.</tt><tt class="py-name">report_callback_exception</tt> <tt class="py-op">=</tt> <tt id="link-410" class="py-name"><a title="VisionEgg" class= [...]
+<a name="L1056"></a><tt class="py-lineno">1056</tt>  <tt class="py-line"> </tt>
+<a name="L1057"></a><tt class="py-lineno">1057</tt>  <tt class="py-line">        <tt class="py-comment"># Allow VisionEgg Tkinter exception window</tt> </tt>
+<a name="L1058"></a><tt class="py-lineno">1058</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt id="link-411" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-411', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-412" class="py-name"><a title="VisionEgg.config" class="py-name" href="#" onclick="return doclink('link-412', 'config', 'link-318');">config</a></tt><tt class="py-op">.</tt><tt class="py- [...]
+<a name="L1059"></a><tt class="py-lineno">1059</tt>  <tt class="py-line"> </tt>
+<a name="L1060"></a><tt class="py-lineno">1060</tt>  <tt class="py-line">        <tt class="py-comment"># create myself</tt> </tt>
+<a name="L1061"></a><tt class="py-lineno">1061</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt id="link-413" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-413', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Frame</tt><tt class="py-op">.</tt><tt id="link-414" class="py-name"><a title="VisionEgg.ClassWithParameters.__init__
+VisionEgg.Configuration.Config.__init__
+VisionEgg.Core.FixationSpot.__init__
+VisionEgg.Core.FrameTimer.__init__
+VisionEgg.Core.ModelView.__init__
+VisionEgg.Core.OrthographicProjection.__init__
+VisionEgg.Core.OrthographicProjectionNoZClip.__init__
+VisionEgg.Core.PerspectiveProjection.__init__
+VisionEgg.Core.Projection.__init__
+VisionEgg.Core.ProjectionBaseClass.__init__
+VisionEgg.Core.Screen.__init__
+VisionEgg.Core.SimplePerspectiveProjection.__init__
+VisionEgg.Core.Stimulus.__init__
+VisionEgg.Core.Viewport.__init__
+VisionEgg.Daq.Channel.__init__
+VisionEgg.Daq.DaqMode.__init__
+VisionEgg.Daq.Device.__init__
+VisionEgg.Daq.Functionality.__init__
+VisionEgg.Daq.SignalType.__init__
+VisionEgg.DaqKeyboard.KeyboardTriggerInController.__init__
+VisionEgg.DaqLPT.LPTChannel.__init__
+VisionEgg.DaqLPT.LPTDevice.__init__
+VisionEgg.DaqLPT.LPTTriggerInController.__init__
+VisionEgg.DaqLPT.LPTTriggerOutController.__init__
+VisionEgg.Deprecated.Message.__init__
+VisionEgg.Dots.DotArea2D.__init__
+VisionEgg.FlowControl.ConstantController.__init__
+VisionEgg.FlowControl.Controller.__init__
+VisionEgg.FlowControl.EncapsulatedController.__init__
+VisionEgg.FlowControl.EvalStringController.__init__
+VisionEgg.FlowControl.ExecStringController.__init__
+VisionEgg.FlowControl.FunctionController.__init__
+VisionEgg.FlowControl.Presentation.__init__
+VisionEgg.GLTrace.Wrapper.__init__
+VisionEgg.GUI.AppWindow.__init__
+VisionEgg.GUI.GetKeypressDialog.__init__
+VisionEgg.GUI.GraphicsConfigurationWindow.__init__
+VisionEgg.GUI.InfoFrame.__init__
+VisionEgg.GUI.ProgressBar.__init__
+VisionEgg.GUI.ToplevelDialog.__init__
+VisionEgg.Gratings.SinGrating2D.__init__
+VisionEgg.Gratings.SinGrating3D.__init__
+VisionEgg.MoreStimuli.Arrow.__init__
+VisionEgg.MoreStimuli.FilledCircle.__init__
+VisionEgg.MoreStimuli.Rectangle3D.__init__
+VisionEgg.MoreStimuli.Target2D.__init__
+VisionEgg.ParameterTypes.AnyOf.__init__
+VisionEgg.ParameterTypes.Instance.__init__
+VisionEgg.ParameterTypes.Sequence.__init__
+VisionEgg.ParameterTypes.SubClass.__init__
+VisionEgg.PyroApps.AST_ext.AST_Visitor.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalMetaParameters.__init__
+VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.__init__
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.__init__
+VisionEgg.PyroApps.DropinGUI.DropinMetaParameters.__init__
+VisionEgg.PyroApps.DropinServer.DropinMetaController.__init__
+VisionEgg.PyroApps.EPhysGUI.AppWindow.__init__
+VisionEgg.PyroApps.EPhysGUI.BarButton.__init__
+VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase.__init__
+VisionEgg.PyroApps.EPhysGUI.GammaFrame.__init__
+VisionEgg.PyroApps.EPhysGUI.ImageSequenceLauncher.__init__
+VisionEgg.PyroApps.EPhysGUI.Loop.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopContainedObject.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopParamDialog.__init__
+VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.__init__
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.__init__
+VisionEgg.PyroApps.EPhysServer.EPhysServer.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingMetaParameters.__init__
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.GridGUI.GridControlFrame.__init__
+VisionEgg.PyroApps.GridGUI.GridMetaParameters.__init__
+VisionEgg.PyroApps.GridServer.GridMetaController.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetMetaParameters.__init__
+VisionEgg.PyroApps.MouseTargetServer.MousePositionController.__init__
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetOrientationController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetPositionController.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.CallbackEntry.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionParameters.__init__
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingMetaParameters.__init__
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumMetaParameters.__init__
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.__init__
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.__init__
+VisionEgg.PyroApps.TargetGUI.TargetMetaParameters.__init__
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.__init__
+VisionEgg.PyroClient.PyroClient.__init__
+VisionEgg.PyroHelpers.PyroConstantController.__init__
+VisionEgg.PyroHelpers.PyroEncapsulatedController.__init__
+VisionEgg.PyroHelpers.PyroEvalStringController.__init__
+VisionEgg.PyroHelpers.PyroExecStringController.__init__
+VisionEgg.PyroHelpers.PyroListenController.__init__
+VisionEgg.PyroHelpers.PyroLocalDictController.__init__
+VisionEgg.PyroHelpers.PyroServer.__init__
+VisionEgg.QuickTime.MovieTexture.__init__
+VisionEgg.ResponseControl.KeyboardResponseController.__init__
+VisionEgg.ResponseControl.ResponseController.__init__
+VisionEgg.SphereMap.AzElGrid.__init__
+VisionEgg.SphereMap.SphereGrating.__init__
+VisionEgg.SphereMap.SphereMap.__init__
+VisionEgg.SphereMap.SphereWindow.__init__
+VisionEgg.TCPController.SocketListenController.__init__
+VisionEgg.TCPController.TCPController.__init__
+VisionEgg.TCPController.TCPServer.__init__
+VisionEgg.Text.BitmapText.__init__
+VisionEgg.Text.GlutTextBase.__init__
+VisionEgg.Text.StrokeText.__init__
+VisionEgg.Text.Text.__init__
+VisionEgg.Textures.FixationCross.__init__
+VisionEgg.Textures.Mask2D.__init__
+VisionEgg.Textures.SpinningDrum.__init__
+VisionEgg.Textures.Texture.__init__
+VisionEgg.Textures.TextureFromFile.__init__
+VisionEgg.Textures.TextureObject.__init__
+VisionEgg.Textures.TextureStimulusBaseClass.__init__
+VisionEgg.ThreeDeeMath.TransformMatrix.__init__
+VisionEgg.WrappedText.WrappedText.__init__
+VisionEgg.qtmovie.Movie.__init__
+VisionEgg.qtmovie.Rect.__init__" class="py-name" href="#" onclick="return doclink('link-414', '__init__', 'link-96');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt><tt class="py-name">master</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-name">cnf</tt><tt class="py-op">)</tt> </tt>
+<a name="L1062"></a><tt class="py-lineno">1062</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">winfo_toplevel</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-415" class="py-name"><a title="VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.title
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.title
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.title
+VisionEgg.PyroApps.GridGUI.GridControlFrame.title
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.title
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.title
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.title
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.title" class="py-name" href="#" onclick="return doclink('link-415', 'title', 'link-102');">title</a></tt><tt class="py-op">(</tt><tt class="py-string">"EPhysGUI - Vision Egg"</tt><tt class="py-op">)</tt> </tt>
+<a name="L1063"></a><tt class="py-lineno">1063</tt>  <tt class="py-line"> </tt>
+<a name="L1064"></a><tt class="py-lineno">1064</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-416" class="py-name"><a title="VisionEgg.PyroApps.EPhysGUI.client_list" class="py-name" href="#" onclick="return doclink('link-416', 'client_list', 'link-52');">client_list</a></tt> <tt class="py-op">=</tt> <tt id="link-417" class="py-name"><a title="VisionEgg.PyroApps.EPhysGUI.client_list" class="py-name" href="#" onclick="return doclink('lin [...]
+<a name="L1065"></a><tt class="py-lineno">1065</tt>  <tt class="py-line"> </tt>
+<a name="L1066"></a><tt class="py-lineno">1066</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">server_hostname</tt> <tt class="py-op">=</tt> <tt class="py-name">server_hostname</tt> </tt>
+<a name="L1067"></a><tt class="py-lineno">1067</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">server_port</tt> <tt class="py-op">=</tt> <tt class="py-name">server_port</tt> </tt>
+<a name="L1068"></a><tt class="py-lineno">1068</tt>  <tt class="py-line"> </tt>
+<a name="L1069"></a><tt class="py-lineno">1069</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">pyro_client</tt> <tt class="py-op">=</tt> <tt id="link-418" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-418', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-419" class="py-name"><a title="VisionEgg.PyroClient
+VisionEgg.PyroClient.PyroClient" class="py-name" href="#" onclick="return doclink('link-419', 'PyroClient', 'link-12');">PyroClient</a></tt><tt class="py-op">.</tt><tt id="link-420" class="py-name"><a title="VisionEgg.PyroClient
+VisionEgg.PyroClient.PyroClient" class="py-name" href="#" onclick="return doclink('link-420', 'PyroClient', 'link-12');">PyroClient</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">server_hostname</tt><tt class="py-op">,</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">server_port</tt><tt class="py-op">)</tt> </tt>
+<a name="L1070"></a><tt class="py-lineno">1070</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">ephys_server</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">pyro_client</tt><tt class="py-op">.</tt><tt id="link-421" class="py-name"><a title="VisionEgg.PyroClient.PyroClient.get" class="py-name" href="#" onclick="return doclink('link-421', 'get', 'link-185');">get</a></tt><tt cla [...]
+<a name="L1071"></a><tt class="py-lineno">1071</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">ephys_server</tt><tt class="py-op">.</tt><tt id="link-422" class="py-name" targets="Method VisionEgg.PyroApps.EPhysServer.EPhysServer.first_connection()=VisionEgg.PyroApps.EPhysServer.EPhysServer-class.html#first_connection"><a title="VisionEgg.PyroApps.EPhysServer.EPhysServer.first_connection" class="py-name" href="#" onclick="return d [...]
+<a name="L1072"></a><tt class="py-lineno">1072</tt>  <tt class="py-line"> </tt>
+<a name="L1073"></a><tt class="py-lineno">1073</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stim_onset_cal_tk_var</tt> <tt class="py-op">=</tt> <tt id="link-423" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-423', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">BooleanVar</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1074"></a><tt class="py-lineno">1074</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stim_onset_cal_tk_var</tt><tt class="py-op">.</tt><tt id="link-424" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-424', 'set', 'link-111');">set</a></tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">)</tt> </tt>
+<a name="L1075"></a><tt class="py-lineno">1075</tt>  <tt class="py-line"> </tt>
+<a name="L1076"></a><tt class="py-lineno">1076</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">autosave_dir</tt> <tt class="py-op">=</tt> <tt id="link-425" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-425', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">StringVar</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1077"></a><tt class="py-lineno">1077</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">autosave_dir</tt><tt class="py-op">.</tt><tt id="link-426" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-426', 'set', 'link-111');">set</a></tt><tt class="py-op">(</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">path</tt><tt class="py-op">. [...]
+<a name="L1078"></a><tt class="py-lineno">1078</tt>  <tt class="py-line"> </tt>
+<a name="L1079"></a><tt class="py-lineno">1079</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">autosave_basename</tt> <tt class="py-op">=</tt> <tt id="link-427" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-427', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">StringVar</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1080"></a><tt class="py-lineno">1080</tt>  <tt class="py-line"> </tt>
+<a name="L1081"></a><tt class="py-lineno">1081</tt>  <tt class="py-line">        <tt class="py-comment"># create menu bar</tt> </tt>
+<a name="L1082"></a><tt class="py-lineno">1082</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">bar</tt> <tt class="py-op">=</tt> <tt id="link-428" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-428', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Menu</tt><tt class="py-op">(</tt><tt class="py-name">tearoff</tt> [...]
+<a name="L1083"></a><tt class="py-lineno">1083</tt>  <tt class="py-line">        <tt class="py-name">top</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">winfo_toplevel</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1084"></a><tt class="py-lineno">1084</tt>  <tt class="py-line">        <tt class="py-name">top</tt><tt class="py-op">.</tt><tt class="py-name">configure</tt><tt class="py-op">(</tt><tt class="py-name">menu</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">bar</tt><tt class="py-op">)</tt> </tt>
+<a name="L1085"></a><tt class="py-lineno">1085</tt>  <tt class="py-line"> </tt>
+<a name="L1086"></a><tt class="py-lineno">1086</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">bar</tt><tt class="py-op">.</tt><tt class="py-name">file_menu</tt> <tt class="py-op">=</tt> <tt id="link-429" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-429', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Menu</tt><tt class="py-op">(</tt><t [...]
+<a name="L1087"></a><tt class="py-lineno">1087</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">bar</tt><tt class="py-op">.</tt><tt class="py-name">add_cascade</tt><tt class="py-op">(</tt><tt class="py-name">label</tt><tt class="py-op">=</tt><tt class="py-string">"File"</tt><tt class="py-op">,</tt><tt class="py-name">menu</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">bar</tt>< [...]
+<a name="L1088"></a><tt class="py-lineno">1088</tt>  <tt class="py-line"> </tt>
+<a name="L1089"></a><tt class="py-lineno">1089</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">bar</tt><tt class="py-op">.</tt><tt class="py-name">file_menu</tt><tt class="py-op">.</tt><tt class="py-name">add_command</tt><tt class="py-op">(</tt><tt class="py-name">label</tt><tt class="py-op">=</tt><tt class="py-string">'Save image sequence...'</tt><tt class="py-op">,</tt> <tt class="py-name">command</tt><tt class="py-op">=</tt><t [...]
+VisionEgg.PyroApps.EPhysServer.EPhysServer.save_image_sequence" class="py-name" href="#" onclick="return doclink('link-430', 'save_image_sequence', 'link-404');">save_image_sequence</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L1090"></a><tt class="py-lineno">1090</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">bar</tt><tt class="py-op">.</tt><tt class="py-name">file_menu</tt><tt class="py-op">.</tt><tt class="py-name">add_command</tt><tt class="py-op">(</tt><tt class="py-name">label</tt><tt class="py-op">=</tt><tt class="py-string">'Save configuration file...'</tt><tt class="py-op">,</tt> <tt class="py-name">command</tt><tt class="py-op">=</t [...]
+<a name="L1091"></a><tt class="py-lineno">1091</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">bar</tt><tt class="py-op">.</tt><tt class="py-name">file_menu</tt><tt class="py-op">.</tt><tt class="py-name">add_command</tt><tt class="py-op">(</tt><tt class="py-name">label</tt><tt class="py-op">=</tt><tt class="py-string">'Load configuration file...'</tt><tt class="py-op">,</tt> <tt class="py-name">command</tt><tt class="py-op">=</t [...]
+<a name="L1092"></a><tt class="py-lineno">1092</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">bar</tt><tt class="py-op">.</tt><tt class="py-name">file_menu</tt><tt class="py-op">.</tt><tt class="py-name">add_command</tt><tt class="py-op">(</tt><tt class="py-name">label</tt><tt class="py-op">=</tt><tt class="py-string">'Load auto-saved .py parameter file...'</tt><tt class="py-op">,</tt> <tt class="py-name">command</tt><tt class=" [...]
+<a name="L1093"></a><tt class="py-lineno">1093</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">bar</tt><tt class="py-op">.</tt><tt class="py-name">file_menu</tt><tt class="py-op">.</tt><tt class="py-name">add_separator</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1094"></a><tt class="py-lineno">1094</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">bar</tt><tt class="py-op">.</tt><tt class="py-name">file_menu</tt><tt class="py-op">.</tt><tt class="py-name">add_command</tt><tt class="py-op">(</tt><tt class="py-name">label</tt><tt class="py-op">=</tt><tt class="py-string">'Load Vision Egg script...'</tt><tt class="py-op">,</tt> <tt class="py-name">command</tt><tt class="py-op">=</tt [...]
+<a name="L1095"></a><tt class="py-lineno">1095</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">bar</tt><tt class="py-op">.</tt><tt class="py-name">file_menu</tt><tt class="py-op">.</tt><tt class="py-name">add_separator</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1096"></a><tt class="py-lineno">1096</tt>  <tt class="py-line"> </tt>
+<a name="L1097"></a><tt class="py-lineno">1097</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">quit_server_too</tt> <tt class="py-op">=</tt> <tt id="link-435" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-435', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">BooleanVar</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1098"></a><tt class="py-lineno">1098</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">quit_server_too</tt><tt class="py-op">.</tt><tt id="link-436" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-436', 'set', 'link-111');">set</a></tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="L1099"></a><tt class="py-lineno">1099</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">bar</tt><tt class="py-op">.</tt><tt class="py-name">file_menu</tt><tt class="py-op">.</tt><tt class="py-name">add_checkbutton</tt><tt class="py-op">(</tt><tt class="py-name">label</tt><tt class="py-op">=</tt><tt class="py-string">'Quit server too'</tt><tt class="py-op">,</tt> </tt>
+<a name="L1100"></a><tt class="py-lineno">1100</tt>  <tt class="py-line">                                           <tt class="py-name">variable</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">quit_server_too</tt><tt class="py-op">)</tt> </tt>
+<a name="L1101"></a><tt class="py-lineno">1101</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">bar</tt><tt class="py-op">.</tt><tt class="py-name">file_menu</tt><tt class="py-op">.</tt><tt class="py-name">add_command</tt><tt class="py-op">(</tt><tt class="py-name">label</tt><tt class="py-op">=</tt><tt class="py-string">'Quit'</tt><tt class="py-op">,</tt> </tt>
+<a name="L1102"></a><tt class="py-lineno">1102</tt>  <tt class="py-line">                                       <tt class="py-name">command</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-437" class="py-name"><a title="VisionEgg.PyroApps.EPhysGUI.AppWindow.quit" class="py-name" href="#" onclick="return doclink('link-437', 'quit', 'link-335');">quit</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L1103"></a><tt class="py-lineno">1103</tt>  <tt class="py-line">                                       <tt class="py-op">)</tt> </tt>
+<a name="L1104"></a><tt class="py-lineno">1104</tt>  <tt class="py-line"> </tt>
+<a name="L1105"></a><tt class="py-lineno">1105</tt>  <tt class="py-line">        <tt class="py-name">stimkey</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">ephys_server</tt><tt class="py-op">.</tt><tt id="link-438" class="py-name" targets="Method VisionEgg.PyroApps.EPhysServer.EPhysServer.get_stimkey()=VisionEgg.PyroApps.EPhysServer.EPhysServer-class.html#get_stimkey"><a title="VisionEgg.PyroApps.EPhysServer.EPhysServer.get_stimkey" [...]
+<a name="L1106"></a><tt class="py-lineno">1106</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stimulus_tk_var</tt> <tt class="py-op">=</tt> <tt id="link-439" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-439', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">StringVar</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1107"></a><tt class="py-lineno">1107</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stimulus_tk_var</tt><tt class="py-op">.</tt><tt id="link-440" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-440', 'set', 'link-111');">set</a></tt><tt class="py-op">(</tt> <tt class="py-name">stimkey</tt> <tt class="py-op">)</tt> </tt>
+<a name="L1108"></a><tt class="py-lineno">1108</tt>  <tt class="py-line"> </tt>
+<a name="L1109"></a><tt class="py-lineno">1109</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">bar</tt><tt class="py-op">.</tt><tt class="py-name">stimuli_menu</tt> <tt class="py-op">=</tt> <tt id="link-441" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-441', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Menu</tt><tt class="py-op">(</tt [...]
+<a name="L1110"></a><tt class="py-lineno">1110</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">bar</tt><tt class="py-op">.</tt><tt class="py-name">add_cascade</tt><tt class="py-op">(</tt><tt class="py-name">label</tt><tt class="py-op">=</tt><tt class="py-string">"Stimuli"</tt><tt class="py-op">,</tt><tt class="py-name">menu</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">bar</t [...]
+<a name="L1111"></a><tt class="py-lineno">1111</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">maybe_stimkey</tt><tt class="py-op">,</tt> <tt class="py-name">maybe_control_frame</tt><tt class="py-op">,</tt> <tt class="py-name">maybe_title</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-442" class="py-name"><a title="VisionEgg.PyroApps.EPhysGUI.client_list" class="py-name" href="#" onclick="return  [...]
+<a name="L1112"></a><tt class="py-lineno">1112</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">maybe_title</tt> <tt class="py-op">!=</tt> <tt class="py-string">"Vision Egg Script"</tt><tt class="py-op">:</tt> </tt>
+<a name="L1113"></a><tt class="py-lineno">1113</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">bar</tt><tt class="py-op">.</tt><tt class="py-name">stimuli_menu</tt><tt class="py-op">.</tt><tt class="py-name">add_radiobutton</tt><tt class="py-op">(</tt><tt class="py-name">label</tt><tt class="py-op">=</tt><tt class="py-name">maybe_title</tt><tt class="py-op">,</tt> </tt>
+<a name="L1114"></a><tt class="py-lineno">1114</tt>  <tt class="py-line">                                                      <tt class="py-name">command</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-443" class="py-name" targets="Method VisionEgg.PyroApps.EPhysGUI.AppWindow.change_stimulus()=VisionEgg.PyroApps.EPhysGUI.AppWindow-class.html#change_stimulus"><a title="VisionEgg.PyroApps.EPhysGUI.AppWindow.change_stimulus" class="py-name" hre [...]
+<a name="L1115"></a><tt class="py-lineno">1115</tt>  <tt class="py-line">                                                      <tt class="py-name">variable</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stimulus_tk_var</tt><tt class="py-op">,</tt> </tt>
+<a name="L1116"></a><tt class="py-lineno">1116</tt>  <tt class="py-line">                                                      <tt class="py-name">value</tt><tt class="py-op">=</tt><tt class="py-name">maybe_stimkey</tt><tt class="py-op">)</tt> </tt>
+<a name="L1117"></a><tt class="py-lineno">1117</tt>  <tt class="py-line"> </tt>
+<a name="L1118"></a><tt class="py-lineno">1118</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">bar</tt><tt class="py-op">.</tt><tt class="py-name">calibration_menu</tt> <tt class="py-op">=</tt> <tt id="link-444" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-444', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Menu</tt><tt class="py-op">( [...]
+<a name="L1119"></a><tt class="py-lineno">1119</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">bar</tt><tt class="py-op">.</tt><tt class="py-name">add_cascade</tt><tt class="py-op">(</tt><tt class="py-name">label</tt><tt class="py-op">=</tt><tt class="py-string">"Configure/Calibrate"</tt><tt class="py-op">,</tt> </tt>
+<a name="L1120"></a><tt class="py-lineno">1120</tt>  <tt class="py-line">                             <tt class="py-name">menu</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">bar</tt><tt class="py-op">.</tt><tt class="py-name">calibration_menu</tt><tt class="py-op">)</tt> </tt>
+<a name="L1121"></a><tt class="py-lineno">1121</tt>  <tt class="py-line"> </tt>
+<a name="L1122"></a><tt class="py-lineno">1122</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">bar</tt><tt class="py-op">.</tt><tt class="py-name">calibration_menu</tt><tt class="py-op">.</tt><tt class="py-name">add_command</tt><tt class="py-op">(</tt><tt class="py-name">label</tt><tt class="py-op">=</tt><tt class="py-string">'3D Perspective...'</tt><tt class="py-op">,</tt> <tt class="py-name">command</tt><tt class="py-op">=</tt> [...]
+<a name="L1123"></a><tt class="py-lineno">1123</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">bar</tt><tt class="py-op">.</tt><tt class="py-name">calibration_menu</tt><tt class="py-op">.</tt><tt class="py-name">add_command</tt><tt class="py-op">(</tt><tt class="py-name">label</tt><tt class="py-op">=</tt><tt class="py-string">'Stimulus onset timing...'</tt><tt class="py-op">,</tt> <tt class="py-name">command</tt><tt class="py-op" [...]
+<a name="L1124"></a><tt class="py-lineno">1124</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">bar</tt><tt class="py-op">.</tt><tt class="py-name">calibration_menu</tt><tt class="py-op">.</tt><tt class="py-name">add_command</tt><tt class="py-op">(</tt><tt class="py-name">label</tt><tt class="py-op">=</tt><tt class="py-string">'Load gamma table...'</tt><tt class="py-op">,</tt> <tt class="py-name">command</tt><tt class="py-op">=</t [...]
+<a name="L1125"></a><tt class="py-lineno">1125</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">notify_on_dropped_frames</tt> <tt class="py-op">=</tt> <tt id="link-448" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-448', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">BooleanVar</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1126"></a><tt class="py-lineno">1126</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">notify_on_dropped_frames</tt><tt class="py-op">.</tt><tt id="link-449" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-449', 'set', 'link-111');">set</a></tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="L1127"></a><tt class="py-lineno">1127</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">bar</tt><tt class="py-op">.</tt><tt class="py-name">calibration_menu</tt><tt class="py-op">.</tt><tt class="py-name">add_checkbutton</tt><tt class="py-op">(</tt><tt class="py-name">label</tt><tt class="py-op">=</tt><tt class="py-string">'Warn on frame skip'</tt><tt class="py-op">,</tt> </tt>
+<a name="L1128"></a><tt class="py-lineno">1128</tt>  <tt class="py-line">                                                  <tt class="py-name">variable</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">notify_on_dropped_frames</tt><tt class="py-op">)</tt> </tt>
+<a name="L1129"></a><tt class="py-lineno">1129</tt>  <tt class="py-line"> </tt>
+<a name="L1130"></a><tt class="py-lineno">1130</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">override_t_abs_sec</tt> <tt class="py-op">=</tt> <tt id="link-450" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-450', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">StringVar</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-c [...]
+<a name="L1131"></a><tt class="py-lineno">1131</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">override_t_abs_sec</tt><tt class="py-op">.</tt><tt id="link-451" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-451', 'set', 'link-111');">set</a></tt><tt class="py-op">(</tt><tt class="py-string">"0.0"</tt><tt class="py-op">)</tt> </tt>
+<a name="L1132"></a><tt class="py-lineno">1132</tt>  <tt class="py-line"> </tt>
+<a name="L1133"></a><tt class="py-lineno">1133</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">override_t_abs_on</tt> <tt class="py-op">=</tt> <tt id="link-452" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-452', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">BooleanVar</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1134"></a><tt class="py-lineno">1134</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">override_t_abs_on</tt><tt class="py-op">.</tt><tt id="link-453" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-453', 'set', 'link-111');">set</a></tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">)</tt> </tt>
+<a name="L1135"></a><tt class="py-lineno">1135</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">bar</tt><tt class="py-op">.</tt><tt class="py-name">calibration_menu</tt><tt class="py-op">.</tt><tt class="py-name">add_checkbutton</tt><tt class="py-op">(</tt><tt class="py-name">label</tt><tt class="py-op">=</tt><tt class="py-string">'Override server absolute time (CAUTION)'</tt><tt class="py-op">,</tt> </tt>
+<a name="L1136"></a><tt class="py-lineno">1136</tt>  <tt class="py-line">                                                  <tt class="py-name">variable</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">override_t_abs_on</tt><tt class="py-op">)</tt> </tt>
+<a name="L1137"></a><tt class="py-lineno">1137</tt>  <tt class="py-line"> </tt>
+<a name="L1138"></a><tt class="py-lineno">1138</tt>  <tt class="py-line">        <tt class="py-name">row</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L1139"></a><tt class="py-lineno">1139</tt>  <tt class="py-line"> </tt>
+<a name="L1140"></a><tt class="py-lineno">1140</tt>  <tt class="py-line">        <tt class="py-comment"># options for self.stim_frame in grid layout manager</tt> </tt>
+<a name="L1141"></a><tt class="py-lineno">1141</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stim_frame_cnf</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-string">'row'</tt><tt class="py-op">:</tt><tt class="py-name">row</tt><tt class="py-op">,</tt> </tt>
+<a name="L1142"></a><tt class="py-lineno">1142</tt>  <tt class="py-line">                               <tt class="py-string">'column'</tt><tt class="py-op">:</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> </tt>
+<a name="L1143"></a><tt class="py-lineno">1143</tt>  <tt class="py-line">                               <tt class="py-string">'columnspan'</tt><tt class="py-op">:</tt><tt class="py-number">2</tt><tt class="py-op">,</tt> </tt>
+<a name="L1144"></a><tt class="py-lineno">1144</tt>  <tt class="py-line">                               <tt class="py-string">'sticky'</tt><tt class="py-op">:</tt><tt class="py-string">'nwes'</tt><tt class="py-op">}</tt> </tt>
+<a name="L1145"></a><tt class="py-lineno">1145</tt>  <tt class="py-line"> </tt>
+<a name="L1146"></a><tt class="py-lineno">1146</tt>  <tt class="py-line">        <tt class="py-name">row</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L1147"></a><tt class="py-lineno">1147</tt>  <tt class="py-line">        <tt id="link-454" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-454', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> </tt>
+<a name="L1148"></a><tt class="py-lineno">1148</tt>  <tt class="py-line">                      <tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Sequence information"</tt><tt class="py-op">,</tt> </tt>
+<a name="L1149"></a><tt class="py-lineno">1149</tt>  <tt class="py-line">                      <tt class="py-name">font</tt><tt class="py-op">=</tt><tt class="py-op">(</tt><tt class="py-string">"Helvetica"</tt><tt class="py-op">,</tt><tt class="py-number">12</tt><tt class="py-op">,</tt><tt class="py-string">"bold"</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">= [...]
+<a name="L1150"></a><tt class="py-lineno">1150</tt>  <tt class="py-line">        <tt class="py-name">row</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L1151"></a><tt class="py-lineno">1151</tt>  <tt class="py-line">        <tt class="py-comment"># options for self.loop_frame in grid layout manager</tt> </tt>
+<a name="L1152"></a><tt class="py-lineno">1152</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">loop_frame_cnf</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-string">'row'</tt><tt class="py-op">:</tt><tt class="py-name">row</tt><tt class="py-op">,</tt> </tt>
+<a name="L1153"></a><tt class="py-lineno">1153</tt>  <tt class="py-line">                               <tt class="py-string">'column'</tt><tt class="py-op">:</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> </tt>
+<a name="L1154"></a><tt class="py-lineno">1154</tt>  <tt class="py-line">                               <tt class="py-string">'sticky'</tt><tt class="py-op">:</tt><tt class="py-string">'nwes'</tt><tt class="py-op">}</tt> </tt>
+<a name="L1155"></a><tt class="py-lineno">1155</tt>  <tt class="py-line"> </tt>
+<a name="L1156"></a><tt class="py-lineno">1156</tt>  <tt class="py-line">        <tt class="py-name">row</tt> <tt class="py-op">-=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L1157"></a><tt class="py-lineno">1157</tt>  <tt class="py-line">        <tt id="link-455" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-455', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> </tt>
+<a name="L1158"></a><tt class="py-lineno">1158</tt>  <tt class="py-line">                      <tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Parameter Save Options"</tt><tt class="py-op">,</tt> </tt>
+<a name="L1159"></a><tt class="py-lineno">1159</tt>  <tt class="py-line">                      <tt class="py-name">font</tt><tt class="py-op">=</tt><tt class="py-op">(</tt><tt class="py-string">"Helvetica"</tt><tt class="py-op">,</tt><tt class="py-number">12</tt><tt class="py-op">,</tt><tt class="py-string">"bold"</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">= [...]
+<a name="L1160"></a><tt class="py-lineno">1160</tt>  <tt class="py-line">        <tt class="py-name">row</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L1161"></a><tt class="py-lineno">1161</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">auto_save_frame</tt> <tt class="py-op">=</tt> <tt id="link-456" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-456', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Frame</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op"> [...]
+<a name="L1162"></a><tt class="py-lineno">1162</tt>  <tt class="py-line">        <tt class="py-name">asf</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">auto_save_frame</tt> <tt class="py-comment"># shorthand</tt> </tt>
+<a name="L1163"></a><tt class="py-lineno">1163</tt>  <tt class="py-line">        <tt class="py-name">asf</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-name">row</tt><tt class="py-op">,</tt><tt class="py-name">column</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py-op">,</tt><tt class="py-name">sticky</tt><tt class="py-op">=</tt><tt class="py-string">"nwes"</tt><tt cla [...]
+<a name="L1164"></a><tt class="py-lineno">1164</tt>  <tt class="py-line">        <tt class="py-name">asf</tt><tt class="py-op">.</tt><tt class="py-name">columnconfigure</tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">,</tt><tt class="py-name">weight</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="L1165"></a><tt class="py-lineno">1165</tt>  <tt class="py-line"> </tt>
+<a name="L1166"></a><tt class="py-lineno">1166</tt>  <tt class="py-line">        <tt class="py-name">asf</tt><tt class="py-op">.</tt><tt class="py-name">grid_row</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L1167"></a><tt class="py-lineno">1167</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">autosave</tt> <tt class="py-op">=</tt> <tt id="link-457" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-457', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">BooleanVar</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1168"></a><tt class="py-lineno">1168</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">autosave</tt><tt class="py-op">.</tt><tt id="link-458" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-458', 'set', 'link-111');">set</a></tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="L1169"></a><tt class="py-lineno">1169</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">auto_save_button</tt> <tt class="py-op">=</tt> <tt id="link-459" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-459', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Checkbutton</tt><tt class="py-op">(</tt><tt class="py-name">asf</tt><tt class="p [...]
+<a name="L1170"></a><tt class="py-lineno">1170</tt>  <tt class="py-line">                                                    <tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Auto save trial parameters"</tt><tt class="py-op">,</tt> </tt>
+<a name="L1171"></a><tt class="py-lineno">1171</tt>  <tt class="py-line">                                                    <tt class="py-name">variable</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">autosave</tt><tt class="py-op">)</tt> </tt>
+<a name="L1172"></a><tt class="py-lineno">1172</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">auto_save_button</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-name">asf</tt><tt class="py-op">.</tt><tt class="py-name">grid_row</tt><tt class="py-op">,</tt><tt class="py-name">column</tt><tt class="py-op">=</tt><tt class="py-number">0< [...]
+<a name="L1173"></a><tt class="py-lineno">1173</tt>  <tt class="py-line"> </tt>
+<a name="L1174"></a><tt class="py-lineno">1174</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">param_file_type_tk_var</tt> <tt class="py-op">=</tt> <tt id="link-460" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-460', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">StringVar</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1175"></a><tt class="py-lineno">1175</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">param_file_type_tk_var</tt><tt class="py-op">.</tt><tt id="link-461" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-461', 'set', 'link-111');">set</a></tt><tt class="py-op">(</tt><tt class="py-string">"Python format"</tt><tt class="py-op">)</tt> </tt>
+<a name="L1176"></a><tt class="py-lineno">1176</tt>  <tt class="py-line">        <tt class="py-name">filetype_bar</tt> <tt class="py-op">=</tt> <tt id="link-462" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-462', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Menubutton</tt><tt class="py-op">(</tt><tt class="py-name">asf</tt><tt class="py-op">,</tt> </tt>
+<a name="L1177"></a><tt class="py-lineno">1177</tt>  <tt class="py-line">                                 <tt class="py-name">textvariable</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">param_file_type_tk_var</tt><tt class="py-op">,</tt> </tt>
+<a name="L1178"></a><tt class="py-lineno">1178</tt>  <tt class="py-line">                                 <tt class="py-name">relief</tt><tt class="py-op">=</tt><tt id="link-463" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-463', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">RAISED</tt><tt class="py-op">)</tt> </tt>
+<a name="L1179"></a><tt class="py-lineno">1179</tt>  <tt class="py-line">        <tt class="py-name">filetype_bar</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-name">asf</tt><tt class="py-op">.</tt><tt class="py-name">grid_row</tt><tt class="py-op">,</tt><tt class="py-name">column</tt><tt class="py-op">=</tt><tt class="py-number">2</tt><tt class="py-op">)</tt> </tt>
+<a name="L1180"></a><tt class="py-lineno">1180</tt>  <tt class="py-line">        <tt class="py-name">filetype_bar</tt><tt class="py-op">.</tt><tt class="py-name">menu</tt> <tt class="py-op">=</tt> <tt id="link-464" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-464', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Menu</tt><tt class="py-op">(</tt><tt class="py-name">filetype_bar</tt><tt class="py- [...]
+<a name="L1181"></a><tt class="py-lineno">1181</tt>  <tt class="py-line">        <tt class="py-name">filetype_bar</tt><tt class="py-op">.</tt><tt class="py-name">menu</tt><tt class="py-op">.</tt><tt class="py-name">add_radiobutton</tt><tt class="py-op">(</tt><tt class="py-name">label</tt><tt class="py-op">=</tt><tt class="py-string">"Python format"</tt><tt class="py-op">,</tt> </tt>
+<a name="L1182"></a><tt class="py-lineno">1182</tt>  <tt class="py-line">                                 <tt class="py-name">value</tt><tt class="py-op">=</tt><tt class="py-string">"Python format"</tt><tt class="py-op">,</tt> </tt>
+<a name="L1183"></a><tt class="py-lineno">1183</tt>  <tt class="py-line">                                 <tt class="py-name">variable</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">param_file_type_tk_var</tt><tt class="py-op">)</tt> </tt>
+<a name="L1184"></a><tt class="py-lineno">1184</tt>  <tt class="py-line">        <tt class="py-name">filetype_bar</tt><tt class="py-op">.</tt><tt class="py-name">menu</tt><tt class="py-op">.</tt><tt class="py-name">add_radiobutton</tt><tt class="py-op">(</tt><tt class="py-name">label</tt><tt class="py-op">=</tt><tt class="py-string">"Matlab format"</tt><tt class="py-op">,</tt> </tt>
+<a name="L1185"></a><tt class="py-lineno">1185</tt>  <tt class="py-line">                                 <tt class="py-name">value</tt><tt class="py-op">=</tt><tt class="py-string">"Matlab format"</tt><tt class="py-op">,</tt> </tt>
+<a name="L1186"></a><tt class="py-lineno">1186</tt>  <tt class="py-line">                                 <tt class="py-name">variable</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">param_file_type_tk_var</tt><tt class="py-op">)</tt> </tt>
+<a name="L1187"></a><tt class="py-lineno">1187</tt>  <tt class="py-line">        <tt class="py-name">filetype_bar</tt><tt class="py-op">[</tt><tt class="py-string">'menu'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">filetype_bar</tt><tt class="py-op">.</tt><tt class="py-name">menu</tt> </tt>
+<a name="L1188"></a><tt class="py-lineno">1188</tt>  <tt class="py-line"> </tt>
+<a name="L1189"></a><tt class="py-lineno">1189</tt>  <tt class="py-line">        <tt class="py-name">asf</tt><tt class="py-op">.</tt><tt class="py-name">grid_row</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L1190"></a><tt class="py-lineno">1190</tt>  <tt class="py-line">        <tt id="link-465" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-465', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">asf</tt><tt class="py-op">,</tt> </tt>
+<a name="L1191"></a><tt class="py-lineno">1191</tt>  <tt class="py-line">                      <tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Parameter file directory:"</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-name">asf</tt><tt class="py-op">.</tt><tt class="py-name">grid_row</tt><tt class="py-op">,</tt><tt class="py-name">column</ [...]
+<a name="L1192"></a><tt class="py-lineno">1192</tt>  <tt class="py-line">        <tt id="link-466" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-466', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Entry</tt><tt class="py-op">(</tt><tt class="py-name">asf</tt><tt class="py-op">,</tt> </tt>
+<a name="L1193"></a><tt class="py-lineno">1193</tt>  <tt class="py-line">                      <tt class="py-name">textvariable</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">autosave_dir</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-name">asf</tt><tt class="py-op">.</tt><tt class="py-name">grid_row</tt><tt clas [...]
+<a name="L1194"></a><tt class="py-lineno">1194</tt>  <tt class="py-line">        <tt id="link-467" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-467', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Button</tt><tt class="py-op">(</tt><tt class="py-name">asf</tt><tt class="py-op">,</tt> </tt>
+<a name="L1195"></a><tt class="py-lineno">1195</tt>  <tt class="py-line">                       <tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Set..."</tt><tt class="py-op">,</tt><tt class="py-name">command</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-468" class="py-name" targets="Method VisionEgg.PyroApps.EPhysGUI.AppWindow.set_autosave_dir()=VisionEgg.PyroApps.EPhysGUI.AppWindow-class.html#set_autosave_dir">< [...]
+<a name="L1196"></a><tt class="py-lineno">1196</tt>  <tt class="py-line">        <tt class="py-name">asf</tt><tt class="py-op">.</tt><tt class="py-name">grid_row</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L1197"></a><tt class="py-lineno">1197</tt>  <tt class="py-line">        <tt id="link-469" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-469', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">asf</tt><tt class="py-op">,</tt> </tt>
+<a name="L1198"></a><tt class="py-lineno">1198</tt>  <tt class="py-line">                      <tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Parameter file basename:"</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-name">asf</tt><tt class="py-op">.</tt><tt class="py-name">grid_row</tt><tt class="py-op">,</tt><tt class="py-name">column</t [...]
+<a name="L1199"></a><tt class="py-lineno">1199</tt>  <tt class="py-line">        <tt id="link-470" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-470', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Entry</tt><tt class="py-op">(</tt><tt class="py-name">asf</tt><tt class="py-op">,</tt> </tt>
+<a name="L1200"></a><tt class="py-lineno">1200</tt>  <tt class="py-line">                      <tt class="py-name">textvariable</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">autosave_basename</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-name">asf</tt><tt class="py-op">.</tt><tt class="py-name">grid_row</tt><tt [...]
+<a name="L1201"></a><tt class="py-lineno">1201</tt>  <tt class="py-line">        <tt id="link-471" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-471', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Button</tt><tt class="py-op">(</tt><tt class="py-name">asf</tt><tt class="py-op">,</tt> </tt>
+<a name="L1202"></a><tt class="py-lineno">1202</tt>  <tt class="py-line">                       <tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Reset"</tt><tt class="py-op">,</tt><tt class="py-name">command</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-472" class="py-name" targets="Method VisionEgg.PyroApps.EPhysGUI.AppWindow.reset_autosave_basename()=VisionEgg.PyroApps.EPhysGUI.AppWindow-class.html#reset_autosav [...]
+<a name="L1203"></a><tt class="py-lineno">1203</tt>  <tt class="py-line"> </tt>
+<a name="L1204"></a><tt class="py-lineno">1204</tt>  <tt class="py-line">        <tt class="py-name">row</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L1205"></a><tt class="py-lineno">1205</tt>  <tt class="py-line">        <tt id="link-473" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-473', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Button</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">'Do single trial'</tt><tt class="py- [...]
+<a name="L1206"></a><tt class="py-lineno">1206</tt>  <tt class="py-line">        <tt id="link-475" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-475', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Button</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">'Do sequence'</tt><tt class="py-op"> [...]
+<a name="L1207"></a><tt class="py-lineno">1207</tt>  <tt class="py-line"> </tt>
+<a name="L1208"></a><tt class="py-lineno">1208</tt>  <tt class="py-line">        <tt class="py-name">row</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L1209"></a><tt class="py-lineno">1209</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">progress</tt> <tt class="py-op">=</tt> <tt id="link-477" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-477', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-478" class="py-name"><a title="VisionEgg.GUI" class="py-name" href="#" onclick="return doclink('link-47 [...]
+<a name="L1210"></a><tt class="py-lineno">1210</tt>  <tt class="py-line">                                                  <tt class="py-name">width</tt><tt class="py-op">=</tt><tt class="py-number">300</tt><tt class="py-op">,</tt> </tt>
+<a name="L1211"></a><tt class="py-lineno">1211</tt>  <tt class="py-line">                                                  <tt class="py-name">relief</tt><tt class="py-op">=</tt><tt class="py-string">"sunken"</tt><tt class="py-op">,</tt> </tt>
+<a name="L1212"></a><tt class="py-lineno">1212</tt>  <tt class="py-line">                                                  <tt class="py-name">doLabel</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> </tt>
+<a name="L1213"></a><tt class="py-lineno">1213</tt>  <tt class="py-line">                                                  <tt class="py-name">labelFormat</tt><tt class="py-op">=</tt><tt class="py-string">"%s"</tt><tt class="py-op">)</tt> </tt>
+<a name="L1214"></a><tt class="py-lineno">1214</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">progress</tt><tt class="py-op">.</tt><tt class="py-name">labelText</tt> <tt class="py-op">=</tt> <tt class="py-string">"Starting..."</tt> </tt>
+<a name="L1215"></a><tt class="py-lineno">1215</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">progress</tt><tt class="py-op">.</tt><tt id="link-480" class="py-name" targets="Method VisionEgg.GUI.ProgressBar.updateProgress()=VisionEgg.GUI.ProgressBar-class.html#updateProgress"><a title="VisionEgg.GUI.ProgressBar.updateProgress" class="py-name" href="#" onclick="return doclink('link-480', 'updateProgress', 'link-480');">updateProg [...]
+<a name="L1216"></a><tt class="py-lineno">1216</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">progress</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-name">row</tt><tt class="py-op">,</tt><tt class="py-name">column</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">,</tt><tt class="py-name">columnspan</tt><t [...]
+<a name="L1217"></a><tt class="py-lineno">1217</tt>  <tt class="py-line"> </tt>
+<a name="L1218"></a><tt class="py-lineno">1218</tt>  <tt class="py-line">        <tt class="py-comment"># Allow rows and columns to expand</tt> </tt>
+<a name="L1219"></a><tt class="py-lineno">1219</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">for</tt> <tt class="py-name">i</tt> <tt class="py-keyword">in</tt> <tt class="py-name">range</tt><tt class="py-op">(</tt><tt class="py-number">2</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1220"></a><tt class="py-lineno">1220</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">columnconfigure</tt><tt class="py-op">(</tt><tt class="py-name">i</tt><tt class="py-op">,</tt><tt class="py-name">weight</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="L1221"></a><tt class="py-lineno">1221</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">i</tt> <tt class="py-keyword">in</tt> <tt class="py-name">range</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">+</tt><tt class="py-number">1</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1222"></a><tt class="py-lineno">1222</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">rowconfigure</tt><tt class="py-op">(</tt><tt class="py-name">i</tt><tt class="py-op">,</tt><tt class="py-name">weight</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="L1223"></a><tt class="py-lineno">1223</tt>  <tt class="py-line"> </tt>
+<a name="L1224"></a><tt class="py-lineno">1224</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-481" class="py-name" targets="Method VisionEgg.PyroApps.EPhysGUI.AppWindow.switch_to_stimkey()=VisionEgg.PyroApps.EPhysGUI.AppWindow-class.html#switch_to_stimkey"><a title="VisionEgg.PyroApps.EPhysGUI.AppWindow.switch_to_stimkey" class="py-name" href="#" onclick="return doclink('link-481', 'switch_to_stimkey', 'link-481');">switch_to_stimkey</ [...]
+<a name="L1225"></a><tt class="py-lineno">1225</tt>  <tt class="py-line"> </tt>
+<a name="L1226"></a><tt class="py-lineno">1226</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">config_dir</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L1227"></a><tt class="py-lineno">1227</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">demoscript_filename</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L1228"></a><tt class="py-lineno">1228</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">vars_list</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+</div><a name="L1229"></a><tt class="py-lineno">1229</tt>  <tt class="py-line"> </tt>
+<a name="AppWindow.__del__"></a><div id="AppWindow.__del__-def"><a name="L1230"></a><tt class="py-lineno">1230</tt> <a class="py-toggle" href="#" id="AppWindow.__del__-toggle" onclick="return toggle('AppWindow.__del__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.EPhysGUI.AppWindow-class.html#__del__">__del__</a><tt class="py-op">(</tt> <tt class="py-param">self</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="AppWindow.__del__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="AppWindow.__del__-expanded"><a name="L1231"></a><tt class="py-lineno">1231</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt><tt class="py-string">'_orig_report_callback_exception'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1232"></a><tt class="py-lineno">1232</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_tk</tt><tt class="py-op">.</tt><tt class="py-name">report_callback_exception</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_orig_report_callback_exception</tt> </tt>
+</div><a name="L1233"></a><tt class="py-lineno">1233</tt>  <tt class="py-line"> </tt>
+<a name="AppWindow.switch_to_stimkey"></a><div id="AppWindow.switch_to_stimkey-def"><a name="L1234"></a><tt class="py-lineno">1234</tt> <a class="py-toggle" href="#" id="AppWindow.switch_to_stimkey-toggle" onclick="return toggle('AppWindow.switch_to_stimkey');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.EPhysGUI.AppWindow-class.html#switch_to_stimkey">switch_to_stimkey</a><tt class="py-op">(</tt> <tt class="py-param">self< [...]
+</div><div id="AppWindow.switch_to_stimkey-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="AppWindow.switch_to_stimkey-expanded"><a name="L1235"></a><tt class="py-lineno">1235</tt>  <tt class="py-line">        <tt class="py-name">success</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L1236"></a><tt class="py-lineno">1236</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">maybe_stimkey</tt><tt class="py-op">,</tt> <tt class="py-name">maybe_control_frame</tt><tt class="py-op">,</tt> <tt class="py-name">maybe_title</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-482" class="py-name"><a title="VisionEgg.PyroApps.EPhysGUI.client_list" class="py-name" href="#" onclick="return  [...]
+<a name="L1237"></a><tt class="py-lineno">1237</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">stimkey</tt> <tt class="py-op">==</tt> <tt class="py-name">maybe_stimkey</tt><tt class="py-op">:</tt> </tt>
+<a name="L1238"></a><tt class="py-lineno">1238</tt>  <tt class="py-line">                <tt class="py-name">control_frame_klass</tt> <tt class="py-op">=</tt> <tt class="py-name">maybe_control_frame</tt> </tt>
+<a name="L1239"></a><tt class="py-lineno">1239</tt>  <tt class="py-line">                <tt class="py-name">success</tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L1240"></a><tt class="py-lineno">1240</tt>  <tt class="py-line"> </tt>
+<a name="L1241"></a><tt class="py-lineno">1241</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">success</tt><tt class="py-op">:</tt> </tt>
+<a name="L1242"></a><tt class="py-lineno">1242</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">RuntimeError</tt><tt class="py-op">(</tt><tt class="py-string">"Could not find valid client for server stimkey %s"</tt><tt class="py-op">%</tt><tt class="py-name">stimkey</tt><tt class="py-op">)</tt> </tt>
+<a name="L1243"></a><tt class="py-lineno">1243</tt>  <tt class="py-line"> </tt>
+<a name="L1244"></a><tt class="py-lineno">1244</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-string">'stim_frame'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1245"></a><tt class="py-lineno">1245</tt>  <tt class="py-line">            <tt class="py-comment"># clear old frame</tt> </tt>
+<a name="L1246"></a><tt class="py-lineno">1246</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stim_frame</tt><tt class="py-op">.</tt><tt id="link-483" class="py-name"><a title="VisionEgg.GUI.ToplevelDialog.destroy
+VisionEgg.PyroApps.EPhysGUI.AppWindow.destroy
+VisionEgg.PyroApps.EPhysGUI.LoopParamDialog.destroy" class="py-name" href="#" onclick="return doclink('link-483', 'destroy', 'link-316');">destroy</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1247"></a><tt class="py-lineno">1247</tt>  <tt class="py-line">            <tt class="py-keyword">del</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stim_frame</tt> </tt>
+<a name="L1248"></a><tt class="py-lineno">1248</tt>  <tt class="py-line"> </tt>
+<a name="L1249"></a><tt class="py-lineno">1249</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stim_frame</tt> <tt class="py-op">=</tt> <tt class="py-name">control_frame_klass</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt><tt class="py-name">suppress_go_buttons</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="L1250"></a><tt class="py-lineno">1250</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">stimkey</tt> <tt class="py-op">==</tt> <tt class="py-string">"dropin_server"</tt><tt class="py-op">:</tt> </tt>
+<a name="L1251"></a><tt class="py-lineno">1251</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stim_frame</tt><tt class="py-op">.</tt><tt id="link-484" class="py-name" targets="Method VisionEgg.PyroApps.DropinGUI.DropinControlFrame.gen_var_widgets()=VisionEgg.PyroApps.DropinGUI.DropinControlFrame-class.html#gen_var_widgets"><a title="VisionEgg.PyroApps.DropinGUI.DropinControlFrame.gen_var_widgets" class="py-name" href="#" onc [...]
+<a name="L1252"></a><tt class="py-lineno">1252</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stim_frame</tt><tt class="py-op">.</tt><tt id="link-485" class="py-name" targets="Method VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.connect()=VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#connect,Method VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.connect()=VisionEgg.PyroApps.ScreenPositi [...]
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.connect
+VisionEgg.PyroHelpers.PyroServer.connect" class="py-name" href="#" onclick="return doclink('link-485', 'connect', 'link-485');">connect</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">server_hostname</tt><tt class="py-op">,</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">server_port</tt><tt class="py-op">)</tt> </tt>
+<a name="L1253"></a><tt class="py-lineno">1253</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stim_frame</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt> <tt class="py-op">**</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stim_frame_cnf</tt> <tt class="py-op">)</tt> </tt>
+<a name="L1254"></a><tt class="py-lineno">1254</tt>  <tt class="py-line"> </tt>
+<a name="L1255"></a><tt class="py-lineno">1255</tt>  <tt class="py-line">        <tt class="py-keyword">global</tt> <tt class="py-name">loopable_variables</tt> </tt>
+<a name="L1256"></a><tt class="py-lineno">1256</tt>  <tt class="py-line">        <tt class="py-name">loopable_variables</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stim_frame</tt><tt class="py-op">.</tt><tt id="link-486" class="py-name" targets="Method VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.get_loopable_variable_names()=VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#get_loopable_variable_names,Met [...]
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.get_loopable_variable_names" class="py-name" href="#" onclick="return doclink('link-486', 'get_loopable_variable_names', 'link-486');">get_loopable_variable_names</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1257"></a><tt class="py-lineno">1257</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-string">'loop_frame'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1258"></a><tt class="py-lineno">1258</tt>  <tt class="py-line">            <tt class="py-comment"># clear old frame</tt> </tt>
+<a name="L1259"></a><tt class="py-lineno">1259</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">loop_frame</tt><tt class="py-op">.</tt><tt id="link-487" class="py-name"><a title="VisionEgg.GUI.ToplevelDialog.destroy
+VisionEgg.PyroApps.EPhysGUI.AppWindow.destroy
+VisionEgg.PyroApps.EPhysGUI.LoopParamDialog.destroy" class="py-name" href="#" onclick="return doclink('link-487', 'destroy', 'link-316');">destroy</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1260"></a><tt class="py-lineno">1260</tt>  <tt class="py-line">            <tt class="py-keyword">del</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">loop_frame</tt> </tt>
+<a name="L1261"></a><tt class="py-lineno">1261</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">loop_frame</tt> <tt class="py-op">=</tt> <tt id="link-488" class="py-name" targets="Class VisionEgg.PyroApps.EPhysGUI.ScrollListFrame=VisionEgg.PyroApps.EPhysGUI.ScrollListFrame-class.html"><a title="VisionEgg.PyroApps.EPhysGUI.ScrollListFrame" class="py-name" href="#" onclick="return doclink('link-488', 'ScrollListFrame', 'link-488');" [...]
+<a name="L1262"></a><tt class="py-lineno">1262</tt>  <tt class="py-line">                                          <tt class="py-name">container_class</tt><tt class="py-op">=</tt><tt id="link-489" class="py-name"><a title="VisionEgg.PyroApps.EPhysGUI.LoopContainedObject" class="py-name" href="#" onclick="return doclink('link-489', 'LoopContainedObject', 'link-169');">LoopContainedObject</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L1263"></a><tt class="py-lineno">1263</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">loop_frame</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt> <tt class="py-op">**</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">loop_frame_cnf</tt> <tt class="py-op">)</tt> </tt>
+<a name="L1264"></a><tt class="py-lineno">1264</tt>  <tt class="py-line"> </tt>
+<a name="L1265"></a><tt class="py-lineno">1265</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">autosave_basename</tt><tt class="py-op">.</tt><tt id="link-490" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-490', 'set', 'link-111');">set</a></tt><tt class="py-op">(</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stim_frame</tt><tt cl [...]
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.get_shortname
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.get_shortname
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.get_shortname
+VisionEgg.PyroApps.GridGUI.GridControlFrame.get_shortname
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.get_shortname
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.get_shortname
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.get_shortname
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.get_shortname
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.get_shortname" class="py-name" href="#" onclick="return doclink('link-491', 'get_shortname', 'link-491');">get_shortname</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">)</tt> </tt>
+<a name="L1266"></a><tt class="py-lineno">1266</tt>  <tt class="py-line"> </tt>
+<a name="L1267"></a><tt class="py-lineno">1267</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stimulus_tk_var</tt><tt class="py-op">.</tt><tt id="link-492" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-492', 'set', 'link-111');">set</a></tt><tt class="py-op">(</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stim_frame</tt><tt clas [...]
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.get_shortname
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.get_shortname
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.get_shortname
+VisionEgg.PyroApps.GridGUI.GridControlFrame.get_shortname
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.get_shortname
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.get_shortname
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.get_shortname
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.get_shortname
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.get_shortname" class="py-name" href="#" onclick="return doclink('link-493', 'get_shortname', 'link-491');">get_shortname</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">)</tt> <tt class="py-comment"># set menuitem</tt> </tt>
+<a name="L1268"></a><tt class="py-lineno">1268</tt>  <tt class="py-line"> </tt>
+<a name="L1269"></a><tt class="py-lineno">1269</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">progress</tt><tt class="py-op">.</tt><tt class="py-name">labelText</tt> <tt class="py-op">=</tt> <tt class="py-string">"Ready"</tt> </tt>
+<a name="L1270"></a><tt class="py-lineno">1270</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">progress</tt><tt class="py-op">.</tt><tt id="link-494" class="py-name"><a title="VisionEgg.GUI.ProgressBar.updateProgress" class="py-name" href="#" onclick="return doclink('link-494', 'updateProgress', 'link-480');">updateProgress</a></tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1271"></a><tt class="py-lineno">1271</tt>  <tt class="py-line"> </tt>
+<a name="AppWindow.change_stimulus"></a><div id="AppWindow.change_stimulus-def"><a name="L1272"></a><tt class="py-lineno">1272</tt> <a class="py-toggle" href="#" id="AppWindow.change_stimulus-toggle" onclick="return toggle('AppWindow.change_stimulus');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.EPhysGUI.AppWindow-class.html#change_stimulus">change_stimulus</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class [...]
+</div><div id="AppWindow.change_stimulus-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="AppWindow.change_stimulus-expanded"><a name="L1273"></a><tt class="py-lineno">1273</tt>  <tt class="py-line">        <tt class="py-comment"># if new_stimkey is None, get from the tk variable</tt> </tt>
+<a name="L1274"></a><tt class="py-lineno">1274</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">new_stimkey</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L1275"></a><tt class="py-lineno">1275</tt>  <tt class="py-line">            <tt class="py-name">new_stimkey</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stimulus_tk_var</tt><tt class="py-op">.</tt><tt id="link-495" class="py-name"><a title="VisionEgg.PyroClient.PyroClient.get" class="py-name" href="#" onclick="return doclink('link-495', 'get', 'link-185');">get</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1276"></a><tt class="py-lineno">1276</tt>  <tt class="py-line"> </tt>
+<a name="L1277"></a><tt class="py-lineno">1277</tt>  <tt class="py-line">        <tt class="py-name">found</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L1278"></a><tt class="py-lineno">1278</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">maybe_stimkey</tt><tt class="py-op">,</tt> <tt class="py-name">maybe_control_frame</tt><tt class="py-op">,</tt> <tt class="py-name">maybe_title</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-496" class="py-name"><a title="VisionEgg.PyroApps.EPhysGUI.client_list" class="py-name" href="#" onclick="return  [...]
+<a name="L1279"></a><tt class="py-lineno">1279</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">new_stimkey</tt> <tt class="py-op">==</tt> <tt class="py-name">maybe_stimkey</tt><tt class="py-op">:</tt> </tt>
+<a name="L1280"></a><tt class="py-lineno">1280</tt>  <tt class="py-line">                <tt class="py-name">new_control_frame_klass</tt> <tt class="py-op">=</tt> <tt class="py-name">maybe_control_frame</tt> </tt>
+<a name="L1281"></a><tt class="py-lineno">1281</tt>  <tt class="py-line">                <tt class="py-name">new_stimkey</tt> <tt class="py-op">=</tt> <tt class="py-name">maybe_stimkey</tt> </tt>
+<a name="L1282"></a><tt class="py-lineno">1282</tt>  <tt class="py-line">                <tt class="py-name">found</tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L1283"></a><tt class="py-lineno">1283</tt>  <tt class="py-line">                <tt class="py-keyword">break</tt> </tt>
+<a name="L1284"></a><tt class="py-lineno">1284</tt>  <tt class="py-line"> </tt>
+<a name="L1285"></a><tt class="py-lineno">1285</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">found</tt><tt class="py-op">:</tt> </tt>
+<a name="L1286"></a><tt class="py-lineno">1286</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">RuntimeError</tt><tt class="py-op">(</tt><tt class="py-string">"Don't know about stimkey %s"</tt><tt class="py-op">%</tt><tt class="py-name">new_stimkey</tt><tt class="py-op">)</tt> </tt>
+<a name="L1287"></a><tt class="py-lineno">1287</tt>  <tt class="py-line"> </tt>
+<a name="L1288"></a><tt class="py-lineno">1288</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">new_control_frame_klass</tt> <tt class="py-op">!=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stim_frame</tt><tt class="py-op">.</tt><tt class="py-name">__class__</tt> <tt class="py-keyword">or</tt> <tt class="py-name">new_stimkey</tt> <tt class="py-op">==</tt> <tt class="py-string">"dropin_server"</tt><tt class="py-op">:</t [...]
+<a name="L1289"></a><tt class="py-lineno">1289</tt>  <tt class="py-line">            <tt class="py-comment"># make wait cursor</tt> </tt>
+<a name="L1290"></a><tt class="py-lineno">1290</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">root</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">winfo_toplevel</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1291"></a><tt class="py-lineno">1291</tt>  <tt class="py-line">            <tt class="py-name">old_cursor</tt> <tt class="py-op">=</tt> <tt class="py-name">root</tt><tt class="py-op">[</tt><tt class="py-string">"cursor"</tt><tt class="py-op">]</tt> </tt>
+<a name="L1292"></a><tt class="py-lineno">1292</tt>  <tt class="py-line">            <tt class="py-name">root</tt><tt class="py-op">[</tt><tt class="py-string">"cursor"</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-string">"watch"</tt> </tt>
+<a name="L1293"></a><tt class="py-lineno">1293</tt>  <tt class="py-line">            <tt class="py-name">root</tt><tt class="py-op">.</tt><tt id="link-497" class="py-name" targets="Method VisionEgg.GUI.InfoFrame.update()=VisionEgg.GUI.InfoFrame-class.html#update,Method VisionEgg.GUI.ProgressBar.update()=VisionEgg.GUI.ProgressBar-class.html#update,Method VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.update()=VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController-class.html#up [...]
+VisionEgg.GUI.ProgressBar.update
+VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.update
+VisionEgg.PyroApps.DropinServer.DropinMetaController.update
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.update
+VisionEgg.PyroApps.GridServer.GridMetaController.update
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.update
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.update
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.update
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.update
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.update
+VisionEgg.QuickTime.MovieTexture.update
+VisionEgg.Textures.Texture.update" class="py-name" href="#" onclick="return doclink('link-497', 'update', 'link-497');">update</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1294"></a><tt class="py-lineno">1294</tt>  <tt class="py-line">            <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L1295"></a><tt class="py-lineno">1295</tt>  <tt class="py-line"> </tt>
+<a name="L1296"></a><tt class="py-lineno">1296</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">progress</tt><tt class="py-op">.</tt><tt class="py-name">labelText</tt> <tt class="py-op">=</tt> <tt class="py-string">"Changing stimulus..."</tt> </tt>
+<a name="L1297"></a><tt class="py-lineno">1297</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">progress</tt><tt class="py-op">.</tt><tt id="link-498" class="py-name"><a title="VisionEgg.GUI.ProgressBar.updateProgress" class="py-name" href="#" onclick="return doclink('link-498', 'updateProgress', 'link-480');">updateProgress</a></tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">)</tt> </tt>
+<a name="L1298"></a><tt class="py-lineno">1298</tt>  <tt class="py-line"> </tt>
+<a name="L1299"></a><tt class="py-lineno">1299</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">ephys_server</tt><tt class="py-op">.</tt><tt id="link-499" class="py-name" targets="Method VisionEgg.PyroApps.EPhysServer.EPhysServer.set_next_stimkey()=VisionEgg.PyroApps.EPhysServer.EPhysServer-class.html#set_next_stimkey"><a title="VisionEgg.PyroApps.EPhysServer.EPhysServer.set_next_stimkey" class="py-name" href="#" onclick=" [...]
+<a name="L1300"></a><tt class="py-lineno">1300</tt>  <tt class="py-line"> </tt>
+<a name="L1301"></a><tt class="py-lineno">1301</tt>  <tt class="py-line">                <tt class="py-comment"># new stimulus type</tt> </tt>
+<a name="L1302"></a><tt class="py-lineno">1302</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stim_frame</tt><tt class="py-op">.</tt><tt id="link-500" class="py-name" targets="Method VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.quit_server()=VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController-class.html#quit_server,Method VisionEgg.PyroApps.DropinServer.DropinMetaController.qu [...]
+VisionEgg.PyroApps.DropinServer.DropinMetaController.quit_server
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.quit_server
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.quit_server
+VisionEgg.PyroApps.GridServer.GridMetaController.quit_server
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.quit_server
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.quit_server
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.quit_server
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.quit_server
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.quit_server
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.quit_server" class="py-name" href="#" onclick="return doclink('link-500', 'quit_server', 'link-500');">quit_server</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-comment"># disconnect</tt> </tt>
+<a name="L1303"></a><tt class="py-lineno">1303</tt>  <tt class="py-line"> </tt>
+<a name="L1304"></a><tt class="py-lineno">1304</tt>  <tt class="py-line">                <tt class="py-comment"># in case of loaded Vision Egg script, quit_server()</tt> </tt>
+<a name="L1305"></a><tt class="py-lineno">1305</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-comment"># sends a signal to stop the "wait" loop, WITHOUT</tt> </tt>
+<a name="L1306"></a><tt class="py-lineno">1306</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-comment"># raising a flag to run the script</tt> </tt>
+<a name="L1307"></a><tt class="py-lineno">1307</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L1308"></a><tt class="py-lineno">1308</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">ephys_server</tt><tt class="py-op">.</tt><tt id="link-501" class="py-name"><a title="VisionEgg.PyroApps.EPhysServer.EPhysServer.get_stimkey" class="py-name" href="#" onclick="return doclink('link-501', 'get_stimkey', 'link-438');">get_stimkey</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-comment"># wait  [...]
+<a name="L1309"></a><tt class="py-lineno">1309</tt>  <tt class="py-line"> </tt>
+<a name="L1310"></a><tt class="py-lineno">1310</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-502" class="py-name"><a title="VisionEgg.PyroApps.EPhysGUI.AppWindow.switch_to_stimkey" class="py-name" href="#" onclick="return doclink('link-502', 'switch_to_stimkey', 'link-481');">switch_to_stimkey</a></tt><tt class="py-op">(</tt> <tt class="py-name">new_stimkey</tt><tt class="py-op">)</tt> </tt>
+<a name="L1311"></a><tt class="py-lineno">1311</tt>  <tt class="py-line">            <tt class="py-keyword">finally</tt><tt class="py-op">:</tt> </tt>
+<a name="L1312"></a><tt class="py-lineno">1312</tt>  <tt class="py-line">                <tt class="py-comment">#restore cursor</tt> </tt>
+<a name="L1313"></a><tt class="py-lineno">1313</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-name">root</tt><tt class="py-op">[</tt><tt class="py-string">"cursor"</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">old_cursor</tt> </tt>
+<a name="L1314"></a><tt class="py-lineno">1314</tt>  <tt class="py-line">                <tt class="py-name">root</tt><tt class="py-op">.</tt><tt id="link-503" class="py-name"><a title="VisionEgg.GUI.InfoFrame.update
+VisionEgg.GUI.ProgressBar.update
+VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.update
+VisionEgg.PyroApps.DropinServer.DropinMetaController.update
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.update
+VisionEgg.PyroApps.GridServer.GridMetaController.update
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.update
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.update
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.update
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.update
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.update
+VisionEgg.QuickTime.MovieTexture.update
+VisionEgg.Textures.Texture.update" class="py-name" href="#" onclick="return doclink('link-503', 'update', 'link-497');">update</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1315"></a><tt class="py-lineno">1315</tt>  <tt class="py-line"> </tt>
+<a name="AppWindow.save_image_sequence"></a><div id="AppWindow.save_image_sequence-def"><a name="L1316"></a><tt class="py-lineno">1316</tt> <a class="py-toggle" href="#" id="AppWindow.save_image_sequence-toggle" onclick="return toggle('AppWindow.save_image_sequence');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.EPhysGUI.AppWindow-class.html#save_image_sequence">save_image_sequence</a><tt class="py-op">(</tt><tt class="py-p [...]
+</div><div id="AppWindow.save_image_sequence-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="AppWindow.save_image_sequence-expanded"><a name="L1317"></a><tt class="py-lineno">1317</tt>  <tt class="py-line">        <tt id="link-504" class="py-name" targets="Class VisionEgg.PyroApps.EPhysGUI.ImageSequenceLauncher=VisionEgg.PyroApps.EPhysGUI.ImageSequenceLauncher-class.html"><a title="VisionEgg.PyroApps.EPhysGUI.ImageSequenceLauncher" class="py-name" href="#" on [...]
+</div><a name="L1318"></a><tt class="py-lineno">1318</tt>  <tt class="py-line"> </tt>
+<a name="AppWindow.save_config"></a><div id="AppWindow.save_config-def"><a name="L1319"></a><tt class="py-lineno">1319</tt> <a class="py-toggle" href="#" id="AppWindow.save_config-toggle" onclick="return toggle('AppWindow.save_config');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.EPhysGUI.AppWindow-class.html#save_config">save_config</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class [...]
+</div><div id="AppWindow.save_config-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="AppWindow.save_config-expanded"><a name="L1320"></a><tt class="py-lineno">1320</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stim_frame</tt><tt class="py-op">.</tt><tt id="link-505" class="py-name" targets="Method VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.send_values()=VisionEgg.PyroApps.ColorCalGUI.ColorC [...]
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.send_values
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.send_values
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.send_values
+VisionEgg.PyroApps.GridGUI.GridControlFrame.send_values
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.send_values
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.send_values
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.send_values
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.send_values
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.send_values" class="py-name" href="#" onclick="return doclink('link-505', 'send_values', 'link-505');">send_values</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-comment"># copy values from Tkinter to self.stim_frame.meta_params and send to server</tt> </tt>
+<a name="L1321"></a><tt class="py-lineno">1321</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">config_dir</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L1322"></a><tt class="py-lineno">1322</tt>  <tt class="py-line">            <tt class="py-name">initialdir</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">config_dir</tt> </tt>
+<a name="L1323"></a><tt class="py-lineno">1323</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1324"></a><tt class="py-lineno">1324</tt>  <tt class="py-line">            <tt class="py-name">initialdir</tt> <tt class="py-op">=</tt> <tt id="link-506" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-506', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-507" class="py-name"><a title="VisionEgg.config" class="py-name" href="#" onclick="return doclink('link-507', 'config', 'link-318');">config</a></tt>< [...]
+<a name="L1325"></a><tt class="py-lineno">1325</tt>  <tt class="py-line">        <tt class="py-name">filename</tt> <tt class="py-op">=</tt> <tt id="link-508" class="py-name"><a title="VisionEgg.GUI.tkFileDialog" class="py-name" href="#" onclick="return doclink('link-508', 'tkFileDialog', 'link-9');">tkFileDialog</a></tt><tt class="py-op">.</tt><tt class="py-name">asksaveasfilename</tt><tt class="py-op">(</tt> </tt>
+<a name="L1326"></a><tt class="py-lineno">1326</tt>  <tt class="py-line">            <tt class="py-name">parent</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> </tt>
+<a name="L1327"></a><tt class="py-lineno">1327</tt>  <tt class="py-line">            <tt class="py-name">defaultextension</tt><tt class="py-op">=</tt><tt class="py-string">".ve_cfg"</tt><tt class="py-op">,</tt> </tt>
+<a name="L1328"></a><tt class="py-lineno">1328</tt>  <tt class="py-line">            <tt class="py-name">filetypes</tt><tt class="py-op">=</tt><tt class="py-op">[</tt><tt class="py-op">(</tt><tt class="py-string">'Configuration file'</tt><tt class="py-op">,</tt><tt class="py-string">'*.ve_cfg'</tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L1329"></a><tt class="py-lineno">1329</tt>  <tt class="py-line">            <tt class="py-name">initialdir</tt><tt class="py-op">=</tt><tt class="py-name">initialdir</tt><tt class="py-op">)</tt> </tt>
+<a name="L1330"></a><tt class="py-lineno">1330</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">filename</tt><tt class="py-op">:</tt> </tt>
+<a name="L1331"></a><tt class="py-lineno">1331</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> </tt>
+<a name="L1332"></a><tt class="py-lineno">1332</tt>  <tt class="py-line">        <tt class="py-name">fd</tt> <tt class="py-op">=</tt> <tt class="py-name">open</tt><tt class="py-op">(</tt><tt class="py-name">filename</tt><tt class="py-op">,</tt><tt class="py-string">"wb"</tt><tt class="py-op">)</tt> </tt>
+<a name="L1333"></a><tt class="py-lineno">1333</tt>  <tt class="py-line">        <tt class="py-name">save_dict</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-string">'stim_type'</tt><tt class="py-op">:</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stim_frame</tt><tt class="py-op">.</tt><tt id="link-509" class="py-name"><a title="VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.get_shortname
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.get_shortname
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.get_shortname
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.get_shortname
+VisionEgg.PyroApps.GridGUI.GridControlFrame.get_shortname
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.get_shortname
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.get_shortname
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.get_shortname
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.get_shortname
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.get_shortname" class="py-name" href="#" onclick="return doclink('link-509', 'get_shortname', 'link-491');">get_shortname</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L1334"></a><tt class="py-lineno">1334</tt>  <tt class="py-line">                     <tt class="py-string">'loop_list'</tt><tt class="py-op">:</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">loop_frame</tt><tt class="py-op">.</tt><tt class="py-name">list</tt><tt class="py-op">,</tt> </tt>
+<a name="L1335"></a><tt class="py-lineno">1335</tt>  <tt class="py-line">                     <tt class="py-string">'stim_frame_dict'</tt><tt class="py-op">:</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stim_frame</tt><tt class="py-op">.</tt><tt id="link-510" class="py-name" targets="Method VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.get_parameters_dict()=VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#get_parameters_dict"><a tit [...]
+<a name="L1336"></a><tt class="py-lineno">1336</tt>  <tt class="py-line">                     <tt class="py-string">'autosave'</tt><tt class="py-op">:</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">autosave</tt><tt class="py-op">.</tt><tt id="link-511" class="py-name"><a title="VisionEgg.PyroClient.PyroClient.get" class="py-name" href="#" onclick="return doclink('link-511', 'get', 'link-185');">get</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt  [...]
+<a name="L1337"></a><tt class="py-lineno">1337</tt>  <tt class="py-line">                     <tt class="py-string">'autosave_dir'</tt><tt class="py-op">:</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">autosave_dir</tt><tt class="py-op">.</tt><tt id="link-512" class="py-name"><a title="VisionEgg.PyroClient.PyroClient.get" class="py-name" href="#" onclick="return doclink('link-512', 'get', 'link-185');">get</a></tt><tt class="py-op">(</tt><tt class="py-op">)< [...]
+<a name="L1338"></a><tt class="py-lineno">1338</tt>  <tt class="py-line">                     <tt class="py-string">'autosave_basename'</tt><tt class="py-op">:</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">autosave_basename</tt><tt class="py-op">.</tt><tt id="link-513" class="py-name"><a title="VisionEgg.PyroClient.PyroClient.get" class="py-name" href="#" onclick="return doclink('link-513', 'get', 'link-185');">get</a></tt><tt class="py-op">(</tt><tt class= [...]
+<a name="L1339"></a><tt class="py-lineno">1339</tt>  <tt class="py-line">        <tt class="py-name">pickle</tt><tt class="py-op">.</tt><tt class="py-name">dump</tt><tt class="py-op">(</tt> <tt class="py-name">save_dict</tt><tt class="py-op">,</tt> <tt class="py-name">fd</tt> <tt class="py-op">)</tt> </tt>
+<a name="L1340"></a><tt class="py-lineno">1340</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">config_dir</tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">path</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-name">filename</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt c [...]
+</div><a name="L1341"></a><tt class="py-lineno">1341</tt>  <tt class="py-line"> </tt>
+<a name="AppWindow.load_config"></a><div id="AppWindow.load_config-def"><a name="L1342"></a><tt class="py-lineno">1342</tt> <a class="py-toggle" href="#" id="AppWindow.load_config-toggle" onclick="return toggle('AppWindow.load_config');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.EPhysGUI.AppWindow-class.html#load_config">load_config</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class [...]
+</div><div id="AppWindow.load_config-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="AppWindow.load_config-expanded"><a name="L1343"></a><tt class="py-lineno">1343</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">config_dir</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L1344"></a><tt class="py-lineno">1344</tt>  <tt class="py-line">            <tt class="py-name">initialdir</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">config_dir</tt> </tt>
+<a name="L1345"></a><tt class="py-lineno">1345</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1346"></a><tt class="py-lineno">1346</tt>  <tt class="py-line">            <tt class="py-name">initialdir</tt> <tt class="py-op">=</tt> <tt id="link-514" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-514', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-515" class="py-name"><a title="VisionEgg.config" class="py-name" href="#" onclick="return doclink('link-515', 'config', 'link-318');">config</a></tt>< [...]
+<a name="L1347"></a><tt class="py-lineno">1347</tt>  <tt class="py-line">        <tt class="py-name">filename</tt> <tt class="py-op">=</tt> <tt id="link-516" class="py-name"><a title="VisionEgg.GUI.tkFileDialog" class="py-name" href="#" onclick="return doclink('link-516', 'tkFileDialog', 'link-9');">tkFileDialog</a></tt><tt class="py-op">.</tt><tt class="py-name">askopenfilename</tt><tt class="py-op">(</tt> </tt>
+<a name="L1348"></a><tt class="py-lineno">1348</tt>  <tt class="py-line">            <tt class="py-name">parent</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> </tt>
+<a name="L1349"></a><tt class="py-lineno">1349</tt>  <tt class="py-line">            <tt class="py-name">defaultextension</tt><tt class="py-op">=</tt><tt class="py-string">".ve_cfg"</tt><tt class="py-op">,</tt> </tt>
+<a name="L1350"></a><tt class="py-lineno">1350</tt>  <tt class="py-line">            <tt class="py-name">filetypes</tt><tt class="py-op">=</tt><tt class="py-op">[</tt><tt class="py-op">(</tt><tt class="py-string">'Configuration file'</tt><tt class="py-op">,</tt><tt class="py-string">'*.ve_cfg'</tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L1351"></a><tt class="py-lineno">1351</tt>  <tt class="py-line">            <tt class="py-name">initialdir</tt><tt class="py-op">=</tt><tt class="py-name">initialdir</tt><tt class="py-op">,</tt> </tt>
+<a name="L1352"></a><tt class="py-lineno">1352</tt>  <tt class="py-line">            <tt class="py-op">)</tt> </tt>
+<a name="L1353"></a><tt class="py-lineno">1353</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">filename</tt><tt class="py-op">:</tt> </tt>
+<a name="L1354"></a><tt class="py-lineno">1354</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> </tt>
+<a name="L1355"></a><tt class="py-lineno">1355</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">config_dir</tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">path</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-name">filename</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt c [...]
+<a name="L1356"></a><tt class="py-lineno">1356</tt>  <tt class="py-line">        <tt class="py-name">fd</tt> <tt class="py-op">=</tt> <tt class="py-name">open</tt><tt class="py-op">(</tt><tt class="py-name">filename</tt><tt class="py-op">,</tt><tt class="py-string">"rb"</tt><tt class="py-op">)</tt> </tt>
+<a name="L1357"></a><tt class="py-lineno">1357</tt>  <tt class="py-line">        <tt class="py-name">file_contents</tt> <tt class="py-op">=</tt> <tt class="py-name">fd</tt><tt class="py-op">.</tt><tt class="py-name">read</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1358"></a><tt class="py-lineno">1358</tt>  <tt class="py-line">        <tt class="py-name">file_contents</tt> <tt class="py-op">=</tt> <tt class="py-name">file_contents</tt><tt class="py-op">.</tt><tt class="py-name">replace</tt><tt class="py-op">(</tt><tt class="py-string">'\r\n'</tt><tt class="py-op">,</tt><tt class="py-string">'\n'</tt><tt class="py-op">)</tt> <tt class="py-comment"># deal with Windows newlines</tt> </tt>
+<a name="L1359"></a><tt class="py-lineno">1359</tt>  <tt class="py-line">        <tt class="py-name">memory_file</tt> <tt class="py-op">=</tt> <tt class="py-name">StringIO</tt><tt class="py-op">.</tt><tt class="py-name">StringIO</tt><tt class="py-op">(</tt><tt class="py-name">file_contents</tt><tt class="py-op">)</tt> </tt>
+<a name="L1360"></a><tt class="py-lineno">1360</tt>  <tt class="py-line">        <tt class="py-name">load_dict</tt> <tt class="py-op">=</tt> <tt class="py-name">pickle</tt><tt class="py-op">.</tt><tt id="link-517" class="py-name" targets="Method VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.load()=VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html#load,Method VisionEgg.QuickTime.MovieTexture.load()=VisionEgg.QuickTime.MovieTexture-class.html#load [...]
+VisionEgg.QuickTime.MovieTexture.load
+VisionEgg.Textures.Texture.load" class="py-name" href="#" onclick="return doclink('link-517', 'load', 'link-517');">load</a></tt><tt class="py-op">(</tt><tt class="py-name">memory_file</tt><tt class="py-op">)</tt> </tt>
+<a name="L1361"></a><tt class="py-lineno">1361</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">load_dict</tt><tt class="py-op">[</tt><tt class="py-string">'stim_type'</tt><tt class="py-op">]</tt> <tt class="py-op">!=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stim_frame</tt><tt class="py-op">.</tt><tt id="link-518" class="py-name"><a title="VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.get_shortname
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.get_shortname
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.get_shortname
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.get_shortname
+VisionEgg.PyroApps.GridGUI.GridControlFrame.get_shortname
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.get_shortname
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.get_shortname
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.get_shortname
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.get_shortname
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.get_shortname" class="py-name" href="#" onclick="return doclink('link-518', 'get_shortname', 'link-491');">get_shortname</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1362"></a><tt class="py-lineno">1362</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-519" class="py-name"><a title="VisionEgg.PyroApps.EPhysGUI.AppWindow.change_stimulus" class="py-name" href="#" onclick="return doclink('link-519', 'change_stimulus', 'link-443');">change_stimulus</a></tt><tt class="py-op">(</tt><tt class="py-name">new_stimkey</tt><tt class="py-op">=</tt><tt class="py-name">load_dict</tt><tt class="py-op">[ [...]
+<a name="L1363"></a><tt class="py-lineno">1363</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">loop_frame</tt><tt class="py-op">.</tt><tt class="py-name">list</tt> <tt class="py-op">=</tt> <tt class="py-name">load_dict</tt><tt class="py-op">[</tt><tt class="py-string">'loop_list'</tt><tt class="py-op">]</tt> </tt>
+<a name="L1364"></a><tt class="py-lineno">1364</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">loop_frame</tt><tt class="py-op">.</tt><tt id="link-520" class="py-name"><a title="VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.update_now" class="py-name" href="#" onclick="return doclink('link-520', 'update_now', 'link-133');">update_now</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1365"></a><tt class="py-lineno">1365</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stim_frame</tt><tt class="py-op">.</tt><tt id="link-521" class="py-name" targets="Method VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.set_parameters_dict()=VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#set_parameters_dict"><a title="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.set_parameters_dict" cl [...]
+<a name="L1366"></a><tt class="py-lineno">1366</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">autosave</tt><tt class="py-op">.</tt><tt id="link-522" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-522', 'set', 'link-111');">set</a></tt><tt class="py-op">(</tt><tt class="py-name">load_dict</tt><tt class="py-op">[</tt><tt class="py-string">'autosave'</tt><tt class [...]
+<a name="L1367"></a><tt class="py-lineno">1367</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">autosave_dir</tt><tt class="py-op">.</tt><tt id="link-523" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-523', 'set', 'link-111');">set</a></tt><tt class="py-op">(</tt><tt class="py-name">load_dict</tt><tt class="py-op">[</tt><tt class="py-string">'autosave_dir'</tt>< [...]
+<a name="L1368"></a><tt class="py-lineno">1368</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">autosave_basename</tt><tt class="py-op">.</tt><tt id="link-524" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-524', 'set', 'link-111');">set</a></tt><tt class="py-op">(</tt><tt class="py-name">load_dict</tt><tt class="py-op">[</tt><tt class="py-string">'autosave_basen [...]
+<a name="L1369"></a><tt class="py-lineno">1369</tt>  <tt class="py-line"> </tt>
+<a name="L1370"></a><tt class="py-lineno">1370</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stim_frame</tt><tt class="py-op">.</tt><tt id="link-525" class="py-name" targets="Method VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.update_tk_vars()=VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame-class.html#update_tk_vars,Method VisionEgg.PyroApps.DropinGUI.DropinControlFrame.update_tk_vars()=VisionEgg.PyroApps.DropinGUI.D [...]
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.update_tk_vars
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.update_tk_vars
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.update_tk_vars
+VisionEgg.PyroApps.GridGUI.GridControlFrame.update_tk_vars
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.update_tk_vars
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.update_tk_vars
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.update_tk_vars
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.update_tk_vars" class="py-name" href="#" onclick="return doclink('link-525', 'update_tk_vars', 'link-525');">update_tk_vars</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1371"></a><tt class="py-lineno">1371</tt>  <tt class="py-line"> </tt>
+<a name="AppWindow.load_params"></a><div id="AppWindow.load_params-def"><a name="L1372"></a><tt class="py-lineno">1372</tt> <a class="py-toggle" href="#" id="AppWindow.load_params-toggle" onclick="return toggle('AppWindow.load_params');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.EPhysGUI.AppWindow-class.html#load_params">load_params</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt><tt class [...]
+</div><div id="AppWindow.load_params-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="AppWindow.load_params-expanded"><a name="L1373"></a><tt class="py-lineno">1373</tt>  <tt class="py-line">        <tt class="py-name">filename</tt> <tt class="py-op">=</tt> <tt id="link-526" class="py-name"><a title="VisionEgg.GUI.tkFileDialog" class="py-name" href="#" onclick="return doclink('link-526', 'tkFileDialog', 'link-9');">tkFileDialog</a></tt><tt class="py-op">.</tt> [...]
+<a name="L1374"></a><tt class="py-lineno">1374</tt>  <tt class="py-line">            <tt class="py-name">parent</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> </tt>
+<a name="L1375"></a><tt class="py-lineno">1375</tt>  <tt class="py-line">            <tt class="py-name">defaultextension</tt><tt class="py-op">=</tt><tt class="py-string">".py"</tt><tt class="py-op">,</tt> </tt>
+<a name="L1376"></a><tt class="py-lineno">1376</tt>  <tt class="py-line">            <tt class="py-name">filetypes</tt><tt class="py-op">=</tt><tt class="py-op">[</tt><tt class="py-op">(</tt><tt class="py-string">'Auto-saved parameter file'</tt><tt class="py-op">,</tt><tt class="py-string">'*.py'</tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1377"></a><tt class="py-lineno">1377</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">filename</tt><tt class="py-op">:</tt> </tt>
+<a name="L1378"></a><tt class="py-lineno">1378</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> </tt>
+<a name="L1379"></a><tt class="py-lineno">1379</tt>  <tt class="py-line">        <tt class="py-name">locals</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L1380"></a><tt class="py-lineno">1380</tt>  <tt class="py-line">        <tt class="py-name">load_dict</tt> <tt class="py-op">=</tt> <tt class="py-name">orig_load_dict</tt><tt class="py-op">.</tt><tt class="py-name">copy</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-comment"># make copy of default values</tt> </tt>
+<a name="L1381"></a><tt class="py-lineno">1381</tt>  <tt class="py-line">        <tt class="py-name">execfile</tt><tt class="py-op">(</tt><tt class="py-name">filename</tt><tt class="py-op">,</tt><tt class="py-name">locals</tt><tt class="py-op">,</tt><tt class="py-name">load_dict</tt><tt class="py-op">)</tt> <tt class="py-comment"># execute the file</tt> </tt>
+<a name="L1382"></a><tt class="py-lineno">1382</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">load_dict</tt><tt class="py-op">[</tt><tt class="py-string">'stim_type'</tt><tt class="py-op">]</tt> <tt class="py-op">!=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stim_frame</tt><tt class="py-op">.</tt><tt id="link-527" class="py-name"><a title="VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.get_shortname
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.get_shortname
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.get_shortname
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.get_shortname
+VisionEgg.PyroApps.GridGUI.GridControlFrame.get_shortname
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.get_shortname
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.get_shortname
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.get_shortname
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.get_shortname
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.get_shortname" class="py-name" href="#" onclick="return doclink('link-527', 'get_shortname', 'link-491');">get_shortname</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1383"></a><tt class="py-lineno">1383</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-528" class="py-name"><a title="VisionEgg.PyroApps.EPhysGUI.AppWindow.change_stimulus" class="py-name" href="#" onclick="return doclink('link-528', 'change_stimulus', 'link-443');">change_stimulus</a></tt><tt class="py-op">(</tt><tt class="py-name">new_stimkey</tt><tt class="py-op">=</tt><tt class="py-name">load_dict</tt><tt class="py-op">[ [...]
+<a name="L1384"></a><tt class="py-lineno">1384</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">loop_frame</tt><tt class="py-op">.</tt><tt class="py-name">list</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> <tt class="py-comment"># clear loop list</tt> </tt>
+<a name="L1385"></a><tt class="py-lineno">1385</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">loop_frame</tt><tt class="py-op">.</tt><tt id="link-529" class="py-name"><a title="VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.update_now" class="py-name" href="#" onclick="return doclink('link-529', 'update_now', 'link-133');">update_now</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1386"></a><tt class="py-lineno">1386</tt>  <tt class="py-line">        <tt class="py-name">new_params</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L1387"></a><tt class="py-lineno">1387</tt>  <tt class="py-line">        <tt class="py-name">exception_info</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L1388"></a><tt class="py-lineno">1388</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">param_name</tt> <tt class="py-keyword">in</tt> <tt class="py-name">dir</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stim_frame</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1389"></a><tt class="py-lineno">1389</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">param_name</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-number">2</tt><tt class="py-op">]</tt> <tt class="py-op">!=</tt> <tt class="py-string">"__"</tt><tt class="py-op">:</tt> </tt>
+<a name="L1390"></a><tt class="py-lineno">1390</tt>  <tt class="py-line">                <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L1391"></a><tt class="py-lineno">1391</tt>  <tt class="py-line">                    <tt class="py-name">new_params</tt><tt class="py-op">[</tt><tt class="py-name">param_name</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">load_dict</tt><tt class="py-op">[</tt><tt class="py-name">param_name</tt><tt class="py-op">]</tt> </tt>
+<a name="L1392"></a><tt class="py-lineno">1392</tt>  <tt class="py-line">                <tt class="py-keyword">except</tt> <tt class="py-name">Exception</tt><tt class="py-op">,</tt> <tt class="py-name">x</tt><tt class="py-op">:</tt> </tt>
+<a name="L1393"></a><tt class="py-lineno">1393</tt>  <tt class="py-line">                    <tt class="py-name">exception_info</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">exc_info</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> <tt class="py-comment"># don't die on exception</tt> </tt>
+<a name="L1394"></a><tt class="py-lineno">1394</tt>  <tt class="py-line">                <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1395"></a><tt class="py-lineno">1395</tt>  <tt class="py-line">                    <tt class="py-keyword">del</tt> <tt class="py-name">load_dict</tt><tt class="py-op">[</tt><tt class="py-name">param_name</tt><tt class="py-op">]</tt> </tt>
+<a name="L1396"></a><tt class="py-lineno">1396</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">exc_type</tt><tt class="py-op">,</tt> <tt class="py-name">exc_value</tt><tt class="py-op">,</tt> <tt class="py-name">exc_traceback</tt> <tt class="py-keyword">in</tt> <tt class="py-name">exception_info</tt><tt class="py-op">:</tt> </tt>
+<a name="L1397"></a><tt class="py-lineno">1397</tt>  <tt class="py-line">            <tt class="py-comment"># ignore actual traceback</tt> </tt>
+<a name="L1398"></a><tt class="py-lineno">1398</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt id="link-530" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-530', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-531" class="py-name"><a title="VisionEgg.GUI" class="py-name" href="#" onclick="return doclink('link-531', 'GUI', 'link-17');">GUI</a></tt><tt class="py-op">.</tt><tt id="link-532" cl [...]
+<a name="L1399"></a><tt class="py-lineno">1399</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stim_frame</tt><tt class="py-op">.</tt><tt id="link-533" class="py-name"><a title="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.set_parameters_dict" class="py-name" href="#" onclick="return doclink('link-533', 'set_parameters_dict', 'link-521');">set_parameters_dict</a></tt><tt class="py-op">(</tt> <tt class="py-name">new_param [...]
+<a name="L1400"></a><tt class="py-lineno">1400</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">autosave_basename</tt><tt class="py-op">.</tt><tt id="link-534" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-534', 'set', 'link-111');">set</a></tt><tt class="py-op">(</tt><tt class="py-name">load_dict</tt><tt class="py-op">[</tt><tt class="py-string">'stim_type'</tt [...]
+<a name="L1401"></a><tt class="py-lineno">1401</tt>  <tt class="py-line"> </tt>
+<a name="L1402"></a><tt class="py-lineno">1402</tt>  <tt class="py-line">        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L1403"></a><tt class="py-lineno">1403</tt>  <tt class="py-line">            <tt class="py-name">override_t_abs_sec</tt> <tt class="py-op">=</tt> <tt class="py-name">load_dict</tt><tt class="py-op">[</tt><tt class="py-string">'go_loop_start_time_abs_sec'</tt><tt class="py-op">]</tt> </tt>
+<a name="L1404"></a><tt class="py-lineno">1404</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt> <tt class="py-name">Exception</tt><tt class="py-op">,</tt> <tt class="py-name">x</tt><tt class="py-op">:</tt> </tt>
+<a name="L1405"></a><tt class="py-lineno">1405</tt>  <tt class="py-line">            <tt id="link-535" class="py-name"><a title="VisionEgg.GUI.tkMessageBox" class="py-name" href="#" onclick="return doclink('link-535', 'tkMessageBox', 'link-8');">tkMessageBox</a></tt><tt class="py-op">.</tt><tt class="py-name">showwarning</tt><tt class="py-op">(</tt><tt class="py-string">"No absolute time parameter"</tt><tt class="py-op">,</tt> </tt>
+<a name="L1406"></a><tt class="py-lineno">1406</tt>  <tt class="py-line">                                     <tt class="py-string">"No absolute time parameter when loading file"</tt><tt class="py-op">,</tt> </tt>
+<a name="L1407"></a><tt class="py-lineno">1407</tt>  <tt class="py-line">                                     <tt class="py-name">parent</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
+<a name="L1408"></a><tt class="py-lineno">1408</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1409"></a><tt class="py-lineno">1409</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">override_t_abs_on</tt><tt class="py-op">.</tt><tt id="link-536" class="py-name"><a title="VisionEgg.PyroClient.PyroClient.get" class="py-name" href="#" onclick="return doclink('link-536', 'get', 'link-185');">get</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><t [...]
+<a name="L1410"></a><tt class="py-lineno">1410</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">override_t_abs_on</tt><tt class="py-op">.</tt><tt id="link-537" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-537', 'set', 'link-111');">set</a></tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="L1411"></a><tt class="py-lineno">1411</tt>  <tt class="py-line">                <tt id="link-538" class="py-name"><a title="VisionEgg.GUI.tkMessageBox" class="py-name" href="#" onclick="return doclink('link-538', 'tkMessageBox', 'link-8');">tkMessageBox</a></tt><tt class="py-op">.</tt><tt class="py-name">showwarning</tt><tt class="py-op">(</tt><tt class="py-string">"Overriding absolute time parameter"</tt><tt class="py-op">,</tt> </tt>
+<a name="L1412"></a><tt class="py-lineno">1412</tt>  <tt class="py-line">                                         <tt class="py-string">"Overriding absolute time parameter on server. "</tt><tt class="py-op">+</tt>\ </tt>
+<a name="L1413"></a><tt class="py-lineno">1413</tt>  <tt class="py-line">                                         <tt class="py-string">"Remember to turn this option off (in Configure "</tt><tt class="py-op">+</tt>\ </tt>
+<a name="L1414"></a><tt class="py-lineno">1414</tt>  <tt class="py-line">                                         <tt class="py-string">"/ Calibrate menu) when done."</tt><tt class="py-op">,</tt> </tt>
+<a name="L1415"></a><tt class="py-lineno">1415</tt>  <tt class="py-line">                                         <tt class="py-name">parent</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
+<a name="L1416"></a><tt class="py-lineno">1416</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">override_t_abs_sec</tt><tt class="py-op">.</tt><tt id="link-539" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-539', 'set', 'link-111');">set</a></tt><tt class="py-op">(</tt><tt class="py-name">repr</tt><tt class="py-op">(</tt><tt class="py-name">override_t_abs_se [...]
+<a name="L1417"></a><tt class="py-lineno">1417</tt>  <tt class="py-line"> </tt>
+<a name="L1418"></a><tt class="py-lineno">1418</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stim_frame</tt><tt class="py-op">.</tt><tt id="link-540" class="py-name"><a title="VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.update_tk_vars
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.update_tk_vars
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.update_tk_vars
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.update_tk_vars
+VisionEgg.PyroApps.GridGUI.GridControlFrame.update_tk_vars
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.update_tk_vars
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.update_tk_vars
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.update_tk_vars
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.update_tk_vars" class="py-name" href="#" onclick="return doclink('link-540', 'update_tk_vars', 'link-525');">update_tk_vars</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1419"></a><tt class="py-lineno">1419</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">load_dict</tt> <tt class="py-comment"># return unused variables</tt> </tt>
+</div><a name="L1420"></a><tt class="py-lineno">1420</tt>  <tt class="py-line"> </tt>
+<a name="AppWindow.load_demoscript"></a><div id="AppWindow.load_demoscript-def"><a name="L1421"></a><tt class="py-lineno">1421</tt> <a class="py-toggle" href="#" id="AppWindow.load_demoscript-toggle" onclick="return toggle('AppWindow.load_demoscript');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.EPhysGUI.AppWindow-class.html#load_demoscript">load_demoscript</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class [...]
+</div><div id="AppWindow.load_demoscript-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="AppWindow.load_demoscript-expanded"><a name="L1422"></a><tt class="py-lineno">1422</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">demoscript_filename</tt> <tt class="py-op">=</tt> <tt id="link-541" class="py-name"><a title="VisionEgg.GUI.tkFileDialog" class="py-name" href="#" onclick="return doclink('link-541', ' [...]
+<a name="L1423"></a><tt class="py-lineno">1423</tt>  <tt class="py-line">            <tt class="py-name">parent</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> </tt>
+<a name="L1424"></a><tt class="py-lineno">1424</tt>  <tt class="py-line">            <tt class="py-name">defaultextension</tt><tt class="py-op">=</tt><tt class="py-string">".py"</tt><tt class="py-op">,</tt> </tt>
+<a name="L1425"></a><tt class="py-lineno">1425</tt>  <tt class="py-line">            <tt class="py-name">filetypes</tt><tt class="py-op">=</tt><tt class="py-op">[</tt><tt class="py-op">(</tt><tt class="py-string">'Vision Egg Demo Script'</tt><tt class="py-op">,</tt><tt class="py-string">'*.py'</tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1426"></a><tt class="py-lineno">1426</tt>  <tt class="py-line"> </tt>
+<a name="L1427"></a><tt class="py-lineno">1427</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">demoscript_filename</tt><tt class="py-op">:</tt> </tt>
+<a name="L1428"></a><tt class="py-lineno">1428</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> </tt>
+<a name="L1429"></a><tt class="py-lineno">1429</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1430"></a><tt class="py-lineno">1430</tt>  <tt class="py-line">            <tt class="py-comment"># make wait cursor</tt> </tt>
+<a name="L1431"></a><tt class="py-lineno">1431</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">root</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">winfo_toplevel</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1432"></a><tt class="py-lineno">1432</tt>  <tt class="py-line">            <tt class="py-name">old_cursor</tt> <tt class="py-op">=</tt> <tt class="py-name">root</tt><tt class="py-op">[</tt><tt class="py-string">"cursor"</tt><tt class="py-op">]</tt> </tt>
+<a name="L1433"></a><tt class="py-lineno">1433</tt>  <tt class="py-line">            <tt class="py-name">root</tt><tt class="py-op">[</tt><tt class="py-string">"cursor"</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-string">"watch"</tt> </tt>
+<a name="L1434"></a><tt class="py-lineno">1434</tt>  <tt class="py-line">            <tt class="py-name">root</tt><tt class="py-op">.</tt><tt id="link-542" class="py-name"><a title="VisionEgg.GUI.InfoFrame.update
+VisionEgg.GUI.ProgressBar.update
+VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.update
+VisionEgg.PyroApps.DropinServer.DropinMetaController.update
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.update
+VisionEgg.PyroApps.GridServer.GridMetaController.update
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.update
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.update
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.update
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.update
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.update
+VisionEgg.QuickTime.MovieTexture.update
+VisionEgg.Textures.Texture.update" class="py-name" href="#" onclick="return doclink('link-542', 'update', 'link-497');">update</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1435"></a><tt class="py-lineno">1435</tt>  <tt class="py-line">            <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L1436"></a><tt class="py-lineno">1436</tt>  <tt class="py-line">                <tt class="py-name">fd1</tt> <tt class="py-op">=</tt> <tt class="py-name">open</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">demoscript_filename</tt><tt class="py-op">,</tt> <tt class="py-string">'r'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1437"></a><tt class="py-lineno">1437</tt>  <tt class="py-line">                <tt class="py-name">demoscript</tt> <tt class="py-op">=</tt> <tt class="py-string">""</tt> </tt>
+<a name="L1438"></a><tt class="py-lineno">1438</tt>  <tt class="py-line"> </tt>
+<a name="L1439"></a><tt class="py-lineno">1439</tt>  <tt class="py-line">                <tt class="py-comment"># List of all variables.</tt> </tt>
+<a name="L1440"></a><tt class="py-lineno">1440</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-comment"># Each variable is a tuple of the form [x, y, z] where:</tt> </tt>
+<a name="L1441"></a><tt class="py-lineno">1441</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-comment"># x: variable type ID,</tt> </tt>
+<a name="L1442"></a><tt class="py-lineno">1442</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-comment"># y: variable name,</tt> </tt>
+<a name="L1443"></a><tt class="py-lineno">1443</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-comment"># z: variable value.</tt> </tt>
+<a name="L1444"></a><tt class="py-lineno">1444</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">vars_list</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L1445"></a><tt class="py-lineno">1445</tt>  <tt class="py-line"> </tt>
+<a name="L1446"></a><tt class="py-lineno">1446</tt>  <tt class="py-line">                <tt class="py-name">lines</tt> <tt class="py-op">=</tt> <tt class="py-name">fd1</tt><tt class="py-op">.</tt><tt class="py-name">read</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">splitlines</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1447"></a><tt class="py-lineno">1447</tt>  <tt class="py-line">                <tt class="py-name">keep_lines</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L1448"></a><tt class="py-lineno">1448</tt>  <tt class="py-line">                <tt class="py-keyword">while</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">lines</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1449"></a><tt class="py-lineno">1449</tt>  <tt class="py-line">                    <tt class="py-name">myString</tt> <tt class="py-op">=</tt> <tt class="py-name">lines</tt><tt class="py-op">.</tt><tt class="py-name">pop</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">)</tt> </tt>
+<a name="L1450"></a><tt class="py-lineno">1450</tt>  <tt class="py-line">                    <tt class="py-keyword">if</tt> <tt class="py-name">myString</tt><tt class="py-op">.</tt><tt class="py-name">find</tt><tt class="py-op">(</tt><tt class="py-string">"get_default_screen()"</tt><tt class="py-op">)</tt> <tt class="py-op">!=</tt> <tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">:</tt> </tt>
+<a name="L1451"></a><tt class="py-lineno">1451</tt>  <tt class="py-line">                        <tt class="py-name">append_flag</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L1452"></a><tt class="py-lineno">1452</tt>  <tt class="py-line">                    <tt class="py-keyword">elif</tt> <tt class="py-name">myString</tt><tt class="py-op">.</tt><tt class="py-name">find</tt><tt class="py-op">(</tt><tt class="py-string">"watch_exceptions()"</tt><tt class="py-op">)</tt> <tt class="py-op">!=</tt> <tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">:</tt> </tt>
+<a name="L1453"></a><tt class="py-lineno">1453</tt>  <tt class="py-line">                        <tt class="py-name">append_flag</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L1454"></a><tt class="py-lineno">1454</tt>  <tt class="py-line">                    <tt class="py-keyword">elif</tt> <tt class="py-name">myString</tt><tt class="py-op">.</tt><tt class="py-name">find</tt><tt class="py-op">(</tt><tt class="py-string">"start_default_logging()"</tt><tt class="py-op">)</tt> <tt class="py-op">!=</tt> <tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">:</tt> </tt>
+<a name="L1455"></a><tt class="py-lineno">1455</tt>  <tt class="py-line">                        <tt class="py-name">append_flag</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L1456"></a><tt class="py-lineno">1456</tt>  <tt class="py-line">                    <tt class="py-keyword">elif</tt> <tt class="py-name">myString</tt><tt class="py-op">.</tt><tt class="py-name">find</tt><tt class="py-op">(</tt><tt class="py-string">"#%f"</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt>
+<a name="L1457"></a><tt class="py-lineno">1457</tt>  <tt class="py-line">                        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">vars_list</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt id="link-543" class="py-name"><a title="VisionEgg.PyroApps.VarTypes" class="py-name" href="#" onclick="return doclink('link-543', 'VarTypes', 'link-50');">VarTypes</a></tt><tt class="py-op">.</tt><tt i [...]
+<a name="L1458"></a><tt class="py-lineno">1458</tt>  <tt class="py-line">                        <tt class="py-name">append_flag</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L1459"></a><tt class="py-lineno">1459</tt>  <tt class="py-line">                    <tt class="py-keyword">elif</tt> <tt class="py-name">myString</tt><tt class="py-op">.</tt><tt class="py-name">find</tt><tt class="py-op">(</tt><tt class="py-string">"#%i"</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt>
+<a name="L1460"></a><tt class="py-lineno">1460</tt>  <tt class="py-line">                        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">vars_list</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt id="link-545" class="py-name"><a title="VisionEgg.PyroApps.VarTypes" class="py-name" href="#" onclick="return doclink('link-545', 'VarTypes', 'link-50');">VarTypes</a></tt><tt class="py-op">.</tt><tt i [...]
+<a name="L1461"></a><tt class="py-lineno">1461</tt>  <tt class="py-line">                        <tt class="py-name">append_flag</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L1462"></a><tt class="py-lineno">1462</tt>  <tt class="py-line">                    <tt class="py-keyword">elif</tt> <tt class="py-name">myString</tt><tt class="py-op">.</tt><tt class="py-name">find</tt><tt class="py-op">(</tt><tt class="py-string">"#%s"</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt>
+<a name="L1463"></a><tt class="py-lineno">1463</tt>  <tt class="py-line">                        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">vars_list</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt id="link-547" class="py-name"><a title="VisionEgg.PyroApps.VarTypes" class="py-name" href="#" onclick="return doclink('link-547', 'VarTypes', 'link-50');">VarTypes</a></tt><tt class="py-op">.</tt><tt i [...]
+<a name="L1464"></a><tt class="py-lineno">1464</tt>  <tt class="py-line">                        <tt class="py-name">append_flag</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L1465"></a><tt class="py-lineno">1465</tt>  <tt class="py-line">                    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1466"></a><tt class="py-lineno">1466</tt>  <tt class="py-line">                        <tt class="py-name">append_flag</tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L1467"></a><tt class="py-lineno">1467</tt>  <tt class="py-line"> </tt>
+<a name="L1468"></a><tt class="py-lineno">1468</tt>  <tt class="py-line">                    <tt class="py-keyword">if</tt> <tt class="py-name">append_flag</tt> <tt class="py-op">==</tt> <tt class="py-number">1</tt><tt class="py-op">:</tt> </tt>
+<a name="L1469"></a><tt class="py-lineno">1469</tt>  <tt class="py-line">                        <tt class="py-name">keep_lines</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt> <tt class="py-name">myString</tt> <tt class="py-op">)</tt> </tt>
+<a name="L1470"></a><tt class="py-lineno">1470</tt>  <tt class="py-line"> </tt>
+<a name="L1471"></a><tt class="py-lineno">1471</tt>  <tt class="py-line">                <tt class="py-name">fd1</tt><tt class="py-op">.</tt><tt id="link-549" class="py-name" targets="Method VisionEgg.Core.Screen.close()=VisionEgg.Core.Screen-class.html#close"><a title="VisionEgg.Core.Screen.close" class="py-name" href="#" onclick="return doclink('link-549', 'close', 'link-549');">close</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1472"></a><tt class="py-lineno">1472</tt>  <tt class="py-line">                <tt class="py-name">demoscript</tt> <tt class="py-op">=</tt> <tt class="py-string">'\n'</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">keep_lines</tt><tt class="py-op">)</tt> </tt>
+<a name="L1473"></a><tt class="py-lineno">1473</tt>  <tt class="py-line"> </tt>
+<a name="L1474"></a><tt class="py-lineno">1474</tt>  <tt class="py-line">                <tt class="py-comment"># Client side AST. Only used to extract default values</tt> </tt>
+<a name="L1475"></a><tt class="py-lineno">1475</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-comment"># of elected variables:</tt> </tt>
+<a name="L1476"></a><tt class="py-lineno">1476</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L1477"></a><tt class="py-lineno">1477</tt>  <tt class="py-line">                    <tt class="py-name">AST</tt> <tt class="py-op">=</tt> <tt class="py-name">parser</tt><tt class="py-op">.</tt><tt class="py-name">suite</tt><tt class="py-op">(</tt><tt class="py-name">demoscript</tt><tt class="py-op">)</tt> </tt>
+<a name="L1478"></a><tt class="py-lineno">1478</tt>  <tt class="py-line"> </tt>
+<a name="L1479"></a><tt class="py-lineno">1479</tt>  <tt class="py-line">                    <tt class="py-keyword">for</tt> <tt class="py-name">var</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">vars_list</tt><tt class="py-op">:</tt> </tt>
+<a name="L1480"></a><tt class="py-lineno">1480</tt>  <tt class="py-line">                        <tt class="py-name">var_val</tt> <tt class="py-op">=</tt> <tt id="link-550" class="py-name"><a title="VisionEgg.PyroApps.AST_ext" class="py-name" href="#" onclick="return doclink('link-550', 'AST_ext', 'link-46');">AST_ext</a></tt><tt class="py-op">.</tt><tt id="link-551" class="py-name" targets="Function VisionEgg.PyroApps.AST_ext.extract_from_AST()=VisionEgg.PyroApps.AST_ext-module.html#ext [...]
+<a name="L1481"></a><tt class="py-lineno">1481</tt>  <tt class="py-line">                        <tt class="py-keyword">if</tt> <tt class="py-name">var</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt id="link-552" class="py-name"><a title="VisionEgg.PyroApps.VarTypes" class="py-name" href="#" onclick="return doclink('link-552', 'VarTypes', 'link-50');">VarTypes</a></tt><tt class="py-op">.</tt><tt id="link-553" class="py-name" [...]
+<a name="L1482"></a><tt class="py-lineno">1482</tt>  <tt class="py-line">                            <tt class="py-name">var_val</tt> <tt class="py-op">=</tt> <tt class="py-name">var_val</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">:</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">var_val</tt><tt class="py-op">)</tt> <tt class="py-op">-</tt> <tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
+<a name="L1483"></a><tt class="py-lineno">1483</tt>  <tt class="py-line">                        <tt class="py-name">var</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">var_val</tt><tt class="py-op">)</tt> </tt>
+<a name="L1484"></a><tt class="py-lineno">1484</tt>  <tt class="py-line"> </tt>
+<a name="L1485"></a><tt class="py-lineno">1485</tt>  <tt class="py-line">                    <tt class="py-keyword">del</tt> <tt class="py-name">AST</tt> <tt class="py-comment"># save memory</tt> </tt>
+<a name="L1486"></a><tt class="py-lineno">1486</tt>  <tt class="py-line"> </tt>
+<a name="L1487"></a><tt class="py-lineno">1487</tt>  <tt class="py-line">                    <tt class="py-comment"># unfortunately, sending an AST object over a Pyro</tt> </tt>
+<a name="L1488"></a><tt class="py-lineno">1488</tt>  <tt class="py-line"><tt class="py-comment"></tt>                    <tt class="py-comment"># connection has its complications... so we don't</tt> </tt>
+<a name="L1489"></a><tt class="py-lineno">1489</tt>  <tt class="py-line"><tt class="py-comment"></tt>                    <tt class="py-comment"># do it</tt> </tt>
+<a name="L1490"></a><tt class="py-lineno">1490</tt>  <tt class="py-line"><tt class="py-comment"></tt>                    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">ephys_server</tt><tt class="py-op">.</tt><tt id="link-554" class="py-name" targets="Method VisionEgg.PyroApps.EPhysServer.EPhysServer.build_AST()=VisionEgg.PyroApps.EPhysServer.EPhysServer-class.html#build_AST"><a title="VisionEgg.PyroApps.EPhysServer.EPhysServer.build_AST" class="py-name" href="# [...]
+<a name="L1491"></a><tt class="py-lineno">1491</tt>  <tt class="py-line"> </tt>
+<a name="L1492"></a><tt class="py-lineno">1492</tt>  <tt class="py-line">                    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-555" class="py-name"><a title="VisionEgg.PyroApps.EPhysGUI.AppWindow.change_stimulus" class="py-name" href="#" onclick="return doclink('link-555', 'change_stimulus', 'link-443');">change_stimulus</a></tt><tt class="py-op">(</tt><tt class="py-name">new_stimkey</tt><tt class="py-op">=</tt><tt class="py-string">"dropin_server"</tt><tt [...]
+<a name="L1493"></a><tt class="py-lineno">1493</tt>  <tt class="py-line"> </tt>
+<a name="L1494"></a><tt class="py-lineno">1494</tt>  <tt class="py-line">                <tt class="py-keyword">except</tt> <tt class="py-op">(</tt><tt class="py-name">parser</tt><tt class="py-op">.</tt><tt class="py-name">ParserError</tt><tt class="py-op">,</tt> <tt class="py-name">SyntaxError</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1495"></a><tt class="py-lineno">1495</tt>  <tt class="py-line">                    <tt id="link-556" class="py-name"><a title="VisionEgg.GUI.tkMessageBox" class="py-name" href="#" onclick="return doclink('link-556', 'tkMessageBox', 'link-8');">tkMessageBox</a></tt><tt class="py-op">.</tt><tt class="py-name">showerror</tt><tt class="py-op">(</tt><tt class="py-string">"Error"</tt><tt class="py-op">,</tt> <tt class="py-string">"Invalid demo script!"</tt><tt class="py-op">)</tt> </tt>
+<a name="L1496"></a><tt class="py-lineno">1496</tt>  <tt class="py-line">                    <tt class="py-name">err_fd</tt> <tt class="py-op">=</tt> <tt class="py-name">file</tt><tt class="py-op">(</tt><tt class="py-string">'/home/astraw/tmp/err.py'</tt><tt class="py-op">,</tt><tt class="py-name">mode</tt><tt class="py-op">=</tt><tt class="py-string">'w'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1497"></a><tt class="py-lineno">1497</tt>  <tt class="py-line">                    <tt class="py-name">err_fd</tt><tt class="py-op">.</tt><tt class="py-name">write</tt><tt class="py-op">(</tt><tt class="py-name">demoscript</tt><tt class="py-op">)</tt> </tt>
+<a name="L1498"></a><tt class="py-lineno">1498</tt>  <tt class="py-line">            <tt class="py-keyword">finally</tt><tt class="py-op">:</tt> </tt>
+<a name="L1499"></a><tt class="py-lineno">1499</tt>  <tt class="py-line">                <tt class="py-comment">#restore cursor</tt> </tt>
+<a name="L1500"></a><tt class="py-lineno">1500</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-name">root</tt><tt class="py-op">[</tt><tt class="py-string">"cursor"</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">old_cursor</tt> </tt>
+<a name="L1501"></a><tt class="py-lineno">1501</tt>  <tt class="py-line">                <tt class="py-name">root</tt><tt class="py-op">.</tt><tt id="link-557" class="py-name"><a title="VisionEgg.GUI.InfoFrame.update
+VisionEgg.GUI.ProgressBar.update
+VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.update
+VisionEgg.PyroApps.DropinServer.DropinMetaController.update
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.update
+VisionEgg.PyroApps.GridServer.GridMetaController.update
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.update
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.update
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.update
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.update
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.update
+VisionEgg.QuickTime.MovieTexture.update
+VisionEgg.Textures.Texture.update" class="py-name" href="#" onclick="return doclink('link-557', 'update', 'link-497');">update</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1502"></a><tt class="py-lineno">1502</tt>  <tt class="py-line"> </tt>
+<a name="AppWindow.launch_screen_pos"></a><div id="AppWindow.launch_screen_pos-def"><a name="L1503"></a><tt class="py-lineno">1503</tt> <a class="py-toggle" href="#" id="AppWindow.launch_screen_pos-toggle" onclick="return toggle('AppWindow.launch_screen_pos');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.EPhysGUI.AppWindow-class.html#launch_screen_pos">launch_screen_pos</a><tt class="py-op">(</tt><tt class="py-param">self</ [...]
+</div><div id="AppWindow.launch_screen_pos-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="AppWindow.launch_screen_pos-expanded"><a name="L1504"></a><tt class="py-lineno">1504</tt>  <tt class="py-line">        <tt class="py-name">dialog</tt> <tt class="py-op">=</tt> <tt id="link-558" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-558', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt c [...]
+<a name="L1505"></a><tt class="py-lineno">1505</tt>  <tt class="py-line">        <tt class="py-name">frame</tt> <tt class="py-op">=</tt> <tt id="link-559" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-559', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-560" class="py-name"><a title="VisionEgg.PyroApps" class="py-name" href="#" onclick="return doclink('link-560', 'PyroApps', 'link-14');">PyroApps</a></tt><tt c [...]
+<a name="L1506"></a><tt class="py-lineno">1506</tt>  <tt class="py-line">                                                                                <tt class="py-name">auto_connect</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py-op">,</tt> </tt>
+<a name="L1507"></a><tt class="py-lineno">1507</tt>  <tt class="py-line">                                                                                <tt class="py-name">server_hostname</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">server_hostname</tt><tt class="py-op">,</tt> </tt>
+<a name="L1508"></a><tt class="py-lineno">1508</tt>  <tt class="py-line">                                                                                <tt class="py-name">server_port</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">server_port</tt><tt class="py-op">)</tt> </tt>
+<a name="L1509"></a><tt class="py-lineno">1509</tt>  <tt class="py-line">        <tt class="py-name">frame</tt><tt class="py-op">.</tt><tt class="py-name">winfo_toplevel</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-563" class="py-name"><a title="VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.title
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.title
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.title
+VisionEgg.PyroApps.GridGUI.GridControlFrame.title
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.title
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.title
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.title
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.title" class="py-name" href="#" onclick="return doclink('link-563', 'title', 'link-102');">title</a></tt><tt class="py-op">(</tt><tt class="py-string">"3D Calibration - Vision Egg"</tt><tt class="py-op">)</tt> </tt>
+<a name="L1510"></a><tt class="py-lineno">1510</tt>  <tt class="py-line">        <tt class="py-name">frame</tt><tt class="py-op">.</tt><tt class="py-name">pack</tt><tt class="py-op">(</tt><tt class="py-name">expand</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py-op">,</tt><tt class="py-name">fill</tt><tt class="py-op">=</tt><tt id="link-564" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-564', 'Tkinter', 'link [...]
+</div><a name="L1511"></a><tt class="py-lineno">1511</tt>  <tt class="py-line"> </tt>
+<a name="AppWindow.launch_stim_onset_cal"></a><div id="AppWindow.launch_stim_onset_cal-def"><a name="L1512"></a><tt class="py-lineno">1512</tt> <a class="py-toggle" href="#" id="AppWindow.launch_stim_onset_cal-toggle" onclick="return toggle('AppWindow.launch_stim_onset_cal');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.EPhysGUI.AppWindow-class.html#launch_stim_onset_cal">launch_stim_onset_cal</a><tt class="py-op">(</tt><tt [...]
+</div><div id="AppWindow.launch_stim_onset_cal-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="AppWindow.launch_stim_onset_cal-expanded"><a name="L1513"></a><tt class="py-lineno">1513</tt>  <tt class="py-line">        <tt class="py-name">dialog</tt> <tt class="py-op">=</tt> <tt id="link-565" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-565', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</ [...]
+<a name="L1514"></a><tt class="py-lineno">1514</tt>  <tt class="py-line">        <tt class="py-name">frame</tt> <tt class="py-op">=</tt> <tt id="link-566" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-566', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Frame</tt><tt class="py-op">(</tt><tt class="py-name">dialog</tt><tt class="py-op">)</tt> </tt>
+<a name="L1515"></a><tt class="py-lineno">1515</tt>  <tt class="py-line">        <tt class="py-name">frame</tt><tt class="py-op">.</tt><tt class="py-name">winfo_toplevel</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-567" class="py-name"><a title="VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.title
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.title
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.title
+VisionEgg.PyroApps.GridGUI.GridControlFrame.title
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.title
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.title
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.title
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.title" class="py-name" href="#" onclick="return doclink('link-567', 'title', 'link-102');">title</a></tt><tt class="py-op">(</tt><tt class="py-string">"Timing Calibration - Vision Egg"</tt><tt class="py-op">)</tt> </tt>
+<a name="L1516"></a><tt class="py-lineno">1516</tt>  <tt class="py-line">        <tt id="link-568" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-568', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">frame</tt><tt class="py-op">,</tt> </tt>
+<a name="L1517"></a><tt class="py-lineno">1517</tt>  <tt class="py-line">                      <tt class="py-name">font</tt><tt class="py-op">=</tt><tt class="py-op">(</tt><tt class="py-string">"Helvetica"</tt><tt class="py-op">,</tt><tt class="py-number">12</tt><tt class="py-op">,</tt><tt class="py-string">"bold"</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L1518"></a><tt class="py-lineno">1518</tt>  <tt class="py-line">                      <tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Stimulus onset timing"</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">,</tt><tt class="py-name">column</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt cl [...]
+<a name="L1519"></a><tt class="py-lineno">1519</tt>  <tt class="py-line">        <tt id="link-569" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-569', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">frame</tt><tt class="py-op">,</tt> </tt>
+<a name="L1520"></a><tt class="py-lineno">1520</tt>  <tt class="py-line">                      <tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Use a light detector to verify the onset of a trial."</tt> </tt>
+<a name="L1521"></a><tt class="py-lineno">1521</tt>  <tt class="py-line">                      <tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py-op">,</tt><tt class="py-name">column</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">)</tt> </tt>
+<a name="L1522"></a><tt class="py-lineno">1522</tt>  <tt class="py-line">        <tt id="link-570" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-570', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Checkbutton</tt><tt class="py-op">(</tt> <tt class="py-name">frame</tt><tt class="py-op">,</tt> </tt>
+<a name="L1523"></a><tt class="py-lineno">1523</tt>  <tt class="py-line">                             <tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Black box (always) with white box (during trial)"</tt><tt class="py-op">,</tt> </tt>
+<a name="L1524"></a><tt class="py-lineno">1524</tt>  <tt class="py-line">                             <tt class="py-name">variable</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stim_onset_cal_tk_var</tt><tt class="py-op">,</tt> </tt>
+<a name="L1525"></a><tt class="py-lineno">1525</tt>  <tt class="py-line">                             <tt class="py-name">command</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-571" class="py-name" targets="Method VisionEgg.PyroApps.EPhysGUI.AppWindow.update_stim_onset_cal()=VisionEgg.PyroApps.EPhysGUI.AppWindow-class.html#update_stim_onset_cal"><a title="VisionEgg.PyroApps.EPhysGUI.AppWindow.update_stim_onset_cal" class="py-name" href="#" o [...]
+<a name="L1526"></a><tt class="py-lineno">1526</tt>  <tt class="py-line"> </tt>
+<a name="L1527"></a><tt class="py-lineno">1527</tt>  <tt class="py-line">        <tt class="py-name">x</tt><tt class="py-op">,</tt><tt class="py-name">y</tt><tt class="py-op">,</tt><tt class="py-name">width</tt><tt class="py-op">,</tt><tt class="py-name">height</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">ephys_server</tt><tt class="py-op">.</tt><tt id="link-572" class="py-name" targets="Method VisionEgg.PyroApps.EPhysServer.EPhys [...]
+<a name="L1528"></a><tt class="py-lineno">1528</tt>  <tt class="py-line"> </tt>
+<a name="L1529"></a><tt class="py-lineno">1529</tt>  <tt class="py-line">        <tt class="py-name">location_frame</tt> <tt class="py-op">=</tt> <tt id="link-573" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-573', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Frame</tt><tt class="py-op">(</tt><tt class="py-name">frame</tt><tt class="py-op">)</tt> </tt>
+<a name="L1530"></a><tt class="py-lineno">1530</tt>  <tt class="py-line">        <tt class="py-name">location_frame</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-number">3</tt><tt class="py-op">,</tt><tt class="py-name">column</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">)</tt> </tt>
+<a name="L1531"></a><tt class="py-lineno">1531</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stim_onset_x</tt> <tt class="py-op">=</tt> <tt id="link-574" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-574', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">DoubleVar</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1532"></a><tt class="py-lineno">1532</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stim_onset_x</tt><tt class="py-op">.</tt><tt id="link-575" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-575', 'set', 'link-111');">set</a></tt><tt class="py-op">(</tt><tt class="py-name">x</tt><tt class="py-op">)</tt> </tt>
+<a name="L1533"></a><tt class="py-lineno">1533</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stim_onset_y</tt> <tt class="py-op">=</tt> <tt id="link-576" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-576', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">DoubleVar</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1534"></a><tt class="py-lineno">1534</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stim_onset_y</tt><tt class="py-op">.</tt><tt id="link-577" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-577', 'set', 'link-111');">set</a></tt><tt class="py-op">(</tt><tt class="py-name">y</tt><tt class="py-op">)</tt> </tt>
+<a name="L1535"></a><tt class="py-lineno">1535</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stim_onset_width</tt> <tt class="py-op">=</tt> <tt id="link-578" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-578', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">DoubleVar</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1536"></a><tt class="py-lineno">1536</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stim_onset_width</tt><tt class="py-op">.</tt><tt id="link-579" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-579', 'set', 'link-111');">set</a></tt><tt class="py-op">(</tt><tt class="py-name">width</tt><tt class="py-op">)</tt> </tt>
+<a name="L1537"></a><tt class="py-lineno">1537</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stim_onset_height</tt> <tt class="py-op">=</tt> <tt id="link-580" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-580', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">DoubleVar</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1538"></a><tt class="py-lineno">1538</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stim_onset_height</tt><tt class="py-op">.</tt><tt id="link-581" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-581', 'set', 'link-111');">set</a></tt><tt class="py-op">(</tt><tt class="py-name">height</tt><tt class="py-op">)</tt> </tt>
+<a name="L1539"></a><tt class="py-lineno">1539</tt>  <tt class="py-line"> </tt>
+<a name="L1540"></a><tt class="py-lineno">1540</tt>  <tt class="py-line">        <tt id="link-582" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-582', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt> <tt class="py-name">location_frame</tt><tt class="py-op">,</tt> <tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Center X:"</tt><tt class= [...]
+<a name="L1541"></a><tt class="py-lineno">1541</tt>  <tt class="py-line">        <tt id="link-583" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-583', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Entry</tt><tt class="py-op">(</tt> <tt class="py-name">location_frame</tt><tt class="py-op">,</tt> <tt class="py-name">textvariable</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class=" [...]
+<a name="L1542"></a><tt class="py-lineno">1542</tt>  <tt class="py-line">        <tt id="link-584" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-584', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt> <tt class="py-name">location_frame</tt><tt class="py-op">,</tt> <tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Center Y:"</tt><tt class= [...]
+<a name="L1543"></a><tt class="py-lineno">1543</tt>  <tt class="py-line">        <tt id="link-585" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-585', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Entry</tt><tt class="py-op">(</tt> <tt class="py-name">location_frame</tt><tt class="py-op">,</tt> <tt class="py-name">textvariable</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class=" [...]
+<a name="L1544"></a><tt class="py-lineno">1544</tt>  <tt class="py-line">        <tt id="link-586" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-586', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt> <tt class="py-name">location_frame</tt><tt class="py-op">,</tt> <tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Width:"</tt><tt class="py [...]
+<a name="L1545"></a><tt class="py-lineno">1545</tt>  <tt class="py-line">        <tt id="link-587" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-587', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Entry</tt><tt class="py-op">(</tt> <tt class="py-name">location_frame</tt><tt class="py-op">,</tt> <tt class="py-name">textvariable</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class=" [...]
+<a name="L1546"></a><tt class="py-lineno">1546</tt>  <tt class="py-line">        <tt id="link-588" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-588', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt> <tt class="py-name">location_frame</tt><tt class="py-op">,</tt> <tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Height:"</tt><tt class="p [...]
+<a name="L1547"></a><tt class="py-lineno">1547</tt>  <tt class="py-line">        <tt id="link-589" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-589', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Entry</tt><tt class="py-op">(</tt> <tt class="py-name">location_frame</tt><tt class="py-op">,</tt> <tt class="py-name">textvariable</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class=" [...]
+<a name="L1548"></a><tt class="py-lineno">1548</tt>  <tt class="py-line"> </tt>
+<a name="L1549"></a><tt class="py-lineno">1549</tt>  <tt class="py-line">        <tt id="link-590" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-590', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Button</tt><tt class="py-op">(</tt> <tt class="py-name">frame</tt><tt class="py-op">,</tt> </tt>
+<a name="L1550"></a><tt class="py-lineno">1550</tt>  <tt class="py-line">                        <tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"update position and size"</tt><tt class="py-op">,</tt> </tt>
+<a name="L1551"></a><tt class="py-lineno">1551</tt>  <tt class="py-line">                        <tt class="py-name">command</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-591" class="py-name" targets="Method VisionEgg.PyroApps.EPhysGUI.AppWindow.set_stim_onset_cal_position()=VisionEgg.PyroApps.EPhysGUI.AppWindow-class.html#set_stim_onset_cal_position"><a title="VisionEgg.PyroApps.EPhysGUI.AppWindow.set_stim_onset_cal_position" class="py-nam [...]
+<a name="L1552"></a><tt class="py-lineno">1552</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-592" class="py-name"><a title="VisionEgg.PyroApps.EPhysGUI.AppWindow.set_stim_onset_cal_position" class="py-name" href="#" onclick="return doclink('link-592', 'set_stim_onset_cal_position', 'link-591');">set_stim_onset_cal_position</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-comment"># call it once to send server our [...]
+<a name="L1553"></a><tt class="py-lineno">1553</tt>  <tt class="py-line">        <tt class="py-name">frame</tt><tt class="py-op">.</tt><tt class="py-name">pack</tt><tt class="py-op">(</tt><tt class="py-name">expand</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py-op">,</tt><tt class="py-name">fill</tt><tt class="py-op">=</tt><tt id="link-593" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-593', 'Tkinter', 'link [...]
+</div><a name="L1554"></a><tt class="py-lineno">1554</tt>  <tt class="py-line"> </tt>
+<a name="AppWindow.launch_gamma_panel"></a><div id="AppWindow.launch_gamma_panel-def"><a name="L1555"></a><tt class="py-lineno">1555</tt> <a class="py-toggle" href="#" id="AppWindow.launch_gamma_panel-toggle" onclick="return toggle('AppWindow.launch_gamma_panel');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.EPhysGUI.AppWindow-class.html#launch_gamma_panel">launch_gamma_panel</a><tt class="py-op">(</tt><tt class="py-param"> [...]
+</div><div id="AppWindow.launch_gamma_panel-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="AppWindow.launch_gamma_panel-expanded"><a name="L1556"></a><tt class="py-lineno">1556</tt>  <tt class="py-line">        <tt class="py-name">dialog</tt> <tt class="py-op">=</tt> <tt id="link-594" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-594', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt [...]
+<a name="L1557"></a><tt class="py-lineno">1557</tt>  <tt class="py-line">        <tt class="py-name">frame</tt> <tt class="py-op">=</tt> <tt id="link-595" class="py-name" targets="Class VisionEgg.PyroApps.EPhysGUI.GammaFrame=VisionEgg.PyroApps.EPhysGUI.GammaFrame-class.html"><a title="VisionEgg.PyroApps.EPhysGUI.GammaFrame" class="py-name" href="#" onclick="return doclink('link-595', 'GammaFrame', 'link-595');">GammaFrame</a></tt><tt class="py-op">(</tt><tt class="py-name">dialog</tt><tt [...]
+<a name="L1558"></a><tt class="py-lineno">1558</tt>  <tt class="py-line">                           <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">ephys_server</tt><tt class="py-op">)</tt> </tt>
+<a name="L1559"></a><tt class="py-lineno">1559</tt>  <tt class="py-line">        <tt class="py-name">frame</tt><tt class="py-op">.</tt><tt class="py-name">pack</tt><tt class="py-op">(</tt><tt class="py-name">expand</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py-op">,</tt><tt class="py-name">fill</tt><tt class="py-op">=</tt><tt id="link-596" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-596', 'Tkinter', 'link [...]
+</div><a name="L1560"></a><tt class="py-lineno">1560</tt>  <tt class="py-line"> </tt>
+<a name="AppWindow.set_autosave_dir"></a><div id="AppWindow.set_autosave_dir-def"><a name="L1561"></a><tt class="py-lineno">1561</tt> <a class="py-toggle" href="#" id="AppWindow.set_autosave_dir-toggle" onclick="return toggle('AppWindow.set_autosave_dir');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.EPhysGUI.AppWindow-class.html#set_autosave_dir">set_autosave_dir</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt [...]
+</div><div id="AppWindow.set_autosave_dir-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="AppWindow.set_autosave_dir-expanded"><a name="L1562"></a><tt class="py-lineno">1562</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">autosave_dir</tt><tt class="py-op">.</tt><tt id="link-597" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-597', ' [...]
+</div><a name="L1563"></a><tt class="py-lineno">1563</tt>  <tt class="py-line"> </tt>
+<a name="AppWindow.reset_autosave_basename"></a><div id="AppWindow.reset_autosave_basename-def"><a name="L1564"></a><tt class="py-lineno">1564</tt> <a class="py-toggle" href="#" id="AppWindow.reset_autosave_basename-toggle" onclick="return toggle('AppWindow.reset_autosave_basename');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.EPhysGUI.AppWindow-class.html#reset_autosave_basename">reset_autosave_basename</a><tt class="py-o [...]
+</div><div id="AppWindow.reset_autosave_basename-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="AppWindow.reset_autosave_basename-expanded"><a name="L1565"></a><tt class="py-lineno">1565</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">autosave_basename</tt><tt class="py-op">.</tt><tt id="link-599" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return do [...]
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.get_shortname
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.get_shortname
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.get_shortname
+VisionEgg.PyroApps.GridGUI.GridControlFrame.get_shortname
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.get_shortname
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.get_shortname
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.get_shortname
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.get_shortname
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.get_shortname" class="py-name" href="#" onclick="return doclink('link-600', 'get_shortname', 'link-491');">get_shortname</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">)</tt> </tt>
+</div><a name="L1566"></a><tt class="py-lineno">1566</tt>  <tt class="py-line"> </tt>
+<a name="AppWindow.update_stim_onset_cal"></a><div id="AppWindow.update_stim_onset_cal-def"><a name="L1567"></a><tt class="py-lineno">1567</tt> <a class="py-toggle" href="#" id="AppWindow.update_stim_onset_cal-toggle" onclick="return toggle('AppWindow.update_stim_onset_cal');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.EPhysGUI.AppWindow-class.html#update_stim_onset_cal">update_stim_onset_cal</a><tt class="py-op">(</tt><tt [...]
+</div><div id="AppWindow.update_stim_onset_cal-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="AppWindow.update_stim_onset_cal-expanded"><a name="L1568"></a><tt class="py-lineno">1568</tt>  <tt class="py-line">        <tt class="py-name">on</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stim_onset_cal_tk_var</tt><tt class="py-op">.</tt><tt id="link-601" class="py-name"><a title="VisionEgg.PyroClient.Pyro [...]
+<a name="L1569"></a><tt class="py-lineno">1569</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">ephys_server</tt><tt class="py-op">.</tt><tt id="link-602" class="py-name" targets="Method VisionEgg.PyroApps.EPhysServer.EPhysServer.set_stim_onset_cal()=VisionEgg.PyroApps.EPhysServer.EPhysServer-class.html#set_stim_onset_cal"><a title="VisionEgg.PyroApps.EPhysServer.EPhysServer.set_stim_onset_cal" class="py-name" href="#" onclick="re [...]
+</div><a name="L1570"></a><tt class="py-lineno">1570</tt>  <tt class="py-line"> </tt>
+<a name="AppWindow.set_stim_onset_cal_position"></a><div id="AppWindow.set_stim_onset_cal_position-def"><a name="L1571"></a><tt class="py-lineno">1571</tt> <a class="py-toggle" href="#" id="AppWindow.set_stim_onset_cal_position-toggle" onclick="return toggle('AppWindow.set_stim_onset_cal_position');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.EPhysGUI.AppWindow-class.html#set_stim_onset_cal_position">set_stim_onset_cal_pos [...]
+</div><div id="AppWindow.set_stim_onset_cal_position-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="AppWindow.set_stim_onset_cal_position-expanded"><a name="L1572"></a><tt class="py-lineno">1572</tt>  <tt class="py-line">        <tt class="py-name">x</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stim_onset_x</tt><tt class="py-op">.</tt><tt id="link-603" class="py-name"><a title="VisionEgg.PyroClient.Py [...]
+<a name="L1573"></a><tt class="py-lineno">1573</tt>  <tt class="py-line">        <tt class="py-name">y</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stim_onset_y</tt><tt class="py-op">.</tt><tt id="link-604" class="py-name"><a title="VisionEgg.PyroClient.PyroClient.get" class="py-name" href="#" onclick="return doclink('link-604', 'get', 'link-185');">get</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1574"></a><tt class="py-lineno">1574</tt>  <tt class="py-line">        <tt class="py-name">width</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stim_onset_width</tt><tt class="py-op">.</tt><tt id="link-605" class="py-name"><a title="VisionEgg.PyroClient.PyroClient.get" class="py-name" href="#" onclick="return doclink('link-605', 'get', 'link-185');">get</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1575"></a><tt class="py-lineno">1575</tt>  <tt class="py-line">        <tt class="py-name">height</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stim_onset_height</tt><tt class="py-op">.</tt><tt id="link-606" class="py-name"><a title="VisionEgg.PyroClient.PyroClient.get" class="py-name" href="#" onclick="return doclink('link-606', 'get', 'link-185');">get</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1576"></a><tt class="py-lineno">1576</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">ephys_server</tt><tt class="py-op">.</tt><tt id="link-607" class="py-name" targets="Method VisionEgg.PyroApps.EPhysServer.EPhysServer.set_stim_onset_cal_location()=VisionEgg.PyroApps.EPhysServer.EPhysServer-class.html#set_stim_onset_cal_location"><a title="VisionEgg.PyroApps.EPhysServer.EPhysServer.set_stim_onset_cal_location" class="py [...]
+</div><a name="L1577"></a><tt class="py-lineno">1577</tt>  <tt class="py-line"> </tt>
+<a name="L1578"></a><tt class="py-lineno">1578</tt>  <tt class="py-line"> </tt>
+<a name="AppWindow.do_loops"></a><div id="AppWindow.do_loops-def"><a name="L1579"></a><tt class="py-lineno">1579</tt> <a class="py-toggle" href="#" id="AppWindow.do_loops-toggle" onclick="return toggle('AppWindow.do_loops');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.EPhysGUI.AppWindow-class.html#do_loops">do_loops</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="AppWindow.do_loops-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="AppWindow.do_loops-expanded"><a name="L1580"></a><tt class="py-lineno">1580</tt>  <tt class="py-line">        <tt class="py-name">super_loop_list</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">loop_frame</tt><tt class="py-op">.</tt><tt id="link-609" class="py-name" targets="Method VisionEgg.PyroApps.EPhysGUI.ScrollListFrame [...]
+<a name="L1581"></a><tt class="py-lineno">1581</tt>  <tt class="py-line">        <tt class="py-comment"># "super_loop_list" is a list of lists, each of which, a</tt> </tt>
+<a name="L1582"></a><tt class="py-lineno">1582</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># "loop_list", contains "loop" class objects</tt> </tt>
+<a name="L1583"></a><tt class="py-lineno">1583</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># eg. [[a], [b, c], [d]]</tt> </tt>
+<a name="L1584"></a><tt class="py-lineno">1584</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># Need to test that "get_list_uncontained()" is returning a list of lists!</tt> </tt>
+<a name="L1585"></a><tt class="py-lineno">1585</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">global</tt> <tt class="py-name">need_rest_period</tt> </tt>
+<a name="L1586"></a><tt class="py-lineno">1586</tt>  <tt class="py-line">        <tt class="py-name">need_rest_period</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L1587"></a><tt class="py-lineno">1587</tt>  <tt class="py-line"> </tt>
+<a name="L1588"></a><tt class="py-lineno">1588</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">super_loop_list</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1589"></a><tt class="py-lineno">1589</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> </tt>
+<a name="L1590"></a><tt class="py-lineno">1590</tt>  <tt class="py-line"> </tt>
+<a name="L1591"></a><tt class="py-lineno">1591</tt>  <tt class="py-line">        <tt class="py-comment">############################################################</tt> </tt>
+<a name="L1592"></a><tt class="py-lineno">1592</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">def</tt> <tt class="py-def-name">process_loops</tt><tt class="py-op">(</tt><tt class="py-param">depth</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> <tt class="py-comment"># recursive processing of loops</tt> </tt>
+<a name="L1593"></a><tt class="py-lineno">1593</tt>  <tt class="py-line"> </tt>
+<a name="L1594"></a><tt class="py-lineno">1594</tt>  <tt class="py-line">            <tt class="py-keyword">class</tt> <tt class="py-def-name">LoopInfoFrame</tt><tt class="py-op">(</tt><tt class="py-base-class">Tkinter</tt><tt class="py-op">.</tt><tt class="py-base-class">Frame</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1595"></a><tt class="py-lineno">1595</tt>  <tt class="py-line">                <tt class="py-keyword">def</tt> <tt class="py-def-name">__init__</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">master</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-param">kw</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1596"></a><tt class="py-lineno">1596</tt>  <tt class="py-line">                    <tt id="link-610" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-610', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Frame</tt><tt class="py-op">.</tt><tt id="link-611" class="py-name"><a title="VisionEgg.ClassWithParameters.__init__
+VisionEgg.Configuration.Config.__init__
+VisionEgg.Core.FixationSpot.__init__
+VisionEgg.Core.FrameTimer.__init__
+VisionEgg.Core.ModelView.__init__
+VisionEgg.Core.OrthographicProjection.__init__
+VisionEgg.Core.OrthographicProjectionNoZClip.__init__
+VisionEgg.Core.PerspectiveProjection.__init__
+VisionEgg.Core.Projection.__init__
+VisionEgg.Core.ProjectionBaseClass.__init__
+VisionEgg.Core.Screen.__init__
+VisionEgg.Core.SimplePerspectiveProjection.__init__
+VisionEgg.Core.Stimulus.__init__
+VisionEgg.Core.Viewport.__init__
+VisionEgg.Daq.Channel.__init__
+VisionEgg.Daq.DaqMode.__init__
+VisionEgg.Daq.Device.__init__
+VisionEgg.Daq.Functionality.__init__
+VisionEgg.Daq.SignalType.__init__
+VisionEgg.DaqKeyboard.KeyboardTriggerInController.__init__
+VisionEgg.DaqLPT.LPTChannel.__init__
+VisionEgg.DaqLPT.LPTDevice.__init__
+VisionEgg.DaqLPT.LPTTriggerInController.__init__
+VisionEgg.DaqLPT.LPTTriggerOutController.__init__
+VisionEgg.Deprecated.Message.__init__
+VisionEgg.Dots.DotArea2D.__init__
+VisionEgg.FlowControl.ConstantController.__init__
+VisionEgg.FlowControl.Controller.__init__
+VisionEgg.FlowControl.EncapsulatedController.__init__
+VisionEgg.FlowControl.EvalStringController.__init__
+VisionEgg.FlowControl.ExecStringController.__init__
+VisionEgg.FlowControl.FunctionController.__init__
+VisionEgg.FlowControl.Presentation.__init__
+VisionEgg.GLTrace.Wrapper.__init__
+VisionEgg.GUI.AppWindow.__init__
+VisionEgg.GUI.GetKeypressDialog.__init__
+VisionEgg.GUI.GraphicsConfigurationWindow.__init__
+VisionEgg.GUI.InfoFrame.__init__
+VisionEgg.GUI.ProgressBar.__init__
+VisionEgg.GUI.ToplevelDialog.__init__
+VisionEgg.Gratings.SinGrating2D.__init__
+VisionEgg.Gratings.SinGrating3D.__init__
+VisionEgg.MoreStimuli.Arrow.__init__
+VisionEgg.MoreStimuli.FilledCircle.__init__
+VisionEgg.MoreStimuli.Rectangle3D.__init__
+VisionEgg.MoreStimuli.Target2D.__init__
+VisionEgg.ParameterTypes.AnyOf.__init__
+VisionEgg.ParameterTypes.Instance.__init__
+VisionEgg.ParameterTypes.Sequence.__init__
+VisionEgg.ParameterTypes.SubClass.__init__
+VisionEgg.PyroApps.AST_ext.AST_Visitor.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalMetaParameters.__init__
+VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.__init__
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.__init__
+VisionEgg.PyroApps.DropinGUI.DropinMetaParameters.__init__
+VisionEgg.PyroApps.DropinServer.DropinMetaController.__init__
+VisionEgg.PyroApps.EPhysGUI.AppWindow.__init__
+VisionEgg.PyroApps.EPhysGUI.BarButton.__init__
+VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase.__init__
+VisionEgg.PyroApps.EPhysGUI.GammaFrame.__init__
+VisionEgg.PyroApps.EPhysGUI.ImageSequenceLauncher.__init__
+VisionEgg.PyroApps.EPhysGUI.Loop.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopContainedObject.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopParamDialog.__init__
+VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.__init__
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.__init__
+VisionEgg.PyroApps.EPhysServer.EPhysServer.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingMetaParameters.__init__
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.GridGUI.GridControlFrame.__init__
+VisionEgg.PyroApps.GridGUI.GridMetaParameters.__init__
+VisionEgg.PyroApps.GridServer.GridMetaController.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetMetaParameters.__init__
+VisionEgg.PyroApps.MouseTargetServer.MousePositionController.__init__
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetOrientationController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetPositionController.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.CallbackEntry.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionParameters.__init__
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingMetaParameters.__init__
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumMetaParameters.__init__
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.__init__
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.__init__
+VisionEgg.PyroApps.TargetGUI.TargetMetaParameters.__init__
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.__init__
+VisionEgg.PyroClient.PyroClient.__init__
+VisionEgg.PyroHelpers.PyroConstantController.__init__
+VisionEgg.PyroHelpers.PyroEncapsulatedController.__init__
+VisionEgg.PyroHelpers.PyroEvalStringController.__init__
+VisionEgg.PyroHelpers.PyroExecStringController.__init__
+VisionEgg.PyroHelpers.PyroListenController.__init__
+VisionEgg.PyroHelpers.PyroLocalDictController.__init__
+VisionEgg.PyroHelpers.PyroServer.__init__
+VisionEgg.QuickTime.MovieTexture.__init__
+VisionEgg.ResponseControl.KeyboardResponseController.__init__
+VisionEgg.ResponseControl.ResponseController.__init__
+VisionEgg.SphereMap.AzElGrid.__init__
+VisionEgg.SphereMap.SphereGrating.__init__
+VisionEgg.SphereMap.SphereMap.__init__
+VisionEgg.SphereMap.SphereWindow.__init__
+VisionEgg.TCPController.SocketListenController.__init__
+VisionEgg.TCPController.TCPController.__init__
+VisionEgg.TCPController.TCPServer.__init__
+VisionEgg.Text.BitmapText.__init__
+VisionEgg.Text.GlutTextBase.__init__
+VisionEgg.Text.StrokeText.__init__
+VisionEgg.Text.Text.__init__
+VisionEgg.Textures.FixationCross.__init__
+VisionEgg.Textures.Mask2D.__init__
+VisionEgg.Textures.SpinningDrum.__init__
+VisionEgg.Textures.Texture.__init__
+VisionEgg.Textures.TextureFromFile.__init__
+VisionEgg.Textures.TextureObject.__init__
+VisionEgg.Textures.TextureStimulusBaseClass.__init__
+VisionEgg.ThreeDeeMath.TransformMatrix.__init__
+VisionEgg.WrappedText.WrappedText.__init__
+VisionEgg.qtmovie.Movie.__init__
+VisionEgg.qtmovie.Rect.__init__" class="py-name" href="#" onclick="return doclink('link-611', '__init__', 'link-96');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt><tt class="py-name">master</tt><tt class="py-op">,</tt><tt class="py-op">**</tt><tt class="py-name">kw</tt><tt class="py-op">)</tt> </tt>
+<a name="L1597"></a><tt class="py-lineno">1597</tt>  <tt class="py-line">                    <tt id="link-612" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-612', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> </tt>
+<a name="L1598"></a><tt class="py-lineno">1598</tt>  <tt class="py-line">                        <tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Doing sequence"</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">,</tt><tt class="py-name">column</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class=" [...]
+<a name="L1599"></a><tt class="py-lineno">1599</tt>  <tt class="py-line">                    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">status_tk_var</tt> <tt class="py-op">=</tt> <tt id="link-613" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-613', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">StringVar</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1600"></a><tt class="py-lineno">1600</tt>  <tt class="py-line">                    <tt id="link-614" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-614', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> </tt>
+<a name="L1601"></a><tt class="py-lineno">1601</tt>  <tt class="py-line">                        <tt class="py-name">textvariable</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">status_tk_var</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py-op">,</tt> <tt class="py-name">column</tt><tt  [...]
+<a name="L1602"></a><tt class="py-lineno">1602</tt>  <tt class="py-line">                    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">cancel_asap</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L1603"></a><tt class="py-lineno">1603</tt>  <tt class="py-line">                    <tt id="link-615" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-615', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Button</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> </tt>
+<a name="L1604"></a><tt class="py-lineno">1604</tt>  <tt class="py-line">                        <tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Cancel"</tt><tt class="py-op">,</tt><tt class="py-name">command</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">cancel</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py- [...]
+<a name="L1605"></a><tt class="py-lineno">1605</tt>  <tt class="py-line">                    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">focus_set</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1606"></a><tt class="py-lineno">1606</tt>  <tt class="py-line">                    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">grab_set</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1607"></a><tt class="py-lineno">1607</tt>  <tt class="py-line">                <tt class="py-keyword">def</tt> <tt class="py-def-name">cancel</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">dummy_arg</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1608"></a><tt class="py-lineno">1608</tt>  <tt class="py-line">                    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">cancel_asap</tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt>
+</div></div><a name="L1609"></a><tt class="py-lineno">1609</tt>  <tt class="py-line"> </tt>
+<a name="L1610"></a><tt class="py-lineno">1610</tt>  <tt class="py-line">            <tt class="py-keyword">global</tt> <tt class="py-name">need_rest_period</tt> </tt>
+<a name="L1611"></a><tt class="py-lineno">1611</tt>  <tt class="py-line"> </tt>
+<a name="L1612"></a><tt class="py-lineno">1612</tt>  <tt class="py-line">            <tt class="py-keyword">global</tt> <tt class="py-name">loop_info_frame</tt> </tt>
+<a name="L1613"></a><tt class="py-lineno">1613</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">depth</tt> <tt class="py-op">==</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> <tt class="py-comment"># only make one LoopInfoFrame (when depth is 0, ie. first time)</tt> </tt>
+<a name="L1614"></a><tt class="py-lineno">1614</tt>  <tt class="py-line">                <tt class="py-name">top</tt> <tt class="py-op">=</tt> <tt id="link-616" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-616', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Toplevel</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
+<a name="L1615"></a><tt class="py-lineno">1615</tt>  <tt class="py-line">                <tt class="py-name">loop_info_frame</tt> <tt class="py-op">=</tt> <tt class="py-name">LoopInfoFrame</tt><tt class="py-op">(</tt><tt class="py-name">top</tt><tt class="py-op">)</tt> </tt>
+<a name="L1616"></a><tt class="py-lineno">1616</tt>  <tt class="py-line">                <tt class="py-name">loop_info_frame</tt><tt class="py-op">.</tt><tt class="py-name">pack</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1617"></a><tt class="py-lineno">1617</tt>  <tt class="py-line"> </tt>
+<a name="L1618"></a><tt class="py-lineno">1618</tt>  <tt class="py-line">            <tt class="py-name">loop_list</tt> <tt class="py-op">=</tt> <tt class="py-name">super_loop_list</tt><tt class="py-op">[</tt><tt class="py-name">depth</tt><tt class="py-op">]</tt> </tt>
+<a name="L1619"></a><tt class="py-lineno">1619</tt>  <tt class="py-line">            <tt class="py-comment">#print "current depth"</tt> </tt>
+<a name="L1620"></a><tt class="py-lineno">1620</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment">#print depth</tt> </tt>
+<a name="L1621"></a><tt class="py-lineno">1621</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment">#print "Loop?"</tt> </tt>
+<a name="L1622"></a><tt class="py-lineno">1622</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment">#print loop</tt> </tt>
+<a name="L1623"></a><tt class="py-lineno">1623</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">max_depth</tt> <tt class="py-op">=</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">super_loop_list</tt><tt class="py-op">)</tt><tt class="py-op">-</tt><tt class="py-number">1</tt> </tt>
+<a name="L1624"></a><tt class="py-lineno">1624</tt>  <tt class="py-line">            <tt class="py-comment">#print "max_depth"</tt> </tt>
+<a name="L1625"></a><tt class="py-lineno">1625</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment">#print max_depth</tt> </tt>
+<a name="L1626"></a><tt class="py-lineno">1626</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L1627"></a><tt class="py-lineno">1627</tt>  <tt class="py-line">            <tt class="py-name">loop</tt> <tt class="py-op">=</tt> <tt class="py-name">loop_list</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-617" class="py-name"><a title="VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase.get_contained" class="py-name" href="#" onclick="return doclink('link-617', 'get_contained', 'link-177');">get_contained</a></ [...]
+<a name="L1628"></a><tt class="py-lineno">1628</tt>  <tt class="py-line">            <tt class="py-comment"># "loop_list" is, for example: [a, b, c]</tt> </tt>
+<a name="L1629"></a><tt class="py-lineno">1629</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># ie. each element is an object of class "loop".</tt> </tt>
+<a name="L1630"></a><tt class="py-lineno">1630</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># If one element is done, then all other elements are effectively done, the way we've structured the lists to</tt> </tt>
+<a name="L1631"></a><tt class="py-lineno">1631</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># be (they all have same 'N' value).</tt> </tt>
+<a name="L1632"></a><tt class="py-lineno">1632</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L1633"></a><tt class="py-lineno">1633</tt>  <tt class="py-line">            <tt class="py-keyword">while</tt> <tt class="py-keyword">not</tt> <tt class="py-name">loop</tt><tt class="py-op">.</tt><tt id="link-618" class="py-name" targets="Method VisionEgg.PyroApps.EPhysGUI.Loop.is_done()=VisionEgg.PyroApps.EPhysGUI.Loop-class.html#is_done"><a title="VisionEgg.PyroApps.EPhysGUI.Loop.is_done" class="py-name" href="#" onclick="return doclink('link-618', 'is_done', 'link-618');">is_d [...]
+<a name="L1634"></a><tt class="py-lineno">1634</tt>  <tt class="py-line">                <tt class="py-keyword">for</tt> <tt class="py-name">loop_element</tt> <tt class="py-keyword">in</tt> <tt class="py-name">loop_list</tt><tt class="py-op">:</tt> </tt>
+<a name="L1635"></a><tt class="py-lineno">1635</tt>  <tt class="py-line">                    <tt class="py-keyword">if</tt> <tt class="py-name">loop_element</tt><tt class="py-op">.</tt><tt id="link-619" class="py-name"><a title="VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase.get_contained" class="py-name" href="#" onclick="return doclink('link-619', 'get_contained', 'link-177');">get_contained</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py- [...]
+<a name="L1636"></a><tt class="py-lineno">1636</tt>  <tt class="py-line">                        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stim_frame</tt><tt class="py-op">.</tt><tt id="link-620" class="py-name" targets="Method VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.set_loopable_variable()=VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#set_loopable_variable,Method VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFra [...]
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.set_loopable_variable" class="py-name" href="#" onclick="return doclink('link-620', 'set_loopable_variable', 'link-620');">set_loopable_variable</a></tt><tt class="py-op">(</tt><tt class="py-name">loop_element</tt><tt class="py-op">.</tt><tt id="link-621" class="py-name"><a title="VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase.get_contained" class="py-name" href="#" onclick="return doclink('link-621', 'get_contained', 'link [...]
+<a name="L1637"></a><tt class="py-lineno">1637</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">depth</tt> <tt class="py-op"><</tt> <tt class="py-name">max_depth</tt><tt class="py-op">:</tt> </tt>
+<a name="L1638"></a><tt class="py-lineno">1638</tt>  <tt class="py-line">                    <tt class="py-name">process_loops</tt><tt class="py-op">(</tt><tt class="py-name">depth</tt><tt class="py-op">+</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="L1639"></a><tt class="py-lineno">1639</tt>  <tt class="py-line">                <tt class="py-keyword">elif</tt> <tt class="py-name">depth</tt> <tt class="py-op">==</tt> <tt class="py-name">max_depth</tt><tt class="py-op">:</tt> <tt class="py-comment"># deepest level -- do the trial</tt> </tt>
+<a name="L1640"></a><tt class="py-lineno">1640</tt>  <tt class="py-line">                    <tt class="py-keyword">if</tt> <tt class="py-name">need_rest_period</tt><tt class="py-op">:</tt> </tt>
+<a name="L1641"></a><tt class="py-lineno">1641</tt>  <tt class="py-line">                        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">progress</tt><tt class="py-op">.</tt><tt class="py-name">labelText</tt> <tt class="py-op">=</tt> <tt class="py-string">"Resting"</tt> </tt>
+<a name="L1642"></a><tt class="py-lineno">1642</tt>  <tt class="py-line">                        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-624" class="py-name" targets="Method VisionEgg.PyroApps.EPhysGUI.AppWindow.sleep_with_progress()=VisionEgg.PyroApps.EPhysGUI.AppWindow-class.html#sleep_with_progress"><a title="VisionEgg.PyroApps.EPhysGUI.AppWindow.sleep_with_progress" class="py-name" href="#" onclick="return doclink('link-624', 'sleep_with_progress', 'link-624 [...]
+<a name="L1643"></a><tt class="py-lineno">1643</tt>  <tt class="py-line">                    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-625" class="py-name"><a title="VisionEgg.PyroApps.EPhysGUI.AppWindow.do_single_trial" class="py-name" href="#" onclick="return doclink('link-625', 'do_single_trial', 'link-474');">do_single_trial</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1644"></a><tt class="py-lineno">1644</tt>  <tt class="py-line">                    <tt class="py-name">need_rest_period</tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L1645"></a><tt class="py-lineno">1645</tt>  <tt class="py-line">                <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1646"></a><tt class="py-lineno">1646</tt>  <tt class="py-line">                    <tt class="py-keyword">raise</tt> <tt class="py-name">RuntimeError</tt><tt class="py-op">(</tt><tt class="py-string">"Called with max_depth==-1:"</tt><tt class="py-op">)</tt> </tt>
+<a name="L1647"></a><tt class="py-lineno">1647</tt>  <tt class="py-line">                <tt class="py-keyword">for</tt> <tt class="py-name">loop_element</tt> <tt class="py-keyword">in</tt> <tt class="py-name">loop_list</tt><tt class="py-op">:</tt> </tt>
+<a name="L1648"></a><tt class="py-lineno">1648</tt>  <tt class="py-line">                    <tt class="py-name">loop_element</tt><tt class="py-op">.</tt><tt id="link-626" class="py-name"><a title="VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase.get_contained" class="py-name" href="#" onclick="return doclink('link-626', 'get_contained', 'link-177');">get_contained</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-627" class="py-name" targets="Me [...]
+<a name="L1649"></a><tt class="py-lineno">1649</tt>  <tt class="py-line">            <tt class="py-keyword">for</tt> <tt class="py-name">loop_element</tt> <tt class="py-keyword">in</tt> <tt class="py-name">loop_list</tt><tt class="py-op">:</tt> </tt>
+<a name="L1650"></a><tt class="py-lineno">1650</tt>  <tt class="py-line">                <tt class="py-name">loop_element</tt><tt class="py-op">.</tt><tt id="link-628" class="py-name"><a title="VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase.get_contained" class="py-name" href="#" onclick="return doclink('link-628', 'get_contained', 'link-177');">get_contained</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-629" class="py-name" targets="Method [...]
+<a name="L1651"></a><tt class="py-lineno">1651</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">depth</tt> <tt class="py-op">==</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> <tt class="py-comment"># destroy LoopInfoFrame</tt> </tt>
+<a name="L1652"></a><tt class="py-lineno">1652</tt>  <tt class="py-line">                <tt class="py-name">top</tt><tt class="py-op">.</tt><tt id="link-630" class="py-name"><a title="VisionEgg.GUI.ToplevelDialog.destroy
+VisionEgg.PyroApps.EPhysGUI.AppWindow.destroy
+VisionEgg.PyroApps.EPhysGUI.LoopParamDialog.destroy" class="py-name" href="#" onclick="return doclink('link-630', 'destroy', 'link-316');">destroy</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1653"></a><tt class="py-lineno">1653</tt>  <tt class="py-line"> </tt>
+<a name="L1654"></a><tt class="py-lineno">1654</tt>  <tt class="py-line">        <tt class="py-comment">############################################################</tt> </tt>
+<a name="L1655"></a><tt class="py-lineno">1655</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">process_loops</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">)</tt> <tt class="py-comment"># start recursion on top level</tt> </tt>
+</div><a name="L1656"></a><tt class="py-lineno">1656</tt>  <tt class="py-line"> </tt>
+<a name="AppWindow.do_single_trial"></a><div id="AppWindow.do_single_trial-def"><a name="L1657"></a><tt class="py-lineno">1657</tt> <a class="py-toggle" href="#" id="AppWindow.do_single_trial-toggle" onclick="return toggle('AppWindow.do_single_trial');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.EPhysGUI.AppWindow-class.html#do_single_trial">do_single_trial</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class [...]
+</div><div id="AppWindow.do_single_trial-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="AppWindow.do_single_trial-expanded"><a name="L1658"></a><tt class="py-lineno">1658</tt>  <tt class="py-line">        <tt class="py-comment"># Get filename to save parameters</tt> </tt>
+<a name="L1659"></a><tt class="py-lineno">1659</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">autosave</tt><tt class="py-op">.</tt><tt id="link-631" class="py-name"><a title="VisionEgg.PyroClient.PyroClient.get" class="py-name" href="#" onclick="return doclink('link-631', 'get', 'link-185');">get</a></tt><tt class="py-op">(</tt><tt class=" [...]
+<a name="L1660"></a><tt class="py-lineno">1660</tt>  <tt class="py-line">            <tt class="py-name">file_stream</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> <tt class="py-comment"># not saving file</tt> </tt>
+<a name="L1661"></a><tt class="py-lineno">1661</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1662"></a><tt class="py-lineno">1662</tt>  <tt class="py-line">            <tt class="py-name">duration_sec</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stim_frame</tt><tt class="py-op">.</tt><tt id="link-632" class="py-name" targets="Method VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.get_duration_sec()=VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame-class.html#get_duration_sec,Method VisionEgg.PyroApps.Dropi [...]
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.get_duration_sec
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.get_duration_sec
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.get_duration_sec
+VisionEgg.PyroApps.GridGUI.GridControlFrame.get_duration_sec
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.get_duration_sec
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.get_duration_sec
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.get_duration_sec
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.get_duration_sec" class="py-name" href="#" onclick="return doclink('link-632', 'get_duration_sec', 'link-632');">get_duration_sec</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1663"></a><tt class="py-lineno">1663</tt>  <tt class="py-line">            <tt class="py-op">(</tt><tt class="py-name">year</tt><tt class="py-op">,</tt><tt class="py-name">month</tt><tt class="py-op">,</tt><tt class="py-name">day</tt><tt class="py-op">,</tt><tt class="py-name">hour24</tt><tt class="py-op">,</tt><tt class="py-name">min</tt><tt class="py-op">,</tt><tt class="py-name">sec</tt><tt class="py-op">)</tt> <tt class="py-op">=</tt> <tt class="py-name">time</tt><tt class= [...]
+<a name="L1664"></a><tt class="py-lineno">1664</tt>  <tt class="py-line">            <tt class="py-name">trial_time_str</tt> <tt class="py-op">=</tt> <tt class="py-string">"%04d%02d%02d_%02d%02d%02d"</tt><tt class="py-op">%</tt><tt class="py-op">(</tt><tt class="py-name">year</tt><tt class="py-op">,</tt><tt class="py-name">month</tt><tt class="py-op">,</tt><tt class="py-name">day</tt><tt class="py-op">,</tt><tt class="py-name">hour24</tt><tt class="py-op">,</tt><tt class="py-name">min</t [...]
+<a name="L1665"></a><tt class="py-lineno">1665</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">param_file_type_tk_var</tt><tt class="py-op">.</tt><tt id="link-633" class="py-name"><a title="VisionEgg.PyroClient.PyroClient.get" class="py-name" href="#" onclick="return doclink('link-633', 'get', 'link-185');">get</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <t [...]
+<a name="L1666"></a><tt class="py-lineno">1666</tt>  <tt class="py-line">                <tt class="py-comment"># Figure out filename to save parameters in</tt> </tt>
+<a name="L1667"></a><tt class="py-lineno">1667</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-name">filename</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">autosave_basename</tt><tt class="py-op">.</tt><tt id="link-634" class="py-name"><a title="VisionEgg.PyroClient.PyroClient.get" class="py-name" href="#" onclick="return doclink('link-634', 'get', 'link-185');">get</a></tt><tt class="py-op">(</t [...]
+<a name="L1668"></a><tt class="py-lineno">1668</tt>  <tt class="py-line">                <tt class="py-name">fullpath_filename</tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">path</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">autosave_dir</tt><tt class="py-op">.</tt><tt id="link-635" class="py-name"><a title="VisionEgg.PyroClien [...]
+<a name="L1669"></a><tt class="py-lineno">1669</tt>  <tt class="py-line">                <tt class="py-name">file_stream</tt> <tt class="py-op">=</tt> <tt class="py-name">open</tt><tt class="py-op">(</tt><tt class="py-name">fullpath_filename</tt><tt class="py-op">,</tt><tt class="py-string">"w"</tt><tt class="py-op">)</tt> </tt>
+<a name="L1670"></a><tt class="py-lineno">1670</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">param_file_type_tk_var</tt><tt class="py-op">.</tt><tt id="link-636" class="py-name"><a title="VisionEgg.PyroClient.PyroClient.get" class="py-name" href="#" onclick="return doclink('link-636', 'get', 'link-185');">get</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt>  [...]
+<a name="L1671"></a><tt class="py-lineno">1671</tt>  <tt class="py-line">                <tt class="py-comment"># Figure out filename to save results in</tt> </tt>
+<a name="L1672"></a><tt class="py-lineno">1672</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-name">filename</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">autosave_basename</tt><tt class="py-op">.</tt><tt id="link-637" class="py-name"><a title="VisionEgg.PyroClient.PyroClient.get" class="py-name" href="#" onclick="return doclink('link-637', 'get', 'link-185');">get</a></tt><tt class="py-op">(</t [...]
+<a name="L1673"></a><tt class="py-lineno">1673</tt>  <tt class="py-line">                <tt class="py-name">fullpath_filename</tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">path</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">autosave_dir</tt><tt class="py-op">.</tt><tt id="link-638" class="py-name"><a title="VisionEgg.PyroClien [...]
+<a name="L1674"></a><tt class="py-lineno">1674</tt>  <tt class="py-line">                <tt class="py-name">file_stream</tt> <tt class="py-op">=</tt> <tt class="py-name">open</tt><tt class="py-op">(</tt><tt class="py-name">fullpath_filename</tt><tt class="py-op">,</tt><tt class="py-string">"w"</tt><tt class="py-op">)</tt> </tt>
+<a name="L1675"></a><tt class="py-lineno">1675</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1676"></a><tt class="py-lineno">1676</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">'Unknown file format: "%s"'</tt><tt class="py-op">%</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">param_file_type_tk_var</tt><tt class="py-op">.</tt><tt id="link-639" class="py-name"><a title="VisionEgg.PyroClient.PyroClient.get" cla [...]
+<a name="L1677"></a><tt class="py-lineno">1677</tt>  <tt class="py-line"> </tt>
+<a name="L1678"></a><tt class="py-lineno">1678</tt>  <tt class="py-line">        <tt class="py-comment"># this class is broken into parts so it can be subclassed more easily</tt> </tt>
+<a name="L1679"></a><tt class="py-lineno">1679</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-640" class="py-name" targets="Method VisionEgg.PyroApps.EPhysGUI.AppWindow.do_single_trial_pre()=VisionEgg.PyroApps.EPhysGUI.AppWindow-class.html#do_single_trial_pre"><a title="VisionEgg.PyroApps.EPhysGUI.AppWindow.do_single_trial_pre" class="py-name" href="#" onclick="return doclink('link-640', 'do_single_trial_pre [...]
+<a name="L1680"></a><tt class="py-lineno">1680</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-641" class="py-name" targets="Method VisionEgg.PyroApps.EPhysGUI.AppWindow.do_single_trial_work()=VisionEgg.PyroApps.EPhysGUI.AppWindow-class.html#do_single_trial_work"><a title="VisionEgg.PyroApps.EPhysGUI.AppWindow.do_single_trial_work" class="py-name" href="#" onclick="return doclink('link-641', 'do_single_trial_work', 'link-641');">do_sing [...]
+<a name="L1681"></a><tt class="py-lineno">1681</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-642" class="py-name" targets="Method VisionEgg.PyroApps.EPhysGUI.AppWindow.do_single_trial_post()=VisionEgg.PyroApps.EPhysGUI.AppWindow-class.html#do_single_trial_post"><a title="VisionEgg.PyroApps.EPhysGUI.AppWindow.do_single_trial_post" class="py-name" href="#" onclick="return doclink('link-642', 'do_single_trial_post', 'link-642');">do_sing [...]
+<a name="L1682"></a><tt class="py-lineno">1682</tt>  <tt class="py-line"> </tt>
+<a name="L1683"></a><tt class="py-lineno">1683</tt>  <tt class="py-line">        <tt class="py-comment"># Close parameter save file</tt> </tt>
+<a name="L1684"></a><tt class="py-lineno">1684</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">autosave</tt><tt class="py-op">.</tt><tt id="link-643" class="py-name"><a title="VisionEgg.PyroClient.PyroClient.get" class="py-name" href="#" onclick="return doclink('link-643', 'get', 'link-185');">get</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">: [...]
+<a name="L1685"></a><tt class="py-lineno">1685</tt>  <tt class="py-line">            <tt class="py-name">file_stream</tt><tt class="py-op">.</tt><tt id="link-644" class="py-name"><a title="VisionEgg.Core.Screen.close" class="py-name" href="#" onclick="return doclink('link-644', 'close', 'link-549');">close</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1686"></a><tt class="py-lineno">1686</tt>  <tt class="py-line"> </tt>
+<a name="AppWindow.do_single_trial_pre"></a><div id="AppWindow.do_single_trial_pre-def"><a name="L1687"></a><tt class="py-lineno">1687</tt> <a class="py-toggle" href="#" id="AppWindow.do_single_trial_pre-toggle" onclick="return toggle('AppWindow.do_single_trial_pre');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.EPhysGUI.AppWindow-class.html#do_single_trial_pre">do_single_trial_pre</a><tt class="py-op">(</tt><tt class="py-p [...]
+</div><div id="AppWindow.do_single_trial_pre-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="AppWindow.do_single_trial_pre-expanded"><a name="L1688"></a><tt class="py-lineno">1688</tt>  <tt class="py-line">        <tt class="py-comment"># Ensure that we have the most up-to-date values</tt> </tt>
+<a name="L1689"></a><tt class="py-lineno">1689</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stim_frame</tt><tt class="py-op">.</tt><tt id="link-645" class="py-name"><a title="VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.send_values
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.send_values
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.send_values
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.send_values
+VisionEgg.PyroApps.GridGUI.GridControlFrame.send_values
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.send_values
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.send_values
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.send_values
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.send_values
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.send_values" class="py-name" href="#" onclick="return doclink('link-645', 'send_values', 'link-505');">send_values</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-comment"># copy values from Tkinter to self.stim_frame.meta_params and send to server</tt> </tt>
+<a name="L1690"></a><tt class="py-lineno">1690</tt>  <tt class="py-line"> </tt>
+<a name="L1691"></a><tt class="py-lineno">1691</tt>  <tt class="py-line">        <tt class="py-comment"># if file_stream is None, open default file</tt> </tt>
+<a name="L1692"></a><tt class="py-lineno">1692</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">autosave</tt><tt class="py-op">.</tt><tt id="link-646" class="py-name"><a title="VisionEgg.PyroClient.PyroClient.get" class="py-name" href="#" onclick="return doclink('link-646', 'get', 'link-185');">get</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">: [...]
+<a name="L1693"></a><tt class="py-lineno">1693</tt>  <tt class="py-line">            <tt class="py-name">duration_sec</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stim_frame</tt><tt class="py-op">.</tt><tt id="link-647" class="py-name"><a title="VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.get_duration_sec
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.get_duration_sec
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.get_duration_sec
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.get_duration_sec
+VisionEgg.PyroApps.GridGUI.GridControlFrame.get_duration_sec
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.get_duration_sec
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.get_duration_sec
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.get_duration_sec
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.get_duration_sec" class="py-name" href="#" onclick="return doclink('link-647', 'get_duration_sec', 'link-632');">get_duration_sec</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1694"></a><tt class="py-lineno">1694</tt>  <tt class="py-line">            <tt class="py-op">(</tt><tt class="py-name">year</tt><tt class="py-op">,</tt><tt class="py-name">month</tt><tt class="py-op">,</tt><tt class="py-name">day</tt><tt class="py-op">,</tt><tt class="py-name">hour24</tt><tt class="py-op">,</tt><tt class="py-name">min</tt><tt class="py-op">,</tt><tt class="py-name">sec</tt><tt class="py-op">)</tt> <tt class="py-op">=</tt> <tt class="py-name">time</tt><tt class= [...]
+<a name="L1695"></a><tt class="py-lineno">1695</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">param_file_type_tk_var</tt><tt class="py-op">.</tt><tt id="link-648" class="py-name"><a title="VisionEgg.PyroClient.PyroClient.get" class="py-name" href="#" onclick="return doclink('link-648', 'get', 'link-185');">get</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <t [...]
+<a name="L1696"></a><tt class="py-lineno">1696</tt>  <tt class="py-line">                <tt class="py-name">file_stream</tt><tt class="py-op">.</tt><tt class="py-name">write</tt><tt class="py-op">(</tt><tt class="py-string">"stim_type = '%s'\n"</tt><tt class="py-op">%</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stim_frame</tt><tt class="py-op">.</tt><tt id="link-649" class="py-name"><a title="VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.get_shortname
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.get_shortname
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.get_shortname
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.get_shortname
+VisionEgg.PyroApps.GridGUI.GridControlFrame.get_shortname
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.get_shortname
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.get_shortname
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.get_shortname
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.get_shortname
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.get_shortname" class="py-name" href="#" onclick="return doclink('link-649', 'get_shortname', 'link-491');">get_shortname</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1697"></a><tt class="py-lineno">1697</tt>  <tt class="py-line">                <tt class="py-name">file_stream</tt><tt class="py-op">.</tt><tt class="py-name">write</tt><tt class="py-op">(</tt><tt class="py-string">"finished_time = %04d%02d%02d%02d%02d%02d\n"</tt><tt class="py-op">%</tt><tt class="py-op">(</tt><tt class="py-name">year</tt><tt class="py-op">,</tt><tt class="py-name">month</tt><tt class="py-op">,</tt><tt class="py-name">day</tt><tt class="py-op">,</tt><tt class=" [...]
+<a name="L1698"></a><tt class="py-lineno">1698</tt>  <tt class="py-line">                <tt class="py-name">parameter_list</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stim_frame</tt><tt class="py-op">.</tt><tt id="link-650" class="py-name" targets="Method VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.get_parameters_as_py_strings()=VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#get_parameters_as_py_strin [...]
+<a name="L1699"></a><tt class="py-lineno">1699</tt>  <tt class="py-line">                <tt class="py-keyword">for</tt> <tt class="py-name">parameter_name</tt><tt class="py-op">,</tt> <tt class="py-name">parameter_value</tt> <tt class="py-keyword">in</tt> <tt class="py-name">parameter_list</tt><tt class="py-op">:</tt> </tt>
+<a name="L1700"></a><tt class="py-lineno">1700</tt>  <tt class="py-line">                    <tt class="py-name">file_stream</tt><tt class="py-op">.</tt><tt class="py-name">write</tt><tt class="py-op">(</tt><tt class="py-string">"%s = %s\n"</tt><tt class="py-op">%</tt><tt class="py-op">(</tt><tt class="py-name">parameter_name</tt><tt class="py-op">,</tt> <tt class="py-name">parameter_value</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1701"></a><tt class="py-lineno">1701</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">param_file_type_tk_var</tt><tt class="py-op">.</tt><tt id="link-651" class="py-name"><a title="VisionEgg.PyroClient.PyroClient.get" class="py-name" href="#" onclick="return doclink('link-651', 'get', 'link-185');">get</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt>  [...]
+<a name="L1702"></a><tt class="py-lineno">1702</tt>  <tt class="py-line">                <tt class="py-name">file_stream</tt><tt class="py-op">.</tt><tt class="py-name">write</tt><tt class="py-op">(</tt><tt class="py-string">"stim_type = '%s';\n"</tt><tt class="py-op">%</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stim_frame</tt><tt class="py-op">.</tt><tt id="link-652" class="py-name"><a title="VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.get_shortname
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.get_shortname
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.get_shortname
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.get_shortname
+VisionEgg.PyroApps.GridGUI.GridControlFrame.get_shortname
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.get_shortname
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.get_shortname
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.get_shortname
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.get_shortname
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.get_shortname" class="py-name" href="#" onclick="return doclink('link-652', 'get_shortname', 'link-491');">get_shortname</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1703"></a><tt class="py-lineno">1703</tt>  <tt class="py-line">                <tt class="py-name">file_stream</tt><tt class="py-op">.</tt><tt class="py-name">write</tt><tt class="py-op">(</tt><tt class="py-string">"finished_time = %04d%02d%02d%02d%02d%02d;\n"</tt><tt class="py-op">%</tt><tt class="py-op">(</tt><tt class="py-name">year</tt><tt class="py-op">,</tt><tt class="py-name">month</tt><tt class="py-op">,</tt><tt class="py-name">day</tt><tt class="py-op">,</tt><tt class= [...]
+<a name="L1704"></a><tt class="py-lineno">1704</tt>  <tt class="py-line">                <tt class="py-name">parameter_list</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stim_frame</tt><tt class="py-op">.</tt><tt id="link-653" class="py-name" targets="Method VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.get_parameters_as_m_strings()=VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#get_parameters_as_m_strings [...]
+<a name="L1705"></a><tt class="py-lineno">1705</tt>  <tt class="py-line">                <tt class="py-keyword">for</tt> <tt class="py-name">parameter_name</tt><tt class="py-op">,</tt> <tt class="py-name">parameter_value</tt> <tt class="py-keyword">in</tt> <tt class="py-name">parameter_list</tt><tt class="py-op">:</tt> </tt>
+<a name="L1706"></a><tt class="py-lineno">1706</tt>  <tt class="py-line">                    <tt class="py-name">file_stream</tt><tt class="py-op">.</tt><tt class="py-name">write</tt><tt class="py-op">(</tt><tt class="py-string">"%s = %s;\n"</tt><tt class="py-op">%</tt><tt class="py-op">(</tt><tt class="py-name">parameter_name</tt><tt class="py-op">,</tt> <tt class="py-name">parameter_value</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1707"></a><tt class="py-lineno">1707</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1708"></a><tt class="py-lineno">1708</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> <tt class="py-name">RuntimeError</tt><tt class="py-op">(</tt><tt class="py-string">"Unknown parameter file type"</tt><tt class="py-op">)</tt> <tt class="py-comment"># Should never get here</tt> </tt>
+</div><a name="L1709"></a><tt class="py-lineno">1709</tt>  <tt class="py-line"> </tt>
+<a name="AppWindow.do_single_trial_work"></a><div id="AppWindow.do_single_trial_work-def"><a name="L1710"></a><tt class="py-lineno">1710</tt> <a class="py-toggle" href="#" id="AppWindow.do_single_trial_work-toggle" onclick="return toggle('AppWindow.do_single_trial_work');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.EPhysGUI.AppWindow-class.html#do_single_trial_work">do_single_trial_work</a><tt class="py-op">(</tt><tt class [...]
+</div><div id="AppWindow.do_single_trial_work-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="AppWindow.do_single_trial_work-expanded"><a name="L1711"></a><tt class="py-lineno">1711</tt>  <tt class="py-line">        <tt class="py-comment"># make wait cursor</tt> </tt>
+<a name="L1712"></a><tt class="py-lineno">1712</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">root</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">winfo_toplevel</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1713"></a><tt class="py-lineno">1713</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">old_cursor</tt> <tt class="py-op">=</tt> <tt class="py-name">root</tt><tt class="py-op">[</tt><tt class="py-string">"cursor"</tt><tt class="py-op">]</tt> </tt>
+<a name="L1714"></a><tt class="py-lineno">1714</tt>  <tt class="py-line">        <tt class="py-name">root</tt><tt class="py-op">[</tt><tt class="py-string">"cursor"</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-string">"watch"</tt> </tt>
+<a name="L1715"></a><tt class="py-lineno">1715</tt>  <tt class="py-line">        <tt class="py-name">root</tt><tt class="py-op">.</tt><tt id="link-654" class="py-name"><a title="VisionEgg.GUI.InfoFrame.update
+VisionEgg.GUI.ProgressBar.update
+VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.update
+VisionEgg.PyroApps.DropinServer.DropinMetaController.update
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.update
+VisionEgg.PyroApps.GridServer.GridMetaController.update
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.update
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.update
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.update
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.update
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.update
+VisionEgg.QuickTime.MovieTexture.update
+VisionEgg.Textures.Texture.update" class="py-name" href="#" onclick="return doclink('link-654', 'update', 'link-497');">update</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1716"></a><tt class="py-lineno">1716</tt>  <tt class="py-line">        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L1717"></a><tt class="py-lineno">1717</tt>  <tt class="py-line"> </tt>
+<a name="L1718"></a><tt class="py-lineno">1718</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">progress</tt><tt class="py-op">.</tt><tt class="py-name">labelText</tt> <tt class="py-op">=</tt> <tt class="py-string">"Doing trial..."</tt> </tt>
+<a name="L1719"></a><tt class="py-lineno">1719</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">progress</tt><tt class="py-op">.</tt><tt id="link-655" class="py-name"><a title="VisionEgg.GUI.ProgressBar.updateProgress" class="py-name" href="#" onclick="return doclink('link-655', 'updateProgress', 'link-480');">updateProgress</a></tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">)</tt> </tt>
+<a name="L1720"></a><tt class="py-lineno">1720</tt>  <tt class="py-line"> </tt>
+<a name="L1721"></a><tt class="py-lineno">1721</tt>  <tt class="py-line">            <tt class="py-name">duration_sec</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stim_frame</tt><tt class="py-op">.</tt><tt id="link-656" class="py-name"><a title="VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.get_duration_sec
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.get_duration_sec
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.get_duration_sec
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.get_duration_sec
+VisionEgg.PyroApps.GridGUI.GridControlFrame.get_duration_sec
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.get_duration_sec
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.get_duration_sec
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.get_duration_sec
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.get_duration_sec" class="py-name" href="#" onclick="return doclink('link-656', 'get_duration_sec', 'link-632');">get_duration_sec</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1722"></a><tt class="py-lineno">1722</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">duration_sec</tt> <tt class="py-op">></tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt>
+<a name="L1723"></a><tt class="py-lineno">1723</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">override_t_abs_on</tt><tt class="py-op">.</tt><tt id="link-657" class="py-name"><a title="VisionEgg.PyroClient.PyroClient.get" class="py-name" href="#" onclick="return doclink('link-657', 'get', 'link-185');">get</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1724"></a><tt class="py-lineno">1724</tt>  <tt class="py-line">                    <tt class="py-name">new_t_abs_str</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">override_t_abs_sec</tt><tt class="py-op">.</tt><tt id="link-658" class="py-name"><a title="VisionEgg.PyroClient.PyroClient.get" class="py-name" href="#" onclick="return doclink('link-658', 'get', 'link-185');">get</a></tt><tt class="py-op">(</tt><tt class="py-op [...]
+<a name="L1725"></a><tt class="py-lineno">1725</tt>  <tt class="py-line">                    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">ephys_server</tt><tt class="py-op">.</tt><tt id="link-659" class="py-name" targets="Method VisionEgg.PyroApps.EPhysServer.EPhysServer.set_override_t_abs_sec()=VisionEgg.PyroApps.EPhysServer.EPhysServer-class.html#set_override_t_abs_sec"><a title="VisionEgg.PyroApps.EPhysServer.EPhysServer.set_override_t_abs_sec" class="py-na [...]
+<a name="L1726"></a><tt class="py-lineno">1726</tt>  <tt class="py-line"> </tt>
+<a name="L1727"></a><tt class="py-lineno">1727</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stim_frame</tt><tt class="py-op">.</tt><tt id="link-660" class="py-name" targets="Method VisionEgg.FlowControl.Presentation.go()=VisionEgg.FlowControl.Presentation-class.html#go,Method VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.go()=VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController-class.html#go,Method Visio [...]
+VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.go
+VisionEgg.PyroApps.DropinServer.DropinMetaController.go
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.go
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.go
+VisionEgg.PyroApps.GridServer.GridMetaController.go
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.go
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.go
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.go
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.go
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.go" class="py-name" href="#" onclick="return doclink('link-660', 'go', 'link-660');">go</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-comment"># start server going, but this return control immediately</tt> </tt>
+<a name="L1728"></a><tt class="py-lineno">1728</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-661" class="py-name"><a title="VisionEgg.PyroApps.EPhysGUI.AppWindow.sleep_with_progress" class="py-name" href="#" onclick="return doclink('link-661', 'sleep_with_progress', 'link-624');">sleep_with_progress</a></tt><tt class="py-op">(</tt><tt class="py-name">duration_sec</tt><tt class="py-op">)</tt> </tt>
+<a name="L1729"></a><tt class="py-lineno">1729</tt>  <tt class="py-line">                <tt class="py-keyword">while</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">ephys_server</tt><tt class="py-op">.</tt><tt id="link-662" class="py-name" targets="Method VisionEgg.FlowControl.Presentation.is_in_go_loop()=VisionEgg.FlowControl.Presentation-class.html#is_in_go_loop,Method VisionEgg.PyroApps.EPhysServer.EPhysServer.is_in_go_loop()=VisionEgg.PyroApps.EPhysServ [...]
+VisionEgg.PyroApps.EPhysServer.EPhysServer.is_in_go_loop" class="py-name" href="#" onclick="return doclink('link-662', 'is_in_go_loop', 'link-662');">is_in_go_loop</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> <tt class="py-comment"># make sure go loop is really done</tt> </tt>
+<a name="L1730"></a><tt class="py-lineno">1730</tt>  <tt class="py-line">                    <tt class="py-name">time</tt><tt class="py-op">.</tt><tt class="py-name">sleep</tt><tt class="py-op">(</tt><tt class="py-number">0.1</tt><tt class="py-op">)</tt> <tt class="py-comment"># wait 100 msec for end of go loop and try again</tt> </tt>
+<a name="L1731"></a><tt class="py-lineno">1731</tt>  <tt class="py-line"> </tt>
+<a name="L1732"></a><tt class="py-lineno">1732</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">notify_on_dropped_frames</tt><tt class="py-op">.</tt><tt id="link-663" class="py-name"><a title="VisionEgg.PyroClient.PyroClient.get" class="py-name" href="#" onclick="return doclink('link-663', 'get', 'link-185');">get</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1733"></a><tt class="py-lineno">1733</tt>  <tt class="py-line">                    <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">ephys_server</tt><tt class="py-op">.</tt><tt id="link-664" class="py-name" targets="Method VisionEgg.FlowControl.Presentation.were_frames_dropped_in_last_go_loop()=VisionEgg.FlowControl.Presentation-class.html#were_frames_dropped_in_last_go_loop,Method VisionEgg.PyroApps.EPhysServer.EPhysServer [...]
+VisionEgg.PyroApps.EPhysServer.EPhysServer.were_frames_dropped_in_last_go_loop" class="py-name" href="#" onclick="return doclink('link-664', 'were_frames_dropped_in_last_go_loop', 'link-664');">were_frames_dropped_in_last_go_loop</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1734"></a><tt class="py-lineno">1734</tt>  <tt class="py-line">                        <tt id="link-665" class="py-name"><a title="VisionEgg.GUI.tkMessageBox" class="py-name" href="#" onclick="return doclink('link-665', 'tkMessageBox', 'link-8');">tkMessageBox</a></tt><tt class="py-op">.</tt><tt class="py-name">showwarning</tt><tt class="py-op">(</tt><tt class="py-string">"Dropped frame(s)"</tt><tt class="py-op">,</tt> </tt>
+<a name="L1735"></a><tt class="py-lineno">1735</tt>  <tt class="py-line">                                                 <tt class="py-string">"During the last trial, at least 1 frame was dropped."</tt><tt class="py-op">,</tt> </tt>
+<a name="L1736"></a><tt class="py-lineno">1736</tt>  <tt class="py-line">                                                  <tt class="py-name">parent</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
+<a name="L1737"></a><tt class="py-lineno">1737</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1738"></a><tt class="py-lineno">1738</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stim_frame</tt><tt class="py-op">.</tt><tt id="link-666" class="py-name"><a title="VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.send_values
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.send_values
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.send_values
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.send_values
+VisionEgg.PyroApps.GridGUI.GridControlFrame.send_values
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.send_values
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.send_values
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.send_values
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.send_values
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.send_values" class="py-name" href="#" onclick="return doclink('link-666', 'send_values', 'link-505');">send_values</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1739"></a><tt class="py-lineno">1739</tt>  <tt class="py-line">                    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">ephys_server</tt><tt class="py-op">.</tt><tt id="link-667" class="py-name" targets="Method VisionEgg.PyroApps.EPhysServer.EPhysServer.run_demoscript()=VisionEgg.PyroApps.EPhysServer.EPhysServer-class.html#run_demoscript"><a title="VisionEgg.PyroApps.EPhysServer.EPhysServer.run_demoscript" class="py-name" href="#" onclick="re [...]
+<a name="L1740"></a><tt class="py-lineno">1740</tt>  <tt class="py-line">                    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stim_frame</tt><tt class="py-op">.</tt><tt id="link-668" class="py-name"><a title="VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.quit_server
+VisionEgg.PyroApps.DropinServer.DropinMetaController.quit_server
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.quit_server
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.quit_server
+VisionEgg.PyroApps.GridServer.GridMetaController.quit_server
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.quit_server
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.quit_server
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.quit_server
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.quit_server
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.quit_server
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.quit_server" class="py-name" href="#" onclick="return doclink('link-668', 'quit_server', 'link-500');">quit_server</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1741"></a><tt class="py-lineno">1741</tt>  <tt class="py-line">        <tt class="py-keyword">finally</tt><tt class="py-op">:</tt> </tt>
+<a name="L1742"></a><tt class="py-lineno">1742</tt>  <tt class="py-line">            <tt class="py-name">root</tt><tt class="py-op">[</tt><tt class="py-string">"cursor"</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">old_cursor</tt> </tt>
+<a name="L1743"></a><tt class="py-lineno">1743</tt>  <tt class="py-line">            <tt class="py-name">root</tt><tt class="py-op">.</tt><tt id="link-669" class="py-name"><a title="VisionEgg.GUI.InfoFrame.update
+VisionEgg.GUI.ProgressBar.update
+VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.update
+VisionEgg.PyroApps.DropinServer.DropinMetaController.update
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.update
+VisionEgg.PyroApps.GridServer.GridMetaController.update
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.update
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.update
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.update
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.update
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.update
+VisionEgg.QuickTime.MovieTexture.update
+VisionEgg.Textures.Texture.update" class="py-name" href="#" onclick="return doclink('link-669', 'update', 'link-497');">update</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1744"></a><tt class="py-lineno">1744</tt>  <tt class="py-line"> </tt>
+<a name="L1745"></a><tt class="py-lineno">1745</tt>  <tt class="py-line">            <tt class="py-comment"># restore status bar</tt> </tt>
+<a name="L1746"></a><tt class="py-lineno">1746</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">progress</tt><tt class="py-op">.</tt><tt class="py-name">labelText</tt> <tt class="py-op">=</tt> <tt class="py-string">"Ready"</tt> </tt>
+<a name="L1747"></a><tt class="py-lineno">1747</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">progress</tt><tt class="py-op">.</tt><tt id="link-670" class="py-name"><a title="VisionEgg.GUI.ProgressBar.updateProgress" class="py-name" href="#" onclick="return doclink('link-670', 'updateProgress', 'link-480');">updateProgress</a></tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1748"></a><tt class="py-lineno">1748</tt>  <tt class="py-line"> </tt>
+<a name="AppWindow.do_single_trial_post"></a><div id="AppWindow.do_single_trial_post-def"><a name="L1749"></a><tt class="py-lineno">1749</tt> <a class="py-toggle" href="#" id="AppWindow.do_single_trial_post-toggle" onclick="return toggle('AppWindow.do_single_trial_post');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.EPhysGUI.AppWindow-class.html#do_single_trial_post">do_single_trial_post</a><tt class="py-op">(</tt><tt class [...]
+</div><div id="AppWindow.do_single_trial_post-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="AppWindow.do_single_trial_post-expanded"><a name="L1750"></a><tt class="py-lineno">1750</tt>  <tt class="py-line">        <tt class="py-comment"># if file_stream is None, open default file</tt> </tt>
+<a name="L1751"></a><tt class="py-lineno">1751</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">autosave</tt><tt class="py-op">.</tt><tt id="link-671" class="py-name"><a title="VisionEgg.PyroClient.PyroClient.get" class="py-name" href="#" onclick="return doclink('link-671', 'get', 'link-185');">get</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">: [...]
+<a name="L1752"></a><tt class="py-lineno">1752</tt>  <tt class="py-line">            <tt class="py-name">frames_dropped</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">ephys_server</tt><tt class="py-op">.</tt><tt id="link-672" class="py-name"><a title="VisionEgg.FlowControl.Presentation.were_frames_dropped_in_last_go_loop
+VisionEgg.PyroApps.EPhysServer.EPhysServer.were_frames_dropped_in_last_go_loop" class="py-name" href="#" onclick="return doclink('link-672', 'were_frames_dropped_in_last_go_loop', 'link-664');">were_frames_dropped_in_last_go_loop</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1753"></a><tt class="py-lineno">1753</tt>  <tt class="py-line">            <tt class="py-name">go_loop_start_time</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">ephys_server</tt><tt class="py-op">.</tt><tt id="link-673" class="py-name" targets="Method VisionEgg.FlowControl.Presentation.get_last_go_loop_start_time_absolute_sec()=VisionEgg.FlowControl.Presentation-class.html#get_last_go_loop_start_time_absolute_sec,Method Vi [...]
+VisionEgg.PyroApps.EPhysServer.EPhysServer.get_last_go_loop_start_time_absolute_sec" class="py-name" href="#" onclick="return doclink('link-673', 'get_last_go_loop_start_time_absolute_sec', 'link-673');">get_last_go_loop_start_time_absolute_sec</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1754"></a><tt class="py-lineno">1754</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">param_file_type_tk_var</tt><tt class="py-op">.</tt><tt id="link-674" class="py-name"><a title="VisionEgg.PyroClient.PyroClient.get" class="py-name" href="#" onclick="return doclink('link-674', 'get', 'link-185');">get</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <t [...]
+<a name="L1755"></a><tt class="py-lineno">1755</tt>  <tt class="py-line">                <tt class="py-name">file_stream</tt><tt class="py-op">.</tt><tt class="py-name">write</tt><tt class="py-op">(</tt><tt class="py-string">"frames_dropped = %s # boolean\n"</tt><tt class="py-op">%</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">frames_dropped</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1756"></a><tt class="py-lineno">1756</tt>  <tt class="py-line">                <tt class="py-name">file_stream</tt><tt class="py-op">.</tt><tt class="py-name">write</tt><tt class="py-op">(</tt><tt class="py-string">"go_loop_start_time_abs_sec = %s\n"</tt><tt class="py-op">%</tt><tt class="py-name">repr</tt><tt class="py-op">(</tt><tt class="py-name">go_loop_start_time</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1757"></a><tt class="py-lineno">1757</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">param_file_type_tk_var</tt><tt class="py-op">.</tt><tt id="link-675" class="py-name"><a title="VisionEgg.PyroClient.PyroClient.get" class="py-name" href="#" onclick="return doclink('link-675', 'get', 'link-185');">get</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt>  [...]
+<a name="L1758"></a><tt class="py-lineno">1758</tt>  <tt class="py-line">                <tt class="py-name">file_stream</tt><tt class="py-op">.</tt><tt class="py-name">write</tt><tt class="py-op">(</tt><tt class="py-string">"frames_dropped = %s; %% boolean\n"</tt><tt class="py-op">%</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">frames_dropped</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1759"></a><tt class="py-lineno">1759</tt>  <tt class="py-line">                <tt class="py-name">file_stream</tt><tt class="py-op">.</tt><tt class="py-name">write</tt><tt class="py-op">(</tt><tt class="py-string">"go_loop_start_time_abs_sec = %s;\n"</tt><tt class="py-op">%</tt><tt class="py-name">repr</tt><tt class="py-op">(</tt><tt class="py-name">go_loop_start_time</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1760"></a><tt class="py-lineno">1760</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1761"></a><tt class="py-lineno">1761</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> <tt class="py-name">RuntimeError</tt><tt class="py-op">(</tt><tt class="py-string">"Unknown parameter file type"</tt><tt class="py-op">)</tt> <tt class="py-comment"># Should never get here</tt> </tt>
+</div><a name="L1762"></a><tt class="py-lineno">1762</tt>  <tt class="py-line"> </tt>
+<a name="AppWindow.sleep_with_progress"></a><div id="AppWindow.sleep_with_progress-def"><a name="L1763"></a><tt class="py-lineno">1763</tt> <a class="py-toggle" href="#" id="AppWindow.sleep_with_progress-toggle" onclick="return toggle('AppWindow.sleep_with_progress');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.EPhysGUI.AppWindow-class.html#sleep_with_progress">sleep_with_progress</a><tt class="py-op">(</tt><tt class="py-p [...]
+</div><div id="AppWindow.sleep_with_progress-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="AppWindow.sleep_with_progress-expanded"><a name="L1764"></a><tt class="py-lineno">1764</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">duration_sec</tt> <tt class="py-op">==</tt> <tt class="py-number">0.0</tt><tt class="py-op">:</tt> </tt>
+<a name="L1765"></a><tt class="py-lineno">1765</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-comment"># don't do anything</tt> </tt>
+<a name="L1766"></a><tt class="py-lineno">1766</tt>  <tt class="py-line">        <tt class="py-name">start_time</tt> <tt class="py-op">=</tt> <tt class="py-name">time</tt><tt class="py-op">.</tt><tt class="py-name">time</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1767"></a><tt class="py-lineno">1767</tt>  <tt class="py-line">        <tt class="py-name">stop_time</tt> <tt class="py-op">=</tt> <tt class="py-name">start_time</tt> <tt class="py-op">+</tt> <tt class="py-name">duration_sec</tt> </tt>
+<a name="L1768"></a><tt class="py-lineno">1768</tt>  <tt class="py-line">        <tt class="py-name">percent_done</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L1769"></a><tt class="py-lineno">1769</tt>  <tt class="py-line">        <tt class="py-keyword">while</tt> <tt class="py-name">percent_done</tt> <tt class="py-op"><</tt> <tt class="py-number">100</tt><tt class="py-op">:</tt> </tt>
+<a name="L1770"></a><tt class="py-lineno">1770</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">platform</tt> <tt class="py-op">!=</tt> <tt class="py-string">'darwin'</tt><tt class="py-op">:</tt> <tt class="py-comment"># Mac OS X Tk bug... sigh...</tt> </tt>
+<a name="L1771"></a><tt class="py-lineno">1771</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">progress</tt><tt class="py-op">.</tt><tt id="link-676" class="py-name"><a title="VisionEgg.GUI.ProgressBar.updateProgress" class="py-name" href="#" onclick="return doclink('link-676', 'updateProgress', 'link-480');">updateProgress</a></tt><tt class="py-op">(</tt><tt class="py-name">percent_done</tt><tt class="py-op">)</tt> </tt>
+<a name="L1772"></a><tt class="py-lineno">1772</tt>  <tt class="py-line">            <tt class="py-name">time</tt><tt class="py-op">.</tt><tt class="py-name">sleep</tt><tt class="py-op">(</tt><tt class="py-number">0.01</tt><tt class="py-op">)</tt> <tt class="py-comment"># wait 10 msec</tt> </tt>
+<a name="L1773"></a><tt class="py-lineno">1773</tt>  <tt class="py-line">            <tt class="py-name">percent_done</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">time</tt><tt class="py-op">.</tt><tt class="py-name">time</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">-</tt> <tt class="py-name">start_time</tt><tt class="py-op">)</tt><tt class="py-op">/</tt><tt class="py-name">duration_sec</tt><tt class="py-op">*</tt><tt class="py-number [...]
+</div><a name="L1774"></a><tt class="py-lineno">1774</tt>  <tt class="py-line"> </tt>
+<a name="AppWindow.quit"></a><div id="AppWindow.quit-def"><a name="L1775"></a><tt class="py-lineno">1775</tt> <a class="py-toggle" href="#" id="AppWindow.quit-toggle" onclick="return toggle('AppWindow.quit');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.EPhysGUI.AppWindow-class.html#quit">quit</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="AppWindow.quit-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="AppWindow.quit-expanded"><a name="L1776"></a><tt class="py-lineno">1776</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">quit_server_too</tt><tt class="py-op">.</tt><tt id="link-677" class="py-name"><a title="VisionEgg.PyroClient.PyroClient.get" class="py-name" href="#" onclick="return doclink(' [...]
+<a name="L1777"></a><tt class="py-lineno">1777</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">ephys_server</tt><tt class="py-op">.</tt><tt id="link-678" class="py-name" targets="Method VisionEgg.PyroApps.EPhysServer.EPhysServer.set_quit_status()=VisionEgg.PyroApps.EPhysServer.EPhysServer-class.html#set_quit_status"><a title="VisionEgg.PyroApps.EPhysServer.EPhysServer.set_quit_status" class="py-name" href="#" onclick="return  [...]
+<a name="L1778"></a><tt class="py-lineno">1778</tt>  <tt class="py-line">        <tt class="py-comment"># call parent class</tt> </tt>
+<a name="L1779"></a><tt class="py-lineno">1779</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt id="link-679" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-679', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Frame</tt><tt class="py-op">.</tt><tt id="link-680" class="py-name"><a title="VisionEgg.PyroApps.EPhysGUI.AppWindow.quit" class="py-name" href="#" onclick="return doclink(' [...]
+</div><a name="L1780"></a><tt class="py-lineno">1780</tt>  <tt class="py-line"> </tt>
+<a name="AppWindow.destroy"></a><div id="AppWindow.destroy-def"><a name="L1781"></a><tt class="py-lineno">1781</tt> <a class="py-toggle" href="#" id="AppWindow.destroy-toggle" onclick="return toggle('AppWindow.destroy');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.EPhysGUI.AppWindow-class.html#destroy">destroy</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="AppWindow.destroy-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="AppWindow.destroy-expanded"><a name="L1782"></a><tt class="py-lineno">1782</tt>  <tt class="py-line">        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L1783"></a><tt class="py-lineno">1783</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">quit_server_too</tt><tt class="py-op">.</tt><tt id="link-681" class="py-name"><a title="VisionEgg.PyroClient.PyroClient.get" class="py-name" href="#" onclick="return doclink('link-681', 'get', 'link-185');">get</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1784"></a><tt class="py-lineno">1784</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">ephys_server</tt><tt class="py-op">.</tt><tt id="link-682" class="py-name"><a title="VisionEgg.PyroApps.EPhysServer.EPhysServer.set_quit_status" class="py-name" href="#" onclick="return doclink('link-682', 'set_quit_status', 'link-678');">set_quit_status</a></tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-o [...]
+<a name="L1785"></a><tt class="py-lineno">1785</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt><tt class="py-op">:</tt> </tt>
+<a name="L1786"></a><tt class="py-lineno">1786</tt>  <tt class="py-line">            <tt class="py-keyword">pass</tt> </tt>
+<a name="L1787"></a><tt class="py-lineno">1787</tt>  <tt class="py-line">        <tt id="link-683" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-683', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Frame</tt><tt class="py-op">.</tt><tt id="link-684" class="py-name"><a title="VisionEgg.GUI.ToplevelDialog.destroy
+VisionEgg.PyroApps.EPhysGUI.AppWindow.destroy
+VisionEgg.PyroApps.EPhysGUI.LoopParamDialog.destroy" class="py-name" href="#" onclick="return doclink('link-684', 'destroy', 'link-316');">destroy</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L1788"></a><tt class="py-lineno">1788</tt>  <tt class="py-line"> </tt>
+<a name="BarButton"></a><div id="BarButton-def"><a name="L1789"></a><tt class="py-lineno">1789</tt> <a class="py-toggle" href="#" id="BarButton-toggle" onclick="return toggle('BarButton');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.PyroApps.EPhysGUI.BarButton-class.html">BarButton</a><tt class="py-op">(</tt><tt class="py-base-class">Tkinter</tt><tt class="py-op">.</tt><tt class="py-base-class">Menubutton</tt><tt class="py-op">)</tt> [...]
+</div><div id="BarButton-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="BarButton-expanded"><a name="L1790"></a><tt class="py-lineno">1790</tt>  <tt class="py-line">    <tt class="py-comment"># Taken from Guido van Rossum's Tkinter svkill demo</tt> </tt>
+<a name="BarButton.__init__"></a><div id="BarButton.__init__-def"><a name="L1791"></a><tt class="py-lineno">1791</tt> <a class="py-toggle" href="#" id="BarButton.__init__-toggle" onclick="return toggle('BarButton.__init__');">-</a><tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.EPhysGUI.BarButton-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">, [...]
+</div><div id="BarButton.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++++++"></div><div id="BarButton.__init__-expanded"><a name="L1792"></a><tt class="py-lineno">1792</tt>  <tt class="py-line">            <tt id="link-685" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-685', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Menubutton</tt><tt class="py-op">.</tt><tt id="link- [...]
+VisionEgg.Configuration.Config.__init__
+VisionEgg.Core.FixationSpot.__init__
+VisionEgg.Core.FrameTimer.__init__
+VisionEgg.Core.ModelView.__init__
+VisionEgg.Core.OrthographicProjection.__init__
+VisionEgg.Core.OrthographicProjectionNoZClip.__init__
+VisionEgg.Core.PerspectiveProjection.__init__
+VisionEgg.Core.Projection.__init__
+VisionEgg.Core.ProjectionBaseClass.__init__
+VisionEgg.Core.Screen.__init__
+VisionEgg.Core.SimplePerspectiveProjection.__init__
+VisionEgg.Core.Stimulus.__init__
+VisionEgg.Core.Viewport.__init__
+VisionEgg.Daq.Channel.__init__
+VisionEgg.Daq.DaqMode.__init__
+VisionEgg.Daq.Device.__init__
+VisionEgg.Daq.Functionality.__init__
+VisionEgg.Daq.SignalType.__init__
+VisionEgg.DaqKeyboard.KeyboardTriggerInController.__init__
+VisionEgg.DaqLPT.LPTChannel.__init__
+VisionEgg.DaqLPT.LPTDevice.__init__
+VisionEgg.DaqLPT.LPTTriggerInController.__init__
+VisionEgg.DaqLPT.LPTTriggerOutController.__init__
+VisionEgg.Deprecated.Message.__init__
+VisionEgg.Dots.DotArea2D.__init__
+VisionEgg.FlowControl.ConstantController.__init__
+VisionEgg.FlowControl.Controller.__init__
+VisionEgg.FlowControl.EncapsulatedController.__init__
+VisionEgg.FlowControl.EvalStringController.__init__
+VisionEgg.FlowControl.ExecStringController.__init__
+VisionEgg.FlowControl.FunctionController.__init__
+VisionEgg.FlowControl.Presentation.__init__
+VisionEgg.GLTrace.Wrapper.__init__
+VisionEgg.GUI.AppWindow.__init__
+VisionEgg.GUI.GetKeypressDialog.__init__
+VisionEgg.GUI.GraphicsConfigurationWindow.__init__
+VisionEgg.GUI.InfoFrame.__init__
+VisionEgg.GUI.ProgressBar.__init__
+VisionEgg.GUI.ToplevelDialog.__init__
+VisionEgg.Gratings.SinGrating2D.__init__
+VisionEgg.Gratings.SinGrating3D.__init__
+VisionEgg.MoreStimuli.Arrow.__init__
+VisionEgg.MoreStimuli.FilledCircle.__init__
+VisionEgg.MoreStimuli.Rectangle3D.__init__
+VisionEgg.MoreStimuli.Target2D.__init__
+VisionEgg.ParameterTypes.AnyOf.__init__
+VisionEgg.ParameterTypes.Instance.__init__
+VisionEgg.ParameterTypes.Sequence.__init__
+VisionEgg.ParameterTypes.SubClass.__init__
+VisionEgg.PyroApps.AST_ext.AST_Visitor.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalMetaParameters.__init__
+VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.__init__
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.__init__
+VisionEgg.PyroApps.DropinGUI.DropinMetaParameters.__init__
+VisionEgg.PyroApps.DropinServer.DropinMetaController.__init__
+VisionEgg.PyroApps.EPhysGUI.AppWindow.__init__
+VisionEgg.PyroApps.EPhysGUI.BarButton.__init__
+VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase.__init__
+VisionEgg.PyroApps.EPhysGUI.GammaFrame.__init__
+VisionEgg.PyroApps.EPhysGUI.ImageSequenceLauncher.__init__
+VisionEgg.PyroApps.EPhysGUI.Loop.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopContainedObject.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopParamDialog.__init__
+VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.__init__
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.__init__
+VisionEgg.PyroApps.EPhysServer.EPhysServer.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingMetaParameters.__init__
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.GridGUI.GridControlFrame.__init__
+VisionEgg.PyroApps.GridGUI.GridMetaParameters.__init__
+VisionEgg.PyroApps.GridServer.GridMetaController.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetMetaParameters.__init__
+VisionEgg.PyroApps.MouseTargetServer.MousePositionController.__init__
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetOrientationController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetPositionController.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.CallbackEntry.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionParameters.__init__
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingMetaParameters.__init__
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumMetaParameters.__init__
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.__init__
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.__init__
+VisionEgg.PyroApps.TargetGUI.TargetMetaParameters.__init__
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.__init__
+VisionEgg.PyroClient.PyroClient.__init__
+VisionEgg.PyroHelpers.PyroConstantController.__init__
+VisionEgg.PyroHelpers.PyroEncapsulatedController.__init__
+VisionEgg.PyroHelpers.PyroEvalStringController.__init__
+VisionEgg.PyroHelpers.PyroExecStringController.__init__
+VisionEgg.PyroHelpers.PyroListenController.__init__
+VisionEgg.PyroHelpers.PyroLocalDictController.__init__
+VisionEgg.PyroHelpers.PyroServer.__init__
+VisionEgg.QuickTime.MovieTexture.__init__
+VisionEgg.ResponseControl.KeyboardResponseController.__init__
+VisionEgg.ResponseControl.ResponseController.__init__
+VisionEgg.SphereMap.AzElGrid.__init__
+VisionEgg.SphereMap.SphereGrating.__init__
+VisionEgg.SphereMap.SphereMap.__init__
+VisionEgg.SphereMap.SphereWindow.__init__
+VisionEgg.TCPController.SocketListenController.__init__
+VisionEgg.TCPController.TCPController.__init__
+VisionEgg.TCPController.TCPServer.__init__
+VisionEgg.Text.BitmapText.__init__
+VisionEgg.Text.GlutTextBase.__init__
+VisionEgg.Text.StrokeText.__init__
+VisionEgg.Text.Text.__init__
+VisionEgg.Textures.FixationCross.__init__
+VisionEgg.Textures.Mask2D.__init__
+VisionEgg.Textures.SpinningDrum.__init__
+VisionEgg.Textures.Texture.__init__
+VisionEgg.Textures.TextureFromFile.__init__
+VisionEgg.Textures.TextureObject.__init__
+VisionEgg.Textures.TextureStimulusBaseClass.__init__
+VisionEgg.ThreeDeeMath.TransformMatrix.__init__
+VisionEgg.WrappedText.WrappedText.__init__
+VisionEgg.qtmovie.Movie.__init__
+VisionEgg.qtmovie.Rect.__init__" class="py-name" href="#" onclick="return doclink('link-686', '__init__', 'link-96');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-name">master</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-name">cnf</tt><tt class="py-op">)</tt> </tt>
+<a name="L1793"></a><tt class="py-lineno">1793</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">pack</tt><tt class="py-op">(</tt><tt class="py-name">side</tt><tt class="py-op">=</tt><tt id="link-687" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-687', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">LEFT</tt><tt class="py-op">)</tt> </tt>
+<a name="L1794"></a><tt class="py-lineno">1794</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">menu</tt> <tt class="py-op">=</tt> <tt id="link-688" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-688', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Menu</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> < [...]
+<a name="L1795"></a><tt class="py-lineno">1795</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">[</tt><tt class="py-string">'menu'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">menu</tt> </tt>
+</div></div><a name="L1796"></a><tt class="py-lineno">1796</tt>  <tt class="py-line"> </tt>
+<a name="L1797"></a><tt class="py-lineno">1797</tt>  <tt class="py-line"><tt class="py-keyword">if</tt> <tt class="py-name">__name__</tt> <tt class="py-op">==</tt> <tt class="py-string">'__main__'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1798"></a><tt class="py-lineno">1798</tt>  <tt class="py-line">    <tt class="py-name">hostname</tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">getenv</tt><tt class="py-op">(</tt><tt class="py-string">"ephys_server_hostname"</tt><tt class="py-op">,</tt><tt class="py-string">""</tt><tt class="py-op">)</tt> </tt>
+<a name="L1799"></a><tt class="py-lineno">1799</tt>  <tt class="py-line">    <tt class="py-name">port</tt> <tt class="py-op">=</tt> <tt id="link-689" class="py-name"><a title="int" class="py-name" href="#" onclick="return doclink('link-689', 'int', 'link-184');">int</a></tt><tt class="py-op">(</tt><tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">getenv</tt><tt class="py-op">(</tt><tt class="py-string">"ephys_server_port"</tt><tt class="py-op">,</tt><tt class="py-str [...]
+<a name="L1800"></a><tt class="py-lineno">1800</tt>  <tt class="py-line">    <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt id="link-690" class="py-name" targets="Function VisionEgg.PyroApps.EPhysGUI.get_server()=VisionEgg.PyroApps.EPhysGUI-module.html#get_server"><a title="VisionEgg.PyroApps.EPhysGUI.get_server" class="py-name" href="#" onclick="return doclink('link-690', 'get_server', 'link-690');">get_server</a></tt><tt class="py-op">(</tt><tt class="py-name">hostname</t [...]
+<a name="L1801"></a><tt class="py-lineno">1801</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">result</tt><tt class="py-op">:</tt> </tt>
+<a name="L1802"></a><tt class="py-lineno">1802</tt>  <tt class="py-line">        <tt class="py-name">hostname</tt><tt class="py-op">,</tt><tt class="py-name">port</tt> <tt class="py-op">=</tt> <tt class="py-name">result</tt> </tt>
+<a name="L1803"></a><tt class="py-lineno">1803</tt>  <tt class="py-line">        <tt class="py-name">app_window</tt> <tt class="py-op">=</tt> <tt id="link-691" class="py-name" targets="Class VisionEgg.GUI.AppWindow=VisionEgg.GUI.AppWindow-class.html,Class VisionEgg.PyroApps.EPhysGUI.AppWindow=VisionEgg.PyroApps.EPhysGUI.AppWindow-class.html"><a title="VisionEgg.GUI.AppWindow
+VisionEgg.PyroApps.EPhysGUI.AppWindow" class="py-name" href="#" onclick="return doclink('link-691', 'AppWindow', 'link-691');">AppWindow</a></tt><tt class="py-op">(</tt><tt id="link-692" class="py-name"><a title="VisionEgg.PyroApps.EPhysGUI.client_list" class="py-name" href="#" onclick="return doclink('link-692', 'client_list', 'link-52');">client_list</a></tt><tt class="py-op">=</tt><tt id="link-693" class="py-name"><a title="VisionEgg.PyroApps.EPhysGUI.client_list" class="py-name" href [...]
+<a name="L1804"></a><tt class="py-lineno">1804</tt>  <tt class="py-line">                               <tt class="py-name">server_hostname</tt><tt class="py-op">=</tt><tt class="py-name">hostname</tt><tt class="py-op">,</tt> </tt>
+<a name="L1805"></a><tt class="py-lineno">1805</tt>  <tt class="py-line">                               <tt class="py-name">server_port</tt><tt class="py-op">=</tt><tt class="py-name">port</tt><tt class="py-op">)</tt> </tt>
+<a name="L1806"></a><tt class="py-lineno">1806</tt>  <tt class="py-line"> </tt>
+<a name="L1807"></a><tt class="py-lineno">1807</tt>  <tt class="py-line">        <tt class="py-name">app_window</tt><tt class="py-op">.</tt><tt class="py-name">winfo_toplevel</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">wm_iconbitmap</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1808"></a><tt class="py-lineno">1808</tt>  <tt class="py-line">        <tt class="py-name">app_window</tt><tt class="py-op">.</tt><tt class="py-name">pack</tt><tt class="py-op">(</tt><tt class="py-name">expand</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py-op">,</tt><tt class="py-name">fill</tt><tt class="py-op">=</tt><tt id="link-694" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-694', 'Tkinter',  [...]
+<a name="L1809"></a><tt class="py-lineno">1809</tt>  <tt class="py-line">        <tt class="py-name">app_window</tt><tt class="py-op">.</tt><tt class="py-name">mainloop</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1810"></a><tt class="py-lineno">1810</tt>  <tt class="py-line"> </tt><script type="text/javascript">
+<!--
+expandto(location.href);
+// -->
+</script>
+</pre>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:51 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.PyroApps.EPhysGUI.AppWindow-class.html b/doc/reference/html/VisionEgg.PyroApps.EPhysGUI.AppWindow-class.html
new file mode 100644
index 0000000..4e6ea5c
--- /dev/null
+++ b/doc/reference/html/VisionEgg.PyroApps.EPhysGUI.AppWindow-class.html
@@ -0,0 +1,842 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.PyroApps.EPhysGUI.AppWindow</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.PyroApps-module.html">Package PyroApps</a> ::
+        <a href="VisionEgg.PyroApps.EPhysGUI-module.html">Module EPhysGUI</a> ::
+        Class AppWindow
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.PyroApps.EPhysGUI.AppWindow-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class AppWindow</h1><span class="codelink"><a href="VisionEgg.PyroApps.EPhysGUI-pysrc.html#AppWindow">source code</a></span><br /><br />
+<pre class="base-tree">
+  Tkinter.Misc --+            
+                 |            
+Tkinter.BaseWidget --+        
+                     |        
+      Tkinter.Pack --+        
+                     |        
+     Tkinter.Place --+        
+                     |        
+      Tkinter.Grid --+        
+                     |        
+        Tkinter.Widget --+    
+                         |    
+             Tkinter.Frame --+
+                             |
+                            <strong class="uidshort">AppWindow</strong>
+</pre>
+
+<hr />
+<!-- ==================== NESTED CLASSES ==================== -->
+<a name="section-NestedClasses"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Nested Classes</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>Tkinter.Misc</code></b>:
+      <code><a href="float-class.html">getdouble</a></code>,
+      <code><a href="int-class.html">getint</a></code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.PyroApps.EPhysGUI.AppWindow-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">master</span>=<span class="summary-sig-default">None</span>,
+        <span class="summary-sig-arg">client_list</span>=<span class="summary-sig-default">None</span>,
+        <span class="summary-sig-arg">server_hostname</span>=<span class="summary-sig-default">''</span>,
+        <span class="summary-sig-arg">server_port</span>=<span class="summary-sig-default">7766</span>,
+        <span class="summary-sig-arg">**cnf</span>)</span><br />
+      Construct a frame widget with the parent MASTER.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.EPhysGUI-pysrc.html#AppWindow.__init__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__del__"></a><span class="summary-sig-name">__del__</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.EPhysGUI-pysrc.html#AppWindow.__del__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="switch_to_stimkey"></a><span class="summary-sig-name">switch_to_stimkey</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">stimkey</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.EPhysGUI-pysrc.html#AppWindow.switch_to_stimkey">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="change_stimulus"></a><span class="summary-sig-name">change_stimulus</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">dummy_arg</span>=<span class="summary-sig-default">None</span>,
+        <span class="summary-sig-arg">new_stimkey</span>=<span class="summary-sig-default">None</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.EPhysGUI-pysrc.html#AppWindow.change_stimulus">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="save_image_sequence"></a><span class="summary-sig-name">save_image_sequence</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.EPhysGUI-pysrc.html#AppWindow.save_image_sequence">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="save_config"></a><span class="summary-sig-name">save_config</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.EPhysGUI-pysrc.html#AppWindow.save_config">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="load_config"></a><span class="summary-sig-name">load_config</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.EPhysGUI-pysrc.html#AppWindow.load_config">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="load_params"></a><span class="summary-sig-name">load_params</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">orig_load_dict</span>=<span class="summary-sig-default">{}</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.EPhysGUI-pysrc.html#AppWindow.load_params">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="load_demoscript"></a><span class="summary-sig-name">load_demoscript</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.EPhysGUI-pysrc.html#AppWindow.load_demoscript">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="launch_screen_pos"></a><span class="summary-sig-name">launch_screen_pos</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">dummy_arg</span>=<span class="summary-sig-default">None</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.EPhysGUI-pysrc.html#AppWindow.launch_screen_pos">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="launch_stim_onset_cal"></a><span class="summary-sig-name">launch_stim_onset_cal</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">dummy_arg</span>=<span class="summary-sig-default">None</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.EPhysGUI-pysrc.html#AppWindow.launch_stim_onset_cal">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="launch_gamma_panel"></a><span class="summary-sig-name">launch_gamma_panel</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">dummy_arg</span>=<span class="summary-sig-default">None</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.EPhysGUI-pysrc.html#AppWindow.launch_gamma_panel">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="set_autosave_dir"></a><span class="summary-sig-name">set_autosave_dir</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.EPhysGUI-pysrc.html#AppWindow.set_autosave_dir">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="reset_autosave_basename"></a><span class="summary-sig-name">reset_autosave_basename</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.EPhysGUI-pysrc.html#AppWindow.reset_autosave_basename">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="update_stim_onset_cal"></a><span class="summary-sig-name">update_stim_onset_cal</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">dummy_arg</span>=<span class="summary-sig-default">None</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.EPhysGUI-pysrc.html#AppWindow.update_stim_onset_cal">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="set_stim_onset_cal_position"></a><span class="summary-sig-name">set_stim_onset_cal_position</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">dummy_arg</span>=<span class="summary-sig-default">None</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.EPhysGUI-pysrc.html#AppWindow.set_stim_onset_cal_position">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="do_loops"></a><span class="summary-sig-name">do_loops</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.EPhysGUI-pysrc.html#AppWindow.do_loops">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="do_single_trial"></a><span class="summary-sig-name">do_single_trial</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.EPhysGUI-pysrc.html#AppWindow.do_single_trial">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="do_single_trial_pre"></a><span class="summary-sig-name">do_single_trial_pre</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">file_stream</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.EPhysGUI-pysrc.html#AppWindow.do_single_trial_pre">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="do_single_trial_work"></a><span class="summary-sig-name">do_single_trial_work</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.EPhysGUI-pysrc.html#AppWindow.do_single_trial_work">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="do_single_trial_post"></a><span class="summary-sig-name">do_single_trial_post</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">file_stream</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.EPhysGUI-pysrc.html#AppWindow.do_single_trial_post">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="sleep_with_progress"></a><span class="summary-sig-name">sleep_with_progress</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">duration_sec</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.EPhysGUI-pysrc.html#AppWindow.sleep_with_progress">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.PyroApps.EPhysGUI.AppWindow-class.html#quit" class="summary-sig-name">quit</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      Quit the Tcl interpreter.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.EPhysGUI-pysrc.html#AppWindow.quit">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.PyroApps.EPhysGUI.AppWindow-class.html#destroy" class="summary-sig-name">destroy</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      Destroy this and all descendants widgets.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.EPhysGUI-pysrc.html#AppWindow.destroy">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>Tkinter.Misc</code></b>:
+      <code>__getitem__</code>,
+      <code>__setitem__</code>,
+      <code>__str__</code>,
+      <code>after</code>,
+      <code>after_cancel</code>,
+      <code>after_idle</code>,
+      <code>bbox</code>,
+      <code>bell</code>,
+      <code>bind</code>,
+      <code>bind_all</code>,
+      <code>bind_class</code>,
+      <code>bindtags</code>,
+      <code>cget</code>,
+      <code>clipboard_append</code>,
+      <code>clipboard_clear</code>,
+      <code>clipboard_get</code>,
+      <code>colormodel</code>,
+      <code>columnconfigure</code>,
+      <code>config</code>,
+      <code>configure</code>,
+      <code>deletecommand</code>,
+      <code>event_add</code>,
+      <code>event_delete</code>,
+      <code>event_generate</code>,
+      <code>event_info</code>,
+      <code>focus</code>,
+      <code>focus_displayof</code>,
+      <code>focus_force</code>,
+      <code>focus_get</code>,
+      <code>focus_lastfor</code>,
+      <code>focus_set</code>,
+      <code>getboolean</code>,
+      <code>getvar</code>,
+      <code>grab_current</code>,
+      <code>grab_release</code>,
+      <code>grab_set</code>,
+      <code>grab_set_global</code>,
+      <code>grab_status</code>,
+      <code>grid_bbox</code>,
+      <code>grid_columnconfigure</code>,
+      <code>grid_location</code>,
+      <code>grid_propagate</code>,
+      <code>grid_rowconfigure</code>,
+      <code>grid_size</code>,
+      <code>grid_slaves</code>,
+      <code>image_names</code>,
+      <code>image_types</code>,
+      <code>keys</code>,
+      <code>lift</code>,
+      <code>lower</code>,
+      <code>mainloop</code>,
+      <code>nametowidget</code>,
+      <code>option_add</code>,
+      <code>option_clear</code>,
+      <code>option_get</code>,
+      <code>option_readfile</code>,
+      <code>pack_propagate</code>,
+      <code>pack_slaves</code>,
+      <code>place_slaves</code>,
+      <code>propagate</code>,
+      <code>register</code>,
+      <code>rowconfigure</code>,
+      <code>selection_clear</code>,
+      <code>selection_get</code>,
+      <code>selection_handle</code>,
+      <code>selection_own</code>,
+      <code>selection_own_get</code>,
+      <code>send</code>,
+      <code>setvar</code>,
+      <code>size</code>,
+      <code>slaves</code>,
+      <code>tk_bisque</code>,
+      <code>tk_focusFollowsMouse</code>,
+      <code>tk_focusNext</code>,
+      <code>tk_focusPrev</code>,
+      <code>tk_menuBar</code>,
+      <code>tk_setPalette</code>,
+      <code>tk_strictMotif</code>,
+      <code>tkraise</code>,
+      <code>unbind</code>,
+      <code>unbind_all</code>,
+      <code>unbind_class</code>,
+      <code>update</code>,
+      <code>update_idletasks</code>,
+      <code>wait_variable</code>,
+      <code>wait_visibility</code>,
+      <code>wait_window</code>,
+      <code>waitvar</code>,
+      <code>winfo_atom</code>,
+      <code>winfo_atomname</code>,
+      <code>winfo_cells</code>,
+      <code>winfo_children</code>,
+      <code>winfo_class</code>,
+      <code>winfo_colormapfull</code>,
+      <code>winfo_containing</code>,
+      <code>winfo_depth</code>,
+      <code>winfo_exists</code>,
+      <code>winfo_fpixels</code>,
+      <code>winfo_geometry</code>,
+      <code>winfo_height</code>,
+      <code>winfo_id</code>,
+      <code>winfo_interps</code>,
+      <code>winfo_ismapped</code>,
+      <code>winfo_manager</code>,
+      <code>winfo_name</code>,
+      <code>winfo_parent</code>,
+      <code>winfo_pathname</code>,
+      <code>winfo_pixels</code>,
+      <code>winfo_pointerx</code>,
+      <code>winfo_pointerxy</code>,
+      <code>winfo_pointery</code>,
+      <code>winfo_reqheight</code>,
+      <code>winfo_reqwidth</code>,
+      <code>winfo_rgb</code>,
+      <code>winfo_rootx</code>,
+      <code>winfo_rooty</code>,
+      <code>winfo_screen</code>,
+      <code>winfo_screencells</code>,
+      <code>winfo_screendepth</code>,
+      <code>winfo_screenheight</code>,
+      <code>winfo_screenmmheight</code>,
+      <code>winfo_screenmmwidth</code>,
+      <code>winfo_screenvisual</code>,
+      <code>winfo_screenwidth</code>,
+      <code>winfo_server</code>,
+      <code>winfo_toplevel</code>,
+      <code>winfo_viewable</code>,
+      <code>winfo_visual</code>,
+      <code>winfo_visualid</code>,
+      <code>winfo_visualsavailable</code>,
+      <code>winfo_vrootheight</code>,
+      <code>winfo_vrootwidth</code>,
+      <code>winfo_vrootx</code>,
+      <code>winfo_vrooty</code>,
+      <code>winfo_width</code>,
+      <code>winfo_x</code>,
+      <code>winfo_y</code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>Tkinter.Pack</code></b>:
+      <code>forget</code>,
+      <code>info</code>,
+      <code>pack</code>,
+      <code>pack_configure</code>,
+      <code>pack_forget</code>,
+      <code>pack_info</code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>Tkinter.Place</code></b>:
+      <code>place</code>,
+      <code>place_configure</code>,
+      <code>place_forget</code>,
+      <code>place_info</code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>Tkinter.Grid</code></b>:
+      <code>grid</code>,
+      <code>grid_configure</code>,
+      <code>grid_forget</code>,
+      <code>grid_info</code>,
+      <code>grid_remove</code>,
+      <code>location</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Class Variables</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>Tkinter.Misc</code></b>:
+      <code>_noarg_</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Method Details</span></td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">master</span>=<span class="sig-default">None</span>,
+        <span class="sig-arg">client_list</span>=<span class="sig-default">None</span>,
+        <span class="sig-arg">server_hostname</span>=<span class="sig-default">''</span>,
+        <span class="sig-arg">server_port</span>=<span class="sig-default">7766</span>,
+        <span class="sig-arg">**cnf</span>)</span>
+    <br /><em class="fname">(Constructor)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.PyroApps.EPhysGUI-pysrc.html#AppWindow.__init__">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Construct a frame widget with the parent MASTER.
+
+Valid resource names: background, bd, bg, borderwidth, class,
+colormap, container, cursor, height, highlightbackground,
+highlightcolor, highlightthickness, relief, takefocus, visual, width.
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      Tkinter.Frame.__init__
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="quit"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">quit</span>(<span class="sig-arg">self</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.PyroApps.EPhysGUI-pysrc.html#AppWindow.quit">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Quit the Tcl interpreter. All widgets will be destroyed.
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      Tkinter.Misc.quit
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="destroy"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">destroy</span>(<span class="sig-arg">self</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.PyroApps.EPhysGUI-pysrc.html#AppWindow.destroy">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Destroy this and all descendants widgets.
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      Tkinter.BaseWidget.destroy
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.PyroApps.EPhysGUI.BarButton-class.html b/doc/reference/html/VisionEgg.PyroApps.EPhysGUI.BarButton-class.html
new file mode 100644
index 0000000..90f9e17
--- /dev/null
+++ b/doc/reference/html/VisionEgg.PyroApps.EPhysGUI.BarButton-class.html
@@ -0,0 +1,403 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.PyroApps.EPhysGUI.BarButton</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.PyroApps-module.html">Package PyroApps</a> ::
+        <a href="VisionEgg.PyroApps.EPhysGUI-module.html">Module EPhysGUI</a> ::
+        Class BarButton
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.PyroApps.EPhysGUI.BarButton-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class BarButton</h1><span class="codelink"><a href="VisionEgg.PyroApps.EPhysGUI-pysrc.html#BarButton">source code</a></span><br /><br />
+<pre class="base-tree">
+  Tkinter.Misc --+            
+                 |            
+Tkinter.BaseWidget --+        
+                     |        
+      Tkinter.Pack --+        
+                     |        
+     Tkinter.Place --+        
+                     |        
+      Tkinter.Grid --+        
+                     |        
+        Tkinter.Widget --+    
+                         |    
+        Tkinter.Menubutton --+
+                             |
+                            <strong class="uidshort">BarButton</strong>
+</pre>
+
+<hr />
+<!-- ==================== NESTED CLASSES ==================== -->
+<a name="section-NestedClasses"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Nested Classes</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>Tkinter.Misc</code></b>:
+      <code><a href="float-class.html">getdouble</a></code>,
+      <code><a href="int-class.html">getint</a></code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.PyroApps.EPhysGUI.BarButton-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">master</span>=<span class="summary-sig-default">None</span>,
+        <span class="summary-sig-arg">**cnf</span>)</span><br />
+      Construct a widget with the parent widget MASTER, a name WIDGETNAME
+and appropriate options.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.EPhysGUI-pysrc.html#BarButton.__init__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>Tkinter.BaseWidget</code></b>:
+      <code>destroy</code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>Tkinter.Misc</code></b>:
+      <code>__getitem__</code>,
+      <code>__setitem__</code>,
+      <code>__str__</code>,
+      <code>after</code>,
+      <code>after_cancel</code>,
+      <code>after_idle</code>,
+      <code>bbox</code>,
+      <code>bell</code>,
+      <code>bind</code>,
+      <code>bind_all</code>,
+      <code>bind_class</code>,
+      <code>bindtags</code>,
+      <code>cget</code>,
+      <code>clipboard_append</code>,
+      <code>clipboard_clear</code>,
+      <code>clipboard_get</code>,
+      <code>colormodel</code>,
+      <code>columnconfigure</code>,
+      <code>config</code>,
+      <code>configure</code>,
+      <code>deletecommand</code>,
+      <code>event_add</code>,
+      <code>event_delete</code>,
+      <code>event_generate</code>,
+      <code>event_info</code>,
+      <code>focus</code>,
+      <code>focus_displayof</code>,
+      <code>focus_force</code>,
+      <code>focus_get</code>,
+      <code>focus_lastfor</code>,
+      <code>focus_set</code>,
+      <code>getboolean</code>,
+      <code>getvar</code>,
+      <code>grab_current</code>,
+      <code>grab_release</code>,
+      <code>grab_set</code>,
+      <code>grab_set_global</code>,
+      <code>grab_status</code>,
+      <code>grid_bbox</code>,
+      <code>grid_columnconfigure</code>,
+      <code>grid_location</code>,
+      <code>grid_propagate</code>,
+      <code>grid_rowconfigure</code>,
+      <code>grid_size</code>,
+      <code>grid_slaves</code>,
+      <code>image_names</code>,
+      <code>image_types</code>,
+      <code>keys</code>,
+      <code>lift</code>,
+      <code>lower</code>,
+      <code>mainloop</code>,
+      <code>nametowidget</code>,
+      <code>option_add</code>,
+      <code>option_clear</code>,
+      <code>option_get</code>,
+      <code>option_readfile</code>,
+      <code>pack_propagate</code>,
+      <code>pack_slaves</code>,
+      <code>place_slaves</code>,
+      <code>propagate</code>,
+      <code>quit</code>,
+      <code>register</code>,
+      <code>rowconfigure</code>,
+      <code>selection_clear</code>,
+      <code>selection_get</code>,
+      <code>selection_handle</code>,
+      <code>selection_own</code>,
+      <code>selection_own_get</code>,
+      <code>send</code>,
+      <code>setvar</code>,
+      <code>size</code>,
+      <code>slaves</code>,
+      <code>tk_bisque</code>,
+      <code>tk_focusFollowsMouse</code>,
+      <code>tk_focusNext</code>,
+      <code>tk_focusPrev</code>,
+      <code>tk_menuBar</code>,
+      <code>tk_setPalette</code>,
+      <code>tk_strictMotif</code>,
+      <code>tkraise</code>,
+      <code>unbind</code>,
+      <code>unbind_all</code>,
+      <code>unbind_class</code>,
+      <code>update</code>,
+      <code>update_idletasks</code>,
+      <code>wait_variable</code>,
+      <code>wait_visibility</code>,
+      <code>wait_window</code>,
+      <code>waitvar</code>,
+      <code>winfo_atom</code>,
+      <code>winfo_atomname</code>,
+      <code>winfo_cells</code>,
+      <code>winfo_children</code>,
+      <code>winfo_class</code>,
+      <code>winfo_colormapfull</code>,
+      <code>winfo_containing</code>,
+      <code>winfo_depth</code>,
+      <code>winfo_exists</code>,
+      <code>winfo_fpixels</code>,
+      <code>winfo_geometry</code>,
+      <code>winfo_height</code>,
+      <code>winfo_id</code>,
+      <code>winfo_interps</code>,
+      <code>winfo_ismapped</code>,
+      <code>winfo_manager</code>,
+      <code>winfo_name</code>,
+      <code>winfo_parent</code>,
+      <code>winfo_pathname</code>,
+      <code>winfo_pixels</code>,
+      <code>winfo_pointerx</code>,
+      <code>winfo_pointerxy</code>,
+      <code>winfo_pointery</code>,
+      <code>winfo_reqheight</code>,
+      <code>winfo_reqwidth</code>,
+      <code>winfo_rgb</code>,
+      <code>winfo_rootx</code>,
+      <code>winfo_rooty</code>,
+      <code>winfo_screen</code>,
+      <code>winfo_screencells</code>,
+      <code>winfo_screendepth</code>,
+      <code>winfo_screenheight</code>,
+      <code>winfo_screenmmheight</code>,
+      <code>winfo_screenmmwidth</code>,
+      <code>winfo_screenvisual</code>,
+      <code>winfo_screenwidth</code>,
+      <code>winfo_server</code>,
+      <code>winfo_toplevel</code>,
+      <code>winfo_viewable</code>,
+      <code>winfo_visual</code>,
+      <code>winfo_visualid</code>,
+      <code>winfo_visualsavailable</code>,
+      <code>winfo_vrootheight</code>,
+      <code>winfo_vrootwidth</code>,
+      <code>winfo_vrootx</code>,
+      <code>winfo_vrooty</code>,
+      <code>winfo_width</code>,
+      <code>winfo_x</code>,
+      <code>winfo_y</code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>Tkinter.Pack</code></b>:
+      <code>forget</code>,
+      <code>info</code>,
+      <code>pack</code>,
+      <code>pack_configure</code>,
+      <code>pack_forget</code>,
+      <code>pack_info</code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>Tkinter.Place</code></b>:
+      <code>place</code>,
+      <code>place_configure</code>,
+      <code>place_forget</code>,
+      <code>place_info</code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>Tkinter.Grid</code></b>:
+      <code>grid</code>,
+      <code>grid_configure</code>,
+      <code>grid_forget</code>,
+      <code>grid_info</code>,
+      <code>grid_remove</code>,
+      <code>location</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Class Variables</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>Tkinter.Misc</code></b>:
+      <code>_noarg_</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Method Details</span></td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">master</span>=<span class="sig-default">None</span>,
+        <span class="sig-arg">**cnf</span>)</span>
+    <br /><em class="fname">(Constructor)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.PyroApps.EPhysGUI-pysrc.html#BarButton.__init__">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Construct a widget with the parent widget MASTER, a name WIDGETNAME
+and appropriate options.
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      Tkinter.Menubutton.__init__
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase-class.html b/doc/reference/html/VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase-class.html
new file mode 100644
index 0000000..6d68b6e
--- /dev/null
+++ b/doc/reference/html/VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase-class.html
@@ -0,0 +1,192 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.PyroApps-module.html">Package PyroApps</a> ::
+        <a href="VisionEgg.PyroApps.EPhysGUI-module.html">Module EPhysGUI</a> ::
+        Class ContainedObjectBase
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class ContainedObjectBase</h1><span class="codelink"><a href="VisionEgg.PyroApps.EPhysGUI-pysrc.html#ContainedObjectBase">source code</a></span><br /><br />
+<pre class="literalblock">
+Base class to encapsulate objects, provides useful methods when used in GUI
+
+</pre><br /><br />
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__init__"></a><span class="summary-sig-name">__init__</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.EPhysGUI-pysrc.html#ContainedObjectBase.__init__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="get_str_30"></a><span class="summary-sig-name">get_str_30</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.EPhysGUI-pysrc.html#ContainedObjectBase.get_str_30">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="get_contained"></a><span class="summary-sig-name">get_contained</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.EPhysGUI-pysrc.html#ContainedObjectBase.get_contained">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Class Variables</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="header"></a><span class="summary-name">header</span> = <code title=""unknown parameters"">"unknown parameters"</code>
+    </td>
+  </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.PyroApps.EPhysGUI.GammaFrame-class.html b/doc/reference/html/VisionEgg.PyroApps.EPhysGUI.GammaFrame-class.html
new file mode 100644
index 0000000..b27268c
--- /dev/null
+++ b/doc/reference/html/VisionEgg.PyroApps.EPhysGUI.GammaFrame-class.html
@@ -0,0 +1,475 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.PyroApps.EPhysGUI.GammaFrame</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.PyroApps-module.html">Package PyroApps</a> ::
+        <a href="VisionEgg.PyroApps.EPhysGUI-module.html">Module EPhysGUI</a> ::
+        Class GammaFrame
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.PyroApps.EPhysGUI.GammaFrame-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class GammaFrame</h1><span class="codelink"><a href="VisionEgg.PyroApps.EPhysGUI-pysrc.html#GammaFrame">source code</a></span><br /><br />
+<pre class="base-tree">
+  Tkinter.Misc --+            
+                 |            
+Tkinter.BaseWidget --+        
+                     |        
+      Tkinter.Pack --+        
+                     |        
+     Tkinter.Place --+        
+                     |        
+      Tkinter.Grid --+        
+                     |        
+        Tkinter.Widget --+    
+                         |    
+             Tkinter.Frame --+
+                             |
+                            <strong class="uidshort">GammaFrame</strong>
+</pre>
+
+<hr />
+<!-- ==================== NESTED CLASSES ==================== -->
+<a name="section-NestedClasses"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Nested Classes</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>Tkinter.Misc</code></b>:
+      <code><a href="float-class.html">getdouble</a></code>,
+      <code><a href="int-class.html">getint</a></code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.PyroApps.EPhysGUI.GammaFrame-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">master</span>=<span class="summary-sig-default">None</span>,
+        <span class="summary-sig-arg">ephys_server</span>=<span class="summary-sig-default">None</span>,
+        <span class="summary-sig-arg">**kw</span>)</span><br />
+      Construct a frame widget with the parent MASTER.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.EPhysGUI-pysrc.html#GammaFrame.__init__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="get_corrected_gamma_table"></a><span class="summary-sig-name">get_corrected_gamma_table</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">gamma</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.EPhysGUI-pysrc.html#GammaFrame.get_corrected_gamma_table">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="linearize"></a><span class="summary-sig-name">linearize</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">dummy_arg</span>=<span class="summary-sig-default">None</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.EPhysGUI-pysrc.html#GammaFrame.linearize">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="set_monitor_default"></a><span class="summary-sig-name">set_monitor_default</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">dummy_arg</span>=<span class="summary-sig-default">None</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.EPhysGUI-pysrc.html#GammaFrame.set_monitor_default">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="set_from_file"></a><span class="summary-sig-name">set_from_file</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.EPhysGUI-pysrc.html#GammaFrame.set_from_file">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>Tkinter.BaseWidget</code></b>:
+      <code>destroy</code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>Tkinter.Misc</code></b>:
+      <code>__getitem__</code>,
+      <code>__setitem__</code>,
+      <code>__str__</code>,
+      <code>after</code>,
+      <code>after_cancel</code>,
+      <code>after_idle</code>,
+      <code>bbox</code>,
+      <code>bell</code>,
+      <code>bind</code>,
+      <code>bind_all</code>,
+      <code>bind_class</code>,
+      <code>bindtags</code>,
+      <code>cget</code>,
+      <code>clipboard_append</code>,
+      <code>clipboard_clear</code>,
+      <code>clipboard_get</code>,
+      <code>colormodel</code>,
+      <code>columnconfigure</code>,
+      <code>config</code>,
+      <code>configure</code>,
+      <code>deletecommand</code>,
+      <code>event_add</code>,
+      <code>event_delete</code>,
+      <code>event_generate</code>,
+      <code>event_info</code>,
+      <code>focus</code>,
+      <code>focus_displayof</code>,
+      <code>focus_force</code>,
+      <code>focus_get</code>,
+      <code>focus_lastfor</code>,
+      <code>focus_set</code>,
+      <code>getboolean</code>,
+      <code>getvar</code>,
+      <code>grab_current</code>,
+      <code>grab_release</code>,
+      <code>grab_set</code>,
+      <code>grab_set_global</code>,
+      <code>grab_status</code>,
+      <code>grid_bbox</code>,
+      <code>grid_columnconfigure</code>,
+      <code>grid_location</code>,
+      <code>grid_propagate</code>,
+      <code>grid_rowconfigure</code>,
+      <code>grid_size</code>,
+      <code>grid_slaves</code>,
+      <code>image_names</code>,
+      <code>image_types</code>,
+      <code>keys</code>,
+      <code>lift</code>,
+      <code>lower</code>,
+      <code>mainloop</code>,
+      <code>nametowidget</code>,
+      <code>option_add</code>,
+      <code>option_clear</code>,
+      <code>option_get</code>,
+      <code>option_readfile</code>,
+      <code>pack_propagate</code>,
+      <code>pack_slaves</code>,
+      <code>place_slaves</code>,
+      <code>propagate</code>,
+      <code>quit</code>,
+      <code>register</code>,
+      <code>rowconfigure</code>,
+      <code>selection_clear</code>,
+      <code>selection_get</code>,
+      <code>selection_handle</code>,
+      <code>selection_own</code>,
+      <code>selection_own_get</code>,
+      <code>send</code>,
+      <code>setvar</code>,
+      <code>size</code>,
+      <code>slaves</code>,
+      <code>tk_bisque</code>,
+      <code>tk_focusFollowsMouse</code>,
+      <code>tk_focusNext</code>,
+      <code>tk_focusPrev</code>,
+      <code>tk_menuBar</code>,
+      <code>tk_setPalette</code>,
+      <code>tk_strictMotif</code>,
+      <code>tkraise</code>,
+      <code>unbind</code>,
+      <code>unbind_all</code>,
+      <code>unbind_class</code>,
+      <code>update</code>,
+      <code>update_idletasks</code>,
+      <code>wait_variable</code>,
+      <code>wait_visibility</code>,
+      <code>wait_window</code>,
+      <code>waitvar</code>,
+      <code>winfo_atom</code>,
+      <code>winfo_atomname</code>,
+      <code>winfo_cells</code>,
+      <code>winfo_children</code>,
+      <code>winfo_class</code>,
+      <code>winfo_colormapfull</code>,
+      <code>winfo_containing</code>,
+      <code>winfo_depth</code>,
+      <code>winfo_exists</code>,
+      <code>winfo_fpixels</code>,
+      <code>winfo_geometry</code>,
+      <code>winfo_height</code>,
+      <code>winfo_id</code>,
+      <code>winfo_interps</code>,
+      <code>winfo_ismapped</code>,
+      <code>winfo_manager</code>,
+      <code>winfo_name</code>,
+      <code>winfo_parent</code>,
+      <code>winfo_pathname</code>,
+      <code>winfo_pixels</code>,
+      <code>winfo_pointerx</code>,
+      <code>winfo_pointerxy</code>,
+      <code>winfo_pointery</code>,
+      <code>winfo_reqheight</code>,
+      <code>winfo_reqwidth</code>,
+      <code>winfo_rgb</code>,
+      <code>winfo_rootx</code>,
+      <code>winfo_rooty</code>,
+      <code>winfo_screen</code>,
+      <code>winfo_screencells</code>,
+      <code>winfo_screendepth</code>,
+      <code>winfo_screenheight</code>,
+      <code>winfo_screenmmheight</code>,
+      <code>winfo_screenmmwidth</code>,
+      <code>winfo_screenvisual</code>,
+      <code>winfo_screenwidth</code>,
+      <code>winfo_server</code>,
+      <code>winfo_toplevel</code>,
+      <code>winfo_viewable</code>,
+      <code>winfo_visual</code>,
+      <code>winfo_visualid</code>,
+      <code>winfo_visualsavailable</code>,
+      <code>winfo_vrootheight</code>,
+      <code>winfo_vrootwidth</code>,
+      <code>winfo_vrootx</code>,
+      <code>winfo_vrooty</code>,
+      <code>winfo_width</code>,
+      <code>winfo_x</code>,
+      <code>winfo_y</code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>Tkinter.Pack</code></b>:
+      <code>forget</code>,
+      <code>info</code>,
+      <code>pack</code>,
+      <code>pack_configure</code>,
+      <code>pack_forget</code>,
+      <code>pack_info</code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>Tkinter.Place</code></b>:
+      <code>place</code>,
+      <code>place_configure</code>,
+      <code>place_forget</code>,
+      <code>place_info</code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>Tkinter.Grid</code></b>:
+      <code>grid</code>,
+      <code>grid_configure</code>,
+      <code>grid_forget</code>,
+      <code>grid_info</code>,
+      <code>grid_remove</code>,
+      <code>location</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Class Variables</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>Tkinter.Misc</code></b>:
+      <code>_noarg_</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Method Details</span></td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">master</span>=<span class="sig-default">None</span>,
+        <span class="sig-arg">ephys_server</span>=<span class="sig-default">None</span>,
+        <span class="sig-arg">**kw</span>)</span>
+    <br /><em class="fname">(Constructor)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.PyroApps.EPhysGUI-pysrc.html#GammaFrame.__init__">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Construct a frame widget with the parent MASTER.
+
+Valid resource names: background, bd, bg, borderwidth, class,
+colormap, container, cursor, height, highlightbackground,
+highlightcolor, highlightthickness, relief, takefocus, visual, width.
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      Tkinter.Frame.__init__
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.PyroApps.EPhysGUI.ImageSequenceLauncher-class.html b/doc/reference/html/VisionEgg.PyroApps.EPhysGUI.ImageSequenceLauncher-class.html
new file mode 100644
index 0000000..44ddca9
--- /dev/null
+++ b/doc/reference/html/VisionEgg.PyroApps.EPhysGUI.ImageSequenceLauncher-class.html
@@ -0,0 +1,455 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.PyroApps.EPhysGUI.ImageSequenceLauncher</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.PyroApps-module.html">Package PyroApps</a> ::
+        <a href="VisionEgg.PyroApps.EPhysGUI-module.html">Module EPhysGUI</a> ::
+        Class ImageSequenceLauncher
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.PyroApps.EPhysGUI.ImageSequenceLauncher-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class ImageSequenceLauncher</h1><span class="codelink"><a href="VisionEgg.PyroApps.EPhysGUI-pysrc.html#ImageSequenceLauncher">source code</a></span><br /><br />
+<pre class="base-tree">
+  Tkinter.Misc --+        
+                 |        
+Tkinter.BaseWidget --+    
+                     |    
+        Tkinter.Wm --+    
+                     |    
+      Tkinter.Toplevel --+
+                         |
+                        <strong class="uidshort">ImageSequenceLauncher</strong>
+</pre>
+
+<hr />
+<!-- ==================== NESTED CLASSES ==================== -->
+<a name="section-NestedClasses"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Nested Classes</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>Tkinter.Misc</code></b>:
+      <code><a href="float-class.html">getdouble</a></code>,
+      <code><a href="int-class.html">getint</a></code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.PyroApps.EPhysGUI.ImageSequenceLauncher-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">master</span>=<span class="summary-sig-default">None</span>,
+        <span class="summary-sig-arg">ephys_server</span>=<span class="summary-sig-default">None</span>,
+        <span class="summary-sig-arg">**cnf</span>)</span><br />
+      Construct a toplevel widget with the parent MASTER.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.EPhysGUI-pysrc.html#ImageSequenceLauncher.__init__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="do_it"></a><span class="summary-sig-name">do_it</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.EPhysGUI-pysrc.html#ImageSequenceLauncher.do_it">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>Tkinter.BaseWidget</code></b>:
+      <code>destroy</code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>Tkinter.Misc</code></b>:
+      <code>__getitem__</code>,
+      <code>__setitem__</code>,
+      <code>__str__</code>,
+      <code>after</code>,
+      <code>after_cancel</code>,
+      <code>after_idle</code>,
+      <code>bbox</code>,
+      <code>bell</code>,
+      <code>bind</code>,
+      <code>bind_all</code>,
+      <code>bind_class</code>,
+      <code>bindtags</code>,
+      <code>cget</code>,
+      <code>clipboard_append</code>,
+      <code>clipboard_clear</code>,
+      <code>clipboard_get</code>,
+      <code>colormodel</code>,
+      <code>columnconfigure</code>,
+      <code>config</code>,
+      <code>configure</code>,
+      <code>deletecommand</code>,
+      <code>event_add</code>,
+      <code>event_delete</code>,
+      <code>event_generate</code>,
+      <code>event_info</code>,
+      <code>focus</code>,
+      <code>focus_displayof</code>,
+      <code>focus_force</code>,
+      <code>focus_get</code>,
+      <code>focus_lastfor</code>,
+      <code>focus_set</code>,
+      <code>getboolean</code>,
+      <code>getvar</code>,
+      <code>grab_current</code>,
+      <code>grab_release</code>,
+      <code>grab_set</code>,
+      <code>grab_set_global</code>,
+      <code>grab_status</code>,
+      <code>grid_bbox</code>,
+      <code>grid_columnconfigure</code>,
+      <code>grid_location</code>,
+      <code>grid_propagate</code>,
+      <code>grid_rowconfigure</code>,
+      <code>grid_size</code>,
+      <code>grid_slaves</code>,
+      <code>image_names</code>,
+      <code>image_types</code>,
+      <code>keys</code>,
+      <code>lift</code>,
+      <code>lower</code>,
+      <code>mainloop</code>,
+      <code>nametowidget</code>,
+      <code>option_add</code>,
+      <code>option_clear</code>,
+      <code>option_get</code>,
+      <code>option_readfile</code>,
+      <code>pack_propagate</code>,
+      <code>pack_slaves</code>,
+      <code>place_slaves</code>,
+      <code>propagate</code>,
+      <code>quit</code>,
+      <code>register</code>,
+      <code>rowconfigure</code>,
+      <code>selection_clear</code>,
+      <code>selection_get</code>,
+      <code>selection_handle</code>,
+      <code>selection_own</code>,
+      <code>selection_own_get</code>,
+      <code>send</code>,
+      <code>setvar</code>,
+      <code>size</code>,
+      <code>slaves</code>,
+      <code>tk_bisque</code>,
+      <code>tk_focusFollowsMouse</code>,
+      <code>tk_focusNext</code>,
+      <code>tk_focusPrev</code>,
+      <code>tk_menuBar</code>,
+      <code>tk_setPalette</code>,
+      <code>tk_strictMotif</code>,
+      <code>tkraise</code>,
+      <code>unbind</code>,
+      <code>unbind_all</code>,
+      <code>unbind_class</code>,
+      <code>update</code>,
+      <code>update_idletasks</code>,
+      <code>wait_variable</code>,
+      <code>wait_visibility</code>,
+      <code>wait_window</code>,
+      <code>waitvar</code>,
+      <code>winfo_atom</code>,
+      <code>winfo_atomname</code>,
+      <code>winfo_cells</code>,
+      <code>winfo_children</code>,
+      <code>winfo_class</code>,
+      <code>winfo_colormapfull</code>,
+      <code>winfo_containing</code>,
+      <code>winfo_depth</code>,
+      <code>winfo_exists</code>,
+      <code>winfo_fpixels</code>,
+      <code>winfo_geometry</code>,
+      <code>winfo_height</code>,
+      <code>winfo_id</code>,
+      <code>winfo_interps</code>,
+      <code>winfo_ismapped</code>,
+      <code>winfo_manager</code>,
+      <code>winfo_name</code>,
+      <code>winfo_parent</code>,
+      <code>winfo_pathname</code>,
+      <code>winfo_pixels</code>,
+      <code>winfo_pointerx</code>,
+      <code>winfo_pointerxy</code>,
+      <code>winfo_pointery</code>,
+      <code>winfo_reqheight</code>,
+      <code>winfo_reqwidth</code>,
+      <code>winfo_rgb</code>,
+      <code>winfo_rootx</code>,
+      <code>winfo_rooty</code>,
+      <code>winfo_screen</code>,
+      <code>winfo_screencells</code>,
+      <code>winfo_screendepth</code>,
+      <code>winfo_screenheight</code>,
+      <code>winfo_screenmmheight</code>,
+      <code>winfo_screenmmwidth</code>,
+      <code>winfo_screenvisual</code>,
+      <code>winfo_screenwidth</code>,
+      <code>winfo_server</code>,
+      <code>winfo_toplevel</code>,
+      <code>winfo_viewable</code>,
+      <code>winfo_visual</code>,
+      <code>winfo_visualid</code>,
+      <code>winfo_visualsavailable</code>,
+      <code>winfo_vrootheight</code>,
+      <code>winfo_vrootwidth</code>,
+      <code>winfo_vrootx</code>,
+      <code>winfo_vrooty</code>,
+      <code>winfo_width</code>,
+      <code>winfo_x</code>,
+      <code>winfo_y</code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>Tkinter.Wm</code></b>:
+      <code>aspect</code>,
+      <code>attributes</code>,
+      <code>client</code>,
+      <code>colormapwindows</code>,
+      <code>command</code>,
+      <code>deiconify</code>,
+      <code>focusmodel</code>,
+      <code>frame</code>,
+      <code>geometry</code>,
+      <code>grid</code>,
+      <code>group</code>,
+      <code>iconbitmap</code>,
+      <code>iconify</code>,
+      <code>iconmask</code>,
+      <code>iconname</code>,
+      <code>iconposition</code>,
+      <code>iconwindow</code>,
+      <code>maxsize</code>,
+      <code>minsize</code>,
+      <code>overrideredirect</code>,
+      <code>positionfrom</code>,
+      <code>protocol</code>,
+      <code>resizable</code>,
+      <code>sizefrom</code>,
+      <code>state</code>,
+      <code>title</code>,
+      <code>transient</code>,
+      <code>withdraw</code>,
+      <code>wm_aspect</code>,
+      <code>wm_attributes</code>,
+      <code>wm_client</code>,
+      <code>wm_colormapwindows</code>,
+      <code>wm_command</code>,
+      <code>wm_deiconify</code>,
+      <code>wm_focusmodel</code>,
+      <code>wm_frame</code>,
+      <code>wm_geometry</code>,
+      <code>wm_grid</code>,
+      <code>wm_group</code>,
+      <code>wm_iconbitmap</code>,
+      <code>wm_iconify</code>,
+      <code>wm_iconmask</code>,
+      <code>wm_iconname</code>,
+      <code>wm_iconposition</code>,
+      <code>wm_iconwindow</code>,
+      <code>wm_maxsize</code>,
+      <code>wm_minsize</code>,
+      <code>wm_overrideredirect</code>,
+      <code>wm_positionfrom</code>,
+      <code>wm_protocol</code>,
+      <code>wm_resizable</code>,
+      <code>wm_sizefrom</code>,
+      <code>wm_state</code>,
+      <code>wm_title</code>,
+      <code>wm_transient</code>,
+      <code>wm_withdraw</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Class Variables</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>Tkinter.Misc</code></b>:
+      <code>_noarg_</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Method Details</span></td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">master</span>=<span class="sig-default">None</span>,
+        <span class="sig-arg">ephys_server</span>=<span class="sig-default">None</span>,
+        <span class="sig-arg">**cnf</span>)</span>
+    <br /><em class="fname">(Constructor)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.PyroApps.EPhysGUI-pysrc.html#ImageSequenceLauncher.__init__">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Construct a toplevel widget with the parent MASTER.
+
+Valid resource names: background, bd, bg, borderwidth, class,
+colormap, container, cursor, height, highlightbackground,
+highlightcolor, highlightthickness, menu, relief, screen, takefocus,
+use, visual, width.
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      Tkinter.Toplevel.__init__
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.PyroApps.EPhysGUI.Loop-class.html b/doc/reference/html/VisionEgg.PyroApps.EPhysGUI.Loop-class.html
new file mode 100644
index 0000000..77c035c
--- /dev/null
+++ b/doc/reference/html/VisionEgg.PyroApps.EPhysGUI.Loop-class.html
@@ -0,0 +1,347 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.PyroApps.EPhysGUI.Loop</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.PyroApps-module.html">Package PyroApps</a> ::
+        <a href="VisionEgg.PyroApps.EPhysGUI-module.html">Module EPhysGUI</a> ::
+        Class Loop
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.PyroApps.EPhysGUI.Loop-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class Loop</h1><span class="codelink"><a href="VisionEgg.PyroApps.EPhysGUI-pysrc.html#Loop">source code</a></span><br /><br />
+<pre class="base-tree">
+         object --+    
+                  |    
+<a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a> --+
+                      |
+                     <strong class="uidshort">Loop</strong>
+</pre>
+
+<hr />
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.PyroApps.EPhysGUI.Loop-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">**kw</span>)</span><br />
+      Create self.parameters and set values.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.EPhysGUI-pysrc.html#Loop.__init__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="is_done"></a><span class="summary-sig-name">is_done</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.EPhysGUI-pysrc.html#Loop.is_done">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="get_current"></a><span class="summary-sig-name">get_current</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.EPhysGUI-pysrc.html#Loop.get_current">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="advance"></a><span class="summary-sig-name">advance</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.EPhysGUI-pysrc.html#Loop.advance">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="reset"></a><span class="summary-sig-name">reset</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.EPhysGUI-pysrc.html#Loop.reset">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a></code></b>:
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__getstate__">__getstate__</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__setstate__">__setstate__</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#get_specified_type">get_specified_type</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#is_constant_parameter">is_constant_parameter</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#set">set</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#verify_parameters">verify_parameters</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__delattr__</code>,
+      <code>__getattribute__</code>,
+      <code>__hash__</code>,
+      <code>__new__</code>,
+      <code>__reduce__</code>,
+      <code>__reduce_ex__</code>,
+      <code>__repr__</code>,
+      <code>__setattr__</code>,
+      <code>__str__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Class Variables</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.PyroApps.EPhysGUI.Loop-class.html#parameters_and_defaults" class="summary-name">parameters_and_defaults</a> = <code title="{'variable':('<repeat>', ve_types.String), 'sequence':([1, 1, 1], ve_t\
+ypes.Sequence(ve_types.Real)), 'rest_duration_sec':(1.0, ve_types.Real\
+)}">{'variable':('<repeat>', ve_types.St<code class="variable-ellipsis">...</code></code>
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a></code></b>:
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__safe_for_unpickling__">__safe_for_unpickling__</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#constant_parameters_and_defaults">constant_parameters_and_defaults</a></code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Properties</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__class__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Method Details</span></td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">**kw</span>)</span>
+    <br /><em class="fname">(Constructor)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.PyroApps.EPhysGUI-pysrc.html#Loop.__init__">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Create self.parameters and set values.
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.ClassWithParameters-class.html#__init__">ClassWithParameters.__init__</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== CLASS VARIABLE DETAILS ==================== -->
+<a name="section-ClassVariableDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Class Variable Details</span></td>
+</tr>
+</table>
+<a name="parameters_and_defaults"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">parameters_and_defaults</h3>
+  
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+{'variable':('<repeat>', ve_types.String), 'sequence':([1, 1, 1], ve_t<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+ypes.Sequence(ve_types.Real)), 'rest_duration_sec':(1.0, ve_types.Real<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+)}
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.PyroApps.EPhysGUI.LoopContainedObject-class.html b/doc/reference/html/VisionEgg.PyroApps.EPhysGUI.LoopContainedObject-class.html
new file mode 100644
index 0000000..5bcdf22
--- /dev/null
+++ b/doc/reference/html/VisionEgg.PyroApps.EPhysGUI.LoopContainedObject-class.html
@@ -0,0 +1,263 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.PyroApps.EPhysGUI.LoopContainedObject</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.PyroApps-module.html">Package PyroApps</a> ::
+        <a href="VisionEgg.PyroApps.EPhysGUI-module.html">Module EPhysGUI</a> ::
+        Class LoopContainedObject
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.PyroApps.EPhysGUI.LoopContainedObject-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class LoopContainedObject</h1><span class="codelink"><a href="VisionEgg.PyroApps.EPhysGUI-pysrc.html#LoopContainedObject">source code</a></span><br /><br />
+<pre class="base-tree">
+<a href="VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase-class.html">ContainedObjectBase</a> --+
+                      |
+                     <strong class="uidshort">LoopContainedObject</strong>
+</pre>
+
+<hr />
+<pre class="literalblock">
+Container for Loop class
+
+</pre><br /><br />
+
+<!-- ==================== NESTED CLASSES ==================== -->
+<a name="section-NestedClasses"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Nested Classes</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.PyroApps.EPhysGUI.Loop-class.html" class="summary-name">contained_class</a>
+    </td>
+  </tr>
+</table>
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.PyroApps.EPhysGUI.LoopContainedObject-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">contained</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.EPhysGUI-pysrc.html#LoopContainedObject.__init__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.PyroApps.EPhysGUI.LoopContainedObject-class.html#get_str_30" class="summary-sig-name">get_str_30</a>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.EPhysGUI-pysrc.html#LoopContainedObject.get_str_30">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase-class.html">ContainedObjectBase</a></code></b>:
+      <code><a href="VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase-class.html#get_contained">get_contained</a></code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Class Variables</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="header"></a><span class="summary-name">header</span> = <code title=""     variable    rest   N  values"">"     variable    rest   N  values"</code>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Method Details</span></td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">contained</span>)</span>
+    <br /><em class="fname">(Constructor)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.PyroApps.EPhysGUI-pysrc.html#LoopContainedObject.__init__">source code</a></span> 
+    </td>
+  </table>
+  
+  
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase-class.html#__init__">ContainedObjectBase.__init__</a>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="get_str_30"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">get_str_30</span>(<span class="sig-arg">self</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.PyroApps.EPhysGUI-pysrc.html#LoopContainedObject.get_str_30">source code</a></span> 
+    </td>
+  </table>
+  
+  
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase-class.html#get_str_30">ContainedObjectBase.get_str_30</a>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.PyroApps.EPhysGUI.LoopParamDialog-class.html b/doc/reference/html/VisionEgg.PyroApps.EPhysGUI.LoopParamDialog-class.html
new file mode 100644
index 0000000..5eb4b01
--- /dev/null
+++ b/doc/reference/html/VisionEgg.PyroApps.EPhysGUI.LoopParamDialog-class.html
@@ -0,0 +1,584 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.PyroApps.EPhysGUI.LoopParamDialog</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.PyroApps-module.html">Package PyroApps</a> ::
+        <a href="VisionEgg.PyroApps.EPhysGUI-module.html">Module EPhysGUI</a> ::
+        Class LoopParamDialog
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.PyroApps.EPhysGUI.LoopParamDialog-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class LoopParamDialog</h1><span class="codelink"><a href="VisionEgg.PyroApps.EPhysGUI-pysrc.html#LoopParamDialog">source code</a></span><br /><br />
+<pre class="base-tree">
+  Tkinter.Misc --+            
+                 |            
+Tkinter.BaseWidget --+        
+                     |        
+        Tkinter.Wm --+        
+                     |        
+      Tkinter.Toplevel --+    
+                         |    
+     tkSimpleDialog.Dialog --+
+                             |
+                            <strong class="uidshort">LoopParamDialog</strong>
+</pre>
+
+<hr />
+<!-- ==================== NESTED CLASSES ==================== -->
+<a name="section-NestedClasses"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Nested Classes</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>Tkinter.Misc</code></b>:
+      <code><a href="float-class.html">getdouble</a></code>,
+      <code><a href="int-class.html">getint</a></code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.PyroApps.EPhysGUI.LoopParamDialog-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">*args</span>,
+        <span class="summary-sig-arg">**kw</span>)</span><br />
+      Initialize a dialog.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.EPhysGUI-pysrc.html#LoopParamDialog.__init__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.PyroApps.EPhysGUI.LoopParamDialog-class.html#body" class="summary-sig-name">body</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">master</span>)</span><br />
+      create dialog body.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.EPhysGUI-pysrc.html#LoopParamDialog.body">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.PyroApps.EPhysGUI.LoopParamDialog-class.html#validate" class="summary-sig-name">validate</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      validate the data
+
+This method is called automatically to validate the data before the
+dialog is destroyed.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.EPhysGUI-pysrc.html#LoopParamDialog.validate">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.PyroApps.EPhysGUI.LoopParamDialog-class.html#destroy" class="summary-sig-name">destroy</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      Destroy the window</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.EPhysGUI-pysrc.html#LoopParamDialog.destroy">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>tkSimpleDialog.Dialog</code></b>:
+      <code>apply</code>,
+      <code>buttonbox</code>,
+      <code>cancel</code>,
+      <code>ok</code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>Tkinter.Misc</code></b>:
+      <code>__getitem__</code>,
+      <code>__setitem__</code>,
+      <code>__str__</code>,
+      <code>after</code>,
+      <code>after_cancel</code>,
+      <code>after_idle</code>,
+      <code>bbox</code>,
+      <code>bell</code>,
+      <code>bind</code>,
+      <code>bind_all</code>,
+      <code>bind_class</code>,
+      <code>bindtags</code>,
+      <code>cget</code>,
+      <code>clipboard_append</code>,
+      <code>clipboard_clear</code>,
+      <code>clipboard_get</code>,
+      <code>colormodel</code>,
+      <code>columnconfigure</code>,
+      <code>config</code>,
+      <code>configure</code>,
+      <code>deletecommand</code>,
+      <code>event_add</code>,
+      <code>event_delete</code>,
+      <code>event_generate</code>,
+      <code>event_info</code>,
+      <code>focus</code>,
+      <code>focus_displayof</code>,
+      <code>focus_force</code>,
+      <code>focus_get</code>,
+      <code>focus_lastfor</code>,
+      <code>focus_set</code>,
+      <code>getboolean</code>,
+      <code>getvar</code>,
+      <code>grab_current</code>,
+      <code>grab_release</code>,
+      <code>grab_set</code>,
+      <code>grab_set_global</code>,
+      <code>grab_status</code>,
+      <code>grid_bbox</code>,
+      <code>grid_columnconfigure</code>,
+      <code>grid_location</code>,
+      <code>grid_propagate</code>,
+      <code>grid_rowconfigure</code>,
+      <code>grid_size</code>,
+      <code>grid_slaves</code>,
+      <code>image_names</code>,
+      <code>image_types</code>,
+      <code>keys</code>,
+      <code>lift</code>,
+      <code>lower</code>,
+      <code>mainloop</code>,
+      <code>nametowidget</code>,
+      <code>option_add</code>,
+      <code>option_clear</code>,
+      <code>option_get</code>,
+      <code>option_readfile</code>,
+      <code>pack_propagate</code>,
+      <code>pack_slaves</code>,
+      <code>place_slaves</code>,
+      <code>propagate</code>,
+      <code>quit</code>,
+      <code>register</code>,
+      <code>rowconfigure</code>,
+      <code>selection_clear</code>,
+      <code>selection_get</code>,
+      <code>selection_handle</code>,
+      <code>selection_own</code>,
+      <code>selection_own_get</code>,
+      <code>send</code>,
+      <code>setvar</code>,
+      <code>size</code>,
+      <code>slaves</code>,
+      <code>tk_bisque</code>,
+      <code>tk_focusFollowsMouse</code>,
+      <code>tk_focusNext</code>,
+      <code>tk_focusPrev</code>,
+      <code>tk_menuBar</code>,
+      <code>tk_setPalette</code>,
+      <code>tk_strictMotif</code>,
+      <code>tkraise</code>,
+      <code>unbind</code>,
+      <code>unbind_all</code>,
+      <code>unbind_class</code>,
+      <code>update</code>,
+      <code>update_idletasks</code>,
+      <code>wait_variable</code>,
+      <code>wait_visibility</code>,
+      <code>wait_window</code>,
+      <code>waitvar</code>,
+      <code>winfo_atom</code>,
+      <code>winfo_atomname</code>,
+      <code>winfo_cells</code>,
+      <code>winfo_children</code>,
+      <code>winfo_class</code>,
+      <code>winfo_colormapfull</code>,
+      <code>winfo_containing</code>,
+      <code>winfo_depth</code>,
+      <code>winfo_exists</code>,
+      <code>winfo_fpixels</code>,
+      <code>winfo_geometry</code>,
+      <code>winfo_height</code>,
+      <code>winfo_id</code>,
+      <code>winfo_interps</code>,
+      <code>winfo_ismapped</code>,
+      <code>winfo_manager</code>,
+      <code>winfo_name</code>,
+      <code>winfo_parent</code>,
+      <code>winfo_pathname</code>,
+      <code>winfo_pixels</code>,
+      <code>winfo_pointerx</code>,
+      <code>winfo_pointerxy</code>,
+      <code>winfo_pointery</code>,
+      <code>winfo_reqheight</code>,
+      <code>winfo_reqwidth</code>,
+      <code>winfo_rgb</code>,
+      <code>winfo_rootx</code>,
+      <code>winfo_rooty</code>,
+      <code>winfo_screen</code>,
+      <code>winfo_screencells</code>,
+      <code>winfo_screendepth</code>,
+      <code>winfo_screenheight</code>,
+      <code>winfo_screenmmheight</code>,
+      <code>winfo_screenmmwidth</code>,
+      <code>winfo_screenvisual</code>,
+      <code>winfo_screenwidth</code>,
+      <code>winfo_server</code>,
+      <code>winfo_toplevel</code>,
+      <code>winfo_viewable</code>,
+      <code>winfo_visual</code>,
+      <code>winfo_visualid</code>,
+      <code>winfo_visualsavailable</code>,
+      <code>winfo_vrootheight</code>,
+      <code>winfo_vrootwidth</code>,
+      <code>winfo_vrootx</code>,
+      <code>winfo_vrooty</code>,
+      <code>winfo_width</code>,
+      <code>winfo_x</code>,
+      <code>winfo_y</code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>Tkinter.Wm</code></b>:
+      <code>aspect</code>,
+      <code>attributes</code>,
+      <code>client</code>,
+      <code>colormapwindows</code>,
+      <code>command</code>,
+      <code>deiconify</code>,
+      <code>focusmodel</code>,
+      <code>frame</code>,
+      <code>geometry</code>,
+      <code>grid</code>,
+      <code>group</code>,
+      <code>iconbitmap</code>,
+      <code>iconify</code>,
+      <code>iconmask</code>,
+      <code>iconname</code>,
+      <code>iconposition</code>,
+      <code>iconwindow</code>,
+      <code>maxsize</code>,
+      <code>minsize</code>,
+      <code>overrideredirect</code>,
+      <code>positionfrom</code>,
+      <code>protocol</code>,
+      <code>resizable</code>,
+      <code>sizefrom</code>,
+      <code>state</code>,
+      <code>title</code>,
+      <code>transient</code>,
+      <code>withdraw</code>,
+      <code>wm_aspect</code>,
+      <code>wm_attributes</code>,
+      <code>wm_client</code>,
+      <code>wm_colormapwindows</code>,
+      <code>wm_command</code>,
+      <code>wm_deiconify</code>,
+      <code>wm_focusmodel</code>,
+      <code>wm_frame</code>,
+      <code>wm_geometry</code>,
+      <code>wm_grid</code>,
+      <code>wm_group</code>,
+      <code>wm_iconbitmap</code>,
+      <code>wm_iconify</code>,
+      <code>wm_iconmask</code>,
+      <code>wm_iconname</code>,
+      <code>wm_iconposition</code>,
+      <code>wm_iconwindow</code>,
+      <code>wm_maxsize</code>,
+      <code>wm_minsize</code>,
+      <code>wm_overrideredirect</code>,
+      <code>wm_positionfrom</code>,
+      <code>wm_protocol</code>,
+      <code>wm_resizable</code>,
+      <code>wm_sizefrom</code>,
+      <code>wm_state</code>,
+      <code>wm_title</code>,
+      <code>wm_transient</code>,
+      <code>wm_withdraw</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Class Variables</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>Tkinter.Misc</code></b>:
+      <code>_noarg_</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Method Details</span></td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">*args</span>,
+        <span class="sig-arg">**kw</span>)</span>
+    <br /><em class="fname">(Constructor)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.PyroApps.EPhysGUI-pysrc.html#LoopParamDialog.__init__">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Initialize a dialog.
+
+Arguments:
+
+    parent -- a parent window (the application window)
+
+    title -- the dialog title
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      tkSimpleDialog.Dialog.__init__
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="body"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">body</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">master</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.PyroApps.EPhysGUI-pysrc.html#LoopParamDialog.body">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+create dialog body.
+
+return widget that should have initial focus.
+This method should be overridden, and is called
+by the __init__ method.
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      tkSimpleDialog.Dialog.body
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="validate"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">validate</span>(<span class="sig-arg">self</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.PyroApps.EPhysGUI-pysrc.html#LoopParamDialog.validate">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+validate the data
+
+This method is called automatically to validate the data before the
+dialog is destroyed. By default, it always validates OK.
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      tkSimpleDialog.Dialog.validate
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="destroy"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">destroy</span>(<span class="sig-arg">self</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.PyroApps.EPhysGUI-pysrc.html#LoopParamDialog.destroy">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Destroy the window
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      tkSimpleDialog.Dialog.destroy
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.PyroApps.EPhysGUI.ScrollListFrame-class.html b/doc/reference/html/VisionEgg.PyroApps.EPhysGUI.ScrollListFrame-class.html
new file mode 100644
index 0000000..12d7362
--- /dev/null
+++ b/doc/reference/html/VisionEgg.PyroApps.EPhysGUI.ScrollListFrame-class.html
@@ -0,0 +1,663 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.PyroApps.EPhysGUI.ScrollListFrame</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.PyroApps-module.html">Package PyroApps</a> ::
+        <a href="VisionEgg.PyroApps.EPhysGUI-module.html">Module EPhysGUI</a> ::
+        Class ScrollListFrame
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.PyroApps.EPhysGUI.ScrollListFrame-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class ScrollListFrame</h1><span class="codelink"><a href="VisionEgg.PyroApps.EPhysGUI-pysrc.html#ScrollListFrame">source code</a></span><br /><br />
+<pre class="base-tree">
+  Tkinter.Misc --+            
+                 |            
+Tkinter.BaseWidget --+        
+                     |        
+      Tkinter.Pack --+        
+                     |        
+     Tkinter.Place --+        
+                     |        
+      Tkinter.Grid --+        
+                     |        
+        Tkinter.Widget --+    
+                         |    
+             Tkinter.Frame --+
+                             |
+                            <strong class="uidshort">ScrollListFrame</strong>
+</pre>
+
+<hr />
+<!-- ==================== NESTED CLASSES ==================== -->
+<a name="section-NestedClasses"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Nested Classes</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>Tkinter.Misc</code></b>:
+      <code><a href="float-class.html">getdouble</a></code>,
+      <code><a href="int-class.html">getint</a></code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.PyroApps.EPhysGUI.ScrollListFrame-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">master</span>=<span class="summary-sig-default">None</span>,
+        <span class="summary-sig-arg">list_of_contained_objects</span>=<span class="summary-sig-default">None</span>,
+        <span class="summary-sig-arg">contained_objectbject_maker</span>=<span class="summary-sig-default">None</span>,
+        <span class="summary-sig-arg">container_class</span>=<span class="summary-sig-default">ContainedObjectBase</span>,
+        <span class="summary-sig-arg">**cnf</span>)</span><br />
+      Construct a frame widget with the parent MASTER.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.EPhysGUI-pysrc.html#ScrollListFrame.__init__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="list2D_coordinates"></a><span class="summary-sig-name">list2D_coordinates</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">main_index</span>,
+        <span class="summary-sig-arg">main_list</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.EPhysGUI-pysrc.html#ScrollListFrame.list2D_coordinates">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="delegate_hscroll"></a><span class="summary-sig-name">delegate_hscroll</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">*args</span>,
+        <span class="summary-sig-arg">**kw</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.EPhysGUI-pysrc.html#ScrollListFrame.delegate_hscroll">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="get_list_uncontained"></a><span class="summary-sig-name">get_list_uncontained</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.EPhysGUI-pysrc.html#ScrollListFrame.get_list_uncontained">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="update_now"></a><span class="summary-sig-name">update_now</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.EPhysGUI-pysrc.html#ScrollListFrame.update_now">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="add_new"></a><span class="summary-sig-name">add_new</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.EPhysGUI-pysrc.html#ScrollListFrame.add_new">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="edit_selected"></a><span class="summary-sig-name">edit_selected</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">dummy_arg</span>=<span class="summary-sig-default">None</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.EPhysGUI-pysrc.html#ScrollListFrame.edit_selected">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="remove_selected"></a><span class="summary-sig-name">remove_selected</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.EPhysGUI-pysrc.html#ScrollListFrame.remove_selected">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="move_selected_up"></a><span class="summary-sig-name">move_selected_up</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">dummy_arg</span>=<span class="summary-sig-default">None</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.EPhysGUI-pysrc.html#ScrollListFrame.move_selected_up">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="move_selected_down"></a><span class="summary-sig-name">move_selected_down</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">dummy_arg</span>=<span class="summary-sig-default">None</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.EPhysGUI-pysrc.html#ScrollListFrame.move_selected_down">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="make_merge"></a><span class="summary-sig-name">make_merge</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.EPhysGUI-pysrc.html#ScrollListFrame.make_merge">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="make_contained_object"></a><span class="summary-sig-name">make_contained_object</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">container_class</span>)</span><br />
+      Factory function for ContainedObjectBase</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.EPhysGUI-pysrc.html#ScrollListFrame.make_contained_object">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="edit_contained_object"></a><span class="summary-sig-name">edit_contained_object</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">contained_object</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.EPhysGUI-pysrc.html#ScrollListFrame.edit_contained_object">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="make_loop_contained_object"></a><span class="summary-sig-name">make_loop_contained_object</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.EPhysGUI-pysrc.html#ScrollListFrame.make_loop_contained_object">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="get_selected"></a><span class="summary-sig-name">get_selected</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.EPhysGUI-pysrc.html#ScrollListFrame.get_selected">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="map_to_listbox_index"></a><span class="summary-sig-name">map_to_listbox_index</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">index</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.EPhysGUI-pysrc.html#ScrollListFrame.map_to_listbox_index">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>Tkinter.BaseWidget</code></b>:
+      <code>destroy</code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>Tkinter.Misc</code></b>:
+      <code>__getitem__</code>,
+      <code>__setitem__</code>,
+      <code>__str__</code>,
+      <code>after</code>,
+      <code>after_cancel</code>,
+      <code>after_idle</code>,
+      <code>bbox</code>,
+      <code>bell</code>,
+      <code>bind</code>,
+      <code>bind_all</code>,
+      <code>bind_class</code>,
+      <code>bindtags</code>,
+      <code>cget</code>,
+      <code>clipboard_append</code>,
+      <code>clipboard_clear</code>,
+      <code>clipboard_get</code>,
+      <code>colormodel</code>,
+      <code>columnconfigure</code>,
+      <code>config</code>,
+      <code>configure</code>,
+      <code>deletecommand</code>,
+      <code>event_add</code>,
+      <code>event_delete</code>,
+      <code>event_generate</code>,
+      <code>event_info</code>,
+      <code>focus</code>,
+      <code>focus_displayof</code>,
+      <code>focus_force</code>,
+      <code>focus_get</code>,
+      <code>focus_lastfor</code>,
+      <code>focus_set</code>,
+      <code>getboolean</code>,
+      <code>getvar</code>,
+      <code>grab_current</code>,
+      <code>grab_release</code>,
+      <code>grab_set</code>,
+      <code>grab_set_global</code>,
+      <code>grab_status</code>,
+      <code>grid_bbox</code>,
+      <code>grid_columnconfigure</code>,
+      <code>grid_location</code>,
+      <code>grid_propagate</code>,
+      <code>grid_rowconfigure</code>,
+      <code>grid_size</code>,
+      <code>grid_slaves</code>,
+      <code>image_names</code>,
+      <code>image_types</code>,
+      <code>keys</code>,
+      <code>lift</code>,
+      <code>lower</code>,
+      <code>mainloop</code>,
+      <code>nametowidget</code>,
+      <code>option_add</code>,
+      <code>option_clear</code>,
+      <code>option_get</code>,
+      <code>option_readfile</code>,
+      <code>pack_propagate</code>,
+      <code>pack_slaves</code>,
+      <code>place_slaves</code>,
+      <code>propagate</code>,
+      <code>quit</code>,
+      <code>register</code>,
+      <code>rowconfigure</code>,
+      <code>selection_clear</code>,
+      <code>selection_get</code>,
+      <code>selection_handle</code>,
+      <code>selection_own</code>,
+      <code>selection_own_get</code>,
+      <code>send</code>,
+      <code>setvar</code>,
+      <code>size</code>,
+      <code>slaves</code>,
+      <code>tk_bisque</code>,
+      <code>tk_focusFollowsMouse</code>,
+      <code>tk_focusNext</code>,
+      <code>tk_focusPrev</code>,
+      <code>tk_menuBar</code>,
+      <code>tk_setPalette</code>,
+      <code>tk_strictMotif</code>,
+      <code>tkraise</code>,
+      <code>unbind</code>,
+      <code>unbind_all</code>,
+      <code>unbind_class</code>,
+      <code>update</code>,
+      <code>update_idletasks</code>,
+      <code>wait_variable</code>,
+      <code>wait_visibility</code>,
+      <code>wait_window</code>,
+      <code>waitvar</code>,
+      <code>winfo_atom</code>,
+      <code>winfo_atomname</code>,
+      <code>winfo_cells</code>,
+      <code>winfo_children</code>,
+      <code>winfo_class</code>,
+      <code>winfo_colormapfull</code>,
+      <code>winfo_containing</code>,
+      <code>winfo_depth</code>,
+      <code>winfo_exists</code>,
+      <code>winfo_fpixels</code>,
+      <code>winfo_geometry</code>,
+      <code>winfo_height</code>,
+      <code>winfo_id</code>,
+      <code>winfo_interps</code>,
+      <code>winfo_ismapped</code>,
+      <code>winfo_manager</code>,
+      <code>winfo_name</code>,
+      <code>winfo_parent</code>,
+      <code>winfo_pathname</code>,
+      <code>winfo_pixels</code>,
+      <code>winfo_pointerx</code>,
+      <code>winfo_pointerxy</code>,
+      <code>winfo_pointery</code>,
+      <code>winfo_reqheight</code>,
+      <code>winfo_reqwidth</code>,
+      <code>winfo_rgb</code>,
+      <code>winfo_rootx</code>,
+      <code>winfo_rooty</code>,
+      <code>winfo_screen</code>,
+      <code>winfo_screencells</code>,
+      <code>winfo_screendepth</code>,
+      <code>winfo_screenheight</code>,
+      <code>winfo_screenmmheight</code>,
+      <code>winfo_screenmmwidth</code>,
+      <code>winfo_screenvisual</code>,
+      <code>winfo_screenwidth</code>,
+      <code>winfo_server</code>,
+      <code>winfo_toplevel</code>,
+      <code>winfo_viewable</code>,
+      <code>winfo_visual</code>,
+      <code>winfo_visualid</code>,
+      <code>winfo_visualsavailable</code>,
+      <code>winfo_vrootheight</code>,
+      <code>winfo_vrootwidth</code>,
+      <code>winfo_vrootx</code>,
+      <code>winfo_vrooty</code>,
+      <code>winfo_width</code>,
+      <code>winfo_x</code>,
+      <code>winfo_y</code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>Tkinter.Pack</code></b>:
+      <code>forget</code>,
+      <code>info</code>,
+      <code>pack</code>,
+      <code>pack_configure</code>,
+      <code>pack_forget</code>,
+      <code>pack_info</code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>Tkinter.Place</code></b>:
+      <code>place</code>,
+      <code>place_configure</code>,
+      <code>place_forget</code>,
+      <code>place_info</code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>Tkinter.Grid</code></b>:
+      <code>grid</code>,
+      <code>grid_configure</code>,
+      <code>grid_forget</code>,
+      <code>grid_info</code>,
+      <code>grid_remove</code>,
+      <code>location</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Class Variables</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>Tkinter.Misc</code></b>:
+      <code>_noarg_</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Method Details</span></td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">master</span>=<span class="sig-default">None</span>,
+        <span class="sig-arg">list_of_contained_objects</span>=<span class="sig-default">None</span>,
+        <span class="sig-arg">contained_objectbject_maker</span>=<span class="sig-default">None</span>,
+        <span class="sig-arg">container_class</span>=<span class="sig-default">ContainedObjectBase</span>,
+        <span class="sig-arg">**cnf</span>)</span>
+    <br /><em class="fname">(Constructor)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.PyroApps.EPhysGUI-pysrc.html#ScrollListFrame.__init__">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Construct a frame widget with the parent MASTER.
+
+Valid resource names: background, bd, bg, borderwidth, class,
+colormap, container, cursor, height, highlightbackground,
+highlightcolor, highlightthickness, relief, takefocus, visual, width.
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      Tkinter.Frame.__init__
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.PyroApps.EPhysGUIUtils-module.html b/doc/reference/html/VisionEgg.PyroApps.EPhysGUIUtils-module.html
new file mode 100644
index 0000000..fff61cf
--- /dev/null
+++ b/doc/reference/html/VisionEgg.PyroApps.EPhysGUIUtils-module.html
@@ -0,0 +1,166 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.PyroApps.EPhysGUIUtils</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.PyroApps-module.html">Package PyroApps</a> ::
+        Module EPhysGUIUtils
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.PyroApps.EPhysGUIUtils-module.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== MODULE DESCRIPTION ==================== -->
+<h1 class="epydoc">Module EPhysGUIUtils</h1><span class="codelink"><a href="VisionEgg.PyroApps.EPhysGUIUtils-pysrc.html">source code</a></span><br /><br />
+<!-- ==================== CLASSES ==================== -->
+<a name="section-Classes"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Classes</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html" class="summary-name">StimulusControlFrame</a>
+    </td>
+  </tr>
+</table>
+<!-- ==================== VARIABLES ==================== -->
+<a name="section-Variables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Variables</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="__version__"></a><span class="summary-name">__version__</span> = <code title="VisionEgg.release_name">VisionEgg.release_name</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="__cvs__"></a><span class="summary-name">__cvs__</span> = <code title="'$Revision$'.split() [1]">'$Revision$'.split() [1]</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="__date__"></a><span class="summary-name">__date__</span> = <code title="' '.join('$Date$'.split() [1: 3])">' '.join('$Date$'.split() [1: 3])</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="__author__"></a><span class="summary-name">__author__</span> = <code title="'Andrew Straw <astraw at users.sourceforge.net>'">'Andrew Straw <astraw at users.sourceforge.net>'</code>
+    </td>
+  </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.PyroApps.EPhysGUIUtils-pysrc.html b/doc/reference/html/VisionEgg.PyroApps.EPhysGUIUtils-pysrc.html
new file mode 100644
index 0000000..86de8ef
--- /dev/null
+++ b/doc/reference/html/VisionEgg.PyroApps.EPhysGUIUtils-pysrc.html
@@ -0,0 +1,701 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.PyroApps.EPhysGUIUtils</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.PyroApps-module.html">Package PyroApps</a> ::
+        Module EPhysGUIUtils
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.PyroApps.EPhysGUIUtils-pysrc.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<h1 class="epydoc">Source Code for <a href="VisionEgg.PyroApps.EPhysGUIUtils-module.html">Module VisionEgg.PyroApps.EPhysGUIUtils</a></h1>
+<pre class="py-src">
+<a name="L1"></a><tt class="py-lineno">  1</tt>  <tt class="py-line"><tt class="py-comment">#!/usr/bin/env python</tt> </tt>
+<a name="L2"></a><tt class="py-lineno">  2</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L3"></a><tt class="py-lineno">  3</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># The Vision Egg: EPhysGUIUtils</tt> </tt>
+<a name="L4"></a><tt class="py-lineno">  4</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L5"></a><tt class="py-lineno">  5</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Copyright (C) 2001-2003 Andrew Straw.</tt> </tt>
+<a name="L6"></a><tt class="py-lineno">  6</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Author: Andrew Straw <astraw at users.sourceforge.net></tt> </tt>
+<a name="L7"></a><tt class="py-lineno">  7</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># URL: <http://www.visionegg.org/></tt> </tt>
+<a name="L8"></a><tt class="py-lineno">  8</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L9"></a><tt class="py-lineno">  9</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Distributed under the terms of the GNU Lesser General Public License</tt> </tt>
+<a name="L10"></a><tt class="py-lineno"> 10</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># (LGPL). See LICENSE.TXT that came with this file.</tt> </tt>
+<a name="L11"></a><tt class="py-lineno"> 11</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L12"></a><tt class="py-lineno"> 12</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># $Id$</tt> </tt>
+<a name="L13"></a><tt class="py-lineno"> 13</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L14"></a><tt class="py-lineno"> 14</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">sys</tt><tt class="py-op">,</tt> <tt class="py-name">os</tt><tt class="py-op">,</tt> <tt class="py-name">time</tt><tt class="py-op">,</tt> <tt class="py-name">types</tt><tt class="py-op">,</tt> <tt class="py-name">socket</tt> </tt>
+<a name="L15"></a><tt class="py-lineno"> 15</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-0" class="py-name" targets="Variable VisionEgg.GUI.Tkinter=VisionEgg.GUI-module.html#Tkinter"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-0', 'Tkinter', 'link-0');">Tkinter</a></tt> </tt>
+<a name="L16"></a><tt class="py-lineno"> 16</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">Pyro</tt><tt class="py-op">.</tt><tt class="py-name">core</tt> </tt>
+<a name="L17"></a><tt class="py-lineno"> 17</tt>  <tt class="py-line"> </tt>
+<a name="L18"></a><tt class="py-lineno"> 18</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-1" class="py-name" targets="Package VisionEgg=VisionEgg-module.html"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-1', 'VisionEgg', 'link-1');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-2" class="py-name" targets="Module VisionEgg.PyroClient=VisionEgg.PyroClient-module.html,Class VisionEgg.PyroClient.PyroClient=VisionEgg.PyroClie [...]
+VisionEgg.PyroClient.PyroClient" class="py-name" href="#" onclick="return doclink('link-2', 'PyroClient', 'link-2');">PyroClient</a></tt> </tt>
+<a name="L19"></a><tt class="py-lineno"> 19</tt>  <tt class="py-line"> </tt>
+<a name="L20"></a><tt class="py-lineno"> 20</tt>  <tt class="py-line"><tt id="link-3" class="py-name" targets="Variable VisionEgg.DaqKeyboard.__version__=VisionEgg.DaqKeyboard-module.html#__version__,Variable VisionEgg.DaqLPT.__version__=VisionEgg.DaqLPT-module.html#__version__,Variable VisionEgg.GL.__version__=VisionEgg.GL-module.html#__version__,Variable VisionEgg.PyroApps.EPhysGUI.__version__=VisionEgg.PyroApps.EPhysGUI-module.html#__version__,Variable VisionEgg.PyroApps.EPhysGUIUtils [...]
+VisionEgg.DaqLPT.__version__
+VisionEgg.GL.__version__
+VisionEgg.PyroApps.EPhysGUI.__version__
+VisionEgg.PyroApps.EPhysGUIUtils.__version__
+VisionEgg.PyroApps.EPhysServer.__version__
+VisionEgg.PyroApps.GridGUI.__version__
+VisionEgg.PyroApps.GridServer.__version__
+VisionEgg.PyroApps.ScreenPositionGUI.__version__
+VisionEgg.PyroApps.ScreenPositionServer.__version__
+VisionEgg.PyroApps.SpinningDrumGUI.__version__
+VisionEgg.PyroApps.SpinningDrumServer.__version__
+VisionEgg.PyroHelpers.__version__
+VisionEgg.QuickTime.__version__
+VisionEgg.ResponseControl.__version__
+VisionEgg.SphereMap.__version__
+VisionEgg.TCPController.__version__" class="py-name" href="#" onclick="return doclink('link-3', '__version__', 'link-3');">__version__</a></tt> <tt class="py-op">=</tt> <tt id="link-4" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-4', 'VisionEgg', 'link-1');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-5" class="py-name" targets="Variable VisionEgg.release_name=VisionEgg-module.html#release_name"><a title="VisionEgg.release_name" c [...]
+<a name="L21"></a><tt class="py-lineno"> 21</tt>  <tt class="py-line"><tt id="link-6" class="py-name" targets="Variable VisionEgg.PyroApps.ColorCalGUI.__cvs__=VisionEgg.PyroApps.ColorCalGUI-module.html#__cvs__,Variable VisionEgg.PyroApps.ColorCalServer.__cvs__=VisionEgg.PyroApps.ColorCalServer-module.html#__cvs__,Variable VisionEgg.PyroApps.EPhysGUI.__cvs__=VisionEgg.PyroApps.EPhysGUI-module.html#__cvs__,Variable VisionEgg.PyroApps.EPhysGUIUtils.__cvs__=VisionEgg.PyroApps.EPhysGUIUtils-m [...]
+VisionEgg.PyroApps.ColorCalServer.__cvs__
+VisionEgg.PyroApps.EPhysGUI.__cvs__
+VisionEgg.PyroApps.EPhysGUIUtils.__cvs__
+VisionEgg.PyroApps.EPhysServer.__cvs__
+VisionEgg.PyroApps.FlatGratingGUI.__cvs__
+VisionEgg.PyroApps.FlatGratingServer.__cvs__
+VisionEgg.PyroApps.GridGUI.__cvs__
+VisionEgg.PyroApps.GridServer.__cvs__
+VisionEgg.PyroApps.MouseTargetGUI.__cvs__
+VisionEgg.PyroApps.MouseTargetServer.__cvs__
+VisionEgg.PyroApps.ScreenPositionGUI.__cvs__
+VisionEgg.PyroApps.ScreenPositionServer.__cvs__
+VisionEgg.PyroApps.SphereGratingGUI.__cvs__
+VisionEgg.PyroApps.SphereGratingServer.__cvs__
+VisionEgg.PyroApps.SpinningDrumGUI.__cvs__
+VisionEgg.PyroApps.SpinningDrumServer.__cvs__
+VisionEgg.PyroApps.TargetGUI.__cvs__
+VisionEgg.PyroApps.TargetServer.__cvs__
+VisionEgg.PyroClient.__cvs__
+VisionEgg.PyroHelpers.__cvs__
+VisionEgg.TCPController.__cvs__" class="py-name" href="#" onclick="return doclink('link-6', '__cvs__', 'link-6');">__cvs__</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'$Revision$'</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
+<a name="L22"></a><tt class="py-lineno"> 22</tt>  <tt class="py-line"><tt id="link-7" class="py-name" targets="Variable VisionEgg.PyroApps.ColorCalGUI.__date__=VisionEgg.PyroApps.ColorCalGUI-module.html#__date__,Variable VisionEgg.PyroApps.ColorCalServer.__date__=VisionEgg.PyroApps.ColorCalServer-module.html#__date__,Variable VisionEgg.PyroApps.EPhysGUI.__date__=VisionEgg.PyroApps.EPhysGUI-module.html#__date__,Variable VisionEgg.PyroApps.EPhysGUIUtils.__date__=VisionEgg.PyroApps.EPhysGUI [...]
+VisionEgg.PyroApps.ColorCalServer.__date__
+VisionEgg.PyroApps.EPhysGUI.__date__
+VisionEgg.PyroApps.EPhysGUIUtils.__date__
+VisionEgg.PyroApps.EPhysServer.__date__
+VisionEgg.PyroApps.FlatGratingGUI.__date__
+VisionEgg.PyroApps.FlatGratingServer.__date__
+VisionEgg.PyroApps.GridGUI.__date__
+VisionEgg.PyroApps.GridServer.__date__
+VisionEgg.PyroApps.MouseTargetGUI.__date__
+VisionEgg.PyroApps.MouseTargetServer.__date__
+VisionEgg.PyroApps.ScreenPositionGUI.__date__
+VisionEgg.PyroApps.ScreenPositionServer.__date__
+VisionEgg.PyroApps.SphereGratingGUI.__date__
+VisionEgg.PyroApps.SphereGratingServer.__date__
+VisionEgg.PyroApps.SpinningDrumGUI.__date__
+VisionEgg.PyroApps.SpinningDrumServer.__date__
+VisionEgg.PyroApps.TargetGUI.__date__
+VisionEgg.PyroApps.TargetServer.__date__
+VisionEgg.PyroClient.__date__
+VisionEgg.PyroHelpers.__date__
+VisionEgg.TCPController.__date__" class="py-name" href="#" onclick="return doclink('link-7', '__date__', 'link-7');">__date__</a></tt> <tt class="py-op">=</tt> <tt class="py-string">' '</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-string">'$Date$'</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">:</tt><tt class="p [...]
+<a name="L23"></a><tt class="py-lineno"> 23</tt>  <tt class="py-line"><tt id="link-8" class="py-name" targets="Variable VisionEgg.PyroApps.EPhysGUI.__author__=VisionEgg.PyroApps.EPhysGUI-module.html#__author__,Variable VisionEgg.PyroApps.EPhysGUIUtils.__author__=VisionEgg.PyroApps.EPhysGUIUtils-module.html#__author__,Variable VisionEgg.PyroApps.EPhysServer.__author__=VisionEgg.PyroApps.EPhysServer-module.html#__author__,Variable VisionEgg.PyroApps.GridGUI.__author__=VisionEgg.PyroApps.Gr [...]
+VisionEgg.PyroApps.EPhysGUIUtils.__author__
+VisionEgg.PyroApps.EPhysServer.__author__
+VisionEgg.PyroApps.GridGUI.__author__
+VisionEgg.PyroApps.GridServer.__author__
+VisionEgg.PyroApps.SpinningDrumGUI.__author__
+VisionEgg.PyroApps.SpinningDrumServer.__author__" class="py-name" href="#" onclick="return doclink('link-8', '__author__', 'link-8');">__author__</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'Andrew Straw <astraw at users.sourceforge.net>'</tt> </tt>
+<a name="L24"></a><tt class="py-lineno"> 24</tt>  <tt class="py-line"> </tt>
+<a name="StimulusControlFrame"></a><div id="StimulusControlFrame-def"><a name="L25"></a><tt class="py-lineno"> 25</tt> <a class="py-toggle" href="#" id="StimulusControlFrame-toggle" onclick="return toggle('StimulusControlFrame');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html">StimulusControlFrame</a><tt class="py-op">(</tt><tt class="py-base-class">Tkinter</tt><tt class="py-op">.</ [...]
+</div><div id="StimulusControlFrame-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="StimulusControlFrame-expanded"><a name="StimulusControlFrame.__init__"></a><div id="StimulusControlFrame.__init__-def"><a name="L26"></a><tt class="py-lineno"> 26</tt> <a class="py-toggle" href="#" id="StimulusControlFrame.__init__-toggle" onclick="return toggle('StimulusControlFrame.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" hr [...]
+<a name="L27"></a><tt class="py-lineno"> 27</tt>  <tt class="py-line">                 <tt class="py-param">master</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
+<a name="L28"></a><tt class="py-lineno"> 28</tt>  <tt class="py-line">                 <tt class="py-param">suppress_go_buttons</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> </tt>
+<a name="L29"></a><tt class="py-lineno"> 29</tt>  <tt class="py-line">                 <tt class="py-param">title</tt><tt class="py-op">=</tt><tt class="py-string">"Stimulus Control"</tt><tt class="py-op">,</tt> </tt>
+<a name="L30"></a><tt class="py-lineno"> 30</tt>  <tt class="py-line">                 <tt class="py-param">meta_params_class</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
+<a name="L31"></a><tt class="py-lineno"> 31</tt>  <tt class="py-line">                 <tt class="py-op">**</tt><tt class="py-param">kw</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="StimulusControlFrame.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="StimulusControlFrame.__init__-expanded"><a name="L32"></a><tt class="py-lineno"> 32</tt>  <tt class="py-line">        <tt id="link-9" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-9', 'Tkinter', 'link-0');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Frame</tt><tt class="py-op">.</tt><tt id="link [...]
+VisionEgg.Configuration.Config.__init__
+VisionEgg.Core.FixationSpot.__init__
+VisionEgg.Core.FrameTimer.__init__
+VisionEgg.Core.ModelView.__init__
+VisionEgg.Core.OrthographicProjection.__init__
+VisionEgg.Core.OrthographicProjectionNoZClip.__init__
+VisionEgg.Core.PerspectiveProjection.__init__
+VisionEgg.Core.Projection.__init__
+VisionEgg.Core.ProjectionBaseClass.__init__
+VisionEgg.Core.Screen.__init__
+VisionEgg.Core.SimplePerspectiveProjection.__init__
+VisionEgg.Core.Stimulus.__init__
+VisionEgg.Core.Viewport.__init__
+VisionEgg.Daq.Channel.__init__
+VisionEgg.Daq.DaqMode.__init__
+VisionEgg.Daq.Device.__init__
+VisionEgg.Daq.Functionality.__init__
+VisionEgg.Daq.SignalType.__init__
+VisionEgg.DaqKeyboard.KeyboardTriggerInController.__init__
+VisionEgg.DaqLPT.LPTChannel.__init__
+VisionEgg.DaqLPT.LPTDevice.__init__
+VisionEgg.DaqLPT.LPTTriggerInController.__init__
+VisionEgg.DaqLPT.LPTTriggerOutController.__init__
+VisionEgg.Deprecated.Message.__init__
+VisionEgg.Dots.DotArea2D.__init__
+VisionEgg.FlowControl.ConstantController.__init__
+VisionEgg.FlowControl.Controller.__init__
+VisionEgg.FlowControl.EncapsulatedController.__init__
+VisionEgg.FlowControl.EvalStringController.__init__
+VisionEgg.FlowControl.ExecStringController.__init__
+VisionEgg.FlowControl.FunctionController.__init__
+VisionEgg.FlowControl.Presentation.__init__
+VisionEgg.GLTrace.Wrapper.__init__
+VisionEgg.GUI.AppWindow.__init__
+VisionEgg.GUI.GetKeypressDialog.__init__
+VisionEgg.GUI.GraphicsConfigurationWindow.__init__
+VisionEgg.GUI.InfoFrame.__init__
+VisionEgg.GUI.ProgressBar.__init__
+VisionEgg.GUI.ToplevelDialog.__init__
+VisionEgg.Gratings.SinGrating2D.__init__
+VisionEgg.Gratings.SinGrating3D.__init__
+VisionEgg.MoreStimuli.Arrow.__init__
+VisionEgg.MoreStimuli.FilledCircle.__init__
+VisionEgg.MoreStimuli.Rectangle3D.__init__
+VisionEgg.MoreStimuli.Target2D.__init__
+VisionEgg.ParameterTypes.AnyOf.__init__
+VisionEgg.ParameterTypes.Instance.__init__
+VisionEgg.ParameterTypes.Sequence.__init__
+VisionEgg.ParameterTypes.SubClass.__init__
+VisionEgg.PyroApps.AST_ext.AST_Visitor.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalMetaParameters.__init__
+VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.__init__
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.__init__
+VisionEgg.PyroApps.DropinGUI.DropinMetaParameters.__init__
+VisionEgg.PyroApps.DropinServer.DropinMetaController.__init__
+VisionEgg.PyroApps.EPhysGUI.AppWindow.__init__
+VisionEgg.PyroApps.EPhysGUI.BarButton.__init__
+VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase.__init__
+VisionEgg.PyroApps.EPhysGUI.GammaFrame.__init__
+VisionEgg.PyroApps.EPhysGUI.ImageSequenceLauncher.__init__
+VisionEgg.PyroApps.EPhysGUI.Loop.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopContainedObject.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopParamDialog.__init__
+VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.__init__
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.__init__
+VisionEgg.PyroApps.EPhysServer.EPhysServer.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingMetaParameters.__init__
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.GridGUI.GridControlFrame.__init__
+VisionEgg.PyroApps.GridGUI.GridMetaParameters.__init__
+VisionEgg.PyroApps.GridServer.GridMetaController.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetMetaParameters.__init__
+VisionEgg.PyroApps.MouseTargetServer.MousePositionController.__init__
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetOrientationController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetPositionController.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.CallbackEntry.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionParameters.__init__
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingMetaParameters.__init__
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumMetaParameters.__init__
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.__init__
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.__init__
+VisionEgg.PyroApps.TargetGUI.TargetMetaParameters.__init__
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.__init__
+VisionEgg.PyroClient.PyroClient.__init__
+VisionEgg.PyroHelpers.PyroConstantController.__init__
+VisionEgg.PyroHelpers.PyroEncapsulatedController.__init__
+VisionEgg.PyroHelpers.PyroEvalStringController.__init__
+VisionEgg.PyroHelpers.PyroExecStringController.__init__
+VisionEgg.PyroHelpers.PyroListenController.__init__
+VisionEgg.PyroHelpers.PyroLocalDictController.__init__
+VisionEgg.PyroHelpers.PyroServer.__init__
+VisionEgg.QuickTime.MovieTexture.__init__
+VisionEgg.ResponseControl.KeyboardResponseController.__init__
+VisionEgg.ResponseControl.ResponseController.__init__
+VisionEgg.SphereMap.AzElGrid.__init__
+VisionEgg.SphereMap.SphereGrating.__init__
+VisionEgg.SphereMap.SphereMap.__init__
+VisionEgg.SphereMap.SphereWindow.__init__
+VisionEgg.TCPController.SocketListenController.__init__
+VisionEgg.TCPController.TCPController.__init__
+VisionEgg.TCPController.TCPServer.__init__
+VisionEgg.Text.BitmapText.__init__
+VisionEgg.Text.GlutTextBase.__init__
+VisionEgg.Text.StrokeText.__init__
+VisionEgg.Text.Text.__init__
+VisionEgg.Textures.FixationCross.__init__
+VisionEgg.Textures.Mask2D.__init__
+VisionEgg.Textures.SpinningDrum.__init__
+VisionEgg.Textures.Texture.__init__
+VisionEgg.Textures.TextureFromFile.__init__
+VisionEgg.Textures.TextureObject.__init__
+VisionEgg.Textures.TextureStimulusBaseClass.__init__
+VisionEgg.ThreeDeeMath.TransformMatrix.__init__
+VisionEgg.WrappedText.WrappedText.__init__
+VisionEgg.qtmovie.Movie.__init__
+VisionEgg.qtmovie.Rect.__init__" class="py-name" href="#" onclick="return doclink('link-10', '__init__', 'link-10');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt><tt class="py-name">master</tt><tt class="py-op">,</tt><tt class="py-op">**</tt><tt class="py-name">kw</tt><tt class="py-op">)</tt> </tt>
+<a name="L33"></a><tt class="py-lineno"> 33</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">pyro_client</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L34"></a><tt class="py-lineno"> 34</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">entry_width</tt> <tt class="py-op">=</tt> <tt class="py-number">10</tt> </tt>
+<a name="L35"></a><tt class="py-lineno"> 35</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">connected</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L36"></a><tt class="py-lineno"> 36</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">meta_params_class</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L37"></a><tt class="py-lineno"> 37</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt> <tt class="py-op">=</tt> <tt class="py-name">meta_params_class</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L38"></a><tt class="py-lineno"> 38</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">loopable_variables</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L39"></a><tt class="py-lineno"> 39</tt>  <tt class="py-line"> </tt>
+<a name="L40"></a><tt class="py-lineno"> 40</tt>  <tt class="py-line">        <tt id="link-11" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-11', 'Tkinter', 'link-0');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> </tt>
+<a name="L41"></a><tt class="py-lineno"> 41</tt>  <tt class="py-line">                      <tt class="py-name">text</tt><tt class="py-op">=</tt><tt id="link-12" class="py-name" targets="Variable VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.title=VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame-class.html#title,Variable VisionEgg.PyroApps.DropinGUI.DropinControlFrame.title=VisionEgg.PyroApps.DropinGUI.DropinControlFrame-class.html#title,Variable VisionEgg.PyroApps.FlatGratingGU [...]
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.title
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.title
+VisionEgg.PyroApps.GridGUI.GridControlFrame.title
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.title
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.title
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.title
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.title" class="py-name" href="#" onclick="return doclink('link-12', 'title', 'link-12');">title</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L42"></a><tt class="py-lineno"> 42</tt>  <tt class="py-line">                      <tt class="py-name">font</tt><tt class="py-op">=</tt><tt class="py-op">(</tt><tt class="py-string">"Helvetica"</tt><tt class="py-op">,</tt><tt class="py-number">12</tt><tt class="py-op">,</tt><tt class="py-string">"bold"</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">pack</tt><tt class="py-op">(</tt><tt class="py-name">expand</tt><tt class="py-op">= [...]
+<a name="L43"></a><tt class="py-lineno"> 43</tt>  <tt class="py-line">                                                         <tt class="py-name">fill</tt><tt class="py-op">=</tt><tt id="link-14" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-14', 'Tkinter', 'link-0');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">X</tt><tt class="py-op">)</tt> </tt>
+<a name="L44"></a><tt class="py-lineno"> 44</tt>  <tt class="py-line">         </tt>
+<a name="L45"></a><tt class="py-lineno"> 45</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">suppress_go_buttons</tt><tt class="py-op">:</tt> </tt>
+<a name="L46"></a><tt class="py-lineno"> 46</tt>  <tt class="py-line">            <tt class="py-name">connected_frame</tt> <tt class="py-op">=</tt> <tt id="link-15" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-15', 'Tkinter', 'link-0');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Frame</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
+<a name="L47"></a><tt class="py-lineno"> 47</tt>  <tt class="py-line">            <tt class="py-name">connected_frame</tt><tt class="py-op">.</tt><tt class="py-name">pack</tt><tt class="py-op">(</tt><tt class="py-name">expand</tt><tt class="py-op">=</tt><tt id="link-16" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-16', 'Tkinter', 'link-0');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">YES</tt><tt class="py-op">,</ [...]
+<a name="L48"></a><tt class="py-lineno"> 48</tt>  <tt class="py-line">                                 <tt class="py-name">fill</tt><tt class="py-op">=</tt><tt id="link-17" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-17', 'Tkinter', 'link-0');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">X</tt><tt class="py-op">)</tt> </tt>
+<a name="L49"></a><tt class="py-lineno"> 49</tt>  <tt class="py-line"> </tt>
+<a name="L50"></a><tt class="py-lineno"> 50</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">connected_text</tt> <tt class="py-op">=</tt> <tt id="link-18" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-18', 'Tkinter', 'link-0');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">StringVar</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L51"></a><tt class="py-lineno"> 51</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">connected_text</tt><tt class="py-op">.</tt><tt id="link-19" class="py-name" targets="Method VisionEgg.ClassWithParameters.set()=VisionEgg.ClassWithParameters-class.html#set"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-19', 'set', 'link-19');">set</a></tt><tt class="py-op">(</tt><t [...]
+<a name="L52"></a><tt class="py-lineno"> 52</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">server_hostname</tt> <tt class="py-op">=</tt> <tt id="link-20" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-20', 'Tkinter', 'link-0');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">StringVar</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L53"></a><tt class="py-lineno"> 53</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">server_hostname</tt><tt class="py-op">.</tt><tt id="link-21" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-21', 'set', 'link-19');">set</a></tt><tt class="py-op">(</tt> <tt class="py-name">socket</tt><tt class="py-op">.</tt><tt class="py-name">getfqdn</tt><tt class=" [...]
+<a name="L54"></a><tt class="py-lineno"> 54</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">server_port</tt> <tt class="py-op">=</tt> <tt id="link-22" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-22', 'Tkinter', 'link-0');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">IntVar</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L55"></a><tt class="py-lineno"> 55</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">server_port</tt><tt class="py-op">.</tt><tt id="link-23" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-23', 'set', 'link-19');">set</a></tt><tt class="py-op">(</tt> <tt class="py-number">7766</tt> <tt class="py-op">)</tt> </tt>
+<a name="L56"></a><tt class="py-lineno"> 56</tt>  <tt class="py-line">             </tt>
+<a name="L57"></a><tt class="py-lineno"> 57</tt>  <tt class="py-line">            <tt id="link-24" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-24', 'Tkinter', 'link-0');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">connected_frame</tt><tt class="py-op">,</tt> </tt>
+<a name="L58"></a><tt class="py-lineno"> 58</tt>  <tt class="py-line">                          <tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Server hostname"</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> </tt>
+<a name="L59"></a><tt class="py-lineno"> 59</tt>  <tt class="py-line">                                                       <tt class="py-name">column</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">)</tt> </tt>
+<a name="L60"></a><tt class="py-lineno"> 60</tt>  <tt class="py-line">            <tt id="link-25" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-25', 'Tkinter', 'link-0');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Entry</tt><tt class="py-op">(</tt><tt class="py-name">connected_frame</tt><tt class="py-op">,</tt> </tt>
+<a name="L61"></a><tt class="py-lineno"> 61</tt>  <tt class="py-line">                          <tt class="py-name">textvariable</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">server_hostname</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> </tt>
+<a name="L62"></a><tt class="py-lineno"> 62</tt>  <tt class="py-line">                                                                  <tt class="py-name">column</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py-op">,</tt> </tt>
+<a name="L63"></a><tt class="py-lineno"> 63</tt>  <tt class="py-line">                                                                  <tt class="py-name">columnspan</tt><tt class="py-op">=</tt><tt class="py-number">2</tt><tt class="py-op">)</tt> </tt>
+<a name="L64"></a><tt class="py-lineno"> 64</tt>  <tt class="py-line">            <tt id="link-26" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-26', 'Tkinter', 'link-0');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">connected_frame</tt><tt class="py-op">,</tt> </tt>
+<a name="L65"></a><tt class="py-lineno"> 65</tt>  <tt class="py-line">                          <tt class="py-name">textvariable</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">connected_text</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py-op">,</tt> </tt>
+<a name="L66"></a><tt class="py-lineno"> 66</tt>  <tt class="py-line">                                                                 <tt class="py-name">column</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">)</tt> </tt>
+<a name="L67"></a><tt class="py-lineno"> 67</tt>  <tt class="py-line">            <tt id="link-27" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-27', 'Tkinter', 'link-0');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Button</tt><tt class="py-op">(</tt><tt class="py-name">connected_frame</tt><tt class="py-op">,</tt> </tt>
+<a name="L68"></a><tt class="py-lineno"> 68</tt>  <tt class="py-line">                           <tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Connect"</tt><tt class="py-op">,</tt> </tt>
+<a name="L69"></a><tt class="py-lineno"> 69</tt>  <tt class="py-line">                           <tt class="py-name">command</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-28" class="py-name" targets="Method VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.standalone_connect()=VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#standalone_connect"><a title="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.standalone_co [...]
+<a name="L70"></a><tt class="py-lineno"> 70</tt>  <tt class="py-line">                                                                 <tt class="py-name">column</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="L71"></a><tt class="py-lineno"> 71</tt>  <tt class="py-line">            <tt id="link-29" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-29', 'Tkinter', 'link-0');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Button</tt><tt class="py-op">(</tt><tt class="py-name">connected_frame</tt><tt class="py-op">,</tt> </tt>
+<a name="L72"></a><tt class="py-lineno"> 72</tt>  <tt class="py-line">                           <tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Quit server"</tt><tt class="py-op">,</tt> </tt>
+<a name="L73"></a><tt class="py-lineno"> 73</tt>  <tt class="py-line">                           <tt class="py-name">command</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-30" class="py-name" targets="Method VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.quit_server()=VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController-class.html#quit_server,Method VisionEgg.PyroApps.DropinServer.DropinMetaController.quit_server()=VisionEgg.Py [...]
+VisionEgg.PyroApps.DropinServer.DropinMetaController.quit_server
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.quit_server
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.quit_server
+VisionEgg.PyroApps.GridServer.GridMetaController.quit_server
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.quit_server
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.quit_server
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.quit_server
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.quit_server
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.quit_server
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.quit_server" class="py-name" href="#" onclick="return doclink('link-30', 'quit_server', 'link-30');">quit_server</a></tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py-op">,</tt> </tt>
+<a name="L74"></a><tt class="py-lineno"> 74</tt>  <tt class="py-line">                                                          <tt class="py-name">column</tt><tt class="py-op">=</tt><tt class="py-number">2</tt><tt class="py-op">)</tt> </tt>
+<a name="L75"></a><tt class="py-lineno"> 75</tt>  <tt class="py-line">         </tt>
+<a name="L76"></a><tt class="py-lineno"> 76</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">param_frame</tt> <tt class="py-op">=</tt> <tt id="link-31" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-31', 'Tkinter', 'link-0');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Frame</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
+<a name="L77"></a><tt class="py-lineno"> 77</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">param_frame</tt><tt class="py-op">.</tt><tt class="py-name">pack</tt><tt class="py-op">(</tt><tt class="py-name">expand</tt><tt class="py-op">=</tt><tt id="link-32" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-32', 'Tkinter', 'link-0');">Tkinter</a></tt><tt class="py-op">.</tt><tt  [...]
+<a name="L78"></a><tt class="py-lineno"> 78</tt>  <tt class="py-line">         </tt>
+<a name="L79"></a><tt class="py-lineno"> 79</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">suppress_go_buttons</tt><tt class="py-op">:</tt> </tt>
+<a name="L80"></a><tt class="py-lineno"> 80</tt>  <tt class="py-line">            <tt id="link-34" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-34', 'Tkinter', 'link-0');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Button</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt><tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Begin Trial"</tt><tt class="py-op">,< [...]
+VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.go
+VisionEgg.PyroApps.DropinServer.DropinMetaController.go
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.go
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.go
+VisionEgg.PyroApps.GridServer.GridMetaController.go
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.go
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.go
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.go
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.go
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.go" class="py-name" href="#" onclick="return doclink('link-35', 'go', 'link-35');">go</a></tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">pack</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-comment">#expand=Tkinter.YES,fill=Tkinter.BOTH)</tt> </tt>
+</div><a name="L81"></a><tt class="py-lineno"> 81</tt>  <tt class="py-line"> </tt>
+<a name="StimulusControlFrame.make_callback_entry"></a><div id="StimulusControlFrame.make_callback_entry-def"><a name="L82"></a><tt class="py-lineno"> 82</tt> <a class="py-toggle" href="#" id="StimulusControlFrame.make_callback_entry-toggle" onclick="return toggle('StimulusControlFrame.make_callback_entry');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#make_callback_entry">make_ [...]
+</div><div id="StimulusControlFrame.make_callback_entry-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="StimulusControlFrame.make_callback_entry-expanded"><a name="L83"></a><tt class="py-lineno"> 83</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-string">'width'</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">kw</tt><tt class="py-op">.</tt><tt class="py-name">keys</tt><tt class="py-op">(</t [...]
+<a name="L84"></a><tt class="py-lineno"> 84</tt>  <tt class="py-line">            <tt class="py-name">kw</tt><tt class="py-op">[</tt><tt class="py-string">'width'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">entry_width</tt> </tt>
+<a name="L85"></a><tt class="py-lineno"> 85</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">master</tt><tt class="py-op">==</tt><tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L86"></a><tt class="py-lineno"> 86</tt>  <tt class="py-line">            <tt class="py-name">master</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">param_frame</tt> </tt>
+<a name="L87"></a><tt class="py-lineno"> 87</tt>  <tt class="py-line">        <tt class="py-name">e</tt> <tt class="py-op">=</tt> <tt id="link-36" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-36', 'Tkinter', 'link-0');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Entry</tt><tt class="py-op">(</tt><tt class="py-name">master</tt><tt class="py-op">,</tt><tt class="py-op">**</tt><tt class="py-name">kw</tt><tt class="p [...]
+<a name="L88"></a><tt class="py-lineno"> 88</tt>  <tt class="py-line">        <tt class="py-name">e</tt><tt class="py-op">.</tt><tt class="py-name">bind</tt><tt class="py-op">(</tt><tt class="py-string">'<Return>'</tt><tt class="py-op">,</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-37" class="py-name" targets="Method VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.send_values()=VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame-class.html#send_values,M [...]
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.send_values
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.send_values
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.send_values
+VisionEgg.PyroApps.GridGUI.GridControlFrame.send_values
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.send_values
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.send_values
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.send_values
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.send_values
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.send_values" class="py-name" href="#" onclick="return doclink('link-37', 'send_values', 'link-37');">send_values</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L89"></a><tt class="py-lineno"> 89</tt>  <tt class="py-line">        <tt class="py-name">e</tt><tt class="py-op">.</tt><tt class="py-name">bind</tt><tt class="py-op">(</tt><tt class="py-string">'<Tab>'</tt><tt class="py-op">,</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-38" class="py-name"><a title="VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.send_values
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.send_values
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.send_values
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.send_values
+VisionEgg.PyroApps.GridGUI.GridControlFrame.send_values
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.send_values
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.send_values
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.send_values
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.send_values
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.send_values" class="py-name" href="#" onclick="return doclink('link-38', 'send_values', 'link-37');">send_values</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L90"></a><tt class="py-lineno"> 90</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">e</tt> </tt>
+</div><a name="L91"></a><tt class="py-lineno"> 91</tt>  <tt class="py-line">             </tt>
+<a name="StimulusControlFrame.get_shortname"></a><div id="StimulusControlFrame.get_shortname-def"><a name="L92"></a><tt class="py-lineno"> 92</tt> <a class="py-toggle" href="#" id="StimulusControlFrame.get_shortname-toggle" onclick="return toggle('StimulusControlFrame.get_shortname');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#get_shortname">get_shortname</a><tt class="py-op"> [...]
+</div><div id="StimulusControlFrame.get_shortname-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="StimulusControlFrame.get_shortname-expanded"><a name="L93"></a><tt class="py-lineno"> 93</tt>  <tt class="py-line">        <tt class="py-docstring">"""Used as basename for saving parameter files and other ID purposes"""</tt> </tt>
+<a name="L94"></a><tt class="py-lineno"> 94</tt>  <tt class="py-line">        <tt class="py-keyword">raise</tt> <tt class="py-name">NotImplementedError</tt><tt class="py-op">(</tt><tt class="py-string">"Must be overriden by derived class"</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L95"></a><tt class="py-lineno"> 95</tt>  <tt class="py-line"> </tt>
+<a name="StimulusControlFrame.set_param_dict"></a><div id="StimulusControlFrame.set_param_dict-def"><a name="L96"></a><tt class="py-lineno"> 96</tt> <a class="py-toggle" href="#" id="StimulusControlFrame.set_param_dict-toggle" onclick="return toggle('StimulusControlFrame.set_param_dict');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#set_param_dict">set_param_dict</a><tt class="p [...]
+</div><div id="StimulusControlFrame.set_param_dict-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="StimulusControlFrame.set_param_dict-expanded"><a name="L97"></a><tt class="py-lineno"> 97</tt>  <tt class="py-line">        <tt class="py-name">orig_params</tt> <tt class="py-op">=</tt> <tt class="py-name">dir</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op">)</tt> </tt>
+<a name="L98"></a><tt class="py-lineno"> 98</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">new_param_name</tt> <tt class="py-keyword">in</tt> <tt class="py-name">new_param_dict</tt><tt class="py-op">.</tt><tt class="py-name">keys</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L99"></a><tt class="py-lineno"> 99</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">new_param_name</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-number">2</tt><tt class="py-op">]</tt> <tt class="py-op">!=</tt> <tt class="py-string">'__'</tt> <tt class="py-keyword">and</tt> <tt class="py-name">new_param_name</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">2</tt><tt class="py-op">:</tt><tt class= [...]
+<a name="L100"></a><tt class="py-lineno">100</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">new_param_name</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">orig_params</tt><tt class="py-op">:</tt> </tt>
+<a name="L101"></a><tt class="py-lineno">101</tt>  <tt class="py-line">                    <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">'Gave parameter "%s", which I do not know about.'</tt><tt class="py-op">%</tt><tt class="py-op">(</tt><tt class="py-name">new_param_name</tt><tt class="py-op">,</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L102"></a><tt class="py-lineno">102</tt>  <tt class="py-line">                <tt class="py-name">setattr</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op">,</tt><tt class="py-name">new_param_name</tt><tt class="py-op">,</tt><tt class="py-name">new_param_dict</tt><tt class="py-op">[</tt><tt class="py-name">new_param_name</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L103"></a><tt class="py-lineno">103</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-39" class="py-name" targets="Method VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.update_tk_vars()=VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame-class.html#update_tk_vars,Method VisionEgg.PyroApps.DropinGUI.DropinControlFrame.update_tk_vars()=VisionEgg.PyroApps.DropinGUI.DropinControlFrame-class.html#update_tk_vars,Method VisionEgg.P [...]
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.update_tk_vars
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.update_tk_vars
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.update_tk_vars
+VisionEgg.PyroApps.GridGUI.GridControlFrame.update_tk_vars
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.update_tk_vars
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.update_tk_vars
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.update_tk_vars
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.update_tk_vars" class="py-name" href="#" onclick="return doclink('link-39', 'update_tk_vars', 'link-39');">update_tk_vars</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L104"></a><tt class="py-lineno">104</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-40" class="py-name" targets="Method VisionEgg.GUI.InfoFrame.update()=VisionEgg.GUI.InfoFrame-class.html#update,Method VisionEgg.GUI.ProgressBar.update()=VisionEgg.GUI.ProgressBar-class.html#update,Method VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.update()=VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController-class.html#update,Me [...]
+VisionEgg.GUI.ProgressBar.update
+VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.update
+VisionEgg.PyroApps.DropinServer.DropinMetaController.update
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.update
+VisionEgg.PyroApps.GridServer.GridMetaController.update
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.update
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.update
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.update
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.update
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.update
+VisionEgg.QuickTime.MovieTexture.update
+VisionEgg.Textures.Texture.update" class="py-name" href="#" onclick="return doclink('link-40', 'update', 'link-40');">update</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-comment"># update screen with new tk_var value</tt> </tt>
+</div><a name="L105"></a><tt class="py-lineno">105</tt>  <tt class="py-line"> </tt>
+<a name="StimulusControlFrame.update_tk_vars"></a><div id="StimulusControlFrame.update_tk_vars-def"><a name="L106"></a><tt class="py-lineno">106</tt> <a class="py-toggle" href="#" id="StimulusControlFrame.update_tk_vars-toggle" onclick="return toggle('StimulusControlFrame.update_tk_vars');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#update_tk_vars">update_tk_vars</a><tt class=" [...]
+</div><div id="StimulusControlFrame.update_tk_vars-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="StimulusControlFrame.update_tk_vars-expanded"><a name="L107"></a><tt class="py-lineno">107</tt>  <tt class="py-line">        <tt class="py-docstring">"""Update Tkinter variables with (new) values from meta_params"""</tt> </tt>
+<a name="L108"></a><tt class="py-lineno">108</tt>  <tt class="py-line">        <tt class="py-keyword">raise</tt> <tt class="py-name">NotImplementedError</tt><tt class="py-op">(</tt><tt class="py-string">"Must be overriden by derived class"</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L109"></a><tt class="py-lineno">109</tt>  <tt class="py-line"> </tt>
+<a name="StimulusControlFrame.get_parameters_dict"></a><div id="StimulusControlFrame.get_parameters_dict-def"><a name="L110"></a><tt class="py-lineno">110</tt> <a class="py-toggle" href="#" id="StimulusControlFrame.get_parameters_dict-toggle" onclick="return toggle('StimulusControlFrame.get_parameters_dict');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#get_parameters_dict">get_ [...]
+</div><div id="StimulusControlFrame.get_parameters_dict-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="StimulusControlFrame.get_parameters_dict-expanded"><a name="L111"></a><tt class="py-lineno">111</tt>  <tt class="py-line">        <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L112"></a><tt class="py-lineno">112</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">param_name</tt> <tt class="py-keyword">in</tt> <tt class="py-name">dir</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L113"></a><tt class="py-lineno">113</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">param_name</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-number">2</tt><tt class="py-op">]</tt> <tt class="py-op">!=</tt> <tt class="py-string">'__'</tt> <tt class="py-keyword">and</tt> <tt class="py-name">param_name</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">2</tt><tt class="py-op">:</tt><tt class="py-op" [...]
+<a name="L114"></a><tt class="py-lineno">114</tt>  <tt class="py-line">                <tt class="py-name">result</tt><tt class="py-op">[</tt><tt class="py-name">param_name</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">getattr</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op">,</tt><tt class="py-name">param_name</tt><tt class="py-op">)</tt> </tt>
+<a name="L115"></a><tt class="py-lineno">115</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">result</tt> </tt>
+</div><a name="L116"></a><tt class="py-lineno">116</tt>  <tt class="py-line"> </tt>
+<a name="StimulusControlFrame.get_parameters_as_py_strings"></a><div id="StimulusControlFrame.get_parameters_as_py_strings-def"><a name="L117"></a><tt class="py-lineno">117</tt> <a class="py-toggle" href="#" id="StimulusControlFrame.get_parameters_as_py_strings-toggle" onclick="return toggle('StimulusControlFrame.get_parameters_as_py_strings');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame- [...]
+</div><div id="StimulusControlFrame.get_parameters_as_py_strings-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="StimulusControlFrame.get_parameters_as_py_strings-expanded"><a name="L118"></a><tt class="py-lineno">118</tt>  <tt class="py-line">        <tt class="py-docstring">"""Return parameter values as Python-executable strings"""</tt> </tt>
+<a name="L119"></a><tt class="py-lineno">119</tt>  <tt class="py-line">        <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L120"></a><tt class="py-lineno">120</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">param_name</tt> <tt class="py-keyword">in</tt> <tt class="py-name">dir</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L121"></a><tt class="py-lineno">121</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">param_name</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-number">2</tt><tt class="py-op">]</tt> <tt class="py-op">!=</tt> <tt class="py-string">'__'</tt> <tt class="py-keyword">and</tt> <tt class="py-name">param_name</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">2</tt><tt class="py-op">:</tt><tt class="py-op" [...]
+<a name="L122"></a><tt class="py-lineno">122</tt>  <tt class="py-line">                <tt class="py-name">value</tt> <tt class="py-op">=</tt> <tt class="py-name">getattr</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op">,</tt><tt class="py-name">param_name</tt><tt class="py-op">)</tt> </tt>
+<a name="L123"></a><tt class="py-lineno">123</tt>  <tt class="py-line">                <tt class="py-name">value_string</tt> <tt class="py-op">=</tt> <tt class="py-name">repr</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">)</tt> </tt>
+<a name="L124"></a><tt class="py-lineno">124</tt>  <tt class="py-line">                <tt class="py-name">result</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-name">param_name</tt><tt class="py-op">,</tt><tt class="py-name">value_string</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L125"></a><tt class="py-lineno">125</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">result</tt> </tt>
+</div><a name="L126"></a><tt class="py-lineno">126</tt>  <tt class="py-line"> </tt>
+<a name="StimulusControlFrame.get_parameters_as_m_strings"></a><div id="StimulusControlFrame.get_parameters_as_m_strings-def"><a name="L127"></a><tt class="py-lineno">127</tt> <a class="py-toggle" href="#" id="StimulusControlFrame.get_parameters_as_m_strings-toggle" onclick="return toggle('StimulusControlFrame.get_parameters_as_m_strings');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-clas [...]
+</div><div id="StimulusControlFrame.get_parameters_as_m_strings-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="StimulusControlFrame.get_parameters_as_m_strings-expanded"><a name="L128"></a><tt class="py-lineno">128</tt>  <tt class="py-line">        <tt class="py-docstring">"""Return parameter values as Matlab-executable strings"""</tt> </tt>
+<a name="L129"></a><tt class="py-lineno">129</tt>  <tt class="py-line">        <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L130"></a><tt class="py-lineno">130</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">param_name</tt> <tt class="py-keyword">in</tt> <tt class="py-name">dir</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L131"></a><tt class="py-lineno">131</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">param_name</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-number">2</tt><tt class="py-op">]</tt> <tt class="py-op">!=</tt> <tt class="py-string">'__'</tt> <tt class="py-keyword">and</tt> <tt class="py-name">param_name</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">2</tt><tt class="py-op">:</tt><tt class="py-op" [...]
+<a name="L132"></a><tt class="py-lineno">132</tt>  <tt class="py-line">                <tt class="py-name">value</tt> <tt class="py-op">=</tt> <tt class="py-name">getattr</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op">,</tt><tt class="py-name">param_name</tt><tt class="py-op">)</tt> </tt>
+<a name="L133"></a><tt class="py-lineno">133</tt>  <tt class="py-line">                <tt class="py-name">value_string</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-41" class="py-name" targets="Method VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.get_matlab_string()=VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#get_matlab_string"><a title="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.get_matlab_string" [...]
+<a name="L134"></a><tt class="py-lineno">134</tt>  <tt class="py-line">                <tt class="py-name">result</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-name">param_name</tt><tt class="py-op">,</tt><tt class="py-name">value_string</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L135"></a><tt class="py-lineno">135</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">result</tt> </tt>
+</div><a name="L136"></a><tt class="py-lineno">136</tt>  <tt class="py-line"> </tt>
+<a name="StimulusControlFrame.get_matlab_string"></a><div id="StimulusControlFrame.get_matlab_string-def"><a name="L137"></a><tt class="py-lineno">137</tt> <a class="py-toggle" href="#" id="StimulusControlFrame.get_matlab_string-toggle" onclick="return toggle('StimulusControlFrame.get_matlab_string');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#get_matlab_string">get_matlab_str [...]
+</div><div id="StimulusControlFrame.get_matlab_string-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="StimulusControlFrame.get_matlab_string-expanded"><a name="L138"></a><tt class="py-lineno">138</tt>  <tt class="py-line">        <tt class="py-comment"># I'm no Matlab whiz, so you may have to modify this!!</tt> </tt>
+<a name="L139"></a><tt class="py-lineno">139</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">)</tt> <tt class="py-keyword">in</tt> <tt class="py-op">[</tt><tt class="py-name">types</tt><tt class="py-op">.</tt><tt class="py-name">IntType</tt><tt class="py-op">,</tt> <tt class="py-name">types</tt><tt class="py-op">.</tt><tt class="py-name">FloatT [...]
+<a name="L140"></a><tt class="py-lineno">140</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">)</tt> </tt>
+<a name="L141"></a><tt class="py-lineno">141</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">)</tt> <tt class="py-keyword">in</tt> <tt class="py-op">[</tt><tt class="py-name">types</tt><tt class="py-op">.</tt><tt class="py-name">ListType</tt><tt class="py-op">,</tt> <tt class="py-name">types</tt><tt class="py-op">.</tt><tt class="py-name">TupleType</tt><tt class="py-op" [...]
+<a name="L142"></a><tt class="py-lineno">142</tt>  <tt class="py-line">            <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-string">"[ "</tt> </tt>
+<a name="L143"></a><tt class="py-lineno">143</tt>  <tt class="py-line">            <tt class="py-keyword">for</tt> <tt class="py-name">v</tt> <tt class="py-keyword">in</tt> <tt class="py-name">value</tt><tt class="py-op">:</tt> </tt>
+<a name="L144"></a><tt class="py-lineno">144</tt>  <tt class="py-line">                <tt class="py-name">s</tt> <tt class="py-op">+=</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">v</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt class="py-string">" "</tt> </tt>
+<a name="L145"></a><tt class="py-lineno">145</tt>  <tt class="py-line">            <tt class="py-name">s</tt> <tt class="py-op">+=</tt> <tt class="py-string">"]"</tt> </tt>
+<a name="L146"></a><tt class="py-lineno">146</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">s</tt> </tt>
+<a name="L147"></a><tt class="py-lineno">147</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-name">types</tt><tt class="py-op">.</tt><tt class="py-name">StringType</tt><tt class="py-op">:</tt> </tt>
+<a name="L148"></a><tt class="py-lineno">148</tt>  <tt class="py-line">            <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-string">"'%s'"</tt><tt class="py-op">%</tt><tt class="py-name">value</tt> </tt>
+<a name="L149"></a><tt class="py-lineno">149</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">s</tt> </tt>
+<a name="L150"></a><tt class="py-lineno">150</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L151"></a><tt class="py-lineno">151</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">NotImplementedError</tt><tt class="py-op">(</tt><tt class="py-string">"No support for converting %s to Matlab format."</tt><tt class="py-op">%</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L152"></a><tt class="py-lineno">152</tt>  <tt class="py-line"> </tt>
+<a name="StimulusControlFrame.set_parameters_dict"></a><div id="StimulusControlFrame.set_parameters_dict-def"><a name="L153"></a><tt class="py-lineno">153</tt> <a class="py-toggle" href="#" id="StimulusControlFrame.set_parameters_dict-toggle" onclick="return toggle('StimulusControlFrame.set_parameters_dict');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#set_parameters_dict">set_ [...]
+</div><div id="StimulusControlFrame.set_parameters_dict-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="StimulusControlFrame.set_parameters_dict-expanded"><a name="L154"></a><tt class="py-lineno">154</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">key</tt> <tt class="py-keyword">in</tt> <tt class="py-name">dict</tt><tt class="py-op">.</tt><tt class="py-name">keys</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt clas [...]
+<a name="L155"></a><tt class="py-lineno">155</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">key</tt> <tt class="py-keyword">in</tt> <tt class="py-name">dir</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L156"></a><tt class="py-lineno">156</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> <tt class="py-name">RuntimeError</tt><tt class="py-op">(</tt><tt class="py-string">"Parameter %s not in %s"</tt><tt class="py-op">%</tt><tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">,</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op" [...]
+<a name="L157"></a><tt class="py-lineno">157</tt>  <tt class="py-line">            <tt class="py-name">setattr</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op">,</tt><tt class="py-name">key</tt><tt class="py-op">,</tt><tt class="py-name">dict</tt><tt class="py-op">[</tt><tt class="py-name">key</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L158"></a><tt class="py-lineno">158</tt>  <tt class="py-line"> </tt>
+<a name="StimulusControlFrame.get_loopable_variable_names"></a><div id="StimulusControlFrame.get_loopable_variable_names-def"><a name="L159"></a><tt class="py-lineno">159</tt> <a class="py-toggle" href="#" id="StimulusControlFrame.get_loopable_variable_names-toggle" onclick="return toggle('StimulusControlFrame.get_loopable_variable_names');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-clas [...]
+</div><div id="StimulusControlFrame.get_loopable_variable_names-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="StimulusControlFrame.get_loopable_variable_names-expanded"><a name="L160"></a><tt class="py-lineno">160</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">loopable_variables</tt><tt class="py-op">.</tt><tt class="py-name">keys</tt><tt class="py-op">(</tt><tt cl [...]
+</div><a name="L161"></a><tt class="py-lineno">161</tt>  <tt class="py-line"> </tt>
+<a name="StimulusControlFrame.set_loopable_variable"></a><div id="StimulusControlFrame.set_loopable_variable-def"><a name="L162"></a><tt class="py-lineno">162</tt> <a class="py-toggle" href="#" id="StimulusControlFrame.set_loopable_variable-toggle" onclick="return toggle('StimulusControlFrame.set_loopable_variable');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#set_loopable_vari [...]
+</div><div id="StimulusControlFrame.set_loopable_variable-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="StimulusControlFrame.set_loopable_variable-expanded"><a name="L163"></a><tt class="py-lineno">163</tt>  <tt class="py-line">        <tt class="py-name">meta_param_var_name</tt><tt class="py-op">,</tt><tt class="py-name">tk_var</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">loopable_variables</tt><tt c [...]
+<a name="L164"></a><tt class="py-lineno">164</tt>  <tt class="py-line">        <tt class="py-name">setattr</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op">,</tt><tt class="py-name">meta_param_var_name</tt><tt class="py-op">,</tt><tt class="py-name">value</tt><tt class="py-op">)</tt> </tt>
+<a name="L165"></a><tt class="py-lineno">165</tt>  <tt class="py-line">        <tt class="py-name">tk_var</tt><tt class="py-op">.</tt><tt id="link-42" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-42', 'set', 'link-19');">set</a></tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">)</tt> </tt>
+<a name="L166"></a><tt class="py-lineno">166</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-43" class="py-name"><a title="VisionEgg.GUI.InfoFrame.update
+VisionEgg.GUI.ProgressBar.update
+VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.update
+VisionEgg.PyroApps.DropinServer.DropinMetaController.update
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.update
+VisionEgg.PyroApps.GridServer.GridMetaController.update
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.update
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.update
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.update
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.update
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.update
+VisionEgg.QuickTime.MovieTexture.update
+VisionEgg.Textures.Texture.update" class="py-name" href="#" onclick="return doclink('link-43', 'update', 'link-40');">update</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-comment"># update screen with new tk_var value</tt> </tt>
+</div><a name="L167"></a><tt class="py-lineno">167</tt>  <tt class="py-line">         </tt>
+<a name="StimulusControlFrame.send_values"></a><div id="StimulusControlFrame.send_values-def"><a name="L168"></a><tt class="py-lineno">168</tt> <a class="py-toggle" href="#" id="StimulusControlFrame.send_values-toggle" onclick="return toggle('StimulusControlFrame.send_values');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#send_values">send_values</a><tt class="py-op">(</tt><tt c [...]
+</div><div id="StimulusControlFrame.send_values-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="StimulusControlFrame.send_values-expanded"><a name="L169"></a><tt class="py-lineno">169</tt>  <tt class="py-line">        <tt class="py-docstring">"""Update meta_params variables with values from Tkinter fields"""</tt> </tt>
+<a name="L170"></a><tt class="py-lineno">170</tt>  <tt class="py-line">        <tt class="py-keyword">raise</tt> <tt class="py-name">NotImplementedError</tt><tt class="py-op">(</tt><tt class="py-string">"Must be overriden by derived class"</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L171"></a><tt class="py-lineno">171</tt>  <tt class="py-line"> </tt>
+<a name="StimulusControlFrame.get_duration_sec"></a><div id="StimulusControlFrame.get_duration_sec-def"><a name="L172"></a><tt class="py-lineno">172</tt> <a class="py-toggle" href="#" id="StimulusControlFrame.get_duration_sec-toggle" onclick="return toggle('StimulusControlFrame.get_duration_sec');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#get_duration_sec">get_duration_sec</a [...]
+</div><div id="StimulusControlFrame.get_duration_sec-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="StimulusControlFrame.get_duration_sec-expanded"><a name="L173"></a><tt class="py-lineno">173</tt>  <tt class="py-line">        <tt class="py-docstring">"""Calculate total duration in go loop"""</tt> </tt>
+<a name="L174"></a><tt class="py-lineno">174</tt>  <tt class="py-line">        <tt class="py-keyword">raise</tt> <tt class="py-name">NotImplementedError</tt><tt class="py-op">(</tt><tt class="py-string">"Must be overriden by derived class"</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L175"></a><tt class="py-lineno">175</tt>  <tt class="py-line"> </tt>
+<a name="StimulusControlFrame.go"></a><div id="StimulusControlFrame.go-def"><a name="L176"></a><tt class="py-lineno">176</tt> <a class="py-toggle" href="#" id="StimulusControlFrame.go-toggle" onclick="return toggle('StimulusControlFrame.go');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#go">go</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt><tt c [...]
+</div><div id="StimulusControlFrame.go-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="StimulusControlFrame.go-expanded"><a name="L177"></a><tt class="py-lineno">177</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-44" class="py-name"><a title="VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.send_values
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.send_values
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.send_values
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.send_values
+VisionEgg.PyroApps.GridGUI.GridControlFrame.send_values
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.send_values
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.send_values
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.send_values
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.send_values
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.send_values" class="py-name" href="#" onclick="return doclink('link-44', 'send_values', 'link-37');">send_values</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L178"></a><tt class="py-lineno">178</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">connected</tt><tt class="py-op">:</tt> </tt>
+<a name="L179"></a><tt class="py-lineno">179</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">RuntimeError</tt><tt class="py-op">(</tt><tt class="py-string">"must be connected to run trial"</tt><tt class="py-op">)</tt> </tt>
+<a name="L180"></a><tt class="py-lineno">180</tt>  <tt class="py-line"> </tt>
+<a name="L181"></a><tt class="py-lineno">181</tt>  <tt class="py-line">        <tt class="py-name">root</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">winfo_toplevel</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L182"></a><tt class="py-lineno">182</tt>  <tt class="py-line">        <tt class="py-name">old_cursor</tt> <tt class="py-op">=</tt> <tt class="py-name">root</tt><tt class="py-op">[</tt><tt class="py-string">"cursor"</tt><tt class="py-op">]</tt> </tt>
+<a name="L183"></a><tt class="py-lineno">183</tt>  <tt class="py-line"> </tt>
+<a name="L184"></a><tt class="py-lineno">184</tt>  <tt class="py-line">        <tt class="py-name">root</tt><tt class="py-op">[</tt><tt class="py-string">"cursor"</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-string">"watch"</tt> </tt>
+<a name="L185"></a><tt class="py-lineno">185</tt>  <tt class="py-line">        <tt class="py-name">root</tt><tt class="py-op">.</tt><tt id="link-45" class="py-name"><a title="VisionEgg.GUI.InfoFrame.update
+VisionEgg.GUI.ProgressBar.update
+VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.update
+VisionEgg.PyroApps.DropinServer.DropinMetaController.update
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.update
+VisionEgg.PyroApps.GridServer.GridMetaController.update
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.update
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.update
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.update
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.update
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.update
+VisionEgg.QuickTime.MovieTexture.update
+VisionEgg.Textures.Texture.update" class="py-name" href="#" onclick="return doclink('link-45', 'update', 'link-40');">update</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L186"></a><tt class="py-lineno">186</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_controller</tt><tt class="py-op">.</tt><tt id="link-46" class="py-name"><a title="VisionEgg.FlowControl.Presentation.go
+VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.go
+VisionEgg.PyroApps.DropinServer.DropinMetaController.go
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.go
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.go
+VisionEgg.PyroApps.GridServer.GridMetaController.go
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.go
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.go
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.go
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.go
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.go" class="py-name" href="#" onclick="return doclink('link-46', 'go', 'link-35');">go</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L187"></a><tt class="py-lineno">187</tt>  <tt class="py-line">        <tt class="py-name">root</tt><tt class="py-op">[</tt><tt class="py-string">"cursor"</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">old_cursor</tt> </tt>
+<a name="L188"></a><tt class="py-lineno">188</tt>  <tt class="py-line">        <tt class="py-name">root</tt><tt class="py-op">.</tt><tt id="link-47" class="py-name"><a title="VisionEgg.GUI.InfoFrame.update
+VisionEgg.GUI.ProgressBar.update
+VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.update
+VisionEgg.PyroApps.DropinServer.DropinMetaController.update
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.update
+VisionEgg.PyroApps.GridServer.GridMetaController.update
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.update
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.update
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.update
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.update
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.update
+VisionEgg.QuickTime.MovieTexture.update
+VisionEgg.Textures.Texture.update" class="py-name" href="#" onclick="return doclink('link-47', 'update', 'link-40');">update</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L189"></a><tt class="py-lineno">189</tt>  <tt class="py-line"> </tt>
+<a name="StimulusControlFrame.standalone_connect"></a><div id="StimulusControlFrame.standalone_connect-def"><a name="L190"></a><tt class="py-lineno">190</tt> <a class="py-toggle" href="#" id="StimulusControlFrame.standalone_connect-toggle" onclick="return toggle('StimulusControlFrame.standalone_connect');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#standalone_connect">standalon [...]
+</div><div id="StimulusControlFrame.standalone_connect-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="StimulusControlFrame.standalone_connect-expanded"><a name="L191"></a><tt class="py-lineno">191</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-48" class="py-name" targets="Method VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.connect()=VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#c [...]
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.connect
+VisionEgg.PyroHelpers.PyroServer.connect" class="py-name" href="#" onclick="return doclink('link-48', 'connect', 'link-48');">connect</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">server_hostname</tt><tt class="py-op">.</tt><tt id="link-49" class="py-name" targets="Method VisionEgg.PyroClient.PyroClient.get()=VisionEgg.PyroClient.PyroClient-class.html#get"><a title="VisionEgg.PyroClient.PyroClient.get" class="py-name" href="#" on [...]
+</div><a name="L192"></a><tt class="py-lineno">192</tt>  <tt class="py-line"> </tt>
+<a name="StimulusControlFrame.connect"></a><div id="StimulusControlFrame.connect-def"><a name="L193"></a><tt class="py-lineno">193</tt> <a class="py-toggle" href="#" id="StimulusControlFrame.connect-toggle" onclick="return toggle('StimulusControlFrame.connect');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#connect">connect</a><tt class="py-op">(</tt><tt class="py-param">self</tt [...]
+</div><div id="StimulusControlFrame.connect-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="StimulusControlFrame.connect-expanded"><a name="L194"></a><tt class="py-lineno">194</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">pyro_client</tt> <tt class="py-op">=</tt> <tt id="link-51" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-51', 'VisionEgg', 'link-1');"> [...]
+VisionEgg.PyroClient.PyroClient" class="py-name" href="#" onclick="return doclink('link-52', 'PyroClient', 'link-2');">PyroClient</a></tt><tt class="py-op">.</tt><tt id="link-53" class="py-name"><a title="VisionEgg.PyroClient
+VisionEgg.PyroClient.PyroClient" class="py-name" href="#" onclick="return doclink('link-53', 'PyroClient', 'link-2');">PyroClient</a></tt><tt class="py-op">(</tt><tt class="py-name">server_hostname</tt><tt class="py-op">,</tt><tt class="py-name">server_port</tt><tt class="py-op">)</tt> </tt>
+<a name="L195"></a><tt class="py-lineno">195</tt>  <tt class="py-line"> </tt>
+<a name="L196"></a><tt class="py-lineno">196</tt>  <tt class="py-line">        <tt class="py-name">shortname</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-54" class="py-name" targets="Method VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.get_shortname()=VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame-class.html#get_shortname,Method VisionEgg.PyroApps.DropinGUI.DropinControlFrame.get_shortname()=VisionEgg.PyroApps.DropinGUI.Dropin [...]
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.get_shortname
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.get_shortname
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.get_shortname
+VisionEgg.PyroApps.GridGUI.GridControlFrame.get_shortname
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.get_shortname
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.get_shortname
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.get_shortname
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.get_shortname
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.get_shortname" class="py-name" href="#" onclick="return doclink('link-54', 'get_shortname', 'link-54');">get_shortname</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L197"></a><tt class="py-lineno">197</tt>  <tt class="py-line">        <tt class="py-name">meta_controller_name</tt> <tt class="py-op">=</tt> <tt class="py-name">shortname</tt> <tt class="py-op">+</tt> <tt class="py-string">"_server"</tt> </tt>
+<a name="L198"></a><tt class="py-lineno">198</tt>  <tt class="py-line">        <tt class="py-name">timeout_seconds</tt> <tt class="py-op">=</tt> <tt class="py-number">60.0</tt> </tt>
+<a name="L199"></a><tt class="py-lineno">199</tt>  <tt class="py-line">        <tt class="py-name">retry_interval_seconds</tt> <tt class="py-op">=</tt> <tt class="py-number">0.1</tt> </tt>
+<a name="L200"></a><tt class="py-lineno">200</tt>  <tt class="py-line">        <tt class="py-name">start_time</tt> <tt class="py-op">=</tt> <tt class="py-name">time</tt><tt class="py-op">.</tt><tt class="py-name">time</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L201"></a><tt class="py-lineno">201</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt><tt class="py-string">"meta_controller"</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L202"></a><tt class="py-lineno">202</tt>  <tt class="py-line">            <tt class="py-keyword">del</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_controller</tt> <tt class="py-comment"># get rid of old meta_controller</tt> </tt>
+<a name="L203"></a><tt class="py-lineno">203</tt>  <tt class="py-line"> </tt>
+<a name="L204"></a><tt class="py-lineno">204</tt>  <tt class="py-line">        <tt class="py-comment"># get new meta_controller</tt> </tt>
+<a name="L205"></a><tt class="py-lineno">205</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">while</tt> <tt class="py-keyword">not</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt><tt class="py-string">"meta_controller"</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L206"></a><tt class="py-lineno">206</tt>  <tt class="py-line">            <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L207"></a><tt class="py-lineno">207</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_controller</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">pyro_client</tt><tt class="py-op">.</tt><tt id="link-55" class="py-name"><a title="VisionEgg.PyroClient.PyroClient.get" class="py-name" href="#" onclick="return doclink('link-55', 'get', 'link-49');">get</a></tt>< [...]
+<a name="L208"></a><tt class="py-lineno">208</tt>  <tt class="py-line">            <tt class="py-keyword">except</tt> <tt class="py-name">Pyro</tt><tt class="py-op">.</tt><tt class="py-name">errors</tt><tt class="py-op">.</tt><tt class="py-name">NamingError</tt><tt class="py-op">,</tt> <tt class="py-name">x</tt><tt class="py-op">:</tt> </tt>
+<a name="L209"></a><tt class="py-lineno">209</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">x</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-string">"name not found"</tt><tt class="py-op">:</tt> </tt>
+<a name="L210"></a><tt class="py-lineno">210</tt>  <tt class="py-line">                    <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">time</tt><tt class="py-op">.</tt><tt class="py-name">time</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">-</tt><tt class="py-name">start_time</tt><tt class="py-op">)</tt> <tt class="py-op">>=</tt> <tt class="py-name">timeout_seconds</tt><tt class="py-op">:</tt> </tt>
+<a name="L211"></a><tt class="py-lineno">211</tt>  <tt class="py-line">                        <tt class="py-keyword">raise</tt> <tt class="py-comment"># Couldn't find experiment controller on Pyro network</tt> </tt>
+<a name="L212"></a><tt class="py-lineno">212</tt>  <tt class="py-line">                    <tt class="py-name">time</tt><tt class="py-op">.</tt><tt class="py-name">sleep</tt><tt class="py-op">(</tt><tt class="py-name">retry_interval_seconds</tt><tt class="py-op">)</tt> </tt>
+<a name="L213"></a><tt class="py-lineno">213</tt>  <tt class="py-line">                <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L214"></a><tt class="py-lineno">214</tt>  <tt class="py-line">                    <tt class="py-keyword">raise</tt> <tt class="py-comment"># unknown error</tt> </tt>
+<a name="L215"></a><tt class="py-lineno">215</tt>  <tt class="py-line"> </tt>
+<a name="L216"></a><tt class="py-lineno">216</tt>  <tt class="py-line">        <tt class="py-comment"># attribute error: check: stimkey == short_name + "_server"</tt> </tt>
+<a name="L217"></a><tt class="py-lineno">217</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_controller</tt><tt class="py-op">.</tt><tt id="link-56" class="py-name" targets="Method VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.get_parameters()=VisionEgg.PyroApps.ColorCalSer [...]
+VisionEgg.PyroApps.DropinServer.DropinMetaController.get_parameters
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.get_parameters
+VisionEgg.PyroApps.GridServer.GridMetaController.get_parameters
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.get_parameters
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.get_parameters
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.get_parameters
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.get_parameters
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.get_parameters" class="py-name" href="#" onclick="return doclink('link-56', 'get_parameters', 'link-56');">get_parameters</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt>  </tt>
+<a name="L218"></a><tt class="py-lineno">218</tt>  <tt class="py-line"> </tt>
+<a name="L219"></a><tt class="py-lineno">219</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">connected</tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L220"></a><tt class="py-lineno">220</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt><tt class="py-string">'connected_text'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> <tt class="py-comment"># EPhysGUI client suppresses this</tt> </tt>
+<a name="L221"></a><tt class="py-lineno">221</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">connected_text</tt><tt class="py-op">.</tt><tt id="link-57" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-57', 'set', 'link-19');">set</a></tt><tt class="py-op">(</tt><tt class="py-string">"Server status: Connected"</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L222"></a><tt class="py-lineno">222</tt>  <tt class="py-line"> </tt>
+<a name="StimulusControlFrame.quit_server"></a><div id="StimulusControlFrame.quit_server-def"><a name="L223"></a><tt class="py-lineno">223</tt> <a class="py-toggle" href="#" id="StimulusControlFrame.quit_server-toggle" onclick="return toggle('StimulusControlFrame.quit_server');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#quit_server">quit_server</a><tt class="py-op">(</tt><tt c [...]
+</div><div id="StimulusControlFrame.quit_server-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="StimulusControlFrame.quit_server-expanded"><a name="L224"></a><tt class="py-lineno">224</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_controller</tt><tt class="py-op">.</tt><tt id="link-58" class="py-name"><a title="VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.quit_server
+VisionEgg.PyroApps.DropinServer.DropinMetaController.quit_server
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.quit_server
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.quit_server
+VisionEgg.PyroApps.GridServer.GridMetaController.quit_server
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.quit_server
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.quit_server
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.quit_server
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.quit_server
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.quit_server
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.quit_server" class="py-name" href="#" onclick="return doclink('link-58', 'quit_server', 'link-30');">quit_server</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L225"></a><tt class="py-lineno">225</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">connected</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L226"></a><tt class="py-lineno">226</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt><tt class="py-string">'connected_text'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> <tt class="py-comment"># EPhysGUI client suppresses this label</tt> </tt>
+<a name="L227"></a><tt class="py-lineno">227</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">connected_text</tt><tt class="py-op">.</tt><tt id="link-59" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-59', 'set', 'link-19');">set</a></tt><tt class="py-op">(</tt><tt class="py-string">"Server status: Not connected"</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L228"></a><tt class="py-lineno">228</tt>  <tt class="py-line"> </tt>
+<a name="L229"></a><tt class="py-lineno">229</tt>  <tt class="py-line"><tt class="py-keyword">if</tt> <tt class="py-name">__name__</tt><tt class="py-op">==</tt><tt class="py-string">'__main__'</tt><tt class="py-op">:</tt> </tt>
+<a name="L230"></a><tt class="py-lineno">230</tt>  <tt class="py-line">    <tt class="py-name">frame</tt> <tt class="py-op">=</tt> <tt id="link-60" class="py-name" targets="Class VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame=VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html"><a title="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame" class="py-name" href="#" onclick="return doclink('link-60', 'StimulusControlFrame', 'link-60');">StimulusControlFrame</a></tt><t [...]
+<a name="L231"></a><tt class="py-lineno">231</tt>  <tt class="py-line">    <tt class="py-name">frame</tt><tt class="py-op">.</tt><tt class="py-name">pack</tt><tt class="py-op">(</tt><tt class="py-name">expand</tt><tt class="py-op">=</tt><tt id="link-61" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-61', 'Tkinter', 'link-0');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">YES</tt><tt class="py-op">,</tt><tt class="py- [...]
+<a name="L232"></a><tt class="py-lineno">232</tt>  <tt class="py-line">    <tt class="py-name">frame</tt><tt class="py-op">.</tt><tt class="py-name">winfo_toplevel</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-63" class="py-name"><a title="VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.title
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.title
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.title
+VisionEgg.PyroApps.GridGUI.GridControlFrame.title
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.title
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.title
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.title
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.title" class="py-name" href="#" onclick="return doclink('link-63', 'title', 'link-12');">title</a></tt><tt class="py-op">(</tt><tt class="py-string">"%s"</tt><tt class="py-op">%</tt><tt class="py-op">(</tt><tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">path</tt><tt class="py-op">.</tt><tt class="py-name">basename</tt><tt class="py-op">(</tt><tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">path</ [...]
+<a name="L233"></a><tt class="py-lineno">233</tt>  <tt class="py-line">    <tt class="py-name">frame</tt><tt class="py-op">.</tt><tt class="py-name">mainloop</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L234"></a><tt class="py-lineno">234</tt>  <tt class="py-line"> </tt><script type="text/javascript">
+<!--
+expandto(location.href);
+// -->
+</script>
+</pre>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:47 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html b/doc/reference/html/VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html
new file mode 100644
index 0000000..9b039f2
--- /dev/null
+++ b/doc/reference/html/VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html
@@ -0,0 +1,702 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.PyroApps-module.html">Package PyroApps</a> ::
+        <a href="VisionEgg.PyroApps.EPhysGUIUtils-module.html">Module EPhysGUIUtils</a> ::
+        Class StimulusControlFrame
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class StimulusControlFrame</h1><span class="codelink"><a href="VisionEgg.PyroApps.EPhysGUIUtils-pysrc.html#StimulusControlFrame">source code</a></span><br /><br />
+<pre class="base-tree">
+  Tkinter.Misc --+            
+                 |            
+Tkinter.BaseWidget --+        
+                     |        
+      Tkinter.Pack --+        
+                     |        
+     Tkinter.Place --+        
+                     |        
+      Tkinter.Grid --+        
+                     |        
+        Tkinter.Widget --+    
+                         |    
+             Tkinter.Frame --+
+                             |
+                            <strong class="uidshort">StimulusControlFrame</strong>
+</pre>
+
+<hr />
+<!-- ==================== NESTED CLASSES ==================== -->
+<a name="section-NestedClasses"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Nested Classes</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>Tkinter.Misc</code></b>:
+      <code><a href="float-class.html">getdouble</a></code>,
+      <code><a href="int-class.html">getint</a></code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">master</span>=<span class="summary-sig-default">None</span>,
+        <span class="summary-sig-arg">suppress_go_buttons</span>=<span class="summary-sig-default">0</span>,
+        <span class="summary-sig-arg">title</span>=<span class="summary-sig-default">"Stimulus Control"</span>,
+        <span class="summary-sig-arg">meta_params_class</span>=<span class="summary-sig-default">None</span>,
+        <span class="summary-sig-arg">**kw</span>)</span><br />
+      Construct a frame widget with the parent MASTER.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.EPhysGUIUtils-pysrc.html#StimulusControlFrame.__init__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="make_callback_entry"></a><span class="summary-sig-name">make_callback_entry</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">master</span>=<span class="summary-sig-default">None</span>,
+        <span class="summary-sig-arg">**kw</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.EPhysGUIUtils-pysrc.html#StimulusControlFrame.make_callback_entry">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="get_shortname"></a><span class="summary-sig-name">get_shortname</span>(<span class="summary-sig-arg">self</span>)</span><br />
+      Used as basename for saving parameter files and other ID purposes</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.EPhysGUIUtils-pysrc.html#StimulusControlFrame.get_shortname">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="set_param_dict"></a><span class="summary-sig-name">set_param_dict</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">new_param_dict</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.EPhysGUIUtils-pysrc.html#StimulusControlFrame.set_param_dict">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="update_tk_vars"></a><span class="summary-sig-name">update_tk_vars</span>(<span class="summary-sig-arg">self</span>)</span><br />
+      Update Tkinter variables with (new) values from meta_params</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.EPhysGUIUtils-pysrc.html#StimulusControlFrame.update_tk_vars">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="get_parameters_dict"></a><span class="summary-sig-name">get_parameters_dict</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.EPhysGUIUtils-pysrc.html#StimulusControlFrame.get_parameters_dict">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="get_parameters_as_py_strings"></a><span class="summary-sig-name">get_parameters_as_py_strings</span>(<span class="summary-sig-arg">self</span>)</span><br />
+      Return parameter values as Python-executable strings</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.EPhysGUIUtils-pysrc.html#StimulusControlFrame.get_parameters_as_py_strings">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="get_parameters_as_m_strings"></a><span class="summary-sig-name">get_parameters_as_m_strings</span>(<span class="summary-sig-arg">self</span>)</span><br />
+      Return parameter values as Matlab-executable strings</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.EPhysGUIUtils-pysrc.html#StimulusControlFrame.get_parameters_as_m_strings">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="get_matlab_string"></a><span class="summary-sig-name">get_matlab_string</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">value</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.EPhysGUIUtils-pysrc.html#StimulusControlFrame.get_matlab_string">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="set_parameters_dict"></a><span class="summary-sig-name">set_parameters_dict</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">dict</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.EPhysGUIUtils-pysrc.html#StimulusControlFrame.set_parameters_dict">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="get_loopable_variable_names"></a><span class="summary-sig-name">get_loopable_variable_names</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.EPhysGUIUtils-pysrc.html#StimulusControlFrame.get_loopable_variable_names">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="set_loopable_variable"></a><span class="summary-sig-name">set_loopable_variable</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">easy_name</span>,
+        <span class="summary-sig-arg">value</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.EPhysGUIUtils-pysrc.html#StimulusControlFrame.set_loopable_variable">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="send_values"></a><span class="summary-sig-name">send_values</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">dummy_arg</span>=<span class="summary-sig-default">None</span>)</span><br />
+      Update meta_params variables with values from Tkinter fields</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.EPhysGUIUtils-pysrc.html#StimulusControlFrame.send_values">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="get_duration_sec"></a><span class="summary-sig-name">get_duration_sec</span>(<span class="summary-sig-arg">self</span>)</span><br />
+      Calculate total duration in go loop</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.EPhysGUIUtils-pysrc.html#StimulusControlFrame.get_duration_sec">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="go"></a><span class="summary-sig-name">go</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">dummy_arg</span>=<span class="summary-sig-default">None</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.EPhysGUIUtils-pysrc.html#StimulusControlFrame.go">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="standalone_connect"></a><span class="summary-sig-name">standalone_connect</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.EPhysGUIUtils-pysrc.html#StimulusControlFrame.standalone_connect">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="connect"></a><span class="summary-sig-name">connect</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">server_hostname</span>,
+        <span class="summary-sig-arg">server_port</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.EPhysGUIUtils-pysrc.html#StimulusControlFrame.connect">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="quit_server"></a><span class="summary-sig-name">quit_server</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">dummy</span>=<span class="summary-sig-default">None</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.EPhysGUIUtils-pysrc.html#StimulusControlFrame.quit_server">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>Tkinter.BaseWidget</code></b>:
+      <code>destroy</code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>Tkinter.Misc</code></b>:
+      <code>__getitem__</code>,
+      <code>__setitem__</code>,
+      <code>__str__</code>,
+      <code>after</code>,
+      <code>after_cancel</code>,
+      <code>after_idle</code>,
+      <code>bbox</code>,
+      <code>bell</code>,
+      <code>bind</code>,
+      <code>bind_all</code>,
+      <code>bind_class</code>,
+      <code>bindtags</code>,
+      <code>cget</code>,
+      <code>clipboard_append</code>,
+      <code>clipboard_clear</code>,
+      <code>clipboard_get</code>,
+      <code>colormodel</code>,
+      <code>columnconfigure</code>,
+      <code>config</code>,
+      <code>configure</code>,
+      <code>deletecommand</code>,
+      <code>event_add</code>,
+      <code>event_delete</code>,
+      <code>event_generate</code>,
+      <code>event_info</code>,
+      <code>focus</code>,
+      <code>focus_displayof</code>,
+      <code>focus_force</code>,
+      <code>focus_get</code>,
+      <code>focus_lastfor</code>,
+      <code>focus_set</code>,
+      <code>getboolean</code>,
+      <code>getvar</code>,
+      <code>grab_current</code>,
+      <code>grab_release</code>,
+      <code>grab_set</code>,
+      <code>grab_set_global</code>,
+      <code>grab_status</code>,
+      <code>grid_bbox</code>,
+      <code>grid_columnconfigure</code>,
+      <code>grid_location</code>,
+      <code>grid_propagate</code>,
+      <code>grid_rowconfigure</code>,
+      <code>grid_size</code>,
+      <code>grid_slaves</code>,
+      <code>image_names</code>,
+      <code>image_types</code>,
+      <code>keys</code>,
+      <code>lift</code>,
+      <code>lower</code>,
+      <code>mainloop</code>,
+      <code>nametowidget</code>,
+      <code>option_add</code>,
+      <code>option_clear</code>,
+      <code>option_get</code>,
+      <code>option_readfile</code>,
+      <code>pack_propagate</code>,
+      <code>pack_slaves</code>,
+      <code>place_slaves</code>,
+      <code>propagate</code>,
+      <code>quit</code>,
+      <code>register</code>,
+      <code>rowconfigure</code>,
+      <code>selection_clear</code>,
+      <code>selection_get</code>,
+      <code>selection_handle</code>,
+      <code>selection_own</code>,
+      <code>selection_own_get</code>,
+      <code>send</code>,
+      <code>setvar</code>,
+      <code>size</code>,
+      <code>slaves</code>,
+      <code>tk_bisque</code>,
+      <code>tk_focusFollowsMouse</code>,
+      <code>tk_focusNext</code>,
+      <code>tk_focusPrev</code>,
+      <code>tk_menuBar</code>,
+      <code>tk_setPalette</code>,
+      <code>tk_strictMotif</code>,
+      <code>tkraise</code>,
+      <code>unbind</code>,
+      <code>unbind_all</code>,
+      <code>unbind_class</code>,
+      <code>update</code>,
+      <code>update_idletasks</code>,
+      <code>wait_variable</code>,
+      <code>wait_visibility</code>,
+      <code>wait_window</code>,
+      <code>waitvar</code>,
+      <code>winfo_atom</code>,
+      <code>winfo_atomname</code>,
+      <code>winfo_cells</code>,
+      <code>winfo_children</code>,
+      <code>winfo_class</code>,
+      <code>winfo_colormapfull</code>,
+      <code>winfo_containing</code>,
+      <code>winfo_depth</code>,
+      <code>winfo_exists</code>,
+      <code>winfo_fpixels</code>,
+      <code>winfo_geometry</code>,
+      <code>winfo_height</code>,
+      <code>winfo_id</code>,
+      <code>winfo_interps</code>,
+      <code>winfo_ismapped</code>,
+      <code>winfo_manager</code>,
+      <code>winfo_name</code>,
+      <code>winfo_parent</code>,
+      <code>winfo_pathname</code>,
+      <code>winfo_pixels</code>,
+      <code>winfo_pointerx</code>,
+      <code>winfo_pointerxy</code>,
+      <code>winfo_pointery</code>,
+      <code>winfo_reqheight</code>,
+      <code>winfo_reqwidth</code>,
+      <code>winfo_rgb</code>,
+      <code>winfo_rootx</code>,
+      <code>winfo_rooty</code>,
+      <code>winfo_screen</code>,
+      <code>winfo_screencells</code>,
+      <code>winfo_screendepth</code>,
+      <code>winfo_screenheight</code>,
+      <code>winfo_screenmmheight</code>,
+      <code>winfo_screenmmwidth</code>,
+      <code>winfo_screenvisual</code>,
+      <code>winfo_screenwidth</code>,
+      <code>winfo_server</code>,
+      <code>winfo_toplevel</code>,
+      <code>winfo_viewable</code>,
+      <code>winfo_visual</code>,
+      <code>winfo_visualid</code>,
+      <code>winfo_visualsavailable</code>,
+      <code>winfo_vrootheight</code>,
+      <code>winfo_vrootwidth</code>,
+      <code>winfo_vrootx</code>,
+      <code>winfo_vrooty</code>,
+      <code>winfo_width</code>,
+      <code>winfo_x</code>,
+      <code>winfo_y</code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>Tkinter.Pack</code></b>:
+      <code>forget</code>,
+      <code>info</code>,
+      <code>pack</code>,
+      <code>pack_configure</code>,
+      <code>pack_forget</code>,
+      <code>pack_info</code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>Tkinter.Place</code></b>:
+      <code>place</code>,
+      <code>place_configure</code>,
+      <code>place_forget</code>,
+      <code>place_info</code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>Tkinter.Grid</code></b>:
+      <code>grid</code>,
+      <code>grid_configure</code>,
+      <code>grid_forget</code>,
+      <code>grid_info</code>,
+      <code>grid_remove</code>,
+      <code>location</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Class Variables</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>Tkinter.Misc</code></b>:
+      <code>_noarg_</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Method Details</span></td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">master</span>=<span class="sig-default">None</span>,
+        <span class="sig-arg">suppress_go_buttons</span>=<span class="sig-default">0</span>,
+        <span class="sig-arg">title</span>=<span class="sig-default">"Stimulus Control"</span>,
+        <span class="sig-arg">meta_params_class</span>=<span class="sig-default">None</span>,
+        <span class="sig-arg">**kw</span>)</span>
+    <br /><em class="fname">(Constructor)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.PyroApps.EPhysGUIUtils-pysrc.html#StimulusControlFrame.__init__">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Construct a frame widget with the parent MASTER.
+
+Valid resource names: background, bd, bg, borderwidth, class,
+colormap, container, cursor, height, highlightbackground,
+highlightcolor, highlightthickness, relief, takefocus, visual, width.
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      Tkinter.Frame.__init__
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.PyroApps.EPhysServer-module.html b/doc/reference/html/VisionEgg.PyroApps.EPhysServer-module.html
new file mode 100644
index 0000000..348b3c8
--- /dev/null
+++ b/doc/reference/html/VisionEgg.PyroApps.EPhysServer-module.html
@@ -0,0 +1,235 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.PyroApps.EPhysServer</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.PyroApps-module.html">Package PyroApps</a> ::
+        Module EPhysServer
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.PyroApps.EPhysServer-module.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== MODULE DESCRIPTION ==================== -->
+<h1 class="epydoc">Module EPhysServer</h1><span class="codelink"><a href="VisionEgg.PyroApps.EPhysServer-pysrc.html">source code</a></span><br /><br />
+<!-- ==================== CLASSES ==================== -->
+<a name="section-Classes"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Classes</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.PyroApps.EPhysServer.EPhysServer-class.html" class="summary-name">EPhysServer</a>
+    </td>
+  </tr>
+</table>
+<!-- ==================== FUNCTIONS ==================== -->
+<a name="section-Functions"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Functions</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="start_server"></a><span class="summary-sig-name">start_server</span>(<span class="summary-sig-arg">server_modules</span>,
+        <span class="summary-sig-arg">server_class</span>=<span class="summary-sig-default">EPhysServer</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.EPhysServer-pysrc.html#start_server">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+</table>
+<!-- ==================== VARIABLES ==================== -->
+<a name="section-Variables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Variables</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="__version__"></a><span class="summary-name">__version__</span> = <code title="'1.1.dev'">'1.1.dev'</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="__cvs__"></a><span class="summary-name">__cvs__</span> = <code title="'$Revision$'.split() [1]">'$Revision$'.split() [1]</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="__date__"></a><span class="summary-name">__date__</span> = <code title="' '.join('$Date$'.split() [1: 3])">' '.join('$Date$'.split() [1: 3])</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="__author__"></a><span class="summary-name">__author__</span> = <code title="'Andrew Straw <astraw at users.sourceforge.net>'">'Andrew Straw <astraw at users.sourceforge.net>'</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.PyroApps.EPhysServer-module.html#server_modules" class="summary-name">server_modules</a> = <code title="[VisionEgg.PyroApps.TargetServer, VisionEgg.PyroApps.MouseTargetServer\
+, VisionEgg.PyroApps.FlatGratingServer, VisionEgg.PyroApps.SphereGrati\
+ngServer, VisionEgg.PyroApps.SpinningDrumServer, VisionEgg.PyroApps.Gr\
+idServer, VisionEgg.PyroApps.ColorCalServer, VisionEgg.PyroApps.Dropin\
+Server]">[VisionEgg.PyroApps.TargetServer, VisionEgg.P<code class="variable-ellipsis">...</code></code>
+    </td>
+  </tr>
+</table>
+<!-- ==================== VARIABLES DETAILS ==================== -->
+<a name="section-VariablesDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Variables Details</span></td>
+</tr>
+</table>
+<a name="server_modules"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">server_modules</h3>
+  
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+[VisionEgg.PyroApps.TargetServer, VisionEgg.PyroApps.MouseTargetServer<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+, VisionEgg.PyroApps.FlatGratingServer, VisionEgg.PyroApps.SphereGrati<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+ngServer, VisionEgg.PyroApps.SpinningDrumServer, VisionEgg.PyroApps.Gr<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+idServer, VisionEgg.PyroApps.ColorCalServer, VisionEgg.PyroApps.Dropin<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+Server]
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.PyroApps.EPhysServer-pysrc.html b/doc/reference/html/VisionEgg.PyroApps.EPhysServer-pysrc.html
new file mode 100644
index 0000000..613c9d6
--- /dev/null
+++ b/doc/reference/html/VisionEgg.PyroApps.EPhysServer-pysrc.html
@@ -0,0 +1,721 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.PyroApps.EPhysServer</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.PyroApps-module.html">Package PyroApps</a> ::
+        Module EPhysServer
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.PyroApps.EPhysServer-pysrc.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<h1 class="epydoc">Source Code for <a href="VisionEgg.PyroApps.EPhysServer-module.html">Module VisionEgg.PyroApps.EPhysServer</a></h1>
+<pre class="py-src">
+<a name="L1"></a><tt class="py-lineno">  1</tt>  <tt class="py-line"><tt class="py-comment">#!/usr/bin/env python</tt> </tt>
+<a name="L2"></a><tt class="py-lineno">  2</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L3"></a><tt class="py-lineno">  3</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># The Vision Egg: EPhysServer</tt> </tt>
+<a name="L4"></a><tt class="py-lineno">  4</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L5"></a><tt class="py-lineno">  5</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Copyright (C) 2001-2004 Andrew Straw,</tt> </tt>
+<a name="L6"></a><tt class="py-lineno">  6</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Copyright (C) 2004 Imran S. Ali, Lachlan Dowd</tt> </tt>
+<a name="L7"></a><tt class="py-lineno">  7</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Copyright (C) 2004 California Institute of Technology</tt> </tt>
+<a name="L8"></a><tt class="py-lineno">  8</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L9"></a><tt class="py-lineno">  9</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Author: Andrew Straw <astraw at users.sourceforge.net></tt> </tt>
+<a name="L10"></a><tt class="py-lineno"> 10</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># URL: <http://www.visionegg.org/></tt> </tt>
+<a name="L11"></a><tt class="py-lineno"> 11</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L12"></a><tt class="py-lineno"> 12</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Distributed under the terms of the GNU Lesser General Public License</tt> </tt>
+<a name="L13"></a><tt class="py-lineno"> 13</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># (LGPL). See LICENSE.TXT that came with this file.</tt> </tt>
+<a name="L14"></a><tt class="py-lineno"> 14</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L15"></a><tt class="py-lineno"> 15</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># $Id$</tt> </tt>
+<a name="L16"></a><tt class="py-lineno"> 16</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L17"></a><tt class="py-lineno"> 17</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-0" class="py-name" targets="Package VisionEgg=VisionEgg-module.html"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-0', 'VisionEgg', 'link-0');">VisionEgg</a></tt> </tt>
+<a name="L18"></a><tt class="py-lineno"> 18</tt>  <tt class="py-line"><tt id="link-1" class="py-name" targets="Variable VisionEgg.DaqKeyboard.__version__=VisionEgg.DaqKeyboard-module.html#__version__,Variable VisionEgg.DaqLPT.__version__=VisionEgg.DaqLPT-module.html#__version__,Variable VisionEgg.GL.__version__=VisionEgg.GL-module.html#__version__,Variable VisionEgg.PyroApps.EPhysGUI.__version__=VisionEgg.PyroApps.EPhysGUI-module.html#__version__,Variable VisionEgg.PyroApps.EPhysGUIUtils [...]
+VisionEgg.DaqLPT.__version__
+VisionEgg.GL.__version__
+VisionEgg.PyroApps.EPhysGUI.__version__
+VisionEgg.PyroApps.EPhysGUIUtils.__version__
+VisionEgg.PyroApps.EPhysServer.__version__
+VisionEgg.PyroApps.GridGUI.__version__
+VisionEgg.PyroApps.GridServer.__version__
+VisionEgg.PyroApps.ScreenPositionGUI.__version__
+VisionEgg.PyroApps.ScreenPositionServer.__version__
+VisionEgg.PyroApps.SpinningDrumGUI.__version__
+VisionEgg.PyroApps.SpinningDrumServer.__version__
+VisionEgg.PyroHelpers.__version__
+VisionEgg.QuickTime.__version__
+VisionEgg.ResponseControl.__version__
+VisionEgg.SphereMap.__version__
+VisionEgg.TCPController.__version__" class="py-name" href="#" onclick="return doclink('link-1', '__version__', 'link-1');">__version__</a></tt> <tt class="py-op">=</tt> <tt id="link-2" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-2', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-3" class="py-name" targets="Variable VisionEgg.release_name=VisionEgg-module.html#release_name"><a title="VisionEgg.release_name" c [...]
+<a name="L19"></a><tt class="py-lineno"> 19</tt>  <tt class="py-line"><tt id="link-4" class="py-name" targets="Variable VisionEgg.PyroApps.ColorCalGUI.__cvs__=VisionEgg.PyroApps.ColorCalGUI-module.html#__cvs__,Variable VisionEgg.PyroApps.ColorCalServer.__cvs__=VisionEgg.PyroApps.ColorCalServer-module.html#__cvs__,Variable VisionEgg.PyroApps.EPhysGUI.__cvs__=VisionEgg.PyroApps.EPhysGUI-module.html#__cvs__,Variable VisionEgg.PyroApps.EPhysGUIUtils.__cvs__=VisionEgg.PyroApps.EPhysGUIUtils-m [...]
+VisionEgg.PyroApps.ColorCalServer.__cvs__
+VisionEgg.PyroApps.EPhysGUI.__cvs__
+VisionEgg.PyroApps.EPhysGUIUtils.__cvs__
+VisionEgg.PyroApps.EPhysServer.__cvs__
+VisionEgg.PyroApps.FlatGratingGUI.__cvs__
+VisionEgg.PyroApps.FlatGratingServer.__cvs__
+VisionEgg.PyroApps.GridGUI.__cvs__
+VisionEgg.PyroApps.GridServer.__cvs__
+VisionEgg.PyroApps.MouseTargetGUI.__cvs__
+VisionEgg.PyroApps.MouseTargetServer.__cvs__
+VisionEgg.PyroApps.ScreenPositionGUI.__cvs__
+VisionEgg.PyroApps.ScreenPositionServer.__cvs__
+VisionEgg.PyroApps.SphereGratingGUI.__cvs__
+VisionEgg.PyroApps.SphereGratingServer.__cvs__
+VisionEgg.PyroApps.SpinningDrumGUI.__cvs__
+VisionEgg.PyroApps.SpinningDrumServer.__cvs__
+VisionEgg.PyroApps.TargetGUI.__cvs__
+VisionEgg.PyroApps.TargetServer.__cvs__
+VisionEgg.PyroClient.__cvs__
+VisionEgg.PyroHelpers.__cvs__
+VisionEgg.TCPController.__cvs__" class="py-name" href="#" onclick="return doclink('link-4', '__cvs__', 'link-4');">__cvs__</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'$Revision$'</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
+<a name="L20"></a><tt class="py-lineno"> 20</tt>  <tt class="py-line"><tt id="link-5" class="py-name" targets="Variable VisionEgg.PyroApps.ColorCalGUI.__date__=VisionEgg.PyroApps.ColorCalGUI-module.html#__date__,Variable VisionEgg.PyroApps.ColorCalServer.__date__=VisionEgg.PyroApps.ColorCalServer-module.html#__date__,Variable VisionEgg.PyroApps.EPhysGUI.__date__=VisionEgg.PyroApps.EPhysGUI-module.html#__date__,Variable VisionEgg.PyroApps.EPhysGUIUtils.__date__=VisionEgg.PyroApps.EPhysGUI [...]
+VisionEgg.PyroApps.ColorCalServer.__date__
+VisionEgg.PyroApps.EPhysGUI.__date__
+VisionEgg.PyroApps.EPhysGUIUtils.__date__
+VisionEgg.PyroApps.EPhysServer.__date__
+VisionEgg.PyroApps.FlatGratingGUI.__date__
+VisionEgg.PyroApps.FlatGratingServer.__date__
+VisionEgg.PyroApps.GridGUI.__date__
+VisionEgg.PyroApps.GridServer.__date__
+VisionEgg.PyroApps.MouseTargetGUI.__date__
+VisionEgg.PyroApps.MouseTargetServer.__date__
+VisionEgg.PyroApps.ScreenPositionGUI.__date__
+VisionEgg.PyroApps.ScreenPositionServer.__date__
+VisionEgg.PyroApps.SphereGratingGUI.__date__
+VisionEgg.PyroApps.SphereGratingServer.__date__
+VisionEgg.PyroApps.SpinningDrumGUI.__date__
+VisionEgg.PyroApps.SpinningDrumServer.__date__
+VisionEgg.PyroApps.TargetGUI.__date__
+VisionEgg.PyroApps.TargetServer.__date__
+VisionEgg.PyroClient.__date__
+VisionEgg.PyroHelpers.__date__
+VisionEgg.TCPController.__date__" class="py-name" href="#" onclick="return doclink('link-5', '__date__', 'link-5');">__date__</a></tt> <tt class="py-op">=</tt> <tt class="py-string">' '</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-string">'$Date$'</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">:</tt><tt class="p [...]
+<a name="L21"></a><tt class="py-lineno"> 21</tt>  <tt class="py-line"><tt id="link-6" class="py-name" targets="Variable VisionEgg.PyroApps.EPhysGUI.__author__=VisionEgg.PyroApps.EPhysGUI-module.html#__author__,Variable VisionEgg.PyroApps.EPhysGUIUtils.__author__=VisionEgg.PyroApps.EPhysGUIUtils-module.html#__author__,Variable VisionEgg.PyroApps.EPhysServer.__author__=VisionEgg.PyroApps.EPhysServer-module.html#__author__,Variable VisionEgg.PyroApps.GridGUI.__author__=VisionEgg.PyroApps.Gr [...]
+VisionEgg.PyroApps.EPhysGUIUtils.__author__
+VisionEgg.PyroApps.EPhysServer.__author__
+VisionEgg.PyroApps.GridGUI.__author__
+VisionEgg.PyroApps.GridServer.__author__
+VisionEgg.PyroApps.SpinningDrumGUI.__author__
+VisionEgg.PyroApps.SpinningDrumServer.__author__" class="py-name" href="#" onclick="return doclink('link-6', '__author__', 'link-6');">__author__</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'Andrew Straw <astraw at users.sourceforge.net>'</tt> </tt>
+<a name="L22"></a><tt class="py-lineno"> 22</tt>  <tt class="py-line"> </tt>
+<a name="L23"></a><tt class="py-lineno"> 23</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">sys</tt><tt class="py-op">,</tt> <tt class="py-name">os</tt><tt class="py-op">,</tt> <tt class="py-name">math</tt> </tt>
+<a name="L24"></a><tt class="py-lineno"> 24</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">parser</tt><tt class="py-op">,</tt> <tt class="py-name">symbol</tt><tt class="py-op">,</tt> <tt class="py-name">token</tt><tt class="py-op">,</tt> <tt class="py-name">compiler</tt> </tt>
+<a name="L25"></a><tt class="py-lineno"> 25</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-7" class="py-name" targets="Variable VisionEgg.GUI.tkMessageBox=VisionEgg.GUI-module.html#tkMessageBox"><a title="VisionEgg.GUI.tkMessageBox" class="py-name" href="#" onclick="return doclink('link-7', 'tkMessageBox', 'link-7');">tkMessageBox</a></tt> </tt>
+<a name="L26"></a><tt class="py-lineno"> 26</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">pygame</tt><tt class="py-op">.</tt><tt class="py-name">display</tt> </tt>
+<a name="L27"></a><tt class="py-lineno"> 27</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-8" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-8', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-9" class="py-name" targets="Module VisionEgg.Core=VisionEgg.Core-module.html"><a title="VisionEgg.Core" class="py-name" href="#" onclick="return doclink('link-9', 'Core', 'link-9');">Core</a></tt> </tt>
+<a name="L28"></a><tt class="py-lineno"> 28</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-10" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-10', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-11" class="py-name" targets="Module VisionEgg.FlowControl=VisionEgg.FlowControl-module.html"><a title="VisionEgg.FlowControl" class="py-name" href="#" onclick="return doclink('link-11', 'FlowCo [...]
+<a name="L29"></a><tt class="py-lineno"> 29</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-12" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-12', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-13" class="py-name" targets="Module VisionEgg.SphereMap=VisionEgg.SphereMap-module.html,Class VisionEgg.SphereMap.SphereMap=VisionEgg.SphereMap.SphereMap-class.html"><a title="VisionEgg.SphereMap
+VisionEgg.SphereMap.SphereMap" class="py-name" href="#" onclick="return doclink('link-13', 'SphereMap', 'link-13');">SphereMap</a></tt> </tt>
+<a name="L30"></a><tt class="py-lineno"> 30</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-14" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-14', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-15" class="py-name" targets="Module VisionEgg.Text=VisionEgg.Text-module.html,Class VisionEgg.Text.Text=VisionEgg.Text.Text-class.html"><a title="VisionEgg.Text
+VisionEgg.Text.Text" class="py-name" href="#" onclick="return doclink('link-15', 'Text', 'link-15');">Text</a></tt> </tt>
+<a name="L31"></a><tt class="py-lineno"> 31</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-16" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-16', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-17" class="py-name" targets="Module VisionEgg.Textures=VisionEgg.Textures-module.html"><a title="VisionEgg.Textures" class="py-name" href="#" onclick="return doclink('link-17', 'Textures', 'lin [...]
+<a name="L32"></a><tt class="py-lineno"> 32</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-18" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-18', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-19" class="py-name" targets="Module VisionEgg.PyroHelpers=VisionEgg.PyroHelpers-module.html"><a title="VisionEgg.PyroHelpers" class="py-name" href="#" onclick="return doclink('link-19', 'PyroHe [...]
+<a name="L33"></a><tt class="py-lineno"> 33</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">Pyro</tt><tt class="py-op">,</tt> <tt class="py-name">Pyro</tt><tt class="py-op">.</tt><tt class="py-name">core</tt> </tt>
+<a name="L34"></a><tt class="py-lineno"> 34</tt>  <tt class="py-line"> </tt>
+<a name="L35"></a><tt class="py-lineno"> 35</tt>  <tt class="py-line"><tt class="py-comment"># AST extensions:</tt> </tt>
+<a name="L36"></a><tt class="py-lineno"> 36</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-keyword">import</tt> <tt id="link-20" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-20', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-21" class="py-name" targets="Package VisionEgg.PyroApps=VisionEgg.PyroApps-module.html"><a title="VisionEgg.PyroApps" class="py-name" href="#" onclick="return doclin [...]
+<a name="L37"></a><tt class="py-lineno"> 37</tt>  <tt class="py-line"> </tt>
+<a name="L38"></a><tt class="py-lineno"> 38</tt>  <tt class="py-line"><tt class="py-comment"># Add your stimulus modules here</tt> </tt>
+<a name="L39"></a><tt class="py-lineno"> 39</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-keyword">import</tt> <tt id="link-24" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-24', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-25" class="py-name"><a title="VisionEgg.PyroApps" class="py-name" href="#" onclick="return doclink('link-25', 'PyroApps', 'link-21');">PyroApps</a></tt><tt class="py [...]
+<a name="L40"></a><tt class="py-lineno"> 40</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-27" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-27', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-28" class="py-name"><a title="VisionEgg.PyroApps" class="py-name" href="#" onclick="return doclink('link-28', 'PyroApps', 'link-21');">PyroApps</a></tt><tt class="py-op">.</tt><tt id="link-29"  [...]
+<a name="L41"></a><tt class="py-lineno"> 41</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-30" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-30', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-31" class="py-name"><a title="VisionEgg.PyroApps" class="py-name" href="#" onclick="return doclink('link-31', 'PyroApps', 'link-21');">PyroApps</a></tt><tt class="py-op">.</tt><tt id="link-32"  [...]
+<a name="L42"></a><tt class="py-lineno"> 42</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-33" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-33', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-34" class="py-name"><a title="VisionEgg.PyroApps" class="py-name" href="#" onclick="return doclink('link-34', 'PyroApps', 'link-21');">PyroApps</a></tt><tt class="py-op">.</tt><tt id="link-35"  [...]
+<a name="L43"></a><tt class="py-lineno"> 43</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-36" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-36', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-37" class="py-name"><a title="VisionEgg.PyroApps" class="py-name" href="#" onclick="return doclink('link-37', 'PyroApps', 'link-21');">PyroApps</a></tt><tt class="py-op">.</tt><tt id="link-38"  [...]
+<a name="L44"></a><tt class="py-lineno"> 44</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-39" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-39', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-40" class="py-name"><a title="VisionEgg.PyroApps" class="py-name" href="#" onclick="return doclink('link-40', 'PyroApps', 'link-21');">PyroApps</a></tt><tt class="py-op">.</tt><tt id="link-41"  [...]
+<a name="L45"></a><tt class="py-lineno"> 45</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-42" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-42', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-43" class="py-name"><a title="VisionEgg.PyroApps" class="py-name" href="#" onclick="return doclink('link-43', 'PyroApps', 'link-21');">PyroApps</a></tt><tt class="py-op">.</tt><tt id="link-44"  [...]
+<a name="L46"></a><tt class="py-lineno"> 46</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-45" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-45', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-46" class="py-name"><a title="VisionEgg.PyroApps" class="py-name" href="#" onclick="return doclink('link-46', 'PyroApps', 'link-21');">PyroApps</a></tt><tt class="py-op">.</tt><tt id="link-47"  [...]
+<a name="L47"></a><tt class="py-lineno"> 47</tt>  <tt class="py-line"> </tt>
+<a name="L48"></a><tt class="py-lineno"> 48</tt>  <tt class="py-line"><tt id="link-48" class="py-name" targets="Variable VisionEgg.PyroApps.EPhysServer.server_modules=VisionEgg.PyroApps.EPhysServer-module.html#server_modules"><a title="VisionEgg.PyroApps.EPhysServer.server_modules" class="py-name" href="#" onclick="return doclink('link-48', 'server_modules', 'link-48');">server_modules</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt> <tt id="link-49" class="py-name"><a title="V [...]
+<a name="L49"></a><tt class="py-lineno"> 49</tt>  <tt class="py-line">                   <tt id="link-52" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-52', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-53" class="py-name"><a title="VisionEgg.PyroApps" class="py-name" href="#" onclick="return doclink('link-53', 'PyroApps', 'link-21');">PyroApps</a></tt><tt class="py-op">.</tt><tt id="link-54" class="py-name"> [...]
+<a name="L50"></a><tt class="py-lineno"> 50</tt>  <tt class="py-line">                   <tt id="link-55" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-55', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-56" class="py-name"><a title="VisionEgg.PyroApps" class="py-name" href="#" onclick="return doclink('link-56', 'PyroApps', 'link-21');">PyroApps</a></tt><tt class="py-op">.</tt><tt id="link-57" class="py-name"> [...]
+<a name="L51"></a><tt class="py-lineno"> 51</tt>  <tt class="py-line">                   <tt id="link-58" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-58', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-59" class="py-name"><a title="VisionEgg.PyroApps" class="py-name" href="#" onclick="return doclink('link-59', 'PyroApps', 'link-21');">PyroApps</a></tt><tt class="py-op">.</tt><tt id="link-60" class="py-name"> [...]
+<a name="L52"></a><tt class="py-lineno"> 52</tt>  <tt class="py-line">                   <tt id="link-61" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-61', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-62" class="py-name"><a title="VisionEgg.PyroApps" class="py-name" href="#" onclick="return doclink('link-62', 'PyroApps', 'link-21');">PyroApps</a></tt><tt class="py-op">.</tt><tt id="link-63" class="py-name"> [...]
+<a name="L53"></a><tt class="py-lineno"> 53</tt>  <tt class="py-line">                   <tt id="link-64" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-64', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-65" class="py-name"><a title="VisionEgg.PyroApps" class="py-name" href="#" onclick="return doclink('link-65', 'PyroApps', 'link-21');">PyroApps</a></tt><tt class="py-op">.</tt><tt id="link-66" class="py-name"> [...]
+<a name="L54"></a><tt class="py-lineno"> 54</tt>  <tt class="py-line">                   <tt id="link-67" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-67', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-68" class="py-name"><a title="VisionEgg.PyroApps" class="py-name" href="#" onclick="return doclink('link-68', 'PyroApps', 'link-21');">PyroApps</a></tt><tt class="py-op">.</tt><tt id="link-69" class="py-name"> [...]
+<a name="L55"></a><tt class="py-lineno"> 55</tt>  <tt class="py-line">                   <tt id="link-70" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-70', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-71" class="py-name"><a title="VisionEgg.PyroApps" class="py-name" href="#" onclick="return doclink('link-71', 'PyroApps', 'link-21');">PyroApps</a></tt><tt class="py-op">.</tt><tt id="link-72" class="py-name"> [...]
+<a name="L56"></a><tt class="py-lineno"> 56</tt>  <tt class="py-line">                   <tt class="py-op">]</tt> </tt>
+<a name="L57"></a><tt class="py-lineno"> 57</tt>  <tt class="py-line"> </tt>
+<a name="L58"></a><tt class="py-lineno"> 58</tt>  <tt class="py-line"><tt class="py-comment"># 3D screen positioning parameters</tt> </tt>
+<a name="L59"></a><tt class="py-lineno"> 59</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-keyword">from</tt> <tt id="link-73" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-73', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-74" class="py-name"><a title="VisionEgg.PyroApps" class="py-name" href="#" onclick="return doclink('link-74', 'PyroApps', 'link-21');">PyroApps</a></tt><tt class="py-o [...]
+<a name="L60"></a><tt class="py-lineno"> 60</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-77" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-77', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-78" class="py-name"><a title="VisionEgg.PyroApps" class="py-name" href="#" onclick="return doclink('link-78', 'PyroApps', 'link-21');">PyroApps</a></tt><tt class="py-op">.</tt><tt id="link-79" cl [...]
+<a name="L61"></a><tt class="py-lineno"> 61</tt>  <tt class="py-line"> </tt>
+<a name="EPhysServer"></a><div id="EPhysServer-def"><a name="L62"></a><tt class="py-lineno"> 62</tt> <a class="py-toggle" href="#" id="EPhysServer-toggle" onclick="return toggle('EPhysServer');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.PyroApps.EPhysServer.EPhysServer-class.html">EPhysServer</a><tt class="py-op">(</tt>  <tt class="py-base-class">Pyro</tt><tt class="py-op">.</tt><tt class="py-base-class">core</tt><tt class="py-op">. [...]
+</div><div id="EPhysServer-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="EPhysServer-expanded"><a name="EPhysServer.__init__"></a><div id="EPhysServer.__init__-def"><a name="L63"></a><tt class="py-lineno"> 63</tt> <a class="py-toggle" href="#" id="EPhysServer.__init__-toggle" onclick="return toggle('EPhysServer.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.EPhysServer.EPhysServer-class.h [...]
+</div><div id="EPhysServer.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="EPhysServer.__init__-expanded"><a name="L64"></a><tt class="py-lineno"> 64</tt>  <tt class="py-line">        <tt class="py-name">Pyro</tt><tt class="py-op">.</tt><tt class="py-name">core</tt><tt class="py-op">.</tt><tt class="py-name">ObjBase</tt><tt class="py-op">.</tt><tt id="link-81" class="py-name" targets="Method VisionEgg.ClassWithParameters.__init__()=VisionEgg.ClassWith [...]
+VisionEgg.Configuration.Config.__init__
+VisionEgg.Core.FixationSpot.__init__
+VisionEgg.Core.FrameTimer.__init__
+VisionEgg.Core.ModelView.__init__
+VisionEgg.Core.OrthographicProjection.__init__
+VisionEgg.Core.OrthographicProjectionNoZClip.__init__
+VisionEgg.Core.PerspectiveProjection.__init__
+VisionEgg.Core.Projection.__init__
+VisionEgg.Core.ProjectionBaseClass.__init__
+VisionEgg.Core.Screen.__init__
+VisionEgg.Core.SimplePerspectiveProjection.__init__
+VisionEgg.Core.Stimulus.__init__
+VisionEgg.Core.Viewport.__init__
+VisionEgg.Daq.Channel.__init__
+VisionEgg.Daq.DaqMode.__init__
+VisionEgg.Daq.Device.__init__
+VisionEgg.Daq.Functionality.__init__
+VisionEgg.Daq.SignalType.__init__
+VisionEgg.DaqKeyboard.KeyboardTriggerInController.__init__
+VisionEgg.DaqLPT.LPTChannel.__init__
+VisionEgg.DaqLPT.LPTDevice.__init__
+VisionEgg.DaqLPT.LPTTriggerInController.__init__
+VisionEgg.DaqLPT.LPTTriggerOutController.__init__
+VisionEgg.Deprecated.Message.__init__
+VisionEgg.Dots.DotArea2D.__init__
+VisionEgg.FlowControl.ConstantController.__init__
+VisionEgg.FlowControl.Controller.__init__
+VisionEgg.FlowControl.EncapsulatedController.__init__
+VisionEgg.FlowControl.EvalStringController.__init__
+VisionEgg.FlowControl.ExecStringController.__init__
+VisionEgg.FlowControl.FunctionController.__init__
+VisionEgg.FlowControl.Presentation.__init__
+VisionEgg.GLTrace.Wrapper.__init__
+VisionEgg.GUI.AppWindow.__init__
+VisionEgg.GUI.GetKeypressDialog.__init__
+VisionEgg.GUI.GraphicsConfigurationWindow.__init__
+VisionEgg.GUI.InfoFrame.__init__
+VisionEgg.GUI.ProgressBar.__init__
+VisionEgg.GUI.ToplevelDialog.__init__
+VisionEgg.Gratings.SinGrating2D.__init__
+VisionEgg.Gratings.SinGrating3D.__init__
+VisionEgg.MoreStimuli.Arrow.__init__
+VisionEgg.MoreStimuli.FilledCircle.__init__
+VisionEgg.MoreStimuli.Rectangle3D.__init__
+VisionEgg.MoreStimuli.Target2D.__init__
+VisionEgg.ParameterTypes.AnyOf.__init__
+VisionEgg.ParameterTypes.Instance.__init__
+VisionEgg.ParameterTypes.Sequence.__init__
+VisionEgg.ParameterTypes.SubClass.__init__
+VisionEgg.PyroApps.AST_ext.AST_Visitor.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalMetaParameters.__init__
+VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.__init__
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.__init__
+VisionEgg.PyroApps.DropinGUI.DropinMetaParameters.__init__
+VisionEgg.PyroApps.DropinServer.DropinMetaController.__init__
+VisionEgg.PyroApps.EPhysGUI.AppWindow.__init__
+VisionEgg.PyroApps.EPhysGUI.BarButton.__init__
+VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase.__init__
+VisionEgg.PyroApps.EPhysGUI.GammaFrame.__init__
+VisionEgg.PyroApps.EPhysGUI.ImageSequenceLauncher.__init__
+VisionEgg.PyroApps.EPhysGUI.Loop.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopContainedObject.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopParamDialog.__init__
+VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.__init__
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.__init__
+VisionEgg.PyroApps.EPhysServer.EPhysServer.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingMetaParameters.__init__
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.GridGUI.GridControlFrame.__init__
+VisionEgg.PyroApps.GridGUI.GridMetaParameters.__init__
+VisionEgg.PyroApps.GridServer.GridMetaController.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetMetaParameters.__init__
+VisionEgg.PyroApps.MouseTargetServer.MousePositionController.__init__
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetOrientationController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetPositionController.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.CallbackEntry.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionParameters.__init__
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingMetaParameters.__init__
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumMetaParameters.__init__
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.__init__
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.__init__
+VisionEgg.PyroApps.TargetGUI.TargetMetaParameters.__init__
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.__init__
+VisionEgg.PyroClient.PyroClient.__init__
+VisionEgg.PyroHelpers.PyroConstantController.__init__
+VisionEgg.PyroHelpers.PyroEncapsulatedController.__init__
+VisionEgg.PyroHelpers.PyroEvalStringController.__init__
+VisionEgg.PyroHelpers.PyroExecStringController.__init__
+VisionEgg.PyroHelpers.PyroListenController.__init__
+VisionEgg.PyroHelpers.PyroLocalDictController.__init__
+VisionEgg.PyroHelpers.PyroServer.__init__
+VisionEgg.QuickTime.MovieTexture.__init__
+VisionEgg.ResponseControl.KeyboardResponseController.__init__
+VisionEgg.ResponseControl.ResponseController.__init__
+VisionEgg.SphereMap.AzElGrid.__init__
+VisionEgg.SphereMap.SphereGrating.__init__
+VisionEgg.SphereMap.SphereMap.__init__
+VisionEgg.SphereMap.SphereWindow.__init__
+VisionEgg.TCPController.SocketListenController.__init__
+VisionEgg.TCPController.TCPController.__init__
+VisionEgg.TCPController.TCPServer.__init__
+VisionEgg.Text.BitmapText.__init__
+VisionEgg.Text.GlutTextBase.__init__
+VisionEgg.Text.StrokeText.__init__
+VisionEgg.Text.Text.__init__
+VisionEgg.Textures.FixationCross.__init__
+VisionEgg.Textures.Mask2D.__init__
+VisionEgg.Textures.SpinningDrum.__init__
+VisionEgg.Textures.Texture.__init__
+VisionEgg.Textures.TextureFromFile.__init__
+VisionEgg.Textures.TextureObject.__init__
+VisionEgg.Textures.TextureStimulusBaseClass.__init__
+VisionEgg.ThreeDeeMath.TransformMatrix.__init__
+VisionEgg.WrappedText.WrappedText.__init__
+VisionEgg.qtmovie.Movie.__init__
+VisionEgg.qtmovie.Rect.__init__" class="py-name" href="#" onclick="return doclink('link-81', '__init__', 'link-81');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
+<a name="L65"></a><tt class="py-lineno"> 65</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stimdict</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L66"></a><tt class="py-lineno"> 66</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stimkey</tt> <tt class="py-op">=</tt> <tt id="link-82" class="py-name"><a title="VisionEgg.PyroApps.EPhysServer.server_modules" class="py-name" href="#" onclick="return doclink('link-82', 'server_modules', 'link-48');">server_modules</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt [...]
+VisionEgg.PyroApps.DropinServer.get_meta_controller_stimkey
+VisionEgg.PyroApps.FlatGratingServer.get_meta_controller_stimkey
+VisionEgg.PyroApps.GridServer.get_meta_controller_stimkey
+VisionEgg.PyroApps.MouseTargetServer.get_meta_controller_stimkey
+VisionEgg.PyroApps.SphereGratingServer.get_meta_controller_stimkey
+VisionEgg.PyroApps.SpinningDrumServer.get_meta_controller_stimkey
+VisionEgg.PyroApps.TargetServer.get_meta_controller_stimkey" class="py-name" href="#" onclick="return doclink('link-83', 'get_meta_controller_stimkey', 'link-83');">get_meta_controller_stimkey</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-comment"># first stimulus will be this</tt> </tt>
+<a name="L67"></a><tt class="py-lineno"> 67</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">quit_status</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
+<a name="L68"></a><tt class="py-lineno"> 68</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">exec_demoscript_flag</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
+<a name="L69"></a><tt class="py-lineno"> 69</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">presentation</tt> <tt class="py-op">=</tt> <tt class="py-name">presentation</tt> </tt>
+<a name="L70"></a><tt class="py-lineno"> 70</tt>  <tt class="py-line">        <tt class="py-comment"># target for stimulus onset calibration</tt> </tt>
+<a name="L71"></a><tt class="py-lineno"> 71</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">onset_cal_bg</tt> <tt class="py-op">=</tt> <tt id="link-84" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-84', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-85" class="py-name" targets="Module VisionEgg.MoreStimuli=VisionEgg.MoreStim [...]
+<a name="L72"></a><tt class="py-lineno"> 72</tt>  <tt class="py-line">                                                           <tt class="py-name">position</tt><tt class="py-op">=</tt><tt class="py-op">(</tt><tt class="py-number">30.0</tt><tt class="py-op">,</tt><tt class="py-number">30.0</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L73"></a><tt class="py-lineno"> 73</tt>  <tt class="py-line">                                                           <tt class="py-name">anchor</tt><tt class="py-op">=</tt><tt class="py-string">'center'</tt><tt class="py-op">,</tt> </tt>
+<a name="L74"></a><tt class="py-lineno"> 74</tt>  <tt class="py-line">                                                           <tt id="link-87" class="py-name" targets="Variable VisionEgg.Core.Screen.size=VisionEgg.Core.Screen-class.html#size"><a title="VisionEgg.Core.Screen.size" class="py-name" href="#" onclick="return doclink('link-87', 'size', 'link-87');">size</a></tt><tt class="py-op">=</tt><tt class="py-op">(</tt><tt class="py-number">50.0</tt><tt class="py-op">,</tt><tt class=" [...]
+<a name="L75"></a><tt class="py-lineno"> 75</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">onset_cal_fg</tt> <tt class="py-op">=</tt> <tt id="link-88" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-88', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-89" class="py-name"><a title="VisionEgg.MoreStimuli" class="py-name" href="#" onclick="return doclink('l [...]
+<a name="L76"></a><tt class="py-lineno"> 76</tt>  <tt class="py-line">                                                           <tt class="py-name">color</tt><tt class="py-op">=</tt><tt class="py-op">(</tt><tt class="py-number">1.0</tt><tt class="py-op">,</tt><tt class="py-number">1.0</tt><tt class="py-op">,</tt><tt class="py-number">1.0</tt><tt class="py-op">,</tt><tt class="py-number">1.0</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L77"></a><tt class="py-lineno"> 77</tt>  <tt class="py-line">                                                           <tt class="py-name">position</tt><tt class="py-op">=</tt><tt class="py-op">(</tt><tt class="py-number">30.0</tt><tt class="py-op">,</tt><tt class="py-number">30.0</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L78"></a><tt class="py-lineno"> 78</tt>  <tt class="py-line">                                                           <tt class="py-name">anchor</tt><tt class="py-op">=</tt><tt class="py-string">'center'</tt><tt class="py-op">,</tt> </tt>
+<a name="L79"></a><tt class="py-lineno"> 79</tt>  <tt class="py-line">                                                           <tt id="link-91" class="py-name"><a title="VisionEgg.Core.Screen.size" class="py-name" href="#" onclick="return doclink('link-91', 'size', 'link-87');">size</a></tt><tt class="py-op">=</tt><tt class="py-op">(</tt><tt class="py-number">50.0</tt><tt class="py-op">,</tt><tt class="py-number">50.0</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L80"></a><tt class="py-lineno"> 80</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">presentation</tt><tt class="py-op">.</tt><tt id="link-92" class="py-name" targets="Method VisionEgg.FlowControl.Presentation.add_controller()=VisionEgg.FlowControl.Presentation-class.html#add_controller,Method VisionEgg.PyroHelpers.PyroLocalDictController.add_controller()=VisionEgg.PyroHelpers.PyroLocalDictController-class.html#add_control [...]
+VisionEgg.PyroHelpers.PyroLocalDictController.add_controller" class="py-name" href="#" onclick="return doclink('link-92', 'add_controller', 'link-92');">add_controller</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">onset_cal_fg</tt><tt class="py-op">,</tt><tt class="py-string">'on'</tt><tt class="py-op">,</tt><tt id="link-93" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-93', 'VisionEg [...]
+<a name="L81"></a><tt class="py-lineno"> 81</tt>  <tt class="py-line">                                                                                                  <tt class="py-name">between_go_value</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L82"></a><tt class="py-lineno"> 82</tt>  <tt class="py-line">        <tt class="py-comment"># get screen (hack)</tt> </tt>
+<a name="L83"></a><tt class="py-lineno"> 83</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">onset_cal_screen</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">presentation</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">viewports</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt cla [...]
+<a name="L84"></a><tt class="py-lineno"> 84</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">onset_cal_viewport</tt> <tt class="py-op">=</tt> <tt id="link-96" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-96', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-97" class="py-name"><a title="VisionEgg.Core" class="py-name" href="#" onclick="return doclink('li [...]
+<a name="L85"></a><tt class="py-lineno"> 85</tt>  <tt class="py-line">                                                          <tt class="py-name">stimuli</tt><tt class="py-op">=</tt><tt class="py-op">[</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">onset_cal_bg</tt><tt class="py-op">,</tt> </tt>
+<a name="L86"></a><tt class="py-lineno"> 86</tt>  <tt class="py-line">                                                                   <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">onset_cal_fg</tt><tt class="py-op">]</tt> </tt>
+<a name="L87"></a><tt class="py-lineno"> 87</tt>  <tt class="py-line">                                                          <tt class="py-op">)</tt> </tt>
+<a name="L88"></a><tt class="py-lineno"> 88</tt>  <tt class="py-line"> </tt>
+<a name="L89"></a><tt class="py-lineno"> 89</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">server_module</tt> <tt class="py-keyword">in</tt> <tt id="link-99" class="py-name"><a title="VisionEgg.PyroApps.EPhysServer.server_modules" class="py-name" href="#" onclick="return doclink('link-99', 'server_modules', 'link-48');">server_modules</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L90"></a><tt class="py-lineno"> 90</tt>  <tt class="py-line">            <tt class="py-name">stimkey</tt> <tt class="py-op">=</tt> <tt class="py-name">server_module</tt><tt class="py-op">.</tt><tt id="link-100" class="py-name"><a title="VisionEgg.PyroApps.ColorCalServer.get_meta_controller_stimkey
+VisionEgg.PyroApps.DropinServer.get_meta_controller_stimkey
+VisionEgg.PyroApps.FlatGratingServer.get_meta_controller_stimkey
+VisionEgg.PyroApps.GridServer.get_meta_controller_stimkey
+VisionEgg.PyroApps.MouseTargetServer.get_meta_controller_stimkey
+VisionEgg.PyroApps.SphereGratingServer.get_meta_controller_stimkey
+VisionEgg.PyroApps.SpinningDrumServer.get_meta_controller_stimkey
+VisionEgg.PyroApps.TargetServer.get_meta_controller_stimkey" class="py-name" href="#" onclick="return doclink('link-100', 'get_meta_controller_stimkey', 'link-83');">get_meta_controller_stimkey</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L91"></a><tt class="py-lineno"> 91</tt>  <tt class="py-line">            <tt class="py-name">klass</tt> <tt class="py-op">=</tt> <tt class="py-name">server_module</tt><tt class="py-op">.</tt><tt id="link-101" class="py-name" targets="Function VisionEgg.PyroApps.ColorCalServer.get_meta_controller_class()=VisionEgg.PyroApps.ColorCalServer-module.html#get_meta_controller_class,Function VisionEgg.PyroApps.DropinServer.get_meta_controller_class()=VisionEgg.PyroApps.DropinServer-modul [...]
+VisionEgg.PyroApps.DropinServer.get_meta_controller_class
+VisionEgg.PyroApps.FlatGratingServer.get_meta_controller_class
+VisionEgg.PyroApps.GridServer.get_meta_controller_class
+VisionEgg.PyroApps.MouseTargetServer.get_meta_controller_class
+VisionEgg.PyroApps.SphereGratingServer.get_meta_controller_class
+VisionEgg.PyroApps.SpinningDrumServer.get_meta_controller_class
+VisionEgg.PyroApps.TargetServer.get_meta_controller_class" class="py-name" href="#" onclick="return doclink('link-101', 'get_meta_controller_class', 'link-101');">get_meta_controller_class</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L92"></a><tt class="py-lineno"> 92</tt>  <tt class="py-line">            <tt id="link-102" class="py-name" targets="Function VisionEgg.PyroApps.ColorCalServer.make_stimuli()=VisionEgg.PyroApps.ColorCalServer-module.html#make_stimuli,Function VisionEgg.PyroApps.DropinServer.make_stimuli()=VisionEgg.PyroApps.DropinServer-module.html#make_stimuli,Function VisionEgg.PyroApps.FlatGratingServer.make_stimuli()=VisionEgg.PyroApps.FlatGratingServer-module.html#make_stimuli,Function Visio [...]
+VisionEgg.PyroApps.DropinServer.make_stimuli
+VisionEgg.PyroApps.FlatGratingServer.make_stimuli
+VisionEgg.PyroApps.GridServer.make_stimuli
+VisionEgg.PyroApps.MouseTargetServer.make_stimuli
+VisionEgg.PyroApps.SphereGratingServer.make_stimuli
+VisionEgg.PyroApps.SpinningDrumServer.make_stimuli
+VisionEgg.PyroApps.TargetServer.make_stimuli" class="py-name" href="#" onclick="return doclink('link-102', 'make_stimuli', 'link-102');">make_stimuli</a></tt> <tt class="py-op">=</tt> <tt class="py-name">server_module</tt><tt class="py-op">.</tt><tt id="link-103" class="py-name"><a title="VisionEgg.PyroApps.ColorCalServer.make_stimuli
+VisionEgg.PyroApps.DropinServer.make_stimuli
+VisionEgg.PyroApps.FlatGratingServer.make_stimuli
+VisionEgg.PyroApps.GridServer.make_stimuli
+VisionEgg.PyroApps.MouseTargetServer.make_stimuli
+VisionEgg.PyroApps.SphereGratingServer.make_stimuli
+VisionEgg.PyroApps.SpinningDrumServer.make_stimuli
+VisionEgg.PyroApps.TargetServer.make_stimuli" class="py-name" href="#" onclick="return doclink('link-103', 'make_stimuli', 'link-102');">make_stimuli</a></tt> </tt>
+<a name="L93"></a><tt class="py-lineno"> 93</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stimdict</tt><tt class="py-op">[</tt><tt class="py-name">stimkey</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">klass</tt><tt class="py-op">,</tt> <tt id="link-104" class="py-name"><a title="VisionEgg.PyroApps.ColorCalServer.make_stimuli
+VisionEgg.PyroApps.DropinServer.make_stimuli
+VisionEgg.PyroApps.FlatGratingServer.make_stimuli
+VisionEgg.PyroApps.GridServer.make_stimuli
+VisionEgg.PyroApps.MouseTargetServer.make_stimuli
+VisionEgg.PyroApps.SphereGratingServer.make_stimuli
+VisionEgg.PyroApps.SpinningDrumServer.make_stimuli
+VisionEgg.PyroApps.TargetServer.make_stimuli" class="py-name" href="#" onclick="return doclink('link-104', 'make_stimuli', 'link-102');">make_stimuli</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L94"></a><tt class="py-lineno"> 94</tt>  <tt class="py-line"> </tt>
+<a name="EPhysServer.__del__"></a><div id="EPhysServer.__del__-def"><a name="L95"></a><tt class="py-lineno"> 95</tt> <a class="py-toggle" href="#" id="EPhysServer.__del__-toggle" onclick="return toggle('EPhysServer.__del__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.EPhysServer.EPhysServer-class.html#__del__">__del__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="EPhysServer.__del__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="EPhysServer.__del__-expanded"><a name="L96"></a><tt class="py-lineno"> 96</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">presentation</tt><tt class="py-op">.</tt><tt id="link-105" class="py-name" targets="Method VisionEgg.FlowControl.Presentation.remove_controller()=VisionEgg.FlowControl.Presentation-class.html#remove_c [...]
+<a name="L97"></a><tt class="py-lineno"> 97</tt>  <tt class="py-line">        <tt class="py-name">Pyro</tt><tt class="py-op">.</tt><tt class="py-name">core</tt><tt class="py-op">.</tt><tt class="py-name">ObjBase</tt><tt class="py-op">.</tt><tt id="link-106" class="py-name" targets="Method VisionEgg.Core.Screen.__del__()=VisionEgg.Core.Screen-class.html#__del__,Method VisionEgg.DaqLPT.LPTOutput.__del__()=VisionEgg.DaqLPT.LPTOutput-class.html#__del__,Method VisionEgg.Gratings.SinGrating2D. [...]
+VisionEgg.DaqLPT.LPTOutput.__del__
+VisionEgg.Gratings.SinGrating2D.__del__
+VisionEgg.Gratings.SinGrating3D.__del__
+VisionEgg.PyroApps.EPhysGUI.AppWindow.__del__
+VisionEgg.PyroApps.EPhysServer.EPhysServer.__del__
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.__del__
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.__del__
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.__del__
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.__del__
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.__del__
+VisionEgg.QuickTime.MovieTexture.__del__
+VisionEgg.Textures.TextureObject.__del__" class="py-name" href="#" onclick="return doclink('link-106', '__del__', 'link-106');">__del__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L98"></a><tt class="py-lineno"> 98</tt>  <tt class="py-line"> </tt>
+<a name="EPhysServer.get_quit_status"></a><div id="EPhysServer.get_quit_status-def"><a name="L99"></a><tt class="py-lineno"> 99</tt> <a class="py-toggle" href="#" id="EPhysServer.get_quit_status-toggle" onclick="return toggle('EPhysServer.get_quit_status');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.EPhysServer.EPhysServer-class.html#get_quit_status">get_quit_status</a><tt class="py-op">(</tt><tt class="py-param">self</tt [...]
+</div><div id="EPhysServer.get_quit_status-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="EPhysServer.get_quit_status-expanded"><a name="L100"></a><tt class="py-lineno">100</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">quit_status</tt> </tt>
+</div><a name="L101"></a><tt class="py-lineno">101</tt>  <tt class="py-line"> </tt>
+<a name="EPhysServer.set_quit_status"></a><div id="EPhysServer.set_quit_status-def"><a name="L102"></a><tt class="py-lineno">102</tt> <a class="py-toggle" href="#" id="EPhysServer.set_quit_status-toggle" onclick="return toggle('EPhysServer.set_quit_status');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.EPhysServer.EPhysServer-class.html#set_quit_status">set_quit_status</a><tt class="py-op">(</tt><tt class="py-param">self</t [...]
+</div><div id="EPhysServer.set_quit_status-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="EPhysServer.set_quit_status-expanded"><a name="L103"></a><tt class="py-lineno">103</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">quit_status</tt> <tt class="py-op">=</tt> <tt class="py-name">quit_status</tt> </tt>
+<a name="L104"></a><tt class="py-lineno">104</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">presentation</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt id="link-107" class="py-name" targets="Method VisionEgg.PyroApps.EPhysGUI.AppWindow.quit()=VisionEgg.PyroApps.EPhysGUI.AppWindow-class.html#quit"><a title="VisionEgg.PyroApps.EPhysGUI.AppWindow.quit" class="py-name" href="#" onclick="re [...]
+</div><a name="L105"></a><tt class="py-lineno">105</tt>  <tt class="py-line"> </tt>
+<a name="EPhysServer.first_connection"></a><div id="EPhysServer.first_connection-def"><a name="L106"></a><tt class="py-lineno">106</tt> <a class="py-toggle" href="#" id="EPhysServer.first_connection-toggle" onclick="return toggle('EPhysServer.first_connection');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.EPhysServer.EPhysServer-class.html#first_connection">first_connection</a><tt class="py-op">(</tt><tt class="py-param">s [...]
+</div><div id="EPhysServer.first_connection-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="EPhysServer.first_connection-expanded"><a name="L107"></a><tt class="py-lineno">107</tt>  <tt class="py-line">        <tt class="py-comment"># break out of initial run_forever loop</tt> </tt>
+<a name="L108"></a><tt class="py-lineno">108</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">presentation</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt id="link-108" class="py-name"><a title="VisionEgg.PyroApps.EPhysGUI.AppWindow.quit" class="py-name" href="#" onclick="return doclink('link-108', 'quit', 'link-107');">quit</a></tt> <tt class="py-op">=</tt> <t [...]
+</div><a name="L109"></a><tt class="py-lineno">109</tt>  <tt class="py-line"> </tt>
+<a name="EPhysServer.set_stim_onset_cal"></a><div id="EPhysServer.set_stim_onset_cal-def"><a name="L110"></a><tt class="py-lineno">110</tt> <a class="py-toggle" href="#" id="EPhysServer.set_stim_onset_cal-toggle" onclick="return toggle('EPhysServer.set_stim_onset_cal');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.EPhysServer.EPhysServer-class.html#set_stim_onset_cal">set_stim_onset_cal</a><tt class="py-op">(</tt><tt class= [...]
+</div><div id="EPhysServer.set_stim_onset_cal-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="EPhysServer.set_stim_onset_cal-expanded"><a name="L111"></a><tt class="py-lineno">111</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">on</tt><tt class="py-op">:</tt> </tt>
+<a name="L112"></a><tt class="py-lineno">112</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">onset_cal_viewport</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">presentation</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">viewports</tt><tt class=" [...]
+<a name="L113"></a><tt class="py-lineno">113</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">presentation</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">viewports</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">onset_cal_viewport</tt><tt class="py-op">)</tt> </tt>
+<a name="L114"></a><tt class="py-lineno">114</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L115"></a><tt class="py-lineno">115</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">onset_cal_viewport</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">presentation</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">viewports</tt><tt class="py-op">:</tt> </tt>
+<a name="L116"></a><tt class="py-lineno">116</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">presentation</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">viewports</tt><tt class="py-op">.</tt><tt class="py-name">remove</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">onset_cal_viewport</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L117"></a><tt class="py-lineno">117</tt>  <tt class="py-line"> </tt>
+<a name="EPhysServer.set_stim_onset_cal_location"></a><div id="EPhysServer.set_stim_onset_cal_location-def"><a name="L118"></a><tt class="py-lineno">118</tt> <a class="py-toggle" href="#" id="EPhysServer.set_stim_onset_cal_location-toggle" onclick="return toggle('EPhysServer.set_stim_onset_cal_location');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.EPhysServer.EPhysServer-class.html#set_stim_onset_cal_location">set_stim_on [...]
+</div><div id="EPhysServer.set_stim_onset_cal_location-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="EPhysServer.set_stim_onset_cal_location-expanded"><a name="L119"></a><tt class="py-lineno">119</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">onset_cal_bg</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">position</tt> <tt class="py-op">=</tt>  [...]
+<a name="L120"></a><tt class="py-lineno">120</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">onset_cal_fg</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">position</tt> <tt class="py-op">=</tt> <tt class="py-name">center</tt> </tt>
+<a name="L121"></a><tt class="py-lineno">121</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">onset_cal_bg</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt id="link-109" class="py-name"><a title="VisionEgg.Core.Screen.size" class="py-name" href="#" onclick="return doclink('link-109', 'size', 'link-87');">size</a></tt> <tt class="py-op">=</tt> <tt id="link-110" class="py-name"><a title="Vis [...]
+<a name="L122"></a><tt class="py-lineno">122</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">onset_cal_fg</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt id="link-111" class="py-name"><a title="VisionEgg.Core.Screen.size" class="py-name" href="#" onclick="return doclink('link-111', 'size', 'link-87');">size</a></tt> <tt class="py-op">=</tt> <tt id="link-112" class="py-name"><a title="Vis [...]
+</div><a name="L123"></a><tt class="py-lineno">123</tt>  <tt class="py-line"> </tt>
+<a name="EPhysServer.get_stim_onset_cal_location"></a><div id="EPhysServer.get_stim_onset_cal_location-def"><a name="L124"></a><tt class="py-lineno">124</tt> <a class="py-toggle" href="#" id="EPhysServer.get_stim_onset_cal_location-toggle" onclick="return toggle('EPhysServer.get_stim_onset_cal_location');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.EPhysServer.EPhysServer-class.html#get_stim_onset_cal_location">get_stim_on [...]
+</div><div id="EPhysServer.get_stim_onset_cal_location-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="EPhysServer.get_stim_onset_cal_location-expanded"><a name="L125"></a><tt class="py-lineno">125</tt>  <tt class="py-line">        <tt class="py-name">x</tt><tt class="py-op">,</tt><tt class="py-name">y</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">onset_cal_bg</tt><tt class="py-op">.</tt><tt class="py-na [...]
+<a name="L126"></a><tt class="py-lineno">126</tt>  <tt class="py-line">        <tt class="py-name">width</tt><tt class="py-op">,</tt><tt class="py-name">height</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">onset_cal_bg</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt id="link-114" class="py-name"><a title="VisionEgg.Core.Screen.size" class="py-name" href="#" onclick="return doclink('link-11 [...]
+<a name="L127"></a><tt class="py-lineno">127</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">x</tt><tt class="py-op">,</tt><tt class="py-name">y</tt><tt class="py-op">,</tt><tt class="py-name">width</tt><tt class="py-op">,</tt><tt class="py-name">height</tt> </tt>
+</div><a name="L128"></a><tt class="py-lineno">128</tt>  <tt class="py-line"> </tt>
+<a name="EPhysServer.set_gamma_ramp"></a><div id="EPhysServer.set_gamma_ramp-def"><a name="L129"></a><tt class="py-lineno">129</tt> <a class="py-toggle" href="#" id="EPhysServer.set_gamma_ramp-toggle" onclick="return toggle('EPhysServer.set_gamma_ramp');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.EPhysServer.EPhysServer-class.html#set_gamma_ramp">set_gamma_ramp</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt  [...]
+</div><div id="EPhysServer.set_gamma_ramp-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="EPhysServer.set_gamma_ramp-expanded"><a name="L130"></a><tt class="py-lineno">130</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">pygame</tt><tt class="py-op">.</tt><tt class="py-name">display</tt><tt class="py-op">.</tt><tt id="link-115" class="py-name" targets="Method VisionEgg.Core.Screen.set_gamma_ramp()=VisionEgg.Core.Screen-c [...]
+VisionEgg.PyroApps.EPhysServer.EPhysServer.set_gamma_ramp" class="py-name" href="#" onclick="return doclink('link-115', 'set_gamma_ramp', 'link-115');">set_gamma_ramp</a></tt><tt class="py-op">(</tt><tt class="py-name">red</tt><tt class="py-op">,</tt><tt class="py-name">green</tt><tt class="py-op">,</tt><tt class="py-name">blue</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L131"></a><tt class="py-lineno">131</tt>  <tt class="py-line"> </tt>
+<a name="EPhysServer.is_in_go_loop"></a><div id="EPhysServer.is_in_go_loop-def"><a name="L132"></a><tt class="py-lineno">132</tt> <a class="py-toggle" href="#" id="EPhysServer.is_in_go_loop-toggle" onclick="return toggle('EPhysServer.is_in_go_loop');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.EPhysServer.EPhysServer-class.html#is_in_go_loop">is_in_go_loop</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class= [...]
+</div><div id="EPhysServer.is_in_go_loop-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="EPhysServer.is_in_go_loop-expanded"><a name="L133"></a><tt class="py-lineno">133</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">presentation</tt><tt class="py-op">.</tt><tt id="link-116" class="py-name" targets="Method VisionEgg.FlowControl.Presentation.is_in_go_loop()=VisionEgg. [...]
+VisionEgg.PyroApps.EPhysServer.EPhysServer.is_in_go_loop" class="py-name" href="#" onclick="return doclink('link-116', 'is_in_go_loop', 'link-116');">is_in_go_loop</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L134"></a><tt class="py-lineno">134</tt>  <tt class="py-line"> </tt>
+<a name="EPhysServer.were_frames_dropped_in_last_go_loop"></a><div id="EPhysServer.were_frames_dropped_in_last_go_loop-def"><a name="L135"></a><tt class="py-lineno">135</tt> <a class="py-toggle" href="#" id="EPhysServer.were_frames_dropped_in_last_go_loop-toggle" onclick="return toggle('EPhysServer.were_frames_dropped_in_last_go_loop');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.EPhysServer.EPhysServer-class.html#were_fra [...]
+</div><div id="EPhysServer.were_frames_dropped_in_last_go_loop-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="EPhysServer.were_frames_dropped_in_last_go_loop-expanded"><a name="L136"></a><tt class="py-lineno">136</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">presentation</tt><tt class="py-op">.</tt><tt id="link-117" class="py-name" targets="Method VisionEgg.FlowCon [...]
+VisionEgg.PyroApps.EPhysServer.EPhysServer.were_frames_dropped_in_last_go_loop" class="py-name" href="#" onclick="return doclink('link-117', 'were_frames_dropped_in_last_go_loop', 'link-117');">were_frames_dropped_in_last_go_loop</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L137"></a><tt class="py-lineno">137</tt>  <tt class="py-line"> </tt>
+<a name="EPhysServer.get_last_go_loop_start_time_absolute_sec"></a><div id="EPhysServer.get_last_go_loop_start_time_absolute_sec-def"><a name="L138"></a><tt class="py-lineno">138</tt> <a class="py-toggle" href="#" id="EPhysServer.get_last_go_loop_start_time_absolute_sec-toggle" onclick="return toggle('EPhysServer.get_last_go_loop_start_time_absolute_sec');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.EPhysServer.EPhysServer [...]
+</div><div id="EPhysServer.get_last_go_loop_start_time_absolute_sec-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="EPhysServer.get_last_go_loop_start_time_absolute_sec-expanded"><a name="L139"></a><tt class="py-lineno">139</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">presentation</tt><tt class="py-op">.</tt><tt id="link-118" class="py-name" targets="Method VisionE [...]
+VisionEgg.PyroApps.EPhysServer.EPhysServer.get_last_go_loop_start_time_absolute_sec" class="py-name" href="#" onclick="return doclink('link-118', 'get_last_go_loop_start_time_absolute_sec', 'link-118');">get_last_go_loop_start_time_absolute_sec</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L140"></a><tt class="py-lineno">140</tt>  <tt class="py-line"> </tt>
+<a name="EPhysServer.set_override_t_abs_sec"></a><div id="EPhysServer.set_override_t_abs_sec-def"><a name="L141"></a><tt class="py-lineno">141</tt> <a class="py-toggle" href="#" id="EPhysServer.set_override_t_abs_sec-toggle" onclick="return toggle('EPhysServer.set_override_t_abs_sec');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.EPhysServer.EPhysServer-class.html#set_override_t_abs_sec">set_override_t_abs_sec</a><tt class= [...]
+</div><div id="EPhysServer.set_override_t_abs_sec-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="EPhysServer.set_override_t_abs_sec-expanded"><a name="L142"></a><tt class="py-lineno">142</tt>  <tt class="py-line">        <tt class="py-name">value_sec</tt> <tt class="py-op">=</tt> <tt id="link-119" class="py-name" targets="Class float=float-class.html"><a title="float" class="py-name" href="#" onclick="return doclink('link-119', 'float', 'link-119');">float</a [...]
+<a name="L143"></a><tt class="py-lineno">143</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">presentation</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">override_t_abs_sec</tt> <tt class="py-op">=</tt> <tt class="py-name">value_sec</tt> </tt>
+</div><a name="L144"></a><tt class="py-lineno">144</tt>  <tt class="py-line"> </tt>
+<a name="EPhysServer.get_next_stimulus_meta_controller"></a><div id="EPhysServer.get_next_stimulus_meta_controller-def"><a name="L145"></a><tt class="py-lineno">145</tt> <a class="py-toggle" href="#" id="EPhysServer.get_next_stimulus_meta_controller-toggle" onclick="return toggle('EPhysServer.get_next_stimulus_meta_controller');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.EPhysServer.EPhysServer-class.html#get_next_stimulu [...]
+</div><div id="EPhysServer.get_next_stimulus_meta_controller-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="EPhysServer.get_next_stimulus_meta_controller-expanded"><a name="L146"></a><tt class="py-lineno">146</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stimkey</tt><tt class="py-op">:</tt> </tt>
+<a name="L147"></a><tt class="py-lineno">147</tt>  <tt class="py-line">            <tt class="py-name">klass</tt><tt class="py-op">,</tt> <tt id="link-120" class="py-name"><a title="VisionEgg.PyroApps.ColorCalServer.make_stimuli
+VisionEgg.PyroApps.DropinServer.make_stimuli
+VisionEgg.PyroApps.FlatGratingServer.make_stimuli
+VisionEgg.PyroApps.GridServer.make_stimuli
+VisionEgg.PyroApps.MouseTargetServer.make_stimuli
+VisionEgg.PyroApps.SphereGratingServer.make_stimuli
+VisionEgg.PyroApps.SpinningDrumServer.make_stimuli
+VisionEgg.PyroApps.TargetServer.make_stimuli" class="py-name" href="#" onclick="return doclink('link-120', 'make_stimuli', 'link-102');">make_stimuli</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stimdict</tt><tt class="py-op">[</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stimkey</tt><tt class="py-op">]</tt> </tt>
+<a name="L148"></a><tt class="py-lineno">148</tt>  <tt class="py-line">            <tt class="py-name">stimuli</tt> <tt class="py-op">=</tt> <tt id="link-121" class="py-name"><a title="VisionEgg.PyroApps.ColorCalServer.make_stimuli
+VisionEgg.PyroApps.DropinServer.make_stimuli
+VisionEgg.PyroApps.FlatGratingServer.make_stimuli
+VisionEgg.PyroApps.GridServer.make_stimuli
+VisionEgg.PyroApps.MouseTargetServer.make_stimuli
+VisionEgg.PyroApps.SphereGratingServer.make_stimuli
+VisionEgg.PyroApps.SpinningDrumServer.make_stimuli
+VisionEgg.PyroApps.TargetServer.make_stimuli" class="py-name" href="#" onclick="return doclink('link-121', 'make_stimuli', 'link-102');">make_stimuli</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L149"></a><tt class="py-lineno">149</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stimkey</tt><tt class="py-op">,</tt> <tt class="py-name">klass</tt><tt class="py-op">,</tt> <tt class="py-name">stimuli</tt> </tt>
+<a name="L150"></a><tt class="py-lineno">150</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L151"></a><tt class="py-lineno">151</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">RuntimeError</tt><tt class="py-op">(</tt><tt class="py-string">"No stimkey"</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L152"></a><tt class="py-lineno">152</tt>  <tt class="py-line"> </tt>
+<a name="EPhysServer.get_stimkey"></a><div id="EPhysServer.get_stimkey-def"><a name="L153"></a><tt class="py-lineno">153</tt> <a class="py-toggle" href="#" id="EPhysServer.get_stimkey-toggle" onclick="return toggle('EPhysServer.get_stimkey');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.EPhysServer.EPhysServer-class.html#get_stimkey">get_stimkey</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</t [...]
+</div><div id="EPhysServer.get_stimkey-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="EPhysServer.get_stimkey-expanded"><a name="L154"></a><tt class="py-lineno">154</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stimkey</tt> </tt>
+</div><a name="L155"></a><tt class="py-lineno">155</tt>  <tt class="py-line"> </tt>
+<a name="EPhysServer.set_next_stimkey"></a><div id="EPhysServer.set_next_stimkey-def"><a name="L156"></a><tt class="py-lineno">156</tt> <a class="py-toggle" href="#" id="EPhysServer.set_next_stimkey-toggle" onclick="return toggle('EPhysServer.set_next_stimkey');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.EPhysServer.EPhysServer-class.html#set_next_stimkey">set_next_stimkey</a><tt class="py-op">(</tt><tt class="py-param">s [...]
+</div><div id="EPhysServer.set_next_stimkey-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="EPhysServer.set_next_stimkey-expanded"><a name="L157"></a><tt class="py-lineno">157</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stimkey</tt> <tt class="py-op">=</tt> <tt class="py-name">stimkey</tt> </tt>
+</div><a name="L158"></a><tt class="py-lineno">158</tt>  <tt class="py-line"> </tt>
+<a name="EPhysServer.get_cwd"></a><div id="EPhysServer.get_cwd-def"><a name="L159"></a><tt class="py-lineno">159</tt> <a class="py-toggle" href="#" id="EPhysServer.get_cwd-toggle" onclick="return toggle('EPhysServer.get_cwd');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.EPhysServer.EPhysServer-class.html#get_cwd">get_cwd</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</t [...]
+</div><div id="EPhysServer.get_cwd-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="EPhysServer.get_cwd-expanded"><a name="L160"></a><tt class="py-lineno">160</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">path</tt><tt class="py-op">.</tt><tt class="py-name">abspath</tt><tt class="py-op">(</tt><tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">curdir [...]
+</div><a name="L161"></a><tt class="py-lineno">161</tt>  <tt class="py-line"> </tt>
+<a name="EPhysServer.save_image_sequence"></a><div id="EPhysServer.save_image_sequence-def"><a name="L162"></a><tt class="py-lineno">162</tt> <a class="py-toggle" href="#" id="EPhysServer.save_image_sequence-toggle" onclick="return toggle('EPhysServer.save_image_sequence');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.EPhysServer.EPhysServer-class.html#save_image_sequence">save_image_sequence</a><tt class="py-op">(</tt><tt  [...]
+</div><div id="EPhysServer.save_image_sequence-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="EPhysServer.save_image_sequence-expanded"><a name="L163"></a><tt class="py-lineno">163</tt>  <tt class="py-line">        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L164"></a><tt class="py-lineno">164</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">presentation</tt><tt class="py-op">.</tt><tt id="link-122" class="py-name" targets="Method VisionEgg.FlowControl.Presentation.export_movie_go()=VisionEgg.FlowControl.Presentation-class.html#export_movie_go"><a title="VisionEgg.FlowControl.Presentation.export_movie_go" class="py-name" href="#" onclick="return doclink('link-122', 'expor [...]
+<a name="L165"></a><tt class="py-lineno">165</tt>  <tt class="py-line">                                              <tt class="py-name">filename_base</tt><tt class="py-op">=</tt><tt class="py-name">filename_base</tt><tt class="py-op">,</tt> </tt>
+<a name="L166"></a><tt class="py-lineno">166</tt>  <tt class="py-line">                                              <tt class="py-name">filename_suffix</tt><tt class="py-op">=</tt><tt class="py-name">filename_suffix</tt><tt class="py-op">,</tt> </tt>
+<a name="L167"></a><tt class="py-lineno">167</tt>  <tt class="py-line">                                              <tt class="py-name">path</tt><tt class="py-op">=</tt><tt class="py-name">save_dir</tt> </tt>
+<a name="L168"></a><tt class="py-lineno">168</tt>  <tt class="py-line">                                              <tt class="py-op">)</tt> </tt>
+<a name="L169"></a><tt class="py-lineno">169</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt> <tt class="py-name">Exception</tt><tt class="py-op">,</tt><tt class="py-name">x</tt><tt class="py-op">:</tt> </tt>
+<a name="L170"></a><tt class="py-lineno">170</tt>  <tt class="py-line">            <tt class="py-comment"># do this because Pyro doesn't (by default) print a traceback</tt> </tt>
+<a name="L171"></a><tt class="py-lineno">171</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">import</tt> <tt class="py-name">traceback</tt> </tt>
+<a name="L172"></a><tt class="py-lineno">172</tt>  <tt class="py-line">            <tt class="py-name">traceback</tt><tt class="py-op">.</tt><tt class="py-name">print_exc</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L173"></a><tt class="py-lineno">173</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> </tt>
+</div><a name="L174"></a><tt class="py-lineno">174</tt>  <tt class="py-line"> </tt>
+<a name="EPhysServer.build_AST"></a><div id="EPhysServer.build_AST-def"><a name="L175"></a><tt class="py-lineno">175</tt> <a class="py-toggle" href="#" id="EPhysServer.build_AST-toggle" onclick="return toggle('EPhysServer.build_AST');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.EPhysServer.EPhysServer-class.html#build_AST">build_AST</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class [...]
+</div><div id="EPhysServer.build_AST-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="EPhysServer.build_AST-expanded"><a name="L176"></a><tt class="py-lineno">176</tt>  <tt class="py-line">        <tt class="py-name">AST</tt> <tt class="py-op">=</tt> <tt class="py-name">parser</tt><tt class="py-op">.</tt><tt class="py-name">suite</tt><tt class="py-op">(</tt><tt class="py-name">source</tt><tt class="py-op">)</tt> </tt>
+<a name="L177"></a><tt class="py-lineno">177</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">AST</tt> <tt class="py-op">=</tt> <tt class="py-name">AST</tt> </tt>
+</div><a name="L178"></a><tt class="py-lineno">178</tt>  <tt class="py-line"> </tt>
+<a name="EPhysServer.exec_AST"></a><div id="EPhysServer.exec_AST-def"><a name="L179"></a><tt class="py-lineno">179</tt> <a class="py-toggle" href="#" id="EPhysServer.exec_AST-toggle" onclick="return toggle('EPhysServer.exec_AST');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.EPhysServer.EPhysServer-class.html#exec_AST">exec_AST</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-p [...]
+</div><div id="EPhysServer.exec_AST-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="EPhysServer.exec_AST-expanded"><a name="L180"></a><tt class="py-lineno">180</tt>  <tt class="py-line"> </tt>
+<a name="L181"></a><tt class="py-lineno">181</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">dropin_meta_params</tt><tt class="py-op">.</tt><tt class="py-name">vars_list</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L182"></a><tt class="py-lineno">182</tt>  <tt class="py-line">            <tt class="py-keyword">for</tt> <tt class="py-name">var</tt> <tt class="py-keyword">in</tt> <tt class="py-name">dropin_meta_params</tt><tt class="py-op">.</tt><tt class="py-name">vars_list</tt><tt class="py-op">:</tt> </tt>
+<a name="L183"></a><tt class="py-lineno">183</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">AST</tt> <tt class="py-op">=</tt> <tt id="link-123" class="py-name"><a title="VisionEgg.PyroApps.AST_ext" class="py-name" href="#" onclick="return doclink('link-123', 'AST_ext', 'link-22');">AST_ext</a></tt><tt class="py-op">.</tt><tt id="link-124" class="py-name" targets="Function VisionEgg.PyroApps.AST_ext.modify_AST()=VisionEgg [...]
+<a name="L184"></a><tt class="py-lineno">184</tt>  <tt class="py-line"> </tt>
+<a name="L185"></a><tt class="py-lineno">185</tt>  <tt class="py-line">        <tt class="py-name">code_module</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">AST</tt><tt class="py-op">.</tt><tt class="py-name">compile</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L186"></a><tt class="py-lineno">186</tt>  <tt class="py-line">        <tt class="py-keyword">exec</tt> <tt class="py-name">code_module</tt> <tt class="py-keyword">in</tt> <tt class="py-name">locals</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L187"></a><tt class="py-lineno">187</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">script_dropped_frames</tt> <tt class="py-op">=</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt id="link-125" class="py-name"><a title="VisionEgg.FlowControl.Presentation.were_frames_dropped_in_last_go_loop
+VisionEgg.PyroApps.EPhysServer.EPhysServer.were_frames_dropped_in_last_go_loop" class="py-name" href="#" onclick="return doclink('link-125', 'were_frames_dropped_in_last_go_loop', 'link-117');">were_frames_dropped_in_last_go_loop</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L188"></a><tt class="py-lineno">188</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">presentation</tt><tt class="py-op">.</tt><tt class="py-name">last_go_loop_start_time_absolute_sec</tt> <tt class="py-op">=</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">last_go_loop_start_time_absolute_sec</tt> <tt class="py-comment"># evil hack...</tt> </tt>
+<a name="L189"></a><tt class="py-lineno">189</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">exec_demoscript_flag</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
+</div><a name="L190"></a><tt class="py-lineno">190</tt>  <tt class="py-line"> </tt>
+<a name="EPhysServer.run_demoscript"></a><div id="EPhysServer.run_demoscript-def"><a name="L191"></a><tt class="py-lineno">191</tt> <a class="py-toggle" href="#" id="EPhysServer.run_demoscript-toggle" onclick="return toggle('EPhysServer.run_demoscript');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.EPhysServer.EPhysServer-class.html#run_demoscript">run_demoscript</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt  [...]
+</div><div id="EPhysServer.run_demoscript-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="EPhysServer.run_demoscript-expanded"><a name="L192"></a><tt class="py-lineno">192</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">exec_demoscript_flag</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
+</div></div><a name="L193"></a><tt class="py-lineno">193</tt>  <tt class="py-line"> </tt>
+<a name="start_server"></a><div id="start_server-def"><a name="L194"></a><tt class="py-lineno">194</tt> <a class="py-toggle" href="#" id="start_server-toggle" onclick="return toggle('start_server');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.EPhysServer-module.html#start_server">start_server</a><tt class="py-op">(</tt> <tt class="py-param">server_modules</tt><tt class="py-op">,</tt> <tt class="py-param">server_class</tt><tt c [...]
+VisionEgg.PyroApps.EPhysServer.EPhysServer" class="py-name" href="#" onclick="return doclink('link-126', 'EPhysServer', 'link-126');">EPhysServer</a></tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="start_server-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="start_server-expanded"><a name="L195"></a><tt class="py-lineno">195</tt>  <tt class="py-line"> </tt>
+<a name="L196"></a><tt class="py-lineno">196</tt>  <tt class="py-line">    <tt class="py-name">loadNewExpr</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
+<a name="L197"></a><tt class="py-lineno">197</tt>  <tt class="py-line">    <tt class="py-name">pyro_server</tt> <tt class="py-op">=</tt> <tt id="link-127" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-127', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-128" class="py-name"><a title="VisionEgg.PyroHelpers" class="py-name" href="#" onclick="return doclink('link-128', 'PyroHelpers', 'link-19');">PyroHelpers</a>< [...]
+<a name="L198"></a><tt class="py-lineno">198</tt>  <tt class="py-line"> </tt>
+<a name="L199"></a><tt class="py-lineno">199</tt>  <tt class="py-line">    <tt class="py-comment"># get Vision Egg stimulus ready to go</tt> </tt>
+<a name="L200"></a><tt class="py-lineno">200</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">screen</tt> <tt class="py-op">=</tt> <tt id="link-130" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-130', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-131" class="py-name"><a title="VisionEgg.Core" class="py-name" href="#" onclick="return doclink('link-131', 'Core', 'link-9');">Core</a> [...]
+<a name="L201"></a><tt class="py-lineno">201</tt>  <tt class="py-line"> </tt>
+<a name="L202"></a><tt class="py-lineno">202</tt>  <tt class="py-line">    <tt class="py-name">temp</tt> <tt class="py-op">=</tt> <tt id="link-134" class="py-name"><a title="VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionParameters" class="py-name" href="#" onclick="return doclink('link-134', 'ScreenPositionParameters', 'link-80');">ScreenPositionParameters</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L203"></a><tt class="py-lineno">203</tt>  <tt class="py-line"> </tt>
+<a name="L204"></a><tt class="py-lineno">204</tt>  <tt class="py-line">    <tt class="py-name">projection</tt> <tt class="py-op">=</tt> <tt id="link-135" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-135', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-136" class="py-name"><a title="VisionEgg.Core" class="py-name" href="#" onclick="return doclink('link-136', 'Core', 'link-9');">Core</a></tt><tt class="py-op">. [...]
+<a name="L205"></a><tt class="py-lineno">205</tt>  <tt class="py-line">                                                      <tt class="py-name">temp</tt><tt class="py-op">.</tt><tt id="link-139" class="py-name" targets="Variable VisionEgg.PyroApps.MouseTargetServer.right=VisionEgg.PyroApps.MouseTargetServer-module.html#right"><a title="VisionEgg.PyroApps.MouseTargetServer.right" class="py-name" href="#" onclick="return doclink('link-139', 'right', 'link-139');">right</a></tt><tt class=" [...]
+<a name="L206"></a><tt class="py-lineno">206</tt>  <tt class="py-line">                                                      <tt class="py-name">temp</tt><tt class="py-op">.</tt><tt class="py-name">bottom</tt><tt class="py-op">,</tt> </tt>
+<a name="L207"></a><tt class="py-lineno">207</tt>  <tt class="py-line">                                                      <tt class="py-name">temp</tt><tt class="py-op">.</tt><tt class="py-name">top</tt><tt class="py-op">,</tt> </tt>
+<a name="L208"></a><tt class="py-lineno">208</tt>  <tt class="py-line">                                                      <tt class="py-name">temp</tt><tt class="py-op">.</tt><tt class="py-name">near</tt><tt class="py-op">,</tt> </tt>
+<a name="L209"></a><tt class="py-lineno">209</tt>  <tt class="py-line">                                                      <tt class="py-name">temp</tt><tt class="py-op">.</tt><tt class="py-name">far</tt><tt class="py-op">)</tt> </tt>
+<a name="L210"></a><tt class="py-lineno">210</tt>  <tt class="py-line">    <tt class="py-name">perspective_viewport</tt> <tt class="py-op">=</tt> <tt id="link-140" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-140', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-141" class="py-name"><a title="VisionEgg.Core" class="py-name" href="#" onclick="return doclink('link-141', 'Core', 'link-9');">Core</a></tt><tt class [...]
+<a name="L211"></a><tt class="py-lineno">211</tt>  <tt class="py-line">                                                      <tt class="py-name">projection</tt><tt class="py-op">=</tt><tt class="py-name">projection</tt><tt class="py-op">)</tt> </tt>
+<a name="L212"></a><tt class="py-lineno">212</tt>  <tt class="py-line">    <tt class="py-name">overlay2D_viewport</tt> <tt class="py-op">=</tt> <tt id="link-143" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-143', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-144" class="py-name"><a title="VisionEgg.Core" class="py-name" href="#" onclick="return doclink('link-144', 'Core', 'link-9');">Core</a></tt><tt class=" [...]
+<a name="L213"></a><tt class="py-lineno">213</tt>  <tt class="py-line">    <tt class="py-name">p</tt> <tt class="py-op">=</tt> <tt id="link-146" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-146', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-147" class="py-name"><a title="VisionEgg.FlowControl" class="py-name" href="#" onclick="return doclink('link-147', 'FlowControl', 'link-11');">FlowControl</a></tt><tt cl [...]
+<a name="L214"></a><tt class="py-lineno">214</tt>  <tt class="py-line">    <tt class="py-keyword">print</tt> <tt class="py-string">'main Presentation'</tt><tt class="py-op">,</tt><tt class="py-name">p</tt> </tt>
+<a name="L215"></a><tt class="py-lineno">215</tt>  <tt class="py-line"> </tt>
+<a name="L216"></a><tt class="py-lineno">216</tt>  <tt class="py-line">    <tt class="py-name">wait_text</tt> <tt class="py-op">=</tt> <tt id="link-149" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-149', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-150" class="py-name"><a title="VisionEgg.Text
+VisionEgg.Text.Text" class="py-name" href="#" onclick="return doclink('link-150', 'Text', 'link-15');">Text</a></tt><tt class="py-op">.</tt><tt id="link-151" class="py-name"><a title="VisionEgg.Text
+VisionEgg.Text.Text" class="py-name" href="#" onclick="return doclink('link-151', 'Text', 'link-15');">Text</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L217"></a><tt class="py-lineno">217</tt>  <tt class="py-line">        <tt class="py-name">text</tt> <tt class="py-op">=</tt> <tt class="py-string">"Starting up..."</tt><tt class="py-op">,</tt> </tt>
+<a name="L218"></a><tt class="py-lineno">218</tt>  <tt class="py-line">        <tt class="py-name">position</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">screen</tt><tt class="py-op">.</tt><tt id="link-152" class="py-name"><a title="VisionEgg.Core.Screen.size" class="py-name" href="#" onclick="return doclink('link-152', 'size', 'link-87');">size</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">/</tt><tt clas [...]
+<a name="L219"></a><tt class="py-lineno">219</tt>  <tt class="py-line">        <tt class="py-name">anchor</tt><tt class="py-op">=</tt><tt class="py-string">'bottom'</tt><tt class="py-op">,</tt> </tt>
+<a name="L220"></a><tt class="py-lineno">220</tt>  <tt class="py-line">        <tt class="py-name">color</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-number">1.0</tt><tt class="py-op">,</tt><tt class="py-number">0.0</tt><tt class="py-op">,</tt><tt class="py-number">0.0</tt><tt class="py-op">,</tt><tt class="py-number">0.0</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L221"></a><tt class="py-lineno">221</tt>  <tt class="py-line"> </tt>
+<a name="L222"></a><tt class="py-lineno">222</tt>  <tt class="py-line">    <tt class="py-name">overlay2D_viewport</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">stimuli</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">wait_text</tt><tt class="py-op">]</tt> </tt>
+<a name="L223"></a><tt class="py-lineno">223</tt>  <tt class="py-line">    <tt class="py-name">p</tt><tt class="py-op">.</tt><tt id="link-153" class="py-name" targets="Method VisionEgg.FlowControl.Presentation.between_presentations()=VisionEgg.FlowControl.Presentation-class.html#between_presentations"><a title="VisionEgg.FlowControl.Presentation.between_presentations" class="py-name" href="#" onclick="return doclink('link-153', 'between_presentations', 'link-153');">between_presentations [...]
+<a name="L224"></a><tt class="py-lineno">224</tt>  <tt class="py-line"> </tt>
+<a name="L225"></a><tt class="py-lineno">225</tt>  <tt class="py-line">    <tt class="py-comment"># now hand over control of projection to ScreenPositionMetaController</tt> </tt>
+<a name="L226"></a><tt class="py-lineno">226</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">projection_controller</tt> <tt class="py-op">=</tt> <tt id="link-154" class="py-name"><a title="VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController" class="py-name" href="#" onclick="return doclink('link-154', 'ScreenPositionMetaController', 'link-76');">ScreenPositionMetaController</a></tt><tt class="py-op">(</tt><tt class="py-name">p</tt><tt class= [...]
+<a name="L227"></a><tt class="py-lineno">227</tt>  <tt class="py-line">    <tt class="py-name">pyro_server</tt><tt class="py-op">.</tt><tt id="link-155" class="py-name" targets="Method VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.connect()=VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#connect,Method VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.connect()=VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html#connect,Method [...]
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.connect
+VisionEgg.PyroHelpers.PyroServer.connect" class="py-name" href="#" onclick="return doclink('link-155', 'connect', 'link-155');">connect</a></tt><tt class="py-op">(</tt><tt class="py-name">projection_controller</tt><tt class="py-op">,</tt><tt class="py-string">"projection_controller"</tt><tt class="py-op">)</tt> </tt>
+<a name="L228"></a><tt class="py-lineno">228</tt>  <tt class="py-line"> </tt>
+<a name="L229"></a><tt class="py-lineno">229</tt>  <tt class="py-line">    <tt class="py-name">ephys_server</tt> <tt class="py-op">=</tt> <tt class="py-name">server_class</tt><tt class="py-op">(</tt><tt class="py-name">p</tt><tt class="py-op">,</tt> <tt id="link-156" class="py-name"><a title="VisionEgg.PyroApps.EPhysServer.server_modules" class="py-name" href="#" onclick="return doclink('link-156', 'server_modules', 'link-48');">server_modules</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L230"></a><tt class="py-lineno">230</tt>  <tt class="py-line">    <tt class="py-name">pyro_server</tt><tt class="py-op">.</tt><tt id="link-157" class="py-name"><a title="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.connect
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.connect
+VisionEgg.PyroHelpers.PyroServer.connect" class="py-name" href="#" onclick="return doclink('link-157', 'connect', 'link-155');">connect</a></tt><tt class="py-op">(</tt><tt class="py-name">ephys_server</tt><tt class="py-op">,</tt><tt class="py-string">"ephys_server"</tt><tt class="py-op">)</tt> </tt>
+<a name="L231"></a><tt class="py-lineno">231</tt>  <tt class="py-line">    <tt class="py-name">hostname</tt><tt class="py-op">,</tt><tt class="py-name">port</tt> <tt class="py-op">=</tt> <tt class="py-name">pyro_server</tt><tt class="py-op">.</tt><tt id="link-158" class="py-name" targets="Method VisionEgg.PyroHelpers.PyroServer.get_hostname_and_port()=VisionEgg.PyroHelpers.PyroServer-class.html#get_hostname_and_port"><a title="VisionEgg.PyroHelpers.PyroServer.get_hostname_and_port" class [...]
+<a name="L232"></a><tt class="py-lineno">232</tt>  <tt class="py-line"> </tt>
+<a name="L233"></a><tt class="py-lineno">233</tt>  <tt class="py-line">    <tt class="py-name">wait_text</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">text</tt> <tt class="py-op">=</tt> <tt class="py-string">"Waiting for connection at %s port %d"</tt><tt class="py-op">%</tt><tt class="py-op">(</tt><tt class="py-name">hostname</tt><tt class="py-op">,</tt><tt class="py-name">port</tt><tt class="py-op">)</tt> </tt>
+<a name="L234"></a><tt class="py-lineno">234</tt>  <tt class="py-line"> </tt>
+<a name="L235"></a><tt class="py-lineno">235</tt>  <tt class="py-line">    <tt class="py-comment"># get listener controller and register it</tt> </tt>
+<a name="L236"></a><tt class="py-lineno">236</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">p</tt><tt class="py-op">.</tt><tt id="link-159" class="py-name"><a title="VisionEgg.FlowControl.Presentation.add_controller
+VisionEgg.PyroHelpers.PyroLocalDictController.add_controller" class="py-name" href="#" onclick="return doclink('link-159', 'add_controller', 'link-92');">add_controller</a></tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-name">pyro_server</tt><tt class="py-op">.</tt><tt id="link-160" class="py-name" targets="Method VisionEgg.PyroHelpers.PyroServer.create_listener_controller()=VisionEgg.Py [...]
+<a name="L237"></a><tt class="py-lineno">237</tt>  <tt class="py-line"> </tt>
+<a name="L238"></a><tt class="py-lineno">238</tt>  <tt class="py-line">    <tt class="py-name">p</tt><tt class="py-op">.</tt><tt id="link-161" class="py-name" targets="Method VisionEgg.FlowControl.Presentation.run_forever()=VisionEgg.FlowControl.Presentation-class.html#run_forever"><a title="VisionEgg.FlowControl.Presentation.run_forever" class="py-name" href="#" onclick="return doclink('link-161', 'run_forever', 'link-161');">run_forever</a></tt><tt class="py-op">(</tt><tt class="py-op" [...]
+<a name="L239"></a><tt class="py-lineno">239</tt>  <tt class="py-line"> </tt>
+<a name="L240"></a><tt class="py-lineno">240</tt>  <tt class="py-line">    <tt class="py-name">wait_text</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">text</tt> <tt class="py-op">=</tt> <tt class="py-string">"Loading new experiment, please wait."</tt> </tt>
+<a name="L241"></a><tt class="py-lineno">241</tt>  <tt class="py-line"> </tt>
+<a name="L242"></a><tt class="py-lineno">242</tt>  <tt class="py-line">    <tt class="py-keyword">while</tt> <tt class="py-keyword">not</tt> <tt class="py-name">ephys_server</tt><tt class="py-op">.</tt><tt id="link-162" class="py-name" targets="Method VisionEgg.PyroApps.EPhysServer.EPhysServer.get_quit_status()=VisionEgg.PyroApps.EPhysServer.EPhysServer-class.html#get_quit_status"><a title="VisionEgg.PyroApps.EPhysServer.EPhysServer.get_quit_status" class="py-name" href="#" onclick="retu [...]
+<a name="L243"></a><tt class="py-lineno">243</tt>  <tt class="py-line">        <tt class="py-comment"># this flow control configuration SEEMS to be stable for</tt> </tt>
+<a name="L244"></a><tt class="py-lineno">244</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># contiguously loaded scripts more rigorous testing would be</tt> </tt>
+<a name="L245"></a><tt class="py-lineno">245</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># appreciated</tt> </tt>
+<a name="L246"></a><tt class="py-lineno">246</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">loadNewExpr</tt><tt class="py-op">:</tt> </tt>
+<a name="L247"></a><tt class="py-lineno">247</tt>  <tt class="py-line">            <tt class="py-name">wait_text</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">text</tt> <tt class="py-op">=</tt> <tt class="py-string">"Loading new experiment, please wait."</tt> </tt>
+<a name="L248"></a><tt class="py-lineno">248</tt>  <tt class="py-line">            <tt class="py-name">perspective_viewport</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">stimuli</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L249"></a><tt class="py-lineno">249</tt>  <tt class="py-line">            <tt class="py-name">overlay2D_viewport</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">stimuli</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">wait_text</tt><tt class="py-op">]</tt> </tt>
+<a name="L250"></a><tt class="py-lineno">250</tt>  <tt class="py-line">            <tt class="py-name">p</tt><tt class="py-op">.</tt><tt id="link-163" class="py-name"><a title="VisionEgg.FlowControl.Presentation.between_presentations" class="py-name" href="#" onclick="return doclink('link-163', 'between_presentations', 'link-153');">between_presentations</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-comment"># draw wait_text</tt> </tt>
+<a name="L251"></a><tt class="py-lineno">251</tt>  <tt class="py-line">            <tt class="py-name">pyro_name</tt><tt class="py-op">,</tt> <tt class="py-name">meta_controller_class</tt><tt class="py-op">,</tt> <tt class="py-name">stimulus_list</tt> <tt class="py-op">=</tt> <tt class="py-name">ephys_server</tt><tt class="py-op">.</tt><tt id="link-164" class="py-name" targets="Method VisionEgg.PyroApps.EPhysServer.EPhysServer.get_next_stimulus_meta_controller()=VisionEgg.PyroApps.EPhysS [...]
+<a name="L252"></a><tt class="py-lineno">252</tt>  <tt class="py-line">            <tt class="py-name">stimulus_meta_controller</tt> <tt class="py-op">=</tt> <tt class="py-name">meta_controller_class</tt><tt class="py-op">(</tt><tt class="py-name">screen</tt><tt class="py-op">,</tt> <tt class="py-name">p</tt><tt class="py-op">,</tt> <tt class="py-name">stimulus_list</tt><tt class="py-op">)</tt> <tt class="py-comment"># instantiate meta_controller</tt> </tt>
+<a name="L253"></a><tt class="py-lineno">253</tt>  <tt class="py-line">            <tt class="py-name">pyro_server</tt><tt class="py-op">.</tt><tt id="link-165" class="py-name"><a title="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.connect
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.connect
+VisionEgg.PyroHelpers.PyroServer.connect" class="py-name" href="#" onclick="return doclink('link-165', 'connect', 'link-155');">connect</a></tt><tt class="py-op">(</tt><tt class="py-name">stimulus_meta_controller</tt><tt class="py-op">,</tt> <tt class="py-name">pyro_name</tt><tt class="py-op">)</tt> </tt>
+<a name="L254"></a><tt class="py-lineno">254</tt>  <tt class="py-line"> </tt>
+<a name="L255"></a><tt class="py-lineno">255</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">ephys_server</tt><tt class="py-op">.</tt><tt id="link-166" class="py-name" targets="Method VisionEgg.PyroApps.EPhysServer.EPhysServer.get_stimkey()=VisionEgg.PyroApps.EPhysServer.EPhysServer-class.html#get_stimkey"><a title="VisionEgg.PyroApps.EPhysServer.EPhysServer.get_stimkey" class="py-name" href="#" onclick="return doclink('link-166', 'get_stimkey', 'link [...]
+<a name="L256"></a><tt class="py-lineno">256</tt>  <tt class="py-line">            <tt class="py-name">wait_text</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">text</tt> <tt class="py-op">=</tt> <tt class="py-string">"Vision Egg script mode"</tt> </tt>
+<a name="L257"></a><tt class="py-lineno">257</tt>  <tt class="py-line">             </tt>
+<a name="L258"></a><tt class="py-lineno">258</tt>  <tt class="py-line">            <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">enter_go_loop</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
+<a name="L259"></a><tt class="py-lineno">259</tt>  <tt class="py-line">            <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt id="link-167" class="py-name"><a title="VisionEgg.PyroApps.EPhysGUI.AppWindow.quit" class="py-name" href="#" onclick="return doclink('link-167', 'quit', 'link-107');">quit</a></tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
+<a name="L260"></a><tt class="py-lineno">260</tt>  <tt class="py-line">            <tt class="py-name">p</tt><tt class="py-op">.</tt><tt id="link-168" class="py-name"><a title="VisionEgg.FlowControl.Presentation.run_forever" class="py-name" href="#" onclick="return doclink('link-168', 'run_forever', 'link-161');">run_forever</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L261"></a><tt class="py-lineno">261</tt>  <tt class="py-line">             </tt>
+<a name="L262"></a><tt class="py-lineno">262</tt>  <tt class="py-line">            <tt class="py-comment"># At this point quit signal was sent by client to either:</tt> </tt>
+<a name="L263"></a><tt class="py-lineno">263</tt>  <tt class="py-line"><tt class="py-comment"></tt>             </tt>
+<a name="L264"></a><tt class="py-lineno">264</tt>  <tt class="py-line">            <tt class="py-comment"># 1) Execute the script (ie. "exec_demoscript_flag" has</tt> </tt>
+<a name="L265"></a><tt class="py-lineno">265</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># been set)</tt> </tt>
+<a name="L266"></a><tt class="py-lineno">266</tt>  <tt class="py-line"><tt class="py-comment"></tt>             </tt>
+<a name="L267"></a><tt class="py-lineno">267</tt>  <tt class="py-line">            <tt class="py-comment"># 2) Load a DIFFERENT script ("loadNewExpr" should be set</tt> </tt>
+<a name="L268"></a><tt class="py-lineno">268</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># to False in this event)</tt> </tt>
+<a name="L269"></a><tt class="py-lineno">269</tt>  <tt class="py-line"><tt class="py-comment"></tt>             </tt>
+<a name="L270"></a><tt class="py-lineno">270</tt>  <tt class="py-line">            <tt class="py-comment"># 3) Load a BUILT IN experiment ("loadNewExpr" should be</tt> </tt>
+<a name="L271"></a><tt class="py-lineno">271</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># set to True in this event)</tt> </tt>
+<a name="L272"></a><tt class="py-lineno">272</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L273"></a><tt class="py-lineno">273</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">ephys_server</tt><tt class="py-op">.</tt><tt class="py-name">exec_demoscript_flag</tt><tt class="py-op">:</tt> </tt>
+<a name="L274"></a><tt class="py-lineno">274</tt>  <tt class="py-line">                <tt class="py-name">dropin_meta_params</tt> <tt class="py-op">=</tt> <tt class="py-name">stimulus_meta_controller</tt><tt class="py-op">.</tt><tt id="link-169" class="py-name" targets="Method VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.get_parameters()=VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController-class.html#get_parameters,Method VisionEgg.PyroApps.DropinServer.DropinMetaControl [...]
+VisionEgg.PyroApps.DropinServer.DropinMetaController.get_parameters
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.get_parameters
+VisionEgg.PyroApps.GridServer.GridMetaController.get_parameters
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.get_parameters
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.get_parameters
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.get_parameters
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.get_parameters
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.get_parameters" class="py-name" href="#" onclick="return doclink('link-169', 'get_parameters', 'link-169');">get_parameters</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L275"></a><tt class="py-lineno">275</tt>  <tt class="py-line">                <tt class="py-name">ephys_server</tt><tt class="py-op">.</tt><tt id="link-170" class="py-name" targets="Method VisionEgg.PyroApps.EPhysServer.EPhysServer.exec_AST()=VisionEgg.PyroApps.EPhysServer.EPhysServer-class.html#exec_AST"><a title="VisionEgg.PyroApps.EPhysServer.EPhysServer.exec_AST" class="py-name" href="#" onclick="return doclink('link-170', 'exec_AST', 'link-170');">exec_AST</a></tt><tt class [...]
+<a name="L276"></a><tt class="py-lineno">276</tt>  <tt class="py-line"> </tt>
+<a name="L277"></a><tt class="py-lineno">277</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">ephys_server</tt><tt class="py-op">.</tt><tt id="link-171" class="py-name"><a title="VisionEgg.PyroApps.EPhysServer.EPhysServer.get_stimkey" class="py-name" href="#" onclick="return doclink('link-171', 'get_stimkey', 'link-166');">get_stimkey</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-string">"dropin_se [...]
+<a name="L278"></a><tt class="py-lineno">278</tt>  <tt class="py-line">                <tt class="py-comment"># Either:</tt> </tt>
+<a name="L279"></a><tt class="py-lineno">279</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-comment"># 1) Same script (just finished executing)</tt> </tt>
+<a name="L280"></a><tt class="py-lineno">280</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-comment"># 2) Loading a new script</tt> </tt>
+<a name="L281"></a><tt class="py-lineno">281</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-name">loadNewExpr</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
+<a name="L282"></a><tt class="py-lineno">282</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L283"></a><tt class="py-lineno">283</tt>  <tt class="py-line">                <tt class="py-comment"># 3) load a BUILT IN experiment</tt> </tt>
+<a name="L284"></a><tt class="py-lineno">284</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-name">pyro_server</tt><tt class="py-op">.</tt><tt id="link-172" class="py-name" targets="Method VisionEgg.PyroHelpers.PyroServer.disconnect()=VisionEgg.PyroHelpers.PyroServer-class.html#disconnect"><a title="VisionEgg.PyroHelpers.PyroServer.disconnect" class="py-name" href="#" onclick="return doclink('link-172', 'disconnect', 'link-172');">disconnect</a></tt><t [...]
+<a name="L285"></a><tt class="py-lineno">285</tt>  <tt class="py-line">                <tt class="py-keyword">del</tt> <tt class="py-name">stimulus_meta_controller</tt> <tt class="py-comment"># we have to do this explicitly because Pyro keeps a copy of the reference</tt> </tt>
+<a name="L286"></a><tt class="py-lineno">286</tt>  <tt class="py-line">                <tt class="py-name">loadNewExpr</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
+<a name="L287"></a><tt class="py-lineno">287</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L288"></a><tt class="py-lineno">288</tt>  <tt class="py-line">            <tt class="py-name">overlay2D_viewport</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">stimuli</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> <tt class="py-comment"># clear wait_text</tt> </tt>
+<a name="L289"></a><tt class="py-lineno">289</tt>  <tt class="py-line">            <tt class="py-keyword">for</tt> <tt class="py-name">stim</tt> <tt class="py-keyword">in</tt> <tt class="py-name">stimulus_list</tt><tt class="py-op">:</tt> </tt>
+<a name="L290"></a><tt class="py-lineno">290</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">stim</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-string">'3d_perspective'</tt><tt class="py-op">:</tt> </tt>
+<a name="L291"></a><tt class="py-lineno">291</tt>  <tt class="py-line">                    <tt class="py-name">perspective_viewport</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">stimuli</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">stim</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L292"></a><tt class="py-lineno">292</tt>  <tt class="py-line">                <tt class="py-keyword">elif</tt> <tt class="py-name">stim</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-string">'3d_perspective_with_set_viewport_callback'</tt><tt class="py-op">:</tt> </tt>
+<a name="L293"></a><tt class="py-lineno">293</tt>  <tt class="py-line">                    <tt class="py-name">key</tt><tt class="py-op">,</tt> <tt class="py-name">stimulus</tt><tt class="py-op">,</tt> <tt class="py-name">callback_function</tt> <tt class="py-op">=</tt> <tt class="py-name">stim</tt> </tt>
+<a name="L294"></a><tt class="py-lineno">294</tt>  <tt class="py-line">                    <tt class="py-name">callback_function</tt><tt class="py-op">(</tt><tt class="py-name">perspective_viewport</tt><tt class="py-op">)</tt> </tt>
+<a name="L295"></a><tt class="py-lineno">295</tt>  <tt class="py-line">                    <tt class="py-name">perspective_viewport</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">stimuli</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">stimulus</tt><tt class="py-op">)</tt> </tt>
+<a name="L296"></a><tt class="py-lineno">296</tt>  <tt class="py-line">                <tt class="py-keyword">elif</tt> <tt class="py-name">stim</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-string">'2d_overlay'</tt><tt class="py-op">:</tt> </tt>
+<a name="L297"></a><tt class="py-lineno">297</tt>  <tt class="py-line">                    <tt class="py-name">overlay2D_viewport</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">stimuli</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">stim</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L298"></a><tt class="py-lineno">298</tt>  <tt class="py-line">                <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L299"></a><tt class="py-lineno">299</tt>  <tt class="py-line">                    <tt class="py-keyword">raise</tt> <tt class="py-name">RuntimeError</tt><tt class="py-op">(</tt><tt class="py-string">"Unknown viewport id %s"</tt><tt class="py-op">%</tt><tt class="py-name">stim</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L300"></a><tt class="py-lineno">300</tt>  <tt class="py-line"> </tt>
+<a name="L301"></a><tt class="py-lineno">301</tt>  <tt class="py-line">            <tt class="py-comment"># enter loop</tt> </tt>
+<a name="L302"></a><tt class="py-lineno">302</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">enter_go_loop</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
+<a name="L303"></a><tt class="py-lineno">303</tt>  <tt class="py-line">            <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt id="link-173" class="py-name"><a title="VisionEgg.PyroApps.EPhysGUI.AppWindow.quit" class="py-name" href="#" onclick="return doclink('link-173', 'quit', 'link-107');">quit</a></tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
+<a name="L304"></a><tt class="py-lineno">304</tt>  <tt class="py-line">            <tt class="py-name">p</tt><tt class="py-op">.</tt><tt id="link-174" class="py-name"><a title="VisionEgg.FlowControl.Presentation.run_forever" class="py-name" href="#" onclick="return doclink('link-174', 'run_forever', 'link-161');">run_forever</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L305"></a><tt class="py-lineno">305</tt>  <tt class="py-line">             </tt>
+<a name="L306"></a><tt class="py-lineno">306</tt>  <tt class="py-line">            <tt class="py-comment"># At this point quit signal was sent by client to either:</tt> </tt>
+<a name="L307"></a><tt class="py-lineno">307</tt>  <tt class="py-line"><tt class="py-comment"></tt>             </tt>
+<a name="L308"></a><tt class="py-lineno">308</tt>  <tt class="py-line">            <tt class="py-comment"># 1) Load a script ("loadNewExpr" should be set to 1 in</tt> </tt>
+<a name="L309"></a><tt class="py-lineno">309</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># this event)</tt> </tt>
+<a name="L310"></a><tt class="py-lineno">310</tt>  <tt class="py-line"><tt class="py-comment"></tt>             </tt>
+<a name="L311"></a><tt class="py-lineno">311</tt>  <tt class="py-line">            <tt class="py-comment"># 2) Load a BUILT IN experiment ("loadNewExpr" should be</tt> </tt>
+<a name="L312"></a><tt class="py-lineno">312</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># set to 1 in this event)</tt> </tt>
+<a name="L313"></a><tt class="py-lineno">313</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L314"></a><tt class="py-lineno">314</tt>  <tt class="py-line">            <tt class="py-name">pyro_server</tt><tt class="py-op">.</tt><tt id="link-175" class="py-name"><a title="VisionEgg.PyroHelpers.PyroServer.disconnect" class="py-name" href="#" onclick="return doclink('link-175', 'disconnect', 'link-172');">disconnect</a></tt><tt class="py-op">(</tt><tt class="py-name">stimulus_meta_controller</tt><tt class="py-op">)</tt> </tt>
+<a name="L315"></a><tt class="py-lineno">315</tt>  <tt class="py-line">            <tt class="py-keyword">del</tt> <tt class="py-name">stimulus_meta_controller</tt> <tt class="py-comment"># we have to do this explicitly because Pyro keeps a copy of the reference</tt> </tt>
+</div><a name="L316"></a><tt class="py-lineno">316</tt>  <tt class="py-line">             </tt>
+<a name="L317"></a><tt class="py-lineno">317</tt>  <tt class="py-line"><tt class="py-keyword">if</tt> <tt class="py-name">__name__</tt> <tt class="py-op">==</tt> <tt class="py-string">'__main__'</tt><tt class="py-op">:</tt> </tt>
+<a name="L318"></a><tt class="py-lineno">318</tt>  <tt class="py-line">    <tt id="link-176" class="py-name" targets="Function VisionEgg.PyroApps.EPhysServer.start_server()=VisionEgg.PyroApps.EPhysServer-module.html#start_server"><a title="VisionEgg.PyroApps.EPhysServer.start_server" class="py-name" href="#" onclick="return doclink('link-176', 'start_server', 'link-176');">start_server</a></tt><tt class="py-op">(</tt> <tt id="link-177" class="py-name"><a title="VisionEgg.PyroApps.EPhysSe [...]
+<a name="L319"></a><tt class="py-lineno">319</tt>  <tt class="py-line"> </tt><script type="text/javascript">
+<!--
+expandto(location.href);
+// -->
+</script>
+</pre>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:49 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.PyroApps.EPhysServer.EPhysServer-class.html b/doc/reference/html/VisionEgg.PyroApps.EPhysServer.EPhysServer-class.html
new file mode 100644
index 0000000..f7003ac
--- /dev/null
+++ b/doc/reference/html/VisionEgg.PyroApps.EPhysServer.EPhysServer-class.html
@@ -0,0 +1,537 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.PyroApps.EPhysServer.EPhysServer</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.PyroApps-module.html">Package PyroApps</a> ::
+        <a href="VisionEgg.PyroApps.EPhysServer-module.html">Module EPhysServer</a> ::
+        Class EPhysServer
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.PyroApps.EPhysServer.EPhysServer-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class EPhysServer</h1><span class="codelink"><a href="VisionEgg.PyroApps.EPhysServer-pysrc.html#EPhysServer">source code</a></span><br /><br />
+<pre class="base-tree">
+Pyro.core.ObjBase --+
+                    |
+                   <strong class="uidshort">EPhysServer</strong>
+</pre>
+
+<hr />
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.PyroApps.EPhysServer.EPhysServer-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">presentation</span>,
+        <span class="summary-sig-arg">server_modules</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.EPhysServer-pysrc.html#EPhysServer.__init__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__del__"></a><span class="summary-sig-name">__del__</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.EPhysServer-pysrc.html#EPhysServer.__del__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="get_quit_status"></a><span class="summary-sig-name">get_quit_status</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.EPhysServer-pysrc.html#EPhysServer.get_quit_status">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="set_quit_status"></a><span class="summary-sig-name">set_quit_status</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">quit_status</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.EPhysServer-pysrc.html#EPhysServer.set_quit_status">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="first_connection"></a><span class="summary-sig-name">first_connection</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.EPhysServer-pysrc.html#EPhysServer.first_connection">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="set_stim_onset_cal"></a><span class="summary-sig-name">set_stim_onset_cal</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">on</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.EPhysServer-pysrc.html#EPhysServer.set_stim_onset_cal">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="set_stim_onset_cal_location"></a><span class="summary-sig-name">set_stim_onset_cal_location</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">center</span>,
+        <span class="summary-sig-arg">size</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.EPhysServer-pysrc.html#EPhysServer.set_stim_onset_cal_location">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="get_stim_onset_cal_location"></a><span class="summary-sig-name">get_stim_onset_cal_location</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.EPhysServer-pysrc.html#EPhysServer.get_stim_onset_cal_location">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="set_gamma_ramp"></a><span class="summary-sig-name">set_gamma_ramp</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">red</span>,
+        <span class="summary-sig-arg">blue</span>,
+        <span class="summary-sig-arg">green</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.EPhysServer-pysrc.html#EPhysServer.set_gamma_ramp">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="is_in_go_loop"></a><span class="summary-sig-name">is_in_go_loop</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.EPhysServer-pysrc.html#EPhysServer.is_in_go_loop">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="were_frames_dropped_in_last_go_loop"></a><span class="summary-sig-name">were_frames_dropped_in_last_go_loop</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.EPhysServer-pysrc.html#EPhysServer.were_frames_dropped_in_last_go_loop">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="get_last_go_loop_start_time_absolute_sec"></a><span class="summary-sig-name">get_last_go_loop_start_time_absolute_sec</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.EPhysServer-pysrc.html#EPhysServer.get_last_go_loop_start_time_absolute_sec">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="set_override_t_abs_sec"></a><span class="summary-sig-name">set_override_t_abs_sec</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">value_sec_string</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.EPhysServer-pysrc.html#EPhysServer.set_override_t_abs_sec">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="get_next_stimulus_meta_controller"></a><span class="summary-sig-name">get_next_stimulus_meta_controller</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.EPhysServer-pysrc.html#EPhysServer.get_next_stimulus_meta_controller">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="get_stimkey"></a><span class="summary-sig-name">get_stimkey</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.EPhysServer-pysrc.html#EPhysServer.get_stimkey">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="set_next_stimkey"></a><span class="summary-sig-name">set_next_stimkey</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">stimkey</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.EPhysServer-pysrc.html#EPhysServer.set_next_stimkey">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="get_cwd"></a><span class="summary-sig-name">get_cwd</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.EPhysServer-pysrc.html#EPhysServer.get_cwd">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="save_image_sequence"></a><span class="summary-sig-name">save_image_sequence</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">fps</span>=<span class="summary-sig-default">12.0</span>,
+        <span class="summary-sig-arg">filename_base</span>=<span class="summary-sig-default">"im"</span>,
+        <span class="summary-sig-arg">filename_suffix</span>=<span class="summary-sig-default">".tif"</span>,
+        <span class="summary-sig-arg">save_dir</span>=<span class="summary-sig-default">"."</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.EPhysServer-pysrc.html#EPhysServer.save_image_sequence">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="build_AST"></a><span class="summary-sig-name">build_AST</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">source</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.EPhysServer-pysrc.html#EPhysServer.build_AST">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="exec_AST"></a><span class="summary-sig-name">exec_AST</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">screen</span>,
+        <span class="summary-sig-arg">dropin_meta_params</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.EPhysServer-pysrc.html#EPhysServer.exec_AST">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="run_demoscript"></a><span class="summary-sig-name">run_demoscript</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.EPhysServer-pysrc.html#EPhysServer.run_demoscript">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>Pyro.core.ObjBase</code></b>:
+      <code>GUID</code>,
+      <code>Pyro_dyncall</code>,
+      <code>delegateTo</code>,
+      <code>getAttrProxy</code>,
+      <code>getDaemon</code>,
+      <code>getLocalStorage</code>,
+      <code>getProxy</code>,
+      <code>remote_retrieve_code</code>,
+      <code>remote_supply_code</code>,
+      <code>setCodeValidator</code>,
+      <code>setGUID</code>,
+      <code>setPyroDaemon</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Method Details</span></td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">presentation</span>,
+        <span class="sig-arg">server_modules</span>)</span>
+    <br /><em class="fname">(Constructor)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.PyroApps.EPhysServer-pysrc.html#EPhysServer.__init__">source code</a></span> 
+    </td>
+  </table>
+  
+  
+  <dl class="fields">
+    <dt>Overrides:
+      Pyro.core.ObjBase.__init__
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.PyroApps.FlatGratingGUI-module.html b/doc/reference/html/VisionEgg.PyroApps.FlatGratingGUI-module.html
new file mode 100644
index 0000000..398bc2b
--- /dev/null
+++ b/doc/reference/html/VisionEgg.PyroApps.FlatGratingGUI-module.html
@@ -0,0 +1,196 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.PyroApps.FlatGratingGUI</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.PyroApps-module.html">Package PyroApps</a> ::
+        Module FlatGratingGUI
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.PyroApps.FlatGratingGUI-module.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== MODULE DESCRIPTION ==================== -->
+<h1 class="epydoc">Module FlatGratingGUI</h1><span class="codelink"><a href="VisionEgg.PyroApps.FlatGratingGUI-pysrc.html">source code</a></span><br /><br />
+<pre class="literalblock">
+Handle sinusoidal gratings (client-side)
+
+</pre><br /><br />
+
+<hr />
+<div class="fields">      <p><strong>Version:</strong>
+        1.1.dev
+      </p>
+      <p><strong>Author:</strong>
+        Andrew Straw <astraw at users.sourceforge.net>
+      </p>
+</div><!-- ==================== CLASSES ==================== -->
+<a name="section-Classes"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Classes</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.PyroApps.FlatGratingGUI.FlatGratingMetaParameters-class.html" class="summary-name">FlatGratingMetaParameters</a>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame-class.html" class="summary-name">FlatGratingControlFrame</a>
+    </td>
+  </tr>
+</table>
+<!-- ==================== FUNCTIONS ==================== -->
+<a name="section-Functions"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Functions</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="get_control_list"></a><span class="summary-sig-name">get_control_list</span>()</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.FlatGratingGUI-pysrc.html#get_control_list">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+</table>
+<!-- ==================== VARIABLES ==================== -->
+<a name="section-Variables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Variables</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="__cvs__"></a><span class="summary-name">__cvs__</span> = <code title="string.split('$Revision$') [1]">string.split('$Revision$') [1]</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="__date__"></a><span class="summary-name">__date__</span> = <code title="string.join(string.split('$Date$') [1: 3], ' ')">string.join(string.split('$Date$') [1: 3], ' ')</code>
+    </td>
+  </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.PyroApps.FlatGratingGUI-pysrc.html b/doc/reference/html/VisionEgg.PyroApps.FlatGratingGUI-pysrc.html
new file mode 100644
index 0000000..c63661e
--- /dev/null
+++ b/doc/reference/html/VisionEgg.PyroApps.FlatGratingGUI-pysrc.html
@@ -0,0 +1,519 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.PyroApps.FlatGratingGUI</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.PyroApps-module.html">Package PyroApps</a> ::
+        Module FlatGratingGUI
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.PyroApps.FlatGratingGUI-pysrc.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<h1 class="epydoc">Source Code for <a href="VisionEgg.PyroApps.FlatGratingGUI-module.html">Module VisionEgg.PyroApps.FlatGratingGUI</a></h1>
+<pre class="py-src">
+<a name="L1"></a><tt class="py-lineno">  1</tt>  <tt class="py-line"><tt class="py-comment">#!/usr/bin/env python</tt> </tt>
+<a name="L2"></a><tt class="py-lineno">  2</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L3"></a><tt class="py-lineno">  3</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># The Vision Egg: FlatGratingGUI</tt> </tt>
+<a name="L4"></a><tt class="py-lineno">  4</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L5"></a><tt class="py-lineno">  5</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Copyright (C) 2001-2003 Andrew Straw.</tt> </tt>
+<a name="L6"></a><tt class="py-lineno">  6</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Author: Andrew Straw <astraw at users.sourceforge.net></tt> </tt>
+<a name="L7"></a><tt class="py-lineno">  7</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># URL: <http://www.visionegg.org/></tt> </tt>
+<a name="L8"></a><tt class="py-lineno">  8</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L9"></a><tt class="py-lineno">  9</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Distributed under the terms of the GNU Lesser General Public License</tt> </tt>
+<a name="L10"></a><tt class="py-lineno"> 10</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># (LGPL). See LICENSE.TXT that came with this file.</tt> </tt>
+<a name="L11"></a><tt class="py-lineno"> 11</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L12"></a><tt class="py-lineno"> 12</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># $Id$</tt> </tt>
+<a name="L13"></a><tt class="py-lineno"> 13</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L14"></a><tt class="py-lineno"> 14</tt>  <tt class="py-line"><tt class="py-docstring">"""Handle sinusoidal gratings (client-side)"""</tt> </tt>
+<a name="L15"></a><tt class="py-lineno"> 15</tt>  <tt class="py-line"> </tt>
+<a name="L16"></a><tt class="py-lineno"> 16</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-0" class="py-name" targets="Package VisionEgg=VisionEgg-module.html"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-0', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">,</tt> <tt class="py-name">string</tt> </tt>
+<a name="L17"></a><tt class="py-lineno"> 17</tt>  <tt class="py-line"><tt id="link-1" class="py-name" targets="Variable VisionEgg.DaqKeyboard.__version__=VisionEgg.DaqKeyboard-module.html#__version__,Variable VisionEgg.DaqLPT.__version__=VisionEgg.DaqLPT-module.html#__version__,Variable VisionEgg.GL.__version__=VisionEgg.GL-module.html#__version__,Variable VisionEgg.PyroApps.EPhysGUI.__version__=VisionEgg.PyroApps.EPhysGUI-module.html#__version__,Variable VisionEgg.PyroApps.EPhysGUIUtils [...]
+VisionEgg.DaqLPT.__version__
+VisionEgg.GL.__version__
+VisionEgg.PyroApps.EPhysGUI.__version__
+VisionEgg.PyroApps.EPhysGUIUtils.__version__
+VisionEgg.PyroApps.EPhysServer.__version__
+VisionEgg.PyroApps.GridGUI.__version__
+VisionEgg.PyroApps.GridServer.__version__
+VisionEgg.PyroApps.ScreenPositionGUI.__version__
+VisionEgg.PyroApps.ScreenPositionServer.__version__
+VisionEgg.PyroApps.SpinningDrumGUI.__version__
+VisionEgg.PyroApps.SpinningDrumServer.__version__
+VisionEgg.PyroHelpers.__version__
+VisionEgg.QuickTime.__version__
+VisionEgg.ResponseControl.__version__
+VisionEgg.SphereMap.__version__
+VisionEgg.TCPController.__version__" class="py-name" href="#" onclick="return doclink('link-1', '__version__', 'link-1');">__version__</a></tt> <tt class="py-op">=</tt> <tt id="link-2" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-2', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-3" class="py-name" targets="Variable VisionEgg.release_name=VisionEgg-module.html#release_name"><a title="VisionEgg.release_name" c [...]
+<a name="L18"></a><tt class="py-lineno"> 18</tt>  <tt class="py-line"><tt id="link-4" class="py-name" targets="Variable VisionEgg.PyroApps.ColorCalGUI.__cvs__=VisionEgg.PyroApps.ColorCalGUI-module.html#__cvs__,Variable VisionEgg.PyroApps.ColorCalServer.__cvs__=VisionEgg.PyroApps.ColorCalServer-module.html#__cvs__,Variable VisionEgg.PyroApps.EPhysGUI.__cvs__=VisionEgg.PyroApps.EPhysGUI-module.html#__cvs__,Variable VisionEgg.PyroApps.EPhysGUIUtils.__cvs__=VisionEgg.PyroApps.EPhysGUIUtils-m [...]
+VisionEgg.PyroApps.ColorCalServer.__cvs__
+VisionEgg.PyroApps.EPhysGUI.__cvs__
+VisionEgg.PyroApps.EPhysGUIUtils.__cvs__
+VisionEgg.PyroApps.EPhysServer.__cvs__
+VisionEgg.PyroApps.FlatGratingGUI.__cvs__
+VisionEgg.PyroApps.FlatGratingServer.__cvs__
+VisionEgg.PyroApps.GridGUI.__cvs__
+VisionEgg.PyroApps.GridServer.__cvs__
+VisionEgg.PyroApps.MouseTargetGUI.__cvs__
+VisionEgg.PyroApps.MouseTargetServer.__cvs__
+VisionEgg.PyroApps.ScreenPositionGUI.__cvs__
+VisionEgg.PyroApps.ScreenPositionServer.__cvs__
+VisionEgg.PyroApps.SphereGratingGUI.__cvs__
+VisionEgg.PyroApps.SphereGratingServer.__cvs__
+VisionEgg.PyroApps.SpinningDrumGUI.__cvs__
+VisionEgg.PyroApps.SpinningDrumServer.__cvs__
+VisionEgg.PyroApps.TargetGUI.__cvs__
+VisionEgg.PyroApps.TargetServer.__cvs__
+VisionEgg.PyroClient.__cvs__
+VisionEgg.PyroHelpers.__cvs__
+VisionEgg.TCPController.__cvs__" class="py-name" href="#" onclick="return doclink('link-4', '__cvs__', 'link-4');">__cvs__</a></tt> <tt class="py-op">=</tt> <tt class="py-name">string</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'$Revision$'</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
+<a name="L19"></a><tt class="py-lineno"> 19</tt>  <tt class="py-line"><tt id="link-5" class="py-name" targets="Variable VisionEgg.PyroApps.ColorCalGUI.__date__=VisionEgg.PyroApps.ColorCalGUI-module.html#__date__,Variable VisionEgg.PyroApps.ColorCalServer.__date__=VisionEgg.PyroApps.ColorCalServer-module.html#__date__,Variable VisionEgg.PyroApps.EPhysGUI.__date__=VisionEgg.PyroApps.EPhysGUI-module.html#__date__,Variable VisionEgg.PyroApps.EPhysGUIUtils.__date__=VisionEgg.PyroApps.EPhysGUI [...]
+VisionEgg.PyroApps.ColorCalServer.__date__
+VisionEgg.PyroApps.EPhysGUI.__date__
+VisionEgg.PyroApps.EPhysGUIUtils.__date__
+VisionEgg.PyroApps.EPhysServer.__date__
+VisionEgg.PyroApps.FlatGratingGUI.__date__
+VisionEgg.PyroApps.FlatGratingServer.__date__
+VisionEgg.PyroApps.GridGUI.__date__
+VisionEgg.PyroApps.GridServer.__date__
+VisionEgg.PyroApps.MouseTargetGUI.__date__
+VisionEgg.PyroApps.MouseTargetServer.__date__
+VisionEgg.PyroApps.ScreenPositionGUI.__date__
+VisionEgg.PyroApps.ScreenPositionServer.__date__
+VisionEgg.PyroApps.SphereGratingGUI.__date__
+VisionEgg.PyroApps.SphereGratingServer.__date__
+VisionEgg.PyroApps.SpinningDrumGUI.__date__
+VisionEgg.PyroApps.SpinningDrumServer.__date__
+VisionEgg.PyroApps.TargetGUI.__date__
+VisionEgg.PyroApps.TargetServer.__date__
+VisionEgg.PyroClient.__date__
+VisionEgg.PyroHelpers.__date__
+VisionEgg.TCPController.__date__" class="py-name" href="#" onclick="return doclink('link-5', '__date__', 'link-5');">__date__</a></tt> <tt class="py-op">=</tt> <tt class="py-name">string</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">string</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'$Date$'</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt  [...]
+<a name="L20"></a><tt class="py-lineno"> 20</tt>  <tt class="py-line"><tt id="link-6" class="py-name" targets="Variable VisionEgg.PyroApps.EPhysGUI.__author__=VisionEgg.PyroApps.EPhysGUI-module.html#__author__,Variable VisionEgg.PyroApps.EPhysGUIUtils.__author__=VisionEgg.PyroApps.EPhysGUIUtils-module.html#__author__,Variable VisionEgg.PyroApps.EPhysServer.__author__=VisionEgg.PyroApps.EPhysServer-module.html#__author__,Variable VisionEgg.PyroApps.GridGUI.__author__=VisionEgg.PyroApps.Gr [...]
+VisionEgg.PyroApps.EPhysGUIUtils.__author__
+VisionEgg.PyroApps.EPhysServer.__author__
+VisionEgg.PyroApps.GridGUI.__author__
+VisionEgg.PyroApps.GridServer.__author__
+VisionEgg.PyroApps.SpinningDrumGUI.__author__
+VisionEgg.PyroApps.SpinningDrumServer.__author__" class="py-name" href="#" onclick="return doclink('link-6', '__author__', 'link-6');">__author__</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'Andrew Straw <astraw at users.sourceforge.net>'</tt> </tt>
+<a name="L21"></a><tt class="py-lineno"> 21</tt>  <tt class="py-line"> </tt>
+<a name="L22"></a><tt class="py-lineno"> 22</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">sys</tt><tt class="py-op">,</tt> <tt class="py-name">os</tt> </tt>
+<a name="L23"></a><tt class="py-lineno"> 23</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-7" class="py-name" targets="Variable VisionEgg.GUI.Tkinter=VisionEgg.GUI-module.html#Tkinter"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-7', 'Tkinter', 'link-7');">Tkinter</a></tt> </tt>
+<a name="L24"></a><tt class="py-lineno"> 24</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-8" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-8', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-9" class="py-name" targets="Package VisionEgg.PyroApps=VisionEgg.PyroApps-module.html"><a title="VisionEgg.PyroApps" class="py-name" href="#" onclick="return doclink('link-9', 'PyroApps', 'link-9 [...]
+<a name="L25"></a><tt class="py-lineno"> 25</tt>  <tt class="py-line"> </tt>
+<a name="get_control_list"></a><div id="get_control_list-def"><a name="L26"></a><tt class="py-lineno"> 26</tt> <a class="py-toggle" href="#" id="get_control_list-toggle" onclick="return toggle('get_control_list');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.FlatGratingGUI-module.html#get_control_list">get_control_list</a><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="get_control_list-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="get_control_list-expanded"><a name="L27"></a><tt class="py-lineno"> 27</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-op">[</tt><tt class="py-op">(</tt><tt class="py-string">"flat_grating_server"</tt><tt class="py-op">,</tt><tt id="link-11" class="py-name" targets="Class VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame=VisionEgg.PyroApps.FlatGra [...]
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.title
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.title
+VisionEgg.PyroApps.GridGUI.GridControlFrame.title
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.title
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.title
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.title
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.title" class="py-name" href="#" onclick="return doclink('link-13', 'title', 'link-13');">title</a></tt><tt class="py-op">)</tt><tt class="py-op">]</tt> </tt>
+</div><a name="L28"></a><tt class="py-lineno"> 28</tt>  <tt class="py-line"> </tt>
+<a name="FlatGratingMetaParameters"></a><div id="FlatGratingMetaParameters-def"><a name="L29"></a><tt class="py-lineno"> 29</tt> <a class="py-toggle" href="#" id="FlatGratingMetaParameters-toggle" onclick="return toggle('FlatGratingMetaParameters');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.PyroApps.FlatGratingGUI.FlatGratingMetaParameters-class.html">FlatGratingMetaParameters</a><tt class="py-op">:</tt> </tt>
+</div><div id="FlatGratingMetaParameters-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="FlatGratingMetaParameters-expanded"><a name="FlatGratingMetaParameters.__init__"></a><div id="FlatGratingMetaParameters.__init__-def"><a name="L30"></a><tt class="py-lineno"> 30</tt> <a class="py-toggle" href="#" id="FlatGratingMetaParameters.__init__-toggle" onclick="return toggle('FlatGratingMetaParameters.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def< [...]
+</div><div id="FlatGratingMetaParameters.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="FlatGratingMetaParameters.__init__-expanded"><a name="L31"></a><tt class="py-lineno"> 31</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">contrast</tt> <tt class="py-op">=</tt> <tt class="py-number">1.0</tt> </tt>
+<a name="L32"></a><tt class="py-lineno"> 32</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">orient</tt> <tt class="py-op">=</tt> <tt class="py-number">0.0</tt> </tt>
+<a name="L33"></a><tt class="py-lineno"> 33</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sf</tt> <tt class="py-op">=</tt> <tt class="py-number">0.01</tt> <tt class="py-comment"># cycles per pixel</tt> </tt>
+<a name="L34"></a><tt class="py-lineno"> 34</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">tf</tt> <tt class="py-op">=</tt> <tt class="py-number">1.0</tt> </tt>
+<a name="L35"></a><tt class="py-lineno"> 35</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">size_x</tt> <tt class="py-op">=</tt> <tt class="py-number">200.0</tt> </tt>
+<a name="L36"></a><tt class="py-lineno"> 36</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">size_y</tt> <tt class="py-op">=</tt> <tt class="py-number">200.0</tt> </tt>
+<a name="L37"></a><tt class="py-lineno"> 37</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">center_x</tt> <tt class="py-op">=</tt> <tt class="py-number">320.0</tt> </tt>
+<a name="L38"></a><tt class="py-lineno"> 38</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">center_y</tt> <tt class="py-op">=</tt> <tt class="py-number">240.0</tt> </tt>
+<a name="L39"></a><tt class="py-lineno"> 39</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">pre_stim_sec</tt> <tt class="py-op">=</tt> <tt class="py-number">1.0</tt> </tt>
+<a name="L40"></a><tt class="py-lineno"> 40</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stim_sec</tt> <tt class="py-op">=</tt> <tt class="py-number">2.0</tt> </tt>
+<a name="L41"></a><tt class="py-lineno"> 41</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">post_stim_sec</tt> <tt class="py-op">=</tt> <tt class="py-number">1.0</tt> </tt>
+</div></div><a name="L42"></a><tt class="py-lineno"> 42</tt>  <tt class="py-line">         </tt>
+<a name="FlatGratingControlFrame"></a><div id="FlatGratingControlFrame-def"><a name="L43"></a><tt class="py-lineno"> 43</tt> <a class="py-toggle" href="#" id="FlatGratingControlFrame-toggle" onclick="return toggle('FlatGratingControlFrame');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame-class.html">FlatGratingControlFrame</a><tt class="py-op">(</tt><tt class="py-base-class">client_utils</ [...]
+</div><div id="FlatGratingControlFrame-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="FlatGratingControlFrame-expanded"><a name="L44"></a><tt class="py-lineno"> 44</tt>  <tt class="py-line">    <tt id="link-14" class="py-name"><a title="VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.title
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.title
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.title
+VisionEgg.PyroApps.GridGUI.GridControlFrame.title
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.title
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.title
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.title
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.title" class="py-name" href="#" onclick="return doclink('link-14', 'title', 'link-13');">title</a></tt> <tt class="py-op">=</tt> <tt class="py-string">"Grating (2D) Experiment"</tt> </tt>
+<a name="FlatGratingControlFrame.__init__"></a><div id="FlatGratingControlFrame.__init__-def"><a name="L45"></a><tt class="py-lineno"> 45</tt> <a class="py-toggle" href="#" id="FlatGratingControlFrame.__init__-toggle" onclick="return toggle('FlatGratingControlFrame.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt clas [...]
+</div><div id="FlatGratingControlFrame.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="FlatGratingControlFrame.__init__-expanded"><a name="L46"></a><tt class="py-lineno"> 46</tt>  <tt class="py-line">        <tt class="py-name">client_utils</tt><tt class="py-op">.</tt><tt id="link-15" class="py-name" targets="Class VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame=VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html"><a title="VisionEg [...]
+VisionEgg.Configuration.Config.__init__
+VisionEgg.Core.FixationSpot.__init__
+VisionEgg.Core.FrameTimer.__init__
+VisionEgg.Core.ModelView.__init__
+VisionEgg.Core.OrthographicProjection.__init__
+VisionEgg.Core.OrthographicProjectionNoZClip.__init__
+VisionEgg.Core.PerspectiveProjection.__init__
+VisionEgg.Core.Projection.__init__
+VisionEgg.Core.ProjectionBaseClass.__init__
+VisionEgg.Core.Screen.__init__
+VisionEgg.Core.SimplePerspectiveProjection.__init__
+VisionEgg.Core.Stimulus.__init__
+VisionEgg.Core.Viewport.__init__
+VisionEgg.Daq.Channel.__init__
+VisionEgg.Daq.DaqMode.__init__
+VisionEgg.Daq.Device.__init__
+VisionEgg.Daq.Functionality.__init__
+VisionEgg.Daq.SignalType.__init__
+VisionEgg.DaqKeyboard.KeyboardTriggerInController.__init__
+VisionEgg.DaqLPT.LPTChannel.__init__
+VisionEgg.DaqLPT.LPTDevice.__init__
+VisionEgg.DaqLPT.LPTTriggerInController.__init__
+VisionEgg.DaqLPT.LPTTriggerOutController.__init__
+VisionEgg.Deprecated.Message.__init__
+VisionEgg.Dots.DotArea2D.__init__
+VisionEgg.FlowControl.ConstantController.__init__
+VisionEgg.FlowControl.Controller.__init__
+VisionEgg.FlowControl.EncapsulatedController.__init__
+VisionEgg.FlowControl.EvalStringController.__init__
+VisionEgg.FlowControl.ExecStringController.__init__
+VisionEgg.FlowControl.FunctionController.__init__
+VisionEgg.FlowControl.Presentation.__init__
+VisionEgg.GLTrace.Wrapper.__init__
+VisionEgg.GUI.AppWindow.__init__
+VisionEgg.GUI.GetKeypressDialog.__init__
+VisionEgg.GUI.GraphicsConfigurationWindow.__init__
+VisionEgg.GUI.InfoFrame.__init__
+VisionEgg.GUI.ProgressBar.__init__
+VisionEgg.GUI.ToplevelDialog.__init__
+VisionEgg.Gratings.SinGrating2D.__init__
+VisionEgg.Gratings.SinGrating3D.__init__
+VisionEgg.MoreStimuli.Arrow.__init__
+VisionEgg.MoreStimuli.FilledCircle.__init__
+VisionEgg.MoreStimuli.Rectangle3D.__init__
+VisionEgg.MoreStimuli.Target2D.__init__
+VisionEgg.ParameterTypes.AnyOf.__init__
+VisionEgg.ParameterTypes.Instance.__init__
+VisionEgg.ParameterTypes.Sequence.__init__
+VisionEgg.ParameterTypes.SubClass.__init__
+VisionEgg.PyroApps.AST_ext.AST_Visitor.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalMetaParameters.__init__
+VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.__init__
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.__init__
+VisionEgg.PyroApps.DropinGUI.DropinMetaParameters.__init__
+VisionEgg.PyroApps.DropinServer.DropinMetaController.__init__
+VisionEgg.PyroApps.EPhysGUI.AppWindow.__init__
+VisionEgg.PyroApps.EPhysGUI.BarButton.__init__
+VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase.__init__
+VisionEgg.PyroApps.EPhysGUI.GammaFrame.__init__
+VisionEgg.PyroApps.EPhysGUI.ImageSequenceLauncher.__init__
+VisionEgg.PyroApps.EPhysGUI.Loop.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopContainedObject.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopParamDialog.__init__
+VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.__init__
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.__init__
+VisionEgg.PyroApps.EPhysServer.EPhysServer.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingMetaParameters.__init__
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.GridGUI.GridControlFrame.__init__
+VisionEgg.PyroApps.GridGUI.GridMetaParameters.__init__
+VisionEgg.PyroApps.GridServer.GridMetaController.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetMetaParameters.__init__
+VisionEgg.PyroApps.MouseTargetServer.MousePositionController.__init__
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetOrientationController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetPositionController.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.CallbackEntry.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionParameters.__init__
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingMetaParameters.__init__
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumMetaParameters.__init__
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.__init__
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.__init__
+VisionEgg.PyroApps.TargetGUI.TargetMetaParameters.__init__
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.__init__
+VisionEgg.PyroClient.PyroClient.__init__
+VisionEgg.PyroHelpers.PyroConstantController.__init__
+VisionEgg.PyroHelpers.PyroEncapsulatedController.__init__
+VisionEgg.PyroHelpers.PyroEvalStringController.__init__
+VisionEgg.PyroHelpers.PyroExecStringController.__init__
+VisionEgg.PyroHelpers.PyroListenController.__init__
+VisionEgg.PyroHelpers.PyroLocalDictController.__init__
+VisionEgg.PyroHelpers.PyroServer.__init__
+VisionEgg.QuickTime.MovieTexture.__init__
+VisionEgg.ResponseControl.KeyboardResponseController.__init__
+VisionEgg.ResponseControl.ResponseController.__init__
+VisionEgg.SphereMap.AzElGrid.__init__
+VisionEgg.SphereMap.SphereGrating.__init__
+VisionEgg.SphereMap.SphereMap.__init__
+VisionEgg.SphereMap.SphereWindow.__init__
+VisionEgg.TCPController.SocketListenController.__init__
+VisionEgg.TCPController.TCPController.__init__
+VisionEgg.TCPController.TCPServer.__init__
+VisionEgg.Text.BitmapText.__init__
+VisionEgg.Text.GlutTextBase.__init__
+VisionEgg.Text.StrokeText.__init__
+VisionEgg.Text.Text.__init__
+VisionEgg.Textures.FixationCross.__init__
+VisionEgg.Textures.Mask2D.__init__
+VisionEgg.Textures.SpinningDrum.__init__
+VisionEgg.Textures.Texture.__init__
+VisionEgg.Textures.TextureFromFile.__init__
+VisionEgg.Textures.TextureObject.__init__
+VisionEgg.Textures.TextureStimulusBaseClass.__init__
+VisionEgg.ThreeDeeMath.TransformMatrix.__init__
+VisionEgg.WrappedText.WrappedText.__init__
+VisionEgg.qtmovie.Movie.__init__
+VisionEgg.qtmovie.Rect.__init__" class="py-name" href="#" onclick="return doclink('link-16', '__init__', 'link-16');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> </tt>
+<a name="L47"></a><tt class="py-lineno"> 47</tt>  <tt class="py-line">                                                   <tt class="py-name">master</tt><tt class="py-op">,</tt> </tt>
+<a name="L48"></a><tt class="py-lineno"> 48</tt>  <tt class="py-line">                                                   <tt class="py-name">suppress_go_buttons</tt><tt class="py-op">,</tt> </tt>
+<a name="L49"></a><tt class="py-lineno"> 49</tt>  <tt class="py-line">                                                   <tt id="link-17" class="py-name"><a title="VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame" class="py-name" href="#" onclick="return doclink('link-17', 'FlatGratingControlFrame', 'link-11');">FlatGratingControlFrame</a></tt><tt class="py-op">.</tt><tt id="link-18" class="py-name"><a title="VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.title
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.title
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.title
+VisionEgg.PyroApps.GridGUI.GridControlFrame.title
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.title
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.title
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.title
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.title" class="py-name" href="#" onclick="return doclink('link-18', 'title', 'link-13');">title</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L50"></a><tt class="py-lineno"> 50</tt>  <tt class="py-line">                                                   <tt id="link-19" class="py-name" targets="Class VisionEgg.PyroApps.FlatGratingGUI.FlatGratingMetaParameters=VisionEgg.PyroApps.FlatGratingGUI.FlatGratingMetaParameters-class.html"><a title="VisionEgg.PyroApps.FlatGratingGUI.FlatGratingMetaParameters" class="py-name" href="#" onclick="return doclink('link-19', 'FlatGratingMetaParameters', 'link-19');">FlatGratingMetaPar [...]
+<a name="L51"></a><tt class="py-lineno"> 51</tt>  <tt class="py-line">                                                   <tt class="py-op">**</tt><tt class="py-name">kw</tt><tt class="py-op">)</tt> </tt>
+<a name="L52"></a><tt class="py-lineno"> 52</tt>  <tt class="py-line"> </tt>
+<a name="L53"></a><tt class="py-lineno"> 53</tt>  <tt class="py-line">        <tt class="py-name">param_frame</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">param_frame</tt> <tt class="py-comment"># shorthand for self.param_frame created in base class</tt> </tt>
+<a name="L54"></a><tt class="py-lineno"> 54</tt>  <tt class="py-line"> </tt>
+<a name="L55"></a><tt class="py-lineno"> 55</tt>  <tt class="py-line">        <tt class="py-comment"># Allow columns to expand</tt> </tt>
+<a name="L56"></a><tt class="py-lineno"> 56</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">param_frame</tt><tt class="py-op">.</tt><tt class="py-name">columnconfigure</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">,</tt><tt class="py-name">weight</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="L57"></a><tt class="py-lineno"> 57</tt>  <tt class="py-line">        <tt class="py-name">param_frame</tt><tt class="py-op">.</tt><tt class="py-name">columnconfigure</tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">,</tt><tt class="py-name">weight</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="L58"></a><tt class="py-lineno"> 58</tt>  <tt class="py-line">         </tt>
+<a name="L59"></a><tt class="py-lineno"> 59</tt>  <tt class="py-line">        <tt class="py-name">pf_row</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L60"></a><tt class="py-lineno"> 60</tt>  <tt class="py-line">        <tt id="link-20" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-20', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">param_frame</tt><tt class="py-op">,</tt><tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Contrast:"</tt><tt class="py-op">)< [...]
+<a name="L61"></a><tt class="py-lineno"> 61</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">contrast_tk_var</tt> <tt class="py-op">=</tt> <tt id="link-21" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-21', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">DoubleVar</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L62"></a><tt class="py-lineno"> 62</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">contrast_tk_var</tt><tt class="py-op">.</tt><tt id="link-22" class="py-name" targets="Method VisionEgg.ClassWithParameters.set()=VisionEgg.ClassWithParameters-class.html#set"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-22', 'set', 'link-22');">set</a></tt><tt class="py-op">(</tt><tt c [...]
+<a name="L63"></a><tt class="py-lineno"> 63</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-23" class="py-name" targets="Method VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.make_callback_entry()=VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#make_callback_entry"><a title="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.make_callback_entry" class="py-name" href="#" onclick="return doclink('link-23', 'make [...]
+<a name="L64"></a><tt class="py-lineno"> 64</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">loopable_variables</tt><tt class="py-op">[</tt><tt class="py-string">"Contrast"</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-string">"contrast"</tt><tt class="py-op">,</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">contrast_tk_var</tt><tt class="py-op">)</tt> </tt>
+<a name="L65"></a><tt class="py-lineno"> 65</tt>  <tt class="py-line"> </tt>
+<a name="L66"></a><tt class="py-lineno"> 66</tt>  <tt class="py-line">        <tt class="py-name">pf_row</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L67"></a><tt class="py-lineno"> 67</tt>  <tt class="py-line">        <tt id="link-24" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-24', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">param_frame</tt><tt class="py-op">,</tt><tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Orientation (deg):"</tt><tt class=" [...]
+<a name="L68"></a><tt class="py-lineno"> 68</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">orient_tk_var</tt> <tt class="py-op">=</tt> <tt id="link-25" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-25', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">DoubleVar</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L69"></a><tt class="py-lineno"> 69</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">orient_tk_var</tt><tt class="py-op">.</tt><tt id="link-26" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-26', 'set', 'link-22');">set</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op [...]
+<a name="L70"></a><tt class="py-lineno"> 70</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-27" class="py-name"><a title="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.make_callback_entry" class="py-name" href="#" onclick="return doclink('link-27', 'make_callback_entry', 'link-23');">make_callback_entry</a></tt><tt class="py-op">(</tt><tt class="py-name">textvariable</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt c [...]
+<a name="L71"></a><tt class="py-lineno"> 71</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">loopable_variables</tt><tt class="py-op">[</tt><tt class="py-string">"Orientation"</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-string">"orient"</tt><tt class="py-op">,</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">orient_tk_var</tt><tt class="py-op">)</tt> </tt>
+<a name="L72"></a><tt class="py-lineno"> 72</tt>  <tt class="py-line">         </tt>
+<a name="L73"></a><tt class="py-lineno"> 73</tt>  <tt class="py-line">        <tt class="py-name">pf_row</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L74"></a><tt class="py-lineno"> 74</tt>  <tt class="py-line">        <tt id="link-28" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-28', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">param_frame</tt><tt class="py-op">,</tt><tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Spatial frequency (Cpp):"</tt><tt c [...]
+<a name="L75"></a><tt class="py-lineno"> 75</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sf_tk_var</tt> <tt class="py-op">=</tt> <tt id="link-29" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-29', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">DoubleVar</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L76"></a><tt class="py-lineno"> 76</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sf_tk_var</tt><tt class="py-op">.</tt><tt id="link-30" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-30', 'set', 'link-22');">set</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op">.< [...]
+<a name="L77"></a><tt class="py-lineno"> 77</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-31" class="py-name"><a title="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.make_callback_entry" class="py-name" href="#" onclick="return doclink('link-31', 'make_callback_entry', 'link-23');">make_callback_entry</a></tt><tt class="py-op">(</tt><tt class="py-name">textvariable</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt c [...]
+<a name="L78"></a><tt class="py-lineno"> 78</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">loopable_variables</tt><tt class="py-op">[</tt><tt class="py-string">"Spatial frequency"</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-string">"sf"</tt><tt class="py-op">,</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sf_tk_var</tt><tt class="py-op">)</tt> </tt>
+<a name="L79"></a><tt class="py-lineno"> 79</tt>  <tt class="py-line">         </tt>
+<a name="L80"></a><tt class="py-lineno"> 80</tt>  <tt class="py-line">        <tt class="py-name">pf_row</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L81"></a><tt class="py-lineno"> 81</tt>  <tt class="py-line">        <tt id="link-32" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-32', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">param_frame</tt><tt class="py-op">,</tt><tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Temporal frequency (Hz):"</tt><tt c [...]
+<a name="L82"></a><tt class="py-lineno"> 82</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">tf_tk_var</tt> <tt class="py-op">=</tt> <tt id="link-33" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-33', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">DoubleVar</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L83"></a><tt class="py-lineno"> 83</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">tf_tk_var</tt><tt class="py-op">.</tt><tt id="link-34" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-34', 'set', 'link-22');">set</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op">.< [...]
+<a name="L84"></a><tt class="py-lineno"> 84</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-35" class="py-name"><a title="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.make_callback_entry" class="py-name" href="#" onclick="return doclink('link-35', 'make_callback_entry', 'link-23');">make_callback_entry</a></tt><tt class="py-op">(</tt><tt class="py-name">textvariable</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt c [...]
+<a name="L85"></a><tt class="py-lineno"> 85</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">loopable_variables</tt><tt class="py-op">[</tt><tt class="py-string">"Temporal frequency"</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-string">"tf"</tt><tt class="py-op">,</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">tf_tk_var</tt><tt class="py-op">)</tt> </tt>
+<a name="L86"></a><tt class="py-lineno"> 86</tt>  <tt class="py-line">         </tt>
+<a name="L87"></a><tt class="py-lineno"> 87</tt>  <tt class="py-line">        <tt class="py-name">pf_row</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L88"></a><tt class="py-lineno"> 88</tt>  <tt class="py-line">        <tt id="link-36" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-36', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">param_frame</tt><tt class="py-op">,</tt><tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Size X (pixels):"</tt><tt class="py [...]
+<a name="L89"></a><tt class="py-lineno"> 89</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">size_x_tk_var</tt> <tt class="py-op">=</tt> <tt id="link-37" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-37', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">DoubleVar</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L90"></a><tt class="py-lineno"> 90</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">size_x_tk_var</tt><tt class="py-op">.</tt><tt id="link-38" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-38', 'set', 'link-22');">set</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op [...]
+<a name="L91"></a><tt class="py-lineno"> 91</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-39" class="py-name"><a title="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.make_callback_entry" class="py-name" href="#" onclick="return doclink('link-39', 'make_callback_entry', 'link-23');">make_callback_entry</a></tt><tt class="py-op">(</tt><tt class="py-name">textvariable</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt c [...]
+<a name="L92"></a><tt class="py-lineno"> 92</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">loopable_variables</tt><tt class="py-op">[</tt><tt class="py-string">"Size X"</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-string">"size_x"</tt><tt class="py-op">,</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">size_x_tk_var</tt><tt class="py-op">)</tt> </tt>
+<a name="L93"></a><tt class="py-lineno"> 93</tt>  <tt class="py-line">         </tt>
+<a name="L94"></a><tt class="py-lineno"> 94</tt>  <tt class="py-line">        <tt class="py-name">pf_row</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L95"></a><tt class="py-lineno"> 95</tt>  <tt class="py-line">        <tt id="link-40" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-40', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">param_frame</tt><tt class="py-op">,</tt><tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Size Y (pixels):"</tt><tt class="py [...]
+<a name="L96"></a><tt class="py-lineno"> 96</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">size_y_tk_var</tt> <tt class="py-op">=</tt> <tt id="link-41" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-41', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">DoubleVar</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L97"></a><tt class="py-lineno"> 97</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">size_y_tk_var</tt><tt class="py-op">.</tt><tt id="link-42" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-42', 'set', 'link-22');">set</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op [...]
+<a name="L98"></a><tt class="py-lineno"> 98</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-43" class="py-name"><a title="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.make_callback_entry" class="py-name" href="#" onclick="return doclink('link-43', 'make_callback_entry', 'link-23');">make_callback_entry</a></tt><tt class="py-op">(</tt><tt class="py-name">textvariable</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt c [...]
+<a name="L99"></a><tt class="py-lineno"> 99</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">loopable_variables</tt><tt class="py-op">[</tt><tt class="py-string">"Size Y"</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-string">"size_y"</tt><tt class="py-op">,</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">size_y_tk_var</tt><tt class="py-op">)</tt> </tt>
+<a name="L100"></a><tt class="py-lineno">100</tt>  <tt class="py-line">         </tt>
+<a name="L101"></a><tt class="py-lineno">101</tt>  <tt class="py-line">        <tt class="py-name">pf_row</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L102"></a><tt class="py-lineno">102</tt>  <tt class="py-line">        <tt id="link-44" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-44', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">param_frame</tt><tt class="py-op">,</tt><tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Center X (pixels):"</tt><tt class= [...]
+<a name="L103"></a><tt class="py-lineno">103</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">center_x_tk_var</tt> <tt class="py-op">=</tt> <tt id="link-45" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-45', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">DoubleVar</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L104"></a><tt class="py-lineno">104</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">center_x_tk_var</tt><tt class="py-op">.</tt><tt id="link-46" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-46', 'set', 'link-22');">set</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py [...]
+<a name="L105"></a><tt class="py-lineno">105</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-47" class="py-name"><a title="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.make_callback_entry" class="py-name" href="#" onclick="return doclink('link-47', 'make_callback_entry', 'link-23');">make_callback_entry</a></tt><tt class="py-op">(</tt><tt class="py-name">textvariable</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt  [...]
+<a name="L106"></a><tt class="py-lineno">106</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">loopable_variables</tt><tt class="py-op">[</tt><tt class="py-string">"Center X"</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-string">"center_x"</tt><tt class="py-op">,</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">center_x_tk_var</tt><tt class="py-op">)</tt> </tt>
+<a name="L107"></a><tt class="py-lineno">107</tt>  <tt class="py-line">         </tt>
+<a name="L108"></a><tt class="py-lineno">108</tt>  <tt class="py-line">        <tt class="py-name">pf_row</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L109"></a><tt class="py-lineno">109</tt>  <tt class="py-line">        <tt id="link-48" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-48', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">param_frame</tt><tt class="py-op">,</tt><tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Center Y (pixels):"</tt><tt class= [...]
+<a name="L110"></a><tt class="py-lineno">110</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">center_y_tk_var</tt> <tt class="py-op">=</tt> <tt id="link-49" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-49', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">DoubleVar</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L111"></a><tt class="py-lineno">111</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">center_y_tk_var</tt><tt class="py-op">.</tt><tt id="link-50" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-50', 'set', 'link-22');">set</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py [...]
+<a name="L112"></a><tt class="py-lineno">112</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-51" class="py-name"><a title="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.make_callback_entry" class="py-name" href="#" onclick="return doclink('link-51', 'make_callback_entry', 'link-23');">make_callback_entry</a></tt><tt class="py-op">(</tt><tt class="py-name">textvariable</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt  [...]
+<a name="L113"></a><tt class="py-lineno">113</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">loopable_variables</tt><tt class="py-op">[</tt><tt class="py-string">"Center Y"</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-string">"center_y"</tt><tt class="py-op">,</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">center_y_tk_var</tt><tt class="py-op">)</tt> </tt>
+<a name="L114"></a><tt class="py-lineno">114</tt>  <tt class="py-line">         </tt>
+<a name="L115"></a><tt class="py-lineno">115</tt>  <tt class="py-line">        <tt class="py-name">pf_row</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L116"></a><tt class="py-lineno">116</tt>  <tt class="py-line">        <tt id="link-52" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-52', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">param_frame</tt><tt class="py-op">,</tt><tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Pre stimulus duration (sec):"</tt> [...]
+<a name="L117"></a><tt class="py-lineno">117</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">prestim_dur_tk_var</tt> <tt class="py-op">=</tt> <tt id="link-53" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-53', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">DoubleVar</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L118"></a><tt class="py-lineno">118</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">prestim_dur_tk_var</tt><tt class="py-op">.</tt><tt id="link-54" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-54', 'set', 'link-22');">set</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class= [...]
+<a name="L119"></a><tt class="py-lineno">119</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-55" class="py-name"><a title="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.make_callback_entry" class="py-name" href="#" onclick="return doclink('link-55', 'make_callback_entry', 'link-23');">make_callback_entry</a></tt><tt class="py-op">(</tt><tt class="py-name">textvariable</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt  [...]
+<a name="L120"></a><tt class="py-lineno">120</tt>  <tt class="py-line">         </tt>
+<a name="L121"></a><tt class="py-lineno">121</tt>  <tt class="py-line">        <tt class="py-name">pf_row</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L122"></a><tt class="py-lineno">122</tt>  <tt class="py-line">        <tt id="link-56" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-56', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">param_frame</tt><tt class="py-op">,</tt><tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Stimulus duration (sec):"</tt><tt  [...]
+<a name="L123"></a><tt class="py-lineno">123</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stim_dur_tk_var</tt> <tt class="py-op">=</tt> <tt id="link-57" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-57', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">DoubleVar</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L124"></a><tt class="py-lineno">124</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stim_dur_tk_var</tt><tt class="py-op">.</tt><tt id="link-58" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-58', 'set', 'link-22');">set</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py [...]
+<a name="L125"></a><tt class="py-lineno">125</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-59" class="py-name"><a title="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.make_callback_entry" class="py-name" href="#" onclick="return doclink('link-59', 'make_callback_entry', 'link-23');">make_callback_entry</a></tt><tt class="py-op">(</tt><tt class="py-name">textvariable</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt  [...]
+<a name="L126"></a><tt class="py-lineno">126</tt>  <tt class="py-line">         </tt>
+<a name="L127"></a><tt class="py-lineno">127</tt>  <tt class="py-line">        <tt class="py-name">pf_row</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L128"></a><tt class="py-lineno">128</tt>  <tt class="py-line">        <tt id="link-60" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-60', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">param_frame</tt><tt class="py-op">,</tt><tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Post stimulus duration (sec):"</tt [...]
+<a name="L129"></a><tt class="py-lineno">129</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">poststim_dur_tk_var</tt> <tt class="py-op">=</tt> <tt id="link-61" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-61', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">DoubleVar</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L130"></a><tt class="py-lineno">130</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">poststim_dur_tk_var</tt><tt class="py-op">.</tt><tt id="link-62" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-62', 'set', 'link-22');">set</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class [...]
+<a name="L131"></a><tt class="py-lineno">131</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-63" class="py-name"><a title="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.make_callback_entry" class="py-name" href="#" onclick="return doclink('link-63', 'make_callback_entry', 'link-23');">make_callback_entry</a></tt><tt class="py-op">(</tt><tt class="py-name">textvariable</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt  [...]
+</div><a name="L132"></a><tt class="py-lineno">132</tt>  <tt class="py-line"> </tt>
+<a name="FlatGratingControlFrame.get_shortname"></a><div id="FlatGratingControlFrame.get_shortname-def"><a name="L133"></a><tt class="py-lineno">133</tt> <a class="py-toggle" href="#" id="FlatGratingControlFrame.get_shortname-toggle" onclick="return toggle('FlatGratingControlFrame.get_shortname');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame-class.html#get_shortname">get_shortname</a>< [...]
+</div><div id="FlatGratingControlFrame.get_shortname-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="FlatGratingControlFrame.get_shortname-expanded"><a name="L134"></a><tt class="py-lineno">134</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-string">"flat_grating"</tt> </tt>
+</div><a name="L135"></a><tt class="py-lineno">135</tt>  <tt class="py-line"> </tt>
+<a name="FlatGratingControlFrame.update_tk_vars"></a><div id="FlatGratingControlFrame.update_tk_vars-def"><a name="L136"></a><tt class="py-lineno">136</tt> <a class="py-toggle" href="#" id="FlatGratingControlFrame.update_tk_vars-toggle" onclick="return toggle('FlatGratingControlFrame.update_tk_vars');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame-class.html#update_tk_vars">update_tk_var [...]
+</div><div id="FlatGratingControlFrame.update_tk_vars-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="FlatGratingControlFrame.update_tk_vars-expanded"><a name="L137"></a><tt class="py-lineno">137</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">contrast_tk_var</tt><tt class="py-op">.</tt><tt id="link-64" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="retur [...]
+<a name="L138"></a><tt class="py-lineno">138</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">orient_tk_var</tt><tt class="py-op">.</tt><tt id="link-65" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-65', 'set', 'link-22');">set</a></tt><tt class="py-op">(</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py- [...]
+<a name="L139"></a><tt class="py-lineno">139</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sf_tk_var</tt><tt class="py-op">.</tt><tt id="link-66" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-66', 'set', 'link-22');">set</a></tt><tt class="py-op">(</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op"> [...]
+<a name="L140"></a><tt class="py-lineno">140</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">tf_tk_var</tt><tt class="py-op">.</tt><tt id="link-67" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-67', 'set', 'link-22');">set</a></tt><tt class="py-op">(</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op"> [...]
+<a name="L141"></a><tt class="py-lineno">141</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">size_x_tk_var</tt><tt class="py-op">.</tt><tt id="link-68" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-68', 'set', 'link-22');">set</a></tt><tt class="py-op">(</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py- [...]
+<a name="L142"></a><tt class="py-lineno">142</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">size_y_tk_var</tt><tt class="py-op">.</tt><tt id="link-69" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-69', 'set', 'link-22');">set</a></tt><tt class="py-op">(</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py- [...]
+<a name="L143"></a><tt class="py-lineno">143</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">center_x_tk_var</tt><tt class="py-op">.</tt><tt id="link-70" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-70', 'set', 'link-22');">set</a></tt><tt class="py-op">(</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="p [...]
+<a name="L144"></a><tt class="py-lineno">144</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">center_y_tk_var</tt><tt class="py-op">.</tt><tt id="link-71" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-71', 'set', 'link-22');">set</a></tt><tt class="py-op">(</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="p [...]
+<a name="L145"></a><tt class="py-lineno">145</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">prestim_dur_tk_var</tt><tt class="py-op">.</tt><tt id="link-72" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-72', 'set', 'link-22');">set</a></tt><tt class="py-op">(</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class [...]
+<a name="L146"></a><tt class="py-lineno">146</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stim_dur_tk_var</tt><tt class="py-op">.</tt><tt id="link-73" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-73', 'set', 'link-22');">set</a></tt><tt class="py-op">(</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="p [...]
+<a name="L147"></a><tt class="py-lineno">147</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">poststim_dur_tk_var</tt><tt class="py-op">.</tt><tt id="link-74" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-74', 'set', 'link-22');">set</a></tt><tt class="py-op">(</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt clas [...]
+</div><a name="L148"></a><tt class="py-lineno">148</tt>  <tt class="py-line">     </tt>
+<a name="FlatGratingControlFrame.send_values"></a><div id="FlatGratingControlFrame.send_values-def"><a name="L149"></a><tt class="py-lineno">149</tt> <a class="py-toggle" href="#" id="FlatGratingControlFrame.send_values-toggle" onclick="return toggle('FlatGratingControlFrame.send_values');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame-class.html#send_values">send_values</a><tt class="py [...]
+</div><div id="FlatGratingControlFrame.send_values-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="FlatGratingControlFrame.send_values-expanded"><a name="L150"></a><tt class="py-lineno">150</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op">.</tt><tt class="py-name">contrast</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-n [...]
+<a name="L151"></a><tt class="py-lineno">151</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op">.</tt><tt class="py-name">orient</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">orient_tk_var</tt><tt class="py-op">.</tt><tt id="link-76" class="py-name"><a title="VisionEgg.PyroClient.PyroClient.get" class="py-name" href="#" onclick="return doclink [...]
+<a name="L152"></a><tt class="py-lineno">152</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op">.</tt><tt class="py-name">sf</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sf_tk_var</tt><tt class="py-op">.</tt><tt id="link-77" class="py-name"><a title="VisionEgg.PyroClient.PyroClient.get" class="py-name" href="#" onclick="return doclink('link-7 [...]
+<a name="L153"></a><tt class="py-lineno">153</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op">.</tt><tt class="py-name">tf</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">tf_tk_var</tt><tt class="py-op">.</tt><tt id="link-78" class="py-name"><a title="VisionEgg.PyroClient.PyroClient.get" class="py-name" href="#" onclick="return doclink('link-7 [...]
+<a name="L154"></a><tt class="py-lineno">154</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op">.</tt><tt class="py-name">size_x</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">size_x_tk_var</tt><tt class="py-op">.</tt><tt id="link-79" class="py-name"><a title="VisionEgg.PyroClient.PyroClient.get" class="py-name" href="#" onclick="return doclink [...]
+<a name="L155"></a><tt class="py-lineno">155</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op">.</tt><tt class="py-name">size_y</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">size_y_tk_var</tt><tt class="py-op">.</tt><tt id="link-80" class="py-name"><a title="VisionEgg.PyroClient.PyroClient.get" class="py-name" href="#" onclick="return doclink [...]
+<a name="L156"></a><tt class="py-lineno">156</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op">.</tt><tt class="py-name">center_x</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">center_x_tk_var</tt><tt class="py-op">.</tt><tt id="link-81" class="py-name"><a title="VisionEgg.PyroClient.PyroClient.get" class="py-name" href="#" onclick="return doc [...]
+<a name="L157"></a><tt class="py-lineno">157</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op">.</tt><tt class="py-name">center_y</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">center_y_tk_var</tt><tt class="py-op">.</tt><tt id="link-82" class="py-name"><a title="VisionEgg.PyroClient.PyroClient.get" class="py-name" href="#" onclick="return doc [...]
+<a name="L158"></a><tt class="py-lineno">158</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op">.</tt><tt class="py-name">pre_stim_sec</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">prestim_dur_tk_var</tt><tt class="py-op">.</tt><tt id="link-83" class="py-name"><a title="VisionEgg.PyroClient.PyroClient.get" class="py-name" href="#" onclick="ret [...]
+<a name="L159"></a><tt class="py-lineno">159</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op">.</tt><tt class="py-name">stim_sec</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stim_dur_tk_var</tt><tt class="py-op">.</tt><tt id="link-84" class="py-name"><a title="VisionEgg.PyroClient.PyroClient.get" class="py-name" href="#" onclick="return doc [...]
+<a name="L160"></a><tt class="py-lineno">160</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op">.</tt><tt class="py-name">post_stim_sec</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">poststim_dur_tk_var</tt><tt class="py-op">.</tt><tt id="link-85" class="py-name"><a title="VisionEgg.PyroClient.PyroClient.get" class="py-name" href="#" onclick="r [...]
+<a name="L161"></a><tt class="py-lineno">161</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">connected</tt><tt class="py-op">:</tt> </tt>
+<a name="L162"></a><tt class="py-lineno">162</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_controller</tt><tt class="py-op">.</tt><tt id="link-86" class="py-name" targets="Method VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.set_parameters()=VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController-class.html#set_parameters,Method VisionEgg.PyroApps.DropinServer.DropinMetaController.set_parameters()=VisionEgg [...]
+VisionEgg.PyroApps.DropinServer.DropinMetaController.set_parameters
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.set_parameters
+VisionEgg.PyroApps.GridServer.GridMetaController.set_parameters
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.set_parameters
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.set_parameters
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.set_parameters
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.set_parameters
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.set_parameters" class="py-name" href="#" onclick="return doclink('link-86', 'set_parameters', 'link-86');">set_parameters</a></tt><tt class="py-op">(</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt> <tt class="py-op">)</tt> </tt>
+</div><a name="L163"></a><tt class="py-lineno">163</tt>  <tt class="py-line"> </tt>
+<a name="FlatGratingControlFrame.get_duration_sec"></a><div id="FlatGratingControlFrame.get_duration_sec-def"><a name="L164"></a><tt class="py-lineno">164</tt> <a class="py-toggle" href="#" id="FlatGratingControlFrame.get_duration_sec-toggle" onclick="return toggle('FlatGratingControlFrame.get_duration_sec');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame-class.html#get_duration_sec">get [...]
+</div><div id="FlatGratingControlFrame.get_duration_sec-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="FlatGratingControlFrame.get_duration_sec-expanded"><a name="L165"></a><tt class="py-lineno">165</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op">.</tt><tt class="py-name">pre_stim_sec</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt>< [...]
+<a name="L166"></a><tt class="py-lineno">166</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op">.</tt><tt class="py-name">stim_sec</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stim_dur_tk_var</tt><tt class="py-op">.</tt><tt id="link-88" class="py-name"><a title="VisionEgg.PyroClient.PyroClient.get" class="py-name" href="#" onclick="return doc [...]
+<a name="L167"></a><tt class="py-lineno">167</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op">.</tt><tt class="py-name">post_stim_sec</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">poststim_dur_tk_var</tt><tt class="py-op">.</tt><tt id="link-89" class="py-name"><a title="VisionEgg.PyroClient.PyroClient.get" class="py-name" href="#" onclick="r [...]
+<a name="L168"></a><tt class="py-lineno">168</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op">.</tt><tt class="py-name">pre_stim_sec</tt> <tt class="py-op">+</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op">.</tt><tt class="py-name">stim_sec</tt> <tt class="py-op">+</tt> <tt class="py-name">self</tt>< [...]
+</div></div><a name="L169"></a><tt class="py-lineno">169</tt>  <tt class="py-line"> </tt>
+<a name="L170"></a><tt class="py-lineno">170</tt>  <tt class="py-line"><tt class="py-keyword">if</tt> <tt class="py-name">__name__</tt><tt class="py-op">==</tt><tt class="py-string">'__main__'</tt><tt class="py-op">:</tt> </tt>
+<a name="L171"></a><tt class="py-lineno">171</tt>  <tt class="py-line">    <tt class="py-name">frame</tt> <tt class="py-op">=</tt> <tt id="link-90" class="py-name"><a title="VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame" class="py-name" href="#" onclick="return doclink('link-90', 'FlatGratingControlFrame', 'link-11');">FlatGratingControlFrame</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L172"></a><tt class="py-lineno">172</tt>  <tt class="py-line">    <tt class="py-name">frame</tt><tt class="py-op">.</tt><tt class="py-name">pack</tt><tt class="py-op">(</tt><tt class="py-name">expand</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py-op">,</tt><tt class="py-name">fill</tt><tt class="py-op">=</tt><tt id="link-91" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-91', 'Tkinter', 'link-7');">T [...]
+<a name="L173"></a><tt class="py-lineno">173</tt>  <tt class="py-line">    <tt class="py-name">frame</tt><tt class="py-op">.</tt><tt class="py-name">winfo_toplevel</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-92" class="py-name"><a title="VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.title
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.title
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.title
+VisionEgg.PyroApps.GridGUI.GridControlFrame.title
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.title
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.title
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.title
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.title" class="py-name" href="#" onclick="return doclink('link-92', 'title', 'link-13');">title</a></tt><tt class="py-op">(</tt><tt class="py-string">"%s"</tt><tt class="py-op">%</tt><tt class="py-op">(</tt><tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">path</tt><tt class="py-op">.</tt><tt class="py-name">basename</tt><tt class="py-op">(</tt><tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">path</ [...]
+<a name="L174"></a><tt class="py-lineno">174</tt>  <tt class="py-line">    <tt class="py-name">frame</tt><tt class="py-op">.</tt><tt class="py-name">mainloop</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L175"></a><tt class="py-lineno">175</tt>  <tt class="py-line"> </tt><script type="text/javascript">
+<!--
+expandto(location.href);
+// -->
+</script>
+</pre>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:49 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame-class.html b/doc/reference/html/VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame-class.html
new file mode 100644
index 0000000..332946b
--- /dev/null
+++ b/doc/reference/html/VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame-class.html
@@ -0,0 +1,605 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.PyroApps-module.html">Package PyroApps</a> ::
+        <a href="VisionEgg.PyroApps.FlatGratingGUI-module.html">Module FlatGratingGUI</a> ::
+        Class FlatGratingControlFrame
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class FlatGratingControlFrame</h1><span class="codelink"><a href="VisionEgg.PyroApps.FlatGratingGUI-pysrc.html#FlatGratingControlFrame">source code</a></span><br /><br />
+<pre class="base-tree">
+      Tkinter.Misc --+                
+                     |                
+    Tkinter.BaseWidget --+            
+                         |            
+          Tkinter.Pack --+            
+                         |            
+         Tkinter.Place --+            
+                         |            
+          Tkinter.Grid --+            
+                         |            
+            Tkinter.Widget --+        
+                             |        
+                 Tkinter.Frame --+    
+                                 |    
+<a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html">EPhysGUIUtils.StimulusControlFrame</a> --+
+                                     |
+                                    <strong class="uidshort">FlatGratingControlFrame</strong>
+</pre>
+
+<hr />
+<!-- ==================== NESTED CLASSES ==================== -->
+<a name="section-NestedClasses"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Nested Classes</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>Tkinter.Misc</code></b>:
+      <code><a href="float-class.html">getdouble</a></code>,
+      <code><a href="int-class.html">getint</a></code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">master</span>=<span class="summary-sig-default">None</span>,
+        <span class="summary-sig-arg">suppress_go_buttons</span>=<span class="summary-sig-default">0</span>,
+        <span class="summary-sig-arg">**kw</span>)</span><br />
+      Construct a frame widget with the parent MASTER.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.FlatGratingGUI-pysrc.html#FlatGratingControlFrame.__init__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame-class.html#get_shortname" class="summary-sig-name">get_shortname</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      Used as basename for saving parameter files and other ID purposes</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.FlatGratingGUI-pysrc.html#FlatGratingControlFrame.get_shortname">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame-class.html#update_tk_vars" class="summary-sig-name">update_tk_vars</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      Update Tkinter variables with (new) values from meta_params</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.FlatGratingGUI-pysrc.html#FlatGratingControlFrame.update_tk_vars">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame-class.html#send_values" class="summary-sig-name">send_values</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">dummy_arg</span>=<span class="summary-sig-default">None</span>)</span><br />
+      Update meta_params variables with values from Tkinter fields</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.FlatGratingGUI-pysrc.html#FlatGratingControlFrame.send_values">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame-class.html#get_duration_sec" class="summary-sig-name">get_duration_sec</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      Calculate total duration in go loop</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.FlatGratingGUI-pysrc.html#FlatGratingControlFrame.get_duration_sec">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html">EPhysGUIUtils.StimulusControlFrame</a></code></b>:
+      <code><a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#connect">connect</a></code>,
+      <code><a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#get_loopable_variable_names">get_loopable_variable_names</a></code>,
+      <code><a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#get_matlab_string">get_matlab_string</a></code>,
+      <code><a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#get_parameters_as_m_strings">get_parameters_as_m_strings</a></code>,
+      <code><a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#get_parameters_as_py_strings">get_parameters_as_py_strings</a></code>,
+      <code><a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#get_parameters_dict">get_parameters_dict</a></code>,
+      <code><a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#go">go</a></code>,
+      <code><a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#make_callback_entry">make_callback_entry</a></code>,
+      <code><a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#quit_server">quit_server</a></code>,
+      <code><a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#set_loopable_variable">set_loopable_variable</a></code>,
+      <code><a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#set_param_dict">set_param_dict</a></code>,
+      <code><a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#set_parameters_dict">set_parameters_dict</a></code>,
+      <code><a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#standalone_connect">standalone_connect</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>Tkinter.BaseWidget</code></b>:
+      <code>destroy</code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>Tkinter.Misc</code></b>:
+      <code>__getitem__</code>,
+      <code>__setitem__</code>,
+      <code>__str__</code>,
+      <code>after</code>,
+      <code>after_cancel</code>,
+      <code>after_idle</code>,
+      <code>bbox</code>,
+      <code>bell</code>,
+      <code>bind</code>,
+      <code>bind_all</code>,
+      <code>bind_class</code>,
+      <code>bindtags</code>,
+      <code>cget</code>,
+      <code>clipboard_append</code>,
+      <code>clipboard_clear</code>,
+      <code>clipboard_get</code>,
+      <code>colormodel</code>,
+      <code>columnconfigure</code>,
+      <code>config</code>,
+      <code>configure</code>,
+      <code>deletecommand</code>,
+      <code>event_add</code>,
+      <code>event_delete</code>,
+      <code>event_generate</code>,
+      <code>event_info</code>,
+      <code>focus</code>,
+      <code>focus_displayof</code>,
+      <code>focus_force</code>,
+      <code>focus_get</code>,
+      <code>focus_lastfor</code>,
+      <code>focus_set</code>,
+      <code>getboolean</code>,
+      <code>getvar</code>,
+      <code>grab_current</code>,
+      <code>grab_release</code>,
+      <code>grab_set</code>,
+      <code>grab_set_global</code>,
+      <code>grab_status</code>,
+      <code>grid_bbox</code>,
+      <code>grid_columnconfigure</code>,
+      <code>grid_location</code>,
+      <code>grid_propagate</code>,
+      <code>grid_rowconfigure</code>,
+      <code>grid_size</code>,
+      <code>grid_slaves</code>,
+      <code>image_names</code>,
+      <code>image_types</code>,
+      <code>keys</code>,
+      <code>lift</code>,
+      <code>lower</code>,
+      <code>mainloop</code>,
+      <code>nametowidget</code>,
+      <code>option_add</code>,
+      <code>option_clear</code>,
+      <code>option_get</code>,
+      <code>option_readfile</code>,
+      <code>pack_propagate</code>,
+      <code>pack_slaves</code>,
+      <code>place_slaves</code>,
+      <code>propagate</code>,
+      <code>quit</code>,
+      <code>register</code>,
+      <code>rowconfigure</code>,
+      <code>selection_clear</code>,
+      <code>selection_get</code>,
+      <code>selection_handle</code>,
+      <code>selection_own</code>,
+      <code>selection_own_get</code>,
+      <code>send</code>,
+      <code>setvar</code>,
+      <code>size</code>,
+      <code>slaves</code>,
+      <code>tk_bisque</code>,
+      <code>tk_focusFollowsMouse</code>,
+      <code>tk_focusNext</code>,
+      <code>tk_focusPrev</code>,
+      <code>tk_menuBar</code>,
+      <code>tk_setPalette</code>,
+      <code>tk_strictMotif</code>,
+      <code>tkraise</code>,
+      <code>unbind</code>,
+      <code>unbind_all</code>,
+      <code>unbind_class</code>,
+      <code>update</code>,
+      <code>update_idletasks</code>,
+      <code>wait_variable</code>,
+      <code>wait_visibility</code>,
+      <code>wait_window</code>,
+      <code>waitvar</code>,
+      <code>winfo_atom</code>,
+      <code>winfo_atomname</code>,
+      <code>winfo_cells</code>,
+      <code>winfo_children</code>,
+      <code>winfo_class</code>,
+      <code>winfo_colormapfull</code>,
+      <code>winfo_containing</code>,
+      <code>winfo_depth</code>,
+      <code>winfo_exists</code>,
+      <code>winfo_fpixels</code>,
+      <code>winfo_geometry</code>,
+      <code>winfo_height</code>,
+      <code>winfo_id</code>,
+      <code>winfo_interps</code>,
+      <code>winfo_ismapped</code>,
+      <code>winfo_manager</code>,
+      <code>winfo_name</code>,
+      <code>winfo_parent</code>,
+      <code>winfo_pathname</code>,
+      <code>winfo_pixels</code>,
+      <code>winfo_pointerx</code>,
+      <code>winfo_pointerxy</code>,
+      <code>winfo_pointery</code>,
+      <code>winfo_reqheight</code>,
+      <code>winfo_reqwidth</code>,
+      <code>winfo_rgb</code>,
+      <code>winfo_rootx</code>,
+      <code>winfo_rooty</code>,
+      <code>winfo_screen</code>,
+      <code>winfo_screencells</code>,
+      <code>winfo_screendepth</code>,
+      <code>winfo_screenheight</code>,
+      <code>winfo_screenmmheight</code>,
+      <code>winfo_screenmmwidth</code>,
+      <code>winfo_screenvisual</code>,
+      <code>winfo_screenwidth</code>,
+      <code>winfo_server</code>,
+      <code>winfo_toplevel</code>,
+      <code>winfo_viewable</code>,
+      <code>winfo_visual</code>,
+      <code>winfo_visualid</code>,
+      <code>winfo_visualsavailable</code>,
+      <code>winfo_vrootheight</code>,
+      <code>winfo_vrootwidth</code>,
+      <code>winfo_vrootx</code>,
+      <code>winfo_vrooty</code>,
+      <code>winfo_width</code>,
+      <code>winfo_x</code>,
+      <code>winfo_y</code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>Tkinter.Pack</code></b>:
+      <code>forget</code>,
+      <code>info</code>,
+      <code>pack</code>,
+      <code>pack_configure</code>,
+      <code>pack_forget</code>,
+      <code>pack_info</code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>Tkinter.Place</code></b>:
+      <code>place</code>,
+      <code>place_configure</code>,
+      <code>place_forget</code>,
+      <code>place_info</code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>Tkinter.Grid</code></b>:
+      <code>grid</code>,
+      <code>grid_configure</code>,
+      <code>grid_forget</code>,
+      <code>grid_info</code>,
+      <code>grid_remove</code>,
+      <code>location</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Class Variables</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="title"></a><span class="summary-name">title</span> = <code title=""Grating (2D) Experiment"">"Grating (2D) Experiment"</code>
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>Tkinter.Misc</code></b>:
+      <code>_noarg_</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Method Details</span></td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">master</span>=<span class="sig-default">None</span>,
+        <span class="sig-arg">suppress_go_buttons</span>=<span class="sig-default">0</span>,
+        <span class="sig-arg">**kw</span>)</span>
+    <br /><em class="fname">(Constructor)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.PyroApps.FlatGratingGUI-pysrc.html#FlatGratingControlFrame.__init__">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Construct a frame widget with the parent MASTER.
+
+Valid resource names: background, bd, bg, borderwidth, class,
+colormap, container, cursor, height, highlightbackground,
+highlightcolor, highlightthickness, relief, takefocus, visual, width.
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#__init__">EPhysGUIUtils.StimulusControlFrame.__init__</a>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="get_shortname"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">get_shortname</span>(<span class="sig-arg">self</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.PyroApps.FlatGratingGUI-pysrc.html#FlatGratingControlFrame.get_shortname">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Used as basename for saving parameter files and other ID purposes
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#get_shortname">EPhysGUIUtils.StimulusControlFrame.get_shortname</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="update_tk_vars"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">update_tk_vars</span>(<span class="sig-arg">self</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.PyroApps.FlatGratingGUI-pysrc.html#FlatGratingControlFrame.update_tk_vars">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Update Tkinter variables with (new) values from meta_params
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#update_tk_vars">EPhysGUIUtils.StimulusControlFrame.update_tk_vars</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="send_values"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">send_values</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">dummy_arg</span>=<span class="sig-default">None</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.PyroApps.FlatGratingGUI-pysrc.html#FlatGratingControlFrame.send_values">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Update meta_params variables with values from Tkinter fields
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#send_values">EPhysGUIUtils.StimulusControlFrame.send_values</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="get_duration_sec"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">get_duration_sec</span>(<span class="sig-arg">self</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.PyroApps.FlatGratingGUI-pysrc.html#FlatGratingControlFrame.get_duration_sec">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Calculate total duration in go loop
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#get_duration_sec">EPhysGUIUtils.StimulusControlFrame.get_duration_sec</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.PyroApps.FlatGratingGUI.FlatGratingMetaParameters-class.html b/doc/reference/html/VisionEgg.PyroApps.FlatGratingGUI.FlatGratingMetaParameters-class.html
new file mode 100644
index 0000000..adda165
--- /dev/null
+++ b/doc/reference/html/VisionEgg.PyroApps.FlatGratingGUI.FlatGratingMetaParameters-class.html
@@ -0,0 +1,139 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.PyroApps.FlatGratingGUI.FlatGratingMetaParameters</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.PyroApps-module.html">Package PyroApps</a> ::
+        <a href="VisionEgg.PyroApps.FlatGratingGUI-module.html">Module FlatGratingGUI</a> ::
+        Class FlatGratingMetaParameters
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.PyroApps.FlatGratingGUI.FlatGratingMetaParameters-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class FlatGratingMetaParameters</h1><span class="codelink"><a href="VisionEgg.PyroApps.FlatGratingGUI-pysrc.html#FlatGratingMetaParameters">source code</a></span><br /><br />
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__init__"></a><span class="summary-sig-name">__init__</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.FlatGratingGUI-pysrc.html#FlatGratingMetaParameters.__init__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.PyroApps.FlatGratingServer-module.html b/doc/reference/html/VisionEgg.PyroApps.FlatGratingServer-module.html
new file mode 100644
index 0000000..a3849c4
--- /dev/null
+++ b/doc/reference/html/VisionEgg.PyroApps.FlatGratingServer-module.html
@@ -0,0 +1,221 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.PyroApps.FlatGratingServer</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.PyroApps-module.html">Package PyroApps</a> ::
+        Module FlatGratingServer
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.PyroApps.FlatGratingServer-module.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== MODULE DESCRIPTION ==================== -->
+<h1 class="epydoc">Module FlatGratingServer</h1><span class="codelink"><a href="VisionEgg.PyroApps.FlatGratingServer-pysrc.html">source code</a></span><br /><br />
+<pre class="literalblock">
+Handle sinusoidal gratings (server-side)
+
+</pre><br /><br />
+
+<hr />
+<div class="fields">      <p><strong>Version:</strong>
+        1.1.dev
+      </p>
+      <p><strong>Author:</strong>
+        Andrew Straw <astraw at users.sourceforge.net>
+      </p>
+</div><!-- ==================== CLASSES ==================== -->
+<a name="section-Classes"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Classes</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController-class.html" class="summary-name">FlatGratingExperimentMetaController</a>
+    </td>
+  </tr>
+</table>
+<!-- ==================== FUNCTIONS ==================== -->
+<a name="section-Functions"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Functions</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="get_meta_controller_class"></a><span class="summary-sig-name">get_meta_controller_class</span>()</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.FlatGratingServer-pysrc.html#get_meta_controller_class">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="make_stimuli"></a><span class="summary-sig-name">make_stimuli</span>()</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.FlatGratingServer-pysrc.html#make_stimuli">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="get_meta_controller_stimkey"></a><span class="summary-sig-name">get_meta_controller_stimkey</span>()</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.FlatGratingServer-pysrc.html#get_meta_controller_stimkey">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+</table>
+<!-- ==================== VARIABLES ==================== -->
+<a name="section-Variables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Variables</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="__cvs__"></a><span class="summary-name">__cvs__</span> = <code title="string.split('$Revision$') [1]">string.split('$Revision$') [1]</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="__date__"></a><span class="summary-name">__date__</span> = <code title="string.join(string.split('$Date$') [1: 3], ' ')">string.join(string.split('$Date$') [1: 3], ' ')</code>
+    </td>
+  </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.PyroApps.FlatGratingServer-pysrc.html b/doc/reference/html/VisionEgg.PyroApps.FlatGratingServer-pysrc.html
new file mode 100644
index 0000000..87368fc
--- /dev/null
+++ b/doc/reference/html/VisionEgg.PyroApps.FlatGratingServer-pysrc.html
@@ -0,0 +1,490 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.PyroApps.FlatGratingServer</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.PyroApps-module.html">Package PyroApps</a> ::
+        Module FlatGratingServer
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.PyroApps.FlatGratingServer-pysrc.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<h1 class="epydoc">Source Code for <a href="VisionEgg.PyroApps.FlatGratingServer-module.html">Module VisionEgg.PyroApps.FlatGratingServer</a></h1>
+<pre class="py-src">
+<a name="L1"></a><tt class="py-lineno">  1</tt>  <tt class="py-line"><tt class="py-comment">#!/usr/bin/env python</tt> </tt>
+<a name="L2"></a><tt class="py-lineno">  2</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L3"></a><tt class="py-lineno">  3</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># The Vision Egg: FlatGratingServer</tt> </tt>
+<a name="L4"></a><tt class="py-lineno">  4</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L5"></a><tt class="py-lineno">  5</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Copyright (C) 2001-2003 Andrew Straw.</tt> </tt>
+<a name="L6"></a><tt class="py-lineno">  6</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Author: Andrew Straw <astraw at users.sourceforge.net></tt> </tt>
+<a name="L7"></a><tt class="py-lineno">  7</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># URL: <http://www.visionegg.org/></tt> </tt>
+<a name="L8"></a><tt class="py-lineno">  8</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L9"></a><tt class="py-lineno">  9</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Distributed under the terms of the GNU Lesser General Public License</tt> </tt>
+<a name="L10"></a><tt class="py-lineno"> 10</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># (LGPL). See LICENSE.TXT that came with this file.</tt> </tt>
+<a name="L11"></a><tt class="py-lineno"> 11</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L12"></a><tt class="py-lineno"> 12</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># $Id$</tt> </tt>
+<a name="L13"></a><tt class="py-lineno"> 13</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L14"></a><tt class="py-lineno"> 14</tt>  <tt class="py-line"><tt class="py-docstring">"""Handle sinusoidal gratings (server-side)"""</tt> </tt>
+<a name="L15"></a><tt class="py-lineno"> 15</tt>  <tt class="py-line"> </tt>
+<a name="L16"></a><tt class="py-lineno"> 16</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-0" class="py-name" targets="Package VisionEgg=VisionEgg-module.html"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-0', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">,</tt> <tt class="py-name">string</tt> </tt>
+<a name="L17"></a><tt class="py-lineno"> 17</tt>  <tt class="py-line"><tt id="link-1" class="py-name" targets="Variable VisionEgg.DaqKeyboard.__version__=VisionEgg.DaqKeyboard-module.html#__version__,Variable VisionEgg.DaqLPT.__version__=VisionEgg.DaqLPT-module.html#__version__,Variable VisionEgg.GL.__version__=VisionEgg.GL-module.html#__version__,Variable VisionEgg.PyroApps.EPhysGUI.__version__=VisionEgg.PyroApps.EPhysGUI-module.html#__version__,Variable VisionEgg.PyroApps.EPhysGUIUtils [...]
+VisionEgg.DaqLPT.__version__
+VisionEgg.GL.__version__
+VisionEgg.PyroApps.EPhysGUI.__version__
+VisionEgg.PyroApps.EPhysGUIUtils.__version__
+VisionEgg.PyroApps.EPhysServer.__version__
+VisionEgg.PyroApps.GridGUI.__version__
+VisionEgg.PyroApps.GridServer.__version__
+VisionEgg.PyroApps.ScreenPositionGUI.__version__
+VisionEgg.PyroApps.ScreenPositionServer.__version__
+VisionEgg.PyroApps.SpinningDrumGUI.__version__
+VisionEgg.PyroApps.SpinningDrumServer.__version__
+VisionEgg.PyroHelpers.__version__
+VisionEgg.QuickTime.__version__
+VisionEgg.ResponseControl.__version__
+VisionEgg.SphereMap.__version__
+VisionEgg.TCPController.__version__" class="py-name" href="#" onclick="return doclink('link-1', '__version__', 'link-1');">__version__</a></tt> <tt class="py-op">=</tt> <tt id="link-2" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-2', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-3" class="py-name" targets="Variable VisionEgg.release_name=VisionEgg-module.html#release_name"><a title="VisionEgg.release_name" c [...]
+<a name="L18"></a><tt class="py-lineno"> 18</tt>  <tt class="py-line"><tt id="link-4" class="py-name" targets="Variable VisionEgg.PyroApps.ColorCalGUI.__cvs__=VisionEgg.PyroApps.ColorCalGUI-module.html#__cvs__,Variable VisionEgg.PyroApps.ColorCalServer.__cvs__=VisionEgg.PyroApps.ColorCalServer-module.html#__cvs__,Variable VisionEgg.PyroApps.EPhysGUI.__cvs__=VisionEgg.PyroApps.EPhysGUI-module.html#__cvs__,Variable VisionEgg.PyroApps.EPhysGUIUtils.__cvs__=VisionEgg.PyroApps.EPhysGUIUtils-m [...]
+VisionEgg.PyroApps.ColorCalServer.__cvs__
+VisionEgg.PyroApps.EPhysGUI.__cvs__
+VisionEgg.PyroApps.EPhysGUIUtils.__cvs__
+VisionEgg.PyroApps.EPhysServer.__cvs__
+VisionEgg.PyroApps.FlatGratingGUI.__cvs__
+VisionEgg.PyroApps.FlatGratingServer.__cvs__
+VisionEgg.PyroApps.GridGUI.__cvs__
+VisionEgg.PyroApps.GridServer.__cvs__
+VisionEgg.PyroApps.MouseTargetGUI.__cvs__
+VisionEgg.PyroApps.MouseTargetServer.__cvs__
+VisionEgg.PyroApps.ScreenPositionGUI.__cvs__
+VisionEgg.PyroApps.ScreenPositionServer.__cvs__
+VisionEgg.PyroApps.SphereGratingGUI.__cvs__
+VisionEgg.PyroApps.SphereGratingServer.__cvs__
+VisionEgg.PyroApps.SpinningDrumGUI.__cvs__
+VisionEgg.PyroApps.SpinningDrumServer.__cvs__
+VisionEgg.PyroApps.TargetGUI.__cvs__
+VisionEgg.PyroApps.TargetServer.__cvs__
+VisionEgg.PyroClient.__cvs__
+VisionEgg.PyroHelpers.__cvs__
+VisionEgg.TCPController.__cvs__" class="py-name" href="#" onclick="return doclink('link-4', '__cvs__', 'link-4');">__cvs__</a></tt> <tt class="py-op">=</tt> <tt class="py-name">string</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'$Revision$'</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
+<a name="L19"></a><tt class="py-lineno"> 19</tt>  <tt class="py-line"><tt id="link-5" class="py-name" targets="Variable VisionEgg.PyroApps.ColorCalGUI.__date__=VisionEgg.PyroApps.ColorCalGUI-module.html#__date__,Variable VisionEgg.PyroApps.ColorCalServer.__date__=VisionEgg.PyroApps.ColorCalServer-module.html#__date__,Variable VisionEgg.PyroApps.EPhysGUI.__date__=VisionEgg.PyroApps.EPhysGUI-module.html#__date__,Variable VisionEgg.PyroApps.EPhysGUIUtils.__date__=VisionEgg.PyroApps.EPhysGUI [...]
+VisionEgg.PyroApps.ColorCalServer.__date__
+VisionEgg.PyroApps.EPhysGUI.__date__
+VisionEgg.PyroApps.EPhysGUIUtils.__date__
+VisionEgg.PyroApps.EPhysServer.__date__
+VisionEgg.PyroApps.FlatGratingGUI.__date__
+VisionEgg.PyroApps.FlatGratingServer.__date__
+VisionEgg.PyroApps.GridGUI.__date__
+VisionEgg.PyroApps.GridServer.__date__
+VisionEgg.PyroApps.MouseTargetGUI.__date__
+VisionEgg.PyroApps.MouseTargetServer.__date__
+VisionEgg.PyroApps.ScreenPositionGUI.__date__
+VisionEgg.PyroApps.ScreenPositionServer.__date__
+VisionEgg.PyroApps.SphereGratingGUI.__date__
+VisionEgg.PyroApps.SphereGratingServer.__date__
+VisionEgg.PyroApps.SpinningDrumGUI.__date__
+VisionEgg.PyroApps.SpinningDrumServer.__date__
+VisionEgg.PyroApps.TargetGUI.__date__
+VisionEgg.PyroApps.TargetServer.__date__
+VisionEgg.PyroClient.__date__
+VisionEgg.PyroHelpers.__date__
+VisionEgg.TCPController.__date__" class="py-name" href="#" onclick="return doclink('link-5', '__date__', 'link-5');">__date__</a></tt> <tt class="py-op">=</tt> <tt class="py-name">string</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">string</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'$Date$'</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt  [...]
+<a name="L20"></a><tt class="py-lineno"> 20</tt>  <tt class="py-line"><tt id="link-6" class="py-name" targets="Variable VisionEgg.PyroApps.EPhysGUI.__author__=VisionEgg.PyroApps.EPhysGUI-module.html#__author__,Variable VisionEgg.PyroApps.EPhysGUIUtils.__author__=VisionEgg.PyroApps.EPhysGUIUtils-module.html#__author__,Variable VisionEgg.PyroApps.EPhysServer.__author__=VisionEgg.PyroApps.EPhysServer-module.html#__author__,Variable VisionEgg.PyroApps.GridGUI.__author__=VisionEgg.PyroApps.Gr [...]
+VisionEgg.PyroApps.EPhysGUIUtils.__author__
+VisionEgg.PyroApps.EPhysServer.__author__
+VisionEgg.PyroApps.GridGUI.__author__
+VisionEgg.PyroApps.GridServer.__author__
+VisionEgg.PyroApps.SpinningDrumGUI.__author__
+VisionEgg.PyroApps.SpinningDrumServer.__author__" class="py-name" href="#" onclick="return doclink('link-6', '__author__', 'link-6');">__author__</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'Andrew Straw <astraw at users.sourceforge.net>'</tt> </tt>
+<a name="L21"></a><tt class="py-lineno"> 21</tt>  <tt class="py-line"> </tt>
+<a name="L22"></a><tt class="py-lineno"> 22</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">sys</tt><tt class="py-op">,</tt> <tt class="py-name">os</tt><tt class="py-op">,</tt> <tt class="py-name">math</tt> </tt>
+<a name="L23"></a><tt class="py-lineno"> 23</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-7" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-7', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-8" class="py-name" targets="Module VisionEgg.Core=VisionEgg.Core-module.html"><a title="VisionEgg.Core" class="py-name" href="#" onclick="return doclink('link-8', 'Core', 'link-8');">Core</a></tt> </tt>
+<a name="L24"></a><tt class="py-lineno"> 24</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-9" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-9', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-10" class="py-name" targets="Module VisionEgg.FlowControl=VisionEgg.FlowControl-module.html"><a title="VisionEgg.FlowControl" class="py-name" href="#" onclick="return doclink('link-10', 'FlowCont [...]
+<a name="L25"></a><tt class="py-lineno"> 25</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-11" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-11', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-12" class="py-name" targets="Module VisionEgg.Gratings=VisionEgg.Gratings-module.html"><a title="VisionEgg.Gratings" class="py-name" href="#" onclick="return doclink('link-12', 'Gratings', 'lin [...]
+<a name="L26"></a><tt class="py-lineno"> 26</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-13" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-13', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-14" class="py-name" targets="Module VisionEgg.PyroHelpers=VisionEgg.PyroHelpers-module.html"><a title="VisionEgg.PyroHelpers" class="py-name" href="#" onclick="return doclink('link-14', 'PyroHe [...]
+<a name="L27"></a><tt class="py-lineno"> 27</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">Pyro</tt><tt class="py-op">.</tt><tt class="py-name">core</tt> </tt>
+<a name="L28"></a><tt class="py-lineno"> 28</tt>  <tt class="py-line"> </tt>
+<a name="L29"></a><tt class="py-lineno"> 29</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-15" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-15', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-16" class="py-name" targets="Package VisionEgg.PyroApps=VisionEgg.PyroApps-module.html"><a title="VisionEgg.PyroApps" class="py-name" href="#" onclick="return doclink('link-16', 'PyroApps', 'link [...]
+<a name="L30"></a><tt class="py-lineno"> 30</tt>  <tt class="py-line"> </tt>
+<a name="FlatGratingExperimentMetaController"></a><div id="FlatGratingExperimentMetaController-def"><a name="L31"></a><tt class="py-lineno"> 31</tt> <a class="py-toggle" href="#" id="FlatGratingExperimentMetaController-toggle" onclick="return toggle('FlatGratingExperimentMetaController');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController-class.html">FlatGratingExperimentMetaCon [...]
+</div><div id="FlatGratingExperimentMetaController-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="FlatGratingExperimentMetaController-expanded"><a name="FlatGratingExperimentMetaController.__init__"></a><div id="FlatGratingExperimentMetaController.__init__-def"><a name="L32"></a><tt class="py-lineno"> 32</tt> <a class="py-toggle" href="#" id="FlatGratingExperimentMetaController.__init__-toggle" onclick="return toggle('FlatGratingExperimentMetaController.__init__' [...]
+</div><div id="FlatGratingExperimentMetaController.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="FlatGratingExperimentMetaController.__init__-expanded"><a name="L33"></a><tt class="py-lineno"> 33</tt>  <tt class="py-line"> </tt>
+<a name="L34"></a><tt class="py-lineno"> 34</tt>  <tt class="py-line">        <tt class="py-comment"># get stimulus</tt> </tt>
+<a name="L35"></a><tt class="py-lineno"> 35</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">assert</tt><tt class="py-op">(</tt> <tt class="py-name">stimuli</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-string">'2d_overlay'</tt><tt class="py-op">)</tt> </tt>
+<a name="L36"></a><tt class="py-lineno"> 36</tt>  <tt class="py-line">        <tt class="py-name">grating</tt> <tt class="py-op">=</tt> <tt class="py-name">stimuli</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
+<a name="L37"></a><tt class="py-lineno"> 37</tt>  <tt class="py-line">         </tt>
+<a name="L38"></a><tt class="py-lineno"> 38</tt>  <tt class="py-line">        <tt class="py-name">Pyro</tt><tt class="py-op">.</tt><tt class="py-name">core</tt><tt class="py-op">.</tt><tt class="py-name">ObjBase</tt><tt class="py-op">.</tt><tt id="link-19" class="py-name" targets="Method VisionEgg.ClassWithParameters.__init__()=VisionEgg.ClassWithParameters-class.html#__init__,Method VisionEgg.Configuration.Config.__init__()=VisionEgg.Configuration.Config-class.html#__init__,Method Visio [...]
+VisionEgg.Configuration.Config.__init__
+VisionEgg.Core.FixationSpot.__init__
+VisionEgg.Core.FrameTimer.__init__
+VisionEgg.Core.ModelView.__init__
+VisionEgg.Core.OrthographicProjection.__init__
+VisionEgg.Core.OrthographicProjectionNoZClip.__init__
+VisionEgg.Core.PerspectiveProjection.__init__
+VisionEgg.Core.Projection.__init__
+VisionEgg.Core.ProjectionBaseClass.__init__
+VisionEgg.Core.Screen.__init__
+VisionEgg.Core.SimplePerspectiveProjection.__init__
+VisionEgg.Core.Stimulus.__init__
+VisionEgg.Core.Viewport.__init__
+VisionEgg.Daq.Channel.__init__
+VisionEgg.Daq.DaqMode.__init__
+VisionEgg.Daq.Device.__init__
+VisionEgg.Daq.Functionality.__init__
+VisionEgg.Daq.SignalType.__init__
+VisionEgg.DaqKeyboard.KeyboardTriggerInController.__init__
+VisionEgg.DaqLPT.LPTChannel.__init__
+VisionEgg.DaqLPT.LPTDevice.__init__
+VisionEgg.DaqLPT.LPTTriggerInController.__init__
+VisionEgg.DaqLPT.LPTTriggerOutController.__init__
+VisionEgg.Deprecated.Message.__init__
+VisionEgg.Dots.DotArea2D.__init__
+VisionEgg.FlowControl.ConstantController.__init__
+VisionEgg.FlowControl.Controller.__init__
+VisionEgg.FlowControl.EncapsulatedController.__init__
+VisionEgg.FlowControl.EvalStringController.__init__
+VisionEgg.FlowControl.ExecStringController.__init__
+VisionEgg.FlowControl.FunctionController.__init__
+VisionEgg.FlowControl.Presentation.__init__
+VisionEgg.GLTrace.Wrapper.__init__
+VisionEgg.GUI.AppWindow.__init__
+VisionEgg.GUI.GetKeypressDialog.__init__
+VisionEgg.GUI.GraphicsConfigurationWindow.__init__
+VisionEgg.GUI.InfoFrame.__init__
+VisionEgg.GUI.ProgressBar.__init__
+VisionEgg.GUI.ToplevelDialog.__init__
+VisionEgg.Gratings.SinGrating2D.__init__
+VisionEgg.Gratings.SinGrating3D.__init__
+VisionEgg.MoreStimuli.Arrow.__init__
+VisionEgg.MoreStimuli.FilledCircle.__init__
+VisionEgg.MoreStimuli.Rectangle3D.__init__
+VisionEgg.MoreStimuli.Target2D.__init__
+VisionEgg.ParameterTypes.AnyOf.__init__
+VisionEgg.ParameterTypes.Instance.__init__
+VisionEgg.ParameterTypes.Sequence.__init__
+VisionEgg.ParameterTypes.SubClass.__init__
+VisionEgg.PyroApps.AST_ext.AST_Visitor.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalMetaParameters.__init__
+VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.__init__
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.__init__
+VisionEgg.PyroApps.DropinGUI.DropinMetaParameters.__init__
+VisionEgg.PyroApps.DropinServer.DropinMetaController.__init__
+VisionEgg.PyroApps.EPhysGUI.AppWindow.__init__
+VisionEgg.PyroApps.EPhysGUI.BarButton.__init__
+VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase.__init__
+VisionEgg.PyroApps.EPhysGUI.GammaFrame.__init__
+VisionEgg.PyroApps.EPhysGUI.ImageSequenceLauncher.__init__
+VisionEgg.PyroApps.EPhysGUI.Loop.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopContainedObject.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopParamDialog.__init__
+VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.__init__
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.__init__
+VisionEgg.PyroApps.EPhysServer.EPhysServer.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingMetaParameters.__init__
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.GridGUI.GridControlFrame.__init__
+VisionEgg.PyroApps.GridGUI.GridMetaParameters.__init__
+VisionEgg.PyroApps.GridServer.GridMetaController.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetMetaParameters.__init__
+VisionEgg.PyroApps.MouseTargetServer.MousePositionController.__init__
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetOrientationController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetPositionController.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.CallbackEntry.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionParameters.__init__
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingMetaParameters.__init__
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumMetaParameters.__init__
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.__init__
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.__init__
+VisionEgg.PyroApps.TargetGUI.TargetMetaParameters.__init__
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.__init__
+VisionEgg.PyroClient.PyroClient.__init__
+VisionEgg.PyroHelpers.PyroConstantController.__init__
+VisionEgg.PyroHelpers.PyroEncapsulatedController.__init__
+VisionEgg.PyroHelpers.PyroEvalStringController.__init__
+VisionEgg.PyroHelpers.PyroExecStringController.__init__
+VisionEgg.PyroHelpers.PyroListenController.__init__
+VisionEgg.PyroHelpers.PyroLocalDictController.__init__
+VisionEgg.PyroHelpers.PyroServer.__init__
+VisionEgg.QuickTime.MovieTexture.__init__
+VisionEgg.ResponseControl.KeyboardResponseController.__init__
+VisionEgg.ResponseControl.ResponseController.__init__
+VisionEgg.SphereMap.AzElGrid.__init__
+VisionEgg.SphereMap.SphereGrating.__init__
+VisionEgg.SphereMap.SphereMap.__init__
+VisionEgg.SphereMap.SphereWindow.__init__
+VisionEgg.TCPController.SocketListenController.__init__
+VisionEgg.TCPController.TCPController.__init__
+VisionEgg.TCPController.TCPServer.__init__
+VisionEgg.Text.BitmapText.__init__
+VisionEgg.Text.GlutTextBase.__init__
+VisionEgg.Text.StrokeText.__init__
+VisionEgg.Text.Text.__init__
+VisionEgg.Textures.FixationCross.__init__
+VisionEgg.Textures.Mask2D.__init__
+VisionEgg.Textures.SpinningDrum.__init__
+VisionEgg.Textures.Texture.__init__
+VisionEgg.Textures.TextureFromFile.__init__
+VisionEgg.Textures.TextureObject.__init__
+VisionEgg.Textures.TextureStimulusBaseClass.__init__
+VisionEgg.ThreeDeeMath.TransformMatrix.__init__
+VisionEgg.WrappedText.WrappedText.__init__
+VisionEgg.qtmovie.Movie.__init__
+VisionEgg.qtmovie.Rect.__init__" class="py-name" href="#" onclick="return doclink('link-19', '__init__', 'link-19');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
+<a name="L39"></a><tt class="py-lineno"> 39</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt> <tt class="py-op">=</tt> <tt id="link-20" class="py-name"><a title="VisionEgg.PyroApps.FlatGratingGUI.FlatGratingMetaParameters" class="py-name" href="#" onclick="return doclink('link-20', 'FlatGratingMetaParameters', 'link-18');">FlatGratingMetaParameters</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L40"></a><tt class="py-lineno"> 40</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">screen</tt><tt class="py-op">,</tt><tt id="link-21" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-21', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-22" class="py-name"><a title="VisionEgg.Cor [...]
+<a name="L41"></a><tt class="py-lineno"> 41</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">"Expecting instance of VisionEgg.Core.Screen"</tt><tt class="py-op">)</tt> </tt>
+<a name="L42"></a><tt class="py-lineno"> 42</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">presentation</tt><tt class="py-op">,</tt><tt id="link-24" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-24', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-25" class="py-name"><a title="VisionE [...]
+<a name="L43"></a><tt class="py-lineno"> 43</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">"Expecting instance of VisionEgg.FlowControl.Presentation"</tt><tt class="py-op">)</tt> </tt>
+<a name="L44"></a><tt class="py-lineno"> 44</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">grating</tt><tt class="py-op">,</tt><tt id="link-27" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-27', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-28" class="py-name"><a title="VisionEgg.Gr [...]
+<a name="L45"></a><tt class="py-lineno"> 45</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">"Expecting instance of VisionEgg.Gratings.SinGrating2D"</tt><tt class="py-op">)</tt> </tt>
+<a name="L46"></a><tt class="py-lineno"> 46</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">p</tt> <tt class="py-op">=</tt> <tt class="py-name">presentation</tt> </tt>
+<a name="L47"></a><tt class="py-lineno"> 47</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stim</tt> <tt class="py-op">=</tt> <tt class="py-name">grating</tt> </tt>
+<a name="L48"></a><tt class="py-lineno"> 48</tt>  <tt class="py-line"> </tt>
+<a name="L49"></a><tt class="py-lineno"> 49</tt>  <tt class="py-line">        <tt class="py-name">screen</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">bgcolor</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-number">0.5</tt><tt class="py-op">,</tt> <tt class="py-number">0.5</tt><tt class="py-op">,</tt> <tt class="py-number">0.5</tt><tt class="py-op">,</tt> <tt class="py-number">0.0</tt><tt class="py-op">)</tt> </tt>
+<a name="L50"></a><tt class="py-lineno"> 50</tt>  <tt class="py-line"> </tt>
+<a name="L51"></a><tt class="py-lineno"> 51</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt id="link-30" class="py-name" targets="Method VisionEgg.FlowControl.Presentation.add_controller()=VisionEgg.FlowControl.Presentation-class.html#add_controller,Method VisionEgg.PyroHelpers.PyroLocalDictController.add_controller()=VisionEgg.PyroHelpers.PyroLocalDictController-class.html#add_controller"><a tit [...]
+VisionEgg.PyroHelpers.PyroLocalDictController.add_controller" class="py-name" href="#" onclick="return doclink('link-30', 'add_controller', 'link-30');">add_controller</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stim</tt><tt class="py-op">,</tt><tt class="py-string">'on'</tt><tt class="py-op">,</tt><tt id="link-31" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-31', 'VisionEgg', 'lin [...]
+<a name="L52"></a><tt class="py-lineno"> 52</tt>  <tt class="py-line">            <tt class="py-name">during_go_func</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-34" class="py-name" targets="Method VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.on_function_during_go()=VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController-class.html#on_function_during_go,Method VisionEgg.PyroApps.SphereGratingSer [...]
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.on_function_during_go
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.on_function_during_go
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.on_function_during_go" class="py-name" href="#" onclick="return doclink('link-34', 'on_function_during_go', 'link-34');">on_function_during_go</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L53"></a><tt class="py-lineno"> 53</tt>  <tt class="py-line">            <tt class="py-name">between_go_func</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-35" class="py-name" targets="Method VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.on_function_between_go()=VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController-class.html#on_function_between_go,Method VisionEgg.PyroApps.SphereGrating [...]
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.on_function_between_go
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.on_function_between_go
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.on_function_between_go" class="py-name" href="#" onclick="return doclink('link-35', 'on_function_between_go', 'link-35');">on_function_between_go</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L54"></a><tt class="py-lineno"> 54</tt>  <tt class="py-line"> </tt>
+<a name="FlatGratingExperimentMetaController.__del__"></a><div id="FlatGratingExperimentMetaController.__del__-def"><a name="L55"></a><tt class="py-lineno"> 55</tt> <a class="py-toggle" href="#" id="FlatGratingExperimentMetaController.__del__-toggle" onclick="return toggle('FlatGratingExperimentMetaController.__del__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController-class. [...]
+</div><div id="FlatGratingExperimentMetaController.__del__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="FlatGratingExperimentMetaController.__del__-expanded"><a name="L56"></a><tt class="py-lineno"> 56</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt id="link-36" class="py-name" targets="Method VisionEgg.FlowControl.Presentation.remove_controller()=VisionEgg.FlowCont [...]
+<a name="L57"></a><tt class="py-lineno"> 57</tt>  <tt class="py-line">        <tt class="py-name">Pyro</tt><tt class="py-op">.</tt><tt class="py-name">core</tt><tt class="py-op">.</tt><tt class="py-name">ObjBase</tt><tt class="py-op">.</tt><tt id="link-37" class="py-name" targets="Method VisionEgg.Core.Screen.__del__()=VisionEgg.Core.Screen-class.html#__del__,Method VisionEgg.DaqLPT.LPTOutput.__del__()=VisionEgg.DaqLPT.LPTOutput-class.html#__del__,Method VisionEgg.Gratings.SinGrating2D._ [...]
+VisionEgg.DaqLPT.LPTOutput.__del__
+VisionEgg.Gratings.SinGrating2D.__del__
+VisionEgg.Gratings.SinGrating3D.__del__
+VisionEgg.PyroApps.EPhysGUI.AppWindow.__del__
+VisionEgg.PyroApps.EPhysServer.EPhysServer.__del__
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.__del__
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.__del__
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.__del__
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.__del__
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.__del__
+VisionEgg.QuickTime.MovieTexture.__del__
+VisionEgg.Textures.TextureObject.__del__" class="py-name" href="#" onclick="return doclink('link-37', '__del__', 'link-37');">__del__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> <tt class="py-comment"># call base class</tt> </tt>
+</div><a name="L58"></a><tt class="py-lineno"> 58</tt>  <tt class="py-line"> </tt>
+<a name="FlatGratingExperimentMetaController.on_function_during_go"></a><div id="FlatGratingExperimentMetaController.on_function_during_go-def"><a name="L59"></a><tt class="py-lineno"> 59</tt> <a class="py-toggle" href="#" id="FlatGratingExperimentMetaController.on_function_during_go-toggle" onclick="return toggle('FlatGratingExperimentMetaController.on_function_during_go');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.Flat [...]
+</div><div id="FlatGratingExperimentMetaController.on_function_during_go-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="FlatGratingExperimentMetaController.on_function_during_go-expanded"><a name="L60"></a><tt class="py-lineno"> 60</tt>  <tt class="py-line">        <tt class="py-docstring">"""Compute when the grating is on"""</tt> </tt>
+<a name="L61"></a><tt class="py-lineno"> 61</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">t</tt> <tt class="py-op"><=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op">.</tt><tt class="py-name">pre_stim_sec</tt><tt class="py-op">:</tt> </tt>
+<a name="L62"></a><tt class="py-lineno"> 62</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-number">0</tt> <tt class="py-comment"># not on yet</tt> </tt>
+<a name="L63"></a><tt class="py-lineno"> 63</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">t</tt> <tt class="py-op"><=</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op">.</tt><tt class="py-name">pre_stim_sec</tt> <tt class="py-op">+</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op">.</tt><tt class="p [...]
+<a name="L64"></a><tt class="py-lineno"> 64</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-number">1</tt> <tt class="py-comment"># on</tt> </tt>
+<a name="L65"></a><tt class="py-lineno"> 65</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L66"></a><tt class="py-lineno"> 66</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-number">0</tt> <tt class="py-comment"># off again</tt> </tt>
+</div><a name="L67"></a><tt class="py-lineno"> 67</tt>  <tt class="py-line">         </tt>
+<a name="FlatGratingExperimentMetaController.on_function_between_go"></a><div id="FlatGratingExperimentMetaController.on_function_between_go-def"><a name="L68"></a><tt class="py-lineno"> 68</tt> <a class="py-toggle" href="#" id="FlatGratingExperimentMetaController.on_function_between_go-toggle" onclick="return toggle('FlatGratingExperimentMetaController.on_function_between_go');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps. [...]
+</div><div id="FlatGratingExperimentMetaController.on_function_between_go-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="FlatGratingExperimentMetaController.on_function_between_go-expanded"><a name="L69"></a><tt class="py-lineno"> 69</tt>  <tt class="py-line">        <tt class="py-docstring">"""Compute when the grating is off"""</tt> </tt>
+<a name="L70"></a><tt class="py-lineno"> 70</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-number">0</tt> <tt class="py-comment"># off again</tt> </tt>
+</div><a name="L71"></a><tt class="py-lineno"> 71</tt>  <tt class="py-line">     </tt>
+<a name="FlatGratingExperimentMetaController.get_parameters"></a><div id="FlatGratingExperimentMetaController.get_parameters-def"><a name="L72"></a><tt class="py-lineno"> 72</tt> <a class="py-toggle" href="#" id="FlatGratingExperimentMetaController.get_parameters-toggle" onclick="return toggle('FlatGratingExperimentMetaController.get_parameters');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.FlatGratingServer.FlatGratingExp [...]
+</div><div id="FlatGratingExperimentMetaController.get_parameters-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="FlatGratingExperimentMetaController.get_parameters-expanded"><a name="L73"></a><tt class="py-lineno"> 73</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt> </tt>
+</div><a name="L74"></a><tt class="py-lineno"> 74</tt>  <tt class="py-line"> </tt>
+<a name="FlatGratingExperimentMetaController.set_parameters"></a><div id="FlatGratingExperimentMetaController.set_parameters-def"><a name="L75"></a><tt class="py-lineno"> 75</tt> <a class="py-toggle" href="#" id="FlatGratingExperimentMetaController.set_parameters-toggle" onclick="return toggle('FlatGratingExperimentMetaController.set_parameters');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.FlatGratingServer.FlatGratingExp [...]
+</div><div id="FlatGratingExperimentMetaController.set_parameters-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="FlatGratingExperimentMetaController.set_parameters-expanded"><a name="L76"></a><tt class="py-lineno"> 76</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">new_parameters</tt><tt class="py-op">,</tt> <tt id="link-38" class="py-name"><a title="VisionEgg.Pyro [...]
+<a name="L77"></a><tt class="py-lineno"> 77</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt> <tt class="py-op">=</tt> <tt class="py-name">new_parameters</tt> </tt>
+<a name="L78"></a><tt class="py-lineno"> 78</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L79"></a><tt class="py-lineno"> 79</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">"Argument to set_parameters must be instance of FlatGratingMetaParameters"</tt><tt class="py-op">)</tt> </tt>
+<a name="L80"></a><tt class="py-lineno"> 80</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-39" class="py-name" targets="Method VisionEgg.GUI.InfoFrame.update()=VisionEgg.GUI.InfoFrame-class.html#update,Method VisionEgg.GUI.ProgressBar.update()=VisionEgg.GUI.ProgressBar-class.html#update,Method VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.update()=VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController-class.html#update,Met [...]
+VisionEgg.GUI.ProgressBar.update
+VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.update
+VisionEgg.PyroApps.DropinServer.DropinMetaController.update
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.update
+VisionEgg.PyroApps.GridServer.GridMetaController.update
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.update
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.update
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.update
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.update
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.update
+VisionEgg.QuickTime.MovieTexture.update
+VisionEgg.Textures.Texture.update" class="py-name" href="#" onclick="return doclink('link-39', 'update', 'link-39');">update</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L81"></a><tt class="py-lineno"> 81</tt>  <tt class="py-line">         </tt>
+<a name="FlatGratingExperimentMetaController.update"></a><div id="FlatGratingExperimentMetaController.update-def"><a name="L82"></a><tt class="py-lineno"> 82</tt> <a class="py-toggle" href="#" id="FlatGratingExperimentMetaController.update-toggle" onclick="return toggle('FlatGratingExperimentMetaController.update');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController-class.html [...]
+</div><div id="FlatGratingExperimentMetaController.update-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="FlatGratingExperimentMetaController.update-expanded"><a name="L83"></a><tt class="py-lineno"> 83</tt>  <tt class="py-line">        <tt class="py-name">stim_params</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stim</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt> <tt class="py-comment"> [...]
+<a name="L84"></a><tt class="py-lineno"> 84</tt>  <tt class="py-line">        <tt class="py-name">meta_params</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt> <tt class="py-comment"># shorthand</tt> </tt>
+<a name="L85"></a><tt class="py-lineno"> 85</tt>  <tt class="py-line">        <tt class="py-name">stim_params</tt><tt class="py-op">.</tt><tt class="py-name">contrast</tt> <tt class="py-op">=</tt> <tt class="py-name">meta_params</tt><tt class="py-op">.</tt><tt class="py-name">contrast</tt> </tt>
+<a name="L86"></a><tt class="py-lineno"> 86</tt>  <tt class="py-line">        <tt class="py-name">stim_params</tt><tt class="py-op">.</tt><tt class="py-name">orientation</tt> <tt class="py-op">=</tt> <tt class="py-name">meta_params</tt><tt class="py-op">.</tt><tt class="py-name">orient</tt> </tt>
+<a name="L87"></a><tt class="py-lineno"> 87</tt>  <tt class="py-line">        <tt class="py-name">stim_params</tt><tt class="py-op">.</tt><tt class="py-name">spatial_freq</tt> <tt class="py-op">=</tt> <tt class="py-name">meta_params</tt><tt class="py-op">.</tt><tt class="py-name">sf</tt> </tt>
+<a name="L88"></a><tt class="py-lineno"> 88</tt>  <tt class="py-line">        <tt class="py-name">stim_params</tt><tt class="py-op">.</tt><tt class="py-name">temporal_freq_hz</tt> <tt class="py-op">=</tt> <tt class="py-name">meta_params</tt><tt class="py-op">.</tt><tt class="py-name">tf</tt> </tt>
+<a name="L89"></a><tt class="py-lineno"> 89</tt>  <tt class="py-line">        <tt class="py-name">stim_params</tt><tt class="py-op">.</tt><tt id="link-40" class="py-name" targets="Variable VisionEgg.Core.Screen.size=VisionEgg.Core.Screen-class.html#size"><a title="VisionEgg.Core.Screen.size" class="py-name" href="#" onclick="return doclink('link-40', 'size', 'link-40');">size</a></tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">meta_params</tt><tt class="py-op">. [...]
+<a name="L90"></a><tt class="py-lineno"> 90</tt>  <tt class="py-line">        <tt class="py-name">stim_params</tt><tt class="py-op">.</tt><tt class="py-name">position</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">meta_params</tt><tt class="py-op">.</tt><tt class="py-name">center_x</tt><tt class="py-op">,</tt> <tt class="py-name">meta_params</tt><tt class="py-op">.</tt><tt class="py-name">center_y</tt><tt class="py-op">)</tt> </tt>
+<a name="L91"></a><tt class="py-lineno"> 91</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">go_duration</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt> <tt class="py-name">meta_params</tt><tt class="py-op">.</tt><tt class="py-name">pre_stim_sec</tt> <tt class="py-op">+</tt> <tt class="py-name">meta_params</tt><tt cl [...]
+</div><a name="L92"></a><tt class="py-lineno"> 92</tt>  <tt class="py-line"> </tt>
+<a name="FlatGratingExperimentMetaController.go"></a><div id="FlatGratingExperimentMetaController.go-def"><a name="L93"></a><tt class="py-lineno"> 93</tt> <a class="py-toggle" href="#" id="FlatGratingExperimentMetaController.go-toggle" onclick="return toggle('FlatGratingExperimentMetaController.go');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController-class.html#go">go</a><tt c [...]
+</div><div id="FlatGratingExperimentMetaController.go-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="FlatGratingExperimentMetaController.go-expanded"><a name="L94"></a><tt class="py-lineno"> 94</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">enter_go_loop</tt> <tt class="py-op">=</tt> <tt class [...]
+</div><a name="L95"></a><tt class="py-lineno"> 95</tt>  <tt class="py-line"> </tt>
+<a name="FlatGratingExperimentMetaController.quit_server"></a><div id="FlatGratingExperimentMetaController.quit_server-def"><a name="L96"></a><tt class="py-lineno"> 96</tt> <a class="py-toggle" href="#" id="FlatGratingExperimentMetaController.quit_server-toggle" onclick="return toggle('FlatGratingExperimentMetaController.quit_server');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaC [...]
+</div><div id="FlatGratingExperimentMetaController.quit_server-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="FlatGratingExperimentMetaController.quit_server-expanded"><a name="L97"></a><tt class="py-lineno"> 97</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt id="link-41" class="py-name" targets="Method Vision [...]
+</div></div><a name="L98"></a><tt class="py-lineno"> 98</tt>  <tt class="py-line"> </tt>
+<a name="get_meta_controller_class"></a><div id="get_meta_controller_class-def"><a name="L99"></a><tt class="py-lineno"> 99</tt> <a class="py-toggle" href="#" id="get_meta_controller_class-toggle" onclick="return toggle('get_meta_controller_class');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.FlatGratingServer-module.html#get_meta_controller_class">get_meta_controller_class</a><tt class="py-op">(</tt><tt class="py-op">)</tt><t [...]
+</div><div id="get_meta_controller_class-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="get_meta_controller_class-expanded"><a name="L100"></a><tt class="py-lineno">100</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt id="link-42" class="py-name" targets="Class VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController=VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController-class.html"><a title="VisionEgg.PyroApp [...]
+</div><a name="L101"></a><tt class="py-lineno">101</tt>  <tt class="py-line"> </tt>
+<a name="make_stimuli"></a><div id="make_stimuli-def"><a name="L102"></a><tt class="py-lineno">102</tt> <a class="py-toggle" href="#" id="make_stimuli-toggle" onclick="return toggle('make_stimuli');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.FlatGratingServer-module.html#make_stimuli">make_stimuli</a><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="make_stimuli-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="make_stimuli-expanded"><a name="L103"></a><tt class="py-lineno">103</tt>  <tt class="py-line">    <tt class="py-name">stimulus</tt> <tt class="py-op">=</tt> <tt id="link-43" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-43', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-44" class="py-name"><a title="VisionEgg.G [...]
+<a name="L104"></a><tt class="py-lineno">104</tt>  <tt class="py-line">                                                <tt class="py-name">temporal_freq_hz</tt> <tt class="py-op">=</tt> <tt class="py-number">1.0</tt><tt class="py-op">,</tt> </tt>
+<a name="L105"></a><tt class="py-lineno">105</tt>  <tt class="py-line">                                                <tt class="py-name">anchor</tt><tt class="py-op">=</tt><tt class="py-string">'center'</tt><tt class="py-op">,</tt> </tt>
+<a name="L106"></a><tt class="py-lineno">106</tt>  <tt class="py-line">                                                <tt class="py-op">)</tt> </tt>
+<a name="L107"></a><tt class="py-lineno">107</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-op">[</tt><tt class="py-op">(</tt><tt class="py-string">'2d_overlay'</tt><tt class="py-op">,</tt><tt class="py-name">stimulus</tt><tt class="py-op">)</tt><tt class="py-op">]</tt> </tt>
+</div><a name="L108"></a><tt class="py-lineno">108</tt>  <tt class="py-line"> </tt>
+<a name="get_meta_controller_stimkey"></a><div id="get_meta_controller_stimkey-def"><a name="L109"></a><tt class="py-lineno">109</tt> <a class="py-toggle" href="#" id="get_meta_controller_stimkey-toggle" onclick="return toggle('get_meta_controller_stimkey');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.FlatGratingServer-module.html#get_meta_controller_stimkey">get_meta_controller_stimkey</a><tt class="py-op">(</tt><tt class="py [...]
+</div><div id="get_meta_controller_stimkey-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="get_meta_controller_stimkey-expanded"><a name="L110"></a><tt class="py-lineno">110</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-string">"flat_grating_server"</tt> </tt>
+</div><a name="L111"></a><tt class="py-lineno">111</tt>  <tt class="py-line"> </tt>
+<a name="L112"></a><tt class="py-lineno">112</tt>  <tt class="py-line"><tt class="py-comment"># Don't do anything unless this script is being run</tt> </tt>
+<a name="L113"></a><tt class="py-lineno">113</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-keyword">if</tt> <tt class="py-name">__name__</tt> <tt class="py-op">==</tt> <tt class="py-string">'__main__'</tt><tt class="py-op">:</tt> </tt>
+<a name="L114"></a><tt class="py-lineno">114</tt>  <tt class="py-line">     </tt>
+<a name="L115"></a><tt class="py-lineno">115</tt>  <tt class="py-line">    <tt class="py-name">pyro_server</tt> <tt class="py-op">=</tt> <tt id="link-46" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-46', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-47" class="py-name"><a title="VisionEgg.PyroHelpers" class="py-name" href="#" onclick="return doclink('link-47', 'PyroHelpers', 'link-14');">PyroHelpers</a></tt> [...]
+<a name="L116"></a><tt class="py-lineno">116</tt>  <tt class="py-line"> </tt>
+<a name="L117"></a><tt class="py-lineno">117</tt>  <tt class="py-line">    <tt class="py-name">screen</tt> <tt class="py-op">=</tt> <tt id="link-49" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-49', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-50" class="py-name"><a title="VisionEgg.Core" class="py-name" href="#" onclick="return doclink('link-50', 'Core', 'link-8');">Core</a></tt><tt class="py-op">.</tt><tt [...]
+<a name="L118"></a><tt class="py-lineno">118</tt>  <tt class="py-line"> </tt>
+<a name="L119"></a><tt class="py-lineno">119</tt>  <tt class="py-line">    <tt class="py-comment"># get Vision Egg stimulus ready to go</tt> </tt>
+<a name="L120"></a><tt class="py-lineno">120</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">stimuli</tt> <tt class="py-op">=</tt> <tt id="link-53" class="py-name" targets="Function VisionEgg.PyroApps.ColorCalServer.make_stimuli()=VisionEgg.PyroApps.ColorCalServer-module.html#make_stimuli,Function VisionEgg.PyroApps.DropinServer.make_stimuli()=VisionEgg.PyroApps.DropinServer-module.html#make_stimuli,Function VisionEgg.PyroApps.FlatGratingServer.make_stimuli( [...]
+VisionEgg.PyroApps.DropinServer.make_stimuli
+VisionEgg.PyroApps.FlatGratingServer.make_stimuli
+VisionEgg.PyroApps.GridServer.make_stimuli
+VisionEgg.PyroApps.MouseTargetServer.make_stimuli
+VisionEgg.PyroApps.SphereGratingServer.make_stimuli
+VisionEgg.PyroApps.SpinningDrumServer.make_stimuli
+VisionEgg.PyroApps.TargetServer.make_stimuli" class="py-name" href="#" onclick="return doclink('link-53', 'make_stimuli', 'link-53');">make_stimuli</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L121"></a><tt class="py-lineno">121</tt>  <tt class="py-line">    <tt class="py-name">stimulus</tt> <tt class="py-op">=</tt> <tt class="py-name">stimuli</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
+<a name="L122"></a><tt class="py-lineno">122</tt>  <tt class="py-line">    <tt class="py-name">viewport</tt> <tt class="py-op">=</tt> <tt id="link-54" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-54', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-55" class="py-name"><a title="VisionEgg.Core" class="py-name" href="#" onclick="return doclink('link-55', 'Core', 'link-8');">Core</a></tt><tt class="py-op">.</tt>< [...]
+<a name="L123"></a><tt class="py-lineno">123</tt>  <tt class="py-line">    <tt class="py-name">p</tt> <tt class="py-op">=</tt> <tt id="link-57" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-57', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-58" class="py-name"><a title="VisionEgg.FlowControl" class="py-name" href="#" onclick="return doclink('link-58', 'FlowControl', 'link-10');">FlowControl</a></tt><tt class= [...]
+<a name="L124"></a><tt class="py-lineno">124</tt>  <tt class="py-line"> </tt>
+<a name="L125"></a><tt class="py-lineno">125</tt>  <tt class="py-line">    <tt class="py-comment"># now hand over control of grating and mask to FlatGratingExperimentMetaController</tt> </tt>
+<a name="L126"></a><tt class="py-lineno">126</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">meta_controller</tt> <tt class="py-op">=</tt> <tt id="link-60" class="py-name"><a title="VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController" class="py-name" href="#" onclick="return doclink('link-60', 'FlatGratingExperimentMetaController', 'link-42');">FlatGratingExperimentMetaController</a></tt><tt class="py-op">(</tt><tt class="py-name">screen [...]
+<a name="L127"></a><tt class="py-lineno">127</tt>  <tt class="py-line">    <tt class="py-name">pyro_server</tt><tt class="py-op">.</tt><tt id="link-61" class="py-name" targets="Method VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.connect()=VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#connect,Method VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.connect()=VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html#connect,Method  [...]
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.connect
+VisionEgg.PyroHelpers.PyroServer.connect" class="py-name" href="#" onclick="return doclink('link-61', 'connect', 'link-61');">connect</a></tt><tt class="py-op">(</tt><tt class="py-name">meta_controller</tt><tt class="py-op">,</tt><tt id="link-62" class="py-name" targets="Function VisionEgg.PyroApps.ColorCalServer.get_meta_controller_stimkey()=VisionEgg.PyroApps.ColorCalServer-module.html#get_meta_controller_stimkey,Function VisionEgg.PyroApps.DropinServer.get_meta_controller_stimkey()=Vi [...]
+VisionEgg.PyroApps.DropinServer.get_meta_controller_stimkey
+VisionEgg.PyroApps.FlatGratingServer.get_meta_controller_stimkey
+VisionEgg.PyroApps.GridServer.get_meta_controller_stimkey
+VisionEgg.PyroApps.MouseTargetServer.get_meta_controller_stimkey
+VisionEgg.PyroApps.SphereGratingServer.get_meta_controller_stimkey
+VisionEgg.PyroApps.SpinningDrumServer.get_meta_controller_stimkey
+VisionEgg.PyroApps.TargetServer.get_meta_controller_stimkey" class="py-name" href="#" onclick="return doclink('link-62', 'get_meta_controller_stimkey', 'link-62');">get_meta_controller_stimkey</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L128"></a><tt class="py-lineno">128</tt>  <tt class="py-line"> </tt>
+<a name="L129"></a><tt class="py-lineno">129</tt>  <tt class="py-line">    <tt class="py-comment"># get listener controller and register it</tt> </tt>
+<a name="L130"></a><tt class="py-lineno">130</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">p</tt><tt class="py-op">.</tt><tt id="link-63" class="py-name"><a title="VisionEgg.FlowControl.Presentation.add_controller
+VisionEgg.PyroHelpers.PyroLocalDictController.add_controller" class="py-name" href="#" onclick="return doclink('link-63', 'add_controller', 'link-30');">add_controller</a></tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-name">pyro_server</tt><tt class="py-op">.</tt><tt id="link-64" class="py-name" targets="Method VisionEgg.PyroHelpers.PyroServer.create_listener_controller()=VisionEgg.Pyro [...]
+<a name="L131"></a><tt class="py-lineno">131</tt>  <tt class="py-line"> </tt>
+<a name="L132"></a><tt class="py-lineno">132</tt>  <tt class="py-line">    <tt class="py-comment"># enter endless loop</tt> </tt>
+<a name="L133"></a><tt class="py-lineno">133</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">p</tt><tt class="py-op">.</tt><tt id="link-65" class="py-name" targets="Method VisionEgg.FlowControl.Presentation.run_forever()=VisionEgg.FlowControl.Presentation-class.html#run_forever"><a title="VisionEgg.FlowControl.Presentation.run_forever" class="py-name" href="#" onclick="return doclink('link-65', 'run_forever', 'link-65');">run_forever</a></tt><tt class="py-op [...]
+<a name="L134"></a><tt class="py-lineno">134</tt>  <tt class="py-line"> </tt><script type="text/javascript">
+<!--
+expandto(location.href);
+// -->
+</script>
+</pre>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:47 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController-class.html b/doc/reference/html/VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController-class.html
new file mode 100644
index 0000000..8f315e9
--- /dev/null
+++ b/doc/reference/html/VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController-class.html
@@ -0,0 +1,335 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.PyroApps-module.html">Package PyroApps</a> ::
+        <a href="VisionEgg.PyroApps.FlatGratingServer-module.html">Module FlatGratingServer</a> ::
+        Class FlatGratingExperimentMetaController
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class FlatGratingExperimentMetaController</h1><span class="codelink"><a href="VisionEgg.PyroApps.FlatGratingServer-pysrc.html#FlatGratingExperimentMetaController">source code</a></span><br /><br />
+<pre class="base-tree">
+Pyro.core.ObjBase --+
+                    |
+                   <strong class="uidshort">FlatGratingExperimentMetaController</strong>
+</pre>
+
+<hr />
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">screen</span>,
+        <span class="summary-sig-arg">presentation</span>,
+        <span class="summary-sig-arg">stimuli</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.FlatGratingServer-pysrc.html#FlatGratingExperimentMetaController.__init__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__del__"></a><span class="summary-sig-name">__del__</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.FlatGratingServer-pysrc.html#FlatGratingExperimentMetaController.__del__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="on_function_during_go"></a><span class="summary-sig-name">on_function_during_go</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">t</span>)</span><br />
+      Compute when the grating is on</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.FlatGratingServer-pysrc.html#FlatGratingExperimentMetaController.on_function_during_go">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="on_function_between_go"></a><span class="summary-sig-name">on_function_between_go</span>(<span class="summary-sig-arg">self</span>)</span><br />
+      Compute when the grating is off</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.FlatGratingServer-pysrc.html#FlatGratingExperimentMetaController.on_function_between_go">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="get_parameters"></a><span class="summary-sig-name">get_parameters</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.FlatGratingServer-pysrc.html#FlatGratingExperimentMetaController.get_parameters">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="set_parameters"></a><span class="summary-sig-name">set_parameters</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">new_parameters</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.FlatGratingServer-pysrc.html#FlatGratingExperimentMetaController.set_parameters">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="update"></a><span class="summary-sig-name">update</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.FlatGratingServer-pysrc.html#FlatGratingExperimentMetaController.update">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="go"></a><span class="summary-sig-name">go</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.FlatGratingServer-pysrc.html#FlatGratingExperimentMetaController.go">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="quit_server"></a><span class="summary-sig-name">quit_server</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.FlatGratingServer-pysrc.html#FlatGratingExperimentMetaController.quit_server">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>Pyro.core.ObjBase</code></b>:
+      <code>GUID</code>,
+      <code>Pyro_dyncall</code>,
+      <code>delegateTo</code>,
+      <code>getAttrProxy</code>,
+      <code>getDaemon</code>,
+      <code>getLocalStorage</code>,
+      <code>getProxy</code>,
+      <code>remote_retrieve_code</code>,
+      <code>remote_supply_code</code>,
+      <code>setCodeValidator</code>,
+      <code>setGUID</code>,
+      <code>setPyroDaemon</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Method Details</span></td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">screen</span>,
+        <span class="sig-arg">presentation</span>,
+        <span class="sig-arg">stimuli</span>)</span>
+    <br /><em class="fname">(Constructor)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.PyroApps.FlatGratingServer-pysrc.html#FlatGratingExperimentMetaController.__init__">source code</a></span> 
+    </td>
+  </table>
+  
+  
+  <dl class="fields">
+    <dt>Overrides:
+      Pyro.core.ObjBase.__init__
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.PyroApps.GridGUI-module.html b/doc/reference/html/VisionEgg.PyroApps.GridGUI-module.html
new file mode 100644
index 0000000..759adda
--- /dev/null
+++ b/doc/reference/html/VisionEgg.PyroApps.GridGUI-module.html
@@ -0,0 +1,198 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.PyroApps.GridGUI</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.PyroApps-module.html">Package PyroApps</a> ::
+        Module GridGUI
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.PyroApps.GridGUI-module.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== MODULE DESCRIPTION ==================== -->
+<h1 class="epydoc">Module GridGUI</h1><span class="codelink"><a href="VisionEgg.PyroApps.GridGUI-pysrc.html">source code</a></span><br /><br />
+<!-- ==================== CLASSES ==================== -->
+<a name="section-Classes"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Classes</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.PyroApps.GridGUI.GridMetaParameters-class.html" class="summary-name">GridMetaParameters</a>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.PyroApps.GridGUI.GridControlFrame-class.html" class="summary-name">GridControlFrame</a>
+    </td>
+  </tr>
+</table>
+<!-- ==================== FUNCTIONS ==================== -->
+<a name="section-Functions"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Functions</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="get_control_list"></a><span class="summary-sig-name">get_control_list</span>()</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.GridGUI-pysrc.html#get_control_list">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+</table>
+<!-- ==================== VARIABLES ==================== -->
+<a name="section-Variables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Variables</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="__version__"></a><span class="summary-name">__version__</span> = <code title="'1.1.dev'">'1.1.dev'</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="__cvs__"></a><span class="summary-name">__cvs__</span> = <code title="string.split('$Revision$') [1]">string.split('$Revision$') [1]</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="__date__"></a><span class="summary-name">__date__</span> = <code title="string.join(string.split('$Date$') [1: 3], ' ')">string.join(string.split('$Date$') [1: 3], ' ')</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="__author__"></a><span class="summary-name">__author__</span> = <code title="'Andrew Straw <astraw at users.sourceforge.net>'">'Andrew Straw <astraw at users.sourceforge.net>'</code>
+    </td>
+  </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.PyroApps.GridGUI-pysrc.html b/doc/reference/html/VisionEgg.PyroApps.GridGUI-pysrc.html
new file mode 100644
index 0000000..86ee003
--- /dev/null
+++ b/doc/reference/html/VisionEgg.PyroApps.GridGUI-pysrc.html
@@ -0,0 +1,407 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.PyroApps.GridGUI</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.PyroApps-module.html">Package PyroApps</a> ::
+        Module GridGUI
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.PyroApps.GridGUI-pysrc.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<h1 class="epydoc">Source Code for <a href="VisionEgg.PyroApps.GridGUI-module.html">Module VisionEgg.PyroApps.GridGUI</a></h1>
+<pre class="py-src">
+<a name="L1"></a><tt class="py-lineno"> 1</tt>  <tt class="py-line"><tt class="py-comment">#!/usr/bin/env python</tt> </tt>
+<a name="L2"></a><tt class="py-lineno"> 2</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L3"></a><tt class="py-lineno"> 3</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># The Vision Egg: GridGUI</tt> </tt>
+<a name="L4"></a><tt class="py-lineno"> 4</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L5"></a><tt class="py-lineno"> 5</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Copyright (C) 2001-2003 Andrew Straw.</tt> </tt>
+<a name="L6"></a><tt class="py-lineno"> 6</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Author: Andrew Straw <astraw at users.sourceforge.net></tt> </tt>
+<a name="L7"></a><tt class="py-lineno"> 7</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># URL: <http://www.visionegg.org/></tt> </tt>
+<a name="L8"></a><tt class="py-lineno"> 8</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L9"></a><tt class="py-lineno"> 9</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Distributed under the terms of the GNU Lesser General Public License</tt> </tt>
+<a name="L10"></a><tt class="py-lineno">10</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># (LGPL). See LICENSE.TXT that came with this file.</tt> </tt>
+<a name="L11"></a><tt class="py-lineno">11</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L12"></a><tt class="py-lineno">12</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># $Id$</tt> </tt>
+<a name="L13"></a><tt class="py-lineno">13</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L14"></a><tt class="py-lineno">14</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-0" class="py-name" targets="Package VisionEgg=VisionEgg-module.html"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-0', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">,</tt> <tt class="py-name">string</tt> </tt>
+<a name="L15"></a><tt class="py-lineno">15</tt>  <tt class="py-line"><tt id="link-1" class="py-name" targets="Variable VisionEgg.DaqKeyboard.__version__=VisionEgg.DaqKeyboard-module.html#__version__,Variable VisionEgg.DaqLPT.__version__=VisionEgg.DaqLPT-module.html#__version__,Variable VisionEgg.GL.__version__=VisionEgg.GL-module.html#__version__,Variable VisionEgg.PyroApps.EPhysGUI.__version__=VisionEgg.PyroApps.EPhysGUI-module.html#__version__,Variable VisionEgg.PyroApps.EPhysGUIUtils. [...]
+VisionEgg.DaqLPT.__version__
+VisionEgg.GL.__version__
+VisionEgg.PyroApps.EPhysGUI.__version__
+VisionEgg.PyroApps.EPhysGUIUtils.__version__
+VisionEgg.PyroApps.EPhysServer.__version__
+VisionEgg.PyroApps.GridGUI.__version__
+VisionEgg.PyroApps.GridServer.__version__
+VisionEgg.PyroApps.ScreenPositionGUI.__version__
+VisionEgg.PyroApps.ScreenPositionServer.__version__
+VisionEgg.PyroApps.SpinningDrumGUI.__version__
+VisionEgg.PyroApps.SpinningDrumServer.__version__
+VisionEgg.PyroHelpers.__version__
+VisionEgg.QuickTime.__version__
+VisionEgg.ResponseControl.__version__
+VisionEgg.SphereMap.__version__
+VisionEgg.TCPController.__version__" class="py-name" href="#" onclick="return doclink('link-1', '__version__', 'link-1');">__version__</a></tt> <tt class="py-op">=</tt> <tt id="link-2" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-2', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-3" class="py-name" targets="Variable VisionEgg.release_name=VisionEgg-module.html#release_name"><a title="VisionEgg.release_name" c [...]
+<a name="L16"></a><tt class="py-lineno">16</tt>  <tt class="py-line"><tt id="link-4" class="py-name" targets="Variable VisionEgg.PyroApps.ColorCalGUI.__cvs__=VisionEgg.PyroApps.ColorCalGUI-module.html#__cvs__,Variable VisionEgg.PyroApps.ColorCalServer.__cvs__=VisionEgg.PyroApps.ColorCalServer-module.html#__cvs__,Variable VisionEgg.PyroApps.EPhysGUI.__cvs__=VisionEgg.PyroApps.EPhysGUI-module.html#__cvs__,Variable VisionEgg.PyroApps.EPhysGUIUtils.__cvs__=VisionEgg.PyroApps.EPhysGUIUtils-mo [...]
+VisionEgg.PyroApps.ColorCalServer.__cvs__
+VisionEgg.PyroApps.EPhysGUI.__cvs__
+VisionEgg.PyroApps.EPhysGUIUtils.__cvs__
+VisionEgg.PyroApps.EPhysServer.__cvs__
+VisionEgg.PyroApps.FlatGratingGUI.__cvs__
+VisionEgg.PyroApps.FlatGratingServer.__cvs__
+VisionEgg.PyroApps.GridGUI.__cvs__
+VisionEgg.PyroApps.GridServer.__cvs__
+VisionEgg.PyroApps.MouseTargetGUI.__cvs__
+VisionEgg.PyroApps.MouseTargetServer.__cvs__
+VisionEgg.PyroApps.ScreenPositionGUI.__cvs__
+VisionEgg.PyroApps.ScreenPositionServer.__cvs__
+VisionEgg.PyroApps.SphereGratingGUI.__cvs__
+VisionEgg.PyroApps.SphereGratingServer.__cvs__
+VisionEgg.PyroApps.SpinningDrumGUI.__cvs__
+VisionEgg.PyroApps.SpinningDrumServer.__cvs__
+VisionEgg.PyroApps.TargetGUI.__cvs__
+VisionEgg.PyroApps.TargetServer.__cvs__
+VisionEgg.PyroClient.__cvs__
+VisionEgg.PyroHelpers.__cvs__
+VisionEgg.TCPController.__cvs__" class="py-name" href="#" onclick="return doclink('link-4', '__cvs__', 'link-4');">__cvs__</a></tt> <tt class="py-op">=</tt> <tt class="py-name">string</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'$Revision$'</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
+<a name="L17"></a><tt class="py-lineno">17</tt>  <tt class="py-line"><tt id="link-5" class="py-name" targets="Variable VisionEgg.PyroApps.ColorCalGUI.__date__=VisionEgg.PyroApps.ColorCalGUI-module.html#__date__,Variable VisionEgg.PyroApps.ColorCalServer.__date__=VisionEgg.PyroApps.ColorCalServer-module.html#__date__,Variable VisionEgg.PyroApps.EPhysGUI.__date__=VisionEgg.PyroApps.EPhysGUI-module.html#__date__,Variable VisionEgg.PyroApps.EPhysGUIUtils.__date__=VisionEgg.PyroApps.EPhysGUIU [...]
+VisionEgg.PyroApps.ColorCalServer.__date__
+VisionEgg.PyroApps.EPhysGUI.__date__
+VisionEgg.PyroApps.EPhysGUIUtils.__date__
+VisionEgg.PyroApps.EPhysServer.__date__
+VisionEgg.PyroApps.FlatGratingGUI.__date__
+VisionEgg.PyroApps.FlatGratingServer.__date__
+VisionEgg.PyroApps.GridGUI.__date__
+VisionEgg.PyroApps.GridServer.__date__
+VisionEgg.PyroApps.MouseTargetGUI.__date__
+VisionEgg.PyroApps.MouseTargetServer.__date__
+VisionEgg.PyroApps.ScreenPositionGUI.__date__
+VisionEgg.PyroApps.ScreenPositionServer.__date__
+VisionEgg.PyroApps.SphereGratingGUI.__date__
+VisionEgg.PyroApps.SphereGratingServer.__date__
+VisionEgg.PyroApps.SpinningDrumGUI.__date__
+VisionEgg.PyroApps.SpinningDrumServer.__date__
+VisionEgg.PyroApps.TargetGUI.__date__
+VisionEgg.PyroApps.TargetServer.__date__
+VisionEgg.PyroClient.__date__
+VisionEgg.PyroHelpers.__date__
+VisionEgg.TCPController.__date__" class="py-name" href="#" onclick="return doclink('link-5', '__date__', 'link-5');">__date__</a></tt> <tt class="py-op">=</tt> <tt class="py-name">string</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">string</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'$Date$'</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt  [...]
+<a name="L18"></a><tt class="py-lineno">18</tt>  <tt class="py-line"><tt id="link-6" class="py-name" targets="Variable VisionEgg.PyroApps.EPhysGUI.__author__=VisionEgg.PyroApps.EPhysGUI-module.html#__author__,Variable VisionEgg.PyroApps.EPhysGUIUtils.__author__=VisionEgg.PyroApps.EPhysGUIUtils-module.html#__author__,Variable VisionEgg.PyroApps.EPhysServer.__author__=VisionEgg.PyroApps.EPhysServer-module.html#__author__,Variable VisionEgg.PyroApps.GridGUI.__author__=VisionEgg.PyroApps.Gri [...]
+VisionEgg.PyroApps.EPhysGUIUtils.__author__
+VisionEgg.PyroApps.EPhysServer.__author__
+VisionEgg.PyroApps.GridGUI.__author__
+VisionEgg.PyroApps.GridServer.__author__
+VisionEgg.PyroApps.SpinningDrumGUI.__author__
+VisionEgg.PyroApps.SpinningDrumServer.__author__" class="py-name" href="#" onclick="return doclink('link-6', '__author__', 'link-6');">__author__</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'Andrew Straw <astraw at users.sourceforge.net>'</tt> </tt>
+<a name="L19"></a><tt class="py-lineno">19</tt>  <tt class="py-line"> </tt>
+<a name="L20"></a><tt class="py-lineno">20</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">sys</tt><tt class="py-op">,</tt> <tt class="py-name">os</tt> </tt>
+<a name="L21"></a><tt class="py-lineno">21</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-7" class="py-name" targets="Variable VisionEgg.GUI.Tkinter=VisionEgg.GUI-module.html#Tkinter"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-7', 'Tkinter', 'link-7');">Tkinter</a></tt> </tt>
+<a name="L22"></a><tt class="py-lineno">22</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-8" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-8', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-9" class="py-name" targets="Package VisionEgg.PyroApps=VisionEgg.PyroApps-module.html"><a title="VisionEgg.PyroApps" class="py-name" href="#" onclick="return doclink('link-9', 'PyroApps', 'link-9' [...]
+<a name="L23"></a><tt class="py-lineno">23</tt>  <tt class="py-line"> </tt>
+<a name="get_control_list"></a><div id="get_control_list-def"><a name="L24"></a><tt class="py-lineno">24</tt> <a class="py-toggle" href="#" id="get_control_list-toggle" onclick="return toggle('get_control_list');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.GridGUI-module.html#get_control_list">get_control_list</a><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="get_control_list-collapsed" style="display:none;" pad="++" indent="++++"></div><div id="get_control_list-expanded"><a name="L25"></a><tt class="py-lineno">25</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-op">[</tt><tt class="py-op">(</tt><tt class="py-string">"grid_server"</tt><tt class="py-op">,</tt><tt id="link-11" class="py-name" targets="Class VisionEgg.PyroApps.GridGUI.GridControlFrame=VisionEgg.PyroApps.GridGUI.GridControlFrame-class. [...]
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.title
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.title
+VisionEgg.PyroApps.GridGUI.GridControlFrame.title
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.title
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.title
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.title
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.title" class="py-name" href="#" onclick="return doclink('link-13', 'title', 'link-13');">title</a></tt><tt class="py-op">)</tt><tt class="py-op">]</tt> </tt>
+</div><a name="L26"></a><tt class="py-lineno">26</tt>  <tt class="py-line"> </tt>
+<a name="GridMetaParameters"></a><div id="GridMetaParameters-def"><a name="L27"></a><tt class="py-lineno">27</tt> <a class="py-toggle" href="#" id="GridMetaParameters-toggle" onclick="return toggle('GridMetaParameters');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.PyroApps.GridGUI.GridMetaParameters-class.html">GridMetaParameters</a><tt class="py-op">:</tt> </tt>
+</div><div id="GridMetaParameters-collapsed" style="display:none;" pad="++" indent="++++"></div><div id="GridMetaParameters-expanded"><a name="GridMetaParameters.__init__"></a><div id="GridMetaParameters.__init__-def"><a name="L28"></a><tt class="py-lineno">28</tt> <a class="py-toggle" href="#" id="GridMetaParameters.__init__-toggle" onclick="return toggle('GridMetaParameters.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg. [...]
+</div><div id="GridMetaParameters.__init__-collapsed" style="display:none;" pad="++" indent="++++++++"></div><div id="GridMetaParameters.__init__-expanded"><a name="L29"></a><tt class="py-lineno">29</tt>  <tt class="py-line">        <tt class="py-keyword">pass</tt> </tt>
+</div></div><a name="L30"></a><tt class="py-lineno">30</tt>  <tt class="py-line">         </tt>
+<a name="GridControlFrame"></a><div id="GridControlFrame-def"><a name="L31"></a><tt class="py-lineno">31</tt> <a class="py-toggle" href="#" id="GridControlFrame-toggle" onclick="return toggle('GridControlFrame');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.PyroApps.GridGUI.GridControlFrame-class.html">GridControlFrame</a><tt class="py-op">(</tt><tt class="py-base-class">client_utils</tt><tt class="py-op">.</tt><tt class="py-base-clas [...]
+</div><div id="GridControlFrame-collapsed" style="display:none;" pad="++" indent="++++"></div><div id="GridControlFrame-expanded"><a name="L32"></a><tt class="py-lineno">32</tt>  <tt class="py-line">    <tt id="link-14" class="py-name"><a title="VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.title
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.title
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.title
+VisionEgg.PyroApps.GridGUI.GridControlFrame.title
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.title
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.title
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.title
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.title" class="py-name" href="#" onclick="return doclink('link-14', 'title', 'link-13');">title</a></tt> <tt class="py-op">=</tt> <tt class="py-string">"Grid for 3D calibration"</tt> </tt>
+<a name="GridControlFrame.__init__"></a><div id="GridControlFrame.__init__-def"><a name="L33"></a><tt class="py-lineno">33</tt> <a class="py-toggle" href="#" id="GridControlFrame.__init__-toggle" onclick="return toggle('GridControlFrame.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.GridGUI.GridControlFrame-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</ [...]
+</div><div id="GridControlFrame.__init__-collapsed" style="display:none;" pad="++" indent="++++++++"></div><div id="GridControlFrame.__init__-expanded"><a name="L34"></a><tt class="py-lineno">34</tt>  <tt class="py-line">        <tt class="py-name">client_utils</tt><tt class="py-op">.</tt><tt id="link-15" class="py-name" targets="Class VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame=VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html"><a title="VisionEgg.PyroApps.EPhys [...]
+VisionEgg.Configuration.Config.__init__
+VisionEgg.Core.FixationSpot.__init__
+VisionEgg.Core.FrameTimer.__init__
+VisionEgg.Core.ModelView.__init__
+VisionEgg.Core.OrthographicProjection.__init__
+VisionEgg.Core.OrthographicProjectionNoZClip.__init__
+VisionEgg.Core.PerspectiveProjection.__init__
+VisionEgg.Core.Projection.__init__
+VisionEgg.Core.ProjectionBaseClass.__init__
+VisionEgg.Core.Screen.__init__
+VisionEgg.Core.SimplePerspectiveProjection.__init__
+VisionEgg.Core.Stimulus.__init__
+VisionEgg.Core.Viewport.__init__
+VisionEgg.Daq.Channel.__init__
+VisionEgg.Daq.DaqMode.__init__
+VisionEgg.Daq.Device.__init__
+VisionEgg.Daq.Functionality.__init__
+VisionEgg.Daq.SignalType.__init__
+VisionEgg.DaqKeyboard.KeyboardTriggerInController.__init__
+VisionEgg.DaqLPT.LPTChannel.__init__
+VisionEgg.DaqLPT.LPTDevice.__init__
+VisionEgg.DaqLPT.LPTTriggerInController.__init__
+VisionEgg.DaqLPT.LPTTriggerOutController.__init__
+VisionEgg.Deprecated.Message.__init__
+VisionEgg.Dots.DotArea2D.__init__
+VisionEgg.FlowControl.ConstantController.__init__
+VisionEgg.FlowControl.Controller.__init__
+VisionEgg.FlowControl.EncapsulatedController.__init__
+VisionEgg.FlowControl.EvalStringController.__init__
+VisionEgg.FlowControl.ExecStringController.__init__
+VisionEgg.FlowControl.FunctionController.__init__
+VisionEgg.FlowControl.Presentation.__init__
+VisionEgg.GLTrace.Wrapper.__init__
+VisionEgg.GUI.AppWindow.__init__
+VisionEgg.GUI.GetKeypressDialog.__init__
+VisionEgg.GUI.GraphicsConfigurationWindow.__init__
+VisionEgg.GUI.InfoFrame.__init__
+VisionEgg.GUI.ProgressBar.__init__
+VisionEgg.GUI.ToplevelDialog.__init__
+VisionEgg.Gratings.SinGrating2D.__init__
+VisionEgg.Gratings.SinGrating3D.__init__
+VisionEgg.MoreStimuli.Arrow.__init__
+VisionEgg.MoreStimuli.FilledCircle.__init__
+VisionEgg.MoreStimuli.Rectangle3D.__init__
+VisionEgg.MoreStimuli.Target2D.__init__
+VisionEgg.ParameterTypes.AnyOf.__init__
+VisionEgg.ParameterTypes.Instance.__init__
+VisionEgg.ParameterTypes.Sequence.__init__
+VisionEgg.ParameterTypes.SubClass.__init__
+VisionEgg.PyroApps.AST_ext.AST_Visitor.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalMetaParameters.__init__
+VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.__init__
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.__init__
+VisionEgg.PyroApps.DropinGUI.DropinMetaParameters.__init__
+VisionEgg.PyroApps.DropinServer.DropinMetaController.__init__
+VisionEgg.PyroApps.EPhysGUI.AppWindow.__init__
+VisionEgg.PyroApps.EPhysGUI.BarButton.__init__
+VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase.__init__
+VisionEgg.PyroApps.EPhysGUI.GammaFrame.__init__
+VisionEgg.PyroApps.EPhysGUI.ImageSequenceLauncher.__init__
+VisionEgg.PyroApps.EPhysGUI.Loop.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopContainedObject.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopParamDialog.__init__
+VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.__init__
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.__init__
+VisionEgg.PyroApps.EPhysServer.EPhysServer.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingMetaParameters.__init__
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.GridGUI.GridControlFrame.__init__
+VisionEgg.PyroApps.GridGUI.GridMetaParameters.__init__
+VisionEgg.PyroApps.GridServer.GridMetaController.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetMetaParameters.__init__
+VisionEgg.PyroApps.MouseTargetServer.MousePositionController.__init__
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetOrientationController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetPositionController.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.CallbackEntry.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionParameters.__init__
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingMetaParameters.__init__
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumMetaParameters.__init__
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.__init__
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.__init__
+VisionEgg.PyroApps.TargetGUI.TargetMetaParameters.__init__
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.__init__
+VisionEgg.PyroClient.PyroClient.__init__
+VisionEgg.PyroHelpers.PyroConstantController.__init__
+VisionEgg.PyroHelpers.PyroEncapsulatedController.__init__
+VisionEgg.PyroHelpers.PyroEvalStringController.__init__
+VisionEgg.PyroHelpers.PyroExecStringController.__init__
+VisionEgg.PyroHelpers.PyroListenController.__init__
+VisionEgg.PyroHelpers.PyroLocalDictController.__init__
+VisionEgg.PyroHelpers.PyroServer.__init__
+VisionEgg.QuickTime.MovieTexture.__init__
+VisionEgg.ResponseControl.KeyboardResponseController.__init__
+VisionEgg.ResponseControl.ResponseController.__init__
+VisionEgg.SphereMap.AzElGrid.__init__
+VisionEgg.SphereMap.SphereGrating.__init__
+VisionEgg.SphereMap.SphereMap.__init__
+VisionEgg.SphereMap.SphereWindow.__init__
+VisionEgg.TCPController.SocketListenController.__init__
+VisionEgg.TCPController.TCPController.__init__
+VisionEgg.TCPController.TCPServer.__init__
+VisionEgg.Text.BitmapText.__init__
+VisionEgg.Text.GlutTextBase.__init__
+VisionEgg.Text.StrokeText.__init__
+VisionEgg.Text.Text.__init__
+VisionEgg.Textures.FixationCross.__init__
+VisionEgg.Textures.Mask2D.__init__
+VisionEgg.Textures.SpinningDrum.__init__
+VisionEgg.Textures.Texture.__init__
+VisionEgg.Textures.TextureFromFile.__init__
+VisionEgg.Textures.TextureObject.__init__
+VisionEgg.Textures.TextureStimulusBaseClass.__init__
+VisionEgg.ThreeDeeMath.TransformMatrix.__init__
+VisionEgg.WrappedText.WrappedText.__init__
+VisionEgg.qtmovie.Movie.__init__
+VisionEgg.qtmovie.Rect.__init__" class="py-name" href="#" onclick="return doclink('link-16', '__init__', 'link-16');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> </tt>
+<a name="L35"></a><tt class="py-lineno">35</tt>  <tt class="py-line">                                                   <tt class="py-name">master</tt><tt class="py-op">,</tt> </tt>
+<a name="L36"></a><tt class="py-lineno">36</tt>  <tt class="py-line">                                                   <tt class="py-name">suppress_go_buttons</tt><tt class="py-op">,</tt> </tt>
+<a name="L37"></a><tt class="py-lineno">37</tt>  <tt class="py-line">                                                   <tt id="link-17" class="py-name"><a title="VisionEgg.PyroApps.GridGUI.GridControlFrame" class="py-name" href="#" onclick="return doclink('link-17', 'GridControlFrame', 'link-11');">GridControlFrame</a></tt><tt class="py-op">.</tt><tt id="link-18" class="py-name"><a title="VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.title
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.title
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.title
+VisionEgg.PyroApps.GridGUI.GridControlFrame.title
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.title
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.title
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.title
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.title" class="py-name" href="#" onclick="return doclink('link-18', 'title', 'link-13');">title</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L38"></a><tt class="py-lineno">38</tt>  <tt class="py-line">                                                   <tt id="link-19" class="py-name" targets="Class VisionEgg.PyroApps.GridGUI.GridMetaParameters=VisionEgg.PyroApps.GridGUI.GridMetaParameters-class.html"><a title="VisionEgg.PyroApps.GridGUI.GridMetaParameters" class="py-name" href="#" onclick="return doclink('link-19', 'GridMetaParameters', 'link-19');">GridMetaParameters</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L39"></a><tt class="py-lineno">39</tt>  <tt class="py-line">                                                   <tt class="py-op">**</tt><tt class="py-name">kw</tt><tt class="py-op">)</tt> </tt>
+<a name="L40"></a><tt class="py-lineno">40</tt>  <tt class="py-line">        <tt id="link-20" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-20', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">param_frame</tt><tt class="py-op">,</tt> </tt>
+<a name="L41"></a><tt class="py-lineno">41</tt>  <tt class="py-line">                       <tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"No variables to control"</tt> <tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L42"></a><tt class="py-lineno">42</tt>  <tt class="py-line"> </tt>
+<a name="GridControlFrame.get_shortname"></a><div id="GridControlFrame.get_shortname-def"><a name="L43"></a><tt class="py-lineno">43</tt> <a class="py-toggle" href="#" id="GridControlFrame.get_shortname-toggle" onclick="return toggle('GridControlFrame.get_shortname');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.GridGUI.GridControlFrame-class.html#get_shortname">get_shortname</a><tt class="py-op">(</tt><tt class="py-param"> [...]
+</div><div id="GridControlFrame.get_shortname-collapsed" style="display:none;" pad="++" indent="++++++++"></div><div id="GridControlFrame.get_shortname-expanded"><a name="L44"></a><tt class="py-lineno">44</tt>  <tt class="py-line">        <tt class="py-docstring">"""Used as basename for saving parameter files"""</tt> </tt>
+<a name="L45"></a><tt class="py-lineno">45</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-string">"grid"</tt> </tt>
+</div><a name="L46"></a><tt class="py-lineno">46</tt>  <tt class="py-line"> </tt>
+<a name="GridControlFrame.update_tk_vars"></a><div id="GridControlFrame.update_tk_vars-def"><a name="L47"></a><tt class="py-lineno">47</tt> <a class="py-toggle" href="#" id="GridControlFrame.update_tk_vars-toggle" onclick="return toggle('GridControlFrame.update_tk_vars');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.GridGUI.GridControlFrame-class.html#update_tk_vars">update_tk_vars</a><tt class="py-op">(</tt><tt class="py-p [...]
+</div><div id="GridControlFrame.update_tk_vars-collapsed" style="display:none;" pad="++" indent="++++++++"></div><div id="GridControlFrame.update_tk_vars-expanded"><a name="L48"></a><tt class="py-lineno">48</tt>  <tt class="py-line">        <tt class="py-keyword">pass</tt> </tt>
+</div><a name="L49"></a><tt class="py-lineno">49</tt>  <tt class="py-line">     </tt>
+<a name="GridControlFrame.send_values"></a><div id="GridControlFrame.send_values-def"><a name="L50"></a><tt class="py-lineno">50</tt> <a class="py-toggle" href="#" id="GridControlFrame.send_values-toggle" onclick="return toggle('GridControlFrame.send_values');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.GridGUI.GridControlFrame-class.html#send_values">send_values</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt [...]
+</div><div id="GridControlFrame.send_values-collapsed" style="display:none;" pad="++" indent="++++++++"></div><div id="GridControlFrame.send_values-expanded"><a name="L51"></a><tt class="py-lineno">51</tt>  <tt class="py-line">        <tt class="py-keyword">pass</tt> </tt>
+<a name="L52"></a><tt class="py-lineno">52</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">connected</tt><tt class="py-op">:</tt> </tt>
+<a name="L53"></a><tt class="py-lineno">53</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_controller</tt><tt class="py-op">.</tt><tt id="link-21" class="py-name" targets="Method VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.set_parameters()=VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController-class.html#set_parameters,Method VisionEgg.PyroApps.DropinServer.DropinMetaController.set_parameters()=VisionEgg.P [...]
+VisionEgg.PyroApps.DropinServer.DropinMetaController.set_parameters
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.set_parameters
+VisionEgg.PyroApps.GridServer.GridMetaController.set_parameters
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.set_parameters
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.set_parameters
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.set_parameters
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.set_parameters
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.set_parameters" class="py-name" href="#" onclick="return doclink('link-21', 'set_parameters', 'link-21');">set_parameters</a></tt><tt class="py-op">(</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt> <tt class="py-op">)</tt> </tt>
+</div><a name="L54"></a><tt class="py-lineno">54</tt>  <tt class="py-line"> </tt>
+<a name="GridControlFrame.get_duration_sec"></a><div id="GridControlFrame.get_duration_sec-def"><a name="L55"></a><tt class="py-lineno">55</tt> <a class="py-toggle" href="#" id="GridControlFrame.get_duration_sec-toggle" onclick="return toggle('GridControlFrame.get_duration_sec');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.GridGUI.GridControlFrame-class.html#get_duration_sec">get_duration_sec</a><tt class="py-op">(</tt><tt [...]
+</div><div id="GridControlFrame.get_duration_sec-collapsed" style="display:none;" pad="++" indent="++++++++"></div><div id="GridControlFrame.get_duration_sec-expanded"><a name="L56"></a><tt class="py-lineno">56</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-number">0.0</tt> </tt>
+</div></div><a name="L57"></a><tt class="py-lineno">57</tt>  <tt class="py-line"> </tt>
+<a name="L58"></a><tt class="py-lineno">58</tt>  <tt class="py-line"><tt class="py-keyword">if</tt> <tt class="py-name">__name__</tt><tt class="py-op">==</tt><tt class="py-string">'__main__'</tt><tt class="py-op">:</tt> </tt>
+<a name="L59"></a><tt class="py-lineno">59</tt>  <tt class="py-line">    <tt class="py-name">frame</tt> <tt class="py-op">=</tt> <tt id="link-22" class="py-name"><a title="VisionEgg.PyroApps.GridGUI.GridControlFrame" class="py-name" href="#" onclick="return doclink('link-22', 'GridControlFrame', 'link-11');">GridControlFrame</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L60"></a><tt class="py-lineno">60</tt>  <tt class="py-line">    <tt class="py-name">frame</tt><tt class="py-op">.</tt><tt class="py-name">pack</tt><tt class="py-op">(</tt><tt class="py-name">expand</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py-op">,</tt><tt class="py-name">fill</tt><tt class="py-op">=</tt><tt id="link-23" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-23', 'Tkinter', 'link-7');">Tki [...]
+<a name="L61"></a><tt class="py-lineno">61</tt>  <tt class="py-line">    <tt class="py-name">frame</tt><tt class="py-op">.</tt><tt class="py-name">winfo_toplevel</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-24" class="py-name"><a title="VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.title
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.title
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.title
+VisionEgg.PyroApps.GridGUI.GridControlFrame.title
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.title
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.title
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.title
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.title" class="py-name" href="#" onclick="return doclink('link-24', 'title', 'link-13');">title</a></tt><tt class="py-op">(</tt><tt class="py-string">"%s"</tt><tt class="py-op">%</tt><tt class="py-op">(</tt><tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">path</tt><tt class="py-op">.</tt><tt class="py-name">basename</tt><tt class="py-op">(</tt><tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">path</ [...]
+<a name="L62"></a><tt class="py-lineno">62</tt>  <tt class="py-line">    <tt class="py-name">frame</tt><tt class="py-op">.</tt><tt class="py-name">mainloop</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L63"></a><tt class="py-lineno">63</tt>  <tt class="py-line"> </tt><script type="text/javascript">
+<!--
+expandto(location.href);
+// -->
+</script>
+</pre>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:49 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.PyroApps.GridGUI.GridControlFrame-class.html b/doc/reference/html/VisionEgg.PyroApps.GridGUI.GridControlFrame-class.html
new file mode 100644
index 0000000..abb5fc0
--- /dev/null
+++ b/doc/reference/html/VisionEgg.PyroApps.GridGUI.GridControlFrame-class.html
@@ -0,0 +1,604 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.PyroApps.GridGUI.GridControlFrame</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.PyroApps-module.html">Package PyroApps</a> ::
+        <a href="VisionEgg.PyroApps.GridGUI-module.html">Module GridGUI</a> ::
+        Class GridControlFrame
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.PyroApps.GridGUI.GridControlFrame-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class GridControlFrame</h1><span class="codelink"><a href="VisionEgg.PyroApps.GridGUI-pysrc.html#GridControlFrame">source code</a></span><br /><br />
+<pre class="base-tree">
+      Tkinter.Misc --+                
+                     |                
+    Tkinter.BaseWidget --+            
+                         |            
+          Tkinter.Pack --+            
+                         |            
+         Tkinter.Place --+            
+                         |            
+          Tkinter.Grid --+            
+                         |            
+            Tkinter.Widget --+        
+                             |        
+                 Tkinter.Frame --+    
+                                 |    
+<a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html">EPhysGUIUtils.StimulusControlFrame</a> --+
+                                     |
+                                    <strong class="uidshort">GridControlFrame</strong>
+</pre>
+
+<hr />
+<!-- ==================== NESTED CLASSES ==================== -->
+<a name="section-NestedClasses"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Nested Classes</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>Tkinter.Misc</code></b>:
+      <code><a href="float-class.html">getdouble</a></code>,
+      <code><a href="int-class.html">getint</a></code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.PyroApps.GridGUI.GridControlFrame-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">master</span>=<span class="summary-sig-default">None</span>,
+        <span class="summary-sig-arg">suppress_go_buttons</span>=<span class="summary-sig-default">0</span>,
+        <span class="summary-sig-arg">**kw</span>)</span><br />
+      Construct a frame widget with the parent MASTER.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.GridGUI-pysrc.html#GridControlFrame.__init__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.PyroApps.GridGUI.GridControlFrame-class.html#get_shortname" class="summary-sig-name">get_shortname</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      Used as basename for saving parameter files</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.GridGUI-pysrc.html#GridControlFrame.get_shortname">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.PyroApps.GridGUI.GridControlFrame-class.html#update_tk_vars" class="summary-sig-name">update_tk_vars</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      Update Tkinter variables with (new) values from meta_params</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.GridGUI-pysrc.html#GridControlFrame.update_tk_vars">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.PyroApps.GridGUI.GridControlFrame-class.html#send_values" class="summary-sig-name">send_values</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">dummy_arg</span>=<span class="summary-sig-default">None</span>)</span><br />
+      Update meta_params variables with values from Tkinter fields</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.GridGUI-pysrc.html#GridControlFrame.send_values">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.PyroApps.GridGUI.GridControlFrame-class.html#get_duration_sec" class="summary-sig-name">get_duration_sec</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      Calculate total duration in go loop</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.GridGUI-pysrc.html#GridControlFrame.get_duration_sec">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html">EPhysGUIUtils.StimulusControlFrame</a></code></b>:
+      <code><a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#connect">connect</a></code>,
+      <code><a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#get_loopable_variable_names">get_loopable_variable_names</a></code>,
+      <code><a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#get_matlab_string">get_matlab_string</a></code>,
+      <code><a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#get_parameters_as_m_strings">get_parameters_as_m_strings</a></code>,
+      <code><a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#get_parameters_as_py_strings">get_parameters_as_py_strings</a></code>,
+      <code><a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#get_parameters_dict">get_parameters_dict</a></code>,
+      <code><a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#go">go</a></code>,
+      <code><a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#make_callback_entry">make_callback_entry</a></code>,
+      <code><a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#quit_server">quit_server</a></code>,
+      <code><a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#set_loopable_variable">set_loopable_variable</a></code>,
+      <code><a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#set_param_dict">set_param_dict</a></code>,
+      <code><a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#set_parameters_dict">set_parameters_dict</a></code>,
+      <code><a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#standalone_connect">standalone_connect</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>Tkinter.BaseWidget</code></b>:
+      <code>destroy</code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>Tkinter.Misc</code></b>:
+      <code>__getitem__</code>,
+      <code>__setitem__</code>,
+      <code>__str__</code>,
+      <code>after</code>,
+      <code>after_cancel</code>,
+      <code>after_idle</code>,
+      <code>bbox</code>,
+      <code>bell</code>,
+      <code>bind</code>,
+      <code>bind_all</code>,
+      <code>bind_class</code>,
+      <code>bindtags</code>,
+      <code>cget</code>,
+      <code>clipboard_append</code>,
+      <code>clipboard_clear</code>,
+      <code>clipboard_get</code>,
+      <code>colormodel</code>,
+      <code>columnconfigure</code>,
+      <code>config</code>,
+      <code>configure</code>,
+      <code>deletecommand</code>,
+      <code>event_add</code>,
+      <code>event_delete</code>,
+      <code>event_generate</code>,
+      <code>event_info</code>,
+      <code>focus</code>,
+      <code>focus_displayof</code>,
+      <code>focus_force</code>,
+      <code>focus_get</code>,
+      <code>focus_lastfor</code>,
+      <code>focus_set</code>,
+      <code>getboolean</code>,
+      <code>getvar</code>,
+      <code>grab_current</code>,
+      <code>grab_release</code>,
+      <code>grab_set</code>,
+      <code>grab_set_global</code>,
+      <code>grab_status</code>,
+      <code>grid_bbox</code>,
+      <code>grid_columnconfigure</code>,
+      <code>grid_location</code>,
+      <code>grid_propagate</code>,
+      <code>grid_rowconfigure</code>,
+      <code>grid_size</code>,
+      <code>grid_slaves</code>,
+      <code>image_names</code>,
+      <code>image_types</code>,
+      <code>keys</code>,
+      <code>lift</code>,
+      <code>lower</code>,
+      <code>mainloop</code>,
+      <code>nametowidget</code>,
+      <code>option_add</code>,
+      <code>option_clear</code>,
+      <code>option_get</code>,
+      <code>option_readfile</code>,
+      <code>pack_propagate</code>,
+      <code>pack_slaves</code>,
+      <code>place_slaves</code>,
+      <code>propagate</code>,
+      <code>quit</code>,
+      <code>register</code>,
+      <code>rowconfigure</code>,
+      <code>selection_clear</code>,
+      <code>selection_get</code>,
+      <code>selection_handle</code>,
+      <code>selection_own</code>,
+      <code>selection_own_get</code>,
+      <code>send</code>,
+      <code>setvar</code>,
+      <code>size</code>,
+      <code>slaves</code>,
+      <code>tk_bisque</code>,
+      <code>tk_focusFollowsMouse</code>,
+      <code>tk_focusNext</code>,
+      <code>tk_focusPrev</code>,
+      <code>tk_menuBar</code>,
+      <code>tk_setPalette</code>,
+      <code>tk_strictMotif</code>,
+      <code>tkraise</code>,
+      <code>unbind</code>,
+      <code>unbind_all</code>,
+      <code>unbind_class</code>,
+      <code>update</code>,
+      <code>update_idletasks</code>,
+      <code>wait_variable</code>,
+      <code>wait_visibility</code>,
+      <code>wait_window</code>,
+      <code>waitvar</code>,
+      <code>winfo_atom</code>,
+      <code>winfo_atomname</code>,
+      <code>winfo_cells</code>,
+      <code>winfo_children</code>,
+      <code>winfo_class</code>,
+      <code>winfo_colormapfull</code>,
+      <code>winfo_containing</code>,
+      <code>winfo_depth</code>,
+      <code>winfo_exists</code>,
+      <code>winfo_fpixels</code>,
+      <code>winfo_geometry</code>,
+      <code>winfo_height</code>,
+      <code>winfo_id</code>,
+      <code>winfo_interps</code>,
+      <code>winfo_ismapped</code>,
+      <code>winfo_manager</code>,
+      <code>winfo_name</code>,
+      <code>winfo_parent</code>,
+      <code>winfo_pathname</code>,
+      <code>winfo_pixels</code>,
+      <code>winfo_pointerx</code>,
+      <code>winfo_pointerxy</code>,
+      <code>winfo_pointery</code>,
+      <code>winfo_reqheight</code>,
+      <code>winfo_reqwidth</code>,
+      <code>winfo_rgb</code>,
+      <code>winfo_rootx</code>,
+      <code>winfo_rooty</code>,
+      <code>winfo_screen</code>,
+      <code>winfo_screencells</code>,
+      <code>winfo_screendepth</code>,
+      <code>winfo_screenheight</code>,
+      <code>winfo_screenmmheight</code>,
+      <code>winfo_screenmmwidth</code>,
+      <code>winfo_screenvisual</code>,
+      <code>winfo_screenwidth</code>,
+      <code>winfo_server</code>,
+      <code>winfo_toplevel</code>,
+      <code>winfo_viewable</code>,
+      <code>winfo_visual</code>,
+      <code>winfo_visualid</code>,
+      <code>winfo_visualsavailable</code>,
+      <code>winfo_vrootheight</code>,
+      <code>winfo_vrootwidth</code>,
+      <code>winfo_vrootx</code>,
+      <code>winfo_vrooty</code>,
+      <code>winfo_width</code>,
+      <code>winfo_x</code>,
+      <code>winfo_y</code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>Tkinter.Pack</code></b>:
+      <code>forget</code>,
+      <code>info</code>,
+      <code>pack</code>,
+      <code>pack_configure</code>,
+      <code>pack_forget</code>,
+      <code>pack_info</code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>Tkinter.Place</code></b>:
+      <code>place</code>,
+      <code>place_configure</code>,
+      <code>place_forget</code>,
+      <code>place_info</code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>Tkinter.Grid</code></b>:
+      <code>grid</code>,
+      <code>grid_configure</code>,
+      <code>grid_forget</code>,
+      <code>grid_info</code>,
+      <code>grid_remove</code>,
+      <code>location</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Class Variables</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="title"></a><span class="summary-name">title</span> = <code title=""Grid for 3D calibration"">"Grid for 3D calibration"</code>
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>Tkinter.Misc</code></b>:
+      <code>_noarg_</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Method Details</span></td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">master</span>=<span class="sig-default">None</span>,
+        <span class="sig-arg">suppress_go_buttons</span>=<span class="sig-default">0</span>,
+        <span class="sig-arg">**kw</span>)</span>
+    <br /><em class="fname">(Constructor)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.PyroApps.GridGUI-pysrc.html#GridControlFrame.__init__">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Construct a frame widget with the parent MASTER.
+
+Valid resource names: background, bd, bg, borderwidth, class,
+colormap, container, cursor, height, highlightbackground,
+highlightcolor, highlightthickness, relief, takefocus, visual, width.
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#__init__">EPhysGUIUtils.StimulusControlFrame.__init__</a>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="get_shortname"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">get_shortname</span>(<span class="sig-arg">self</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.PyroApps.GridGUI-pysrc.html#GridControlFrame.get_shortname">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Used as basename for saving parameter files
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#get_shortname">EPhysGUIUtils.StimulusControlFrame.get_shortname</a>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="update_tk_vars"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">update_tk_vars</span>(<span class="sig-arg">self</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.PyroApps.GridGUI-pysrc.html#GridControlFrame.update_tk_vars">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Update Tkinter variables with (new) values from meta_params
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#update_tk_vars">EPhysGUIUtils.StimulusControlFrame.update_tk_vars</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="send_values"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">send_values</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">dummy_arg</span>=<span class="sig-default">None</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.PyroApps.GridGUI-pysrc.html#GridControlFrame.send_values">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Update meta_params variables with values from Tkinter fields
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#send_values">EPhysGUIUtils.StimulusControlFrame.send_values</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="get_duration_sec"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">get_duration_sec</span>(<span class="sig-arg">self</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.PyroApps.GridGUI-pysrc.html#GridControlFrame.get_duration_sec">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Calculate total duration in go loop
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#get_duration_sec">EPhysGUIUtils.StimulusControlFrame.get_duration_sec</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.PyroApps.GridGUI.GridMetaParameters-class.html b/doc/reference/html/VisionEgg.PyroApps.GridGUI.GridMetaParameters-class.html
new file mode 100644
index 0000000..8154fd0
--- /dev/null
+++ b/doc/reference/html/VisionEgg.PyroApps.GridGUI.GridMetaParameters-class.html
@@ -0,0 +1,139 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.PyroApps.GridGUI.GridMetaParameters</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.PyroApps-module.html">Package PyroApps</a> ::
+        <a href="VisionEgg.PyroApps.GridGUI-module.html">Module GridGUI</a> ::
+        Class GridMetaParameters
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.PyroApps.GridGUI.GridMetaParameters-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class GridMetaParameters</h1><span class="codelink"><a href="VisionEgg.PyroApps.GridGUI-pysrc.html#GridMetaParameters">source code</a></span><br /><br />
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__init__"></a><span class="summary-sig-name">__init__</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.GridGUI-pysrc.html#GridMetaParameters.__init__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.PyroApps.GridServer-module.html b/doc/reference/html/VisionEgg.PyroApps.GridServer-module.html
new file mode 100644
index 0000000..b1dc62d
--- /dev/null
+++ b/doc/reference/html/VisionEgg.PyroApps.GridServer-module.html
@@ -0,0 +1,223 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.PyroApps.GridServer</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.PyroApps-module.html">Package PyroApps</a> ::
+        Module GridServer
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.PyroApps.GridServer-module.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== MODULE DESCRIPTION ==================== -->
+<h1 class="epydoc">Module GridServer</h1><span class="codelink"><a href="VisionEgg.PyroApps.GridServer-pysrc.html">source code</a></span><br /><br />
+<!-- ==================== CLASSES ==================== -->
+<a name="section-Classes"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Classes</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.PyroApps.GridServer.GridMetaController-class.html" class="summary-name">GridMetaController</a>
+    </td>
+  </tr>
+</table>
+<!-- ==================== FUNCTIONS ==================== -->
+<a name="section-Functions"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Functions</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="get_meta_controller_class"></a><span class="summary-sig-name">get_meta_controller_class</span>()</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.GridServer-pysrc.html#get_meta_controller_class">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="make_stimuli"></a><span class="summary-sig-name">make_stimuli</span>()</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.GridServer-pysrc.html#make_stimuli">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="get_meta_controller_stimkey"></a><span class="summary-sig-name">get_meta_controller_stimkey</span>()</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.GridServer-pysrc.html#get_meta_controller_stimkey">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+</table>
+<!-- ==================== VARIABLES ==================== -->
+<a name="section-Variables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Variables</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="__version__"></a><span class="summary-name">__version__</span> = <code title="'1.1.dev'">'1.1.dev'</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="__cvs__"></a><span class="summary-name">__cvs__</span> = <code title="string.split('$Revision$') [1]">string.split('$Revision$') [1]</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="__date__"></a><span class="summary-name">__date__</span> = <code title="string.join(string.split('$Date$') [1: 3], ' ')">string.join(string.split('$Date$') [1: 3], ' ')</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="__author__"></a><span class="summary-name">__author__</span> = <code title="'Andrew Straw <astraw at users.sourceforge.net>'">'Andrew Straw <astraw at users.sourceforge.net>'</code>
+    </td>
+  </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.PyroApps.GridServer-pysrc.html b/doc/reference/html/VisionEgg.PyroApps.GridServer-pysrc.html
new file mode 100644
index 0000000..4462ef7
--- /dev/null
+++ b/doc/reference/html/VisionEgg.PyroApps.GridServer-pysrc.html
@@ -0,0 +1,459 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.PyroApps.GridServer</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.PyroApps-module.html">Package PyroApps</a> ::
+        Module GridServer
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.PyroApps.GridServer-pysrc.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<h1 class="epydoc">Source Code for <a href="VisionEgg.PyroApps.GridServer-module.html">Module VisionEgg.PyroApps.GridServer</a></h1>
+<pre class="py-src">
+<a name="L1"></a><tt class="py-lineno">  1</tt>  <tt class="py-line"><tt class="py-comment">#!/usr/bin/env python</tt> </tt>
+<a name="L2"></a><tt class="py-lineno">  2</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L3"></a><tt class="py-lineno">  3</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># The Vision Egg: GridServer</tt> </tt>
+<a name="L4"></a><tt class="py-lineno">  4</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L5"></a><tt class="py-lineno">  5</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Copyright (C) 2001-2003 Andrew Straw.</tt> </tt>
+<a name="L6"></a><tt class="py-lineno">  6</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Author: Andrew Straw <astraw at users.sourceforge.net></tt> </tt>
+<a name="L7"></a><tt class="py-lineno">  7</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># URL: <http://www.visionegg.org/></tt> </tt>
+<a name="L8"></a><tt class="py-lineno">  8</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L9"></a><tt class="py-lineno">  9</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Distributed under the terms of the GNU Lesser General Public License</tt> </tt>
+<a name="L10"></a><tt class="py-lineno"> 10</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># (LGPL). See LICENSE.TXT that came with this file.</tt> </tt>
+<a name="L11"></a><tt class="py-lineno"> 11</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L12"></a><tt class="py-lineno"> 12</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># $Id$</tt> </tt>
+<a name="L13"></a><tt class="py-lineno"> 13</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L14"></a><tt class="py-lineno"> 14</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-0" class="py-name" targets="Package VisionEgg=VisionEgg-module.html"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-0', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">,</tt> <tt class="py-name">string</tt> </tt>
+<a name="L15"></a><tt class="py-lineno"> 15</tt>  <tt class="py-line"><tt id="link-1" class="py-name" targets="Variable VisionEgg.DaqKeyboard.__version__=VisionEgg.DaqKeyboard-module.html#__version__,Variable VisionEgg.DaqLPT.__version__=VisionEgg.DaqLPT-module.html#__version__,Variable VisionEgg.GL.__version__=VisionEgg.GL-module.html#__version__,Variable VisionEgg.PyroApps.EPhysGUI.__version__=VisionEgg.PyroApps.EPhysGUI-module.html#__version__,Variable VisionEgg.PyroApps.EPhysGUIUtils [...]
+VisionEgg.DaqLPT.__version__
+VisionEgg.GL.__version__
+VisionEgg.PyroApps.EPhysGUI.__version__
+VisionEgg.PyroApps.EPhysGUIUtils.__version__
+VisionEgg.PyroApps.EPhysServer.__version__
+VisionEgg.PyroApps.GridGUI.__version__
+VisionEgg.PyroApps.GridServer.__version__
+VisionEgg.PyroApps.ScreenPositionGUI.__version__
+VisionEgg.PyroApps.ScreenPositionServer.__version__
+VisionEgg.PyroApps.SpinningDrumGUI.__version__
+VisionEgg.PyroApps.SpinningDrumServer.__version__
+VisionEgg.PyroHelpers.__version__
+VisionEgg.QuickTime.__version__
+VisionEgg.ResponseControl.__version__
+VisionEgg.SphereMap.__version__
+VisionEgg.TCPController.__version__" class="py-name" href="#" onclick="return doclink('link-1', '__version__', 'link-1');">__version__</a></tt> <tt class="py-op">=</tt> <tt id="link-2" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-2', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-3" class="py-name" targets="Variable VisionEgg.release_name=VisionEgg-module.html#release_name"><a title="VisionEgg.release_name" c [...]
+<a name="L16"></a><tt class="py-lineno"> 16</tt>  <tt class="py-line"><tt id="link-4" class="py-name" targets="Variable VisionEgg.PyroApps.ColorCalGUI.__cvs__=VisionEgg.PyroApps.ColorCalGUI-module.html#__cvs__,Variable VisionEgg.PyroApps.ColorCalServer.__cvs__=VisionEgg.PyroApps.ColorCalServer-module.html#__cvs__,Variable VisionEgg.PyroApps.EPhysGUI.__cvs__=VisionEgg.PyroApps.EPhysGUI-module.html#__cvs__,Variable VisionEgg.PyroApps.EPhysGUIUtils.__cvs__=VisionEgg.PyroApps.EPhysGUIUtils-m [...]
+VisionEgg.PyroApps.ColorCalServer.__cvs__
+VisionEgg.PyroApps.EPhysGUI.__cvs__
+VisionEgg.PyroApps.EPhysGUIUtils.__cvs__
+VisionEgg.PyroApps.EPhysServer.__cvs__
+VisionEgg.PyroApps.FlatGratingGUI.__cvs__
+VisionEgg.PyroApps.FlatGratingServer.__cvs__
+VisionEgg.PyroApps.GridGUI.__cvs__
+VisionEgg.PyroApps.GridServer.__cvs__
+VisionEgg.PyroApps.MouseTargetGUI.__cvs__
+VisionEgg.PyroApps.MouseTargetServer.__cvs__
+VisionEgg.PyroApps.ScreenPositionGUI.__cvs__
+VisionEgg.PyroApps.ScreenPositionServer.__cvs__
+VisionEgg.PyroApps.SphereGratingGUI.__cvs__
+VisionEgg.PyroApps.SphereGratingServer.__cvs__
+VisionEgg.PyroApps.SpinningDrumGUI.__cvs__
+VisionEgg.PyroApps.SpinningDrumServer.__cvs__
+VisionEgg.PyroApps.TargetGUI.__cvs__
+VisionEgg.PyroApps.TargetServer.__cvs__
+VisionEgg.PyroClient.__cvs__
+VisionEgg.PyroHelpers.__cvs__
+VisionEgg.TCPController.__cvs__" class="py-name" href="#" onclick="return doclink('link-4', '__cvs__', 'link-4');">__cvs__</a></tt> <tt class="py-op">=</tt> <tt class="py-name">string</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'$Revision$'</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
+<a name="L17"></a><tt class="py-lineno"> 17</tt>  <tt class="py-line"><tt id="link-5" class="py-name" targets="Variable VisionEgg.PyroApps.ColorCalGUI.__date__=VisionEgg.PyroApps.ColorCalGUI-module.html#__date__,Variable VisionEgg.PyroApps.ColorCalServer.__date__=VisionEgg.PyroApps.ColorCalServer-module.html#__date__,Variable VisionEgg.PyroApps.EPhysGUI.__date__=VisionEgg.PyroApps.EPhysGUI-module.html#__date__,Variable VisionEgg.PyroApps.EPhysGUIUtils.__date__=VisionEgg.PyroApps.EPhysGUI [...]
+VisionEgg.PyroApps.ColorCalServer.__date__
+VisionEgg.PyroApps.EPhysGUI.__date__
+VisionEgg.PyroApps.EPhysGUIUtils.__date__
+VisionEgg.PyroApps.EPhysServer.__date__
+VisionEgg.PyroApps.FlatGratingGUI.__date__
+VisionEgg.PyroApps.FlatGratingServer.__date__
+VisionEgg.PyroApps.GridGUI.__date__
+VisionEgg.PyroApps.GridServer.__date__
+VisionEgg.PyroApps.MouseTargetGUI.__date__
+VisionEgg.PyroApps.MouseTargetServer.__date__
+VisionEgg.PyroApps.ScreenPositionGUI.__date__
+VisionEgg.PyroApps.ScreenPositionServer.__date__
+VisionEgg.PyroApps.SphereGratingGUI.__date__
+VisionEgg.PyroApps.SphereGratingServer.__date__
+VisionEgg.PyroApps.SpinningDrumGUI.__date__
+VisionEgg.PyroApps.SpinningDrumServer.__date__
+VisionEgg.PyroApps.TargetGUI.__date__
+VisionEgg.PyroApps.TargetServer.__date__
+VisionEgg.PyroClient.__date__
+VisionEgg.PyroHelpers.__date__
+VisionEgg.TCPController.__date__" class="py-name" href="#" onclick="return doclink('link-5', '__date__', 'link-5');">__date__</a></tt> <tt class="py-op">=</tt> <tt class="py-name">string</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">string</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'$Date$'</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt  [...]
+<a name="L18"></a><tt class="py-lineno"> 18</tt>  <tt class="py-line"><tt id="link-6" class="py-name" targets="Variable VisionEgg.PyroApps.EPhysGUI.__author__=VisionEgg.PyroApps.EPhysGUI-module.html#__author__,Variable VisionEgg.PyroApps.EPhysGUIUtils.__author__=VisionEgg.PyroApps.EPhysGUIUtils-module.html#__author__,Variable VisionEgg.PyroApps.EPhysServer.__author__=VisionEgg.PyroApps.EPhysServer-module.html#__author__,Variable VisionEgg.PyroApps.GridGUI.__author__=VisionEgg.PyroApps.Gr [...]
+VisionEgg.PyroApps.EPhysGUIUtils.__author__
+VisionEgg.PyroApps.EPhysServer.__author__
+VisionEgg.PyroApps.GridGUI.__author__
+VisionEgg.PyroApps.GridServer.__author__
+VisionEgg.PyroApps.SpinningDrumGUI.__author__
+VisionEgg.PyroApps.SpinningDrumServer.__author__" class="py-name" href="#" onclick="return doclink('link-6', '__author__', 'link-6');">__author__</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'Andrew Straw <astraw at users.sourceforge.net>'</tt> </tt>
+<a name="L19"></a><tt class="py-lineno"> 19</tt>  <tt class="py-line"> </tt>
+<a name="L20"></a><tt class="py-lineno"> 20</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">sys</tt><tt class="py-op">,</tt> <tt class="py-name">os</tt><tt class="py-op">,</tt> <tt class="py-name">math</tt> </tt>
+<a name="L21"></a><tt class="py-lineno"> 21</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-7" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-7', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-8" class="py-name" targets="Module VisionEgg.Core=VisionEgg.Core-module.html"><a title="VisionEgg.Core" class="py-name" href="#" onclick="return doclink('link-8', 'Core', 'link-8');">Core</a></tt> </tt>
+<a name="L22"></a><tt class="py-lineno"> 22</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-9" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-9', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-10" class="py-name" targets="Module VisionEgg.FlowControl=VisionEgg.FlowControl-module.html"><a title="VisionEgg.FlowControl" class="py-name" href="#" onclick="return doclink('link-10', 'FlowCont [...]
+<a name="L23"></a><tt class="py-lineno"> 23</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-11" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-11', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-12" class="py-name" targets="Module VisionEgg.Textures=VisionEgg.Textures-module.html"><a title="VisionEgg.Textures" class="py-name" href="#" onclick="return doclink('link-12', 'Textures', 'lin [...]
+<a name="L24"></a><tt class="py-lineno"> 24</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-13" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-13', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-14" class="py-name" targets="Module VisionEgg.SphereMap=VisionEgg.SphereMap-module.html,Class VisionEgg.SphereMap.SphereMap=VisionEgg.SphereMap.SphereMap-class.html"><a title="VisionEgg.SphereMap
+VisionEgg.SphereMap.SphereMap" class="py-name" href="#" onclick="return doclink('link-14', 'SphereMap', 'link-14');">SphereMap</a></tt> </tt>
+<a name="L25"></a><tt class="py-lineno"> 25</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-15" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-15', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-16" class="py-name" targets="Module VisionEgg.PyroHelpers=VisionEgg.PyroHelpers-module.html"><a title="VisionEgg.PyroHelpers" class="py-name" href="#" onclick="return doclink('link-16', 'PyroHe [...]
+<a name="L26"></a><tt class="py-lineno"> 26</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">Pyro</tt><tt class="py-op">.</tt><tt class="py-name">core</tt> </tt>
+<a name="L27"></a><tt class="py-lineno"> 27</tt>  <tt class="py-line"> </tt>
+<a name="L28"></a><tt class="py-lineno"> 28</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-17" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-17', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-18" class="py-name" targets="Package VisionEgg.PyroApps=VisionEgg.PyroApps-module.html"><a title="VisionEgg.PyroApps" class="py-name" href="#" onclick="return doclink('link-18', 'PyroApps', 'link [...]
+<a name="L29"></a><tt class="py-lineno"> 29</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-21" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-21', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-22" class="py-name"><a title="VisionEgg.PyroApps" class="py-name" href="#" onclick="return doclink('link-22', 'PyroApps', 'link-18');">PyroApps</a></tt><tt class="py-op">.</tt><tt id="link-23" cl [...]
+<a name="L30"></a><tt class="py-lineno"> 30</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-25" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-25', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-26" class="py-name"><a title="VisionEgg.PyroApps" class="py-name" href="#" onclick="return doclink('link-26', 'PyroApps', 'link-18');">PyroApps</a></tt><tt class="py-op">.</tt><tt id="link-27" cl [...]
+<a name="L31"></a><tt class="py-lineno"> 31</tt>  <tt class="py-line"> </tt>
+<a name="GridMetaController"></a><div id="GridMetaController-def"><a name="L32"></a><tt class="py-lineno"> 32</tt> <a class="py-toggle" href="#" id="GridMetaController-toggle" onclick="return toggle('GridMetaController');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.PyroApps.GridServer.GridMetaController-class.html">GridMetaController</a><tt class="py-op">(</tt> <tt class="py-base-class">Pyro</tt><tt class="py-op">.</tt><tt class="py- [...]
+</div><div id="GridMetaController-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="GridMetaController-expanded"><a name="GridMetaController.__init__"></a><div id="GridMetaController.__init__-def"><a name="L33"></a><tt class="py-lineno"> 33</tt> <a class="py-toggle" href="#" id="GridMetaController.__init__-toggle" onclick="return toggle('GridMetaController.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEg [...]
+</div><div id="GridMetaController.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="GridMetaController.__init__-expanded"><a name="L34"></a><tt class="py-lineno"> 34</tt>  <tt class="py-line"> </tt>
+<a name="L35"></a><tt class="py-lineno"> 35</tt>  <tt class="py-line">        <tt class="py-comment"># get the instance of Stimulus that was created</tt> </tt>
+<a name="L36"></a><tt class="py-lineno"> 36</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">assert</tt><tt class="py-op">(</tt> <tt class="py-name">stimuli</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-string">'3d_perspective_with_set_viewport_callback'</tt> <tt class="py-op">)</tt> </tt>
+<a name="L37"></a><tt class="py-lineno"> 37</tt>  <tt class="py-line">        <tt class="py-name">grid</tt> <tt class="py-op">=</tt> <tt class="py-name">stimuli</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
+<a name="L38"></a><tt class="py-lineno"> 38</tt>  <tt class="py-line">         </tt>
+<a name="L39"></a><tt class="py-lineno"> 39</tt>  <tt class="py-line">        <tt class="py-name">Pyro</tt><tt class="py-op">.</tt><tt class="py-name">core</tt><tt class="py-op">.</tt><tt class="py-name">ObjBase</tt><tt class="py-op">.</tt><tt id="link-29" class="py-name" targets="Method VisionEgg.ClassWithParameters.__init__()=VisionEgg.ClassWithParameters-class.html#__init__,Method VisionEgg.Configuration.Config.__init__()=VisionEgg.Configuration.Config-class.html#__init__,Method Visio [...]
+VisionEgg.Configuration.Config.__init__
+VisionEgg.Core.FixationSpot.__init__
+VisionEgg.Core.FrameTimer.__init__
+VisionEgg.Core.ModelView.__init__
+VisionEgg.Core.OrthographicProjection.__init__
+VisionEgg.Core.OrthographicProjectionNoZClip.__init__
+VisionEgg.Core.PerspectiveProjection.__init__
+VisionEgg.Core.Projection.__init__
+VisionEgg.Core.ProjectionBaseClass.__init__
+VisionEgg.Core.Screen.__init__
+VisionEgg.Core.SimplePerspectiveProjection.__init__
+VisionEgg.Core.Stimulus.__init__
+VisionEgg.Core.Viewport.__init__
+VisionEgg.Daq.Channel.__init__
+VisionEgg.Daq.DaqMode.__init__
+VisionEgg.Daq.Device.__init__
+VisionEgg.Daq.Functionality.__init__
+VisionEgg.Daq.SignalType.__init__
+VisionEgg.DaqKeyboard.KeyboardTriggerInController.__init__
+VisionEgg.DaqLPT.LPTChannel.__init__
+VisionEgg.DaqLPT.LPTDevice.__init__
+VisionEgg.DaqLPT.LPTTriggerInController.__init__
+VisionEgg.DaqLPT.LPTTriggerOutController.__init__
+VisionEgg.Deprecated.Message.__init__
+VisionEgg.Dots.DotArea2D.__init__
+VisionEgg.FlowControl.ConstantController.__init__
+VisionEgg.FlowControl.Controller.__init__
+VisionEgg.FlowControl.EncapsulatedController.__init__
+VisionEgg.FlowControl.EvalStringController.__init__
+VisionEgg.FlowControl.ExecStringController.__init__
+VisionEgg.FlowControl.FunctionController.__init__
+VisionEgg.FlowControl.Presentation.__init__
+VisionEgg.GLTrace.Wrapper.__init__
+VisionEgg.GUI.AppWindow.__init__
+VisionEgg.GUI.GetKeypressDialog.__init__
+VisionEgg.GUI.GraphicsConfigurationWindow.__init__
+VisionEgg.GUI.InfoFrame.__init__
+VisionEgg.GUI.ProgressBar.__init__
+VisionEgg.GUI.ToplevelDialog.__init__
+VisionEgg.Gratings.SinGrating2D.__init__
+VisionEgg.Gratings.SinGrating3D.__init__
+VisionEgg.MoreStimuli.Arrow.__init__
+VisionEgg.MoreStimuli.FilledCircle.__init__
+VisionEgg.MoreStimuli.Rectangle3D.__init__
+VisionEgg.MoreStimuli.Target2D.__init__
+VisionEgg.ParameterTypes.AnyOf.__init__
+VisionEgg.ParameterTypes.Instance.__init__
+VisionEgg.ParameterTypes.Sequence.__init__
+VisionEgg.ParameterTypes.SubClass.__init__
+VisionEgg.PyroApps.AST_ext.AST_Visitor.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalMetaParameters.__init__
+VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.__init__
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.__init__
+VisionEgg.PyroApps.DropinGUI.DropinMetaParameters.__init__
+VisionEgg.PyroApps.DropinServer.DropinMetaController.__init__
+VisionEgg.PyroApps.EPhysGUI.AppWindow.__init__
+VisionEgg.PyroApps.EPhysGUI.BarButton.__init__
+VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase.__init__
+VisionEgg.PyroApps.EPhysGUI.GammaFrame.__init__
+VisionEgg.PyroApps.EPhysGUI.ImageSequenceLauncher.__init__
+VisionEgg.PyroApps.EPhysGUI.Loop.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopContainedObject.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopParamDialog.__init__
+VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.__init__
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.__init__
+VisionEgg.PyroApps.EPhysServer.EPhysServer.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingMetaParameters.__init__
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.GridGUI.GridControlFrame.__init__
+VisionEgg.PyroApps.GridGUI.GridMetaParameters.__init__
+VisionEgg.PyroApps.GridServer.GridMetaController.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetMetaParameters.__init__
+VisionEgg.PyroApps.MouseTargetServer.MousePositionController.__init__
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetOrientationController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetPositionController.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.CallbackEntry.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionParameters.__init__
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingMetaParameters.__init__
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumMetaParameters.__init__
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.__init__
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.__init__
+VisionEgg.PyroApps.TargetGUI.TargetMetaParameters.__init__
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.__init__
+VisionEgg.PyroClient.PyroClient.__init__
+VisionEgg.PyroHelpers.PyroConstantController.__init__
+VisionEgg.PyroHelpers.PyroEncapsulatedController.__init__
+VisionEgg.PyroHelpers.PyroEvalStringController.__init__
+VisionEgg.PyroHelpers.PyroExecStringController.__init__
+VisionEgg.PyroHelpers.PyroListenController.__init__
+VisionEgg.PyroHelpers.PyroLocalDictController.__init__
+VisionEgg.PyroHelpers.PyroServer.__init__
+VisionEgg.QuickTime.MovieTexture.__init__
+VisionEgg.ResponseControl.KeyboardResponseController.__init__
+VisionEgg.ResponseControl.ResponseController.__init__
+VisionEgg.SphereMap.AzElGrid.__init__
+VisionEgg.SphereMap.SphereGrating.__init__
+VisionEgg.SphereMap.SphereMap.__init__
+VisionEgg.SphereMap.SphereWindow.__init__
+VisionEgg.TCPController.SocketListenController.__init__
+VisionEgg.TCPController.TCPController.__init__
+VisionEgg.TCPController.TCPServer.__init__
+VisionEgg.Text.BitmapText.__init__
+VisionEgg.Text.GlutTextBase.__init__
+VisionEgg.Text.StrokeText.__init__
+VisionEgg.Text.Text.__init__
+VisionEgg.Textures.FixationCross.__init__
+VisionEgg.Textures.Mask2D.__init__
+VisionEgg.Textures.SpinningDrum.__init__
+VisionEgg.Textures.Texture.__init__
+VisionEgg.Textures.TextureFromFile.__init__
+VisionEgg.Textures.TextureObject.__init__
+VisionEgg.Textures.TextureStimulusBaseClass.__init__
+VisionEgg.ThreeDeeMath.TransformMatrix.__init__
+VisionEgg.WrappedText.WrappedText.__init__
+VisionEgg.qtmovie.Movie.__init__
+VisionEgg.qtmovie.Rect.__init__" class="py-name" href="#" onclick="return doclink('link-29', '__init__', 'link-29');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
+<a name="L40"></a><tt class="py-lineno"> 40</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt> <tt class="py-op">=</tt> <tt id="link-30" class="py-name"><a title="VisionEgg.PyroApps.GridGUI.GridMetaParameters" class="py-name" href="#" onclick="return doclink('link-30', 'GridMetaParameters', 'link-28');">GridMetaParameters</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L41"></a><tt class="py-lineno"> 41</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">screen</tt><tt class="py-op">,</tt><tt id="link-31" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-31', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-32" class="py-name"><a title="VisionEgg.Cor [...]
+<a name="L42"></a><tt class="py-lineno"> 42</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">"Expecting instance of VisionEgg.Core.Screen"</tt><tt class="py-op">)</tt> </tt>
+<a name="L43"></a><tt class="py-lineno"> 43</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">presentation</tt><tt class="py-op">,</tt><tt id="link-34" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-34', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-35" class="py-name"><a title="VisionE [...]
+<a name="L44"></a><tt class="py-lineno"> 44</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">"Expecting instance of VisionEgg.FlowControl.Presentation"</tt><tt class="py-op">)</tt> </tt>
+<a name="L45"></a><tt class="py-lineno"> 45</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">grid</tt><tt class="py-op">,</tt><tt id="link-37" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-37', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-38" class="py-name"><a title="VisionEgg.SphereMap
+VisionEgg.SphereMap.SphereMap" class="py-name" href="#" onclick="return doclink('link-38', 'SphereMap', 'link-14');">SphereMap</a></tt><tt class="py-op">.</tt><tt id="link-39" class="py-name" targets="Class VisionEgg.SphereMap.AzElGrid=VisionEgg.SphereMap.AzElGrid-class.html"><a title="VisionEgg.SphereMap.AzElGrid" class="py-name" href="#" onclick="return doclink('link-39', 'AzElGrid', 'link-39');">AzElGrid</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L46"></a><tt class="py-lineno"> 46</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">"Expecting instance of VisionEgg.SphereMap.SphereMap"</tt><tt class="py-op">)</tt> </tt>
+<a name="L47"></a><tt class="py-lineno"> 47</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">p</tt> <tt class="py-op">=</tt> <tt class="py-name">presentation</tt> </tt>
+<a name="L48"></a><tt class="py-lineno"> 48</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stim</tt> <tt class="py-op">=</tt> <tt class="py-name">grid</tt> </tt>
+<a name="L49"></a><tt class="py-lineno"> 49</tt>  <tt class="py-line"> </tt>
+<a name="L50"></a><tt class="py-lineno"> 50</tt>  <tt class="py-line">        <tt class="py-name">screen</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">bgcolor</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-number">1.0</tt><tt class="py-op">,</tt> <tt class="py-number">1.0</tt><tt class="py-op">,</tt> <tt class="py-number">1.0</tt><tt class="py-op">,</tt> <tt class="py-number">0.0</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L51"></a><tt class="py-lineno"> 51</tt>  <tt class="py-line"> </tt>
+<a name="GridMetaController.get_parameters"></a><div id="GridMetaController.get_parameters-def"><a name="L52"></a><tt class="py-lineno"> 52</tt> <a class="py-toggle" href="#" id="GridMetaController.get_parameters-toggle" onclick="return toggle('GridMetaController.get_parameters');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.GridServer.GridMetaController-class.html#get_parameters">get_parameters</a><tt class="py-op">(</tt>< [...]
+</div><div id="GridMetaController.get_parameters-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="GridMetaController.get_parameters-expanded"><a name="L53"></a><tt class="py-lineno"> 53</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt> </tt>
+</div><a name="L54"></a><tt class="py-lineno"> 54</tt>  <tt class="py-line"> </tt>
+<a name="GridMetaController.set_parameters"></a><div id="GridMetaController.set_parameters-def"><a name="L55"></a><tt class="py-lineno"> 55</tt> <a class="py-toggle" href="#" id="GridMetaController.set_parameters-toggle" onclick="return toggle('GridMetaController.set_parameters');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.GridServer.GridMetaController-class.html#set_parameters">set_parameters</a><tt class="py-op">(</tt>< [...]
+</div><div id="GridMetaController.set_parameters-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="GridMetaController.set_parameters-expanded"><a name="L56"></a><tt class="py-lineno"> 56</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">new_parameters</tt><tt class="py-op">,</tt> <tt id="link-40" class="py-name"><a title="VisionEgg.PyroApps.GridGUI.GridMetaParameters" c [...]
+<a name="L57"></a><tt class="py-lineno"> 57</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt> <tt class="py-op">=</tt> <tt class="py-name">new_parameters</tt> </tt>
+<a name="L58"></a><tt class="py-lineno"> 58</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L59"></a><tt class="py-lineno"> 59</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">"Argument to set_parameters must be instance of GridMetaParameters"</tt><tt class="py-op">)</tt> </tt>
+<a name="L60"></a><tt class="py-lineno"> 60</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-41" class="py-name" targets="Method VisionEgg.GUI.InfoFrame.update()=VisionEgg.GUI.InfoFrame-class.html#update,Method VisionEgg.GUI.ProgressBar.update()=VisionEgg.GUI.ProgressBar-class.html#update,Method VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.update()=VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController-class.html#update,Met [...]
+VisionEgg.GUI.ProgressBar.update
+VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.update
+VisionEgg.PyroApps.DropinServer.DropinMetaController.update
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.update
+VisionEgg.PyroApps.GridServer.GridMetaController.update
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.update
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.update
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.update
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.update
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.update
+VisionEgg.QuickTime.MovieTexture.update
+VisionEgg.Textures.Texture.update" class="py-name" href="#" onclick="return doclink('link-41', 'update', 'link-41');">update</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L61"></a><tt class="py-lineno"> 61</tt>  <tt class="py-line">         </tt>
+<a name="GridMetaController.update"></a><div id="GridMetaController.update-def"><a name="L62"></a><tt class="py-lineno"> 62</tt> <a class="py-toggle" href="#" id="GridMetaController.update-toggle" onclick="return toggle('GridMetaController.update');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.GridServer.GridMetaController-class.html#update">update</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">) [...]
+</div><div id="GridMetaController.update-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="GridMetaController.update-expanded"><a name="L63"></a><tt class="py-lineno"> 63</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">go_duration</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt> <tt class="p [...]
+</div><a name="L64"></a><tt class="py-lineno"> 64</tt>  <tt class="py-line"> </tt>
+<a name="GridMetaController.go"></a><div id="GridMetaController.go-def"><a name="L65"></a><tt class="py-lineno"> 65</tt> <a class="py-toggle" href="#" id="GridMetaController.go-toggle" onclick="return toggle('GridMetaController.go');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.GridServer.GridMetaController-class.html#go">go</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">: [...]
+</div><div id="GridMetaController.go-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="GridMetaController.go-expanded"><a name="L66"></a><tt class="py-lineno"> 66</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">enter_go_loop</tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt>
+</div><a name="L67"></a><tt class="py-lineno"> 67</tt>  <tt class="py-line"> </tt>
+<a name="GridMetaController.quit_server"></a><div id="GridMetaController.quit_server-def"><a name="L68"></a><tt class="py-lineno"> 68</tt> <a class="py-toggle" href="#" id="GridMetaController.quit_server-toggle" onclick="return toggle('GridMetaController.quit_server');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.GridServer.GridMetaController-class.html#quit_server">quit_server</a><tt class="py-op">(</tt><tt class="py-param [...]
+</div><div id="GridMetaController.quit_server-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="GridMetaController.quit_server-expanded"><a name="L69"></a><tt class="py-lineno"> 69</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt id="link-42" class="py-name" targets="Method VisionEgg.PyroApps.EPhysGUI.AppWindow.qu [...]
+</div></div><a name="L70"></a><tt class="py-lineno"> 70</tt>  <tt class="py-line"> </tt>
+<a name="get_meta_controller_class"></a><div id="get_meta_controller_class-def"><a name="L71"></a><tt class="py-lineno"> 71</tt> <a class="py-toggle" href="#" id="get_meta_controller_class-toggle" onclick="return toggle('get_meta_controller_class');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.GridServer-module.html#get_meta_controller_class">get_meta_controller_class</a><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class [...]
+</div><div id="get_meta_controller_class-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="get_meta_controller_class-expanded"><a name="L72"></a><tt class="py-lineno"> 72</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt id="link-43" class="py-name" targets="Class VisionEgg.PyroApps.GridServer.GridMetaController=VisionEgg.PyroApps.GridServer.GridMetaController-class.html"><a title="VisionEgg.PyroApps.GridServer.GridMetaController" class="py-name"  [...]
+</div><a name="L73"></a><tt class="py-lineno"> 73</tt>  <tt class="py-line"> </tt>
+<a name="make_stimuli"></a><div id="make_stimuli-def"><a name="L74"></a><tt class="py-lineno"> 74</tt> <a class="py-toggle" href="#" id="make_stimuli-toggle" onclick="return toggle('make_stimuli');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.GridServer-module.html#make_stimuli">make_stimuli</a><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="make_stimuli-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="make_stimuli-expanded"><a name="L75"></a><tt class="py-lineno"> 75</tt>  <tt class="py-line">    <tt class="py-name">stimulus</tt> <tt class="py-op">=</tt> <tt id="link-44" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-44', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-45" class="py-name"><a title="VisionEgg.SphereMap
+VisionEgg.SphereMap.SphereMap" class="py-name" href="#" onclick="return doclink('link-45', 'SphereMap', 'link-14');">SphereMap</a></tt><tt class="py-op">.</tt><tt id="link-46" class="py-name"><a title="VisionEgg.SphereMap.AzElGrid" class="py-name" href="#" onclick="return doclink('link-46', 'AzElGrid', 'link-39');">AzElGrid</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L76"></a><tt class="py-lineno"> 76</tt>  <tt class="py-line">    <tt class="py-keyword">def</tt> <tt class="py-def-name">set_az_el_grid_viewport</tt><tt class="py-op">(</tt><tt class="py-param">viewport</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L77"></a><tt class="py-lineno"> 77</tt>  <tt class="py-line">        <tt class="py-name">stimulus</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">my_viewport</tt> <tt class="py-op">=</tt> <tt class="py-name">viewport</tt> </tt>
+</div><a name="L78"></a><tt class="py-lineno"> 78</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-op">[</tt><tt class="py-op">(</tt><tt class="py-string">'3d_perspective_with_set_viewport_callback'</tt><tt class="py-op">,</tt><tt class="py-name">stimulus</tt><tt class="py-op">,</tt><tt class="py-name">set_az_el_grid_viewport</tt><tt class="py-op">)</tt><tt class="py-op">]</tt> <tt class="py-comment"># return ordered list of tuples</tt> </tt>
+</div><a name="L79"></a><tt class="py-lineno"> 79</tt>  <tt class="py-line"> </tt>
+<a name="get_meta_controller_stimkey"></a><div id="get_meta_controller_stimkey-def"><a name="L80"></a><tt class="py-lineno"> 80</tt> <a class="py-toggle" href="#" id="get_meta_controller_stimkey-toggle" onclick="return toggle('get_meta_controller_stimkey');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.GridServer-module.html#get_meta_controller_stimkey">get_meta_controller_stimkey</a><tt class="py-op">(</tt><tt class="py-op">)</ [...]
+</div><div id="get_meta_controller_stimkey-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="get_meta_controller_stimkey-expanded"><a name="L81"></a><tt class="py-lineno"> 81</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-string">"grid_server"</tt> </tt>
+</div><a name="L82"></a><tt class="py-lineno"> 82</tt>  <tt class="py-line"> </tt>
+<a name="L83"></a><tt class="py-lineno"> 83</tt>  <tt class="py-line"><tt class="py-comment"># Don't do anything unless this script is being run</tt> </tt>
+<a name="L84"></a><tt class="py-lineno"> 84</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-keyword">if</tt> <tt class="py-name">__name__</tt> <tt class="py-op">==</tt> <tt class="py-string">'__main__'</tt><tt class="py-op">:</tt> </tt>
+<a name="L85"></a><tt class="py-lineno"> 85</tt>  <tt class="py-line">     </tt>
+<a name="L86"></a><tt class="py-lineno"> 86</tt>  <tt class="py-line">    <tt class="py-name">pyro_server</tt> <tt class="py-op">=</tt> <tt id="link-47" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-47', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-48" class="py-name"><a title="VisionEgg.PyroHelpers" class="py-name" href="#" onclick="return doclink('link-48', 'PyroHelpers', 'link-16');">PyroHelpers</a></tt>< [...]
+<a name="L87"></a><tt class="py-lineno"> 87</tt>  <tt class="py-line"> </tt>
+<a name="L88"></a><tt class="py-lineno"> 88</tt>  <tt class="py-line">    <tt class="py-name">screen</tt> <tt class="py-op">=</tt> <tt id="link-50" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-50', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-51" class="py-name"><a title="VisionEgg.Core" class="py-name" href="#" onclick="return doclink('link-51', 'Core', 'link-8');">Core</a></tt><tt class="py-op">.</tt><tt  [...]
+<a name="L89"></a><tt class="py-lineno"> 89</tt>  <tt class="py-line"> </tt>
+<a name="L90"></a><tt class="py-lineno"> 90</tt>  <tt class="py-line">    <tt class="py-comment"># get Vision Egg stimulus ready to go</tt> </tt>
+<a name="L91"></a><tt class="py-lineno"> 91</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">stimuli</tt> <tt class="py-op">=</tt> <tt id="link-54" class="py-name" targets="Function VisionEgg.PyroApps.ColorCalServer.make_stimuli()=VisionEgg.PyroApps.ColorCalServer-module.html#make_stimuli,Function VisionEgg.PyroApps.DropinServer.make_stimuli()=VisionEgg.PyroApps.DropinServer-module.html#make_stimuli,Function VisionEgg.PyroApps.FlatGratingServer.make_stimuli() [...]
+VisionEgg.PyroApps.DropinServer.make_stimuli
+VisionEgg.PyroApps.FlatGratingServer.make_stimuli
+VisionEgg.PyroApps.GridServer.make_stimuli
+VisionEgg.PyroApps.MouseTargetServer.make_stimuli
+VisionEgg.PyroApps.SphereGratingServer.make_stimuli
+VisionEgg.PyroApps.SpinningDrumServer.make_stimuli
+VisionEgg.PyroApps.TargetServer.make_stimuli" class="py-name" href="#" onclick="return doclink('link-54', 'make_stimuli', 'link-54');">make_stimuli</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L92"></a><tt class="py-lineno"> 92</tt>  <tt class="py-line">    <tt class="py-name">stimulus</tt> <tt class="py-op">=</tt> <tt class="py-name">stimuli</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
+<a name="L93"></a><tt class="py-lineno"> 93</tt>  <tt class="py-line">    <tt class="py-name">temp</tt> <tt class="py-op">=</tt> <tt id="link-55" class="py-name"><a title="VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionParameters" class="py-name" href="#" onclick="return doclink('link-55', 'ScreenPositionParameters', 'link-24');">ScreenPositionParameters</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L94"></a><tt class="py-lineno"> 94</tt>  <tt class="py-line"> </tt>
+<a name="L95"></a><tt class="py-lineno"> 95</tt>  <tt class="py-line">    <tt class="py-name">projection</tt> <tt class="py-op">=</tt> <tt id="link-56" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-56', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-57" class="py-name"><a title="VisionEgg.Core" class="py-name" href="#" onclick="return doclink('link-57', 'Core', 'link-8');">Core</a></tt><tt class="py-op">.</tt> [...]
+<a name="L96"></a><tt class="py-lineno"> 96</tt>  <tt class="py-line">                                                      <tt class="py-name">temp</tt><tt class="py-op">.</tt><tt id="link-60" class="py-name" targets="Variable VisionEgg.PyroApps.MouseTargetServer.right=VisionEgg.PyroApps.MouseTargetServer-module.html#right"><a title="VisionEgg.PyroApps.MouseTargetServer.right" class="py-name" href="#" onclick="return doclink('link-60', 'right', 'link-60');">right</a></tt><tt class="py-o [...]
+<a name="L97"></a><tt class="py-lineno"> 97</tt>  <tt class="py-line">                                                      <tt class="py-name">temp</tt><tt class="py-op">.</tt><tt class="py-name">bottom</tt><tt class="py-op">,</tt> </tt>
+<a name="L98"></a><tt class="py-lineno"> 98</tt>  <tt class="py-line">                                                      <tt class="py-name">temp</tt><tt class="py-op">.</tt><tt class="py-name">top</tt><tt class="py-op">,</tt> </tt>
+<a name="L99"></a><tt class="py-lineno"> 99</tt>  <tt class="py-line">                                                      <tt class="py-name">temp</tt><tt class="py-op">.</tt><tt class="py-name">near</tt><tt class="py-op">,</tt> </tt>
+<a name="L100"></a><tt class="py-lineno">100</tt>  <tt class="py-line">                                                      <tt class="py-name">temp</tt><tt class="py-op">.</tt><tt class="py-name">far</tt><tt class="py-op">)</tt> </tt>
+<a name="L101"></a><tt class="py-lineno">101</tt>  <tt class="py-line">    <tt class="py-name">viewport</tt> <tt class="py-op">=</tt> <tt id="link-61" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-61', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-62" class="py-name"><a title="VisionEgg.Core" class="py-name" href="#" onclick="return doclink('link-62', 'Core', 'link-8');">Core</a></tt><tt class="py-op">.</tt>< [...]
+<a name="L102"></a><tt class="py-lineno">102</tt>  <tt class="py-line">    <tt class="py-name">p</tt> <tt class="py-op">=</tt> <tt id="link-64" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-64', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-65" class="py-name"><a title="VisionEgg.FlowControl" class="py-name" href="#" onclick="return doclink('link-65', 'FlowControl', 'link-10');">FlowControl</a></tt><tt class= [...]
+<a name="L103"></a><tt class="py-lineno">103</tt>  <tt class="py-line"> </tt>
+<a name="L104"></a><tt class="py-lineno">104</tt>  <tt class="py-line">    <tt class="py-comment"># now hand over control of projection to ScreenPositionMetaController</tt> </tt>
+<a name="L105"></a><tt class="py-lineno">105</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">projection_controller</tt> <tt class="py-op">=</tt> <tt id="link-67" class="py-name"><a title="VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController" class="py-name" href="#" onclick="return doclink('link-67', 'ScreenPositionMetaController', 'link-20');">ScreenPositionMetaController</a></tt><tt class="py-op">(</tt><tt class="py-name">p</tt><tt class="p [...]
+<a name="L106"></a><tt class="py-lineno">106</tt>  <tt class="py-line">    <tt class="py-name">pyro_server</tt><tt class="py-op">.</tt><tt id="link-68" class="py-name" targets="Method VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.connect()=VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#connect,Method VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.connect()=VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html#connect,Method  [...]
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.connect
+VisionEgg.PyroHelpers.PyroServer.connect" class="py-name" href="#" onclick="return doclink('link-68', 'connect', 'link-68');">connect</a></tt><tt class="py-op">(</tt><tt class="py-name">projection_controller</tt><tt class="py-op">,</tt><tt class="py-string">"projection_controller"</tt><tt class="py-op">)</tt> </tt>
+<a name="L107"></a><tt class="py-lineno">107</tt>  <tt class="py-line"> </tt>
+<a name="L108"></a><tt class="py-lineno">108</tt>  <tt class="py-line">    <tt class="py-comment"># now hand over control of drum to GridMetaController</tt> </tt>
+<a name="L109"></a><tt class="py-lineno">109</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">meta_controller</tt> <tt class="py-op">=</tt> <tt id="link-69" class="py-name"><a title="VisionEgg.PyroApps.GridServer.GridMetaController" class="py-name" href="#" onclick="return doclink('link-69', 'GridMetaController', 'link-43');">GridMetaController</a></tt><tt class="py-op">(</tt><tt class="py-name">screen</tt><tt class="py-op">,</tt><tt class="py-name">p</tt><tt [...]
+<a name="L110"></a><tt class="py-lineno">110</tt>  <tt class="py-line">    <tt class="py-name">pyro_server</tt><tt class="py-op">.</tt><tt id="link-70" class="py-name"><a title="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.connect
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.connect
+VisionEgg.PyroHelpers.PyroServer.connect" class="py-name" href="#" onclick="return doclink('link-70', 'connect', 'link-68');">connect</a></tt><tt class="py-op">(</tt><tt class="py-name">meta_controller</tt><tt class="py-op">,</tt><tt id="link-71" class="py-name" targets="Function VisionEgg.PyroApps.ColorCalServer.get_meta_controller_stimkey()=VisionEgg.PyroApps.ColorCalServer-module.html#get_meta_controller_stimkey,Function VisionEgg.PyroApps.DropinServer.get_meta_controller_stimkey()=Vi [...]
+VisionEgg.PyroApps.DropinServer.get_meta_controller_stimkey
+VisionEgg.PyroApps.FlatGratingServer.get_meta_controller_stimkey
+VisionEgg.PyroApps.GridServer.get_meta_controller_stimkey
+VisionEgg.PyroApps.MouseTargetServer.get_meta_controller_stimkey
+VisionEgg.PyroApps.SphereGratingServer.get_meta_controller_stimkey
+VisionEgg.PyroApps.SpinningDrumServer.get_meta_controller_stimkey
+VisionEgg.PyroApps.TargetServer.get_meta_controller_stimkey" class="py-name" href="#" onclick="return doclink('link-71', 'get_meta_controller_stimkey', 'link-71');">get_meta_controller_stimkey</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L111"></a><tt class="py-lineno">111</tt>  <tt class="py-line"> </tt>
+<a name="L112"></a><tt class="py-lineno">112</tt>  <tt class="py-line">    <tt class="py-comment"># get listener controller and register it</tt> </tt>
+<a name="L113"></a><tt class="py-lineno">113</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">p</tt><tt class="py-op">.</tt><tt id="link-72" class="py-name" targets="Method VisionEgg.FlowControl.Presentation.add_controller()=VisionEgg.FlowControl.Presentation-class.html#add_controller,Method VisionEgg.PyroHelpers.PyroLocalDictController.add_controller()=VisionEgg.PyroHelpers.PyroLocalDictController-class.html#add_controller"><a title="VisionEgg.FlowControl.Pr [...]
+VisionEgg.PyroHelpers.PyroLocalDictController.add_controller" class="py-name" href="#" onclick="return doclink('link-72', 'add_controller', 'link-72');">add_controller</a></tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-name">pyro_server</tt><tt class="py-op">.</tt><tt id="link-73" class="py-name" targets="Method VisionEgg.PyroHelpers.PyroServer.create_listener_controller()=VisionEgg.Pyro [...]
+<a name="L114"></a><tt class="py-lineno">114</tt>  <tt class="py-line"> </tt>
+<a name="L115"></a><tt class="py-lineno">115</tt>  <tt class="py-line">    <tt class="py-comment"># enter endless loop</tt> </tt>
+<a name="L116"></a><tt class="py-lineno">116</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">p</tt><tt class="py-op">.</tt><tt id="link-74" class="py-name" targets="Method VisionEgg.FlowControl.Presentation.run_forever()=VisionEgg.FlowControl.Presentation-class.html#run_forever"><a title="VisionEgg.FlowControl.Presentation.run_forever" class="py-name" href="#" onclick="return doclink('link-74', 'run_forever', 'link-74');">run_forever</a></tt><tt class="py-op [...]
+<a name="L117"></a><tt class="py-lineno">117</tt>  <tt class="py-line"> </tt><script type="text/javascript">
+<!--
+expandto(location.href);
+// -->
+</script>
+</pre>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:47 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.PyroApps.GridServer.GridMetaController-class.html b/doc/reference/html/VisionEgg.PyroApps.GridServer.GridMetaController-class.html
new file mode 100644
index 0000000..d259855
--- /dev/null
+++ b/doc/reference/html/VisionEgg.PyroApps.GridServer.GridMetaController-class.html
@@ -0,0 +1,284 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.PyroApps.GridServer.GridMetaController</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.PyroApps-module.html">Package PyroApps</a> ::
+        <a href="VisionEgg.PyroApps.GridServer-module.html">Module GridServer</a> ::
+        Class GridMetaController
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.PyroApps.GridServer.GridMetaController-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class GridMetaController</h1><span class="codelink"><a href="VisionEgg.PyroApps.GridServer-pysrc.html#GridMetaController">source code</a></span><br /><br />
+<pre class="base-tree">
+Pyro.core.ObjBase --+
+                    |
+                   <strong class="uidshort">GridMetaController</strong>
+</pre>
+
+<hr />
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.PyroApps.GridServer.GridMetaController-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">screen</span>,
+        <span class="summary-sig-arg">presentation</span>,
+        <span class="summary-sig-arg">stimuli</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.GridServer-pysrc.html#GridMetaController.__init__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="get_parameters"></a><span class="summary-sig-name">get_parameters</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.GridServer-pysrc.html#GridMetaController.get_parameters">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="set_parameters"></a><span class="summary-sig-name">set_parameters</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">new_parameters</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.GridServer-pysrc.html#GridMetaController.set_parameters">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="update"></a><span class="summary-sig-name">update</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.GridServer-pysrc.html#GridMetaController.update">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="go"></a><span class="summary-sig-name">go</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.GridServer-pysrc.html#GridMetaController.go">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="quit_server"></a><span class="summary-sig-name">quit_server</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.GridServer-pysrc.html#GridMetaController.quit_server">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>Pyro.core.ObjBase</code></b>:
+      <code>GUID</code>,
+      <code>Pyro_dyncall</code>,
+      <code>delegateTo</code>,
+      <code>getAttrProxy</code>,
+      <code>getDaemon</code>,
+      <code>getLocalStorage</code>,
+      <code>getProxy</code>,
+      <code>remote_retrieve_code</code>,
+      <code>remote_supply_code</code>,
+      <code>setCodeValidator</code>,
+      <code>setGUID</code>,
+      <code>setPyroDaemon</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Method Details</span></td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">screen</span>,
+        <span class="sig-arg">presentation</span>,
+        <span class="sig-arg">stimuli</span>)</span>
+    <br /><em class="fname">(Constructor)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.PyroApps.GridServer-pysrc.html#GridMetaController.__init__">source code</a></span> 
+    </td>
+  </table>
+  
+  
+  <dl class="fields">
+    <dt>Overrides:
+      Pyro.core.ObjBase.__init__
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.PyroApps.MouseTargetGUI-module.html b/doc/reference/html/VisionEgg.PyroApps.MouseTargetGUI-module.html
new file mode 100644
index 0000000..c913268
--- /dev/null
+++ b/doc/reference/html/VisionEgg.PyroApps.MouseTargetGUI-module.html
@@ -0,0 +1,196 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.PyroApps.MouseTargetGUI</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.PyroApps-module.html">Package PyroApps</a> ::
+        Module MouseTargetGUI
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.PyroApps.MouseTargetGUI-module.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== MODULE DESCRIPTION ==================== -->
+<h1 class="epydoc">Module MouseTargetGUI</h1><span class="codelink"><a href="VisionEgg.PyroApps.MouseTargetGUI-pysrc.html">source code</a></span><br /><br />
+<pre class="literalblock">
+Handle mouse controlled small target stimulus (client-side)
+
+</pre><br /><br />
+
+<hr />
+<div class="fields">      <p><strong>Version:</strong>
+        1.1.dev
+      </p>
+      <p><strong>Author:</strong>
+        Andrew Straw <astraw at users.sourceforge.net>
+      </p>
+</div><!-- ==================== CLASSES ==================== -->
+<a name="section-Classes"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Classes</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.PyroApps.MouseTargetGUI.MouseTargetMetaParameters-class.html" class="summary-name">MouseTargetMetaParameters</a>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame-class.html" class="summary-name">MouseTargetControlFrame</a>
+    </td>
+  </tr>
+</table>
+<!-- ==================== FUNCTIONS ==================== -->
+<a name="section-Functions"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Functions</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="get_control_list"></a><span class="summary-sig-name">get_control_list</span>()</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.MouseTargetGUI-pysrc.html#get_control_list">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+</table>
+<!-- ==================== VARIABLES ==================== -->
+<a name="section-Variables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Variables</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="__cvs__"></a><span class="summary-name">__cvs__</span> = <code title="string.split('$Revision$') [1]">string.split('$Revision$') [1]</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="__date__"></a><span class="summary-name">__date__</span> = <code title="string.join(string.split('$Date$') [1: 3], ' ')">string.join(string.split('$Date$') [1: 3], ' ')</code>
+    </td>
+  </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.PyroApps.MouseTargetGUI-pysrc.html b/doc/reference/html/VisionEgg.PyroApps.MouseTargetGUI-pysrc.html
new file mode 100644
index 0000000..d1bcca1
--- /dev/null
+++ b/doc/reference/html/VisionEgg.PyroApps.MouseTargetGUI-pysrc.html
@@ -0,0 +1,460 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.PyroApps.MouseTargetGUI</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.PyroApps-module.html">Package PyroApps</a> ::
+        Module MouseTargetGUI
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.PyroApps.MouseTargetGUI-pysrc.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<h1 class="epydoc">Source Code for <a href="VisionEgg.PyroApps.MouseTargetGUI-module.html">Module VisionEgg.PyroApps.MouseTargetGUI</a></h1>
+<pre class="py-src">
+<a name="L1"></a><tt class="py-lineno"> 1</tt>  <tt class="py-line"><tt class="py-comment">#!/usr/bin/env python</tt> </tt>
+<a name="L2"></a><tt class="py-lineno"> 2</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L3"></a><tt class="py-lineno"> 3</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># The Vision Egg: MouseTargetGUI</tt> </tt>
+<a name="L4"></a><tt class="py-lineno"> 4</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L5"></a><tt class="py-lineno"> 5</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Copyright (C) 2001-2003 Andrew Straw.</tt> </tt>
+<a name="L6"></a><tt class="py-lineno"> 6</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Author: Andrew Straw <astraw at users.sourceforge.net></tt> </tt>
+<a name="L7"></a><tt class="py-lineno"> 7</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># URL: <http://www.visionegg.org/></tt> </tt>
+<a name="L8"></a><tt class="py-lineno"> 8</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L9"></a><tt class="py-lineno"> 9</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Distributed under the terms of the GNU Lesser General Public License</tt> </tt>
+<a name="L10"></a><tt class="py-lineno">10</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># (LGPL). See LICENSE.TXT that came with this file.</tt> </tt>
+<a name="L11"></a><tt class="py-lineno">11</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L12"></a><tt class="py-lineno">12</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># $Id$</tt> </tt>
+<a name="L13"></a><tt class="py-lineno">13</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L14"></a><tt class="py-lineno">14</tt>  <tt class="py-line"><tt class="py-docstring">"""Handle mouse controlled small target stimulus (client-side)"""</tt> </tt>
+<a name="L15"></a><tt class="py-lineno">15</tt>  <tt class="py-line"> </tt>
+<a name="L16"></a><tt class="py-lineno">16</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-0" class="py-name" targets="Package VisionEgg=VisionEgg-module.html"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-0', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">,</tt> <tt class="py-name">string</tt> </tt>
+<a name="L17"></a><tt class="py-lineno">17</tt>  <tt class="py-line"><tt id="link-1" class="py-name" targets="Variable VisionEgg.DaqKeyboard.__version__=VisionEgg.DaqKeyboard-module.html#__version__,Variable VisionEgg.DaqLPT.__version__=VisionEgg.DaqLPT-module.html#__version__,Variable VisionEgg.GL.__version__=VisionEgg.GL-module.html#__version__,Variable VisionEgg.PyroApps.EPhysGUI.__version__=VisionEgg.PyroApps.EPhysGUI-module.html#__version__,Variable VisionEgg.PyroApps.EPhysGUIUtils. [...]
+VisionEgg.DaqLPT.__version__
+VisionEgg.GL.__version__
+VisionEgg.PyroApps.EPhysGUI.__version__
+VisionEgg.PyroApps.EPhysGUIUtils.__version__
+VisionEgg.PyroApps.EPhysServer.__version__
+VisionEgg.PyroApps.GridGUI.__version__
+VisionEgg.PyroApps.GridServer.__version__
+VisionEgg.PyroApps.ScreenPositionGUI.__version__
+VisionEgg.PyroApps.ScreenPositionServer.__version__
+VisionEgg.PyroApps.SpinningDrumGUI.__version__
+VisionEgg.PyroApps.SpinningDrumServer.__version__
+VisionEgg.PyroHelpers.__version__
+VisionEgg.QuickTime.__version__
+VisionEgg.ResponseControl.__version__
+VisionEgg.SphereMap.__version__
+VisionEgg.TCPController.__version__" class="py-name" href="#" onclick="return doclink('link-1', '__version__', 'link-1');">__version__</a></tt> <tt class="py-op">=</tt> <tt id="link-2" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-2', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-3" class="py-name" targets="Variable VisionEgg.release_name=VisionEgg-module.html#release_name"><a title="VisionEgg.release_name" c [...]
+<a name="L18"></a><tt class="py-lineno">18</tt>  <tt class="py-line"><tt id="link-4" class="py-name" targets="Variable VisionEgg.PyroApps.ColorCalGUI.__cvs__=VisionEgg.PyroApps.ColorCalGUI-module.html#__cvs__,Variable VisionEgg.PyroApps.ColorCalServer.__cvs__=VisionEgg.PyroApps.ColorCalServer-module.html#__cvs__,Variable VisionEgg.PyroApps.EPhysGUI.__cvs__=VisionEgg.PyroApps.EPhysGUI-module.html#__cvs__,Variable VisionEgg.PyroApps.EPhysGUIUtils.__cvs__=VisionEgg.PyroApps.EPhysGUIUtils-mo [...]
+VisionEgg.PyroApps.ColorCalServer.__cvs__
+VisionEgg.PyroApps.EPhysGUI.__cvs__
+VisionEgg.PyroApps.EPhysGUIUtils.__cvs__
+VisionEgg.PyroApps.EPhysServer.__cvs__
+VisionEgg.PyroApps.FlatGratingGUI.__cvs__
+VisionEgg.PyroApps.FlatGratingServer.__cvs__
+VisionEgg.PyroApps.GridGUI.__cvs__
+VisionEgg.PyroApps.GridServer.__cvs__
+VisionEgg.PyroApps.MouseTargetGUI.__cvs__
+VisionEgg.PyroApps.MouseTargetServer.__cvs__
+VisionEgg.PyroApps.ScreenPositionGUI.__cvs__
+VisionEgg.PyroApps.ScreenPositionServer.__cvs__
+VisionEgg.PyroApps.SphereGratingGUI.__cvs__
+VisionEgg.PyroApps.SphereGratingServer.__cvs__
+VisionEgg.PyroApps.SpinningDrumGUI.__cvs__
+VisionEgg.PyroApps.SpinningDrumServer.__cvs__
+VisionEgg.PyroApps.TargetGUI.__cvs__
+VisionEgg.PyroApps.TargetServer.__cvs__
+VisionEgg.PyroClient.__cvs__
+VisionEgg.PyroHelpers.__cvs__
+VisionEgg.TCPController.__cvs__" class="py-name" href="#" onclick="return doclink('link-4', '__cvs__', 'link-4');">__cvs__</a></tt> <tt class="py-op">=</tt> <tt class="py-name">string</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'$Revision$'</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
+<a name="L19"></a><tt class="py-lineno">19</tt>  <tt class="py-line"><tt id="link-5" class="py-name" targets="Variable VisionEgg.PyroApps.ColorCalGUI.__date__=VisionEgg.PyroApps.ColorCalGUI-module.html#__date__,Variable VisionEgg.PyroApps.ColorCalServer.__date__=VisionEgg.PyroApps.ColorCalServer-module.html#__date__,Variable VisionEgg.PyroApps.EPhysGUI.__date__=VisionEgg.PyroApps.EPhysGUI-module.html#__date__,Variable VisionEgg.PyroApps.EPhysGUIUtils.__date__=VisionEgg.PyroApps.EPhysGUIU [...]
+VisionEgg.PyroApps.ColorCalServer.__date__
+VisionEgg.PyroApps.EPhysGUI.__date__
+VisionEgg.PyroApps.EPhysGUIUtils.__date__
+VisionEgg.PyroApps.EPhysServer.__date__
+VisionEgg.PyroApps.FlatGratingGUI.__date__
+VisionEgg.PyroApps.FlatGratingServer.__date__
+VisionEgg.PyroApps.GridGUI.__date__
+VisionEgg.PyroApps.GridServer.__date__
+VisionEgg.PyroApps.MouseTargetGUI.__date__
+VisionEgg.PyroApps.MouseTargetServer.__date__
+VisionEgg.PyroApps.ScreenPositionGUI.__date__
+VisionEgg.PyroApps.ScreenPositionServer.__date__
+VisionEgg.PyroApps.SphereGratingGUI.__date__
+VisionEgg.PyroApps.SphereGratingServer.__date__
+VisionEgg.PyroApps.SpinningDrumGUI.__date__
+VisionEgg.PyroApps.SpinningDrumServer.__date__
+VisionEgg.PyroApps.TargetGUI.__date__
+VisionEgg.PyroApps.TargetServer.__date__
+VisionEgg.PyroClient.__date__
+VisionEgg.PyroHelpers.__date__
+VisionEgg.TCPController.__date__" class="py-name" href="#" onclick="return doclink('link-5', '__date__', 'link-5');">__date__</a></tt> <tt class="py-op">=</tt> <tt class="py-name">string</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">string</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'$Date$'</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt  [...]
+<a name="L20"></a><tt class="py-lineno">20</tt>  <tt class="py-line"><tt id="link-6" class="py-name" targets="Variable VisionEgg.PyroApps.EPhysGUI.__author__=VisionEgg.PyroApps.EPhysGUI-module.html#__author__,Variable VisionEgg.PyroApps.EPhysGUIUtils.__author__=VisionEgg.PyroApps.EPhysGUIUtils-module.html#__author__,Variable VisionEgg.PyroApps.EPhysServer.__author__=VisionEgg.PyroApps.EPhysServer-module.html#__author__,Variable VisionEgg.PyroApps.GridGUI.__author__=VisionEgg.PyroApps.Gri [...]
+VisionEgg.PyroApps.EPhysGUIUtils.__author__
+VisionEgg.PyroApps.EPhysServer.__author__
+VisionEgg.PyroApps.GridGUI.__author__
+VisionEgg.PyroApps.GridServer.__author__
+VisionEgg.PyroApps.SpinningDrumGUI.__author__
+VisionEgg.PyroApps.SpinningDrumServer.__author__" class="py-name" href="#" onclick="return doclink('link-6', '__author__', 'link-6');">__author__</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'Andrew Straw <astraw at users.sourceforge.net>'</tt> </tt>
+<a name="L21"></a><tt class="py-lineno">21</tt>  <tt class="py-line"> </tt>
+<a name="L22"></a><tt class="py-lineno">22</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">sys</tt><tt class="py-op">,</tt> <tt class="py-name">os</tt> </tt>
+<a name="L23"></a><tt class="py-lineno">23</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-7" class="py-name" targets="Variable VisionEgg.GUI.Tkinter=VisionEgg.GUI-module.html#Tkinter"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-7', 'Tkinter', 'link-7');">Tkinter</a></tt> </tt>
+<a name="L24"></a><tt class="py-lineno">24</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-8" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-8', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-9" class="py-name" targets="Package VisionEgg.PyroApps=VisionEgg.PyroApps-module.html"><a title="VisionEgg.PyroApps" class="py-name" href="#" onclick="return doclink('link-9', 'PyroApps', 'link-9' [...]
+<a name="L25"></a><tt class="py-lineno">25</tt>  <tt class="py-line"> </tt>
+<a name="get_control_list"></a><div id="get_control_list-def"><a name="L26"></a><tt class="py-lineno">26</tt> <a class="py-toggle" href="#" id="get_control_list-toggle" onclick="return toggle('get_control_list');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.MouseTargetGUI-module.html#get_control_list">get_control_list</a><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="get_control_list-collapsed" style="display:none;" pad="++" indent="++++"></div><div id="get_control_list-expanded"><a name="L27"></a><tt class="py-lineno">27</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-op">[</tt><tt class="py-op">(</tt><tt class="py-string">"mouse_target_server"</tt><tt class="py-op">,</tt><tt id="link-11" class="py-name" targets="Class VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame=VisionEgg.PyroApps.MouseTarg [...]
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.title
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.title
+VisionEgg.PyroApps.GridGUI.GridControlFrame.title
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.title
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.title
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.title
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.title" class="py-name" href="#" onclick="return doclink('link-13', 'title', 'link-13');">title</a></tt><tt class="py-op">)</tt><tt class="py-op">]</tt> </tt>
+</div><a name="L28"></a><tt class="py-lineno">28</tt>  <tt class="py-line"> </tt>
+<a name="MouseTargetMetaParameters"></a><div id="MouseTargetMetaParameters-def"><a name="L29"></a><tt class="py-lineno">29</tt> <a class="py-toggle" href="#" id="MouseTargetMetaParameters-toggle" onclick="return toggle('MouseTargetMetaParameters');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.PyroApps.MouseTargetGUI.MouseTargetMetaParameters-class.html">MouseTargetMetaParameters</a><tt class="py-op">:</tt> </tt>
+</div><div id="MouseTargetMetaParameters-collapsed" style="display:none;" pad="++" indent="++++"></div><div id="MouseTargetMetaParameters-expanded"><a name="MouseTargetMetaParameters.__init__"></a><div id="MouseTargetMetaParameters.__init__-def"><a name="L30"></a><tt class="py-lineno">30</tt> <a class="py-toggle" href="#" id="MouseTargetMetaParameters.__init__-toggle" onclick="return toggle('MouseTargetMetaParameters.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</t [...]
+</div><div id="MouseTargetMetaParameters.__init__-collapsed" style="display:none;" pad="++" indent="++++++++"></div><div id="MouseTargetMetaParameters.__init__-expanded"><a name="L31"></a><tt class="py-lineno">31</tt>  <tt class="py-line">        <tt class="py-comment"># colors</tt> </tt>
+<a name="L32"></a><tt class="py-lineno">32</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">color</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-number">0.0</tt><tt class="py-op">,</tt> <tt class="py-number">0.0</tt><tt class="py-op">,</tt> <tt class="py-number">0.0</tt><tt class="py-op">,</tt> <tt class="py-number">1.0</tt><tt class="py-op">)</tt> </tt>
+<a name="L33"></a><tt class="py-lineno">33</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">bgcolor</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-number">1.0</tt><tt class="py-op">,</tt> <tt class="py-number">1.0</tt><tt class="py-op">,</tt> <tt class="py-number">1.0</tt><tt class="py-op">,</tt> <tt class="py-number">0.0</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L34"></a><tt class="py-lineno">34</tt>  <tt class="py-line">         </tt>
+<a name="MouseTargetControlFrame"></a><div id="MouseTargetControlFrame-def"><a name="L35"></a><tt class="py-lineno">35</tt> <a class="py-toggle" href="#" id="MouseTargetControlFrame-toggle" onclick="return toggle('MouseTargetControlFrame');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame-class.html">MouseTargetControlFrame</a><tt class="py-op">(</tt><tt class="py-base-class">client_utils</t [...]
+</div><div id="MouseTargetControlFrame-collapsed" style="display:none;" pad="++" indent="++++"></div><div id="MouseTargetControlFrame-expanded"><a name="L36"></a><tt class="py-lineno">36</tt>  <tt class="py-line">    <tt id="link-14" class="py-name"><a title="VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.title
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.title
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.title
+VisionEgg.PyroApps.GridGUI.GridControlFrame.title
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.title
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.title
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.title
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.title" class="py-name" href="#" onclick="return doclink('link-14', 'title', 'link-13');">title</a></tt> <tt class="py-op">=</tt> <tt class="py-string">"Mouse Controlled Moving Target"</tt> </tt>
+<a name="MouseTargetControlFrame.__init__"></a><div id="MouseTargetControlFrame.__init__-def"><a name="L37"></a><tt class="py-lineno">37</tt> <a class="py-toggle" href="#" id="MouseTargetControlFrame.__init__-toggle" onclick="return toggle('MouseTargetControlFrame.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class [...]
+</div><div id="MouseTargetControlFrame.__init__-collapsed" style="display:none;" pad="++" indent="++++++++"></div><div id="MouseTargetControlFrame.__init__-expanded"><a name="L38"></a><tt class="py-lineno">38</tt>  <tt class="py-line">        <tt class="py-name">client_utils</tt><tt class="py-op">.</tt><tt id="link-15" class="py-name" targets="Class VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame=VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html"><a title="VisionEgg. [...]
+VisionEgg.Configuration.Config.__init__
+VisionEgg.Core.FixationSpot.__init__
+VisionEgg.Core.FrameTimer.__init__
+VisionEgg.Core.ModelView.__init__
+VisionEgg.Core.OrthographicProjection.__init__
+VisionEgg.Core.OrthographicProjectionNoZClip.__init__
+VisionEgg.Core.PerspectiveProjection.__init__
+VisionEgg.Core.Projection.__init__
+VisionEgg.Core.ProjectionBaseClass.__init__
+VisionEgg.Core.Screen.__init__
+VisionEgg.Core.SimplePerspectiveProjection.__init__
+VisionEgg.Core.Stimulus.__init__
+VisionEgg.Core.Viewport.__init__
+VisionEgg.Daq.Channel.__init__
+VisionEgg.Daq.DaqMode.__init__
+VisionEgg.Daq.Device.__init__
+VisionEgg.Daq.Functionality.__init__
+VisionEgg.Daq.SignalType.__init__
+VisionEgg.DaqKeyboard.KeyboardTriggerInController.__init__
+VisionEgg.DaqLPT.LPTChannel.__init__
+VisionEgg.DaqLPT.LPTDevice.__init__
+VisionEgg.DaqLPT.LPTTriggerInController.__init__
+VisionEgg.DaqLPT.LPTTriggerOutController.__init__
+VisionEgg.Deprecated.Message.__init__
+VisionEgg.Dots.DotArea2D.__init__
+VisionEgg.FlowControl.ConstantController.__init__
+VisionEgg.FlowControl.Controller.__init__
+VisionEgg.FlowControl.EncapsulatedController.__init__
+VisionEgg.FlowControl.EvalStringController.__init__
+VisionEgg.FlowControl.ExecStringController.__init__
+VisionEgg.FlowControl.FunctionController.__init__
+VisionEgg.FlowControl.Presentation.__init__
+VisionEgg.GLTrace.Wrapper.__init__
+VisionEgg.GUI.AppWindow.__init__
+VisionEgg.GUI.GetKeypressDialog.__init__
+VisionEgg.GUI.GraphicsConfigurationWindow.__init__
+VisionEgg.GUI.InfoFrame.__init__
+VisionEgg.GUI.ProgressBar.__init__
+VisionEgg.GUI.ToplevelDialog.__init__
+VisionEgg.Gratings.SinGrating2D.__init__
+VisionEgg.Gratings.SinGrating3D.__init__
+VisionEgg.MoreStimuli.Arrow.__init__
+VisionEgg.MoreStimuli.FilledCircle.__init__
+VisionEgg.MoreStimuli.Rectangle3D.__init__
+VisionEgg.MoreStimuli.Target2D.__init__
+VisionEgg.ParameterTypes.AnyOf.__init__
+VisionEgg.ParameterTypes.Instance.__init__
+VisionEgg.ParameterTypes.Sequence.__init__
+VisionEgg.ParameterTypes.SubClass.__init__
+VisionEgg.PyroApps.AST_ext.AST_Visitor.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalMetaParameters.__init__
+VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.__init__
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.__init__
+VisionEgg.PyroApps.DropinGUI.DropinMetaParameters.__init__
+VisionEgg.PyroApps.DropinServer.DropinMetaController.__init__
+VisionEgg.PyroApps.EPhysGUI.AppWindow.__init__
+VisionEgg.PyroApps.EPhysGUI.BarButton.__init__
+VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase.__init__
+VisionEgg.PyroApps.EPhysGUI.GammaFrame.__init__
+VisionEgg.PyroApps.EPhysGUI.ImageSequenceLauncher.__init__
+VisionEgg.PyroApps.EPhysGUI.Loop.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopContainedObject.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopParamDialog.__init__
+VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.__init__
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.__init__
+VisionEgg.PyroApps.EPhysServer.EPhysServer.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingMetaParameters.__init__
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.GridGUI.GridControlFrame.__init__
+VisionEgg.PyroApps.GridGUI.GridMetaParameters.__init__
+VisionEgg.PyroApps.GridServer.GridMetaController.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetMetaParameters.__init__
+VisionEgg.PyroApps.MouseTargetServer.MousePositionController.__init__
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetOrientationController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetPositionController.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.CallbackEntry.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionParameters.__init__
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingMetaParameters.__init__
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumMetaParameters.__init__
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.__init__
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.__init__
+VisionEgg.PyroApps.TargetGUI.TargetMetaParameters.__init__
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.__init__
+VisionEgg.PyroClient.PyroClient.__init__
+VisionEgg.PyroHelpers.PyroConstantController.__init__
+VisionEgg.PyroHelpers.PyroEncapsulatedController.__init__
+VisionEgg.PyroHelpers.PyroEvalStringController.__init__
+VisionEgg.PyroHelpers.PyroExecStringController.__init__
+VisionEgg.PyroHelpers.PyroListenController.__init__
+VisionEgg.PyroHelpers.PyroLocalDictController.__init__
+VisionEgg.PyroHelpers.PyroServer.__init__
+VisionEgg.QuickTime.MovieTexture.__init__
+VisionEgg.ResponseControl.KeyboardResponseController.__init__
+VisionEgg.ResponseControl.ResponseController.__init__
+VisionEgg.SphereMap.AzElGrid.__init__
+VisionEgg.SphereMap.SphereGrating.__init__
+VisionEgg.SphereMap.SphereMap.__init__
+VisionEgg.SphereMap.SphereWindow.__init__
+VisionEgg.TCPController.SocketListenController.__init__
+VisionEgg.TCPController.TCPController.__init__
+VisionEgg.TCPController.TCPServer.__init__
+VisionEgg.Text.BitmapText.__init__
+VisionEgg.Text.GlutTextBase.__init__
+VisionEgg.Text.StrokeText.__init__
+VisionEgg.Text.Text.__init__
+VisionEgg.Textures.FixationCross.__init__
+VisionEgg.Textures.Mask2D.__init__
+VisionEgg.Textures.SpinningDrum.__init__
+VisionEgg.Textures.Texture.__init__
+VisionEgg.Textures.TextureFromFile.__init__
+VisionEgg.Textures.TextureObject.__init__
+VisionEgg.Textures.TextureStimulusBaseClass.__init__
+VisionEgg.ThreeDeeMath.TransformMatrix.__init__
+VisionEgg.WrappedText.WrappedText.__init__
+VisionEgg.qtmovie.Movie.__init__
+VisionEgg.qtmovie.Rect.__init__" class="py-name" href="#" onclick="return doclink('link-16', '__init__', 'link-16');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> </tt>
+<a name="L39"></a><tt class="py-lineno">39</tt>  <tt class="py-line">                                                   <tt class="py-name">master</tt><tt class="py-op">,</tt> </tt>
+<a name="L40"></a><tt class="py-lineno">40</tt>  <tt class="py-line">                                                   <tt class="py-name">suppress_go_buttons</tt><tt class="py-op">,</tt> </tt>
+<a name="L41"></a><tt class="py-lineno">41</tt>  <tt class="py-line">                                                   <tt id="link-17" class="py-name"><a title="VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame" class="py-name" href="#" onclick="return doclink('link-17', 'MouseTargetControlFrame', 'link-11');">MouseTargetControlFrame</a></tt><tt class="py-op">.</tt><tt id="link-18" class="py-name"><a title="VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.title
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.title
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.title
+VisionEgg.PyroApps.GridGUI.GridControlFrame.title
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.title
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.title
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.title
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.title" class="py-name" href="#" onclick="return doclink('link-18', 'title', 'link-13');">title</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L42"></a><tt class="py-lineno">42</tt>  <tt class="py-line">                                                   <tt id="link-19" class="py-name" targets="Class VisionEgg.PyroApps.MouseTargetGUI.MouseTargetMetaParameters=VisionEgg.PyroApps.MouseTargetGUI.MouseTargetMetaParameters-class.html"><a title="VisionEgg.PyroApps.MouseTargetGUI.MouseTargetMetaParameters" class="py-name" href="#" onclick="return doclink('link-19', 'MouseTargetMetaParameters', 'link-19');">MouseTargetMetaPara [...]
+<a name="L43"></a><tt class="py-lineno">43</tt>  <tt class="py-line">                                                   <tt class="py-op">**</tt><tt class="py-name">kw</tt><tt class="py-op">)</tt> </tt>
+<a name="L44"></a><tt class="py-lineno">44</tt>  <tt class="py-line"> </tt>
+<a name="L45"></a><tt class="py-lineno">45</tt>  <tt class="py-line">        <tt class="py-name">param_frame</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">param_frame</tt> <tt class="py-comment"># shorthand for self.param_frame created in base class</tt> </tt>
+<a name="L46"></a><tt class="py-lineno">46</tt>  <tt class="py-line"> </tt>
+<a name="L47"></a><tt class="py-lineno">47</tt>  <tt class="py-line">        <tt class="py-comment"># Allow columns to expand</tt> </tt>
+<a name="L48"></a><tt class="py-lineno">48</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">param_frame</tt><tt class="py-op">.</tt><tt class="py-name">columnconfigure</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">,</tt><tt class="py-name">weight</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="L49"></a><tt class="py-lineno">49</tt>  <tt class="py-line">        <tt class="py-name">param_frame</tt><tt class="py-op">.</tt><tt class="py-name">columnconfigure</tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">,</tt><tt class="py-name">weight</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="L50"></a><tt class="py-lineno">50</tt>  <tt class="py-line">         </tt>
+<a name="L51"></a><tt class="py-lineno">51</tt>  <tt class="py-line">        <tt class="py-name">pf_row</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L52"></a><tt class="py-lineno">52</tt>  <tt class="py-line">        <tt id="link-20" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-20', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">param_frame</tt><tt class="py-op">,</tt><tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Color:"</tt><tt class="py-op">)</tt> [...]
+<a name="L53"></a><tt class="py-lineno">53</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">color_tk_var</tt> <tt class="py-op">=</tt> <tt id="link-21" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-21', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">StringVar</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L54"></a><tt class="py-lineno">54</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">color_tk_var</tt><tt class="py-op">.</tt><tt id="link-22" class="py-name" targets="Method VisionEgg.ClassWithParameters.set()=VisionEgg.ClassWithParameters-class.html#set"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-22', 'set', 'link-22');">set</a></tt><tt class="py-op">(</tt><tt class [...]
+<a name="L55"></a><tt class="py-lineno">55</tt>  <tt class="py-line">        <tt class="py-name">bar</tt> <tt class="py-op">=</tt> <tt id="link-23" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-23', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Menubutton</tt><tt class="py-op">(</tt><tt class="py-name">param_frame</tt><tt class="py-op">,</tt> <tt class="py-name">textvariable</tt><tt class="py-o [...]
+<a name="L56"></a><tt class="py-lineno">56</tt>  <tt class="py-line">        <tt class="py-name">bar</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-name">pf_row</tt><tt class="py-op">,</tt> <tt class="py-name">column</tt><tt class="py-op">=</tt><tt class="py-number">2</tt><tt class="py-op">,</tt> <tt class="py-name">sticky</tt><tt class="py-op">=</tt><tt id="link-25" class="py-name"><a tit [...]
+<a name="L57"></a><tt class="py-lineno">57</tt>  <tt class="py-line">        <tt class="py-name">bar</tt><tt class="py-op">.</tt><tt class="py-name">menu</tt> <tt class="py-op">=</tt> <tt id="link-27" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-27', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Menu</tt><tt class="py-op">(</tt><tt class="py-name">bar</tt><tt class="py-op">,</tt><tt class="py- [...]
+<a name="L58"></a><tt class="py-lineno">58</tt>  <tt class="py-line">        <tt class="py-name">bar</tt><tt class="py-op">.</tt><tt class="py-name">menu</tt><tt class="py-op">.</tt><tt class="py-name">add_radiobutton</tt><tt class="py-op">(</tt><tt class="py-name">label</tt><tt class="py-op">=</tt><tt class="py-string">"white on black"</tt><tt class="py-op">,</tt> </tt>
+<a name="L59"></a><tt class="py-lineno">59</tt>  <tt class="py-line">                                 <tt class="py-name">value</tt><tt class="py-op">=</tt><tt class="py-string">"white on black"</tt><tt class="py-op">,</tt> </tt>
+<a name="L60"></a><tt class="py-lineno">60</tt>  <tt class="py-line">                                 <tt class="py-name">variable</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">color_tk_var</tt><tt class="py-op">,</tt> </tt>
+<a name="L61"></a><tt class="py-lineno">61</tt>  <tt class="py-line">                                 <tt class="py-name">command</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-28" class="py-name" targets="Method VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.send_values()=VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame-class.html#send_values,Method VisionEgg.PyroApps.DropinGUI.DropinControlFrame.send_values()=VisionEgg.PyroApps.Dro [...]
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.send_values
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.send_values
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.send_values
+VisionEgg.PyroApps.GridGUI.GridControlFrame.send_values
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.send_values
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.send_values
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.send_values
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.send_values
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.send_values" class="py-name" href="#" onclick="return doclink('link-28', 'send_values', 'link-28');">send_values</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L62"></a><tt class="py-lineno">62</tt>  <tt class="py-line">        <tt class="py-name">bar</tt><tt class="py-op">.</tt><tt class="py-name">menu</tt><tt class="py-op">.</tt><tt class="py-name">add_radiobutton</tt><tt class="py-op">(</tt><tt class="py-name">label</tt><tt class="py-op">=</tt><tt class="py-string">"black on white"</tt><tt class="py-op">,</tt> </tt>
+<a name="L63"></a><tt class="py-lineno">63</tt>  <tt class="py-line">                                 <tt class="py-name">value</tt><tt class="py-op">=</tt><tt class="py-string">"black on white"</tt><tt class="py-op">,</tt> </tt>
+<a name="L64"></a><tt class="py-lineno">64</tt>  <tt class="py-line">                                 <tt class="py-name">variable</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">color_tk_var</tt><tt class="py-op">,</tt> </tt>
+<a name="L65"></a><tt class="py-lineno">65</tt>  <tt class="py-line">                                 <tt class="py-name">command</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-29" class="py-name"><a title="VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.send_values
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.send_values
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.send_values
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.send_values
+VisionEgg.PyroApps.GridGUI.GridControlFrame.send_values
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.send_values
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.send_values
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.send_values
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.send_values
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.send_values" class="py-name" href="#" onclick="return doclink('link-29', 'send_values', 'link-28');">send_values</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L66"></a><tt class="py-lineno">66</tt>  <tt class="py-line">        <tt class="py-name">bar</tt><tt class="py-op">[</tt><tt class="py-string">'menu'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">bar</tt><tt class="py-op">.</tt><tt class="py-name">menu</tt>        </tt>
+</div><a name="L67"></a><tt class="py-lineno">67</tt>  <tt class="py-line"> </tt>
+<a name="MouseTargetControlFrame.get_shortname"></a><div id="MouseTargetControlFrame.get_shortname-def"><a name="L68"></a><tt class="py-lineno">68</tt> <a class="py-toggle" href="#" id="MouseTargetControlFrame.get_shortname-toggle" onclick="return toggle('MouseTargetControlFrame.get_shortname');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame-class.html#get_shortname">get_shortname</a><tt [...]
+</div><div id="MouseTargetControlFrame.get_shortname-collapsed" style="display:none;" pad="++" indent="++++++++"></div><div id="MouseTargetControlFrame.get_shortname-expanded"><a name="L69"></a><tt class="py-lineno">69</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-string">"mouse_target"</tt> </tt>
+</div><a name="L70"></a><tt class="py-lineno">70</tt>  <tt class="py-line"> </tt>
+<a name="MouseTargetControlFrame.update_tk_vars"></a><div id="MouseTargetControlFrame.update_tk_vars-def"><a name="L71"></a><tt class="py-lineno">71</tt> <a class="py-toggle" href="#" id="MouseTargetControlFrame.update_tk_vars-toggle" onclick="return toggle('MouseTargetControlFrame.update_tk_vars');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame-class.html#update_tk_vars">update_tk_vars< [...]
+</div><div id="MouseTargetControlFrame.update_tk_vars-collapsed" style="display:none;" pad="++" indent="++++++++"></div><div id="MouseTargetControlFrame.update_tk_vars-expanded"><a name="L72"></a><tt class="py-lineno">72</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op">.</tt><tt class="py-name">color</tt> <tt class="py-op">==</tt> <tt class="py-op">(</tt><tt class="p [...]
+<a name="L73"></a><tt class="py-lineno">73</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">color_tk_var</tt><tt class="py-op">.</tt><tt id="link-30" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-30', 'set', 'link-22');">set</a></tt><tt class="py-op">(</tt> <tt class="py-string">"black on white"</tt> <tt class="py-op">)</tt> </tt>
+<a name="L74"></a><tt class="py-lineno">74</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op">.</tt><tt class="py-name">color</tt> <tt class="py-op">==</tt> <tt class="py-op">(</tt><tt class="py-number">1.0</tt><tt class="py-op">,</tt><tt class="py-number">1.0</tt><tt class="py-op">,</tt><tt class="py-number">1.0</tt><tt class="py-op">,</tt><tt class="py-number">1.0< [...]
+<a name="L75"></a><tt class="py-lineno">75</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">color_tk_var</tt><tt class="py-op">.</tt><tt id="link-31" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-31', 'set', 'link-22');">set</a></tt><tt class="py-op">(</tt> <tt class="py-string">"white on black"</tt> <tt class="py-op">)</tt> </tt>
+<a name="L76"></a><tt class="py-lineno">76</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L77"></a><tt class="py-lineno">77</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">RuntimeError</tt><tt class="py-op">(</tt><tt class="py-string">"Cannot set tk variable for color"</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L78"></a><tt class="py-lineno">78</tt>  <tt class="py-line">         </tt>
+<a name="MouseTargetControlFrame.send_values"></a><div id="MouseTargetControlFrame.send_values-def"><a name="L79"></a><tt class="py-lineno">79</tt> <a class="py-toggle" href="#" id="MouseTargetControlFrame.send_values-toggle" onclick="return toggle('MouseTargetControlFrame.send_values');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame-class.html#send_values">send_values</a><tt class="py-o [...]
+</div><div id="MouseTargetControlFrame.send_values-collapsed" style="display:none;" pad="++" indent="++++++++"></div><div id="MouseTargetControlFrame.send_values-expanded"><a name="L80"></a><tt class="py-lineno">80</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">color_tk_var</tt><tt class="py-op">.</tt><tt id="link-32" class="py-name" targets="Method VisionEgg.PyroClient.PyroClient.get()=VisionEgg.P [...]
+<a name="L81"></a><tt class="py-lineno">81</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op">.</tt><tt class="py-name">color</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-number">0.0</tt><tt class="py-op">,</tt><tt class="py-number">0.0</tt><tt class="py-op">,</tt><tt class="py-number">0.0</tt><tt class="py-op">,</tt><tt class="py-number">1.0</tt><tt class="py-op">)</tt> </tt>
+<a name="L82"></a><tt class="py-lineno">82</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op">.</tt><tt class="py-name">bgcolor</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-number">1.0</tt><tt class="py-op">,</tt><tt class="py-number">1.0</tt><tt class="py-op">,</tt><tt class="py-number">1.0</tt><tt class="py-op">,</tt><tt class="py-number">0.0</tt><tt class="py-op">)</tt> </tt>
+<a name="L83"></a><tt class="py-lineno">83</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">color_tk_var</tt><tt class="py-op">.</tt><tt id="link-33" class="py-name"><a title="VisionEgg.PyroClient.PyroClient.get" class="py-name" href="#" onclick="return doclink('link-33', 'get', 'link-32');">get</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-string" [...]
+<a name="L84"></a><tt class="py-lineno">84</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op">.</tt><tt class="py-name">color</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-number">1.0</tt><tt class="py-op">,</tt><tt class="py-number">1.0</tt><tt class="py-op">,</tt><tt class="py-number">1.0</tt><tt class="py-op">,</tt><tt class="py-number">1.0</tt><tt class="py-op">)</tt> </tt>
+<a name="L85"></a><tt class="py-lineno">85</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op">.</tt><tt class="py-name">bgcolor</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-number">0.0</tt><tt class="py-op">,</tt><tt class="py-number">0.0</tt><tt class="py-op">,</tt><tt class="py-number">0.0</tt><tt class="py-op">,</tt><tt class="py-number">0.0</tt><tt class="py-op">)</tt> </tt>
+<a name="L86"></a><tt class="py-lineno">86</tt>  <tt class="py-line"> </tt>
+<a name="L87"></a><tt class="py-lineno">87</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">connected</tt><tt class="py-op">:</tt> </tt>
+<a name="L88"></a><tt class="py-lineno">88</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_controller</tt><tt class="py-op">.</tt><tt id="link-34" class="py-name" targets="Method VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.set_parameters()=VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController-class.html#set_parameters,Method VisionEgg.PyroApps.DropinServer.DropinMetaController.set_parameters()=VisionEgg.P [...]
+VisionEgg.PyroApps.DropinServer.DropinMetaController.set_parameters
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.set_parameters
+VisionEgg.PyroApps.GridServer.GridMetaController.set_parameters
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.set_parameters
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.set_parameters
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.set_parameters
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.set_parameters
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.set_parameters" class="py-name" href="#" onclick="return doclink('link-34', 'set_parameters', 'link-34');">set_parameters</a></tt><tt class="py-op">(</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt> <tt class="py-op">)</tt> </tt>
+</div><a name="L89"></a><tt class="py-lineno">89</tt>  <tt class="py-line"> </tt>
+<a name="MouseTargetControlFrame.get_duration_sec"></a><div id="MouseTargetControlFrame.get_duration_sec-def"><a name="L90"></a><tt class="py-lineno">90</tt> <a class="py-toggle" href="#" id="MouseTargetControlFrame.get_duration_sec-toggle" onclick="return toggle('MouseTargetControlFrame.get_duration_sec');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame-class.html#get_duration_sec">get_d [...]
+</div><div id="MouseTargetControlFrame.get_duration_sec-collapsed" style="display:none;" pad="++" indent="++++++++"></div><div id="MouseTargetControlFrame.get_duration_sec-expanded"><a name="L91"></a><tt class="py-lineno">91</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-number">0.0</tt> </tt>
+</div></div><a name="L92"></a><tt class="py-lineno">92</tt>  <tt class="py-line"> </tt>
+<a name="L93"></a><tt class="py-lineno">93</tt>  <tt class="py-line"><tt class="py-keyword">if</tt> <tt class="py-name">__name__</tt><tt class="py-op">==</tt><tt class="py-string">'__main__'</tt><tt class="py-op">:</tt> </tt>
+<a name="L94"></a><tt class="py-lineno">94</tt>  <tt class="py-line">    <tt class="py-name">frame</tt> <tt class="py-op">=</tt> <tt id="link-35" class="py-name"><a title="VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame" class="py-name" href="#" onclick="return doclink('link-35', 'MouseTargetControlFrame', 'link-11');">MouseTargetControlFrame</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L95"></a><tt class="py-lineno">95</tt>  <tt class="py-line">    <tt class="py-name">frame</tt><tt class="py-op">.</tt><tt class="py-name">pack</tt><tt class="py-op">(</tt><tt class="py-name">expand</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py-op">,</tt><tt class="py-name">fill</tt><tt class="py-op">=</tt><tt id="link-36" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-36', 'Tkinter', 'link-7');">Tki [...]
+<a name="L96"></a><tt class="py-lineno">96</tt>  <tt class="py-line">    <tt class="py-name">frame</tt><tt class="py-op">.</tt><tt class="py-name">winfo_toplevel</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-37" class="py-name"><a title="VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.title
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.title
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.title
+VisionEgg.PyroApps.GridGUI.GridControlFrame.title
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.title
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.title
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.title
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.title" class="py-name" href="#" onclick="return doclink('link-37', 'title', 'link-13');">title</a></tt><tt class="py-op">(</tt><tt class="py-string">"%s"</tt><tt class="py-op">%</tt><tt class="py-op">(</tt><tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">path</tt><tt class="py-op">.</tt><tt class="py-name">basename</tt><tt class="py-op">(</tt><tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">path</ [...]
+<a name="L97"></a><tt class="py-lineno">97</tt>  <tt class="py-line">    <tt class="py-name">frame</tt><tt class="py-op">.</tt><tt class="py-name">mainloop</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L98"></a><tt class="py-lineno">98</tt>  <tt class="py-line"> </tt><script type="text/javascript">
+<!--
+expandto(location.href);
+// -->
+</script>
+</pre>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:49 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame-class.html b/doc/reference/html/VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame-class.html
new file mode 100644
index 0000000..651a3ec
--- /dev/null
+++ b/doc/reference/html/VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame-class.html
@@ -0,0 +1,605 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.PyroApps-module.html">Package PyroApps</a> ::
+        <a href="VisionEgg.PyroApps.MouseTargetGUI-module.html">Module MouseTargetGUI</a> ::
+        Class MouseTargetControlFrame
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class MouseTargetControlFrame</h1><span class="codelink"><a href="VisionEgg.PyroApps.MouseTargetGUI-pysrc.html#MouseTargetControlFrame">source code</a></span><br /><br />
+<pre class="base-tree">
+      Tkinter.Misc --+                
+                     |                
+    Tkinter.BaseWidget --+            
+                         |            
+          Tkinter.Pack --+            
+                         |            
+         Tkinter.Place --+            
+                         |            
+          Tkinter.Grid --+            
+                         |            
+            Tkinter.Widget --+        
+                             |        
+                 Tkinter.Frame --+    
+                                 |    
+<a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html">EPhysGUIUtils.StimulusControlFrame</a> --+
+                                     |
+                                    <strong class="uidshort">MouseTargetControlFrame</strong>
+</pre>
+
+<hr />
+<!-- ==================== NESTED CLASSES ==================== -->
+<a name="section-NestedClasses"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Nested Classes</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>Tkinter.Misc</code></b>:
+      <code><a href="float-class.html">getdouble</a></code>,
+      <code><a href="int-class.html">getint</a></code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">master</span>=<span class="summary-sig-default">None</span>,
+        <span class="summary-sig-arg">suppress_go_buttons</span>=<span class="summary-sig-default">0</span>,
+        <span class="summary-sig-arg">**kw</span>)</span><br />
+      Construct a frame widget with the parent MASTER.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.MouseTargetGUI-pysrc.html#MouseTargetControlFrame.__init__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame-class.html#get_shortname" class="summary-sig-name">get_shortname</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      Used as basename for saving parameter files and other ID purposes</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.MouseTargetGUI-pysrc.html#MouseTargetControlFrame.get_shortname">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame-class.html#update_tk_vars" class="summary-sig-name">update_tk_vars</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      Update Tkinter variables with (new) values from meta_params</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.MouseTargetGUI-pysrc.html#MouseTargetControlFrame.update_tk_vars">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame-class.html#send_values" class="summary-sig-name">send_values</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">dummy_arg</span>=<span class="summary-sig-default">None</span>)</span><br />
+      Update meta_params variables with values from Tkinter fields</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.MouseTargetGUI-pysrc.html#MouseTargetControlFrame.send_values">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame-class.html#get_duration_sec" class="summary-sig-name">get_duration_sec</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      Calculate total duration in go loop</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.MouseTargetGUI-pysrc.html#MouseTargetControlFrame.get_duration_sec">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html">EPhysGUIUtils.StimulusControlFrame</a></code></b>:
+      <code><a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#connect">connect</a></code>,
+      <code><a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#get_loopable_variable_names">get_loopable_variable_names</a></code>,
+      <code><a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#get_matlab_string">get_matlab_string</a></code>,
+      <code><a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#get_parameters_as_m_strings">get_parameters_as_m_strings</a></code>,
+      <code><a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#get_parameters_as_py_strings">get_parameters_as_py_strings</a></code>,
+      <code><a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#get_parameters_dict">get_parameters_dict</a></code>,
+      <code><a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#go">go</a></code>,
+      <code><a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#make_callback_entry">make_callback_entry</a></code>,
+      <code><a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#quit_server">quit_server</a></code>,
+      <code><a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#set_loopable_variable">set_loopable_variable</a></code>,
+      <code><a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#set_param_dict">set_param_dict</a></code>,
+      <code><a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#set_parameters_dict">set_parameters_dict</a></code>,
+      <code><a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#standalone_connect">standalone_connect</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>Tkinter.BaseWidget</code></b>:
+      <code>destroy</code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>Tkinter.Misc</code></b>:
+      <code>__getitem__</code>,
+      <code>__setitem__</code>,
+      <code>__str__</code>,
+      <code>after</code>,
+      <code>after_cancel</code>,
+      <code>after_idle</code>,
+      <code>bbox</code>,
+      <code>bell</code>,
+      <code>bind</code>,
+      <code>bind_all</code>,
+      <code>bind_class</code>,
+      <code>bindtags</code>,
+      <code>cget</code>,
+      <code>clipboard_append</code>,
+      <code>clipboard_clear</code>,
+      <code>clipboard_get</code>,
+      <code>colormodel</code>,
+      <code>columnconfigure</code>,
+      <code>config</code>,
+      <code>configure</code>,
+      <code>deletecommand</code>,
+      <code>event_add</code>,
+      <code>event_delete</code>,
+      <code>event_generate</code>,
+      <code>event_info</code>,
+      <code>focus</code>,
+      <code>focus_displayof</code>,
+      <code>focus_force</code>,
+      <code>focus_get</code>,
+      <code>focus_lastfor</code>,
+      <code>focus_set</code>,
+      <code>getboolean</code>,
+      <code>getvar</code>,
+      <code>grab_current</code>,
+      <code>grab_release</code>,
+      <code>grab_set</code>,
+      <code>grab_set_global</code>,
+      <code>grab_status</code>,
+      <code>grid_bbox</code>,
+      <code>grid_columnconfigure</code>,
+      <code>grid_location</code>,
+      <code>grid_propagate</code>,
+      <code>grid_rowconfigure</code>,
+      <code>grid_size</code>,
+      <code>grid_slaves</code>,
+      <code>image_names</code>,
+      <code>image_types</code>,
+      <code>keys</code>,
+      <code>lift</code>,
+      <code>lower</code>,
+      <code>mainloop</code>,
+      <code>nametowidget</code>,
+      <code>option_add</code>,
+      <code>option_clear</code>,
+      <code>option_get</code>,
+      <code>option_readfile</code>,
+      <code>pack_propagate</code>,
+      <code>pack_slaves</code>,
+      <code>place_slaves</code>,
+      <code>propagate</code>,
+      <code>quit</code>,
+      <code>register</code>,
+      <code>rowconfigure</code>,
+      <code>selection_clear</code>,
+      <code>selection_get</code>,
+      <code>selection_handle</code>,
+      <code>selection_own</code>,
+      <code>selection_own_get</code>,
+      <code>send</code>,
+      <code>setvar</code>,
+      <code>size</code>,
+      <code>slaves</code>,
+      <code>tk_bisque</code>,
+      <code>tk_focusFollowsMouse</code>,
+      <code>tk_focusNext</code>,
+      <code>tk_focusPrev</code>,
+      <code>tk_menuBar</code>,
+      <code>tk_setPalette</code>,
+      <code>tk_strictMotif</code>,
+      <code>tkraise</code>,
+      <code>unbind</code>,
+      <code>unbind_all</code>,
+      <code>unbind_class</code>,
+      <code>update</code>,
+      <code>update_idletasks</code>,
+      <code>wait_variable</code>,
+      <code>wait_visibility</code>,
+      <code>wait_window</code>,
+      <code>waitvar</code>,
+      <code>winfo_atom</code>,
+      <code>winfo_atomname</code>,
+      <code>winfo_cells</code>,
+      <code>winfo_children</code>,
+      <code>winfo_class</code>,
+      <code>winfo_colormapfull</code>,
+      <code>winfo_containing</code>,
+      <code>winfo_depth</code>,
+      <code>winfo_exists</code>,
+      <code>winfo_fpixels</code>,
+      <code>winfo_geometry</code>,
+      <code>winfo_height</code>,
+      <code>winfo_id</code>,
+      <code>winfo_interps</code>,
+      <code>winfo_ismapped</code>,
+      <code>winfo_manager</code>,
+      <code>winfo_name</code>,
+      <code>winfo_parent</code>,
+      <code>winfo_pathname</code>,
+      <code>winfo_pixels</code>,
+      <code>winfo_pointerx</code>,
+      <code>winfo_pointerxy</code>,
+      <code>winfo_pointery</code>,
+      <code>winfo_reqheight</code>,
+      <code>winfo_reqwidth</code>,
+      <code>winfo_rgb</code>,
+      <code>winfo_rootx</code>,
+      <code>winfo_rooty</code>,
+      <code>winfo_screen</code>,
+      <code>winfo_screencells</code>,
+      <code>winfo_screendepth</code>,
+      <code>winfo_screenheight</code>,
+      <code>winfo_screenmmheight</code>,
+      <code>winfo_screenmmwidth</code>,
+      <code>winfo_screenvisual</code>,
+      <code>winfo_screenwidth</code>,
+      <code>winfo_server</code>,
+      <code>winfo_toplevel</code>,
+      <code>winfo_viewable</code>,
+      <code>winfo_visual</code>,
+      <code>winfo_visualid</code>,
+      <code>winfo_visualsavailable</code>,
+      <code>winfo_vrootheight</code>,
+      <code>winfo_vrootwidth</code>,
+      <code>winfo_vrootx</code>,
+      <code>winfo_vrooty</code>,
+      <code>winfo_width</code>,
+      <code>winfo_x</code>,
+      <code>winfo_y</code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>Tkinter.Pack</code></b>:
+      <code>forget</code>,
+      <code>info</code>,
+      <code>pack</code>,
+      <code>pack_configure</code>,
+      <code>pack_forget</code>,
+      <code>pack_info</code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>Tkinter.Place</code></b>:
+      <code>place</code>,
+      <code>place_configure</code>,
+      <code>place_forget</code>,
+      <code>place_info</code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>Tkinter.Grid</code></b>:
+      <code>grid</code>,
+      <code>grid_configure</code>,
+      <code>grid_forget</code>,
+      <code>grid_info</code>,
+      <code>grid_remove</code>,
+      <code>location</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Class Variables</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="title"></a><span class="summary-name">title</span> = <code title=""Mouse Controlled Moving Target"">"Mouse Controlled Moving Target"</code>
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>Tkinter.Misc</code></b>:
+      <code>_noarg_</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Method Details</span></td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">master</span>=<span class="sig-default">None</span>,
+        <span class="sig-arg">suppress_go_buttons</span>=<span class="sig-default">0</span>,
+        <span class="sig-arg">**kw</span>)</span>
+    <br /><em class="fname">(Constructor)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.PyroApps.MouseTargetGUI-pysrc.html#MouseTargetControlFrame.__init__">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Construct a frame widget with the parent MASTER.
+
+Valid resource names: background, bd, bg, borderwidth, class,
+colormap, container, cursor, height, highlightbackground,
+highlightcolor, highlightthickness, relief, takefocus, visual, width.
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#__init__">EPhysGUIUtils.StimulusControlFrame.__init__</a>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="get_shortname"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">get_shortname</span>(<span class="sig-arg">self</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.PyroApps.MouseTargetGUI-pysrc.html#MouseTargetControlFrame.get_shortname">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Used as basename for saving parameter files and other ID purposes
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#get_shortname">EPhysGUIUtils.StimulusControlFrame.get_shortname</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="update_tk_vars"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">update_tk_vars</span>(<span class="sig-arg">self</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.PyroApps.MouseTargetGUI-pysrc.html#MouseTargetControlFrame.update_tk_vars">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Update Tkinter variables with (new) values from meta_params
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#update_tk_vars">EPhysGUIUtils.StimulusControlFrame.update_tk_vars</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="send_values"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">send_values</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">dummy_arg</span>=<span class="sig-default">None</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.PyroApps.MouseTargetGUI-pysrc.html#MouseTargetControlFrame.send_values">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Update meta_params variables with values from Tkinter fields
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#send_values">EPhysGUIUtils.StimulusControlFrame.send_values</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="get_duration_sec"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">get_duration_sec</span>(<span class="sig-arg">self</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.PyroApps.MouseTargetGUI-pysrc.html#MouseTargetControlFrame.get_duration_sec">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Calculate total duration in go loop
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#get_duration_sec">EPhysGUIUtils.StimulusControlFrame.get_duration_sec</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:47 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.PyroApps.MouseTargetGUI.MouseTargetMetaParameters-class.html b/doc/reference/html/VisionEgg.PyroApps.MouseTargetGUI.MouseTargetMetaParameters-class.html
new file mode 100644
index 0000000..365729b
--- /dev/null
+++ b/doc/reference/html/VisionEgg.PyroApps.MouseTargetGUI.MouseTargetMetaParameters-class.html
@@ -0,0 +1,139 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.PyroApps.MouseTargetGUI.MouseTargetMetaParameters</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.PyroApps-module.html">Package PyroApps</a> ::
+        <a href="VisionEgg.PyroApps.MouseTargetGUI-module.html">Module MouseTargetGUI</a> ::
+        Class MouseTargetMetaParameters
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.PyroApps.MouseTargetGUI.MouseTargetMetaParameters-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class MouseTargetMetaParameters</h1><span class="codelink"><a href="VisionEgg.PyroApps.MouseTargetGUI-pysrc.html#MouseTargetMetaParameters">source code</a></span><br /><br />
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__init__"></a><span class="summary-sig-name">__init__</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.MouseTargetGUI-pysrc.html#MouseTargetMetaParameters.__init__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:47 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.PyroApps.MouseTargetServer-module.html b/doc/reference/html/VisionEgg.PyroApps.MouseTargetServer-module.html
new file mode 100644
index 0000000..a2cde5a
--- /dev/null
+++ b/doc/reference/html/VisionEgg.PyroApps.MouseTargetServer-module.html
@@ -0,0 +1,416 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.PyroApps.MouseTargetServer</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.PyroApps-module.html">Package PyroApps</a> ::
+        Module MouseTargetServer
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.PyroApps.MouseTargetServer-module.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== MODULE DESCRIPTION ==================== -->
+<h1 class="epydoc">Module MouseTargetServer</h1><span class="codelink"><a href="VisionEgg.PyroApps.MouseTargetServer-pysrc.html">source code</a></span><br /><br />
+<pre class="literalblock">
+Handle mouse-controlled small targets (server-side)
+
+</pre><br /><br />
+
+<hr />
+<div class="fields">      <p><strong>Version:</strong>
+        1.1.dev
+      </p>
+      <p><strong>Author:</strong>
+        Andrew Straw <astraw at users.sourceforge.net>
+      </p>
+</div><!-- ==================== CLASSES ==================== -->
+<a name="section-Classes"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Classes</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController-class.html" class="summary-name">MouseTargetExperimentMetaController</a>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.PyroApps.MouseTargetServer.MousePositionController-class.html" class="summary-name">MousePositionController</a>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.PyroApps.MouseTargetServer.TargetPositionController-class.html" class="summary-name">TargetPositionController</a>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.PyroApps.MouseTargetServer.TargetOrientationController-class.html" class="summary-name">TargetOrientationController</a>
+    </td>
+  </tr>
+</table>
+<!-- ==================== FUNCTIONS ==================== -->
+<a name="section-Functions"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Functions</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="keydown"></a><span class="summary-sig-name">keydown</span>(<span class="summary-sig-arg">event</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.MouseTargetServer-pysrc.html#keydown">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="keyup"></a><span class="summary-sig-name">keyup</span>(<span class="summary-sig-arg">event</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.MouseTargetServer-pysrc.html#keyup">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="get_meta_controller_class"></a><span class="summary-sig-name">get_meta_controller_class</span>()</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.MouseTargetServer-pysrc.html#get_meta_controller_class">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="make_stimuli"></a><span class="summary-sig-name">make_stimuli</span>()</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.MouseTargetServer-pysrc.html#make_stimuli">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="get_meta_controller_stimkey"></a><span class="summary-sig-name">get_meta_controller_stimkey</span>()</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.MouseTargetServer-pysrc.html#get_meta_controller_stimkey">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="cross_product"></a><span class="summary-sig-name">cross_product</span>(<span class="summary-sig-arg">b</span>,
+        <span class="summary-sig-arg">c</span>)</span><br />
+      Cross product between vectors, represented as tuples of length 3.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.MouseTargetServer-pysrc.html#cross_product">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="mag"></a><span class="summary-sig-name">mag</span>(<span class="summary-sig-arg">b</span>)</span><br />
+      Magnitude of a vector.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.MouseTargetServer-pysrc.html#mag">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="get_target_size"></a><span class="summary-sig-name">get_target_size</span>(<span class="summary-sig-arg">t</span>=<span class="summary-sig-default">None</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.MouseTargetServer-pysrc.html#get_target_size">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+</table>
+<!-- ==================== VARIABLES ==================== -->
+<a name="section-Variables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Variables</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="__cvs__"></a><span class="summary-name">__cvs__</span> = <code title="string.split('$Revision$') [1]">string.split('$Revision$') [1]</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="__date__"></a><span class="summary-name">__date__</span> = <code title="string.join(string.split('$Date$') [1: 3], ' ')">string.join(string.split('$Date$') [1: 3], ' ')</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="mouse_position"></a><span class="summary-name">mouse_position</span> = <code title="320.0, 240.0">320.0, 240.0</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="last_mouse_position"></a><span class="summary-name">last_mouse_position</span> = <code title="0.0, 0.0">0.0, 0.0</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="target_w"></a><span class="summary-name">target_w</span> = <code title="50.0">50.0</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="target_h"></a><span class="summary-name">target_h</span> = <code title="10.0">10.0</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="up"></a><span class="summary-name">up</span> = <code title="0">0</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="down"></a><span class="summary-name">down</span> = <code title="0">0</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="left"></a><span class="summary-name">left</span> = <code title="0">0</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="right"></a><span class="summary-name">right</span> = <code title="0">0</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.PyroApps.MouseTargetServer-module.html#handle_event_callbacks" class="summary-name">handle_event_callbacks</a> = <code title="[(pygame.locals.KEYDOWN, keydown), (pygame.locals.KEYUP, keyup)]">[(pygame.locals.KEYDOWN, keydown), (p<code class="variable-ellipsis">...</code></code>
+    </td>
+  </tr>
+</table>
+<!-- ==================== VARIABLES DETAILS ==================== -->
+<a name="section-VariablesDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Variables Details</span></td>
+</tr>
+</table>
+<a name="handle_event_callbacks"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">handle_event_callbacks</h3>
+  
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+[(pygame.locals.KEYDOWN, keydown), (pygame.locals.KEYUP, keyup)]
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.PyroApps.MouseTargetServer-pysrc.html b/doc/reference/html/VisionEgg.PyroApps.MouseTargetServer-pysrc.html
new file mode 100644
index 0000000..469949c
--- /dev/null
+++ b/doc/reference/html/VisionEgg.PyroApps.MouseTargetServer-pysrc.html
@@ -0,0 +1,1071 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.PyroApps.MouseTargetServer</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.PyroApps-module.html">Package PyroApps</a> ::
+        Module MouseTargetServer
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.PyroApps.MouseTargetServer-pysrc.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<h1 class="epydoc">Source Code for <a href="VisionEgg.PyroApps.MouseTargetServer-module.html">Module VisionEgg.PyroApps.MouseTargetServer</a></h1>
+<pre class="py-src">
+<a name="L1"></a><tt class="py-lineno">  1</tt>  <tt class="py-line"><tt class="py-comment">#!/usr/bin/env python</tt> </tt>
+<a name="L2"></a><tt class="py-lineno">  2</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L3"></a><tt class="py-lineno">  3</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># The Vision Egg: MouseTargetServer</tt> </tt>
+<a name="L4"></a><tt class="py-lineno">  4</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L5"></a><tt class="py-lineno">  5</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Copyright (C) 2001-2003 Andrew Straw.</tt> </tt>
+<a name="L6"></a><tt class="py-lineno">  6</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Author: Andrew Straw <astraw at users.sourceforge.net></tt> </tt>
+<a name="L7"></a><tt class="py-lineno">  7</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># URL: <http://www.visionegg.org/></tt> </tt>
+<a name="L8"></a><tt class="py-lineno">  8</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L9"></a><tt class="py-lineno">  9</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Distributed under the terms of the GNU Lesser General Public License</tt> </tt>
+<a name="L10"></a><tt class="py-lineno"> 10</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># (LGPL). See LICENSE.TXT that came with this file.</tt> </tt>
+<a name="L11"></a><tt class="py-lineno"> 11</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L12"></a><tt class="py-lineno"> 12</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># $Id$</tt> </tt>
+<a name="L13"></a><tt class="py-lineno"> 13</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L14"></a><tt class="py-lineno"> 14</tt>  <tt class="py-line"><tt class="py-docstring">"""Handle mouse-controlled small targets (server-side)"""</tt> </tt>
+<a name="L15"></a><tt class="py-lineno"> 15</tt>  <tt class="py-line"> </tt>
+<a name="L16"></a><tt class="py-lineno"> 16</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-0" class="py-name" targets="Package VisionEgg=VisionEgg-module.html"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-0', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">,</tt> <tt class="py-name">string</tt> </tt>
+<a name="L17"></a><tt class="py-lineno"> 17</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-1" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-1', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-2" class="py-name" targets="Module VisionEgg.ParameterTypes=VisionEgg.ParameterTypes-module.html"><a title="VisionEgg.ParameterTypes" class="py-name" href="#" onclick="return doclink('link-2', 'P [...]
+<a name="L18"></a><tt class="py-lineno"> 18</tt>  <tt class="py-line"> </tt>
+<a name="L19"></a><tt class="py-lineno"> 19</tt>  <tt class="py-line"><tt id="link-3" class="py-name" targets="Variable VisionEgg.DaqKeyboard.__version__=VisionEgg.DaqKeyboard-module.html#__version__,Variable VisionEgg.DaqLPT.__version__=VisionEgg.DaqLPT-module.html#__version__,Variable VisionEgg.GL.__version__=VisionEgg.GL-module.html#__version__,Variable VisionEgg.PyroApps.EPhysGUI.__version__=VisionEgg.PyroApps.EPhysGUI-module.html#__version__,Variable VisionEgg.PyroApps.EPhysGUIUtils [...]
+VisionEgg.DaqLPT.__version__
+VisionEgg.GL.__version__
+VisionEgg.PyroApps.EPhysGUI.__version__
+VisionEgg.PyroApps.EPhysGUIUtils.__version__
+VisionEgg.PyroApps.EPhysServer.__version__
+VisionEgg.PyroApps.GridGUI.__version__
+VisionEgg.PyroApps.GridServer.__version__
+VisionEgg.PyroApps.ScreenPositionGUI.__version__
+VisionEgg.PyroApps.ScreenPositionServer.__version__
+VisionEgg.PyroApps.SpinningDrumGUI.__version__
+VisionEgg.PyroApps.SpinningDrumServer.__version__
+VisionEgg.PyroHelpers.__version__
+VisionEgg.QuickTime.__version__
+VisionEgg.ResponseControl.__version__
+VisionEgg.SphereMap.__version__
+VisionEgg.TCPController.__version__" class="py-name" href="#" onclick="return doclink('link-3', '__version__', 'link-3');">__version__</a></tt> <tt class="py-op">=</tt> <tt id="link-4" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-4', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-5" class="py-name" targets="Variable VisionEgg.release_name=VisionEgg-module.html#release_name"><a title="VisionEgg.release_name" c [...]
+<a name="L20"></a><tt class="py-lineno"> 20</tt>  <tt class="py-line"><tt id="link-6" class="py-name" targets="Variable VisionEgg.PyroApps.ColorCalGUI.__cvs__=VisionEgg.PyroApps.ColorCalGUI-module.html#__cvs__,Variable VisionEgg.PyroApps.ColorCalServer.__cvs__=VisionEgg.PyroApps.ColorCalServer-module.html#__cvs__,Variable VisionEgg.PyroApps.EPhysGUI.__cvs__=VisionEgg.PyroApps.EPhysGUI-module.html#__cvs__,Variable VisionEgg.PyroApps.EPhysGUIUtils.__cvs__=VisionEgg.PyroApps.EPhysGUIUtils-m [...]
+VisionEgg.PyroApps.ColorCalServer.__cvs__
+VisionEgg.PyroApps.EPhysGUI.__cvs__
+VisionEgg.PyroApps.EPhysGUIUtils.__cvs__
+VisionEgg.PyroApps.EPhysServer.__cvs__
+VisionEgg.PyroApps.FlatGratingGUI.__cvs__
+VisionEgg.PyroApps.FlatGratingServer.__cvs__
+VisionEgg.PyroApps.GridGUI.__cvs__
+VisionEgg.PyroApps.GridServer.__cvs__
+VisionEgg.PyroApps.MouseTargetGUI.__cvs__
+VisionEgg.PyroApps.MouseTargetServer.__cvs__
+VisionEgg.PyroApps.ScreenPositionGUI.__cvs__
+VisionEgg.PyroApps.ScreenPositionServer.__cvs__
+VisionEgg.PyroApps.SphereGratingGUI.__cvs__
+VisionEgg.PyroApps.SphereGratingServer.__cvs__
+VisionEgg.PyroApps.SpinningDrumGUI.__cvs__
+VisionEgg.PyroApps.SpinningDrumServer.__cvs__
+VisionEgg.PyroApps.TargetGUI.__cvs__
+VisionEgg.PyroApps.TargetServer.__cvs__
+VisionEgg.PyroClient.__cvs__
+VisionEgg.PyroHelpers.__cvs__
+VisionEgg.TCPController.__cvs__" class="py-name" href="#" onclick="return doclink('link-6', '__cvs__', 'link-6');">__cvs__</a></tt> <tt class="py-op">=</tt> <tt class="py-name">string</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'$Revision$'</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
+<a name="L21"></a><tt class="py-lineno"> 21</tt>  <tt class="py-line"><tt id="link-7" class="py-name" targets="Variable VisionEgg.PyroApps.ColorCalGUI.__date__=VisionEgg.PyroApps.ColorCalGUI-module.html#__date__,Variable VisionEgg.PyroApps.ColorCalServer.__date__=VisionEgg.PyroApps.ColorCalServer-module.html#__date__,Variable VisionEgg.PyroApps.EPhysGUI.__date__=VisionEgg.PyroApps.EPhysGUI-module.html#__date__,Variable VisionEgg.PyroApps.EPhysGUIUtils.__date__=VisionEgg.PyroApps.EPhysGUI [...]
+VisionEgg.PyroApps.ColorCalServer.__date__
+VisionEgg.PyroApps.EPhysGUI.__date__
+VisionEgg.PyroApps.EPhysGUIUtils.__date__
+VisionEgg.PyroApps.EPhysServer.__date__
+VisionEgg.PyroApps.FlatGratingGUI.__date__
+VisionEgg.PyroApps.FlatGratingServer.__date__
+VisionEgg.PyroApps.GridGUI.__date__
+VisionEgg.PyroApps.GridServer.__date__
+VisionEgg.PyroApps.MouseTargetGUI.__date__
+VisionEgg.PyroApps.MouseTargetServer.__date__
+VisionEgg.PyroApps.ScreenPositionGUI.__date__
+VisionEgg.PyroApps.ScreenPositionServer.__date__
+VisionEgg.PyroApps.SphereGratingGUI.__date__
+VisionEgg.PyroApps.SphereGratingServer.__date__
+VisionEgg.PyroApps.SpinningDrumGUI.__date__
+VisionEgg.PyroApps.SpinningDrumServer.__date__
+VisionEgg.PyroApps.TargetGUI.__date__
+VisionEgg.PyroApps.TargetServer.__date__
+VisionEgg.PyroClient.__date__
+VisionEgg.PyroHelpers.__date__
+VisionEgg.TCPController.__date__" class="py-name" href="#" onclick="return doclink('link-7', '__date__', 'link-7');">__date__</a></tt> <tt class="py-op">=</tt> <tt class="py-name">string</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">string</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'$Date$'</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt  [...]
+<a name="L22"></a><tt class="py-lineno"> 22</tt>  <tt class="py-line"><tt id="link-8" class="py-name" targets="Variable VisionEgg.PyroApps.EPhysGUI.__author__=VisionEgg.PyroApps.EPhysGUI-module.html#__author__,Variable VisionEgg.PyroApps.EPhysGUIUtils.__author__=VisionEgg.PyroApps.EPhysGUIUtils-module.html#__author__,Variable VisionEgg.PyroApps.EPhysServer.__author__=VisionEgg.PyroApps.EPhysServer-module.html#__author__,Variable VisionEgg.PyroApps.GridGUI.__author__=VisionEgg.PyroApps.Gr [...]
+VisionEgg.PyroApps.EPhysGUIUtils.__author__
+VisionEgg.PyroApps.EPhysServer.__author__
+VisionEgg.PyroApps.GridGUI.__author__
+VisionEgg.PyroApps.GridServer.__author__
+VisionEgg.PyroApps.SpinningDrumGUI.__author__
+VisionEgg.PyroApps.SpinningDrumServer.__author__" class="py-name" href="#" onclick="return doclink('link-8', '__author__', 'link-8');">__author__</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'Andrew Straw <astraw at users.sourceforge.net>'</tt> </tt>
+<a name="L23"></a><tt class="py-lineno"> 23</tt>  <tt class="py-line"> </tt>
+<a name="L24"></a><tt class="py-lineno"> 24</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">sys</tt><tt class="py-op">,</tt> <tt class="py-name">os</tt><tt class="py-op">,</tt> <tt class="py-name">math</tt> </tt>
+<a name="L25"></a><tt class="py-lineno"> 25</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-9" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-9', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-10" class="py-name" targets="Module VisionEgg.Core=VisionEgg.Core-module.html"><a title="VisionEgg.Core" class="py-name" href="#" onclick="return doclink('link-10', 'Core', 'link-10');">Core</a>< [...]
+<a name="L26"></a><tt class="py-lineno"> 26</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-11" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-11', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-12" class="py-name" targets="Module VisionEgg.FlowControl=VisionEgg.FlowControl-module.html"><a title="VisionEgg.FlowControl" class="py-name" href="#" onclick="return doclink('link-12', 'FlowCo [...]
+<a name="L27"></a><tt class="py-lineno"> 27</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-13" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-13', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-14" class="py-name" targets="Module VisionEgg.MoreStimuli=VisionEgg.MoreStimuli-module.html"><a title="VisionEgg.MoreStimuli" class="py-name" href="#" onclick="return doclink('link-14', 'MoreSt [...]
+<a name="L28"></a><tt class="py-lineno"> 28</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-15" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-15', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-16" class="py-name" targets="Module VisionEgg.PyroHelpers=VisionEgg.PyroHelpers-module.html"><a title="VisionEgg.PyroHelpers" class="py-name" href="#" onclick="return doclink('link-16', 'PyroHe [...]
+<a name="L29"></a><tt class="py-lineno"> 29</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">Pyro</tt><tt class="py-op">.</tt><tt class="py-name">core</tt> </tt>
+<a name="L30"></a><tt class="py-lineno"> 30</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">pygame</tt><tt class="py-op">,</tt> <tt class="py-name">pygame</tt><tt class="py-op">.</tt><tt class="py-name">locals</tt> </tt>
+<a name="L31"></a><tt class="py-lineno"> 31</tt>  <tt class="py-line"> </tt>
+<a name="L32"></a><tt class="py-lineno"> 32</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-17" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-17', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-18" class="py-name" targets="Package VisionEgg.PyroApps=VisionEgg.PyroApps-module.html"><a title="VisionEgg.PyroApps" class="py-name" href="#" onclick="return doclink('link-18', 'PyroApps', 'link [...]
+<a name="L33"></a><tt class="py-lineno"> 33</tt>  <tt class="py-line"> </tt>
+<a name="L34"></a><tt class="py-lineno"> 34</tt>  <tt class="py-line"><tt class="py-comment"># Variables to store the mouse position</tt> </tt>
+<a name="L35"></a><tt class="py-lineno"> 35</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt id="link-21" class="py-name" targets="Variable VisionEgg.PyroApps.MouseTargetServer.mouse_position=VisionEgg.PyroApps.MouseTargetServer-module.html#mouse_position"><a title="VisionEgg.PyroApps.MouseTargetServer.mouse_position" class="py-name" href="#" onclick="return doclink('link-21', 'mouse_position', 'link-21');">mouse_position</a></tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt [...]
+<a name="L36"></a><tt class="py-lineno"> 36</tt>  <tt class="py-line"><tt id="link-22" class="py-name" targets="Variable VisionEgg.PyroApps.MouseTargetServer.last_mouse_position=VisionEgg.PyroApps.MouseTargetServer-module.html#last_mouse_position"><a title="VisionEgg.PyroApps.MouseTargetServer.last_mouse_position" class="py-name" href="#" onclick="return doclink('link-22', 'last_mouse_position', 'link-22');">last_mouse_position</a></tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><t [...]
+<a name="L37"></a><tt class="py-lineno"> 37</tt>  <tt class="py-line"> </tt>
+<a name="L38"></a><tt class="py-lineno"> 38</tt>  <tt class="py-line"><tt class="py-comment"># target size global variables</tt> </tt>
+<a name="L39"></a><tt class="py-lineno"> 39</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt id="link-23" class="py-name" targets="Variable VisionEgg.PyroApps.MouseTargetServer.target_w=VisionEgg.PyroApps.MouseTargetServer-module.html#target_w"><a title="VisionEgg.PyroApps.MouseTargetServer.target_w" class="py-name" href="#" onclick="return doclink('link-23', 'target_w', 'link-23');">target_w</a></tt> <tt class="py-op">=</tt> <tt class="py-number">50.0</tt> </tt>
+<a name="L40"></a><tt class="py-lineno"> 40</tt>  <tt class="py-line"><tt id="link-24" class="py-name" targets="Variable VisionEgg.PyroApps.MouseTargetServer.target_h=VisionEgg.PyroApps.MouseTargetServer-module.html#target_h"><a title="VisionEgg.PyroApps.MouseTargetServer.target_h" class="py-name" href="#" onclick="return doclink('link-24', 'target_h', 'link-24');">target_h</a></tt> <tt class="py-op">=</tt> <tt class="py-number">10.0</tt> </tt>
+<a name="L41"></a><tt class="py-lineno"> 41</tt>  <tt class="py-line"> </tt>
+<a name="L42"></a><tt class="py-lineno"> 42</tt>  <tt class="py-line"><tt class="py-comment"># key state global variables</tt> </tt>
+<a name="L43"></a><tt class="py-lineno"> 43</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt id="link-25" class="py-name" targets="Variable VisionEgg.PyroApps.MouseTargetServer.up=VisionEgg.PyroApps.MouseTargetServer-module.html#up"><a title="VisionEgg.PyroApps.MouseTargetServer.up" class="py-name" href="#" onclick="return doclink('link-25', 'up', 'link-25');">up</a></tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L44"></a><tt class="py-lineno"> 44</tt>  <tt class="py-line"><tt id="link-26" class="py-name" targets="Variable VisionEgg.PyroApps.MouseTargetServer.down=VisionEgg.PyroApps.MouseTargetServer-module.html#down"><a title="VisionEgg.PyroApps.MouseTargetServer.down" class="py-name" href="#" onclick="return doclink('link-26', 'down', 'link-26');">down</a></tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L45"></a><tt class="py-lineno"> 45</tt>  <tt class="py-line"><tt id="link-27" class="py-name" targets="Variable VisionEgg.PyroApps.MouseTargetServer.left=VisionEgg.PyroApps.MouseTargetServer-module.html#left"><a title="VisionEgg.PyroApps.MouseTargetServer.left" class="py-name" href="#" onclick="return doclink('link-27', 'left', 'link-27');">left</a></tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L46"></a><tt class="py-lineno"> 46</tt>  <tt class="py-line"><tt id="link-28" class="py-name" targets="Variable VisionEgg.PyroApps.MouseTargetServer.right=VisionEgg.PyroApps.MouseTargetServer-module.html#right"><a title="VisionEgg.PyroApps.MouseTargetServer.right" class="py-name" href="#" onclick="return doclink('link-28', 'right', 'link-28');">right</a></tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L47"></a><tt class="py-lineno"> 47</tt>  <tt class="py-line"> </tt>
+<a name="keydown"></a><div id="keydown-def"><a name="L48"></a><tt class="py-lineno"> 48</tt> <a class="py-toggle" href="#" id="keydown-toggle" onclick="return toggle('keydown');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.MouseTargetServer-module.html#keydown">keydown</a><tt class="py-op">(</tt><tt class="py-param">event</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="keydown-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="keydown-expanded"><a name="L49"></a><tt class="py-lineno"> 49</tt>  <tt class="py-line">    <tt class="py-keyword">global</tt> <tt id="link-29" class="py-name"><a title="VisionEgg.PyroApps.MouseTargetServer.up" class="py-name" href="#" onclick="return doclink('link-29', 'up', 'link-25');">up</a></tt><tt class="py-op">,</tt> <tt id="link-30" class="py-name"><a title="VisionEgg.PyroApps.MouseTarg [...]
+<a name="L50"></a><tt class="py-lineno"> 50</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">event</tt><tt class="py-op">.</tt><tt class="py-name">key</tt> <tt class="py-op">==</tt> <tt class="py-name">pygame</tt><tt class="py-op">.</tt><tt class="py-name">locals</tt><tt class="py-op">.</tt><tt class="py-name">K_UP</tt><tt class="py-op">:</tt> </tt>
+<a name="L51"></a><tt class="py-lineno"> 51</tt>  <tt class="py-line">        <tt id="link-33" class="py-name"><a title="VisionEgg.PyroApps.MouseTargetServer.up" class="py-name" href="#" onclick="return doclink('link-33', 'up', 'link-25');">up</a></tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L52"></a><tt class="py-lineno"> 52</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt class="py-name">event</tt><tt class="py-op">.</tt><tt class="py-name">key</tt> <tt class="py-op">==</tt> <tt class="py-name">pygame</tt><tt class="py-op">.</tt><tt class="py-name">locals</tt><tt class="py-op">.</tt><tt class="py-name">K_DOWN</tt><tt class="py-op">:</tt> </tt>
+<a name="L53"></a><tt class="py-lineno"> 53</tt>  <tt class="py-line">        <tt id="link-34" class="py-name"><a title="VisionEgg.PyroApps.MouseTargetServer.down" class="py-name" href="#" onclick="return doclink('link-34', 'down', 'link-26');">down</a></tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L54"></a><tt class="py-lineno"> 54</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt class="py-name">event</tt><tt class="py-op">.</tt><tt class="py-name">key</tt> <tt class="py-op">==</tt> <tt class="py-name">pygame</tt><tt class="py-op">.</tt><tt class="py-name">locals</tt><tt class="py-op">.</tt><tt class="py-name">K_RIGHT</tt><tt class="py-op">:</tt> </tt>
+<a name="L55"></a><tt class="py-lineno"> 55</tt>  <tt class="py-line">        <tt id="link-35" class="py-name"><a title="VisionEgg.PyroApps.MouseTargetServer.right" class="py-name" href="#" onclick="return doclink('link-35', 'right', 'link-28');">right</a></tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L56"></a><tt class="py-lineno"> 56</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt class="py-name">event</tt><tt class="py-op">.</tt><tt class="py-name">key</tt> <tt class="py-op">==</tt> <tt class="py-name">pygame</tt><tt class="py-op">.</tt><tt class="py-name">locals</tt><tt class="py-op">.</tt><tt class="py-name">K_LEFT</tt><tt class="py-op">:</tt> </tt>
+<a name="L57"></a><tt class="py-lineno"> 57</tt>  <tt class="py-line">        <tt id="link-36" class="py-name"><a title="VisionEgg.PyroApps.MouseTargetServer.left" class="py-name" href="#" onclick="return doclink('link-36', 'left', 'link-27');">left</a></tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt>
+</div><a name="L58"></a><tt class="py-lineno"> 58</tt>  <tt class="py-line">         </tt>
+<a name="keyup"></a><div id="keyup-def"><a name="L59"></a><tt class="py-lineno"> 59</tt> <a class="py-toggle" href="#" id="keyup-toggle" onclick="return toggle('keyup');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.MouseTargetServer-module.html#keyup">keyup</a><tt class="py-op">(</tt><tt class="py-param">event</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="keyup-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="keyup-expanded"><a name="L60"></a><tt class="py-lineno"> 60</tt>  <tt class="py-line">    <tt class="py-keyword">global</tt> <tt id="link-37" class="py-name"><a title="VisionEgg.PyroApps.MouseTargetServer.up" class="py-name" href="#" onclick="return doclink('link-37', 'up', 'link-25');">up</a></tt><tt class="py-op">,</tt> <tt id="link-38" class="py-name"><a title="VisionEgg.PyroApps.MouseTargetSe [...]
+<a name="L61"></a><tt class="py-lineno"> 61</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">event</tt><tt class="py-op">.</tt><tt class="py-name">key</tt> <tt class="py-op">==</tt> <tt class="py-name">pygame</tt><tt class="py-op">.</tt><tt class="py-name">locals</tt><tt class="py-op">.</tt><tt class="py-name">K_UP</tt><tt class="py-op">:</tt> </tt>
+<a name="L62"></a><tt class="py-lineno"> 62</tt>  <tt class="py-line">        <tt id="link-41" class="py-name"><a title="VisionEgg.PyroApps.MouseTargetServer.up" class="py-name" href="#" onclick="return doclink('link-41', 'up', 'link-25');">up</a></tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L63"></a><tt class="py-lineno"> 63</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt class="py-name">event</tt><tt class="py-op">.</tt><tt class="py-name">key</tt> <tt class="py-op">==</tt> <tt class="py-name">pygame</tt><tt class="py-op">.</tt><tt class="py-name">locals</tt><tt class="py-op">.</tt><tt class="py-name">K_DOWN</tt><tt class="py-op">:</tt> </tt>
+<a name="L64"></a><tt class="py-lineno"> 64</tt>  <tt class="py-line">        <tt id="link-42" class="py-name"><a title="VisionEgg.PyroApps.MouseTargetServer.down" class="py-name" href="#" onclick="return doclink('link-42', 'down', 'link-26');">down</a></tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L65"></a><tt class="py-lineno"> 65</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt class="py-name">event</tt><tt class="py-op">.</tt><tt class="py-name">key</tt> <tt class="py-op">==</tt> <tt class="py-name">pygame</tt><tt class="py-op">.</tt><tt class="py-name">locals</tt><tt class="py-op">.</tt><tt class="py-name">K_RIGHT</tt><tt class="py-op">:</tt> </tt>
+<a name="L66"></a><tt class="py-lineno"> 66</tt>  <tt class="py-line">        <tt id="link-43" class="py-name"><a title="VisionEgg.PyroApps.MouseTargetServer.right" class="py-name" href="#" onclick="return doclink('link-43', 'right', 'link-28');">right</a></tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L67"></a><tt class="py-lineno"> 67</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt class="py-name">event</tt><tt class="py-op">.</tt><tt class="py-name">key</tt> <tt class="py-op">==</tt> <tt class="py-name">pygame</tt><tt class="py-op">.</tt><tt class="py-name">locals</tt><tt class="py-op">.</tt><tt class="py-name">K_LEFT</tt><tt class="py-op">:</tt> </tt>
+<a name="L68"></a><tt class="py-lineno"> 68</tt>  <tt class="py-line">        <tt id="link-44" class="py-name"><a title="VisionEgg.PyroApps.MouseTargetServer.left" class="py-name" href="#" onclick="return doclink('link-44', 'left', 'link-27');">left</a></tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+</div><a name="L69"></a><tt class="py-lineno"> 69</tt>  <tt class="py-line">         </tt>
+<a name="L70"></a><tt class="py-lineno"> 70</tt>  <tt class="py-line"><tt id="link-45" class="py-name" targets="Variable VisionEgg.PyroApps.MouseTargetServer.handle_event_callbacks=VisionEgg.PyroApps.MouseTargetServer-module.html#handle_event_callbacks"><a title="VisionEgg.PyroApps.MouseTargetServer.handle_event_callbacks" class="py-name" href="#" onclick="return doclink('link-45', 'handle_event_callbacks', 'link-45');">handle_event_callbacks</a></tt> <tt class="py-op">=</tt> <tt class=" [...]
+<a name="L71"></a><tt class="py-lineno"> 71</tt>  <tt class="py-line">                          <tt class="py-op">(</tt><tt class="py-name">pygame</tt><tt class="py-op">.</tt><tt class="py-name">locals</tt><tt class="py-op">.</tt><tt class="py-name">KEYUP</tt><tt class="py-op">,</tt> <tt id="link-47" class="py-name" targets="Function VisionEgg.PyroApps.MouseTargetServer.keyup()=VisionEgg.PyroApps.MouseTargetServer-module.html#keyup"><a title="VisionEgg.PyroApps.MouseTargetServer.keyup" c [...]
+<a name="L72"></a><tt class="py-lineno"> 72</tt>  <tt class="py-line"> </tt>
+<a name="MouseTargetExperimentMetaController"></a><div id="MouseTargetExperimentMetaController-def"><a name="L73"></a><tt class="py-lineno"> 73</tt> <a class="py-toggle" href="#" id="MouseTargetExperimentMetaController-toggle" onclick="return toggle('MouseTargetExperimentMetaController');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController-class.html">MouseTargetExperimentMetaCon [...]
+</div><div id="MouseTargetExperimentMetaController-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="MouseTargetExperimentMetaController-expanded"><a name="MouseTargetExperimentMetaController.__init__"></a><div id="MouseTargetExperimentMetaController.__init__-def"><a name="L74"></a><tt class="py-lineno"> 74</tt> <a class="py-toggle" href="#" id="MouseTargetExperimentMetaController.__init__-toggle" onclick="return toggle('MouseTargetExperimentMetaController.__init__' [...]
+</div><div id="MouseTargetExperimentMetaController.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="MouseTargetExperimentMetaController.__init__-expanded"><a name="L75"></a><tt class="py-lineno"> 75</tt>  <tt class="py-line">        <tt class="py-keyword">global</tt> <tt class="py-name">screen_global</tt> </tt>
+<a name="L76"></a><tt class="py-lineno"> 76</tt>  <tt class="py-line">        <tt class="py-name">screen_global</tt> <tt class="py-op">=</tt> <tt class="py-name">screen</tt> </tt>
+<a name="L77"></a><tt class="py-lineno"> 77</tt>  <tt class="py-line">        <tt class="py-comment"># get stimulus</tt> </tt>
+<a name="L78"></a><tt class="py-lineno"> 78</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">assert</tt><tt class="py-op">(</tt> <tt class="py-name">stimuli</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-string">'2d_overlay'</tt><tt class="py-op">)</tt> </tt>
+<a name="L79"></a><tt class="py-lineno"> 79</tt>  <tt class="py-line">        <tt class="py-name">target</tt> <tt class="py-op">=</tt> <tt class="py-name">stimuli</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
+<a name="L80"></a><tt class="py-lineno"> 80</tt>  <tt class="py-line">         </tt>
+<a name="L81"></a><tt class="py-lineno"> 81</tt>  <tt class="py-line">        <tt class="py-name">Pyro</tt><tt class="py-op">.</tt><tt class="py-name">core</tt><tt class="py-op">.</tt><tt class="py-name">ObjBase</tt><tt class="py-op">.</tt><tt id="link-48" class="py-name" targets="Method VisionEgg.ClassWithParameters.__init__()=VisionEgg.ClassWithParameters-class.html#__init__,Method VisionEgg.Configuration.Config.__init__()=VisionEgg.Configuration.Config-class.html#__init__,Method Visio [...]
+VisionEgg.Configuration.Config.__init__
+VisionEgg.Core.FixationSpot.__init__
+VisionEgg.Core.FrameTimer.__init__
+VisionEgg.Core.ModelView.__init__
+VisionEgg.Core.OrthographicProjection.__init__
+VisionEgg.Core.OrthographicProjectionNoZClip.__init__
+VisionEgg.Core.PerspectiveProjection.__init__
+VisionEgg.Core.Projection.__init__
+VisionEgg.Core.ProjectionBaseClass.__init__
+VisionEgg.Core.Screen.__init__
+VisionEgg.Core.SimplePerspectiveProjection.__init__
+VisionEgg.Core.Stimulus.__init__
+VisionEgg.Core.Viewport.__init__
+VisionEgg.Daq.Channel.__init__
+VisionEgg.Daq.DaqMode.__init__
+VisionEgg.Daq.Device.__init__
+VisionEgg.Daq.Functionality.__init__
+VisionEgg.Daq.SignalType.__init__
+VisionEgg.DaqKeyboard.KeyboardTriggerInController.__init__
+VisionEgg.DaqLPT.LPTChannel.__init__
+VisionEgg.DaqLPT.LPTDevice.__init__
+VisionEgg.DaqLPT.LPTTriggerInController.__init__
+VisionEgg.DaqLPT.LPTTriggerOutController.__init__
+VisionEgg.Deprecated.Message.__init__
+VisionEgg.Dots.DotArea2D.__init__
+VisionEgg.FlowControl.ConstantController.__init__
+VisionEgg.FlowControl.Controller.__init__
+VisionEgg.FlowControl.EncapsulatedController.__init__
+VisionEgg.FlowControl.EvalStringController.__init__
+VisionEgg.FlowControl.ExecStringController.__init__
+VisionEgg.FlowControl.FunctionController.__init__
+VisionEgg.FlowControl.Presentation.__init__
+VisionEgg.GLTrace.Wrapper.__init__
+VisionEgg.GUI.AppWindow.__init__
+VisionEgg.GUI.GetKeypressDialog.__init__
+VisionEgg.GUI.GraphicsConfigurationWindow.__init__
+VisionEgg.GUI.InfoFrame.__init__
+VisionEgg.GUI.ProgressBar.__init__
+VisionEgg.GUI.ToplevelDialog.__init__
+VisionEgg.Gratings.SinGrating2D.__init__
+VisionEgg.Gratings.SinGrating3D.__init__
+VisionEgg.MoreStimuli.Arrow.__init__
+VisionEgg.MoreStimuli.FilledCircle.__init__
+VisionEgg.MoreStimuli.Rectangle3D.__init__
+VisionEgg.MoreStimuli.Target2D.__init__
+VisionEgg.ParameterTypes.AnyOf.__init__
+VisionEgg.ParameterTypes.Instance.__init__
+VisionEgg.ParameterTypes.Sequence.__init__
+VisionEgg.ParameterTypes.SubClass.__init__
+VisionEgg.PyroApps.AST_ext.AST_Visitor.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalMetaParameters.__init__
+VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.__init__
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.__init__
+VisionEgg.PyroApps.DropinGUI.DropinMetaParameters.__init__
+VisionEgg.PyroApps.DropinServer.DropinMetaController.__init__
+VisionEgg.PyroApps.EPhysGUI.AppWindow.__init__
+VisionEgg.PyroApps.EPhysGUI.BarButton.__init__
+VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase.__init__
+VisionEgg.PyroApps.EPhysGUI.GammaFrame.__init__
+VisionEgg.PyroApps.EPhysGUI.ImageSequenceLauncher.__init__
+VisionEgg.PyroApps.EPhysGUI.Loop.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopContainedObject.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopParamDialog.__init__
+VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.__init__
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.__init__
+VisionEgg.PyroApps.EPhysServer.EPhysServer.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingMetaParameters.__init__
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.GridGUI.GridControlFrame.__init__
+VisionEgg.PyroApps.GridGUI.GridMetaParameters.__init__
+VisionEgg.PyroApps.GridServer.GridMetaController.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetMetaParameters.__init__
+VisionEgg.PyroApps.MouseTargetServer.MousePositionController.__init__
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetOrientationController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetPositionController.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.CallbackEntry.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionParameters.__init__
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingMetaParameters.__init__
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumMetaParameters.__init__
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.__init__
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.__init__
+VisionEgg.PyroApps.TargetGUI.TargetMetaParameters.__init__
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.__init__
+VisionEgg.PyroClient.PyroClient.__init__
+VisionEgg.PyroHelpers.PyroConstantController.__init__
+VisionEgg.PyroHelpers.PyroEncapsulatedController.__init__
+VisionEgg.PyroHelpers.PyroEvalStringController.__init__
+VisionEgg.PyroHelpers.PyroExecStringController.__init__
+VisionEgg.PyroHelpers.PyroListenController.__init__
+VisionEgg.PyroHelpers.PyroLocalDictController.__init__
+VisionEgg.PyroHelpers.PyroServer.__init__
+VisionEgg.QuickTime.MovieTexture.__init__
+VisionEgg.ResponseControl.KeyboardResponseController.__init__
+VisionEgg.ResponseControl.ResponseController.__init__
+VisionEgg.SphereMap.AzElGrid.__init__
+VisionEgg.SphereMap.SphereGrating.__init__
+VisionEgg.SphereMap.SphereMap.__init__
+VisionEgg.SphereMap.SphereWindow.__init__
+VisionEgg.TCPController.SocketListenController.__init__
+VisionEgg.TCPController.TCPController.__init__
+VisionEgg.TCPController.TCPServer.__init__
+VisionEgg.Text.BitmapText.__init__
+VisionEgg.Text.GlutTextBase.__init__
+VisionEgg.Text.StrokeText.__init__
+VisionEgg.Text.Text.__init__
+VisionEgg.Textures.FixationCross.__init__
+VisionEgg.Textures.Mask2D.__init__
+VisionEgg.Textures.SpinningDrum.__init__
+VisionEgg.Textures.Texture.__init__
+VisionEgg.Textures.TextureFromFile.__init__
+VisionEgg.Textures.TextureObject.__init__
+VisionEgg.Textures.TextureStimulusBaseClass.__init__
+VisionEgg.ThreeDeeMath.TransformMatrix.__init__
+VisionEgg.WrappedText.WrappedText.__init__
+VisionEgg.qtmovie.Movie.__init__
+VisionEgg.qtmovie.Rect.__init__" class="py-name" href="#" onclick="return doclink('link-48', '__init__', 'link-48');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
+<a name="L82"></a><tt class="py-lineno"> 82</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt> <tt class="py-op">=</tt> <tt id="link-49" class="py-name"><a title="VisionEgg.PyroApps.MouseTargetGUI.MouseTargetMetaParameters" class="py-name" href="#" onclick="return doclink('link-49', 'MouseTargetMetaParameters', 'link-20');">MouseTargetMetaParameters</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L83"></a><tt class="py-lineno"> 83</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">screen</tt><tt class="py-op">,</tt><tt id="link-50" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-50', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-51" class="py-name"><a title="VisionEgg.Cor [...]
+<a name="L84"></a><tt class="py-lineno"> 84</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">"Expecting instance of VisionEgg.Core.Screen"</tt><tt class="py-op">)</tt> </tt>
+<a name="L85"></a><tt class="py-lineno"> 85</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">presentation</tt><tt class="py-op">,</tt><tt id="link-53" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-53', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-54" class="py-name"><a title="VisionE [...]
+<a name="L86"></a><tt class="py-lineno"> 86</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">"Expecting instance of VisionEgg.FlowControl.Presentation"</tt><tt class="py-op">)</tt> </tt>
+<a name="L87"></a><tt class="py-lineno"> 87</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">target</tt><tt class="py-op">,</tt><tt id="link-56" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-56', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-57" class="py-name"><a title="VisionEgg.Mor [...]
+<a name="L88"></a><tt class="py-lineno"> 88</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">"Expecting instance of VisionEgg.MoreStimuli.Target2D"</tt><tt class="py-op">)</tt> </tt>
+<a name="L89"></a><tt class="py-lineno"> 89</tt>  <tt class="py-line">         </tt>
+<a name="L90"></a><tt class="py-lineno"> 90</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">screen</tt> <tt class="py-op">=</tt> <tt class="py-name">screen</tt> </tt>
+<a name="L91"></a><tt class="py-lineno"> 91</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">p</tt> <tt class="py-op">=</tt> <tt class="py-name">presentation</tt> </tt>
+<a name="L92"></a><tt class="py-lineno"> 92</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stim</tt> <tt class="py-op">=</tt> <tt class="py-name">target</tt> </tt>
+<a name="L93"></a><tt class="py-lineno"> 93</tt>  <tt class="py-line"> </tt>
+<a name="L94"></a><tt class="py-lineno"> 94</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt id="link-59" class="py-name" targets="Method VisionEgg.FlowControl.Presentation.add_controller()=VisionEgg.FlowControl.Presentation-class.html#add_controller,Method VisionEgg.PyroHelpers.PyroLocalDictController.add_controller()=VisionEgg.PyroHelpers.PyroLocalDictController-class.html#add_controller"><a tit [...]
+VisionEgg.PyroHelpers.PyroLocalDictController.add_controller" class="py-name" href="#" onclick="return doclink('link-59', 'add_controller', 'link-59');">add_controller</a></tt><tt class="py-op">(</tt><tt class="py-name">target</tt><tt class="py-op">,</tt><tt class="py-string">'position'</tt><tt class="py-op">,</tt> <tt id="link-60" class="py-name" targets="Class VisionEgg.PyroApps.MouseTargetServer.TargetPositionController=VisionEgg.PyroApps.MouseTargetServer.TargetPositionController-cla [...]
+<a name="L95"></a><tt class="py-lineno"> 95</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt id="link-61" class="py-name"><a title="VisionEgg.FlowControl.Presentation.add_controller
+VisionEgg.PyroHelpers.PyroLocalDictController.add_controller" class="py-name" href="#" onclick="return doclink('link-61', 'add_controller', 'link-59');">add_controller</a></tt><tt class="py-op">(</tt><tt class="py-name">target</tt><tt class="py-op">,</tt><tt class="py-string">'size'</tt><tt class="py-op">,</tt> <tt id="link-62" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-62', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</t [...]
+<a name="L96"></a><tt class="py-lineno"> 96</tt>  <tt class="py-line">                                                                <tt class="py-name">between_go_func</tt><tt class="py-op">=</tt><tt id="link-66" class="py-name"><a title="VisionEgg.PyroApps.MouseTargetServer.get_target_size" class="py-name" href="#" onclick="return doclink('link-66', 'get_target_size', 'link-65');">get_target_size</a></tt><tt class="py-op">)</tt> <tt class="py-op">)</tt> </tt>
+<a name="L97"></a><tt class="py-lineno"> 97</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt id="link-67" class="py-name"><a title="VisionEgg.FlowControl.Presentation.add_controller
+VisionEgg.PyroHelpers.PyroLocalDictController.add_controller" class="py-name" href="#" onclick="return doclink('link-67', 'add_controller', 'link-59');">add_controller</a></tt><tt class="py-op">(</tt><tt class="py-name">target</tt><tt class="py-op">,</tt><tt class="py-string">'orientation'</tt><tt class="py-op">,</tt> <tt id="link-68" class="py-name" targets="Class VisionEgg.PyroApps.MouseTargetServer.TargetOrientationController=VisionEgg.PyroApps.MouseTargetServer.TargetOrientationContr [...]
+<a name="L98"></a><tt class="py-lineno"> 98</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">mouse_position_controller</tt> <tt class="py-op">=</tt> <tt id="link-69" class="py-name" targets="Class VisionEgg.PyroApps.MouseTargetServer.MousePositionController=VisionEgg.PyroApps.MouseTargetServer.MousePositionController-class.html"><a title="VisionEgg.PyroApps.MouseTargetServer.MousePositionController" class="py-name" href="#" onclic [...]
+<a name="L99"></a><tt class="py-lineno"> 99</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt id="link-70" class="py-name"><a title="VisionEgg.FlowControl.Presentation.add_controller
+VisionEgg.PyroHelpers.PyroLocalDictController.add_controller" class="py-name" href="#" onclick="return doclink('link-70', 'add_controller', 'link-59');">add_controller</a></tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt><tt class="py-name">None</tt><tt class="py-op">,</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">mouse_position_controller</tt><tt class="py-op">)</tt> </tt>
+<a name="L100"></a><tt class="py-lineno">100</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">orig_event_handlers</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt id="link-71" class="py-name"><a title="VisionEgg.PyroApps.MouseTargetServer.handle_event_callbacks" class="py-name" href="#" [...]
+<a name="L101"></a><tt class="py-lineno">101</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt id="link-72" class="py-name"><a title="VisionEgg.PyroApps.MouseTargetServer.handle_event_callbacks" class="py-name" href="#" onclick="return doclink('link-72', 'handle_event_callbacks', 'link-45');">handle_event_callbacks</a></tt> <tt class="py-op [...]
+<a name="L102"></a><tt class="py-lineno">102</tt>  <tt class="py-line"> </tt>
+<a name="L103"></a><tt class="py-lineno">103</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-74" class="py-name" targets="Method VisionEgg.GUI.InfoFrame.update()=VisionEgg.GUI.InfoFrame-class.html#update,Method VisionEgg.GUI.ProgressBar.update()=VisionEgg.GUI.ProgressBar-class.html#update,Method VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.update()=VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController-class.html#update,Me [...]
+VisionEgg.GUI.ProgressBar.update
+VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.update
+VisionEgg.PyroApps.DropinServer.DropinMetaController.update
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.update
+VisionEgg.PyroApps.GridServer.GridMetaController.update
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.update
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.update
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.update
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.update
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.update
+VisionEgg.QuickTime.MovieTexture.update
+VisionEgg.Textures.Texture.update" class="py-name" href="#" onclick="return doclink('link-74', 'update', 'link-74');">update</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-comment"># set stimulus parameters to initial defaults</tt> </tt>
+</div><a name="L104"></a><tt class="py-lineno">104</tt>  <tt class="py-line"> </tt>
+<a name="MouseTargetExperimentMetaController.__del__"></a><div id="MouseTargetExperimentMetaController.__del__-def"><a name="L105"></a><tt class="py-lineno">105</tt> <a class="py-toggle" href="#" id="MouseTargetExperimentMetaController.__del__-toggle" onclick="return toggle('MouseTargetExperimentMetaController.__del__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController-class [...]
+</div><div id="MouseTargetExperimentMetaController.__del__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="MouseTargetExperimentMetaController.__del__-expanded"><a name="L106"></a><tt class="py-lineno">106</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt id="link-75" class="py-name"><a title="VisionEgg.PyroApps. [...]
+<a name="L107"></a><tt class="py-lineno">107</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt id="link-76" class="py-name" targets="Method VisionEgg.FlowControl.Presentation.remove_controller()=VisionEgg.FlowControl.Presentation-class.html#remove_controller"><a title="VisionEgg.FlowControl.Presentation.remove_controller" class="py-name" href="#" onclick="return doclink('link-76', 'remove_controlle [...]
+<a name="L108"></a><tt class="py-lineno">108</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt id="link-77" class="py-name"><a title="VisionEgg.FlowControl.Presentation.remove_controller" class="py-name" href="#" onclick="return doclink('link-77', 'remove_controller', 'link-76');">remove_controller</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-na [...]
+<a name="L109"></a><tt class="py-lineno">109</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt id="link-78" class="py-name"><a title="VisionEgg.FlowControl.Presentation.remove_controller" class="py-name" href="#" onclick="return doclink('link-78', 'remove_controller', 'link-76');">remove_controller</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-na [...]
+<a name="L110"></a><tt class="py-lineno">110</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt id="link-79" class="py-name"><a title="VisionEgg.FlowControl.Presentation.remove_controller" class="py-name" href="#" onclick="return doclink('link-79', 'remove_controller', 'link-76');">remove_controller</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-na [...]
+</div><a name="L111"></a><tt class="py-lineno">111</tt>  <tt class="py-line">     </tt>
+<a name="MouseTargetExperimentMetaController.get_parameters"></a><div id="MouseTargetExperimentMetaController.get_parameters-def"><a name="L112"></a><tt class="py-lineno">112</tt> <a class="py-toggle" href="#" id="MouseTargetExperimentMetaController.get_parameters-toggle" onclick="return toggle('MouseTargetExperimentMetaController.get_parameters');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.MouseTargetServer.MouseTargetEx [...]
+</div><div id="MouseTargetExperimentMetaController.get_parameters-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="MouseTargetExperimentMetaController.get_parameters-expanded"><a name="L113"></a><tt class="py-lineno">113</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt> </tt>
+</div><a name="L114"></a><tt class="py-lineno">114</tt>  <tt class="py-line"> </tt>
+<a name="MouseTargetExperimentMetaController.set_parameters"></a><div id="MouseTargetExperimentMetaController.set_parameters-def"><a name="L115"></a><tt class="py-lineno">115</tt> <a class="py-toggle" href="#" id="MouseTargetExperimentMetaController.set_parameters-toggle" onclick="return toggle('MouseTargetExperimentMetaController.set_parameters');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.MouseTargetServer.MouseTargetEx [...]
+</div><div id="MouseTargetExperimentMetaController.set_parameters-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="MouseTargetExperimentMetaController.set_parameters-expanded"><a name="L116"></a><tt class="py-lineno">116</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">new_parameters</tt><tt class="py-op">,</tt> <tt id="link-80" class="py-name"><a title="VisionEgg.Pyr [...]
+<a name="L117"></a><tt class="py-lineno">117</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt> <tt class="py-op">=</tt> <tt class="py-name">new_parameters</tt> </tt>
+<a name="L118"></a><tt class="py-lineno">118</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L119"></a><tt class="py-lineno">119</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">"Argument to set_parameters must be instance of MouseTargetMetaParameters"</tt><tt class="py-op">)</tt> </tt>
+<a name="L120"></a><tt class="py-lineno">120</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-81" class="py-name"><a title="VisionEgg.GUI.InfoFrame.update
+VisionEgg.GUI.ProgressBar.update
+VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.update
+VisionEgg.PyroApps.DropinServer.DropinMetaController.update
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.update
+VisionEgg.PyroApps.GridServer.GridMetaController.update
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.update
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.update
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.update
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.update
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.update
+VisionEgg.QuickTime.MovieTexture.update
+VisionEgg.Textures.Texture.update" class="py-name" href="#" onclick="return doclink('link-81', 'update', 'link-74');">update</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L121"></a><tt class="py-lineno">121</tt>  <tt class="py-line">         </tt>
+<a name="MouseTargetExperimentMetaController.update"></a><div id="MouseTargetExperimentMetaController.update-def"><a name="L122"></a><tt class="py-lineno">122</tt> <a class="py-toggle" href="#" id="MouseTargetExperimentMetaController.update-toggle" onclick="return toggle('MouseTargetExperimentMetaController.update');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController-class.htm [...]
+</div><div id="MouseTargetExperimentMetaController.update-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="MouseTargetExperimentMetaController.update-expanded"><a name="L123"></a><tt class="py-lineno">123</tt>  <tt class="py-line">        <tt class="py-name">stim_params</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stim</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt> <tt class="py-comment" [...]
+<a name="L124"></a><tt class="py-lineno">124</tt>  <tt class="py-line">        <tt class="py-name">meta_params</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt> <tt class="py-comment"># shorthand</tt> </tt>
+<a name="L125"></a><tt class="py-lineno">125</tt>  <tt class="py-line"> </tt>
+<a name="L126"></a><tt class="py-lineno">126</tt>  <tt class="py-line">        <tt class="py-comment"># colors</tt> </tt>
+<a name="L127"></a><tt class="py-lineno">127</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">stim_params</tt><tt class="py-op">.</tt><tt class="py-name">color</tt> <tt class="py-op">=</tt> <tt class="py-name">meta_params</tt><tt class="py-op">.</tt><tt class="py-name">color</tt> </tt>
+<a name="L128"></a><tt class="py-lineno">128</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">screen</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">bgcolor</tt> <tt class="py-op">=</tt> <tt class="py-name">meta_params</tt><tt class="py-op">.</tt><tt class="py-name">bgcolor</tt> </tt>
+</div><a name="L129"></a><tt class="py-lineno">129</tt>  <tt class="py-line"> </tt>
+<a name="MouseTargetExperimentMetaController.go"></a><div id="MouseTargetExperimentMetaController.go-def"><a name="L130"></a><tt class="py-lineno">130</tt> <a class="py-toggle" href="#" id="MouseTargetExperimentMetaController.go-toggle" onclick="return toggle('MouseTargetExperimentMetaController.go');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController-class.html#go">go</a><tt  [...]
+</div><div id="MouseTargetExperimentMetaController.go-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="MouseTargetExperimentMetaController.go-expanded"><a name="L131"></a><tt class="py-lineno">131</tt>  <tt class="py-line">        <tt class="py-keyword">pass</tt> </tt>
+</div><a name="L132"></a><tt class="py-lineno">132</tt>  <tt class="py-line">        <tt class="py-comment">#self.p.parameters.enter_go_loop = 1</tt> </tt>
+<a name="L133"></a><tt class="py-lineno">133</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="MouseTargetExperimentMetaController.quit_server"></a><div id="MouseTargetExperimentMetaController.quit_server-def"><a name="L134"></a><tt class="py-lineno">134</tt> <a class="py-toggle" href="#" id="MouseTargetExperimentMetaController.quit_server-toggle" onclick="return toggle('MouseTargetExperimentMetaController.quit_server');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMeta [...]
+</div><div id="MouseTargetExperimentMetaController.quit_server-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="MouseTargetExperimentMetaController.quit_server-expanded"><a name="L135"></a><tt class="py-lineno">135</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt id="link-82" class="py-name" targets="Method Visio [...]
+</div></div><a name="L136"></a><tt class="py-lineno">136</tt>  <tt class="py-line"> </tt>
+<a name="get_meta_controller_class"></a><div id="get_meta_controller_class-def"><a name="L137"></a><tt class="py-lineno">137</tt> <a class="py-toggle" href="#" id="get_meta_controller_class-toggle" onclick="return toggle('get_meta_controller_class');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.MouseTargetServer-module.html#get_meta_controller_class">get_meta_controller_class</a><tt class="py-op">(</tt><tt class="py-op">)</tt>< [...]
+</div><div id="get_meta_controller_class-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="get_meta_controller_class-expanded"><a name="L138"></a><tt class="py-lineno">138</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt id="link-83" class="py-name" targets="Class VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController=VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController-class.html"><a title="VisionEgg.PyroApp [...]
+</div><a name="L139"></a><tt class="py-lineno">139</tt>  <tt class="py-line"> </tt>
+<a name="make_stimuli"></a><div id="make_stimuli-def"><a name="L140"></a><tt class="py-lineno">140</tt> <a class="py-toggle" href="#" id="make_stimuli-toggle" onclick="return toggle('make_stimuli');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.MouseTargetServer-module.html#make_stimuli">make_stimuli</a><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="make_stimuli-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="make_stimuli-expanded"><a name="L141"></a><tt class="py-lineno">141</tt>  <tt class="py-line">    <tt class="py-name">stimulus</tt> <tt class="py-op">=</tt> <tt id="link-84" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-84', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-85" class="py-name"><a title="VisionEgg.M [...]
+<a name="L142"></a><tt class="py-lineno">142</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-op">[</tt><tt class="py-op">(</tt><tt class="py-string">'2d_overlay'</tt><tt class="py-op">,</tt><tt class="py-name">stimulus</tt><tt class="py-op">)</tt><tt class="py-op">]</tt> </tt>
+</div><a name="L143"></a><tt class="py-lineno">143</tt>  <tt class="py-line"> </tt>
+<a name="get_meta_controller_stimkey"></a><div id="get_meta_controller_stimkey-def"><a name="L144"></a><tt class="py-lineno">144</tt> <a class="py-toggle" href="#" id="get_meta_controller_stimkey-toggle" onclick="return toggle('get_meta_controller_stimkey');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.MouseTargetServer-module.html#get_meta_controller_stimkey">get_meta_controller_stimkey</a><tt class="py-op">(</tt><tt class="py [...]
+</div><div id="get_meta_controller_stimkey-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="get_meta_controller_stimkey-expanded"><a name="L145"></a><tt class="py-lineno">145</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-string">"mouse_target_server"</tt> </tt>
+</div><a name="L146"></a><tt class="py-lineno">146</tt>  <tt class="py-line"> </tt>
+<a name="L147"></a><tt class="py-lineno">147</tt>  <tt class="py-line"><tt class="py-comment">########################</tt> </tt>
+<a name="L148"></a><tt class="py-lineno">148</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#  Define controllers  #</tt> </tt>
+<a name="L149"></a><tt class="py-lineno">149</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">########################</tt> </tt>
+<a name="L150"></a><tt class="py-lineno">150</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="MousePositionController"></a><div id="MousePositionController-def"><a name="L151"></a><tt class="py-lineno">151</tt> <a class="py-toggle" href="#" id="MousePositionController-toggle" onclick="return toggle('MousePositionController');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.PyroApps.MouseTargetServer.MousePositionController-class.html">MousePositionController</a><tt class="py-op">(</tt> <tt class="py-base-class">VisionEgg [...]
+</div><div id="MousePositionController-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="MousePositionController-expanded"><a name="MousePositionController.__init__"></a><div id="MousePositionController.__init__-def"><a name="L152"></a><tt class="py-lineno">152</tt> <a class="py-toggle" href="#" id="MousePositionController.__init__-toggle" onclick="return toggle('MousePositionController.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a cla [...]
+</div><div id="MousePositionController.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="MousePositionController.__init__-expanded"><a name="L153"></a><tt class="py-lineno">153</tt>  <tt class="py-line">        <tt class="py-keyword">global</tt> <tt id="link-87" class="py-name"><a title="VisionEgg.PyroApps.MouseTargetServer.mouse_position" class="py-name" href="#" onclick="return doclink('link-87', 'mouse_position', 'link-21');">mouse_position</a></tt> </tt>
+<a name="L154"></a><tt class="py-lineno">154</tt>  <tt class="py-line">        <tt id="link-88" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-88', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-89" class="py-name"><a title="VisionEgg.FlowControl" class="py-name" href="#" onclick="return doclink('link-89', 'FlowControl', 'link-12');">FlowControl</a></tt><tt class="py-op">.</tt><tt id="link-90" class="py-name" t [...]
+VisionEgg.Configuration.Config.__init__
+VisionEgg.Core.FixationSpot.__init__
+VisionEgg.Core.FrameTimer.__init__
+VisionEgg.Core.ModelView.__init__
+VisionEgg.Core.OrthographicProjection.__init__
+VisionEgg.Core.OrthographicProjectionNoZClip.__init__
+VisionEgg.Core.PerspectiveProjection.__init__
+VisionEgg.Core.Projection.__init__
+VisionEgg.Core.ProjectionBaseClass.__init__
+VisionEgg.Core.Screen.__init__
+VisionEgg.Core.SimplePerspectiveProjection.__init__
+VisionEgg.Core.Stimulus.__init__
+VisionEgg.Core.Viewport.__init__
+VisionEgg.Daq.Channel.__init__
+VisionEgg.Daq.DaqMode.__init__
+VisionEgg.Daq.Device.__init__
+VisionEgg.Daq.Functionality.__init__
+VisionEgg.Daq.SignalType.__init__
+VisionEgg.DaqKeyboard.KeyboardTriggerInController.__init__
+VisionEgg.DaqLPT.LPTChannel.__init__
+VisionEgg.DaqLPT.LPTDevice.__init__
+VisionEgg.DaqLPT.LPTTriggerInController.__init__
+VisionEgg.DaqLPT.LPTTriggerOutController.__init__
+VisionEgg.Deprecated.Message.__init__
+VisionEgg.Dots.DotArea2D.__init__
+VisionEgg.FlowControl.ConstantController.__init__
+VisionEgg.FlowControl.Controller.__init__
+VisionEgg.FlowControl.EncapsulatedController.__init__
+VisionEgg.FlowControl.EvalStringController.__init__
+VisionEgg.FlowControl.ExecStringController.__init__
+VisionEgg.FlowControl.FunctionController.__init__
+VisionEgg.FlowControl.Presentation.__init__
+VisionEgg.GLTrace.Wrapper.__init__
+VisionEgg.GUI.AppWindow.__init__
+VisionEgg.GUI.GetKeypressDialog.__init__
+VisionEgg.GUI.GraphicsConfigurationWindow.__init__
+VisionEgg.GUI.InfoFrame.__init__
+VisionEgg.GUI.ProgressBar.__init__
+VisionEgg.GUI.ToplevelDialog.__init__
+VisionEgg.Gratings.SinGrating2D.__init__
+VisionEgg.Gratings.SinGrating3D.__init__
+VisionEgg.MoreStimuli.Arrow.__init__
+VisionEgg.MoreStimuli.FilledCircle.__init__
+VisionEgg.MoreStimuli.Rectangle3D.__init__
+VisionEgg.MoreStimuli.Target2D.__init__
+VisionEgg.ParameterTypes.AnyOf.__init__
+VisionEgg.ParameterTypes.Instance.__init__
+VisionEgg.ParameterTypes.Sequence.__init__
+VisionEgg.ParameterTypes.SubClass.__init__
+VisionEgg.PyroApps.AST_ext.AST_Visitor.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalMetaParameters.__init__
+VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.__init__
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.__init__
+VisionEgg.PyroApps.DropinGUI.DropinMetaParameters.__init__
+VisionEgg.PyroApps.DropinServer.DropinMetaController.__init__
+VisionEgg.PyroApps.EPhysGUI.AppWindow.__init__
+VisionEgg.PyroApps.EPhysGUI.BarButton.__init__
+VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase.__init__
+VisionEgg.PyroApps.EPhysGUI.GammaFrame.__init__
+VisionEgg.PyroApps.EPhysGUI.ImageSequenceLauncher.__init__
+VisionEgg.PyroApps.EPhysGUI.Loop.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopContainedObject.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopParamDialog.__init__
+VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.__init__
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.__init__
+VisionEgg.PyroApps.EPhysServer.EPhysServer.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingMetaParameters.__init__
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.GridGUI.GridControlFrame.__init__
+VisionEgg.PyroApps.GridGUI.GridMetaParameters.__init__
+VisionEgg.PyroApps.GridServer.GridMetaController.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetMetaParameters.__init__
+VisionEgg.PyroApps.MouseTargetServer.MousePositionController.__init__
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetOrientationController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetPositionController.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.CallbackEntry.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionParameters.__init__
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingMetaParameters.__init__
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumMetaParameters.__init__
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.__init__
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.__init__
+VisionEgg.PyroApps.TargetGUI.TargetMetaParameters.__init__
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.__init__
+VisionEgg.PyroClient.PyroClient.__init__
+VisionEgg.PyroHelpers.PyroConstantController.__init__
+VisionEgg.PyroHelpers.PyroEncapsulatedController.__init__
+VisionEgg.PyroHelpers.PyroEvalStringController.__init__
+VisionEgg.PyroHelpers.PyroExecStringController.__init__
+VisionEgg.PyroHelpers.PyroListenController.__init__
+VisionEgg.PyroHelpers.PyroLocalDictController.__init__
+VisionEgg.PyroHelpers.PyroServer.__init__
+VisionEgg.QuickTime.MovieTexture.__init__
+VisionEgg.ResponseControl.KeyboardResponseController.__init__
+VisionEgg.ResponseControl.ResponseController.__init__
+VisionEgg.SphereMap.AzElGrid.__init__
+VisionEgg.SphereMap.SphereGrating.__init__
+VisionEgg.SphereMap.SphereMap.__init__
+VisionEgg.SphereMap.SphereWindow.__init__
+VisionEgg.TCPController.SocketListenController.__init__
+VisionEgg.TCPController.TCPController.__init__
+VisionEgg.TCPController.TCPServer.__init__
+VisionEgg.Text.BitmapText.__init__
+VisionEgg.Text.GlutTextBase.__init__
+VisionEgg.Text.StrokeText.__init__
+VisionEgg.Text.Text.__init__
+VisionEgg.Textures.FixationCross.__init__
+VisionEgg.Textures.Mask2D.__init__
+VisionEgg.Textures.SpinningDrum.__init__
+VisionEgg.Textures.Texture.__init__
+VisionEgg.Textures.TextureFromFile.__init__
+VisionEgg.Textures.TextureObject.__init__
+VisionEgg.Textures.TextureStimulusBaseClass.__init__
+VisionEgg.ThreeDeeMath.TransformMatrix.__init__
+VisionEgg.WrappedText.WrappedText.__init__
+VisionEgg.qtmovie.Movie.__init__
+VisionEgg.qtmovie.Rect.__init__" class="py-name" href="#" onclick="return doclink('link-91', '__init__', 'link-48');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> </tt>
+<a name="L155"></a><tt class="py-lineno">155</tt>  <tt class="py-line">                            <tt class="py-name">return_type</tt><tt class="py-op">=</tt><tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-92" class="py-name" targets="Function VisionEgg.ParameterTypes.get_type()=VisionEgg.ParameterTypes-module.html#get_type,Method VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.get_type()=VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFra [...]
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.get_type
+VisionEgg.get_type" class="py-name" href="#" onclick="return doclink('link-92', 'get_type', 'link-92');">get_type</a></tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L156"></a><tt class="py-lineno">156</tt>  <tt class="py-line">                            <tt class="py-name">eval_frequency</tt><tt class="py-op">=</tt><tt id="link-93" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-93', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-94" class="py-name"><a title="VisionEgg.FlowControl" class="py-name" href="#" onclick="return doclink('link-94', 'FlowControl', 'link-12 [...]
+VisionEgg.FlowControl.EVERY_FRAME" class="py-name" href="#" onclick="return doclink('link-96', 'EVERY_FRAME', 'link-96');">EVERY_FRAME</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L157"></a><tt class="py-lineno">157</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-97" class="py-name" targets="Method VisionEgg.DaqKeyboard.KeyboardTriggerInController.between_go_eval()=VisionEgg.DaqKeyboard.KeyboardTriggerInController-class.html#between_go_eval,Method VisionEgg.DaqLPT.LPTTriggerInController.between_go_eval()=VisionEgg.DaqLPT.LPTTriggerInController-class.html#between_go_eval,Method VisionEgg.DaqLPT.LPTTrigger [...]
+VisionEgg.DaqLPT.LPTTriggerInController.between_go_eval
+VisionEgg.DaqLPT.LPTTriggerOutController.between_go_eval
+VisionEgg.FlowControl.ConstantController.between_go_eval
+VisionEgg.FlowControl.Controller.between_go_eval
+VisionEgg.FlowControl.EncapsulatedController.between_go_eval
+VisionEgg.FlowControl.EvalStringController.between_go_eval
+VisionEgg.FlowControl.ExecStringController.between_go_eval
+VisionEgg.FlowControl.FunctionController.between_go_eval
+VisionEgg.PyroHelpers.PyroListenController.between_go_eval
+VisionEgg.ResponseControl.KeyboardResponseController.between_go_eval
+VisionEgg.ResponseControl.ResponseController.between_go_eval
+VisionEgg.TCPController.SocketListenController.between_go_eval" class="py-name" href="#" onclick="return doclink('link-97', 'between_go_eval', 'link-97');">between_go_eval</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-98" class="py-name" targets="Method VisionEgg.DaqKeyboard.KeyboardTriggerInController.during_go_eval()=VisionEgg.DaqKeyboard.KeyboardTriggerInController-class.html#during_go_eval,Method VisionEgg.DaqLPT.LPTTriggerInContr [...]
+VisionEgg.DaqLPT.LPTTriggerInController.during_go_eval
+VisionEgg.DaqLPT.LPTTriggerOutController.during_go_eval
+VisionEgg.FlowControl.ConstantController.during_go_eval
+VisionEgg.FlowControl.Controller.during_go_eval
+VisionEgg.FlowControl.EncapsulatedController.during_go_eval
+VisionEgg.FlowControl.EvalStringController.during_go_eval
+VisionEgg.FlowControl.ExecStringController.during_go_eval
+VisionEgg.FlowControl.FunctionController.during_go_eval
+VisionEgg.PyroApps.MouseTargetServer.MousePositionController.during_go_eval
+VisionEgg.PyroApps.MouseTargetServer.TargetOrientationController.during_go_eval
+VisionEgg.PyroApps.MouseTargetServer.TargetPositionController.during_go_eval
+VisionEgg.PyroHelpers.PyroListenController.during_go_eval
+VisionEgg.ResponseControl.KeyboardResponseController.during_go_eval
+VisionEgg.ResponseControl.ResponseController.during_go_eval
+VisionEgg.TCPController.SocketListenController.during_go_eval" class="py-name" href="#" onclick="return doclink('link-98', 'during_go_eval', 'link-98');">during_go_eval</a></tt> </tt>
+</div><a name="L158"></a><tt class="py-lineno">158</tt>  <tt class="py-line"> </tt>
+<a name="MousePositionController.during_go_eval"></a><div id="MousePositionController.during_go_eval-def"><a name="L159"></a><tt class="py-lineno">159</tt> <a class="py-toggle" href="#" id="MousePositionController.during_go_eval-toggle" onclick="return toggle('MousePositionController.during_go_eval');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.MouseTargetServer.MousePositionController-class.html#during_go_eval">during_go_ [...]
+</div><div id="MousePositionController.during_go_eval-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="MousePositionController.during_go_eval-expanded"><a name="L160"></a><tt class="py-lineno">160</tt>  <tt class="py-line">        <tt class="py-comment"># Convert pygame mouse position to OpenGL position</tt> </tt>
+<a name="L161"></a><tt class="py-lineno">161</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">global</tt> <tt id="link-99" class="py-name"><a title="VisionEgg.PyroApps.MouseTargetServer.mouse_position" class="py-name" href="#" onclick="return doclink('link-99', 'mouse_position', 'link-21');">mouse_position</a></tt><tt class="py-op">,</tt> <tt id="link-100" class="py-name"><a title="VisionEgg.PyroApps.MouseTargetServer.last_mouse_position" class="py-nam [...]
+<a name="L162"></a><tt class="py-lineno">162</tt>  <tt class="py-line">        <tt class="py-name">just_current_pos</tt> <tt class="py-op">=</tt> <tt id="link-101" class="py-name"><a title="VisionEgg.PyroApps.MouseTargetServer.mouse_position" class="py-name" href="#" onclick="return doclink('link-101', 'mouse_position', 'link-21');">mouse_position</a></tt> </tt>
+<a name="L163"></a><tt class="py-lineno">163</tt>  <tt class="py-line">        <tt class="py-op">(</tt><tt class="py-name">x</tt><tt class="py-op">,</tt><tt class="py-name">y</tt><tt class="py-op">)</tt> <tt class="py-op">=</tt> <tt class="py-name">pygame</tt><tt class="py-op">.</tt><tt class="py-name">mouse</tt><tt class="py-op">.</tt><tt class="py-name">get_pos</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L164"></a><tt class="py-lineno">164</tt>  <tt class="py-line">        <tt class="py-name">y</tt> <tt class="py-op">=</tt> <tt class="py-name">screen_global</tt><tt class="py-op">.</tt><tt id="link-102" class="py-name" targets="Variable VisionEgg.Core.Screen.size=VisionEgg.Core.Screen-class.html#size"><a title="VisionEgg.Core.Screen.size" class="py-name" href="#" onclick="return doclink('link-102', 'size', 'link-102');">size</a></tt><tt class="py-op">[</tt><tt class="py-number">1 [...]
+<a name="L165"></a><tt class="py-lineno">165</tt>  <tt class="py-line">        <tt id="link-103" class="py-name"><a title="VisionEgg.PyroApps.MouseTargetServer.mouse_position" class="py-name" href="#" onclick="return doclink('link-103', 'mouse_position', 'link-21');">mouse_position</a></tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">x</tt><tt class="py-op">,</tt><tt class="py-name">y</tt><tt class="py-op">)</tt> </tt>
+<a name="L166"></a><tt class="py-lineno">166</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">just_current_pos</tt> <tt class="py-op">!=</tt> <tt id="link-104" class="py-name"><a title="VisionEgg.PyroApps.MouseTargetServer.mouse_position" class="py-name" href="#" onclick="return doclink('link-104', 'mouse_position', 'link-21');">mouse_position</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L167"></a><tt class="py-lineno">167</tt>  <tt class="py-line">            <tt id="link-105" class="py-name"><a title="VisionEgg.PyroApps.MouseTargetServer.last_mouse_position" class="py-name" href="#" onclick="return doclink('link-105', 'last_mouse_position', 'link-22');">last_mouse_position</a></tt> <tt class="py-op">=</tt> <tt class="py-name">just_current_pos</tt> </tt>
+<a name="L168"></a><tt class="py-lineno">168</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt>
+</div></div><a name="L169"></a><tt class="py-lineno">169</tt>  <tt class="py-line">         </tt>
+<a name="TargetPositionController"></a><div id="TargetPositionController-def"><a name="L170"></a><tt class="py-lineno">170</tt> <a class="py-toggle" href="#" id="TargetPositionController-toggle" onclick="return toggle('TargetPositionController');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.PyroApps.MouseTargetServer.TargetPositionController-class.html">TargetPositionController</a><tt class="py-op">(</tt> <tt class="py-base-class">Vis [...]
+</div><div id="TargetPositionController-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="TargetPositionController-expanded"><a name="TargetPositionController.__init__"></a><div id="TargetPositionController.__init__-def"><a name="L171"></a><tt class="py-lineno">171</tt> <a class="py-toggle" href="#" id="TargetPositionController.__init__-toggle" onclick="return toggle('TargetPositionController.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt>  [...]
+</div><div id="TargetPositionController.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="TargetPositionController.__init__-expanded"><a name="L172"></a><tt class="py-lineno">172</tt>  <tt class="py-line">        <tt class="py-keyword">global</tt> <tt id="link-106" class="py-name"><a title="VisionEgg.PyroApps.MouseTargetServer.mouse_position" class="py-name" href="#" onclick="return doclink('link-106', 'mouse_position', 'link-21');">mouse_position</a></ [...]
+<a name="L173"></a><tt class="py-lineno">173</tt>  <tt class="py-line">        <tt id="link-107" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-107', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-108" class="py-name"><a title="VisionEgg.FlowControl" class="py-name" href="#" onclick="return doclink('link-108', 'FlowControl', 'link-12');">FlowControl</a></tt><tt class="py-op">.</tt><tt id="link-109" class="py-na [...]
+VisionEgg.Configuration.Config.__init__
+VisionEgg.Core.FixationSpot.__init__
+VisionEgg.Core.FrameTimer.__init__
+VisionEgg.Core.ModelView.__init__
+VisionEgg.Core.OrthographicProjection.__init__
+VisionEgg.Core.OrthographicProjectionNoZClip.__init__
+VisionEgg.Core.PerspectiveProjection.__init__
+VisionEgg.Core.Projection.__init__
+VisionEgg.Core.ProjectionBaseClass.__init__
+VisionEgg.Core.Screen.__init__
+VisionEgg.Core.SimplePerspectiveProjection.__init__
+VisionEgg.Core.Stimulus.__init__
+VisionEgg.Core.Viewport.__init__
+VisionEgg.Daq.Channel.__init__
+VisionEgg.Daq.DaqMode.__init__
+VisionEgg.Daq.Device.__init__
+VisionEgg.Daq.Functionality.__init__
+VisionEgg.Daq.SignalType.__init__
+VisionEgg.DaqKeyboard.KeyboardTriggerInController.__init__
+VisionEgg.DaqLPT.LPTChannel.__init__
+VisionEgg.DaqLPT.LPTDevice.__init__
+VisionEgg.DaqLPT.LPTTriggerInController.__init__
+VisionEgg.DaqLPT.LPTTriggerOutController.__init__
+VisionEgg.Deprecated.Message.__init__
+VisionEgg.Dots.DotArea2D.__init__
+VisionEgg.FlowControl.ConstantController.__init__
+VisionEgg.FlowControl.Controller.__init__
+VisionEgg.FlowControl.EncapsulatedController.__init__
+VisionEgg.FlowControl.EvalStringController.__init__
+VisionEgg.FlowControl.ExecStringController.__init__
+VisionEgg.FlowControl.FunctionController.__init__
+VisionEgg.FlowControl.Presentation.__init__
+VisionEgg.GLTrace.Wrapper.__init__
+VisionEgg.GUI.AppWindow.__init__
+VisionEgg.GUI.GetKeypressDialog.__init__
+VisionEgg.GUI.GraphicsConfigurationWindow.__init__
+VisionEgg.GUI.InfoFrame.__init__
+VisionEgg.GUI.ProgressBar.__init__
+VisionEgg.GUI.ToplevelDialog.__init__
+VisionEgg.Gratings.SinGrating2D.__init__
+VisionEgg.Gratings.SinGrating3D.__init__
+VisionEgg.MoreStimuli.Arrow.__init__
+VisionEgg.MoreStimuli.FilledCircle.__init__
+VisionEgg.MoreStimuli.Rectangle3D.__init__
+VisionEgg.MoreStimuli.Target2D.__init__
+VisionEgg.ParameterTypes.AnyOf.__init__
+VisionEgg.ParameterTypes.Instance.__init__
+VisionEgg.ParameterTypes.Sequence.__init__
+VisionEgg.ParameterTypes.SubClass.__init__
+VisionEgg.PyroApps.AST_ext.AST_Visitor.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalMetaParameters.__init__
+VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.__init__
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.__init__
+VisionEgg.PyroApps.DropinGUI.DropinMetaParameters.__init__
+VisionEgg.PyroApps.DropinServer.DropinMetaController.__init__
+VisionEgg.PyroApps.EPhysGUI.AppWindow.__init__
+VisionEgg.PyroApps.EPhysGUI.BarButton.__init__
+VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase.__init__
+VisionEgg.PyroApps.EPhysGUI.GammaFrame.__init__
+VisionEgg.PyroApps.EPhysGUI.ImageSequenceLauncher.__init__
+VisionEgg.PyroApps.EPhysGUI.Loop.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopContainedObject.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopParamDialog.__init__
+VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.__init__
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.__init__
+VisionEgg.PyroApps.EPhysServer.EPhysServer.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingMetaParameters.__init__
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.GridGUI.GridControlFrame.__init__
+VisionEgg.PyroApps.GridGUI.GridMetaParameters.__init__
+VisionEgg.PyroApps.GridServer.GridMetaController.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetMetaParameters.__init__
+VisionEgg.PyroApps.MouseTargetServer.MousePositionController.__init__
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetOrientationController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetPositionController.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.CallbackEntry.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionParameters.__init__
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingMetaParameters.__init__
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumMetaParameters.__init__
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.__init__
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.__init__
+VisionEgg.PyroApps.TargetGUI.TargetMetaParameters.__init__
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.__init__
+VisionEgg.PyroClient.PyroClient.__init__
+VisionEgg.PyroHelpers.PyroConstantController.__init__
+VisionEgg.PyroHelpers.PyroEncapsulatedController.__init__
+VisionEgg.PyroHelpers.PyroEvalStringController.__init__
+VisionEgg.PyroHelpers.PyroExecStringController.__init__
+VisionEgg.PyroHelpers.PyroListenController.__init__
+VisionEgg.PyroHelpers.PyroLocalDictController.__init__
+VisionEgg.PyroHelpers.PyroServer.__init__
+VisionEgg.QuickTime.MovieTexture.__init__
+VisionEgg.ResponseControl.KeyboardResponseController.__init__
+VisionEgg.ResponseControl.ResponseController.__init__
+VisionEgg.SphereMap.AzElGrid.__init__
+VisionEgg.SphereMap.SphereGrating.__init__
+VisionEgg.SphereMap.SphereMap.__init__
+VisionEgg.SphereMap.SphereWindow.__init__
+VisionEgg.TCPController.SocketListenController.__init__
+VisionEgg.TCPController.TCPController.__init__
+VisionEgg.TCPController.TCPServer.__init__
+VisionEgg.Text.BitmapText.__init__
+VisionEgg.Text.GlutTextBase.__init__
+VisionEgg.Text.StrokeText.__init__
+VisionEgg.Text.Text.__init__
+VisionEgg.Textures.FixationCross.__init__
+VisionEgg.Textures.Mask2D.__init__
+VisionEgg.Textures.SpinningDrum.__init__
+VisionEgg.Textures.Texture.__init__
+VisionEgg.Textures.TextureFromFile.__init__
+VisionEgg.Textures.TextureObject.__init__
+VisionEgg.Textures.TextureStimulusBaseClass.__init__
+VisionEgg.ThreeDeeMath.TransformMatrix.__init__
+VisionEgg.WrappedText.WrappedText.__init__
+VisionEgg.qtmovie.Movie.__init__
+VisionEgg.qtmovie.Rect.__init__" class="py-name" href="#" onclick="return doclink('link-110', '__init__', 'link-48');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> </tt>
+<a name="L174"></a><tt class="py-lineno">174</tt>  <tt class="py-line">                            <tt class="py-name">return_type</tt><tt class="py-op">=</tt><tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-111" class="py-name" targets="Class VisionEgg.ParameterTypes.Sequence2=VisionEgg.ParameterTypes.Sequence2-class.html"><a title="VisionEgg.ParameterTypes.Sequence2" class="py-name" href="#" onclick="return doclink('link-111', 'Sequence2', 'link-111');">Sequence2</ [...]
+<a name="L175"></a><tt class="py-lineno">175</tt>  <tt class="py-line">                            <tt class="py-name">eval_frequency</tt><tt class="py-op">=</tt><tt id="link-113" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-113', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-114" class="py-name"><a title="VisionEgg.FlowControl" class="py-name" href="#" onclick="return doclink('link-114', 'FlowControl', 'lin [...]
+VisionEgg.FlowControl.EVERY_FRAME" class="py-name" href="#" onclick="return doclink('link-116', 'EVERY_FRAME', 'link-96');">EVERY_FRAME</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L176"></a><tt class="py-lineno">176</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-117" class="py-name"><a title="VisionEgg.DaqKeyboard.KeyboardTriggerInController.between_go_eval
+VisionEgg.DaqLPT.LPTTriggerInController.between_go_eval
+VisionEgg.DaqLPT.LPTTriggerOutController.between_go_eval
+VisionEgg.FlowControl.ConstantController.between_go_eval
+VisionEgg.FlowControl.Controller.between_go_eval
+VisionEgg.FlowControl.EncapsulatedController.between_go_eval
+VisionEgg.FlowControl.EvalStringController.between_go_eval
+VisionEgg.FlowControl.ExecStringController.between_go_eval
+VisionEgg.FlowControl.FunctionController.between_go_eval
+VisionEgg.PyroHelpers.PyroListenController.between_go_eval
+VisionEgg.ResponseControl.KeyboardResponseController.between_go_eval
+VisionEgg.ResponseControl.ResponseController.between_go_eval
+VisionEgg.TCPController.SocketListenController.between_go_eval" class="py-name" href="#" onclick="return doclink('link-117', 'between_go_eval', 'link-97');">between_go_eval</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-118" class="py-name"><a title="VisionEgg.DaqKeyboard.KeyboardTriggerInController.during_go_eval
+VisionEgg.DaqLPT.LPTTriggerInController.during_go_eval
+VisionEgg.DaqLPT.LPTTriggerOutController.during_go_eval
+VisionEgg.FlowControl.ConstantController.during_go_eval
+VisionEgg.FlowControl.Controller.during_go_eval
+VisionEgg.FlowControl.EncapsulatedController.during_go_eval
+VisionEgg.FlowControl.EvalStringController.during_go_eval
+VisionEgg.FlowControl.ExecStringController.during_go_eval
+VisionEgg.FlowControl.FunctionController.during_go_eval
+VisionEgg.PyroApps.MouseTargetServer.MousePositionController.during_go_eval
+VisionEgg.PyroApps.MouseTargetServer.TargetOrientationController.during_go_eval
+VisionEgg.PyroApps.MouseTargetServer.TargetPositionController.during_go_eval
+VisionEgg.PyroHelpers.PyroListenController.during_go_eval
+VisionEgg.ResponseControl.KeyboardResponseController.during_go_eval
+VisionEgg.ResponseControl.ResponseController.during_go_eval
+VisionEgg.TCPController.SocketListenController.during_go_eval" class="py-name" href="#" onclick="return doclink('link-118', 'during_go_eval', 'link-98');">during_go_eval</a></tt> </tt>
+</div><a name="L177"></a><tt class="py-lineno">177</tt>  <tt class="py-line"> </tt>
+<a name="TargetPositionController.during_go_eval"></a><div id="TargetPositionController.during_go_eval-def"><a name="L178"></a><tt class="py-lineno">178</tt> <a class="py-toggle" href="#" id="TargetPositionController.during_go_eval-toggle" onclick="return toggle('TargetPositionController.during_go_eval');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.MouseTargetServer.TargetPositionController-class.html#during_go_eval">durin [...]
+</div><div id="TargetPositionController.during_go_eval-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="TargetPositionController.during_go_eval-expanded"><a name="L179"></a><tt class="py-lineno">179</tt>  <tt class="py-line">        <tt class="py-keyword">global</tt> <tt id="link-119" class="py-name"><a title="VisionEgg.PyroApps.MouseTargetServer.mouse_position" class="py-name" href="#" onclick="return doclink('link-119', 'mouse_position', 'link-21');">mouse_po [...]
+<a name="L180"></a><tt class="py-lineno">180</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt id="link-120" class="py-name"><a title="VisionEgg.PyroApps.MouseTargetServer.mouse_position" class="py-name" href="#" onclick="return doclink('link-120', 'mouse_position', 'link-21');">mouse_position</a></tt> </tt>
+</div></div><a name="L181"></a><tt class="py-lineno">181</tt>  <tt class="py-line"> </tt>
+<a name="cross_product"></a><div id="cross_product-def"><a name="L182"></a><tt class="py-lineno">182</tt> <a class="py-toggle" href="#" id="cross_product-toggle" onclick="return toggle('cross_product');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.MouseTargetServer-module.html#cross_product">cross_product</a><tt class="py-op">(</tt><tt class="py-param">b</tt><tt class="py-op">,</tt><tt class="py-param">c</tt><tt class="py-op">) [...]
+</div><div id="cross_product-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="cross_product-expanded"><a name="L183"></a><tt class="py-lineno">183</tt>  <tt class="py-line">    <tt class="py-docstring">"""Cross product between vectors, represented as tuples of length 3."""</tt> </tt>
+<a name="L184"></a><tt class="py-lineno">184</tt>  <tt class="py-line">    <tt class="py-name">det_i</tt> <tt class="py-op">=</tt> <tt class="py-name">b</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">*</tt><tt class="py-name">c</tt><tt class="py-op">[</tt><tt class="py-number">2</tt><tt class="py-op">]</tt> <tt class="py-op">-</tt> <tt class="py-name">b</tt><tt class="py-op">[</tt><tt class="py-number">2</tt><tt class="py-op">]</tt><tt c [...]
+<a name="L185"></a><tt class="py-lineno">185</tt>  <tt class="py-line">    <tt class="py-name">det_j</tt> <tt class="py-op">=</tt> <tt class="py-name">b</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">*</tt><tt class="py-name">c</tt><tt class="py-op">[</tt><tt class="py-number">2</tt><tt class="py-op">]</tt> <tt class="py-op">-</tt> <tt class="py-name">b</tt><tt class="py-op">[</tt><tt class="py-number">2</tt><tt class="py-op">]</tt><tt c [...]
+<a name="L186"></a><tt class="py-lineno">186</tt>  <tt class="py-line">    <tt class="py-name">det_k</tt> <tt class="py-op">=</tt> <tt class="py-name">b</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">*</tt><tt class="py-name">c</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-op">-</tt> <tt class="py-name">b</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt c [...]
+<a name="L187"></a><tt class="py-lineno">187</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-op">(</tt><tt class="py-name">det_i</tt><tt class="py-op">,</tt><tt class="py-op">-</tt><tt class="py-name">det_j</tt><tt class="py-op">,</tt><tt class="py-name">det_k</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L188"></a><tt class="py-lineno">188</tt>  <tt class="py-line"> </tt>
+<a name="mag"></a><div id="mag-def"><a name="L189"></a><tt class="py-lineno">189</tt> <a class="py-toggle" href="#" id="mag-toggle" onclick="return toggle('mag');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.MouseTargetServer-module.html#mag">mag</a><tt class="py-op">(</tt><tt class="py-param">b</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="mag-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="mag-expanded"><a name="L190"></a><tt class="py-lineno">190</tt>  <tt class="py-line">    <tt class="py-docstring">"""Magnitude of a vector."""</tt> </tt>
+<a name="L191"></a><tt class="py-lineno">191</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">b</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">**</tt><tt class="py-number">2.0</tt> <tt class="py-op">+</tt> <tt class="py-name">b</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">**</tt><tt class="py-number">2.0</tt> <tt class="py-op">+</tt> <tt class="py-na [...]
+</div><a name="L192"></a><tt class="py-lineno">192</tt>  <tt class="py-line">     </tt>
+<a name="TargetOrientationController"></a><div id="TargetOrientationController-def"><a name="L193"></a><tt class="py-lineno">193</tt> <a class="py-toggle" href="#" id="TargetOrientationController-toggle" onclick="return toggle('TargetOrientationController');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.PyroApps.MouseTargetServer.TargetOrientationController-class.html">TargetOrientationController</a><tt class="py-op">(</tt> <tt class=" [...]
+</div><div id="TargetOrientationController-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="TargetOrientationController-expanded"><a name="TargetOrientationController.__init__"></a><div id="TargetOrientationController.__init__-def"><a name="L194"></a><tt class="py-lineno">194</tt> <a class="py-toggle" href="#" id="TargetOrientationController.__init__-toggle" onclick="return toggle('TargetOrientationController.__init__');">-</a><tt class="py-line">    <tt class="py- [...]
+</div><div id="TargetOrientationController.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="TargetOrientationController.__init__-expanded"><a name="L195"></a><tt class="py-lineno">195</tt>  <tt class="py-line">        <tt id="link-121" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-121', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-122" class="py-name"><a title="VisionEgg.F [...]
+VisionEgg.Configuration.Config.__init__
+VisionEgg.Core.FixationSpot.__init__
+VisionEgg.Core.FrameTimer.__init__
+VisionEgg.Core.ModelView.__init__
+VisionEgg.Core.OrthographicProjection.__init__
+VisionEgg.Core.OrthographicProjectionNoZClip.__init__
+VisionEgg.Core.PerspectiveProjection.__init__
+VisionEgg.Core.Projection.__init__
+VisionEgg.Core.ProjectionBaseClass.__init__
+VisionEgg.Core.Screen.__init__
+VisionEgg.Core.SimplePerspectiveProjection.__init__
+VisionEgg.Core.Stimulus.__init__
+VisionEgg.Core.Viewport.__init__
+VisionEgg.Daq.Channel.__init__
+VisionEgg.Daq.DaqMode.__init__
+VisionEgg.Daq.Device.__init__
+VisionEgg.Daq.Functionality.__init__
+VisionEgg.Daq.SignalType.__init__
+VisionEgg.DaqKeyboard.KeyboardTriggerInController.__init__
+VisionEgg.DaqLPT.LPTChannel.__init__
+VisionEgg.DaqLPT.LPTDevice.__init__
+VisionEgg.DaqLPT.LPTTriggerInController.__init__
+VisionEgg.DaqLPT.LPTTriggerOutController.__init__
+VisionEgg.Deprecated.Message.__init__
+VisionEgg.Dots.DotArea2D.__init__
+VisionEgg.FlowControl.ConstantController.__init__
+VisionEgg.FlowControl.Controller.__init__
+VisionEgg.FlowControl.EncapsulatedController.__init__
+VisionEgg.FlowControl.EvalStringController.__init__
+VisionEgg.FlowControl.ExecStringController.__init__
+VisionEgg.FlowControl.FunctionController.__init__
+VisionEgg.FlowControl.Presentation.__init__
+VisionEgg.GLTrace.Wrapper.__init__
+VisionEgg.GUI.AppWindow.__init__
+VisionEgg.GUI.GetKeypressDialog.__init__
+VisionEgg.GUI.GraphicsConfigurationWindow.__init__
+VisionEgg.GUI.InfoFrame.__init__
+VisionEgg.GUI.ProgressBar.__init__
+VisionEgg.GUI.ToplevelDialog.__init__
+VisionEgg.Gratings.SinGrating2D.__init__
+VisionEgg.Gratings.SinGrating3D.__init__
+VisionEgg.MoreStimuli.Arrow.__init__
+VisionEgg.MoreStimuli.FilledCircle.__init__
+VisionEgg.MoreStimuli.Rectangle3D.__init__
+VisionEgg.MoreStimuli.Target2D.__init__
+VisionEgg.ParameterTypes.AnyOf.__init__
+VisionEgg.ParameterTypes.Instance.__init__
+VisionEgg.ParameterTypes.Sequence.__init__
+VisionEgg.ParameterTypes.SubClass.__init__
+VisionEgg.PyroApps.AST_ext.AST_Visitor.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalMetaParameters.__init__
+VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.__init__
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.__init__
+VisionEgg.PyroApps.DropinGUI.DropinMetaParameters.__init__
+VisionEgg.PyroApps.DropinServer.DropinMetaController.__init__
+VisionEgg.PyroApps.EPhysGUI.AppWindow.__init__
+VisionEgg.PyroApps.EPhysGUI.BarButton.__init__
+VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase.__init__
+VisionEgg.PyroApps.EPhysGUI.GammaFrame.__init__
+VisionEgg.PyroApps.EPhysGUI.ImageSequenceLauncher.__init__
+VisionEgg.PyroApps.EPhysGUI.Loop.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopContainedObject.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopParamDialog.__init__
+VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.__init__
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.__init__
+VisionEgg.PyroApps.EPhysServer.EPhysServer.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingMetaParameters.__init__
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.GridGUI.GridControlFrame.__init__
+VisionEgg.PyroApps.GridGUI.GridMetaParameters.__init__
+VisionEgg.PyroApps.GridServer.GridMetaController.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetMetaParameters.__init__
+VisionEgg.PyroApps.MouseTargetServer.MousePositionController.__init__
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetOrientationController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetPositionController.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.CallbackEntry.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionParameters.__init__
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingMetaParameters.__init__
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumMetaParameters.__init__
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.__init__
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.__init__
+VisionEgg.PyroApps.TargetGUI.TargetMetaParameters.__init__
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.__init__
+VisionEgg.PyroClient.PyroClient.__init__
+VisionEgg.PyroHelpers.PyroConstantController.__init__
+VisionEgg.PyroHelpers.PyroEncapsulatedController.__init__
+VisionEgg.PyroHelpers.PyroEvalStringController.__init__
+VisionEgg.PyroHelpers.PyroExecStringController.__init__
+VisionEgg.PyroHelpers.PyroListenController.__init__
+VisionEgg.PyroHelpers.PyroLocalDictController.__init__
+VisionEgg.PyroHelpers.PyroServer.__init__
+VisionEgg.QuickTime.MovieTexture.__init__
+VisionEgg.ResponseControl.KeyboardResponseController.__init__
+VisionEgg.ResponseControl.ResponseController.__init__
+VisionEgg.SphereMap.AzElGrid.__init__
+VisionEgg.SphereMap.SphereGrating.__init__
+VisionEgg.SphereMap.SphereMap.__init__
+VisionEgg.SphereMap.SphereWindow.__init__
+VisionEgg.TCPController.SocketListenController.__init__
+VisionEgg.TCPController.TCPController.__init__
+VisionEgg.TCPController.TCPServer.__init__
+VisionEgg.Text.BitmapText.__init__
+VisionEgg.Text.GlutTextBase.__init__
+VisionEgg.Text.StrokeText.__init__
+VisionEgg.Text.Text.__init__
+VisionEgg.Textures.FixationCross.__init__
+VisionEgg.Textures.Mask2D.__init__
+VisionEgg.Textures.SpinningDrum.__init__
+VisionEgg.Textures.Texture.__init__
+VisionEgg.Textures.TextureFromFile.__init__
+VisionEgg.Textures.TextureObject.__init__
+VisionEgg.Textures.TextureStimulusBaseClass.__init__
+VisionEgg.ThreeDeeMath.TransformMatrix.__init__
+VisionEgg.WrappedText.WrappedText.__init__
+VisionEgg.qtmovie.Movie.__init__
+VisionEgg.qtmovie.Rect.__init__" class="py-name" href="#" onclick="return doclink('link-124', '__init__', 'link-48');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> </tt>
+<a name="L196"></a><tt class="py-lineno">196</tt>  <tt class="py-line">                            <tt class="py-name">return_type</tt><tt class="py-op">=</tt><tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-125" class="py-name"><a title="VisionEgg.ParameterTypes.Real" class="py-name" href="#" onclick="return doclink('link-125', 'Real', 'link-112');">Real</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L197"></a><tt class="py-lineno">197</tt>  <tt class="py-line">                            <tt class="py-name">eval_frequency</tt><tt class="py-op">=</tt><tt id="link-126" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-126', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-127" class="py-name"><a title="VisionEgg.FlowControl" class="py-name" href="#" onclick="return doclink('link-127', 'FlowControl', 'lin [...]
+VisionEgg.FlowControl.EVERY_FRAME" class="py-name" href="#" onclick="return doclink('link-129', 'EVERY_FRAME', 'link-96');">EVERY_FRAME</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L198"></a><tt class="py-lineno">198</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">c</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-number">0.0</tt><tt class="py-op">,</tt><tt class="py-number">0.0</tt><tt class="py-op">,</tt><tt class="py-number">1.0</tt><tt class="py-op">)</tt> </tt>
+<a name="L199"></a><tt class="py-lineno">199</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">last_orientation</tt> <tt class="py-op">=</tt> <tt class="py-number">0.0</tt> </tt>
+<a name="L200"></a><tt class="py-lineno">200</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-130" class="py-name"><a title="VisionEgg.DaqKeyboard.KeyboardTriggerInController.between_go_eval
+VisionEgg.DaqLPT.LPTTriggerInController.between_go_eval
+VisionEgg.DaqLPT.LPTTriggerOutController.between_go_eval
+VisionEgg.FlowControl.ConstantController.between_go_eval
+VisionEgg.FlowControl.Controller.between_go_eval
+VisionEgg.FlowControl.EncapsulatedController.between_go_eval
+VisionEgg.FlowControl.EvalStringController.between_go_eval
+VisionEgg.FlowControl.ExecStringController.between_go_eval
+VisionEgg.FlowControl.FunctionController.between_go_eval
+VisionEgg.PyroHelpers.PyroListenController.between_go_eval
+VisionEgg.ResponseControl.KeyboardResponseController.between_go_eval
+VisionEgg.ResponseControl.ResponseController.between_go_eval
+VisionEgg.TCPController.SocketListenController.between_go_eval" class="py-name" href="#" onclick="return doclink('link-130', 'between_go_eval', 'link-97');">between_go_eval</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-131" class="py-name"><a title="VisionEgg.DaqKeyboard.KeyboardTriggerInController.during_go_eval
+VisionEgg.DaqLPT.LPTTriggerInController.during_go_eval
+VisionEgg.DaqLPT.LPTTriggerOutController.during_go_eval
+VisionEgg.FlowControl.ConstantController.during_go_eval
+VisionEgg.FlowControl.Controller.during_go_eval
+VisionEgg.FlowControl.EncapsulatedController.during_go_eval
+VisionEgg.FlowControl.EvalStringController.during_go_eval
+VisionEgg.FlowControl.ExecStringController.during_go_eval
+VisionEgg.FlowControl.FunctionController.during_go_eval
+VisionEgg.PyroApps.MouseTargetServer.MousePositionController.during_go_eval
+VisionEgg.PyroApps.MouseTargetServer.TargetOrientationController.during_go_eval
+VisionEgg.PyroApps.MouseTargetServer.TargetPositionController.during_go_eval
+VisionEgg.PyroHelpers.PyroListenController.during_go_eval
+VisionEgg.ResponseControl.KeyboardResponseController.during_go_eval
+VisionEgg.ResponseControl.ResponseController.during_go_eval
+VisionEgg.TCPController.SocketListenController.during_go_eval" class="py-name" href="#" onclick="return doclink('link-131', 'during_go_eval', 'link-98');">during_go_eval</a></tt> </tt>
+</div><a name="L201"></a><tt class="py-lineno">201</tt>  <tt class="py-line"> </tt>
+<a name="TargetOrientationController.during_go_eval"></a><div id="TargetOrientationController.during_go_eval-def"><a name="L202"></a><tt class="py-lineno">202</tt> <a class="py-toggle" href="#" id="TargetOrientationController.during_go_eval-toggle" onclick="return toggle('TargetOrientationController.during_go_eval');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.MouseTargetServer.TargetOrientationController-class.html#during [...]
+</div><div id="TargetOrientationController.during_go_eval-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="TargetOrientationController.during_go_eval-expanded"><a name="L203"></a><tt class="py-lineno">203</tt>  <tt class="py-line">        <tt class="py-keyword">global</tt> <tt id="link-132" class="py-name"><a title="VisionEgg.PyroApps.MouseTargetServer.mouse_position" class="py-name" href="#" onclick="return doclink('link-132', 'mouse_position', 'link-21');">mo [...]
+<a name="L204"></a><tt class="py-lineno">204</tt>  <tt class="py-line"> </tt>
+<a name="L205"></a><tt class="py-lineno">205</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt id="link-134" class="py-name" targets="Class float=float-class.html"><a title="float" class="py-name" href="#" onclick="return doclink('link-134', 'float', 'link-134');">float</a></tt><tt class="py-op">(</tt><tt id="link-135" class="py-name"><a title="VisionEgg.PyroApps.MouseTargetServer.last_mouse_position" class="py-name" href="# [...]
+<a name="L206"></a><tt class="py-lineno">206</tt>  <tt class="py-line">             <tt id="link-137" class="py-name"><a title="float" class="py-name" href="#" onclick="return doclink('link-137', 'float', 'link-134');">float</a></tt><tt class="py-op">(</tt><tt id="link-138" class="py-name"><a title="VisionEgg.PyroApps.MouseTargetServer.last_mouse_position" class="py-name" href="#" onclick="return doclink('link-138', 'last_mouse_position', 'link-22');">last_mouse_position</a></tt><tt clas [...]
+<a name="L207"></a><tt class="py-lineno">207</tt>  <tt class="py-line">             <tt class="py-number">0.0</tt><tt class="py-op">)</tt> </tt>
+<a name="L208"></a><tt class="py-lineno">208</tt>  <tt class="py-line"> </tt>
+<a name="L209"></a><tt class="py-lineno">209</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt id="link-140" class="py-name" targets="Function VisionEgg.PyroApps.MouseTargetServer.mag()=VisionEgg.PyroApps.MouseTargetServer-module.html#mag"><a title="VisionEgg.PyroApps.MouseTargetServer.mag" class="py-name" href="#" onclick="return doclink('link-140', 'mag', 'link-140');">mag</a></tt><tt class="py-op">(</tt><tt class="py-name">b</tt><tt class="py-op">)</tt> <tt class="p [...]
+<a name="L210"></a><tt class="py-lineno">210</tt>  <tt class="py-line">            <tt class="py-comment"># find cross product b x c. assume b and c are 3-vecs, b has</tt> </tt>
+<a name="L211"></a><tt class="py-lineno">211</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># 3rd component 0.</tt> </tt>
+<a name="L212"></a><tt class="py-lineno">212</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">orientation_vector</tt> <tt class="py-op">=</tt> <tt id="link-141" class="py-name" targets="Function VisionEgg.PyroApps.MouseTargetServer.cross_product()=VisionEgg.PyroApps.MouseTargetServer-module.html#cross_product"><a title="VisionEgg.PyroApps.MouseTargetServer.cross_product" class="py-name" href="#" onclick="return doclink('link-141', 'cross_product', 'li [...]
+<a name="L213"></a><tt class="py-lineno">213</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">last_orientation</tt> <tt class="py-op">=</tt> <tt class="py-name">math</tt><tt class="py-op">.</tt><tt class="py-name">atan2</tt><tt class="py-op">(</tt><tt class="py-name">orientation_vector</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">,</tt><tt class="py-name">orientation_vector< [...]
+<a name="L214"></a><tt class="py-lineno">214</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">last_orientation</tt> </tt>
+</div></div><a name="L215"></a><tt class="py-lineno">215</tt>  <tt class="py-line">         </tt>
+<a name="get_target_size"></a><div id="get_target_size-def"><a name="L216"></a><tt class="py-lineno">216</tt> <a class="py-toggle" href="#" id="get_target_size-toggle" onclick="return toggle('get_target_size');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.MouseTargetServer-module.html#get_target_size">get_target_size</a><tt class="py-op">(</tt><tt class="py-param">t</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt c [...]
+</div><div id="get_target_size-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="get_target_size-expanded"><a name="L217"></a><tt class="py-lineno">217</tt>  <tt class="py-line">    <tt class="py-keyword">global</tt> <tt id="link-142" class="py-name"><a title="VisionEgg.PyroApps.MouseTargetServer.target_w" class="py-name" href="#" onclick="return doclink('link-142', 'target_w', 'link-23');">target_w</a></tt><tt class="py-op">,</tt> <tt id="link-143" class="py-name"> [...]
+<a name="L218"></a><tt class="py-lineno">218</tt>  <tt class="py-line">    <tt class="py-keyword">global</tt> <tt id="link-144" class="py-name"><a title="VisionEgg.PyroApps.MouseTargetServer.up" class="py-name" href="#" onclick="return doclink('link-144', 'up', 'link-25');">up</a></tt><tt class="py-op">,</tt> <tt id="link-145" class="py-name"><a title="VisionEgg.PyroApps.MouseTargetServer.down" class="py-name" href="#" onclick="return doclink('link-145', 'down', 'link-26');">down</a></tt [...]
+<a name="L219"></a><tt class="py-lineno">219</tt>  <tt class="py-line"> </tt>
+<a name="L220"></a><tt class="py-lineno">220</tt>  <tt class="py-line">    <tt class="py-name">amount</tt> <tt class="py-op">=</tt> <tt class="py-number">0.02</tt> </tt>
+<a name="L221"></a><tt class="py-lineno">221</tt>  <tt class="py-line">     </tt>
+<a name="L222"></a><tt class="py-lineno">222</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt id="link-148" class="py-name"><a title="VisionEgg.PyroApps.MouseTargetServer.up" class="py-name" href="#" onclick="return doclink('link-148', 'up', 'link-25');">up</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L223"></a><tt class="py-lineno">223</tt>  <tt class="py-line">        <tt id="link-149" class="py-name"><a title="VisionEgg.PyroApps.MouseTargetServer.target_w" class="py-name" href="#" onclick="return doclink('link-149', 'target_w', 'link-23');">target_w</a></tt> <tt class="py-op">=</tt> <tt id="link-150" class="py-name"><a title="VisionEgg.PyroApps.MouseTargetServer.target_w" class="py-name" href="#" onclick="return doclink('link-150', 'target_w', 'link-23');">target_w</a></tt [...]
+<a name="L224"></a><tt class="py-lineno">224</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt id="link-152" class="py-name"><a title="VisionEgg.PyroApps.MouseTargetServer.down" class="py-name" href="#" onclick="return doclink('link-152', 'down', 'link-26');">down</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L225"></a><tt class="py-lineno">225</tt>  <tt class="py-line">        <tt id="link-153" class="py-name"><a title="VisionEgg.PyroApps.MouseTargetServer.target_w" class="py-name" href="#" onclick="return doclink('link-153', 'target_w', 'link-23');">target_w</a></tt> <tt class="py-op">=</tt> <tt id="link-154" class="py-name"><a title="VisionEgg.PyroApps.MouseTargetServer.target_w" class="py-name" href="#" onclick="return doclink('link-154', 'target_w', 'link-23');">target_w</a></tt [...]
+<a name="L226"></a><tt class="py-lineno">226</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt id="link-156" class="py-name"><a title="VisionEgg.PyroApps.MouseTargetServer.right" class="py-name" href="#" onclick="return doclink('link-156', 'right', 'link-28');">right</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L227"></a><tt class="py-lineno">227</tt>  <tt class="py-line">        <tt id="link-157" class="py-name"><a title="VisionEgg.PyroApps.MouseTargetServer.target_h" class="py-name" href="#" onclick="return doclink('link-157', 'target_h', 'link-24');">target_h</a></tt> <tt class="py-op">=</tt> <tt id="link-158" class="py-name"><a title="VisionEgg.PyroApps.MouseTargetServer.target_h" class="py-name" href="#" onclick="return doclink('link-158', 'target_h', 'link-24');">target_h</a></tt [...]
+<a name="L228"></a><tt class="py-lineno">228</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt id="link-160" class="py-name"><a title="VisionEgg.PyroApps.MouseTargetServer.left" class="py-name" href="#" onclick="return doclink('link-160', 'left', 'link-27');">left</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L229"></a><tt class="py-lineno">229</tt>  <tt class="py-line">        <tt id="link-161" class="py-name"><a title="VisionEgg.PyroApps.MouseTargetServer.target_h" class="py-name" href="#" onclick="return doclink('link-161', 'target_h', 'link-24');">target_h</a></tt> <tt class="py-op">=</tt> <tt id="link-162" class="py-name"><a title="VisionEgg.PyroApps.MouseTargetServer.target_h" class="py-name" href="#" onclick="return doclink('link-162', 'target_h', 'link-24');">target_h</a></tt [...]
+<a name="L230"></a><tt class="py-lineno">230</tt>  <tt class="py-line">    <tt id="link-164" class="py-name"><a title="VisionEgg.PyroApps.MouseTargetServer.target_w" class="py-name" href="#" onclick="return doclink('link-164', 'target_w', 'link-23');">target_w</a></tt> <tt class="py-op">=</tt> <tt class="py-name">max</tt><tt class="py-op">(</tt><tt id="link-165" class="py-name"><a title="VisionEgg.PyroApps.MouseTargetServer.target_w" class="py-name" href="#" onclick="return doclink('link [...]
+<a name="L231"></a><tt class="py-lineno">231</tt>  <tt class="py-line">    <tt id="link-166" class="py-name"><a title="VisionEgg.PyroApps.MouseTargetServer.target_h" class="py-name" href="#" onclick="return doclink('link-166', 'target_h', 'link-24');">target_h</a></tt> <tt class="py-op">=</tt> <tt class="py-name">max</tt><tt class="py-op">(</tt><tt id="link-167" class="py-name"><a title="VisionEgg.PyroApps.MouseTargetServer.target_h" class="py-name" href="#" onclick="return doclink('link [...]
+<a name="L232"></a><tt class="py-lineno">232</tt>  <tt class="py-line">     </tt>
+<a name="L233"></a><tt class="py-lineno">233</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-op">(</tt><tt id="link-168" class="py-name"><a title="VisionEgg.PyroApps.MouseTargetServer.target_w" class="py-name" href="#" onclick="return doclink('link-168', 'target_w', 'link-23');">target_w</a></tt><tt class="py-op">,</tt> <tt id="link-169" class="py-name"><a title="VisionEgg.PyroApps.MouseTargetServer.target_h" class="py-name" href="#" onclick="return doclink [...]
+</div><a name="L234"></a><tt class="py-lineno">234</tt>  <tt class="py-line"> </tt>
+<a name="L235"></a><tt class="py-lineno">235</tt>  <tt class="py-line"><tt class="py-comment"># Don't do anything unless this script is being run</tt> </tt>
+<a name="L236"></a><tt class="py-lineno">236</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-keyword">if</tt> <tt class="py-name">__name__</tt> <tt class="py-op">==</tt> <tt class="py-string">'__main__'</tt><tt class="py-op">:</tt> </tt>
+<a name="L237"></a><tt class="py-lineno">237</tt>  <tt class="py-line">     </tt>
+<a name="L238"></a><tt class="py-lineno">238</tt>  <tt class="py-line">    <tt class="py-name">pyro_server</tt> <tt class="py-op">=</tt> <tt id="link-170" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-170', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-171" class="py-name"><a title="VisionEgg.PyroHelpers" class="py-name" href="#" onclick="return doclink('link-171', 'PyroHelpers', 'link-16');">PyroHelpers</a>< [...]
+<a name="L239"></a><tt class="py-lineno">239</tt>  <tt class="py-line"> </tt>
+<a name="L240"></a><tt class="py-lineno">240</tt>  <tt class="py-line">    <tt class="py-name">screen</tt> <tt class="py-op">=</tt> <tt id="link-173" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-173', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-174" class="py-name"><a title="VisionEgg.Core" class="py-name" href="#" onclick="return doclink('link-174', 'Core', 'link-10');">Core</a></tt><tt class="py-op">.</t [...]
+<a name="L241"></a><tt class="py-lineno">241</tt>  <tt class="py-line"> </tt>
+<a name="L242"></a><tt class="py-lineno">242</tt>  <tt class="py-line">    <tt class="py-comment"># get Vision Egg stimulus ready to go</tt> </tt>
+<a name="L243"></a><tt class="py-lineno">243</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">stimuli</tt> <tt class="py-op">=</tt> <tt id="link-177" class="py-name" targets="Function VisionEgg.PyroApps.ColorCalServer.make_stimuli()=VisionEgg.PyroApps.ColorCalServer-module.html#make_stimuli,Function VisionEgg.PyroApps.DropinServer.make_stimuli()=VisionEgg.PyroApps.DropinServer-module.html#make_stimuli,Function VisionEgg.PyroApps.FlatGratingServer.make_stimuli [...]
+VisionEgg.PyroApps.DropinServer.make_stimuli
+VisionEgg.PyroApps.FlatGratingServer.make_stimuli
+VisionEgg.PyroApps.GridServer.make_stimuli
+VisionEgg.PyroApps.MouseTargetServer.make_stimuli
+VisionEgg.PyroApps.SphereGratingServer.make_stimuli
+VisionEgg.PyroApps.SpinningDrumServer.make_stimuli
+VisionEgg.PyroApps.TargetServer.make_stimuli" class="py-name" href="#" onclick="return doclink('link-177', 'make_stimuli', 'link-177');">make_stimuli</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L244"></a><tt class="py-lineno">244</tt>  <tt class="py-line">    <tt class="py-name">stimulus</tt> <tt class="py-op">=</tt> <tt class="py-name">stimuli</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
+<a name="L245"></a><tt class="py-lineno">245</tt>  <tt class="py-line">    <tt class="py-name">viewport</tt> <tt class="py-op">=</tt> <tt id="link-178" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-178', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-179" class="py-name"><a title="VisionEgg.Core" class="py-name" href="#" onclick="return doclink('link-179', 'Core', 'link-10');">Core</a></tt><tt class="py-op">.< [...]
+<a name="L246"></a><tt class="py-lineno">246</tt>  <tt class="py-line">    <tt class="py-name">p</tt> <tt class="py-op">=</tt> <tt id="link-181" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-181', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-182" class="py-name"><a title="VisionEgg.FlowControl" class="py-name" href="#" onclick="return doclink('link-182', 'FlowControl', 'link-12');">FlowControl</a></tt><tt cl [...]
+<a name="L247"></a><tt class="py-lineno">247</tt>  <tt class="py-line"> </tt>
+<a name="L248"></a><tt class="py-lineno">248</tt>  <tt class="py-line">    <tt class="py-comment"># now hand over control of grating and mask to FlatGratingExperimentMetaController</tt> </tt>
+<a name="L249"></a><tt class="py-lineno">249</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">meta_controller</tt> <tt class="py-op">=</tt> <tt id="link-184" class="py-name"><a title="VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController" class="py-name" href="#" onclick="return doclink('link-184', 'MouseTargetExperimentMetaController', 'link-83');">MouseTargetExperimentMetaController</a></tt><tt class="py-op">(</tt><tt class="py-name">scre [...]
+<a name="L250"></a><tt class="py-lineno">250</tt>  <tt class="py-line">    <tt class="py-name">pyro_server</tt><tt class="py-op">.</tt><tt id="link-185" class="py-name" targets="Method VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.connect()=VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#connect,Method VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.connect()=VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html#connect,Method [...]
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.connect
+VisionEgg.PyroHelpers.PyroServer.connect" class="py-name" href="#" onclick="return doclink('link-185', 'connect', 'link-185');">connect</a></tt><tt class="py-op">(</tt><tt class="py-name">meta_controller</tt><tt class="py-op">,</tt><tt id="link-186" class="py-name" targets="Function VisionEgg.PyroApps.ColorCalServer.get_meta_controller_stimkey()=VisionEgg.PyroApps.ColorCalServer-module.html#get_meta_controller_stimkey,Function VisionEgg.PyroApps.DropinServer.get_meta_controller_stimkey() [...]
+VisionEgg.PyroApps.DropinServer.get_meta_controller_stimkey
+VisionEgg.PyroApps.FlatGratingServer.get_meta_controller_stimkey
+VisionEgg.PyroApps.GridServer.get_meta_controller_stimkey
+VisionEgg.PyroApps.MouseTargetServer.get_meta_controller_stimkey
+VisionEgg.PyroApps.SphereGratingServer.get_meta_controller_stimkey
+VisionEgg.PyroApps.SpinningDrumServer.get_meta_controller_stimkey
+VisionEgg.PyroApps.TargetServer.get_meta_controller_stimkey" class="py-name" href="#" onclick="return doclink('link-186', 'get_meta_controller_stimkey', 'link-186');">get_meta_controller_stimkey</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L251"></a><tt class="py-lineno">251</tt>  <tt class="py-line"> </tt>
+<a name="L252"></a><tt class="py-lineno">252</tt>  <tt class="py-line">    <tt class="py-comment"># get listener controller and register it</tt> </tt>
+<a name="L253"></a><tt class="py-lineno">253</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">p</tt><tt class="py-op">.</tt><tt id="link-187" class="py-name"><a title="VisionEgg.FlowControl.Presentation.add_controller
+VisionEgg.PyroHelpers.PyroLocalDictController.add_controller" class="py-name" href="#" onclick="return doclink('link-187', 'add_controller', 'link-59');">add_controller</a></tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-name">pyro_server</tt><tt class="py-op">.</tt><tt id="link-188" class="py-name" targets="Method VisionEgg.PyroHelpers.PyroServer.create_listener_controller()=VisionEgg.Py [...]
+<a name="L254"></a><tt class="py-lineno">254</tt>  <tt class="py-line"> </tt>
+<a name="L255"></a><tt class="py-lineno">255</tt>  <tt class="py-line">    <tt class="py-comment"># enter endless loop</tt> </tt>
+<a name="L256"></a><tt class="py-lineno">256</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">p</tt><tt class="py-op">.</tt><tt id="link-189" class="py-name" targets="Method VisionEgg.FlowControl.Presentation.run_forever()=VisionEgg.FlowControl.Presentation-class.html#run_forever"><a title="VisionEgg.FlowControl.Presentation.run_forever" class="py-name" href="#" onclick="return doclink('link-189', 'run_forever', 'link-189');">run_forever</a></tt><tt class="py [...]
+<a name="L257"></a><tt class="py-lineno">257</tt>  <tt class="py-line"> </tt><script type="text/javascript">
+<!--
+expandto(location.href);
+// -->
+</script>
+</pre>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:48 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.PyroApps.MouseTargetServer.MousePositionController-class.html b/doc/reference/html/VisionEgg.PyroApps.MouseTargetServer.MousePositionController-class.html
new file mode 100644
index 0000000..d7c6cea
--- /dev/null
+++ b/doc/reference/html/VisionEgg.PyroApps.MouseTargetServer.MousePositionController-class.html
@@ -0,0 +1,303 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.PyroApps.MouseTargetServer.MousePositionController</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.PyroApps-module.html">Package PyroApps</a> ::
+        <a href="VisionEgg.PyroApps.MouseTargetServer-module.html">Module MouseTargetServer</a> ::
+        Class MousePositionController
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.PyroApps.MouseTargetServer.MousePositionController-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class MousePositionController</h1><span class="codelink"><a href="VisionEgg.PyroApps.MouseTargetServer-pysrc.html#MousePositionController">source code</a></span><br /><br />
+<pre class="base-tree">
+            object --+    
+                     |    
+<a href="VisionEgg.FlowControl.Controller-class.html">FlowControl.Controller</a> --+
+                         |
+                        <strong class="uidshort">MousePositionController</strong>
+</pre>
+
+<hr />
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.PyroApps.MouseTargetServer.MousePositionController-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      Create instance of Controller.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.MouseTargetServer-pysrc.html#MousePositionController.__init__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.PyroApps.MouseTargetServer.MousePositionController-class.html#during_go_eval" class="summary-sig-name">during_go_eval</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">t</span>=<span class="summary-sig-default">None</span>)</span><br />
+      Called by Presentation.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.MouseTargetServer-pysrc.html#MousePositionController.during_go_eval">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.FlowControl.Controller-class.html">FlowControl.Controller</a></code></b>:
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#between_go_eval">between_go_eval</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#evaluate_now">evaluate_now</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#returns_type">returns_type</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#set_eval_frequency">set_eval_frequency</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__delattr__</code>,
+      <code>__getattribute__</code>,
+      <code>__hash__</code>,
+      <code>__new__</code>,
+      <code>__reduce__</code>,
+      <code>__reduce_ex__</code>,
+      <code>__repr__</code>,
+      <code>__setattr__</code>,
+      <code>__str__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Class Variables</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.FlowControl.Controller-class.html">FlowControl.Controller</a></code></b>:
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#EVERY_FRAME">EVERY_FRAME</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#FRAMES_ABSOLUTE">FRAMES_ABSOLUTE</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#FRAMES_SINCE_GO">FRAMES_SINCE_GO</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#NEVER">NEVER</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#NOT_BETWEEN_GO">NOT_BETWEEN_GO</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#NOT_DURING_GO">NOT_DURING_GO</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#ONCE">ONCE</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#TIME_INDEPENDENT">TIME_INDEPENDENT</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#TIME_SEC_ABSOLUTE">TIME_SEC_ABSOLUTE</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#TIME_SEC_SINCE_GO">TIME_SEC_SINCE_GO</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#TRANSITIONS">TRANSITIONS</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#flag_dictionary">flag_dictionary</a></code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Properties</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__class__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Method Details</span></td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>)</span>
+    <br /><em class="fname">(Constructor)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.PyroApps.MouseTargetServer-pysrc.html#MousePositionController.__init__">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Create instance of Controller.
+
+Arguments:
+
+eval_frequency -- Int, bitwise "or" of flags
+temporal_variables -- Int, bitwise "or" of flags
+return_type -- Set to type() of the parameter under control
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.FlowControl.Controller-class.html#__init__">FlowControl.Controller.__init__</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="during_go_eval"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">during_go_eval</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">t</span>=<span class="sig-default">None</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.PyroApps.MouseTargetServer-pysrc.html#MousePositionController.during_go_eval">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Called by Presentation. Evaluate during the main 'go' loop.
+
+Override this method in subclasses.
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.FlowControl.Controller-class.html#during_go_eval">FlowControl.Controller.during_go_eval</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:47 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController-class.html b/doc/reference/html/VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController-class.html
new file mode 100644
index 0000000..9ab839d
--- /dev/null
+++ b/doc/reference/html/VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController-class.html
@@ -0,0 +1,300 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.PyroApps-module.html">Package PyroApps</a> ::
+        <a href="VisionEgg.PyroApps.MouseTargetServer-module.html">Module MouseTargetServer</a> ::
+        Class MouseTargetExperimentMetaController
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class MouseTargetExperimentMetaController</h1><span class="codelink"><a href="VisionEgg.PyroApps.MouseTargetServer-pysrc.html#MouseTargetExperimentMetaController">source code</a></span><br /><br />
+<pre class="base-tree">
+Pyro.core.ObjBase --+
+                    |
+                   <strong class="uidshort">MouseTargetExperimentMetaController</strong>
+</pre>
+
+<hr />
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">screen</span>,
+        <span class="summary-sig-arg">presentation</span>,
+        <span class="summary-sig-arg">stimuli</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.MouseTargetServer-pysrc.html#MouseTargetExperimentMetaController.__init__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__del__"></a><span class="summary-sig-name">__del__</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.MouseTargetServer-pysrc.html#MouseTargetExperimentMetaController.__del__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="get_parameters"></a><span class="summary-sig-name">get_parameters</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.MouseTargetServer-pysrc.html#MouseTargetExperimentMetaController.get_parameters">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="set_parameters"></a><span class="summary-sig-name">set_parameters</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">new_parameters</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.MouseTargetServer-pysrc.html#MouseTargetExperimentMetaController.set_parameters">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="update"></a><span class="summary-sig-name">update</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.MouseTargetServer-pysrc.html#MouseTargetExperimentMetaController.update">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="go"></a><span class="summary-sig-name">go</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.MouseTargetServer-pysrc.html#MouseTargetExperimentMetaController.go">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="quit_server"></a><span class="summary-sig-name">quit_server</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.MouseTargetServer-pysrc.html#MouseTargetExperimentMetaController.quit_server">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>Pyro.core.ObjBase</code></b>:
+      <code>GUID</code>,
+      <code>Pyro_dyncall</code>,
+      <code>delegateTo</code>,
+      <code>getAttrProxy</code>,
+      <code>getDaemon</code>,
+      <code>getLocalStorage</code>,
+      <code>getProxy</code>,
+      <code>remote_retrieve_code</code>,
+      <code>remote_supply_code</code>,
+      <code>setCodeValidator</code>,
+      <code>setGUID</code>,
+      <code>setPyroDaemon</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Method Details</span></td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">screen</span>,
+        <span class="sig-arg">presentation</span>,
+        <span class="sig-arg">stimuli</span>)</span>
+    <br /><em class="fname">(Constructor)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.PyroApps.MouseTargetServer-pysrc.html#MouseTargetExperimentMetaController.__init__">source code</a></span> 
+    </td>
+  </table>
+  
+  
+  <dl class="fields">
+    <dt>Overrides:
+      Pyro.core.ObjBase.__init__
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:47 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.PyroApps.MouseTargetServer.TargetOrientationController-class.html b/doc/reference/html/VisionEgg.PyroApps.MouseTargetServer.TargetOrientationController-class.html
new file mode 100644
index 0000000..f776225
--- /dev/null
+++ b/doc/reference/html/VisionEgg.PyroApps.MouseTargetServer.TargetOrientationController-class.html
@@ -0,0 +1,301 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.PyroApps.MouseTargetServer.TargetOrientationController</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.PyroApps-module.html">Package PyroApps</a> ::
+        <a href="VisionEgg.PyroApps.MouseTargetServer-module.html">Module MouseTargetServer</a> ::
+        Class TargetOrientationController
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.PyroApps.MouseTargetServer.TargetOrientationController-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class TargetOrientationController</h1><span class="codelink"><a href="VisionEgg.PyroApps.MouseTargetServer-pysrc.html#TargetOrientationController">source code</a></span><br /><br />
+<pre class="base-tree">
+            object --+    
+                     |    
+<a href="VisionEgg.FlowControl.Controller-class.html">FlowControl.Controller</a> --+
+                         |
+                        <strong class="uidshort">TargetOrientationController</strong>
+</pre>
+
+<hr />
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.PyroApps.MouseTargetServer.TargetOrientationController-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      Create instance of Controller.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.MouseTargetServer-pysrc.html#TargetOrientationController.__init__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.PyroApps.MouseTargetServer.TargetOrientationController-class.html#during_go_eval" class="summary-sig-name">during_go_eval</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      Called by Presentation.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.MouseTargetServer-pysrc.html#TargetOrientationController.during_go_eval">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.FlowControl.Controller-class.html">FlowControl.Controller</a></code></b>:
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#between_go_eval">between_go_eval</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#evaluate_now">evaluate_now</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#returns_type">returns_type</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#set_eval_frequency">set_eval_frequency</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__delattr__</code>,
+      <code>__getattribute__</code>,
+      <code>__hash__</code>,
+      <code>__new__</code>,
+      <code>__reduce__</code>,
+      <code>__reduce_ex__</code>,
+      <code>__repr__</code>,
+      <code>__setattr__</code>,
+      <code>__str__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Class Variables</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.FlowControl.Controller-class.html">FlowControl.Controller</a></code></b>:
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#EVERY_FRAME">EVERY_FRAME</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#FRAMES_ABSOLUTE">FRAMES_ABSOLUTE</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#FRAMES_SINCE_GO">FRAMES_SINCE_GO</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#NEVER">NEVER</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#NOT_BETWEEN_GO">NOT_BETWEEN_GO</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#NOT_DURING_GO">NOT_DURING_GO</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#ONCE">ONCE</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#TIME_INDEPENDENT">TIME_INDEPENDENT</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#TIME_SEC_ABSOLUTE">TIME_SEC_ABSOLUTE</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#TIME_SEC_SINCE_GO">TIME_SEC_SINCE_GO</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#TRANSITIONS">TRANSITIONS</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#flag_dictionary">flag_dictionary</a></code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Properties</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__class__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Method Details</span></td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>)</span>
+    <br /><em class="fname">(Constructor)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.PyroApps.MouseTargetServer-pysrc.html#TargetOrientationController.__init__">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Create instance of Controller.
+
+Arguments:
+
+eval_frequency -- Int, bitwise "or" of flags
+temporal_variables -- Int, bitwise "or" of flags
+return_type -- Set to type() of the parameter under control
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.FlowControl.Controller-class.html#__init__">FlowControl.Controller.__init__</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="during_go_eval"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">during_go_eval</span>(<span class="sig-arg">self</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.PyroApps.MouseTargetServer-pysrc.html#TargetOrientationController.during_go_eval">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Called by Presentation. Evaluate during the main 'go' loop.
+
+Override this method in subclasses.
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.FlowControl.Controller-class.html#during_go_eval">FlowControl.Controller.during_go_eval</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:47 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.PyroApps.MouseTargetServer.TargetPositionController-class.html b/doc/reference/html/VisionEgg.PyroApps.MouseTargetServer.TargetPositionController-class.html
new file mode 100644
index 0000000..623fe2f
--- /dev/null
+++ b/doc/reference/html/VisionEgg.PyroApps.MouseTargetServer.TargetPositionController-class.html
@@ -0,0 +1,303 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.PyroApps.MouseTargetServer.TargetPositionController</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.PyroApps-module.html">Package PyroApps</a> ::
+        <a href="VisionEgg.PyroApps.MouseTargetServer-module.html">Module MouseTargetServer</a> ::
+        Class TargetPositionController
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.PyroApps.MouseTargetServer.TargetPositionController-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class TargetPositionController</h1><span class="codelink"><a href="VisionEgg.PyroApps.MouseTargetServer-pysrc.html#TargetPositionController">source code</a></span><br /><br />
+<pre class="base-tree">
+            object --+    
+                     |    
+<a href="VisionEgg.FlowControl.Controller-class.html">FlowControl.Controller</a> --+
+                         |
+                        <strong class="uidshort">TargetPositionController</strong>
+</pre>
+
+<hr />
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.PyroApps.MouseTargetServer.TargetPositionController-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      Create instance of Controller.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.MouseTargetServer-pysrc.html#TargetPositionController.__init__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.PyroApps.MouseTargetServer.TargetPositionController-class.html#during_go_eval" class="summary-sig-name">during_go_eval</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">t</span>=<span class="summary-sig-default">None</span>)</span><br />
+      Called by Presentation.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.MouseTargetServer-pysrc.html#TargetPositionController.during_go_eval">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.FlowControl.Controller-class.html">FlowControl.Controller</a></code></b>:
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#between_go_eval">between_go_eval</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#evaluate_now">evaluate_now</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#returns_type">returns_type</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#set_eval_frequency">set_eval_frequency</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__delattr__</code>,
+      <code>__getattribute__</code>,
+      <code>__hash__</code>,
+      <code>__new__</code>,
+      <code>__reduce__</code>,
+      <code>__reduce_ex__</code>,
+      <code>__repr__</code>,
+      <code>__setattr__</code>,
+      <code>__str__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Class Variables</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.FlowControl.Controller-class.html">FlowControl.Controller</a></code></b>:
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#EVERY_FRAME">EVERY_FRAME</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#FRAMES_ABSOLUTE">FRAMES_ABSOLUTE</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#FRAMES_SINCE_GO">FRAMES_SINCE_GO</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#NEVER">NEVER</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#NOT_BETWEEN_GO">NOT_BETWEEN_GO</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#NOT_DURING_GO">NOT_DURING_GO</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#ONCE">ONCE</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#TIME_INDEPENDENT">TIME_INDEPENDENT</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#TIME_SEC_ABSOLUTE">TIME_SEC_ABSOLUTE</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#TIME_SEC_SINCE_GO">TIME_SEC_SINCE_GO</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#TRANSITIONS">TRANSITIONS</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#flag_dictionary">flag_dictionary</a></code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Properties</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__class__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Method Details</span></td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>)</span>
+    <br /><em class="fname">(Constructor)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.PyroApps.MouseTargetServer-pysrc.html#TargetPositionController.__init__">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Create instance of Controller.
+
+Arguments:
+
+eval_frequency -- Int, bitwise "or" of flags
+temporal_variables -- Int, bitwise "or" of flags
+return_type -- Set to type() of the parameter under control
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.FlowControl.Controller-class.html#__init__">FlowControl.Controller.__init__</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="during_go_eval"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">during_go_eval</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">t</span>=<span class="sig-default">None</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.PyroApps.MouseTargetServer-pysrc.html#TargetPositionController.during_go_eval">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Called by Presentation. Evaluate during the main 'go' loop.
+
+Override this method in subclasses.
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.FlowControl.Controller-class.html#during_go_eval">FlowControl.Controller.during_go_eval</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:47 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.PyroApps.ScreenPositionGUI-module.html b/doc/reference/html/VisionEgg.PyroApps.ScreenPositionGUI-module.html
new file mode 100644
index 0000000..6b70533
--- /dev/null
+++ b/doc/reference/html/VisionEgg.PyroApps.ScreenPositionGUI-module.html
@@ -0,0 +1,182 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.PyroApps.ScreenPositionGUI</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.PyroApps-module.html">Package PyroApps</a> ::
+        Module ScreenPositionGUI
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.PyroApps.ScreenPositionGUI-module.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== MODULE DESCRIPTION ==================== -->
+<h1 class="epydoc">Module ScreenPositionGUI</h1><span class="codelink"><a href="VisionEgg.PyroApps.ScreenPositionGUI-pysrc.html">source code</a></span><br /><br />
+<pre class="literalblock">
+Handle 3D perspective projection (client-side)
+
+</pre><br /><br />
+
+<hr />
+<div class="fields">      <p><strong>Author:</strong>
+        Andrew Straw <astraw at users.sourceforge.net>
+      </p>
+</div><!-- ==================== CLASSES ==================== -->
+<a name="section-Classes"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Classes</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionParameters-class.html" class="summary-name">ScreenPositionParameters</a>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.PyroApps.ScreenPositionGUI.CallbackEntry-class.html" class="summary-name">CallbackEntry</a>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html" class="summary-name">ScreenPositionControlFrame</a>
+    </td>
+  </tr>
+</table>
+<!-- ==================== VARIABLES ==================== -->
+<a name="section-Variables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Variables</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="__version__"></a><span class="summary-name">__version__</span> = <code title="VisionEgg.release_name">VisionEgg.release_name</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="__cvs__"></a><span class="summary-name">__cvs__</span> = <code title="string.split('$Revision$') [1]">string.split('$Revision$') [1]</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="__date__"></a><span class="summary-name">__date__</span> = <code title="string.join(string.split('$Date$') [1: 3], ' ')">string.join(string.split('$Date$') [1: 3], ' ')</code>
+    </td>
+  </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.PyroApps.ScreenPositionGUI-pysrc.html b/doc/reference/html/VisionEgg.PyroApps.ScreenPositionGUI-pysrc.html
new file mode 100644
index 0000000..6d7ebcd
--- /dev/null
+++ b/doc/reference/html/VisionEgg.PyroApps.ScreenPositionGUI-pysrc.html
@@ -0,0 +1,1368 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.PyroApps.ScreenPositionGUI</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.PyroApps-module.html">Package PyroApps</a> ::
+        Module ScreenPositionGUI
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.PyroApps.ScreenPositionGUI-pysrc.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<h1 class="epydoc">Source Code for <a href="VisionEgg.PyroApps.ScreenPositionGUI-module.html">Module VisionEgg.PyroApps.ScreenPositionGUI</a></h1>
+<pre class="py-src">
+<a name="L1"></a><tt class="py-lineno">  1</tt>  <tt class="py-line"><tt class="py-comment">#!/usr/bin/env python</tt> </tt>
+<a name="L2"></a><tt class="py-lineno">  2</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L3"></a><tt class="py-lineno">  3</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># The Vision Egg: ScreenPositionGUI</tt> </tt>
+<a name="L4"></a><tt class="py-lineno">  4</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L5"></a><tt class="py-lineno">  5</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Copyright (C) 2001-2003 Andrew Straw.</tt> </tt>
+<a name="L6"></a><tt class="py-lineno">  6</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Author: Andrew Straw <astraw at users.sourceforge.net></tt> </tt>
+<a name="L7"></a><tt class="py-lineno">  7</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># URL: <http://www.visionegg.org/></tt> </tt>
+<a name="L8"></a><tt class="py-lineno">  8</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L9"></a><tt class="py-lineno">  9</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Distributed under the terms of the GNU Lesser General Public License</tt> </tt>
+<a name="L10"></a><tt class="py-lineno"> 10</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># (LGPL). See LICENSE.TXT that came with this file.</tt> </tt>
+<a name="L11"></a><tt class="py-lineno"> 11</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L12"></a><tt class="py-lineno"> 12</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># $Id$</tt> </tt>
+<a name="L13"></a><tt class="py-lineno"> 13</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L14"></a><tt class="py-lineno"> 14</tt>  <tt class="py-line"><tt class="py-docstring">"""Handle 3D perspective projection (client-side)"""</tt> </tt>
+<a name="L15"></a><tt class="py-lineno"> 15</tt>  <tt class="py-line"> </tt>
+<a name="L16"></a><tt class="py-lineno"> 16</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">sys</tt><tt class="py-op">,</tt> <tt class="py-name">os</tt><tt class="py-op">,</tt> <tt class="py-name">pickle</tt><tt class="py-op">,</tt> <tt class="py-name">math</tt><tt class="py-op">,</tt> <tt class="py-name">string</tt> </tt>
+<a name="L17"></a><tt class="py-lineno"> 17</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-0" class="py-name" targets="Variable VisionEgg.GUI.Tkinter=VisionEgg.GUI-module.html#Tkinter"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-0', 'Tkinter', 'link-0');">Tkinter</a></tt><tt class="py-op">,</tt> <tt id="link-1" class="py-name" targets="Variable VisionEgg.GUI.tkFileDialog=VisionEgg.GUI-module.html#tkFileDialog"><a titl [...]
+<a name="L18"></a><tt class="py-lineno"> 18</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">Pyro</tt><tt class="py-op">.</tt><tt class="py-name">core</tt> </tt>
+<a name="L19"></a><tt class="py-lineno"> 19</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-2" class="py-name" targets="Package VisionEgg=VisionEgg-module.html"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-2', 'VisionEgg', 'link-2');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-3" class="py-name" targets="Module VisionEgg.PyroClient=VisionEgg.PyroClient-module.html,Class VisionEgg.PyroClient.PyroClient=VisionEgg.PyroClie [...]
+VisionEgg.PyroClient.PyroClient" class="py-name" href="#" onclick="return doclink('link-3', 'PyroClient', 'link-3');">PyroClient</a></tt> </tt>
+<a name="L20"></a><tt class="py-lineno"> 20</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">StringIO</tt> </tt>
+<a name="L21"></a><tt class="py-lineno"> 21</tt>  <tt class="py-line"> </tt>
+<a name="L22"></a><tt class="py-lineno"> 22</tt>  <tt class="py-line"><tt id="link-4" class="py-name" targets="Variable VisionEgg.DaqKeyboard.__version__=VisionEgg.DaqKeyboard-module.html#__version__,Variable VisionEgg.DaqLPT.__version__=VisionEgg.DaqLPT-module.html#__version__,Variable VisionEgg.GL.__version__=VisionEgg.GL-module.html#__version__,Variable VisionEgg.PyroApps.EPhysGUI.__version__=VisionEgg.PyroApps.EPhysGUI-module.html#__version__,Variable VisionEgg.PyroApps.EPhysGUIUtils [...]
+VisionEgg.DaqLPT.__version__
+VisionEgg.GL.__version__
+VisionEgg.PyroApps.EPhysGUI.__version__
+VisionEgg.PyroApps.EPhysGUIUtils.__version__
+VisionEgg.PyroApps.EPhysServer.__version__
+VisionEgg.PyroApps.GridGUI.__version__
+VisionEgg.PyroApps.GridServer.__version__
+VisionEgg.PyroApps.ScreenPositionGUI.__version__
+VisionEgg.PyroApps.ScreenPositionServer.__version__
+VisionEgg.PyroApps.SpinningDrumGUI.__version__
+VisionEgg.PyroApps.SpinningDrumServer.__version__
+VisionEgg.PyroHelpers.__version__
+VisionEgg.QuickTime.__version__
+VisionEgg.ResponseControl.__version__
+VisionEgg.SphereMap.__version__
+VisionEgg.TCPController.__version__" class="py-name" href="#" onclick="return doclink('link-4', '__version__', 'link-4');">__version__</a></tt> <tt class="py-op">=</tt> <tt id="link-5" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-5', 'VisionEgg', 'link-2');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-6" class="py-name" targets="Variable VisionEgg.release_name=VisionEgg-module.html#release_name"><a title="VisionEgg.release_name" c [...]
+<a name="L23"></a><tt class="py-lineno"> 23</tt>  <tt class="py-line"><tt id="link-7" class="py-name" targets="Variable VisionEgg.PyroApps.ColorCalGUI.__cvs__=VisionEgg.PyroApps.ColorCalGUI-module.html#__cvs__,Variable VisionEgg.PyroApps.ColorCalServer.__cvs__=VisionEgg.PyroApps.ColorCalServer-module.html#__cvs__,Variable VisionEgg.PyroApps.EPhysGUI.__cvs__=VisionEgg.PyroApps.EPhysGUI-module.html#__cvs__,Variable VisionEgg.PyroApps.EPhysGUIUtils.__cvs__=VisionEgg.PyroApps.EPhysGUIUtils-m [...]
+VisionEgg.PyroApps.ColorCalServer.__cvs__
+VisionEgg.PyroApps.EPhysGUI.__cvs__
+VisionEgg.PyroApps.EPhysGUIUtils.__cvs__
+VisionEgg.PyroApps.EPhysServer.__cvs__
+VisionEgg.PyroApps.FlatGratingGUI.__cvs__
+VisionEgg.PyroApps.FlatGratingServer.__cvs__
+VisionEgg.PyroApps.GridGUI.__cvs__
+VisionEgg.PyroApps.GridServer.__cvs__
+VisionEgg.PyroApps.MouseTargetGUI.__cvs__
+VisionEgg.PyroApps.MouseTargetServer.__cvs__
+VisionEgg.PyroApps.ScreenPositionGUI.__cvs__
+VisionEgg.PyroApps.ScreenPositionServer.__cvs__
+VisionEgg.PyroApps.SphereGratingGUI.__cvs__
+VisionEgg.PyroApps.SphereGratingServer.__cvs__
+VisionEgg.PyroApps.SpinningDrumGUI.__cvs__
+VisionEgg.PyroApps.SpinningDrumServer.__cvs__
+VisionEgg.PyroApps.TargetGUI.__cvs__
+VisionEgg.PyroApps.TargetServer.__cvs__
+VisionEgg.PyroClient.__cvs__
+VisionEgg.PyroHelpers.__cvs__
+VisionEgg.TCPController.__cvs__" class="py-name" href="#" onclick="return doclink('link-7', '__cvs__', 'link-7');">__cvs__</a></tt> <tt class="py-op">=</tt> <tt class="py-name">string</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'$Revision$'</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
+<a name="L24"></a><tt class="py-lineno"> 24</tt>  <tt class="py-line"><tt id="link-8" class="py-name" targets="Variable VisionEgg.PyroApps.ColorCalGUI.__date__=VisionEgg.PyroApps.ColorCalGUI-module.html#__date__,Variable VisionEgg.PyroApps.ColorCalServer.__date__=VisionEgg.PyroApps.ColorCalServer-module.html#__date__,Variable VisionEgg.PyroApps.EPhysGUI.__date__=VisionEgg.PyroApps.EPhysGUI-module.html#__date__,Variable VisionEgg.PyroApps.EPhysGUIUtils.__date__=VisionEgg.PyroApps.EPhysGUI [...]
+VisionEgg.PyroApps.ColorCalServer.__date__
+VisionEgg.PyroApps.EPhysGUI.__date__
+VisionEgg.PyroApps.EPhysGUIUtils.__date__
+VisionEgg.PyroApps.EPhysServer.__date__
+VisionEgg.PyroApps.FlatGratingGUI.__date__
+VisionEgg.PyroApps.FlatGratingServer.__date__
+VisionEgg.PyroApps.GridGUI.__date__
+VisionEgg.PyroApps.GridServer.__date__
+VisionEgg.PyroApps.MouseTargetGUI.__date__
+VisionEgg.PyroApps.MouseTargetServer.__date__
+VisionEgg.PyroApps.ScreenPositionGUI.__date__
+VisionEgg.PyroApps.ScreenPositionServer.__date__
+VisionEgg.PyroApps.SphereGratingGUI.__date__
+VisionEgg.PyroApps.SphereGratingServer.__date__
+VisionEgg.PyroApps.SpinningDrumGUI.__date__
+VisionEgg.PyroApps.SpinningDrumServer.__date__
+VisionEgg.PyroApps.TargetGUI.__date__
+VisionEgg.PyroApps.TargetServer.__date__
+VisionEgg.PyroClient.__date__
+VisionEgg.PyroHelpers.__date__
+VisionEgg.TCPController.__date__" class="py-name" href="#" onclick="return doclink('link-8', '__date__', 'link-8');">__date__</a></tt> <tt class="py-op">=</tt> <tt class="py-name">string</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">string</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'$Date$'</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt  [...]
+<a name="L25"></a><tt class="py-lineno"> 25</tt>  <tt class="py-line"><tt id="link-9" class="py-name" targets="Variable VisionEgg.PyroApps.EPhysGUI.__author__=VisionEgg.PyroApps.EPhysGUI-module.html#__author__,Variable VisionEgg.PyroApps.EPhysGUIUtils.__author__=VisionEgg.PyroApps.EPhysGUIUtils-module.html#__author__,Variable VisionEgg.PyroApps.EPhysServer.__author__=VisionEgg.PyroApps.EPhysServer-module.html#__author__,Variable VisionEgg.PyroApps.GridGUI.__author__=VisionEgg.PyroApps.Gr [...]
+VisionEgg.PyroApps.EPhysGUIUtils.__author__
+VisionEgg.PyroApps.EPhysServer.__author__
+VisionEgg.PyroApps.GridGUI.__author__
+VisionEgg.PyroApps.GridServer.__author__
+VisionEgg.PyroApps.SpinningDrumGUI.__author__
+VisionEgg.PyroApps.SpinningDrumServer.__author__" class="py-name" href="#" onclick="return doclink('link-9', '__author__', 'link-9');">__author__</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'Andrew Straw <astraw at users.sourceforge.net>'</tt> </tt>
+<a name="L26"></a><tt class="py-lineno"> 26</tt>  <tt class="py-line"> </tt>
+<a name="ScreenPositionParameters"></a><div id="ScreenPositionParameters-def"><a name="L27"></a><tt class="py-lineno"> 27</tt> <a class="py-toggle" href="#" id="ScreenPositionParameters-toggle" onclick="return toggle('ScreenPositionParameters');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionParameters-class.html">ScreenPositionParameters</a><tt class="py-op">:</tt> </tt>
+</div><div id="ScreenPositionParameters-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="ScreenPositionParameters-expanded"><a name="ScreenPositionParameters.__init__"></a><div id="ScreenPositionParameters.__init__-def"><a name="L28"></a><tt class="py-lineno"> 28</tt> <a class="py-toggle" href="#" id="ScreenPositionParameters.__init__-toggle" onclick="return toggle('ScreenPositionParameters.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> < [...]
+</div><div id="ScreenPositionParameters.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ScreenPositionParameters.__init__-expanded"><a name="L29"></a><tt class="py-lineno"> 29</tt>  <tt class="py-line"> </tt>
+<a name="L30"></a><tt class="py-lineno"> 30</tt>  <tt class="py-line">        <tt class="py-comment"># frustum (initial values - view portion of unit sphere)</tt> </tt>
+<a name="L31"></a><tt class="py-lineno"> 31</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-10" class="py-name" targets="Variable VisionEgg.PyroApps.MouseTargetServer.left=VisionEgg.PyroApps.MouseTargetServer-module.html#left"><a title="VisionEgg.PyroApps.MouseTargetServer.left" class="py-name" href="#" onclick="return doclink('link-10', 'left', 'link-10');">left</a></tt> <tt class="py-op">=</tt> <tt class="p [...]
+<a name="L32"></a><tt class="py-lineno"> 32</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-11" class="py-name" targets="Variable VisionEgg.PyroApps.MouseTargetServer.right=VisionEgg.PyroApps.MouseTargetServer-module.html#right"><a title="VisionEgg.PyroApps.MouseTargetServer.right" class="py-name" href="#" onclick="return doclink('link-11', 'right', 'link-11');">right</a></tt> <tt class="py-op">=</tt> <tt class="py-number">0.2</tt> </tt>
+<a name="L33"></a><tt class="py-lineno"> 33</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">top</tt> <tt class="py-op">=</tt> <tt class="py-number">0.2</tt> </tt>
+<a name="L34"></a><tt class="py-lineno"> 34</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">bottom</tt> <tt class="py-op">=</tt> <tt class="py-op">-</tt><tt class="py-number">0.2</tt> </tt>
+<a name="L35"></a><tt class="py-lineno"> 35</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">near</tt> <tt class="py-op">=</tt> <tt class="py-number">0.2</tt> </tt>
+<a name="L36"></a><tt class="py-lineno"> 36</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">far</tt> <tt class="py-op">=</tt> <tt class="py-number">20.0</tt> </tt>
+<a name="L37"></a><tt class="py-lineno"> 37</tt>  <tt class="py-line">         </tt>
+<a name="L38"></a><tt class="py-lineno"> 38</tt>  <tt class="py-line">        <tt class="py-comment"># position/orientation</tt> </tt>
+<a name="L39"></a><tt class="py-lineno"> 39</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">eye</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-number">0.0</tt><tt class="py-op">,</tt> <tt class="py-number">0.0</tt><tt class="py-op">,</tt> <tt class="py-number">0.0</tt><tt class="py-op">)</tt> <tt class="py-comment"># observer position</tt> </tt>
+<a name="L40"></a><tt class="py-lineno"> 40</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">center</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-number">0.0</tt><tt class="py-op">,</tt> <tt class="py-number">0.0</tt><tt class="py-op">,</tt> <tt class="py-op">-</tt><tt class="py-number">1.0</tt><tt class="py-op">)</tt> <tt class="py-comment"># center of gaze</tt> </tt>
+<a name="L41"></a><tt class="py-lineno"> 41</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-12" class="py-name" targets="Variable VisionEgg.PyroApps.MouseTargetServer.up=VisionEgg.PyroApps.MouseTargetServer-module.html#up"><a title="VisionEgg.PyroApps.MouseTargetServer.up" class="py-name" href="#" onclick="return doclink('link-12', 'up', 'link-12');">up</a></tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-number">0.0< [...]
+</div></div><a name="L42"></a><tt class="py-lineno"> 42</tt>  <tt class="py-line"> </tt>
+<a name="CallbackEntry"></a><div id="CallbackEntry-def"><a name="L43"></a><tt class="py-lineno"> 43</tt> <a class="py-toggle" href="#" id="CallbackEntry-toggle" onclick="return toggle('CallbackEntry');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.PyroApps.ScreenPositionGUI.CallbackEntry-class.html">CallbackEntry</a><tt class="py-op">(</tt><tt class="py-base-class">Tkinter</tt><tt class="py-op">.</tt><tt class="py-base-class">Entry</tt [...]
+</div><div id="CallbackEntry-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="CallbackEntry-expanded"><a name="CallbackEntry.__init__"></a><div id="CallbackEntry.__init__-def"><a name="L44"></a><tt class="py-lineno"> 44</tt> <a class="py-toggle" href="#" id="CallbackEntry.__init__-toggle" onclick="return toggle('CallbackEntry.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.ScreenPositionGUI.C [...]
+</div><div id="CallbackEntry.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="CallbackEntry.__init__-expanded"><a name="L45"></a><tt class="py-lineno"> 45</tt>  <tt class="py-line">        <tt id="link-13" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-13', 'Tkinter', 'link-0');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Entry</tt><tt class="py-op">.</tt><tt id="link-14" class=" [...]
+VisionEgg.Configuration.Config.__init__
+VisionEgg.Core.FixationSpot.__init__
+VisionEgg.Core.FrameTimer.__init__
+VisionEgg.Core.ModelView.__init__
+VisionEgg.Core.OrthographicProjection.__init__
+VisionEgg.Core.OrthographicProjectionNoZClip.__init__
+VisionEgg.Core.PerspectiveProjection.__init__
+VisionEgg.Core.Projection.__init__
+VisionEgg.Core.ProjectionBaseClass.__init__
+VisionEgg.Core.Screen.__init__
+VisionEgg.Core.SimplePerspectiveProjection.__init__
+VisionEgg.Core.Stimulus.__init__
+VisionEgg.Core.Viewport.__init__
+VisionEgg.Daq.Channel.__init__
+VisionEgg.Daq.DaqMode.__init__
+VisionEgg.Daq.Device.__init__
+VisionEgg.Daq.Functionality.__init__
+VisionEgg.Daq.SignalType.__init__
+VisionEgg.DaqKeyboard.KeyboardTriggerInController.__init__
+VisionEgg.DaqLPT.LPTChannel.__init__
+VisionEgg.DaqLPT.LPTDevice.__init__
+VisionEgg.DaqLPT.LPTTriggerInController.__init__
+VisionEgg.DaqLPT.LPTTriggerOutController.__init__
+VisionEgg.Deprecated.Message.__init__
+VisionEgg.Dots.DotArea2D.__init__
+VisionEgg.FlowControl.ConstantController.__init__
+VisionEgg.FlowControl.Controller.__init__
+VisionEgg.FlowControl.EncapsulatedController.__init__
+VisionEgg.FlowControl.EvalStringController.__init__
+VisionEgg.FlowControl.ExecStringController.__init__
+VisionEgg.FlowControl.FunctionController.__init__
+VisionEgg.FlowControl.Presentation.__init__
+VisionEgg.GLTrace.Wrapper.__init__
+VisionEgg.GUI.AppWindow.__init__
+VisionEgg.GUI.GetKeypressDialog.__init__
+VisionEgg.GUI.GraphicsConfigurationWindow.__init__
+VisionEgg.GUI.InfoFrame.__init__
+VisionEgg.GUI.ProgressBar.__init__
+VisionEgg.GUI.ToplevelDialog.__init__
+VisionEgg.Gratings.SinGrating2D.__init__
+VisionEgg.Gratings.SinGrating3D.__init__
+VisionEgg.MoreStimuli.Arrow.__init__
+VisionEgg.MoreStimuli.FilledCircle.__init__
+VisionEgg.MoreStimuli.Rectangle3D.__init__
+VisionEgg.MoreStimuli.Target2D.__init__
+VisionEgg.ParameterTypes.AnyOf.__init__
+VisionEgg.ParameterTypes.Instance.__init__
+VisionEgg.ParameterTypes.Sequence.__init__
+VisionEgg.ParameterTypes.SubClass.__init__
+VisionEgg.PyroApps.AST_ext.AST_Visitor.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalMetaParameters.__init__
+VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.__init__
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.__init__
+VisionEgg.PyroApps.DropinGUI.DropinMetaParameters.__init__
+VisionEgg.PyroApps.DropinServer.DropinMetaController.__init__
+VisionEgg.PyroApps.EPhysGUI.AppWindow.__init__
+VisionEgg.PyroApps.EPhysGUI.BarButton.__init__
+VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase.__init__
+VisionEgg.PyroApps.EPhysGUI.GammaFrame.__init__
+VisionEgg.PyroApps.EPhysGUI.ImageSequenceLauncher.__init__
+VisionEgg.PyroApps.EPhysGUI.Loop.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopContainedObject.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopParamDialog.__init__
+VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.__init__
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.__init__
+VisionEgg.PyroApps.EPhysServer.EPhysServer.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingMetaParameters.__init__
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.GridGUI.GridControlFrame.__init__
+VisionEgg.PyroApps.GridGUI.GridMetaParameters.__init__
+VisionEgg.PyroApps.GridServer.GridMetaController.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetMetaParameters.__init__
+VisionEgg.PyroApps.MouseTargetServer.MousePositionController.__init__
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetOrientationController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetPositionController.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.CallbackEntry.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionParameters.__init__
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingMetaParameters.__init__
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumMetaParameters.__init__
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.__init__
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.__init__
+VisionEgg.PyroApps.TargetGUI.TargetMetaParameters.__init__
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.__init__
+VisionEgg.PyroClient.PyroClient.__init__
+VisionEgg.PyroHelpers.PyroConstantController.__init__
+VisionEgg.PyroHelpers.PyroEncapsulatedController.__init__
+VisionEgg.PyroHelpers.PyroEvalStringController.__init__
+VisionEgg.PyroHelpers.PyroExecStringController.__init__
+VisionEgg.PyroHelpers.PyroListenController.__init__
+VisionEgg.PyroHelpers.PyroLocalDictController.__init__
+VisionEgg.PyroHelpers.PyroServer.__init__
+VisionEgg.QuickTime.MovieTexture.__init__
+VisionEgg.ResponseControl.KeyboardResponseController.__init__
+VisionEgg.ResponseControl.ResponseController.__init__
+VisionEgg.SphereMap.AzElGrid.__init__
+VisionEgg.SphereMap.SphereGrating.__init__
+VisionEgg.SphereMap.SphereMap.__init__
+VisionEgg.SphereMap.SphereWindow.__init__
+VisionEgg.TCPController.SocketListenController.__init__
+VisionEgg.TCPController.TCPController.__init__
+VisionEgg.TCPController.TCPServer.__init__
+VisionEgg.Text.BitmapText.__init__
+VisionEgg.Text.GlutTextBase.__init__
+VisionEgg.Text.StrokeText.__init__
+VisionEgg.Text.Text.__init__
+VisionEgg.Textures.FixationCross.__init__
+VisionEgg.Textures.Mask2D.__init__
+VisionEgg.Textures.SpinningDrum.__init__
+VisionEgg.Textures.Texture.__init__
+VisionEgg.Textures.TextureFromFile.__init__
+VisionEgg.Textures.TextureObject.__init__
+VisionEgg.Textures.TextureStimulusBaseClass.__init__
+VisionEgg.ThreeDeeMath.TransformMatrix.__init__
+VisionEgg.WrappedText.WrappedText.__init__
+VisionEgg.qtmovie.Movie.__init__
+VisionEgg.qtmovie.Rect.__init__" class="py-name" href="#" onclick="return doclink('link-14', '__init__', 'link-14');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt><tt class="py-name">master</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-name">kw</tt><tt class="py-op">)</tt> </tt>
+<a name="L46"></a><tt class="py-lineno"> 46</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">bind</tt><tt class="py-op">(</tt><tt class="py-string">'<Return>'</tt><tt class="py-op">,</tt><tt class="py-name">callback</tt><tt class="py-op">)</tt> </tt>
+<a name="L47"></a><tt class="py-lineno"> 47</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">bind</tt><tt class="py-op">(</tt><tt class="py-string">'<Tab>'</tt><tt class="py-op">,</tt><tt class="py-name">callback</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L48"></a><tt class="py-lineno"> 48</tt>  <tt class="py-line"> </tt>
+<a name="ScreenPositionControlFrame"></a><div id="ScreenPositionControlFrame-def"><a name="L49"></a><tt class="py-lineno"> 49</tt> <a class="py-toggle" href="#" id="ScreenPositionControlFrame-toggle" onclick="return toggle('ScreenPositionControlFrame');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html">ScreenPositionControlFrame</a><tt class="py-op">(</tt><tt class="py-base- [...]
+</div><div id="ScreenPositionControlFrame-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="ScreenPositionControlFrame-expanded"><a name="ScreenPositionControlFrame.__init__"></a><div id="ScreenPositionControlFrame.__init__-def"><a name="L50"></a><tt class="py-lineno"> 50</tt> <a class="py-toggle" href="#" id="ScreenPositionControlFrame.__init__-toggle" onclick="return toggle('ScreenPositionControlFrame.__init__');">-</a><tt class="py-line">    <tt class="py-keyword [...]
+</div><div id="ScreenPositionControlFrame.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ScreenPositionControlFrame.__init__-expanded"><a name="L51"></a><tt class="py-lineno"> 51</tt>  <tt class="py-line">        <tt id="link-15" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-15', 'Tkinter', 'link-0');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Frame</tt><tt class="py-op">.</t [...]
+VisionEgg.Configuration.Config.__init__
+VisionEgg.Core.FixationSpot.__init__
+VisionEgg.Core.FrameTimer.__init__
+VisionEgg.Core.ModelView.__init__
+VisionEgg.Core.OrthographicProjection.__init__
+VisionEgg.Core.OrthographicProjectionNoZClip.__init__
+VisionEgg.Core.PerspectiveProjection.__init__
+VisionEgg.Core.Projection.__init__
+VisionEgg.Core.ProjectionBaseClass.__init__
+VisionEgg.Core.Screen.__init__
+VisionEgg.Core.SimplePerspectiveProjection.__init__
+VisionEgg.Core.Stimulus.__init__
+VisionEgg.Core.Viewport.__init__
+VisionEgg.Daq.Channel.__init__
+VisionEgg.Daq.DaqMode.__init__
+VisionEgg.Daq.Device.__init__
+VisionEgg.Daq.Functionality.__init__
+VisionEgg.Daq.SignalType.__init__
+VisionEgg.DaqKeyboard.KeyboardTriggerInController.__init__
+VisionEgg.DaqLPT.LPTChannel.__init__
+VisionEgg.DaqLPT.LPTDevice.__init__
+VisionEgg.DaqLPT.LPTTriggerInController.__init__
+VisionEgg.DaqLPT.LPTTriggerOutController.__init__
+VisionEgg.Deprecated.Message.__init__
+VisionEgg.Dots.DotArea2D.__init__
+VisionEgg.FlowControl.ConstantController.__init__
+VisionEgg.FlowControl.Controller.__init__
+VisionEgg.FlowControl.EncapsulatedController.__init__
+VisionEgg.FlowControl.EvalStringController.__init__
+VisionEgg.FlowControl.ExecStringController.__init__
+VisionEgg.FlowControl.FunctionController.__init__
+VisionEgg.FlowControl.Presentation.__init__
+VisionEgg.GLTrace.Wrapper.__init__
+VisionEgg.GUI.AppWindow.__init__
+VisionEgg.GUI.GetKeypressDialog.__init__
+VisionEgg.GUI.GraphicsConfigurationWindow.__init__
+VisionEgg.GUI.InfoFrame.__init__
+VisionEgg.GUI.ProgressBar.__init__
+VisionEgg.GUI.ToplevelDialog.__init__
+VisionEgg.Gratings.SinGrating2D.__init__
+VisionEgg.Gratings.SinGrating3D.__init__
+VisionEgg.MoreStimuli.Arrow.__init__
+VisionEgg.MoreStimuli.FilledCircle.__init__
+VisionEgg.MoreStimuli.Rectangle3D.__init__
+VisionEgg.MoreStimuli.Target2D.__init__
+VisionEgg.ParameterTypes.AnyOf.__init__
+VisionEgg.ParameterTypes.Instance.__init__
+VisionEgg.ParameterTypes.Sequence.__init__
+VisionEgg.ParameterTypes.SubClass.__init__
+VisionEgg.PyroApps.AST_ext.AST_Visitor.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalMetaParameters.__init__
+VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.__init__
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.__init__
+VisionEgg.PyroApps.DropinGUI.DropinMetaParameters.__init__
+VisionEgg.PyroApps.DropinServer.DropinMetaController.__init__
+VisionEgg.PyroApps.EPhysGUI.AppWindow.__init__
+VisionEgg.PyroApps.EPhysGUI.BarButton.__init__
+VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase.__init__
+VisionEgg.PyroApps.EPhysGUI.GammaFrame.__init__
+VisionEgg.PyroApps.EPhysGUI.ImageSequenceLauncher.__init__
+VisionEgg.PyroApps.EPhysGUI.Loop.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopContainedObject.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopParamDialog.__init__
+VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.__init__
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.__init__
+VisionEgg.PyroApps.EPhysServer.EPhysServer.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingMetaParameters.__init__
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.GridGUI.GridControlFrame.__init__
+VisionEgg.PyroApps.GridGUI.GridMetaParameters.__init__
+VisionEgg.PyroApps.GridServer.GridMetaController.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetMetaParameters.__init__
+VisionEgg.PyroApps.MouseTargetServer.MousePositionController.__init__
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetOrientationController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetPositionController.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.CallbackEntry.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionParameters.__init__
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingMetaParameters.__init__
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumMetaParameters.__init__
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.__init__
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.__init__
+VisionEgg.PyroApps.TargetGUI.TargetMetaParameters.__init__
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.__init__
+VisionEgg.PyroClient.PyroClient.__init__
+VisionEgg.PyroHelpers.PyroConstantController.__init__
+VisionEgg.PyroHelpers.PyroEncapsulatedController.__init__
+VisionEgg.PyroHelpers.PyroEvalStringController.__init__
+VisionEgg.PyroHelpers.PyroExecStringController.__init__
+VisionEgg.PyroHelpers.PyroListenController.__init__
+VisionEgg.PyroHelpers.PyroLocalDictController.__init__
+VisionEgg.PyroHelpers.PyroServer.__init__
+VisionEgg.QuickTime.MovieTexture.__init__
+VisionEgg.ResponseControl.KeyboardResponseController.__init__
+VisionEgg.ResponseControl.ResponseController.__init__
+VisionEgg.SphereMap.AzElGrid.__init__
+VisionEgg.SphereMap.SphereGrating.__init__
+VisionEgg.SphereMap.SphereMap.__init__
+VisionEgg.SphereMap.SphereWindow.__init__
+VisionEgg.TCPController.SocketListenController.__init__
+VisionEgg.TCPController.TCPController.__init__
+VisionEgg.TCPController.TCPServer.__init__
+VisionEgg.Text.BitmapText.__init__
+VisionEgg.Text.GlutTextBase.__init__
+VisionEgg.Text.StrokeText.__init__
+VisionEgg.Text.Text.__init__
+VisionEgg.Textures.FixationCross.__init__
+VisionEgg.Textures.Mask2D.__init__
+VisionEgg.Textures.SpinningDrum.__init__
+VisionEgg.Textures.Texture.__init__
+VisionEgg.Textures.TextureFromFile.__init__
+VisionEgg.Textures.TextureObject.__init__
+VisionEgg.Textures.TextureStimulusBaseClass.__init__
+VisionEgg.ThreeDeeMath.TransformMatrix.__init__
+VisionEgg.WrappedText.WrappedText.__init__
+VisionEgg.qtmovie.Movie.__init__
+VisionEgg.qtmovie.Rect.__init__" class="py-name" href="#" onclick="return doclink('link-16', '__init__', 'link-14');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt><tt class="py-name">master</tt><tt class="py-op">,</tt><tt class="py-op">**</tt><tt class="py-name">kw</tt><tt class="py-op">)</tt> </tt>
+<a name="L52"></a><tt class="py-lineno"> 52</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">pyro_client</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L53"></a><tt class="py-lineno"> 53</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">entry_width</tt> <tt class="py-op">=</tt> <tt class="py-number">10</tt> </tt>
+<a name="L54"></a><tt class="py-lineno"> 54</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">connected</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L55"></a><tt class="py-lineno"> 55</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt> <tt class="py-op">=</tt> <tt id="link-17" class="py-name" targets="Class VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionParameters=VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionParameters-class.html"><a title="VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionParameters" class="py-name" href="#" onclick="return d [...]
+<a name="L56"></a><tt class="py-lineno"> 56</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">loopable_variables</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L57"></a><tt class="py-lineno"> 57</tt>  <tt class="py-line"> </tt>
+<a name="L58"></a><tt class="py-lineno"> 58</tt>  <tt class="py-line">        <tt class="py-name">row</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L59"></a><tt class="py-lineno"> 59</tt>  <tt class="py-line">        <tt id="link-18" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-18', 'Tkinter', 'link-0');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> </tt>
+<a name="L60"></a><tt class="py-lineno"> 60</tt>  <tt class="py-line">                      <tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"3D Perspective Calibration"</tt><tt class="py-op">,</tt> </tt>
+<a name="L61"></a><tt class="py-lineno"> 61</tt>  <tt class="py-line">                      <tt class="py-name">font</tt><tt class="py-op">=</tt><tt class="py-op">(</tt><tt class="py-string">"Helvetica"</tt><tt class="py-op">,</tt><tt class="py-number">12</tt><tt class="py-op">,</tt><tt class="py-string">"bold"</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</t [...]
+<a name="L62"></a><tt class="py-lineno"> 62</tt>  <tt class="py-line"> </tt>
+<a name="L63"></a><tt class="py-lineno"> 63</tt>  <tt class="py-line">        <tt class="py-name">row</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L64"></a><tt class="py-lineno"> 64</tt>  <tt class="py-line">        <tt id="link-19" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-19', 'Tkinter', 'link-0');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> </tt>
+<a name="L65"></a><tt class="py-lineno"> 65</tt>  <tt class="py-line">                      <tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"This dialog allows you to enter acheive "</tt><tt class="py-op">+</tt>\ </tt>
+<a name="L66"></a><tt class="py-lineno"> 66</tt>  <tt class="py-line">                      <tt class="py-string">"the proper perspective distortion for 3D scenes."</tt> </tt>
+<a name="L67"></a><tt class="py-lineno"> 67</tt>  <tt class="py-line">                      <tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-name">row</tt><tt class="py-op">,</tt><tt class="py-name">column</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">,</tt><tt class="py-name">columnspan</tt><tt class="py-op">=</tt><tt class="py-number">2</tt>< [...]
+<a name="L68"></a><tt class="py-lineno"> 68</tt>  <tt class="py-line"> </tt>
+<a name="L69"></a><tt class="py-lineno"> 69</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">auto_connect</tt><tt class="py-op">:</tt> </tt>
+<a name="L70"></a><tt class="py-lineno"> 70</tt>  <tt class="py-line">            <tt class="py-name">row</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L71"></a><tt class="py-lineno"> 71</tt>  <tt class="py-line">            <tt class="py-comment"># let columns expand</tt> </tt>
+<a name="L72"></a><tt class="py-lineno"> 72</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">connected_frame</tt> <tt class="py-op">=</tt> <tt id="link-20" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-20', 'Tkinter', 'link-0');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Frame</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
+<a name="L73"></a><tt class="py-lineno"> 73</tt>  <tt class="py-line">            <tt class="py-name">connected_frame</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-name">row</tt><tt class="py-op">,</tt><tt class="py-name">column</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">,</tt><tt class="py-name">columnspan</tt><tt class="py-op">=</tt><tt class="py-number">2 [...]
+<a name="L74"></a><tt class="py-lineno"> 74</tt>  <tt class="py-line">            <tt class="py-name">connected_frame</tt><tt class="py-op">.</tt><tt class="py-name">columnconfigure</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">,</tt><tt class="py-name">weight</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="L75"></a><tt class="py-lineno"> 75</tt>  <tt class="py-line">            <tt class="py-name">connected_frame</tt><tt class="py-op">.</tt><tt class="py-name">columnconfigure</tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">,</tt><tt class="py-name">weight</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="L76"></a><tt class="py-lineno"> 76</tt>  <tt class="py-line">            <tt class="py-name">connected_frame</tt><tt class="py-op">.</tt><tt class="py-name">columnconfigure</tt><tt class="py-op">(</tt><tt class="py-number">2</tt><tt class="py-op">,</tt><tt class="py-name">weight</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="L77"></a><tt class="py-lineno"> 77</tt>  <tt class="py-line"> </tt>
+<a name="L78"></a><tt class="py-lineno"> 78</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">connected_label</tt> <tt class="py-op">=</tt> <tt id="link-23" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-23', 'Tkinter', 'link-0');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">connected_frame</tt><tt clas [...]
+<a name="L79"></a><tt class="py-lineno"> 79</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">connected_label</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">,</tt><tt class="py-name">column</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">)</tt> </tt>
+<a name="L80"></a><tt class="py-lineno"> 80</tt>  <tt class="py-line">            <tt id="link-24" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-24', 'Tkinter', 'link-0');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Button</tt><tt class="py-op">(</tt><tt class="py-name">connected_frame</tt><tt class="py-op">,</tt><tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Connect"</tt><tt class="py [...]
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.connect
+VisionEgg.PyroHelpers.PyroServer.connect" class="py-name" href="#" onclick="return doclink('link-25', 'connect', 'link-25');">connect</a></tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">,</tt><tt class="py-name">column</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="L81"></a><tt class="py-lineno"> 81</tt>  <tt class="py-line">            <tt id="link-26" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-26', 'Tkinter', 'link-0');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Button</tt><tt class="py-op">(</tt><tt class="py-name">connected_frame</tt><tt class="py-op">,</tt><tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Quit server"</tt><tt class [...]
+VisionEgg.PyroApps.DropinServer.DropinMetaController.quit_server
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.quit_server
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.quit_server
+VisionEgg.PyroApps.GridServer.GridMetaController.quit_server
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.quit_server
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.quit_server
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.quit_server
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.quit_server
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.quit_server
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.quit_server" class="py-name" href="#" onclick="return doclink('link-27', 'quit_server', 'link-27');">quit_server</a></tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">,</tt><tt class="py-name">column</tt><tt class="py-op">=</tt><tt class="py-number">2</tt><tt class="py-op">)< [...]
+<a name="L82"></a><tt class="py-lineno"> 82</tt>  <tt class="py-line"> </tt>
+<a name="L83"></a><tt class="py-lineno"> 83</tt>  <tt class="py-line">        <tt class="py-name">row</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L84"></a><tt class="py-lineno"> 84</tt>  <tt class="py-line">        <tt class="py-name">param_frame</tt> <tt class="py-op">=</tt> <tt id="link-28" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-28', 'Tkinter', 'link-0');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Frame</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
+<a name="L85"></a><tt class="py-lineno"> 85</tt>  <tt class="py-line">        <tt class="py-name">param_frame</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-name">row</tt><tt class="py-op">,</tt><tt class="py-name">column</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">,</tt><tt class="py-name">sticky</tt><tt class="py-op">=</tt><tt id="link-29" class="py-name"><a [...]
+<a name="L86"></a><tt class="py-lineno"> 86</tt>  <tt class="py-line">        <tt class="py-name">param_frame</tt><tt class="py-op">.</tt><tt class="py-name">columnconfigure</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">,</tt><tt class="py-name">weight</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="L87"></a><tt class="py-lineno"> 87</tt>  <tt class="py-line">        <tt class="py-name">param_frame</tt><tt class="py-op">.</tt><tt class="py-name">columnconfigure</tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">,</tt><tt class="py-name">weight</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="L88"></a><tt class="py-lineno"> 88</tt>  <tt class="py-line"> </tt>
+<a name="L89"></a><tt class="py-lineno"> 89</tt>  <tt class="py-line">        <tt class="py-name">pf_row</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L90"></a><tt class="py-lineno"> 90</tt>  <tt class="py-line">        <tt class="py-name">frustum_frame</tt> <tt class="py-op">=</tt> <tt id="link-30" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-30', 'Tkinter', 'link-0');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Frame</tt><tt class="py-op">(</tt><tt class="py-name">param_frame</tt><tt class="py-op">)</tt> </tt>
+<a name="L91"></a><tt class="py-lineno"> 91</tt>  <tt class="py-line">        <tt class="py-name">frustum_frame</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-name">pf_row</tt><tt class="py-op">,</tt><tt class="py-name">column</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">,</tt><tt class="py-name">columnspan</tt><tt class="py-op">=</tt><tt class="py-number">2</t [...]
+<a name="L92"></a><tt class="py-lineno"> 92</tt>  <tt class="py-line">         </tt>
+<a name="L93"></a><tt class="py-lineno"> 93</tt>  <tt class="py-line">        <tt class="py-name">ff_row</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L94"></a><tt class="py-lineno"> 94</tt>  <tt class="py-line">        <tt id="link-31" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-31', 'Tkinter', 'link-0');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">frustum_frame</tt><tt class="py-op">,</tt> </tt>
+<a name="L95"></a><tt class="py-lineno"> 95</tt>  <tt class="py-line">                      <tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Viewing volume size"</tt><tt class="py-op">,</tt> </tt>
+<a name="L96"></a><tt class="py-lineno"> 96</tt>  <tt class="py-line">                      <tt class="py-name">font</tt><tt class="py-op">=</tt><tt class="py-op">(</tt><tt class="py-string">"Helvetica"</tt><tt class="py-op">,</tt><tt class="py-number">12</tt><tt class="py-op">,</tt><tt class="py-string">"bold"</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</t [...]
+<a name="L97"></a><tt class="py-lineno"> 97</tt>  <tt class="py-line"> </tt>
+<a name="L98"></a><tt class="py-lineno"> 98</tt>  <tt class="py-line">        <tt class="py-name">ff_row</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L99"></a><tt class="py-lineno"> 99</tt>  <tt class="py-line">        <tt id="link-32" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-32', 'Tkinter', 'link-0');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">frustum_frame</tt><tt class="py-op">,</tt><tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Left:"</tt><tt class="py-op">)</t [...]
+<a name="L100"></a><tt class="py-lineno">100</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">left_tk_var</tt> <tt class="py-op">=</tt> <tt id="link-33" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-33', 'Tkinter', 'link-0');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">DoubleVar</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L101"></a><tt class="py-lineno">101</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">left_tk_var</tt><tt class="py-op">.</tt><tt id="link-34" class="py-name" targets="Method VisionEgg.ClassWithParameters.set()=VisionEgg.ClassWithParameters-class.html#set"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-34', 'set', 'link-34');">set</a></tt><tt class="py-op">(</tt><tt clas [...]
+<a name="L102"></a><tt class="py-lineno">102</tt>  <tt class="py-line">        <tt id="link-36" class="py-name" targets="Class VisionEgg.PyroApps.ScreenPositionGUI.CallbackEntry=VisionEgg.PyroApps.ScreenPositionGUI.CallbackEntry-class.html"><a title="VisionEgg.PyroApps.ScreenPositionGUI.CallbackEntry" class="py-name" href="#" onclick="return doclink('link-36', 'CallbackEntry', 'link-36');">CallbackEntry</a></tt><tt class="py-op">(</tt><tt class="py-name">frustum_frame</tt><tt class="py-o [...]
+<a name="L103"></a><tt class="py-lineno">103</tt>  <tt class="py-line">                      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-37" class="py-name" targets="Method VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.send_values()=VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame-class.html#send_values,Method VisionEgg.PyroApps.DropinGUI.DropinControlFrame.send_values()=VisionEgg.PyroApps.DropinGUI.DropinControlFrame-class.html#send_values,Method VisionEgg [...]
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.send_values
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.send_values
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.send_values
+VisionEgg.PyroApps.GridGUI.GridControlFrame.send_values
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.send_values
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.send_values
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.send_values
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.send_values
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.send_values" class="py-name" href="#" onclick="return doclink('link-37', 'send_values', 'link-37');">send_values</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L104"></a><tt class="py-lineno">104</tt>  <tt class="py-line">                      <tt class="py-name">width</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">entry_width</tt><tt class="py-op">,</tt> </tt>
+<a name="L105"></a><tt class="py-lineno">105</tt>  <tt class="py-line">                      <tt class="py-name">textvariable</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">left_tk_var</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-name">ff_row</tt><tt class="py-op">,</tt><tt class="py-name">column</tt><tt class= [...]
+<a name="L106"></a><tt class="py-lineno">106</tt>  <tt class="py-line"> </tt>
+<a name="L107"></a><tt class="py-lineno">107</tt>  <tt class="py-line">        <tt class="py-name">ff_row</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L108"></a><tt class="py-lineno">108</tt>  <tt class="py-line">        <tt id="link-38" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-38', 'Tkinter', 'link-0');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">frustum_frame</tt><tt class="py-op">,</tt><tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Right:"</tt><tt class="py-op">)< [...]
+<a name="L109"></a><tt class="py-lineno">109</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">right_tk_var</tt> <tt class="py-op">=</tt> <tt id="link-39" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-39', 'Tkinter', 'link-0');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">DoubleVar</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L110"></a><tt class="py-lineno">110</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">right_tk_var</tt><tt class="py-op">.</tt><tt id="link-40" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-40', 'set', 'link-34');">set</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op [...]
+<a name="L111"></a><tt class="py-lineno">111</tt>  <tt class="py-line">        <tt id="link-42" class="py-name"><a title="VisionEgg.PyroApps.ScreenPositionGUI.CallbackEntry" class="py-name" href="#" onclick="return doclink('link-42', 'CallbackEntry', 'link-36');">CallbackEntry</a></tt><tt class="py-op">(</tt><tt class="py-name">frustum_frame</tt><tt class="py-op">,</tt> </tt>
+<a name="L112"></a><tt class="py-lineno">112</tt>  <tt class="py-line">                      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-43" class="py-name"><a title="VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.send_values
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.send_values
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.send_values
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.send_values
+VisionEgg.PyroApps.GridGUI.GridControlFrame.send_values
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.send_values
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.send_values
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.send_values
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.send_values
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.send_values" class="py-name" href="#" onclick="return doclink('link-43', 'send_values', 'link-37');">send_values</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L113"></a><tt class="py-lineno">113</tt>  <tt class="py-line">                      <tt class="py-name">width</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">entry_width</tt><tt class="py-op">,</tt> </tt>
+<a name="L114"></a><tt class="py-lineno">114</tt>  <tt class="py-line">                      <tt class="py-name">textvariable</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">right_tk_var</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-name">ff_row</tt><tt class="py-op">,</tt><tt class="py-name">column</tt><tt class [...]
+<a name="L115"></a><tt class="py-lineno">115</tt>  <tt class="py-line"> </tt>
+<a name="L116"></a><tt class="py-lineno">116</tt>  <tt class="py-line">        <tt class="py-name">ff_row</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L117"></a><tt class="py-lineno">117</tt>  <tt class="py-line">        <tt id="link-44" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-44', 'Tkinter', 'link-0');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">frustum_frame</tt><tt class="py-op">,</tt><tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Top:"</tt><tt class="py-op">)</t [...]
+<a name="L118"></a><tt class="py-lineno">118</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">top_tk_var</tt> <tt class="py-op">=</tt> <tt id="link-45" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-45', 'Tkinter', 'link-0');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">DoubleVar</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L119"></a><tt class="py-lineno">119</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">top_tk_var</tt><tt class="py-op">.</tt><tt id="link-46" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-46', 'set', 'link-34');">set</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op"> [...]
+<a name="L120"></a><tt class="py-lineno">120</tt>  <tt class="py-line">        <tt id="link-47" class="py-name"><a title="VisionEgg.PyroApps.ScreenPositionGUI.CallbackEntry" class="py-name" href="#" onclick="return doclink('link-47', 'CallbackEntry', 'link-36');">CallbackEntry</a></tt><tt class="py-op">(</tt><tt class="py-name">frustum_frame</tt><tt class="py-op">,</tt> </tt>
+<a name="L121"></a><tt class="py-lineno">121</tt>  <tt class="py-line">                      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-48" class="py-name"><a title="VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.send_values
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.send_values
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.send_values
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.send_values
+VisionEgg.PyroApps.GridGUI.GridControlFrame.send_values
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.send_values
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.send_values
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.send_values
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.send_values
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.send_values" class="py-name" href="#" onclick="return doclink('link-48', 'send_values', 'link-37');">send_values</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L122"></a><tt class="py-lineno">122</tt>  <tt class="py-line">                      <tt class="py-name">width</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">entry_width</tt><tt class="py-op">,</tt> </tt>
+<a name="L123"></a><tt class="py-lineno">123</tt>  <tt class="py-line">                      <tt class="py-name">textvariable</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">top_tk_var</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-name">ff_row</tt><tt class="py-op">,</tt><tt class="py-name">column</tt><tt class=" [...]
+<a name="L124"></a><tt class="py-lineno">124</tt>  <tt class="py-line">         </tt>
+<a name="L125"></a><tt class="py-lineno">125</tt>  <tt class="py-line">        <tt class="py-name">ff_row</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L126"></a><tt class="py-lineno">126</tt>  <tt class="py-line">        <tt id="link-49" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-49', 'Tkinter', 'link-0');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">frustum_frame</tt><tt class="py-op">,</tt><tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Bottom:"</tt><tt class="py-op">) [...]
+<a name="L127"></a><tt class="py-lineno">127</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">bottom_tk_var</tt> <tt class="py-op">=</tt> <tt id="link-50" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-50', 'Tkinter', 'link-0');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">DoubleVar</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L128"></a><tt class="py-lineno">128</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">bottom_tk_var</tt><tt class="py-op">.</tt><tt id="link-51" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-51', 'set', 'link-34');">set</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-o [...]
+<a name="L129"></a><tt class="py-lineno">129</tt>  <tt class="py-line">        <tt id="link-52" class="py-name"><a title="VisionEgg.PyroApps.ScreenPositionGUI.CallbackEntry" class="py-name" href="#" onclick="return doclink('link-52', 'CallbackEntry', 'link-36');">CallbackEntry</a></tt><tt class="py-op">(</tt><tt class="py-name">frustum_frame</tt><tt class="py-op">,</tt> </tt>
+<a name="L130"></a><tt class="py-lineno">130</tt>  <tt class="py-line">                      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-53" class="py-name"><a title="VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.send_values
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.send_values
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.send_values
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.send_values
+VisionEgg.PyroApps.GridGUI.GridControlFrame.send_values
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.send_values
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.send_values
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.send_values
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.send_values
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.send_values" class="py-name" href="#" onclick="return doclink('link-53', 'send_values', 'link-37');">send_values</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L131"></a><tt class="py-lineno">131</tt>  <tt class="py-line">                      <tt class="py-name">width</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">entry_width</tt><tt class="py-op">,</tt> </tt>
+<a name="L132"></a><tt class="py-lineno">132</tt>  <tt class="py-line">                      <tt class="py-name">textvariable</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">bottom_tk_var</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-name">ff_row</tt><tt class="py-op">,</tt><tt class="py-name">column</tt><tt clas [...]
+<a name="L133"></a><tt class="py-lineno">133</tt>  <tt class="py-line"> </tt>
+<a name="L134"></a><tt class="py-lineno">134</tt>  <tt class="py-line">        <tt class="py-name">ff_row</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L135"></a><tt class="py-lineno">135</tt>  <tt class="py-line">        <tt id="link-54" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-54', 'Tkinter', 'link-0');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">frustum_frame</tt><tt class="py-op">,</tt><tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Near:"</tt><tt class="py-op">)</ [...]
+<a name="L136"></a><tt class="py-lineno">136</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">near_tk_var</tt> <tt class="py-op">=</tt> <tt id="link-55" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-55', 'Tkinter', 'link-0');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">DoubleVar</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L137"></a><tt class="py-lineno">137</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">near_tk_var</tt><tt class="py-op">.</tt><tt id="link-56" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-56', 'set', 'link-34');">set</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op" [...]
+<a name="L138"></a><tt class="py-lineno">138</tt>  <tt class="py-line">        <tt id="link-57" class="py-name"><a title="VisionEgg.PyroApps.ScreenPositionGUI.CallbackEntry" class="py-name" href="#" onclick="return doclink('link-57', 'CallbackEntry', 'link-36');">CallbackEntry</a></tt><tt class="py-op">(</tt><tt class="py-name">frustum_frame</tt><tt class="py-op">,</tt> </tt>
+<a name="L139"></a><tt class="py-lineno">139</tt>  <tt class="py-line">                      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-58" class="py-name"><a title="VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.send_values
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.send_values
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.send_values
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.send_values
+VisionEgg.PyroApps.GridGUI.GridControlFrame.send_values
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.send_values
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.send_values
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.send_values
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.send_values
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.send_values" class="py-name" href="#" onclick="return doclink('link-58', 'send_values', 'link-37');">send_values</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L140"></a><tt class="py-lineno">140</tt>  <tt class="py-line">                      <tt class="py-name">width</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">entry_width</tt><tt class="py-op">,</tt> </tt>
+<a name="L141"></a><tt class="py-lineno">141</tt>  <tt class="py-line">                      <tt class="py-name">textvariable</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">near_tk_var</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-name">ff_row</tt><tt class="py-op">,</tt><tt class="py-name">column</tt><tt class= [...]
+<a name="L142"></a><tt class="py-lineno">142</tt>  <tt class="py-line"> </tt>
+<a name="L143"></a><tt class="py-lineno">143</tt>  <tt class="py-line">        <tt class="py-name">ff_row</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L144"></a><tt class="py-lineno">144</tt>  <tt class="py-line">        <tt id="link-59" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-59', 'Tkinter', 'link-0');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">frustum_frame</tt><tt class="py-op">,</tt><tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Far:"</tt><tt class="py-op">)</t [...]
+<a name="L145"></a><tt class="py-lineno">145</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">far_tk_var</tt> <tt class="py-op">=</tt> <tt id="link-60" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-60', 'Tkinter', 'link-0');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">DoubleVar</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L146"></a><tt class="py-lineno">146</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">far_tk_var</tt><tt class="py-op">.</tt><tt id="link-61" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-61', 'set', 'link-34');">set</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op"> [...]
+<a name="L147"></a><tt class="py-lineno">147</tt>  <tt class="py-line">        <tt id="link-62" class="py-name"><a title="VisionEgg.PyroApps.ScreenPositionGUI.CallbackEntry" class="py-name" href="#" onclick="return doclink('link-62', 'CallbackEntry', 'link-36');">CallbackEntry</a></tt><tt class="py-op">(</tt><tt class="py-name">frustum_frame</tt><tt class="py-op">,</tt> </tt>
+<a name="L148"></a><tt class="py-lineno">148</tt>  <tt class="py-line">                      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-63" class="py-name"><a title="VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.send_values
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.send_values
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.send_values
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.send_values
+VisionEgg.PyroApps.GridGUI.GridControlFrame.send_values
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.send_values
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.send_values
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.send_values
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.send_values
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.send_values" class="py-name" href="#" onclick="return doclink('link-63', 'send_values', 'link-37');">send_values</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L149"></a><tt class="py-lineno">149</tt>  <tt class="py-line">                      <tt class="py-name">width</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">entry_width</tt><tt class="py-op">,</tt> </tt>
+<a name="L150"></a><tt class="py-lineno">150</tt>  <tt class="py-line">                      <tt class="py-name">textvariable</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">far_tk_var</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-name">ff_row</tt><tt class="py-op">,</tt><tt class="py-name">column</tt><tt class=" [...]
+<a name="L151"></a><tt class="py-lineno">151</tt>  <tt class="py-line"> </tt>
+<a name="L152"></a><tt class="py-lineno">152</tt>  <tt class="py-line">        <tt class="py-comment"># quick frustum frame</tt> </tt>
+<a name="L153"></a><tt class="py-lineno">153</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">qf_frame</tt> <tt class="py-op">=</tt> <tt id="link-64" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-64', 'Tkinter', 'link-0');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Frame</tt><tt class="py-op">(</tt><tt class="py-name">frustum_frame</tt><tt class="py-op">)</tt> </tt>
+<a name="L154"></a><tt class="py-lineno">154</tt>  <tt class="py-line">        <tt class="py-name">qf_frame</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py-op">,</tt><tt class="py-name">column</tt><tt class="py-op">=</tt><tt class="py-number">2</tt><tt class="py-op">,</tt><tt class="py-name">rowspan</tt><tt class="py-op">=</tt><tt class="py-name">ff_row</tt><tt c [...]
+<a name="L155"></a><tt class="py-lineno">155</tt>  <tt class="py-line"> </tt>
+<a name="L156"></a><tt class="py-lineno">156</tt>  <tt class="py-line">        <tt class="py-name">qf_row</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L157"></a><tt class="py-lineno">157</tt>  <tt class="py-line">        <tt id="link-65" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-65', 'Tkinter', 'link-0');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Button</tt><tt class="py-op">(</tt><tt class="py-name">qf_frame</tt><tt class="py-op">,</tt><tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Taller"</tt><tt class="py-op">,</tt> [...]
+<a name="L158"></a><tt class="py-lineno">158</tt>  <tt class="py-line">        <tt class="py-name">qf_row</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L159"></a><tt class="py-lineno">159</tt>  <tt class="py-line">        <tt id="link-67" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-67', 'Tkinter', 'link-0');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Button</tt><tt class="py-op">(</tt><tt class="py-name">qf_frame</tt><tt class="py-op">,</tt><tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Narrower"</tt><tt class="py-op">,</t [...]
+<a name="L160"></a><tt class="py-lineno">160</tt>  <tt class="py-line">        <tt id="link-69" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-69', 'Tkinter', 'link-0');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Button</tt><tt class="py-op">(</tt><tt class="py-name">qf_frame</tt><tt class="py-op">,</tt><tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Wider"</tt><tt class="py-op">,</tt>< [...]
+<a name="L161"></a><tt class="py-lineno">161</tt>  <tt class="py-line">        <tt class="py-name">qf_row</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L162"></a><tt class="py-lineno">162</tt>  <tt class="py-line">        <tt id="link-71" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-71', 'Tkinter', 'link-0');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Button</tt><tt class="py-op">(</tt><tt class="py-name">qf_frame</tt><tt class="py-op">,</tt><tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Shorter"</tt><tt class="py-op">,</tt [...]
+<a name="L163"></a><tt class="py-lineno">163</tt>  <tt class="py-line"> </tt>
+<a name="L164"></a><tt class="py-lineno">164</tt>  <tt class="py-line">        <tt class="py-name">qf_row</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L165"></a><tt class="py-lineno">165</tt>  <tt class="py-line">        <tt id="link-73" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-73', 'Tkinter', 'link-0');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Button</tt><tt class="py-op">(</tt><tt class="py-name">qf_frame</tt><tt class="py-op">,</tt><tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Up"</tt><tt class="py-op">,</tt><tt  [...]
+<a name="L166"></a><tt class="py-lineno">166</tt>  <tt class="py-line">        <tt class="py-name">qf_row</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L167"></a><tt class="py-lineno">167</tt>  <tt class="py-line">        <tt id="link-75" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-75', 'Tkinter', 'link-0');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Button</tt><tt class="py-op">(</tt><tt class="py-name">qf_frame</tt><tt class="py-op">,</tt><tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Left"</tt><tt class="py-op">,</tt><t [...]
+<a name="L168"></a><tt class="py-lineno">168</tt>  <tt class="py-line">        <tt id="link-77" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-77', 'Tkinter', 'link-0');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Button</tt><tt class="py-op">(</tt><tt class="py-name">qf_frame</tt><tt class="py-op">,</tt><tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Right"</tt><tt class="py-op">,</tt>< [...]
+<a name="L169"></a><tt class="py-lineno">169</tt>  <tt class="py-line">        <tt class="py-name">qf_row</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L170"></a><tt class="py-lineno">170</tt>  <tt class="py-line">        <tt id="link-79" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-79', 'Tkinter', 'link-0');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Button</tt><tt class="py-op">(</tt><tt class="py-name">qf_frame</tt><tt class="py-op">,</tt><tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Down"</tt><tt class="py-op">,</tt><t [...]
+<a name="L171"></a><tt class="py-lineno">171</tt>  <tt class="py-line"> </tt>
+<a name="L172"></a><tt class="py-lineno">172</tt>  <tt class="py-line">        <tt class="py-name">pf_row</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L173"></a><tt class="py-lineno">173</tt>  <tt class="py-line">        <tt class="py-name">lookat_frame</tt> <tt class="py-op">=</tt> <tt id="link-81" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-81', 'Tkinter', 'link-0');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Frame</tt><tt class="py-op">(</tt><tt class="py-name">param_frame</tt><tt class="py-op">)</tt> </tt>
+<a name="L174"></a><tt class="py-lineno">174</tt>  <tt class="py-line">        <tt class="py-name">lookat_frame</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-name">pf_row</tt><tt class="py-op">,</tt><tt class="py-name">column</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">,</tt><tt class="py-name">columnspan</tt><tt class="py-op">=</tt><tt class="py-number">2</t [...]
+<a name="L175"></a><tt class="py-lineno">175</tt>  <tt class="py-line">         </tt>
+<a name="L176"></a><tt class="py-lineno">176</tt>  <tt class="py-line">        <tt class="py-name">la_row</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L177"></a><tt class="py-lineno">177</tt>  <tt class="py-line">        <tt id="link-82" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-82', 'Tkinter', 'link-0');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">lookat_frame</tt><tt class="py-op">,</tt> </tt>
+<a name="L178"></a><tt class="py-lineno">178</tt>  <tt class="py-line">                      <tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Viewing volume orientation"</tt><tt class="py-op">,</tt> </tt>
+<a name="L179"></a><tt class="py-lineno">179</tt>  <tt class="py-line">                      <tt class="py-name">font</tt><tt class="py-op">=</tt><tt class="py-op">(</tt><tt class="py-string">"Helvetica"</tt><tt class="py-op">,</tt><tt class="py-number">12</tt><tt class="py-op">,</tt><tt class="py-string">"bold"</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</ [...]
+<a name="L180"></a><tt class="py-lineno">180</tt>  <tt class="py-line"> </tt>
+<a name="L181"></a><tt class="py-lineno">181</tt>  <tt class="py-line">        <tt class="py-name">la_row</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L182"></a><tt class="py-lineno">182</tt>  <tt class="py-line">        <tt id="link-83" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-83', 'Tkinter', 'link-0');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">lookat_frame</tt><tt class="py-op">,</tt><tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"eye X:"</tt><tt class="py-op">)</ [...]
+<a name="L183"></a><tt class="py-lineno">183</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">eye_x_tk_var</tt> <tt class="py-op">=</tt> <tt id="link-84" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-84', 'Tkinter', 'link-0');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">DoubleVar</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L184"></a><tt class="py-lineno">184</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">eye_x_tk_var</tt><tt class="py-op">.</tt><tt id="link-85" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-85', 'set', 'link-34');">set</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op [...]
+<a name="L185"></a><tt class="py-lineno">185</tt>  <tt class="py-line">        <tt id="link-86" class="py-name"><a title="VisionEgg.PyroApps.ScreenPositionGUI.CallbackEntry" class="py-name" href="#" onclick="return doclink('link-86', 'CallbackEntry', 'link-36');">CallbackEntry</a></tt><tt class="py-op">(</tt><tt class="py-name">lookat_frame</tt><tt class="py-op">,</tt> </tt>
+<a name="L186"></a><tt class="py-lineno">186</tt>  <tt class="py-line">                      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-87" class="py-name"><a title="VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.send_values
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.send_values
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.send_values
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.send_values
+VisionEgg.PyroApps.GridGUI.GridControlFrame.send_values
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.send_values
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.send_values
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.send_values
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.send_values
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.send_values" class="py-name" href="#" onclick="return doclink('link-87', 'send_values', 'link-37');">send_values</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L187"></a><tt class="py-lineno">187</tt>  <tt class="py-line">                      <tt class="py-name">width</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">entry_width</tt><tt class="py-op">,</tt> </tt>
+<a name="L188"></a><tt class="py-lineno">188</tt>  <tt class="py-line">                      <tt class="py-name">textvariable</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">eye_x_tk_var</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-name">la_row</tt><tt class="py-op">,</tt><tt class="py-name">column</tt><tt class [...]
+<a name="L189"></a><tt class="py-lineno">189</tt>  <tt class="py-line"> </tt>
+<a name="L190"></a><tt class="py-lineno">190</tt>  <tt class="py-line">        <tt class="py-name">la_row</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L191"></a><tt class="py-lineno">191</tt>  <tt class="py-line">        <tt id="link-88" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-88', 'Tkinter', 'link-0');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">lookat_frame</tt><tt class="py-op">,</tt><tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"eye Y:"</tt><tt class="py-op">)</ [...]
+<a name="L192"></a><tt class="py-lineno">192</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">eye_y_tk_var</tt> <tt class="py-op">=</tt> <tt id="link-89" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-89', 'Tkinter', 'link-0');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">DoubleVar</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L193"></a><tt class="py-lineno">193</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">eye_y_tk_var</tt><tt class="py-op">.</tt><tt id="link-90" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-90', 'set', 'link-34');">set</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op [...]
+<a name="L194"></a><tt class="py-lineno">194</tt>  <tt class="py-line">        <tt id="link-91" class="py-name"><a title="VisionEgg.PyroApps.ScreenPositionGUI.CallbackEntry" class="py-name" href="#" onclick="return doclink('link-91', 'CallbackEntry', 'link-36');">CallbackEntry</a></tt><tt class="py-op">(</tt><tt class="py-name">lookat_frame</tt><tt class="py-op">,</tt> </tt>
+<a name="L195"></a><tt class="py-lineno">195</tt>  <tt class="py-line">                      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-92" class="py-name"><a title="VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.send_values
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.send_values
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.send_values
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.send_values
+VisionEgg.PyroApps.GridGUI.GridControlFrame.send_values
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.send_values
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.send_values
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.send_values
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.send_values
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.send_values" class="py-name" href="#" onclick="return doclink('link-92', 'send_values', 'link-37');">send_values</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L196"></a><tt class="py-lineno">196</tt>  <tt class="py-line">                      <tt class="py-name">width</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">entry_width</tt><tt class="py-op">,</tt> </tt>
+<a name="L197"></a><tt class="py-lineno">197</tt>  <tt class="py-line">                      <tt class="py-name">textvariable</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">eye_y_tk_var</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-name">la_row</tt><tt class="py-op">,</tt><tt class="py-name">column</tt><tt class [...]
+<a name="L198"></a><tt class="py-lineno">198</tt>  <tt class="py-line"> </tt>
+<a name="L199"></a><tt class="py-lineno">199</tt>  <tt class="py-line">        <tt class="py-name">la_row</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L200"></a><tt class="py-lineno">200</tt>  <tt class="py-line">        <tt id="link-93" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-93', 'Tkinter', 'link-0');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">lookat_frame</tt><tt class="py-op">,</tt><tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"eye Z:"</tt><tt class="py-op">)</ [...]
+<a name="L201"></a><tt class="py-lineno">201</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">eye_z_tk_var</tt> <tt class="py-op">=</tt> <tt id="link-94" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-94', 'Tkinter', 'link-0');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">DoubleVar</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L202"></a><tt class="py-lineno">202</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">eye_z_tk_var</tt><tt class="py-op">.</tt><tt id="link-95" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-95', 'set', 'link-34');">set</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op [...]
+<a name="L203"></a><tt class="py-lineno">203</tt>  <tt class="py-line">        <tt id="link-96" class="py-name"><a title="VisionEgg.PyroApps.ScreenPositionGUI.CallbackEntry" class="py-name" href="#" onclick="return doclink('link-96', 'CallbackEntry', 'link-36');">CallbackEntry</a></tt><tt class="py-op">(</tt><tt class="py-name">lookat_frame</tt><tt class="py-op">,</tt> </tt>
+<a name="L204"></a><tt class="py-lineno">204</tt>  <tt class="py-line">                      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-97" class="py-name"><a title="VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.send_values
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.send_values
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.send_values
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.send_values
+VisionEgg.PyroApps.GridGUI.GridControlFrame.send_values
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.send_values
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.send_values
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.send_values
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.send_values
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.send_values" class="py-name" href="#" onclick="return doclink('link-97', 'send_values', 'link-37');">send_values</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L205"></a><tt class="py-lineno">205</tt>  <tt class="py-line">                      <tt class="py-name">width</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">entry_width</tt><tt class="py-op">,</tt> </tt>
+<a name="L206"></a><tt class="py-lineno">206</tt>  <tt class="py-line">                      <tt class="py-name">textvariable</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">eye_z_tk_var</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-name">la_row</tt><tt class="py-op">,</tt><tt class="py-name">column</tt><tt class [...]
+<a name="L207"></a><tt class="py-lineno">207</tt>  <tt class="py-line"> </tt>
+<a name="L208"></a><tt class="py-lineno">208</tt>  <tt class="py-line">        <tt class="py-name">la_row</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L209"></a><tt class="py-lineno">209</tt>  <tt class="py-line">        <tt id="link-98" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-98', 'Tkinter', 'link-0');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">lookat_frame</tt><tt class="py-op">,</tt><tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"look at X:"</tt><tt class="py-op" [...]
+<a name="L210"></a><tt class="py-lineno">210</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">center_x_tk_var</tt> <tt class="py-op">=</tt> <tt id="link-99" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-99', 'Tkinter', 'link-0');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">DoubleVar</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L211"></a><tt class="py-lineno">211</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">center_x_tk_var</tt><tt class="py-op">.</tt><tt id="link-100" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-100', 'set', 'link-34');">set</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class=" [...]
+<a name="L212"></a><tt class="py-lineno">212</tt>  <tt class="py-line">        <tt id="link-101" class="py-name"><a title="VisionEgg.PyroApps.ScreenPositionGUI.CallbackEntry" class="py-name" href="#" onclick="return doclink('link-101', 'CallbackEntry', 'link-36');">CallbackEntry</a></tt><tt class="py-op">(</tt><tt class="py-name">lookat_frame</tt><tt class="py-op">,</tt> </tt>
+<a name="L213"></a><tt class="py-lineno">213</tt>  <tt class="py-line">                      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-102" class="py-name"><a title="VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.send_values
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.send_values
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.send_values
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.send_values
+VisionEgg.PyroApps.GridGUI.GridControlFrame.send_values
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.send_values
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.send_values
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.send_values
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.send_values
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.send_values" class="py-name" href="#" onclick="return doclink('link-102', 'send_values', 'link-37');">send_values</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L214"></a><tt class="py-lineno">214</tt>  <tt class="py-line">                      <tt class="py-name">width</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">entry_width</tt><tt class="py-op">,</tt> </tt>
+<a name="L215"></a><tt class="py-lineno">215</tt>  <tt class="py-line">                      <tt class="py-name">textvariable</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">center_x_tk_var</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-name">la_row</tt><tt class="py-op">,</tt><tt class="py-name">column</tt><tt cl [...]
+<a name="L216"></a><tt class="py-lineno">216</tt>  <tt class="py-line"> </tt>
+<a name="L217"></a><tt class="py-lineno">217</tt>  <tt class="py-line">        <tt class="py-name">quick_la_frame</tt> <tt class="py-op">=</tt> <tt id="link-103" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-103', 'Tkinter', 'link-0');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Frame</tt><tt class="py-op">(</tt><tt class="py-name">lookat_frame</tt><tt class="py-op">)</tt> </tt>
+<a name="L218"></a><tt class="py-lineno">218</tt>  <tt class="py-line">        <tt class="py-name">quick_la_frame</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-name">la_row</tt><tt class="py-op">,</tt><tt class="py-name">column</tt><tt class="py-op">=</tt><tt class="py-number">2</tt><tt class="py-op">,</tt><tt class="py-name">rowspan</tt><tt class="py-op">=</tt><tt class="py-number">3</tt [...]
+<a name="L219"></a><tt class="py-lineno">219</tt>  <tt class="py-line">        <tt class="py-name">qla_row</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L220"></a><tt class="py-lineno">220</tt>  <tt class="py-line">        <tt id="link-104" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-104', 'Tkinter', 'link-0');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Button</tt><tt class="py-op">(</tt><tt class="py-name">quick_la_frame</tt><tt class="py-op">,</tt><tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Look at az -"</tt><tt class= [...]
+<a name="L221"></a><tt class="py-lineno">221</tt>  <tt class="py-line">        <tt id="link-106" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-106', 'Tkinter', 'link-0');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Button</tt><tt class="py-op">(</tt><tt class="py-name">quick_la_frame</tt><tt class="py-op">,</tt><tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Look at az +"</tt><tt class= [...]
+<a name="L222"></a><tt class="py-lineno">222</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">look_at_az_str</tt> <tt class="py-op">=</tt> <tt id="link-108" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-108', 'Tkinter', 'link-0');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">StringVar</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L223"></a><tt class="py-lineno">223</tt>  <tt class="py-line">        <tt id="link-109" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-109', 'Tkinter', 'link-0');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">quick_la_frame</tt><tt class="py-op">,</tt><tt class="py-name">textvariable</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-o [...]
+<a name="L224"></a><tt class="py-lineno">224</tt>  <tt class="py-line">         </tt>
+<a name="L225"></a><tt class="py-lineno">225</tt>  <tt class="py-line">        <tt class="py-name">qla_row</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L226"></a><tt class="py-lineno">226</tt>  <tt class="py-line">        <tt id="link-110" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-110', 'Tkinter', 'link-0');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Button</tt><tt class="py-op">(</tt><tt class="py-name">quick_la_frame</tt><tt class="py-op">,</tt><tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Look at el -"</tt><tt class= [...]
+<a name="L227"></a><tt class="py-lineno">227</tt>  <tt class="py-line">        <tt id="link-112" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-112', 'Tkinter', 'link-0');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Button</tt><tt class="py-op">(</tt><tt class="py-name">quick_la_frame</tt><tt class="py-op">,</tt><tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Look at el +"</tt><tt class= [...]
+<a name="L228"></a><tt class="py-lineno">228</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">look_at_el_str</tt> <tt class="py-op">=</tt> <tt id="link-114" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-114', 'Tkinter', 'link-0');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">StringVar</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L229"></a><tt class="py-lineno">229</tt>  <tt class="py-line">        <tt id="link-115" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-115', 'Tkinter', 'link-0');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">quick_la_frame</tt><tt class="py-op">,</tt><tt class="py-name">textvariable</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-o [...]
+<a name="L230"></a><tt class="py-lineno">230</tt>  <tt class="py-line"> </tt>
+<a name="L231"></a><tt class="py-lineno">231</tt>  <tt class="py-line">        <tt class="py-name">az</tt><tt class="py-op">,</tt><tt class="py-name">el</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-116" class="py-name" targets="Method VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.get_az_el()=VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html#get_az_el"><a title="VisionEgg.PyroApps.ScreenPositionG [...]
+<a name="L232"></a><tt class="py-lineno">232</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">look_at_az_str</tt><tt class="py-op">.</tt><tt id="link-117" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-117', 'set', 'link-34');">set</a></tt><tt class="py-op">(</tt><tt class="py-string">"%.1f"</tt><tt class="py-op">%</tt><tt class="py-name">az</tt><tt class="py-op" [...]
+<a name="L233"></a><tt class="py-lineno">233</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">look_at_el_str</tt><tt class="py-op">.</tt><tt id="link-118" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-118', 'set', 'link-34');">set</a></tt><tt class="py-op">(</tt><tt class="py-string">"%.1f"</tt><tt class="py-op">%</tt><tt class="py-name">el</tt><tt class="py-op" [...]
+<a name="L234"></a><tt class="py-lineno">234</tt>  <tt class="py-line">         </tt>
+<a name="L235"></a><tt class="py-lineno">235</tt>  <tt class="py-line">        <tt class="py-name">la_row</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L236"></a><tt class="py-lineno">236</tt>  <tt class="py-line">        <tt id="link-119" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-119', 'Tkinter', 'link-0');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">lookat_frame</tt><tt class="py-op">,</tt><tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"look at Y:"</tt><tt class="py-o [...]
+<a name="L237"></a><tt class="py-lineno">237</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">center_y_tk_var</tt> <tt class="py-op">=</tt> <tt id="link-120" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-120', 'Tkinter', 'link-0');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">DoubleVar</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L238"></a><tt class="py-lineno">238</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">center_y_tk_var</tt><tt class="py-op">.</tt><tt id="link-121" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-121', 'set', 'link-34');">set</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class=" [...]
+<a name="L239"></a><tt class="py-lineno">239</tt>  <tt class="py-line">        <tt id="link-122" class="py-name"><a title="VisionEgg.PyroApps.ScreenPositionGUI.CallbackEntry" class="py-name" href="#" onclick="return doclink('link-122', 'CallbackEntry', 'link-36');">CallbackEntry</a></tt><tt class="py-op">(</tt><tt class="py-name">lookat_frame</tt><tt class="py-op">,</tt> </tt>
+<a name="L240"></a><tt class="py-lineno">240</tt>  <tt class="py-line">                      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-123" class="py-name"><a title="VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.send_values
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.send_values
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.send_values
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.send_values
+VisionEgg.PyroApps.GridGUI.GridControlFrame.send_values
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.send_values
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.send_values
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.send_values
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.send_values
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.send_values" class="py-name" href="#" onclick="return doclink('link-123', 'send_values', 'link-37');">send_values</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L241"></a><tt class="py-lineno">241</tt>  <tt class="py-line">                      <tt class="py-name">width</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">entry_width</tt><tt class="py-op">,</tt> </tt>
+<a name="L242"></a><tt class="py-lineno">242</tt>  <tt class="py-line">                      <tt class="py-name">textvariable</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">center_y_tk_var</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-name">la_row</tt><tt class="py-op">,</tt><tt class="py-name">column</tt><tt cl [...]
+<a name="L243"></a><tt class="py-lineno">243</tt>  <tt class="py-line"> </tt>
+<a name="L244"></a><tt class="py-lineno">244</tt>  <tt class="py-line">        <tt class="py-name">la_row</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L245"></a><tt class="py-lineno">245</tt>  <tt class="py-line">        <tt id="link-124" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-124', 'Tkinter', 'link-0');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">lookat_frame</tt><tt class="py-op">,</tt><tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"look at Z:"</tt><tt class="py-o [...]
+<a name="L246"></a><tt class="py-lineno">246</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">center_z_tk_var</tt> <tt class="py-op">=</tt> <tt id="link-125" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-125', 'Tkinter', 'link-0');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">DoubleVar</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L247"></a><tt class="py-lineno">247</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">center_z_tk_var</tt><tt class="py-op">.</tt><tt id="link-126" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-126', 'set', 'link-34');">set</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class=" [...]
+<a name="L248"></a><tt class="py-lineno">248</tt>  <tt class="py-line">        <tt id="link-127" class="py-name"><a title="VisionEgg.PyroApps.ScreenPositionGUI.CallbackEntry" class="py-name" href="#" onclick="return doclink('link-127', 'CallbackEntry', 'link-36');">CallbackEntry</a></tt><tt class="py-op">(</tt><tt class="py-name">lookat_frame</tt><tt class="py-op">,</tt> </tt>
+<a name="L249"></a><tt class="py-lineno">249</tt>  <tt class="py-line">                      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-128" class="py-name"><a title="VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.send_values
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.send_values
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.send_values
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.send_values
+VisionEgg.PyroApps.GridGUI.GridControlFrame.send_values
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.send_values
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.send_values
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.send_values
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.send_values
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.send_values" class="py-name" href="#" onclick="return doclink('link-128', 'send_values', 'link-37');">send_values</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L250"></a><tt class="py-lineno">250</tt>  <tt class="py-line">                      <tt class="py-name">width</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">entry_width</tt><tt class="py-op">,</tt> </tt>
+<a name="L251"></a><tt class="py-lineno">251</tt>  <tt class="py-line">                      <tt class="py-name">textvariable</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">center_z_tk_var</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-name">la_row</tt><tt class="py-op">,</tt><tt class="py-name">column</tt><tt cl [...]
+<a name="L252"></a><tt class="py-lineno">252</tt>  <tt class="py-line"> </tt>
+<a name="L253"></a><tt class="py-lineno">253</tt>  <tt class="py-line">        <tt class="py-name">la_row</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L254"></a><tt class="py-lineno">254</tt>  <tt class="py-line">        <tt id="link-129" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-129', 'Tkinter', 'link-0');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">lookat_frame</tt><tt class="py-op">,</tt><tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"up X:"</tt><tt class="py-op">)< [...]
+<a name="L255"></a><tt class="py-lineno">255</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">up_x_tk_var</tt> <tt class="py-op">=</tt> <tt id="link-130" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-130', 'Tkinter', 'link-0');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">DoubleVar</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L256"></a><tt class="py-lineno">256</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">up_x_tk_var</tt><tt class="py-op">.</tt><tt id="link-131" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-131', 'set', 'link-34');">set</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-o [...]
+<a name="L257"></a><tt class="py-lineno">257</tt>  <tt class="py-line">        <tt id="link-133" class="py-name"><a title="VisionEgg.PyroApps.ScreenPositionGUI.CallbackEntry" class="py-name" href="#" onclick="return doclink('link-133', 'CallbackEntry', 'link-36');">CallbackEntry</a></tt><tt class="py-op">(</tt><tt class="py-name">lookat_frame</tt><tt class="py-op">,</tt> </tt>
+<a name="L258"></a><tt class="py-lineno">258</tt>  <tt class="py-line">                      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-134" class="py-name"><a title="VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.send_values
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.send_values
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.send_values
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.send_values
+VisionEgg.PyroApps.GridGUI.GridControlFrame.send_values
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.send_values
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.send_values
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.send_values
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.send_values
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.send_values" class="py-name" href="#" onclick="return doclink('link-134', 'send_values', 'link-37');">send_values</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L259"></a><tt class="py-lineno">259</tt>  <tt class="py-line">                      <tt class="py-name">width</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">entry_width</tt><tt class="py-op">,</tt> </tt>
+<a name="L260"></a><tt class="py-lineno">260</tt>  <tt class="py-line">                      <tt class="py-name">textvariable</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">up_x_tk_var</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-name">la_row</tt><tt class="py-op">,</tt><tt class="py-name">column</tt><tt class= [...]
+<a name="L261"></a><tt class="py-lineno">261</tt>  <tt class="py-line"> </tt>
+<a name="L262"></a><tt class="py-lineno">262</tt>  <tt class="py-line">        <tt class="py-name">quick_up_frame</tt> <tt class="py-op">=</tt> <tt id="link-135" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-135', 'Tkinter', 'link-0');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Frame</tt><tt class="py-op">(</tt><tt class="py-name">lookat_frame</tt><tt class="py-op">)</tt> </tt>
+<a name="L263"></a><tt class="py-lineno">263</tt>  <tt class="py-line">        <tt class="py-name">quick_up_frame</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-name">la_row</tt><tt class="py-op">,</tt><tt class="py-name">column</tt><tt class="py-op">=</tt><tt class="py-number">2</tt><tt class="py-op">,</tt><tt class="py-name">rowspan</tt><tt class="py-op">=</tt><tt class="py-number">3</tt [...]
+<a name="L264"></a><tt class="py-lineno">264</tt>  <tt class="py-line">        <tt class="py-name">qup_row</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L265"></a><tt class="py-lineno">265</tt>  <tt class="py-line">        <tt id="link-136" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-136', 'Tkinter', 'link-0');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Button</tt><tt class="py-op">(</tt><tt class="py-name">quick_up_frame</tt><tt class="py-op">,</tt><tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Up az -"</tt><tt class="py-o [...]
+<a name="L266"></a><tt class="py-lineno">266</tt>  <tt class="py-line">        <tt id="link-138" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-138', 'Tkinter', 'link-0');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Button</tt><tt class="py-op">(</tt><tt class="py-name">quick_up_frame</tt><tt class="py-op">,</tt><tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Up az +"</tt><tt class="py-o [...]
+<a name="L267"></a><tt class="py-lineno">267</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">up_az_str</tt> <tt class="py-op">=</tt> <tt id="link-140" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-140', 'Tkinter', 'link-0');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">StringVar</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L268"></a><tt class="py-lineno">268</tt>  <tt class="py-line">        <tt id="link-141" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-141', 'Tkinter', 'link-0');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">quick_up_frame</tt><tt class="py-op">,</tt><tt class="py-name">textvariable</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-o [...]
+<a name="L269"></a><tt class="py-lineno">269</tt>  <tt class="py-line">        <tt class="py-name">qup_row</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L270"></a><tt class="py-lineno">270</tt>  <tt class="py-line">        <tt id="link-142" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-142', 'Tkinter', 'link-0');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Button</tt><tt class="py-op">(</tt><tt class="py-name">quick_up_frame</tt><tt class="py-op">,</tt><tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Up el -"</tt><tt class="py-o [...]
+<a name="L271"></a><tt class="py-lineno">271</tt>  <tt class="py-line">        <tt id="link-144" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-144', 'Tkinter', 'link-0');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Button</tt><tt class="py-op">(</tt><tt class="py-name">quick_up_frame</tt><tt class="py-op">,</tt><tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Up el +"</tt><tt class="py-o [...]
+<a name="L272"></a><tt class="py-lineno">272</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">up_el_str</tt> <tt class="py-op">=</tt> <tt id="link-146" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-146', 'Tkinter', 'link-0');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">StringVar</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L273"></a><tt class="py-lineno">273</tt>  <tt class="py-line">        <tt id="link-147" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-147', 'Tkinter', 'link-0');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">quick_up_frame</tt><tt class="py-op">,</tt><tt class="py-name">textvariable</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-o [...]
+<a name="L274"></a><tt class="py-lineno">274</tt>  <tt class="py-line"> </tt>
+<a name="L275"></a><tt class="py-lineno">275</tt>  <tt class="py-line">        <tt class="py-name">az</tt><tt class="py-op">,</tt><tt class="py-name">el</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-148" class="py-name"><a title="VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.get_az_el" class="py-name" href="#" onclick="return doclink('link-148', 'get_az_el', 'link-116');">get_az_el</a></tt><tt class="py-op">(</tt><tt cla [...]
+<a name="L276"></a><tt class="py-lineno">276</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">up_az_str</tt><tt class="py-op">.</tt><tt id="link-150" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-150', 'set', 'link-34');">set</a></tt><tt class="py-op">(</tt><tt class="py-string">"%.1f"</tt><tt class="py-op">%</tt><tt class="py-name">az</tt><tt class="py-op">)</t [...]
+<a name="L277"></a><tt class="py-lineno">277</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">up_el_str</tt><tt class="py-op">.</tt><tt id="link-151" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-151', 'set', 'link-34');">set</a></tt><tt class="py-op">(</tt><tt class="py-string">"%.1f"</tt><tt class="py-op">%</tt><tt class="py-name">el</tt><tt class="py-op">)</t [...]
+<a name="L278"></a><tt class="py-lineno">278</tt>  <tt class="py-line"> </tt>
+<a name="L279"></a><tt class="py-lineno">279</tt>  <tt class="py-line">        <tt class="py-name">la_row</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L280"></a><tt class="py-lineno">280</tt>  <tt class="py-line">        <tt id="link-152" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-152', 'Tkinter', 'link-0');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">lookat_frame</tt><tt class="py-op">,</tt><tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"up Y:"</tt><tt class="py-op">)< [...]
+<a name="L281"></a><tt class="py-lineno">281</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">up_y_tk_var</tt> <tt class="py-op">=</tt> <tt id="link-153" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-153', 'Tkinter', 'link-0');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">DoubleVar</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L282"></a><tt class="py-lineno">282</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">up_y_tk_var</tt><tt class="py-op">.</tt><tt id="link-154" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-154', 'set', 'link-34');">set</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-o [...]
+<a name="L283"></a><tt class="py-lineno">283</tt>  <tt class="py-line">        <tt id="link-156" class="py-name"><a title="VisionEgg.PyroApps.ScreenPositionGUI.CallbackEntry" class="py-name" href="#" onclick="return doclink('link-156', 'CallbackEntry', 'link-36');">CallbackEntry</a></tt><tt class="py-op">(</tt><tt class="py-name">lookat_frame</tt><tt class="py-op">,</tt> </tt>
+<a name="L284"></a><tt class="py-lineno">284</tt>  <tt class="py-line">                      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-157" class="py-name"><a title="VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.send_values
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.send_values
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.send_values
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.send_values
+VisionEgg.PyroApps.GridGUI.GridControlFrame.send_values
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.send_values
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.send_values
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.send_values
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.send_values
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.send_values" class="py-name" href="#" onclick="return doclink('link-157', 'send_values', 'link-37');">send_values</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L285"></a><tt class="py-lineno">285</tt>  <tt class="py-line">                      <tt class="py-name">width</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">entry_width</tt><tt class="py-op">,</tt> </tt>
+<a name="L286"></a><tt class="py-lineno">286</tt>  <tt class="py-line">                      <tt class="py-name">textvariable</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">up_y_tk_var</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-name">la_row</tt><tt class="py-op">,</tt><tt class="py-name">column</tt><tt class= [...]
+<a name="L287"></a><tt class="py-lineno">287</tt>  <tt class="py-line"> </tt>
+<a name="L288"></a><tt class="py-lineno">288</tt>  <tt class="py-line">        <tt class="py-name">la_row</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L289"></a><tt class="py-lineno">289</tt>  <tt class="py-line">        <tt id="link-158" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-158', 'Tkinter', 'link-0');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">lookat_frame</tt><tt class="py-op">,</tt><tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"up Z:"</tt><tt class="py-op">)< [...]
+<a name="L290"></a><tt class="py-lineno">290</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">up_z_tk_var</tt> <tt class="py-op">=</tt> <tt id="link-159" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-159', 'Tkinter', 'link-0');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">DoubleVar</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L291"></a><tt class="py-lineno">291</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">up_z_tk_var</tt><tt class="py-op">.</tt><tt id="link-160" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-160', 'set', 'link-34');">set</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-o [...]
+<a name="L292"></a><tt class="py-lineno">292</tt>  <tt class="py-line">        <tt id="link-162" class="py-name"><a title="VisionEgg.PyroApps.ScreenPositionGUI.CallbackEntry" class="py-name" href="#" onclick="return doclink('link-162', 'CallbackEntry', 'link-36');">CallbackEntry</a></tt><tt class="py-op">(</tt><tt class="py-name">lookat_frame</tt><tt class="py-op">,</tt> </tt>
+<a name="L293"></a><tt class="py-lineno">293</tt>  <tt class="py-line">                      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-163" class="py-name"><a title="VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.send_values
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.send_values
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.send_values
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.send_values
+VisionEgg.PyroApps.GridGUI.GridControlFrame.send_values
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.send_values
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.send_values
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.send_values
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.send_values
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.send_values" class="py-name" href="#" onclick="return doclink('link-163', 'send_values', 'link-37');">send_values</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L294"></a><tt class="py-lineno">294</tt>  <tt class="py-line">                      <tt class="py-name">width</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">entry_width</tt><tt class="py-op">,</tt> </tt>
+<a name="L295"></a><tt class="py-lineno">295</tt>  <tt class="py-line">                      <tt class="py-name">textvariable</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">up_z_tk_var</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-name">la_row</tt><tt class="py-op">,</tt><tt class="py-name">column</tt><tt class= [...]
+<a name="L296"></a><tt class="py-lineno">296</tt>  <tt class="py-line"> </tt>
+<a name="L297"></a><tt class="py-lineno">297</tt>  <tt class="py-line">        <tt class="py-name">row</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L298"></a><tt class="py-lineno">298</tt>  <tt class="py-line">        <tt class="py-name">button_row_frame</tt> <tt class="py-op">=</tt> <tt id="link-164" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-164', 'Tkinter', 'link-0');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Frame</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
+<a name="L299"></a><tt class="py-lineno">299</tt>  <tt class="py-line">        <tt class="py-name">button_row_frame</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-name">row</tt><tt class="py-op">,</tt><tt class="py-name">column</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">,</tt><tt class="py-name">ipady</tt><tt class="py-op">=</tt><tt class="py-number">5</tt><t [...]
+<a name="L300"></a><tt class="py-lineno">300</tt>  <tt class="py-line">        <tt id="link-165" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-165', 'Tkinter', 'link-0');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">button_row_frame</tt><tt class="py-op">,</tt> </tt>
+<a name="L301"></a><tt class="py-lineno">301</tt>  <tt class="py-line">                      <tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"File operations"</tt><tt class="py-op">,</tt> </tt>
+<a name="L302"></a><tt class="py-lineno">302</tt>  <tt class="py-line">                      <tt class="py-name">font</tt><tt class="py-op">=</tt><tt class="py-op">(</tt><tt class="py-string">"Helvetica"</tt><tt class="py-op">,</tt><tt class="py-number">12</tt><tt class="py-op">,</tt><tt class="py-string">"bold"</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</ [...]
+<a name="L303"></a><tt class="py-lineno">303</tt>  <tt class="py-line">        <tt id="link-166" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-166', 'Tkinter', 'link-0');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Button</tt><tt class="py-op">(</tt><tt class="py-name">button_row_frame</tt><tt class="py-op">,</tt><tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Save..."</tt><tt class="py [...]
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.save" class="py-name" href="#" onclick="return doclink('link-167', 'save', 'link-167');">save</a></tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py-op">,</tt><tt class="py-name">column</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">)</tt> </tt>
+<a name="L304"></a><tt class="py-lineno">304</tt>  <tt class="py-line">        <tt id="link-168" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-168', 'Tkinter', 'link-0');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Button</tt><tt class="py-op">(</tt><tt class="py-name">button_row_frame</tt><tt class="py-op">,</tt><tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Load..."</tt><tt class="py [...]
+VisionEgg.QuickTime.MovieTexture.load
+VisionEgg.Textures.Texture.load" class="py-name" href="#" onclick="return doclink('link-169', 'load', 'link-169');">load</a></tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py-op">,</tt><tt class="py-name">column</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="L305"></a><tt class="py-lineno">305</tt>  <tt class="py-line"> </tt>
+<a name="L306"></a><tt class="py-lineno">306</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">auto_connect</tt><tt class="py-op">:</tt> </tt>
+<a name="L307"></a><tt class="py-lineno">307</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-170" class="py-name"><a title="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.connect
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.connect
+VisionEgg.PyroHelpers.PyroServer.connect" class="py-name" href="#" onclick="return doclink('link-170', 'connect', 'link-25');">connect</a></tt><tt class="py-op">(</tt><tt class="py-name">server_hostname</tt><tt class="py-op">,</tt><tt class="py-name">server_port</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L308"></a><tt class="py-lineno">308</tt>  <tt class="py-line"> </tt>
+<a name="ScreenPositionControlFrame.frustum_narrower"></a><div id="ScreenPositionControlFrame.frustum_narrower-def"><a name="L309"></a><tt class="py-lineno">309</tt> <a class="py-toggle" href="#" id="ScreenPositionControlFrame.frustum_narrower-toggle" onclick="return toggle('ScreenPositionControlFrame.frustum_narrower');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html#fru [...]
+</div><a name="L310"></a><tt class="py-lineno">310</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">left_tk_var</tt><tt class="py-op">.</tt><tt id="link-171" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-171', 'set', 'link-34');">set</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class [...]
+<a name="L311"></a><tt class="py-lineno">311</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">right_tk_var</tt><tt class="py-op">.</tt><tt id="link-173" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-173', 'set', 'link-34');">set</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py- [...]
+<a name="L312"></a><tt class="py-lineno">312</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-175" class="py-name"><a title="VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.send_values
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.send_values
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.send_values
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.send_values
+VisionEgg.PyroApps.GridGUI.GridControlFrame.send_values
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.send_values
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.send_values
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.send_values
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.send_values
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.send_values" class="py-name" href="#" onclick="return doclink('link-175', 'send_values', 'link-37');">send_values</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L313"></a><tt class="py-lineno">313</tt>  <tt class="py-line"> </tt>
+<a name="ScreenPositionControlFrame.frustum_wider"></a><div id="ScreenPositionControlFrame.frustum_wider-def"><a name="L314"></a><tt class="py-lineno">314</tt> <a class="py-toggle" href="#" id="ScreenPositionControlFrame.frustum_wider-toggle" onclick="return toggle('ScreenPositionControlFrame.frustum_wider');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html#frustum_wider"> [...]
+</div><a name="L315"></a><tt class="py-lineno">315</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">left_tk_var</tt><tt class="py-op">.</tt><tt id="link-176" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-176', 'set', 'link-34');">set</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class [...]
+<a name="L316"></a><tt class="py-lineno">316</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">right_tk_var</tt><tt class="py-op">.</tt><tt id="link-178" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-178', 'set', 'link-34');">set</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py- [...]
+<a name="L317"></a><tt class="py-lineno">317</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-180" class="py-name"><a title="VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.send_values
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.send_values
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.send_values
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.send_values
+VisionEgg.PyroApps.GridGUI.GridControlFrame.send_values
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.send_values
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.send_values
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.send_values
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.send_values
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.send_values" class="py-name" href="#" onclick="return doclink('link-180', 'send_values', 'link-37');">send_values</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L318"></a><tt class="py-lineno">318</tt>  <tt class="py-line"> </tt>
+<a name="ScreenPositionControlFrame.frustum_shorter"></a><div id="ScreenPositionControlFrame.frustum_shorter-def"><a name="L319"></a><tt class="py-lineno">319</tt> <a class="py-toggle" href="#" id="ScreenPositionControlFrame.frustum_shorter-toggle" onclick="return toggle('ScreenPositionControlFrame.frustum_shorter');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html#frustum [...]
+</div><a name="L320"></a><tt class="py-lineno">320</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">bottom_tk_var</tt><tt class="py-op">.</tt><tt id="link-181" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-181', 'set', 'link-34');">set</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt cla [...]
+<a name="L321"></a><tt class="py-lineno">321</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">top_tk_var</tt><tt class="py-op">.</tt><tt id="link-182" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-182', 'set', 'link-34');">set</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op [...]
+<a name="L322"></a><tt class="py-lineno">322</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-183" class="py-name"><a title="VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.send_values
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.send_values
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.send_values
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.send_values
+VisionEgg.PyroApps.GridGUI.GridControlFrame.send_values
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.send_values
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.send_values
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.send_values
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.send_values
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.send_values" class="py-name" href="#" onclick="return doclink('link-183', 'send_values', 'link-37');">send_values</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L323"></a><tt class="py-lineno">323</tt>  <tt class="py-line"> </tt>
+<a name="ScreenPositionControlFrame.frustum_taller"></a><div id="ScreenPositionControlFrame.frustum_taller-def"><a name="L324"></a><tt class="py-lineno">324</tt> <a class="py-toggle" href="#" id="ScreenPositionControlFrame.frustum_taller-toggle" onclick="return toggle('ScreenPositionControlFrame.frustum_taller');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html#frustum_tal [...]
+</div><a name="L325"></a><tt class="py-lineno">325</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">bottom_tk_var</tt><tt class="py-op">.</tt><tt id="link-184" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-184', 'set', 'link-34');">set</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt cla [...]
+<a name="L326"></a><tt class="py-lineno">326</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">top_tk_var</tt><tt class="py-op">.</tt><tt id="link-185" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-185', 'set', 'link-34');">set</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op [...]
+<a name="L327"></a><tt class="py-lineno">327</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-186" class="py-name"><a title="VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.send_values
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.send_values
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.send_values
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.send_values
+VisionEgg.PyroApps.GridGUI.GridControlFrame.send_values
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.send_values
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.send_values
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.send_values
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.send_values
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.send_values" class="py-name" href="#" onclick="return doclink('link-186', 'send_values', 'link-37');">send_values</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L328"></a><tt class="py-lineno">328</tt>  <tt class="py-line"> </tt>
+<a name="ScreenPositionControlFrame.frustum_left"></a><div id="ScreenPositionControlFrame.frustum_left-def"><a name="L329"></a><tt class="py-lineno">329</tt> <a class="py-toggle" href="#" id="ScreenPositionControlFrame.frustum_left-toggle" onclick="return toggle('ScreenPositionControlFrame.frustum_left');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html#frustum_left">frust [...]
+</div><a name="L330"></a><tt class="py-lineno">330</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">left_tk_var</tt><tt class="py-op">.</tt><tt id="link-187" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-187', 'set', 'link-34');">set</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class [...]
+<a name="L331"></a><tt class="py-lineno">331</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">right_tk_var</tt><tt class="py-op">.</tt><tt id="link-189" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-189', 'set', 'link-34');">set</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py- [...]
+<a name="L332"></a><tt class="py-lineno">332</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-191" class="py-name"><a title="VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.send_values
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.send_values
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.send_values
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.send_values
+VisionEgg.PyroApps.GridGUI.GridControlFrame.send_values
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.send_values
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.send_values
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.send_values
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.send_values
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.send_values" class="py-name" href="#" onclick="return doclink('link-191', 'send_values', 'link-37');">send_values</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L333"></a><tt class="py-lineno">333</tt>  <tt class="py-line"> </tt>
+<a name="ScreenPositionControlFrame.frustum_right"></a><div id="ScreenPositionControlFrame.frustum_right-def"><a name="L334"></a><tt class="py-lineno">334</tt> <a class="py-toggle" href="#" id="ScreenPositionControlFrame.frustum_right-toggle" onclick="return toggle('ScreenPositionControlFrame.frustum_right');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html#frustum_right"> [...]
+</div><a name="L335"></a><tt class="py-lineno">335</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">left_tk_var</tt><tt class="py-op">.</tt><tt id="link-192" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-192', 'set', 'link-34');">set</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class [...]
+<a name="L336"></a><tt class="py-lineno">336</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">right_tk_var</tt><tt class="py-op">.</tt><tt id="link-194" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-194', 'set', 'link-34');">set</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py- [...]
+<a name="L337"></a><tt class="py-lineno">337</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-196" class="py-name"><a title="VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.send_values
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.send_values
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.send_values
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.send_values
+VisionEgg.PyroApps.GridGUI.GridControlFrame.send_values
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.send_values
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.send_values
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.send_values
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.send_values
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.send_values" class="py-name" href="#" onclick="return doclink('link-196', 'send_values', 'link-37');">send_values</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L338"></a><tt class="py-lineno">338</tt>  <tt class="py-line"> </tt>
+<a name="ScreenPositionControlFrame.frustum_down"></a><div id="ScreenPositionControlFrame.frustum_down-def"><a name="L339"></a><tt class="py-lineno">339</tt> <a class="py-toggle" href="#" id="ScreenPositionControlFrame.frustum_down-toggle" onclick="return toggle('ScreenPositionControlFrame.frustum_down');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html#frustum_down">frust [...]
+</div><a name="L340"></a><tt class="py-lineno">340</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">bottom_tk_var</tt><tt class="py-op">.</tt><tt id="link-197" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-197', 'set', 'link-34');">set</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt cla [...]
+<a name="L341"></a><tt class="py-lineno">341</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">top_tk_var</tt><tt class="py-op">.</tt><tt id="link-198" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-198', 'set', 'link-34');">set</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op [...]
+<a name="L342"></a><tt class="py-lineno">342</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-199" class="py-name"><a title="VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.send_values
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.send_values
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.send_values
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.send_values
+VisionEgg.PyroApps.GridGUI.GridControlFrame.send_values
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.send_values
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.send_values
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.send_values
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.send_values
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.send_values" class="py-name" href="#" onclick="return doclink('link-199', 'send_values', 'link-37');">send_values</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L343"></a><tt class="py-lineno">343</tt>  <tt class="py-line"> </tt>
+<a name="ScreenPositionControlFrame.frustum_up"></a><div id="ScreenPositionControlFrame.frustum_up-def"><a name="L344"></a><tt class="py-lineno">344</tt> <a class="py-toggle" href="#" id="ScreenPositionControlFrame.frustum_up-toggle" onclick="return toggle('ScreenPositionControlFrame.frustum_up');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html#frustum_up">frustum_up</a>< [...]
+</div><a name="L345"></a><tt class="py-lineno">345</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">bottom_tk_var</tt><tt class="py-op">.</tt><tt id="link-200" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-200', 'set', 'link-34');">set</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt cla [...]
+<a name="L346"></a><tt class="py-lineno">346</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">top_tk_var</tt><tt class="py-op">.</tt><tt id="link-201" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-201', 'set', 'link-34');">set</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op [...]
+<a name="L347"></a><tt class="py-lineno">347</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-202" class="py-name"><a title="VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.send_values
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.send_values
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.send_values
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.send_values
+VisionEgg.PyroApps.GridGUI.GridControlFrame.send_values
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.send_values
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.send_values
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.send_values
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.send_values
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.send_values" class="py-name" href="#" onclick="return doclink('link-202', 'send_values', 'link-37');">send_values</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L348"></a><tt class="py-lineno">348</tt>  <tt class="py-line"> </tt>
+<a name="ScreenPositionControlFrame.get_az_el"></a><div id="ScreenPositionControlFrame.get_az_el-def"><a name="L349"></a><tt class="py-lineno">349</tt> <a class="py-toggle" href="#" id="ScreenPositionControlFrame.get_az_el-toggle" onclick="return toggle('ScreenPositionControlFrame.get_az_el');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html#get_az_el">get_az_el</a><tt cla [...]
+</div><div id="ScreenPositionControlFrame.get_az_el-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ScreenPositionControlFrame.get_az_el-expanded"><a name="L350"></a><tt class="py-lineno">350</tt>  <tt class="py-line">        <tt class="py-name">x</tt><tt class="py-op">,</tt><tt class="py-name">y</tt><tt class="py-op">,</tt><tt class="py-name">z</tt> <tt class="py-op">=</tt> <tt class="py-name">xyz_tuple</tt> </tt>
+<a name="L351"></a><tt class="py-lineno">351</tt>  <tt class="py-line">        <tt class="py-name">r</tt> <tt class="py-op">=</tt> <tt class="py-name">math</tt><tt class="py-op">.</tt><tt class="py-name">sqrt</tt><tt class="py-op">(</tt><tt class="py-name">x</tt><tt class="py-op">*</tt><tt class="py-name">x</tt> <tt class="py-op">+</tt> <tt class="py-name">y</tt><tt class="py-op">*</tt><tt class="py-name">y</tt> <tt class="py-op">+</tt> <tt class="py-name">z</tt><tt class="py-op">*</tt>< [...]
+<a name="L352"></a><tt class="py-lineno">352</tt>  <tt class="py-line">        <tt class="py-name">theta</tt> <tt class="py-op">=</tt> <tt class="py-name">math</tt><tt class="py-op">.</tt><tt class="py-name">acos</tt><tt class="py-op">(</tt><tt class="py-op">-</tt><tt class="py-name">y</tt><tt class="py-op">/</tt><tt class="py-name">r</tt><tt class="py-op">)</tt> </tt>
+<a name="L353"></a><tt class="py-lineno">353</tt>  <tt class="py-line">        <tt class="py-name">rh</tt> <tt class="py-op">=</tt> <tt class="py-name">r</tt> <tt class="py-op">*</tt> <tt class="py-name">math</tt><tt class="py-op">.</tt><tt class="py-name">sin</tt><tt class="py-op">(</tt><tt class="py-name">theta</tt><tt class="py-op">)</tt> </tt>
+<a name="L354"></a><tt class="py-lineno">354</tt>  <tt class="py-line">        <tt class="py-name">phi</tt> <tt class="py-op">=</tt> <tt class="py-name">math</tt><tt class="py-op">.</tt><tt class="py-name">atan2</tt><tt class="py-op">(</tt><tt class="py-op">-</tt><tt class="py-name">z</tt><tt class="py-op">,</tt><tt class="py-name">x</tt><tt class="py-op">)</tt> </tt>
+<a name="L355"></a><tt class="py-lineno">355</tt>  <tt class="py-line">        <tt class="py-name">az</tt> <tt class="py-op">=</tt> <tt class="py-op">-</tt><tt class="py-op">(</tt><tt class="py-name">phi</tt> <tt class="py-op">*</tt> <tt class="py-number">180.0</tt><tt class="py-op">/</tt><tt class="py-name">math</tt><tt class="py-op">.</tt><tt class="py-name">pi</tt> <tt class="py-op">-</tt> <tt class="py-number">90.0</tt><tt class="py-op">)</tt> </tt>
+<a name="L356"></a><tt class="py-lineno">356</tt>  <tt class="py-line">        <tt class="py-name">el</tt> <tt class="py-op">=</tt> <tt class="py-name">theta</tt> <tt class="py-op">*</tt> <tt class="py-number">180.0</tt><tt class="py-op">/</tt><tt class="py-name">math</tt><tt class="py-op">.</tt><tt class="py-name">pi</tt> <tt class="py-op">-</tt> <tt class="py-number">90.0</tt> </tt>
+<a name="L357"></a><tt class="py-lineno">357</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">az</tt><tt class="py-op">,</tt><tt class="py-name">el</tt> </tt>
+</div><a name="L358"></a><tt class="py-lineno">358</tt>  <tt class="py-line"> </tt>
+<a name="ScreenPositionControlFrame.get_xyz"></a><div id="ScreenPositionControlFrame.get_xyz-def"><a name="L359"></a><tt class="py-lineno">359</tt> <a class="py-toggle" href="#" id="ScreenPositionControlFrame.get_xyz-toggle" onclick="return toggle('ScreenPositionControlFrame.get_xyz');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html#get_xyz">get_xyz</a><tt class="py-op">( [...]
+</div><div id="ScreenPositionControlFrame.get_xyz-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ScreenPositionControlFrame.get_xyz-expanded"><a name="L360"></a><tt class="py-lineno">360</tt>  <tt class="py-line">        <tt class="py-name">az</tt><tt class="py-op">,</tt><tt class="py-name">el</tt> <tt class="py-op">=</tt> <tt class="py-name">az_el</tt> </tt>
+<a name="L361"></a><tt class="py-lineno">361</tt>  <tt class="py-line">        <tt class="py-name">theta</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">el</tt> <tt class="py-op">+</tt> <tt class="py-number">90.0</tt><tt class="py-op">)</tt> <tt class="py-op">/</tt> <tt class="py-number">180.0</tt> <tt class="py-op">*</tt> <tt class="py-name">math</tt><tt class="py-op">.</tt><tt class="py-name">pi</tt> </tt>
+<a name="L362"></a><tt class="py-lineno">362</tt>  <tt class="py-line">        <tt class="py-name">phi</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">az</tt> <tt class="py-op">+</tt> <tt class="py-number">90.0</tt><tt class="py-op">)</tt> <tt class="py-op">/</tt> <tt class="py-number">180.0</tt> <tt class="py-op">*</tt> <tt class="py-name">math</tt><tt class="py-op">.</tt><tt class="py-name">pi</tt> </tt>
+<a name="L363"></a><tt class="py-lineno">363</tt>  <tt class="py-line">        <tt class="py-name">y</tt> <tt class="py-op">=</tt> <tt class="py-op">-</tt><tt class="py-name">math</tt><tt class="py-op">.</tt><tt class="py-name">cos</tt><tt class="py-op">(</tt><tt class="py-name">theta</tt><tt class="py-op">)</tt> </tt>
+<a name="L364"></a><tt class="py-lineno">364</tt>  <tt class="py-line">        <tt class="py-name">rh</tt> <tt class="py-op">=</tt> <tt class="py-name">math</tt><tt class="py-op">.</tt><tt class="py-name">sin</tt><tt class="py-op">(</tt><tt class="py-name">theta</tt><tt class="py-op">)</tt> </tt>
+<a name="L365"></a><tt class="py-lineno">365</tt>  <tt class="py-line">        <tt class="py-name">x</tt> <tt class="py-op">=</tt> <tt class="py-op">-</tt><tt class="py-name">rh</tt> <tt class="py-op">*</tt> <tt class="py-name">math</tt><tt class="py-op">.</tt><tt class="py-name">cos</tt><tt class="py-op">(</tt><tt class="py-name">phi</tt><tt class="py-op">)</tt> </tt>
+<a name="L366"></a><tt class="py-lineno">366</tt>  <tt class="py-line">        <tt class="py-name">z</tt> <tt class="py-op">=</tt> <tt class="py-op">-</tt><tt class="py-name">rh</tt> <tt class="py-op">*</tt> <tt class="py-name">math</tt><tt class="py-op">.</tt><tt class="py-name">sin</tt><tt class="py-op">(</tt><tt class="py-name">phi</tt><tt class="py-op">)</tt> </tt>
+<a name="L367"></a><tt class="py-lineno">367</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">x</tt><tt class="py-op">,</tt><tt class="py-name">y</tt><tt class="py-op">,</tt><tt class="py-name">z</tt> </tt>
+</div><a name="L368"></a><tt class="py-lineno">368</tt>  <tt class="py-line"> </tt>
+<a name="ScreenPositionControlFrame.az_increase"></a><div id="ScreenPositionControlFrame.az_increase-def"><a name="L369"></a><tt class="py-lineno">369</tt> <a class="py-toggle" href="#" id="ScreenPositionControlFrame.az_increase-toggle" onclick="return toggle('ScreenPositionControlFrame.az_increase');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html#az_increase">az_increas [...]
+</div><a name="L370"></a><tt class="py-lineno">370</tt>  <tt class="py-line">        <tt class="py-name">az</tt><tt class="py-op">,</tt><tt class="py-name">el</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-203" class="py-name"><a title="VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.get_az_el" class="py-name" href="#" onclick="return doclink('link-203', 'get_az_el', 'link-116');">get_az_el</a></tt><tt class="py-op">(</tt>< [...]
+<a name="L371"></a><tt class="py-lineno">371</tt>  <tt class="py-line">        <tt class="py-name">az</tt> <tt class="py-op">=</tt> <tt class="py-name">az</tt> <tt class="py-op">+</tt> <tt class="py-number">5.0</tt> </tt>
+<a name="L372"></a><tt class="py-lineno">372</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">look_at_az_str</tt><tt class="py-op">.</tt><tt id="link-204" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-204', 'set', 'link-34');">set</a></tt><tt class="py-op">(</tt><tt class="py-string">"%.1f"</tt><tt class="py-op">%</tt><tt class="py-name">az</tt><tt class="py-op" [...]
+<a name="L373"></a><tt class="py-lineno">373</tt>  <tt class="py-line">        <tt class="py-name">x</tt><tt class="py-op">,</tt><tt class="py-name">y</tt><tt class="py-op">,</tt><tt class="py-name">z</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-205" class="py-name" targets="Method VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.get_xyz()=VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html#get_xyz"> [...]
+<a name="L374"></a><tt class="py-lineno">374</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">center_x_tk_var</tt><tt class="py-op">.</tt><tt id="link-206" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-206', 'set', 'link-34');">set</a></tt><tt class="py-op">(</tt><tt class="py-string">"%.4f"</tt><tt class="py-op">%</tt><tt class="py-name">x</tt><tt class="py-op" [...]
+<a name="L375"></a><tt class="py-lineno">375</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">center_y_tk_var</tt><tt class="py-op">.</tt><tt id="link-207" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-207', 'set', 'link-34');">set</a></tt><tt class="py-op">(</tt><tt class="py-string">"%.4f"</tt><tt class="py-op">%</tt><tt class="py-name">y</tt><tt class="py-op" [...]
+<a name="L376"></a><tt class="py-lineno">376</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">center_z_tk_var</tt><tt class="py-op">.</tt><tt id="link-208" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-208', 'set', 'link-34');">set</a></tt><tt class="py-op">(</tt><tt class="py-string">"%.4f"</tt><tt class="py-op">%</tt><tt class="py-name">z</tt><tt class="py-op" [...]
+<a name="L377"></a><tt class="py-lineno">377</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-209" class="py-name"><a title="VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.send_values
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.send_values
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.send_values
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.send_values
+VisionEgg.PyroApps.GridGUI.GridControlFrame.send_values
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.send_values
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.send_values
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.send_values
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.send_values
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.send_values" class="py-name" href="#" onclick="return doclink('link-209', 'send_values', 'link-37');">send_values</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L378"></a><tt class="py-lineno">378</tt>  <tt class="py-line">         </tt>
+<a name="ScreenPositionControlFrame.az_decrease"></a><div id="ScreenPositionControlFrame.az_decrease-def"><a name="L379"></a><tt class="py-lineno">379</tt> <a class="py-toggle" href="#" id="ScreenPositionControlFrame.az_decrease-toggle" onclick="return toggle('ScreenPositionControlFrame.az_decrease');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html#az_decrease">az_decreas [...]
+</div><a name="L380"></a><tt class="py-lineno">380</tt>  <tt class="py-line">        <tt class="py-name">az</tt><tt class="py-op">,</tt><tt class="py-name">el</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-210" class="py-name"><a title="VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.get_az_el" class="py-name" href="#" onclick="return doclink('link-210', 'get_az_el', 'link-116');">get_az_el</a></tt><tt class="py-op">(</tt>< [...]
+<a name="L381"></a><tt class="py-lineno">381</tt>  <tt class="py-line">        <tt class="py-name">az</tt> <tt class="py-op">=</tt> <tt class="py-name">az</tt> <tt class="py-op">-</tt> <tt class="py-number">5.0</tt> </tt>
+<a name="L382"></a><tt class="py-lineno">382</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">look_at_az_str</tt><tt class="py-op">.</tt><tt id="link-211" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-211', 'set', 'link-34');">set</a></tt><tt class="py-op">(</tt><tt class="py-string">"%.1f"</tt><tt class="py-op">%</tt><tt class="py-name">az</tt><tt class="py-op" [...]
+<a name="L383"></a><tt class="py-lineno">383</tt>  <tt class="py-line">        <tt class="py-name">x</tt><tt class="py-op">,</tt><tt class="py-name">y</tt><tt class="py-op">,</tt><tt class="py-name">z</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-212" class="py-name"><a title="VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.get_xyz" class="py-name" href="#" onclick="return doclink('link-212', 'get_xyz', 'link-205');">get_x [...]
+<a name="L384"></a><tt class="py-lineno">384</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">center_x_tk_var</tt><tt class="py-op">.</tt><tt id="link-213" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-213', 'set', 'link-34');">set</a></tt><tt class="py-op">(</tt><tt class="py-string">"%.4f"</tt><tt class="py-op">%</tt><tt class="py-name">x</tt><tt class="py-op" [...]
+<a name="L385"></a><tt class="py-lineno">385</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">center_y_tk_var</tt><tt class="py-op">.</tt><tt id="link-214" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-214', 'set', 'link-34');">set</a></tt><tt class="py-op">(</tt><tt class="py-string">"%.4f"</tt><tt class="py-op">%</tt><tt class="py-name">y</tt><tt class="py-op" [...]
+<a name="L386"></a><tt class="py-lineno">386</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">center_z_tk_var</tt><tt class="py-op">.</tt><tt id="link-215" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-215', 'set', 'link-34');">set</a></tt><tt class="py-op">(</tt><tt class="py-string">"%.4f"</tt><tt class="py-op">%</tt><tt class="py-name">z</tt><tt class="py-op" [...]
+<a name="L387"></a><tt class="py-lineno">387</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-216" class="py-name"><a title="VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.send_values
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.send_values
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.send_values
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.send_values
+VisionEgg.PyroApps.GridGUI.GridControlFrame.send_values
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.send_values
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.send_values
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.send_values
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.send_values
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.send_values" class="py-name" href="#" onclick="return doclink('link-216', 'send_values', 'link-37');">send_values</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L388"></a><tt class="py-lineno">388</tt>  <tt class="py-line">         </tt>
+<a name="ScreenPositionControlFrame.el_increase"></a><div id="ScreenPositionControlFrame.el_increase-def"><a name="L389"></a><tt class="py-lineno">389</tt> <a class="py-toggle" href="#" id="ScreenPositionControlFrame.el_increase-toggle" onclick="return toggle('ScreenPositionControlFrame.el_increase');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html#el_increase">el_increas [...]
+</div><a name="L390"></a><tt class="py-lineno">390</tt>  <tt class="py-line">        <tt class="py-name">az</tt><tt class="py-op">,</tt><tt class="py-name">el</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-217" class="py-name"><a title="VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.get_az_el" class="py-name" href="#" onclick="return doclink('link-217', 'get_az_el', 'link-116');">get_az_el</a></tt><tt class="py-op">(</tt>< [...]
+<a name="L391"></a><tt class="py-lineno">391</tt>  <tt class="py-line">        <tt class="py-name">el</tt> <tt class="py-op">=</tt> <tt class="py-name">el</tt> <tt class="py-op">+</tt> <tt class="py-number">5.0</tt> </tt>
+<a name="L392"></a><tt class="py-lineno">392</tt>  <tt class="py-line">        <tt class="py-name">el</tt> <tt class="py-op">=</tt> <tt class="py-name">min</tt><tt class="py-op">(</tt><tt class="py-name">el</tt><tt class="py-op">,</tt><tt class="py-number">90.0</tt><tt class="py-op">)</tt> </tt>
+<a name="L393"></a><tt class="py-lineno">393</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">look_at_el_str</tt><tt class="py-op">.</tt><tt id="link-218" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-218', 'set', 'link-34');">set</a></tt><tt class="py-op">(</tt><tt class="py-string">"%.1f"</tt><tt class="py-op">%</tt><tt class="py-name">el</tt><tt class="py-op" [...]
+<a name="L394"></a><tt class="py-lineno">394</tt>  <tt class="py-line">        <tt class="py-name">x</tt><tt class="py-op">,</tt><tt class="py-name">y</tt><tt class="py-op">,</tt><tt class="py-name">z</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-219" class="py-name"><a title="VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.get_xyz" class="py-name" href="#" onclick="return doclink('link-219', 'get_xyz', 'link-205');">get_x [...]
+<a name="L395"></a><tt class="py-lineno">395</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">center_x_tk_var</tt><tt class="py-op">.</tt><tt id="link-220" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-220', 'set', 'link-34');">set</a></tt><tt class="py-op">(</tt><tt class="py-string">"%.4f"</tt><tt class="py-op">%</tt><tt class="py-name">x</tt><tt class="py-op" [...]
+<a name="L396"></a><tt class="py-lineno">396</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">center_y_tk_var</tt><tt class="py-op">.</tt><tt id="link-221" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-221', 'set', 'link-34');">set</a></tt><tt class="py-op">(</tt><tt class="py-string">"%.4f"</tt><tt class="py-op">%</tt><tt class="py-name">y</tt><tt class="py-op" [...]
+<a name="L397"></a><tt class="py-lineno">397</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">center_z_tk_var</tt><tt class="py-op">.</tt><tt id="link-222" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-222', 'set', 'link-34');">set</a></tt><tt class="py-op">(</tt><tt class="py-string">"%.4f"</tt><tt class="py-op">%</tt><tt class="py-name">z</tt><tt class="py-op" [...]
+<a name="L398"></a><tt class="py-lineno">398</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-223" class="py-name"><a title="VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.send_values
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.send_values
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.send_values
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.send_values
+VisionEgg.PyroApps.GridGUI.GridControlFrame.send_values
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.send_values
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.send_values
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.send_values
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.send_values
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.send_values" class="py-name" href="#" onclick="return doclink('link-223', 'send_values', 'link-37');">send_values</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L399"></a><tt class="py-lineno">399</tt>  <tt class="py-line">         </tt>
+<a name="ScreenPositionControlFrame.el_decrease"></a><div id="ScreenPositionControlFrame.el_decrease-def"><a name="L400"></a><tt class="py-lineno">400</tt> <a class="py-toggle" href="#" id="ScreenPositionControlFrame.el_decrease-toggle" onclick="return toggle('ScreenPositionControlFrame.el_decrease');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html#el_decrease">el_decreas [...]
+</div><a name="L401"></a><tt class="py-lineno">401</tt>  <tt class="py-line">        <tt class="py-name">az</tt><tt class="py-op">,</tt><tt class="py-name">el</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-224" class="py-name"><a title="VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.get_az_el" class="py-name" href="#" onclick="return doclink('link-224', 'get_az_el', 'link-116');">get_az_el</a></tt><tt class="py-op">(</tt>< [...]
+<a name="L402"></a><tt class="py-lineno">402</tt>  <tt class="py-line">        <tt class="py-name">el</tt> <tt class="py-op">=</tt> <tt class="py-name">el</tt> <tt class="py-op">-</tt> <tt class="py-number">5.0</tt> </tt>
+<a name="L403"></a><tt class="py-lineno">403</tt>  <tt class="py-line">        <tt class="py-name">el</tt> <tt class="py-op">=</tt> <tt class="py-name">max</tt><tt class="py-op">(</tt><tt class="py-name">el</tt><tt class="py-op">,</tt><tt class="py-op">-</tt><tt class="py-number">90.0</tt><tt class="py-op">)</tt> </tt>
+<a name="L404"></a><tt class="py-lineno">404</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">look_at_el_str</tt><tt class="py-op">.</tt><tt id="link-225" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-225', 'set', 'link-34');">set</a></tt><tt class="py-op">(</tt><tt class="py-string">"%.1f"</tt><tt class="py-op">%</tt><tt class="py-name">el</tt><tt class="py-op" [...]
+<a name="L405"></a><tt class="py-lineno">405</tt>  <tt class="py-line">        <tt class="py-name">x</tt><tt class="py-op">,</tt><tt class="py-name">y</tt><tt class="py-op">,</tt><tt class="py-name">z</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-226" class="py-name"><a title="VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.get_xyz" class="py-name" href="#" onclick="return doclink('link-226', 'get_xyz', 'link-205');">get_x [...]
+<a name="L406"></a><tt class="py-lineno">406</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">center_x_tk_var</tt><tt class="py-op">.</tt><tt id="link-227" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-227', 'set', 'link-34');">set</a></tt><tt class="py-op">(</tt><tt class="py-string">"%.4f"</tt><tt class="py-op">%</tt><tt class="py-name">x</tt><tt class="py-op" [...]
+<a name="L407"></a><tt class="py-lineno">407</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">center_y_tk_var</tt><tt class="py-op">.</tt><tt id="link-228" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-228', 'set', 'link-34');">set</a></tt><tt class="py-op">(</tt><tt class="py-string">"%.4f"</tt><tt class="py-op">%</tt><tt class="py-name">y</tt><tt class="py-op" [...]
+<a name="L408"></a><tt class="py-lineno">408</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">center_z_tk_var</tt><tt class="py-op">.</tt><tt id="link-229" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-229', 'set', 'link-34');">set</a></tt><tt class="py-op">(</tt><tt class="py-string">"%.4f"</tt><tt class="py-op">%</tt><tt class="py-name">z</tt><tt class="py-op" [...]
+<a name="L409"></a><tt class="py-lineno">409</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-230" class="py-name"><a title="VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.send_values
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.send_values
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.send_values
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.send_values
+VisionEgg.PyroApps.GridGUI.GridControlFrame.send_values
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.send_values
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.send_values
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.send_values
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.send_values
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.send_values" class="py-name" href="#" onclick="return doclink('link-230', 'send_values', 'link-37');">send_values</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L410"></a><tt class="py-lineno">410</tt>  <tt class="py-line"> </tt>
+<a name="ScreenPositionControlFrame.up_az_increase"></a><div id="ScreenPositionControlFrame.up_az_increase-def"><a name="L411"></a><tt class="py-lineno">411</tt> <a class="py-toggle" href="#" id="ScreenPositionControlFrame.up_az_increase-toggle" onclick="return toggle('ScreenPositionControlFrame.up_az_increase');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html#up_az_incre [...]
+</div><a name="L412"></a><tt class="py-lineno">412</tt>  <tt class="py-line">        <tt class="py-name">az</tt><tt class="py-op">,</tt><tt class="py-name">el</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-231" class="py-name"><a title="VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.get_az_el" class="py-name" href="#" onclick="return doclink('link-231', 'get_az_el', 'link-116');">get_az_el</a></tt><tt class="py-op">(</tt>< [...]
+<a name="L413"></a><tt class="py-lineno">413</tt>  <tt class="py-line">        <tt class="py-name">az</tt> <tt class="py-op">=</tt> <tt class="py-name">az</tt> <tt class="py-op">+</tt> <tt class="py-number">5.0</tt> </tt>
+<a name="L414"></a><tt class="py-lineno">414</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">up_az_str</tt><tt class="py-op">.</tt><tt id="link-233" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-233', 'set', 'link-34');">set</a></tt><tt class="py-op">(</tt><tt class="py-string">"%.1f"</tt><tt class="py-op">%</tt><tt class="py-name">az</tt><tt class="py-op">)</t [...]
+<a name="L415"></a><tt class="py-lineno">415</tt>  <tt class="py-line">        <tt class="py-name">x</tt><tt class="py-op">,</tt><tt class="py-name">y</tt><tt class="py-op">,</tt><tt class="py-name">z</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-234" class="py-name"><a title="VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.get_xyz" class="py-name" href="#" onclick="return doclink('link-234', 'get_xyz', 'link-205');">get_x [...]
+<a name="L416"></a><tt class="py-lineno">416</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">up_x_tk_var</tt><tt class="py-op">.</tt><tt id="link-235" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-235', 'set', 'link-34');">set</a></tt><tt class="py-op">(</tt><tt class="py-string">"%.4f"</tt><tt class="py-op">%</tt><tt class="py-name">x</tt><tt class="py-op">)</ [...]
+<a name="L417"></a><tt class="py-lineno">417</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">up_y_tk_var</tt><tt class="py-op">.</tt><tt id="link-236" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-236', 'set', 'link-34');">set</a></tt><tt class="py-op">(</tt><tt class="py-string">"%.4f"</tt><tt class="py-op">%</tt><tt class="py-name">y</tt><tt class="py-op">)</ [...]
+<a name="L418"></a><tt class="py-lineno">418</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">up_z_tk_var</tt><tt class="py-op">.</tt><tt id="link-237" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-237', 'set', 'link-34');">set</a></tt><tt class="py-op">(</tt><tt class="py-string">"%.4f"</tt><tt class="py-op">%</tt><tt class="py-name">z</tt><tt class="py-op">)</ [...]
+<a name="L419"></a><tt class="py-lineno">419</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-238" class="py-name"><a title="VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.send_values
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.send_values
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.send_values
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.send_values
+VisionEgg.PyroApps.GridGUI.GridControlFrame.send_values
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.send_values
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.send_values
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.send_values
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.send_values
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.send_values" class="py-name" href="#" onclick="return doclink('link-238', 'send_values', 'link-37');">send_values</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L420"></a><tt class="py-lineno">420</tt>  <tt class="py-line">         </tt>
+<a name="ScreenPositionControlFrame.up_az_decrease"></a><div id="ScreenPositionControlFrame.up_az_decrease-def"><a name="L421"></a><tt class="py-lineno">421</tt> <a class="py-toggle" href="#" id="ScreenPositionControlFrame.up_az_decrease-toggle" onclick="return toggle('ScreenPositionControlFrame.up_az_decrease');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html#up_az_decre [...]
+</div><a name="L422"></a><tt class="py-lineno">422</tt>  <tt class="py-line">        <tt class="py-name">az</tt><tt class="py-op">,</tt><tt class="py-name">el</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-239" class="py-name"><a title="VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.get_az_el" class="py-name" href="#" onclick="return doclink('link-239', 'get_az_el', 'link-116');">get_az_el</a></tt><tt class="py-op">(</tt>< [...]
+<a name="L423"></a><tt class="py-lineno">423</tt>  <tt class="py-line">        <tt class="py-name">az</tt> <tt class="py-op">=</tt> <tt class="py-name">az</tt> <tt class="py-op">-</tt> <tt class="py-number">5.0</tt> </tt>
+<a name="L424"></a><tt class="py-lineno">424</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">up_az_str</tt><tt class="py-op">.</tt><tt id="link-241" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-241', 'set', 'link-34');">set</a></tt><tt class="py-op">(</tt><tt class="py-string">"%.1f"</tt><tt class="py-op">%</tt><tt class="py-name">az</tt><tt class="py-op">)</t [...]
+<a name="L425"></a><tt class="py-lineno">425</tt>  <tt class="py-line">        <tt class="py-name">x</tt><tt class="py-op">,</tt><tt class="py-name">y</tt><tt class="py-op">,</tt><tt class="py-name">z</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-242" class="py-name"><a title="VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.get_xyz" class="py-name" href="#" onclick="return doclink('link-242', 'get_xyz', 'link-205');">get_x [...]
+<a name="L426"></a><tt class="py-lineno">426</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">up_x_tk_var</tt><tt class="py-op">.</tt><tt id="link-243" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-243', 'set', 'link-34');">set</a></tt><tt class="py-op">(</tt><tt class="py-string">"%.4f"</tt><tt class="py-op">%</tt><tt class="py-name">x</tt><tt class="py-op">)</ [...]
+<a name="L427"></a><tt class="py-lineno">427</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">up_y_tk_var</tt><tt class="py-op">.</tt><tt id="link-244" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-244', 'set', 'link-34');">set</a></tt><tt class="py-op">(</tt><tt class="py-string">"%.4f"</tt><tt class="py-op">%</tt><tt class="py-name">y</tt><tt class="py-op">)</ [...]
+<a name="L428"></a><tt class="py-lineno">428</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">up_z_tk_var</tt><tt class="py-op">.</tt><tt id="link-245" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-245', 'set', 'link-34');">set</a></tt><tt class="py-op">(</tt><tt class="py-string">"%.4f"</tt><tt class="py-op">%</tt><tt class="py-name">z</tt><tt class="py-op">)</ [...]
+<a name="L429"></a><tt class="py-lineno">429</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-246" class="py-name"><a title="VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.send_values
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.send_values
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.send_values
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.send_values
+VisionEgg.PyroApps.GridGUI.GridControlFrame.send_values
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.send_values
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.send_values
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.send_values
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.send_values
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.send_values" class="py-name" href="#" onclick="return doclink('link-246', 'send_values', 'link-37');">send_values</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L430"></a><tt class="py-lineno">430</tt>  <tt class="py-line">         </tt>
+<a name="ScreenPositionControlFrame.up_el_increase"></a><div id="ScreenPositionControlFrame.up_el_increase-def"><a name="L431"></a><tt class="py-lineno">431</tt> <a class="py-toggle" href="#" id="ScreenPositionControlFrame.up_el_increase-toggle" onclick="return toggle('ScreenPositionControlFrame.up_el_increase');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html#up_el_incre [...]
+</div><a name="L432"></a><tt class="py-lineno">432</tt>  <tt class="py-line">        <tt class="py-name">az</tt><tt class="py-op">,</tt><tt class="py-name">el</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-247" class="py-name"><a title="VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.get_az_el" class="py-name" href="#" onclick="return doclink('link-247', 'get_az_el', 'link-116');">get_az_el</a></tt><tt class="py-op">(</tt>< [...]
+<a name="L433"></a><tt class="py-lineno">433</tt>  <tt class="py-line">        <tt class="py-name">el</tt> <tt class="py-op">=</tt> <tt class="py-name">el</tt> <tt class="py-op">+</tt> <tt class="py-number">5.0</tt> </tt>
+<a name="L434"></a><tt class="py-lineno">434</tt>  <tt class="py-line">        <tt class="py-name">el</tt> <tt class="py-op">=</tt> <tt class="py-name">min</tt><tt class="py-op">(</tt><tt class="py-name">el</tt><tt class="py-op">,</tt><tt class="py-number">90.0</tt><tt class="py-op">)</tt> </tt>
+<a name="L435"></a><tt class="py-lineno">435</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">up_el_str</tt><tt class="py-op">.</tt><tt id="link-249" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-249', 'set', 'link-34');">set</a></tt><tt class="py-op">(</tt><tt class="py-string">"%.1f"</tt><tt class="py-op">%</tt><tt class="py-name">el</tt><tt class="py-op">)</t [...]
+<a name="L436"></a><tt class="py-lineno">436</tt>  <tt class="py-line">        <tt class="py-name">x</tt><tt class="py-op">,</tt><tt class="py-name">y</tt><tt class="py-op">,</tt><tt class="py-name">z</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-250" class="py-name"><a title="VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.get_xyz" class="py-name" href="#" onclick="return doclink('link-250', 'get_xyz', 'link-205');">get_x [...]
+<a name="L437"></a><tt class="py-lineno">437</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">up_x_tk_var</tt><tt class="py-op">.</tt><tt id="link-251" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-251', 'set', 'link-34');">set</a></tt><tt class="py-op">(</tt><tt class="py-string">"%.4f"</tt><tt class="py-op">%</tt><tt class="py-name">x</tt><tt class="py-op">)</ [...]
+<a name="L438"></a><tt class="py-lineno">438</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">up_y_tk_var</tt><tt class="py-op">.</tt><tt id="link-252" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-252', 'set', 'link-34');">set</a></tt><tt class="py-op">(</tt><tt class="py-string">"%.4f"</tt><tt class="py-op">%</tt><tt class="py-name">y</tt><tt class="py-op">)</ [...]
+<a name="L439"></a><tt class="py-lineno">439</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">up_z_tk_var</tt><tt class="py-op">.</tt><tt id="link-253" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-253', 'set', 'link-34');">set</a></tt><tt class="py-op">(</tt><tt class="py-string">"%.4f"</tt><tt class="py-op">%</tt><tt class="py-name">z</tt><tt class="py-op">)</ [...]
+<a name="L440"></a><tt class="py-lineno">440</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-254" class="py-name"><a title="VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.send_values
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.send_values
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.send_values
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.send_values
+VisionEgg.PyroApps.GridGUI.GridControlFrame.send_values
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.send_values
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.send_values
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.send_values
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.send_values
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.send_values" class="py-name" href="#" onclick="return doclink('link-254', 'send_values', 'link-37');">send_values</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L441"></a><tt class="py-lineno">441</tt>  <tt class="py-line">         </tt>
+<a name="ScreenPositionControlFrame.up_el_decrease"></a><div id="ScreenPositionControlFrame.up_el_decrease-def"><a name="L442"></a><tt class="py-lineno">442</tt> <a class="py-toggle" href="#" id="ScreenPositionControlFrame.up_el_decrease-toggle" onclick="return toggle('ScreenPositionControlFrame.up_el_decrease');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html#up_el_decre [...]
+</div><a name="L443"></a><tt class="py-lineno">443</tt>  <tt class="py-line">        <tt class="py-name">az</tt><tt class="py-op">,</tt><tt class="py-name">el</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-255" class="py-name"><a title="VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.get_az_el" class="py-name" href="#" onclick="return doclink('link-255', 'get_az_el', 'link-116');">get_az_el</a></tt><tt class="py-op">(</tt>< [...]
+<a name="L444"></a><tt class="py-lineno">444</tt>  <tt class="py-line">        <tt class="py-name">el</tt> <tt class="py-op">=</tt> <tt class="py-name">el</tt> <tt class="py-op">-</tt> <tt class="py-number">5.0</tt> </tt>
+<a name="L445"></a><tt class="py-lineno">445</tt>  <tt class="py-line">        <tt class="py-name">el</tt> <tt class="py-op">=</tt> <tt class="py-name">max</tt><tt class="py-op">(</tt><tt class="py-name">el</tt><tt class="py-op">,</tt><tt class="py-op">-</tt><tt class="py-number">90.0</tt><tt class="py-op">)</tt> </tt>
+<a name="L446"></a><tt class="py-lineno">446</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">up_el_str</tt><tt class="py-op">.</tt><tt id="link-257" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-257', 'set', 'link-34');">set</a></tt><tt class="py-op">(</tt><tt class="py-string">"%.1f"</tt><tt class="py-op">%</tt><tt class="py-name">el</tt><tt class="py-op">)</t [...]
+<a name="L447"></a><tt class="py-lineno">447</tt>  <tt class="py-line">        <tt class="py-name">x</tt><tt class="py-op">,</tt><tt class="py-name">y</tt><tt class="py-op">,</tt><tt class="py-name">z</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-258" class="py-name"><a title="VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.get_xyz" class="py-name" href="#" onclick="return doclink('link-258', 'get_xyz', 'link-205');">get_x [...]
+<a name="L448"></a><tt class="py-lineno">448</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">up_x_tk_var</tt><tt class="py-op">.</tt><tt id="link-259" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-259', 'set', 'link-34');">set</a></tt><tt class="py-op">(</tt><tt class="py-string">"%.4f"</tt><tt class="py-op">%</tt><tt class="py-name">x</tt><tt class="py-op">)</ [...]
+<a name="L449"></a><tt class="py-lineno">449</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">up_y_tk_var</tt><tt class="py-op">.</tt><tt id="link-260" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-260', 'set', 'link-34');">set</a></tt><tt class="py-op">(</tt><tt class="py-string">"%.4f"</tt><tt class="py-op">%</tt><tt class="py-name">y</tt><tt class="py-op">)</ [...]
+<a name="L450"></a><tt class="py-lineno">450</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">up_z_tk_var</tt><tt class="py-op">.</tt><tt id="link-261" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-261', 'set', 'link-34');">set</a></tt><tt class="py-op">(</tt><tt class="py-string">"%.4f"</tt><tt class="py-op">%</tt><tt class="py-name">z</tt><tt class="py-op">)</ [...]
+<a name="L451"></a><tt class="py-lineno">451</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-262" class="py-name"><a title="VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.send_values
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.send_values
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.send_values
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.send_values
+VisionEgg.PyroApps.GridGUI.GridControlFrame.send_values
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.send_values
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.send_values
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.send_values
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.send_values
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.send_values" class="py-name" href="#" onclick="return doclink('link-262', 'send_values', 'link-37');">send_values</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L452"></a><tt class="py-lineno">452</tt>  <tt class="py-line"> </tt>
+<a name="ScreenPositionControlFrame.save"></a><div id="ScreenPositionControlFrame.save-def"><a name="L453"></a><tt class="py-lineno">453</tt> <a class="py-toggle" href="#" id="ScreenPositionControlFrame.save-toggle" onclick="return toggle('ScreenPositionControlFrame.save');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html#save">save</a><tt class="py-op">(</tt><tt class="py [...]
+</div><div id="ScreenPositionControlFrame.save-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ScreenPositionControlFrame.save-expanded"><a name="L454"></a><tt class="py-lineno">454</tt>  <tt class="py-line">        <tt class="py-name">filename</tt> <tt class="py-op">=</tt> <tt id="link-263" class="py-name"><a title="VisionEgg.GUI.tkFileDialog" class="py-name" href="#" onclick="return doclink('link-263', 'tkFileDialog', 'link-1');">tkFileDialog</a></tt><tt cla [...]
+<a name="L455"></a><tt class="py-lineno">455</tt>  <tt class="py-line">        <tt class="py-name">fd</tt> <tt class="py-op">=</tt> <tt class="py-name">open</tt><tt class="py-op">(</tt><tt class="py-name">filename</tt><tt class="py-op">,</tt><tt class="py-string">"wb"</tt><tt class="py-op">)</tt> </tt>
+<a name="L456"></a><tt class="py-lineno">456</tt>  <tt class="py-line">        <tt class="py-name">save_dict</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-264" class="py-name" targets="Method VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.get_param_dict()=VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html#get_param_dict"><a title="VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.get_ [...]
+<a name="L457"></a><tt class="py-lineno">457</tt>  <tt class="py-line">        <tt class="py-name">pickle</tt><tt class="py-op">.</tt><tt class="py-name">dump</tt><tt class="py-op">(</tt> <tt class="py-name">save_dict</tt><tt class="py-op">,</tt> <tt class="py-name">fd</tt> <tt class="py-op">)</tt> </tt>
+</div><a name="L458"></a><tt class="py-lineno">458</tt>  <tt class="py-line"> </tt>
+<a name="ScreenPositionControlFrame.load"></a><div id="ScreenPositionControlFrame.load-def"><a name="L459"></a><tt class="py-lineno">459</tt> <a class="py-toggle" href="#" id="ScreenPositionControlFrame.load-toggle" onclick="return toggle('ScreenPositionControlFrame.load');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html#load">load</a><tt class="py-op">(</tt><tt class="py [...]
+</div><div id="ScreenPositionControlFrame.load-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ScreenPositionControlFrame.load-expanded"><a name="L460"></a><tt class="py-lineno">460</tt>  <tt class="py-line">        <tt class="py-name">filename</tt> <tt class="py-op">=</tt> <tt id="link-265" class="py-name"><a title="VisionEgg.GUI.tkFileDialog" class="py-name" href="#" onclick="return doclink('link-265', 'tkFileDialog', 'link-1');">tkFileDialog</a></tt><tt cla [...]
+<a name="L461"></a><tt class="py-lineno">461</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">filename</tt><tt class="py-op">:</tt> </tt>
+<a name="L462"></a><tt class="py-lineno">462</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> </tt>
+<a name="L463"></a><tt class="py-lineno">463</tt>  <tt class="py-line">        <tt class="py-name">fd</tt> <tt class="py-op">=</tt> <tt class="py-name">open</tt><tt class="py-op">(</tt><tt class="py-name">filename</tt><tt class="py-op">,</tt><tt class="py-string">"rb"</tt><tt class="py-op">)</tt> </tt>
+<a name="L464"></a><tt class="py-lineno">464</tt>  <tt class="py-line">        <tt class="py-name">file_contents</tt> <tt class="py-op">=</tt> <tt class="py-name">fd</tt><tt class="py-op">.</tt><tt class="py-name">read</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L465"></a><tt class="py-lineno">465</tt>  <tt class="py-line">        <tt class="py-name">file_contents</tt> <tt class="py-op">=</tt> <tt class="py-name">file_contents</tt><tt class="py-op">.</tt><tt class="py-name">replace</tt><tt class="py-op">(</tt><tt class="py-string">'\r\n'</tt><tt class="py-op">,</tt><tt class="py-string">'\n'</tt><tt class="py-op">)</tt> <tt class="py-comment"># deal with Windows newlines</tt> </tt>
+<a name="L466"></a><tt class="py-lineno">466</tt>  <tt class="py-line">        <tt class="py-name">memory_file</tt> <tt class="py-op">=</tt> <tt class="py-name">StringIO</tt><tt class="py-op">.</tt><tt class="py-name">StringIO</tt><tt class="py-op">(</tt><tt class="py-name">file_contents</tt><tt class="py-op">)</tt> </tt>
+<a name="L467"></a><tt class="py-lineno">467</tt>  <tt class="py-line">        <tt class="py-name">load_dict</tt> <tt class="py-op">=</tt> <tt class="py-name">pickle</tt><tt class="py-op">.</tt><tt id="link-266" class="py-name"><a title="VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.load
+VisionEgg.QuickTime.MovieTexture.load
+VisionEgg.Textures.Texture.load" class="py-name" href="#" onclick="return doclink('link-266', 'load', 'link-169');">load</a></tt><tt class="py-op">(</tt><tt class="py-name">memory_file</tt><tt class="py-op">)</tt> </tt>
+<a name="L468"></a><tt class="py-lineno">468</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-267" class="py-name" targets="Method VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.set_param_dict()=VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#set_param_dict,Method VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.set_param_dict()=VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.h [...]
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.set_param_dict" class="py-name" href="#" onclick="return doclink('link-267', 'set_param_dict', 'link-267');">set_param_dict</a></tt><tt class="py-op">(</tt> <tt class="py-name">load_dict</tt> <tt class="py-op">)</tt> </tt>
+<a name="L469"></a><tt class="py-lineno">469</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-268" class="py-name"><a title="VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.send_values
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.send_values
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.send_values
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.send_values
+VisionEgg.PyroApps.GridGUI.GridControlFrame.send_values
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.send_values
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.send_values
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.send_values
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.send_values
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.send_values" class="py-name" href="#" onclick="return doclink('link-268', 'send_values', 'link-37');">send_values</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L470"></a><tt class="py-lineno">470</tt>  <tt class="py-line"> </tt>
+<a name="ScreenPositionControlFrame.get_shortname"></a><div id="ScreenPositionControlFrame.get_shortname-def"><a name="L471"></a><tt class="py-lineno">471</tt> <a class="py-toggle" href="#" id="ScreenPositionControlFrame.get_shortname-toggle" onclick="return toggle('ScreenPositionControlFrame.get_shortname');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html#get_shortname"> [...]
+</div><div id="ScreenPositionControlFrame.get_shortname-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ScreenPositionControlFrame.get_shortname-expanded"><a name="L472"></a><tt class="py-lineno">472</tt>  <tt class="py-line">        <tt class="py-docstring">"""Used as basename for saving parameter files"""</tt> </tt>
+<a name="L473"></a><tt class="py-lineno">473</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-string">"screen_position"</tt> </tt>
+</div><a name="L474"></a><tt class="py-lineno">474</tt>  <tt class="py-line"> </tt>
+<a name="ScreenPositionControlFrame.get_param_dict"></a><div id="ScreenPositionControlFrame.get_param_dict-def"><a name="L475"></a><tt class="py-lineno">475</tt> <a class="py-toggle" href="#" id="ScreenPositionControlFrame.get_param_dict-toggle" onclick="return toggle('ScreenPositionControlFrame.get_param_dict');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html#get_param_d [...]
+</div><div id="ScreenPositionControlFrame.get_param_dict-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ScreenPositionControlFrame.get_param_dict-expanded"><a name="L476"></a><tt class="py-lineno">476</tt>  <tt class="py-line">        <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L477"></a><tt class="py-lineno">477</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">param_name</tt> <tt class="py-keyword">in</tt> <tt class="py-name">dir</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L478"></a><tt class="py-lineno">478</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">param_name</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-number">2</tt><tt class="py-op">]</tt> <tt class="py-op">!=</tt> <tt class="py-string">'__'</tt> <tt class="py-keyword">and</tt> <tt class="py-name">param_name</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">2</tt><tt class="py-op">:</tt><tt class="py-op" [...]
+<a name="L479"></a><tt class="py-lineno">479</tt>  <tt class="py-line">                <tt class="py-name">result</tt><tt class="py-op">[</tt><tt class="py-name">param_name</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">getattr</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op">,</tt><tt class="py-name">param_name</tt><tt class="py-op">)</tt> </tt>
+<a name="L480"></a><tt class="py-lineno">480</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">result</tt> </tt>
+</div><a name="L481"></a><tt class="py-lineno">481</tt>  <tt class="py-line"> </tt>
+<a name="ScreenPositionControlFrame.get_type"></a><div id="ScreenPositionControlFrame.get_type-def"><a name="L482"></a><tt class="py-lineno">482</tt> <a class="py-toggle" href="#" id="ScreenPositionControlFrame.get_type-toggle" onclick="return toggle('ScreenPositionControlFrame.get_type');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html#get_type">get_type</a><tt class="py [...]
+</div><div id="ScreenPositionControlFrame.get_type-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ScreenPositionControlFrame.get_type-expanded"><a name="L483"></a><tt class="py-lineno">483</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-string">"screenPositionGUI"</tt> </tt>
+</div><a name="L484"></a><tt class="py-lineno">484</tt>  <tt class="py-line">     </tt>
+<a name="ScreenPositionControlFrame.set_param_dict"></a><div id="ScreenPositionControlFrame.set_param_dict-def"><a name="L485"></a><tt class="py-lineno">485</tt> <a class="py-toggle" href="#" id="ScreenPositionControlFrame.set_param_dict-toggle" onclick="return toggle('ScreenPositionControlFrame.set_param_dict');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html#set_param_d [...]
+</div><div id="ScreenPositionControlFrame.set_param_dict-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ScreenPositionControlFrame.set_param_dict-expanded"><a name="L486"></a><tt class="py-lineno">486</tt>  <tt class="py-line">        <tt class="py-name">orig_params</tt> <tt class="py-op">=</tt> <tt class="py-name">dir</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op">)</tt> </tt>
+<a name="L487"></a><tt class="py-lineno">487</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">new_param_name</tt> <tt class="py-keyword">in</tt> <tt class="py-name">new_param_dict</tt><tt class="py-op">.</tt><tt class="py-name">keys</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L488"></a><tt class="py-lineno">488</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">new_param_name</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-number">2</tt><tt class="py-op">]</tt> <tt class="py-op">!=</tt> <tt class="py-string">'__'</tt> <tt class="py-keyword">and</tt> <tt class="py-name">new_param_name</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">2</tt><tt class="py-op">:</tt><tt class [...]
+<a name="L489"></a><tt class="py-lineno">489</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">new_param_name</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">orig_params</tt><tt class="py-op">:</tt> </tt>
+<a name="L490"></a><tt class="py-lineno">490</tt>  <tt class="py-line">                    <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">'Gave parameter "%s", which I do not know about.'</tt><tt class="py-op">%</tt><tt class="py-op">(</tt><tt class="py-name">new_param_name</tt><tt class="py-op">,</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L491"></a><tt class="py-lineno">491</tt>  <tt class="py-line">                <tt class="py-name">setattr</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op">,</tt><tt class="py-name">new_param_name</tt><tt class="py-op">,</tt><tt class="py-name">new_param_dict</tt><tt class="py-op">[</tt><tt class="py-name">new_param_name</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L492"></a><tt class="py-lineno">492</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">left_tk_var</tt><tt class="py-op">.</tt><tt id="link-269" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-269', 'set', 'link-34');">set</a></tt><tt class="py-op">(</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py- [...]
+<a name="L493"></a><tt class="py-lineno">493</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">right_tk_var</tt><tt class="py-op">.</tt><tt id="link-271" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-271', 'set', 'link-34');">set</a></tt><tt class="py-op">(</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py [...]
+<a name="L494"></a><tt class="py-lineno">494</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">top_tk_var</tt><tt class="py-op">.</tt><tt id="link-273" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-273', 'set', 'link-34');">set</a></tt><tt class="py-op">(</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-o [...]
+<a name="L495"></a><tt class="py-lineno">495</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">bottom_tk_var</tt><tt class="py-op">.</tt><tt id="link-274" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-274', 'set', 'link-34');">set</a></tt><tt class="py-op">(</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="p [...]
+<a name="L496"></a><tt class="py-lineno">496</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">near_tk_var</tt><tt class="py-op">.</tt><tt id="link-275" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-275', 'set', 'link-34');">set</a></tt><tt class="py-op">(</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py- [...]
+<a name="L497"></a><tt class="py-lineno">497</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">far_tk_var</tt><tt class="py-op">.</tt><tt id="link-276" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-276', 'set', 'link-34');">set</a></tt><tt class="py-op">(</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-o [...]
+<a name="L498"></a><tt class="py-lineno">498</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">eye_x_tk_var</tt><tt class="py-op">.</tt><tt id="link-277" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-277', 'set', 'link-34');">set</a></tt><tt class="py-op">(</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py [...]
+<a name="L499"></a><tt class="py-lineno">499</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">eye_y_tk_var</tt><tt class="py-op">.</tt><tt id="link-278" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-278', 'set', 'link-34');">set</a></tt><tt class="py-op">(</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py [...]
+<a name="L500"></a><tt class="py-lineno">500</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">eye_z_tk_var</tt><tt class="py-op">.</tt><tt id="link-279" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-279', 'set', 'link-34');">set</a></tt><tt class="py-op">(</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py [...]
+<a name="L501"></a><tt class="py-lineno">501</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">center_x_tk_var</tt><tt class="py-op">.</tt><tt id="link-280" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-280', 'set', 'link-34');">set</a></tt><tt class="py-op">(</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class= [...]
+<a name="L502"></a><tt class="py-lineno">502</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">center_y_tk_var</tt><tt class="py-op">.</tt><tt id="link-281" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-281', 'set', 'link-34');">set</a></tt><tt class="py-op">(</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class= [...]
+<a name="L503"></a><tt class="py-lineno">503</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">center_z_tk_var</tt><tt class="py-op">.</tt><tt id="link-282" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-282', 'set', 'link-34');">set</a></tt><tt class="py-op">(</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class= [...]
+<a name="L504"></a><tt class="py-lineno">504</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">up_x_tk_var</tt><tt class="py-op">.</tt><tt id="link-283" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-283', 'set', 'link-34');">set</a></tt><tt class="py-op">(</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py- [...]
+<a name="L505"></a><tt class="py-lineno">505</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">up_y_tk_var</tt><tt class="py-op">.</tt><tt id="link-285" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-285', 'set', 'link-34');">set</a></tt><tt class="py-op">(</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py- [...]
+<a name="L506"></a><tt class="py-lineno">506</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">up_z_tk_var</tt><tt class="py-op">.</tt><tt id="link-287" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-287', 'set', 'link-34');">set</a></tt><tt class="py-op">(</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py- [...]
+</div><a name="L507"></a><tt class="py-lineno">507</tt>  <tt class="py-line">     </tt>
+<a name="ScreenPositionControlFrame.get_parameters_as_strings"></a><div id="ScreenPositionControlFrame.get_parameters_as_strings-def"><a name="L508"></a><tt class="py-lineno">508</tt> <a class="py-toggle" href="#" id="ScreenPositionControlFrame.get_parameters_as_strings-toggle" onclick="return toggle('ScreenPositionControlFrame.get_parameters_as_strings');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.ScreenPositionGUI.Scree [...]
+</div><div id="ScreenPositionControlFrame.get_parameters_as_strings-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ScreenPositionControlFrame.get_parameters_as_strings-expanded"><a name="L509"></a><tt class="py-lineno">509</tt>  <tt class="py-line">        <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L510"></a><tt class="py-lineno">510</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">param_name</tt> <tt class="py-keyword">in</tt> <tt class="py-name">dir</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L511"></a><tt class="py-lineno">511</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">param_name</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-number">2</tt><tt class="py-op">]</tt> <tt class="py-op">!=</tt> <tt class="py-string">'__'</tt> <tt class="py-keyword">and</tt> <tt class="py-name">param_name</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">2</tt><tt class="py-op">:</tt><tt class="py-op" [...]
+<a name="L512"></a><tt class="py-lineno">512</tt>  <tt class="py-line">                <tt class="py-name">value</tt> <tt class="py-op">=</tt> <tt class="py-name">getattr</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op">,</tt><tt class="py-name">param_name</tt><tt class="py-op">)</tt> </tt>
+<a name="L513"></a><tt class="py-lineno">513</tt>  <tt class="py-line">                <tt class="py-name">value_string</tt> <tt class="py-op">=</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">)</tt> </tt>
+<a name="L514"></a><tt class="py-lineno">514</tt>  <tt class="py-line">                <tt class="py-name">result</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-name">param_name</tt><tt class="py-op">,</tt><tt class="py-name">value_string</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L515"></a><tt class="py-lineno">515</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">result</tt> </tt>
+</div><a name="L516"></a><tt class="py-lineno">516</tt>  <tt class="py-line"> </tt>
+<a name="ScreenPositionControlFrame.get_loopable_variable_names"></a><div id="ScreenPositionControlFrame.get_loopable_variable_names-def"><a name="L517"></a><tt class="py-lineno">517</tt> <a class="py-toggle" href="#" id="ScreenPositionControlFrame.get_loopable_variable_names-toggle" onclick="return toggle('ScreenPositionControlFrame.get_loopable_variable_names');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.ScreenPositionG [...]
+</div><div id="ScreenPositionControlFrame.get_loopable_variable_names-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ScreenPositionControlFrame.get_loopable_variable_names-expanded"><a name="L518"></a><tt class="py-lineno">518</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">loopable_variables</tt><tt class="py-op">.</tt><tt class="py-name">keys</tt><tt class="py-op"> [...]
+</div><a name="L519"></a><tt class="py-lineno">519</tt>  <tt class="py-line"> </tt>
+<a name="ScreenPositionControlFrame.set_loopable_variable"></a><div id="ScreenPositionControlFrame.set_loopable_variable-def"><a name="L520"></a><tt class="py-lineno">520</tt> <a class="py-toggle" href="#" id="ScreenPositionControlFrame.set_loopable_variable-toggle" onclick="return toggle('ScreenPositionControlFrame.set_loopable_variable');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControl [...]
+</div><div id="ScreenPositionControlFrame.set_loopable_variable-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ScreenPositionControlFrame.set_loopable_variable-expanded"><a name="L521"></a><tt class="py-lineno">521</tt>  <tt class="py-line">        <tt class="py-name">meta_param_var_name</tt><tt class="py-op">,</tt><tt class="py-name">tk_var</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">loopable_variabl [...]
+<a name="L522"></a><tt class="py-lineno">522</tt>  <tt class="py-line">        <tt class="py-name">setattr</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op">,</tt><tt class="py-name">meta_param_var_name</tt><tt class="py-op">,</tt><tt class="py-name">value</tt><tt class="py-op">)</tt> </tt>
+<a name="L523"></a><tt class="py-lineno">523</tt>  <tt class="py-line">        <tt class="py-name">tk_var</tt><tt class="py-op">.</tt><tt id="link-289" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-289', 'set', 'link-34');">set</a></tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">)</tt> </tt>
+<a name="L524"></a><tt class="py-lineno">524</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-290" class="py-name" targets="Method VisionEgg.GUI.InfoFrame.update()=VisionEgg.GUI.InfoFrame-class.html#update,Method VisionEgg.GUI.ProgressBar.update()=VisionEgg.GUI.ProgressBar-class.html#update,Method VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.update()=VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController-class.html#update,M [...]
+VisionEgg.GUI.ProgressBar.update
+VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.update
+VisionEgg.PyroApps.DropinServer.DropinMetaController.update
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.update
+VisionEgg.PyroApps.GridServer.GridMetaController.update
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.update
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.update
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.update
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.update
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.update
+VisionEgg.QuickTime.MovieTexture.update
+VisionEgg.Textures.Texture.update" class="py-name" href="#" onclick="return doclink('link-290', 'update', 'link-290');">update</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-comment"># update screen with new tk_var value</tt> </tt>
+</div><a name="L525"></a><tt class="py-lineno">525</tt>  <tt class="py-line">         </tt>
+<a name="ScreenPositionControlFrame.send_values"></a><div id="ScreenPositionControlFrame.send_values-def"><a name="L526"></a><tt class="py-lineno">526</tt> <a class="py-toggle" href="#" id="ScreenPositionControlFrame.send_values-toggle" onclick="return toggle('ScreenPositionControlFrame.send_values');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html#send_values">send_value [...]
+</div><div id="ScreenPositionControlFrame.send_values-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ScreenPositionControlFrame.send_values-expanded"><a name="L527"></a><tt class="py-lineno">527</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op">.</tt><tt id="link-291" class="py-name"><a title="VisionEgg.PyroApps.MouseTargetServer.left" class="py-name" href="#" onclick=" [...]
+<a name="L528"></a><tt class="py-lineno">528</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op">.</tt><tt id="link-293" class="py-name"><a title="VisionEgg.PyroApps.MouseTargetServer.right" class="py-name" href="#" onclick="return doclink('link-293', 'right', 'link-11');">right</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">right_tk_var</tt [...]
+<a name="L529"></a><tt class="py-lineno">529</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op">.</tt><tt class="py-name">top</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">top_tk_var</tt><tt class="py-op">.</tt><tt id="link-295" class="py-name"><a title="VisionEgg.PyroClient.PyroClient.get" class="py-name" href="#" onclick="return doclink('lin [...]
+<a name="L530"></a><tt class="py-lineno">530</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op">.</tt><tt class="py-name">bottom</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">bottom_tk_var</tt><tt class="py-op">.</tt><tt id="link-296" class="py-name"><a title="VisionEgg.PyroClient.PyroClient.get" class="py-name" href="#" onclick="return doclin [...]
+<a name="L531"></a><tt class="py-lineno">531</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op">.</tt><tt class="py-name">near</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">near_tk_var</tt><tt class="py-op">.</tt><tt id="link-297" class="py-name"><a title="VisionEgg.PyroClient.PyroClient.get" class="py-name" href="#" onclick="return doclink('l [...]
+<a name="L532"></a><tt class="py-lineno">532</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op">.</tt><tt class="py-name">far</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">far_tk_var</tt><tt class="py-op">.</tt><tt id="link-298" class="py-name"><a title="VisionEgg.PyroClient.PyroClient.get" class="py-name" href="#" onclick="return doclink('lin [...]
+<a name="L533"></a><tt class="py-lineno">533</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op">.</tt><tt class="py-name">eye</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">eye_x_tk_var</tt><tt class="py-op">.</tt><tt id="link-299" class="py-name"><a title="VisionEgg.PyroClient.PyroClient.get" class="py-name" href="#" on [...]
+<a name="L534"></a><tt class="py-lineno">534</tt>  <tt class="py-line">                                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">eye_y_tk_var</tt><tt class="py-op">.</tt><tt id="link-300" class="py-name"><a title="VisionEgg.PyroClient.PyroClient.get" class="py-name" href="#" onclick="return doclink('link-300', 'get', 'link-292');">get</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L535"></a><tt class="py-lineno">535</tt>  <tt class="py-line">                                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">eye_z_tk_var</tt><tt class="py-op">.</tt><tt id="link-301" class="py-name"><a title="VisionEgg.PyroClient.PyroClient.get" class="py-name" href="#" onclick="return doclink('link-301', 'get', 'link-292');">get</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L536"></a><tt class="py-lineno">536</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op">.</tt><tt class="py-name">center</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">center_x_tk_var</tt><tt class="py-op">.</tt><tt id="link-302" class="py-name"><a title="VisionEgg.PyroClient.PyroClient.get" class="py-name" href= [...]
+<a name="L537"></a><tt class="py-lineno">537</tt>  <tt class="py-line">                                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">center_y_tk_var</tt><tt class="py-op">.</tt><tt id="link-303" class="py-name"><a title="VisionEgg.PyroClient.PyroClient.get" class="py-name" href="#" onclick="return doclink('link-303', 'get', 'link-292');">get</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L538"></a><tt class="py-lineno">538</tt>  <tt class="py-line">                                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">center_z_tk_var</tt><tt class="py-op">.</tt><tt id="link-304" class="py-name"><a title="VisionEgg.PyroClient.PyroClient.get" class="py-name" href="#" onclick="return doclink('link-304', 'get', 'link-292');">get</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L539"></a><tt class="py-lineno">539</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op">.</tt><tt id="link-305" class="py-name"><a title="VisionEgg.PyroApps.MouseTargetServer.up" class="py-name" href="#" onclick="return doclink('link-305', 'up', 'link-12');">up</a></tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">u [...]
+<a name="L540"></a><tt class="py-lineno">540</tt>  <tt class="py-line">                                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">up_y_tk_var</tt><tt class="py-op">.</tt><tt id="link-307" class="py-name"><a title="VisionEgg.PyroClient.PyroClient.get" class="py-name" href="#" onclick="return doclink('link-307', 'get', 'link-292');">get</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L541"></a><tt class="py-lineno">541</tt>  <tt class="py-line">                                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">up_z_tk_var</tt><tt class="py-op">.</tt><tt id="link-308" class="py-name"><a title="VisionEgg.PyroClient.PyroClient.get" class="py-name" href="#" onclick="return doclink('link-308', 'get', 'link-292');">get</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L542"></a><tt class="py-lineno">542</tt>  <tt class="py-line"> </tt>
+<a name="L543"></a><tt class="py-lineno">543</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">connected</tt><tt class="py-op">:</tt> </tt>
+<a name="L544"></a><tt class="py-lineno">544</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">projection_controller</tt><tt class="py-op">.</tt><tt id="link-309" class="py-name" targets="Method VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.set_parameters()=VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController-class.html#set_parameters,Method VisionEgg.PyroApps.DropinServer.DropinMetaController.set_parameters()=Vi [...]
+VisionEgg.PyroApps.DropinServer.DropinMetaController.set_parameters
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.set_parameters
+VisionEgg.PyroApps.GridServer.GridMetaController.set_parameters
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.set_parameters
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.set_parameters
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.set_parameters
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.set_parameters
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.set_parameters" class="py-name" href="#" onclick="return doclink('link-309', 'set_parameters', 'link-309');">set_parameters</a></tt><tt class="py-op">(</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt> <tt class="py-op">)</tt> </tt>
+</div><a name="L545"></a><tt class="py-lineno">545</tt>  <tt class="py-line"> </tt>
+<a name="ScreenPositionControlFrame.connect"></a><div id="ScreenPositionControlFrame.connect-def"><a name="L546"></a><tt class="py-lineno">546</tt> <a class="py-toggle" href="#" id="ScreenPositionControlFrame.connect-toggle" onclick="return toggle('ScreenPositionControlFrame.connect');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html#connect">connect</a><tt class="py-op">( [...]
+</div><div id="ScreenPositionControlFrame.connect-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ScreenPositionControlFrame.connect-expanded"><a name="L547"></a><tt class="py-lineno">547</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">pyro_client</tt> <tt class="py-op">=</tt> <tt id="link-310" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-310', 'VisionEgg' [...]
+VisionEgg.PyroClient.PyroClient" class="py-name" href="#" onclick="return doclink('link-311', 'PyroClient', 'link-3');">PyroClient</a></tt><tt class="py-op">.</tt><tt id="link-312" class="py-name"><a title="VisionEgg.PyroClient
+VisionEgg.PyroClient.PyroClient" class="py-name" href="#" onclick="return doclink('link-312', 'PyroClient', 'link-3');">PyroClient</a></tt><tt class="py-op">(</tt><tt class="py-name">server_hostname</tt><tt class="py-op">,</tt><tt class="py-name">server_port</tt><tt class="py-op">)</tt> </tt>
+<a name="L548"></a><tt class="py-lineno">548</tt>  <tt class="py-line"> </tt>
+<a name="L549"></a><tt class="py-lineno">549</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">projection_controller</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">pyro_client</tt><tt class="py-op">.</tt><tt id="link-313" class="py-name"><a title="VisionEgg.PyroClient.PyroClient.get" class="py-name" href="#" onclick="return doclink('link-313', 'get', 'link-292');">get</a></tt> [...]
+<a name="L550"></a><tt class="py-lineno">550</tt>  <tt class="py-line"> </tt>
+<a name="L551"></a><tt class="py-lineno">551</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">connected</tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L552"></a><tt class="py-lineno">552</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-string">'connected_label'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L553"></a><tt class="py-lineno">553</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">connected_label</tt><tt class="py-op">.</tt><tt id="link-314" class="py-name" targets="Variable VisionEgg.config=VisionEgg-module.html#config"><a title="VisionEgg.config" class="py-name" href="#" onclick="return doclink('link-314', 'config', 'link-314');">config</a></tt><tt class="py-op">(</tt><tt class="py-name">text</tt><tt class="p [...]
+<a name="L554"></a><tt class="py-lineno">554</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-315" class="py-name"><a title="VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.send_values
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.send_values
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.send_values
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.send_values
+VisionEgg.PyroApps.GridGUI.GridControlFrame.send_values
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.send_values
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.send_values
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.send_values
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.send_values
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.send_values" class="py-name" href="#" onclick="return doclink('link-315', 'send_values', 'link-37');">send_values</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-comment"># send values only when running this way, otherwise get values</tt> </tt>
+<a name="L555"></a><tt class="py-lineno">555</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L556"></a><tt class="py-lineno">556</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">projection_controller</tt><tt class="py-op">.</tt><tt id="link-316" class="py-name" targets="Method VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.get_parameters()=VisionEgg.PyroApps.ColorCalServer.ColorCalMetaC [...]
+VisionEgg.PyroApps.DropinServer.DropinMetaController.get_parameters
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.get_parameters
+VisionEgg.PyroApps.GridServer.GridMetaController.get_parameters
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.get_parameters
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.get_parameters
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.get_parameters
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.get_parameters
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.get_parameters" class="py-name" href="#" onclick="return doclink('link-316', 'get_parameters', 'link-316');">get_parameters</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L557"></a><tt class="py-lineno">557</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-317" class="py-name"><a title="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.set_param_dict
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.set_param_dict" class="py-name" href="#" onclick="return doclink('link-317', 'set_param_dict', 'link-267');">set_param_dict</a></tt><tt class="py-op">(</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> <tt class="py-op">)</tt> <tt class="py-comment"># updates screen values to self.meta_params</tt> </tt>
+</div><a name="L558"></a><tt class="py-lineno">558</tt>  <tt class="py-line">         </tt>
+<a name="ScreenPositionControlFrame.quit_server"></a><div id="ScreenPositionControlFrame.quit_server-def"><a name="L559"></a><tt class="py-lineno">559</tt> <a class="py-toggle" href="#" id="ScreenPositionControlFrame.quit_server-toggle" onclick="return toggle('ScreenPositionControlFrame.quit_server');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html#quit_server">quit_serve [...]
+</div><div id="ScreenPositionControlFrame.quit_server-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ScreenPositionControlFrame.quit_server-expanded"><a name="L560"></a><tt class="py-lineno">560</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">projection_controller</tt><tt class="py-op">.</tt><tt id="link-318" class="py-name"><a title="VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.quit_server
+VisionEgg.PyroApps.DropinServer.DropinMetaController.quit_server
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.quit_server
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.quit_server
+VisionEgg.PyroApps.GridServer.GridMetaController.quit_server
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.quit_server
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.quit_server
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.quit_server
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.quit_server
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.quit_server
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.quit_server" class="py-name" href="#" onclick="return doclink('link-318', 'quit_server', 'link-27');">quit_server</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L561"></a><tt class="py-lineno">561</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">connected</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L562"></a><tt class="py-lineno">562</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">connected_label</tt><tt class="py-op">.</tt><tt id="link-319" class="py-name"><a title="VisionEgg.config" class="py-name" href="#" onclick="return doclink('link-319', 'config', 'link-314');">config</a></tt><tt class="py-op">(</tt><tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Server status: Not connected"</tt> [...]
+</div></div><a name="L563"></a><tt class="py-lineno">563</tt>  <tt class="py-line"> </tt>
+<a name="L564"></a><tt class="py-lineno">564</tt>  <tt class="py-line"><tt class="py-keyword">if</tt> <tt class="py-name">__name__</tt><tt class="py-op">==</tt><tt class="py-string">'__main__'</tt><tt class="py-op">:</tt> </tt>
+<a name="L565"></a><tt class="py-lineno">565</tt>  <tt class="py-line">    <tt class="py-name">frame</tt> <tt class="py-op">=</tt> <tt id="link-320" class="py-name" targets="Class VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame=VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html"><a title="VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame" class="py-name" href="#" onclick="return doclink('link-320', 'ScreenPositionControlFrame', 'link- [...]
+<a name="L566"></a><tt class="py-lineno">566</tt>  <tt class="py-line">    <tt class="py-name">frame</tt><tt class="py-op">.</tt><tt class="py-name">pack</tt><tt class="py-op">(</tt><tt class="py-name">expand</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py-op">,</tt><tt class="py-name">fill</tt><tt class="py-op">=</tt><tt id="link-321" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-321', 'Tkinter', 'link-0');" [...]
+<a name="L567"></a><tt class="py-lineno">567</tt>  <tt class="py-line">    <tt class="py-name">frame</tt><tt class="py-op">.</tt><tt class="py-name">winfo_toplevel</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-322" class="py-name" targets="Variable VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.title=VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame-class.html#title,Variable VisionEgg.PyroApps.DropinGUI.DropinControlFrame.title=VisionEgg. [...]
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.title
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.title
+VisionEgg.PyroApps.GridGUI.GridControlFrame.title
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.title
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.title
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.title
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.title" class="py-name" href="#" onclick="return doclink('link-322', 'title', 'link-322');">title</a></tt><tt class="py-op">(</tt><tt class="py-string">"%s"</tt><tt class="py-op">%</tt><tt class="py-op">(</tt><tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">path</tt><tt class="py-op">.</tt><tt class="py-name">basename</tt><tt class="py-op">(</tt><tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">path [...]
+<a name="L568"></a><tt class="py-lineno">568</tt>  <tt class="py-line">    <tt class="py-name">frame</tt><tt class="py-op">.</tt><tt class="py-name">mainloop</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L569"></a><tt class="py-lineno">569</tt>  <tt class="py-line"> </tt><script type="text/javascript">
+<!--
+expandto(location.href);
+// -->
+</script>
+</pre>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:47 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.PyroApps.ScreenPositionGUI.CallbackEntry-class.html b/doc/reference/html/VisionEgg.PyroApps.ScreenPositionGUI.CallbackEntry-class.html
new file mode 100644
index 0000000..85a658b
--- /dev/null
+++ b/doc/reference/html/VisionEgg.PyroApps.ScreenPositionGUI.CallbackEntry-class.html
@@ -0,0 +1,436 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.PyroApps.ScreenPositionGUI.CallbackEntry</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.PyroApps-module.html">Package PyroApps</a> ::
+        <a href="VisionEgg.PyroApps.ScreenPositionGUI-module.html">Module ScreenPositionGUI</a> ::
+        Class CallbackEntry
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.PyroApps.ScreenPositionGUI.CallbackEntry-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class CallbackEntry</h1><span class="codelink"><a href="VisionEgg.PyroApps.ScreenPositionGUI-pysrc.html#CallbackEntry">source code</a></span><br /><br />
+<pre class="base-tree">
+  Tkinter.Misc --+            
+                 |            
+Tkinter.BaseWidget --+        
+                     |        
+      Tkinter.Pack --+        
+                     |        
+     Tkinter.Place --+        
+                     |        
+      Tkinter.Grid --+        
+                     |        
+        Tkinter.Widget --+    
+                         |    
+             Tkinter.Entry --+
+                             |
+                            <strong class="uidshort">CallbackEntry</strong>
+</pre>
+
+<hr />
+<!-- ==================== NESTED CLASSES ==================== -->
+<a name="section-NestedClasses"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Nested Classes</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>Tkinter.Misc</code></b>:
+      <code><a href="float-class.html">getdouble</a></code>,
+      <code><a href="int-class.html">getint</a></code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.PyroApps.ScreenPositionGUI.CallbackEntry-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">master</span>=<span class="summary-sig-default">None</span>,
+        <span class="summary-sig-arg">callback</span>=<span class="summary-sig-default">None</span>,
+        <span class="summary-sig-arg">**kw</span>)</span><br />
+      Construct an entry widget with the parent MASTER.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.ScreenPositionGUI-pysrc.html#CallbackEntry.__init__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>Tkinter.Entry</code></b>:
+      <code>delete</code>,
+      <code>get</code>,
+      <code>icursor</code>,
+      <code>index</code>,
+      <code>insert</code>,
+      <code>scan_dragto</code>,
+      <code>scan_mark</code>,
+      <code>select_adjust</code>,
+      <code>select_clear</code>,
+      <code>select_from</code>,
+      <code>select_present</code>,
+      <code>select_range</code>,
+      <code>select_to</code>,
+      <code>selection_adjust</code>,
+      <code>selection_clear</code>,
+      <code>selection_from</code>,
+      <code>selection_present</code>,
+      <code>selection_range</code>,
+      <code>selection_to</code>,
+      <code>xview</code>,
+      <code>xview_moveto</code>,
+      <code>xview_scroll</code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>Tkinter.BaseWidget</code></b>:
+      <code>destroy</code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>Tkinter.Misc</code></b>:
+      <code>__getitem__</code>,
+      <code>__setitem__</code>,
+      <code>__str__</code>,
+      <code>after</code>,
+      <code>after_cancel</code>,
+      <code>after_idle</code>,
+      <code>bbox</code>,
+      <code>bell</code>,
+      <code>bind</code>,
+      <code>bind_all</code>,
+      <code>bind_class</code>,
+      <code>bindtags</code>,
+      <code>cget</code>,
+      <code>clipboard_append</code>,
+      <code>clipboard_clear</code>,
+      <code>clipboard_get</code>,
+      <code>colormodel</code>,
+      <code>columnconfigure</code>,
+      <code>config</code>,
+      <code>configure</code>,
+      <code>deletecommand</code>,
+      <code>event_add</code>,
+      <code>event_delete</code>,
+      <code>event_generate</code>,
+      <code>event_info</code>,
+      <code>focus</code>,
+      <code>focus_displayof</code>,
+      <code>focus_force</code>,
+      <code>focus_get</code>,
+      <code>focus_lastfor</code>,
+      <code>focus_set</code>,
+      <code>getboolean</code>,
+      <code>getvar</code>,
+      <code>grab_current</code>,
+      <code>grab_release</code>,
+      <code>grab_set</code>,
+      <code>grab_set_global</code>,
+      <code>grab_status</code>,
+      <code>grid_bbox</code>,
+      <code>grid_columnconfigure</code>,
+      <code>grid_location</code>,
+      <code>grid_propagate</code>,
+      <code>grid_rowconfigure</code>,
+      <code>grid_size</code>,
+      <code>grid_slaves</code>,
+      <code>image_names</code>,
+      <code>image_types</code>,
+      <code>keys</code>,
+      <code>lift</code>,
+      <code>lower</code>,
+      <code>mainloop</code>,
+      <code>nametowidget</code>,
+      <code>option_add</code>,
+      <code>option_clear</code>,
+      <code>option_get</code>,
+      <code>option_readfile</code>,
+      <code>pack_propagate</code>,
+      <code>pack_slaves</code>,
+      <code>place_slaves</code>,
+      <code>propagate</code>,
+      <code>quit</code>,
+      <code>register</code>,
+      <code>rowconfigure</code>,
+      <code>selection_get</code>,
+      <code>selection_handle</code>,
+      <code>selection_own</code>,
+      <code>selection_own_get</code>,
+      <code>send</code>,
+      <code>setvar</code>,
+      <code>size</code>,
+      <code>slaves</code>,
+      <code>tk_bisque</code>,
+      <code>tk_focusFollowsMouse</code>,
+      <code>tk_focusNext</code>,
+      <code>tk_focusPrev</code>,
+      <code>tk_menuBar</code>,
+      <code>tk_setPalette</code>,
+      <code>tk_strictMotif</code>,
+      <code>tkraise</code>,
+      <code>unbind</code>,
+      <code>unbind_all</code>,
+      <code>unbind_class</code>,
+      <code>update</code>,
+      <code>update_idletasks</code>,
+      <code>wait_variable</code>,
+      <code>wait_visibility</code>,
+      <code>wait_window</code>,
+      <code>waitvar</code>,
+      <code>winfo_atom</code>,
+      <code>winfo_atomname</code>,
+      <code>winfo_cells</code>,
+      <code>winfo_children</code>,
+      <code>winfo_class</code>,
+      <code>winfo_colormapfull</code>,
+      <code>winfo_containing</code>,
+      <code>winfo_depth</code>,
+      <code>winfo_exists</code>,
+      <code>winfo_fpixels</code>,
+      <code>winfo_geometry</code>,
+      <code>winfo_height</code>,
+      <code>winfo_id</code>,
+      <code>winfo_interps</code>,
+      <code>winfo_ismapped</code>,
+      <code>winfo_manager</code>,
+      <code>winfo_name</code>,
+      <code>winfo_parent</code>,
+      <code>winfo_pathname</code>,
+      <code>winfo_pixels</code>,
+      <code>winfo_pointerx</code>,
+      <code>winfo_pointerxy</code>,
+      <code>winfo_pointery</code>,
+      <code>winfo_reqheight</code>,
+      <code>winfo_reqwidth</code>,
+      <code>winfo_rgb</code>,
+      <code>winfo_rootx</code>,
+      <code>winfo_rooty</code>,
+      <code>winfo_screen</code>,
+      <code>winfo_screencells</code>,
+      <code>winfo_screendepth</code>,
+      <code>winfo_screenheight</code>,
+      <code>winfo_screenmmheight</code>,
+      <code>winfo_screenmmwidth</code>,
+      <code>winfo_screenvisual</code>,
+      <code>winfo_screenwidth</code>,
+      <code>winfo_server</code>,
+      <code>winfo_toplevel</code>,
+      <code>winfo_viewable</code>,
+      <code>winfo_visual</code>,
+      <code>winfo_visualid</code>,
+      <code>winfo_visualsavailable</code>,
+      <code>winfo_vrootheight</code>,
+      <code>winfo_vrootwidth</code>,
+      <code>winfo_vrootx</code>,
+      <code>winfo_vrooty</code>,
+      <code>winfo_width</code>,
+      <code>winfo_x</code>,
+      <code>winfo_y</code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>Tkinter.Pack</code></b>:
+      <code>forget</code>,
+      <code>info</code>,
+      <code>pack</code>,
+      <code>pack_configure</code>,
+      <code>pack_forget</code>,
+      <code>pack_info</code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>Tkinter.Place</code></b>:
+      <code>place</code>,
+      <code>place_configure</code>,
+      <code>place_forget</code>,
+      <code>place_info</code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>Tkinter.Grid</code></b>:
+      <code>grid</code>,
+      <code>grid_configure</code>,
+      <code>grid_forget</code>,
+      <code>grid_info</code>,
+      <code>grid_remove</code>,
+      <code>location</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Class Variables</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>Tkinter.Misc</code></b>:
+      <code>_noarg_</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Method Details</span></td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">master</span>=<span class="sig-default">None</span>,
+        <span class="sig-arg">callback</span>=<span class="sig-default">None</span>,
+        <span class="sig-arg">**kw</span>)</span>
+    <br /><em class="fname">(Constructor)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.PyroApps.ScreenPositionGUI-pysrc.html#CallbackEntry.__init__">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Construct an entry widget with the parent MASTER.
+
+Valid resource names: background, bd, bg, borderwidth, cursor,
+exportselection, fg, font, foreground, highlightbackground,
+highlightcolor, highlightthickness, insertbackground,
+insertborderwidth, insertofftime, insertontime, insertwidth,
+invalidcommand, invcmd, justify, relief, selectbackground,
+selectborderwidth, selectforeground, show, state, takefocus,
+textvariable, validate, validatecommand, vcmd, width,
+xscrollcommand.
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      Tkinter.Entry.__init__
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:47 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html b/doc/reference/html/VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html
new file mode 100644
index 0000000..7e30ac7
--- /dev/null
+++ b/doc/reference/html/VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html
@@ -0,0 +1,918 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.PyroApps-module.html">Package PyroApps</a> ::
+        <a href="VisionEgg.PyroApps.ScreenPositionGUI-module.html">Module ScreenPositionGUI</a> ::
+        Class ScreenPositionControlFrame
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class ScreenPositionControlFrame</h1><span class="codelink"><a href="VisionEgg.PyroApps.ScreenPositionGUI-pysrc.html#ScreenPositionControlFrame">source code</a></span><br /><br />
+<pre class="base-tree">
+  Tkinter.Misc --+            
+                 |            
+Tkinter.BaseWidget --+        
+                     |        
+      Tkinter.Pack --+        
+                     |        
+     Tkinter.Place --+        
+                     |        
+      Tkinter.Grid --+        
+                     |        
+        Tkinter.Widget --+    
+                         |    
+             Tkinter.Frame --+
+                             |
+                            <strong class="uidshort">ScreenPositionControlFrame</strong>
+</pre>
+
+<hr />
+<!-- ==================== NESTED CLASSES ==================== -->
+<a name="section-NestedClasses"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Nested Classes</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>Tkinter.Misc</code></b>:
+      <code><a href="float-class.html">getdouble</a></code>,
+      <code><a href="int-class.html">getint</a></code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">master</span>=<span class="summary-sig-default">None</span>,
+        <span class="summary-sig-arg">auto_connect</span>=<span class="summary-sig-default">0</span>,
+        <span class="summary-sig-arg">server_hostname</span>=<span class="summary-sig-default">''</span>,
+        <span class="summary-sig-arg">server_port</span>=<span class="summary-sig-default">7766</span>,
+        <span class="summary-sig-arg">**kw</span>)</span><br />
+      Construct a frame widget with the parent MASTER.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.ScreenPositionGUI-pysrc.html#ScreenPositionControlFrame.__init__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="frustum_narrower"></a><span class="summary-sig-name">frustum_narrower</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">dummy_arg</span>=<span class="summary-sig-default">None</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.ScreenPositionGUI-pysrc.html#ScreenPositionControlFrame.frustum_narrower">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="frustum_wider"></a><span class="summary-sig-name">frustum_wider</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">dummy_arg</span>=<span class="summary-sig-default">None</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.ScreenPositionGUI-pysrc.html#ScreenPositionControlFrame.frustum_wider">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="frustum_shorter"></a><span class="summary-sig-name">frustum_shorter</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">dummy_arg</span>=<span class="summary-sig-default">None</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.ScreenPositionGUI-pysrc.html#ScreenPositionControlFrame.frustum_shorter">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="frustum_taller"></a><span class="summary-sig-name">frustum_taller</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">dummy_arg</span>=<span class="summary-sig-default">None</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.ScreenPositionGUI-pysrc.html#ScreenPositionControlFrame.frustum_taller">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="frustum_left"></a><span class="summary-sig-name">frustum_left</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">dummy_arg</span>=<span class="summary-sig-default">None</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.ScreenPositionGUI-pysrc.html#ScreenPositionControlFrame.frustum_left">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="frustum_right"></a><span class="summary-sig-name">frustum_right</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">dummy_arg</span>=<span class="summary-sig-default">None</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.ScreenPositionGUI-pysrc.html#ScreenPositionControlFrame.frustum_right">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="frustum_down"></a><span class="summary-sig-name">frustum_down</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">dummy_arg</span>=<span class="summary-sig-default">None</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.ScreenPositionGUI-pysrc.html#ScreenPositionControlFrame.frustum_down">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="frustum_up"></a><span class="summary-sig-name">frustum_up</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">dummy_arg</span>=<span class="summary-sig-default">None</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.ScreenPositionGUI-pysrc.html#ScreenPositionControlFrame.frustum_up">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="get_az_el"></a><span class="summary-sig-name">get_az_el</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">xyz_tuple</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.ScreenPositionGUI-pysrc.html#ScreenPositionControlFrame.get_az_el">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="get_xyz"></a><span class="summary-sig-name">get_xyz</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">az_el</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.ScreenPositionGUI-pysrc.html#ScreenPositionControlFrame.get_xyz">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="az_increase"></a><span class="summary-sig-name">az_increase</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">dummy_arg</span>=<span class="summary-sig-default">None</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.ScreenPositionGUI-pysrc.html#ScreenPositionControlFrame.az_increase">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="az_decrease"></a><span class="summary-sig-name">az_decrease</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">dummy_arg</span>=<span class="summary-sig-default">None</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.ScreenPositionGUI-pysrc.html#ScreenPositionControlFrame.az_decrease">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="el_increase"></a><span class="summary-sig-name">el_increase</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">dummy_arg</span>=<span class="summary-sig-default">None</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.ScreenPositionGUI-pysrc.html#ScreenPositionControlFrame.el_increase">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="el_decrease"></a><span class="summary-sig-name">el_decrease</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">dummy_arg</span>=<span class="summary-sig-default">None</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.ScreenPositionGUI-pysrc.html#ScreenPositionControlFrame.el_decrease">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="up_az_increase"></a><span class="summary-sig-name">up_az_increase</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">dummy_arg</span>=<span class="summary-sig-default">None</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.ScreenPositionGUI-pysrc.html#ScreenPositionControlFrame.up_az_increase">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="up_az_decrease"></a><span class="summary-sig-name">up_az_decrease</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">dummy_arg</span>=<span class="summary-sig-default">None</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.ScreenPositionGUI-pysrc.html#ScreenPositionControlFrame.up_az_decrease">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="up_el_increase"></a><span class="summary-sig-name">up_el_increase</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">dummy_arg</span>=<span class="summary-sig-default">None</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.ScreenPositionGUI-pysrc.html#ScreenPositionControlFrame.up_el_increase">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="up_el_decrease"></a><span class="summary-sig-name">up_el_decrease</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">dummy_arg</span>=<span class="summary-sig-default">None</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.ScreenPositionGUI-pysrc.html#ScreenPositionControlFrame.up_el_decrease">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="save"></a><span class="summary-sig-name">save</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.ScreenPositionGUI-pysrc.html#ScreenPositionControlFrame.save">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="load"></a><span class="summary-sig-name">load</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.ScreenPositionGUI-pysrc.html#ScreenPositionControlFrame.load">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="get_shortname"></a><span class="summary-sig-name">get_shortname</span>(<span class="summary-sig-arg">self</span>)</span><br />
+      Used as basename for saving parameter files</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.ScreenPositionGUI-pysrc.html#ScreenPositionControlFrame.get_shortname">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="get_param_dict"></a><span class="summary-sig-name">get_param_dict</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.ScreenPositionGUI-pysrc.html#ScreenPositionControlFrame.get_param_dict">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="get_type"></a><span class="summary-sig-name">get_type</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.ScreenPositionGUI-pysrc.html#ScreenPositionControlFrame.get_type">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="set_param_dict"></a><span class="summary-sig-name">set_param_dict</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">new_param_dict</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.ScreenPositionGUI-pysrc.html#ScreenPositionControlFrame.set_param_dict">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="get_parameters_as_strings"></a><span class="summary-sig-name">get_parameters_as_strings</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.ScreenPositionGUI-pysrc.html#ScreenPositionControlFrame.get_parameters_as_strings">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="get_loopable_variable_names"></a><span class="summary-sig-name">get_loopable_variable_names</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.ScreenPositionGUI-pysrc.html#ScreenPositionControlFrame.get_loopable_variable_names">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="set_loopable_variable"></a><span class="summary-sig-name">set_loopable_variable</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">easy_name</span>,
+        <span class="summary-sig-arg">value</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.ScreenPositionGUI-pysrc.html#ScreenPositionControlFrame.set_loopable_variable">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="send_values"></a><span class="summary-sig-name">send_values</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">dummy_arg</span>=<span class="summary-sig-default">None</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.ScreenPositionGUI-pysrc.html#ScreenPositionControlFrame.send_values">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="connect"></a><span class="summary-sig-name">connect</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">server_hostname</span>=<span class="summary-sig-default">''</span>,
+        <span class="summary-sig-arg">server_port</span>=<span class="summary-sig-default">7766</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.ScreenPositionGUI-pysrc.html#ScreenPositionControlFrame.connect">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="quit_server"></a><span class="summary-sig-name">quit_server</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">dummy</span>=<span class="summary-sig-default">None</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.ScreenPositionGUI-pysrc.html#ScreenPositionControlFrame.quit_server">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>Tkinter.BaseWidget</code></b>:
+      <code>destroy</code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>Tkinter.Misc</code></b>:
+      <code>__getitem__</code>,
+      <code>__setitem__</code>,
+      <code>__str__</code>,
+      <code>after</code>,
+      <code>after_cancel</code>,
+      <code>after_idle</code>,
+      <code>bbox</code>,
+      <code>bell</code>,
+      <code>bind</code>,
+      <code>bind_all</code>,
+      <code>bind_class</code>,
+      <code>bindtags</code>,
+      <code>cget</code>,
+      <code>clipboard_append</code>,
+      <code>clipboard_clear</code>,
+      <code>clipboard_get</code>,
+      <code>colormodel</code>,
+      <code>columnconfigure</code>,
+      <code>config</code>,
+      <code>configure</code>,
+      <code>deletecommand</code>,
+      <code>event_add</code>,
+      <code>event_delete</code>,
+      <code>event_generate</code>,
+      <code>event_info</code>,
+      <code>focus</code>,
+      <code>focus_displayof</code>,
+      <code>focus_force</code>,
+      <code>focus_get</code>,
+      <code>focus_lastfor</code>,
+      <code>focus_set</code>,
+      <code>getboolean</code>,
+      <code>getvar</code>,
+      <code>grab_current</code>,
+      <code>grab_release</code>,
+      <code>grab_set</code>,
+      <code>grab_set_global</code>,
+      <code>grab_status</code>,
+      <code>grid_bbox</code>,
+      <code>grid_columnconfigure</code>,
+      <code>grid_location</code>,
+      <code>grid_propagate</code>,
+      <code>grid_rowconfigure</code>,
+      <code>grid_size</code>,
+      <code>grid_slaves</code>,
+      <code>image_names</code>,
+      <code>image_types</code>,
+      <code>keys</code>,
+      <code>lift</code>,
+      <code>lower</code>,
+      <code>mainloop</code>,
+      <code>nametowidget</code>,
+      <code>option_add</code>,
+      <code>option_clear</code>,
+      <code>option_get</code>,
+      <code>option_readfile</code>,
+      <code>pack_propagate</code>,
+      <code>pack_slaves</code>,
+      <code>place_slaves</code>,
+      <code>propagate</code>,
+      <code>quit</code>,
+      <code>register</code>,
+      <code>rowconfigure</code>,
+      <code>selection_clear</code>,
+      <code>selection_get</code>,
+      <code>selection_handle</code>,
+      <code>selection_own</code>,
+      <code>selection_own_get</code>,
+      <code>send</code>,
+      <code>setvar</code>,
+      <code>size</code>,
+      <code>slaves</code>,
+      <code>tk_bisque</code>,
+      <code>tk_focusFollowsMouse</code>,
+      <code>tk_focusNext</code>,
+      <code>tk_focusPrev</code>,
+      <code>tk_menuBar</code>,
+      <code>tk_setPalette</code>,
+      <code>tk_strictMotif</code>,
+      <code>tkraise</code>,
+      <code>unbind</code>,
+      <code>unbind_all</code>,
+      <code>unbind_class</code>,
+      <code>update</code>,
+      <code>update_idletasks</code>,
+      <code>wait_variable</code>,
+      <code>wait_visibility</code>,
+      <code>wait_window</code>,
+      <code>waitvar</code>,
+      <code>winfo_atom</code>,
+      <code>winfo_atomname</code>,
+      <code>winfo_cells</code>,
+      <code>winfo_children</code>,
+      <code>winfo_class</code>,
+      <code>winfo_colormapfull</code>,
+      <code>winfo_containing</code>,
+      <code>winfo_depth</code>,
+      <code>winfo_exists</code>,
+      <code>winfo_fpixels</code>,
+      <code>winfo_geometry</code>,
+      <code>winfo_height</code>,
+      <code>winfo_id</code>,
+      <code>winfo_interps</code>,
+      <code>winfo_ismapped</code>,
+      <code>winfo_manager</code>,
+      <code>winfo_name</code>,
+      <code>winfo_parent</code>,
+      <code>winfo_pathname</code>,
+      <code>winfo_pixels</code>,
+      <code>winfo_pointerx</code>,
+      <code>winfo_pointerxy</code>,
+      <code>winfo_pointery</code>,
+      <code>winfo_reqheight</code>,
+      <code>winfo_reqwidth</code>,
+      <code>winfo_rgb</code>,
+      <code>winfo_rootx</code>,
+      <code>winfo_rooty</code>,
+      <code>winfo_screen</code>,
+      <code>winfo_screencells</code>,
+      <code>winfo_screendepth</code>,
+      <code>winfo_screenheight</code>,
+      <code>winfo_screenmmheight</code>,
+      <code>winfo_screenmmwidth</code>,
+      <code>winfo_screenvisual</code>,
+      <code>winfo_screenwidth</code>,
+      <code>winfo_server</code>,
+      <code>winfo_toplevel</code>,
+      <code>winfo_viewable</code>,
+      <code>winfo_visual</code>,
+      <code>winfo_visualid</code>,
+      <code>winfo_visualsavailable</code>,
+      <code>winfo_vrootheight</code>,
+      <code>winfo_vrootwidth</code>,
+      <code>winfo_vrootx</code>,
+      <code>winfo_vrooty</code>,
+      <code>winfo_width</code>,
+      <code>winfo_x</code>,
+      <code>winfo_y</code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>Tkinter.Pack</code></b>:
+      <code>forget</code>,
+      <code>info</code>,
+      <code>pack</code>,
+      <code>pack_configure</code>,
+      <code>pack_forget</code>,
+      <code>pack_info</code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>Tkinter.Place</code></b>:
+      <code>place</code>,
+      <code>place_configure</code>,
+      <code>place_forget</code>,
+      <code>place_info</code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>Tkinter.Grid</code></b>:
+      <code>grid</code>,
+      <code>grid_configure</code>,
+      <code>grid_forget</code>,
+      <code>grid_info</code>,
+      <code>grid_remove</code>,
+      <code>location</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Class Variables</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>Tkinter.Misc</code></b>:
+      <code>_noarg_</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Method Details</span></td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">master</span>=<span class="sig-default">None</span>,
+        <span class="sig-arg">auto_connect</span>=<span class="sig-default">0</span>,
+        <span class="sig-arg">server_hostname</span>=<span class="sig-default">''</span>,
+        <span class="sig-arg">server_port</span>=<span class="sig-default">7766</span>,
+        <span class="sig-arg">**kw</span>)</span>
+    <br /><em class="fname">(Constructor)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.PyroApps.ScreenPositionGUI-pysrc.html#ScreenPositionControlFrame.__init__">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Construct a frame widget with the parent MASTER.
+
+Valid resource names: background, bd, bg, borderwidth, class,
+colormap, container, cursor, height, highlightbackground,
+highlightcolor, highlightthickness, relief, takefocus, visual, width.
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      Tkinter.Frame.__init__
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:47 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionParameters-class.html b/doc/reference/html/VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionParameters-class.html
new file mode 100644
index 0000000..f93933a
--- /dev/null
+++ b/doc/reference/html/VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionParameters-class.html
@@ -0,0 +1,139 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionParameters</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.PyroApps-module.html">Package PyroApps</a> ::
+        <a href="VisionEgg.PyroApps.ScreenPositionGUI-module.html">Module ScreenPositionGUI</a> ::
+        Class ScreenPositionParameters
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionParameters-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class ScreenPositionParameters</h1><span class="codelink"><a href="VisionEgg.PyroApps.ScreenPositionGUI-pysrc.html#ScreenPositionParameters">source code</a></span><br /><br />
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__init__"></a><span class="summary-sig-name">__init__</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.ScreenPositionGUI-pysrc.html#ScreenPositionParameters.__init__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:47 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.PyroApps.ScreenPositionServer-module.html b/doc/reference/html/VisionEgg.PyroApps.ScreenPositionServer-module.html
new file mode 100644
index 0000000..6a0a3e6
--- /dev/null
+++ b/doc/reference/html/VisionEgg.PyroApps.ScreenPositionServer-module.html
@@ -0,0 +1,169 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.PyroApps.ScreenPositionServer</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.PyroApps-module.html">Package PyroApps</a> ::
+        Module ScreenPositionServer
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.PyroApps.ScreenPositionServer-module.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== MODULE DESCRIPTION ==================== -->
+<h1 class="epydoc">Module ScreenPositionServer</h1><span class="codelink"><a href="VisionEgg.PyroApps.ScreenPositionServer-pysrc.html">source code</a></span><br /><br />
+<pre class="literalblock">
+Handle 3D perspective projection (server-side)
+
+</pre><br /><br />
+
+<hr />
+<div class="fields">      <p><strong>Author:</strong>
+        Andrew Straw <astraw at users.sourceforge.net>
+      </p>
+</div><!-- ==================== CLASSES ==================== -->
+<a name="section-Classes"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Classes</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController-class.html" class="summary-name">ScreenPositionMetaController</a><br />
+      Encapsulates all parameters controlling screen position
+    </td>
+  </tr>
+</table>
+<!-- ==================== VARIABLES ==================== -->
+<a name="section-Variables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Variables</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="__version__"></a><span class="summary-name">__version__</span> = <code title="VisionEgg.release_name">VisionEgg.release_name</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="__cvs__"></a><span class="summary-name">__cvs__</span> = <code title="string.split('$Revision$') [1]">string.split('$Revision$') [1]</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="__date__"></a><span class="summary-name">__date__</span> = <code title="string.join(string.split('$Date$') [1: 3], ' ')">string.join(string.split('$Date$') [1: 3], ' ')</code>
+    </td>
+  </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.PyroApps.ScreenPositionServer-pysrc.html b/doc/reference/html/VisionEgg.PyroApps.ScreenPositionServer-pysrc.html
new file mode 100644
index 0000000..6edae90
--- /dev/null
+++ b/doc/reference/html/VisionEgg.PyroApps.ScreenPositionServer-pysrc.html
@@ -0,0 +1,444 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.PyroApps.ScreenPositionServer</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.PyroApps-module.html">Package PyroApps</a> ::
+        Module ScreenPositionServer
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.PyroApps.ScreenPositionServer-pysrc.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<h1 class="epydoc">Source Code for <a href="VisionEgg.PyroApps.ScreenPositionServer-module.html">Module VisionEgg.PyroApps.ScreenPositionServer</a></h1>
+<pre class="py-src">
+<a name="L1"></a><tt class="py-lineno">  1</tt>  <tt class="py-line"><tt class="py-comment">#!/usr/bin/env python</tt> </tt>
+<a name="L2"></a><tt class="py-lineno">  2</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L3"></a><tt class="py-lineno">  3</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># The Vision Egg: ScreenPositionServer</tt> </tt>
+<a name="L4"></a><tt class="py-lineno">  4</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L5"></a><tt class="py-lineno">  5</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Copyright (C) 2001-2003 Andrew Straw.</tt> </tt>
+<a name="L6"></a><tt class="py-lineno">  6</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Author: Andrew Straw <astraw at users.sourceforge.net></tt> </tt>
+<a name="L7"></a><tt class="py-lineno">  7</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># URL: <http://www.visionegg.org/></tt> </tt>
+<a name="L8"></a><tt class="py-lineno">  8</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L9"></a><tt class="py-lineno">  9</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Distributed under the terms of the GNU Lesser General Public License</tt> </tt>
+<a name="L10"></a><tt class="py-lineno"> 10</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># (LGPL). See LICENSE.TXT that came with this file.</tt> </tt>
+<a name="L11"></a><tt class="py-lineno"> 11</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L12"></a><tt class="py-lineno"> 12</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># $Id$</tt> </tt>
+<a name="L13"></a><tt class="py-lineno"> 13</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L14"></a><tt class="py-lineno"> 14</tt>  <tt class="py-line"><tt class="py-docstring">"""Handle 3D perspective projection (server-side)"""</tt> </tt>
+<a name="L15"></a><tt class="py-lineno"> 15</tt>  <tt class="py-line"> </tt>
+<a name="L16"></a><tt class="py-lineno"> 16</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">Pyro</tt><tt class="py-op">.</tt><tt class="py-name">core</tt> </tt>
+<a name="L17"></a><tt class="py-lineno"> 17</tt>  <tt class="py-line"> </tt>
+<a name="L18"></a><tt class="py-lineno"> 18</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">sys</tt><tt class="py-op">,</tt> <tt class="py-name">os</tt><tt class="py-op">,</tt> <tt class="py-name">string</tt> </tt>
+<a name="L19"></a><tt class="py-lineno"> 19</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-0" class="py-name" targets="Package VisionEgg=VisionEgg-module.html"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-0', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-1" class="py-name" targets="Module VisionEgg.Core=VisionEgg.Core-module.html"><a title="VisionEgg.Core" class="py-name" href="#" onclick="return  [...]
+<a name="L20"></a><tt class="py-lineno"> 20</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-2" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-2', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-3" class="py-name" targets="Module VisionEgg.FlowControl=VisionEgg.FlowControl-module.html"><a title="VisionEgg.FlowControl" class="py-name" href="#" onclick="return doclink('link-3', 'FlowContro [...]
+<a name="L21"></a><tt class="py-lineno"> 21</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-4" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-4', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-5" class="py-name" targets="Module VisionEgg.SphereMap=VisionEgg.SphereMap-module.html,Class VisionEgg.SphereMap.SphereMap=VisionEgg.SphereMap.SphereMap-class.html"><a title="VisionEgg.SphereMap
+VisionEgg.SphereMap.SphereMap" class="py-name" href="#" onclick="return doclink('link-5', 'SphereMap', 'link-5');">SphereMap</a></tt> </tt>
+<a name="L22"></a><tt class="py-lineno"> 22</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-6" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-6', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-7" class="py-name" targets="Module VisionEgg.Textures=VisionEgg.Textures-module.html"><a title="VisionEgg.Textures" class="py-name" href="#" onclick="return doclink('link-7', 'Textures', 'link-7' [...]
+<a name="L23"></a><tt class="py-lineno"> 23</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-8" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-8', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-9" class="py-name" targets="Module VisionEgg.PyroHelpers=VisionEgg.PyroHelpers-module.html"><a title="VisionEgg.PyroHelpers" class="py-name" href="#" onclick="return doclink('link-9', 'PyroHelper [...]
+<a name="L24"></a><tt class="py-lineno"> 24</tt>  <tt class="py-line"> </tt>
+<a name="L25"></a><tt class="py-lineno"> 25</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-10" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-10', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-11" class="py-name" targets="Package VisionEgg.PyroApps=VisionEgg.PyroApps-module.html"><a title="VisionEgg.PyroApps" class="py-name" href="#" onclick="return doclink('link-11', 'PyroApps', 'link [...]
+<a name="L26"></a><tt class="py-lineno"> 26</tt>  <tt class="py-line"> </tt>
+<a name="L27"></a><tt class="py-lineno"> 27</tt>  <tt class="py-line"><tt id="link-14" class="py-name" targets="Variable VisionEgg.DaqKeyboard.__version__=VisionEgg.DaqKeyboard-module.html#__version__,Variable VisionEgg.DaqLPT.__version__=VisionEgg.DaqLPT-module.html#__version__,Variable VisionEgg.GL.__version__=VisionEgg.GL-module.html#__version__,Variable VisionEgg.PyroApps.EPhysGUI.__version__=VisionEgg.PyroApps.EPhysGUI-module.html#__version__,Variable VisionEgg.PyroApps.EPhysGUIUtil [...]
+VisionEgg.DaqLPT.__version__
+VisionEgg.GL.__version__
+VisionEgg.PyroApps.EPhysGUI.__version__
+VisionEgg.PyroApps.EPhysGUIUtils.__version__
+VisionEgg.PyroApps.EPhysServer.__version__
+VisionEgg.PyroApps.GridGUI.__version__
+VisionEgg.PyroApps.GridServer.__version__
+VisionEgg.PyroApps.ScreenPositionGUI.__version__
+VisionEgg.PyroApps.ScreenPositionServer.__version__
+VisionEgg.PyroApps.SpinningDrumGUI.__version__
+VisionEgg.PyroApps.SpinningDrumServer.__version__
+VisionEgg.PyroHelpers.__version__
+VisionEgg.QuickTime.__version__
+VisionEgg.ResponseControl.__version__
+VisionEgg.SphereMap.__version__
+VisionEgg.TCPController.__version__" class="py-name" href="#" onclick="return doclink('link-14', '__version__', 'link-14');">__version__</a></tt> <tt class="py-op">=</tt> <tt id="link-15" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-15', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-16" class="py-name" targets="Variable VisionEgg.release_name=VisionEgg-module.html#release_name"><a title="VisionEgg.release_na [...]
+<a name="L28"></a><tt class="py-lineno"> 28</tt>  <tt class="py-line"><tt id="link-17" class="py-name" targets="Variable VisionEgg.PyroApps.ColorCalGUI.__cvs__=VisionEgg.PyroApps.ColorCalGUI-module.html#__cvs__,Variable VisionEgg.PyroApps.ColorCalServer.__cvs__=VisionEgg.PyroApps.ColorCalServer-module.html#__cvs__,Variable VisionEgg.PyroApps.EPhysGUI.__cvs__=VisionEgg.PyroApps.EPhysGUI-module.html#__cvs__,Variable VisionEgg.PyroApps.EPhysGUIUtils.__cvs__=VisionEgg.PyroApps.EPhysGUIUtils- [...]
+VisionEgg.PyroApps.ColorCalServer.__cvs__
+VisionEgg.PyroApps.EPhysGUI.__cvs__
+VisionEgg.PyroApps.EPhysGUIUtils.__cvs__
+VisionEgg.PyroApps.EPhysServer.__cvs__
+VisionEgg.PyroApps.FlatGratingGUI.__cvs__
+VisionEgg.PyroApps.FlatGratingServer.__cvs__
+VisionEgg.PyroApps.GridGUI.__cvs__
+VisionEgg.PyroApps.GridServer.__cvs__
+VisionEgg.PyroApps.MouseTargetGUI.__cvs__
+VisionEgg.PyroApps.MouseTargetServer.__cvs__
+VisionEgg.PyroApps.ScreenPositionGUI.__cvs__
+VisionEgg.PyroApps.ScreenPositionServer.__cvs__
+VisionEgg.PyroApps.SphereGratingGUI.__cvs__
+VisionEgg.PyroApps.SphereGratingServer.__cvs__
+VisionEgg.PyroApps.SpinningDrumGUI.__cvs__
+VisionEgg.PyroApps.SpinningDrumServer.__cvs__
+VisionEgg.PyroApps.TargetGUI.__cvs__
+VisionEgg.PyroApps.TargetServer.__cvs__
+VisionEgg.PyroClient.__cvs__
+VisionEgg.PyroHelpers.__cvs__
+VisionEgg.TCPController.__cvs__" class="py-name" href="#" onclick="return doclink('link-17', '__cvs__', 'link-17');">__cvs__</a></tt> <tt class="py-op">=</tt> <tt class="py-name">string</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'$Revision$'</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
+<a name="L29"></a><tt class="py-lineno"> 29</tt>  <tt class="py-line"><tt id="link-18" class="py-name" targets="Variable VisionEgg.PyroApps.ColorCalGUI.__date__=VisionEgg.PyroApps.ColorCalGUI-module.html#__date__,Variable VisionEgg.PyroApps.ColorCalServer.__date__=VisionEgg.PyroApps.ColorCalServer-module.html#__date__,Variable VisionEgg.PyroApps.EPhysGUI.__date__=VisionEgg.PyroApps.EPhysGUI-module.html#__date__,Variable VisionEgg.PyroApps.EPhysGUIUtils.__date__=VisionEgg.PyroApps.EPhysGU [...]
+VisionEgg.PyroApps.ColorCalServer.__date__
+VisionEgg.PyroApps.EPhysGUI.__date__
+VisionEgg.PyroApps.EPhysGUIUtils.__date__
+VisionEgg.PyroApps.EPhysServer.__date__
+VisionEgg.PyroApps.FlatGratingGUI.__date__
+VisionEgg.PyroApps.FlatGratingServer.__date__
+VisionEgg.PyroApps.GridGUI.__date__
+VisionEgg.PyroApps.GridServer.__date__
+VisionEgg.PyroApps.MouseTargetGUI.__date__
+VisionEgg.PyroApps.MouseTargetServer.__date__
+VisionEgg.PyroApps.ScreenPositionGUI.__date__
+VisionEgg.PyroApps.ScreenPositionServer.__date__
+VisionEgg.PyroApps.SphereGratingGUI.__date__
+VisionEgg.PyroApps.SphereGratingServer.__date__
+VisionEgg.PyroApps.SpinningDrumGUI.__date__
+VisionEgg.PyroApps.SpinningDrumServer.__date__
+VisionEgg.PyroApps.TargetGUI.__date__
+VisionEgg.PyroApps.TargetServer.__date__
+VisionEgg.PyroClient.__date__
+VisionEgg.PyroHelpers.__date__
+VisionEgg.TCPController.__date__" class="py-name" href="#" onclick="return doclink('link-18', '__date__', 'link-18');">__date__</a></tt> <tt class="py-op">=</tt> <tt class="py-name">string</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">string</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'$Date$'</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><t [...]
+<a name="L30"></a><tt class="py-lineno"> 30</tt>  <tt class="py-line"><tt id="link-19" class="py-name" targets="Variable VisionEgg.PyroApps.EPhysGUI.__author__=VisionEgg.PyroApps.EPhysGUI-module.html#__author__,Variable VisionEgg.PyroApps.EPhysGUIUtils.__author__=VisionEgg.PyroApps.EPhysGUIUtils-module.html#__author__,Variable VisionEgg.PyroApps.EPhysServer.__author__=VisionEgg.PyroApps.EPhysServer-module.html#__author__,Variable VisionEgg.PyroApps.GridGUI.__author__=VisionEgg.PyroApps.G [...]
+VisionEgg.PyroApps.EPhysGUIUtils.__author__
+VisionEgg.PyroApps.EPhysServer.__author__
+VisionEgg.PyroApps.GridGUI.__author__
+VisionEgg.PyroApps.GridServer.__author__
+VisionEgg.PyroApps.SpinningDrumGUI.__author__
+VisionEgg.PyroApps.SpinningDrumServer.__author__" class="py-name" href="#" onclick="return doclink('link-19', '__author__', 'link-19');">__author__</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'Andrew Straw <astraw at users.sourceforge.net>'</tt> </tt>
+<a name="L31"></a><tt class="py-lineno"> 31</tt>  <tt class="py-line"> </tt>
+<a name="ScreenPositionMetaController"></a><div id="ScreenPositionMetaController-def"><a name="L32"></a><tt class="py-lineno"> 32</tt> <a class="py-toggle" href="#" id="ScreenPositionMetaController-toggle" onclick="return toggle('ScreenPositionMetaController');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController-class.html">ScreenPositionMetaController</a><tt class="py-op">(</tt> <tt [...]
+</div><div id="ScreenPositionMetaController-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="ScreenPositionMetaController-expanded"><a name="L33"></a><tt class="py-lineno"> 33</tt>  <tt class="py-line">    <tt class="py-docstring">"""Encapsulates all parameters controlling screen position"""</tt> </tt>
+<a name="ScreenPositionMetaController.__init__"></a><div id="ScreenPositionMetaController.__init__-def"><a name="L34"></a><tt class="py-lineno"> 34</tt> <a class="py-toggle" href="#" id="ScreenPositionMetaController.__init__-toggle" onclick="return toggle('ScreenPositionMetaController.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController-class.html#__init__">__init__</a>< [...]
+</div><div id="ScreenPositionMetaController.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ScreenPositionMetaController.__init__-expanded"><a name="L35"></a><tt class="py-lineno"> 35</tt>  <tt class="py-line">        <tt class="py-name">Pyro</tt><tt class="py-op">.</tt><tt class="py-name">core</tt><tt class="py-op">.</tt><tt class="py-name">ObjBase</tt><tt class="py-op">.</tt><tt id="link-20" class="py-name" targets="Method VisionEgg.ClassWithParamet [...]
+VisionEgg.Configuration.Config.__init__
+VisionEgg.Core.FixationSpot.__init__
+VisionEgg.Core.FrameTimer.__init__
+VisionEgg.Core.ModelView.__init__
+VisionEgg.Core.OrthographicProjection.__init__
+VisionEgg.Core.OrthographicProjectionNoZClip.__init__
+VisionEgg.Core.PerspectiveProjection.__init__
+VisionEgg.Core.Projection.__init__
+VisionEgg.Core.ProjectionBaseClass.__init__
+VisionEgg.Core.Screen.__init__
+VisionEgg.Core.SimplePerspectiveProjection.__init__
+VisionEgg.Core.Stimulus.__init__
+VisionEgg.Core.Viewport.__init__
+VisionEgg.Daq.Channel.__init__
+VisionEgg.Daq.DaqMode.__init__
+VisionEgg.Daq.Device.__init__
+VisionEgg.Daq.Functionality.__init__
+VisionEgg.Daq.SignalType.__init__
+VisionEgg.DaqKeyboard.KeyboardTriggerInController.__init__
+VisionEgg.DaqLPT.LPTChannel.__init__
+VisionEgg.DaqLPT.LPTDevice.__init__
+VisionEgg.DaqLPT.LPTTriggerInController.__init__
+VisionEgg.DaqLPT.LPTTriggerOutController.__init__
+VisionEgg.Deprecated.Message.__init__
+VisionEgg.Dots.DotArea2D.__init__
+VisionEgg.FlowControl.ConstantController.__init__
+VisionEgg.FlowControl.Controller.__init__
+VisionEgg.FlowControl.EncapsulatedController.__init__
+VisionEgg.FlowControl.EvalStringController.__init__
+VisionEgg.FlowControl.ExecStringController.__init__
+VisionEgg.FlowControl.FunctionController.__init__
+VisionEgg.FlowControl.Presentation.__init__
+VisionEgg.GLTrace.Wrapper.__init__
+VisionEgg.GUI.AppWindow.__init__
+VisionEgg.GUI.GetKeypressDialog.__init__
+VisionEgg.GUI.GraphicsConfigurationWindow.__init__
+VisionEgg.GUI.InfoFrame.__init__
+VisionEgg.GUI.ProgressBar.__init__
+VisionEgg.GUI.ToplevelDialog.__init__
+VisionEgg.Gratings.SinGrating2D.__init__
+VisionEgg.Gratings.SinGrating3D.__init__
+VisionEgg.MoreStimuli.Arrow.__init__
+VisionEgg.MoreStimuli.FilledCircle.__init__
+VisionEgg.MoreStimuli.Rectangle3D.__init__
+VisionEgg.MoreStimuli.Target2D.__init__
+VisionEgg.ParameterTypes.AnyOf.__init__
+VisionEgg.ParameterTypes.Instance.__init__
+VisionEgg.ParameterTypes.Sequence.__init__
+VisionEgg.ParameterTypes.SubClass.__init__
+VisionEgg.PyroApps.AST_ext.AST_Visitor.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalMetaParameters.__init__
+VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.__init__
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.__init__
+VisionEgg.PyroApps.DropinGUI.DropinMetaParameters.__init__
+VisionEgg.PyroApps.DropinServer.DropinMetaController.__init__
+VisionEgg.PyroApps.EPhysGUI.AppWindow.__init__
+VisionEgg.PyroApps.EPhysGUI.BarButton.__init__
+VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase.__init__
+VisionEgg.PyroApps.EPhysGUI.GammaFrame.__init__
+VisionEgg.PyroApps.EPhysGUI.ImageSequenceLauncher.__init__
+VisionEgg.PyroApps.EPhysGUI.Loop.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopContainedObject.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopParamDialog.__init__
+VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.__init__
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.__init__
+VisionEgg.PyroApps.EPhysServer.EPhysServer.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingMetaParameters.__init__
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.GridGUI.GridControlFrame.__init__
+VisionEgg.PyroApps.GridGUI.GridMetaParameters.__init__
+VisionEgg.PyroApps.GridServer.GridMetaController.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetMetaParameters.__init__
+VisionEgg.PyroApps.MouseTargetServer.MousePositionController.__init__
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetOrientationController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetPositionController.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.CallbackEntry.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionParameters.__init__
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingMetaParameters.__init__
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumMetaParameters.__init__
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.__init__
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.__init__
+VisionEgg.PyroApps.TargetGUI.TargetMetaParameters.__init__
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.__init__
+VisionEgg.PyroClient.PyroClient.__init__
+VisionEgg.PyroHelpers.PyroConstantController.__init__
+VisionEgg.PyroHelpers.PyroEncapsulatedController.__init__
+VisionEgg.PyroHelpers.PyroEvalStringController.__init__
+VisionEgg.PyroHelpers.PyroExecStringController.__init__
+VisionEgg.PyroHelpers.PyroListenController.__init__
+VisionEgg.PyroHelpers.PyroLocalDictController.__init__
+VisionEgg.PyroHelpers.PyroServer.__init__
+VisionEgg.QuickTime.MovieTexture.__init__
+VisionEgg.ResponseControl.KeyboardResponseController.__init__
+VisionEgg.ResponseControl.ResponseController.__init__
+VisionEgg.SphereMap.AzElGrid.__init__
+VisionEgg.SphereMap.SphereGrating.__init__
+VisionEgg.SphereMap.SphereMap.__init__
+VisionEgg.SphereMap.SphereWindow.__init__
+VisionEgg.TCPController.SocketListenController.__init__
+VisionEgg.TCPController.TCPController.__init__
+VisionEgg.TCPController.TCPServer.__init__
+VisionEgg.Text.BitmapText.__init__
+VisionEgg.Text.GlutTextBase.__init__
+VisionEgg.Text.StrokeText.__init__
+VisionEgg.Text.Text.__init__
+VisionEgg.Textures.FixationCross.__init__
+VisionEgg.Textures.Mask2D.__init__
+VisionEgg.Textures.SpinningDrum.__init__
+VisionEgg.Textures.Texture.__init__
+VisionEgg.Textures.TextureFromFile.__init__
+VisionEgg.Textures.TextureObject.__init__
+VisionEgg.Textures.TextureStimulusBaseClass.__init__
+VisionEgg.ThreeDeeMath.TransformMatrix.__init__
+VisionEgg.WrappedText.WrappedText.__init__
+VisionEgg.qtmovie.Movie.__init__
+VisionEgg.qtmovie.Rect.__init__" class="py-name" href="#" onclick="return doclink('link-20', '__init__', 'link-20');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
+<a name="L36"></a><tt class="py-lineno"> 36</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt> <tt class="py-op">=</tt> <tt id="link-21" class="py-name"><a title="VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionParameters" class="py-name" href="#" onclick="return doclink('link-21', 'ScreenPositionParameters', 'link-13');">ScreenPositionParameters</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L37"></a><tt class="py-lineno"> 37</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">presentation</tt><tt class="py-op">,</tt><tt id="link-22" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-22', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-23" class="py-name"><a title="VisionE [...]
+<a name="L38"></a><tt class="py-lineno"> 38</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">"Expecting instance of VisionEgg.FlowControl.Presentation"</tt><tt class="py-op">)</tt> </tt>
+<a name="L39"></a><tt class="py-lineno"> 39</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">projection</tt><tt class="py-op">,</tt><tt id="link-25" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-25', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-26" class="py-name"><a title="VisionEgg [...]
+<a name="L40"></a><tt class="py-lineno"> 40</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">"Expecting instance of VisionEgg.Core.PerspectiveProjection"</tt><tt class="py-op">)</tt> </tt>
+<a name="L41"></a><tt class="py-lineno"> 41</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">p</tt> <tt class="py-op">=</tt> <tt class="py-name">presentation</tt> </tt>
+<a name="L42"></a><tt class="py-lineno"> 42</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">proj</tt> <tt class="py-op">=</tt> <tt class="py-name">projection</tt> </tt>
+</div><a name="L43"></a><tt class="py-lineno"> 43</tt>  <tt class="py-line"> </tt>
+<a name="ScreenPositionMetaController.get_parameters"></a><div id="ScreenPositionMetaController.get_parameters-def"><a name="L44"></a><tt class="py-lineno"> 44</tt> <a class="py-toggle" href="#" id="ScreenPositionMetaController.get_parameters-toggle" onclick="return toggle('ScreenPositionMetaController.get_parameters');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController-class.html [...]
+</div><div id="ScreenPositionMetaController.get_parameters-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ScreenPositionMetaController.get_parameters-expanded"><a name="L45"></a><tt class="py-lineno"> 45</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt> </tt>
+</div><a name="L46"></a><tt class="py-lineno"> 46</tt>  <tt class="py-line"> </tt>
+<a name="ScreenPositionMetaController.set_parameters"></a><div id="ScreenPositionMetaController.set_parameters-def"><a name="L47"></a><tt class="py-lineno"> 47</tt> <a class="py-toggle" href="#" id="ScreenPositionMetaController.set_parameters-toggle" onclick="return toggle('ScreenPositionMetaController.set_parameters');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController-class.html [...]
+</div><div id="ScreenPositionMetaController.set_parameters-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ScreenPositionMetaController.set_parameters-expanded"><a name="L48"></a><tt class="py-lineno"> 48</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">new_parameters</tt><tt class="py-op">,</tt> <tt id="link-28" class="py-name"><a title="VisionEgg.PyroApps.ScreenPos [...]
+<a name="L49"></a><tt class="py-lineno"> 49</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt> <tt class="py-op">=</tt> <tt class="py-name">new_parameters</tt> </tt>
+<a name="L50"></a><tt class="py-lineno"> 50</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L51"></a><tt class="py-lineno"> 51</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">"Argument to set_parameters must be instance of ScreenPositionParameters"</tt><tt class="py-op">)</tt> </tt>
+<a name="L52"></a><tt class="py-lineno"> 52</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-29" class="py-name" targets="Method VisionEgg.GUI.InfoFrame.update()=VisionEgg.GUI.InfoFrame-class.html#update,Method VisionEgg.GUI.ProgressBar.update()=VisionEgg.GUI.ProgressBar-class.html#update,Method VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.update()=VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController-class.html#update,Met [...]
+VisionEgg.GUI.ProgressBar.update
+VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.update
+VisionEgg.PyroApps.DropinServer.DropinMetaController.update
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.update
+VisionEgg.PyroApps.GridServer.GridMetaController.update
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.update
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.update
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.update
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.update
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.update
+VisionEgg.QuickTime.MovieTexture.update
+VisionEgg.Textures.Texture.update" class="py-name" href="#" onclick="return doclink('link-29', 'update', 'link-29');">update</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L53"></a><tt class="py-lineno"> 53</tt>  <tt class="py-line"> </tt>
+<a name="ScreenPositionMetaController.update"></a><div id="ScreenPositionMetaController.update-def"><a name="L54"></a><tt class="py-lineno"> 54</tt> <a class="py-toggle" href="#" id="ScreenPositionMetaController.update-toggle" onclick="return toggle('ScreenPositionMetaController.update');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController-class.html#update">update</a><tt class="py [...]
+</div><div id="ScreenPositionMetaController.update-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ScreenPositionMetaController.update-expanded"><a name="L55"></a><tt class="py-lineno"> 55</tt>  <tt class="py-line">        <tt id="link-30" class="py-name" targets="Variable VisionEgg.PyroApps.MouseTargetServer.left=VisionEgg.PyroApps.MouseTargetServer-module.html#left"><a title="VisionEgg.PyroApps.MouseTargetServer.left" class="py-name" href="#" onclick="return [...]
+<a name="L56"></a><tt class="py-lineno"> 56</tt>  <tt class="py-line">        <tt id="link-32" class="py-name" targets="Variable VisionEgg.PyroApps.MouseTargetServer.right=VisionEgg.PyroApps.MouseTargetServer-module.html#right"><a title="VisionEgg.PyroApps.MouseTargetServer.right" class="py-name" href="#" onclick="return doclink('link-32', 'right', 'link-32');">right</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt [...]
+<a name="L57"></a><tt class="py-lineno"> 57</tt>  <tt class="py-line">        <tt class="py-name">bottom</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op">.</tt><tt class="py-name">bottom</tt> </tt>
+<a name="L58"></a><tt class="py-lineno"> 58</tt>  <tt class="py-line">        <tt class="py-name">top</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op">.</tt><tt class="py-name">top</tt> </tt>
+<a name="L59"></a><tt class="py-lineno"> 59</tt>  <tt class="py-line">        <tt class="py-name">near</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op">.</tt><tt class="py-name">near</tt> </tt>
+<a name="L60"></a><tt class="py-lineno"> 60</tt>  <tt class="py-line">        <tt class="py-name">far</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op">.</tt><tt class="py-name">far</tt> </tt>
+<a name="L61"></a><tt class="py-lineno"> 61</tt>  <tt class="py-line"> </tt>
+<a name="L62"></a><tt class="py-lineno"> 62</tt>  <tt class="py-line">        <tt class="py-name">eye</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op">.</tt><tt class="py-name">eye</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L63"></a><tt class="py-lineno"> 63</tt>  <tt class="py-line">               <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op">.</tt><tt class="py-name">eye</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L64"></a><tt class="py-lineno"> 64</tt>  <tt class="py-line">               <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op">.</tt><tt class="py-name">eye</tt><tt class="py-op">[</tt><tt class="py-number">2</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L65"></a><tt class="py-lineno"> 65</tt>  <tt class="py-line">         </tt>
+<a name="L66"></a><tt class="py-lineno"> 66</tt>  <tt class="py-line">        <tt class="py-name">center</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op">.</tt><tt class="py-name">center</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L67"></a><tt class="py-lineno"> 67</tt>  <tt class="py-line">               <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op">.</tt><tt class="py-name">center</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L68"></a><tt class="py-lineno"> 68</tt>  <tt class="py-line">               <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op">.</tt><tt class="py-name">center</tt><tt class="py-op">[</tt><tt class="py-number">2</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L69"></a><tt class="py-lineno"> 69</tt>  <tt class="py-line">         </tt>
+<a name="L70"></a><tt class="py-lineno"> 70</tt>  <tt class="py-line">        <tt id="link-34" class="py-name" targets="Variable VisionEgg.PyroApps.MouseTargetServer.up=VisionEgg.PyroApps.MouseTargetServer-module.html#up"><a title="VisionEgg.PyroApps.MouseTargetServer.up" class="py-name" href="#" onclick="return doclink('link-34', 'up', 'link-34');">up</a></tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_p [...]
+<a name="L71"></a><tt class="py-lineno"> 71</tt>  <tt class="py-line">               <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op">.</tt><tt id="link-36" class="py-name"><a title="VisionEgg.PyroApps.MouseTargetServer.up" class="py-name" href="#" onclick="return doclink('link-36', 'up', 'link-34');">up</a></tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L72"></a><tt class="py-lineno"> 72</tt>  <tt class="py-line">               <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op">.</tt><tt id="link-37" class="py-name"><a title="VisionEgg.PyroApps.MouseTargetServer.up" class="py-name" href="#" onclick="return doclink('link-37', 'up', 'link-34');">up</a></tt><tt class="py-op">[</tt><tt class="py-number">2</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L73"></a><tt class="py-lineno"> 73</tt>  <tt class="py-line">         </tt>
+<a name="L74"></a><tt class="py-lineno"> 74</tt>  <tt class="py-line">        <tt class="py-name">temp</tt> <tt class="py-op">=</tt> <tt id="link-38" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-38', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-39" class="py-name"><a title="VisionEgg.Core" class="py-name" href="#" onclick="return doclink('link-39', 'Core', 'link-1');">Core</a></tt><tt class="py-op">.</tt><t [...]
+<a name="L75"></a><tt class="py-lineno"> 75</tt>  <tt class="py-line">        <tt class="py-name">temp</tt><tt class="py-op">.</tt><tt id="link-43" class="py-name" targets="Method VisionEgg.Core.ProjectionBaseClass.look_at()=VisionEgg.Core.ProjectionBaseClass-class.html#look_at"><a title="VisionEgg.Core.ProjectionBaseClass.look_at" class="py-name" href="#" onclick="return doclink('link-43', 'look_at', 'link-43');">look_at</a></tt><tt class="py-op">(</tt><tt class="py-name">eye</tt><tt cl [...]
+<a name="L76"></a><tt class="py-lineno"> 76</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">proj</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">matrix</tt> <tt class="py-op">=</tt> <tt class="py-name">temp</tt><tt class="py-op">.</tt><tt id="link-45" class="py-name" targets="Method VisionEgg.Core.ProjectionBaseClass.get_matrix()=VisionEgg.Core.ProjectionBaseClass-class.h [...]
+VisionEgg.ThreeDeeMath.TransformMatrix.get_matrix" class="py-name" href="#" onclick="return doclink('link-45', 'get_matrix', 'link-45');">get_matrix</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L77"></a><tt class="py-lineno"> 77</tt>  <tt class="py-line">                                                     </tt>
+<a name="ScreenPositionMetaController.go"></a><div id="ScreenPositionMetaController.go-def"><a name="L78"></a><tt class="py-lineno"> 78</tt> <a class="py-toggle" href="#" id="ScreenPositionMetaController.go-toggle" onclick="return toggle('ScreenPositionMetaController.go');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController-class.html#go">go</a><tt class="py-op">(</tt><tt class="py [...]
+</div><div id="ScreenPositionMetaController.go-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ScreenPositionMetaController.go-expanded"><a name="L79"></a><tt class="py-lineno"> 79</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">enter_go_loop</tt> <tt class="py-op">=</tt> <tt class="py-number">1 [...]
+</div><a name="L80"></a><tt class="py-lineno"> 80</tt>  <tt class="py-line"> </tt>
+<a name="ScreenPositionMetaController.quit_server"></a><div id="ScreenPositionMetaController.quit_server-def"><a name="L81"></a><tt class="py-lineno"> 81</tt> <a class="py-toggle" href="#" id="ScreenPositionMetaController.quit_server-toggle" onclick="return toggle('ScreenPositionMetaController.quit_server');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController-class.html#quit_server [...]
+</div><div id="ScreenPositionMetaController.quit_server-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ScreenPositionMetaController.quit_server-expanded"><a name="L82"></a><tt class="py-lineno"> 82</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt id="link-46" class="py-name" targets="Method VisionEgg.PyroApps.E [...]
+</div></div><a name="L83"></a><tt class="py-lineno"> 83</tt>  <tt class="py-line"> </tt>
+<a name="L84"></a><tt class="py-lineno"> 84</tt>  <tt class="py-line"><tt class="py-comment"># Don't do anything unless this script is being run</tt> </tt>
+<a name="L85"></a><tt class="py-lineno"> 85</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-keyword">if</tt> <tt class="py-name">__name__</tt> <tt class="py-op">==</tt> <tt class="py-string">'__main__'</tt><tt class="py-op">:</tt> </tt>
+<a name="L86"></a><tt class="py-lineno"> 86</tt>  <tt class="py-line">     </tt>
+<a name="L87"></a><tt class="py-lineno"> 87</tt>  <tt class="py-line">    <tt class="py-name">pyro_server</tt> <tt class="py-op">=</tt> <tt id="link-47" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-47', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-48" class="py-name"><a title="VisionEgg.PyroHelpers" class="py-name" href="#" onclick="return doclink('link-48', 'PyroHelpers', 'link-9');">PyroHelpers</a></tt><t [...]
+<a name="L88"></a><tt class="py-lineno"> 88</tt>  <tt class="py-line"> </tt>
+<a name="L89"></a><tt class="py-lineno"> 89</tt>  <tt class="py-line">    <tt class="py-comment"># get Vision Egg stimulus ready to go</tt> </tt>
+<a name="L90"></a><tt class="py-lineno"> 90</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">screen</tt> <tt class="py-op">=</tt> <tt id="link-50" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-50', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-51" class="py-name"><a title="VisionEgg.Core" class="py-name" href="#" onclick="return doclink('link-51', 'Core', 'link-1');">Core</a></tt> [...]
+<a name="L91"></a><tt class="py-lineno"> 91</tt>  <tt class="py-line">    <tt class="py-name">filename</tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">path</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt id="link-54" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-54', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-55" clas [...]
+<a name="L92"></a><tt class="py-lineno"> 92</tt>  <tt class="py-line">    <tt class="py-name">texture</tt> <tt class="py-op">=</tt> <tt id="link-56" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-56', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-57" class="py-name"><a title="VisionEgg.Textures" class="py-name" href="#" onclick="return doclink('link-57', 'Textures', 'link-7');">Textures</a></tt><tt class="py-o [...]
+<a name="L93"></a><tt class="py-lineno"> 93</tt>  <tt class="py-line">    <tt class="py-name">sphere_map</tt> <tt class="py-op">=</tt> <tt id="link-59" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-59', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-60" class="py-name"><a title="VisionEgg.SphereMap
+VisionEgg.SphereMap.SphereMap" class="py-name" href="#" onclick="return doclink('link-60', 'SphereMap', 'link-5');">SphereMap</a></tt><tt class="py-op">.</tt><tt id="link-61" class="py-name"><a title="VisionEgg.SphereMap
+VisionEgg.SphereMap.SphereMap" class="py-name" href="#" onclick="return doclink('link-61', 'SphereMap', 'link-5');">SphereMap</a></tt><tt class="py-op">(</tt><tt class="py-name">texture</tt><tt class="py-op">=</tt><tt class="py-name">texture</tt><tt class="py-op">,</tt> </tt>
+<a name="L94"></a><tt class="py-lineno"> 94</tt>  <tt class="py-line">                                               <tt class="py-name">shrink_texture_ok</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py-op">,</tt> </tt>
+<a name="L95"></a><tt class="py-lineno"> 95</tt>  <tt class="py-line">                                               <tt class="py-name">stacks</tt><tt class="py-op">=</tt><tt class="py-number">100</tt><tt class="py-op">,</tt> </tt>
+<a name="L96"></a><tt class="py-lineno"> 96</tt>  <tt class="py-line">                                               <tt class="py-name">slices</tt><tt class="py-op">=</tt><tt class="py-number">100</tt><tt class="py-op">)</tt> </tt>
+<a name="L97"></a><tt class="py-lineno"> 97</tt>  <tt class="py-line">    <tt class="py-name">temp</tt> <tt class="py-op">=</tt> <tt id="link-62" class="py-name"><a title="VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionParameters" class="py-name" href="#" onclick="return doclink('link-62', 'ScreenPositionParameters', 'link-13');">ScreenPositionParameters</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L98"></a><tt class="py-lineno"> 98</tt>  <tt class="py-line"> </tt>
+<a name="L99"></a><tt class="py-lineno"> 99</tt>  <tt class="py-line">    <tt class="py-name">projection</tt> <tt class="py-op">=</tt> <tt id="link-63" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-63', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-64" class="py-name"><a title="VisionEgg.Core" class="py-name" href="#" onclick="return doclink('link-64', 'Core', 'link-1');">Core</a></tt><tt class="py-op">.</tt> [...]
+<a name="L100"></a><tt class="py-lineno">100</tt>  <tt class="py-line">                                                      <tt class="py-name">temp</tt><tt class="py-op">.</tt><tt id="link-67" class="py-name"><a title="VisionEgg.PyroApps.MouseTargetServer.right" class="py-name" href="#" onclick="return doclink('link-67', 'right', 'link-32');">right</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L101"></a><tt class="py-lineno">101</tt>  <tt class="py-line">                                                      <tt class="py-name">temp</tt><tt class="py-op">.</tt><tt class="py-name">bottom</tt><tt class="py-op">,</tt> </tt>
+<a name="L102"></a><tt class="py-lineno">102</tt>  <tt class="py-line">                                                      <tt class="py-name">temp</tt><tt class="py-op">.</tt><tt class="py-name">top</tt><tt class="py-op">,</tt> </tt>
+<a name="L103"></a><tt class="py-lineno">103</tt>  <tt class="py-line">                                                      <tt class="py-name">temp</tt><tt class="py-op">.</tt><tt class="py-name">near</tt><tt class="py-op">,</tt> </tt>
+<a name="L104"></a><tt class="py-lineno">104</tt>  <tt class="py-line">                                                      <tt class="py-name">temp</tt><tt class="py-op">.</tt><tt class="py-name">far</tt><tt class="py-op">)</tt> </tt>
+<a name="L105"></a><tt class="py-lineno">105</tt>  <tt class="py-line">    <tt class="py-name">viewport</tt> <tt class="py-op">=</tt> <tt id="link-68" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-68', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-69" class="py-name"><a title="VisionEgg.Core" class="py-name" href="#" onclick="return doclink('link-69', 'Core', 'link-1');">Core</a></tt><tt class="py-op">.</tt>< [...]
+<a name="L106"></a><tt class="py-lineno">106</tt>  <tt class="py-line">    <tt class="py-name">p</tt> <tt class="py-op">=</tt> <tt id="link-71" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-71', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-72" class="py-name"><a title="VisionEgg.FlowControl" class="py-name" href="#" onclick="return doclink('link-72', 'FlowControl', 'link-3');">FlowControl</a></tt><tt class=" [...]
+<a name="L107"></a><tt class="py-lineno">107</tt>  <tt class="py-line"> </tt>
+<a name="L108"></a><tt class="py-lineno">108</tt>  <tt class="py-line">    <tt class="py-comment"># now hand over control of stimulus to GratingExperimentMetaController</tt> </tt>
+<a name="L109"></a><tt class="py-lineno">109</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">projection_controller</tt> <tt class="py-op">=</tt> <tt id="link-74" class="py-name" targets="Class VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController=VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController-class.html"><a title="VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController" class="py-name" href="#" onclick="retur [...]
+<a name="L110"></a><tt class="py-lineno">110</tt>  <tt class="py-line">    <tt class="py-name">pyro_server</tt><tt class="py-op">.</tt><tt id="link-75" class="py-name" targets="Method VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.connect()=VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#connect,Method VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.connect()=VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html#connect,Method  [...]
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.connect
+VisionEgg.PyroHelpers.PyroServer.connect" class="py-name" href="#" onclick="return doclink('link-75', 'connect', 'link-75');">connect</a></tt><tt class="py-op">(</tt><tt class="py-name">projection_controller</tt><tt class="py-op">,</tt><tt class="py-string">"projection_controller"</tt><tt class="py-op">)</tt> </tt>
+<a name="L111"></a><tt class="py-lineno">111</tt>  <tt class="py-line"> </tt>
+<a name="L112"></a><tt class="py-lineno">112</tt>  <tt class="py-line">    <tt class="py-comment"># get listener controller and register it</tt> </tt>
+<a name="L113"></a><tt class="py-lineno">113</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">p</tt><tt class="py-op">.</tt><tt id="link-76" class="py-name" targets="Method VisionEgg.FlowControl.Presentation.add_controller()=VisionEgg.FlowControl.Presentation-class.html#add_controller,Method VisionEgg.PyroHelpers.PyroLocalDictController.add_controller()=VisionEgg.PyroHelpers.PyroLocalDictController-class.html#add_controller"><a title="VisionEgg.FlowControl.Pr [...]
+VisionEgg.PyroHelpers.PyroLocalDictController.add_controller" class="py-name" href="#" onclick="return doclink('link-76', 'add_controller', 'link-76');">add_controller</a></tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-name">pyro_server</tt><tt class="py-op">.</tt><tt id="link-77" class="py-name" targets="Method VisionEgg.PyroHelpers.PyroServer.create_listener_controller()=VisionEgg.Pyro [...]
+<a name="L114"></a><tt class="py-lineno">114</tt>  <tt class="py-line"> </tt>
+<a name="L115"></a><tt class="py-lineno">115</tt>  <tt class="py-line">    <tt class="py-comment"># enter endless loop</tt> </tt>
+<a name="L116"></a><tt class="py-lineno">116</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">p</tt><tt class="py-op">.</tt><tt id="link-78" class="py-name" targets="Method VisionEgg.FlowControl.Presentation.run_forever()=VisionEgg.FlowControl.Presentation-class.html#run_forever"><a title="VisionEgg.FlowControl.Presentation.run_forever" class="py-name" href="#" onclick="return doclink('link-78', 'run_forever', 'link-78');">run_forever</a></tt><tt class="py-op [...]
+<a name="L117"></a><tt class="py-lineno">117</tt>  <tt class="py-line"> </tt><script type="text/javascript">
+<!--
+expandto(location.href);
+// -->
+</script>
+</pre>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:51 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController-class.html b/doc/reference/html/VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController-class.html
new file mode 100644
index 0000000..373fb71
--- /dev/null
+++ b/doc/reference/html/VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController-class.html
@@ -0,0 +1,287 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.PyroApps-module.html">Package PyroApps</a> ::
+        <a href="VisionEgg.PyroApps.ScreenPositionServer-module.html">Module ScreenPositionServer</a> ::
+        Class ScreenPositionMetaController
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class ScreenPositionMetaController</h1><span class="codelink"><a href="VisionEgg.PyroApps.ScreenPositionServer-pysrc.html#ScreenPositionMetaController">source code</a></span><br /><br />
+<pre class="base-tree">
+Pyro.core.ObjBase --+
+                    |
+                   <strong class="uidshort">ScreenPositionMetaController</strong>
+</pre>
+
+<hr />
+<pre class="literalblock">
+Encapsulates all parameters controlling screen position
+
+</pre><br /><br />
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">presentation</span>,
+        <span class="summary-sig-arg">projection</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.ScreenPositionServer-pysrc.html#ScreenPositionMetaController.__init__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="get_parameters"></a><span class="summary-sig-name">get_parameters</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.ScreenPositionServer-pysrc.html#ScreenPositionMetaController.get_parameters">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="set_parameters"></a><span class="summary-sig-name">set_parameters</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">new_parameters</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.ScreenPositionServer-pysrc.html#ScreenPositionMetaController.set_parameters">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="update"></a><span class="summary-sig-name">update</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.ScreenPositionServer-pysrc.html#ScreenPositionMetaController.update">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="go"></a><span class="summary-sig-name">go</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.ScreenPositionServer-pysrc.html#ScreenPositionMetaController.go">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="quit_server"></a><span class="summary-sig-name">quit_server</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.ScreenPositionServer-pysrc.html#ScreenPositionMetaController.quit_server">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>Pyro.core.ObjBase</code></b>:
+      <code>GUID</code>,
+      <code>Pyro_dyncall</code>,
+      <code>delegateTo</code>,
+      <code>getAttrProxy</code>,
+      <code>getDaemon</code>,
+      <code>getLocalStorage</code>,
+      <code>getProxy</code>,
+      <code>remote_retrieve_code</code>,
+      <code>remote_supply_code</code>,
+      <code>setCodeValidator</code>,
+      <code>setGUID</code>,
+      <code>setPyroDaemon</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Method Details</span></td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">presentation</span>,
+        <span class="sig-arg">projection</span>)</span>
+    <br /><em class="fname">(Constructor)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.PyroApps.ScreenPositionServer-pysrc.html#ScreenPositionMetaController.__init__">source code</a></span> 
+    </td>
+  </table>
+  
+  
+  <dl class="fields">
+    <dt>Overrides:
+      Pyro.core.ObjBase.__init__
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:47 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.PyroApps.SphereGratingGUI-module.html b/doc/reference/html/VisionEgg.PyroApps.SphereGratingGUI-module.html
new file mode 100644
index 0000000..612af97
--- /dev/null
+++ b/doc/reference/html/VisionEgg.PyroApps.SphereGratingGUI-module.html
@@ -0,0 +1,196 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.PyroApps.SphereGratingGUI</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.PyroApps-module.html">Package PyroApps</a> ::
+        Module SphereGratingGUI
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.PyroApps.SphereGratingGUI-module.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== MODULE DESCRIPTION ==================== -->
+<h1 class="epydoc">Module SphereGratingGUI</h1><span class="codelink"><a href="VisionEgg.PyroApps.SphereGratingGUI-pysrc.html">source code</a></span><br /><br />
+<pre class="literalblock">
+Handle perspective-distorted sinusoidal gratings (client-side)
+
+</pre><br /><br />
+
+<hr />
+<div class="fields">      <p><strong>Version:</strong>
+        1.1.dev
+      </p>
+      <p><strong>Author:</strong>
+        Andrew Straw <astraw at users.sourceforge.net>
+      </p>
+</div><!-- ==================== CLASSES ==================== -->
+<a name="section-Classes"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Classes</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.PyroApps.SphereGratingGUI.SphereGratingMetaParameters-class.html" class="summary-name">SphereGratingMetaParameters</a>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame-class.html" class="summary-name">SphereGratingControlFrame</a>
+    </td>
+  </tr>
+</table>
+<!-- ==================== FUNCTIONS ==================== -->
+<a name="section-Functions"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Functions</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="get_control_list"></a><span class="summary-sig-name">get_control_list</span>()</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.SphereGratingGUI-pysrc.html#get_control_list">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+</table>
+<!-- ==================== VARIABLES ==================== -->
+<a name="section-Variables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Variables</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="__cvs__"></a><span class="summary-name">__cvs__</span> = <code title="string.split('$Revision$') [1]">string.split('$Revision$') [1]</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="__date__"></a><span class="summary-name">__date__</span> = <code title="string.join(string.split('$Date$') [1: 3], ' ')">string.join(string.split('$Date$') [1: 3], ' ')</code>
+    </td>
+  </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.PyroApps.SphereGratingGUI-pysrc.html b/doc/reference/html/VisionEgg.PyroApps.SphereGratingGUI-pysrc.html
new file mode 100644
index 0000000..7218876
--- /dev/null
+++ b/doc/reference/html/VisionEgg.PyroApps.SphereGratingGUI-pysrc.html
@@ -0,0 +1,537 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.PyroApps.SphereGratingGUI</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.PyroApps-module.html">Package PyroApps</a> ::
+        Module SphereGratingGUI
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.PyroApps.SphereGratingGUI-pysrc.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<h1 class="epydoc">Source Code for <a href="VisionEgg.PyroApps.SphereGratingGUI-module.html">Module VisionEgg.PyroApps.SphereGratingGUI</a></h1>
+<pre class="py-src">
+<a name="L1"></a><tt class="py-lineno">  1</tt>  <tt class="py-line"><tt class="py-comment">#!/usr/bin/env python</tt> </tt>
+<a name="L2"></a><tt class="py-lineno">  2</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-docstring">"""Handle perspective-distorted sinusoidal gratings (client-side)"""</tt> </tt>
+<a name="L3"></a><tt class="py-lineno">  3</tt>  <tt class="py-line"> </tt>
+<a name="L4"></a><tt class="py-lineno">  4</tt>  <tt class="py-line"><tt class="py-comment"># Copyright (c) 2002-2003 Andrew Straw.  Distributed under the terms</tt> </tt>
+<a name="L5"></a><tt class="py-lineno">  5</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># of the GNU Lesser General Public License (LGPL).</tt> </tt>
+<a name="L6"></a><tt class="py-lineno">  6</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L7"></a><tt class="py-lineno">  7</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-0" class="py-name" targets="Package VisionEgg=VisionEgg-module.html"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-0', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">,</tt> <tt class="py-name">string</tt> </tt>
+<a name="L8"></a><tt class="py-lineno">  8</tt>  <tt class="py-line"><tt id="link-1" class="py-name" targets="Variable VisionEgg.DaqKeyboard.__version__=VisionEgg.DaqKeyboard-module.html#__version__,Variable VisionEgg.DaqLPT.__version__=VisionEgg.DaqLPT-module.html#__version__,Variable VisionEgg.GL.__version__=VisionEgg.GL-module.html#__version__,Variable VisionEgg.PyroApps.EPhysGUI.__version__=VisionEgg.PyroApps.EPhysGUI-module.html#__version__,Variable VisionEgg.PyroApps.EPhysGUIUtils. [...]
+VisionEgg.DaqLPT.__version__
+VisionEgg.GL.__version__
+VisionEgg.PyroApps.EPhysGUI.__version__
+VisionEgg.PyroApps.EPhysGUIUtils.__version__
+VisionEgg.PyroApps.EPhysServer.__version__
+VisionEgg.PyroApps.GridGUI.__version__
+VisionEgg.PyroApps.GridServer.__version__
+VisionEgg.PyroApps.ScreenPositionGUI.__version__
+VisionEgg.PyroApps.ScreenPositionServer.__version__
+VisionEgg.PyroApps.SpinningDrumGUI.__version__
+VisionEgg.PyroApps.SpinningDrumServer.__version__
+VisionEgg.PyroHelpers.__version__
+VisionEgg.QuickTime.__version__
+VisionEgg.ResponseControl.__version__
+VisionEgg.SphereMap.__version__
+VisionEgg.TCPController.__version__" class="py-name" href="#" onclick="return doclink('link-1', '__version__', 'link-1');">__version__</a></tt> <tt class="py-op">=</tt> <tt id="link-2" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-2', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-3" class="py-name" targets="Variable VisionEgg.release_name=VisionEgg-module.html#release_name"><a title="VisionEgg.release_name" c [...]
+<a name="L9"></a><tt class="py-lineno">  9</tt>  <tt class="py-line"><tt id="link-4" class="py-name" targets="Variable VisionEgg.PyroApps.ColorCalGUI.__cvs__=VisionEgg.PyroApps.ColorCalGUI-module.html#__cvs__,Variable VisionEgg.PyroApps.ColorCalServer.__cvs__=VisionEgg.PyroApps.ColorCalServer-module.html#__cvs__,Variable VisionEgg.PyroApps.EPhysGUI.__cvs__=VisionEgg.PyroApps.EPhysGUI-module.html#__cvs__,Variable VisionEgg.PyroApps.EPhysGUIUtils.__cvs__=VisionEgg.PyroApps.EPhysGUIUtils-mo [...]
+VisionEgg.PyroApps.ColorCalServer.__cvs__
+VisionEgg.PyroApps.EPhysGUI.__cvs__
+VisionEgg.PyroApps.EPhysGUIUtils.__cvs__
+VisionEgg.PyroApps.EPhysServer.__cvs__
+VisionEgg.PyroApps.FlatGratingGUI.__cvs__
+VisionEgg.PyroApps.FlatGratingServer.__cvs__
+VisionEgg.PyroApps.GridGUI.__cvs__
+VisionEgg.PyroApps.GridServer.__cvs__
+VisionEgg.PyroApps.MouseTargetGUI.__cvs__
+VisionEgg.PyroApps.MouseTargetServer.__cvs__
+VisionEgg.PyroApps.ScreenPositionGUI.__cvs__
+VisionEgg.PyroApps.ScreenPositionServer.__cvs__
+VisionEgg.PyroApps.SphereGratingGUI.__cvs__
+VisionEgg.PyroApps.SphereGratingServer.__cvs__
+VisionEgg.PyroApps.SpinningDrumGUI.__cvs__
+VisionEgg.PyroApps.SpinningDrumServer.__cvs__
+VisionEgg.PyroApps.TargetGUI.__cvs__
+VisionEgg.PyroApps.TargetServer.__cvs__
+VisionEgg.PyroClient.__cvs__
+VisionEgg.PyroHelpers.__cvs__
+VisionEgg.TCPController.__cvs__" class="py-name" href="#" onclick="return doclink('link-4', '__cvs__', 'link-4');">__cvs__</a></tt> <tt class="py-op">=</tt> <tt class="py-name">string</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'$Revision$'</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
+<a name="L10"></a><tt class="py-lineno"> 10</tt>  <tt class="py-line"><tt id="link-5" class="py-name" targets="Variable VisionEgg.PyroApps.ColorCalGUI.__date__=VisionEgg.PyroApps.ColorCalGUI-module.html#__date__,Variable VisionEgg.PyroApps.ColorCalServer.__date__=VisionEgg.PyroApps.ColorCalServer-module.html#__date__,Variable VisionEgg.PyroApps.EPhysGUI.__date__=VisionEgg.PyroApps.EPhysGUI-module.html#__date__,Variable VisionEgg.PyroApps.EPhysGUIUtils.__date__=VisionEgg.PyroApps.EPhysGUI [...]
+VisionEgg.PyroApps.ColorCalServer.__date__
+VisionEgg.PyroApps.EPhysGUI.__date__
+VisionEgg.PyroApps.EPhysGUIUtils.__date__
+VisionEgg.PyroApps.EPhysServer.__date__
+VisionEgg.PyroApps.FlatGratingGUI.__date__
+VisionEgg.PyroApps.FlatGratingServer.__date__
+VisionEgg.PyroApps.GridGUI.__date__
+VisionEgg.PyroApps.GridServer.__date__
+VisionEgg.PyroApps.MouseTargetGUI.__date__
+VisionEgg.PyroApps.MouseTargetServer.__date__
+VisionEgg.PyroApps.ScreenPositionGUI.__date__
+VisionEgg.PyroApps.ScreenPositionServer.__date__
+VisionEgg.PyroApps.SphereGratingGUI.__date__
+VisionEgg.PyroApps.SphereGratingServer.__date__
+VisionEgg.PyroApps.SpinningDrumGUI.__date__
+VisionEgg.PyroApps.SpinningDrumServer.__date__
+VisionEgg.PyroApps.TargetGUI.__date__
+VisionEgg.PyroApps.TargetServer.__date__
+VisionEgg.PyroClient.__date__
+VisionEgg.PyroHelpers.__date__
+VisionEgg.TCPController.__date__" class="py-name" href="#" onclick="return doclink('link-5', '__date__', 'link-5');">__date__</a></tt> <tt class="py-op">=</tt> <tt class="py-name">string</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">string</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'$Date$'</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt  [...]
+<a name="L11"></a><tt class="py-lineno"> 11</tt>  <tt class="py-line"><tt id="link-6" class="py-name" targets="Variable VisionEgg.PyroApps.EPhysGUI.__author__=VisionEgg.PyroApps.EPhysGUI-module.html#__author__,Variable VisionEgg.PyroApps.EPhysGUIUtils.__author__=VisionEgg.PyroApps.EPhysGUIUtils-module.html#__author__,Variable VisionEgg.PyroApps.EPhysServer.__author__=VisionEgg.PyroApps.EPhysServer-module.html#__author__,Variable VisionEgg.PyroApps.GridGUI.__author__=VisionEgg.PyroApps.Gr [...]
+VisionEgg.PyroApps.EPhysGUIUtils.__author__
+VisionEgg.PyroApps.EPhysServer.__author__
+VisionEgg.PyroApps.GridGUI.__author__
+VisionEgg.PyroApps.GridServer.__author__
+VisionEgg.PyroApps.SpinningDrumGUI.__author__
+VisionEgg.PyroApps.SpinningDrumServer.__author__" class="py-name" href="#" onclick="return doclink('link-6', '__author__', 'link-6');">__author__</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'Andrew Straw <astraw at users.sourceforge.net>'</tt> </tt>
+<a name="L12"></a><tt class="py-lineno"> 12</tt>  <tt class="py-line"> </tt>
+<a name="L13"></a><tt class="py-lineno"> 13</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">sys</tt><tt class="py-op">,</tt> <tt class="py-name">os</tt> </tt>
+<a name="L14"></a><tt class="py-lineno"> 14</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-7" class="py-name" targets="Variable VisionEgg.GUI.Tkinter=VisionEgg.GUI-module.html#Tkinter"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-7', 'Tkinter', 'link-7');">Tkinter</a></tt> </tt>
+<a name="L15"></a><tt class="py-lineno"> 15</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-8" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-8', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-9" class="py-name" targets="Package VisionEgg.PyroApps=VisionEgg.PyroApps-module.html"><a title="VisionEgg.PyroApps" class="py-name" href="#" onclick="return doclink('link-9', 'PyroApps', 'link-9 [...]
+<a name="L16"></a><tt class="py-lineno"> 16</tt>  <tt class="py-line"> </tt>
+<a name="get_control_list"></a><div id="get_control_list-def"><a name="L17"></a><tt class="py-lineno"> 17</tt> <a class="py-toggle" href="#" id="get_control_list-toggle" onclick="return toggle('get_control_list');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.SphereGratingGUI-module.html#get_control_list">get_control_list</a><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="get_control_list-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="get_control_list-expanded"><a name="L18"></a><tt class="py-lineno"> 18</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-op">[</tt><tt class="py-op">(</tt><tt class="py-string">"sphere_grating_server"</tt><tt class="py-op">,</tt><tt id="link-11" class="py-name" targets="Class VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame=VisionEgg.PyroApps.S [...]
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.title
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.title
+VisionEgg.PyroApps.GridGUI.GridControlFrame.title
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.title
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.title
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.title
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.title" class="py-name" href="#" onclick="return doclink('link-13', 'title', 'link-13');">title</a></tt><tt class="py-op">)</tt><tt class="py-op">]</tt> </tt>
+</div><a name="L19"></a><tt class="py-lineno"> 19</tt>  <tt class="py-line"> </tt>
+<a name="SphereGratingMetaParameters"></a><div id="SphereGratingMetaParameters-def"><a name="L20"></a><tt class="py-lineno"> 20</tt> <a class="py-toggle" href="#" id="SphereGratingMetaParameters-toggle" onclick="return toggle('SphereGratingMetaParameters');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.PyroApps.SphereGratingGUI.SphereGratingMetaParameters-class.html">SphereGratingMetaParameters</a><tt class="py-op">:</tt> </tt>
+</div><div id="SphereGratingMetaParameters-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="SphereGratingMetaParameters-expanded"><a name="SphereGratingMetaParameters.__init__"></a><div id="SphereGratingMetaParameters.__init__-def"><a name="L21"></a><tt class="py-lineno"> 21</tt> <a class="py-toggle" href="#" id="SphereGratingMetaParameters.__init__-toggle" onclick="return toggle('SphereGratingMetaParameters.__init__');">-</a><tt class="py-line">    <tt class="py-k [...]
+</div><div id="SphereGratingMetaParameters.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SphereGratingMetaParameters.__init__-expanded"><a name="L22"></a><tt class="py-lineno"> 22</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">contrast</tt> <tt class="py-op">=</tt> <tt class="py-number">1.0</tt> </tt>
+<a name="L23"></a><tt class="py-lineno"> 23</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">orient</tt> <tt class="py-op">=</tt> <tt class="py-number">0.0</tt> </tt>
+<a name="L24"></a><tt class="py-lineno"> 24</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sf</tt> <tt class="py-op">=</tt> <tt class="py-number">0.1</tt> <tt class="py-comment"># cycles per degree</tt> </tt>
+<a name="L25"></a><tt class="py-lineno"> 25</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">tf</tt> <tt class="py-op">=</tt> <tt class="py-number">1.0</tt> </tt>
+<a name="L26"></a><tt class="py-lineno"> 26</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">pre_stim_sec</tt> <tt class="py-op">=</tt> <tt class="py-number">1.0</tt> </tt>
+<a name="L27"></a><tt class="py-lineno"> 27</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stim_sec</tt> <tt class="py-op">=</tt> <tt class="py-number">2.0</tt> </tt>
+<a name="L28"></a><tt class="py-lineno"> 28</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">post_stim_sec</tt> <tt class="py-op">=</tt> <tt class="py-number">1.0</tt> </tt>
+<a name="L29"></a><tt class="py-lineno"> 29</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">window_func</tt> <tt class="py-op">=</tt> <tt class="py-string">'gaussian'</tt> </tt>
+<a name="L30"></a><tt class="py-lineno"> 30</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">window_radius</tt> <tt class="py-op">=</tt> <tt class="py-number">10.0</tt> </tt>
+<a name="L31"></a><tt class="py-lineno"> 31</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">window_az</tt> <tt class="py-op">=</tt> <tt class="py-number">0.0</tt> </tt>
+<a name="L32"></a><tt class="py-lineno"> 32</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">window_el</tt> <tt class="py-op">=</tt> <tt class="py-number">0.0</tt> </tt>
+</div></div><a name="L33"></a><tt class="py-lineno"> 33</tt>  <tt class="py-line">         </tt>
+<a name="SphereGratingControlFrame"></a><div id="SphereGratingControlFrame-def"><a name="L34"></a><tt class="py-lineno"> 34</tt> <a class="py-toggle" href="#" id="SphereGratingControlFrame-toggle" onclick="return toggle('SphereGratingControlFrame');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame-class.html">SphereGratingControlFrame</a><tt class="py-op">(</tt><tt class="py-base-class"> [...]
+</div><div id="SphereGratingControlFrame-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="SphereGratingControlFrame-expanded"><a name="L35"></a><tt class="py-lineno"> 35</tt>  <tt class="py-line">    <tt id="link-14" class="py-name"><a title="VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.title
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.title
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.title
+VisionEgg.PyroApps.GridGUI.GridControlFrame.title
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.title
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.title
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.title
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.title" class="py-name" href="#" onclick="return doclink('link-14', 'title', 'link-13');">title</a></tt> <tt class="py-op">=</tt> <tt class="py-string">"Grating (Perspective-distorted) Experiment"</tt> </tt>
+<a name="SphereGratingControlFrame.__init__"></a><div id="SphereGratingControlFrame.__init__-def"><a name="L36"></a><tt class="py-lineno"> 36</tt> <a class="py-toggle" href="#" id="SphereGratingControlFrame.__init__-toggle" onclick="return toggle('SphereGratingControlFrame.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame-class.html#__init__">__init__</a><tt class="py-op">(< [...]
+</div><div id="SphereGratingControlFrame.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SphereGratingControlFrame.__init__-expanded"><a name="L37"></a><tt class="py-lineno"> 37</tt>  <tt class="py-line">        <tt class="py-name">client_utils</tt><tt class="py-op">.</tt><tt id="link-15" class="py-name" targets="Class VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame=VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html"><a title="Visi [...]
+VisionEgg.Configuration.Config.__init__
+VisionEgg.Core.FixationSpot.__init__
+VisionEgg.Core.FrameTimer.__init__
+VisionEgg.Core.ModelView.__init__
+VisionEgg.Core.OrthographicProjection.__init__
+VisionEgg.Core.OrthographicProjectionNoZClip.__init__
+VisionEgg.Core.PerspectiveProjection.__init__
+VisionEgg.Core.Projection.__init__
+VisionEgg.Core.ProjectionBaseClass.__init__
+VisionEgg.Core.Screen.__init__
+VisionEgg.Core.SimplePerspectiveProjection.__init__
+VisionEgg.Core.Stimulus.__init__
+VisionEgg.Core.Viewport.__init__
+VisionEgg.Daq.Channel.__init__
+VisionEgg.Daq.DaqMode.__init__
+VisionEgg.Daq.Device.__init__
+VisionEgg.Daq.Functionality.__init__
+VisionEgg.Daq.SignalType.__init__
+VisionEgg.DaqKeyboard.KeyboardTriggerInController.__init__
+VisionEgg.DaqLPT.LPTChannel.__init__
+VisionEgg.DaqLPT.LPTDevice.__init__
+VisionEgg.DaqLPT.LPTTriggerInController.__init__
+VisionEgg.DaqLPT.LPTTriggerOutController.__init__
+VisionEgg.Deprecated.Message.__init__
+VisionEgg.Dots.DotArea2D.__init__
+VisionEgg.FlowControl.ConstantController.__init__
+VisionEgg.FlowControl.Controller.__init__
+VisionEgg.FlowControl.EncapsulatedController.__init__
+VisionEgg.FlowControl.EvalStringController.__init__
+VisionEgg.FlowControl.ExecStringController.__init__
+VisionEgg.FlowControl.FunctionController.__init__
+VisionEgg.FlowControl.Presentation.__init__
+VisionEgg.GLTrace.Wrapper.__init__
+VisionEgg.GUI.AppWindow.__init__
+VisionEgg.GUI.GetKeypressDialog.__init__
+VisionEgg.GUI.GraphicsConfigurationWindow.__init__
+VisionEgg.GUI.InfoFrame.__init__
+VisionEgg.GUI.ProgressBar.__init__
+VisionEgg.GUI.ToplevelDialog.__init__
+VisionEgg.Gratings.SinGrating2D.__init__
+VisionEgg.Gratings.SinGrating3D.__init__
+VisionEgg.MoreStimuli.Arrow.__init__
+VisionEgg.MoreStimuli.FilledCircle.__init__
+VisionEgg.MoreStimuli.Rectangle3D.__init__
+VisionEgg.MoreStimuli.Target2D.__init__
+VisionEgg.ParameterTypes.AnyOf.__init__
+VisionEgg.ParameterTypes.Instance.__init__
+VisionEgg.ParameterTypes.Sequence.__init__
+VisionEgg.ParameterTypes.SubClass.__init__
+VisionEgg.PyroApps.AST_ext.AST_Visitor.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalMetaParameters.__init__
+VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.__init__
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.__init__
+VisionEgg.PyroApps.DropinGUI.DropinMetaParameters.__init__
+VisionEgg.PyroApps.DropinServer.DropinMetaController.__init__
+VisionEgg.PyroApps.EPhysGUI.AppWindow.__init__
+VisionEgg.PyroApps.EPhysGUI.BarButton.__init__
+VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase.__init__
+VisionEgg.PyroApps.EPhysGUI.GammaFrame.__init__
+VisionEgg.PyroApps.EPhysGUI.ImageSequenceLauncher.__init__
+VisionEgg.PyroApps.EPhysGUI.Loop.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopContainedObject.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopParamDialog.__init__
+VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.__init__
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.__init__
+VisionEgg.PyroApps.EPhysServer.EPhysServer.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingMetaParameters.__init__
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.GridGUI.GridControlFrame.__init__
+VisionEgg.PyroApps.GridGUI.GridMetaParameters.__init__
+VisionEgg.PyroApps.GridServer.GridMetaController.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetMetaParameters.__init__
+VisionEgg.PyroApps.MouseTargetServer.MousePositionController.__init__
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetOrientationController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetPositionController.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.CallbackEntry.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionParameters.__init__
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingMetaParameters.__init__
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumMetaParameters.__init__
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.__init__
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.__init__
+VisionEgg.PyroApps.TargetGUI.TargetMetaParameters.__init__
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.__init__
+VisionEgg.PyroClient.PyroClient.__init__
+VisionEgg.PyroHelpers.PyroConstantController.__init__
+VisionEgg.PyroHelpers.PyroEncapsulatedController.__init__
+VisionEgg.PyroHelpers.PyroEvalStringController.__init__
+VisionEgg.PyroHelpers.PyroExecStringController.__init__
+VisionEgg.PyroHelpers.PyroListenController.__init__
+VisionEgg.PyroHelpers.PyroLocalDictController.__init__
+VisionEgg.PyroHelpers.PyroServer.__init__
+VisionEgg.QuickTime.MovieTexture.__init__
+VisionEgg.ResponseControl.KeyboardResponseController.__init__
+VisionEgg.ResponseControl.ResponseController.__init__
+VisionEgg.SphereMap.AzElGrid.__init__
+VisionEgg.SphereMap.SphereGrating.__init__
+VisionEgg.SphereMap.SphereMap.__init__
+VisionEgg.SphereMap.SphereWindow.__init__
+VisionEgg.TCPController.SocketListenController.__init__
+VisionEgg.TCPController.TCPController.__init__
+VisionEgg.TCPController.TCPServer.__init__
+VisionEgg.Text.BitmapText.__init__
+VisionEgg.Text.GlutTextBase.__init__
+VisionEgg.Text.StrokeText.__init__
+VisionEgg.Text.Text.__init__
+VisionEgg.Textures.FixationCross.__init__
+VisionEgg.Textures.Mask2D.__init__
+VisionEgg.Textures.SpinningDrum.__init__
+VisionEgg.Textures.Texture.__init__
+VisionEgg.Textures.TextureFromFile.__init__
+VisionEgg.Textures.TextureObject.__init__
+VisionEgg.Textures.TextureStimulusBaseClass.__init__
+VisionEgg.ThreeDeeMath.TransformMatrix.__init__
+VisionEgg.WrappedText.WrappedText.__init__
+VisionEgg.qtmovie.Movie.__init__
+VisionEgg.qtmovie.Rect.__init__" class="py-name" href="#" onclick="return doclink('link-16', '__init__', 'link-16');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> </tt>
+<a name="L38"></a><tt class="py-lineno"> 38</tt>  <tt class="py-line">                                                   <tt class="py-name">master</tt><tt class="py-op">,</tt> </tt>
+<a name="L39"></a><tt class="py-lineno"> 39</tt>  <tt class="py-line">                                                   <tt class="py-name">suppress_go_buttons</tt><tt class="py-op">,</tt> </tt>
+<a name="L40"></a><tt class="py-lineno"> 40</tt>  <tt class="py-line">                                                   <tt id="link-17" class="py-name"><a title="VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame" class="py-name" href="#" onclick="return doclink('link-17', 'SphereGratingControlFrame', 'link-11');">SphereGratingControlFrame</a></tt><tt class="py-op">.</tt><tt id="link-18" class="py-name"><a title="VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.title
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.title
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.title
+VisionEgg.PyroApps.GridGUI.GridControlFrame.title
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.title
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.title
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.title
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.title" class="py-name" href="#" onclick="return doclink('link-18', 'title', 'link-13');">title</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L41"></a><tt class="py-lineno"> 41</tt>  <tt class="py-line">                                                   <tt id="link-19" class="py-name" targets="Class VisionEgg.PyroApps.SphereGratingGUI.SphereGratingMetaParameters=VisionEgg.PyroApps.SphereGratingGUI.SphereGratingMetaParameters-class.html"><a title="VisionEgg.PyroApps.SphereGratingGUI.SphereGratingMetaParameters" class="py-name" href="#" onclick="return doclink('link-19', 'SphereGratingMetaParameters', 'link-19');">Sphe [...]
+<a name="L42"></a><tt class="py-lineno"> 42</tt>  <tt class="py-line">                                                   <tt class="py-op">**</tt><tt class="py-name">kw</tt><tt class="py-op">)</tt> </tt>
+<a name="L43"></a><tt class="py-lineno"> 43</tt>  <tt class="py-line"> </tt>
+<a name="L44"></a><tt class="py-lineno"> 44</tt>  <tt class="py-line">        <tt class="py-name">param_frame</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">param_frame</tt> <tt class="py-comment"># shorthand for self.param_frame created in base class</tt> </tt>
+<a name="L45"></a><tt class="py-lineno"> 45</tt>  <tt class="py-line"> </tt>
+<a name="L46"></a><tt class="py-lineno"> 46</tt>  <tt class="py-line">        <tt class="py-comment"># Allow columns to expand</tt> </tt>
+<a name="L47"></a><tt class="py-lineno"> 47</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">param_frame</tt><tt class="py-op">.</tt><tt class="py-name">columnconfigure</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">,</tt><tt class="py-name">weight</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="L48"></a><tt class="py-lineno"> 48</tt>  <tt class="py-line">        <tt class="py-name">param_frame</tt><tt class="py-op">.</tt><tt class="py-name">columnconfigure</tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">,</tt><tt class="py-name">weight</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="L49"></a><tt class="py-lineno"> 49</tt>  <tt class="py-line">         </tt>
+<a name="L50"></a><tt class="py-lineno"> 50</tt>  <tt class="py-line">        <tt class="py-name">pf_row</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L51"></a><tt class="py-lineno"> 51</tt>  <tt class="py-line">        <tt id="link-20" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-20', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">param_frame</tt><tt class="py-op">,</tt><tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Contrast:"</tt><tt class="py-op">)< [...]
+<a name="L52"></a><tt class="py-lineno"> 52</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">contrast_tk_var</tt> <tt class="py-op">=</tt> <tt id="link-21" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-21', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">DoubleVar</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L53"></a><tt class="py-lineno"> 53</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">contrast_tk_var</tt><tt class="py-op">.</tt><tt id="link-22" class="py-name" targets="Method VisionEgg.ClassWithParameters.set()=VisionEgg.ClassWithParameters-class.html#set"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-22', 'set', 'link-22');">set</a></tt><tt class="py-op">(</tt><tt c [...]
+<a name="L54"></a><tt class="py-lineno"> 54</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-23" class="py-name" targets="Method VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.make_callback_entry()=VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#make_callback_entry"><a title="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.make_callback_entry" class="py-name" href="#" onclick="return doclink('link-23', 'make [...]
+<a name="L55"></a><tt class="py-lineno"> 55</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">loopable_variables</tt><tt class="py-op">[</tt><tt class="py-string">"Contrast"</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-string">"contrast"</tt><tt class="py-op">,</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">contrast_tk_var</tt><tt class="py-op">)</tt> </tt>
+<a name="L56"></a><tt class="py-lineno"> 56</tt>  <tt class="py-line"> </tt>
+<a name="L57"></a><tt class="py-lineno"> 57</tt>  <tt class="py-line">        <tt class="py-name">pf_row</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L58"></a><tt class="py-lineno"> 58</tt>  <tt class="py-line">        <tt id="link-24" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-24', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">param_frame</tt><tt class="py-op">,</tt><tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Orientation (deg):"</tt><tt class=" [...]
+<a name="L59"></a><tt class="py-lineno"> 59</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">orient_tk_var</tt> <tt class="py-op">=</tt> <tt id="link-25" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-25', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">DoubleVar</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L60"></a><tt class="py-lineno"> 60</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">orient_tk_var</tt><tt class="py-op">.</tt><tt id="link-26" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-26', 'set', 'link-22');">set</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op [...]
+<a name="L61"></a><tt class="py-lineno"> 61</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-27" class="py-name"><a title="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.make_callback_entry" class="py-name" href="#" onclick="return doclink('link-27', 'make_callback_entry', 'link-23');">make_callback_entry</a></tt><tt class="py-op">(</tt><tt class="py-name">textvariable</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt c [...]
+<a name="L62"></a><tt class="py-lineno"> 62</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">loopable_variables</tt><tt class="py-op">[</tt><tt class="py-string">"Orientation"</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-string">"orient"</tt><tt class="py-op">,</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">orient_tk_var</tt><tt class="py-op">)</tt> </tt>
+<a name="L63"></a><tt class="py-lineno"> 63</tt>  <tt class="py-line">         </tt>
+<a name="L64"></a><tt class="py-lineno"> 64</tt>  <tt class="py-line">        <tt class="py-name">pf_row</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L65"></a><tt class="py-lineno"> 65</tt>  <tt class="py-line">        <tt id="link-28" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-28', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">param_frame</tt><tt class="py-op">,</tt><tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Spatial frequency (Cpd):"</tt><tt c [...]
+<a name="L66"></a><tt class="py-lineno"> 66</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sf_tk_var</tt> <tt class="py-op">=</tt> <tt id="link-29" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-29', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">DoubleVar</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L67"></a><tt class="py-lineno"> 67</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sf_tk_var</tt><tt class="py-op">.</tt><tt id="link-30" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-30', 'set', 'link-22');">set</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op">.< [...]
+<a name="L68"></a><tt class="py-lineno"> 68</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-31" class="py-name"><a title="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.make_callback_entry" class="py-name" href="#" onclick="return doclink('link-31', 'make_callback_entry', 'link-23');">make_callback_entry</a></tt><tt class="py-op">(</tt><tt class="py-name">textvariable</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt c [...]
+<a name="L69"></a><tt class="py-lineno"> 69</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">loopable_variables</tt><tt class="py-op">[</tt><tt class="py-string">"Spatial frequency"</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-string">"sf"</tt><tt class="py-op">,</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sf_tk_var</tt><tt class="py-op">)</tt> </tt>
+<a name="L70"></a><tt class="py-lineno"> 70</tt>  <tt class="py-line">         </tt>
+<a name="L71"></a><tt class="py-lineno"> 71</tt>  <tt class="py-line">        <tt class="py-name">pf_row</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L72"></a><tt class="py-lineno"> 72</tt>  <tt class="py-line">        <tt id="link-32" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-32', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">param_frame</tt><tt class="py-op">,</tt><tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Temporal frequency (Hz):"</tt><tt c [...]
+<a name="L73"></a><tt class="py-lineno"> 73</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">tf_tk_var</tt> <tt class="py-op">=</tt> <tt id="link-33" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-33', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">DoubleVar</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L74"></a><tt class="py-lineno"> 74</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">tf_tk_var</tt><tt class="py-op">.</tt><tt id="link-34" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-34', 'set', 'link-22');">set</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op">.< [...]
+<a name="L75"></a><tt class="py-lineno"> 75</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-35" class="py-name"><a title="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.make_callback_entry" class="py-name" href="#" onclick="return doclink('link-35', 'make_callback_entry', 'link-23');">make_callback_entry</a></tt><tt class="py-op">(</tt><tt class="py-name">textvariable</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt c [...]
+<a name="L76"></a><tt class="py-lineno"> 76</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">loopable_variables</tt><tt class="py-op">[</tt><tt class="py-string">"Temporal frequency"</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-string">"tf"</tt><tt class="py-op">,</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">tf_tk_var</tt><tt class="py-op">)</tt> </tt>
+<a name="L77"></a><tt class="py-lineno"> 77</tt>  <tt class="py-line">         </tt>
+<a name="L78"></a><tt class="py-lineno"> 78</tt>  <tt class="py-line">        <tt class="py-name">pf_row</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L79"></a><tt class="py-lineno"> 79</tt>  <tt class="py-line">        <tt id="link-36" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-36', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">param_frame</tt><tt class="py-op">,</tt><tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Pre stimulus duration (sec):"</tt>< [...]
+<a name="L80"></a><tt class="py-lineno"> 80</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">prestim_dur_tk_var</tt> <tt class="py-op">=</tt> <tt id="link-37" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-37', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">DoubleVar</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L81"></a><tt class="py-lineno"> 81</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">prestim_dur_tk_var</tt><tt class="py-op">.</tt><tt id="link-38" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-38', 'set', 'link-22');">set</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class=" [...]
+<a name="L82"></a><tt class="py-lineno"> 82</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-39" class="py-name"><a title="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.make_callback_entry" class="py-name" href="#" onclick="return doclink('link-39', 'make_callback_entry', 'link-23');">make_callback_entry</a></tt><tt class="py-op">(</tt><tt class="py-name">textvariable</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt c [...]
+<a name="L83"></a><tt class="py-lineno"> 83</tt>  <tt class="py-line">         </tt>
+<a name="L84"></a><tt class="py-lineno"> 84</tt>  <tt class="py-line">        <tt class="py-name">pf_row</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L85"></a><tt class="py-lineno"> 85</tt>  <tt class="py-line">        <tt id="link-40" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-40', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">param_frame</tt><tt class="py-op">,</tt><tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Stimulus duration (sec):"</tt><tt c [...]
+<a name="L86"></a><tt class="py-lineno"> 86</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stim_dur_tk_var</tt> <tt class="py-op">=</tt> <tt id="link-41" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-41', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">DoubleVar</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L87"></a><tt class="py-lineno"> 87</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stim_dur_tk_var</tt><tt class="py-op">.</tt><tt id="link-42" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-42', 'set', 'link-22');">set</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py- [...]
+<a name="L88"></a><tt class="py-lineno"> 88</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-43" class="py-name"><a title="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.make_callback_entry" class="py-name" href="#" onclick="return doclink('link-43', 'make_callback_entry', 'link-23');">make_callback_entry</a></tt><tt class="py-op">(</tt><tt class="py-name">textvariable</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt c [...]
+<a name="L89"></a><tt class="py-lineno"> 89</tt>  <tt class="py-line">         </tt>
+<a name="L90"></a><tt class="py-lineno"> 90</tt>  <tt class="py-line">        <tt class="py-name">pf_row</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L91"></a><tt class="py-lineno"> 91</tt>  <tt class="py-line">        <tt id="link-44" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-44', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">param_frame</tt><tt class="py-op">,</tt><tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Post stimulus duration (sec):"</tt> [...]
+<a name="L92"></a><tt class="py-lineno"> 92</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">poststim_dur_tk_var</tt> <tt class="py-op">=</tt> <tt id="link-45" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-45', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">DoubleVar</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L93"></a><tt class="py-lineno"> 93</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">poststim_dur_tk_var</tt><tt class="py-op">.</tt><tt id="link-46" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-46', 'set', 'link-22');">set</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class= [...]
+<a name="L94"></a><tt class="py-lineno"> 94</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-47" class="py-name"><a title="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.make_callback_entry" class="py-name" href="#" onclick="return doclink('link-47', 'make_callback_entry', 'link-23');">make_callback_entry</a></tt><tt class="py-op">(</tt><tt class="py-name">textvariable</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt c [...]
+<a name="L95"></a><tt class="py-lineno"> 95</tt>  <tt class="py-line"> </tt>
+<a name="L96"></a><tt class="py-lineno"> 96</tt>  <tt class="py-line">        <tt class="py-name">pf_row</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L97"></a><tt class="py-lineno"> 97</tt>  <tt class="py-line">        <tt id="link-48" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-48', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">param_frame</tt><tt class="py-op">,</tt><tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Window function:"</tt><tt class="py [...]
+<a name="L98"></a><tt class="py-lineno"> 98</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">window_func_tk_var</tt> <tt class="py-op">=</tt> <tt id="link-49" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-49', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">StringVar</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L99"></a><tt class="py-lineno"> 99</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">window_func_tk_var</tt><tt class="py-op">.</tt><tt id="link-50" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-50', 'set', 'link-22');">set</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class=" [...]
+<a name="L100"></a><tt class="py-lineno">100</tt>  <tt class="py-line">        <tt class="py-name">bar</tt> <tt class="py-op">=</tt> <tt id="link-51" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-51', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Menubutton</tt><tt class="py-op">(</tt><tt class="py-name">param_frame</tt><tt class="py-op">,</tt> <tt class="py-name">textvariable</tt><tt class="py [...]
+<a name="L101"></a><tt class="py-lineno">101</tt>  <tt class="py-line">        <tt class="py-name">bar</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-name">pf_row</tt><tt class="py-op">,</tt> <tt class="py-name">column</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py-op">,</tt> <tt class="py-name">sticky</tt><tt class="py-op">=</tt><tt id="link-53" class="py-name"><a t [...]
+<a name="L102"></a><tt class="py-lineno">102</tt>  <tt class="py-line">        <tt class="py-name">bar</tt><tt class="py-op">.</tt><tt class="py-name">menu</tt> <tt class="py-op">=</tt> <tt id="link-55" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-55', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Menu</tt><tt class="py-op">(</tt><tt class="py-name">bar</tt><tt class="py-op">,</tt><tt class="p [...]
+<a name="L103"></a><tt class="py-lineno">103</tt>  <tt class="py-line">        <tt class="py-name">bar</tt><tt class="py-op">.</tt><tt class="py-name">menu</tt><tt class="py-op">.</tt><tt class="py-name">add_radiobutton</tt><tt class="py-op">(</tt><tt class="py-name">label</tt><tt class="py-op">=</tt><tt class="py-string">'circle'</tt><tt class="py-op">,</tt> </tt>
+<a name="L104"></a><tt class="py-lineno">104</tt>  <tt class="py-line">                                 <tt class="py-name">value</tt><tt class="py-op">=</tt><tt class="py-string">'circle'</tt><tt class="py-op">,</tt> </tt>
+<a name="L105"></a><tt class="py-lineno">105</tt>  <tt class="py-line">                                 <tt class="py-name">variable</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">window_func_tk_var</tt><tt class="py-op">,</tt> </tt>
+<a name="L106"></a><tt class="py-lineno">106</tt>  <tt class="py-line">                                 <tt class="py-name">command</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-56" class="py-name" targets="Method VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.send_values()=VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame-class.html#send_values,Method VisionEgg.PyroApps.DropinGUI.DropinControlFrame.send_values()=VisionEgg.PyroApps.D [...]
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.send_values
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.send_values
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.send_values
+VisionEgg.PyroApps.GridGUI.GridControlFrame.send_values
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.send_values
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.send_values
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.send_values
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.send_values
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.send_values" class="py-name" href="#" onclick="return doclink('link-56', 'send_values', 'link-56');">send_values</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L107"></a><tt class="py-lineno">107</tt>  <tt class="py-line">        <tt class="py-name">bar</tt><tt class="py-op">.</tt><tt class="py-name">menu</tt><tt class="py-op">.</tt><tt class="py-name">add_radiobutton</tt><tt class="py-op">(</tt><tt class="py-name">label</tt><tt class="py-op">=</tt><tt class="py-string">'gaussian'</tt><tt class="py-op">,</tt> </tt>
+<a name="L108"></a><tt class="py-lineno">108</tt>  <tt class="py-line">                                 <tt class="py-name">value</tt><tt class="py-op">=</tt><tt class="py-string">'gaussian'</tt><tt class="py-op">,</tt> </tt>
+<a name="L109"></a><tt class="py-lineno">109</tt>  <tt class="py-line">                                 <tt class="py-name">variable</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">window_func_tk_var</tt><tt class="py-op">,</tt> </tt>
+<a name="L110"></a><tt class="py-lineno">110</tt>  <tt class="py-line">                                 <tt class="py-name">command</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-57" class="py-name"><a title="VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.send_values
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.send_values
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.send_values
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.send_values
+VisionEgg.PyroApps.GridGUI.GridControlFrame.send_values
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.send_values
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.send_values
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.send_values
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.send_values
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.send_values" class="py-name" href="#" onclick="return doclink('link-57', 'send_values', 'link-56');">send_values</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L111"></a><tt class="py-lineno">111</tt>  <tt class="py-line">        <tt class="py-name">bar</tt><tt class="py-op">[</tt><tt class="py-string">'menu'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">bar</tt><tt class="py-op">.</tt><tt class="py-name">menu</tt> </tt>
+<a name="L112"></a><tt class="py-lineno">112</tt>  <tt class="py-line">         </tt>
+<a name="L113"></a><tt class="py-lineno">113</tt>  <tt class="py-line">        <tt class="py-name">pf_row</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L114"></a><tt class="py-lineno">114</tt>  <tt class="py-line">        <tt id="link-58" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-58', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">param_frame</tt><tt class="py-op">,</tt><tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Window radius/sigma (deg):"</tt><t [...]
+<a name="L115"></a><tt class="py-lineno">115</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">window_radius_tk_var</tt> <tt class="py-op">=</tt> <tt id="link-59" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-59', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">DoubleVar</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L116"></a><tt class="py-lineno">116</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">window_radius_tk_var</tt><tt class="py-op">.</tt><tt id="link-60" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-60', 'set', 'link-22');">set</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt clas [...]
+<a name="L117"></a><tt class="py-lineno">117</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-61" class="py-name"><a title="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.make_callback_entry" class="py-name" href="#" onclick="return doclink('link-61', 'make_callback_entry', 'link-23');">make_callback_entry</a></tt><tt class="py-op">(</tt><tt class="py-name">textvariable</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt  [...]
+<a name="L118"></a><tt class="py-lineno">118</tt>  <tt class="py-line">         </tt>
+<a name="L119"></a><tt class="py-lineno">119</tt>  <tt class="py-line">        <tt class="py-name">pf_row</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L120"></a><tt class="py-lineno">120</tt>  <tt class="py-line">        <tt id="link-62" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-62', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">param_frame</tt><tt class="py-op">,</tt><tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Window azimuth (deg):"</tt><tt cla [...]
+<a name="L121"></a><tt class="py-lineno">121</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">window_az_tk_var</tt> <tt class="py-op">=</tt> <tt id="link-63" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-63', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">DoubleVar</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L122"></a><tt class="py-lineno">122</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">window_az_tk_var</tt><tt class="py-op">.</tt><tt id="link-64" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-64', 'set', 'link-22');">set</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="p [...]
+<a name="L123"></a><tt class="py-lineno">123</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-65" class="py-name"><a title="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.make_callback_entry" class="py-name" href="#" onclick="return doclink('link-65', 'make_callback_entry', 'link-23');">make_callback_entry</a></tt><tt class="py-op">(</tt><tt class="py-name">textvariable</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt  [...]
+<a name="L124"></a><tt class="py-lineno">124</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">loopable_variables</tt><tt class="py-op">[</tt><tt class="py-string">"Window azimuth"</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-string">"window_az"</tt><tt class="py-op">,</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">window_az_tk_var</tt><tt class="py-op">)< [...]
+<a name="L125"></a><tt class="py-lineno">125</tt>  <tt class="py-line">         </tt>
+<a name="L126"></a><tt class="py-lineno">126</tt>  <tt class="py-line">        <tt class="py-name">pf_row</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L127"></a><tt class="py-lineno">127</tt>  <tt class="py-line">        <tt id="link-66" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-66', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">param_frame</tt><tt class="py-op">,</tt><tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Window elevation (deg):"</tt><tt c [...]
+<a name="L128"></a><tt class="py-lineno">128</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">window_el_tk_var</tt> <tt class="py-op">=</tt> <tt id="link-67" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-67', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">DoubleVar</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L129"></a><tt class="py-lineno">129</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">window_el_tk_var</tt><tt class="py-op">.</tt><tt id="link-68" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-68', 'set', 'link-22');">set</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="p [...]
+<a name="L130"></a><tt class="py-lineno">130</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-69" class="py-name"><a title="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.make_callback_entry" class="py-name" href="#" onclick="return doclink('link-69', 'make_callback_entry', 'link-23');">make_callback_entry</a></tt><tt class="py-op">(</tt><tt class="py-name">textvariable</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt  [...]
+<a name="L131"></a><tt class="py-lineno">131</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">loopable_variables</tt><tt class="py-op">[</tt><tt class="py-string">"Window elevation"</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-string">"window_el"</tt><tt class="py-op">,</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">window_el_tk_var</tt><tt class="py-op"> [...]
+</div><a name="L132"></a><tt class="py-lineno">132</tt>  <tt class="py-line">         </tt>
+<a name="SphereGratingControlFrame.get_shortname"></a><div id="SphereGratingControlFrame.get_shortname-def"><a name="L133"></a><tt class="py-lineno">133</tt> <a class="py-toggle" href="#" id="SphereGratingControlFrame.get_shortname-toggle" onclick="return toggle('SphereGratingControlFrame.get_shortname');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame-class.html#get_shortname">get_sh [...]
+</div><div id="SphereGratingControlFrame.get_shortname-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SphereGratingControlFrame.get_shortname-expanded"><a name="L134"></a><tt class="py-lineno">134</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-string">"sphere_grating"</tt> </tt>
+</div><a name="L135"></a><tt class="py-lineno">135</tt>  <tt class="py-line"> </tt>
+<a name="SphereGratingControlFrame.update_tk_vars"></a><div id="SphereGratingControlFrame.update_tk_vars-def"><a name="L136"></a><tt class="py-lineno">136</tt> <a class="py-toggle" href="#" id="SphereGratingControlFrame.update_tk_vars-toggle" onclick="return toggle('SphereGratingControlFrame.update_tk_vars');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame-class.html#update_tk_vars">u [...]
+</div><div id="SphereGratingControlFrame.update_tk_vars-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SphereGratingControlFrame.update_tk_vars-expanded"><a name="L137"></a><tt class="py-lineno">137</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">contrast_tk_var</tt><tt class="py-op">.</tt><tt id="link-70" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="r [...]
+<a name="L138"></a><tt class="py-lineno">138</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">orient_tk_var</tt><tt class="py-op">.</tt><tt id="link-71" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-71', 'set', 'link-22');">set</a></tt><tt class="py-op">(</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py- [...]
+<a name="L139"></a><tt class="py-lineno">139</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sf_tk_var</tt><tt class="py-op">.</tt><tt id="link-72" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-72', 'set', 'link-22');">set</a></tt><tt class="py-op">(</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op"> [...]
+<a name="L140"></a><tt class="py-lineno">140</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">tf_tk_var</tt><tt class="py-op">.</tt><tt id="link-73" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-73', 'set', 'link-22');">set</a></tt><tt class="py-op">(</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op"> [...]
+<a name="L141"></a><tt class="py-lineno">141</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">prestim_dur_tk_var</tt><tt class="py-op">.</tt><tt id="link-74" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-74', 'set', 'link-22');">set</a></tt><tt class="py-op">(</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class [...]
+<a name="L142"></a><tt class="py-lineno">142</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stim_dur_tk_var</tt><tt class="py-op">.</tt><tt id="link-75" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-75', 'set', 'link-22');">set</a></tt><tt class="py-op">(</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="p [...]
+<a name="L143"></a><tt class="py-lineno">143</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">poststim_dur_tk_var</tt><tt class="py-op">.</tt><tt id="link-76" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-76', 'set', 'link-22');">set</a></tt><tt class="py-op">(</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt clas [...]
+<a name="L144"></a><tt class="py-lineno">144</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">window_func_tk_var</tt><tt class="py-op">.</tt><tt id="link-77" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-77', 'set', 'link-22');">set</a></tt><tt class="py-op">(</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class [...]
+<a name="L145"></a><tt class="py-lineno">145</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">window_radius_tk_var</tt><tt class="py-op">.</tt><tt id="link-78" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-78', 'set', 'link-22');">set</a></tt><tt class="py-op">(</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt cla [...]
+<a name="L146"></a><tt class="py-lineno">146</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">window_az_tk_var</tt><tt class="py-op">.</tt><tt id="link-79" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-79', 'set', 'link-22');">set</a></tt><tt class="py-op">(</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class=" [...]
+<a name="L147"></a><tt class="py-lineno">147</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">window_el_tk_var</tt><tt class="py-op">.</tt><tt id="link-80" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-80', 'set', 'link-22');">set</a></tt><tt class="py-op">(</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class=" [...]
+</div><a name="L148"></a><tt class="py-lineno">148</tt>  <tt class="py-line">     </tt>
+<a name="SphereGratingControlFrame.send_values"></a><div id="SphereGratingControlFrame.send_values-def"><a name="L149"></a><tt class="py-lineno">149</tt> <a class="py-toggle" href="#" id="SphereGratingControlFrame.send_values-toggle" onclick="return toggle('SphereGratingControlFrame.send_values');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame-class.html#send_values">send_values</a>< [...]
+</div><div id="SphereGratingControlFrame.send_values-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SphereGratingControlFrame.send_values-expanded"><a name="L150"></a><tt class="py-lineno">150</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op">.</tt><tt class="py-name">contrast</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class=" [...]
+<a name="L151"></a><tt class="py-lineno">151</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op">.</tt><tt class="py-name">orient</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">orient_tk_var</tt><tt class="py-op">.</tt><tt id="link-82" class="py-name"><a title="VisionEgg.PyroClient.PyroClient.get" class="py-name" href="#" onclick="return doclink [...]
+<a name="L152"></a><tt class="py-lineno">152</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op">.</tt><tt class="py-name">sf</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sf_tk_var</tt><tt class="py-op">.</tt><tt id="link-83" class="py-name"><a title="VisionEgg.PyroClient.PyroClient.get" class="py-name" href="#" onclick="return doclink('link-8 [...]
+<a name="L153"></a><tt class="py-lineno">153</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op">.</tt><tt class="py-name">tf</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">tf_tk_var</tt><tt class="py-op">.</tt><tt id="link-84" class="py-name"><a title="VisionEgg.PyroClient.PyroClient.get" class="py-name" href="#" onclick="return doclink('link-8 [...]
+<a name="L154"></a><tt class="py-lineno">154</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op">.</tt><tt class="py-name">pre_stim_sec</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">prestim_dur_tk_var</tt><tt class="py-op">.</tt><tt id="link-85" class="py-name"><a title="VisionEgg.PyroClient.PyroClient.get" class="py-name" href="#" onclick="ret [...]
+<a name="L155"></a><tt class="py-lineno">155</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op">.</tt><tt class="py-name">stim_sec</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stim_dur_tk_var</tt><tt class="py-op">.</tt><tt id="link-86" class="py-name"><a title="VisionEgg.PyroClient.PyroClient.get" class="py-name" href="#" onclick="return doc [...]
+<a name="L156"></a><tt class="py-lineno">156</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op">.</tt><tt class="py-name">post_stim_sec</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">poststim_dur_tk_var</tt><tt class="py-op">.</tt><tt id="link-87" class="py-name"><a title="VisionEgg.PyroClient.PyroClient.get" class="py-name" href="#" onclick="r [...]
+<a name="L157"></a><tt class="py-lineno">157</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op">.</tt><tt class="py-name">window_func</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">window_func_tk_var</tt><tt class="py-op">.</tt><tt id="link-88" class="py-name"><a title="VisionEgg.PyroClient.PyroClient.get" class="py-name" href="#" onclick="retu [...]
+<a name="L158"></a><tt class="py-lineno">158</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op">.</tt><tt class="py-name">window_radius</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">window_radius_tk_var</tt><tt class="py-op">.</tt><tt id="link-89" class="py-name"><a title="VisionEgg.PyroClient.PyroClient.get" class="py-name" href="#" onclick=" [...]
+<a name="L159"></a><tt class="py-lineno">159</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op">.</tt><tt class="py-name">window_az</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">window_az_tk_var</tt><tt class="py-op">.</tt><tt id="link-90" class="py-name"><a title="VisionEgg.PyroClient.PyroClient.get" class="py-name" href="#" onclick="return d [...]
+<a name="L160"></a><tt class="py-lineno">160</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op">.</tt><tt class="py-name">window_el</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">window_el_tk_var</tt><tt class="py-op">.</tt><tt id="link-91" class="py-name"><a title="VisionEgg.PyroClient.PyroClient.get" class="py-name" href="#" onclick="return d [...]
+<a name="L161"></a><tt class="py-lineno">161</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">connected</tt><tt class="py-op">:</tt> </tt>
+<a name="L162"></a><tt class="py-lineno">162</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_controller</tt><tt class="py-op">.</tt><tt id="link-92" class="py-name" targets="Method VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.set_parameters()=VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController-class.html#set_parameters,Method VisionEgg.PyroApps.DropinServer.DropinMetaController.set_parameters()=VisionEgg [...]
+VisionEgg.PyroApps.DropinServer.DropinMetaController.set_parameters
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.set_parameters
+VisionEgg.PyroApps.GridServer.GridMetaController.set_parameters
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.set_parameters
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.set_parameters
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.set_parameters
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.set_parameters
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.set_parameters" class="py-name" href="#" onclick="return doclink('link-92', 'set_parameters', 'link-92');">set_parameters</a></tt><tt class="py-op">(</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt> <tt class="py-op">)</tt> </tt>
+</div><a name="L163"></a><tt class="py-lineno">163</tt>  <tt class="py-line"> </tt>
+<a name="SphereGratingControlFrame.get_duration_sec"></a><div id="SphereGratingControlFrame.get_duration_sec-def"><a name="L164"></a><tt class="py-lineno">164</tt> <a class="py-toggle" href="#" id="SphereGratingControlFrame.get_duration_sec-toggle" onclick="return toggle('SphereGratingControlFrame.get_duration_sec');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame-class.html#get_durat [...]
+</div><div id="SphereGratingControlFrame.get_duration_sec-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SphereGratingControlFrame.get_duration_sec-expanded"><a name="L165"></a><tt class="py-lineno">165</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op">.</tt><tt class="py-name">pre_stim_sec</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</ [...]
+<a name="L166"></a><tt class="py-lineno">166</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op">.</tt><tt class="py-name">stim_sec</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stim_dur_tk_var</tt><tt class="py-op">.</tt><tt id="link-94" class="py-name"><a title="VisionEgg.PyroClient.PyroClient.get" class="py-name" href="#" onclick="return doc [...]
+<a name="L167"></a><tt class="py-lineno">167</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op">.</tt><tt class="py-name">post_stim_sec</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">poststim_dur_tk_var</tt><tt class="py-op">.</tt><tt id="link-95" class="py-name"><a title="VisionEgg.PyroClient.PyroClient.get" class="py-name" href="#" onclick="r [...]
+<a name="L168"></a><tt class="py-lineno">168</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op">.</tt><tt class="py-name">pre_stim_sec</tt> <tt class="py-op">+</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op">.</tt><tt class="py-name">stim_sec</tt> <tt class="py-op">+</tt> <tt class="py-name">self</tt>< [...]
+</div></div><a name="L169"></a><tt class="py-lineno">169</tt>  <tt class="py-line"> </tt>
+<a name="L170"></a><tt class="py-lineno">170</tt>  <tt class="py-line"><tt class="py-keyword">if</tt> <tt class="py-name">__name__</tt><tt class="py-op">==</tt><tt class="py-string">'__main__'</tt><tt class="py-op">:</tt> </tt>
+<a name="L171"></a><tt class="py-lineno">171</tt>  <tt class="py-line">    <tt class="py-name">frame</tt> <tt class="py-op">=</tt> <tt id="link-96" class="py-name"><a title="VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame" class="py-name" href="#" onclick="return doclink('link-96', 'SphereGratingControlFrame', 'link-11');">SphereGratingControlFrame</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L172"></a><tt class="py-lineno">172</tt>  <tt class="py-line">    <tt class="py-name">frame</tt><tt class="py-op">.</tt><tt class="py-name">pack</tt><tt class="py-op">(</tt><tt class="py-name">expand</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py-op">,</tt><tt class="py-name">fill</tt><tt class="py-op">=</tt><tt id="link-97" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-97', 'Tkinter', 'link-7');">T [...]
+<a name="L173"></a><tt class="py-lineno">173</tt>  <tt class="py-line">    <tt class="py-name">frame</tt><tt class="py-op">.</tt><tt class="py-name">winfo_toplevel</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-98" class="py-name"><a title="VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.title
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.title
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.title
+VisionEgg.PyroApps.GridGUI.GridControlFrame.title
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.title
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.title
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.title
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.title" class="py-name" href="#" onclick="return doclink('link-98', 'title', 'link-13');">title</a></tt><tt class="py-op">(</tt><tt class="py-string">"%s"</tt><tt class="py-op">%</tt><tt class="py-op">(</tt><tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">path</tt><tt class="py-op">.</tt><tt class="py-name">basename</tt><tt class="py-op">(</tt><tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">path</ [...]
+<a name="L174"></a><tt class="py-lineno">174</tt>  <tt class="py-line">    <tt class="py-name">frame</tt><tt class="py-op">.</tt><tt class="py-name">mainloop</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L175"></a><tt class="py-lineno">175</tt>  <tt class="py-line"> </tt><script type="text/javascript">
+<!--
+expandto(location.href);
+// -->
+</script>
+</pre>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:48 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame-class.html b/doc/reference/html/VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame-class.html
new file mode 100644
index 0000000..73ffa1d
--- /dev/null
+++ b/doc/reference/html/VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame-class.html
@@ -0,0 +1,605 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.PyroApps-module.html">Package PyroApps</a> ::
+        <a href="VisionEgg.PyroApps.SphereGratingGUI-module.html">Module SphereGratingGUI</a> ::
+        Class SphereGratingControlFrame
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class SphereGratingControlFrame</h1><span class="codelink"><a href="VisionEgg.PyroApps.SphereGratingGUI-pysrc.html#SphereGratingControlFrame">source code</a></span><br /><br />
+<pre class="base-tree">
+      Tkinter.Misc --+                
+                     |                
+    Tkinter.BaseWidget --+            
+                         |            
+          Tkinter.Pack --+            
+                         |            
+         Tkinter.Place --+            
+                         |            
+          Tkinter.Grid --+            
+                         |            
+            Tkinter.Widget --+        
+                             |        
+                 Tkinter.Frame --+    
+                                 |    
+<a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html">EPhysGUIUtils.StimulusControlFrame</a> --+
+                                     |
+                                    <strong class="uidshort">SphereGratingControlFrame</strong>
+</pre>
+
+<hr />
+<!-- ==================== NESTED CLASSES ==================== -->
+<a name="section-NestedClasses"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Nested Classes</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>Tkinter.Misc</code></b>:
+      <code><a href="float-class.html">getdouble</a></code>,
+      <code><a href="int-class.html">getint</a></code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">master</span>=<span class="summary-sig-default">None</span>,
+        <span class="summary-sig-arg">suppress_go_buttons</span>=<span class="summary-sig-default">0</span>,
+        <span class="summary-sig-arg">**kw</span>)</span><br />
+      Construct a frame widget with the parent MASTER.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.SphereGratingGUI-pysrc.html#SphereGratingControlFrame.__init__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame-class.html#get_shortname" class="summary-sig-name">get_shortname</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      Used as basename for saving parameter files and other ID purposes</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.SphereGratingGUI-pysrc.html#SphereGratingControlFrame.get_shortname">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame-class.html#update_tk_vars" class="summary-sig-name">update_tk_vars</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      Update Tkinter variables with (new) values from meta_params</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.SphereGratingGUI-pysrc.html#SphereGratingControlFrame.update_tk_vars">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame-class.html#send_values" class="summary-sig-name">send_values</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">dummy_arg</span>=<span class="summary-sig-default">None</span>)</span><br />
+      Update meta_params variables with values from Tkinter fields</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.SphereGratingGUI-pysrc.html#SphereGratingControlFrame.send_values">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame-class.html#get_duration_sec" class="summary-sig-name">get_duration_sec</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      Calculate total duration in go loop</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.SphereGratingGUI-pysrc.html#SphereGratingControlFrame.get_duration_sec">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html">EPhysGUIUtils.StimulusControlFrame</a></code></b>:
+      <code><a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#connect">connect</a></code>,
+      <code><a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#get_loopable_variable_names">get_loopable_variable_names</a></code>,
+      <code><a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#get_matlab_string">get_matlab_string</a></code>,
+      <code><a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#get_parameters_as_m_strings">get_parameters_as_m_strings</a></code>,
+      <code><a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#get_parameters_as_py_strings">get_parameters_as_py_strings</a></code>,
+      <code><a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#get_parameters_dict">get_parameters_dict</a></code>,
+      <code><a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#go">go</a></code>,
+      <code><a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#make_callback_entry">make_callback_entry</a></code>,
+      <code><a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#quit_server">quit_server</a></code>,
+      <code><a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#set_loopable_variable">set_loopable_variable</a></code>,
+      <code><a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#set_param_dict">set_param_dict</a></code>,
+      <code><a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#set_parameters_dict">set_parameters_dict</a></code>,
+      <code><a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#standalone_connect">standalone_connect</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>Tkinter.BaseWidget</code></b>:
+      <code>destroy</code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>Tkinter.Misc</code></b>:
+      <code>__getitem__</code>,
+      <code>__setitem__</code>,
+      <code>__str__</code>,
+      <code>after</code>,
+      <code>after_cancel</code>,
+      <code>after_idle</code>,
+      <code>bbox</code>,
+      <code>bell</code>,
+      <code>bind</code>,
+      <code>bind_all</code>,
+      <code>bind_class</code>,
+      <code>bindtags</code>,
+      <code>cget</code>,
+      <code>clipboard_append</code>,
+      <code>clipboard_clear</code>,
+      <code>clipboard_get</code>,
+      <code>colormodel</code>,
+      <code>columnconfigure</code>,
+      <code>config</code>,
+      <code>configure</code>,
+      <code>deletecommand</code>,
+      <code>event_add</code>,
+      <code>event_delete</code>,
+      <code>event_generate</code>,
+      <code>event_info</code>,
+      <code>focus</code>,
+      <code>focus_displayof</code>,
+      <code>focus_force</code>,
+      <code>focus_get</code>,
+      <code>focus_lastfor</code>,
+      <code>focus_set</code>,
+      <code>getboolean</code>,
+      <code>getvar</code>,
+      <code>grab_current</code>,
+      <code>grab_release</code>,
+      <code>grab_set</code>,
+      <code>grab_set_global</code>,
+      <code>grab_status</code>,
+      <code>grid_bbox</code>,
+      <code>grid_columnconfigure</code>,
+      <code>grid_location</code>,
+      <code>grid_propagate</code>,
+      <code>grid_rowconfigure</code>,
+      <code>grid_size</code>,
+      <code>grid_slaves</code>,
+      <code>image_names</code>,
+      <code>image_types</code>,
+      <code>keys</code>,
+      <code>lift</code>,
+      <code>lower</code>,
+      <code>mainloop</code>,
+      <code>nametowidget</code>,
+      <code>option_add</code>,
+      <code>option_clear</code>,
+      <code>option_get</code>,
+      <code>option_readfile</code>,
+      <code>pack_propagate</code>,
+      <code>pack_slaves</code>,
+      <code>place_slaves</code>,
+      <code>propagate</code>,
+      <code>quit</code>,
+      <code>register</code>,
+      <code>rowconfigure</code>,
+      <code>selection_clear</code>,
+      <code>selection_get</code>,
+      <code>selection_handle</code>,
+      <code>selection_own</code>,
+      <code>selection_own_get</code>,
+      <code>send</code>,
+      <code>setvar</code>,
+      <code>size</code>,
+      <code>slaves</code>,
+      <code>tk_bisque</code>,
+      <code>tk_focusFollowsMouse</code>,
+      <code>tk_focusNext</code>,
+      <code>tk_focusPrev</code>,
+      <code>tk_menuBar</code>,
+      <code>tk_setPalette</code>,
+      <code>tk_strictMotif</code>,
+      <code>tkraise</code>,
+      <code>unbind</code>,
+      <code>unbind_all</code>,
+      <code>unbind_class</code>,
+      <code>update</code>,
+      <code>update_idletasks</code>,
+      <code>wait_variable</code>,
+      <code>wait_visibility</code>,
+      <code>wait_window</code>,
+      <code>waitvar</code>,
+      <code>winfo_atom</code>,
+      <code>winfo_atomname</code>,
+      <code>winfo_cells</code>,
+      <code>winfo_children</code>,
+      <code>winfo_class</code>,
+      <code>winfo_colormapfull</code>,
+      <code>winfo_containing</code>,
+      <code>winfo_depth</code>,
+      <code>winfo_exists</code>,
+      <code>winfo_fpixels</code>,
+      <code>winfo_geometry</code>,
+      <code>winfo_height</code>,
+      <code>winfo_id</code>,
+      <code>winfo_interps</code>,
+      <code>winfo_ismapped</code>,
+      <code>winfo_manager</code>,
+      <code>winfo_name</code>,
+      <code>winfo_parent</code>,
+      <code>winfo_pathname</code>,
+      <code>winfo_pixels</code>,
+      <code>winfo_pointerx</code>,
+      <code>winfo_pointerxy</code>,
+      <code>winfo_pointery</code>,
+      <code>winfo_reqheight</code>,
+      <code>winfo_reqwidth</code>,
+      <code>winfo_rgb</code>,
+      <code>winfo_rootx</code>,
+      <code>winfo_rooty</code>,
+      <code>winfo_screen</code>,
+      <code>winfo_screencells</code>,
+      <code>winfo_screendepth</code>,
+      <code>winfo_screenheight</code>,
+      <code>winfo_screenmmheight</code>,
+      <code>winfo_screenmmwidth</code>,
+      <code>winfo_screenvisual</code>,
+      <code>winfo_screenwidth</code>,
+      <code>winfo_server</code>,
+      <code>winfo_toplevel</code>,
+      <code>winfo_viewable</code>,
+      <code>winfo_visual</code>,
+      <code>winfo_visualid</code>,
+      <code>winfo_visualsavailable</code>,
+      <code>winfo_vrootheight</code>,
+      <code>winfo_vrootwidth</code>,
+      <code>winfo_vrootx</code>,
+      <code>winfo_vrooty</code>,
+      <code>winfo_width</code>,
+      <code>winfo_x</code>,
+      <code>winfo_y</code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>Tkinter.Pack</code></b>:
+      <code>forget</code>,
+      <code>info</code>,
+      <code>pack</code>,
+      <code>pack_configure</code>,
+      <code>pack_forget</code>,
+      <code>pack_info</code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>Tkinter.Place</code></b>:
+      <code>place</code>,
+      <code>place_configure</code>,
+      <code>place_forget</code>,
+      <code>place_info</code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>Tkinter.Grid</code></b>:
+      <code>grid</code>,
+      <code>grid_configure</code>,
+      <code>grid_forget</code>,
+      <code>grid_info</code>,
+      <code>grid_remove</code>,
+      <code>location</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Class Variables</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="title"></a><span class="summary-name">title</span> = <code title=""Grating (Perspective-distorted) Experiment"">"Grating (Perspective-distorted) Experiment"</code>
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>Tkinter.Misc</code></b>:
+      <code>_noarg_</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Method Details</span></td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">master</span>=<span class="sig-default">None</span>,
+        <span class="sig-arg">suppress_go_buttons</span>=<span class="sig-default">0</span>,
+        <span class="sig-arg">**kw</span>)</span>
+    <br /><em class="fname">(Constructor)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.PyroApps.SphereGratingGUI-pysrc.html#SphereGratingControlFrame.__init__">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Construct a frame widget with the parent MASTER.
+
+Valid resource names: background, bd, bg, borderwidth, class,
+colormap, container, cursor, height, highlightbackground,
+highlightcolor, highlightthickness, relief, takefocus, visual, width.
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#__init__">EPhysGUIUtils.StimulusControlFrame.__init__</a>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="get_shortname"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">get_shortname</span>(<span class="sig-arg">self</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.PyroApps.SphereGratingGUI-pysrc.html#SphereGratingControlFrame.get_shortname">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Used as basename for saving parameter files and other ID purposes
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#get_shortname">EPhysGUIUtils.StimulusControlFrame.get_shortname</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="update_tk_vars"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">update_tk_vars</span>(<span class="sig-arg">self</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.PyroApps.SphereGratingGUI-pysrc.html#SphereGratingControlFrame.update_tk_vars">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Update Tkinter variables with (new) values from meta_params
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#update_tk_vars">EPhysGUIUtils.StimulusControlFrame.update_tk_vars</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="send_values"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">send_values</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">dummy_arg</span>=<span class="sig-default">None</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.PyroApps.SphereGratingGUI-pysrc.html#SphereGratingControlFrame.send_values">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Update meta_params variables with values from Tkinter fields
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#send_values">EPhysGUIUtils.StimulusControlFrame.send_values</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="get_duration_sec"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">get_duration_sec</span>(<span class="sig-arg">self</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.PyroApps.SphereGratingGUI-pysrc.html#SphereGratingControlFrame.get_duration_sec">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Calculate total duration in go loop
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#get_duration_sec">EPhysGUIUtils.StimulusControlFrame.get_duration_sec</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:47 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.PyroApps.SphereGratingGUI.SphereGratingMetaParameters-class.html b/doc/reference/html/VisionEgg.PyroApps.SphereGratingGUI.SphereGratingMetaParameters-class.html
new file mode 100644
index 0000000..3da8ca6
--- /dev/null
+++ b/doc/reference/html/VisionEgg.PyroApps.SphereGratingGUI.SphereGratingMetaParameters-class.html
@@ -0,0 +1,139 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.PyroApps.SphereGratingGUI.SphereGratingMetaParameters</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.PyroApps-module.html">Package PyroApps</a> ::
+        <a href="VisionEgg.PyroApps.SphereGratingGUI-module.html">Module SphereGratingGUI</a> ::
+        Class SphereGratingMetaParameters
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.PyroApps.SphereGratingGUI.SphereGratingMetaParameters-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class SphereGratingMetaParameters</h1><span class="codelink"><a href="VisionEgg.PyroApps.SphereGratingGUI-pysrc.html#SphereGratingMetaParameters">source code</a></span><br /><br />
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__init__"></a><span class="summary-sig-name">__init__</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.SphereGratingGUI-pysrc.html#SphereGratingMetaParameters.__init__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:47 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.PyroApps.SphereGratingServer-module.html b/doc/reference/html/VisionEgg.PyroApps.SphereGratingServer-module.html
new file mode 100644
index 0000000..f952589
--- /dev/null
+++ b/doc/reference/html/VisionEgg.PyroApps.SphereGratingServer-module.html
@@ -0,0 +1,221 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.PyroApps.SphereGratingServer</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.PyroApps-module.html">Package PyroApps</a> ::
+        Module SphereGratingServer
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.PyroApps.SphereGratingServer-module.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== MODULE DESCRIPTION ==================== -->
+<h1 class="epydoc">Module SphereGratingServer</h1><span class="codelink"><a href="VisionEgg.PyroApps.SphereGratingServer-pysrc.html">source code</a></span><br /><br />
+<pre class="literalblock">
+Handle perspective-distorted sinusoidal gratings (server-side)
+
+</pre><br /><br />
+
+<hr />
+<div class="fields">      <p><strong>Version:</strong>
+        1.1.dev
+      </p>
+      <p><strong>Author:</strong>
+        Andrew Straw <astraw at users.sourceforge.net>
+      </p>
+</div><!-- ==================== CLASSES ==================== -->
+<a name="section-Classes"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Classes</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController-class.html" class="summary-name">SphereGratingExperimentMetaController</a>
+    </td>
+  </tr>
+</table>
+<!-- ==================== FUNCTIONS ==================== -->
+<a name="section-Functions"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Functions</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="get_meta_controller_class"></a><span class="summary-sig-name">get_meta_controller_class</span>()</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.SphereGratingServer-pysrc.html#get_meta_controller_class">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="make_stimuli"></a><span class="summary-sig-name">make_stimuli</span>()</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.SphereGratingServer-pysrc.html#make_stimuli">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="get_meta_controller_stimkey"></a><span class="summary-sig-name">get_meta_controller_stimkey</span>()</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.SphereGratingServer-pysrc.html#get_meta_controller_stimkey">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+</table>
+<!-- ==================== VARIABLES ==================== -->
+<a name="section-Variables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Variables</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="__cvs__"></a><span class="summary-name">__cvs__</span> = <code title="string.split('$Revision$') [1]">string.split('$Revision$') [1]</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="__date__"></a><span class="summary-name">__date__</span> = <code title="string.join(string.split('$Date$') [1: 3], ' ')">string.join(string.split('$Date$') [1: 3], ' ')</code>
+    </td>
+  </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.PyroApps.SphereGratingServer-pysrc.html b/doc/reference/html/VisionEgg.PyroApps.SphereGratingServer-pysrc.html
new file mode 100644
index 0000000..b14d782
--- /dev/null
+++ b/doc/reference/html/VisionEgg.PyroApps.SphereGratingServer-pysrc.html
@@ -0,0 +1,521 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.PyroApps.SphereGratingServer</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.PyroApps-module.html">Package PyroApps</a> ::
+        Module SphereGratingServer
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.PyroApps.SphereGratingServer-pysrc.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<h1 class="epydoc">Source Code for <a href="VisionEgg.PyroApps.SphereGratingServer-module.html">Module VisionEgg.PyroApps.SphereGratingServer</a></h1>
+<pre class="py-src">
+<a name="L1"></a><tt class="py-lineno">  1</tt>  <tt class="py-line"><tt class="py-comment">#!/usr/bin/env python</tt> </tt>
+<a name="L2"></a><tt class="py-lineno">  2</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-docstring">"""Handle perspective-distorted sinusoidal gratings (server-side)"""</tt> </tt>
+<a name="L3"></a><tt class="py-lineno">  3</tt>  <tt class="py-line"> </tt>
+<a name="L4"></a><tt class="py-lineno">  4</tt>  <tt class="py-line"><tt class="py-comment"># Copyright (c) 2002-2003 Andrew Straw.  Distributed under the terms</tt> </tt>
+<a name="L5"></a><tt class="py-lineno">  5</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># of the GNU Lesser General Public License (LGPL).</tt> </tt>
+<a name="L6"></a><tt class="py-lineno">  6</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L7"></a><tt class="py-lineno">  7</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-0" class="py-name" targets="Package VisionEgg=VisionEgg-module.html"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-0', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">,</tt> <tt class="py-name">string</tt> </tt>
+<a name="L8"></a><tt class="py-lineno">  8</tt>  <tt class="py-line"><tt id="link-1" class="py-name" targets="Variable VisionEgg.DaqKeyboard.__version__=VisionEgg.DaqKeyboard-module.html#__version__,Variable VisionEgg.DaqLPT.__version__=VisionEgg.DaqLPT-module.html#__version__,Variable VisionEgg.GL.__version__=VisionEgg.GL-module.html#__version__,Variable VisionEgg.PyroApps.EPhysGUI.__version__=VisionEgg.PyroApps.EPhysGUI-module.html#__version__,Variable VisionEgg.PyroApps.EPhysGUIUtils. [...]
+VisionEgg.DaqLPT.__version__
+VisionEgg.GL.__version__
+VisionEgg.PyroApps.EPhysGUI.__version__
+VisionEgg.PyroApps.EPhysGUIUtils.__version__
+VisionEgg.PyroApps.EPhysServer.__version__
+VisionEgg.PyroApps.GridGUI.__version__
+VisionEgg.PyroApps.GridServer.__version__
+VisionEgg.PyroApps.ScreenPositionGUI.__version__
+VisionEgg.PyroApps.ScreenPositionServer.__version__
+VisionEgg.PyroApps.SpinningDrumGUI.__version__
+VisionEgg.PyroApps.SpinningDrumServer.__version__
+VisionEgg.PyroHelpers.__version__
+VisionEgg.QuickTime.__version__
+VisionEgg.ResponseControl.__version__
+VisionEgg.SphereMap.__version__
+VisionEgg.TCPController.__version__" class="py-name" href="#" onclick="return doclink('link-1', '__version__', 'link-1');">__version__</a></tt> <tt class="py-op">=</tt> <tt id="link-2" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-2', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-3" class="py-name" targets="Variable VisionEgg.release_name=VisionEgg-module.html#release_name"><a title="VisionEgg.release_name" c [...]
+<a name="L9"></a><tt class="py-lineno">  9</tt>  <tt class="py-line"><tt id="link-4" class="py-name" targets="Variable VisionEgg.PyroApps.ColorCalGUI.__cvs__=VisionEgg.PyroApps.ColorCalGUI-module.html#__cvs__,Variable VisionEgg.PyroApps.ColorCalServer.__cvs__=VisionEgg.PyroApps.ColorCalServer-module.html#__cvs__,Variable VisionEgg.PyroApps.EPhysGUI.__cvs__=VisionEgg.PyroApps.EPhysGUI-module.html#__cvs__,Variable VisionEgg.PyroApps.EPhysGUIUtils.__cvs__=VisionEgg.PyroApps.EPhysGUIUtils-mo [...]
+VisionEgg.PyroApps.ColorCalServer.__cvs__
+VisionEgg.PyroApps.EPhysGUI.__cvs__
+VisionEgg.PyroApps.EPhysGUIUtils.__cvs__
+VisionEgg.PyroApps.EPhysServer.__cvs__
+VisionEgg.PyroApps.FlatGratingGUI.__cvs__
+VisionEgg.PyroApps.FlatGratingServer.__cvs__
+VisionEgg.PyroApps.GridGUI.__cvs__
+VisionEgg.PyroApps.GridServer.__cvs__
+VisionEgg.PyroApps.MouseTargetGUI.__cvs__
+VisionEgg.PyroApps.MouseTargetServer.__cvs__
+VisionEgg.PyroApps.ScreenPositionGUI.__cvs__
+VisionEgg.PyroApps.ScreenPositionServer.__cvs__
+VisionEgg.PyroApps.SphereGratingGUI.__cvs__
+VisionEgg.PyroApps.SphereGratingServer.__cvs__
+VisionEgg.PyroApps.SpinningDrumGUI.__cvs__
+VisionEgg.PyroApps.SpinningDrumServer.__cvs__
+VisionEgg.PyroApps.TargetGUI.__cvs__
+VisionEgg.PyroApps.TargetServer.__cvs__
+VisionEgg.PyroClient.__cvs__
+VisionEgg.PyroHelpers.__cvs__
+VisionEgg.TCPController.__cvs__" class="py-name" href="#" onclick="return doclink('link-4', '__cvs__', 'link-4');">__cvs__</a></tt> <tt class="py-op">=</tt> <tt class="py-name">string</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'$Revision$'</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
+<a name="L10"></a><tt class="py-lineno"> 10</tt>  <tt class="py-line"><tt id="link-5" class="py-name" targets="Variable VisionEgg.PyroApps.ColorCalGUI.__date__=VisionEgg.PyroApps.ColorCalGUI-module.html#__date__,Variable VisionEgg.PyroApps.ColorCalServer.__date__=VisionEgg.PyroApps.ColorCalServer-module.html#__date__,Variable VisionEgg.PyroApps.EPhysGUI.__date__=VisionEgg.PyroApps.EPhysGUI-module.html#__date__,Variable VisionEgg.PyroApps.EPhysGUIUtils.__date__=VisionEgg.PyroApps.EPhysGUI [...]
+VisionEgg.PyroApps.ColorCalServer.__date__
+VisionEgg.PyroApps.EPhysGUI.__date__
+VisionEgg.PyroApps.EPhysGUIUtils.__date__
+VisionEgg.PyroApps.EPhysServer.__date__
+VisionEgg.PyroApps.FlatGratingGUI.__date__
+VisionEgg.PyroApps.FlatGratingServer.__date__
+VisionEgg.PyroApps.GridGUI.__date__
+VisionEgg.PyroApps.GridServer.__date__
+VisionEgg.PyroApps.MouseTargetGUI.__date__
+VisionEgg.PyroApps.MouseTargetServer.__date__
+VisionEgg.PyroApps.ScreenPositionGUI.__date__
+VisionEgg.PyroApps.ScreenPositionServer.__date__
+VisionEgg.PyroApps.SphereGratingGUI.__date__
+VisionEgg.PyroApps.SphereGratingServer.__date__
+VisionEgg.PyroApps.SpinningDrumGUI.__date__
+VisionEgg.PyroApps.SpinningDrumServer.__date__
+VisionEgg.PyroApps.TargetGUI.__date__
+VisionEgg.PyroApps.TargetServer.__date__
+VisionEgg.PyroClient.__date__
+VisionEgg.PyroHelpers.__date__
+VisionEgg.TCPController.__date__" class="py-name" href="#" onclick="return doclink('link-5', '__date__', 'link-5');">__date__</a></tt> <tt class="py-op">=</tt> <tt class="py-name">string</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">string</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'$Date$'</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt  [...]
+<a name="L11"></a><tt class="py-lineno"> 11</tt>  <tt class="py-line"><tt id="link-6" class="py-name" targets="Variable VisionEgg.PyroApps.EPhysGUI.__author__=VisionEgg.PyroApps.EPhysGUI-module.html#__author__,Variable VisionEgg.PyroApps.EPhysGUIUtils.__author__=VisionEgg.PyroApps.EPhysGUIUtils-module.html#__author__,Variable VisionEgg.PyroApps.EPhysServer.__author__=VisionEgg.PyroApps.EPhysServer-module.html#__author__,Variable VisionEgg.PyroApps.GridGUI.__author__=VisionEgg.PyroApps.Gr [...]
+VisionEgg.PyroApps.EPhysGUIUtils.__author__
+VisionEgg.PyroApps.EPhysServer.__author__
+VisionEgg.PyroApps.GridGUI.__author__
+VisionEgg.PyroApps.GridServer.__author__
+VisionEgg.PyroApps.SpinningDrumGUI.__author__
+VisionEgg.PyroApps.SpinningDrumServer.__author__" class="py-name" href="#" onclick="return doclink('link-6', '__author__', 'link-6');">__author__</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'Andrew Straw <astraw at users.sourceforge.net>'</tt> </tt>
+<a name="L12"></a><tt class="py-lineno"> 12</tt>  <tt class="py-line"> </tt>
+<a name="L13"></a><tt class="py-lineno"> 13</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">sys</tt><tt class="py-op">,</tt> <tt class="py-name">os</tt><tt class="py-op">,</tt> <tt class="py-name">math</tt> </tt>
+<a name="L14"></a><tt class="py-lineno"> 14</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-7" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-7', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-8" class="py-name" targets="Module VisionEgg.Core=VisionEgg.Core-module.html"><a title="VisionEgg.Core" class="py-name" href="#" onclick="return doclink('link-8', 'Core', 'link-8');">Core</a></tt> </tt>
+<a name="L15"></a><tt class="py-lineno"> 15</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-9" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-9', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-10" class="py-name" targets="Module VisionEgg.FlowControl=VisionEgg.FlowControl-module.html"><a title="VisionEgg.FlowControl" class="py-name" href="#" onclick="return doclink('link-10', 'FlowCont [...]
+<a name="L16"></a><tt class="py-lineno"> 16</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-11" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-11', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-12" class="py-name" targets="Module VisionEgg.SphereMap=VisionEgg.SphereMap-module.html,Class VisionEgg.SphereMap.SphereMap=VisionEgg.SphereMap.SphereMap-class.html"><a title="VisionEgg.SphereMap
+VisionEgg.SphereMap.SphereMap" class="py-name" href="#" onclick="return doclink('link-12', 'SphereMap', 'link-12');">SphereMap</a></tt> </tt>
+<a name="L17"></a><tt class="py-lineno"> 17</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-13" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-13', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-14" class="py-name" targets="Module VisionEgg.PyroHelpers=VisionEgg.PyroHelpers-module.html"><a title="VisionEgg.PyroHelpers" class="py-name" href="#" onclick="return doclink('link-14', 'PyroHe [...]
+<a name="L18"></a><tt class="py-lineno"> 18</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">Pyro</tt><tt class="py-op">.</tt><tt class="py-name">core</tt> </tt>
+<a name="L19"></a><tt class="py-lineno"> 19</tt>  <tt class="py-line"> </tt>
+<a name="L20"></a><tt class="py-lineno"> 20</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-15" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-15', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-16" class="py-name" targets="Package VisionEgg.PyroApps=VisionEgg.PyroApps-module.html"><a title="VisionEgg.PyroApps" class="py-name" href="#" onclick="return doclink('link-16', 'PyroApps', 'link [...]
+<a name="L21"></a><tt class="py-lineno"> 21</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-19" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-19', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-20" class="py-name"><a title="VisionEgg.PyroApps" class="py-name" href="#" onclick="return doclink('link-20', 'PyroApps', 'link-16');">PyroApps</a></tt><tt class="py-op">.</tt><tt id="link-21" cl [...]
+<a name="L22"></a><tt class="py-lineno"> 22</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-23" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-23', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-24" class="py-name"><a title="VisionEgg.PyroApps" class="py-name" href="#" onclick="return doclink('link-24', 'PyroApps', 'link-16');">PyroApps</a></tt><tt class="py-op">.</tt><tt id="link-25" cl [...]
+<a name="L23"></a><tt class="py-lineno"> 23</tt>  <tt class="py-line"> </tt>
+<a name="SphereGratingExperimentMetaController"></a><div id="SphereGratingExperimentMetaController-def"><a name="L24"></a><tt class="py-lineno"> 24</tt> <a class="py-toggle" href="#" id="SphereGratingExperimentMetaController-toggle" onclick="return toggle('SphereGratingExperimentMetaController');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController-class.html">SphereGratingExp [...]
+</div><div id="SphereGratingExperimentMetaController-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="SphereGratingExperimentMetaController-expanded"><a name="SphereGratingExperimentMetaController.__init__"></a><div id="SphereGratingExperimentMetaController.__init__-def"><a name="L25"></a><tt class="py-lineno"> 25</tt> <a class="py-toggle" href="#" id="SphereGratingExperimentMetaController.__init__-toggle" onclick="return toggle('SphereGratingExperimentMetaControll [...]
+</div><div id="SphereGratingExperimentMetaController.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SphereGratingExperimentMetaController.__init__-expanded"><a name="L26"></a><tt class="py-lineno"> 26</tt>  <tt class="py-line"> </tt>
+<a name="L27"></a><tt class="py-lineno"> 27</tt>  <tt class="py-line">        <tt class="py-comment"># get stimuli</tt> </tt>
+<a name="L28"></a><tt class="py-lineno"> 28</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">assert</tt><tt class="py-op">(</tt> <tt class="py-name">stimuli</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-string">'3d_perspective'</tt><tt class="py-op">)</tt> </tt>
+<a name="L29"></a><tt class="py-lineno"> 29</tt>  <tt class="py-line">        <tt class="py-keyword">assert</tt><tt class="py-op">(</tt> <tt class="py-name">stimuli</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-string">'3d_perspective'</tt><tt class="py-op">)</tt> </tt>
+<a name="L30"></a><tt class="py-lineno"> 30</tt>  <tt class="py-line">        <tt class="py-name">sphere_grating</tt> <tt class="py-op">=</tt> <tt class="py-name">stimuli</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
+<a name="L31"></a><tt class="py-lineno"> 31</tt>  <tt class="py-line">        <tt class="py-name">sphere_window</tt> <tt class="py-op">=</tt> <tt class="py-name">stimuli</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
+<a name="L32"></a><tt class="py-lineno"> 32</tt>  <tt class="py-line">         </tt>
+<a name="L33"></a><tt class="py-lineno"> 33</tt>  <tt class="py-line">        <tt class="py-name">Pyro</tt><tt class="py-op">.</tt><tt class="py-name">core</tt><tt class="py-op">.</tt><tt class="py-name">ObjBase</tt><tt class="py-op">.</tt><tt id="link-27" class="py-name" targets="Method VisionEgg.ClassWithParameters.__init__()=VisionEgg.ClassWithParameters-class.html#__init__,Method VisionEgg.Configuration.Config.__init__()=VisionEgg.Configuration.Config-class.html#__init__,Method Visio [...]
+VisionEgg.Configuration.Config.__init__
+VisionEgg.Core.FixationSpot.__init__
+VisionEgg.Core.FrameTimer.__init__
+VisionEgg.Core.ModelView.__init__
+VisionEgg.Core.OrthographicProjection.__init__
+VisionEgg.Core.OrthographicProjectionNoZClip.__init__
+VisionEgg.Core.PerspectiveProjection.__init__
+VisionEgg.Core.Projection.__init__
+VisionEgg.Core.ProjectionBaseClass.__init__
+VisionEgg.Core.Screen.__init__
+VisionEgg.Core.SimplePerspectiveProjection.__init__
+VisionEgg.Core.Stimulus.__init__
+VisionEgg.Core.Viewport.__init__
+VisionEgg.Daq.Channel.__init__
+VisionEgg.Daq.DaqMode.__init__
+VisionEgg.Daq.Device.__init__
+VisionEgg.Daq.Functionality.__init__
+VisionEgg.Daq.SignalType.__init__
+VisionEgg.DaqKeyboard.KeyboardTriggerInController.__init__
+VisionEgg.DaqLPT.LPTChannel.__init__
+VisionEgg.DaqLPT.LPTDevice.__init__
+VisionEgg.DaqLPT.LPTTriggerInController.__init__
+VisionEgg.DaqLPT.LPTTriggerOutController.__init__
+VisionEgg.Deprecated.Message.__init__
+VisionEgg.Dots.DotArea2D.__init__
+VisionEgg.FlowControl.ConstantController.__init__
+VisionEgg.FlowControl.Controller.__init__
+VisionEgg.FlowControl.EncapsulatedController.__init__
+VisionEgg.FlowControl.EvalStringController.__init__
+VisionEgg.FlowControl.ExecStringController.__init__
+VisionEgg.FlowControl.FunctionController.__init__
+VisionEgg.FlowControl.Presentation.__init__
+VisionEgg.GLTrace.Wrapper.__init__
+VisionEgg.GUI.AppWindow.__init__
+VisionEgg.GUI.GetKeypressDialog.__init__
+VisionEgg.GUI.GraphicsConfigurationWindow.__init__
+VisionEgg.GUI.InfoFrame.__init__
+VisionEgg.GUI.ProgressBar.__init__
+VisionEgg.GUI.ToplevelDialog.__init__
+VisionEgg.Gratings.SinGrating2D.__init__
+VisionEgg.Gratings.SinGrating3D.__init__
+VisionEgg.MoreStimuli.Arrow.__init__
+VisionEgg.MoreStimuli.FilledCircle.__init__
+VisionEgg.MoreStimuli.Rectangle3D.__init__
+VisionEgg.MoreStimuli.Target2D.__init__
+VisionEgg.ParameterTypes.AnyOf.__init__
+VisionEgg.ParameterTypes.Instance.__init__
+VisionEgg.ParameterTypes.Sequence.__init__
+VisionEgg.ParameterTypes.SubClass.__init__
+VisionEgg.PyroApps.AST_ext.AST_Visitor.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalMetaParameters.__init__
+VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.__init__
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.__init__
+VisionEgg.PyroApps.DropinGUI.DropinMetaParameters.__init__
+VisionEgg.PyroApps.DropinServer.DropinMetaController.__init__
+VisionEgg.PyroApps.EPhysGUI.AppWindow.__init__
+VisionEgg.PyroApps.EPhysGUI.BarButton.__init__
+VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase.__init__
+VisionEgg.PyroApps.EPhysGUI.GammaFrame.__init__
+VisionEgg.PyroApps.EPhysGUI.ImageSequenceLauncher.__init__
+VisionEgg.PyroApps.EPhysGUI.Loop.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopContainedObject.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopParamDialog.__init__
+VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.__init__
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.__init__
+VisionEgg.PyroApps.EPhysServer.EPhysServer.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingMetaParameters.__init__
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.GridGUI.GridControlFrame.__init__
+VisionEgg.PyroApps.GridGUI.GridMetaParameters.__init__
+VisionEgg.PyroApps.GridServer.GridMetaController.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetMetaParameters.__init__
+VisionEgg.PyroApps.MouseTargetServer.MousePositionController.__init__
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetOrientationController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetPositionController.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.CallbackEntry.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionParameters.__init__
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingMetaParameters.__init__
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumMetaParameters.__init__
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.__init__
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.__init__
+VisionEgg.PyroApps.TargetGUI.TargetMetaParameters.__init__
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.__init__
+VisionEgg.PyroClient.PyroClient.__init__
+VisionEgg.PyroHelpers.PyroConstantController.__init__
+VisionEgg.PyroHelpers.PyroEncapsulatedController.__init__
+VisionEgg.PyroHelpers.PyroEvalStringController.__init__
+VisionEgg.PyroHelpers.PyroExecStringController.__init__
+VisionEgg.PyroHelpers.PyroListenController.__init__
+VisionEgg.PyroHelpers.PyroLocalDictController.__init__
+VisionEgg.PyroHelpers.PyroServer.__init__
+VisionEgg.QuickTime.MovieTexture.__init__
+VisionEgg.ResponseControl.KeyboardResponseController.__init__
+VisionEgg.ResponseControl.ResponseController.__init__
+VisionEgg.SphereMap.AzElGrid.__init__
+VisionEgg.SphereMap.SphereGrating.__init__
+VisionEgg.SphereMap.SphereMap.__init__
+VisionEgg.SphereMap.SphereWindow.__init__
+VisionEgg.TCPController.SocketListenController.__init__
+VisionEgg.TCPController.TCPController.__init__
+VisionEgg.TCPController.TCPServer.__init__
+VisionEgg.Text.BitmapText.__init__
+VisionEgg.Text.GlutTextBase.__init__
+VisionEgg.Text.StrokeText.__init__
+VisionEgg.Text.Text.__init__
+VisionEgg.Textures.FixationCross.__init__
+VisionEgg.Textures.Mask2D.__init__
+VisionEgg.Textures.SpinningDrum.__init__
+VisionEgg.Textures.Texture.__init__
+VisionEgg.Textures.TextureFromFile.__init__
+VisionEgg.Textures.TextureObject.__init__
+VisionEgg.Textures.TextureStimulusBaseClass.__init__
+VisionEgg.ThreeDeeMath.TransformMatrix.__init__
+VisionEgg.WrappedText.WrappedText.__init__
+VisionEgg.qtmovie.Movie.__init__
+VisionEgg.qtmovie.Rect.__init__" class="py-name" href="#" onclick="return doclink('link-27', '__init__', 'link-27');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
+<a name="L34"></a><tt class="py-lineno"> 34</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt> <tt class="py-op">=</tt> <tt id="link-28" class="py-name"><a title="VisionEgg.PyroApps.SphereGratingGUI.SphereGratingMetaParameters" class="py-name" href="#" onclick="return doclink('link-28', 'SphereGratingMetaParameters', 'link-26');">SphereGratingMetaParameters</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L35"></a><tt class="py-lineno"> 35</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">screen</tt><tt class="py-op">,</tt><tt id="link-29" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-29', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-30" class="py-name"><a title="VisionEgg.Cor [...]
+<a name="L36"></a><tt class="py-lineno"> 36</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">"Expecting instance of VisionEgg.Core.Screen"</tt><tt class="py-op">)</tt> </tt>
+<a name="L37"></a><tt class="py-lineno"> 37</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">presentation</tt><tt class="py-op">,</tt><tt id="link-32" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-32', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-33" class="py-name"><a title="VisionE [...]
+<a name="L38"></a><tt class="py-lineno"> 38</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">"Expecting instance of VisionEgg.FlowControl.Presentation"</tt><tt class="py-op">)</tt> </tt>
+<a name="L39"></a><tt class="py-lineno"> 39</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">sphere_grating</tt><tt class="py-op">,</tt><tt id="link-35" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-35', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-36" class="py-name"><a title="Visio [...]
+VisionEgg.SphereMap.SphereMap" class="py-name" href="#" onclick="return doclink('link-36', 'SphereMap', 'link-12');">SphereMap</a></tt><tt class="py-op">.</tt><tt id="link-37" class="py-name" targets="Class VisionEgg.SphereMap.SphereGrating=VisionEgg.SphereMap.SphereGrating-class.html"><a title="VisionEgg.SphereMap.SphereGrating" class="py-name" href="#" onclick="return doclink('link-37', 'SphereGrating', 'link-37');">SphereGrating</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L40"></a><tt class="py-lineno"> 40</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">"Expecting instance of VisionEgg.SphereMap.SphereGrating"</tt><tt class="py-op">)</tt> </tt>
+<a name="L41"></a><tt class="py-lineno"> 41</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">sphere_window</tt><tt class="py-op">,</tt><tt id="link-38" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-38', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-39" class="py-name"><a title="Vision [...]
+VisionEgg.SphereMap.SphereMap" class="py-name" href="#" onclick="return doclink('link-39', 'SphereMap', 'link-12');">SphereMap</a></tt><tt class="py-op">.</tt><tt id="link-40" class="py-name" targets="Class VisionEgg.SphereMap.SphereWindow=VisionEgg.SphereMap.SphereWindow-class.html"><a title="VisionEgg.SphereMap.SphereWindow" class="py-name" href="#" onclick="return doclink('link-40', 'SphereWindow', 'link-40');">SphereWindow</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L42"></a><tt class="py-lineno"> 42</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">"Expecting instance of VisionEgg.SphereMap.SphereWindow"</tt><tt class="py-op">)</tt> </tt>
+<a name="L43"></a><tt class="py-lineno"> 43</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">p</tt> <tt class="py-op">=</tt> <tt class="py-name">presentation</tt> </tt>
+<a name="L44"></a><tt class="py-lineno"> 44</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stim</tt> <tt class="py-op">=</tt> <tt class="py-name">sphere_grating</tt> </tt>
+<a name="L45"></a><tt class="py-lineno"> 45</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">window</tt> <tt class="py-op">=</tt> <tt class="py-name">sphere_window</tt> </tt>
+<a name="L46"></a><tt class="py-lineno"> 46</tt>  <tt class="py-line"> </tt>
+<a name="L47"></a><tt class="py-lineno"> 47</tt>  <tt class="py-line">        <tt class="py-name">screen</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">bgcolor</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-number">0.5</tt><tt class="py-op">,</tt> <tt class="py-number">0.5</tt><tt class="py-op">,</tt> <tt class="py-number">0.5</tt><tt class="py-op">,</tt> <tt class="py-number">0.0</tt><tt class="py-op">)</tt> </tt>
+<a name="L48"></a><tt class="py-lineno"> 48</tt>  <tt class="py-line"> </tt>
+<a name="L49"></a><tt class="py-lineno"> 49</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt id="link-41" class="py-name" targets="Method VisionEgg.FlowControl.Presentation.add_controller()=VisionEgg.FlowControl.Presentation-class.html#add_controller,Method VisionEgg.PyroHelpers.PyroLocalDictController.add_controller()=VisionEgg.PyroHelpers.PyroLocalDictController-class.html#add_controller"><a tit [...]
+VisionEgg.PyroHelpers.PyroLocalDictController.add_controller" class="py-name" href="#" onclick="return doclink('link-41', 'add_controller', 'link-41');">add_controller</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stim</tt><tt class="py-op">,</tt><tt class="py-string">'on'</tt><tt class="py-op">,</tt><tt id="link-42" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-42', 'VisionEgg', 'lin [...]
+<a name="L50"></a><tt class="py-lineno"> 50</tt>  <tt class="py-line">            <tt class="py-name">during_go_func</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-45" class="py-name" targets="Method VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.on_function_during_go()=VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController-class.html#on_function_during_go,Method VisionEgg.PyroApps.SphereGratingSer [...]
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.on_function_during_go
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.on_function_during_go
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.on_function_during_go" class="py-name" href="#" onclick="return doclink('link-45', 'on_function_during_go', 'link-45');">on_function_during_go</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L51"></a><tt class="py-lineno"> 51</tt>  <tt class="py-line">            <tt class="py-name">between_go_func</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-46" class="py-name" targets="Method VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.on_function_between_go()=VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController-class.html#on_function_between_go,Method VisionEgg.PyroApps.SphereGrating [...]
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.on_function_between_go
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.on_function_between_go
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.on_function_between_go" class="py-name" href="#" onclick="return doclink('link-46', 'on_function_between_go', 'link-46');">on_function_between_go</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L52"></a><tt class="py-lineno"> 52</tt>  <tt class="py-line"> </tt>
+<a name="SphereGratingExperimentMetaController.__del__"></a><div id="SphereGratingExperimentMetaController.__del__-def"><a name="L53"></a><tt class="py-lineno"> 53</tt> <a class="py-toggle" href="#" id="SphereGratingExperimentMetaController.__del__-toggle" onclick="return toggle('SphereGratingExperimentMetaController.__del__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaContr [...]
+</div><div id="SphereGratingExperimentMetaController.__del__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SphereGratingExperimentMetaController.__del__-expanded"><a name="L54"></a><tt class="py-lineno"> 54</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt id="link-47" class="py-name" targets="Method VisionEgg.FlowControl.Presentation.remove_controller()=VisionEgg.Flow [...]
+<a name="L55"></a><tt class="py-lineno"> 55</tt>  <tt class="py-line">        <tt class="py-name">Pyro</tt><tt class="py-op">.</tt><tt class="py-name">core</tt><tt class="py-op">.</tt><tt class="py-name">ObjBase</tt><tt class="py-op">.</tt><tt id="link-48" class="py-name" targets="Method VisionEgg.Core.Screen.__del__()=VisionEgg.Core.Screen-class.html#__del__,Method VisionEgg.DaqLPT.LPTOutput.__del__()=VisionEgg.DaqLPT.LPTOutput-class.html#__del__,Method VisionEgg.Gratings.SinGrating2D._ [...]
+VisionEgg.DaqLPT.LPTOutput.__del__
+VisionEgg.Gratings.SinGrating2D.__del__
+VisionEgg.Gratings.SinGrating3D.__del__
+VisionEgg.PyroApps.EPhysGUI.AppWindow.__del__
+VisionEgg.PyroApps.EPhysServer.EPhysServer.__del__
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.__del__
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.__del__
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.__del__
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.__del__
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.__del__
+VisionEgg.QuickTime.MovieTexture.__del__
+VisionEgg.Textures.TextureObject.__del__" class="py-name" href="#" onclick="return doclink('link-48', '__del__', 'link-48');">__del__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> <tt class="py-comment"># call base class</tt> </tt>
+</div><a name="L56"></a><tt class="py-lineno"> 56</tt>  <tt class="py-line"> </tt>
+<a name="SphereGratingExperimentMetaController.on_function_during_go"></a><div id="SphereGratingExperimentMetaController.on_function_during_go-def"><a name="L57"></a><tt class="py-lineno"> 57</tt> <a class="py-toggle" href="#" id="SphereGratingExperimentMetaController.on_function_during_go-toggle" onclick="return toggle('SphereGratingExperimentMetaController.on_function_during_go');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroA [...]
+</div><div id="SphereGratingExperimentMetaController.on_function_during_go-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SphereGratingExperimentMetaController.on_function_during_go-expanded"><a name="L58"></a><tt class="py-lineno"> 58</tt>  <tt class="py-line">        <tt class="py-docstring">"""Compute when the grating is on"""</tt> </tt>
+<a name="L59"></a><tt class="py-lineno"> 59</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">t</tt> <tt class="py-op"><=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op">.</tt><tt class="py-name">pre_stim_sec</tt><tt class="py-op">:</tt> </tt>
+<a name="L60"></a><tt class="py-lineno"> 60</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-number">0</tt> <tt class="py-comment"># not on yet</tt> </tt>
+<a name="L61"></a><tt class="py-lineno"> 61</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">t</tt> <tt class="py-op"><=</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op">.</tt><tt class="py-name">pre_stim_sec</tt> <tt class="py-op">+</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op">.</tt><tt class="p [...]
+<a name="L62"></a><tt class="py-lineno"> 62</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-number">1</tt> <tt class="py-comment"># on</tt> </tt>
+<a name="L63"></a><tt class="py-lineno"> 63</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L64"></a><tt class="py-lineno"> 64</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-number">0</tt> <tt class="py-comment"># off again</tt> </tt>
+</div><a name="L65"></a><tt class="py-lineno"> 65</tt>  <tt class="py-line">         </tt>
+<a name="SphereGratingExperimentMetaController.on_function_between_go"></a><div id="SphereGratingExperimentMetaController.on_function_between_go-def"><a name="L66"></a><tt class="py-lineno"> 66</tt> <a class="py-toggle" href="#" id="SphereGratingExperimentMetaController.on_function_between_go-toggle" onclick="return toggle('SphereGratingExperimentMetaController.on_function_between_go');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.P [...]
+</div><div id="SphereGratingExperimentMetaController.on_function_between_go-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SphereGratingExperimentMetaController.on_function_between_go-expanded"><a name="L67"></a><tt class="py-lineno"> 67</tt>  <tt class="py-line">        <tt class="py-docstring">"""Compute when the grating is off"""</tt> </tt>
+<a name="L68"></a><tt class="py-lineno"> 68</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-number">0</tt> <tt class="py-comment"># off again</tt> </tt>
+</div><a name="L69"></a><tt class="py-lineno"> 69</tt>  <tt class="py-line">     </tt>
+<a name="SphereGratingExperimentMetaController.get_parameters"></a><div id="SphereGratingExperimentMetaController.get_parameters-def"><a name="L70"></a><tt class="py-lineno"> 70</tt> <a class="py-toggle" href="#" id="SphereGratingExperimentMetaController.get_parameters-toggle" onclick="return toggle('SphereGratingExperimentMetaController.get_parameters');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.SphereGratingServer.Sphe [...]
+</div><div id="SphereGratingExperimentMetaController.get_parameters-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SphereGratingExperimentMetaController.get_parameters-expanded"><a name="L71"></a><tt class="py-lineno"> 71</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt> </tt>
+</div><a name="L72"></a><tt class="py-lineno"> 72</tt>  <tt class="py-line"> </tt>
+<a name="SphereGratingExperimentMetaController.set_parameters"></a><div id="SphereGratingExperimentMetaController.set_parameters-def"><a name="L73"></a><tt class="py-lineno"> 73</tt> <a class="py-toggle" href="#" id="SphereGratingExperimentMetaController.set_parameters-toggle" onclick="return toggle('SphereGratingExperimentMetaController.set_parameters');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.SphereGratingServer.Sphe [...]
+</div><div id="SphereGratingExperimentMetaController.set_parameters-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SphereGratingExperimentMetaController.set_parameters-expanded"><a name="L74"></a><tt class="py-lineno"> 74</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">new_parameters</tt><tt class="py-op">,</tt> <tt id="link-49" class="py-name"><a title="VisionEgg. [...]
+<a name="L75"></a><tt class="py-lineno"> 75</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt> <tt class="py-op">=</tt> <tt class="py-name">new_parameters</tt> </tt>
+<a name="L76"></a><tt class="py-lineno"> 76</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L77"></a><tt class="py-lineno"> 77</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">"Argument to set_parameters must be instance of SphereGratingMetaParameters"</tt><tt class="py-op">)</tt> </tt>
+<a name="L78"></a><tt class="py-lineno"> 78</tt>  <tt class="py-line"><tt class="py-comment">#        self.meta_params = new_parameters</tt> </tt>
+<a name="L79"></a><tt class="py-lineno"> 79</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-50" class="py-name" targets="Method VisionEgg.GUI.InfoFrame.update()=VisionEgg.GUI.InfoFrame-class.html#update,Method VisionEgg.GUI.ProgressBar.update()=VisionEgg.GUI.ProgressBar-class.html#update,Method VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.update()=VisionEgg.PyroApps.ColorCalServer.ColorCalMetaCont [...]
+VisionEgg.GUI.ProgressBar.update
+VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.update
+VisionEgg.PyroApps.DropinServer.DropinMetaController.update
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.update
+VisionEgg.PyroApps.GridServer.GridMetaController.update
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.update
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.update
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.update
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.update
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.update
+VisionEgg.QuickTime.MovieTexture.update
+VisionEgg.Textures.Texture.update" class="py-name" href="#" onclick="return doclink('link-50', 'update', 'link-50');">update</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L80"></a><tt class="py-lineno"> 80</tt>  <tt class="py-line">         </tt>
+<a name="SphereGratingExperimentMetaController.update"></a><div id="SphereGratingExperimentMetaController.update-def"><a name="L81"></a><tt class="py-lineno"> 81</tt> <a class="py-toggle" href="#" id="SphereGratingExperimentMetaController.update-toggle" onclick="return toggle('SphereGratingExperimentMetaController.update');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaControlle [...]
+</div><div id="SphereGratingExperimentMetaController.update-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SphereGratingExperimentMetaController.update-expanded"><a name="L82"></a><tt class="py-lineno"> 82</tt>  <tt class="py-line">        <tt class="py-name">stim_params</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stim</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt> <tt class="py-comme [...]
+<a name="L83"></a><tt class="py-lineno"> 83</tt>  <tt class="py-line">        <tt class="py-name">window_params</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">window</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt> <tt class="py-comment"># shorthand</tt> </tt>
+<a name="L84"></a><tt class="py-lineno"> 84</tt>  <tt class="py-line">        <tt class="py-name">meta_params</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt> <tt class="py-comment"># shorthand</tt> </tt>
+<a name="L85"></a><tt class="py-lineno"> 85</tt>  <tt class="py-line">        <tt class="py-name">stim_params</tt><tt class="py-op">.</tt><tt class="py-name">contrast</tt> <tt class="py-op">=</tt> <tt class="py-name">meta_params</tt><tt class="py-op">.</tt><tt class="py-name">contrast</tt> </tt>
+<a name="L86"></a><tt class="py-lineno"> 86</tt>  <tt class="py-line">        <tt class="py-name">stim_params</tt><tt class="py-op">.</tt><tt class="py-name">orientation</tt> <tt class="py-op">=</tt> <tt class="py-name">meta_params</tt><tt class="py-op">.</tt><tt class="py-name">orient</tt> </tt>
+<a name="L87"></a><tt class="py-lineno"> 87</tt>  <tt class="py-line">        <tt class="py-name">stim_params</tt><tt class="py-op">.</tt><tt class="py-name">spatial_freq_cpd</tt> <tt class="py-op">=</tt> <tt class="py-name">meta_params</tt><tt class="py-op">.</tt><tt class="py-name">sf</tt> </tt>
+<a name="L88"></a><tt class="py-lineno"> 88</tt>  <tt class="py-line">        <tt class="py-name">stim_params</tt><tt class="py-op">.</tt><tt class="py-name">temporal_freq_hz</tt> <tt class="py-op">=</tt> <tt class="py-name">meta_params</tt><tt class="py-op">.</tt><tt class="py-name">tf</tt> </tt>
+<a name="L89"></a><tt class="py-lineno"> 89</tt>  <tt class="py-line">        <tt class="py-name">stim_params</tt><tt class="py-op">.</tt><tt class="py-name">grating_center_azimuth</tt> <tt class="py-op">=</tt> <tt class="py-name">meta_params</tt><tt class="py-op">.</tt><tt class="py-name">window_az</tt> </tt>
+<a name="L90"></a><tt class="py-lineno"> 90</tt>  <tt class="py-line">        <tt class="py-name">stim_params</tt><tt class="py-op">.</tt><tt class="py-name">grating_center_elevation</tt> <tt class="py-op">=</tt> <tt class="py-name">meta_params</tt><tt class="py-op">.</tt><tt class="py-name">window_el</tt> </tt>
+<a name="L91"></a><tt class="py-lineno"> 91</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">go_duration</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt> <tt class="py-name">meta_params</tt><tt class="py-op">.</tt><tt class="py-name">pre_stim_sec</tt> <tt class="py-op">+</tt> <tt class="py-name">meta_params</tt><tt cl [...]
+<a name="L92"></a><tt class="py-lineno"> 92</tt>  <tt class="py-line">        <tt class="py-name">window_params</tt><tt class="py-op">.</tt><tt class="py-name">window_shape</tt> <tt class="py-op">=</tt> <tt class="py-name">meta_params</tt><tt class="py-op">.</tt><tt class="py-name">window_func</tt> </tt>
+<a name="L93"></a><tt class="py-lineno"> 93</tt>  <tt class="py-line">        <tt class="py-name">window_params</tt><tt class="py-op">.</tt><tt class="py-name">window_shape_radius_parameter</tt> <tt class="py-op">=</tt> <tt class="py-name">meta_params</tt><tt class="py-op">.</tt><tt class="py-name">window_radius</tt> </tt>
+<a name="L94"></a><tt class="py-lineno"> 94</tt>  <tt class="py-line">        <tt class="py-name">window_params</tt><tt class="py-op">.</tt><tt class="py-name">window_center_azimuth</tt> <tt class="py-op">=</tt> <tt class="py-name">meta_params</tt><tt class="py-op">.</tt><tt class="py-name">window_az</tt> </tt>
+<a name="L95"></a><tt class="py-lineno"> 95</tt>  <tt class="py-line">        <tt class="py-name">window_params</tt><tt class="py-op">.</tt><tt class="py-name">window_center_elevation</tt> <tt class="py-op">=</tt> <tt class="py-name">meta_params</tt><tt class="py-op">.</tt><tt class="py-name">window_el</tt> </tt>
+</div><a name="L96"></a><tt class="py-lineno"> 96</tt>  <tt class="py-line"> </tt>
+<a name="SphereGratingExperimentMetaController.go"></a><div id="SphereGratingExperimentMetaController.go-def"><a name="L97"></a><tt class="py-lineno"> 97</tt> <a class="py-toggle" href="#" id="SphereGratingExperimentMetaController.go-toggle" onclick="return toggle('SphereGratingExperimentMetaController.go');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController-class.html#go" [...]
+</div><div id="SphereGratingExperimentMetaController.go-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SphereGratingExperimentMetaController.go-expanded"><a name="L98"></a><tt class="py-lineno"> 98</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">enter_go_loop</tt> <tt class="py-op">=</tt> <tt c [...]
+</div><a name="L99"></a><tt class="py-lineno"> 99</tt>  <tt class="py-line"> </tt>
+<a name="SphereGratingExperimentMetaController.quit_server"></a><div id="SphereGratingExperimentMetaController.quit_server-def"><a name="L100"></a><tt class="py-lineno">100</tt> <a class="py-toggle" href="#" id="SphereGratingExperimentMetaController.quit_server-toggle" onclick="return toggle('SphereGratingExperimentMetaController.quit_server');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.SphereGratingServer.SphereGratingEx [...]
+</div><div id="SphereGratingExperimentMetaController.quit_server-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SphereGratingExperimentMetaController.quit_server-expanded"><a name="L101"></a><tt class="py-lineno">101</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt id="link-51" class="py-name" targets="Method V [...]
+</div></div><a name="L102"></a><tt class="py-lineno">102</tt>  <tt class="py-line"> </tt>
+<a name="get_meta_controller_class"></a><div id="get_meta_controller_class-def"><a name="L103"></a><tt class="py-lineno">103</tt> <a class="py-toggle" href="#" id="get_meta_controller_class-toggle" onclick="return toggle('get_meta_controller_class');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.SphereGratingServer-module.html#get_meta_controller_class">get_meta_controller_class</a><tt class="py-op">(</tt><tt class="py-op">)</tt [...]
+</div><div id="get_meta_controller_class-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="get_meta_controller_class-expanded"><a name="L104"></a><tt class="py-lineno">104</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt id="link-52" class="py-name" targets="Class VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController=VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController-class.html"><a title="VisionEgg [...]
+</div><a name="L105"></a><tt class="py-lineno">105</tt>  <tt class="py-line"> </tt>
+<a name="make_stimuli"></a><div id="make_stimuli-def"><a name="L106"></a><tt class="py-lineno">106</tt> <a class="py-toggle" href="#" id="make_stimuli-toggle" onclick="return toggle('make_stimuli');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.SphereGratingServer-module.html#make_stimuli">make_stimuli</a><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="make_stimuli-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="make_stimuli-expanded"><a name="L107"></a><tt class="py-lineno">107</tt>  <tt class="py-line">    <tt class="py-name">stimulus</tt> <tt class="py-op">=</tt> <tt id="link-53" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-53', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-54" class="py-name"><a title="VisionEgg.S [...]
+VisionEgg.SphereMap.SphereMap" class="py-name" href="#" onclick="return doclink('link-54', 'SphereMap', 'link-12');">SphereMap</a></tt><tt class="py-op">.</tt><tt id="link-55" class="py-name"><a title="VisionEgg.SphereMap.SphereGrating" class="py-name" href="#" onclick="return doclink('link-55', 'SphereGrating', 'link-37');">SphereGrating</a></tt><tt class="py-op">(</tt><tt class="py-name">radius</tt><tt class="py-op">=</tt><tt class="py-number">1.0</tt><tt class="py-op">,</tt> </tt>
+<a name="L108"></a><tt class="py-lineno">108</tt>  <tt class="py-line">                                                 <tt class="py-name">spatial_freq_cpd</tt><tt class="py-op">=</tt><tt class="py-number">1.0</tt><tt class="py-op">/</tt><tt class="py-number">9.0</tt><tt class="py-op">,</tt> </tt>
+<a name="L109"></a><tt class="py-lineno">109</tt>  <tt class="py-line">                                                 <tt class="py-name">temporal_freq_hz</tt> <tt class="py-op">=</tt> <tt class="py-number">1.0</tt><tt class="py-op">)</tt> </tt>
+<a name="L110"></a><tt class="py-lineno">110</tt>  <tt class="py-line">    <tt class="py-name">mask</tt> <tt class="py-op">=</tt> <tt id="link-56" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-56', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-57" class="py-name"><a title="VisionEgg.SphereMap
+VisionEgg.SphereMap.SphereMap" class="py-name" href="#" onclick="return doclink('link-57', 'SphereMap', 'link-12');">SphereMap</a></tt><tt class="py-op">.</tt><tt id="link-58" class="py-name"><a title="VisionEgg.SphereMap.SphereWindow" class="py-name" href="#" onclick="return doclink('link-58', 'SphereWindow', 'link-40');">SphereWindow</a></tt><tt class="py-op">(</tt><tt class="py-name">radius</tt><tt class="py-op">=</tt><tt class="py-number">0.95</tt><tt class="py-op">)</tt> </tt>
+<a name="L111"></a><tt class="py-lineno">111</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-op">[</tt><tt class="py-op">(</tt><tt class="py-string">'3d_perspective'</tt><tt class="py-op">,</tt><tt class="py-name">stimulus</tt><tt class="py-op">)</tt><tt class="py-op">,</tt><tt class="py-op">(</tt><tt class="py-string">'3d_perspective'</tt><tt class="py-op">,</tt><tt class="py-name">mask</tt><tt class="py-op">)</tt><tt class="py-op">]</tt> </tt>
+</div><a name="L112"></a><tt class="py-lineno">112</tt>  <tt class="py-line"> </tt>
+<a name="get_meta_controller_stimkey"></a><div id="get_meta_controller_stimkey-def"><a name="L113"></a><tt class="py-lineno">113</tt> <a class="py-toggle" href="#" id="get_meta_controller_stimkey-toggle" onclick="return toggle('get_meta_controller_stimkey');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.SphereGratingServer-module.html#get_meta_controller_stimkey">get_meta_controller_stimkey</a><tt class="py-op">(</tt><tt class=" [...]
+</div><div id="get_meta_controller_stimkey-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="get_meta_controller_stimkey-expanded"><a name="L114"></a><tt class="py-lineno">114</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-string">"sphere_grating_server"</tt> </tt>
+</div><a name="L115"></a><tt class="py-lineno">115</tt>  <tt class="py-line"> </tt>
+<a name="L116"></a><tt class="py-lineno">116</tt>  <tt class="py-line"><tt class="py-comment"># Don't do anything unless this script is being run</tt> </tt>
+<a name="L117"></a><tt class="py-lineno">117</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-keyword">if</tt> <tt class="py-name">__name__</tt> <tt class="py-op">==</tt> <tt class="py-string">'__main__'</tt><tt class="py-op">:</tt> </tt>
+<a name="L118"></a><tt class="py-lineno">118</tt>  <tt class="py-line">     </tt>
+<a name="L119"></a><tt class="py-lineno">119</tt>  <tt class="py-line">    <tt class="py-name">pyro_server</tt> <tt class="py-op">=</tt> <tt id="link-59" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-59', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-60" class="py-name"><a title="VisionEgg.PyroHelpers" class="py-name" href="#" onclick="return doclink('link-60', 'PyroHelpers', 'link-14');">PyroHelpers</a></tt> [...]
+<a name="L120"></a><tt class="py-lineno">120</tt>  <tt class="py-line"> </tt>
+<a name="L121"></a><tt class="py-lineno">121</tt>  <tt class="py-line">    <tt class="py-name">screen</tt> <tt class="py-op">=</tt> <tt id="link-62" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-62', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-63" class="py-name"><a title="VisionEgg.Core" class="py-name" href="#" onclick="return doclink('link-63', 'Core', 'link-8');">Core</a></tt><tt class="py-op">.</tt><tt [...]
+<a name="L122"></a><tt class="py-lineno">122</tt>  <tt class="py-line"> </tt>
+<a name="L123"></a><tt class="py-lineno">123</tt>  <tt class="py-line">    <tt class="py-comment"># get Vision Egg stimulus ready to go</tt> </tt>
+<a name="L124"></a><tt class="py-lineno">124</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">stimuli</tt> <tt class="py-op">=</tt> <tt id="link-66" class="py-name" targets="Function VisionEgg.PyroApps.ColorCalServer.make_stimuli()=VisionEgg.PyroApps.ColorCalServer-module.html#make_stimuli,Function VisionEgg.PyroApps.DropinServer.make_stimuli()=VisionEgg.PyroApps.DropinServer-module.html#make_stimuli,Function VisionEgg.PyroApps.FlatGratingServer.make_stimuli( [...]
+VisionEgg.PyroApps.DropinServer.make_stimuli
+VisionEgg.PyroApps.FlatGratingServer.make_stimuli
+VisionEgg.PyroApps.GridServer.make_stimuli
+VisionEgg.PyroApps.MouseTargetServer.make_stimuli
+VisionEgg.PyroApps.SphereGratingServer.make_stimuli
+VisionEgg.PyroApps.SpinningDrumServer.make_stimuli
+VisionEgg.PyroApps.TargetServer.make_stimuli" class="py-name" href="#" onclick="return doclink('link-66', 'make_stimuli', 'link-66');">make_stimuli</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L125"></a><tt class="py-lineno">125</tt>  <tt class="py-line">    <tt class="py-name">stimulus</tt> <tt class="py-op">=</tt> <tt class="py-name">stimuli</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
+<a name="L126"></a><tt class="py-lineno">126</tt>  <tt class="py-line">    <tt class="py-name">mask</tt> <tt class="py-op">=</tt> <tt class="py-name">stimuli</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
+<a name="L127"></a><tt class="py-lineno">127</tt>  <tt class="py-line">     </tt>
+<a name="L128"></a><tt class="py-lineno">128</tt>  <tt class="py-line">    <tt class="py-name">temp</tt> <tt class="py-op">=</tt> <tt id="link-67" class="py-name"><a title="VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionParameters" class="py-name" href="#" onclick="return doclink('link-67', 'ScreenPositionParameters', 'link-22');">ScreenPositionParameters</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L129"></a><tt class="py-lineno">129</tt>  <tt class="py-line"> </tt>
+<a name="L130"></a><tt class="py-lineno">130</tt>  <tt class="py-line">    <tt id="link-68" class="py-name" targets="Variable VisionEgg.PyroApps.MouseTargetServer.left=VisionEgg.PyroApps.MouseTargetServer-module.html#left"><a title="VisionEgg.PyroApps.MouseTargetServer.left" class="py-name" href="#" onclick="return doclink('link-68', 'left', 'link-68');">left</a></tt> <tt class="py-op">=</tt> <tt class="py-name">temp</tt><tt class="py-op">.</tt><tt id="link-69" class="py-name"><a title=" [...]
+<a name="L131"></a><tt class="py-lineno">131</tt>  <tt class="py-line">    <tt id="link-70" class="py-name" targets="Variable VisionEgg.PyroApps.MouseTargetServer.right=VisionEgg.PyroApps.MouseTargetServer-module.html#right"><a title="VisionEgg.PyroApps.MouseTargetServer.right" class="py-name" href="#" onclick="return doclink('link-70', 'right', 'link-70');">right</a></tt> <tt class="py-op">=</tt> <tt class="py-name">temp</tt><tt class="py-op">.</tt><tt id="link-71" class="py-name"><a ti [...]
+<a name="L132"></a><tt class="py-lineno">132</tt>  <tt class="py-line">    <tt class="py-name">bottom</tt> <tt class="py-op">=</tt> <tt class="py-name">temp</tt><tt class="py-op">.</tt><tt class="py-name">bottom</tt> </tt>
+<a name="L133"></a><tt class="py-lineno">133</tt>  <tt class="py-line">    <tt class="py-name">top</tt> <tt class="py-op">=</tt> <tt class="py-name">temp</tt><tt class="py-op">.</tt><tt class="py-name">top</tt> </tt>
+<a name="L134"></a><tt class="py-lineno">134</tt>  <tt class="py-line">    <tt class="py-name">near</tt> <tt class="py-op">=</tt> <tt class="py-name">temp</tt><tt class="py-op">.</tt><tt class="py-name">near</tt> </tt>
+<a name="L135"></a><tt class="py-lineno">135</tt>  <tt class="py-line">    <tt class="py-name">far</tt> <tt class="py-op">=</tt> <tt class="py-name">temp</tt><tt class="py-op">.</tt><tt class="py-name">far</tt> </tt>
+<a name="L136"></a><tt class="py-lineno">136</tt>  <tt class="py-line">    <tt class="py-name">projection</tt> <tt class="py-op">=</tt> <tt id="link-72" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-72', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-73" class="py-name"><a title="VisionEgg.Core" class="py-name" href="#" onclick="return doclink('link-73', 'Core', 'link-8');">Core</a></tt><tt class="py-op">.</tt [...]
+<a name="L137"></a><tt class="py-lineno">137</tt>  <tt class="py-line">                                                      <tt id="link-76" class="py-name"><a title="VisionEgg.PyroApps.MouseTargetServer.right" class="py-name" href="#" onclick="return doclink('link-76', 'right', 'link-70');">right</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L138"></a><tt class="py-lineno">138</tt>  <tt class="py-line">                                                      <tt class="py-name">bottom</tt><tt class="py-op">,</tt> </tt>
+<a name="L139"></a><tt class="py-lineno">139</tt>  <tt class="py-line">                                                      <tt class="py-name">top</tt><tt class="py-op">,</tt> </tt>
+<a name="L140"></a><tt class="py-lineno">140</tt>  <tt class="py-line">                                                      <tt class="py-name">near</tt><tt class="py-op">,</tt> </tt>
+<a name="L141"></a><tt class="py-lineno">141</tt>  <tt class="py-line">                                                      <tt class="py-name">far</tt><tt class="py-op">)</tt> </tt>
+<a name="L142"></a><tt class="py-lineno">142</tt>  <tt class="py-line">    <tt class="py-name">viewport</tt> <tt class="py-op">=</tt> <tt id="link-77" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-77', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-78" class="py-name"><a title="VisionEgg.Core" class="py-name" href="#" onclick="return doclink('link-78', 'Core', 'link-8');">Core</a></tt><tt class="py-op">.</tt>< [...]
+<a name="L143"></a><tt class="py-lineno">143</tt>  <tt class="py-line">    <tt class="py-name">p</tt> <tt class="py-op">=</tt> <tt id="link-80" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-80', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-81" class="py-name"><a title="VisionEgg.FlowControl" class="py-name" href="#" onclick="return doclink('link-81', 'FlowControl', 'link-10');">FlowControl</a></tt><tt class= [...]
+<a name="L144"></a><tt class="py-lineno">144</tt>  <tt class="py-line"> </tt>
+<a name="L145"></a><tt class="py-lineno">145</tt>  <tt class="py-line">    <tt class="py-comment"># now hand over control of projection to ScreenPositionMetaController</tt> </tt>
+<a name="L146"></a><tt class="py-lineno">146</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">projection_controller</tt> <tt class="py-op">=</tt> <tt id="link-83" class="py-name"><a title="VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController" class="py-name" href="#" onclick="return doclink('link-83', 'ScreenPositionMetaController', 'link-18');">ScreenPositionMetaController</a></tt><tt class="py-op">(</tt><tt class="py-name">p</tt><tt class="p [...]
+<a name="L147"></a><tt class="py-lineno">147</tt>  <tt class="py-line">    <tt class="py-name">pyro_server</tt><tt class="py-op">.</tt><tt id="link-84" class="py-name" targets="Method VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.connect()=VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#connect,Method VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.connect()=VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html#connect,Method  [...]
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.connect
+VisionEgg.PyroHelpers.PyroServer.connect" class="py-name" href="#" onclick="return doclink('link-84', 'connect', 'link-84');">connect</a></tt><tt class="py-op">(</tt><tt class="py-name">projection_controller</tt><tt class="py-op">,</tt><tt class="py-string">"projection_controller"</tt><tt class="py-op">)</tt> </tt>
+<a name="L148"></a><tt class="py-lineno">148</tt>  <tt class="py-line"> </tt>
+<a name="L149"></a><tt class="py-lineno">149</tt>  <tt class="py-line">    <tt class="py-comment"># now hand over control of grating and mask to SphereGratingExperimentMetaController</tt> </tt>
+<a name="L150"></a><tt class="py-lineno">150</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">meta_controller</tt> <tt class="py-op">=</tt> <tt id="link-85" class="py-name"><a title="VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController" class="py-name" href="#" onclick="return doclink('link-85', 'SphereGratingExperimentMetaController', 'link-52');">SphereGratingExperimentMetaController</a></tt><tt class="py-op">(</tt><tt class="py-name [...]
+<a name="L151"></a><tt class="py-lineno">151</tt>  <tt class="py-line">    <tt class="py-name">pyro_server</tt><tt class="py-op">.</tt><tt id="link-86" class="py-name"><a title="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.connect
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.connect
+VisionEgg.PyroHelpers.PyroServer.connect" class="py-name" href="#" onclick="return doclink('link-86', 'connect', 'link-84');">connect</a></tt><tt class="py-op">(</tt><tt class="py-name">meta_controller</tt><tt class="py-op">,</tt><tt id="link-87" class="py-name" targets="Function VisionEgg.PyroApps.ColorCalServer.get_meta_controller_stimkey()=VisionEgg.PyroApps.ColorCalServer-module.html#get_meta_controller_stimkey,Function VisionEgg.PyroApps.DropinServer.get_meta_controller_stimkey()=Vi [...]
+VisionEgg.PyroApps.DropinServer.get_meta_controller_stimkey
+VisionEgg.PyroApps.FlatGratingServer.get_meta_controller_stimkey
+VisionEgg.PyroApps.GridServer.get_meta_controller_stimkey
+VisionEgg.PyroApps.MouseTargetServer.get_meta_controller_stimkey
+VisionEgg.PyroApps.SphereGratingServer.get_meta_controller_stimkey
+VisionEgg.PyroApps.SpinningDrumServer.get_meta_controller_stimkey
+VisionEgg.PyroApps.TargetServer.get_meta_controller_stimkey" class="py-name" href="#" onclick="return doclink('link-87', 'get_meta_controller_stimkey', 'link-87');">get_meta_controller_stimkey</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L152"></a><tt class="py-lineno">152</tt>  <tt class="py-line"> </tt>
+<a name="L153"></a><tt class="py-lineno">153</tt>  <tt class="py-line">    <tt class="py-comment"># get listener controller and register it</tt> </tt>
+<a name="L154"></a><tt class="py-lineno">154</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">p</tt><tt class="py-op">.</tt><tt id="link-88" class="py-name"><a title="VisionEgg.FlowControl.Presentation.add_controller
+VisionEgg.PyroHelpers.PyroLocalDictController.add_controller" class="py-name" href="#" onclick="return doclink('link-88', 'add_controller', 'link-41');">add_controller</a></tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-name">pyro_server</tt><tt class="py-op">.</tt><tt id="link-89" class="py-name" targets="Method VisionEgg.PyroHelpers.PyroServer.create_listener_controller()=VisionEgg.Pyro [...]
+<a name="L155"></a><tt class="py-lineno">155</tt>  <tt class="py-line"> </tt>
+<a name="L156"></a><tt class="py-lineno">156</tt>  <tt class="py-line">    <tt class="py-comment"># enter endless loop</tt> </tt>
+<a name="L157"></a><tt class="py-lineno">157</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">p</tt><tt class="py-op">.</tt><tt id="link-90" class="py-name" targets="Method VisionEgg.FlowControl.Presentation.run_forever()=VisionEgg.FlowControl.Presentation-class.html#run_forever"><a title="VisionEgg.FlowControl.Presentation.run_forever" class="py-name" href="#" onclick="return doclink('link-90', 'run_forever', 'link-90');">run_forever</a></tt><tt class="py-op [...]
+<a name="L158"></a><tt class="py-lineno">158</tt>  <tt class="py-line"> </tt><script type="text/javascript">
+<!--
+expandto(location.href);
+// -->
+</script>
+</pre>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:50 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController-class.html b/doc/reference/html/VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController-class.html
new file mode 100644
index 0000000..d87fead
--- /dev/null
+++ b/doc/reference/html/VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController-class.html
@@ -0,0 +1,335 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.PyroApps-module.html">Package PyroApps</a> ::
+        <a href="VisionEgg.PyroApps.SphereGratingServer-module.html">Module SphereGratingServer</a> ::
+        Class SphereGratingExperimentMetaController
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class SphereGratingExperimentMetaController</h1><span class="codelink"><a href="VisionEgg.PyroApps.SphereGratingServer-pysrc.html#SphereGratingExperimentMetaController">source code</a></span><br /><br />
+<pre class="base-tree">
+Pyro.core.ObjBase --+
+                    |
+                   <strong class="uidshort">SphereGratingExperimentMetaController</strong>
+</pre>
+
+<hr />
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">screen</span>,
+        <span class="summary-sig-arg">presentation</span>,
+        <span class="summary-sig-arg">stimuli</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.SphereGratingServer-pysrc.html#SphereGratingExperimentMetaController.__init__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__del__"></a><span class="summary-sig-name">__del__</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.SphereGratingServer-pysrc.html#SphereGratingExperimentMetaController.__del__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="on_function_during_go"></a><span class="summary-sig-name">on_function_during_go</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">t</span>)</span><br />
+      Compute when the grating is on</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.SphereGratingServer-pysrc.html#SphereGratingExperimentMetaController.on_function_during_go">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="on_function_between_go"></a><span class="summary-sig-name">on_function_between_go</span>(<span class="summary-sig-arg">self</span>)</span><br />
+      Compute when the grating is off</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.SphereGratingServer-pysrc.html#SphereGratingExperimentMetaController.on_function_between_go">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="get_parameters"></a><span class="summary-sig-name">get_parameters</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.SphereGratingServer-pysrc.html#SphereGratingExperimentMetaController.get_parameters">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="set_parameters"></a><span class="summary-sig-name">set_parameters</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">new_parameters</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.SphereGratingServer-pysrc.html#SphereGratingExperimentMetaController.set_parameters">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="update"></a><span class="summary-sig-name">update</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.SphereGratingServer-pysrc.html#SphereGratingExperimentMetaController.update">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="go"></a><span class="summary-sig-name">go</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.SphereGratingServer-pysrc.html#SphereGratingExperimentMetaController.go">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="quit_server"></a><span class="summary-sig-name">quit_server</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.SphereGratingServer-pysrc.html#SphereGratingExperimentMetaController.quit_server">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>Pyro.core.ObjBase</code></b>:
+      <code>GUID</code>,
+      <code>Pyro_dyncall</code>,
+      <code>delegateTo</code>,
+      <code>getAttrProxy</code>,
+      <code>getDaemon</code>,
+      <code>getLocalStorage</code>,
+      <code>getProxy</code>,
+      <code>remote_retrieve_code</code>,
+      <code>remote_supply_code</code>,
+      <code>setCodeValidator</code>,
+      <code>setGUID</code>,
+      <code>setPyroDaemon</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Method Details</span></td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">screen</span>,
+        <span class="sig-arg">presentation</span>,
+        <span class="sig-arg">stimuli</span>)</span>
+    <br /><em class="fname">(Constructor)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.PyroApps.SphereGratingServer-pysrc.html#SphereGratingExperimentMetaController.__init__">source code</a></span> 
+    </td>
+  </table>
+  
+  
+  <dl class="fields">
+    <dt>Overrides:
+      Pyro.core.ObjBase.__init__
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:47 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.PyroApps.SpinningDrumGUI-module.html b/doc/reference/html/VisionEgg.PyroApps.SpinningDrumGUI-module.html
new file mode 100644
index 0000000..5246219
--- /dev/null
+++ b/doc/reference/html/VisionEgg.PyroApps.SpinningDrumGUI-module.html
@@ -0,0 +1,198 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.PyroApps.SpinningDrumGUI</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.PyroApps-module.html">Package PyroApps</a> ::
+        Module SpinningDrumGUI
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.PyroApps.SpinningDrumGUI-module.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== MODULE DESCRIPTION ==================== -->
+<h1 class="epydoc">Module SpinningDrumGUI</h1><span class="codelink"><a href="VisionEgg.PyroApps.SpinningDrumGUI-pysrc.html">source code</a></span><br /><br />
+<!-- ==================== CLASSES ==================== -->
+<a name="section-Classes"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Classes</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumMetaParameters-class.html" class="summary-name">SpinningDrumMetaParameters</a>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame-class.html" class="summary-name">SpinningDrumControlFrame</a>
+    </td>
+  </tr>
+</table>
+<!-- ==================== FUNCTIONS ==================== -->
+<a name="section-Functions"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Functions</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="get_control_list"></a><span class="summary-sig-name">get_control_list</span>()</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.SpinningDrumGUI-pysrc.html#get_control_list">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+</table>
+<!-- ==================== VARIABLES ==================== -->
+<a name="section-Variables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Variables</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="__version__"></a><span class="summary-name">__version__</span> = <code title="'1.1.dev'">'1.1.dev'</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="__cvs__"></a><span class="summary-name">__cvs__</span> = <code title="string.split('$Revision$') [1]">string.split('$Revision$') [1]</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="__date__"></a><span class="summary-name">__date__</span> = <code title="string.join(string.split('$Date$') [1: 3], ' ')">string.join(string.split('$Date$') [1: 3], ' ')</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="__author__"></a><span class="summary-name">__author__</span> = <code title="'Andrew Straw <astraw at users.sourceforge.net>'">'Andrew Straw <astraw at users.sourceforge.net>'</code>
+    </td>
+  </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.PyroApps.SpinningDrumGUI-pysrc.html b/doc/reference/html/VisionEgg.PyroApps.SpinningDrumGUI-pysrc.html
new file mode 100644
index 0000000..b172475
--- /dev/null
+++ b/doc/reference/html/VisionEgg.PyroApps.SpinningDrumGUI-pysrc.html
@@ -0,0 +1,467 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.PyroApps.SpinningDrumGUI</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.PyroApps-module.html">Package PyroApps</a> ::
+        Module SpinningDrumGUI
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.PyroApps.SpinningDrumGUI-pysrc.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<h1 class="epydoc">Source Code for <a href="VisionEgg.PyroApps.SpinningDrumGUI-module.html">Module VisionEgg.PyroApps.SpinningDrumGUI</a></h1>
+<pre class="py-src">
+<a name="L1"></a><tt class="py-lineno">  1</tt>  <tt class="py-line"><tt class="py-comment">#!/usr/bin/env python</tt> </tt>
+<a name="L2"></a><tt class="py-lineno">  2</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L3"></a><tt class="py-lineno">  3</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># The Vision Egg: SpinningDrumGUI</tt> </tt>
+<a name="L4"></a><tt class="py-lineno">  4</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L5"></a><tt class="py-lineno">  5</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Copyright (C) 2001-2003 Andrew Straw.</tt> </tt>
+<a name="L6"></a><tt class="py-lineno">  6</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Author: Andrew Straw <astraw at users.sourceforge.net></tt> </tt>
+<a name="L7"></a><tt class="py-lineno">  7</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># URL: <http://www.visionegg.org/></tt> </tt>
+<a name="L8"></a><tt class="py-lineno">  8</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L9"></a><tt class="py-lineno">  9</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Distributed under the terms of the GNU Lesser General Public License</tt> </tt>
+<a name="L10"></a><tt class="py-lineno"> 10</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># (LGPL). See LICENSE.TXT that came with this file.</tt> </tt>
+<a name="L11"></a><tt class="py-lineno"> 11</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L12"></a><tt class="py-lineno"> 12</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># $Id$</tt> </tt>
+<a name="L13"></a><tt class="py-lineno"> 13</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L14"></a><tt class="py-lineno"> 14</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-0" class="py-name" targets="Package VisionEgg=VisionEgg-module.html"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-0', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">,</tt> <tt class="py-name">string</tt> </tt>
+<a name="L15"></a><tt class="py-lineno"> 15</tt>  <tt class="py-line"><tt id="link-1" class="py-name" targets="Variable VisionEgg.DaqKeyboard.__version__=VisionEgg.DaqKeyboard-module.html#__version__,Variable VisionEgg.DaqLPT.__version__=VisionEgg.DaqLPT-module.html#__version__,Variable VisionEgg.GL.__version__=VisionEgg.GL-module.html#__version__,Variable VisionEgg.PyroApps.EPhysGUI.__version__=VisionEgg.PyroApps.EPhysGUI-module.html#__version__,Variable VisionEgg.PyroApps.EPhysGUIUtils [...]
+VisionEgg.DaqLPT.__version__
+VisionEgg.GL.__version__
+VisionEgg.PyroApps.EPhysGUI.__version__
+VisionEgg.PyroApps.EPhysGUIUtils.__version__
+VisionEgg.PyroApps.EPhysServer.__version__
+VisionEgg.PyroApps.GridGUI.__version__
+VisionEgg.PyroApps.GridServer.__version__
+VisionEgg.PyroApps.ScreenPositionGUI.__version__
+VisionEgg.PyroApps.ScreenPositionServer.__version__
+VisionEgg.PyroApps.SpinningDrumGUI.__version__
+VisionEgg.PyroApps.SpinningDrumServer.__version__
+VisionEgg.PyroHelpers.__version__
+VisionEgg.QuickTime.__version__
+VisionEgg.ResponseControl.__version__
+VisionEgg.SphereMap.__version__
+VisionEgg.TCPController.__version__" class="py-name" href="#" onclick="return doclink('link-1', '__version__', 'link-1');">__version__</a></tt> <tt class="py-op">=</tt> <tt id="link-2" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-2', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-3" class="py-name" targets="Variable VisionEgg.release_name=VisionEgg-module.html#release_name"><a title="VisionEgg.release_name" c [...]
+<a name="L16"></a><tt class="py-lineno"> 16</tt>  <tt class="py-line"><tt id="link-4" class="py-name" targets="Variable VisionEgg.PyroApps.ColorCalGUI.__cvs__=VisionEgg.PyroApps.ColorCalGUI-module.html#__cvs__,Variable VisionEgg.PyroApps.ColorCalServer.__cvs__=VisionEgg.PyroApps.ColorCalServer-module.html#__cvs__,Variable VisionEgg.PyroApps.EPhysGUI.__cvs__=VisionEgg.PyroApps.EPhysGUI-module.html#__cvs__,Variable VisionEgg.PyroApps.EPhysGUIUtils.__cvs__=VisionEgg.PyroApps.EPhysGUIUtils-m [...]
+VisionEgg.PyroApps.ColorCalServer.__cvs__
+VisionEgg.PyroApps.EPhysGUI.__cvs__
+VisionEgg.PyroApps.EPhysGUIUtils.__cvs__
+VisionEgg.PyroApps.EPhysServer.__cvs__
+VisionEgg.PyroApps.FlatGratingGUI.__cvs__
+VisionEgg.PyroApps.FlatGratingServer.__cvs__
+VisionEgg.PyroApps.GridGUI.__cvs__
+VisionEgg.PyroApps.GridServer.__cvs__
+VisionEgg.PyroApps.MouseTargetGUI.__cvs__
+VisionEgg.PyroApps.MouseTargetServer.__cvs__
+VisionEgg.PyroApps.ScreenPositionGUI.__cvs__
+VisionEgg.PyroApps.ScreenPositionServer.__cvs__
+VisionEgg.PyroApps.SphereGratingGUI.__cvs__
+VisionEgg.PyroApps.SphereGratingServer.__cvs__
+VisionEgg.PyroApps.SpinningDrumGUI.__cvs__
+VisionEgg.PyroApps.SpinningDrumServer.__cvs__
+VisionEgg.PyroApps.TargetGUI.__cvs__
+VisionEgg.PyroApps.TargetServer.__cvs__
+VisionEgg.PyroClient.__cvs__
+VisionEgg.PyroHelpers.__cvs__
+VisionEgg.TCPController.__cvs__" class="py-name" href="#" onclick="return doclink('link-4', '__cvs__', 'link-4');">__cvs__</a></tt> <tt class="py-op">=</tt> <tt class="py-name">string</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'$Revision$'</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
+<a name="L17"></a><tt class="py-lineno"> 17</tt>  <tt class="py-line"><tt id="link-5" class="py-name" targets="Variable VisionEgg.PyroApps.ColorCalGUI.__date__=VisionEgg.PyroApps.ColorCalGUI-module.html#__date__,Variable VisionEgg.PyroApps.ColorCalServer.__date__=VisionEgg.PyroApps.ColorCalServer-module.html#__date__,Variable VisionEgg.PyroApps.EPhysGUI.__date__=VisionEgg.PyroApps.EPhysGUI-module.html#__date__,Variable VisionEgg.PyroApps.EPhysGUIUtils.__date__=VisionEgg.PyroApps.EPhysGUI [...]
+VisionEgg.PyroApps.ColorCalServer.__date__
+VisionEgg.PyroApps.EPhysGUI.__date__
+VisionEgg.PyroApps.EPhysGUIUtils.__date__
+VisionEgg.PyroApps.EPhysServer.__date__
+VisionEgg.PyroApps.FlatGratingGUI.__date__
+VisionEgg.PyroApps.FlatGratingServer.__date__
+VisionEgg.PyroApps.GridGUI.__date__
+VisionEgg.PyroApps.GridServer.__date__
+VisionEgg.PyroApps.MouseTargetGUI.__date__
+VisionEgg.PyroApps.MouseTargetServer.__date__
+VisionEgg.PyroApps.ScreenPositionGUI.__date__
+VisionEgg.PyroApps.ScreenPositionServer.__date__
+VisionEgg.PyroApps.SphereGratingGUI.__date__
+VisionEgg.PyroApps.SphereGratingServer.__date__
+VisionEgg.PyroApps.SpinningDrumGUI.__date__
+VisionEgg.PyroApps.SpinningDrumServer.__date__
+VisionEgg.PyroApps.TargetGUI.__date__
+VisionEgg.PyroApps.TargetServer.__date__
+VisionEgg.PyroClient.__date__
+VisionEgg.PyroHelpers.__date__
+VisionEgg.TCPController.__date__" class="py-name" href="#" onclick="return doclink('link-5', '__date__', 'link-5');">__date__</a></tt> <tt class="py-op">=</tt> <tt class="py-name">string</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">string</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'$Date$'</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt  [...]
+<a name="L18"></a><tt class="py-lineno"> 18</tt>  <tt class="py-line"><tt id="link-6" class="py-name" targets="Variable VisionEgg.PyroApps.EPhysGUI.__author__=VisionEgg.PyroApps.EPhysGUI-module.html#__author__,Variable VisionEgg.PyroApps.EPhysGUIUtils.__author__=VisionEgg.PyroApps.EPhysGUIUtils-module.html#__author__,Variable VisionEgg.PyroApps.EPhysServer.__author__=VisionEgg.PyroApps.EPhysServer-module.html#__author__,Variable VisionEgg.PyroApps.GridGUI.__author__=VisionEgg.PyroApps.Gr [...]
+VisionEgg.PyroApps.EPhysGUIUtils.__author__
+VisionEgg.PyroApps.EPhysServer.__author__
+VisionEgg.PyroApps.GridGUI.__author__
+VisionEgg.PyroApps.GridServer.__author__
+VisionEgg.PyroApps.SpinningDrumGUI.__author__
+VisionEgg.PyroApps.SpinningDrumServer.__author__" class="py-name" href="#" onclick="return doclink('link-6', '__author__', 'link-6');">__author__</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'Andrew Straw <astraw at users.sourceforge.net>'</tt> </tt>
+<a name="L19"></a><tt class="py-lineno"> 19</tt>  <tt class="py-line"> </tt>
+<a name="L20"></a><tt class="py-lineno"> 20</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">sys</tt><tt class="py-op">,</tt> <tt class="py-name">os</tt> </tt>
+<a name="L21"></a><tt class="py-lineno"> 21</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-7" class="py-name" targets="Variable VisionEgg.GUI.Tkinter=VisionEgg.GUI-module.html#Tkinter"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-7', 'Tkinter', 'link-7');">Tkinter</a></tt> </tt>
+<a name="L22"></a><tt class="py-lineno"> 22</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-8" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-8', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-9" class="py-name" targets="Package VisionEgg.PyroApps=VisionEgg.PyroApps-module.html"><a title="VisionEgg.PyroApps" class="py-name" href="#" onclick="return doclink('link-9', 'PyroApps', 'link-9 [...]
+<a name="L23"></a><tt class="py-lineno"> 23</tt>  <tt class="py-line"> </tt>
+<a name="get_control_list"></a><div id="get_control_list-def"><a name="L24"></a><tt class="py-lineno"> 24</tt> <a class="py-toggle" href="#" id="get_control_list-toggle" onclick="return toggle('get_control_list');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.SpinningDrumGUI-module.html#get_control_list">get_control_list</a><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="get_control_list-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="get_control_list-expanded"><a name="L25"></a><tt class="py-lineno"> 25</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-op">[</tt><tt class="py-op">(</tt><tt class="py-string">"spinning_drum_server"</tt><tt class="py-op">,</tt><tt id="link-11" class="py-name" targets="Class VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame=VisionEgg.PyroApps.Spin [...]
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.title
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.title
+VisionEgg.PyroApps.GridGUI.GridControlFrame.title
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.title
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.title
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.title
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.title" class="py-name" href="#" onclick="return doclink('link-13', 'title', 'link-13');">title</a></tt><tt class="py-op">)</tt><tt class="py-op">]</tt> </tt>
+</div><a name="L26"></a><tt class="py-lineno"> 26</tt>  <tt class="py-line"> </tt>
+<a name="SpinningDrumMetaParameters"></a><div id="SpinningDrumMetaParameters-def"><a name="L27"></a><tt class="py-lineno"> 27</tt> <a class="py-toggle" href="#" id="SpinningDrumMetaParameters-toggle" onclick="return toggle('SpinningDrumMetaParameters');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumMetaParameters-class.html">SpinningDrumMetaParameters</a><tt class="py-op">:</tt> </tt>
+</div><div id="SpinningDrumMetaParameters-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="SpinningDrumMetaParameters-expanded"><a name="SpinningDrumMetaParameters.__init__"></a><div id="SpinningDrumMetaParameters.__init__-def"><a name="L28"></a><tt class="py-lineno"> 28</tt> <a class="py-toggle" href="#" id="SpinningDrumMetaParameters.__init__-toggle" onclick="return toggle('SpinningDrumMetaParameters.__init__');">-</a><tt class="py-line">    <tt class="py-keyword [...]
+</div><div id="SpinningDrumMetaParameters.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SpinningDrumMetaParameters.__init__-expanded"><a name="L29"></a><tt class="py-lineno"> 29</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">contrast</tt> <tt class="py-op">=</tt> <tt class="py-number">1.0</tt> </tt>
+<a name="L30"></a><tt class="py-lineno"> 30</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">velocity_dps</tt> <tt class="py-op">=</tt> <tt class="py-number">100.0</tt> </tt>
+<a name="L31"></a><tt class="py-lineno"> 31</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">startpos_deg</tt> <tt class="py-op">=</tt> <tt class="py-number">0.0</tt> </tt>
+<a name="L32"></a><tt class="py-lineno"> 32</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">pre_stim_sec</tt> <tt class="py-op">=</tt> <tt class="py-number">1.0</tt> </tt>
+<a name="L33"></a><tt class="py-lineno"> 33</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stim_sec</tt> <tt class="py-op">=</tt> <tt class="py-number">5.0</tt> </tt>
+<a name="L34"></a><tt class="py-lineno"> 34</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">post_stim_sec</tt> <tt class="py-op">=</tt> <tt class="py-number">1.0</tt> </tt>
+</div></div><a name="L35"></a><tt class="py-lineno"> 35</tt>  <tt class="py-line">         </tt>
+<a name="SpinningDrumControlFrame"></a><div id="SpinningDrumControlFrame-def"><a name="L36"></a><tt class="py-lineno"> 36</tt> <a class="py-toggle" href="#" id="SpinningDrumControlFrame-toggle" onclick="return toggle('SpinningDrumControlFrame');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame-class.html">SpinningDrumControlFrame</a><tt class="py-op">(</tt><tt class="py-base-class">client_ [...]
+</div><div id="SpinningDrumControlFrame-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="SpinningDrumControlFrame-expanded"><a name="L37"></a><tt class="py-lineno"> 37</tt>  <tt class="py-line">    <tt id="link-14" class="py-name"><a title="VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.title
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.title
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.title
+VisionEgg.PyroApps.GridGUI.GridControlFrame.title
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.title
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.title
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.title
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.title" class="py-name" href="#" onclick="return doclink('link-14', 'title', 'link-13');">title</a></tt> <tt class="py-op">=</tt> <tt class="py-string">"Spinning Drum Experiment"</tt> </tt>
+<a name="SpinningDrumControlFrame.__init__"></a><div id="SpinningDrumControlFrame.__init__-def"><a name="L38"></a><tt class="py-lineno"> 38</tt> <a class="py-toggle" href="#" id="SpinningDrumControlFrame.__init__-toggle" onclick="return toggle('SpinningDrumControlFrame.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame-class.html#__init__">__init__</a><tt class="py-op">(</tt><t [...]
+</div><div id="SpinningDrumControlFrame.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SpinningDrumControlFrame.__init__-expanded"><a name="L39"></a><tt class="py-lineno"> 39</tt>  <tt class="py-line">        <tt class="py-name">client_utils</tt><tt class="py-op">.</tt><tt id="link-15" class="py-name" targets="Class VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame=VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html"><a title="Vision [...]
+VisionEgg.Configuration.Config.__init__
+VisionEgg.Core.FixationSpot.__init__
+VisionEgg.Core.FrameTimer.__init__
+VisionEgg.Core.ModelView.__init__
+VisionEgg.Core.OrthographicProjection.__init__
+VisionEgg.Core.OrthographicProjectionNoZClip.__init__
+VisionEgg.Core.PerspectiveProjection.__init__
+VisionEgg.Core.Projection.__init__
+VisionEgg.Core.ProjectionBaseClass.__init__
+VisionEgg.Core.Screen.__init__
+VisionEgg.Core.SimplePerspectiveProjection.__init__
+VisionEgg.Core.Stimulus.__init__
+VisionEgg.Core.Viewport.__init__
+VisionEgg.Daq.Channel.__init__
+VisionEgg.Daq.DaqMode.__init__
+VisionEgg.Daq.Device.__init__
+VisionEgg.Daq.Functionality.__init__
+VisionEgg.Daq.SignalType.__init__
+VisionEgg.DaqKeyboard.KeyboardTriggerInController.__init__
+VisionEgg.DaqLPT.LPTChannel.__init__
+VisionEgg.DaqLPT.LPTDevice.__init__
+VisionEgg.DaqLPT.LPTTriggerInController.__init__
+VisionEgg.DaqLPT.LPTTriggerOutController.__init__
+VisionEgg.Deprecated.Message.__init__
+VisionEgg.Dots.DotArea2D.__init__
+VisionEgg.FlowControl.ConstantController.__init__
+VisionEgg.FlowControl.Controller.__init__
+VisionEgg.FlowControl.EncapsulatedController.__init__
+VisionEgg.FlowControl.EvalStringController.__init__
+VisionEgg.FlowControl.ExecStringController.__init__
+VisionEgg.FlowControl.FunctionController.__init__
+VisionEgg.FlowControl.Presentation.__init__
+VisionEgg.GLTrace.Wrapper.__init__
+VisionEgg.GUI.AppWindow.__init__
+VisionEgg.GUI.GetKeypressDialog.__init__
+VisionEgg.GUI.GraphicsConfigurationWindow.__init__
+VisionEgg.GUI.InfoFrame.__init__
+VisionEgg.GUI.ProgressBar.__init__
+VisionEgg.GUI.ToplevelDialog.__init__
+VisionEgg.Gratings.SinGrating2D.__init__
+VisionEgg.Gratings.SinGrating3D.__init__
+VisionEgg.MoreStimuli.Arrow.__init__
+VisionEgg.MoreStimuli.FilledCircle.__init__
+VisionEgg.MoreStimuli.Rectangle3D.__init__
+VisionEgg.MoreStimuli.Target2D.__init__
+VisionEgg.ParameterTypes.AnyOf.__init__
+VisionEgg.ParameterTypes.Instance.__init__
+VisionEgg.ParameterTypes.Sequence.__init__
+VisionEgg.ParameterTypes.SubClass.__init__
+VisionEgg.PyroApps.AST_ext.AST_Visitor.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalMetaParameters.__init__
+VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.__init__
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.__init__
+VisionEgg.PyroApps.DropinGUI.DropinMetaParameters.__init__
+VisionEgg.PyroApps.DropinServer.DropinMetaController.__init__
+VisionEgg.PyroApps.EPhysGUI.AppWindow.__init__
+VisionEgg.PyroApps.EPhysGUI.BarButton.__init__
+VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase.__init__
+VisionEgg.PyroApps.EPhysGUI.GammaFrame.__init__
+VisionEgg.PyroApps.EPhysGUI.ImageSequenceLauncher.__init__
+VisionEgg.PyroApps.EPhysGUI.Loop.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopContainedObject.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopParamDialog.__init__
+VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.__init__
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.__init__
+VisionEgg.PyroApps.EPhysServer.EPhysServer.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingMetaParameters.__init__
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.GridGUI.GridControlFrame.__init__
+VisionEgg.PyroApps.GridGUI.GridMetaParameters.__init__
+VisionEgg.PyroApps.GridServer.GridMetaController.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetMetaParameters.__init__
+VisionEgg.PyroApps.MouseTargetServer.MousePositionController.__init__
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetOrientationController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetPositionController.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.CallbackEntry.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionParameters.__init__
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingMetaParameters.__init__
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumMetaParameters.__init__
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.__init__
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.__init__
+VisionEgg.PyroApps.TargetGUI.TargetMetaParameters.__init__
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.__init__
+VisionEgg.PyroClient.PyroClient.__init__
+VisionEgg.PyroHelpers.PyroConstantController.__init__
+VisionEgg.PyroHelpers.PyroEncapsulatedController.__init__
+VisionEgg.PyroHelpers.PyroEvalStringController.__init__
+VisionEgg.PyroHelpers.PyroExecStringController.__init__
+VisionEgg.PyroHelpers.PyroListenController.__init__
+VisionEgg.PyroHelpers.PyroLocalDictController.__init__
+VisionEgg.PyroHelpers.PyroServer.__init__
+VisionEgg.QuickTime.MovieTexture.__init__
+VisionEgg.ResponseControl.KeyboardResponseController.__init__
+VisionEgg.ResponseControl.ResponseController.__init__
+VisionEgg.SphereMap.AzElGrid.__init__
+VisionEgg.SphereMap.SphereGrating.__init__
+VisionEgg.SphereMap.SphereMap.__init__
+VisionEgg.SphereMap.SphereWindow.__init__
+VisionEgg.TCPController.SocketListenController.__init__
+VisionEgg.TCPController.TCPController.__init__
+VisionEgg.TCPController.TCPServer.__init__
+VisionEgg.Text.BitmapText.__init__
+VisionEgg.Text.GlutTextBase.__init__
+VisionEgg.Text.StrokeText.__init__
+VisionEgg.Text.Text.__init__
+VisionEgg.Textures.FixationCross.__init__
+VisionEgg.Textures.Mask2D.__init__
+VisionEgg.Textures.SpinningDrum.__init__
+VisionEgg.Textures.Texture.__init__
+VisionEgg.Textures.TextureFromFile.__init__
+VisionEgg.Textures.TextureObject.__init__
+VisionEgg.Textures.TextureStimulusBaseClass.__init__
+VisionEgg.ThreeDeeMath.TransformMatrix.__init__
+VisionEgg.WrappedText.WrappedText.__init__
+VisionEgg.qtmovie.Movie.__init__
+VisionEgg.qtmovie.Rect.__init__" class="py-name" href="#" onclick="return doclink('link-16', '__init__', 'link-16');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> </tt>
+<a name="L40"></a><tt class="py-lineno"> 40</tt>  <tt class="py-line">                                                   <tt class="py-name">master</tt><tt class="py-op">,</tt> </tt>
+<a name="L41"></a><tt class="py-lineno"> 41</tt>  <tt class="py-line">                                                   <tt class="py-name">suppress_go_buttons</tt><tt class="py-op">,</tt> </tt>
+<a name="L42"></a><tt class="py-lineno"> 42</tt>  <tt class="py-line">                                                   <tt id="link-17" class="py-name"><a title="VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame" class="py-name" href="#" onclick="return doclink('link-17', 'SpinningDrumControlFrame', 'link-11');">SpinningDrumControlFrame</a></tt><tt class="py-op">.</tt><tt id="link-18" class="py-name"><a title="VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.title
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.title
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.title
+VisionEgg.PyroApps.GridGUI.GridControlFrame.title
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.title
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.title
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.title
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.title" class="py-name" href="#" onclick="return doclink('link-18', 'title', 'link-13');">title</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L43"></a><tt class="py-lineno"> 43</tt>  <tt class="py-line">                                                   <tt id="link-19" class="py-name" targets="Class VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumMetaParameters=VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumMetaParameters-class.html"><a title="VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumMetaParameters" class="py-name" href="#" onclick="return doclink('link-19', 'SpinningDrumMetaParameters', 'link-19');">SpinningDru [...]
+<a name="L44"></a><tt class="py-lineno"> 44</tt>  <tt class="py-line">                                                   <tt class="py-op">**</tt><tt class="py-name">kw</tt><tt class="py-op">)</tt> </tt>
+<a name="L45"></a><tt class="py-lineno"> 45</tt>  <tt class="py-line"> </tt>
+<a name="L46"></a><tt class="py-lineno"> 46</tt>  <tt class="py-line">        <tt class="py-name">param_frame</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">param_frame</tt> <tt class="py-comment"># shorthand for self.param_frame created in base class</tt> </tt>
+<a name="L47"></a><tt class="py-lineno"> 47</tt>  <tt class="py-line"> </tt>
+<a name="L48"></a><tt class="py-lineno"> 48</tt>  <tt class="py-line">        <tt class="py-comment"># Allow columns to expand</tt> </tt>
+<a name="L49"></a><tt class="py-lineno"> 49</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">param_frame</tt><tt class="py-op">.</tt><tt class="py-name">columnconfigure</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">,</tt><tt class="py-name">weight</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="L50"></a><tt class="py-lineno"> 50</tt>  <tt class="py-line">        <tt class="py-name">param_frame</tt><tt class="py-op">.</tt><tt class="py-name">columnconfigure</tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">,</tt><tt class="py-name">weight</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="L51"></a><tt class="py-lineno"> 51</tt>  <tt class="py-line"> </tt>
+<a name="L52"></a><tt class="py-lineno"> 52</tt>  <tt class="py-line">        <tt class="py-name">pf_row</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L53"></a><tt class="py-lineno"> 53</tt>  <tt class="py-line">        <tt id="link-20" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-20', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">param_frame</tt><tt class="py-op">,</tt><tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Contrast:"</tt><tt class="py-op">)< [...]
+<a name="L54"></a><tt class="py-lineno"> 54</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">contrast_tk_var</tt> <tt class="py-op">=</tt> <tt id="link-21" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-21', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">DoubleVar</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L55"></a><tt class="py-lineno"> 55</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">contrast_tk_var</tt><tt class="py-op">.</tt><tt id="link-22" class="py-name" targets="Method VisionEgg.ClassWithParameters.set()=VisionEgg.ClassWithParameters-class.html#set"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-22', 'set', 'link-22');">set</a></tt><tt class="py-op">(</tt><tt c [...]
+<a name="L56"></a><tt class="py-lineno"> 56</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-23" class="py-name" targets="Method VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.make_callback_entry()=VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#make_callback_entry"><a title="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.make_callback_entry" class="py-name" href="#" onclick="return doclink('link-23', 'make [...]
+<a name="L57"></a><tt class="py-lineno"> 57</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">loopable_variables</tt><tt class="py-op">[</tt><tt class="py-string">"Contrast"</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-string">"contrast"</tt><tt class="py-op">,</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">contrast_tk_var</tt><tt class="py-op">)</tt> </tt>
+<a name="L58"></a><tt class="py-lineno"> 58</tt>  <tt class="py-line"> </tt>
+<a name="L59"></a><tt class="py-lineno"> 59</tt>  <tt class="py-line">        <tt class="py-name">pf_row</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L60"></a><tt class="py-lineno"> 60</tt>  <tt class="py-line">        <tt id="link-24" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-24', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">param_frame</tt><tt class="py-op">,</tt><tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Velocity (dps):"</tt><tt class="py- [...]
+<a name="L61"></a><tt class="py-lineno"> 61</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">velocity_tk_var</tt> <tt class="py-op">=</tt> <tt id="link-25" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-25', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">DoubleVar</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L62"></a><tt class="py-lineno"> 62</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">velocity_tk_var</tt><tt class="py-op">.</tt><tt id="link-26" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-26', 'set', 'link-22');">set</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py- [...]
+<a name="L63"></a><tt class="py-lineno"> 63</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-27" class="py-name"><a title="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.make_callback_entry" class="py-name" href="#" onclick="return doclink('link-27', 'make_callback_entry', 'link-23');">make_callback_entry</a></tt><tt class="py-op">(</tt><tt class="py-name">textvariable</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt c [...]
+<a name="L64"></a><tt class="py-lineno"> 64</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">loopable_variables</tt><tt class="py-op">[</tt><tt class="py-string">"Velocity"</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-string">"velocity_dps"</tt><tt class="py-op">,</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">velocity_tk_var</tt><tt class="py-op">)</tt> </tt>
+<a name="L65"></a><tt class="py-lineno"> 65</tt>  <tt class="py-line"> </tt>
+<a name="L66"></a><tt class="py-lineno"> 66</tt>  <tt class="py-line">        <tt class="py-name">pf_row</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L67"></a><tt class="py-lineno"> 67</tt>  <tt class="py-line">        <tt id="link-28" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-28', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">param_frame</tt><tt class="py-op">,</tt><tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Start position (deg):"</tt><tt clas [...]
+<a name="L68"></a><tt class="py-lineno"> 68</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">startpos_tk_var</tt> <tt class="py-op">=</tt> <tt id="link-29" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-29', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">DoubleVar</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L69"></a><tt class="py-lineno"> 69</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">startpos_tk_var</tt><tt class="py-op">.</tt><tt id="link-30" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-30', 'set', 'link-22');">set</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py- [...]
+<a name="L70"></a><tt class="py-lineno"> 70</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-31" class="py-name"><a title="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.make_callback_entry" class="py-name" href="#" onclick="return doclink('link-31', 'make_callback_entry', 'link-23');">make_callback_entry</a></tt><tt class="py-op">(</tt><tt class="py-name">textvariable</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt c [...]
+<a name="L71"></a><tt class="py-lineno"> 71</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">loopable_variables</tt><tt class="py-op">[</tt><tt class="py-string">"Start position"</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-string">"startpos_deg"</tt><tt class="py-op">,</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">startpos_tk_var</tt><tt class="py-op">) [...]
+<a name="L72"></a><tt class="py-lineno"> 72</tt>  <tt class="py-line"> </tt>
+<a name="L73"></a><tt class="py-lineno"> 73</tt>  <tt class="py-line">        <tt class="py-name">pf_row</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L74"></a><tt class="py-lineno"> 74</tt>  <tt class="py-line">        <tt id="link-32" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-32', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">param_frame</tt><tt class="py-op">,</tt><tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Pre stimulus duration (sec):"</tt>< [...]
+<a name="L75"></a><tt class="py-lineno"> 75</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">prestim_dur_tk_var</tt> <tt class="py-op">=</tt> <tt id="link-33" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-33', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">DoubleVar</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L76"></a><tt class="py-lineno"> 76</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">prestim_dur_tk_var</tt><tt class="py-op">.</tt><tt id="link-34" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-34', 'set', 'link-22');">set</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class=" [...]
+<a name="L77"></a><tt class="py-lineno"> 77</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-35" class="py-name"><a title="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.make_callback_entry" class="py-name" href="#" onclick="return doclink('link-35', 'make_callback_entry', 'link-23');">make_callback_entry</a></tt><tt class="py-op">(</tt><tt class="py-name">textvariable</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt c [...]
+<a name="L78"></a><tt class="py-lineno"> 78</tt>  <tt class="py-line">         </tt>
+<a name="L79"></a><tt class="py-lineno"> 79</tt>  <tt class="py-line">        <tt class="py-name">pf_row</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L80"></a><tt class="py-lineno"> 80</tt>  <tt class="py-line">        <tt id="link-36" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-36', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">param_frame</tt><tt class="py-op">,</tt><tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Stimulus duration (sec):"</tt><tt c [...]
+<a name="L81"></a><tt class="py-lineno"> 81</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stim_dur_tk_var</tt> <tt class="py-op">=</tt> <tt id="link-37" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-37', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">DoubleVar</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L82"></a><tt class="py-lineno"> 82</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stim_dur_tk_var</tt><tt class="py-op">.</tt><tt id="link-38" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-38', 'set', 'link-22');">set</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py- [...]
+<a name="L83"></a><tt class="py-lineno"> 83</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-39" class="py-name"><a title="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.make_callback_entry" class="py-name" href="#" onclick="return doclink('link-39', 'make_callback_entry', 'link-23');">make_callback_entry</a></tt><tt class="py-op">(</tt><tt class="py-name">textvariable</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt c [...]
+<a name="L84"></a><tt class="py-lineno"> 84</tt>  <tt class="py-line">         </tt>
+<a name="L85"></a><tt class="py-lineno"> 85</tt>  <tt class="py-line">        <tt class="py-name">pf_row</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L86"></a><tt class="py-lineno"> 86</tt>  <tt class="py-line">        <tt id="link-40" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-40', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">param_frame</tt><tt class="py-op">,</tt><tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Post stimulus duration (sec):"</tt> [...]
+<a name="L87"></a><tt class="py-lineno"> 87</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">poststim_dur_tk_var</tt> <tt class="py-op">=</tt> <tt id="link-41" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-41', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">DoubleVar</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L88"></a><tt class="py-lineno"> 88</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">poststim_dur_tk_var</tt><tt class="py-op">.</tt><tt id="link-42" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-42', 'set', 'link-22');">set</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class= [...]
+<a name="L89"></a><tt class="py-lineno"> 89</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-43" class="py-name"><a title="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.make_callback_entry" class="py-name" href="#" onclick="return doclink('link-43', 'make_callback_entry', 'link-23');">make_callback_entry</a></tt><tt class="py-op">(</tt><tt class="py-name">textvariable</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt c [...]
+</div><a name="L90"></a><tt class="py-lineno"> 90</tt>  <tt class="py-line"> </tt>
+<a name="SpinningDrumControlFrame.get_shortname"></a><div id="SpinningDrumControlFrame.get_shortname-def"><a name="L91"></a><tt class="py-lineno"> 91</tt> <a class="py-toggle" href="#" id="SpinningDrumControlFrame.get_shortname-toggle" onclick="return toggle('SpinningDrumControlFrame.get_shortname');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame-class.html#get_shortname">get_shortname [...]
+</div><div id="SpinningDrumControlFrame.get_shortname-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SpinningDrumControlFrame.get_shortname-expanded"><a name="L92"></a><tt class="py-lineno"> 92</tt>  <tt class="py-line">        <tt class="py-docstring">"""Used as basename for saving parameter files"""</tt> </tt>
+<a name="L93"></a><tt class="py-lineno"> 93</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-string">"spinning_drum"</tt> </tt>
+</div><a name="L94"></a><tt class="py-lineno"> 94</tt>  <tt class="py-line"> </tt>
+<a name="SpinningDrumControlFrame.update_tk_vars"></a><div id="SpinningDrumControlFrame.update_tk_vars-def"><a name="L95"></a><tt class="py-lineno"> 95</tt> <a class="py-toggle" href="#" id="SpinningDrumControlFrame.update_tk_vars-toggle" onclick="return toggle('SpinningDrumControlFrame.update_tk_vars');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame-class.html#update_tk_vars">update_t [...]
+</div><div id="SpinningDrumControlFrame.update_tk_vars-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SpinningDrumControlFrame.update_tk_vars-expanded"><a name="L96"></a><tt class="py-lineno"> 96</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">contrast_tk_var</tt><tt class="py-op">.</tt><tt id="link-44" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="retu [...]
+<a name="L97"></a><tt class="py-lineno"> 97</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">velocity_tk_var</tt><tt class="py-op">.</tt><tt id="link-45" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-45', 'set', 'link-22');">set</a></tt><tt class="py-op">(</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py [...]
+<a name="L98"></a><tt class="py-lineno"> 98</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">startpos_tk_var</tt><tt class="py-op">.</tt><tt id="link-46" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-46', 'set', 'link-22');">set</a></tt><tt class="py-op">(</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py [...]
+<a name="L99"></a><tt class="py-lineno"> 99</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stim_dur_tk_var</tt><tt class="py-op">.</tt><tt id="link-47" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-47', 'set', 'link-22');">set</a></tt><tt class="py-op">(</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py [...]
+<a name="L100"></a><tt class="py-lineno">100</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">poststim_dur_tk_var</tt><tt class="py-op">.</tt><tt id="link-48" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-48', 'set', 'link-22');">set</a></tt><tt class="py-op">(</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt clas [...]
+</div><a name="L101"></a><tt class="py-lineno">101</tt>  <tt class="py-line">     </tt>
+<a name="SpinningDrumControlFrame.send_values"></a><div id="SpinningDrumControlFrame.send_values-def"><a name="L102"></a><tt class="py-lineno">102</tt> <a class="py-toggle" href="#" id="SpinningDrumControlFrame.send_values-toggle" onclick="return toggle('SpinningDrumControlFrame.send_values');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame-class.html#send_values">send_values</a><tt cla [...]
+</div><div id="SpinningDrumControlFrame.send_values-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SpinningDrumControlFrame.send_values-expanded"><a name="L103"></a><tt class="py-lineno">103</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op">.</tt><tt class="py-name">contrast</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py [...]
+<a name="L104"></a><tt class="py-lineno">104</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op">.</tt><tt class="py-name">velocity_dps</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">velocity_tk_var</tt><tt class="py-op">.</tt><tt id="link-50" class="py-name"><a title="VisionEgg.PyroClient.PyroClient.get" class="py-name" href="#" onclick="return [...]
+<a name="L105"></a><tt class="py-lineno">105</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op">.</tt><tt class="py-name">startpos_deg</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">startpos_tk_var</tt><tt class="py-op">.</tt><tt id="link-51" class="py-name"><a title="VisionEgg.PyroClient.PyroClient.get" class="py-name" href="#" onclick="return [...]
+<a name="L106"></a><tt class="py-lineno">106</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op">.</tt><tt class="py-name">pre_stim_sec</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">prestim_dur_tk_var</tt><tt class="py-op">.</tt><tt id="link-52" class="py-name"><a title="VisionEgg.PyroClient.PyroClient.get" class="py-name" href="#" onclick="ret [...]
+<a name="L107"></a><tt class="py-lineno">107</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op">.</tt><tt class="py-name">stim_sec</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stim_dur_tk_var</tt><tt class="py-op">.</tt><tt id="link-53" class="py-name"><a title="VisionEgg.PyroClient.PyroClient.get" class="py-name" href="#" onclick="return doc [...]
+<a name="L108"></a><tt class="py-lineno">108</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op">.</tt><tt class="py-name">post_stim_sec</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">poststim_dur_tk_var</tt><tt class="py-op">.</tt><tt id="link-54" class="py-name"><a title="VisionEgg.PyroClient.PyroClient.get" class="py-name" href="#" onclick="r [...]
+<a name="L109"></a><tt class="py-lineno">109</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">connected</tt><tt class="py-op">:</tt> </tt>
+<a name="L110"></a><tt class="py-lineno">110</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_controller</tt><tt class="py-op">.</tt><tt id="link-55" class="py-name" targets="Method VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.set_parameters()=VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController-class.html#set_parameters,Method VisionEgg.PyroApps.DropinServer.DropinMetaController.set_parameters()=VisionEgg [...]
+VisionEgg.PyroApps.DropinServer.DropinMetaController.set_parameters
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.set_parameters
+VisionEgg.PyroApps.GridServer.GridMetaController.set_parameters
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.set_parameters
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.set_parameters
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.set_parameters
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.set_parameters
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.set_parameters" class="py-name" href="#" onclick="return doclink('link-55', 'set_parameters', 'link-55');">set_parameters</a></tt><tt class="py-op">(</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt> <tt class="py-op">)</tt> </tt>
+</div><a name="L111"></a><tt class="py-lineno">111</tt>  <tt class="py-line"> </tt>
+<a name="SpinningDrumControlFrame.get_duration_sec"></a><div id="SpinningDrumControlFrame.get_duration_sec-def"><a name="L112"></a><tt class="py-lineno">112</tt> <a class="py-toggle" href="#" id="SpinningDrumControlFrame.get_duration_sec-toggle" onclick="return toggle('SpinningDrumControlFrame.get_duration_sec');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame-class.html#get_duration_se [...]
+</div><div id="SpinningDrumControlFrame.get_duration_sec-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SpinningDrumControlFrame.get_duration_sec-expanded"><a name="L113"></a><tt class="py-lineno">113</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op">.</tt><tt class="py-name">pre_stim_sec</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt [...]
+<a name="L114"></a><tt class="py-lineno">114</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op">.</tt><tt class="py-name">stim_sec</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stim_dur_tk_var</tt><tt class="py-op">.</tt><tt id="link-57" class="py-name"><a title="VisionEgg.PyroClient.PyroClient.get" class="py-name" href="#" onclick="return doc [...]
+<a name="L115"></a><tt class="py-lineno">115</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op">.</tt><tt class="py-name">post_stim_sec</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">poststim_dur_tk_var</tt><tt class="py-op">.</tt><tt id="link-58" class="py-name"><a title="VisionEgg.PyroClient.PyroClient.get" class="py-name" href="#" onclick="r [...]
+<a name="L116"></a><tt class="py-lineno">116</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op">.</tt><tt class="py-name">pre_stim_sec</tt> <tt class="py-op">+</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op">.</tt><tt class="py-name">stim_sec</tt> <tt class="py-op">+</tt> <tt class="py-name">self</tt>< [...]
+</div></div><a name="L117"></a><tt class="py-lineno">117</tt>  <tt class="py-line"> </tt>
+<a name="L118"></a><tt class="py-lineno">118</tt>  <tt class="py-line"><tt class="py-keyword">if</tt> <tt class="py-name">__name__</tt><tt class="py-op">==</tt><tt class="py-string">'__main__'</tt><tt class="py-op">:</tt> </tt>
+<a name="L119"></a><tt class="py-lineno">119</tt>  <tt class="py-line">    <tt class="py-name">frame</tt> <tt class="py-op">=</tt> <tt id="link-59" class="py-name"><a title="VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame" class="py-name" href="#" onclick="return doclink('link-59', 'SpinningDrumControlFrame', 'link-11');">SpinningDrumControlFrame</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L120"></a><tt class="py-lineno">120</tt>  <tt class="py-line">    <tt class="py-name">frame</tt><tt class="py-op">.</tt><tt class="py-name">pack</tt><tt class="py-op">(</tt><tt class="py-name">expand</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py-op">,</tt><tt class="py-name">fill</tt><tt class="py-op">=</tt><tt id="link-60" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-60', 'Tkinter', 'link-7');">T [...]
+<a name="L121"></a><tt class="py-lineno">121</tt>  <tt class="py-line">    <tt class="py-name">frame</tt><tt class="py-op">.</tt><tt class="py-name">winfo_toplevel</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-61" class="py-name"><a title="VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.title
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.title
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.title
+VisionEgg.PyroApps.GridGUI.GridControlFrame.title
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.title
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.title
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.title
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.title" class="py-name" href="#" onclick="return doclink('link-61', 'title', 'link-13');">title</a></tt><tt class="py-op">(</tt><tt class="py-string">"%s"</tt><tt class="py-op">%</tt><tt class="py-op">(</tt><tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">path</tt><tt class="py-op">.</tt><tt class="py-name">basename</tt><tt class="py-op">(</tt><tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">path</ [...]
+<a name="L122"></a><tt class="py-lineno">122</tt>  <tt class="py-line">    <tt class="py-name">frame</tt><tt class="py-op">.</tt><tt class="py-name">mainloop</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L123"></a><tt class="py-lineno">123</tt>  <tt class="py-line"> </tt><script type="text/javascript">
+<!--
+expandto(location.href);
+// -->
+</script>
+</pre>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:47 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame-class.html b/doc/reference/html/VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame-class.html
new file mode 100644
index 0000000..98aa8e5
--- /dev/null
+++ b/doc/reference/html/VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame-class.html
@@ -0,0 +1,604 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.PyroApps-module.html">Package PyroApps</a> ::
+        <a href="VisionEgg.PyroApps.SpinningDrumGUI-module.html">Module SpinningDrumGUI</a> ::
+        Class SpinningDrumControlFrame
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class SpinningDrumControlFrame</h1><span class="codelink"><a href="VisionEgg.PyroApps.SpinningDrumGUI-pysrc.html#SpinningDrumControlFrame">source code</a></span><br /><br />
+<pre class="base-tree">
+      Tkinter.Misc --+                
+                     |                
+    Tkinter.BaseWidget --+            
+                         |            
+          Tkinter.Pack --+            
+                         |            
+         Tkinter.Place --+            
+                         |            
+          Tkinter.Grid --+            
+                         |            
+            Tkinter.Widget --+        
+                             |        
+                 Tkinter.Frame --+    
+                                 |    
+<a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html">EPhysGUIUtils.StimulusControlFrame</a> --+
+                                     |
+                                    <strong class="uidshort">SpinningDrumControlFrame</strong>
+</pre>
+
+<hr />
+<!-- ==================== NESTED CLASSES ==================== -->
+<a name="section-NestedClasses"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Nested Classes</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>Tkinter.Misc</code></b>:
+      <code><a href="float-class.html">getdouble</a></code>,
+      <code><a href="int-class.html">getint</a></code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">master</span>=<span class="summary-sig-default">None</span>,
+        <span class="summary-sig-arg">suppress_go_buttons</span>=<span class="summary-sig-default">0</span>,
+        <span class="summary-sig-arg">**kw</span>)</span><br />
+      Construct a frame widget with the parent MASTER.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.SpinningDrumGUI-pysrc.html#SpinningDrumControlFrame.__init__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame-class.html#get_shortname" class="summary-sig-name">get_shortname</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      Used as basename for saving parameter files</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.SpinningDrumGUI-pysrc.html#SpinningDrumControlFrame.get_shortname">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame-class.html#update_tk_vars" class="summary-sig-name">update_tk_vars</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      Update Tkinter variables with (new) values from meta_params</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.SpinningDrumGUI-pysrc.html#SpinningDrumControlFrame.update_tk_vars">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame-class.html#send_values" class="summary-sig-name">send_values</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">dummy_arg</span>=<span class="summary-sig-default">None</span>)</span><br />
+      Update meta_params variables with values from Tkinter fields</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.SpinningDrumGUI-pysrc.html#SpinningDrumControlFrame.send_values">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame-class.html#get_duration_sec" class="summary-sig-name">get_duration_sec</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      Calculate total duration in go loop</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.SpinningDrumGUI-pysrc.html#SpinningDrumControlFrame.get_duration_sec">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html">EPhysGUIUtils.StimulusControlFrame</a></code></b>:
+      <code><a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#connect">connect</a></code>,
+      <code><a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#get_loopable_variable_names">get_loopable_variable_names</a></code>,
+      <code><a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#get_matlab_string">get_matlab_string</a></code>,
+      <code><a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#get_parameters_as_m_strings">get_parameters_as_m_strings</a></code>,
+      <code><a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#get_parameters_as_py_strings">get_parameters_as_py_strings</a></code>,
+      <code><a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#get_parameters_dict">get_parameters_dict</a></code>,
+      <code><a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#go">go</a></code>,
+      <code><a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#make_callback_entry">make_callback_entry</a></code>,
+      <code><a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#quit_server">quit_server</a></code>,
+      <code><a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#set_loopable_variable">set_loopable_variable</a></code>,
+      <code><a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#set_param_dict">set_param_dict</a></code>,
+      <code><a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#set_parameters_dict">set_parameters_dict</a></code>,
+      <code><a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#standalone_connect">standalone_connect</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>Tkinter.BaseWidget</code></b>:
+      <code>destroy</code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>Tkinter.Misc</code></b>:
+      <code>__getitem__</code>,
+      <code>__setitem__</code>,
+      <code>__str__</code>,
+      <code>after</code>,
+      <code>after_cancel</code>,
+      <code>after_idle</code>,
+      <code>bbox</code>,
+      <code>bell</code>,
+      <code>bind</code>,
+      <code>bind_all</code>,
+      <code>bind_class</code>,
+      <code>bindtags</code>,
+      <code>cget</code>,
+      <code>clipboard_append</code>,
+      <code>clipboard_clear</code>,
+      <code>clipboard_get</code>,
+      <code>colormodel</code>,
+      <code>columnconfigure</code>,
+      <code>config</code>,
+      <code>configure</code>,
+      <code>deletecommand</code>,
+      <code>event_add</code>,
+      <code>event_delete</code>,
+      <code>event_generate</code>,
+      <code>event_info</code>,
+      <code>focus</code>,
+      <code>focus_displayof</code>,
+      <code>focus_force</code>,
+      <code>focus_get</code>,
+      <code>focus_lastfor</code>,
+      <code>focus_set</code>,
+      <code>getboolean</code>,
+      <code>getvar</code>,
+      <code>grab_current</code>,
+      <code>grab_release</code>,
+      <code>grab_set</code>,
+      <code>grab_set_global</code>,
+      <code>grab_status</code>,
+      <code>grid_bbox</code>,
+      <code>grid_columnconfigure</code>,
+      <code>grid_location</code>,
+      <code>grid_propagate</code>,
+      <code>grid_rowconfigure</code>,
+      <code>grid_size</code>,
+      <code>grid_slaves</code>,
+      <code>image_names</code>,
+      <code>image_types</code>,
+      <code>keys</code>,
+      <code>lift</code>,
+      <code>lower</code>,
+      <code>mainloop</code>,
+      <code>nametowidget</code>,
+      <code>option_add</code>,
+      <code>option_clear</code>,
+      <code>option_get</code>,
+      <code>option_readfile</code>,
+      <code>pack_propagate</code>,
+      <code>pack_slaves</code>,
+      <code>place_slaves</code>,
+      <code>propagate</code>,
+      <code>quit</code>,
+      <code>register</code>,
+      <code>rowconfigure</code>,
+      <code>selection_clear</code>,
+      <code>selection_get</code>,
+      <code>selection_handle</code>,
+      <code>selection_own</code>,
+      <code>selection_own_get</code>,
+      <code>send</code>,
+      <code>setvar</code>,
+      <code>size</code>,
+      <code>slaves</code>,
+      <code>tk_bisque</code>,
+      <code>tk_focusFollowsMouse</code>,
+      <code>tk_focusNext</code>,
+      <code>tk_focusPrev</code>,
+      <code>tk_menuBar</code>,
+      <code>tk_setPalette</code>,
+      <code>tk_strictMotif</code>,
+      <code>tkraise</code>,
+      <code>unbind</code>,
+      <code>unbind_all</code>,
+      <code>unbind_class</code>,
+      <code>update</code>,
+      <code>update_idletasks</code>,
+      <code>wait_variable</code>,
+      <code>wait_visibility</code>,
+      <code>wait_window</code>,
+      <code>waitvar</code>,
+      <code>winfo_atom</code>,
+      <code>winfo_atomname</code>,
+      <code>winfo_cells</code>,
+      <code>winfo_children</code>,
+      <code>winfo_class</code>,
+      <code>winfo_colormapfull</code>,
+      <code>winfo_containing</code>,
+      <code>winfo_depth</code>,
+      <code>winfo_exists</code>,
+      <code>winfo_fpixels</code>,
+      <code>winfo_geometry</code>,
+      <code>winfo_height</code>,
+      <code>winfo_id</code>,
+      <code>winfo_interps</code>,
+      <code>winfo_ismapped</code>,
+      <code>winfo_manager</code>,
+      <code>winfo_name</code>,
+      <code>winfo_parent</code>,
+      <code>winfo_pathname</code>,
+      <code>winfo_pixels</code>,
+      <code>winfo_pointerx</code>,
+      <code>winfo_pointerxy</code>,
+      <code>winfo_pointery</code>,
+      <code>winfo_reqheight</code>,
+      <code>winfo_reqwidth</code>,
+      <code>winfo_rgb</code>,
+      <code>winfo_rootx</code>,
+      <code>winfo_rooty</code>,
+      <code>winfo_screen</code>,
+      <code>winfo_screencells</code>,
+      <code>winfo_screendepth</code>,
+      <code>winfo_screenheight</code>,
+      <code>winfo_screenmmheight</code>,
+      <code>winfo_screenmmwidth</code>,
+      <code>winfo_screenvisual</code>,
+      <code>winfo_screenwidth</code>,
+      <code>winfo_server</code>,
+      <code>winfo_toplevel</code>,
+      <code>winfo_viewable</code>,
+      <code>winfo_visual</code>,
+      <code>winfo_visualid</code>,
+      <code>winfo_visualsavailable</code>,
+      <code>winfo_vrootheight</code>,
+      <code>winfo_vrootwidth</code>,
+      <code>winfo_vrootx</code>,
+      <code>winfo_vrooty</code>,
+      <code>winfo_width</code>,
+      <code>winfo_x</code>,
+      <code>winfo_y</code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>Tkinter.Pack</code></b>:
+      <code>forget</code>,
+      <code>info</code>,
+      <code>pack</code>,
+      <code>pack_configure</code>,
+      <code>pack_forget</code>,
+      <code>pack_info</code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>Tkinter.Place</code></b>:
+      <code>place</code>,
+      <code>place_configure</code>,
+      <code>place_forget</code>,
+      <code>place_info</code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>Tkinter.Grid</code></b>:
+      <code>grid</code>,
+      <code>grid_configure</code>,
+      <code>grid_forget</code>,
+      <code>grid_info</code>,
+      <code>grid_remove</code>,
+      <code>location</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Class Variables</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="title"></a><span class="summary-name">title</span> = <code title=""Spinning Drum Experiment"">"Spinning Drum Experiment"</code>
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>Tkinter.Misc</code></b>:
+      <code>_noarg_</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Method Details</span></td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">master</span>=<span class="sig-default">None</span>,
+        <span class="sig-arg">suppress_go_buttons</span>=<span class="sig-default">0</span>,
+        <span class="sig-arg">**kw</span>)</span>
+    <br /><em class="fname">(Constructor)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.PyroApps.SpinningDrumGUI-pysrc.html#SpinningDrumControlFrame.__init__">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Construct a frame widget with the parent MASTER.
+
+Valid resource names: background, bd, bg, borderwidth, class,
+colormap, container, cursor, height, highlightbackground,
+highlightcolor, highlightthickness, relief, takefocus, visual, width.
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#__init__">EPhysGUIUtils.StimulusControlFrame.__init__</a>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="get_shortname"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">get_shortname</span>(<span class="sig-arg">self</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.PyroApps.SpinningDrumGUI-pysrc.html#SpinningDrumControlFrame.get_shortname">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Used as basename for saving parameter files
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#get_shortname">EPhysGUIUtils.StimulusControlFrame.get_shortname</a>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="update_tk_vars"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">update_tk_vars</span>(<span class="sig-arg">self</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.PyroApps.SpinningDrumGUI-pysrc.html#SpinningDrumControlFrame.update_tk_vars">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Update Tkinter variables with (new) values from meta_params
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#update_tk_vars">EPhysGUIUtils.StimulusControlFrame.update_tk_vars</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="send_values"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">send_values</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">dummy_arg</span>=<span class="sig-default">None</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.PyroApps.SpinningDrumGUI-pysrc.html#SpinningDrumControlFrame.send_values">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Update meta_params variables with values from Tkinter fields
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#send_values">EPhysGUIUtils.StimulusControlFrame.send_values</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="get_duration_sec"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">get_duration_sec</span>(<span class="sig-arg">self</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.PyroApps.SpinningDrumGUI-pysrc.html#SpinningDrumControlFrame.get_duration_sec">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Calculate total duration in go loop
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#get_duration_sec">EPhysGUIUtils.StimulusControlFrame.get_duration_sec</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:47 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumMetaParameters-class.html b/doc/reference/html/VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumMetaParameters-class.html
new file mode 100644
index 0000000..3e80a87
--- /dev/null
+++ b/doc/reference/html/VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumMetaParameters-class.html
@@ -0,0 +1,139 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumMetaParameters</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.PyroApps-module.html">Package PyroApps</a> ::
+        <a href="VisionEgg.PyroApps.SpinningDrumGUI-module.html">Module SpinningDrumGUI</a> ::
+        Class SpinningDrumMetaParameters
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumMetaParameters-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class SpinningDrumMetaParameters</h1><span class="codelink"><a href="VisionEgg.PyroApps.SpinningDrumGUI-pysrc.html#SpinningDrumMetaParameters">source code</a></span><br /><br />
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__init__"></a><span class="summary-sig-name">__init__</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.SpinningDrumGUI-pysrc.html#SpinningDrumMetaParameters.__init__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:47 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.PyroApps.SpinningDrumServer-module.html b/doc/reference/html/VisionEgg.PyroApps.SpinningDrumServer-module.html
new file mode 100644
index 0000000..df83245
--- /dev/null
+++ b/doc/reference/html/VisionEgg.PyroApps.SpinningDrumServer-module.html
@@ -0,0 +1,223 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.PyroApps.SpinningDrumServer</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.PyroApps-module.html">Package PyroApps</a> ::
+        Module SpinningDrumServer
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.PyroApps.SpinningDrumServer-module.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== MODULE DESCRIPTION ==================== -->
+<h1 class="epydoc">Module SpinningDrumServer</h1><span class="codelink"><a href="VisionEgg.PyroApps.SpinningDrumServer-pysrc.html">source code</a></span><br /><br />
+<!-- ==================== CLASSES ==================== -->
+<a name="section-Classes"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Classes</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController-class.html" class="summary-name">SpinningDrumExperimentMetaController</a>
+    </td>
+  </tr>
+</table>
+<!-- ==================== FUNCTIONS ==================== -->
+<a name="section-Functions"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Functions</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="get_meta_controller_class"></a><span class="summary-sig-name">get_meta_controller_class</span>()</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.SpinningDrumServer-pysrc.html#get_meta_controller_class">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="make_stimuli"></a><span class="summary-sig-name">make_stimuli</span>()</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.SpinningDrumServer-pysrc.html#make_stimuli">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="get_meta_controller_stimkey"></a><span class="summary-sig-name">get_meta_controller_stimkey</span>()</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.SpinningDrumServer-pysrc.html#get_meta_controller_stimkey">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+</table>
+<!-- ==================== VARIABLES ==================== -->
+<a name="section-Variables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Variables</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="__version__"></a><span class="summary-name">__version__</span> = <code title="'1.1.dev'">'1.1.dev'</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="__cvs__"></a><span class="summary-name">__cvs__</span> = <code title="string.split('$Revision$') [1]">string.split('$Revision$') [1]</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="__date__"></a><span class="summary-name">__date__</span> = <code title="string.join(string.split('$Date$') [1: 3], ' ')">string.join(string.split('$Date$') [1: 3], ' ')</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="__author__"></a><span class="summary-name">__author__</span> = <code title="'Andrew Straw <astraw at users.sourceforge.net>'">'Andrew Straw <astraw at users.sourceforge.net>'</code>
+    </td>
+  </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.PyroApps.SpinningDrumServer-pysrc.html b/doc/reference/html/VisionEgg.PyroApps.SpinningDrumServer-pysrc.html
new file mode 100644
index 0000000..f87e988
--- /dev/null
+++ b/doc/reference/html/VisionEgg.PyroApps.SpinningDrumServer-pysrc.html
@@ -0,0 +1,509 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.PyroApps.SpinningDrumServer</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.PyroApps-module.html">Package PyroApps</a> ::
+        Module SpinningDrumServer
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.PyroApps.SpinningDrumServer-pysrc.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<h1 class="epydoc">Source Code for <a href="VisionEgg.PyroApps.SpinningDrumServer-module.html">Module VisionEgg.PyroApps.SpinningDrumServer</a></h1>
+<pre class="py-src">
+<a name="L1"></a><tt class="py-lineno">  1</tt>  <tt class="py-line"><tt class="py-comment">#!/usr/bin/env python</tt> </tt>
+<a name="L2"></a><tt class="py-lineno">  2</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L3"></a><tt class="py-lineno">  3</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># The Vision Egg: SpinningDrumServer</tt> </tt>
+<a name="L4"></a><tt class="py-lineno">  4</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L5"></a><tt class="py-lineno">  5</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Copyright (C) 2001-2003 Andrew Straw.</tt> </tt>
+<a name="L6"></a><tt class="py-lineno">  6</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Author: Andrew Straw <astraw at users.sourceforge.net></tt> </tt>
+<a name="L7"></a><tt class="py-lineno">  7</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># URL: <http://www.visionegg.org/></tt> </tt>
+<a name="L8"></a><tt class="py-lineno">  8</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L9"></a><tt class="py-lineno">  9</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Distributed under the terms of the GNU Lesser General Public License</tt> </tt>
+<a name="L10"></a><tt class="py-lineno"> 10</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># (LGPL). See LICENSE.TXT that came with this file.</tt> </tt>
+<a name="L11"></a><tt class="py-lineno"> 11</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L12"></a><tt class="py-lineno"> 12</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># $Id$</tt> </tt>
+<a name="L13"></a><tt class="py-lineno"> 13</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L14"></a><tt class="py-lineno"> 14</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-0" class="py-name" targets="Package VisionEgg=VisionEgg-module.html"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-0', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">,</tt> <tt class="py-name">string</tt> </tt>
+<a name="L15"></a><tt class="py-lineno"> 15</tt>  <tt class="py-line"><tt id="link-1" class="py-name" targets="Variable VisionEgg.DaqKeyboard.__version__=VisionEgg.DaqKeyboard-module.html#__version__,Variable VisionEgg.DaqLPT.__version__=VisionEgg.DaqLPT-module.html#__version__,Variable VisionEgg.GL.__version__=VisionEgg.GL-module.html#__version__,Variable VisionEgg.PyroApps.EPhysGUI.__version__=VisionEgg.PyroApps.EPhysGUI-module.html#__version__,Variable VisionEgg.PyroApps.EPhysGUIUtils [...]
+VisionEgg.DaqLPT.__version__
+VisionEgg.GL.__version__
+VisionEgg.PyroApps.EPhysGUI.__version__
+VisionEgg.PyroApps.EPhysGUIUtils.__version__
+VisionEgg.PyroApps.EPhysServer.__version__
+VisionEgg.PyroApps.GridGUI.__version__
+VisionEgg.PyroApps.GridServer.__version__
+VisionEgg.PyroApps.ScreenPositionGUI.__version__
+VisionEgg.PyroApps.ScreenPositionServer.__version__
+VisionEgg.PyroApps.SpinningDrumGUI.__version__
+VisionEgg.PyroApps.SpinningDrumServer.__version__
+VisionEgg.PyroHelpers.__version__
+VisionEgg.QuickTime.__version__
+VisionEgg.ResponseControl.__version__
+VisionEgg.SphereMap.__version__
+VisionEgg.TCPController.__version__" class="py-name" href="#" onclick="return doclink('link-1', '__version__', 'link-1');">__version__</a></tt> <tt class="py-op">=</tt> <tt id="link-2" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-2', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-3" class="py-name" targets="Variable VisionEgg.release_name=VisionEgg-module.html#release_name"><a title="VisionEgg.release_name" c [...]
+<a name="L16"></a><tt class="py-lineno"> 16</tt>  <tt class="py-line"><tt id="link-4" class="py-name" targets="Variable VisionEgg.PyroApps.ColorCalGUI.__cvs__=VisionEgg.PyroApps.ColorCalGUI-module.html#__cvs__,Variable VisionEgg.PyroApps.ColorCalServer.__cvs__=VisionEgg.PyroApps.ColorCalServer-module.html#__cvs__,Variable VisionEgg.PyroApps.EPhysGUI.__cvs__=VisionEgg.PyroApps.EPhysGUI-module.html#__cvs__,Variable VisionEgg.PyroApps.EPhysGUIUtils.__cvs__=VisionEgg.PyroApps.EPhysGUIUtils-m [...]
+VisionEgg.PyroApps.ColorCalServer.__cvs__
+VisionEgg.PyroApps.EPhysGUI.__cvs__
+VisionEgg.PyroApps.EPhysGUIUtils.__cvs__
+VisionEgg.PyroApps.EPhysServer.__cvs__
+VisionEgg.PyroApps.FlatGratingGUI.__cvs__
+VisionEgg.PyroApps.FlatGratingServer.__cvs__
+VisionEgg.PyroApps.GridGUI.__cvs__
+VisionEgg.PyroApps.GridServer.__cvs__
+VisionEgg.PyroApps.MouseTargetGUI.__cvs__
+VisionEgg.PyroApps.MouseTargetServer.__cvs__
+VisionEgg.PyroApps.ScreenPositionGUI.__cvs__
+VisionEgg.PyroApps.ScreenPositionServer.__cvs__
+VisionEgg.PyroApps.SphereGratingGUI.__cvs__
+VisionEgg.PyroApps.SphereGratingServer.__cvs__
+VisionEgg.PyroApps.SpinningDrumGUI.__cvs__
+VisionEgg.PyroApps.SpinningDrumServer.__cvs__
+VisionEgg.PyroApps.TargetGUI.__cvs__
+VisionEgg.PyroApps.TargetServer.__cvs__
+VisionEgg.PyroClient.__cvs__
+VisionEgg.PyroHelpers.__cvs__
+VisionEgg.TCPController.__cvs__" class="py-name" href="#" onclick="return doclink('link-4', '__cvs__', 'link-4');">__cvs__</a></tt> <tt class="py-op">=</tt> <tt class="py-name">string</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'$Revision$'</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
+<a name="L17"></a><tt class="py-lineno"> 17</tt>  <tt class="py-line"><tt id="link-5" class="py-name" targets="Variable VisionEgg.PyroApps.ColorCalGUI.__date__=VisionEgg.PyroApps.ColorCalGUI-module.html#__date__,Variable VisionEgg.PyroApps.ColorCalServer.__date__=VisionEgg.PyroApps.ColorCalServer-module.html#__date__,Variable VisionEgg.PyroApps.EPhysGUI.__date__=VisionEgg.PyroApps.EPhysGUI-module.html#__date__,Variable VisionEgg.PyroApps.EPhysGUIUtils.__date__=VisionEgg.PyroApps.EPhysGUI [...]
+VisionEgg.PyroApps.ColorCalServer.__date__
+VisionEgg.PyroApps.EPhysGUI.__date__
+VisionEgg.PyroApps.EPhysGUIUtils.__date__
+VisionEgg.PyroApps.EPhysServer.__date__
+VisionEgg.PyroApps.FlatGratingGUI.__date__
+VisionEgg.PyroApps.FlatGratingServer.__date__
+VisionEgg.PyroApps.GridGUI.__date__
+VisionEgg.PyroApps.GridServer.__date__
+VisionEgg.PyroApps.MouseTargetGUI.__date__
+VisionEgg.PyroApps.MouseTargetServer.__date__
+VisionEgg.PyroApps.ScreenPositionGUI.__date__
+VisionEgg.PyroApps.ScreenPositionServer.__date__
+VisionEgg.PyroApps.SphereGratingGUI.__date__
+VisionEgg.PyroApps.SphereGratingServer.__date__
+VisionEgg.PyroApps.SpinningDrumGUI.__date__
+VisionEgg.PyroApps.SpinningDrumServer.__date__
+VisionEgg.PyroApps.TargetGUI.__date__
+VisionEgg.PyroApps.TargetServer.__date__
+VisionEgg.PyroClient.__date__
+VisionEgg.PyroHelpers.__date__
+VisionEgg.TCPController.__date__" class="py-name" href="#" onclick="return doclink('link-5', '__date__', 'link-5');">__date__</a></tt> <tt class="py-op">=</tt> <tt class="py-name">string</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">string</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'$Date$'</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt  [...]
+<a name="L18"></a><tt class="py-lineno"> 18</tt>  <tt class="py-line"><tt id="link-6" class="py-name" targets="Variable VisionEgg.PyroApps.EPhysGUI.__author__=VisionEgg.PyroApps.EPhysGUI-module.html#__author__,Variable VisionEgg.PyroApps.EPhysGUIUtils.__author__=VisionEgg.PyroApps.EPhysGUIUtils-module.html#__author__,Variable VisionEgg.PyroApps.EPhysServer.__author__=VisionEgg.PyroApps.EPhysServer-module.html#__author__,Variable VisionEgg.PyroApps.GridGUI.__author__=VisionEgg.PyroApps.Gr [...]
+VisionEgg.PyroApps.EPhysGUIUtils.__author__
+VisionEgg.PyroApps.EPhysServer.__author__
+VisionEgg.PyroApps.GridGUI.__author__
+VisionEgg.PyroApps.GridServer.__author__
+VisionEgg.PyroApps.SpinningDrumGUI.__author__
+VisionEgg.PyroApps.SpinningDrumServer.__author__" class="py-name" href="#" onclick="return doclink('link-6', '__author__', 'link-6');">__author__</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'Andrew Straw <astraw at users.sourceforge.net>'</tt> </tt>
+<a name="L19"></a><tt class="py-lineno"> 19</tt>  <tt class="py-line"> </tt>
+<a name="L20"></a><tt class="py-lineno"> 20</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">sys</tt><tt class="py-op">,</tt> <tt class="py-name">os</tt><tt class="py-op">,</tt> <tt class="py-name">math</tt> </tt>
+<a name="L21"></a><tt class="py-lineno"> 21</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-7" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-7', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-8" class="py-name" targets="Module VisionEgg.Core=VisionEgg.Core-module.html"><a title="VisionEgg.Core" class="py-name" href="#" onclick="return doclink('link-8', 'Core', 'link-8');">Core</a></tt> </tt>
+<a name="L22"></a><tt class="py-lineno"> 22</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-9" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-9', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-10" class="py-name" targets="Module VisionEgg.FlowControl=VisionEgg.FlowControl-module.html"><a title="VisionEgg.FlowControl" class="py-name" href="#" onclick="return doclink('link-10', 'FlowCont [...]
+<a name="L23"></a><tt class="py-lineno"> 23</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-11" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-11', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-12" class="py-name" targets="Module VisionEgg.Textures=VisionEgg.Textures-module.html"><a title="VisionEgg.Textures" class="py-name" href="#" onclick="return doclink('link-12', 'Textures', 'lin [...]
+<a name="L24"></a><tt class="py-lineno"> 24</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-13" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-13', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-14" class="py-name" targets="Module VisionEgg.PyroHelpers=VisionEgg.PyroHelpers-module.html"><a title="VisionEgg.PyroHelpers" class="py-name" href="#" onclick="return doclink('link-14', 'PyroHe [...]
+<a name="L25"></a><tt class="py-lineno"> 25</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">Pyro</tt><tt class="py-op">.</tt><tt class="py-name">core</tt> </tt>
+<a name="L26"></a><tt class="py-lineno"> 26</tt>  <tt class="py-line"> </tt>
+<a name="L27"></a><tt class="py-lineno"> 27</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-15" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-15', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-16" class="py-name" targets="Package VisionEgg.PyroApps=VisionEgg.PyroApps-module.html"><a title="VisionEgg.PyroApps" class="py-name" href="#" onclick="return doclink('link-16', 'PyroApps', 'link [...]
+<a name="L28"></a><tt class="py-lineno"> 28</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-19" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-19', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-20" class="py-name"><a title="VisionEgg.PyroApps" class="py-name" href="#" onclick="return doclink('link-20', 'PyroApps', 'link-16');">PyroApps</a></tt><tt class="py-op">.</tt><tt id="link-21" cl [...]
+<a name="L29"></a><tt class="py-lineno"> 29</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-23" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-23', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-24" class="py-name"><a title="VisionEgg.PyroApps" class="py-name" href="#" onclick="return doclink('link-24', 'PyroApps', 'link-16');">PyroApps</a></tt><tt class="py-op">.</tt><tt id="link-25" cl [...]
+<a name="L30"></a><tt class="py-lineno"> 30</tt>  <tt class="py-line"> </tt>
+<a name="SpinningDrumExperimentMetaController"></a><div id="SpinningDrumExperimentMetaController-def"><a name="L31"></a><tt class="py-lineno"> 31</tt> <a class="py-toggle" href="#" id="SpinningDrumExperimentMetaController-toggle" onclick="return toggle('SpinningDrumExperimentMetaController');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController-class.html">SpinningDrumExperiment [...]
+</div><div id="SpinningDrumExperimentMetaController-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="SpinningDrumExperimentMetaController-expanded"><a name="SpinningDrumExperimentMetaController.__init__"></a><div id="SpinningDrumExperimentMetaController.__init__-def"><a name="L32"></a><tt class="py-lineno"> 32</tt> <a class="py-toggle" href="#" id="SpinningDrumExperimentMetaController.__init__-toggle" onclick="return toggle('SpinningDrumExperimentMetaController.__i [...]
+</div><div id="SpinningDrumExperimentMetaController.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SpinningDrumExperimentMetaController.__init__-expanded"><a name="L33"></a><tt class="py-lineno"> 33</tt>  <tt class="py-line"> </tt>
+<a name="L34"></a><tt class="py-lineno"> 34</tt>  <tt class="py-line">        <tt class="py-comment"># get the instance of Stimulus that was created</tt> </tt>
+<a name="L35"></a><tt class="py-lineno"> 35</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">assert</tt><tt class="py-op">(</tt> <tt class="py-name">stimuli</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-string">'3d_perspective'</tt> <tt class="py-op">)</tt> </tt>
+<a name="L36"></a><tt class="py-lineno"> 36</tt>  <tt class="py-line">        <tt class="py-name">spinning_drum</tt> <tt class="py-op">=</tt> <tt class="py-name">stimuli</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
+<a name="L37"></a><tt class="py-lineno"> 37</tt>  <tt class="py-line">         </tt>
+<a name="L38"></a><tt class="py-lineno"> 38</tt>  <tt class="py-line">        <tt class="py-name">Pyro</tt><tt class="py-op">.</tt><tt class="py-name">core</tt><tt class="py-op">.</tt><tt class="py-name">ObjBase</tt><tt class="py-op">.</tt><tt id="link-27" class="py-name" targets="Method VisionEgg.ClassWithParameters.__init__()=VisionEgg.ClassWithParameters-class.html#__init__,Method VisionEgg.Configuration.Config.__init__()=VisionEgg.Configuration.Config-class.html#__init__,Method Visio [...]
+VisionEgg.Configuration.Config.__init__
+VisionEgg.Core.FixationSpot.__init__
+VisionEgg.Core.FrameTimer.__init__
+VisionEgg.Core.ModelView.__init__
+VisionEgg.Core.OrthographicProjection.__init__
+VisionEgg.Core.OrthographicProjectionNoZClip.__init__
+VisionEgg.Core.PerspectiveProjection.__init__
+VisionEgg.Core.Projection.__init__
+VisionEgg.Core.ProjectionBaseClass.__init__
+VisionEgg.Core.Screen.__init__
+VisionEgg.Core.SimplePerspectiveProjection.__init__
+VisionEgg.Core.Stimulus.__init__
+VisionEgg.Core.Viewport.__init__
+VisionEgg.Daq.Channel.__init__
+VisionEgg.Daq.DaqMode.__init__
+VisionEgg.Daq.Device.__init__
+VisionEgg.Daq.Functionality.__init__
+VisionEgg.Daq.SignalType.__init__
+VisionEgg.DaqKeyboard.KeyboardTriggerInController.__init__
+VisionEgg.DaqLPT.LPTChannel.__init__
+VisionEgg.DaqLPT.LPTDevice.__init__
+VisionEgg.DaqLPT.LPTTriggerInController.__init__
+VisionEgg.DaqLPT.LPTTriggerOutController.__init__
+VisionEgg.Deprecated.Message.__init__
+VisionEgg.Dots.DotArea2D.__init__
+VisionEgg.FlowControl.ConstantController.__init__
+VisionEgg.FlowControl.Controller.__init__
+VisionEgg.FlowControl.EncapsulatedController.__init__
+VisionEgg.FlowControl.EvalStringController.__init__
+VisionEgg.FlowControl.ExecStringController.__init__
+VisionEgg.FlowControl.FunctionController.__init__
+VisionEgg.FlowControl.Presentation.__init__
+VisionEgg.GLTrace.Wrapper.__init__
+VisionEgg.GUI.AppWindow.__init__
+VisionEgg.GUI.GetKeypressDialog.__init__
+VisionEgg.GUI.GraphicsConfigurationWindow.__init__
+VisionEgg.GUI.InfoFrame.__init__
+VisionEgg.GUI.ProgressBar.__init__
+VisionEgg.GUI.ToplevelDialog.__init__
+VisionEgg.Gratings.SinGrating2D.__init__
+VisionEgg.Gratings.SinGrating3D.__init__
+VisionEgg.MoreStimuli.Arrow.__init__
+VisionEgg.MoreStimuli.FilledCircle.__init__
+VisionEgg.MoreStimuli.Rectangle3D.__init__
+VisionEgg.MoreStimuli.Target2D.__init__
+VisionEgg.ParameterTypes.AnyOf.__init__
+VisionEgg.ParameterTypes.Instance.__init__
+VisionEgg.ParameterTypes.Sequence.__init__
+VisionEgg.ParameterTypes.SubClass.__init__
+VisionEgg.PyroApps.AST_ext.AST_Visitor.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalMetaParameters.__init__
+VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.__init__
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.__init__
+VisionEgg.PyroApps.DropinGUI.DropinMetaParameters.__init__
+VisionEgg.PyroApps.DropinServer.DropinMetaController.__init__
+VisionEgg.PyroApps.EPhysGUI.AppWindow.__init__
+VisionEgg.PyroApps.EPhysGUI.BarButton.__init__
+VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase.__init__
+VisionEgg.PyroApps.EPhysGUI.GammaFrame.__init__
+VisionEgg.PyroApps.EPhysGUI.ImageSequenceLauncher.__init__
+VisionEgg.PyroApps.EPhysGUI.Loop.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopContainedObject.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopParamDialog.__init__
+VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.__init__
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.__init__
+VisionEgg.PyroApps.EPhysServer.EPhysServer.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingMetaParameters.__init__
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.GridGUI.GridControlFrame.__init__
+VisionEgg.PyroApps.GridGUI.GridMetaParameters.__init__
+VisionEgg.PyroApps.GridServer.GridMetaController.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetMetaParameters.__init__
+VisionEgg.PyroApps.MouseTargetServer.MousePositionController.__init__
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetOrientationController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetPositionController.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.CallbackEntry.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionParameters.__init__
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingMetaParameters.__init__
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumMetaParameters.__init__
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.__init__
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.__init__
+VisionEgg.PyroApps.TargetGUI.TargetMetaParameters.__init__
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.__init__
+VisionEgg.PyroClient.PyroClient.__init__
+VisionEgg.PyroHelpers.PyroConstantController.__init__
+VisionEgg.PyroHelpers.PyroEncapsulatedController.__init__
+VisionEgg.PyroHelpers.PyroEvalStringController.__init__
+VisionEgg.PyroHelpers.PyroExecStringController.__init__
+VisionEgg.PyroHelpers.PyroListenController.__init__
+VisionEgg.PyroHelpers.PyroLocalDictController.__init__
+VisionEgg.PyroHelpers.PyroServer.__init__
+VisionEgg.QuickTime.MovieTexture.__init__
+VisionEgg.ResponseControl.KeyboardResponseController.__init__
+VisionEgg.ResponseControl.ResponseController.__init__
+VisionEgg.SphereMap.AzElGrid.__init__
+VisionEgg.SphereMap.SphereGrating.__init__
+VisionEgg.SphereMap.SphereMap.__init__
+VisionEgg.SphereMap.SphereWindow.__init__
+VisionEgg.TCPController.SocketListenController.__init__
+VisionEgg.TCPController.TCPController.__init__
+VisionEgg.TCPController.TCPServer.__init__
+VisionEgg.Text.BitmapText.__init__
+VisionEgg.Text.GlutTextBase.__init__
+VisionEgg.Text.StrokeText.__init__
+VisionEgg.Text.Text.__init__
+VisionEgg.Textures.FixationCross.__init__
+VisionEgg.Textures.Mask2D.__init__
+VisionEgg.Textures.SpinningDrum.__init__
+VisionEgg.Textures.Texture.__init__
+VisionEgg.Textures.TextureFromFile.__init__
+VisionEgg.Textures.TextureObject.__init__
+VisionEgg.Textures.TextureStimulusBaseClass.__init__
+VisionEgg.ThreeDeeMath.TransformMatrix.__init__
+VisionEgg.WrappedText.WrappedText.__init__
+VisionEgg.qtmovie.Movie.__init__
+VisionEgg.qtmovie.Rect.__init__" class="py-name" href="#" onclick="return doclink('link-27', '__init__', 'link-27');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
+<a name="L39"></a><tt class="py-lineno"> 39</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt> <tt class="py-op">=</tt> <tt id="link-28" class="py-name"><a title="VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumMetaParameters" class="py-name" href="#" onclick="return doclink('link-28', 'SpinningDrumMetaParameters', 'link-26');">SpinningDrumMetaParameters</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L40"></a><tt class="py-lineno"> 40</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">screen</tt><tt class="py-op">,</tt><tt id="link-29" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-29', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-30" class="py-name"><a title="VisionEgg.Cor [...]
+<a name="L41"></a><tt class="py-lineno"> 41</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">"Expecting instance of VisionEgg.Core.Screen"</tt><tt class="py-op">)</tt> </tt>
+<a name="L42"></a><tt class="py-lineno"> 42</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">presentation</tt><tt class="py-op">,</tt><tt id="link-32" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-32', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-33" class="py-name"><a title="VisionE [...]
+<a name="L43"></a><tt class="py-lineno"> 43</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">"Expecting instance of VisionEgg.FlowControl.Presentation"</tt><tt class="py-op">)</tt> </tt>
+<a name="L44"></a><tt class="py-lineno"> 44</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">spinning_drum</tt><tt class="py-op">,</tt><tt id="link-35" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-35', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-36" class="py-name"><a title="Vision [...]
+<a name="L45"></a><tt class="py-lineno"> 45</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">"Expecting instance of VisionEgg.Textures.SpinningDrum"</tt><tt class="py-op">)</tt> </tt>
+<a name="L46"></a><tt class="py-lineno"> 46</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">p</tt> <tt class="py-op">=</tt> <tt class="py-name">presentation</tt> </tt>
+<a name="L47"></a><tt class="py-lineno"> 47</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stim</tt> <tt class="py-op">=</tt> <tt class="py-name">spinning_drum</tt> </tt>
+<a name="L48"></a><tt class="py-lineno"> 48</tt>  <tt class="py-line"> </tt>
+<a name="L49"></a><tt class="py-lineno"> 49</tt>  <tt class="py-line">        <tt class="py-name">screen</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">bgcolor</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-number">0.5</tt><tt class="py-op">,</tt> <tt class="py-number">0.5</tt><tt class="py-op">,</tt> <tt class="py-number">0.5</tt><tt class="py-op">,</tt> <tt class="py-number">0.0</tt><tt class="py-op">)</tt> </tt>
+<a name="L50"></a><tt class="py-lineno"> 50</tt>  <tt class="py-line"> </tt>
+<a name="L51"></a><tt class="py-lineno"> 51</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt id="link-38" class="py-name" targets="Method VisionEgg.FlowControl.Presentation.add_controller()=VisionEgg.FlowControl.Presentation-class.html#add_controller,Method VisionEgg.PyroHelpers.PyroLocalDictController.add_controller()=VisionEgg.PyroHelpers.PyroLocalDictController-class.html#add_controller"><a tit [...]
+VisionEgg.PyroHelpers.PyroLocalDictController.add_controller" class="py-name" href="#" onclick="return doclink('link-38', 'add_controller', 'link-38');">add_controller</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stim</tt><tt class="py-op">,</tt><tt class="py-string">'on'</tt><tt class="py-op">,</tt><tt id="link-39" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-39', 'VisionEgg', 'lin [...]
+<a name="L52"></a><tt class="py-lineno"> 52</tt>  <tt class="py-line">            <tt class="py-name">during_go_func</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-42" class="py-name" targets="Method VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.on_function_during_go()=VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController-class.html#on_function_during_go,Method VisionEgg.PyroApps.SphereGratingSer [...]
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.on_function_during_go
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.on_function_during_go
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.on_function_during_go" class="py-name" href="#" onclick="return doclink('link-42', 'on_function_during_go', 'link-42');">on_function_during_go</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L53"></a><tt class="py-lineno"> 53</tt>  <tt class="py-line">            <tt class="py-name">between_go_func</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-43" class="py-name" targets="Method VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.on_function_between_go()=VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController-class.html#on_function_between_go,Method VisionEgg.PyroApps.SphereGrating [...]
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.on_function_between_go
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.on_function_between_go
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.on_function_between_go" class="py-name" href="#" onclick="return doclink('link-43', 'on_function_between_go', 'link-43');">on_function_between_go</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L54"></a><tt class="py-lineno"> 54</tt>  <tt class="py-line"> </tt>
+<a name="L55"></a><tt class="py-lineno"> 55</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt id="link-44" class="py-name"><a title="VisionEgg.FlowControl.Presentation.add_controller
+VisionEgg.PyroHelpers.PyroLocalDictController.add_controller" class="py-name" href="#" onclick="return doclink('link-44', 'add_controller', 'link-38');">add_controller</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stim</tt><tt class="py-op">,</tt><tt class="py-string">'angular_position'</tt><tt class="py-op">,</tt><tt id="link-45" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-45', 'Vi [...]
+<a name="L56"></a><tt class="py-lineno"> 56</tt>  <tt class="py-line">            <tt class="py-name">during_go_func</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-48" class="py-name" targets="Method VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.angular_position_during_go()=VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController-class.html#angular_position_during_go"><a title="VisionEgg.PyroApp [...]
+<a name="L57"></a><tt class="py-lineno"> 57</tt>  <tt class="py-line">            <tt class="py-name">between_go_func</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-49" class="py-name" targets="Method VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.angular_position_between_go()=VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController-class.html#angular_position_between_go"><a title="VisionEgg.Pyro [...]
+</div><a name="L58"></a><tt class="py-lineno"> 58</tt>  <tt class="py-line"> </tt>
+<a name="SpinningDrumExperimentMetaController.__del__"></a><div id="SpinningDrumExperimentMetaController.__del__-def"><a name="L59"></a><tt class="py-lineno"> 59</tt> <a class="py-toggle" href="#" id="SpinningDrumExperimentMetaController.__del__-toggle" onclick="return toggle('SpinningDrumExperimentMetaController.__del__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController- [...]
+</div><div id="SpinningDrumExperimentMetaController.__del__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SpinningDrumExperimentMetaController.__del__-expanded"><a name="L60"></a><tt class="py-lineno"> 60</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt id="link-50" class="py-name" targets="Method VisionEgg.FlowControl.Presentation.remove_controller()=VisionEgg.FlowCo [...]
+<a name="L61"></a><tt class="py-lineno"> 61</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt id="link-51" class="py-name"><a title="VisionEgg.FlowControl.Presentation.remove_controller" class="py-name" href="#" onclick="return doclink('link-51', 'remove_controller', 'link-50');">remove_controller</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-nam [...]
+<a name="L62"></a><tt class="py-lineno"> 62</tt>  <tt class="py-line">        <tt class="py-name">Pyro</tt><tt class="py-op">.</tt><tt class="py-name">core</tt><tt class="py-op">.</tt><tt class="py-name">ObjBase</tt><tt class="py-op">.</tt><tt id="link-52" class="py-name" targets="Method VisionEgg.Core.Screen.__del__()=VisionEgg.Core.Screen-class.html#__del__,Method VisionEgg.DaqLPT.LPTOutput.__del__()=VisionEgg.DaqLPT.LPTOutput-class.html#__del__,Method VisionEgg.Gratings.SinGrating2D._ [...]
+VisionEgg.DaqLPT.LPTOutput.__del__
+VisionEgg.Gratings.SinGrating2D.__del__
+VisionEgg.Gratings.SinGrating3D.__del__
+VisionEgg.PyroApps.EPhysGUI.AppWindow.__del__
+VisionEgg.PyroApps.EPhysServer.EPhysServer.__del__
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.__del__
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.__del__
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.__del__
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.__del__
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.__del__
+VisionEgg.QuickTime.MovieTexture.__del__
+VisionEgg.Textures.TextureObject.__del__" class="py-name" href="#" onclick="return doclink('link-52', '__del__', 'link-52');">__del__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> <tt class="py-comment"># call base class</tt> </tt>
+</div><a name="L63"></a><tt class="py-lineno"> 63</tt>  <tt class="py-line"> </tt>
+<a name="SpinningDrumExperimentMetaController.on_function_during_go"></a><div id="SpinningDrumExperimentMetaController.on_function_during_go-def"><a name="L64"></a><tt class="py-lineno"> 64</tt> <a class="py-toggle" href="#" id="SpinningDrumExperimentMetaController.on_function_during_go-toggle" onclick="return toggle('SpinningDrumExperimentMetaController.on_function_during_go');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps. [...]
+</div><div id="SpinningDrumExperimentMetaController.on_function_during_go-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SpinningDrumExperimentMetaController.on_function_during_go-expanded"><a name="L65"></a><tt class="py-lineno"> 65</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">t</tt> <tt class="py-op"><=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op">. [...]
+<a name="L66"></a><tt class="py-lineno"> 66</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-number">0</tt> <tt class="py-comment"># not on yet</tt> </tt>
+<a name="L67"></a><tt class="py-lineno"> 67</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">t</tt> <tt class="py-op"><=</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op">.</tt><tt class="py-name">pre_stim_sec</tt> <tt class="py-op">+</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op">.</tt><tt class="p [...]
+<a name="L68"></a><tt class="py-lineno"> 68</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-number">1</tt> <tt class="py-comment"># on</tt> </tt>
+<a name="L69"></a><tt class="py-lineno"> 69</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L70"></a><tt class="py-lineno"> 70</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-number">0</tt> <tt class="py-comment"># off again</tt> </tt>
+</div><a name="L71"></a><tt class="py-lineno"> 71</tt>  <tt class="py-line">         </tt>
+<a name="SpinningDrumExperimentMetaController.on_function_between_go"></a><div id="SpinningDrumExperimentMetaController.on_function_between_go-def"><a name="L72"></a><tt class="py-lineno"> 72</tt> <a class="py-toggle" href="#" id="SpinningDrumExperimentMetaController.on_function_between_go-toggle" onclick="return toggle('SpinningDrumExperimentMetaController.on_function_between_go');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroA [...]
+</div><div id="SpinningDrumExperimentMetaController.on_function_between_go-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SpinningDrumExperimentMetaController.on_function_between_go-expanded"><a name="L73"></a><tt class="py-lineno"> 73</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-number">0</tt> <tt class="py-comment"># off</tt> </tt>
+</div><a name="L74"></a><tt class="py-lineno"> 74</tt>  <tt class="py-line"> </tt>
+<a name="SpinningDrumExperimentMetaController.angular_position_during_go"></a><div id="SpinningDrumExperimentMetaController.angular_position_during_go-def"><a name="L75"></a><tt class="py-lineno"> 75</tt> <a class="py-toggle" href="#" id="SpinningDrumExperimentMetaController.angular_position_during_go-toggle" onclick="return toggle('SpinningDrumExperimentMetaController.angular_position_during_go');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href= [...]
+</div><div id="SpinningDrumExperimentMetaController.angular_position_during_go-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SpinningDrumExperimentMetaController.angular_position_during_go-expanded"><a name="L76"></a><tt class="py-lineno"> 76</tt>  <tt class="py-line">        <tt class="py-name">adjusted_t</tt> <tt class="py-op">=</tt> <tt class="py-name">t</tt> <tt class="py-op">-</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name" [...]
+<a name="L77"></a><tt class="py-lineno"> 77</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-op">(</tt><tt class="py-name">adjusted_t</tt> <tt class="py-op">*</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op">.</tt><tt class="py-name">velocity_dps</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt c [...]
+</div><a name="L78"></a><tt class="py-lineno"> 78</tt>  <tt class="py-line"> </tt>
+<a name="SpinningDrumExperimentMetaController.angular_position_between_go"></a><div id="SpinningDrumExperimentMetaController.angular_position_between_go-def"><a name="L79"></a><tt class="py-lineno"> 79</tt> <a class="py-toggle" href="#" id="SpinningDrumExperimentMetaController.angular_position_between_go-toggle" onclick="return toggle('SpinningDrumExperimentMetaController.angular_position_between_go');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" h [...]
+</div><div id="SpinningDrumExperimentMetaController.angular_position_between_go-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SpinningDrumExperimentMetaController.angular_position_between_go-expanded"><a name="L80"></a><tt class="py-lineno"> 80</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-number">0.0</tt> <tt class="py-comment"># doesn't matter -- stimulus off</tt> </tt>
+</div><a name="L81"></a><tt class="py-lineno"> 81</tt>  <tt class="py-line"> </tt>
+<a name="SpinningDrumExperimentMetaController.get_parameters"></a><div id="SpinningDrumExperimentMetaController.get_parameters-def"><a name="L82"></a><tt class="py-lineno"> 82</tt> <a class="py-toggle" href="#" id="SpinningDrumExperimentMetaController.get_parameters-toggle" onclick="return toggle('SpinningDrumExperimentMetaController.get_parameters');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.SpinningDrumServer.SpinningD [...]
+</div><div id="SpinningDrumExperimentMetaController.get_parameters-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SpinningDrumExperimentMetaController.get_parameters-expanded"><a name="L83"></a><tt class="py-lineno"> 83</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt> </tt>
+</div><a name="L84"></a><tt class="py-lineno"> 84</tt>  <tt class="py-line"> </tt>
+<a name="SpinningDrumExperimentMetaController.set_parameters"></a><div id="SpinningDrumExperimentMetaController.set_parameters-def"><a name="L85"></a><tt class="py-lineno"> 85</tt> <a class="py-toggle" href="#" id="SpinningDrumExperimentMetaController.set_parameters-toggle" onclick="return toggle('SpinningDrumExperimentMetaController.set_parameters');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.SpinningDrumServer.SpinningD [...]
+</div><div id="SpinningDrumExperimentMetaController.set_parameters-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SpinningDrumExperimentMetaController.set_parameters-expanded"><a name="L86"></a><tt class="py-lineno"> 86</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">new_parameters</tt><tt class="py-op">,</tt> <tt id="link-53" class="py-name"><a title="VisionEgg.Py [...]
+<a name="L87"></a><tt class="py-lineno"> 87</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt> <tt class="py-op">=</tt> <tt class="py-name">new_parameters</tt> </tt>
+<a name="L88"></a><tt class="py-lineno"> 88</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L89"></a><tt class="py-lineno"> 89</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">"Argument to set_parameters must be instance of SpinningDrumMetaParameters"</tt><tt class="py-op">)</tt> </tt>
+<a name="L90"></a><tt class="py-lineno"> 90</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-54" class="py-name" targets="Method VisionEgg.GUI.InfoFrame.update()=VisionEgg.GUI.InfoFrame-class.html#update,Method VisionEgg.GUI.ProgressBar.update()=VisionEgg.GUI.ProgressBar-class.html#update,Method VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.update()=VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController-class.html#update,Met [...]
+VisionEgg.GUI.ProgressBar.update
+VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.update
+VisionEgg.PyroApps.DropinServer.DropinMetaController.update
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.update
+VisionEgg.PyroApps.GridServer.GridMetaController.update
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.update
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.update
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.update
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.update
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.update
+VisionEgg.QuickTime.MovieTexture.update
+VisionEgg.Textures.Texture.update" class="py-name" href="#" onclick="return doclink('link-54', 'update', 'link-54');">update</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L91"></a><tt class="py-lineno"> 91</tt>  <tt class="py-line">         </tt>
+<a name="SpinningDrumExperimentMetaController.update"></a><div id="SpinningDrumExperimentMetaController.update-def"><a name="L92"></a><tt class="py-lineno"> 92</tt> <a class="py-toggle" href="#" id="SpinningDrumExperimentMetaController.update-toggle" onclick="return toggle('SpinningDrumExperimentMetaController.update');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController-clas [...]
+</div><div id="SpinningDrumExperimentMetaController.update-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SpinningDrumExperimentMetaController.update-expanded"><a name="L93"></a><tt class="py-lineno"> 93</tt>  <tt class="py-line">        <tt class="py-name">stim_params</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stim</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt> <tt class="py-comment [...]
+<a name="L94"></a><tt class="py-lineno"> 94</tt>  <tt class="py-line">        <tt class="py-name">meta_params</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt> <tt class="py-comment"># shorthand</tt> </tt>
+<a name="L95"></a><tt class="py-lineno"> 95</tt>  <tt class="py-line">        <tt class="py-name">stim_params</tt><tt class="py-op">.</tt><tt class="py-name">contrast</tt> <tt class="py-op">=</tt> <tt class="py-name">meta_params</tt><tt class="py-op">.</tt><tt class="py-name">contrast</tt> </tt>
+<a name="L96"></a><tt class="py-lineno"> 96</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">go_duration</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt> <tt class="py-name">meta_params</tt><tt class="py-op">.</tt><tt class="py-name">pre_stim_sec</tt> <tt class="py-op">+</tt> <tt class="py-name">meta_params</tt><tt cl [...]
+</div><a name="L97"></a><tt class="py-lineno"> 97</tt>  <tt class="py-line"> </tt>
+<a name="SpinningDrumExperimentMetaController.go"></a><div id="SpinningDrumExperimentMetaController.go-def"><a name="L98"></a><tt class="py-lineno"> 98</tt> <a class="py-toggle" href="#" id="SpinningDrumExperimentMetaController.go-toggle" onclick="return toggle('SpinningDrumExperimentMetaController.go');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController-class.html#go">go</a [...]
+</div><div id="SpinningDrumExperimentMetaController.go-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SpinningDrumExperimentMetaController.go-expanded"><a name="L99"></a><tt class="py-lineno"> 99</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">enter_go_loop</tt> <tt class="py-op">=</tt> <tt cla [...]
+</div><a name="L100"></a><tt class="py-lineno">100</tt>  <tt class="py-line"> </tt>
+<a name="SpinningDrumExperimentMetaController.quit_server"></a><div id="SpinningDrumExperimentMetaController.quit_server-def"><a name="L101"></a><tt class="py-lineno">101</tt> <a class="py-toggle" href="#" id="SpinningDrumExperimentMetaController.quit_server-toggle" onclick="return toggle('SpinningDrumExperimentMetaController.quit_server');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperime [...]
+</div><div id="SpinningDrumExperimentMetaController.quit_server-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SpinningDrumExperimentMetaController.quit_server-expanded"><a name="L102"></a><tt class="py-lineno">102</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt id="link-55" class="py-name" targets="Method Vis [...]
+</div></div><a name="L103"></a><tt class="py-lineno">103</tt>  <tt class="py-line"> </tt>
+<a name="get_meta_controller_class"></a><div id="get_meta_controller_class-def"><a name="L104"></a><tt class="py-lineno">104</tt> <a class="py-toggle" href="#" id="get_meta_controller_class-toggle" onclick="return toggle('get_meta_controller_class');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.SpinningDrumServer-module.html#get_meta_controller_class">get_meta_controller_class</a><tt class="py-op">(</tt><tt class="py-op">)</tt> [...]
+</div><div id="get_meta_controller_class-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="get_meta_controller_class-expanded"><a name="L105"></a><tt class="py-lineno">105</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt id="link-56" class="py-name" targets="Class VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController=VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController-class.html"><a title="VisionEgg.Pyr [...]
+</div><a name="L106"></a><tt class="py-lineno">106</tt>  <tt class="py-line"> </tt>
+<a name="make_stimuli"></a><div id="make_stimuli-def"><a name="L107"></a><tt class="py-lineno">107</tt> <a class="py-toggle" href="#" id="make_stimuli-toggle" onclick="return toggle('make_stimuli');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.SpinningDrumServer-module.html#make_stimuli">make_stimuli</a><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="make_stimuli-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="make_stimuli-expanded"><a name="L108"></a><tt class="py-lineno">108</tt>  <tt class="py-line">    <tt class="py-name">filename</tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">path</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt id="link-57" class="py-name"><a title="VisionEgg" class="py-name" href="#" [...]
+<a name="L109"></a><tt class="py-lineno">109</tt>  <tt class="py-line">    <tt class="py-name">texture</tt> <tt class="py-op">=</tt> <tt id="link-59" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-59', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-60" class="py-name"><a title="VisionEgg.Textures" class="py-name" href="#" onclick="return doclink('link-60', 'Textures', 'link-12');">Textures</a></tt><tt class="py [...]
+<a name="L110"></a><tt class="py-lineno">110</tt>  <tt class="py-line">    <tt class="py-name">stimulus</tt> <tt class="py-op">=</tt> <tt id="link-62" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-62', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-63" class="py-name"><a title="VisionEgg.Textures" class="py-name" href="#" onclick="return doclink('link-63', 'Textures', 'link-12');">Textures</a></tt><tt class="p [...]
+<a name="L111"></a><tt class="py-lineno">111</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-op">[</tt><tt class="py-op">(</tt><tt class="py-string">'3d_perspective'</tt><tt class="py-op">,</tt><tt class="py-name">stimulus</tt><tt class="py-op">)</tt><tt class="py-op">]</tt> <tt class="py-comment"># return ordered list of tuples</tt> </tt>
+</div><a name="L112"></a><tt class="py-lineno">112</tt>  <tt class="py-line"> </tt>
+<a name="get_meta_controller_stimkey"></a><div id="get_meta_controller_stimkey-def"><a name="L113"></a><tt class="py-lineno">113</tt> <a class="py-toggle" href="#" id="get_meta_controller_stimkey-toggle" onclick="return toggle('get_meta_controller_stimkey');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.SpinningDrumServer-module.html#get_meta_controller_stimkey">get_meta_controller_stimkey</a><tt class="py-op">(</tt><tt class="p [...]
+</div><div id="get_meta_controller_stimkey-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="get_meta_controller_stimkey-expanded"><a name="L114"></a><tt class="py-lineno">114</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-string">"spinning_drum_server"</tt> </tt>
+</div><a name="L115"></a><tt class="py-lineno">115</tt>  <tt class="py-line"> </tt>
+<a name="L116"></a><tt class="py-lineno">116</tt>  <tt class="py-line"><tt class="py-comment"># Don't do anything unless this script is being run</tt> </tt>
+<a name="L117"></a><tt class="py-lineno">117</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-keyword">if</tt> <tt class="py-name">__name__</tt> <tt class="py-op">==</tt> <tt class="py-string">'__main__'</tt><tt class="py-op">:</tt> </tt>
+<a name="L118"></a><tt class="py-lineno">118</tt>  <tt class="py-line">     </tt>
+<a name="L119"></a><tt class="py-lineno">119</tt>  <tt class="py-line">    <tt class="py-name">pyro_server</tt> <tt class="py-op">=</tt> <tt id="link-65" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-65', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-66" class="py-name"><a title="VisionEgg.PyroHelpers" class="py-name" href="#" onclick="return doclink('link-66', 'PyroHelpers', 'link-14');">PyroHelpers</a></tt> [...]
+<a name="L120"></a><tt class="py-lineno">120</tt>  <tt class="py-line"> </tt>
+<a name="L121"></a><tt class="py-lineno">121</tt>  <tt class="py-line">    <tt class="py-name">screen</tt> <tt class="py-op">=</tt> <tt id="link-68" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-68', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-69" class="py-name"><a title="VisionEgg.Core" class="py-name" href="#" onclick="return doclink('link-69', 'Core', 'link-8');">Core</a></tt><tt class="py-op">.</tt><tt [...]
+<a name="L122"></a><tt class="py-lineno">122</tt>  <tt class="py-line"> </tt>
+<a name="L123"></a><tt class="py-lineno">123</tt>  <tt class="py-line">    <tt class="py-comment"># get Vision Egg stimulus ready to go</tt> </tt>
+<a name="L124"></a><tt class="py-lineno">124</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">stimuli</tt> <tt class="py-op">=</tt> <tt id="link-72" class="py-name" targets="Function VisionEgg.PyroApps.ColorCalServer.make_stimuli()=VisionEgg.PyroApps.ColorCalServer-module.html#make_stimuli,Function VisionEgg.PyroApps.DropinServer.make_stimuli()=VisionEgg.PyroApps.DropinServer-module.html#make_stimuli,Function VisionEgg.PyroApps.FlatGratingServer.make_stimuli( [...]
+VisionEgg.PyroApps.DropinServer.make_stimuli
+VisionEgg.PyroApps.FlatGratingServer.make_stimuli
+VisionEgg.PyroApps.GridServer.make_stimuli
+VisionEgg.PyroApps.MouseTargetServer.make_stimuli
+VisionEgg.PyroApps.SphereGratingServer.make_stimuli
+VisionEgg.PyroApps.SpinningDrumServer.make_stimuli
+VisionEgg.PyroApps.TargetServer.make_stimuli" class="py-name" href="#" onclick="return doclink('link-72', 'make_stimuli', 'link-72');">make_stimuli</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L125"></a><tt class="py-lineno">125</tt>  <tt class="py-line">    <tt class="py-name">stimulus</tt> <tt class="py-op">=</tt> <tt class="py-name">stimuli</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
+<a name="L126"></a><tt class="py-lineno">126</tt>  <tt class="py-line">    <tt class="py-name">temp</tt> <tt class="py-op">=</tt> <tt id="link-73" class="py-name"><a title="VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionParameters" class="py-name" href="#" onclick="return doclink('link-73', 'ScreenPositionParameters', 'link-22');">ScreenPositionParameters</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L127"></a><tt class="py-lineno">127</tt>  <tt class="py-line"> </tt>
+<a name="L128"></a><tt class="py-lineno">128</tt>  <tt class="py-line">    <tt class="py-name">projection</tt> <tt class="py-op">=</tt> <tt id="link-74" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-74', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-75" class="py-name"><a title="VisionEgg.Core" class="py-name" href="#" onclick="return doclink('link-75', 'Core', 'link-8');">Core</a></tt><tt class="py-op">.</tt [...]
+<a name="L129"></a><tt class="py-lineno">129</tt>  <tt class="py-line">                                                      <tt class="py-name">temp</tt><tt class="py-op">.</tt><tt id="link-78" class="py-name" targets="Variable VisionEgg.PyroApps.MouseTargetServer.right=VisionEgg.PyroApps.MouseTargetServer-module.html#right"><a title="VisionEgg.PyroApps.MouseTargetServer.right" class="py-name" href="#" onclick="return doclink('link-78', 'right', 'link-78');">right</a></tt><tt class="py- [...]
+<a name="L130"></a><tt class="py-lineno">130</tt>  <tt class="py-line">                                                      <tt class="py-name">temp</tt><tt class="py-op">.</tt><tt class="py-name">bottom</tt><tt class="py-op">,</tt> </tt>
+<a name="L131"></a><tt class="py-lineno">131</tt>  <tt class="py-line">                                                      <tt class="py-name">temp</tt><tt class="py-op">.</tt><tt class="py-name">top</tt><tt class="py-op">,</tt> </tt>
+<a name="L132"></a><tt class="py-lineno">132</tt>  <tt class="py-line">                                                      <tt class="py-name">temp</tt><tt class="py-op">.</tt><tt class="py-name">near</tt><tt class="py-op">,</tt> </tt>
+<a name="L133"></a><tt class="py-lineno">133</tt>  <tt class="py-line">                                                      <tt class="py-name">temp</tt><tt class="py-op">.</tt><tt class="py-name">far</tt><tt class="py-op">)</tt> </tt>
+<a name="L134"></a><tt class="py-lineno">134</tt>  <tt class="py-line">    <tt class="py-name">viewport</tt> <tt class="py-op">=</tt> <tt id="link-79" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-79', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-80" class="py-name"><a title="VisionEgg.Core" class="py-name" href="#" onclick="return doclink('link-80', 'Core', 'link-8');">Core</a></tt><tt class="py-op">.</tt>< [...]
+<a name="L135"></a><tt class="py-lineno">135</tt>  <tt class="py-line">    <tt class="py-name">p</tt> <tt class="py-op">=</tt> <tt id="link-82" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-82', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-83" class="py-name"><a title="VisionEgg.FlowControl" class="py-name" href="#" onclick="return doclink('link-83', 'FlowControl', 'link-10');">FlowControl</a></tt><tt class= [...]
+<a name="L136"></a><tt class="py-lineno">136</tt>  <tt class="py-line"> </tt>
+<a name="L137"></a><tt class="py-lineno">137</tt>  <tt class="py-line">    <tt class="py-comment"># now hand over control of projection to ScreenPositionMetaController</tt> </tt>
+<a name="L138"></a><tt class="py-lineno">138</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">projection_controller</tt> <tt class="py-op">=</tt> <tt id="link-85" class="py-name"><a title="VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController" class="py-name" href="#" onclick="return doclink('link-85', 'ScreenPositionMetaController', 'link-18');">ScreenPositionMetaController</a></tt><tt class="py-op">(</tt><tt class="py-name">p</tt><tt class="p [...]
+<a name="L139"></a><tt class="py-lineno">139</tt>  <tt class="py-line">    <tt class="py-name">pyro_server</tt><tt class="py-op">.</tt><tt id="link-86" class="py-name" targets="Method VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.connect()=VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#connect,Method VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.connect()=VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html#connect,Method  [...]
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.connect
+VisionEgg.PyroHelpers.PyroServer.connect" class="py-name" href="#" onclick="return doclink('link-86', 'connect', 'link-86');">connect</a></tt><tt class="py-op">(</tt><tt class="py-name">projection_controller</tt><tt class="py-op">,</tt><tt class="py-string">"projection_controller"</tt><tt class="py-op">)</tt> </tt>
+<a name="L140"></a><tt class="py-lineno">140</tt>  <tt class="py-line"> </tt>
+<a name="L141"></a><tt class="py-lineno">141</tt>  <tt class="py-line">    <tt class="py-comment"># now hand over control of drum to SpinningDrumExperimentMetaController</tt> </tt>
+<a name="L142"></a><tt class="py-lineno">142</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">meta_controller</tt> <tt class="py-op">=</tt> <tt id="link-87" class="py-name"><a title="VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController" class="py-name" href="#" onclick="return doclink('link-87', 'SpinningDrumExperimentMetaController', 'link-56');">SpinningDrumExperimentMetaController</a></tt><tt class="py-op">(</tt><tt class="py-name">sc [...]
+<a name="L143"></a><tt class="py-lineno">143</tt>  <tt class="py-line">    <tt class="py-name">pyro_server</tt><tt class="py-op">.</tt><tt id="link-88" class="py-name"><a title="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.connect
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.connect
+VisionEgg.PyroHelpers.PyroServer.connect" class="py-name" href="#" onclick="return doclink('link-88', 'connect', 'link-86');">connect</a></tt><tt class="py-op">(</tt><tt class="py-name">meta_controller</tt><tt class="py-op">,</tt><tt id="link-89" class="py-name" targets="Function VisionEgg.PyroApps.ColorCalServer.get_meta_controller_stimkey()=VisionEgg.PyroApps.ColorCalServer-module.html#get_meta_controller_stimkey,Function VisionEgg.PyroApps.DropinServer.get_meta_controller_stimkey()=Vi [...]
+VisionEgg.PyroApps.DropinServer.get_meta_controller_stimkey
+VisionEgg.PyroApps.FlatGratingServer.get_meta_controller_stimkey
+VisionEgg.PyroApps.GridServer.get_meta_controller_stimkey
+VisionEgg.PyroApps.MouseTargetServer.get_meta_controller_stimkey
+VisionEgg.PyroApps.SphereGratingServer.get_meta_controller_stimkey
+VisionEgg.PyroApps.SpinningDrumServer.get_meta_controller_stimkey
+VisionEgg.PyroApps.TargetServer.get_meta_controller_stimkey" class="py-name" href="#" onclick="return doclink('link-89', 'get_meta_controller_stimkey', 'link-89');">get_meta_controller_stimkey</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L144"></a><tt class="py-lineno">144</tt>  <tt class="py-line"> </tt>
+<a name="L145"></a><tt class="py-lineno">145</tt>  <tt class="py-line">    <tt class="py-comment"># get listener controller and register it</tt> </tt>
+<a name="L146"></a><tt class="py-lineno">146</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">p</tt><tt class="py-op">.</tt><tt id="link-90" class="py-name"><a title="VisionEgg.FlowControl.Presentation.add_controller
+VisionEgg.PyroHelpers.PyroLocalDictController.add_controller" class="py-name" href="#" onclick="return doclink('link-90', 'add_controller', 'link-38');">add_controller</a></tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-name">pyro_server</tt><tt class="py-op">.</tt><tt id="link-91" class="py-name" targets="Method VisionEgg.PyroHelpers.PyroServer.create_listener_controller()=VisionEgg.Pyro [...]
+<a name="L147"></a><tt class="py-lineno">147</tt>  <tt class="py-line"> </tt>
+<a name="L148"></a><tt class="py-lineno">148</tt>  <tt class="py-line">    <tt class="py-comment"># enter endless loop</tt> </tt>
+<a name="L149"></a><tt class="py-lineno">149</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">p</tt><tt class="py-op">.</tt><tt id="link-92" class="py-name" targets="Method VisionEgg.FlowControl.Presentation.run_forever()=VisionEgg.FlowControl.Presentation-class.html#run_forever"><a title="VisionEgg.FlowControl.Presentation.run_forever" class="py-name" href="#" onclick="return doclink('link-92', 'run_forever', 'link-92');">run_forever</a></tt><tt class="py-op [...]
+<a name="L150"></a><tt class="py-lineno">150</tt>  <tt class="py-line"> </tt><script type="text/javascript">
+<!--
+expandto(location.href);
+// -->
+</script>
+</pre>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:47 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController-class.html b/doc/reference/html/VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController-class.html
new file mode 100644
index 0000000..d7f1ffa
--- /dev/null
+++ b/doc/reference/html/VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController-class.html
@@ -0,0 +1,366 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.PyroApps-module.html">Package PyroApps</a> ::
+        <a href="VisionEgg.PyroApps.SpinningDrumServer-module.html">Module SpinningDrumServer</a> ::
+        Class SpinningDrumExperimentMetaController
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class SpinningDrumExperimentMetaController</h1><span class="codelink"><a href="VisionEgg.PyroApps.SpinningDrumServer-pysrc.html#SpinningDrumExperimentMetaController">source code</a></span><br /><br />
+<pre class="base-tree">
+Pyro.core.ObjBase --+
+                    |
+                   <strong class="uidshort">SpinningDrumExperimentMetaController</strong>
+</pre>
+
+<hr />
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">screen</span>,
+        <span class="summary-sig-arg">presentation</span>,
+        <span class="summary-sig-arg">stimuli</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.SpinningDrumServer-pysrc.html#SpinningDrumExperimentMetaController.__init__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__del__"></a><span class="summary-sig-name">__del__</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.SpinningDrumServer-pysrc.html#SpinningDrumExperimentMetaController.__del__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="on_function_during_go"></a><span class="summary-sig-name">on_function_during_go</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">t</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.SpinningDrumServer-pysrc.html#SpinningDrumExperimentMetaController.on_function_during_go">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="on_function_between_go"></a><span class="summary-sig-name">on_function_between_go</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.SpinningDrumServer-pysrc.html#SpinningDrumExperimentMetaController.on_function_between_go">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="angular_position_during_go"></a><span class="summary-sig-name">angular_position_during_go</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">t</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.SpinningDrumServer-pysrc.html#SpinningDrumExperimentMetaController.angular_position_during_go">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="angular_position_between_go"></a><span class="summary-sig-name">angular_position_between_go</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.SpinningDrumServer-pysrc.html#SpinningDrumExperimentMetaController.angular_position_between_go">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="get_parameters"></a><span class="summary-sig-name">get_parameters</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.SpinningDrumServer-pysrc.html#SpinningDrumExperimentMetaController.get_parameters">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="set_parameters"></a><span class="summary-sig-name">set_parameters</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">new_parameters</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.SpinningDrumServer-pysrc.html#SpinningDrumExperimentMetaController.set_parameters">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="update"></a><span class="summary-sig-name">update</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.SpinningDrumServer-pysrc.html#SpinningDrumExperimentMetaController.update">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="go"></a><span class="summary-sig-name">go</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.SpinningDrumServer-pysrc.html#SpinningDrumExperimentMetaController.go">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="quit_server"></a><span class="summary-sig-name">quit_server</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.SpinningDrumServer-pysrc.html#SpinningDrumExperimentMetaController.quit_server">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>Pyro.core.ObjBase</code></b>:
+      <code>GUID</code>,
+      <code>Pyro_dyncall</code>,
+      <code>delegateTo</code>,
+      <code>getAttrProxy</code>,
+      <code>getDaemon</code>,
+      <code>getLocalStorage</code>,
+      <code>getProxy</code>,
+      <code>remote_retrieve_code</code>,
+      <code>remote_supply_code</code>,
+      <code>setCodeValidator</code>,
+      <code>setGUID</code>,
+      <code>setPyroDaemon</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Method Details</span></td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">screen</span>,
+        <span class="sig-arg">presentation</span>,
+        <span class="sig-arg">stimuli</span>)</span>
+    <br /><em class="fname">(Constructor)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.PyroApps.SpinningDrumServer-pysrc.html#SpinningDrumExperimentMetaController.__init__">source code</a></span> 
+    </td>
+  </table>
+  
+  
+  <dl class="fields">
+    <dt>Overrides:
+      Pyro.core.ObjBase.__init__
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:47 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.PyroApps.TargetGUI-module.html b/doc/reference/html/VisionEgg.PyroApps.TargetGUI-module.html
new file mode 100644
index 0000000..6f3c293
--- /dev/null
+++ b/doc/reference/html/VisionEgg.PyroApps.TargetGUI-module.html
@@ -0,0 +1,196 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.PyroApps.TargetGUI</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.PyroApps-module.html">Package PyroApps</a> ::
+        Module TargetGUI
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.PyroApps.TargetGUI-module.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== MODULE DESCRIPTION ==================== -->
+<h1 class="epydoc">Module TargetGUI</h1><span class="codelink"><a href="VisionEgg.PyroApps.TargetGUI-pysrc.html">source code</a></span><br /><br />
+<pre class="literalblock">
+Handle small target stimulus (client-side)
+
+</pre><br /><br />
+
+<hr />
+<div class="fields">      <p><strong>Version:</strong>
+        1.1.dev
+      </p>
+      <p><strong>Author:</strong>
+        Andrew Straw <astraw at users.sourceforge.net>
+      </p>
+</div><!-- ==================== CLASSES ==================== -->
+<a name="section-Classes"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Classes</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.PyroApps.TargetGUI.TargetMetaParameters-class.html" class="summary-name">TargetMetaParameters</a>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.PyroApps.TargetGUI.TargetControlFrame-class.html" class="summary-name">TargetControlFrame</a>
+    </td>
+  </tr>
+</table>
+<!-- ==================== FUNCTIONS ==================== -->
+<a name="section-Functions"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Functions</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="get_control_list"></a><span class="summary-sig-name">get_control_list</span>()</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.TargetGUI-pysrc.html#get_control_list">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+</table>
+<!-- ==================== VARIABLES ==================== -->
+<a name="section-Variables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Variables</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="__cvs__"></a><span class="summary-name">__cvs__</span> = <code title="'$Revision$'.split() [1]">'$Revision$'.split() [1]</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="__date__"></a><span class="summary-name">__date__</span> = <code title="' '.join('$Date$'.split() [1: 3])">' '.join('$Date$'.split() [1: 3])</code>
+    </td>
+  </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.PyroApps.TargetGUI-pysrc.html b/doc/reference/html/VisionEgg.PyroApps.TargetGUI-pysrc.html
new file mode 100644
index 0000000..a299da4
--- /dev/null
+++ b/doc/reference/html/VisionEgg.PyroApps.TargetGUI-pysrc.html
@@ -0,0 +1,581 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.PyroApps.TargetGUI</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.PyroApps-module.html">Package PyroApps</a> ::
+        Module TargetGUI
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.PyroApps.TargetGUI-pysrc.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<h1 class="epydoc">Source Code for <a href="VisionEgg.PyroApps.TargetGUI-module.html">Module VisionEgg.PyroApps.TargetGUI</a></h1>
+<pre class="py-src">
+<a name="L1"></a><tt class="py-lineno">  1</tt>  <tt class="py-line"><tt class="py-comment">#!/usr/bin/env python</tt> </tt>
+<a name="L2"></a><tt class="py-lineno">  2</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L3"></a><tt class="py-lineno">  3</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># The Vision Egg: TargetGUI</tt> </tt>
+<a name="L4"></a><tt class="py-lineno">  4</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L5"></a><tt class="py-lineno">  5</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Copyright (C) 2001-2003 Andrew Straw.</tt> </tt>
+<a name="L6"></a><tt class="py-lineno">  6</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Author: Andrew Straw <astraw at users.sourceforge.net></tt> </tt>
+<a name="L7"></a><tt class="py-lineno">  7</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># URL: <http://www.visionegg.org/></tt> </tt>
+<a name="L8"></a><tt class="py-lineno">  8</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L9"></a><tt class="py-lineno">  9</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Distributed under the terms of the GNU Lesser General Public License</tt> </tt>
+<a name="L10"></a><tt class="py-lineno"> 10</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># (LGPL). See LICENSE.TXT that came with this file.</tt> </tt>
+<a name="L11"></a><tt class="py-lineno"> 11</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L12"></a><tt class="py-lineno"> 12</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># $Id$</tt> </tt>
+<a name="L13"></a><tt class="py-lineno"> 13</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L14"></a><tt class="py-lineno"> 14</tt>  <tt class="py-line"><tt class="py-docstring">"""Handle small target stimulus (client-side)"""</tt> </tt>
+<a name="L15"></a><tt class="py-lineno"> 15</tt>  <tt class="py-line"> </tt>
+<a name="L16"></a><tt class="py-lineno"> 16</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-0" class="py-name" targets="Package VisionEgg=VisionEgg-module.html"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-0', 'VisionEgg', 'link-0');">VisionEgg</a></tt> </tt>
+<a name="L17"></a><tt class="py-lineno"> 17</tt>  <tt class="py-line"><tt id="link-1" class="py-name" targets="Variable VisionEgg.DaqKeyboard.__version__=VisionEgg.DaqKeyboard-module.html#__version__,Variable VisionEgg.DaqLPT.__version__=VisionEgg.DaqLPT-module.html#__version__,Variable VisionEgg.GL.__version__=VisionEgg.GL-module.html#__version__,Variable VisionEgg.PyroApps.EPhysGUI.__version__=VisionEgg.PyroApps.EPhysGUI-module.html#__version__,Variable VisionEgg.PyroApps.EPhysGUIUtils [...]
+VisionEgg.DaqLPT.__version__
+VisionEgg.GL.__version__
+VisionEgg.PyroApps.EPhysGUI.__version__
+VisionEgg.PyroApps.EPhysGUIUtils.__version__
+VisionEgg.PyroApps.EPhysServer.__version__
+VisionEgg.PyroApps.GridGUI.__version__
+VisionEgg.PyroApps.GridServer.__version__
+VisionEgg.PyroApps.ScreenPositionGUI.__version__
+VisionEgg.PyroApps.ScreenPositionServer.__version__
+VisionEgg.PyroApps.SpinningDrumGUI.__version__
+VisionEgg.PyroApps.SpinningDrumServer.__version__
+VisionEgg.PyroHelpers.__version__
+VisionEgg.QuickTime.__version__
+VisionEgg.ResponseControl.__version__
+VisionEgg.SphereMap.__version__
+VisionEgg.TCPController.__version__" class="py-name" href="#" onclick="return doclink('link-1', '__version__', 'link-1');">__version__</a></tt> <tt class="py-op">=</tt> <tt id="link-2" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-2', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-3" class="py-name" targets="Variable VisionEgg.release_name=VisionEgg-module.html#release_name"><a title="VisionEgg.release_name" c [...]
+<a name="L18"></a><tt class="py-lineno"> 18</tt>  <tt class="py-line"><tt id="link-4" class="py-name" targets="Variable VisionEgg.PyroApps.ColorCalGUI.__cvs__=VisionEgg.PyroApps.ColorCalGUI-module.html#__cvs__,Variable VisionEgg.PyroApps.ColorCalServer.__cvs__=VisionEgg.PyroApps.ColorCalServer-module.html#__cvs__,Variable VisionEgg.PyroApps.EPhysGUI.__cvs__=VisionEgg.PyroApps.EPhysGUI-module.html#__cvs__,Variable VisionEgg.PyroApps.EPhysGUIUtils.__cvs__=VisionEgg.PyroApps.EPhysGUIUtils-m [...]
+VisionEgg.PyroApps.ColorCalServer.__cvs__
+VisionEgg.PyroApps.EPhysGUI.__cvs__
+VisionEgg.PyroApps.EPhysGUIUtils.__cvs__
+VisionEgg.PyroApps.EPhysServer.__cvs__
+VisionEgg.PyroApps.FlatGratingGUI.__cvs__
+VisionEgg.PyroApps.FlatGratingServer.__cvs__
+VisionEgg.PyroApps.GridGUI.__cvs__
+VisionEgg.PyroApps.GridServer.__cvs__
+VisionEgg.PyroApps.MouseTargetGUI.__cvs__
+VisionEgg.PyroApps.MouseTargetServer.__cvs__
+VisionEgg.PyroApps.ScreenPositionGUI.__cvs__
+VisionEgg.PyroApps.ScreenPositionServer.__cvs__
+VisionEgg.PyroApps.SphereGratingGUI.__cvs__
+VisionEgg.PyroApps.SphereGratingServer.__cvs__
+VisionEgg.PyroApps.SpinningDrumGUI.__cvs__
+VisionEgg.PyroApps.SpinningDrumServer.__cvs__
+VisionEgg.PyroApps.TargetGUI.__cvs__
+VisionEgg.PyroApps.TargetServer.__cvs__
+VisionEgg.PyroClient.__cvs__
+VisionEgg.PyroHelpers.__cvs__
+VisionEgg.TCPController.__cvs__" class="py-name" href="#" onclick="return doclink('link-4', '__cvs__', 'link-4');">__cvs__</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'$Revision$'</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
+<a name="L19"></a><tt class="py-lineno"> 19</tt>  <tt class="py-line"><tt id="link-5" class="py-name" targets="Variable VisionEgg.PyroApps.ColorCalGUI.__date__=VisionEgg.PyroApps.ColorCalGUI-module.html#__date__,Variable VisionEgg.PyroApps.ColorCalServer.__date__=VisionEgg.PyroApps.ColorCalServer-module.html#__date__,Variable VisionEgg.PyroApps.EPhysGUI.__date__=VisionEgg.PyroApps.EPhysGUI-module.html#__date__,Variable VisionEgg.PyroApps.EPhysGUIUtils.__date__=VisionEgg.PyroApps.EPhysGUI [...]
+VisionEgg.PyroApps.ColorCalServer.__date__
+VisionEgg.PyroApps.EPhysGUI.__date__
+VisionEgg.PyroApps.EPhysGUIUtils.__date__
+VisionEgg.PyroApps.EPhysServer.__date__
+VisionEgg.PyroApps.FlatGratingGUI.__date__
+VisionEgg.PyroApps.FlatGratingServer.__date__
+VisionEgg.PyroApps.GridGUI.__date__
+VisionEgg.PyroApps.GridServer.__date__
+VisionEgg.PyroApps.MouseTargetGUI.__date__
+VisionEgg.PyroApps.MouseTargetServer.__date__
+VisionEgg.PyroApps.ScreenPositionGUI.__date__
+VisionEgg.PyroApps.ScreenPositionServer.__date__
+VisionEgg.PyroApps.SphereGratingGUI.__date__
+VisionEgg.PyroApps.SphereGratingServer.__date__
+VisionEgg.PyroApps.SpinningDrumGUI.__date__
+VisionEgg.PyroApps.SpinningDrumServer.__date__
+VisionEgg.PyroApps.TargetGUI.__date__
+VisionEgg.PyroApps.TargetServer.__date__
+VisionEgg.PyroClient.__date__
+VisionEgg.PyroHelpers.__date__
+VisionEgg.TCPController.__date__" class="py-name" href="#" onclick="return doclink('link-5', '__date__', 'link-5');">__date__</a></tt> <tt class="py-op">=</tt> <tt class="py-string">' '</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-string">'$Date$'</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">:</tt><tt class="p [...]
+<a name="L20"></a><tt class="py-lineno"> 20</tt>  <tt class="py-line"><tt id="link-6" class="py-name" targets="Variable VisionEgg.PyroApps.EPhysGUI.__author__=VisionEgg.PyroApps.EPhysGUI-module.html#__author__,Variable VisionEgg.PyroApps.EPhysGUIUtils.__author__=VisionEgg.PyroApps.EPhysGUIUtils-module.html#__author__,Variable VisionEgg.PyroApps.EPhysServer.__author__=VisionEgg.PyroApps.EPhysServer-module.html#__author__,Variable VisionEgg.PyroApps.GridGUI.__author__=VisionEgg.PyroApps.Gr [...]
+VisionEgg.PyroApps.EPhysGUIUtils.__author__
+VisionEgg.PyroApps.EPhysServer.__author__
+VisionEgg.PyroApps.GridGUI.__author__
+VisionEgg.PyroApps.GridServer.__author__
+VisionEgg.PyroApps.SpinningDrumGUI.__author__
+VisionEgg.PyroApps.SpinningDrumServer.__author__" class="py-name" href="#" onclick="return doclink('link-6', '__author__', 'link-6');">__author__</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'Andrew Straw <astraw at users.sourceforge.net>'</tt> </tt>
+<a name="L21"></a><tt class="py-lineno"> 21</tt>  <tt class="py-line"> </tt>
+<a name="L22"></a><tt class="py-lineno"> 22</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">sys</tt><tt class="py-op">,</tt> <tt class="py-name">os</tt><tt class="py-op">,</tt> <tt class="py-name">math</tt> </tt>
+<a name="L23"></a><tt class="py-lineno"> 23</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-7" class="py-name" targets="Variable VisionEgg.GUI.Tkinter=VisionEgg.GUI-module.html#Tkinter"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-7', 'Tkinter', 'link-7');">Tkinter</a></tt> </tt>
+<a name="L24"></a><tt class="py-lineno"> 24</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-8" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-8', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-9" class="py-name" targets="Package VisionEgg.PyroApps=VisionEgg.PyroApps-module.html"><a title="VisionEgg.PyroApps" class="py-name" href="#" onclick="return doclink('link-9', 'PyroApps', 'link-9 [...]
+<a name="L25"></a><tt class="py-lineno"> 25</tt>  <tt class="py-line"> </tt>
+<a name="get_control_list"></a><div id="get_control_list-def"><a name="L26"></a><tt class="py-lineno"> 26</tt> <a class="py-toggle" href="#" id="get_control_list-toggle" onclick="return toggle('get_control_list');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.TargetGUI-module.html#get_control_list">get_control_list</a><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="get_control_list-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="get_control_list-expanded"><a name="L27"></a><tt class="py-lineno"> 27</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-op">[</tt><tt class="py-op">(</tt><tt class="py-string">"target_server"</tt><tt class="py-op">,</tt><tt id="link-11" class="py-name" targets="Class VisionEgg.PyroApps.TargetGUI.TargetControlFrame=VisionEgg.PyroApps.TargetGUI.TargetControl [...]
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.title
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.title
+VisionEgg.PyroApps.GridGUI.GridControlFrame.title
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.title
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.title
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.title
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.title" class="py-name" href="#" onclick="return doclink('link-13', 'title', 'link-13');">title</a></tt><tt class="py-op">)</tt><tt class="py-op">]</tt> </tt>
+</div><a name="L28"></a><tt class="py-lineno"> 28</tt>  <tt class="py-line"> </tt>
+<a name="TargetMetaParameters"></a><div id="TargetMetaParameters-def"><a name="L29"></a><tt class="py-lineno"> 29</tt> <a class="py-toggle" href="#" id="TargetMetaParameters-toggle" onclick="return toggle('TargetMetaParameters');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.PyroApps.TargetGUI.TargetMetaParameters-class.html">TargetMetaParameters</a><tt class="py-op">:</tt> </tt>
+</div><div id="TargetMetaParameters-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="TargetMetaParameters-expanded"><a name="TargetMetaParameters.__init__"></a><div id="TargetMetaParameters.__init__-def"><a name="L30"></a><tt class="py-lineno"> 30</tt> <a class="py-toggle" href="#" id="TargetMetaParameters.__init__-toggle" onclick="return toggle('TargetMetaParameters.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" hr [...]
+</div><div id="TargetMetaParameters.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="TargetMetaParameters.__init__-expanded"><a name="L31"></a><tt class="py-lineno"> 31</tt>  <tt class="py-line">        <tt class="py-comment"># colors</tt> </tt>
+<a name="L32"></a><tt class="py-lineno"> 32</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">color</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-number">0.0</tt><tt class="py-op">,</tt> <tt class="py-number">0.0</tt><tt class="py-op">,</tt> <tt class="py-number">0.0</tt><tt class="py-op">,</tt> <tt class="py-number">1.0</tt><tt class="py-op">)</tt> </tt>
+<a name="L33"></a><tt class="py-lineno"> 33</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">bgcolor</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-number">1.0</tt><tt class="py-op">,</tt> <tt class="py-number">1.0</tt><tt class="py-op">,</tt> <tt class="py-number">1.0</tt><tt class="py-op">,</tt> <tt class="py-number">0.0</tt><tt class="py-op">)</tt> </tt>
+<a name="L34"></a><tt class="py-lineno"> 34</tt>  <tt class="py-line">         </tt>
+<a name="L35"></a><tt class="py-lineno"> 35</tt>  <tt class="py-line">        <tt class="py-comment"># motion parameters</tt> </tt>
+<a name="L36"></a><tt class="py-lineno"> 36</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">start_x</tt> <tt class="py-op">=</tt> <tt class="py-number">10.0</tt> </tt>
+<a name="L37"></a><tt class="py-lineno"> 37</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">start_y</tt> <tt class="py-op">=</tt> <tt class="py-number">50.0</tt> </tt>
+<a name="L38"></a><tt class="py-lineno"> 38</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">velocity_pps</tt> <tt class="py-op">=</tt> <tt class="py-number">100.0</tt> <tt class="py-comment"># pixels per second</tt> </tt>
+<a name="L39"></a><tt class="py-lineno"> 39</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">direction_deg</tt> <tt class="py-op">=</tt> <tt class="py-number">0.0</tt> </tt>
+<a name="L40"></a><tt class="py-lineno"> 40</tt>  <tt class="py-line">         </tt>
+<a name="L41"></a><tt class="py-lineno"> 41</tt>  <tt class="py-line">        <tt class="py-comment"># size and orientation</tt> </tt>
+<a name="L42"></a><tt class="py-lineno"> 42</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">width</tt> <tt class="py-op">=</tt> <tt class="py-number">10.0</tt> </tt>
+<a name="L43"></a><tt class="py-lineno"> 43</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">height</tt> <tt class="py-op">=</tt> <tt class="py-number">30.0</tt> </tt>
+<a name="L44"></a><tt class="py-lineno"> 44</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">orientation_deg</tt> <tt class="py-op">=</tt> <tt class="py-number">0.0</tt> </tt>
+<a name="L45"></a><tt class="py-lineno"> 45</tt>  <tt class="py-line">         </tt>
+<a name="L46"></a><tt class="py-lineno"> 46</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">pre_stim_sec</tt> <tt class="py-op">=</tt> <tt class="py-number">1.0</tt> </tt>
+<a name="L47"></a><tt class="py-lineno"> 47</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stim_sec</tt> <tt class="py-op">=</tt> <tt class="py-number">2.0</tt> </tt>
+<a name="L48"></a><tt class="py-lineno"> 48</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">post_stim_sec</tt> <tt class="py-op">=</tt> <tt class="py-number">1.0</tt> </tt>
+</div></div><a name="L49"></a><tt class="py-lineno"> 49</tt>  <tt class="py-line">         </tt>
+<a name="TargetControlFrame"></a><div id="TargetControlFrame-def"><a name="L50"></a><tt class="py-lineno"> 50</tt> <a class="py-toggle" href="#" id="TargetControlFrame-toggle" onclick="return toggle('TargetControlFrame');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.PyroApps.TargetGUI.TargetControlFrame-class.html">TargetControlFrame</a><tt class="py-op">(</tt><tt class="py-base-class">client_utils</tt><tt class="py-op">.</tt><tt clas [...]
+</div><div id="TargetControlFrame-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="TargetControlFrame-expanded"><a name="L51"></a><tt class="py-lineno"> 51</tt>  <tt class="py-line">    <tt id="link-14" class="py-name"><a title="VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.title
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.title
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.title
+VisionEgg.PyroApps.GridGUI.GridControlFrame.title
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.title
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.title
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.title
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.title" class="py-name" href="#" onclick="return doclink('link-14', 'title', 'link-13');">title</a></tt> <tt class="py-op">=</tt> <tt class="py-string">"Moving Target Experiment"</tt> </tt>
+<a name="TargetControlFrame.__init__"></a><div id="TargetControlFrame.__init__-def"><a name="L52"></a><tt class="py-lineno"> 52</tt> <a class="py-toggle" href="#" id="TargetControlFrame.__init__-toggle" onclick="return toggle('TargetControlFrame.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.TargetGUI.TargetControlFrame-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt clas [...]
+</div><div id="TargetControlFrame.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="TargetControlFrame.__init__-expanded"><a name="L53"></a><tt class="py-lineno"> 53</tt>  <tt class="py-line">        <tt class="py-name">client_utils</tt><tt class="py-op">.</tt><tt id="link-15" class="py-name" targets="Class VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame=VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html"><a title="VisionEgg.PyroApps [...]
+VisionEgg.Configuration.Config.__init__
+VisionEgg.Core.FixationSpot.__init__
+VisionEgg.Core.FrameTimer.__init__
+VisionEgg.Core.ModelView.__init__
+VisionEgg.Core.OrthographicProjection.__init__
+VisionEgg.Core.OrthographicProjectionNoZClip.__init__
+VisionEgg.Core.PerspectiveProjection.__init__
+VisionEgg.Core.Projection.__init__
+VisionEgg.Core.ProjectionBaseClass.__init__
+VisionEgg.Core.Screen.__init__
+VisionEgg.Core.SimplePerspectiveProjection.__init__
+VisionEgg.Core.Stimulus.__init__
+VisionEgg.Core.Viewport.__init__
+VisionEgg.Daq.Channel.__init__
+VisionEgg.Daq.DaqMode.__init__
+VisionEgg.Daq.Device.__init__
+VisionEgg.Daq.Functionality.__init__
+VisionEgg.Daq.SignalType.__init__
+VisionEgg.DaqKeyboard.KeyboardTriggerInController.__init__
+VisionEgg.DaqLPT.LPTChannel.__init__
+VisionEgg.DaqLPT.LPTDevice.__init__
+VisionEgg.DaqLPT.LPTTriggerInController.__init__
+VisionEgg.DaqLPT.LPTTriggerOutController.__init__
+VisionEgg.Deprecated.Message.__init__
+VisionEgg.Dots.DotArea2D.__init__
+VisionEgg.FlowControl.ConstantController.__init__
+VisionEgg.FlowControl.Controller.__init__
+VisionEgg.FlowControl.EncapsulatedController.__init__
+VisionEgg.FlowControl.EvalStringController.__init__
+VisionEgg.FlowControl.ExecStringController.__init__
+VisionEgg.FlowControl.FunctionController.__init__
+VisionEgg.FlowControl.Presentation.__init__
+VisionEgg.GLTrace.Wrapper.__init__
+VisionEgg.GUI.AppWindow.__init__
+VisionEgg.GUI.GetKeypressDialog.__init__
+VisionEgg.GUI.GraphicsConfigurationWindow.__init__
+VisionEgg.GUI.InfoFrame.__init__
+VisionEgg.GUI.ProgressBar.__init__
+VisionEgg.GUI.ToplevelDialog.__init__
+VisionEgg.Gratings.SinGrating2D.__init__
+VisionEgg.Gratings.SinGrating3D.__init__
+VisionEgg.MoreStimuli.Arrow.__init__
+VisionEgg.MoreStimuli.FilledCircle.__init__
+VisionEgg.MoreStimuli.Rectangle3D.__init__
+VisionEgg.MoreStimuli.Target2D.__init__
+VisionEgg.ParameterTypes.AnyOf.__init__
+VisionEgg.ParameterTypes.Instance.__init__
+VisionEgg.ParameterTypes.Sequence.__init__
+VisionEgg.ParameterTypes.SubClass.__init__
+VisionEgg.PyroApps.AST_ext.AST_Visitor.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalMetaParameters.__init__
+VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.__init__
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.__init__
+VisionEgg.PyroApps.DropinGUI.DropinMetaParameters.__init__
+VisionEgg.PyroApps.DropinServer.DropinMetaController.__init__
+VisionEgg.PyroApps.EPhysGUI.AppWindow.__init__
+VisionEgg.PyroApps.EPhysGUI.BarButton.__init__
+VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase.__init__
+VisionEgg.PyroApps.EPhysGUI.GammaFrame.__init__
+VisionEgg.PyroApps.EPhysGUI.ImageSequenceLauncher.__init__
+VisionEgg.PyroApps.EPhysGUI.Loop.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopContainedObject.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopParamDialog.__init__
+VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.__init__
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.__init__
+VisionEgg.PyroApps.EPhysServer.EPhysServer.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingMetaParameters.__init__
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.GridGUI.GridControlFrame.__init__
+VisionEgg.PyroApps.GridGUI.GridMetaParameters.__init__
+VisionEgg.PyroApps.GridServer.GridMetaController.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetMetaParameters.__init__
+VisionEgg.PyroApps.MouseTargetServer.MousePositionController.__init__
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetOrientationController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetPositionController.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.CallbackEntry.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionParameters.__init__
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingMetaParameters.__init__
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumMetaParameters.__init__
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.__init__
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.__init__
+VisionEgg.PyroApps.TargetGUI.TargetMetaParameters.__init__
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.__init__
+VisionEgg.PyroClient.PyroClient.__init__
+VisionEgg.PyroHelpers.PyroConstantController.__init__
+VisionEgg.PyroHelpers.PyroEncapsulatedController.__init__
+VisionEgg.PyroHelpers.PyroEvalStringController.__init__
+VisionEgg.PyroHelpers.PyroExecStringController.__init__
+VisionEgg.PyroHelpers.PyroListenController.__init__
+VisionEgg.PyroHelpers.PyroLocalDictController.__init__
+VisionEgg.PyroHelpers.PyroServer.__init__
+VisionEgg.QuickTime.MovieTexture.__init__
+VisionEgg.ResponseControl.KeyboardResponseController.__init__
+VisionEgg.ResponseControl.ResponseController.__init__
+VisionEgg.SphereMap.AzElGrid.__init__
+VisionEgg.SphereMap.SphereGrating.__init__
+VisionEgg.SphereMap.SphereMap.__init__
+VisionEgg.SphereMap.SphereWindow.__init__
+VisionEgg.TCPController.SocketListenController.__init__
+VisionEgg.TCPController.TCPController.__init__
+VisionEgg.TCPController.TCPServer.__init__
+VisionEgg.Text.BitmapText.__init__
+VisionEgg.Text.GlutTextBase.__init__
+VisionEgg.Text.StrokeText.__init__
+VisionEgg.Text.Text.__init__
+VisionEgg.Textures.FixationCross.__init__
+VisionEgg.Textures.Mask2D.__init__
+VisionEgg.Textures.SpinningDrum.__init__
+VisionEgg.Textures.Texture.__init__
+VisionEgg.Textures.TextureFromFile.__init__
+VisionEgg.Textures.TextureObject.__init__
+VisionEgg.Textures.TextureStimulusBaseClass.__init__
+VisionEgg.ThreeDeeMath.TransformMatrix.__init__
+VisionEgg.WrappedText.WrappedText.__init__
+VisionEgg.qtmovie.Movie.__init__
+VisionEgg.qtmovie.Rect.__init__" class="py-name" href="#" onclick="return doclink('link-16', '__init__', 'link-16');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> </tt>
+<a name="L54"></a><tt class="py-lineno"> 54</tt>  <tt class="py-line">                                                   <tt class="py-name">master</tt><tt class="py-op">,</tt> </tt>
+<a name="L55"></a><tt class="py-lineno"> 55</tt>  <tt class="py-line">                                                   <tt class="py-name">suppress_go_buttons</tt><tt class="py-op">,</tt> </tt>
+<a name="L56"></a><tt class="py-lineno"> 56</tt>  <tt class="py-line">                                                   <tt id="link-17" class="py-name"><a title="VisionEgg.PyroApps.TargetGUI.TargetControlFrame" class="py-name" href="#" onclick="return doclink('link-17', 'TargetControlFrame', 'link-11');">TargetControlFrame</a></tt><tt class="py-op">.</tt><tt id="link-18" class="py-name"><a title="VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.title
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.title
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.title
+VisionEgg.PyroApps.GridGUI.GridControlFrame.title
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.title
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.title
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.title
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.title" class="py-name" href="#" onclick="return doclink('link-18', 'title', 'link-13');">title</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L57"></a><tt class="py-lineno"> 57</tt>  <tt class="py-line">                                                   <tt id="link-19" class="py-name" targets="Class VisionEgg.PyroApps.TargetGUI.TargetMetaParameters=VisionEgg.PyroApps.TargetGUI.TargetMetaParameters-class.html"><a title="VisionEgg.PyroApps.TargetGUI.TargetMetaParameters" class="py-name" href="#" onclick="return doclink('link-19', 'TargetMetaParameters', 'link-19');">TargetMetaParameters</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L58"></a><tt class="py-lineno"> 58</tt>  <tt class="py-line">                                                   <tt class="py-op">**</tt><tt class="py-name">kw</tt><tt class="py-op">)</tt> </tt>
+<a name="L59"></a><tt class="py-lineno"> 59</tt>  <tt class="py-line"> </tt>
+<a name="L60"></a><tt class="py-lineno"> 60</tt>  <tt class="py-line">        <tt class="py-name">param_frame</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">param_frame</tt> <tt class="py-comment"># shorthand for self.param_frame created in base class</tt> </tt>
+<a name="L61"></a><tt class="py-lineno"> 61</tt>  <tt class="py-line"> </tt>
+<a name="L62"></a><tt class="py-lineno"> 62</tt>  <tt class="py-line">        <tt class="py-name">pf_row</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L63"></a><tt class="py-lineno"> 63</tt>  <tt class="py-line">        <tt id="link-20" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-20', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">param_frame</tt><tt class="py-op">,</tt><tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Start X (pixels):"</tt><tt class="p [...]
+<a name="L64"></a><tt class="py-lineno"> 64</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">start_x_tk_var</tt> <tt class="py-op">=</tt> <tt id="link-22" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-22', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">DoubleVar</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L65"></a><tt class="py-lineno"> 65</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">start_x_tk_var</tt><tt class="py-op">.</tt><tt id="link-23" class="py-name" targets="Method VisionEgg.ClassWithParameters.set()=VisionEgg.ClassWithParameters-class.html#set"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-23', 'set', 'link-23');">set</a></tt><tt class="py-op">(</tt><tt cl [...]
+<a name="L66"></a><tt class="py-lineno"> 66</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-24" class="py-name" targets="Method VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.make_callback_entry()=VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#make_callback_entry"><a title="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.make_callback_entry" class="py-name" href="#" onclick="return doclink('link-24', 'make [...]
+<a name="L67"></a><tt class="py-lineno"> 67</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">loopable_variables</tt><tt class="py-op">[</tt><tt class="py-string">"Start X"</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-string">"start_x"</tt><tt class="py-op">,</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">start_x_tk_var</tt><tt class="py-op">)</tt> </tt>
+<a name="L68"></a><tt class="py-lineno"> 68</tt>  <tt class="py-line">         </tt>
+<a name="L69"></a><tt class="py-lineno"> 69</tt>  <tt class="py-line">        <tt class="py-name">pf_row</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L70"></a><tt class="py-lineno"> 70</tt>  <tt class="py-line">        <tt id="link-25" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-25', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">param_frame</tt><tt class="py-op">,</tt><tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Start Y (pixels):"</tt><tt class="p [...]
+<a name="L71"></a><tt class="py-lineno"> 71</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">start_y_tk_var</tt> <tt class="py-op">=</tt> <tt id="link-27" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-27', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">DoubleVar</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L72"></a><tt class="py-lineno"> 72</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">start_y_tk_var</tt><tt class="py-op">.</tt><tt id="link-28" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-28', 'set', 'link-23');">set</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-o [...]
+<a name="L73"></a><tt class="py-lineno"> 73</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-29" class="py-name"><a title="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.make_callback_entry" class="py-name" href="#" onclick="return doclink('link-29', 'make_callback_entry', 'link-24');">make_callback_entry</a></tt><tt class="py-op">(</tt><tt class="py-name">textvariable</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt c [...]
+<a name="L74"></a><tt class="py-lineno"> 74</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">loopable_variables</tt><tt class="py-op">[</tt><tt class="py-string">"Start Y"</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-string">"start_y"</tt><tt class="py-op">,</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">start_y_tk_var</tt><tt class="py-op">)</tt> </tt>
+<a name="L75"></a><tt class="py-lineno"> 75</tt>  <tt class="py-line">         </tt>
+<a name="L76"></a><tt class="py-lineno"> 76</tt>  <tt class="py-line">        <tt class="py-name">pf_row</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L77"></a><tt class="py-lineno"> 77</tt>  <tt class="py-line">        <tt id="link-30" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-30', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">param_frame</tt><tt class="py-op">,</tt><tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Velocity (pixels/sec):"</tt><tt cla [...]
+<a name="L78"></a><tt class="py-lineno"> 78</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">velocity_tk_var</tt> <tt class="py-op">=</tt> <tt id="link-32" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-32', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">DoubleVar</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L79"></a><tt class="py-lineno"> 79</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">velocity_tk_var</tt><tt class="py-op">.</tt><tt id="link-33" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-33', 'set', 'link-23');">set</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py- [...]
+<a name="L80"></a><tt class="py-lineno"> 80</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-34" class="py-name"><a title="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.make_callback_entry" class="py-name" href="#" onclick="return doclink('link-34', 'make_callback_entry', 'link-24');">make_callback_entry</a></tt><tt class="py-op">(</tt><tt class="py-name">textvariable</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt c [...]
+<a name="L81"></a><tt class="py-lineno"> 81</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">loopable_variables</tt><tt class="py-op">[</tt><tt class="py-string">"Velocity"</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-string">"velocity_pps"</tt><tt class="py-op">,</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">velocity_tk_var</tt><tt class="py-op">)</tt> </tt>
+<a name="L82"></a><tt class="py-lineno"> 82</tt>  <tt class="py-line">         </tt>
+<a name="L83"></a><tt class="py-lineno"> 83</tt>  <tt class="py-line">        <tt class="py-name">pf_row</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L84"></a><tt class="py-lineno"> 84</tt>  <tt class="py-line">        <tt id="link-35" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-35', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">param_frame</tt><tt class="py-op">,</tt><tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Direction (degrees):"</tt><tt class [...]
+<a name="L85"></a><tt class="py-lineno"> 85</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">direction_tk_var</tt> <tt class="py-op">=</tt> <tt id="link-37" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-37', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">DoubleVar</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L86"></a><tt class="py-lineno"> 86</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">direction_tk_var</tt><tt class="py-op">.</tt><tt id="link-38" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-38', 'set', 'link-23');">set</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py [...]
+<a name="L87"></a><tt class="py-lineno"> 87</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-39" class="py-name"><a title="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.make_callback_entry" class="py-name" href="#" onclick="return doclink('link-39', 'make_callback_entry', 'link-24');">make_callback_entry</a></tt><tt class="py-op">(</tt><tt class="py-name">textvariable</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt c [...]
+<a name="L88"></a><tt class="py-lineno"> 88</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">loopable_variables</tt><tt class="py-op">[</tt><tt class="py-string">"Direction"</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-string">"direction_deg"</tt><tt class="py-op">,</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">direction_tk_var</tt><tt class="py-op">)</t [...]
+<a name="L89"></a><tt class="py-lineno"> 89</tt>  <tt class="py-line"> </tt>
+<a name="L90"></a><tt class="py-lineno"> 90</tt>  <tt class="py-line">        <tt class="py-name">pf_row</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L91"></a><tt class="py-lineno"> 91</tt>  <tt class="py-line">        <tt id="link-40" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-40', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">param_frame</tt><tt class="py-op">,</tt><tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Color:"</tt><tt class="py-op">)</tt [...]
+<a name="L92"></a><tt class="py-lineno"> 92</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">color_tk_var</tt> <tt class="py-op">=</tt> <tt id="link-42" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-42', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">StringVar</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L93"></a><tt class="py-lineno"> 93</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">color_tk_var</tt><tt class="py-op">.</tt><tt id="link-43" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-43', 'set', 'link-23');">set</a></tt><tt class="py-op">(</tt><tt class="py-string">"black on white"</tt><tt class="py-op">)</tt> </tt>
+<a name="L94"></a><tt class="py-lineno"> 94</tt>  <tt class="py-line">        <tt class="py-name">bar</tt> <tt class="py-op">=</tt> <tt id="link-44" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-44', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Menubutton</tt><tt class="py-op">(</tt><tt class="py-name">param_frame</tt><tt class="py-op">,</tt> <tt class="py-name">textvariable</tt><tt class="py- [...]
+<a name="L95"></a><tt class="py-lineno"> 95</tt>  <tt class="py-line">        <tt class="py-name">bar</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-name">pf_row</tt><tt class="py-op">,</tt> <tt class="py-name">column</tt><tt class="py-op">=</tt><tt class="py-number">2</tt><tt class="py-op">,</tt> <tt class="py-name">sticky</tt><tt class="py-op">=</tt><tt id="link-46" class="py-name"><a ti [...]
+<a name="L96"></a><tt class="py-lineno"> 96</tt>  <tt class="py-line">        <tt class="py-name">bar</tt><tt class="py-op">.</tt><tt class="py-name">menu</tt> <tt class="py-op">=</tt> <tt id="link-48" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-48', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Menu</tt><tt class="py-op">(</tt><tt class="py-name">bar</tt><tt class="py-op">,</tt><tt class="py [...]
+<a name="L97"></a><tt class="py-lineno"> 97</tt>  <tt class="py-line">        <tt class="py-name">bar</tt><tt class="py-op">.</tt><tt class="py-name">menu</tt><tt class="py-op">.</tt><tt class="py-name">add_radiobutton</tt><tt class="py-op">(</tt><tt class="py-name">label</tt><tt class="py-op">=</tt><tt class="py-string">"white on black"</tt><tt class="py-op">,</tt> </tt>
+<a name="L98"></a><tt class="py-lineno"> 98</tt>  <tt class="py-line">                                 <tt class="py-name">value</tt><tt class="py-op">=</tt><tt class="py-string">"white on black"</tt><tt class="py-op">,</tt> </tt>
+<a name="L99"></a><tt class="py-lineno"> 99</tt>  <tt class="py-line">                                 <tt class="py-name">variable</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">color_tk_var</tt><tt class="py-op">,</tt> </tt>
+<a name="L100"></a><tt class="py-lineno">100</tt>  <tt class="py-line">                                 <tt class="py-name">command</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-49" class="py-name" targets="Method VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.send_values()=VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame-class.html#send_values,Method VisionEgg.PyroApps.DropinGUI.DropinControlFrame.send_values()=VisionEgg.PyroApps.D [...]
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.send_values
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.send_values
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.send_values
+VisionEgg.PyroApps.GridGUI.GridControlFrame.send_values
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.send_values
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.send_values
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.send_values
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.send_values
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.send_values" class="py-name" href="#" onclick="return doclink('link-49', 'send_values', 'link-49');">send_values</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L101"></a><tt class="py-lineno">101</tt>  <tt class="py-line">        <tt class="py-name">bar</tt><tt class="py-op">.</tt><tt class="py-name">menu</tt><tt class="py-op">.</tt><tt class="py-name">add_radiobutton</tt><tt class="py-op">(</tt><tt class="py-name">label</tt><tt class="py-op">=</tt><tt class="py-string">"black on white"</tt><tt class="py-op">,</tt> </tt>
+<a name="L102"></a><tt class="py-lineno">102</tt>  <tt class="py-line">                                 <tt class="py-name">value</tt><tt class="py-op">=</tt><tt class="py-string">"black on white"</tt><tt class="py-op">,</tt> </tt>
+<a name="L103"></a><tt class="py-lineno">103</tt>  <tt class="py-line">                                 <tt class="py-name">variable</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">color_tk_var</tt><tt class="py-op">,</tt> </tt>
+<a name="L104"></a><tt class="py-lineno">104</tt>  <tt class="py-line">                                 <tt class="py-name">command</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-50" class="py-name"><a title="VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.send_values
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.send_values
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.send_values
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.send_values
+VisionEgg.PyroApps.GridGUI.GridControlFrame.send_values
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.send_values
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.send_values
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.send_values
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.send_values
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.send_values" class="py-name" href="#" onclick="return doclink('link-50', 'send_values', 'link-49');">send_values</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L105"></a><tt class="py-lineno">105</tt>  <tt class="py-line">        <tt class="py-name">bar</tt><tt class="py-op">[</tt><tt class="py-string">'menu'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">bar</tt><tt class="py-op">.</tt><tt class="py-name">menu</tt>        </tt>
+<a name="L106"></a><tt class="py-lineno">106</tt>  <tt class="py-line"> </tt>
+<a name="L107"></a><tt class="py-lineno">107</tt>  <tt class="py-line">        <tt class="py-name">pf_row</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L108"></a><tt class="py-lineno">108</tt>  <tt class="py-line">        <tt id="link-51" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-51', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">param_frame</tt><tt class="py-op">,</tt><tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Orientation (degrees):"</tt><tt cl [...]
+<a name="L109"></a><tt class="py-lineno">109</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">ortho_tk_var</tt> <tt class="py-op">=</tt> <tt id="link-53" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-53', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">StringVar</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L110"></a><tt class="py-lineno">110</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">ortho_tk_var</tt><tt class="py-op">.</tt><tt id="link-54" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-54', 'set', 'link-23');">set</a></tt><tt class="py-op">(</tt><tt class="py-string">"ortho"</tt><tt class="py-op">)</tt> </tt>
+<a name="L111"></a><tt class="py-lineno">111</tt>  <tt class="py-line"> </tt>
+<a name="L112"></a><tt class="py-lineno">112</tt>  <tt class="py-line">        <tt class="py-name">manual</tt> <tt class="py-op">=</tt> <tt id="link-55" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-55', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Radiobutton</tt><tt class="py-op">(</tt> <tt class="py-name">param_frame</tt><tt class="py-op">,</tt> <tt class="py-name">text</tt><tt class="py-op [...]
+<a name="L113"></a><tt class="py-lineno">113</tt>  <tt class="py-line">                                      <tt class="py-name">variable</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">ortho_tk_var</tt><tt class="py-op">,</tt> <tt class="py-name">value</tt><tt class="py-op">=</tt><tt class="py-string">"manual"</tt><tt class="py-op">)</tt> </tt>
+<a name="L114"></a><tt class="py-lineno">114</tt>  <tt class="py-line">        <tt class="py-name">manual</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-name">pf_row</tt><tt class="py-op">,</tt><tt class="py-name">column</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="L115"></a><tt class="py-lineno">115</tt>  <tt class="py-line">         </tt>
+<a name="L116"></a><tt class="py-lineno">116</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">orient_tk_var</tt> <tt class="py-op">=</tt> <tt id="link-56" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-56', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">DoubleVar</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L117"></a><tt class="py-lineno">117</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">orient_tk_var</tt><tt class="py-op">.</tt><tt id="link-57" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-57', 'set', 'link-23');">set</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-o [...]
+<a name="L118"></a><tt class="py-lineno">118</tt>  <tt class="py-line">         </tt>
+<a name="L119"></a><tt class="py-lineno">119</tt>  <tt class="py-line">        <tt class="py-name">manual_entry</tt> <tt class="py-op">=</tt> <tt id="link-58" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-58', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Entry</tt><tt class="py-op">(</tt> <tt class="py-name">param_frame</tt><tt class="py-op">,</tt> </tt>
+<a name="L120"></a><tt class="py-lineno">120</tt>  <tt class="py-line">                                      <tt class="py-name">textvariable</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">orient_tk_var</tt><tt class="py-op">,</tt> </tt>
+<a name="L121"></a><tt class="py-lineno">121</tt>  <tt class="py-line">                                      <tt class="py-name">width</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">entry_width</tt> <tt class="py-op">)</tt> </tt>
+<a name="L122"></a><tt class="py-lineno">122</tt>  <tt class="py-line">        <tt class="py-name">manual_entry</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-name">pf_row</tt><tt class="py-op">,</tt><tt class="py-name">column</tt><tt class="py-op">=</tt><tt class="py-number">2</tt><tt class="py-op">)</tt> </tt>
+<a name="L123"></a><tt class="py-lineno">123</tt>  <tt class="py-line">         </tt>
+<a name="L124"></a><tt class="py-lineno">124</tt>  <tt class="py-line">        <tt class="py-name">ortho</tt> <tt class="py-op">=</tt> <tt id="link-59" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-59', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Radiobutton</tt><tt class="py-op">(</tt> <tt class="py-name">param_frame</tt><tt class="py-op">,</tt> <tt class="py-name">text</tt><tt class="py-op" [...]
+<a name="L125"></a><tt class="py-lineno">125</tt>  <tt class="py-line">                                     <tt class="py-name">variable</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">ortho_tk_var</tt><tt class="py-op">,</tt> <tt class="py-name">value</tt><tt class="py-op">=</tt><tt class="py-string">"ortho"</tt><tt class="py-op">)</tt> </tt>
+<a name="L126"></a><tt class="py-lineno">126</tt>  <tt class="py-line">        <tt class="py-name">ortho</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-name">pf_row</tt><tt class="py-op">,</tt><tt class="py-name">column</tt><tt class="py-op">=</tt><tt class="py-number">3</tt><tt class="py-op">)</tt> </tt>
+<a name="L127"></a><tt class="py-lineno">127</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">loopable_variables</tt><tt class="py-op">[</tt><tt class="py-string">"Orientation"</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-string">"orientation_deg"</tt><tt class="py-op">,</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">orient_tk_var</tt><tt class="py-op">)< [...]
+<a name="L128"></a><tt class="py-lineno">128</tt>  <tt class="py-line">         </tt>
+<a name="L129"></a><tt class="py-lineno">129</tt>  <tt class="py-line">        <tt class="py-name">pf_row</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L130"></a><tt class="py-lineno">130</tt>  <tt class="py-line">        <tt id="link-60" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-60', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">param_frame</tt><tt class="py-op">,</tt><tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Width (pixels):"</tt><tt class="py [...]
+<a name="L131"></a><tt class="py-lineno">131</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">width_tk_var</tt> <tt class="py-op">=</tt> <tt id="link-62" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-62', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">DoubleVar</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L132"></a><tt class="py-lineno">132</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">width_tk_var</tt><tt class="py-op">.</tt><tt id="link-63" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-63', 'set', 'link-23');">set</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op [...]
+<a name="L133"></a><tt class="py-lineno">133</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-64" class="py-name"><a title="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.make_callback_entry" class="py-name" href="#" onclick="return doclink('link-64', 'make_callback_entry', 'link-24');">make_callback_entry</a></tt><tt class="py-op">(</tt><tt class="py-name">textvariable</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt  [...]
+<a name="L134"></a><tt class="py-lineno">134</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">loopable_variables</tt><tt class="py-op">[</tt><tt class="py-string">"Width"</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-string">"width"</tt><tt class="py-op">,</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">width_tk_var</tt><tt class="py-op">)</tt> </tt>
+<a name="L135"></a><tt class="py-lineno">135</tt>  <tt class="py-line">         </tt>
+<a name="L136"></a><tt class="py-lineno">136</tt>  <tt class="py-line">        <tt class="py-name">pf_row</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L137"></a><tt class="py-lineno">137</tt>  <tt class="py-line">        <tt id="link-65" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-65', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">param_frame</tt><tt class="py-op">,</tt><tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Height (pixels):"</tt><tt class="p [...]
+<a name="L138"></a><tt class="py-lineno">138</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">height_tk_var</tt> <tt class="py-op">=</tt> <tt id="link-67" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-67', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">DoubleVar</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L139"></a><tt class="py-lineno">139</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">height_tk_var</tt><tt class="py-op">.</tt><tt id="link-68" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-68', 'set', 'link-23');">set</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-o [...]
+<a name="L140"></a><tt class="py-lineno">140</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-69" class="py-name"><a title="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.make_callback_entry" class="py-name" href="#" onclick="return doclink('link-69', 'make_callback_entry', 'link-24');">make_callback_entry</a></tt><tt class="py-op">(</tt><tt class="py-name">textvariable</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt  [...]
+<a name="L141"></a><tt class="py-lineno">141</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">loopable_variables</tt><tt class="py-op">[</tt><tt class="py-string">"Height"</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-string">"height"</tt><tt class="py-op">,</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">height_tk_var</tt><tt class="py-op">)</tt> </tt>
+<a name="L142"></a><tt class="py-lineno">142</tt>  <tt class="py-line">         </tt>
+<a name="L143"></a><tt class="py-lineno">143</tt>  <tt class="py-line">        <tt class="py-name">pf_row</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L144"></a><tt class="py-lineno">144</tt>  <tt class="py-line">        <tt id="link-70" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-70', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">param_frame</tt><tt class="py-op">,</tt><tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Pre stimulus duration (sec):"</tt> [...]
+<a name="L145"></a><tt class="py-lineno">145</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">prestim_dur_tk_var</tt> <tt class="py-op">=</tt> <tt id="link-72" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-72', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">DoubleVar</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L146"></a><tt class="py-lineno">146</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">prestim_dur_tk_var</tt><tt class="py-op">.</tt><tt id="link-73" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-73', 'set', 'link-23');">set</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class= [...]
+<a name="L147"></a><tt class="py-lineno">147</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-74" class="py-name"><a title="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.make_callback_entry" class="py-name" href="#" onclick="return doclink('link-74', 'make_callback_entry', 'link-24');">make_callback_entry</a></tt><tt class="py-op">(</tt><tt class="py-name">textvariable</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt  [...]
+<a name="L148"></a><tt class="py-lineno">148</tt>  <tt class="py-line">         </tt>
+<a name="L149"></a><tt class="py-lineno">149</tt>  <tt class="py-line">        <tt class="py-name">pf_row</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L150"></a><tt class="py-lineno">150</tt>  <tt class="py-line">        <tt id="link-75" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-75', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">param_frame</tt><tt class="py-op">,</tt><tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Stimulus duration (sec):"</tt><tt  [...]
+<a name="L151"></a><tt class="py-lineno">151</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stim_dur_tk_var</tt> <tt class="py-op">=</tt> <tt id="link-77" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-77', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">DoubleVar</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L152"></a><tt class="py-lineno">152</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stim_dur_tk_var</tt><tt class="py-op">.</tt><tt id="link-78" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-78', 'set', 'link-23');">set</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py [...]
+<a name="L153"></a><tt class="py-lineno">153</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-79" class="py-name"><a title="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.make_callback_entry" class="py-name" href="#" onclick="return doclink('link-79', 'make_callback_entry', 'link-24');">make_callback_entry</a></tt><tt class="py-op">(</tt><tt class="py-name">textvariable</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt  [...]
+<a name="L154"></a><tt class="py-lineno">154</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">loopable_variables</tt><tt class="py-op">[</tt><tt class="py-string">"Duration"</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-string">"stim_sec"</tt><tt class="py-op">,</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stim_dur_tk_var</tt><tt class="py-op">)</tt> </tt>
+<a name="L155"></a><tt class="py-lineno">155</tt>  <tt class="py-line">         </tt>
+<a name="L156"></a><tt class="py-lineno">156</tt>  <tt class="py-line">        <tt class="py-name">pf_row</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L157"></a><tt class="py-lineno">157</tt>  <tt class="py-line">        <tt id="link-80" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-80', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">param_frame</tt><tt class="py-op">,</tt><tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Post stimulus duration (sec):"</tt [...]
+<a name="L158"></a><tt class="py-lineno">158</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">poststim_dur_tk_var</tt> <tt class="py-op">=</tt> <tt id="link-82" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-82', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">DoubleVar</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L159"></a><tt class="py-lineno">159</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">poststim_dur_tk_var</tt><tt class="py-op">.</tt><tt id="link-83" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-83', 'set', 'link-23');">set</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class [...]
+<a name="L160"></a><tt class="py-lineno">160</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-84" class="py-name"><a title="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.make_callback_entry" class="py-name" href="#" onclick="return doclink('link-84', 'make_callback_entry', 'link-24');">make_callback_entry</a></tt><tt class="py-op">(</tt><tt class="py-name">textvariable</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt  [...]
+</div><a name="L161"></a><tt class="py-lineno">161</tt>  <tt class="py-line"> </tt>
+<a name="TargetControlFrame.get_shortname"></a><div id="TargetControlFrame.get_shortname-def"><a name="L162"></a><tt class="py-lineno">162</tt> <a class="py-toggle" href="#" id="TargetControlFrame.get_shortname-toggle" onclick="return toggle('TargetControlFrame.get_shortname');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.TargetGUI.TargetControlFrame-class.html#get_shortname">get_shortname</a><tt class="py-op">(</tt><tt cla [...]
+</div><div id="TargetControlFrame.get_shortname-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="TargetControlFrame.get_shortname-expanded"><a name="L163"></a><tt class="py-lineno">163</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-string">"target"</tt> </tt>
+</div><a name="L164"></a><tt class="py-lineno">164</tt>  <tt class="py-line"> </tt>
+<a name="TargetControlFrame.update_tk_vars"></a><div id="TargetControlFrame.update_tk_vars-def"><a name="L165"></a><tt class="py-lineno">165</tt> <a class="py-toggle" href="#" id="TargetControlFrame.update_tk_vars-toggle" onclick="return toggle('TargetControlFrame.update_tk_vars');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.TargetGUI.TargetControlFrame-class.html#update_tk_vars">update_tk_vars</a><tt class="py-op">(</tt>< [...]
+</div><div id="TargetControlFrame.update_tk_vars-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="TargetControlFrame.update_tk_vars-expanded"><a name="L166"></a><tt class="py-lineno">166</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">start_x_tk_var</tt><tt class="py-op">.</tt><tt id="link-85" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink(' [...]
+<a name="L167"></a><tt class="py-lineno">167</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">start_y_tk_var</tt><tt class="py-op">.</tt><tt id="link-86" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-86', 'set', 'link-23');">set</a></tt><tt class="py-op">(</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py [...]
+<a name="L168"></a><tt class="py-lineno">168</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">velocity_tk_var</tt><tt class="py-op">.</tt><tt id="link-87" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-87', 'set', 'link-23');">set</a></tt><tt class="py-op">(</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="p [...]
+<a name="L169"></a><tt class="py-lineno">169</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">direction_tk_var</tt><tt class="py-op">.</tt><tt id="link-88" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-88', 'set', 'link-23');">set</a></tt><tt class="py-op">(</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class=" [...]
+<a name="L170"></a><tt class="py-lineno">170</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">orient_tk_var</tt><tt class="py-op">.</tt><tt id="link-89" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-89', 'set', 'link-23');">set</a></tt><tt class="py-op">(</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py- [...]
+<a name="L171"></a><tt class="py-lineno">171</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">width_tk_var</tt><tt class="py-op">.</tt><tt id="link-90" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-90', 'set', 'link-23');">set</a></tt><tt class="py-op">(</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-o [...]
+<a name="L172"></a><tt class="py-lineno">172</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">height_tk_var</tt><tt class="py-op">.</tt><tt id="link-91" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-91', 'set', 'link-23');">set</a></tt><tt class="py-op">(</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py- [...]
+<a name="L173"></a><tt class="py-lineno">173</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">prestim_dur_tk_var</tt><tt class="py-op">.</tt><tt id="link-92" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-92', 'set', 'link-23');">set</a></tt><tt class="py-op">(</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class [...]
+<a name="L174"></a><tt class="py-lineno">174</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stim_dur_tk_var</tt><tt class="py-op">.</tt><tt id="link-93" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-93', 'set', 'link-23');">set</a></tt><tt class="py-op">(</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="p [...]
+<a name="L175"></a><tt class="py-lineno">175</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">poststim_dur_tk_var</tt><tt class="py-op">.</tt><tt id="link-94" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-94', 'set', 'link-23');">set</a></tt><tt class="py-op">(</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt clas [...]
+<a name="L176"></a><tt class="py-lineno">176</tt>  <tt class="py-line"> </tt>
+<a name="L177"></a><tt class="py-lineno">177</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op">.</tt><tt class="py-name">color</tt> <tt class="py-op">==</tt> <tt class="py-op">(</tt><tt class="py-number">0.0</tt><tt class="py-op">,</tt><tt class="py-number">0.0</tt><tt class="py-op">,</tt><tt class="py-number">0.0</tt><tt class="py-op">,</tt><tt class="py-number">1.0< [...]
+<a name="L178"></a><tt class="py-lineno">178</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">color_tk_var</tt><tt class="py-op">.</tt><tt id="link-95" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-95', 'set', 'link-23');">set</a></tt><tt class="py-op">(</tt> <tt class="py-string">"black on white"</tt> <tt class="py-op">)</tt> </tt>
+<a name="L179"></a><tt class="py-lineno">179</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op">.</tt><tt class="py-name">color</tt> <tt class="py-op">==</tt> <tt class="py-op">(</tt><tt class="py-number">1.0</tt><tt class="py-op">,</tt><tt class="py-number">1.0</tt><tt class="py-op">,</tt><tt class="py-number">1.0</tt><tt class="py-op">,</tt><tt class="py-number">1. [...]
+<a name="L180"></a><tt class="py-lineno">180</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">color_tk_var</tt><tt class="py-op">.</tt><tt id="link-96" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-96', 'set', 'link-23');">set</a></tt><tt class="py-op">(</tt> <tt class="py-string">"white on black"</tt> <tt class="py-op">)</tt> </tt>
+<a name="L181"></a><tt class="py-lineno">181</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L182"></a><tt class="py-lineno">182</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">RuntimeError</tt><tt class="py-op">(</tt><tt class="py-string">"Cannot set tk variable for color"</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L183"></a><tt class="py-lineno">183</tt>  <tt class="py-line">         </tt>
+<a name="TargetControlFrame.send_values"></a><div id="TargetControlFrame.send_values-def"><a name="L184"></a><tt class="py-lineno">184</tt> <a class="py-toggle" href="#" id="TargetControlFrame.send_values-toggle" onclick="return toggle('TargetControlFrame.send_values');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.TargetGUI.TargetControlFrame-class.html#send_values">send_values</a><tt class="py-op">(</tt><tt class="py-param [...]
+</div><div id="TargetControlFrame.send_values-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="TargetControlFrame.send_values-expanded"><a name="L185"></a><tt class="py-lineno">185</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op">.</tt><tt class="py-name">start_x</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">start_ [...]
+<a name="L186"></a><tt class="py-lineno">186</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op">.</tt><tt class="py-name">start_y</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">start_y_tk_var</tt><tt class="py-op">.</tt><tt id="link-98" class="py-name"><a title="VisionEgg.PyroClient.PyroClient.get" class="py-name" href="#" onclick="return docli [...]
+<a name="L187"></a><tt class="py-lineno">187</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op">.</tt><tt class="py-name">velocity_pps</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">velocity_tk_var</tt><tt class="py-op">.</tt><tt id="link-99" class="py-name"><a title="VisionEgg.PyroClient.PyroClient.get" class="py-name" href="#" onclick="return [...]
+<a name="L188"></a><tt class="py-lineno">188</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op">.</tt><tt class="py-name">direction_deg</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">direction_tk_var</tt><tt class="py-op">.</tt><tt id="link-100" class="py-name"><a title="VisionEgg.PyroClient.PyroClient.get" class="py-name" href="#" onclick="ret [...]
+<a name="L189"></a><tt class="py-lineno">189</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">color_tk_var</tt><tt class="py-op">.</tt><tt id="link-101" class="py-name"><a title="VisionEgg.PyroClient.PyroClient.get" class="py-name" href="#" onclick="return doclink('link-101', 'get', 'link-97');">get</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-strin [...]
+<a name="L190"></a><tt class="py-lineno">190</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op">.</tt><tt class="py-name">color</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-number">0.0</tt><tt class="py-op">,</tt><tt class="py-number">0.0</tt><tt class="py-op">,</tt><tt class="py-number">0.0</tt><tt class="py-op">,</tt><tt class="py-number">1.0</tt><tt class="py-op">)</tt> </tt>
+<a name="L191"></a><tt class="py-lineno">191</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op">.</tt><tt class="py-name">bgcolor</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-number">1.0</tt><tt class="py-op">,</tt><tt class="py-number">1.0</tt><tt class="py-op">,</tt><tt class="py-number">1.0</tt><tt class="py-op">,</tt><tt class="py-number">0.0</tt><tt class="py-op">)</t [...]
+<a name="L192"></a><tt class="py-lineno">192</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">color_tk_var</tt><tt class="py-op">.</tt><tt id="link-102" class="py-name"><a title="VisionEgg.PyroClient.PyroClient.get" class="py-name" href="#" onclick="return doclink('link-102', 'get', 'link-97');">get</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-str [...]
+<a name="L193"></a><tt class="py-lineno">193</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op">.</tt><tt class="py-name">color</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-number">1.0</tt><tt class="py-op">,</tt><tt class="py-number">1.0</tt><tt class="py-op">,</tt><tt class="py-number">1.0</tt><tt class="py-op">,</tt><tt class="py-number">1.0</tt><tt class="py-op">)</tt> </tt>
+<a name="L194"></a><tt class="py-lineno">194</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op">.</tt><tt class="py-name">bgcolor</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-number">0.0</tt><tt class="py-op">,</tt><tt class="py-number">0.0</tt><tt class="py-op">,</tt><tt class="py-number">0.0</tt><tt class="py-op">,</tt><tt class="py-number">0.0</tt><tt class="py-op">)</t [...]
+<a name="L195"></a><tt class="py-lineno">195</tt>  <tt class="py-line">         </tt>
+<a name="L196"></a><tt class="py-lineno">196</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">ortho_tk_var</tt><tt class="py-op">.</tt><tt id="link-103" class="py-name"><a title="VisionEgg.PyroClient.PyroClient.get" class="py-name" href="#" onclick="return doclink('link-103', 'get', 'link-97');">get</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-strin [...]
+<a name="L197"></a><tt class="py-lineno">197</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op">.</tt><tt class="py-name">orientation_deg</tt> <tt class="py-op">=</tt> <tt class="py-name">math</tt><tt class="py-op">.</tt><tt class="py-name">fmod</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op">.</tt><tt class=" [...]
+<a name="L198"></a><tt class="py-lineno">198</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> <tt class="py-comment"># it's "manual"</tt> </tt>
+<a name="L199"></a><tt class="py-lineno">199</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op">.</tt><tt class="py-name">orientation_deg</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">orient_tk_var</tt><tt class="py-op">.</tt><tt id="link-104" class="py-name"><a title="VisionEgg.PyroClient.PyroClient.get" class="py-name" href="#" onclick=" [...]
+<a name="L200"></a><tt class="py-lineno">200</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op">.</tt><tt class="py-name">width</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">width_tk_var</tt><tt class="py-op">.</tt><tt id="link-105" class="py-name"><a title="VisionEgg.PyroClient.PyroClient.get" class="py-name" href="#" onclick="return doclink( [...]
+<a name="L201"></a><tt class="py-lineno">201</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op">.</tt><tt class="py-name">height</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">height_tk_var</tt><tt class="py-op">.</tt><tt id="link-106" class="py-name"><a title="VisionEgg.PyroClient.PyroClient.get" class="py-name" href="#" onclick="return doclin [...]
+<a name="L202"></a><tt class="py-lineno">202</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op">.</tt><tt class="py-name">pre_stim_sec</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">prestim_dur_tk_var</tt><tt class="py-op">.</tt><tt id="link-107" class="py-name"><a title="VisionEgg.PyroClient.PyroClient.get" class="py-name" href="#" onclick="re [...]
+<a name="L203"></a><tt class="py-lineno">203</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op">.</tt><tt class="py-name">stim_sec</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stim_dur_tk_var</tt><tt class="py-op">.</tt><tt id="link-108" class="py-name"><a title="VisionEgg.PyroClient.PyroClient.get" class="py-name" href="#" onclick="return do [...]
+<a name="L204"></a><tt class="py-lineno">204</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op">.</tt><tt class="py-name">post_stim_sec</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">poststim_dur_tk_var</tt><tt class="py-op">.</tt><tt id="link-109" class="py-name"><a title="VisionEgg.PyroClient.PyroClient.get" class="py-name" href="#" onclick=" [...]
+<a name="L205"></a><tt class="py-lineno">205</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">connected</tt><tt class="py-op">:</tt> </tt>
+<a name="L206"></a><tt class="py-lineno">206</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_controller</tt><tt class="py-op">.</tt><tt id="link-110" class="py-name" targets="Method VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.set_parameters()=VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController-class.html#set_parameters,Method VisionEgg.PyroApps.DropinServer.DropinMetaController.set_parameters()=VisionEg [...]
+VisionEgg.PyroApps.DropinServer.DropinMetaController.set_parameters
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.set_parameters
+VisionEgg.PyroApps.GridServer.GridMetaController.set_parameters
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.set_parameters
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.set_parameters
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.set_parameters
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.set_parameters
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.set_parameters" class="py-name" href="#" onclick="return doclink('link-110', 'set_parameters', 'link-110');">set_parameters</a></tt><tt class="py-op">(</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt> <tt class="py-op">)</tt> </tt>
+</div><a name="L207"></a><tt class="py-lineno">207</tt>  <tt class="py-line"> </tt>
+<a name="TargetControlFrame.get_duration_sec"></a><div id="TargetControlFrame.get_duration_sec-def"><a name="L208"></a><tt class="py-lineno">208</tt> <a class="py-toggle" href="#" id="TargetControlFrame.get_duration_sec-toggle" onclick="return toggle('TargetControlFrame.get_duration_sec');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.TargetGUI.TargetControlFrame-class.html#get_duration_sec">get_duration_sec</a><tt class="py [...]
+</div><div id="TargetControlFrame.get_duration_sec-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="TargetControlFrame.get_duration_sec-expanded"><a name="L209"></a><tt class="py-lineno">209</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op">.</tt><tt class="py-name">pre_stim_sec</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class=" [...]
+<a name="L210"></a><tt class="py-lineno">210</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op">.</tt><tt class="py-name">stim_sec</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stim_dur_tk_var</tt><tt class="py-op">.</tt><tt id="link-112" class="py-name"><a title="VisionEgg.PyroClient.PyroClient.get" class="py-name" href="#" onclick="return do [...]
+<a name="L211"></a><tt class="py-lineno">211</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op">.</tt><tt class="py-name">post_stim_sec</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">poststim_dur_tk_var</tt><tt class="py-op">.</tt><tt id="link-113" class="py-name"><a title="VisionEgg.PyroClient.PyroClient.get" class="py-name" href="#" onclick=" [...]
+<a name="L212"></a><tt class="py-lineno">212</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op">.</tt><tt class="py-name">pre_stim_sec</tt> <tt class="py-op">+</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op">.</tt><tt class="py-name">stim_sec</tt> <tt class="py-op">+</tt> <tt class="py-name">self</tt>< [...]
+</div></div><a name="L213"></a><tt class="py-lineno">213</tt>  <tt class="py-line"> </tt>
+<a name="L214"></a><tt class="py-lineno">214</tt>  <tt class="py-line"><tt class="py-keyword">if</tt> <tt class="py-name">__name__</tt><tt class="py-op">==</tt><tt class="py-string">'__main__'</tt><tt class="py-op">:</tt> </tt>
+<a name="L215"></a><tt class="py-lineno">215</tt>  <tt class="py-line">    <tt class="py-name">frame</tt> <tt class="py-op">=</tt> <tt id="link-114" class="py-name"><a title="VisionEgg.PyroApps.TargetGUI.TargetControlFrame" class="py-name" href="#" onclick="return doclink('link-114', 'TargetControlFrame', 'link-11');">TargetControlFrame</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L216"></a><tt class="py-lineno">216</tt>  <tt class="py-line">    <tt class="py-name">frame</tt><tt class="py-op">.</tt><tt class="py-name">pack</tt><tt class="py-op">(</tt><tt class="py-name">expand</tt><tt class="py-op">=</tt><tt id="link-115" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-115', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">YES</tt><tt class="py-op">,</tt><tt class="p [...]
+<a name="L217"></a><tt class="py-lineno">217</tt>  <tt class="py-line">    <tt class="py-name">frame</tt><tt class="py-op">.</tt><tt class="py-name">winfo_toplevel</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-117" class="py-name"><a title="VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.title
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.title
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.title
+VisionEgg.PyroApps.GridGUI.GridControlFrame.title
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.title
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.title
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.title
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.title" class="py-name" href="#" onclick="return doclink('link-117', 'title', 'link-13');">title</a></tt><tt class="py-op">(</tt><tt class="py-string">"%s"</tt><tt class="py-op">%</tt><tt class="py-op">(</tt><tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">path</tt><tt class="py-op">.</tt><tt class="py-name">basename</tt><tt class="py-op">(</tt><tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">path< [...]
+<a name="L218"></a><tt class="py-lineno">218</tt>  <tt class="py-line">    <tt class="py-name">frame</tt><tt class="py-op">.</tt><tt class="py-name">mainloop</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L219"></a><tt class="py-lineno">219</tt>  <tt class="py-line"> </tt><script type="text/javascript">
+<!--
+expandto(location.href);
+// -->
+</script>
+</pre>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:50 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.PyroApps.TargetGUI.TargetControlFrame-class.html b/doc/reference/html/VisionEgg.PyroApps.TargetGUI.TargetControlFrame-class.html
new file mode 100644
index 0000000..2a7be19
--- /dev/null
+++ b/doc/reference/html/VisionEgg.PyroApps.TargetGUI.TargetControlFrame-class.html
@@ -0,0 +1,605 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.PyroApps.TargetGUI.TargetControlFrame</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.PyroApps-module.html">Package PyroApps</a> ::
+        <a href="VisionEgg.PyroApps.TargetGUI-module.html">Module TargetGUI</a> ::
+        Class TargetControlFrame
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.PyroApps.TargetGUI.TargetControlFrame-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class TargetControlFrame</h1><span class="codelink"><a href="VisionEgg.PyroApps.TargetGUI-pysrc.html#TargetControlFrame">source code</a></span><br /><br />
+<pre class="base-tree">
+      Tkinter.Misc --+                
+                     |                
+    Tkinter.BaseWidget --+            
+                         |            
+          Tkinter.Pack --+            
+                         |            
+         Tkinter.Place --+            
+                         |            
+          Tkinter.Grid --+            
+                         |            
+            Tkinter.Widget --+        
+                             |        
+                 Tkinter.Frame --+    
+                                 |    
+<a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html">EPhysGUIUtils.StimulusControlFrame</a> --+
+                                     |
+                                    <strong class="uidshort">TargetControlFrame</strong>
+</pre>
+
+<hr />
+<!-- ==================== NESTED CLASSES ==================== -->
+<a name="section-NestedClasses"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Nested Classes</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>Tkinter.Misc</code></b>:
+      <code><a href="float-class.html">getdouble</a></code>,
+      <code><a href="int-class.html">getint</a></code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.PyroApps.TargetGUI.TargetControlFrame-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">master</span>=<span class="summary-sig-default">None</span>,
+        <span class="summary-sig-arg">suppress_go_buttons</span>=<span class="summary-sig-default">0</span>,
+        <span class="summary-sig-arg">**kw</span>)</span><br />
+      Construct a frame widget with the parent MASTER.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.TargetGUI-pysrc.html#TargetControlFrame.__init__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.PyroApps.TargetGUI.TargetControlFrame-class.html#get_shortname" class="summary-sig-name">get_shortname</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      Used as basename for saving parameter files and other ID purposes</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.TargetGUI-pysrc.html#TargetControlFrame.get_shortname">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.PyroApps.TargetGUI.TargetControlFrame-class.html#update_tk_vars" class="summary-sig-name">update_tk_vars</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      Update Tkinter variables with (new) values from meta_params</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.TargetGUI-pysrc.html#TargetControlFrame.update_tk_vars">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.PyroApps.TargetGUI.TargetControlFrame-class.html#send_values" class="summary-sig-name">send_values</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">dummy_arg</span>=<span class="summary-sig-default">None</span>)</span><br />
+      Update meta_params variables with values from Tkinter fields</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.TargetGUI-pysrc.html#TargetControlFrame.send_values">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.PyroApps.TargetGUI.TargetControlFrame-class.html#get_duration_sec" class="summary-sig-name">get_duration_sec</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      Calculate total duration in go loop</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.TargetGUI-pysrc.html#TargetControlFrame.get_duration_sec">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html">EPhysGUIUtils.StimulusControlFrame</a></code></b>:
+      <code><a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#connect">connect</a></code>,
+      <code><a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#get_loopable_variable_names">get_loopable_variable_names</a></code>,
+      <code><a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#get_matlab_string">get_matlab_string</a></code>,
+      <code><a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#get_parameters_as_m_strings">get_parameters_as_m_strings</a></code>,
+      <code><a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#get_parameters_as_py_strings">get_parameters_as_py_strings</a></code>,
+      <code><a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#get_parameters_dict">get_parameters_dict</a></code>,
+      <code><a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#go">go</a></code>,
+      <code><a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#make_callback_entry">make_callback_entry</a></code>,
+      <code><a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#quit_server">quit_server</a></code>,
+      <code><a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#set_loopable_variable">set_loopable_variable</a></code>,
+      <code><a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#set_param_dict">set_param_dict</a></code>,
+      <code><a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#set_parameters_dict">set_parameters_dict</a></code>,
+      <code><a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#standalone_connect">standalone_connect</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>Tkinter.BaseWidget</code></b>:
+      <code>destroy</code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>Tkinter.Misc</code></b>:
+      <code>__getitem__</code>,
+      <code>__setitem__</code>,
+      <code>__str__</code>,
+      <code>after</code>,
+      <code>after_cancel</code>,
+      <code>after_idle</code>,
+      <code>bbox</code>,
+      <code>bell</code>,
+      <code>bind</code>,
+      <code>bind_all</code>,
+      <code>bind_class</code>,
+      <code>bindtags</code>,
+      <code>cget</code>,
+      <code>clipboard_append</code>,
+      <code>clipboard_clear</code>,
+      <code>clipboard_get</code>,
+      <code>colormodel</code>,
+      <code>columnconfigure</code>,
+      <code>config</code>,
+      <code>configure</code>,
+      <code>deletecommand</code>,
+      <code>event_add</code>,
+      <code>event_delete</code>,
+      <code>event_generate</code>,
+      <code>event_info</code>,
+      <code>focus</code>,
+      <code>focus_displayof</code>,
+      <code>focus_force</code>,
+      <code>focus_get</code>,
+      <code>focus_lastfor</code>,
+      <code>focus_set</code>,
+      <code>getboolean</code>,
+      <code>getvar</code>,
+      <code>grab_current</code>,
+      <code>grab_release</code>,
+      <code>grab_set</code>,
+      <code>grab_set_global</code>,
+      <code>grab_status</code>,
+      <code>grid_bbox</code>,
+      <code>grid_columnconfigure</code>,
+      <code>grid_location</code>,
+      <code>grid_propagate</code>,
+      <code>grid_rowconfigure</code>,
+      <code>grid_size</code>,
+      <code>grid_slaves</code>,
+      <code>image_names</code>,
+      <code>image_types</code>,
+      <code>keys</code>,
+      <code>lift</code>,
+      <code>lower</code>,
+      <code>mainloop</code>,
+      <code>nametowidget</code>,
+      <code>option_add</code>,
+      <code>option_clear</code>,
+      <code>option_get</code>,
+      <code>option_readfile</code>,
+      <code>pack_propagate</code>,
+      <code>pack_slaves</code>,
+      <code>place_slaves</code>,
+      <code>propagate</code>,
+      <code>quit</code>,
+      <code>register</code>,
+      <code>rowconfigure</code>,
+      <code>selection_clear</code>,
+      <code>selection_get</code>,
+      <code>selection_handle</code>,
+      <code>selection_own</code>,
+      <code>selection_own_get</code>,
+      <code>send</code>,
+      <code>setvar</code>,
+      <code>size</code>,
+      <code>slaves</code>,
+      <code>tk_bisque</code>,
+      <code>tk_focusFollowsMouse</code>,
+      <code>tk_focusNext</code>,
+      <code>tk_focusPrev</code>,
+      <code>tk_menuBar</code>,
+      <code>tk_setPalette</code>,
+      <code>tk_strictMotif</code>,
+      <code>tkraise</code>,
+      <code>unbind</code>,
+      <code>unbind_all</code>,
+      <code>unbind_class</code>,
+      <code>update</code>,
+      <code>update_idletasks</code>,
+      <code>wait_variable</code>,
+      <code>wait_visibility</code>,
+      <code>wait_window</code>,
+      <code>waitvar</code>,
+      <code>winfo_atom</code>,
+      <code>winfo_atomname</code>,
+      <code>winfo_cells</code>,
+      <code>winfo_children</code>,
+      <code>winfo_class</code>,
+      <code>winfo_colormapfull</code>,
+      <code>winfo_containing</code>,
+      <code>winfo_depth</code>,
+      <code>winfo_exists</code>,
+      <code>winfo_fpixels</code>,
+      <code>winfo_geometry</code>,
+      <code>winfo_height</code>,
+      <code>winfo_id</code>,
+      <code>winfo_interps</code>,
+      <code>winfo_ismapped</code>,
+      <code>winfo_manager</code>,
+      <code>winfo_name</code>,
+      <code>winfo_parent</code>,
+      <code>winfo_pathname</code>,
+      <code>winfo_pixels</code>,
+      <code>winfo_pointerx</code>,
+      <code>winfo_pointerxy</code>,
+      <code>winfo_pointery</code>,
+      <code>winfo_reqheight</code>,
+      <code>winfo_reqwidth</code>,
+      <code>winfo_rgb</code>,
+      <code>winfo_rootx</code>,
+      <code>winfo_rooty</code>,
+      <code>winfo_screen</code>,
+      <code>winfo_screencells</code>,
+      <code>winfo_screendepth</code>,
+      <code>winfo_screenheight</code>,
+      <code>winfo_screenmmheight</code>,
+      <code>winfo_screenmmwidth</code>,
+      <code>winfo_screenvisual</code>,
+      <code>winfo_screenwidth</code>,
+      <code>winfo_server</code>,
+      <code>winfo_toplevel</code>,
+      <code>winfo_viewable</code>,
+      <code>winfo_visual</code>,
+      <code>winfo_visualid</code>,
+      <code>winfo_visualsavailable</code>,
+      <code>winfo_vrootheight</code>,
+      <code>winfo_vrootwidth</code>,
+      <code>winfo_vrootx</code>,
+      <code>winfo_vrooty</code>,
+      <code>winfo_width</code>,
+      <code>winfo_x</code>,
+      <code>winfo_y</code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>Tkinter.Pack</code></b>:
+      <code>forget</code>,
+      <code>info</code>,
+      <code>pack</code>,
+      <code>pack_configure</code>,
+      <code>pack_forget</code>,
+      <code>pack_info</code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>Tkinter.Place</code></b>:
+      <code>place</code>,
+      <code>place_configure</code>,
+      <code>place_forget</code>,
+      <code>place_info</code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>Tkinter.Grid</code></b>:
+      <code>grid</code>,
+      <code>grid_configure</code>,
+      <code>grid_forget</code>,
+      <code>grid_info</code>,
+      <code>grid_remove</code>,
+      <code>location</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Class Variables</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="title"></a><span class="summary-name">title</span> = <code title=""Moving Target Experiment"">"Moving Target Experiment"</code>
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>Tkinter.Misc</code></b>:
+      <code>_noarg_</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Method Details</span></td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">master</span>=<span class="sig-default">None</span>,
+        <span class="sig-arg">suppress_go_buttons</span>=<span class="sig-default">0</span>,
+        <span class="sig-arg">**kw</span>)</span>
+    <br /><em class="fname">(Constructor)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.PyroApps.TargetGUI-pysrc.html#TargetControlFrame.__init__">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Construct a frame widget with the parent MASTER.
+
+Valid resource names: background, bd, bg, borderwidth, class,
+colormap, container, cursor, height, highlightbackground,
+highlightcolor, highlightthickness, relief, takefocus, visual, width.
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#__init__">EPhysGUIUtils.StimulusControlFrame.__init__</a>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="get_shortname"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">get_shortname</span>(<span class="sig-arg">self</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.PyroApps.TargetGUI-pysrc.html#TargetControlFrame.get_shortname">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Used as basename for saving parameter files and other ID purposes
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#get_shortname">EPhysGUIUtils.StimulusControlFrame.get_shortname</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="update_tk_vars"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">update_tk_vars</span>(<span class="sig-arg">self</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.PyroApps.TargetGUI-pysrc.html#TargetControlFrame.update_tk_vars">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Update Tkinter variables with (new) values from meta_params
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#update_tk_vars">EPhysGUIUtils.StimulusControlFrame.update_tk_vars</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="send_values"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">send_values</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">dummy_arg</span>=<span class="sig-default">None</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.PyroApps.TargetGUI-pysrc.html#TargetControlFrame.send_values">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Update meta_params variables with values from Tkinter fields
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#send_values">EPhysGUIUtils.StimulusControlFrame.send_values</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="get_duration_sec"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">get_duration_sec</span>(<span class="sig-arg">self</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.PyroApps.TargetGUI-pysrc.html#TargetControlFrame.get_duration_sec">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Calculate total duration in go loop
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#get_duration_sec">EPhysGUIUtils.StimulusControlFrame.get_duration_sec</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:47 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.PyroApps.TargetGUI.TargetMetaParameters-class.html b/doc/reference/html/VisionEgg.PyroApps.TargetGUI.TargetMetaParameters-class.html
new file mode 100644
index 0000000..320c369
--- /dev/null
+++ b/doc/reference/html/VisionEgg.PyroApps.TargetGUI.TargetMetaParameters-class.html
@@ -0,0 +1,139 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.PyroApps.TargetGUI.TargetMetaParameters</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.PyroApps-module.html">Package PyroApps</a> ::
+        <a href="VisionEgg.PyroApps.TargetGUI-module.html">Module TargetGUI</a> ::
+        Class TargetMetaParameters
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.PyroApps.TargetGUI.TargetMetaParameters-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class TargetMetaParameters</h1><span class="codelink"><a href="VisionEgg.PyroApps.TargetGUI-pysrc.html#TargetMetaParameters">source code</a></span><br /><br />
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__init__"></a><span class="summary-sig-name">__init__</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.TargetGUI-pysrc.html#TargetMetaParameters.__init__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:47 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.PyroApps.TargetServer-module.html b/doc/reference/html/VisionEgg.PyroApps.TargetServer-module.html
new file mode 100644
index 0000000..238cf86
--- /dev/null
+++ b/doc/reference/html/VisionEgg.PyroApps.TargetServer-module.html
@@ -0,0 +1,221 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.PyroApps.TargetServer</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.PyroApps-module.html">Package PyroApps</a> ::
+        Module TargetServer
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.PyroApps.TargetServer-module.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== MODULE DESCRIPTION ==================== -->
+<h1 class="epydoc">Module TargetServer</h1><span class="codelink"><a href="VisionEgg.PyroApps.TargetServer-pysrc.html">source code</a></span><br /><br />
+<pre class="literalblock">
+Handle small targets gratings (server-side)
+
+</pre><br /><br />
+
+<hr />
+<div class="fields">      <p><strong>Version:</strong>
+        1.1.dev
+      </p>
+      <p><strong>Author:</strong>
+        Andrew Straw <astraw at users.sourceforge.net>
+      </p>
+</div><!-- ==================== CLASSES ==================== -->
+<a name="section-Classes"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Classes</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController-class.html" class="summary-name">TargetExperimentMetaController</a>
+    </td>
+  </tr>
+</table>
+<!-- ==================== FUNCTIONS ==================== -->
+<a name="section-Functions"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Functions</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="get_meta_controller_class"></a><span class="summary-sig-name">get_meta_controller_class</span>()</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.TargetServer-pysrc.html#get_meta_controller_class">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="make_stimuli"></a><span class="summary-sig-name">make_stimuli</span>()</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.TargetServer-pysrc.html#make_stimuli">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="get_meta_controller_stimkey"></a><span class="summary-sig-name">get_meta_controller_stimkey</span>()</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.TargetServer-pysrc.html#get_meta_controller_stimkey">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+</table>
+<!-- ==================== VARIABLES ==================== -->
+<a name="section-Variables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Variables</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="__cvs__"></a><span class="summary-name">__cvs__</span> = <code title="'$Revision$'.split() [1]">'$Revision$'.split() [1]</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="__date__"></a><span class="summary-name">__date__</span> = <code title="' '.join('$Date$'.split() [1: 3])">' '.join('$Date$'.split() [1: 3])</code>
+    </td>
+  </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.PyroApps.TargetServer-pysrc.html b/doc/reference/html/VisionEgg.PyroApps.TargetServer-pysrc.html
new file mode 100644
index 0000000..3e26171
--- /dev/null
+++ b/doc/reference/html/VisionEgg.PyroApps.TargetServer-pysrc.html
@@ -0,0 +1,520 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.PyroApps.TargetServer</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.PyroApps-module.html">Package PyroApps</a> ::
+        Module TargetServer
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.PyroApps.TargetServer-pysrc.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<h1 class="epydoc">Source Code for <a href="VisionEgg.PyroApps.TargetServer-module.html">Module VisionEgg.PyroApps.TargetServer</a></h1>
+<pre class="py-src">
+<a name="L1"></a><tt class="py-lineno">  1</tt>  <tt class="py-line"><tt class="py-comment">#!/usr/bin/env python</tt> </tt>
+<a name="L2"></a><tt class="py-lineno">  2</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L3"></a><tt class="py-lineno">  3</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># The Vision Egg: TargetServer</tt> </tt>
+<a name="L4"></a><tt class="py-lineno">  4</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L5"></a><tt class="py-lineno">  5</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Copyright (C) 2001-2003 Andrew Straw.</tt> </tt>
+<a name="L6"></a><tt class="py-lineno">  6</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Author: Andrew Straw <astraw at users.sourceforge.net></tt> </tt>
+<a name="L7"></a><tt class="py-lineno">  7</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># URL: <http://www.visionegg.org/></tt> </tt>
+<a name="L8"></a><tt class="py-lineno">  8</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L9"></a><tt class="py-lineno">  9</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Distributed under the terms of the GNU Lesser General Public License</tt> </tt>
+<a name="L10"></a><tt class="py-lineno"> 10</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># (LGPL). See LICENSE.TXT that came with this file.</tt> </tt>
+<a name="L11"></a><tt class="py-lineno"> 11</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L12"></a><tt class="py-lineno"> 12</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># $Id$</tt> </tt>
+<a name="L13"></a><tt class="py-lineno"> 13</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L14"></a><tt class="py-lineno"> 14</tt>  <tt class="py-line"><tt class="py-docstring">"""Handle small targets gratings (server-side)"""</tt> </tt>
+<a name="L15"></a><tt class="py-lineno"> 15</tt>  <tt class="py-line"> </tt>
+<a name="L16"></a><tt class="py-lineno"> 16</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-0" class="py-name" targets="Package VisionEgg=VisionEgg-module.html"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-0', 'VisionEgg', 'link-0');">VisionEgg</a></tt> </tt>
+<a name="L17"></a><tt class="py-lineno"> 17</tt>  <tt class="py-line"><tt id="link-1" class="py-name" targets="Variable VisionEgg.DaqKeyboard.__version__=VisionEgg.DaqKeyboard-module.html#__version__,Variable VisionEgg.DaqLPT.__version__=VisionEgg.DaqLPT-module.html#__version__,Variable VisionEgg.GL.__version__=VisionEgg.GL-module.html#__version__,Variable VisionEgg.PyroApps.EPhysGUI.__version__=VisionEgg.PyroApps.EPhysGUI-module.html#__version__,Variable VisionEgg.PyroApps.EPhysGUIUtils [...]
+VisionEgg.DaqLPT.__version__
+VisionEgg.GL.__version__
+VisionEgg.PyroApps.EPhysGUI.__version__
+VisionEgg.PyroApps.EPhysGUIUtils.__version__
+VisionEgg.PyroApps.EPhysServer.__version__
+VisionEgg.PyroApps.GridGUI.__version__
+VisionEgg.PyroApps.GridServer.__version__
+VisionEgg.PyroApps.ScreenPositionGUI.__version__
+VisionEgg.PyroApps.ScreenPositionServer.__version__
+VisionEgg.PyroApps.SpinningDrumGUI.__version__
+VisionEgg.PyroApps.SpinningDrumServer.__version__
+VisionEgg.PyroHelpers.__version__
+VisionEgg.QuickTime.__version__
+VisionEgg.ResponseControl.__version__
+VisionEgg.SphereMap.__version__
+VisionEgg.TCPController.__version__" class="py-name" href="#" onclick="return doclink('link-1', '__version__', 'link-1');">__version__</a></tt> <tt class="py-op">=</tt> <tt id="link-2" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-2', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-3" class="py-name" targets="Variable VisionEgg.release_name=VisionEgg-module.html#release_name"><a title="VisionEgg.release_name" c [...]
+<a name="L18"></a><tt class="py-lineno"> 18</tt>  <tt class="py-line"><tt id="link-4" class="py-name" targets="Variable VisionEgg.PyroApps.ColorCalGUI.__cvs__=VisionEgg.PyroApps.ColorCalGUI-module.html#__cvs__,Variable VisionEgg.PyroApps.ColorCalServer.__cvs__=VisionEgg.PyroApps.ColorCalServer-module.html#__cvs__,Variable VisionEgg.PyroApps.EPhysGUI.__cvs__=VisionEgg.PyroApps.EPhysGUI-module.html#__cvs__,Variable VisionEgg.PyroApps.EPhysGUIUtils.__cvs__=VisionEgg.PyroApps.EPhysGUIUtils-m [...]
+VisionEgg.PyroApps.ColorCalServer.__cvs__
+VisionEgg.PyroApps.EPhysGUI.__cvs__
+VisionEgg.PyroApps.EPhysGUIUtils.__cvs__
+VisionEgg.PyroApps.EPhysServer.__cvs__
+VisionEgg.PyroApps.FlatGratingGUI.__cvs__
+VisionEgg.PyroApps.FlatGratingServer.__cvs__
+VisionEgg.PyroApps.GridGUI.__cvs__
+VisionEgg.PyroApps.GridServer.__cvs__
+VisionEgg.PyroApps.MouseTargetGUI.__cvs__
+VisionEgg.PyroApps.MouseTargetServer.__cvs__
+VisionEgg.PyroApps.ScreenPositionGUI.__cvs__
+VisionEgg.PyroApps.ScreenPositionServer.__cvs__
+VisionEgg.PyroApps.SphereGratingGUI.__cvs__
+VisionEgg.PyroApps.SphereGratingServer.__cvs__
+VisionEgg.PyroApps.SpinningDrumGUI.__cvs__
+VisionEgg.PyroApps.SpinningDrumServer.__cvs__
+VisionEgg.PyroApps.TargetGUI.__cvs__
+VisionEgg.PyroApps.TargetServer.__cvs__
+VisionEgg.PyroClient.__cvs__
+VisionEgg.PyroHelpers.__cvs__
+VisionEgg.TCPController.__cvs__" class="py-name" href="#" onclick="return doclink('link-4', '__cvs__', 'link-4');">__cvs__</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'$Revision$'</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
+<a name="L19"></a><tt class="py-lineno"> 19</tt>  <tt class="py-line"><tt id="link-5" class="py-name" targets="Variable VisionEgg.PyroApps.ColorCalGUI.__date__=VisionEgg.PyroApps.ColorCalGUI-module.html#__date__,Variable VisionEgg.PyroApps.ColorCalServer.__date__=VisionEgg.PyroApps.ColorCalServer-module.html#__date__,Variable VisionEgg.PyroApps.EPhysGUI.__date__=VisionEgg.PyroApps.EPhysGUI-module.html#__date__,Variable VisionEgg.PyroApps.EPhysGUIUtils.__date__=VisionEgg.PyroApps.EPhysGUI [...]
+VisionEgg.PyroApps.ColorCalServer.__date__
+VisionEgg.PyroApps.EPhysGUI.__date__
+VisionEgg.PyroApps.EPhysGUIUtils.__date__
+VisionEgg.PyroApps.EPhysServer.__date__
+VisionEgg.PyroApps.FlatGratingGUI.__date__
+VisionEgg.PyroApps.FlatGratingServer.__date__
+VisionEgg.PyroApps.GridGUI.__date__
+VisionEgg.PyroApps.GridServer.__date__
+VisionEgg.PyroApps.MouseTargetGUI.__date__
+VisionEgg.PyroApps.MouseTargetServer.__date__
+VisionEgg.PyroApps.ScreenPositionGUI.__date__
+VisionEgg.PyroApps.ScreenPositionServer.__date__
+VisionEgg.PyroApps.SphereGratingGUI.__date__
+VisionEgg.PyroApps.SphereGratingServer.__date__
+VisionEgg.PyroApps.SpinningDrumGUI.__date__
+VisionEgg.PyroApps.SpinningDrumServer.__date__
+VisionEgg.PyroApps.TargetGUI.__date__
+VisionEgg.PyroApps.TargetServer.__date__
+VisionEgg.PyroClient.__date__
+VisionEgg.PyroHelpers.__date__
+VisionEgg.TCPController.__date__" class="py-name" href="#" onclick="return doclink('link-5', '__date__', 'link-5');">__date__</a></tt> <tt class="py-op">=</tt> <tt class="py-string">' '</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-string">'$Date$'</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">:</tt><tt class="p [...]
+<a name="L20"></a><tt class="py-lineno"> 20</tt>  <tt class="py-line"><tt id="link-6" class="py-name" targets="Variable VisionEgg.PyroApps.EPhysGUI.__author__=VisionEgg.PyroApps.EPhysGUI-module.html#__author__,Variable VisionEgg.PyroApps.EPhysGUIUtils.__author__=VisionEgg.PyroApps.EPhysGUIUtils-module.html#__author__,Variable VisionEgg.PyroApps.EPhysServer.__author__=VisionEgg.PyroApps.EPhysServer-module.html#__author__,Variable VisionEgg.PyroApps.GridGUI.__author__=VisionEgg.PyroApps.Gr [...]
+VisionEgg.PyroApps.EPhysGUIUtils.__author__
+VisionEgg.PyroApps.EPhysServer.__author__
+VisionEgg.PyroApps.GridGUI.__author__
+VisionEgg.PyroApps.GridServer.__author__
+VisionEgg.PyroApps.SpinningDrumGUI.__author__
+VisionEgg.PyroApps.SpinningDrumServer.__author__" class="py-name" href="#" onclick="return doclink('link-6', '__author__', 'link-6');">__author__</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'Andrew Straw <astraw at users.sourceforge.net>'</tt> </tt>
+<a name="L21"></a><tt class="py-lineno"> 21</tt>  <tt class="py-line"> </tt>
+<a name="L22"></a><tt class="py-lineno"> 22</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">sys</tt><tt class="py-op">,</tt> <tt class="py-name">os</tt><tt class="py-op">,</tt> <tt class="py-name">math</tt> </tt>
+<a name="L23"></a><tt class="py-lineno"> 23</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-7" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-7', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-8" class="py-name" targets="Module VisionEgg.Core=VisionEgg.Core-module.html"><a title="VisionEgg.Core" class="py-name" href="#" onclick="return doclink('link-8', 'Core', 'link-8');">Core</a></tt> </tt>
+<a name="L24"></a><tt class="py-lineno"> 24</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-9" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-9', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-10" class="py-name" targets="Module VisionEgg.FlowControl=VisionEgg.FlowControl-module.html"><a title="VisionEgg.FlowControl" class="py-name" href="#" onclick="return doclink('link-10', 'FlowCont [...]
+<a name="L25"></a><tt class="py-lineno"> 25</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-11" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-11', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-12" class="py-name" targets="Module VisionEgg.MoreStimuli=VisionEgg.MoreStimuli-module.html"><a title="VisionEgg.MoreStimuli" class="py-name" href="#" onclick="return doclink('link-12', 'MoreSt [...]
+<a name="L26"></a><tt class="py-lineno"> 26</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-13" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-13', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-14" class="py-name" targets="Module VisionEgg.PyroHelpers=VisionEgg.PyroHelpers-module.html"><a title="VisionEgg.PyroHelpers" class="py-name" href="#" onclick="return doclink('link-14', 'PyroHe [...]
+<a name="L27"></a><tt class="py-lineno"> 27</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">Pyro</tt><tt class="py-op">.</tt><tt class="py-name">core</tt> </tt>
+<a name="L28"></a><tt class="py-lineno"> 28</tt>  <tt class="py-line"> </tt>
+<a name="L29"></a><tt class="py-lineno"> 29</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-15" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-15', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-16" class="py-name" targets="Package VisionEgg.PyroApps=VisionEgg.PyroApps-module.html"><a title="VisionEgg.PyroApps" class="py-name" href="#" onclick="return doclink('link-16', 'PyroApps', 'link [...]
+<a name="L30"></a><tt class="py-lineno"> 30</tt>  <tt class="py-line"> </tt>
+<a name="TargetExperimentMetaController"></a><div id="TargetExperimentMetaController-def"><a name="L31"></a><tt class="py-lineno"> 31</tt> <a class="py-toggle" href="#" id="TargetExperimentMetaController-toggle" onclick="return toggle('TargetExperimentMetaController');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController-class.html">TargetExperimentMetaController</a><tt class="py-op">(</tt> [...]
+</div><div id="TargetExperimentMetaController-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="TargetExperimentMetaController-expanded"><a name="TargetExperimentMetaController.__init__"></a><div id="TargetExperimentMetaController.__init__-def"><a name="L32"></a><tt class="py-lineno"> 32</tt> <a class="py-toggle" href="#" id="TargetExperimentMetaController.__init__-toggle" onclick="return toggle('TargetExperimentMetaController.__init__');">-</a><tt class="py-line">  [...]
+</div><div id="TargetExperimentMetaController.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="TargetExperimentMetaController.__init__-expanded"><a name="L33"></a><tt class="py-lineno"> 33</tt>  <tt class="py-line">        <tt class="py-name">Pyro</tt><tt class="py-op">.</tt><tt class="py-name">core</tt><tt class="py-op">.</tt><tt class="py-name">ObjBase</tt><tt class="py-op">.</tt><tt id="link-19" class="py-name" targets="Method VisionEgg.ClassWithPar [...]
+VisionEgg.Configuration.Config.__init__
+VisionEgg.Core.FixationSpot.__init__
+VisionEgg.Core.FrameTimer.__init__
+VisionEgg.Core.ModelView.__init__
+VisionEgg.Core.OrthographicProjection.__init__
+VisionEgg.Core.OrthographicProjectionNoZClip.__init__
+VisionEgg.Core.PerspectiveProjection.__init__
+VisionEgg.Core.Projection.__init__
+VisionEgg.Core.ProjectionBaseClass.__init__
+VisionEgg.Core.Screen.__init__
+VisionEgg.Core.SimplePerspectiveProjection.__init__
+VisionEgg.Core.Stimulus.__init__
+VisionEgg.Core.Viewport.__init__
+VisionEgg.Daq.Channel.__init__
+VisionEgg.Daq.DaqMode.__init__
+VisionEgg.Daq.Device.__init__
+VisionEgg.Daq.Functionality.__init__
+VisionEgg.Daq.SignalType.__init__
+VisionEgg.DaqKeyboard.KeyboardTriggerInController.__init__
+VisionEgg.DaqLPT.LPTChannel.__init__
+VisionEgg.DaqLPT.LPTDevice.__init__
+VisionEgg.DaqLPT.LPTTriggerInController.__init__
+VisionEgg.DaqLPT.LPTTriggerOutController.__init__
+VisionEgg.Deprecated.Message.__init__
+VisionEgg.Dots.DotArea2D.__init__
+VisionEgg.FlowControl.ConstantController.__init__
+VisionEgg.FlowControl.Controller.__init__
+VisionEgg.FlowControl.EncapsulatedController.__init__
+VisionEgg.FlowControl.EvalStringController.__init__
+VisionEgg.FlowControl.ExecStringController.__init__
+VisionEgg.FlowControl.FunctionController.__init__
+VisionEgg.FlowControl.Presentation.__init__
+VisionEgg.GLTrace.Wrapper.__init__
+VisionEgg.GUI.AppWindow.__init__
+VisionEgg.GUI.GetKeypressDialog.__init__
+VisionEgg.GUI.GraphicsConfigurationWindow.__init__
+VisionEgg.GUI.InfoFrame.__init__
+VisionEgg.GUI.ProgressBar.__init__
+VisionEgg.GUI.ToplevelDialog.__init__
+VisionEgg.Gratings.SinGrating2D.__init__
+VisionEgg.Gratings.SinGrating3D.__init__
+VisionEgg.MoreStimuli.Arrow.__init__
+VisionEgg.MoreStimuli.FilledCircle.__init__
+VisionEgg.MoreStimuli.Rectangle3D.__init__
+VisionEgg.MoreStimuli.Target2D.__init__
+VisionEgg.ParameterTypes.AnyOf.__init__
+VisionEgg.ParameterTypes.Instance.__init__
+VisionEgg.ParameterTypes.Sequence.__init__
+VisionEgg.ParameterTypes.SubClass.__init__
+VisionEgg.PyroApps.AST_ext.AST_Visitor.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalMetaParameters.__init__
+VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.__init__
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.__init__
+VisionEgg.PyroApps.DropinGUI.DropinMetaParameters.__init__
+VisionEgg.PyroApps.DropinServer.DropinMetaController.__init__
+VisionEgg.PyroApps.EPhysGUI.AppWindow.__init__
+VisionEgg.PyroApps.EPhysGUI.BarButton.__init__
+VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase.__init__
+VisionEgg.PyroApps.EPhysGUI.GammaFrame.__init__
+VisionEgg.PyroApps.EPhysGUI.ImageSequenceLauncher.__init__
+VisionEgg.PyroApps.EPhysGUI.Loop.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopContainedObject.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopParamDialog.__init__
+VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.__init__
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.__init__
+VisionEgg.PyroApps.EPhysServer.EPhysServer.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingMetaParameters.__init__
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.GridGUI.GridControlFrame.__init__
+VisionEgg.PyroApps.GridGUI.GridMetaParameters.__init__
+VisionEgg.PyroApps.GridServer.GridMetaController.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetMetaParameters.__init__
+VisionEgg.PyroApps.MouseTargetServer.MousePositionController.__init__
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetOrientationController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetPositionController.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.CallbackEntry.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionParameters.__init__
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingMetaParameters.__init__
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumMetaParameters.__init__
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.__init__
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.__init__
+VisionEgg.PyroApps.TargetGUI.TargetMetaParameters.__init__
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.__init__
+VisionEgg.PyroClient.PyroClient.__init__
+VisionEgg.PyroHelpers.PyroConstantController.__init__
+VisionEgg.PyroHelpers.PyroEncapsulatedController.__init__
+VisionEgg.PyroHelpers.PyroEvalStringController.__init__
+VisionEgg.PyroHelpers.PyroExecStringController.__init__
+VisionEgg.PyroHelpers.PyroListenController.__init__
+VisionEgg.PyroHelpers.PyroLocalDictController.__init__
+VisionEgg.PyroHelpers.PyroServer.__init__
+VisionEgg.QuickTime.MovieTexture.__init__
+VisionEgg.ResponseControl.KeyboardResponseController.__init__
+VisionEgg.ResponseControl.ResponseController.__init__
+VisionEgg.SphereMap.AzElGrid.__init__
+VisionEgg.SphereMap.SphereGrating.__init__
+VisionEgg.SphereMap.SphereMap.__init__
+VisionEgg.SphereMap.SphereWindow.__init__
+VisionEgg.TCPController.SocketListenController.__init__
+VisionEgg.TCPController.TCPController.__init__
+VisionEgg.TCPController.TCPServer.__init__
+VisionEgg.Text.BitmapText.__init__
+VisionEgg.Text.GlutTextBase.__init__
+VisionEgg.Text.StrokeText.__init__
+VisionEgg.Text.Text.__init__
+VisionEgg.Textures.FixationCross.__init__
+VisionEgg.Textures.Mask2D.__init__
+VisionEgg.Textures.SpinningDrum.__init__
+VisionEgg.Textures.Texture.__init__
+VisionEgg.Textures.TextureFromFile.__init__
+VisionEgg.Textures.TextureObject.__init__
+VisionEgg.Textures.TextureStimulusBaseClass.__init__
+VisionEgg.ThreeDeeMath.TransformMatrix.__init__
+VisionEgg.WrappedText.WrappedText.__init__
+VisionEgg.qtmovie.Movie.__init__
+VisionEgg.qtmovie.Rect.__init__" class="py-name" href="#" onclick="return doclink('link-19', '__init__', 'link-19');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
+<a name="L34"></a><tt class="py-lineno"> 34</tt>  <tt class="py-line"> </tt>
+<a name="L35"></a><tt class="py-lineno"> 35</tt>  <tt class="py-line">        <tt class="py-comment"># get stimulus</tt> </tt>
+<a name="L36"></a><tt class="py-lineno"> 36</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">assert</tt><tt class="py-op">(</tt> <tt class="py-name">stimuli</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-string">'2d_overlay'</tt><tt class="py-op">)</tt> </tt>
+<a name="L37"></a><tt class="py-lineno"> 37</tt>  <tt class="py-line">        <tt class="py-name">target</tt> <tt class="py-op">=</tt> <tt class="py-name">stimuli</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
+<a name="L38"></a><tt class="py-lineno"> 38</tt>  <tt class="py-line">         </tt>
+<a name="L39"></a><tt class="py-lineno"> 39</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt> <tt class="py-op">=</tt> <tt id="link-20" class="py-name"><a title="VisionEgg.PyroApps.TargetGUI.TargetMetaParameters" class="py-name" href="#" onclick="return doclink('link-20', 'TargetMetaParameters', 'link-18');">TargetMetaParameters</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L40"></a><tt class="py-lineno"> 40</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">screen</tt><tt class="py-op">,</tt><tt id="link-21" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-21', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-22" class="py-name"><a title="VisionEgg.Cor [...]
+<a name="L41"></a><tt class="py-lineno"> 41</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">"Expecting instance of VisionEgg.Core.Screen"</tt><tt class="py-op">)</tt> </tt>
+<a name="L42"></a><tt class="py-lineno"> 42</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">presentation</tt><tt class="py-op">,</tt><tt id="link-24" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-24', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-25" class="py-name"><a title="VisionE [...]
+<a name="L43"></a><tt class="py-lineno"> 43</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">"Expecting instance of VisionEgg.FlowControl.Presentation"</tt><tt class="py-op">)</tt> </tt>
+<a name="L44"></a><tt class="py-lineno"> 44</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">target</tt><tt class="py-op">,</tt><tt id="link-27" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-27', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-28" class="py-name"><a title="VisionEgg.Mor [...]
+<a name="L45"></a><tt class="py-lineno"> 45</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">"Expecting instance of VisionEgg.MoreStimuli.Target2D"</tt><tt class="py-op">)</tt> </tt>
+<a name="L46"></a><tt class="py-lineno"> 46</tt>  <tt class="py-line">         </tt>
+<a name="L47"></a><tt class="py-lineno"> 47</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">screen</tt> <tt class="py-op">=</tt> <tt class="py-name">screen</tt> </tt>
+<a name="L48"></a><tt class="py-lineno"> 48</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">p</tt> <tt class="py-op">=</tt> <tt class="py-name">presentation</tt> </tt>
+<a name="L49"></a><tt class="py-lineno"> 49</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stim</tt> <tt class="py-op">=</tt> <tt class="py-name">target</tt> </tt>
+<a name="L50"></a><tt class="py-lineno"> 50</tt>  <tt class="py-line"> </tt>
+<a name="L51"></a><tt class="py-lineno"> 51</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt id="link-30" class="py-name" targets="Method VisionEgg.FlowControl.Presentation.add_controller()=VisionEgg.FlowControl.Presentation-class.html#add_controller,Method VisionEgg.PyroHelpers.PyroLocalDictController.add_controller()=VisionEgg.PyroHelpers.PyroLocalDictController-class.html#add_controller"><a tit [...]
+VisionEgg.PyroHelpers.PyroLocalDictController.add_controller" class="py-name" href="#" onclick="return doclink('link-30', 'add_controller', 'link-30');">add_controller</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stim</tt><tt class="py-op">,</tt><tt class="py-string">'on'</tt><tt class="py-op">,</tt><tt id="link-31" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-31', 'VisionEgg', 'lin [...]
+<a name="L52"></a><tt class="py-lineno"> 52</tt>  <tt class="py-line">            <tt class="py-name">during_go_func</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-34" class="py-name" targets="Method VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.on_function_during_go()=VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController-class.html#on_function_during_go,Method VisionEgg.PyroApps.SphereGratingSer [...]
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.on_function_during_go
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.on_function_during_go
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.on_function_during_go" class="py-name" href="#" onclick="return doclink('link-34', 'on_function_during_go', 'link-34');">on_function_during_go</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L53"></a><tt class="py-lineno"> 53</tt>  <tt class="py-line">            <tt class="py-name">between_go_func</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-35" class="py-name" targets="Method VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.on_function_between_go()=VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController-class.html#on_function_between_go,Method VisionEgg.PyroApps.SphereGrating [...]
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.on_function_between_go
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.on_function_between_go
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.on_function_between_go" class="py-name" href="#" onclick="return doclink('link-35', 'on_function_between_go', 'link-35');">on_function_between_go</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L54"></a><tt class="py-lineno"> 54</tt>  <tt class="py-line"> </tt>
+<a name="L55"></a><tt class="py-lineno"> 55</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt id="link-36" class="py-name"><a title="VisionEgg.FlowControl.Presentation.add_controller
+VisionEgg.PyroHelpers.PyroLocalDictController.add_controller" class="py-name" href="#" onclick="return doclink('link-36', 'add_controller', 'link-30');">add_controller</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stim</tt><tt class="py-op">,</tt><tt class="py-string">'position'</tt><tt class="py-op">,</tt><tt id="link-37" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-37', 'VisionEgg' [...]
+<a name="L56"></a><tt class="py-lineno"> 56</tt>  <tt class="py-line">            <tt class="py-name">during_go_func</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-40" class="py-name" targets="Method VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.center_during_go()=VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController-class.html#center_during_go"><a title="VisionEgg.PyroApps.TargetServer.TargetExperimentMetaControlle [...]
+<a name="L57"></a><tt class="py-lineno"> 57</tt>  <tt class="py-line">            <tt class="py-name">between_go_func</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-41" class="py-name" targets="Method VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.center_between_go()=VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController-class.html#center_between_go"><a title="VisionEgg.PyroApps.TargetServer.TargetExperimentMetaContro [...]
+<a name="L58"></a><tt class="py-lineno"> 58</tt>  <tt class="py-line"> </tt>
+<a name="L59"></a><tt class="py-lineno"> 59</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-42" class="py-name" targets="Method VisionEgg.GUI.InfoFrame.update()=VisionEgg.GUI.InfoFrame-class.html#update,Method VisionEgg.GUI.ProgressBar.update()=VisionEgg.GUI.ProgressBar-class.html#update,Method VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.update()=VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController-class.html#update,Met [...]
+VisionEgg.GUI.ProgressBar.update
+VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.update
+VisionEgg.PyroApps.DropinServer.DropinMetaController.update
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.update
+VisionEgg.PyroApps.GridServer.GridMetaController.update
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.update
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.update
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.update
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.update
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.update
+VisionEgg.QuickTime.MovieTexture.update
+VisionEgg.Textures.Texture.update" class="py-name" href="#" onclick="return doclink('link-42', 'update', 'link-42');">update</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-comment"># set stimulus parameters to initial defaults</tt> </tt>
+</div><a name="L60"></a><tt class="py-lineno"> 60</tt>  <tt class="py-line"> </tt>
+<a name="TargetExperimentMetaController.__del__"></a><div id="TargetExperimentMetaController.__del__-def"><a name="L61"></a><tt class="py-lineno"> 61</tt> <a class="py-toggle" href="#" id="TargetExperimentMetaController.__del__-toggle" onclick="return toggle('TargetExperimentMetaController.__del__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController-class.html#__del__">__del__</a><tt c [...]
+</div><div id="TargetExperimentMetaController.__del__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="TargetExperimentMetaController.__del__-expanded"><a name="L62"></a><tt class="py-lineno"> 62</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt id="link-43" class="py-name" targets="Method VisionEgg.FlowControl.Presentation.remove_controller()=VisionEgg.FlowControl.Presen [...]
+<a name="L63"></a><tt class="py-lineno"> 63</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt id="link-44" class="py-name"><a title="VisionEgg.FlowControl.Presentation.remove_controller" class="py-name" href="#" onclick="return doclink('link-44', 'remove_controller', 'link-43');">remove_controller</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-nam [...]
+<a name="L64"></a><tt class="py-lineno"> 64</tt>  <tt class="py-line">        <tt class="py-name">Pyro</tt><tt class="py-op">.</tt><tt class="py-name">core</tt><tt class="py-op">.</tt><tt class="py-name">ObjBase</tt><tt class="py-op">.</tt><tt id="link-45" class="py-name" targets="Method VisionEgg.Core.Screen.__del__()=VisionEgg.Core.Screen-class.html#__del__,Method VisionEgg.DaqLPT.LPTOutput.__del__()=VisionEgg.DaqLPT.LPTOutput-class.html#__del__,Method VisionEgg.Gratings.SinGrating2D._ [...]
+VisionEgg.DaqLPT.LPTOutput.__del__
+VisionEgg.Gratings.SinGrating2D.__del__
+VisionEgg.Gratings.SinGrating3D.__del__
+VisionEgg.PyroApps.EPhysGUI.AppWindow.__del__
+VisionEgg.PyroApps.EPhysServer.EPhysServer.__del__
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.__del__
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.__del__
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.__del__
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.__del__
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.__del__
+VisionEgg.QuickTime.MovieTexture.__del__
+VisionEgg.Textures.TextureObject.__del__" class="py-name" href="#" onclick="return doclink('link-45', '__del__', 'link-45');">__del__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> <tt class="py-comment"># call base class</tt> </tt>
+</div><a name="L65"></a><tt class="py-lineno"> 65</tt>  <tt class="py-line"> </tt>
+<a name="TargetExperimentMetaController.on_function_during_go"></a><div id="TargetExperimentMetaController.on_function_during_go-def"><a name="L66"></a><tt class="py-lineno"> 66</tt> <a class="py-toggle" href="#" id="TargetExperimentMetaController.on_function_during_go-toggle" onclick="return toggle('TargetExperimentMetaController.on_function_during_go');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.TargetServer.TargetExper [...]
+</div><div id="TargetExperimentMetaController.on_function_during_go-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="TargetExperimentMetaController.on_function_during_go-expanded"><a name="L67"></a><tt class="py-lineno"> 67</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">t</tt> <tt class="py-op"><=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op">.</tt><tt cla [...]
+<a name="L68"></a><tt class="py-lineno"> 68</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-number">0</tt> <tt class="py-comment"># not on yet</tt> </tt>
+<a name="L69"></a><tt class="py-lineno"> 69</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">t</tt> <tt class="py-op"><=</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op">.</tt><tt class="py-name">pre_stim_sec</tt> <tt class="py-op">+</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op">.</tt><tt class="p [...]
+<a name="L70"></a><tt class="py-lineno"> 70</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-number">1</tt> <tt class="py-comment"># on</tt> </tt>
+<a name="L71"></a><tt class="py-lineno"> 71</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L72"></a><tt class="py-lineno"> 72</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-number">0</tt> <tt class="py-comment"># off again</tt> </tt>
+</div><a name="L73"></a><tt class="py-lineno"> 73</tt>  <tt class="py-line">         </tt>
+<a name="TargetExperimentMetaController.on_function_between_go"></a><div id="TargetExperimentMetaController.on_function_between_go-def"><a name="L74"></a><tt class="py-lineno"> 74</tt> <a class="py-toggle" href="#" id="TargetExperimentMetaController.on_function_between_go-toggle" onclick="return toggle('TargetExperimentMetaController.on_function_between_go');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.TargetServer.TargetE [...]
+</div><div id="TargetExperimentMetaController.on_function_between_go-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="TargetExperimentMetaController.on_function_between_go-expanded"><a name="L75"></a><tt class="py-lineno"> 75</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-number">0</tt> </tt>
+</div><a name="L76"></a><tt class="py-lineno"> 76</tt>  <tt class="py-line">     </tt>
+<a name="TargetExperimentMetaController.center_during_go"></a><div id="TargetExperimentMetaController.center_during_go-def"><a name="L77"></a><tt class="py-lineno"> 77</tt> <a class="py-toggle" href="#" id="TargetExperimentMetaController.center_during_go-toggle" onclick="return toggle('TargetExperimentMetaController.center_during_go');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController- [...]
+</div><div id="TargetExperimentMetaController.center_during_go-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="TargetExperimentMetaController.center_during_go-expanded"><a name="L78"></a><tt class="py-lineno"> 78</tt>  <tt class="py-line">        <tt class="py-name">t_adjusted</tt> <tt class="py-op">=</tt> <tt class="py-name">t</tt> <tt class="py-op">-</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-o [...]
+<a name="L79"></a><tt class="py-lineno"> 79</tt>  <tt class="py-line">        <tt class="py-name">distance</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op">.</tt><tt class="py-name">velocity_pps</tt> <tt class="py-op">*</tt> <tt class="py-name">t_adjusted</tt> </tt>
+<a name="L80"></a><tt class="py-lineno"> 80</tt>  <tt class="py-line">        <tt class="py-name">x_offset</tt> <tt class="py-op">=</tt> <tt class="py-name">math</tt><tt class="py-op">.</tt><tt class="py-name">cos</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op">.</tt><tt class="py-name">direction_deg</tt> <tt class="py-op">/</tt> <tt class="py-number">180.0</tt> <tt class="py-op">*</tt> <tt class="py-n [...]
+<a name="L81"></a><tt class="py-lineno"> 81</tt>  <tt class="py-line">        <tt class="py-name">y_offset</tt> <tt class="py-op">=</tt> <tt class="py-name">math</tt><tt class="py-op">.</tt><tt class="py-name">sin</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op">.</tt><tt class="py-name">direction_deg</tt> <tt class="py-op">/</tt> <tt class="py-number">180.0</tt> <tt class="py-op">*</tt> <tt class="py-n [...]
+<a name="L82"></a><tt class="py-lineno"> 82</tt>  <tt class="py-line">         </tt>
+<a name="L83"></a><tt class="py-lineno"> 83</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op">.</tt><tt class="py-name">start_x</tt> <tt class="py-op">+</tt> <tt class="py-name">x_offset</tt><tt class="py-op">,</tt> </tt>
+<a name="L84"></a><tt class="py-lineno"> 84</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt><tt class="py-op">.</tt><tt class="py-name">start_y</tt> <tt class="py-op">+</tt> <tt class="py-name">y_offset</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L85"></a><tt class="py-lineno"> 85</tt>  <tt class="py-line">         </tt>
+<a name="TargetExperimentMetaController.center_between_go"></a><div id="TargetExperimentMetaController.center_between_go-def"><a name="L86"></a><tt class="py-lineno"> 86</tt> <a class="py-toggle" href="#" id="TargetExperimentMetaController.center_between_go-toggle" onclick="return toggle('TargetExperimentMetaController.center_between_go');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.TargetServer.TargetExperimentMetaControl [...]
+</div><div id="TargetExperimentMetaController.center_between_go-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="TargetExperimentMetaController.center_between_go-expanded"><a name="L87"></a><tt class="py-lineno"> 87</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-op">(</tt><tt class="py-number">0.0</tt><tt class="py-op">,</tt> <tt class="py-number">0.0</tt><tt class="py-op">)</tt> <tt class="py-comment"># doesn't matter -- it' [...]
+</div><a name="L88"></a><tt class="py-lineno"> 88</tt>  <tt class="py-line">     </tt>
+<a name="TargetExperimentMetaController.get_parameters"></a><div id="TargetExperimentMetaController.get_parameters-def"><a name="L89"></a><tt class="py-lineno"> 89</tt> <a class="py-toggle" href="#" id="TargetExperimentMetaController.get_parameters-toggle" onclick="return toggle('TargetExperimentMetaController.get_parameters');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController-class.ht [...]
+</div><div id="TargetExperimentMetaController.get_parameters-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="TargetExperimentMetaController.get_parameters-expanded"><a name="L90"></a><tt class="py-lineno"> 90</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt> </tt>
+</div><a name="L91"></a><tt class="py-lineno"> 91</tt>  <tt class="py-line"> </tt>
+<a name="TargetExperimentMetaController.set_parameters"></a><div id="TargetExperimentMetaController.set_parameters-def"><a name="L92"></a><tt class="py-lineno"> 92</tt> <a class="py-toggle" href="#" id="TargetExperimentMetaController.set_parameters-toggle" onclick="return toggle('TargetExperimentMetaController.set_parameters');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController-class.ht [...]
+</div><div id="TargetExperimentMetaController.set_parameters-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="TargetExperimentMetaController.set_parameters-expanded"><a name="L93"></a><tt class="py-lineno"> 93</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">new_parameters</tt><tt class="py-op">,</tt> <tt id="link-46" class="py-name"><a title="VisionEgg.PyroApps.Targe [...]
+<a name="L94"></a><tt class="py-lineno"> 94</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt> <tt class="py-op">=</tt> <tt class="py-name">new_parameters</tt> </tt>
+<a name="L95"></a><tt class="py-lineno"> 95</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L96"></a><tt class="py-lineno"> 96</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">"Argument to set_parameters must be instance of TargetMetaParameters"</tt><tt class="py-op">)</tt> </tt>
+<a name="L97"></a><tt class="py-lineno"> 97</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-47" class="py-name"><a title="VisionEgg.GUI.InfoFrame.update
+VisionEgg.GUI.ProgressBar.update
+VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.update
+VisionEgg.PyroApps.DropinServer.DropinMetaController.update
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.update
+VisionEgg.PyroApps.GridServer.GridMetaController.update
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.update
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.update
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.update
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.update
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.update
+VisionEgg.QuickTime.MovieTexture.update
+VisionEgg.Textures.Texture.update" class="py-name" href="#" onclick="return doclink('link-47', 'update', 'link-42');">update</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L98"></a><tt class="py-lineno"> 98</tt>  <tt class="py-line">         </tt>
+<a name="TargetExperimentMetaController.update"></a><div id="TargetExperimentMetaController.update-def"><a name="L99"></a><tt class="py-lineno"> 99</tt> <a class="py-toggle" href="#" id="TargetExperimentMetaController.update-toggle" onclick="return toggle('TargetExperimentMetaController.update');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController-class.html#update">update</a><tt class=" [...]
+</div><div id="TargetExperimentMetaController.update-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="TargetExperimentMetaController.update-expanded"><a name="L100"></a><tt class="py-lineno">100</tt>  <tt class="py-line">        <tt class="py-name">stim_params</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stim</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt> <tt class="py-comment"># shortha [...]
+<a name="L101"></a><tt class="py-lineno">101</tt>  <tt class="py-line">        <tt class="py-name">meta_params</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">meta_params</tt> <tt class="py-comment"># shorthand</tt> </tt>
+<a name="L102"></a><tt class="py-lineno">102</tt>  <tt class="py-line"> </tt>
+<a name="L103"></a><tt class="py-lineno">103</tt>  <tt class="py-line">        <tt class="py-comment"># colors</tt> </tt>
+<a name="L104"></a><tt class="py-lineno">104</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">stim_params</tt><tt class="py-op">.</tt><tt class="py-name">color</tt> <tt class="py-op">=</tt> <tt class="py-name">meta_params</tt><tt class="py-op">.</tt><tt class="py-name">color</tt> </tt>
+<a name="L105"></a><tt class="py-lineno">105</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">screen</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">bgcolor</tt> <tt class="py-op">=</tt> <tt class="py-name">meta_params</tt><tt class="py-op">.</tt><tt class="py-name">bgcolor</tt> </tt>
+<a name="L106"></a><tt class="py-lineno">106</tt>  <tt class="py-line"> </tt>
+<a name="L107"></a><tt class="py-lineno">107</tt>  <tt class="py-line">        <tt class="py-comment"># size and orientation</tt> </tt>
+<a name="L108"></a><tt class="py-lineno">108</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">stim_params</tt><tt class="py-op">.</tt><tt id="link-48" class="py-name" targets="Variable VisionEgg.Core.Screen.size=VisionEgg.Core.Screen-class.html#size"><a title="VisionEgg.Core.Screen.size" class="py-name" href="#" onclick="return doclink('link-48', 'size', 'link-48');">size</a></tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">meta_p [...]
+<a name="L109"></a><tt class="py-lineno">109</tt>  <tt class="py-line">        <tt class="py-name">stim_params</tt><tt class="py-op">.</tt><tt class="py-name">orientation</tt> <tt class="py-op">=</tt> <tt class="py-name">meta_params</tt><tt class="py-op">.</tt><tt class="py-name">orientation_deg</tt> </tt>
+<a name="L110"></a><tt class="py-lineno">110</tt>  <tt class="py-line">         </tt>
+<a name="L111"></a><tt class="py-lineno">111</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">go_duration</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt> <tt class="py-name">meta_params</tt><tt class="py-op">.</tt><tt class="py-name">pre_stim_sec</tt> <tt class="py-op">+</tt> <tt class="py-name">meta_params</tt><tt c [...]
+</div><a name="L112"></a><tt class="py-lineno">112</tt>  <tt class="py-line"> </tt>
+<a name="TargetExperimentMetaController.go"></a><div id="TargetExperimentMetaController.go-def"><a name="L113"></a><tt class="py-lineno">113</tt> <a class="py-toggle" href="#" id="TargetExperimentMetaController.go-toggle" onclick="return toggle('TargetExperimentMetaController.go');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController-class.html#go">go</a><tt class="py-op">(</tt><tt class= [...]
+</div><div id="TargetExperimentMetaController.go-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="TargetExperimentMetaController.go-expanded"><a name="L114"></a><tt class="py-lineno">114</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">enter_go_loop</tt> <tt class="py-op">=</tt> <tt class="py-numb [...]
+</div><a name="L115"></a><tt class="py-lineno">115</tt>  <tt class="py-line"> </tt>
+<a name="TargetExperimentMetaController.quit_server"></a><div id="TargetExperimentMetaController.quit_server-def"><a name="L116"></a><tt class="py-lineno">116</tt> <a class="py-toggle" href="#" id="TargetExperimentMetaController.quit_server-toggle" onclick="return toggle('TargetExperimentMetaController.quit_server');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController-class.html#quit_ser [...]
+</div><div id="TargetExperimentMetaController.quit_server-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="TargetExperimentMetaController.quit_server-expanded"><a name="L117"></a><tt class="py-lineno">117</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt id="link-49" class="py-name" targets="Method VisionEgg.PyroA [...]
+</div></div><a name="L118"></a><tt class="py-lineno">118</tt>  <tt class="py-line"> </tt>
+<a name="get_meta_controller_class"></a><div id="get_meta_controller_class-def"><a name="L119"></a><tt class="py-lineno">119</tt> <a class="py-toggle" href="#" id="get_meta_controller_class-toggle" onclick="return toggle('get_meta_controller_class');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.TargetServer-module.html#get_meta_controller_class">get_meta_controller_class</a><tt class="py-op">(</tt><tt class="py-op">)</tt><tt cl [...]
+</div><div id="get_meta_controller_class-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="get_meta_controller_class-expanded"><a name="L120"></a><tt class="py-lineno">120</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt id="link-50" class="py-name" targets="Class VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController=VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController-class.html"><a title="VisionEgg.PyroApps.TargetServer.Targe [...]
+</div><a name="L121"></a><tt class="py-lineno">121</tt>  <tt class="py-line"> </tt>
+<a name="make_stimuli"></a><div id="make_stimuli-def"><a name="L122"></a><tt class="py-lineno">122</tt> <a class="py-toggle" href="#" id="make_stimuli-toggle" onclick="return toggle('make_stimuli');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.TargetServer-module.html#make_stimuli">make_stimuli</a><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="make_stimuli-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="make_stimuli-expanded"><a name="L123"></a><tt class="py-lineno">123</tt>  <tt class="py-line">    <tt class="py-name">stimulus</tt> <tt class="py-op">=</tt> <tt id="link-51" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-51', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-52" class="py-name"><a title="VisionEgg.M [...]
+<a name="L124"></a><tt class="py-lineno">124</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-op">[</tt><tt class="py-op">(</tt><tt class="py-string">'2d_overlay'</tt><tt class="py-op">,</tt><tt class="py-name">stimulus</tt><tt class="py-op">)</tt><tt class="py-op">]</tt> </tt>
+</div><a name="L125"></a><tt class="py-lineno">125</tt>  <tt class="py-line"> </tt>
+<a name="get_meta_controller_stimkey"></a><div id="get_meta_controller_stimkey-def"><a name="L126"></a><tt class="py-lineno">126</tt> <a class="py-toggle" href="#" id="get_meta_controller_stimkey-toggle" onclick="return toggle('get_meta_controller_stimkey');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.TargetServer-module.html#get_meta_controller_stimkey">get_meta_controller_stimkey</a><tt class="py-op">(</tt><tt class="py-op"> [...]
+</div><div id="get_meta_controller_stimkey-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="get_meta_controller_stimkey-expanded"><a name="L127"></a><tt class="py-lineno">127</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-string">"target_server"</tt> </tt>
+</div><a name="L128"></a><tt class="py-lineno">128</tt>  <tt class="py-line"> </tt>
+<a name="L129"></a><tt class="py-lineno">129</tt>  <tt class="py-line"><tt class="py-comment"># Don't do anything unless this script is being run</tt> </tt>
+<a name="L130"></a><tt class="py-lineno">130</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-keyword">if</tt> <tt class="py-name">__name__</tt> <tt class="py-op">==</tt> <tt class="py-string">'__main__'</tt><tt class="py-op">:</tt> </tt>
+<a name="L131"></a><tt class="py-lineno">131</tt>  <tt class="py-line">     </tt>
+<a name="L132"></a><tt class="py-lineno">132</tt>  <tt class="py-line">    <tt class="py-name">pyro_server</tt> <tt class="py-op">=</tt> <tt id="link-54" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-54', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-55" class="py-name"><a title="VisionEgg.PyroHelpers" class="py-name" href="#" onclick="return doclink('link-55', 'PyroHelpers', 'link-14');">PyroHelpers</a></tt> [...]
+<a name="L133"></a><tt class="py-lineno">133</tt>  <tt class="py-line"> </tt>
+<a name="L134"></a><tt class="py-lineno">134</tt>  <tt class="py-line">    <tt class="py-name">screen</tt> <tt class="py-op">=</tt> <tt id="link-57" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-57', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-58" class="py-name"><a title="VisionEgg.Core" class="py-name" href="#" onclick="return doclink('link-58', 'Core', 'link-8');">Core</a></tt><tt class="py-op">.</tt><tt [...]
+<a name="L135"></a><tt class="py-lineno">135</tt>  <tt class="py-line"> </tt>
+<a name="L136"></a><tt class="py-lineno">136</tt>  <tt class="py-line">    <tt class="py-comment"># get Vision Egg stimulus ready to go</tt> </tt>
+<a name="L137"></a><tt class="py-lineno">137</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">stimuli</tt> <tt class="py-op">=</tt> <tt id="link-61" class="py-name" targets="Function VisionEgg.PyroApps.ColorCalServer.make_stimuli()=VisionEgg.PyroApps.ColorCalServer-module.html#make_stimuli,Function VisionEgg.PyroApps.DropinServer.make_stimuli()=VisionEgg.PyroApps.DropinServer-module.html#make_stimuli,Function VisionEgg.PyroApps.FlatGratingServer.make_stimuli( [...]
+VisionEgg.PyroApps.DropinServer.make_stimuli
+VisionEgg.PyroApps.FlatGratingServer.make_stimuli
+VisionEgg.PyroApps.GridServer.make_stimuli
+VisionEgg.PyroApps.MouseTargetServer.make_stimuli
+VisionEgg.PyroApps.SphereGratingServer.make_stimuli
+VisionEgg.PyroApps.SpinningDrumServer.make_stimuli
+VisionEgg.PyroApps.TargetServer.make_stimuli" class="py-name" href="#" onclick="return doclink('link-61', 'make_stimuli', 'link-61');">make_stimuli</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L138"></a><tt class="py-lineno">138</tt>  <tt class="py-line">    <tt class="py-name">stimulus</tt> <tt class="py-op">=</tt> <tt class="py-name">stimuli</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
+<a name="L139"></a><tt class="py-lineno">139</tt>  <tt class="py-line">    <tt class="py-name">viewport</tt> <tt class="py-op">=</tt> <tt id="link-62" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-62', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-63" class="py-name"><a title="VisionEgg.Core" class="py-name" href="#" onclick="return doclink('link-63', 'Core', 'link-8');">Core</a></tt><tt class="py-op">.</tt>< [...]
+<a name="L140"></a><tt class="py-lineno">140</tt>  <tt class="py-line">    <tt class="py-name">p</tt> <tt class="py-op">=</tt> <tt id="link-65" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-65', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-66" class="py-name"><a title="VisionEgg.FlowControl" class="py-name" href="#" onclick="return doclink('link-66', 'FlowControl', 'link-10');">FlowControl</a></tt><tt class= [...]
+<a name="L141"></a><tt class="py-lineno">141</tt>  <tt class="py-line"> </tt>
+<a name="L142"></a><tt class="py-lineno">142</tt>  <tt class="py-line">    <tt class="py-comment"># now hand over control of grating and mask to FlatGratingExperimentMetaController</tt> </tt>
+<a name="L143"></a><tt class="py-lineno">143</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">meta_controller</tt> <tt class="py-op">=</tt> <tt id="link-68" class="py-name"><a title="VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController" class="py-name" href="#" onclick="return doclink('link-68', 'TargetExperimentMetaController', 'link-50');">TargetExperimentMetaController</a></tt><tt class="py-op">(</tt><tt class="py-name">screen</tt><tt class="py-o [...]
+<a name="L144"></a><tt class="py-lineno">144</tt>  <tt class="py-line">    <tt class="py-name">pyro_server</tt><tt class="py-op">.</tt><tt id="link-69" class="py-name" targets="Method VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.connect()=VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#connect,Method VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.connect()=VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html#connect,Method  [...]
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.connect
+VisionEgg.PyroHelpers.PyroServer.connect" class="py-name" href="#" onclick="return doclink('link-69', 'connect', 'link-69');">connect</a></tt><tt class="py-op">(</tt><tt class="py-name">meta_controller</tt><tt class="py-op">,</tt><tt id="link-70" class="py-name" targets="Function VisionEgg.PyroApps.ColorCalServer.get_meta_controller_stimkey()=VisionEgg.PyroApps.ColorCalServer-module.html#get_meta_controller_stimkey,Function VisionEgg.PyroApps.DropinServer.get_meta_controller_stimkey()=Vi [...]
+VisionEgg.PyroApps.DropinServer.get_meta_controller_stimkey
+VisionEgg.PyroApps.FlatGratingServer.get_meta_controller_stimkey
+VisionEgg.PyroApps.GridServer.get_meta_controller_stimkey
+VisionEgg.PyroApps.MouseTargetServer.get_meta_controller_stimkey
+VisionEgg.PyroApps.SphereGratingServer.get_meta_controller_stimkey
+VisionEgg.PyroApps.SpinningDrumServer.get_meta_controller_stimkey
+VisionEgg.PyroApps.TargetServer.get_meta_controller_stimkey" class="py-name" href="#" onclick="return doclink('link-70', 'get_meta_controller_stimkey', 'link-70');">get_meta_controller_stimkey</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L145"></a><tt class="py-lineno">145</tt>  <tt class="py-line"> </tt>
+<a name="L146"></a><tt class="py-lineno">146</tt>  <tt class="py-line">    <tt class="py-comment"># get listener controller and register it</tt> </tt>
+<a name="L147"></a><tt class="py-lineno">147</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">p</tt><tt class="py-op">.</tt><tt id="link-71" class="py-name"><a title="VisionEgg.FlowControl.Presentation.add_controller
+VisionEgg.PyroHelpers.PyroLocalDictController.add_controller" class="py-name" href="#" onclick="return doclink('link-71', 'add_controller', 'link-30');">add_controller</a></tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-name">pyro_server</tt><tt class="py-op">.</tt><tt id="link-72" class="py-name" targets="Method VisionEgg.PyroHelpers.PyroServer.create_listener_controller()=VisionEgg.Pyro [...]
+<a name="L148"></a><tt class="py-lineno">148</tt>  <tt class="py-line"> </tt>
+<a name="L149"></a><tt class="py-lineno">149</tt>  <tt class="py-line">    <tt class="py-comment"># enter endless loop</tt> </tt>
+<a name="L150"></a><tt class="py-lineno">150</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-name">p</tt><tt class="py-op">.</tt><tt id="link-73" class="py-name" targets="Method VisionEgg.FlowControl.Presentation.run_forever()=VisionEgg.FlowControl.Presentation-class.html#run_forever"><a title="VisionEgg.FlowControl.Presentation.run_forever" class="py-name" href="#" onclick="return doclink('link-73', 'run_forever', 'link-73');">run_forever</a></tt><tt class="py-op [...]
+<a name="L151"></a><tt class="py-lineno">151</tt>  <tt class="py-line"> </tt><script type="text/javascript">
+<!--
+expandto(location.href);
+// -->
+</script>
+</pre>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:50 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController-class.html b/doc/reference/html/VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController-class.html
new file mode 100644
index 0000000..6d86bd9
--- /dev/null
+++ b/doc/reference/html/VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController-class.html
@@ -0,0 +1,366 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.PyroApps-module.html">Package PyroApps</a> ::
+        <a href="VisionEgg.PyroApps.TargetServer-module.html">Module TargetServer</a> ::
+        Class TargetExperimentMetaController
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class TargetExperimentMetaController</h1><span class="codelink"><a href="VisionEgg.PyroApps.TargetServer-pysrc.html#TargetExperimentMetaController">source code</a></span><br /><br />
+<pre class="base-tree">
+Pyro.core.ObjBase --+
+                    |
+                   <strong class="uidshort">TargetExperimentMetaController</strong>
+</pre>
+
+<hr />
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">screen</span>,
+        <span class="summary-sig-arg">presentation</span>,
+        <span class="summary-sig-arg">stimuli</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.TargetServer-pysrc.html#TargetExperimentMetaController.__init__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__del__"></a><span class="summary-sig-name">__del__</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.TargetServer-pysrc.html#TargetExperimentMetaController.__del__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="on_function_during_go"></a><span class="summary-sig-name">on_function_during_go</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">t</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.TargetServer-pysrc.html#TargetExperimentMetaController.on_function_during_go">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="on_function_between_go"></a><span class="summary-sig-name">on_function_between_go</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.TargetServer-pysrc.html#TargetExperimentMetaController.on_function_between_go">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="center_during_go"></a><span class="summary-sig-name">center_during_go</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">t</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.TargetServer-pysrc.html#TargetExperimentMetaController.center_during_go">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="center_between_go"></a><span class="summary-sig-name">center_between_go</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.TargetServer-pysrc.html#TargetExperimentMetaController.center_between_go">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="get_parameters"></a><span class="summary-sig-name">get_parameters</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.TargetServer-pysrc.html#TargetExperimentMetaController.get_parameters">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="set_parameters"></a><span class="summary-sig-name">set_parameters</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">new_parameters</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.TargetServer-pysrc.html#TargetExperimentMetaController.set_parameters">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="update"></a><span class="summary-sig-name">update</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.TargetServer-pysrc.html#TargetExperimentMetaController.update">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="go"></a><span class="summary-sig-name">go</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.TargetServer-pysrc.html#TargetExperimentMetaController.go">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="quit_server"></a><span class="summary-sig-name">quit_server</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.TargetServer-pysrc.html#TargetExperimentMetaController.quit_server">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>Pyro.core.ObjBase</code></b>:
+      <code>GUID</code>,
+      <code>Pyro_dyncall</code>,
+      <code>delegateTo</code>,
+      <code>getAttrProxy</code>,
+      <code>getDaemon</code>,
+      <code>getLocalStorage</code>,
+      <code>getProxy</code>,
+      <code>remote_retrieve_code</code>,
+      <code>remote_supply_code</code>,
+      <code>setCodeValidator</code>,
+      <code>setGUID</code>,
+      <code>setPyroDaemon</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Method Details</span></td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">screen</span>,
+        <span class="sig-arg">presentation</span>,
+        <span class="sig-arg">stimuli</span>)</span>
+    <br /><em class="fname">(Constructor)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.PyroApps.TargetServer-pysrc.html#TargetExperimentMetaController.__init__">source code</a></span> 
+    </td>
+  </table>
+  
+  
+  <dl class="fields">
+    <dt>Overrides:
+      Pyro.core.ObjBase.__init__
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:47 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.PyroApps.VarTypes-module.html b/doc/reference/html/VisionEgg.PyroApps.VarTypes-module.html
new file mode 100644
index 0000000..0a47fa0
--- /dev/null
+++ b/doc/reference/html/VisionEgg.PyroApps.VarTypes-module.html
@@ -0,0 +1,154 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.PyroApps.VarTypes</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.PyroApps-module.html">Package PyroApps</a> ::
+        Module VarTypes
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.PyroApps.VarTypes-module.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== MODULE DESCRIPTION ==================== -->
+<h1 class="epydoc">Module VarTypes</h1><span class="codelink"><a href="VisionEgg.PyroApps.VarTypes-pysrc.html">source code</a></span><br /><br />
+<!-- ==================== FUNCTIONS ==================== -->
+<a name="section-Functions"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Functions</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="getID"></a><span class="summary-sig-name">getID</span>(<span class="summary-sig-arg">var_type</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.VarTypes-pysrc.html#getID">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="getType"></a><span class="summary-sig-name">getType</span>(<span class="summary-sig-arg">ID</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroApps.VarTypes-pysrc.html#getType">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.PyroApps.VarTypes-pysrc.html b/doc/reference/html/VisionEgg.PyroApps.VarTypes-pysrc.html
new file mode 100644
index 0000000..71ed2f9
--- /dev/null
+++ b/doc/reference/html/VisionEgg.PyroApps.VarTypes-pysrc.html
@@ -0,0 +1,153 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.PyroApps.VarTypes</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.PyroApps-module.html">Package PyroApps</a> ::
+        Module VarTypes
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.PyroApps.VarTypes-pysrc.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<h1 class="epydoc">Source Code for <a href="VisionEgg.PyroApps.VarTypes-module.html">Module VisionEgg.PyroApps.VarTypes</a></h1>
+<pre class="py-src">
+<a name="L1"></a><tt class="py-lineno"> 1</tt>  <tt class="py-line"><tt class="py-comment"># The Vision Egg: VarTypes</tt> </tt>
+<a name="L2"></a><tt class="py-lineno"> 2</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L3"></a><tt class="py-lineno"> 3</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Copyright (C) 2004 Imran S. Ali, Lachlan Dowd</tt> </tt>
+<a name="L4"></a><tt class="py-lineno"> 4</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L5"></a><tt class="py-lineno"> 5</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Author: Imran S. Ali, Lachlan Dowd</tt> </tt>
+<a name="L6"></a><tt class="py-lineno"> 6</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># URL: <http://www.visionegg.org/></tt> </tt>
+<a name="L7"></a><tt class="py-lineno"> 7</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L8"></a><tt class="py-lineno"> 8</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Distributed under the terms of the GNU Lesser General Public License</tt> </tt>
+<a name="L9"></a><tt class="py-lineno"> 9</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># (LGPL). See LICENSE.TXT that came with this file.</tt> </tt>
+<a name="L10"></a><tt class="py-lineno">10</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L11"></a><tt class="py-lineno">11</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># $Id$</tt> </tt>
+<a name="L12"></a><tt class="py-lineno">12</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L13"></a><tt class="py-lineno">13</tt>  <tt class="py-line"><tt class="py-comment"># Add your supported supported demo script "variable types" here: </tt> </tt>
+<a name="L14"></a><tt class="py-lineno">14</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="getID"></a><div id="getID-def"><a name="L15"></a><tt class="py-lineno">15</tt> <a class="py-toggle" href="#" id="getID-toggle" onclick="return toggle('getID');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.VarTypes-module.html#getID">getID</a><tt class="py-op">(</tt><tt class="py-param">var_type</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="getID-collapsed" style="display:none;" pad="++" indent="++++"></div><div id="getID-expanded"><a name="L16"></a><tt class="py-lineno">16</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">var_type</tt> <tt class="py-op">==</tt> <tt class="py-string">"float"</tt><tt class="py-op">:</tt> </tt>
+<a name="L17"></a><tt class="py-lineno">17</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-number">1</tt> </tt>
+<a name="L18"></a><tt class="py-lineno">18</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt class="py-name">var_type</tt> <tt class="py-op">==</tt> <tt class="py-string">"int"</tt> <tt class="py-keyword">or</tt> <tt class="py-name">var_type</tt> <tt class="py-op">==</tt> <tt class="py-string">"integer"</tt><tt class="py-op">:</tt> </tt>
+<a name="L19"></a><tt class="py-lineno">19</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-number">2</tt> </tt>
+<a name="L20"></a><tt class="py-lineno">20</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt class="py-name">var_type</tt> <tt class="py-op">==</tt> <tt class="py-string">"string"</tt> <tt class="py-keyword">or</tt> <tt class="py-name">var_type</tt> <tt class="py-op">==</tt> <tt class="py-string">"str"</tt><tt class="py-op">:</tt> </tt>
+<a name="L21"></a><tt class="py-lineno">21</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-number">3</tt> </tt>
+<a name="L22"></a><tt class="py-lineno">22</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L23"></a><tt class="py-lineno">23</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-op">-</tt><tt class="py-number">1</tt> </tt>
+</div><a name="L24"></a><tt class="py-lineno">24</tt>  <tt class="py-line"> </tt>
+<a name="getType"></a><div id="getType-def"><a name="L25"></a><tt class="py-lineno">25</tt> <a class="py-toggle" href="#" id="getType-toggle" onclick="return toggle('getType');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroApps.VarTypes-module.html#getType">getType</a><tt class="py-op">(</tt><tt class="py-param">ID</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="getType-collapsed" style="display:none;" pad="++" indent="++++"></div><div id="getType-expanded"><a name="L26"></a><tt class="py-lineno">26</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">ID</tt> <tt class="py-op">==</tt> <tt class="py-number">1</tt><tt class="py-op">:</tt> </tt>
+<a name="L27"></a><tt class="py-lineno">27</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-string">"float"</tt> </tt>
+<a name="L28"></a><tt class="py-lineno">28</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt class="py-name">ID</tt> <tt class="py-op">==</tt> <tt class="py-number">2</tt><tt class="py-op">:</tt> </tt>
+<a name="L29"></a><tt class="py-lineno">29</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-string">"integer"</tt> </tt>
+<a name="L30"></a><tt class="py-lineno">30</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt class="py-name">ID</tt> <tt class="py-op">==</tt> <tt class="py-number">3</tt><tt class="py-op">:</tt> </tt>
+<a name="L31"></a><tt class="py-lineno">31</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-string">"string"</tt> </tt>
+<a name="L32"></a><tt class="py-lineno">32</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L33"></a><tt class="py-lineno">33</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-string">"undefined type"</tt> </tt>
+</div><a name="L34"></a><tt class="py-lineno">34</tt>  <tt class="py-line"> </tt><script type="text/javascript">
+<!--
+expandto(location.href);
+// -->
+</script>
+</pre>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:50 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.PyroClient-module.html b/doc/reference/html/VisionEgg.PyroClient-module.html
new file mode 100644
index 0000000..063a246
--- /dev/null
+++ b/doc/reference/html/VisionEgg.PyroClient-module.html
@@ -0,0 +1,165 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.PyroClient</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        Module PyroClient
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.PyroClient-module.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== MODULE DESCRIPTION ==================== -->
+<h1 class="epydoc">Module PyroClient</h1><span class="codelink"><a href="VisionEgg.PyroClient-pysrc.html">source code</a></span><br /><br />
+<pre class="literalblock">
+
+Python Remote Objects support - Client side.
+
+</pre><br /><br />
+
+<hr />
+<div class="fields">      <p><strong>Version:</strong>
+        1.1.dev
+      </p>
+      <p><strong>Author:</strong>
+        Andrew Straw <astraw at users.sourceforge.net>
+      </p>
+</div><!-- ==================== CLASSES ==================== -->
+<a name="section-Classes"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Classes</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.PyroClient.PyroClient-class.html" class="summary-name">PyroClient</a><br />
+      Simplifies getting PyroControllers from a remote computer.
+    </td>
+  </tr>
+</table>
+<!-- ==================== VARIABLES ==================== -->
+<a name="section-Variables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Variables</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="__cvs__"></a><span class="summary-name">__cvs__</span> = <code title="'$Revision$'.split() [1]">'$Revision$'.split() [1]</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="__date__"></a><span class="summary-name">__date__</span> = <code title="' '.join('$Date$'.split() [1: 3])">' '.join('$Date$'.split() [1: 3])</code>
+    </td>
+  </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.PyroClient-pysrc.html b/doc/reference/html/VisionEgg.PyroClient-pysrc.html
new file mode 100644
index 0000000..2cc9004
--- /dev/null
+++ b/doc/reference/html/VisionEgg.PyroClient-pysrc.html
@@ -0,0 +1,230 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.PyroClient</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        Module PyroClient
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.PyroClient-pysrc.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<h1 class="epydoc">Source Code for <a href="VisionEgg.PyroClient-module.html">Module VisionEgg.PyroClient</a></h1>
+<pre class="py-src">
+<a name="L1"></a><tt class="py-lineno"> 1</tt>  <tt class="py-line"><tt class="py-comment"># The Vision Egg: PyroClient</tt> </tt>
+<a name="L2"></a><tt class="py-lineno"> 2</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L3"></a><tt class="py-lineno"> 3</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Copyright (C) 2001-2003 Andrew Straw.</tt> </tt>
+<a name="L4"></a><tt class="py-lineno"> 4</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Copyright (C) 2008 California Insitute of Technology</tt> </tt>
+<a name="L5"></a><tt class="py-lineno"> 5</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Author: Andrew Straw <astraw at users.sourceforge.net></tt> </tt>
+<a name="L6"></a><tt class="py-lineno"> 6</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># URL: <http://www.visionegg.org/></tt> </tt>
+<a name="L7"></a><tt class="py-lineno"> 7</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L8"></a><tt class="py-lineno"> 8</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Distributed under the terms of the GNU Lesser General Public License</tt> </tt>
+<a name="L9"></a><tt class="py-lineno"> 9</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># (LGPL). See LICENSE.TXT that came with this file.</tt> </tt>
+<a name="L10"></a><tt class="py-lineno">10</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L11"></a><tt class="py-lineno">11</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># $Id$</tt> </tt>
+<a name="L12"></a><tt class="py-lineno">12</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L13"></a><tt class="py-lineno">13</tt>  <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L14"></a><tt class="py-lineno">14</tt>  <tt class="py-line"><tt class="py-docstring">Python Remote Objects support - Client side.</tt> </tt>
+<a name="L15"></a><tt class="py-lineno">15</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L16"></a><tt class="py-lineno">16</tt>  <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L17"></a><tt class="py-lineno">17</tt>  <tt class="py-line"> </tt>
+<a name="L18"></a><tt class="py-lineno">18</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">socket</tt> </tt>
+<a name="L19"></a><tt class="py-lineno">19</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-0" class="py-name" targets="Package VisionEgg=VisionEgg-module.html"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-0', 'VisionEgg', 'link-0');">VisionEgg</a></tt> </tt>
+<a name="L20"></a><tt class="py-lineno">20</tt>  <tt class="py-line"> </tt>
+<a name="L21"></a><tt class="py-lineno">21</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">logging</tt>                              <tt class="py-comment"># available in Python 2.3</tt> </tt>
+<a name="L22"></a><tt class="py-lineno">22</tt>  <tt class="py-line"> </tt>
+<a name="L23"></a><tt class="py-lineno">23</tt>  <tt class="py-line"><tt id="link-1" class="py-name" targets="Variable VisionEgg.DaqKeyboard.__version__=VisionEgg.DaqKeyboard-module.html#__version__,Variable VisionEgg.DaqLPT.__version__=VisionEgg.DaqLPT-module.html#__version__,Variable VisionEgg.GL.__version__=VisionEgg.GL-module.html#__version__,Variable VisionEgg.PyroApps.EPhysGUI.__version__=VisionEgg.PyroApps.EPhysGUI-module.html#__version__,Variable VisionEgg.PyroApps.EPhysGUIUtils. [...]
+VisionEgg.DaqLPT.__version__
+VisionEgg.GL.__version__
+VisionEgg.PyroApps.EPhysGUI.__version__
+VisionEgg.PyroApps.EPhysGUIUtils.__version__
+VisionEgg.PyroApps.EPhysServer.__version__
+VisionEgg.PyroApps.GridGUI.__version__
+VisionEgg.PyroApps.GridServer.__version__
+VisionEgg.PyroApps.ScreenPositionGUI.__version__
+VisionEgg.PyroApps.ScreenPositionServer.__version__
+VisionEgg.PyroApps.SpinningDrumGUI.__version__
+VisionEgg.PyroApps.SpinningDrumServer.__version__
+VisionEgg.PyroHelpers.__version__
+VisionEgg.QuickTime.__version__
+VisionEgg.ResponseControl.__version__
+VisionEgg.SphereMap.__version__
+VisionEgg.TCPController.__version__" class="py-name" href="#" onclick="return doclink('link-1', '__version__', 'link-1');">__version__</a></tt> <tt class="py-op">=</tt> <tt id="link-2" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-2', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-3" class="py-name" targets="Variable VisionEgg.release_name=VisionEgg-module.html#release_name"><a title="VisionEgg.release_name" c [...]
+<a name="L24"></a><tt class="py-lineno">24</tt>  <tt class="py-line"><tt id="link-4" class="py-name" targets="Variable VisionEgg.PyroApps.ColorCalGUI.__cvs__=VisionEgg.PyroApps.ColorCalGUI-module.html#__cvs__,Variable VisionEgg.PyroApps.ColorCalServer.__cvs__=VisionEgg.PyroApps.ColorCalServer-module.html#__cvs__,Variable VisionEgg.PyroApps.EPhysGUI.__cvs__=VisionEgg.PyroApps.EPhysGUI-module.html#__cvs__,Variable VisionEgg.PyroApps.EPhysGUIUtils.__cvs__=VisionEgg.PyroApps.EPhysGUIUtils-mo [...]
+VisionEgg.PyroApps.ColorCalServer.__cvs__
+VisionEgg.PyroApps.EPhysGUI.__cvs__
+VisionEgg.PyroApps.EPhysGUIUtils.__cvs__
+VisionEgg.PyroApps.EPhysServer.__cvs__
+VisionEgg.PyroApps.FlatGratingGUI.__cvs__
+VisionEgg.PyroApps.FlatGratingServer.__cvs__
+VisionEgg.PyroApps.GridGUI.__cvs__
+VisionEgg.PyroApps.GridServer.__cvs__
+VisionEgg.PyroApps.MouseTargetGUI.__cvs__
+VisionEgg.PyroApps.MouseTargetServer.__cvs__
+VisionEgg.PyroApps.ScreenPositionGUI.__cvs__
+VisionEgg.PyroApps.ScreenPositionServer.__cvs__
+VisionEgg.PyroApps.SphereGratingGUI.__cvs__
+VisionEgg.PyroApps.SphereGratingServer.__cvs__
+VisionEgg.PyroApps.SpinningDrumGUI.__cvs__
+VisionEgg.PyroApps.SpinningDrumServer.__cvs__
+VisionEgg.PyroApps.TargetGUI.__cvs__
+VisionEgg.PyroApps.TargetServer.__cvs__
+VisionEgg.PyroClient.__cvs__
+VisionEgg.PyroHelpers.__cvs__
+VisionEgg.TCPController.__cvs__" class="py-name" href="#" onclick="return doclink('link-4', '__cvs__', 'link-4');">__cvs__</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'$Revision$'</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
+<a name="L25"></a><tt class="py-lineno">25</tt>  <tt class="py-line"><tt id="link-5" class="py-name" targets="Variable VisionEgg.PyroApps.ColorCalGUI.__date__=VisionEgg.PyroApps.ColorCalGUI-module.html#__date__,Variable VisionEgg.PyroApps.ColorCalServer.__date__=VisionEgg.PyroApps.ColorCalServer-module.html#__date__,Variable VisionEgg.PyroApps.EPhysGUI.__date__=VisionEgg.PyroApps.EPhysGUI-module.html#__date__,Variable VisionEgg.PyroApps.EPhysGUIUtils.__date__=VisionEgg.PyroApps.EPhysGUIU [...]
+VisionEgg.PyroApps.ColorCalServer.__date__
+VisionEgg.PyroApps.EPhysGUI.__date__
+VisionEgg.PyroApps.EPhysGUIUtils.__date__
+VisionEgg.PyroApps.EPhysServer.__date__
+VisionEgg.PyroApps.FlatGratingGUI.__date__
+VisionEgg.PyroApps.FlatGratingServer.__date__
+VisionEgg.PyroApps.GridGUI.__date__
+VisionEgg.PyroApps.GridServer.__date__
+VisionEgg.PyroApps.MouseTargetGUI.__date__
+VisionEgg.PyroApps.MouseTargetServer.__date__
+VisionEgg.PyroApps.ScreenPositionGUI.__date__
+VisionEgg.PyroApps.ScreenPositionServer.__date__
+VisionEgg.PyroApps.SphereGratingGUI.__date__
+VisionEgg.PyroApps.SphereGratingServer.__date__
+VisionEgg.PyroApps.SpinningDrumGUI.__date__
+VisionEgg.PyroApps.SpinningDrumServer.__date__
+VisionEgg.PyroApps.TargetGUI.__date__
+VisionEgg.PyroApps.TargetServer.__date__
+VisionEgg.PyroClient.__date__
+VisionEgg.PyroHelpers.__date__
+VisionEgg.TCPController.__date__" class="py-name" href="#" onclick="return doclink('link-5', '__date__', 'link-5');">__date__</a></tt> <tt class="py-op">=</tt> <tt class="py-string">' '</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-string">'$Date$'</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">:</tt><tt class="p [...]
+<a name="L26"></a><tt class="py-lineno">26</tt>  <tt class="py-line"><tt id="link-6" class="py-name" targets="Variable VisionEgg.PyroApps.EPhysGUI.__author__=VisionEgg.PyroApps.EPhysGUI-module.html#__author__,Variable VisionEgg.PyroApps.EPhysGUIUtils.__author__=VisionEgg.PyroApps.EPhysGUIUtils-module.html#__author__,Variable VisionEgg.PyroApps.EPhysServer.__author__=VisionEgg.PyroApps.EPhysServer-module.html#__author__,Variable VisionEgg.PyroApps.GridGUI.__author__=VisionEgg.PyroApps.Gri [...]
+VisionEgg.PyroApps.EPhysGUIUtils.__author__
+VisionEgg.PyroApps.EPhysServer.__author__
+VisionEgg.PyroApps.GridGUI.__author__
+VisionEgg.PyroApps.GridServer.__author__
+VisionEgg.PyroApps.SpinningDrumGUI.__author__
+VisionEgg.PyroApps.SpinningDrumServer.__author__" class="py-name" href="#" onclick="return doclink('link-6', '__author__', 'link-6');">__author__</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'Andrew Straw <astraw at users.sourceforge.net>'</tt> </tt>
+<a name="L27"></a><tt class="py-lineno">27</tt>  <tt class="py-line"> </tt>
+<a name="L28"></a><tt class="py-lineno">28</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">Pyro</tt><tt class="py-op">.</tt><tt class="py-name">core</tt> </tt>
+<a name="L29"></a><tt class="py-lineno">29</tt>  <tt class="py-line"> </tt>
+<a name="PyroClient"></a><div id="PyroClient-def"><a name="L30"></a><tt class="py-lineno">30</tt> <a class="py-toggle" href="#" id="PyroClient-toggle" onclick="return toggle('PyroClient');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.PyroClient.PyroClient-class.html">PyroClient</a><tt class="py-op">:</tt> </tt>
+</div><div id="PyroClient-collapsed" style="display:none;" pad="++" indent="++++"></div><div id="PyroClient-expanded"><a name="L31"></a><tt class="py-lineno">31</tt>  <tt class="py-line">    <tt class="py-docstring">"""Simplifies getting PyroControllers from a remote computer."""</tt> </tt>
+<a name="PyroClient.__init__"></a><div id="PyroClient.__init__-def"><a name="L32"></a><tt class="py-lineno">32</tt> <a class="py-toggle" href="#" id="PyroClient.__init__-toggle" onclick="return toggle('PyroClient.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroClient.PyroClient-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt><tt class="py-param">server_hostn [...]
+</div><div id="PyroClient.__init__-collapsed" style="display:none;" pad="++" indent="++++++++"></div><div id="PyroClient.__init__-expanded"><a name="L33"></a><tt class="py-lineno">33</tt>  <tt class="py-line">        <tt class="py-docstring">"""Initialize Pyro client."""</tt> </tt>
+<a name="L34"></a><tt class="py-lineno">34</tt>  <tt class="py-line">        <tt class="py-name">Pyro</tt><tt class="py-op">.</tt><tt class="py-name">core</tt><tt class="py-op">.</tt><tt class="py-name">initClient</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L35"></a><tt class="py-lineno">35</tt>  <tt class="py-line">        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L36"></a><tt class="py-lineno">36</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">server_hostname</tt> <tt class="py-op">=</tt> <tt class="py-name">socket</tt><tt class="py-op">.</tt><tt class="py-name">getfqdn</tt><tt class="py-op">(</tt><tt class="py-name">server_hostname</tt><tt class="py-op">)</tt> </tt>
+<a name="L37"></a><tt class="py-lineno">37</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt> <tt class="py-name">Exception</tt><tt class="py-op">,</tt> <tt class="py-name">x</tt><tt class="py-op">:</tt> </tt>
+<a name="L38"></a><tt class="py-lineno">38</tt>  <tt class="py-line">            <tt id="link-7" class="py-name" targets="Variable VisionEgg.logger=VisionEgg-module.html#logger"><a title="VisionEgg.logger" class="py-name" href="#" onclick="return doclink('link-7', 'logger', 'link-7');">logger</a></tt> <tt class="py-op">=</tt> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">getLogger</tt><tt class="py-op">(</tt><tt class="py-string">'VisionEgg.PyroClient'</tt>< [...]
+<a name="L39"></a><tt class="py-lineno">39</tt>  <tt class="py-line">            <tt id="link-8" class="py-name"><a title="VisionEgg.logger" class="py-name" href="#" onclick="return doclink('link-8', 'logger', 'link-7');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">warning</tt><tt class="py-op">(</tt><tt class="py-string">"while getting fully qualified domain name: %s: %s"</tt><tt class="py-op">%</tt> </tt>
+<a name="L40"></a><tt class="py-lineno">40</tt>  <tt class="py-line">                           <tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">x</tt><tt class="py-op">.</tt><tt class="py-name">__class__</tt><tt class="py-op">)</tt><tt class="py-op">,</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">x</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L41"></a><tt class="py-lineno">41</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">server_hostname</tt> <tt class="py-op">=</tt> <tt class="py-name">server_hostname</tt> </tt>
+<a name="L42"></a><tt class="py-lineno">42</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">server_port</tt> <tt class="py-op">=</tt> <tt class="py-name">server_port</tt> </tt>
+</div><a name="L43"></a><tt class="py-lineno">43</tt>  <tt class="py-line"> </tt>
+<a name="PyroClient.get"></a><div id="PyroClient.get-def"><a name="L44"></a><tt class="py-lineno">44</tt> <a class="py-toggle" href="#" id="PyroClient.get-toggle" onclick="return toggle('PyroClient.get');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroClient.PyroClient-class.html#get">get</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt><tt class="py-param">name</tt><tt class="py-op">)</tt><tt class [...]
+</div><div id="PyroClient.get-collapsed" style="display:none;" pad="++" indent="++++++++"></div><div id="PyroClient.get-expanded"><a name="L45"></a><tt class="py-lineno">45</tt>  <tt class="py-line">        <tt class="py-docstring">"""Return a remote Pyro object being served by Pyro server."""</tt> </tt>
+<a name="L46"></a><tt class="py-lineno">46</tt>  <tt class="py-line">        <tt class="py-name">URI</tt> <tt class="py-op">=</tt> <tt class="py-string">"PYROLOC://%s:%d/%s"</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">server_hostname</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">server_port</tt><tt class="py-op">,</tt> <tt class="py-name">name</tt><tt [...]
+<a name="L47"></a><tt class="py-lineno">47</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">Pyro</tt><tt class="py-op">.</tt><tt class="py-name">core</tt><tt class="py-op">.</tt><tt class="py-name">getProxyForURI</tt><tt class="py-op">(</tt><tt class="py-name">URI</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L48"></a><tt class="py-lineno">48</tt>  <tt class="py-line"> </tt><script type="text/javascript">
+<!--
+expandto(location.href);
+// -->
+</script>
+</pre>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:50 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.PyroClient.PyroClient-class.html b/doc/reference/html/VisionEgg.PyroClient.PyroClient-class.html
new file mode 100644
index 0000000..930a9d1
--- /dev/null
+++ b/doc/reference/html/VisionEgg.PyroClient.PyroClient-class.html
@@ -0,0 +1,164 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.PyroClient.PyroClient</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.PyroClient-module.html">Module PyroClient</a> ::
+        Class PyroClient
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.PyroClient.PyroClient-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class PyroClient</h1><span class="codelink"><a href="VisionEgg.PyroClient-pysrc.html#PyroClient">source code</a></span><br /><br />
+<pre class="literalblock">
+Simplifies getting PyroControllers from a remote computer.
+
+</pre><br /><br />
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__init__"></a><span class="summary-sig-name">__init__</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">server_hostname</span>=<span class="summary-sig-default">''</span>,
+        <span class="summary-sig-arg">server_port</span>=<span class="summary-sig-default">7766</span>)</span><br />
+      Initialize Pyro client.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroClient-pysrc.html#PyroClient.__init__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="get"></a><span class="summary-sig-name">get</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">name</span>)</span><br />
+      Return a remote Pyro object being served by Pyro server.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroClient-pysrc.html#PyroClient.get">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:47 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.PyroHelpers-module.html b/doc/reference/html/VisionEgg.PyroHelpers-module.html
new file mode 100644
index 0000000..8cef3c7
--- /dev/null
+++ b/doc/reference/html/VisionEgg.PyroHelpers-module.html
@@ -0,0 +1,236 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.PyroHelpers</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        Module PyroHelpers
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.PyroHelpers-module.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== MODULE DESCRIPTION ==================== -->
+<h1 class="epydoc">Module PyroHelpers</h1><span class="codelink"><a href="VisionEgg.PyroHelpers-pysrc.html">source code</a></span><br /><br />
+<pre class="literalblock">
+
+Python Remote Objects support.
+
+Use this class if you don't want to deal with TCP directly and Python
+is the program on both ends of the network.
+
+The module provides some Vision Egg specific code for Pyro.  Pyro
+allows you to call python objects on remote machines just like they
+are on the local machine.  This makes the task of writing a two
+computer Vision Egg application quite easy, because one can mostly
+ignore the network-based intermediate stage.
+
+PyroControllers are run on the computer performing the presentation.
+The PyroServer class also runs on this computer, and allows these
+controllers to be changed from a computer running PyroClient. To
+listen to the network PyroListenerController must be instantiated by
+the PyroServer -- this checks for any requests coming over the
+network, but only at times specified because it is a subclass of
+VisionEgg.FlowControl.Controller.
+
+Just like TCPControllers, don't use this class for realtime control
+unless you think your network is that fast and reliable.  It's great
+for setting up parameters in advance and sending a trigger pulse,
+though!
+
+</pre><br /><br />
+
+<hr />
+<div class="fields">      <p><strong>Author:</strong>
+        Andrew Straw <astraw at users.sourceforge.net>
+      </p>
+</div><!-- ==================== CLASSES ==================== -->
+<a name="section-Classes"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Classes</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.PyroHelpers.PyroServer-class.html" class="summary-name">PyroServer</a><br />
+      Set up a Pyro server for your PyroControllers and PyroGoClass.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.PyroHelpers.PyroConstantController-class.html" class="summary-name">PyroConstantController</a>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.PyroHelpers.PyroEvalStringController-class.html" class="summary-name">PyroEvalStringController</a>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.PyroHelpers.PyroExecStringController-class.html" class="summary-name">PyroExecStringController</a>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.PyroHelpers.PyroEncapsulatedController-class.html" class="summary-name">PyroEncapsulatedController</a><br />
+      Create the instance of Controller on client, and send it to server.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.PyroHelpers.PyroLocalDictController-class.html" class="summary-name">PyroLocalDictController</a><br />
+      Contain several dictionary entries, set controller accordingly.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.PyroHelpers.PyroListenController-class.html" class="summary-name">PyroListenController</a><br />
+      Handle connection from remote machine, control PyroControllers.
+    </td>
+  </tr>
+</table>
+<!-- ==================== VARIABLES ==================== -->
+<a name="section-Variables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Variables</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="__version__"></a><span class="summary-name">__version__</span> = <code title="VisionEgg.release_name">VisionEgg.release_name</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="__cvs__"></a><span class="summary-name">__cvs__</span> = <code title="'$Revision$'.split() [1]">'$Revision$'.split() [1]</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="__date__"></a><span class="summary-name">__date__</span> = <code title="' '.join('$Date$'.split() [1: 3])">' '.join('$Date$'.split() [1: 3])</code>
+    </td>
+  </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.PyroHelpers-pysrc.html b/doc/reference/html/VisionEgg.PyroHelpers-pysrc.html
new file mode 100644
index 0000000..d6d85dd
--- /dev/null
+++ b/doc/reference/html/VisionEgg.PyroHelpers-pysrc.html
@@ -0,0 +1,1736 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.PyroHelpers</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        Module PyroHelpers
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.PyroHelpers-pysrc.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<h1 class="epydoc">Source Code for <a href="VisionEgg.PyroHelpers-module.html">Module VisionEgg.PyroHelpers</a></h1>
+<pre class="py-src">
+<a name="L1"></a><tt class="py-lineno">  1</tt>  <tt class="py-line"><tt class="py-comment"># The Vision Egg: PyroHelpers</tt> </tt>
+<a name="L2"></a><tt class="py-lineno">  2</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L3"></a><tt class="py-lineno">  3</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Copyright (C) 2001-2003 Andrew Straw.</tt> </tt>
+<a name="L4"></a><tt class="py-lineno">  4</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Author: Andrew Straw <astraw at users.sourceforge.net></tt> </tt>
+<a name="L5"></a><tt class="py-lineno">  5</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># URL: <http://www.visionegg.org/></tt> </tt>
+<a name="L6"></a><tt class="py-lineno">  6</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L7"></a><tt class="py-lineno">  7</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Distributed under the terms of the GNU Lesser General Public License</tt> </tt>
+<a name="L8"></a><tt class="py-lineno">  8</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># (LGPL). See LICENSE.TXT that came with this file.</tt> </tt>
+<a name="L9"></a><tt class="py-lineno">  9</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L10"></a><tt class="py-lineno"> 10</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># $Id$</tt> </tt>
+<a name="L11"></a><tt class="py-lineno"> 11</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L12"></a><tt class="py-lineno"> 12</tt>  <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L13"></a><tt class="py-lineno"> 13</tt>  <tt class="py-line"><tt class="py-docstring">Python Remote Objects support.</tt> </tt>
+<a name="L14"></a><tt class="py-lineno"> 14</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L15"></a><tt class="py-lineno"> 15</tt>  <tt class="py-line"><tt class="py-docstring">Use this class if you don't want to deal with TCP directly and Python</tt> </tt>
+<a name="L16"></a><tt class="py-lineno"> 16</tt>  <tt class="py-line"><tt class="py-docstring">is the program on both ends of the network.</tt> </tt>
+<a name="L17"></a><tt class="py-lineno"> 17</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L18"></a><tt class="py-lineno"> 18</tt>  <tt class="py-line"><tt class="py-docstring">The module provides some Vision Egg specific code for Pyro.  Pyro</tt> </tt>
+<a name="L19"></a><tt class="py-lineno"> 19</tt>  <tt class="py-line"><tt class="py-docstring">allows you to call python objects on remote machines just like they</tt> </tt>
+<a name="L20"></a><tt class="py-lineno"> 20</tt>  <tt class="py-line"><tt class="py-docstring">are on the local machine.  This makes the task of writing a two</tt> </tt>
+<a name="L21"></a><tt class="py-lineno"> 21</tt>  <tt class="py-line"><tt class="py-docstring">computer Vision Egg application quite easy, because one can mostly</tt> </tt>
+<a name="L22"></a><tt class="py-lineno"> 22</tt>  <tt class="py-line"><tt class="py-docstring">ignore the network-based intermediate stage.</tt> </tt>
+<a name="L23"></a><tt class="py-lineno"> 23</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L24"></a><tt class="py-lineno"> 24</tt>  <tt class="py-line"><tt class="py-docstring">PyroControllers are run on the computer performing the presentation.</tt> </tt>
+<a name="L25"></a><tt class="py-lineno"> 25</tt>  <tt class="py-line"><tt class="py-docstring">The PyroServer class also runs on this computer, and allows these</tt> </tt>
+<a name="L26"></a><tt class="py-lineno"> 26</tt>  <tt class="py-line"><tt class="py-docstring">controllers to be changed from a computer running PyroClient. To</tt> </tt>
+<a name="L27"></a><tt class="py-lineno"> 27</tt>  <tt class="py-line"><tt class="py-docstring">listen to the network PyroListenerController must be instantiated by</tt> </tt>
+<a name="L28"></a><tt class="py-lineno"> 28</tt>  <tt class="py-line"><tt class="py-docstring">the PyroServer -- this checks for any requests coming over the</tt> </tt>
+<a name="L29"></a><tt class="py-lineno"> 29</tt>  <tt class="py-line"><tt class="py-docstring">network, but only at times specified because it is a subclass of</tt> </tt>
+<a name="L30"></a><tt class="py-lineno"> 30</tt>  <tt class="py-line"><tt class="py-docstring">VisionEgg.FlowControl.Controller.</tt> </tt>
+<a name="L31"></a><tt class="py-lineno"> 31</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L32"></a><tt class="py-lineno"> 32</tt>  <tt class="py-line"><tt class="py-docstring">Just like TCPControllers, don't use this class for realtime control</tt> </tt>
+<a name="L33"></a><tt class="py-lineno"> 33</tt>  <tt class="py-line"><tt class="py-docstring">unless you think your network is that fast and reliable.  It's great</tt> </tt>
+<a name="L34"></a><tt class="py-lineno"> 34</tt>  <tt class="py-line"><tt class="py-docstring">for setting up parameters in advance and sending a trigger pulse,</tt> </tt>
+<a name="L35"></a><tt class="py-lineno"> 35</tt>  <tt class="py-line"><tt class="py-docstring">though!"""</tt> </tt>
+<a name="L36"></a><tt class="py-lineno"> 36</tt>  <tt class="py-line"> </tt>
+<a name="L37"></a><tt class="py-lineno"> 37</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-0" class="py-name" targets="Package VisionEgg=VisionEgg-module.html"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-0', 'VisionEgg', 'link-0');">VisionEgg</a></tt> </tt>
+<a name="L38"></a><tt class="py-lineno"> 38</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-1" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-1', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-2" class="py-name" targets="Module VisionEgg.Core=VisionEgg.Core-module.html"><a title="VisionEgg.Core" class="py-name" href="#" onclick="return doclink('link-2', 'Core', 'link-2');">Core</a></tt> </tt>
+<a name="L39"></a><tt class="py-lineno"> 39</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-3" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-3', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-4" class="py-name" targets="Module VisionEgg.FlowControl=VisionEgg.FlowControl-module.html"><a title="VisionEgg.FlowControl" class="py-name" href="#" onclick="return doclink('link-4', 'FlowContro [...]
+<a name="L40"></a><tt class="py-lineno"> 40</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-5" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-5', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-6" class="py-name" targets="Module VisionEgg.ParameterTypes=VisionEgg.ParameterTypes-module.html"><a title="VisionEgg.ParameterTypes" class="py-name" href="#" onclick="return doclink('link-6', 'P [...]
+<a name="L41"></a><tt class="py-lineno"> 41</tt>  <tt class="py-line"> </tt>
+<a name="L42"></a><tt class="py-lineno"> 42</tt>  <tt class="py-line"><tt id="link-7" class="py-name" targets="Variable VisionEgg.DaqKeyboard.__version__=VisionEgg.DaqKeyboard-module.html#__version__,Variable VisionEgg.DaqLPT.__version__=VisionEgg.DaqLPT-module.html#__version__,Variable VisionEgg.GL.__version__=VisionEgg.GL-module.html#__version__,Variable VisionEgg.PyroApps.EPhysGUI.__version__=VisionEgg.PyroApps.EPhysGUI-module.html#__version__,Variable VisionEgg.PyroApps.EPhysGUIUtils [...]
+VisionEgg.DaqLPT.__version__
+VisionEgg.GL.__version__
+VisionEgg.PyroApps.EPhysGUI.__version__
+VisionEgg.PyroApps.EPhysGUIUtils.__version__
+VisionEgg.PyroApps.EPhysServer.__version__
+VisionEgg.PyroApps.GridGUI.__version__
+VisionEgg.PyroApps.GridServer.__version__
+VisionEgg.PyroApps.ScreenPositionGUI.__version__
+VisionEgg.PyroApps.ScreenPositionServer.__version__
+VisionEgg.PyroApps.SpinningDrumGUI.__version__
+VisionEgg.PyroApps.SpinningDrumServer.__version__
+VisionEgg.PyroHelpers.__version__
+VisionEgg.QuickTime.__version__
+VisionEgg.ResponseControl.__version__
+VisionEgg.SphereMap.__version__
+VisionEgg.TCPController.__version__" class="py-name" href="#" onclick="return doclink('link-7', '__version__', 'link-7');">__version__</a></tt> <tt class="py-op">=</tt> <tt id="link-8" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-8', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-9" class="py-name" targets="Variable VisionEgg.release_name=VisionEgg-module.html#release_name"><a title="VisionEgg.release_name" c [...]
+<a name="L43"></a><tt class="py-lineno"> 43</tt>  <tt class="py-line"><tt id="link-10" class="py-name" targets="Variable VisionEgg.PyroApps.ColorCalGUI.__cvs__=VisionEgg.PyroApps.ColorCalGUI-module.html#__cvs__,Variable VisionEgg.PyroApps.ColorCalServer.__cvs__=VisionEgg.PyroApps.ColorCalServer-module.html#__cvs__,Variable VisionEgg.PyroApps.EPhysGUI.__cvs__=VisionEgg.PyroApps.EPhysGUI-module.html#__cvs__,Variable VisionEgg.PyroApps.EPhysGUIUtils.__cvs__=VisionEgg.PyroApps.EPhysGUIUtils- [...]
+VisionEgg.PyroApps.ColorCalServer.__cvs__
+VisionEgg.PyroApps.EPhysGUI.__cvs__
+VisionEgg.PyroApps.EPhysGUIUtils.__cvs__
+VisionEgg.PyroApps.EPhysServer.__cvs__
+VisionEgg.PyroApps.FlatGratingGUI.__cvs__
+VisionEgg.PyroApps.FlatGratingServer.__cvs__
+VisionEgg.PyroApps.GridGUI.__cvs__
+VisionEgg.PyroApps.GridServer.__cvs__
+VisionEgg.PyroApps.MouseTargetGUI.__cvs__
+VisionEgg.PyroApps.MouseTargetServer.__cvs__
+VisionEgg.PyroApps.ScreenPositionGUI.__cvs__
+VisionEgg.PyroApps.ScreenPositionServer.__cvs__
+VisionEgg.PyroApps.SphereGratingGUI.__cvs__
+VisionEgg.PyroApps.SphereGratingServer.__cvs__
+VisionEgg.PyroApps.SpinningDrumGUI.__cvs__
+VisionEgg.PyroApps.SpinningDrumServer.__cvs__
+VisionEgg.PyroApps.TargetGUI.__cvs__
+VisionEgg.PyroApps.TargetServer.__cvs__
+VisionEgg.PyroClient.__cvs__
+VisionEgg.PyroHelpers.__cvs__
+VisionEgg.TCPController.__cvs__" class="py-name" href="#" onclick="return doclink('link-10', '__cvs__', 'link-10');">__cvs__</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'$Revision$'</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
+<a name="L44"></a><tt class="py-lineno"> 44</tt>  <tt class="py-line"><tt id="link-11" class="py-name" targets="Variable VisionEgg.PyroApps.ColorCalGUI.__date__=VisionEgg.PyroApps.ColorCalGUI-module.html#__date__,Variable VisionEgg.PyroApps.ColorCalServer.__date__=VisionEgg.PyroApps.ColorCalServer-module.html#__date__,Variable VisionEgg.PyroApps.EPhysGUI.__date__=VisionEgg.PyroApps.EPhysGUI-module.html#__date__,Variable VisionEgg.PyroApps.EPhysGUIUtils.__date__=VisionEgg.PyroApps.EPhysGU [...]
+VisionEgg.PyroApps.ColorCalServer.__date__
+VisionEgg.PyroApps.EPhysGUI.__date__
+VisionEgg.PyroApps.EPhysGUIUtils.__date__
+VisionEgg.PyroApps.EPhysServer.__date__
+VisionEgg.PyroApps.FlatGratingGUI.__date__
+VisionEgg.PyroApps.FlatGratingServer.__date__
+VisionEgg.PyroApps.GridGUI.__date__
+VisionEgg.PyroApps.GridServer.__date__
+VisionEgg.PyroApps.MouseTargetGUI.__date__
+VisionEgg.PyroApps.MouseTargetServer.__date__
+VisionEgg.PyroApps.ScreenPositionGUI.__date__
+VisionEgg.PyroApps.ScreenPositionServer.__date__
+VisionEgg.PyroApps.SphereGratingGUI.__date__
+VisionEgg.PyroApps.SphereGratingServer.__date__
+VisionEgg.PyroApps.SpinningDrumGUI.__date__
+VisionEgg.PyroApps.SpinningDrumServer.__date__
+VisionEgg.PyroApps.TargetGUI.__date__
+VisionEgg.PyroApps.TargetServer.__date__
+VisionEgg.PyroClient.__date__
+VisionEgg.PyroHelpers.__date__
+VisionEgg.TCPController.__date__" class="py-name" href="#" onclick="return doclink('link-11', '__date__', 'link-11');">__date__</a></tt> <tt class="py-op">=</tt> <tt class="py-string">' '</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-string">'$Date$'</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">:</tt><tt class= [...]
+<a name="L45"></a><tt class="py-lineno"> 45</tt>  <tt class="py-line"><tt id="link-12" class="py-name" targets="Variable VisionEgg.PyroApps.EPhysGUI.__author__=VisionEgg.PyroApps.EPhysGUI-module.html#__author__,Variable VisionEgg.PyroApps.EPhysGUIUtils.__author__=VisionEgg.PyroApps.EPhysGUIUtils-module.html#__author__,Variable VisionEgg.PyroApps.EPhysServer.__author__=VisionEgg.PyroApps.EPhysServer-module.html#__author__,Variable VisionEgg.PyroApps.GridGUI.__author__=VisionEgg.PyroApps.G [...]
+VisionEgg.PyroApps.EPhysGUIUtils.__author__
+VisionEgg.PyroApps.EPhysServer.__author__
+VisionEgg.PyroApps.GridGUI.__author__
+VisionEgg.PyroApps.GridServer.__author__
+VisionEgg.PyroApps.SpinningDrumGUI.__author__
+VisionEgg.PyroApps.SpinningDrumServer.__author__" class="py-name" href="#" onclick="return doclink('link-12', '__author__', 'link-12');">__author__</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'Andrew Straw <astraw at users.sourceforge.net>'</tt> </tt>
+<a name="L46"></a><tt class="py-lineno"> 46</tt>  <tt class="py-line"> </tt>
+<a name="L47"></a><tt class="py-lineno"> 47</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">Pyro</tt><tt class="py-op">.</tt><tt class="py-name">core</tt> </tt>
+<a name="L48"></a><tt class="py-lineno"> 48</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">Pyro</tt><tt class="py-op">.</tt><tt class="py-name">errors</tt> </tt>
+<a name="L49"></a><tt class="py-lineno"> 49</tt>  <tt class="py-line"> </tt>
+<a name="L50"></a><tt class="py-lineno"> 50</tt>  <tt class="py-line"><tt class="py-name">Pyro</tt><tt class="py-op">.</tt><tt id="link-13" class="py-name" targets="Variable VisionEgg.config=VisionEgg-module.html#config"><a title="VisionEgg.config" class="py-name" href="#" onclick="return doclink('link-13', 'config', 'link-13');">config</a></tt><tt class="py-op">.</tt><tt class="py-name">PYRO_MULTITHREADED</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> <tt class="py-comment"> [...]
+<a name="L51"></a><tt class="py-lineno"> 51</tt>  <tt class="py-line"> </tt>
+<a name="PyroServer"></a><div id="PyroServer-def"><a name="L52"></a><tt class="py-lineno"> 52</tt> <a class="py-toggle" href="#" id="PyroServer-toggle" onclick="return toggle('PyroServer');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.PyroHelpers.PyroServer-class.html">PyroServer</a><tt class="py-op">:</tt> </tt>
+</div><div id="PyroServer-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="PyroServer-expanded"><a name="L53"></a><tt class="py-lineno"> 53</tt>  <tt class="py-line">    <tt class="py-docstring">"""Set up a Pyro server for your PyroControllers and PyroGoClass.</tt> </tt>
+<a name="L54"></a><tt class="py-lineno"> 54</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L55"></a><tt class="py-lineno"> 55</tt>  <tt class="py-line"><tt class="py-docstring">    This class is analagous to VisionEgg.TCPController.TCPServer.</tt> </tt>
+<a name="L56"></a><tt class="py-lineno"> 56</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L57"></a><tt class="py-lineno"> 57</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="PyroServer.__init__"></a><div id="PyroServer.__init__-def"><a name="L58"></a><tt class="py-lineno"> 58</tt> <a class="py-toggle" href="#" id="PyroServer.__init__-toggle" onclick="return toggle('PyroServer.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroHelpers.PyroServer-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="PyroServer.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="PyroServer.__init__-expanded"><a name="L59"></a><tt class="py-lineno"> 59</tt>  <tt class="py-line">        <tt class="py-comment"># Start Pyro</tt> </tt>
+<a name="L60"></a><tt class="py-lineno"> 60</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">Pyro</tt><tt class="py-op">.</tt><tt class="py-name">core</tt><tt class="py-op">.</tt><tt class="py-name">initServer</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L61"></a><tt class="py-lineno"> 61</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">daemon</tt> <tt class="py-op">=</tt> <tt class="py-name">Pyro</tt><tt class="py-op">.</tt><tt class="py-name">core</tt><tt class="py-op">.</tt><tt class="py-name">Daemon</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L62"></a><tt class="py-lineno"> 62</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">ok_to_run</tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt>
+</div><a name="L63"></a><tt class="py-lineno"> 63</tt>  <tt class="py-line"> </tt>
+<a name="PyroServer.get_hostname_and_port"></a><div id="PyroServer.get_hostname_and_port-def"><a name="L64"></a><tt class="py-lineno"> 64</tt> <a class="py-toggle" href="#" id="PyroServer.get_hostname_and_port-toggle" onclick="return toggle('PyroServer.get_hostname_and_port');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroHelpers.PyroServer-class.html#get_hostname_and_port">get_hostname_and_port</a><tt class="py-op">(</tt><tt cla [...]
+</div><div id="PyroServer.get_hostname_and_port-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="PyroServer.get_hostname_and_port-expanded"><a name="L65"></a><tt class="py-lineno"> 65</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">daemon</tt><tt class="py-op">.</tt><tt class="py-name">hostname</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op" [...]
+</div><a name="L66"></a><tt class="py-lineno"> 66</tt>  <tt class="py-line">         </tt>
+<a name="PyroServer.connect"></a><div id="PyroServer.connect-def"><a name="L67"></a><tt class="py-lineno"> 67</tt> <a class="py-toggle" href="#" id="PyroServer.connect-toggle" onclick="return toggle('PyroServer.connect');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroHelpers.PyroServer-class.html#connect">connect</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt><tt class="py-param">object</tt><tt c [...]
+</div><div id="PyroServer.connect-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="PyroServer.connect-expanded"><a name="L68"></a><tt class="py-lineno"> 68</tt>  <tt class="py-line">        <tt class="py-docstring">"""Serve an object under a name"""</tt> </tt>
+<a name="L69"></a><tt class="py-lineno"> 69</tt>  <tt class="py-line">        <tt class="py-name">URI</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">daemon</tt><tt class="py-op">.</tt><tt id="link-14" class="py-name" targets="Method VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.connect()=VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#connect,Method VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFra [...]
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.connect
+VisionEgg.PyroHelpers.PyroServer.connect" class="py-name" href="#" onclick="return doclink('link-14', 'connect', 'link-14');">connect</a></tt><tt class="py-op">(</tt><tt class="py-name">object</tt><tt class="py-op">,</tt><tt class="py-name">name</tt><tt class="py-op">)</tt> </tt>
+<a name="L70"></a><tt class="py-lineno"> 70</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">URI</tt> </tt>
+</div><a name="L71"></a><tt class="py-lineno"> 71</tt>  <tt class="py-line"> </tt>
+<a name="PyroServer.disconnect"></a><div id="PyroServer.disconnect-def"><a name="L72"></a><tt class="py-lineno"> 72</tt> <a class="py-toggle" href="#" id="PyroServer.disconnect-toggle" onclick="return toggle('PyroServer.disconnect');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroHelpers.PyroServer-class.html#disconnect">disconnect</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt><tt class="py-param [...]
+</div><div id="PyroServer.disconnect-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="PyroServer.disconnect-expanded"><a name="L73"></a><tt class="py-lineno"> 73</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">Pyro</tt><tt class="py-op">.</tt><tt class="py-name">core</tt><tt class="py-op">.</tt><tt class="py-name">constants</tt><tt class="py-op">.</tt><tt class="py-name">VERSION</tt> <tt class="py-op">>=</tt> <tt class="p [...]
+<a name="L74"></a><tt class="py-lineno"> 74</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">daemon</tt><tt class="py-op">.</tt><tt id="link-15" class="py-name" targets="Method VisionEgg.PyroHelpers.PyroServer.disconnect()=VisionEgg.PyroHelpers.PyroServer-class.html#disconnect"><a title="VisionEgg.PyroHelpers.PyroServer.disconnect" class="py-name" href="#" onclick="return doclink('link-15', 'disconnect', 'link-15');">disconnec [...]
+<a name="L75"></a><tt class="py-lineno"> 75</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L76"></a><tt class="py-lineno"> 76</tt>  <tt class="py-line">            <tt class="py-comment"># workaround bug in Pyro pre-3.2</tt> </tt>
+<a name="L77"></a><tt class="py-lineno"> 77</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">del</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">daemon</tt><tt class="py-op">.</tt><tt class="py-name">implementations</tt><tt class="py-op">[</tt><tt class="py-name">object</tt><tt class="py-op">.</tt><tt class="py-name">GUID</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">]</tt> </tt>
+<a name="L78"></a><tt class="py-lineno"> 78</tt>  <tt class="py-line">            <tt class="py-name">object</tt><tt class="py-op">.</tt><tt class="py-name">setDaemon</tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L79"></a><tt class="py-lineno"> 79</tt>  <tt class="py-line">             </tt>
+<a name="PyroServer.create_listener_controller"></a><div id="PyroServer.create_listener_controller-def"><a name="L80"></a><tt class="py-lineno"> 80</tt> <a class="py-toggle" href="#" id="PyroServer.create_listener_controller-toggle" onclick="return toggle('PyroServer.create_listener_controller');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroHelpers.PyroServer-class.html#create_listener_controller">create_listener_controller</a>< [...]
+</div><div id="PyroServer.create_listener_controller-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="PyroServer.create_listener_controller-expanded"><a name="L81"></a><tt class="py-lineno"> 81</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt><tt class="py-string">'listen_controller'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L82"></a><tt class="py-lineno"> 82</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">RuntimeError</tt><tt class="py-op">(</tt><tt class="py-string">"Only one pyro listen controller allowed per server!"</tt><tt class="py-op">)</tt> </tt>
+<a name="L83"></a><tt class="py-lineno"> 83</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">listen_controller</tt> <tt class="py-op">=</tt> <tt id="link-16" class="py-name" targets="Class VisionEgg.PyroHelpers.PyroListenController=VisionEgg.PyroHelpers.PyroListenController-class.html"><a title="VisionEgg.PyroHelpers.PyroListenController" class="py-name" href="#" onclick="return doclink('link-16', 'PyroListenController', 'link-16' [...]
+<a name="L84"></a><tt class="py-lineno"> 84</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">listen_controller</tt> </tt>
+</div><a name="L85"></a><tt class="py-lineno"> 85</tt>  <tt class="py-line"> </tt>
+<a name="PyroServer.handleRequests"></a><div id="PyroServer.handleRequests-def"><a name="L86"></a><tt class="py-lineno"> 86</tt> <a class="py-toggle" href="#" id="PyroServer.handleRequests-toggle" onclick="return toggle('PyroServer.handleRequests');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroHelpers.PyroServer-class.html#handleRequests">handleRequests</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">, [...]
+</div><div id="PyroServer.handleRequests-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="PyroServer.handleRequests-expanded"><a name="L87"></a><tt class="py-lineno"> 87</tt>  <tt class="py-line">        <tt class="py-docstring">"""Only use this if you don't use the PyroListenerController.</tt> </tt>
+<a name="L88"></a><tt class="py-lineno"> 88</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L89"></a><tt class="py-lineno"> 89</tt>  <tt class="py-line"><tt class="py-docstring">        A timeout of 0 specifies return immediately."""</tt> </tt>
+<a name="L90"></a><tt class="py-lineno"> 90</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">daemon</tt><tt class="py-op">.</tt><tt id="link-17" class="py-name" targets="Method VisionEgg.PyroHelpers.PyroServer.handleRequests()=VisionEgg.PyroHelpers.PyroServer-class.html#handleRequests"><a title="VisionEgg.PyroHelpers.PyroServer.handleRequests" class="py-name" href="#" onclick="return doclink('link-17', 'handleRequests', 'link-17') [...]
+</div></div><a name="L91"></a><tt class="py-lineno"> 91</tt>  <tt class="py-line"> </tt>
+<a name="PyroConstantController"></a><div id="PyroConstantController-def"><a name="L92"></a><tt class="py-lineno"> 92</tt> <a class="py-toggle" href="#" id="PyroConstantController-toggle" onclick="return toggle('PyroConstantController');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.PyroHelpers.PyroConstantController-class.html">PyroConstantController</a><tt class="py-op">(</tt><tt class="py-base-class">VisionEgg</tt><tt class="py-op"> [...]
+</div><div id="PyroConstantController-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="PyroConstantController-expanded"><a name="PyroConstantController.__init__"></a><div id="PyroConstantController.__init__-def"><a name="L93"></a><tt class="py-lineno"> 93</tt> <a class="py-toggle" href="#" id="PyroConstantController.__init__-toggle" onclick="return toggle('PyroConstantController.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py- [...]
+</div><div id="PyroConstantController.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="PyroConstantController.__init__-expanded"><a name="L94"></a><tt class="py-lineno"> 94</tt>  <tt class="py-line">        <tt id="link-18" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-18', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-19" class="py-name"><a title="VisionEgg.FlowControl" cl [...]
+VisionEgg.Configuration.Config.__init__
+VisionEgg.Core.FixationSpot.__init__
+VisionEgg.Core.FrameTimer.__init__
+VisionEgg.Core.ModelView.__init__
+VisionEgg.Core.OrthographicProjection.__init__
+VisionEgg.Core.OrthographicProjectionNoZClip.__init__
+VisionEgg.Core.PerspectiveProjection.__init__
+VisionEgg.Core.Projection.__init__
+VisionEgg.Core.ProjectionBaseClass.__init__
+VisionEgg.Core.Screen.__init__
+VisionEgg.Core.SimplePerspectiveProjection.__init__
+VisionEgg.Core.Stimulus.__init__
+VisionEgg.Core.Viewport.__init__
+VisionEgg.Daq.Channel.__init__
+VisionEgg.Daq.DaqMode.__init__
+VisionEgg.Daq.Device.__init__
+VisionEgg.Daq.Functionality.__init__
+VisionEgg.Daq.SignalType.__init__
+VisionEgg.DaqKeyboard.KeyboardTriggerInController.__init__
+VisionEgg.DaqLPT.LPTChannel.__init__
+VisionEgg.DaqLPT.LPTDevice.__init__
+VisionEgg.DaqLPT.LPTTriggerInController.__init__
+VisionEgg.DaqLPT.LPTTriggerOutController.__init__
+VisionEgg.Deprecated.Message.__init__
+VisionEgg.Dots.DotArea2D.__init__
+VisionEgg.FlowControl.ConstantController.__init__
+VisionEgg.FlowControl.Controller.__init__
+VisionEgg.FlowControl.EncapsulatedController.__init__
+VisionEgg.FlowControl.EvalStringController.__init__
+VisionEgg.FlowControl.ExecStringController.__init__
+VisionEgg.FlowControl.FunctionController.__init__
+VisionEgg.FlowControl.Presentation.__init__
+VisionEgg.GLTrace.Wrapper.__init__
+VisionEgg.GUI.AppWindow.__init__
+VisionEgg.GUI.GetKeypressDialog.__init__
+VisionEgg.GUI.GraphicsConfigurationWindow.__init__
+VisionEgg.GUI.InfoFrame.__init__
+VisionEgg.GUI.ProgressBar.__init__
+VisionEgg.GUI.ToplevelDialog.__init__
+VisionEgg.Gratings.SinGrating2D.__init__
+VisionEgg.Gratings.SinGrating3D.__init__
+VisionEgg.MoreStimuli.Arrow.__init__
+VisionEgg.MoreStimuli.FilledCircle.__init__
+VisionEgg.MoreStimuli.Rectangle3D.__init__
+VisionEgg.MoreStimuli.Target2D.__init__
+VisionEgg.ParameterTypes.AnyOf.__init__
+VisionEgg.ParameterTypes.Instance.__init__
+VisionEgg.ParameterTypes.Sequence.__init__
+VisionEgg.ParameterTypes.SubClass.__init__
+VisionEgg.PyroApps.AST_ext.AST_Visitor.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalMetaParameters.__init__
+VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.__init__
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.__init__
+VisionEgg.PyroApps.DropinGUI.DropinMetaParameters.__init__
+VisionEgg.PyroApps.DropinServer.DropinMetaController.__init__
+VisionEgg.PyroApps.EPhysGUI.AppWindow.__init__
+VisionEgg.PyroApps.EPhysGUI.BarButton.__init__
+VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase.__init__
+VisionEgg.PyroApps.EPhysGUI.GammaFrame.__init__
+VisionEgg.PyroApps.EPhysGUI.ImageSequenceLauncher.__init__
+VisionEgg.PyroApps.EPhysGUI.Loop.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopContainedObject.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopParamDialog.__init__
+VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.__init__
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.__init__
+VisionEgg.PyroApps.EPhysServer.EPhysServer.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingMetaParameters.__init__
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.GridGUI.GridControlFrame.__init__
+VisionEgg.PyroApps.GridGUI.GridMetaParameters.__init__
+VisionEgg.PyroApps.GridServer.GridMetaController.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetMetaParameters.__init__
+VisionEgg.PyroApps.MouseTargetServer.MousePositionController.__init__
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetOrientationController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetPositionController.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.CallbackEntry.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionParameters.__init__
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingMetaParameters.__init__
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumMetaParameters.__init__
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.__init__
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.__init__
+VisionEgg.PyroApps.TargetGUI.TargetMetaParameters.__init__
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.__init__
+VisionEgg.PyroClient.PyroClient.__init__
+VisionEgg.PyroHelpers.PyroConstantController.__init__
+VisionEgg.PyroHelpers.PyroEncapsulatedController.__init__
+VisionEgg.PyroHelpers.PyroEvalStringController.__init__
+VisionEgg.PyroHelpers.PyroExecStringController.__init__
+VisionEgg.PyroHelpers.PyroListenController.__init__
+VisionEgg.PyroHelpers.PyroLocalDictController.__init__
+VisionEgg.PyroHelpers.PyroServer.__init__
+VisionEgg.QuickTime.MovieTexture.__init__
+VisionEgg.ResponseControl.KeyboardResponseController.__init__
+VisionEgg.ResponseControl.ResponseController.__init__
+VisionEgg.SphereMap.AzElGrid.__init__
+VisionEgg.SphereMap.SphereGrating.__init__
+VisionEgg.SphereMap.SphereMap.__init__
+VisionEgg.SphereMap.SphereWindow.__init__
+VisionEgg.TCPController.SocketListenController.__init__
+VisionEgg.TCPController.TCPController.__init__
+VisionEgg.TCPController.TCPServer.__init__
+VisionEgg.Text.BitmapText.__init__
+VisionEgg.Text.GlutTextBase.__init__
+VisionEgg.Text.StrokeText.__init__
+VisionEgg.Text.Text.__init__
+VisionEgg.Textures.FixationCross.__init__
+VisionEgg.Textures.Mask2D.__init__
+VisionEgg.Textures.SpinningDrum.__init__
+VisionEgg.Textures.Texture.__init__
+VisionEgg.Textures.TextureFromFile.__init__
+VisionEgg.Textures.TextureObject.__init__
+VisionEgg.Textures.TextureStimulusBaseClass.__init__
+VisionEgg.ThreeDeeMath.TransformMatrix.__init__
+VisionEgg.WrappedText.WrappedText.__init__
+VisionEgg.qtmovie.Movie.__init__
+VisionEgg.qtmovie.Rect.__init__" class="py-name" href="#" onclick="return doclink('link-21', '__init__', 'link-21');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt><tt class="py-op">**</tt><tt class="py-name">kw</tt><tt class="py-op">)</tt> </tt>
+<a name="L95"></a><tt class="py-lineno"> 95</tt>  <tt class="py-line">        <tt class="py-name">Pyro</tt><tt class="py-op">.</tt><tt class="py-name">core</tt><tt class="py-op">.</tt><tt class="py-name">ObjBase</tt><tt class="py-op">.</tt><tt id="link-22" class="py-name"><a title="VisionEgg.ClassWithParameters.__init__
+VisionEgg.Configuration.Config.__init__
+VisionEgg.Core.FixationSpot.__init__
+VisionEgg.Core.FrameTimer.__init__
+VisionEgg.Core.ModelView.__init__
+VisionEgg.Core.OrthographicProjection.__init__
+VisionEgg.Core.OrthographicProjectionNoZClip.__init__
+VisionEgg.Core.PerspectiveProjection.__init__
+VisionEgg.Core.Projection.__init__
+VisionEgg.Core.ProjectionBaseClass.__init__
+VisionEgg.Core.Screen.__init__
+VisionEgg.Core.SimplePerspectiveProjection.__init__
+VisionEgg.Core.Stimulus.__init__
+VisionEgg.Core.Viewport.__init__
+VisionEgg.Daq.Channel.__init__
+VisionEgg.Daq.DaqMode.__init__
+VisionEgg.Daq.Device.__init__
+VisionEgg.Daq.Functionality.__init__
+VisionEgg.Daq.SignalType.__init__
+VisionEgg.DaqKeyboard.KeyboardTriggerInController.__init__
+VisionEgg.DaqLPT.LPTChannel.__init__
+VisionEgg.DaqLPT.LPTDevice.__init__
+VisionEgg.DaqLPT.LPTTriggerInController.__init__
+VisionEgg.DaqLPT.LPTTriggerOutController.__init__
+VisionEgg.Deprecated.Message.__init__
+VisionEgg.Dots.DotArea2D.__init__
+VisionEgg.FlowControl.ConstantController.__init__
+VisionEgg.FlowControl.Controller.__init__
+VisionEgg.FlowControl.EncapsulatedController.__init__
+VisionEgg.FlowControl.EvalStringController.__init__
+VisionEgg.FlowControl.ExecStringController.__init__
+VisionEgg.FlowControl.FunctionController.__init__
+VisionEgg.FlowControl.Presentation.__init__
+VisionEgg.GLTrace.Wrapper.__init__
+VisionEgg.GUI.AppWindow.__init__
+VisionEgg.GUI.GetKeypressDialog.__init__
+VisionEgg.GUI.GraphicsConfigurationWindow.__init__
+VisionEgg.GUI.InfoFrame.__init__
+VisionEgg.GUI.ProgressBar.__init__
+VisionEgg.GUI.ToplevelDialog.__init__
+VisionEgg.Gratings.SinGrating2D.__init__
+VisionEgg.Gratings.SinGrating3D.__init__
+VisionEgg.MoreStimuli.Arrow.__init__
+VisionEgg.MoreStimuli.FilledCircle.__init__
+VisionEgg.MoreStimuli.Rectangle3D.__init__
+VisionEgg.MoreStimuli.Target2D.__init__
+VisionEgg.ParameterTypes.AnyOf.__init__
+VisionEgg.ParameterTypes.Instance.__init__
+VisionEgg.ParameterTypes.Sequence.__init__
+VisionEgg.ParameterTypes.SubClass.__init__
+VisionEgg.PyroApps.AST_ext.AST_Visitor.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalMetaParameters.__init__
+VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.__init__
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.__init__
+VisionEgg.PyroApps.DropinGUI.DropinMetaParameters.__init__
+VisionEgg.PyroApps.DropinServer.DropinMetaController.__init__
+VisionEgg.PyroApps.EPhysGUI.AppWindow.__init__
+VisionEgg.PyroApps.EPhysGUI.BarButton.__init__
+VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase.__init__
+VisionEgg.PyroApps.EPhysGUI.GammaFrame.__init__
+VisionEgg.PyroApps.EPhysGUI.ImageSequenceLauncher.__init__
+VisionEgg.PyroApps.EPhysGUI.Loop.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopContainedObject.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopParamDialog.__init__
+VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.__init__
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.__init__
+VisionEgg.PyroApps.EPhysServer.EPhysServer.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingMetaParameters.__init__
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.GridGUI.GridControlFrame.__init__
+VisionEgg.PyroApps.GridGUI.GridMetaParameters.__init__
+VisionEgg.PyroApps.GridServer.GridMetaController.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetMetaParameters.__init__
+VisionEgg.PyroApps.MouseTargetServer.MousePositionController.__init__
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetOrientationController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetPositionController.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.CallbackEntry.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionParameters.__init__
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingMetaParameters.__init__
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumMetaParameters.__init__
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.__init__
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.__init__
+VisionEgg.PyroApps.TargetGUI.TargetMetaParameters.__init__
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.__init__
+VisionEgg.PyroClient.PyroClient.__init__
+VisionEgg.PyroHelpers.PyroConstantController.__init__
+VisionEgg.PyroHelpers.PyroEncapsulatedController.__init__
+VisionEgg.PyroHelpers.PyroEvalStringController.__init__
+VisionEgg.PyroHelpers.PyroExecStringController.__init__
+VisionEgg.PyroHelpers.PyroListenController.__init__
+VisionEgg.PyroHelpers.PyroLocalDictController.__init__
+VisionEgg.PyroHelpers.PyroServer.__init__
+VisionEgg.QuickTime.MovieTexture.__init__
+VisionEgg.ResponseControl.KeyboardResponseController.__init__
+VisionEgg.ResponseControl.ResponseController.__init__
+VisionEgg.SphereMap.AzElGrid.__init__
+VisionEgg.SphereMap.SphereGrating.__init__
+VisionEgg.SphereMap.SphereMap.__init__
+VisionEgg.SphereMap.SphereWindow.__init__
+VisionEgg.TCPController.SocketListenController.__init__
+VisionEgg.TCPController.TCPController.__init__
+VisionEgg.TCPController.TCPServer.__init__
+VisionEgg.Text.BitmapText.__init__
+VisionEgg.Text.GlutTextBase.__init__
+VisionEgg.Text.StrokeText.__init__
+VisionEgg.Text.Text.__init__
+VisionEgg.Textures.FixationCross.__init__
+VisionEgg.Textures.Mask2D.__init__
+VisionEgg.Textures.SpinningDrum.__init__
+VisionEgg.Textures.Texture.__init__
+VisionEgg.Textures.TextureFromFile.__init__
+VisionEgg.Textures.TextureObject.__init__
+VisionEgg.Textures.TextureStimulusBaseClass.__init__
+VisionEgg.ThreeDeeMath.TransformMatrix.__init__
+VisionEgg.WrappedText.WrappedText.__init__
+VisionEgg.qtmovie.Movie.__init__
+VisionEgg.qtmovie.Rect.__init__" class="py-name" href="#" onclick="return doclink('link-22', '__init__', 'link-21');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L96"></a><tt class="py-lineno"> 96</tt>  <tt class="py-line"> </tt>
+<a name="PyroEvalStringController"></a><div id="PyroEvalStringController-def"><a name="L97"></a><tt class="py-lineno"> 97</tt> <a class="py-toggle" href="#" id="PyroEvalStringController-toggle" onclick="return toggle('PyroEvalStringController');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.PyroHelpers.PyroEvalStringController-class.html">PyroEvalStringController</a><tt class="py-op">(</tt><tt class="py-base-class">VisionEgg</tt><tt cl [...]
+</div><div id="PyroEvalStringController-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="PyroEvalStringController-expanded"><a name="PyroEvalStringController.__init__"></a><div id="PyroEvalStringController.__init__-def"><a name="L98"></a><tt class="py-lineno"> 98</tt> <a class="py-toggle" href="#" id="PyroEvalStringController.__init__-toggle" onclick="return toggle('PyroEvalStringController.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> < [...]
+</div><div id="PyroEvalStringController.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="PyroEvalStringController.__init__-expanded"><a name="L99"></a><tt class="py-lineno"> 99</tt>  <tt class="py-line">        <tt id="link-23" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-23', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-24" class="py-name"><a title="VisionEgg.FlowControl [...]
+VisionEgg.Configuration.Config.__init__
+VisionEgg.Core.FixationSpot.__init__
+VisionEgg.Core.FrameTimer.__init__
+VisionEgg.Core.ModelView.__init__
+VisionEgg.Core.OrthographicProjection.__init__
+VisionEgg.Core.OrthographicProjectionNoZClip.__init__
+VisionEgg.Core.PerspectiveProjection.__init__
+VisionEgg.Core.Projection.__init__
+VisionEgg.Core.ProjectionBaseClass.__init__
+VisionEgg.Core.Screen.__init__
+VisionEgg.Core.SimplePerspectiveProjection.__init__
+VisionEgg.Core.Stimulus.__init__
+VisionEgg.Core.Viewport.__init__
+VisionEgg.Daq.Channel.__init__
+VisionEgg.Daq.DaqMode.__init__
+VisionEgg.Daq.Device.__init__
+VisionEgg.Daq.Functionality.__init__
+VisionEgg.Daq.SignalType.__init__
+VisionEgg.DaqKeyboard.KeyboardTriggerInController.__init__
+VisionEgg.DaqLPT.LPTChannel.__init__
+VisionEgg.DaqLPT.LPTDevice.__init__
+VisionEgg.DaqLPT.LPTTriggerInController.__init__
+VisionEgg.DaqLPT.LPTTriggerOutController.__init__
+VisionEgg.Deprecated.Message.__init__
+VisionEgg.Dots.DotArea2D.__init__
+VisionEgg.FlowControl.ConstantController.__init__
+VisionEgg.FlowControl.Controller.__init__
+VisionEgg.FlowControl.EncapsulatedController.__init__
+VisionEgg.FlowControl.EvalStringController.__init__
+VisionEgg.FlowControl.ExecStringController.__init__
+VisionEgg.FlowControl.FunctionController.__init__
+VisionEgg.FlowControl.Presentation.__init__
+VisionEgg.GLTrace.Wrapper.__init__
+VisionEgg.GUI.AppWindow.__init__
+VisionEgg.GUI.GetKeypressDialog.__init__
+VisionEgg.GUI.GraphicsConfigurationWindow.__init__
+VisionEgg.GUI.InfoFrame.__init__
+VisionEgg.GUI.ProgressBar.__init__
+VisionEgg.GUI.ToplevelDialog.__init__
+VisionEgg.Gratings.SinGrating2D.__init__
+VisionEgg.Gratings.SinGrating3D.__init__
+VisionEgg.MoreStimuli.Arrow.__init__
+VisionEgg.MoreStimuli.FilledCircle.__init__
+VisionEgg.MoreStimuli.Rectangle3D.__init__
+VisionEgg.MoreStimuli.Target2D.__init__
+VisionEgg.ParameterTypes.AnyOf.__init__
+VisionEgg.ParameterTypes.Instance.__init__
+VisionEgg.ParameterTypes.Sequence.__init__
+VisionEgg.ParameterTypes.SubClass.__init__
+VisionEgg.PyroApps.AST_ext.AST_Visitor.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalMetaParameters.__init__
+VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.__init__
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.__init__
+VisionEgg.PyroApps.DropinGUI.DropinMetaParameters.__init__
+VisionEgg.PyroApps.DropinServer.DropinMetaController.__init__
+VisionEgg.PyroApps.EPhysGUI.AppWindow.__init__
+VisionEgg.PyroApps.EPhysGUI.BarButton.__init__
+VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase.__init__
+VisionEgg.PyroApps.EPhysGUI.GammaFrame.__init__
+VisionEgg.PyroApps.EPhysGUI.ImageSequenceLauncher.__init__
+VisionEgg.PyroApps.EPhysGUI.Loop.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopContainedObject.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopParamDialog.__init__
+VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.__init__
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.__init__
+VisionEgg.PyroApps.EPhysServer.EPhysServer.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingMetaParameters.__init__
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.GridGUI.GridControlFrame.__init__
+VisionEgg.PyroApps.GridGUI.GridMetaParameters.__init__
+VisionEgg.PyroApps.GridServer.GridMetaController.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetMetaParameters.__init__
+VisionEgg.PyroApps.MouseTargetServer.MousePositionController.__init__
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetOrientationController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetPositionController.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.CallbackEntry.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionParameters.__init__
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingMetaParameters.__init__
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumMetaParameters.__init__
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.__init__
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.__init__
+VisionEgg.PyroApps.TargetGUI.TargetMetaParameters.__init__
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.__init__
+VisionEgg.PyroClient.PyroClient.__init__
+VisionEgg.PyroHelpers.PyroConstantController.__init__
+VisionEgg.PyroHelpers.PyroEncapsulatedController.__init__
+VisionEgg.PyroHelpers.PyroEvalStringController.__init__
+VisionEgg.PyroHelpers.PyroExecStringController.__init__
+VisionEgg.PyroHelpers.PyroListenController.__init__
+VisionEgg.PyroHelpers.PyroLocalDictController.__init__
+VisionEgg.PyroHelpers.PyroServer.__init__
+VisionEgg.QuickTime.MovieTexture.__init__
+VisionEgg.ResponseControl.KeyboardResponseController.__init__
+VisionEgg.ResponseControl.ResponseController.__init__
+VisionEgg.SphereMap.AzElGrid.__init__
+VisionEgg.SphereMap.SphereGrating.__init__
+VisionEgg.SphereMap.SphereMap.__init__
+VisionEgg.SphereMap.SphereWindow.__init__
+VisionEgg.TCPController.SocketListenController.__init__
+VisionEgg.TCPController.TCPController.__init__
+VisionEgg.TCPController.TCPServer.__init__
+VisionEgg.Text.BitmapText.__init__
+VisionEgg.Text.GlutTextBase.__init__
+VisionEgg.Text.StrokeText.__init__
+VisionEgg.Text.Text.__init__
+VisionEgg.Textures.FixationCross.__init__
+VisionEgg.Textures.Mask2D.__init__
+VisionEgg.Textures.SpinningDrum.__init__
+VisionEgg.Textures.Texture.__init__
+VisionEgg.Textures.TextureFromFile.__init__
+VisionEgg.Textures.TextureObject.__init__
+VisionEgg.Textures.TextureStimulusBaseClass.__init__
+VisionEgg.ThreeDeeMath.TransformMatrix.__init__
+VisionEgg.WrappedText.WrappedText.__init__
+VisionEgg.qtmovie.Movie.__init__
+VisionEgg.qtmovie.Rect.__init__" class="py-name" href="#" onclick="return doclink('link-26', '__init__', 'link-21');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt><tt class="py-op">**</tt><tt class="py-name">kw</tt><tt class="py-op">)</tt> </tt>
+<a name="L100"></a><tt class="py-lineno">100</tt>  <tt class="py-line">        <tt class="py-name">Pyro</tt><tt class="py-op">.</tt><tt class="py-name">core</tt><tt class="py-op">.</tt><tt class="py-name">ObjBase</tt><tt class="py-op">.</tt><tt id="link-27" class="py-name"><a title="VisionEgg.ClassWithParameters.__init__
+VisionEgg.Configuration.Config.__init__
+VisionEgg.Core.FixationSpot.__init__
+VisionEgg.Core.FrameTimer.__init__
+VisionEgg.Core.ModelView.__init__
+VisionEgg.Core.OrthographicProjection.__init__
+VisionEgg.Core.OrthographicProjectionNoZClip.__init__
+VisionEgg.Core.PerspectiveProjection.__init__
+VisionEgg.Core.Projection.__init__
+VisionEgg.Core.ProjectionBaseClass.__init__
+VisionEgg.Core.Screen.__init__
+VisionEgg.Core.SimplePerspectiveProjection.__init__
+VisionEgg.Core.Stimulus.__init__
+VisionEgg.Core.Viewport.__init__
+VisionEgg.Daq.Channel.__init__
+VisionEgg.Daq.DaqMode.__init__
+VisionEgg.Daq.Device.__init__
+VisionEgg.Daq.Functionality.__init__
+VisionEgg.Daq.SignalType.__init__
+VisionEgg.DaqKeyboard.KeyboardTriggerInController.__init__
+VisionEgg.DaqLPT.LPTChannel.__init__
+VisionEgg.DaqLPT.LPTDevice.__init__
+VisionEgg.DaqLPT.LPTTriggerInController.__init__
+VisionEgg.DaqLPT.LPTTriggerOutController.__init__
+VisionEgg.Deprecated.Message.__init__
+VisionEgg.Dots.DotArea2D.__init__
+VisionEgg.FlowControl.ConstantController.__init__
+VisionEgg.FlowControl.Controller.__init__
+VisionEgg.FlowControl.EncapsulatedController.__init__
+VisionEgg.FlowControl.EvalStringController.__init__
+VisionEgg.FlowControl.ExecStringController.__init__
+VisionEgg.FlowControl.FunctionController.__init__
+VisionEgg.FlowControl.Presentation.__init__
+VisionEgg.GLTrace.Wrapper.__init__
+VisionEgg.GUI.AppWindow.__init__
+VisionEgg.GUI.GetKeypressDialog.__init__
+VisionEgg.GUI.GraphicsConfigurationWindow.__init__
+VisionEgg.GUI.InfoFrame.__init__
+VisionEgg.GUI.ProgressBar.__init__
+VisionEgg.GUI.ToplevelDialog.__init__
+VisionEgg.Gratings.SinGrating2D.__init__
+VisionEgg.Gratings.SinGrating3D.__init__
+VisionEgg.MoreStimuli.Arrow.__init__
+VisionEgg.MoreStimuli.FilledCircle.__init__
+VisionEgg.MoreStimuli.Rectangle3D.__init__
+VisionEgg.MoreStimuli.Target2D.__init__
+VisionEgg.ParameterTypes.AnyOf.__init__
+VisionEgg.ParameterTypes.Instance.__init__
+VisionEgg.ParameterTypes.Sequence.__init__
+VisionEgg.ParameterTypes.SubClass.__init__
+VisionEgg.PyroApps.AST_ext.AST_Visitor.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalMetaParameters.__init__
+VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.__init__
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.__init__
+VisionEgg.PyroApps.DropinGUI.DropinMetaParameters.__init__
+VisionEgg.PyroApps.DropinServer.DropinMetaController.__init__
+VisionEgg.PyroApps.EPhysGUI.AppWindow.__init__
+VisionEgg.PyroApps.EPhysGUI.BarButton.__init__
+VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase.__init__
+VisionEgg.PyroApps.EPhysGUI.GammaFrame.__init__
+VisionEgg.PyroApps.EPhysGUI.ImageSequenceLauncher.__init__
+VisionEgg.PyroApps.EPhysGUI.Loop.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopContainedObject.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopParamDialog.__init__
+VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.__init__
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.__init__
+VisionEgg.PyroApps.EPhysServer.EPhysServer.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingMetaParameters.__init__
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.GridGUI.GridControlFrame.__init__
+VisionEgg.PyroApps.GridGUI.GridMetaParameters.__init__
+VisionEgg.PyroApps.GridServer.GridMetaController.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetMetaParameters.__init__
+VisionEgg.PyroApps.MouseTargetServer.MousePositionController.__init__
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetOrientationController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetPositionController.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.CallbackEntry.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionParameters.__init__
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingMetaParameters.__init__
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumMetaParameters.__init__
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.__init__
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.__init__
+VisionEgg.PyroApps.TargetGUI.TargetMetaParameters.__init__
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.__init__
+VisionEgg.PyroClient.PyroClient.__init__
+VisionEgg.PyroHelpers.PyroConstantController.__init__
+VisionEgg.PyroHelpers.PyroEncapsulatedController.__init__
+VisionEgg.PyroHelpers.PyroEvalStringController.__init__
+VisionEgg.PyroHelpers.PyroExecStringController.__init__
+VisionEgg.PyroHelpers.PyroListenController.__init__
+VisionEgg.PyroHelpers.PyroLocalDictController.__init__
+VisionEgg.PyroHelpers.PyroServer.__init__
+VisionEgg.QuickTime.MovieTexture.__init__
+VisionEgg.ResponseControl.KeyboardResponseController.__init__
+VisionEgg.ResponseControl.ResponseController.__init__
+VisionEgg.SphereMap.AzElGrid.__init__
+VisionEgg.SphereMap.SphereGrating.__init__
+VisionEgg.SphereMap.SphereMap.__init__
+VisionEgg.SphereMap.SphereWindow.__init__
+VisionEgg.TCPController.SocketListenController.__init__
+VisionEgg.TCPController.TCPController.__init__
+VisionEgg.TCPController.TCPServer.__init__
+VisionEgg.Text.BitmapText.__init__
+VisionEgg.Text.GlutTextBase.__init__
+VisionEgg.Text.StrokeText.__init__
+VisionEgg.Text.Text.__init__
+VisionEgg.Textures.FixationCross.__init__
+VisionEgg.Textures.Mask2D.__init__
+VisionEgg.Textures.SpinningDrum.__init__
+VisionEgg.Textures.Texture.__init__
+VisionEgg.Textures.TextureFromFile.__init__
+VisionEgg.Textures.TextureObject.__init__
+VisionEgg.Textures.TextureStimulusBaseClass.__init__
+VisionEgg.ThreeDeeMath.TransformMatrix.__init__
+VisionEgg.WrappedText.WrappedText.__init__
+VisionEgg.qtmovie.Movie.__init__
+VisionEgg.qtmovie.Rect.__init__" class="py-name" href="#" onclick="return doclink('link-27', '__init__', 'link-21');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L101"></a><tt class="py-lineno">101</tt>  <tt class="py-line"> </tt>
+<a name="PyroExecStringController"></a><div id="PyroExecStringController-def"><a name="L102"></a><tt class="py-lineno">102</tt> <a class="py-toggle" href="#" id="PyroExecStringController-toggle" onclick="return toggle('PyroExecStringController');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.PyroHelpers.PyroExecStringController-class.html">PyroExecStringController</a><tt class="py-op">(</tt><tt class="py-base-class">VisionEgg</tt><tt c [...]
+</div><div id="PyroExecStringController-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="PyroExecStringController-expanded"><a name="PyroExecStringController.__init__"></a><div id="PyroExecStringController.__init__-def"><a name="L103"></a><tt class="py-lineno">103</tt> <a class="py-toggle" href="#" id="PyroExecStringController.__init__-toggle" onclick="return toggle('PyroExecStringController.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt>  [...]
+</div><div id="PyroExecStringController.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="PyroExecStringController.__init__-expanded"><a name="L104"></a><tt class="py-lineno">104</tt>  <tt class="py-line">        <tt id="link-28" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-28', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-29" class="py-name"><a title="VisionEgg.FlowContro [...]
+VisionEgg.Configuration.Config.__init__
+VisionEgg.Core.FixationSpot.__init__
+VisionEgg.Core.FrameTimer.__init__
+VisionEgg.Core.ModelView.__init__
+VisionEgg.Core.OrthographicProjection.__init__
+VisionEgg.Core.OrthographicProjectionNoZClip.__init__
+VisionEgg.Core.PerspectiveProjection.__init__
+VisionEgg.Core.Projection.__init__
+VisionEgg.Core.ProjectionBaseClass.__init__
+VisionEgg.Core.Screen.__init__
+VisionEgg.Core.SimplePerspectiveProjection.__init__
+VisionEgg.Core.Stimulus.__init__
+VisionEgg.Core.Viewport.__init__
+VisionEgg.Daq.Channel.__init__
+VisionEgg.Daq.DaqMode.__init__
+VisionEgg.Daq.Device.__init__
+VisionEgg.Daq.Functionality.__init__
+VisionEgg.Daq.SignalType.__init__
+VisionEgg.DaqKeyboard.KeyboardTriggerInController.__init__
+VisionEgg.DaqLPT.LPTChannel.__init__
+VisionEgg.DaqLPT.LPTDevice.__init__
+VisionEgg.DaqLPT.LPTTriggerInController.__init__
+VisionEgg.DaqLPT.LPTTriggerOutController.__init__
+VisionEgg.Deprecated.Message.__init__
+VisionEgg.Dots.DotArea2D.__init__
+VisionEgg.FlowControl.ConstantController.__init__
+VisionEgg.FlowControl.Controller.__init__
+VisionEgg.FlowControl.EncapsulatedController.__init__
+VisionEgg.FlowControl.EvalStringController.__init__
+VisionEgg.FlowControl.ExecStringController.__init__
+VisionEgg.FlowControl.FunctionController.__init__
+VisionEgg.FlowControl.Presentation.__init__
+VisionEgg.GLTrace.Wrapper.__init__
+VisionEgg.GUI.AppWindow.__init__
+VisionEgg.GUI.GetKeypressDialog.__init__
+VisionEgg.GUI.GraphicsConfigurationWindow.__init__
+VisionEgg.GUI.InfoFrame.__init__
+VisionEgg.GUI.ProgressBar.__init__
+VisionEgg.GUI.ToplevelDialog.__init__
+VisionEgg.Gratings.SinGrating2D.__init__
+VisionEgg.Gratings.SinGrating3D.__init__
+VisionEgg.MoreStimuli.Arrow.__init__
+VisionEgg.MoreStimuli.FilledCircle.__init__
+VisionEgg.MoreStimuli.Rectangle3D.__init__
+VisionEgg.MoreStimuli.Target2D.__init__
+VisionEgg.ParameterTypes.AnyOf.__init__
+VisionEgg.ParameterTypes.Instance.__init__
+VisionEgg.ParameterTypes.Sequence.__init__
+VisionEgg.ParameterTypes.SubClass.__init__
+VisionEgg.PyroApps.AST_ext.AST_Visitor.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalMetaParameters.__init__
+VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.__init__
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.__init__
+VisionEgg.PyroApps.DropinGUI.DropinMetaParameters.__init__
+VisionEgg.PyroApps.DropinServer.DropinMetaController.__init__
+VisionEgg.PyroApps.EPhysGUI.AppWindow.__init__
+VisionEgg.PyroApps.EPhysGUI.BarButton.__init__
+VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase.__init__
+VisionEgg.PyroApps.EPhysGUI.GammaFrame.__init__
+VisionEgg.PyroApps.EPhysGUI.ImageSequenceLauncher.__init__
+VisionEgg.PyroApps.EPhysGUI.Loop.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopContainedObject.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopParamDialog.__init__
+VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.__init__
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.__init__
+VisionEgg.PyroApps.EPhysServer.EPhysServer.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingMetaParameters.__init__
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.GridGUI.GridControlFrame.__init__
+VisionEgg.PyroApps.GridGUI.GridMetaParameters.__init__
+VisionEgg.PyroApps.GridServer.GridMetaController.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetMetaParameters.__init__
+VisionEgg.PyroApps.MouseTargetServer.MousePositionController.__init__
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetOrientationController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetPositionController.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.CallbackEntry.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionParameters.__init__
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingMetaParameters.__init__
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumMetaParameters.__init__
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.__init__
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.__init__
+VisionEgg.PyroApps.TargetGUI.TargetMetaParameters.__init__
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.__init__
+VisionEgg.PyroClient.PyroClient.__init__
+VisionEgg.PyroHelpers.PyroConstantController.__init__
+VisionEgg.PyroHelpers.PyroEncapsulatedController.__init__
+VisionEgg.PyroHelpers.PyroEvalStringController.__init__
+VisionEgg.PyroHelpers.PyroExecStringController.__init__
+VisionEgg.PyroHelpers.PyroListenController.__init__
+VisionEgg.PyroHelpers.PyroLocalDictController.__init__
+VisionEgg.PyroHelpers.PyroServer.__init__
+VisionEgg.QuickTime.MovieTexture.__init__
+VisionEgg.ResponseControl.KeyboardResponseController.__init__
+VisionEgg.ResponseControl.ResponseController.__init__
+VisionEgg.SphereMap.AzElGrid.__init__
+VisionEgg.SphereMap.SphereGrating.__init__
+VisionEgg.SphereMap.SphereMap.__init__
+VisionEgg.SphereMap.SphereWindow.__init__
+VisionEgg.TCPController.SocketListenController.__init__
+VisionEgg.TCPController.TCPController.__init__
+VisionEgg.TCPController.TCPServer.__init__
+VisionEgg.Text.BitmapText.__init__
+VisionEgg.Text.GlutTextBase.__init__
+VisionEgg.Text.StrokeText.__init__
+VisionEgg.Text.Text.__init__
+VisionEgg.Textures.FixationCross.__init__
+VisionEgg.Textures.Mask2D.__init__
+VisionEgg.Textures.SpinningDrum.__init__
+VisionEgg.Textures.Texture.__init__
+VisionEgg.Textures.TextureFromFile.__init__
+VisionEgg.Textures.TextureObject.__init__
+VisionEgg.Textures.TextureStimulusBaseClass.__init__
+VisionEgg.ThreeDeeMath.TransformMatrix.__init__
+VisionEgg.WrappedText.WrappedText.__init__
+VisionEgg.qtmovie.Movie.__init__
+VisionEgg.qtmovie.Rect.__init__" class="py-name" href="#" onclick="return doclink('link-31', '__init__', 'link-21');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt><tt class="py-op">**</tt><tt class="py-name">kw</tt><tt class="py-op">)</tt> </tt>
+<a name="L105"></a><tt class="py-lineno">105</tt>  <tt class="py-line">        <tt class="py-name">Pyro</tt><tt class="py-op">.</tt><tt class="py-name">core</tt><tt class="py-op">.</tt><tt class="py-name">ObjBase</tt><tt class="py-op">.</tt><tt id="link-32" class="py-name"><a title="VisionEgg.ClassWithParameters.__init__
+VisionEgg.Configuration.Config.__init__
+VisionEgg.Core.FixationSpot.__init__
+VisionEgg.Core.FrameTimer.__init__
+VisionEgg.Core.ModelView.__init__
+VisionEgg.Core.OrthographicProjection.__init__
+VisionEgg.Core.OrthographicProjectionNoZClip.__init__
+VisionEgg.Core.PerspectiveProjection.__init__
+VisionEgg.Core.Projection.__init__
+VisionEgg.Core.ProjectionBaseClass.__init__
+VisionEgg.Core.Screen.__init__
+VisionEgg.Core.SimplePerspectiveProjection.__init__
+VisionEgg.Core.Stimulus.__init__
+VisionEgg.Core.Viewport.__init__
+VisionEgg.Daq.Channel.__init__
+VisionEgg.Daq.DaqMode.__init__
+VisionEgg.Daq.Device.__init__
+VisionEgg.Daq.Functionality.__init__
+VisionEgg.Daq.SignalType.__init__
+VisionEgg.DaqKeyboard.KeyboardTriggerInController.__init__
+VisionEgg.DaqLPT.LPTChannel.__init__
+VisionEgg.DaqLPT.LPTDevice.__init__
+VisionEgg.DaqLPT.LPTTriggerInController.__init__
+VisionEgg.DaqLPT.LPTTriggerOutController.__init__
+VisionEgg.Deprecated.Message.__init__
+VisionEgg.Dots.DotArea2D.__init__
+VisionEgg.FlowControl.ConstantController.__init__
+VisionEgg.FlowControl.Controller.__init__
+VisionEgg.FlowControl.EncapsulatedController.__init__
+VisionEgg.FlowControl.EvalStringController.__init__
+VisionEgg.FlowControl.ExecStringController.__init__
+VisionEgg.FlowControl.FunctionController.__init__
+VisionEgg.FlowControl.Presentation.__init__
+VisionEgg.GLTrace.Wrapper.__init__
+VisionEgg.GUI.AppWindow.__init__
+VisionEgg.GUI.GetKeypressDialog.__init__
+VisionEgg.GUI.GraphicsConfigurationWindow.__init__
+VisionEgg.GUI.InfoFrame.__init__
+VisionEgg.GUI.ProgressBar.__init__
+VisionEgg.GUI.ToplevelDialog.__init__
+VisionEgg.Gratings.SinGrating2D.__init__
+VisionEgg.Gratings.SinGrating3D.__init__
+VisionEgg.MoreStimuli.Arrow.__init__
+VisionEgg.MoreStimuli.FilledCircle.__init__
+VisionEgg.MoreStimuli.Rectangle3D.__init__
+VisionEgg.MoreStimuli.Target2D.__init__
+VisionEgg.ParameterTypes.AnyOf.__init__
+VisionEgg.ParameterTypes.Instance.__init__
+VisionEgg.ParameterTypes.Sequence.__init__
+VisionEgg.ParameterTypes.SubClass.__init__
+VisionEgg.PyroApps.AST_ext.AST_Visitor.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalMetaParameters.__init__
+VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.__init__
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.__init__
+VisionEgg.PyroApps.DropinGUI.DropinMetaParameters.__init__
+VisionEgg.PyroApps.DropinServer.DropinMetaController.__init__
+VisionEgg.PyroApps.EPhysGUI.AppWindow.__init__
+VisionEgg.PyroApps.EPhysGUI.BarButton.__init__
+VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase.__init__
+VisionEgg.PyroApps.EPhysGUI.GammaFrame.__init__
+VisionEgg.PyroApps.EPhysGUI.ImageSequenceLauncher.__init__
+VisionEgg.PyroApps.EPhysGUI.Loop.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopContainedObject.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopParamDialog.__init__
+VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.__init__
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.__init__
+VisionEgg.PyroApps.EPhysServer.EPhysServer.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingMetaParameters.__init__
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.GridGUI.GridControlFrame.__init__
+VisionEgg.PyroApps.GridGUI.GridMetaParameters.__init__
+VisionEgg.PyroApps.GridServer.GridMetaController.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetMetaParameters.__init__
+VisionEgg.PyroApps.MouseTargetServer.MousePositionController.__init__
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetOrientationController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetPositionController.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.CallbackEntry.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionParameters.__init__
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingMetaParameters.__init__
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumMetaParameters.__init__
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.__init__
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.__init__
+VisionEgg.PyroApps.TargetGUI.TargetMetaParameters.__init__
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.__init__
+VisionEgg.PyroClient.PyroClient.__init__
+VisionEgg.PyroHelpers.PyroConstantController.__init__
+VisionEgg.PyroHelpers.PyroEncapsulatedController.__init__
+VisionEgg.PyroHelpers.PyroEvalStringController.__init__
+VisionEgg.PyroHelpers.PyroExecStringController.__init__
+VisionEgg.PyroHelpers.PyroListenController.__init__
+VisionEgg.PyroHelpers.PyroLocalDictController.__init__
+VisionEgg.PyroHelpers.PyroServer.__init__
+VisionEgg.QuickTime.MovieTexture.__init__
+VisionEgg.ResponseControl.KeyboardResponseController.__init__
+VisionEgg.ResponseControl.ResponseController.__init__
+VisionEgg.SphereMap.AzElGrid.__init__
+VisionEgg.SphereMap.SphereGrating.__init__
+VisionEgg.SphereMap.SphereMap.__init__
+VisionEgg.SphereMap.SphereWindow.__init__
+VisionEgg.TCPController.SocketListenController.__init__
+VisionEgg.TCPController.TCPController.__init__
+VisionEgg.TCPController.TCPServer.__init__
+VisionEgg.Text.BitmapText.__init__
+VisionEgg.Text.GlutTextBase.__init__
+VisionEgg.Text.StrokeText.__init__
+VisionEgg.Text.Text.__init__
+VisionEgg.Textures.FixationCross.__init__
+VisionEgg.Textures.Mask2D.__init__
+VisionEgg.Textures.SpinningDrum.__init__
+VisionEgg.Textures.Texture.__init__
+VisionEgg.Textures.TextureFromFile.__init__
+VisionEgg.Textures.TextureObject.__init__
+VisionEgg.Textures.TextureStimulusBaseClass.__init__
+VisionEgg.ThreeDeeMath.TransformMatrix.__init__
+VisionEgg.WrappedText.WrappedText.__init__
+VisionEgg.qtmovie.Movie.__init__
+VisionEgg.qtmovie.Rect.__init__" class="py-name" href="#" onclick="return doclink('link-32', '__init__', 'link-21');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L106"></a><tt class="py-lineno">106</tt>  <tt class="py-line"> </tt>
+<a name="PyroEncapsulatedController"></a><div id="PyroEncapsulatedController-def"><a name="L107"></a><tt class="py-lineno">107</tt> <a class="py-toggle" href="#" id="PyroEncapsulatedController-toggle" onclick="return toggle('PyroEncapsulatedController');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.PyroHelpers.PyroEncapsulatedController-class.html">PyroEncapsulatedController</a><tt class="py-op">(</tt><tt class="py-base-class">VisionE [...]
+</div><div id="PyroEncapsulatedController-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="PyroEncapsulatedController-expanded"><a name="L108"></a><tt class="py-lineno">108</tt>  <tt class="py-line">    <tt class="py-docstring">"""Create the instance of Controller on client, and send it to server.</tt> </tt>
+<a name="L109"></a><tt class="py-lineno">109</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L110"></a><tt class="py-lineno">110</tt>  <tt class="py-line"><tt class="py-docstring">    This class is analagous to VisionEgg.TCPController.TCPController.</tt> </tt>
+<a name="L111"></a><tt class="py-lineno">111</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="PyroEncapsulatedController.__init__"></a><div id="PyroEncapsulatedController.__init__-def"><a name="L112"></a><tt class="py-lineno">112</tt> <a class="py-toggle" href="#" id="PyroEncapsulatedController.__init__-toggle" onclick="return toggle('PyroEncapsulatedController.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroHelpers.PyroEncapsulatedController-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt  [...]
+</div><div id="PyroEncapsulatedController.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="PyroEncapsulatedController.__init__-expanded"><a name="L113"></a><tt class="py-lineno">113</tt>  <tt class="py-line">        <tt id="link-33" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-33', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-34" class="py-name"><a title="VisionEgg.FlowCo [...]
+VisionEgg.Configuration.Config.__init__
+VisionEgg.Core.FixationSpot.__init__
+VisionEgg.Core.FrameTimer.__init__
+VisionEgg.Core.ModelView.__init__
+VisionEgg.Core.OrthographicProjection.__init__
+VisionEgg.Core.OrthographicProjectionNoZClip.__init__
+VisionEgg.Core.PerspectiveProjection.__init__
+VisionEgg.Core.Projection.__init__
+VisionEgg.Core.ProjectionBaseClass.__init__
+VisionEgg.Core.Screen.__init__
+VisionEgg.Core.SimplePerspectiveProjection.__init__
+VisionEgg.Core.Stimulus.__init__
+VisionEgg.Core.Viewport.__init__
+VisionEgg.Daq.Channel.__init__
+VisionEgg.Daq.DaqMode.__init__
+VisionEgg.Daq.Device.__init__
+VisionEgg.Daq.Functionality.__init__
+VisionEgg.Daq.SignalType.__init__
+VisionEgg.DaqKeyboard.KeyboardTriggerInController.__init__
+VisionEgg.DaqLPT.LPTChannel.__init__
+VisionEgg.DaqLPT.LPTDevice.__init__
+VisionEgg.DaqLPT.LPTTriggerInController.__init__
+VisionEgg.DaqLPT.LPTTriggerOutController.__init__
+VisionEgg.Deprecated.Message.__init__
+VisionEgg.Dots.DotArea2D.__init__
+VisionEgg.FlowControl.ConstantController.__init__
+VisionEgg.FlowControl.Controller.__init__
+VisionEgg.FlowControl.EncapsulatedController.__init__
+VisionEgg.FlowControl.EvalStringController.__init__
+VisionEgg.FlowControl.ExecStringController.__init__
+VisionEgg.FlowControl.FunctionController.__init__
+VisionEgg.FlowControl.Presentation.__init__
+VisionEgg.GLTrace.Wrapper.__init__
+VisionEgg.GUI.AppWindow.__init__
+VisionEgg.GUI.GetKeypressDialog.__init__
+VisionEgg.GUI.GraphicsConfigurationWindow.__init__
+VisionEgg.GUI.InfoFrame.__init__
+VisionEgg.GUI.ProgressBar.__init__
+VisionEgg.GUI.ToplevelDialog.__init__
+VisionEgg.Gratings.SinGrating2D.__init__
+VisionEgg.Gratings.SinGrating3D.__init__
+VisionEgg.MoreStimuli.Arrow.__init__
+VisionEgg.MoreStimuli.FilledCircle.__init__
+VisionEgg.MoreStimuli.Rectangle3D.__init__
+VisionEgg.MoreStimuli.Target2D.__init__
+VisionEgg.ParameterTypes.AnyOf.__init__
+VisionEgg.ParameterTypes.Instance.__init__
+VisionEgg.ParameterTypes.Sequence.__init__
+VisionEgg.ParameterTypes.SubClass.__init__
+VisionEgg.PyroApps.AST_ext.AST_Visitor.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalMetaParameters.__init__
+VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.__init__
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.__init__
+VisionEgg.PyroApps.DropinGUI.DropinMetaParameters.__init__
+VisionEgg.PyroApps.DropinServer.DropinMetaController.__init__
+VisionEgg.PyroApps.EPhysGUI.AppWindow.__init__
+VisionEgg.PyroApps.EPhysGUI.BarButton.__init__
+VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase.__init__
+VisionEgg.PyroApps.EPhysGUI.GammaFrame.__init__
+VisionEgg.PyroApps.EPhysGUI.ImageSequenceLauncher.__init__
+VisionEgg.PyroApps.EPhysGUI.Loop.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopContainedObject.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopParamDialog.__init__
+VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.__init__
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.__init__
+VisionEgg.PyroApps.EPhysServer.EPhysServer.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingMetaParameters.__init__
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.GridGUI.GridControlFrame.__init__
+VisionEgg.PyroApps.GridGUI.GridMetaParameters.__init__
+VisionEgg.PyroApps.GridServer.GridMetaController.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetMetaParameters.__init__
+VisionEgg.PyroApps.MouseTargetServer.MousePositionController.__init__
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetOrientationController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetPositionController.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.CallbackEntry.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionParameters.__init__
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingMetaParameters.__init__
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumMetaParameters.__init__
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.__init__
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.__init__
+VisionEgg.PyroApps.TargetGUI.TargetMetaParameters.__init__
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.__init__
+VisionEgg.PyroClient.PyroClient.__init__
+VisionEgg.PyroHelpers.PyroConstantController.__init__
+VisionEgg.PyroHelpers.PyroEncapsulatedController.__init__
+VisionEgg.PyroHelpers.PyroEvalStringController.__init__
+VisionEgg.PyroHelpers.PyroExecStringController.__init__
+VisionEgg.PyroHelpers.PyroListenController.__init__
+VisionEgg.PyroHelpers.PyroLocalDictController.__init__
+VisionEgg.PyroHelpers.PyroServer.__init__
+VisionEgg.QuickTime.MovieTexture.__init__
+VisionEgg.ResponseControl.KeyboardResponseController.__init__
+VisionEgg.ResponseControl.ResponseController.__init__
+VisionEgg.SphereMap.AzElGrid.__init__
+VisionEgg.SphereMap.SphereGrating.__init__
+VisionEgg.SphereMap.SphereMap.__init__
+VisionEgg.SphereMap.SphereWindow.__init__
+VisionEgg.TCPController.SocketListenController.__init__
+VisionEgg.TCPController.TCPController.__init__
+VisionEgg.TCPController.TCPServer.__init__
+VisionEgg.Text.BitmapText.__init__
+VisionEgg.Text.GlutTextBase.__init__
+VisionEgg.Text.StrokeText.__init__
+VisionEgg.Text.Text.__init__
+VisionEgg.Textures.FixationCross.__init__
+VisionEgg.Textures.Mask2D.__init__
+VisionEgg.Textures.SpinningDrum.__init__
+VisionEgg.Textures.Texture.__init__
+VisionEgg.Textures.TextureFromFile.__init__
+VisionEgg.Textures.TextureObject.__init__
+VisionEgg.Textures.TextureStimulusBaseClass.__init__
+VisionEgg.ThreeDeeMath.TransformMatrix.__init__
+VisionEgg.WrappedText.WrappedText.__init__
+VisionEgg.qtmovie.Movie.__init__
+VisionEgg.qtmovie.Rect.__init__" class="py-name" href="#" onclick="return doclink('link-36', '__init__', 'link-21');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt><tt class="py-name">initial_controller</tt><tt class="py-op">)</tt> </tt>
+<a name="L114"></a><tt class="py-lineno">114</tt>  <tt class="py-line">        <tt class="py-name">Pyro</tt><tt class="py-op">.</tt><tt class="py-name">core</tt><tt class="py-op">.</tt><tt class="py-name">ObjBase</tt><tt class="py-op">.</tt><tt id="link-37" class="py-name"><a title="VisionEgg.ClassWithParameters.__init__
+VisionEgg.Configuration.Config.__init__
+VisionEgg.Core.FixationSpot.__init__
+VisionEgg.Core.FrameTimer.__init__
+VisionEgg.Core.ModelView.__init__
+VisionEgg.Core.OrthographicProjection.__init__
+VisionEgg.Core.OrthographicProjectionNoZClip.__init__
+VisionEgg.Core.PerspectiveProjection.__init__
+VisionEgg.Core.Projection.__init__
+VisionEgg.Core.ProjectionBaseClass.__init__
+VisionEgg.Core.Screen.__init__
+VisionEgg.Core.SimplePerspectiveProjection.__init__
+VisionEgg.Core.Stimulus.__init__
+VisionEgg.Core.Viewport.__init__
+VisionEgg.Daq.Channel.__init__
+VisionEgg.Daq.DaqMode.__init__
+VisionEgg.Daq.Device.__init__
+VisionEgg.Daq.Functionality.__init__
+VisionEgg.Daq.SignalType.__init__
+VisionEgg.DaqKeyboard.KeyboardTriggerInController.__init__
+VisionEgg.DaqLPT.LPTChannel.__init__
+VisionEgg.DaqLPT.LPTDevice.__init__
+VisionEgg.DaqLPT.LPTTriggerInController.__init__
+VisionEgg.DaqLPT.LPTTriggerOutController.__init__
+VisionEgg.Deprecated.Message.__init__
+VisionEgg.Dots.DotArea2D.__init__
+VisionEgg.FlowControl.ConstantController.__init__
+VisionEgg.FlowControl.Controller.__init__
+VisionEgg.FlowControl.EncapsulatedController.__init__
+VisionEgg.FlowControl.EvalStringController.__init__
+VisionEgg.FlowControl.ExecStringController.__init__
+VisionEgg.FlowControl.FunctionController.__init__
+VisionEgg.FlowControl.Presentation.__init__
+VisionEgg.GLTrace.Wrapper.__init__
+VisionEgg.GUI.AppWindow.__init__
+VisionEgg.GUI.GetKeypressDialog.__init__
+VisionEgg.GUI.GraphicsConfigurationWindow.__init__
+VisionEgg.GUI.InfoFrame.__init__
+VisionEgg.GUI.ProgressBar.__init__
+VisionEgg.GUI.ToplevelDialog.__init__
+VisionEgg.Gratings.SinGrating2D.__init__
+VisionEgg.Gratings.SinGrating3D.__init__
+VisionEgg.MoreStimuli.Arrow.__init__
+VisionEgg.MoreStimuli.FilledCircle.__init__
+VisionEgg.MoreStimuli.Rectangle3D.__init__
+VisionEgg.MoreStimuli.Target2D.__init__
+VisionEgg.ParameterTypes.AnyOf.__init__
+VisionEgg.ParameterTypes.Instance.__init__
+VisionEgg.ParameterTypes.Sequence.__init__
+VisionEgg.ParameterTypes.SubClass.__init__
+VisionEgg.PyroApps.AST_ext.AST_Visitor.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalMetaParameters.__init__
+VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.__init__
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.__init__
+VisionEgg.PyroApps.DropinGUI.DropinMetaParameters.__init__
+VisionEgg.PyroApps.DropinServer.DropinMetaController.__init__
+VisionEgg.PyroApps.EPhysGUI.AppWindow.__init__
+VisionEgg.PyroApps.EPhysGUI.BarButton.__init__
+VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase.__init__
+VisionEgg.PyroApps.EPhysGUI.GammaFrame.__init__
+VisionEgg.PyroApps.EPhysGUI.ImageSequenceLauncher.__init__
+VisionEgg.PyroApps.EPhysGUI.Loop.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopContainedObject.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopParamDialog.__init__
+VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.__init__
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.__init__
+VisionEgg.PyroApps.EPhysServer.EPhysServer.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingMetaParameters.__init__
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.GridGUI.GridControlFrame.__init__
+VisionEgg.PyroApps.GridGUI.GridMetaParameters.__init__
+VisionEgg.PyroApps.GridServer.GridMetaController.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetMetaParameters.__init__
+VisionEgg.PyroApps.MouseTargetServer.MousePositionController.__init__
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetOrientationController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetPositionController.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.CallbackEntry.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionParameters.__init__
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingMetaParameters.__init__
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumMetaParameters.__init__
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.__init__
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.__init__
+VisionEgg.PyroApps.TargetGUI.TargetMetaParameters.__init__
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.__init__
+VisionEgg.PyroClient.PyroClient.__init__
+VisionEgg.PyroHelpers.PyroConstantController.__init__
+VisionEgg.PyroHelpers.PyroEncapsulatedController.__init__
+VisionEgg.PyroHelpers.PyroEvalStringController.__init__
+VisionEgg.PyroHelpers.PyroExecStringController.__init__
+VisionEgg.PyroHelpers.PyroListenController.__init__
+VisionEgg.PyroHelpers.PyroLocalDictController.__init__
+VisionEgg.PyroHelpers.PyroServer.__init__
+VisionEgg.QuickTime.MovieTexture.__init__
+VisionEgg.ResponseControl.KeyboardResponseController.__init__
+VisionEgg.ResponseControl.ResponseController.__init__
+VisionEgg.SphereMap.AzElGrid.__init__
+VisionEgg.SphereMap.SphereGrating.__init__
+VisionEgg.SphereMap.SphereMap.__init__
+VisionEgg.SphereMap.SphereWindow.__init__
+VisionEgg.TCPController.SocketListenController.__init__
+VisionEgg.TCPController.TCPController.__init__
+VisionEgg.TCPController.TCPServer.__init__
+VisionEgg.Text.BitmapText.__init__
+VisionEgg.Text.GlutTextBase.__init__
+VisionEgg.Text.StrokeText.__init__
+VisionEgg.Text.Text.__init__
+VisionEgg.Textures.FixationCross.__init__
+VisionEgg.Textures.Mask2D.__init__
+VisionEgg.Textures.SpinningDrum.__init__
+VisionEgg.Textures.Texture.__init__
+VisionEgg.Textures.TextureFromFile.__init__
+VisionEgg.Textures.TextureObject.__init__
+VisionEgg.Textures.TextureStimulusBaseClass.__init__
+VisionEgg.ThreeDeeMath.TransformMatrix.__init__
+VisionEgg.WrappedText.WrappedText.__init__
+VisionEgg.qtmovie.Movie.__init__
+VisionEgg.qtmovie.Rect.__init__" class="py-name" href="#" onclick="return doclink('link-37', '__init__', 'link-21');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L115"></a><tt class="py-lineno">115</tt>  <tt class="py-line"> </tt>
+<a name="PyroLocalDictController"></a><div id="PyroLocalDictController-def"><a name="L116"></a><tt class="py-lineno">116</tt> <a class="py-toggle" href="#" id="PyroLocalDictController-toggle" onclick="return toggle('PyroLocalDictController');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.PyroHelpers.PyroLocalDictController-class.html">PyroLocalDictController</a><tt class="py-op">(</tt><tt class="py-base-class">VisionEgg</tt><tt class=" [...]
+</div><div id="PyroLocalDictController-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="PyroLocalDictController-expanded"><a name="L117"></a><tt class="py-lineno">117</tt>  <tt class="py-line">    <tt class="py-docstring">"""Contain several dictionary entries, set controller accordingly.</tt> </tt>
+<a name="L118"></a><tt class="py-lineno">118</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="PyroLocalDictController.__init__"></a><div id="PyroLocalDictController.__init__-def"><a name="L119"></a><tt class="py-lineno">119</tt> <a class="py-toggle" href="#" id="PyroLocalDictController.__init__-toggle" onclick="return toggle('PyroLocalDictController.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroHelpers.PyroLocalDictController-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param [...]
+</div><div id="PyroLocalDictController.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="PyroLocalDictController.__init__-expanded"><a name="L120"></a><tt class="py-lineno">120</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">dict</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L121"></a><tt class="py-lineno">121</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">dict</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L122"></a><tt class="py-lineno">122</tt>  <tt class="py-line">            <tt class="py-name">initial_controller</tt> <tt class="py-op">=</tt> <tt id="link-38" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-38', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-39" class="py-name"><a title="VisionEgg.FlowControl" class="py-name" href="#" onclick="return doclink('link-39', 'FlowControl', 'link-4');">FlowCo [...]
+<a name="L123"></a><tt class="py-lineno">123</tt>  <tt class="py-line">                                                                   <tt class="py-name">between_go_value</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> </tt>
+<a name="L124"></a><tt class="py-lineno">124</tt>  <tt class="py-line">                                                                   <tt class="py-name">eval_frequency</tt><tt class="py-op">=</tt><tt id="link-41" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-41', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-42" class="py-name"><a title="VisionEgg.FlowControl" class="py-name" href="#" onclick="return doc [...]
+VisionEgg.FlowControl.NEVER" class="py-name" href="#" onclick="return doclink('link-44', 'NEVER', 'link-44');">NEVER</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L125"></a><tt class="py-lineno">125</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L126"></a><tt class="py-lineno">126</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">dict</tt> <tt class="py-op">=</tt> <tt class="py-name">dict</tt> </tt>
+<a name="L127"></a><tt class="py-lineno">127</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">key</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L128"></a><tt class="py-lineno">128</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">dict</tt><tt class="py-op">.</tt><tt class="py-name">keys</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L129"></a><tt class="py-lineno">129</tt>  <tt class="py-line">                <tt class="py-name">key</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">dict</tt><tt class="py-op">.</tt><tt class="py-name">keys</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt>
+<a name="L130"></a><tt class="py-lineno">130</tt>  <tt class="py-line">                <tt class="py-name">initial_controller</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">dict</tt><tt class="py-op">[</tt><tt class="py-name">key</tt><tt class="py-op">]</tt> </tt>
+<a name="L131"></a><tt class="py-lineno">131</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L132"></a><tt class="py-lineno">132</tt>  <tt class="py-line">                <tt class="py-name">initial_controller</tt> <tt class="py-op">=</tt> <tt id="link-45" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-45', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-46" class="py-name"><a title="VisionEgg.FlowControl" class="py-name" href="#" onclick="return doclink('link-46', 'FlowControl', 'link-4');">Fl [...]
+<a name="L133"></a><tt class="py-lineno">133</tt>  <tt class="py-line">                                                                       <tt class="py-name">between_go_value</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> </tt>
+<a name="L134"></a><tt class="py-lineno">134</tt>  <tt class="py-line">                                                                       <tt class="py-name">eval_frequency</tt><tt class="py-op">=</tt><tt id="link-48" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-48', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-49" class="py-name"><a title="VisionEgg.FlowControl" class="py-name" href="#" onclick="return [...]
+VisionEgg.FlowControl.NEVER" class="py-name" href="#" onclick="return doclink('link-51', 'NEVER', 'link-44');">NEVER</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L135"></a><tt class="py-lineno">135</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L136"></a><tt class="py-lineno">136</tt>  <tt class="py-line">            <tt class="py-name">initial_controller</tt> <tt class="py-op">=</tt> <tt class="py-name">dict</tt><tt class="py-op">[</tt><tt class="py-name">key</tt><tt class="py-op">]</tt> </tt>
+<a name="L137"></a><tt class="py-lineno">137</tt>  <tt class="py-line">        <tt id="link-52" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-52', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-53" class="py-name"><a title="VisionEgg.FlowControl" class="py-name" href="#" onclick="return doclink('link-53', 'FlowControl', 'link-4');">FlowControl</a></tt><tt class="py-op">.</tt><tt id="link-54" class="py-name"><a [...]
+VisionEgg.Configuration.Config.__init__
+VisionEgg.Core.FixationSpot.__init__
+VisionEgg.Core.FrameTimer.__init__
+VisionEgg.Core.ModelView.__init__
+VisionEgg.Core.OrthographicProjection.__init__
+VisionEgg.Core.OrthographicProjectionNoZClip.__init__
+VisionEgg.Core.PerspectiveProjection.__init__
+VisionEgg.Core.Projection.__init__
+VisionEgg.Core.ProjectionBaseClass.__init__
+VisionEgg.Core.Screen.__init__
+VisionEgg.Core.SimplePerspectiveProjection.__init__
+VisionEgg.Core.Stimulus.__init__
+VisionEgg.Core.Viewport.__init__
+VisionEgg.Daq.Channel.__init__
+VisionEgg.Daq.DaqMode.__init__
+VisionEgg.Daq.Device.__init__
+VisionEgg.Daq.Functionality.__init__
+VisionEgg.Daq.SignalType.__init__
+VisionEgg.DaqKeyboard.KeyboardTriggerInController.__init__
+VisionEgg.DaqLPT.LPTChannel.__init__
+VisionEgg.DaqLPT.LPTDevice.__init__
+VisionEgg.DaqLPT.LPTTriggerInController.__init__
+VisionEgg.DaqLPT.LPTTriggerOutController.__init__
+VisionEgg.Deprecated.Message.__init__
+VisionEgg.Dots.DotArea2D.__init__
+VisionEgg.FlowControl.ConstantController.__init__
+VisionEgg.FlowControl.Controller.__init__
+VisionEgg.FlowControl.EncapsulatedController.__init__
+VisionEgg.FlowControl.EvalStringController.__init__
+VisionEgg.FlowControl.ExecStringController.__init__
+VisionEgg.FlowControl.FunctionController.__init__
+VisionEgg.FlowControl.Presentation.__init__
+VisionEgg.GLTrace.Wrapper.__init__
+VisionEgg.GUI.AppWindow.__init__
+VisionEgg.GUI.GetKeypressDialog.__init__
+VisionEgg.GUI.GraphicsConfigurationWindow.__init__
+VisionEgg.GUI.InfoFrame.__init__
+VisionEgg.GUI.ProgressBar.__init__
+VisionEgg.GUI.ToplevelDialog.__init__
+VisionEgg.Gratings.SinGrating2D.__init__
+VisionEgg.Gratings.SinGrating3D.__init__
+VisionEgg.MoreStimuli.Arrow.__init__
+VisionEgg.MoreStimuli.FilledCircle.__init__
+VisionEgg.MoreStimuli.Rectangle3D.__init__
+VisionEgg.MoreStimuli.Target2D.__init__
+VisionEgg.ParameterTypes.AnyOf.__init__
+VisionEgg.ParameterTypes.Instance.__init__
+VisionEgg.ParameterTypes.Sequence.__init__
+VisionEgg.ParameterTypes.SubClass.__init__
+VisionEgg.PyroApps.AST_ext.AST_Visitor.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalMetaParameters.__init__
+VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.__init__
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.__init__
+VisionEgg.PyroApps.DropinGUI.DropinMetaParameters.__init__
+VisionEgg.PyroApps.DropinServer.DropinMetaController.__init__
+VisionEgg.PyroApps.EPhysGUI.AppWindow.__init__
+VisionEgg.PyroApps.EPhysGUI.BarButton.__init__
+VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase.__init__
+VisionEgg.PyroApps.EPhysGUI.GammaFrame.__init__
+VisionEgg.PyroApps.EPhysGUI.ImageSequenceLauncher.__init__
+VisionEgg.PyroApps.EPhysGUI.Loop.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopContainedObject.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopParamDialog.__init__
+VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.__init__
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.__init__
+VisionEgg.PyroApps.EPhysServer.EPhysServer.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingMetaParameters.__init__
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.GridGUI.GridControlFrame.__init__
+VisionEgg.PyroApps.GridGUI.GridMetaParameters.__init__
+VisionEgg.PyroApps.GridServer.GridMetaController.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetMetaParameters.__init__
+VisionEgg.PyroApps.MouseTargetServer.MousePositionController.__init__
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetOrientationController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetPositionController.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.CallbackEntry.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionParameters.__init__
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingMetaParameters.__init__
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumMetaParameters.__init__
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.__init__
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.__init__
+VisionEgg.PyroApps.TargetGUI.TargetMetaParameters.__init__
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.__init__
+VisionEgg.PyroClient.PyroClient.__init__
+VisionEgg.PyroHelpers.PyroConstantController.__init__
+VisionEgg.PyroHelpers.PyroEncapsulatedController.__init__
+VisionEgg.PyroHelpers.PyroEvalStringController.__init__
+VisionEgg.PyroHelpers.PyroExecStringController.__init__
+VisionEgg.PyroHelpers.PyroListenController.__init__
+VisionEgg.PyroHelpers.PyroLocalDictController.__init__
+VisionEgg.PyroHelpers.PyroServer.__init__
+VisionEgg.QuickTime.MovieTexture.__init__
+VisionEgg.ResponseControl.KeyboardResponseController.__init__
+VisionEgg.ResponseControl.ResponseController.__init__
+VisionEgg.SphereMap.AzElGrid.__init__
+VisionEgg.SphereMap.SphereGrating.__init__
+VisionEgg.SphereMap.SphereMap.__init__
+VisionEgg.SphereMap.SphereWindow.__init__
+VisionEgg.TCPController.SocketListenController.__init__
+VisionEgg.TCPController.TCPController.__init__
+VisionEgg.TCPController.TCPServer.__init__
+VisionEgg.Text.BitmapText.__init__
+VisionEgg.Text.GlutTextBase.__init__
+VisionEgg.Text.StrokeText.__init__
+VisionEgg.Text.Text.__init__
+VisionEgg.Textures.FixationCross.__init__
+VisionEgg.Textures.Mask2D.__init__
+VisionEgg.Textures.SpinningDrum.__init__
+VisionEgg.Textures.Texture.__init__
+VisionEgg.Textures.TextureFromFile.__init__
+VisionEgg.Textures.TextureObject.__init__
+VisionEgg.Textures.TextureStimulusBaseClass.__init__
+VisionEgg.ThreeDeeMath.TransformMatrix.__init__
+VisionEgg.WrappedText.WrappedText.__init__
+VisionEgg.qtmovie.Movie.__init__
+VisionEgg.qtmovie.Rect.__init__" class="py-name" href="#" onclick="return doclink('link-55', '__init__', 'link-21');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt><tt class="py-name">initial_controller</tt><tt class="py-op">)</tt> </tt>
+<a name="L138"></a><tt class="py-lineno">138</tt>  <tt class="py-line">        <tt class="py-name">Pyro</tt><tt class="py-op">.</tt><tt class="py-name">core</tt><tt class="py-op">.</tt><tt class="py-name">ObjBase</tt><tt class="py-op">.</tt><tt id="link-56" class="py-name"><a title="VisionEgg.ClassWithParameters.__init__
+VisionEgg.Configuration.Config.__init__
+VisionEgg.Core.FixationSpot.__init__
+VisionEgg.Core.FrameTimer.__init__
+VisionEgg.Core.ModelView.__init__
+VisionEgg.Core.OrthographicProjection.__init__
+VisionEgg.Core.OrthographicProjectionNoZClip.__init__
+VisionEgg.Core.PerspectiveProjection.__init__
+VisionEgg.Core.Projection.__init__
+VisionEgg.Core.ProjectionBaseClass.__init__
+VisionEgg.Core.Screen.__init__
+VisionEgg.Core.SimplePerspectiveProjection.__init__
+VisionEgg.Core.Stimulus.__init__
+VisionEgg.Core.Viewport.__init__
+VisionEgg.Daq.Channel.__init__
+VisionEgg.Daq.DaqMode.__init__
+VisionEgg.Daq.Device.__init__
+VisionEgg.Daq.Functionality.__init__
+VisionEgg.Daq.SignalType.__init__
+VisionEgg.DaqKeyboard.KeyboardTriggerInController.__init__
+VisionEgg.DaqLPT.LPTChannel.__init__
+VisionEgg.DaqLPT.LPTDevice.__init__
+VisionEgg.DaqLPT.LPTTriggerInController.__init__
+VisionEgg.DaqLPT.LPTTriggerOutController.__init__
+VisionEgg.Deprecated.Message.__init__
+VisionEgg.Dots.DotArea2D.__init__
+VisionEgg.FlowControl.ConstantController.__init__
+VisionEgg.FlowControl.Controller.__init__
+VisionEgg.FlowControl.EncapsulatedController.__init__
+VisionEgg.FlowControl.EvalStringController.__init__
+VisionEgg.FlowControl.ExecStringController.__init__
+VisionEgg.FlowControl.FunctionController.__init__
+VisionEgg.FlowControl.Presentation.__init__
+VisionEgg.GLTrace.Wrapper.__init__
+VisionEgg.GUI.AppWindow.__init__
+VisionEgg.GUI.GetKeypressDialog.__init__
+VisionEgg.GUI.GraphicsConfigurationWindow.__init__
+VisionEgg.GUI.InfoFrame.__init__
+VisionEgg.GUI.ProgressBar.__init__
+VisionEgg.GUI.ToplevelDialog.__init__
+VisionEgg.Gratings.SinGrating2D.__init__
+VisionEgg.Gratings.SinGrating3D.__init__
+VisionEgg.MoreStimuli.Arrow.__init__
+VisionEgg.MoreStimuli.FilledCircle.__init__
+VisionEgg.MoreStimuli.Rectangle3D.__init__
+VisionEgg.MoreStimuli.Target2D.__init__
+VisionEgg.ParameterTypes.AnyOf.__init__
+VisionEgg.ParameterTypes.Instance.__init__
+VisionEgg.ParameterTypes.Sequence.__init__
+VisionEgg.ParameterTypes.SubClass.__init__
+VisionEgg.PyroApps.AST_ext.AST_Visitor.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalMetaParameters.__init__
+VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.__init__
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.__init__
+VisionEgg.PyroApps.DropinGUI.DropinMetaParameters.__init__
+VisionEgg.PyroApps.DropinServer.DropinMetaController.__init__
+VisionEgg.PyroApps.EPhysGUI.AppWindow.__init__
+VisionEgg.PyroApps.EPhysGUI.BarButton.__init__
+VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase.__init__
+VisionEgg.PyroApps.EPhysGUI.GammaFrame.__init__
+VisionEgg.PyroApps.EPhysGUI.ImageSequenceLauncher.__init__
+VisionEgg.PyroApps.EPhysGUI.Loop.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopContainedObject.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopParamDialog.__init__
+VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.__init__
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.__init__
+VisionEgg.PyroApps.EPhysServer.EPhysServer.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingMetaParameters.__init__
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.GridGUI.GridControlFrame.__init__
+VisionEgg.PyroApps.GridGUI.GridMetaParameters.__init__
+VisionEgg.PyroApps.GridServer.GridMetaController.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetMetaParameters.__init__
+VisionEgg.PyroApps.MouseTargetServer.MousePositionController.__init__
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetOrientationController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetPositionController.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.CallbackEntry.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionParameters.__init__
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingMetaParameters.__init__
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumMetaParameters.__init__
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.__init__
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.__init__
+VisionEgg.PyroApps.TargetGUI.TargetMetaParameters.__init__
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.__init__
+VisionEgg.PyroClient.PyroClient.__init__
+VisionEgg.PyroHelpers.PyroConstantController.__init__
+VisionEgg.PyroHelpers.PyroEncapsulatedController.__init__
+VisionEgg.PyroHelpers.PyroEvalStringController.__init__
+VisionEgg.PyroHelpers.PyroExecStringController.__init__
+VisionEgg.PyroHelpers.PyroListenController.__init__
+VisionEgg.PyroHelpers.PyroLocalDictController.__init__
+VisionEgg.PyroHelpers.PyroServer.__init__
+VisionEgg.QuickTime.MovieTexture.__init__
+VisionEgg.ResponseControl.KeyboardResponseController.__init__
+VisionEgg.ResponseControl.ResponseController.__init__
+VisionEgg.SphereMap.AzElGrid.__init__
+VisionEgg.SphereMap.SphereGrating.__init__
+VisionEgg.SphereMap.SphereMap.__init__
+VisionEgg.SphereMap.SphereWindow.__init__
+VisionEgg.TCPController.SocketListenController.__init__
+VisionEgg.TCPController.TCPController.__init__
+VisionEgg.TCPController.TCPServer.__init__
+VisionEgg.Text.BitmapText.__init__
+VisionEgg.Text.GlutTextBase.__init__
+VisionEgg.Text.StrokeText.__init__
+VisionEgg.Text.Text.__init__
+VisionEgg.Textures.FixationCross.__init__
+VisionEgg.Textures.Mask2D.__init__
+VisionEgg.Textures.SpinningDrum.__init__
+VisionEgg.Textures.Texture.__init__
+VisionEgg.Textures.TextureFromFile.__init__
+VisionEgg.Textures.TextureObject.__init__
+VisionEgg.Textures.TextureStimulusBaseClass.__init__
+VisionEgg.ThreeDeeMath.TransformMatrix.__init__
+VisionEgg.WrappedText.WrappedText.__init__
+VisionEgg.qtmovie.Movie.__init__
+VisionEgg.qtmovie.Rect.__init__" class="py-name" href="#" onclick="return doclink('link-56', '__init__', 'link-21');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
+</div><a name="PyroLocalDictController.use_controller"></a><div id="PyroLocalDictController.use_controller-def"><a name="L139"></a><tt class="py-lineno">139</tt> <a class="py-toggle" href="#" id="PyroLocalDictController.use_controller-toggle" onclick="return toggle('PyroLocalDictController.use_controller');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroHelpers.PyroLocalDictController-class.html#use_controller">use_controller</a>< [...]
+</div><div id="PyroLocalDictController.use_controller-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="PyroLocalDictController.use_controller-expanded"><a name="L140"></a><tt class="py-lineno">140</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-57" class="py-name" targets="Method VisionEgg.FlowControl.EncapsulatedController.set_new_controller()=VisionEgg.FlowControl.EncapsulatedController-class.html#set_new_co [...]
+</div><a name="PyroLocalDictController.add_controller"></a><div id="PyroLocalDictController.add_controller-def"><a name="L141"></a><tt class="py-lineno">141</tt> <a class="py-toggle" href="#" id="PyroLocalDictController.add_controller-toggle" onclick="return toggle('PyroLocalDictController.add_controller');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroHelpers.PyroLocalDictController-class.html#add_controller">add_controller</a>< [...]
+</div><div id="PyroLocalDictController.add_controller-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="PyroLocalDictController.add_controller-expanded"><a name="L142"></a><tt class="py-lineno">142</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">dict</tt><tt class="py-op">[</tt><tt class="py-name">key</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">new_controller</tt> </tt>
+</div></div><a name="L143"></a><tt class="py-lineno">143</tt>  <tt class="py-line"> </tt>
+<a name="PyroListenController"></a><div id="PyroListenController-def"><a name="L144"></a><tt class="py-lineno">144</tt> <a class="py-toggle" href="#" id="PyroListenController-toggle" onclick="return toggle('PyroListenController');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.PyroHelpers.PyroListenController-class.html">PyroListenController</a><tt class="py-op">(</tt><tt class="py-base-class">VisionEgg</tt><tt class="py-op">.</tt><tt c [...]
+</div><div id="PyroListenController-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="PyroListenController-expanded"><a name="L145"></a><tt class="py-lineno">145</tt>  <tt class="py-line">    <tt class="py-docstring">"""Handle connection from remote machine, control PyroControllers.</tt> </tt>
+<a name="L146"></a><tt class="py-lineno">146</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L147"></a><tt class="py-lineno">147</tt>  <tt class="py-line"><tt class="py-docstring">    This meta controller handles a Pyro daemon, which checks the TCP</tt> </tt>
+<a name="L148"></a><tt class="py-lineno">148</tt>  <tt class="py-line"><tt class="py-docstring">    socket for new input and acts accordingly.</tt> </tt>
+<a name="L149"></a><tt class="py-lineno">149</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L150"></a><tt class="py-lineno">150</tt>  <tt class="py-line"><tt class="py-docstring">    This class is analagous to VisionEgg.TCPController.SocketListenController.</tt> </tt>
+<a name="L151"></a><tt class="py-lineno">151</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L152"></a><tt class="py-lineno">152</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L153"></a><tt class="py-lineno">153</tt>  <tt class="py-line"> </tt>
+<a name="PyroListenController.__init__"></a><div id="PyroListenController.__init__-def"><a name="L154"></a><tt class="py-lineno">154</tt> <a class="py-toggle" href="#" id="PyroListenController.__init__-toggle" onclick="return toggle('PyroListenController.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroHelpers.PyroListenController-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt  [...]
+</div><div id="PyroListenController.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="PyroListenController.__init__-expanded"><a name="L155"></a><tt class="py-lineno">155</tt>  <tt class="py-line">        <tt class="py-docstring">"""Called by PyroServer. Creates a PyroListenerController instance."""</tt> </tt>
+<a name="L156"></a><tt class="py-lineno">156</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">server</tt><tt class="py-op">,</tt><tt id="link-58" class="py-name" targets="Class VisionEgg.PyroHelpers.PyroServer=VisionEgg.PyroHelpers.PyroServer-class.html"><a title="VisionEgg.PyroHelpers.PyroServer" class="py-name" href="#" onclick="return doclink('link-58', 'PyroS [...]
+<a name="L157"></a><tt class="py-lineno">157</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">"Must specify a Pyro Server."</tt><tt class="py-op">)</tt>  </tt>
+<a name="L158"></a><tt class="py-lineno">158</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-string">'eval_frequency'</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">kw</tt><tt class="py-op">.</tt><tt class="py-name">keys</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L159"></a><tt class="py-lineno">159</tt>  <tt class="py-line">            <tt class="py-name">kw</tt><tt class="py-op">[</tt><tt class="py-string">'eval_frequency'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt id="link-59" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-59', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-60" class="py-name"><a title="VisionEgg.FlowControl" class="py-name" hr [...]
+VisionEgg.FlowControl.EVERY_FRAME" class="py-name" href="#" onclick="return doclink('link-62', 'EVERY_FRAME', 'link-62');">EVERY_FRAME</a></tt> </tt>
+<a name="L160"></a><tt class="py-lineno">160</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-string">'return_type'</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">kw</tt><tt class="py-op">.</tt><tt class="py-name">keys</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L161"></a><tt class="py-lineno">161</tt>  <tt class="py-line">            <tt class="py-name">kw</tt><tt class="py-op">[</tt><tt class="py-string">'return_type'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-63" class="py-name" targets="Function VisionEgg.ParameterTypes.get_type()=VisionEgg.ParameterTypes-module.html#get_type,Method VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.get_typ [...]
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.get_type
+VisionEgg.get_type" class="py-name" href="#" onclick="return doclink('link-63', 'get_type', 'link-63');">get_type</a></tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">)</tt> </tt>
+<a name="L162"></a><tt class="py-lineno">162</tt>  <tt class="py-line">        <tt id="link-64" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-64', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-65" class="py-name"><a title="VisionEgg.FlowControl" class="py-name" href="#" onclick="return doclink('link-65', 'FlowControl', 'link-4');">FlowControl</a></tt><tt class="py-op">.</tt><tt id="link-66" class="py-name"><a [...]
+VisionEgg.Configuration.Config.__init__
+VisionEgg.Core.FixationSpot.__init__
+VisionEgg.Core.FrameTimer.__init__
+VisionEgg.Core.ModelView.__init__
+VisionEgg.Core.OrthographicProjection.__init__
+VisionEgg.Core.OrthographicProjectionNoZClip.__init__
+VisionEgg.Core.PerspectiveProjection.__init__
+VisionEgg.Core.Projection.__init__
+VisionEgg.Core.ProjectionBaseClass.__init__
+VisionEgg.Core.Screen.__init__
+VisionEgg.Core.SimplePerspectiveProjection.__init__
+VisionEgg.Core.Stimulus.__init__
+VisionEgg.Core.Viewport.__init__
+VisionEgg.Daq.Channel.__init__
+VisionEgg.Daq.DaqMode.__init__
+VisionEgg.Daq.Device.__init__
+VisionEgg.Daq.Functionality.__init__
+VisionEgg.Daq.SignalType.__init__
+VisionEgg.DaqKeyboard.KeyboardTriggerInController.__init__
+VisionEgg.DaqLPT.LPTChannel.__init__
+VisionEgg.DaqLPT.LPTDevice.__init__
+VisionEgg.DaqLPT.LPTTriggerInController.__init__
+VisionEgg.DaqLPT.LPTTriggerOutController.__init__
+VisionEgg.Deprecated.Message.__init__
+VisionEgg.Dots.DotArea2D.__init__
+VisionEgg.FlowControl.ConstantController.__init__
+VisionEgg.FlowControl.Controller.__init__
+VisionEgg.FlowControl.EncapsulatedController.__init__
+VisionEgg.FlowControl.EvalStringController.__init__
+VisionEgg.FlowControl.ExecStringController.__init__
+VisionEgg.FlowControl.FunctionController.__init__
+VisionEgg.FlowControl.Presentation.__init__
+VisionEgg.GLTrace.Wrapper.__init__
+VisionEgg.GUI.AppWindow.__init__
+VisionEgg.GUI.GetKeypressDialog.__init__
+VisionEgg.GUI.GraphicsConfigurationWindow.__init__
+VisionEgg.GUI.InfoFrame.__init__
+VisionEgg.GUI.ProgressBar.__init__
+VisionEgg.GUI.ToplevelDialog.__init__
+VisionEgg.Gratings.SinGrating2D.__init__
+VisionEgg.Gratings.SinGrating3D.__init__
+VisionEgg.MoreStimuli.Arrow.__init__
+VisionEgg.MoreStimuli.FilledCircle.__init__
+VisionEgg.MoreStimuli.Rectangle3D.__init__
+VisionEgg.MoreStimuli.Target2D.__init__
+VisionEgg.ParameterTypes.AnyOf.__init__
+VisionEgg.ParameterTypes.Instance.__init__
+VisionEgg.ParameterTypes.Sequence.__init__
+VisionEgg.ParameterTypes.SubClass.__init__
+VisionEgg.PyroApps.AST_ext.AST_Visitor.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalMetaParameters.__init__
+VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.__init__
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.__init__
+VisionEgg.PyroApps.DropinGUI.DropinMetaParameters.__init__
+VisionEgg.PyroApps.DropinServer.DropinMetaController.__init__
+VisionEgg.PyroApps.EPhysGUI.AppWindow.__init__
+VisionEgg.PyroApps.EPhysGUI.BarButton.__init__
+VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase.__init__
+VisionEgg.PyroApps.EPhysGUI.GammaFrame.__init__
+VisionEgg.PyroApps.EPhysGUI.ImageSequenceLauncher.__init__
+VisionEgg.PyroApps.EPhysGUI.Loop.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopContainedObject.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopParamDialog.__init__
+VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.__init__
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.__init__
+VisionEgg.PyroApps.EPhysServer.EPhysServer.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingMetaParameters.__init__
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.GridGUI.GridControlFrame.__init__
+VisionEgg.PyroApps.GridGUI.GridMetaParameters.__init__
+VisionEgg.PyroApps.GridServer.GridMetaController.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetMetaParameters.__init__
+VisionEgg.PyroApps.MouseTargetServer.MousePositionController.__init__
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetOrientationController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetPositionController.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.CallbackEntry.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionParameters.__init__
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingMetaParameters.__init__
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumMetaParameters.__init__
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.__init__
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.__init__
+VisionEgg.PyroApps.TargetGUI.TargetMetaParameters.__init__
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.__init__
+VisionEgg.PyroClient.PyroClient.__init__
+VisionEgg.PyroHelpers.PyroConstantController.__init__
+VisionEgg.PyroHelpers.PyroEncapsulatedController.__init__
+VisionEgg.PyroHelpers.PyroEvalStringController.__init__
+VisionEgg.PyroHelpers.PyroExecStringController.__init__
+VisionEgg.PyroHelpers.PyroListenController.__init__
+VisionEgg.PyroHelpers.PyroLocalDictController.__init__
+VisionEgg.PyroHelpers.PyroServer.__init__
+VisionEgg.QuickTime.MovieTexture.__init__
+VisionEgg.ResponseControl.KeyboardResponseController.__init__
+VisionEgg.ResponseControl.ResponseController.__init__
+VisionEgg.SphereMap.AzElGrid.__init__
+VisionEgg.SphereMap.SphereGrating.__init__
+VisionEgg.SphereMap.SphereMap.__init__
+VisionEgg.SphereMap.SphereWindow.__init__
+VisionEgg.TCPController.SocketListenController.__init__
+VisionEgg.TCPController.TCPController.__init__
+VisionEgg.TCPController.TCPServer.__init__
+VisionEgg.Text.BitmapText.__init__
+VisionEgg.Text.GlutTextBase.__init__
+VisionEgg.Text.StrokeText.__init__
+VisionEgg.Text.Text.__init__
+VisionEgg.Textures.FixationCross.__init__
+VisionEgg.Textures.Mask2D.__init__
+VisionEgg.Textures.SpinningDrum.__init__
+VisionEgg.Textures.Texture.__init__
+VisionEgg.Textures.TextureFromFile.__init__
+VisionEgg.Textures.TextureObject.__init__
+VisionEgg.Textures.TextureStimulusBaseClass.__init__
+VisionEgg.ThreeDeeMath.TransformMatrix.__init__
+VisionEgg.WrappedText.WrappedText.__init__
+VisionEgg.qtmovie.Movie.__init__
+VisionEgg.qtmovie.Rect.__init__" class="py-name" href="#" onclick="return doclink('link-67', '__init__', 'link-21');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt><tt class="py-op">**</tt><tt class="py-name">kw</tt><tt class="py-op">)</tt> </tt>
+<a name="L163"></a><tt class="py-lineno">163</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">server</tt><tt class="py-op">=</tt><tt class="py-name">server</tt> </tt>
+</div><a name="L164"></a><tt class="py-lineno">164</tt>  <tt class="py-line"> </tt>
+<a name="PyroListenController.during_go_eval"></a><div id="PyroListenController.during_go_eval-def"><a name="L165"></a><tt class="py-lineno">165</tt> <a class="py-toggle" href="#" id="PyroListenController.during_go_eval-toggle" onclick="return toggle('PyroListenController.during_go_eval');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroHelpers.PyroListenController-class.html#during_go_eval">during_go_eval</a><tt class="py-op">(</t [...]
+</div><div id="PyroListenController.during_go_eval-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="PyroListenController.during_go_eval-expanded"><a name="L166"></a><tt class="py-lineno">166</tt>  <tt class="py-line">        <tt class="py-comment"># setting timeout = 0 means return ASAP</tt> </tt>
+<a name="L167"></a><tt class="py-lineno">167</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">server</tt><tt class="py-op">.</tt><tt class="py-name">daemon</tt><tt class="py-op">.</tt><tt id="link-68" class="py-name"><a title="VisionEgg.PyroHelpers.PyroServer.handleRequests" class="py-name" href="#" onclick="return doclink('link-68', 'handleRequests', 'link-17');">handleRequests</a></tt><tt class="py-op [...]
+</div><a name="L168"></a><tt class="py-lineno">168</tt>  <tt class="py-line"> </tt>
+<a name="PyroListenController.between_go_eval"></a><div id="PyroListenController.between_go_eval-def"><a name="L169"></a><tt class="py-lineno">169</tt> <a class="py-toggle" href="#" id="PyroListenController.between_go_eval-toggle" onclick="return toggle('PyroListenController.between_go_eval');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.PyroHelpers.PyroListenController-class.html#between_go_eval">between_go_eval</a><tt class="py-op [...]
+</div><div id="PyroListenController.between_go_eval-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="PyroListenController.between_go_eval-expanded"><a name="L170"></a><tt class="py-lineno">170</tt>  <tt class="py-line">        <tt class="py-comment"># setting timeout = 0 means return ASAP</tt> </tt>
+<a name="L171"></a><tt class="py-lineno">171</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">server</tt><tt class="py-op">.</tt><tt class="py-name">daemon</tt><tt class="py-op">.</tt><tt id="link-69" class="py-name"><a title="VisionEgg.PyroHelpers.PyroServer.handleRequests" class="py-name" href="#" onclick="return doclink('link-69', 'handleRequests', 'link-17');">handleRequests</a></tt><tt class="py-op [...]
+</div></div><a name="L172"></a><tt class="py-lineno">172</tt>  <tt class="py-line"> </tt><script type="text/javascript">
+<!--
+expandto(location.href);
+// -->
+</script>
+</pre>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:49 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.PyroHelpers.PyroConstantController-class.html b/doc/reference/html/VisionEgg.PyroHelpers.PyroConstantController-class.html
new file mode 100644
index 0000000..e488661
--- /dev/null
+++ b/doc/reference/html/VisionEgg.PyroHelpers.PyroConstantController-class.html
@@ -0,0 +1,281 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.PyroHelpers.PyroConstantController</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.PyroHelpers-module.html">Module PyroHelpers</a> ::
+        Class PyroConstantController
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.PyroHelpers.PyroConstantController-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class PyroConstantController</h1><span class="codelink"><a href="VisionEgg.PyroHelpers-pysrc.html#PyroConstantController">source code</a></span><br /><br />
+<pre class="base-tree">
+                object --+        
+                         |        
+    <a href="VisionEgg.FlowControl.Controller-class.html">FlowControl.Controller</a> --+    
+                             |    
+<a href="VisionEgg.FlowControl.ConstantController-class.html">FlowControl.ConstantController</a> --+
+                                 |
+             Pyro.core.ObjBase --+
+                                 |
+                                <strong class="uidshort">PyroConstantController</strong>
+</pre>
+
+<hr />
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.PyroHelpers.PyroConstantController-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">**kw</span>)</span><br />
+      Create instance of Controller.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroHelpers-pysrc.html#PyroConstantController.__init__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.FlowControl.ConstantController-class.html">FlowControl.ConstantController</a></code></b>:
+      <code><a href="VisionEgg.FlowControl.ConstantController-class.html#between_go_eval">between_go_eval</a></code>,
+      <code><a href="VisionEgg.FlowControl.ConstantController-class.html#during_go_eval">during_go_eval</a></code>,
+      <code><a href="VisionEgg.FlowControl.ConstantController-class.html#get_between_go_value">get_between_go_value</a></code>,
+      <code><a href="VisionEgg.FlowControl.ConstantController-class.html#get_during_go_value">get_during_go_value</a></code>,
+      <code><a href="VisionEgg.FlowControl.ConstantController-class.html#set_between_go_value">set_between_go_value</a></code>,
+      <code><a href="VisionEgg.FlowControl.ConstantController-class.html#set_during_go_value">set_during_go_value</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.FlowControl.Controller-class.html">FlowControl.Controller</a></code></b>:
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#evaluate_now">evaluate_now</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#returns_type">returns_type</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#set_eval_frequency">set_eval_frequency</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__delattr__</code>,
+      <code>__getattribute__</code>,
+      <code>__hash__</code>,
+      <code>__new__</code>,
+      <code>__reduce__</code>,
+      <code>__reduce_ex__</code>,
+      <code>__repr__</code>,
+      <code>__setattr__</code>,
+      <code>__str__</code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>Pyro.core.ObjBase</code></b>:
+      <code>GUID</code>,
+      <code>Pyro_dyncall</code>,
+      <code>delegateTo</code>,
+      <code>getAttrProxy</code>,
+      <code>getDaemon</code>,
+      <code>getLocalStorage</code>,
+      <code>getProxy</code>,
+      <code>remote_retrieve_code</code>,
+      <code>remote_supply_code</code>,
+      <code>setCodeValidator</code>,
+      <code>setGUID</code>,
+      <code>setPyroDaemon</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Class Variables</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.FlowControl.Controller-class.html">FlowControl.Controller</a></code></b>:
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#EVERY_FRAME">EVERY_FRAME</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#FRAMES_ABSOLUTE">FRAMES_ABSOLUTE</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#FRAMES_SINCE_GO">FRAMES_SINCE_GO</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#NEVER">NEVER</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#NOT_BETWEEN_GO">NOT_BETWEEN_GO</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#NOT_DURING_GO">NOT_DURING_GO</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#ONCE">ONCE</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#TIME_INDEPENDENT">TIME_INDEPENDENT</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#TIME_SEC_ABSOLUTE">TIME_SEC_ABSOLUTE</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#TIME_SEC_SINCE_GO">TIME_SEC_SINCE_GO</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#TRANSITIONS">TRANSITIONS</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#flag_dictionary">flag_dictionary</a></code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Properties</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__class__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Method Details</span></td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">**kw</span>)</span>
+    <br /><em class="fname">(Constructor)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.PyroHelpers-pysrc.html#PyroConstantController.__init__">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Create instance of Controller.
+
+Arguments:
+
+eval_frequency -- Int, bitwise "or" of flags
+temporal_variables -- Int, bitwise "or" of flags
+return_type -- Set to type() of the parameter under control
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.FlowControl.ConstantController-class.html#__init__">FlowControl.ConstantController.__init__</a>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:47 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.PyroHelpers.PyroEncapsulatedController-class.html b/doc/reference/html/VisionEgg.PyroHelpers.PyroEncapsulatedController-class.html
new file mode 100644
index 0000000..368877f
--- /dev/null
+++ b/doc/reference/html/VisionEgg.PyroHelpers.PyroEncapsulatedController-class.html
@@ -0,0 +1,287 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.PyroHelpers.PyroEncapsulatedController</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.PyroHelpers-module.html">Module PyroHelpers</a> ::
+        Class PyroEncapsulatedController
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.PyroHelpers.PyroEncapsulatedController-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class PyroEncapsulatedController</h1><span class="codelink"><a href="VisionEgg.PyroHelpers-pysrc.html#PyroEncapsulatedController">source code</a></span><br /><br />
+<pre class="base-tree">
+                    object --+        
+                             |        
+        <a href="VisionEgg.FlowControl.Controller-class.html">FlowControl.Controller</a> --+    
+                                 |    
+<a href="VisionEgg.FlowControl.EncapsulatedController-class.html">FlowControl.EncapsulatedController</a> --+
+                                     |
+                 Pyro.core.ObjBase --+
+                                     |
+                                    <strong class="uidshort">PyroEncapsulatedController</strong>
+</pre>
+
+<hr />
+<pre class="literalblock">
+Create the instance of Controller on client, and send it to server.
+
+This class is analagous to VisionEgg.TCPController.TCPController.
+
+</pre><br /><br />
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.PyroHelpers.PyroEncapsulatedController-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">initial_controller</span>=<span class="summary-sig-default">None</span>,
+        <span class="summary-sig-arg">**kw</span>)</span><br />
+      Create instance of Controller.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroHelpers-pysrc.html#PyroEncapsulatedController.__init__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.FlowControl.EncapsulatedController-class.html">FlowControl.EncapsulatedController</a></code></b>:
+      <code><a href="VisionEgg.FlowControl.EncapsulatedController-class.html#between_go_eval">between_go_eval</a></code>,
+      <code><a href="VisionEgg.FlowControl.EncapsulatedController-class.html#during_go_eval">during_go_eval</a></code>,
+      <code><a href="VisionEgg.FlowControl.EncapsulatedController-class.html#set_new_controller">set_new_controller</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.FlowControl.Controller-class.html">FlowControl.Controller</a></code></b>:
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#evaluate_now">evaluate_now</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#returns_type">returns_type</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#set_eval_frequency">set_eval_frequency</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__delattr__</code>,
+      <code>__getattribute__</code>,
+      <code>__hash__</code>,
+      <code>__new__</code>,
+      <code>__reduce__</code>,
+      <code>__reduce_ex__</code>,
+      <code>__repr__</code>,
+      <code>__setattr__</code>,
+      <code>__str__</code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>Pyro.core.ObjBase</code></b>:
+      <code>GUID</code>,
+      <code>Pyro_dyncall</code>,
+      <code>delegateTo</code>,
+      <code>getAttrProxy</code>,
+      <code>getDaemon</code>,
+      <code>getLocalStorage</code>,
+      <code>getProxy</code>,
+      <code>remote_retrieve_code</code>,
+      <code>remote_supply_code</code>,
+      <code>setCodeValidator</code>,
+      <code>setGUID</code>,
+      <code>setPyroDaemon</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Class Variables</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.FlowControl.Controller-class.html">FlowControl.Controller</a></code></b>:
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#EVERY_FRAME">EVERY_FRAME</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#FRAMES_ABSOLUTE">FRAMES_ABSOLUTE</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#FRAMES_SINCE_GO">FRAMES_SINCE_GO</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#NEVER">NEVER</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#NOT_BETWEEN_GO">NOT_BETWEEN_GO</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#NOT_DURING_GO">NOT_DURING_GO</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#ONCE">ONCE</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#TIME_INDEPENDENT">TIME_INDEPENDENT</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#TIME_SEC_ABSOLUTE">TIME_SEC_ABSOLUTE</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#TIME_SEC_SINCE_GO">TIME_SEC_SINCE_GO</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#TRANSITIONS">TRANSITIONS</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#flag_dictionary">flag_dictionary</a></code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Properties</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__class__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Method Details</span></td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">initial_controller</span>=<span class="sig-default">None</span>,
+        <span class="sig-arg">**kw</span>)</span>
+    <br /><em class="fname">(Constructor)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.PyroHelpers-pysrc.html#PyroEncapsulatedController.__init__">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Create instance of Controller.
+
+Arguments:
+
+eval_frequency -- Int, bitwise "or" of flags
+temporal_variables -- Int, bitwise "or" of flags
+return_type -- Set to type() of the parameter under control
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.FlowControl.EncapsulatedController-class.html#__init__">FlowControl.EncapsulatedController.__init__</a>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:47 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.PyroHelpers.PyroEvalStringController-class.html b/doc/reference/html/VisionEgg.PyroHelpers.PyroEvalStringController-class.html
new file mode 100644
index 0000000..7d62153
--- /dev/null
+++ b/doc/reference/html/VisionEgg.PyroHelpers.PyroEvalStringController-class.html
@@ -0,0 +1,281 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.PyroHelpers.PyroEvalStringController</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.PyroHelpers-module.html">Module PyroHelpers</a> ::
+        Class PyroEvalStringController
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.PyroHelpers.PyroEvalStringController-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class PyroEvalStringController</h1><span class="codelink"><a href="VisionEgg.PyroHelpers-pysrc.html#PyroEvalStringController">source code</a></span><br /><br />
+<pre class="base-tree">
+                  object --+        
+                           |        
+      <a href="VisionEgg.FlowControl.Controller-class.html">FlowControl.Controller</a> --+    
+                               |    
+<a href="VisionEgg.FlowControl.EvalStringController-class.html">FlowControl.EvalStringController</a> --+
+                                   |
+               Pyro.core.ObjBase --+
+                                   |
+                                  <strong class="uidshort">PyroEvalStringController</strong>
+</pre>
+
+<hr />
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.PyroHelpers.PyroEvalStringController-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">**kw</span>)</span><br />
+      Create instance of Controller.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroHelpers-pysrc.html#PyroEvalStringController.__init__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.FlowControl.EvalStringController-class.html">FlowControl.EvalStringController</a></code></b>:
+      <code><a href="VisionEgg.FlowControl.EvalStringController-class.html#between_go_eval">between_go_eval</a></code>,
+      <code><a href="VisionEgg.FlowControl.EvalStringController-class.html#during_go_eval">during_go_eval</a></code>,
+      <code><a href="VisionEgg.FlowControl.EvalStringController-class.html#get_between_go_eval_string">get_between_go_eval_string</a></code>,
+      <code><a href="VisionEgg.FlowControl.EvalStringController-class.html#get_during_go_eval_string">get_during_go_eval_string</a></code>,
+      <code><a href="VisionEgg.FlowControl.EvalStringController-class.html#set_between_go_eval_string">set_between_go_eval_string</a></code>,
+      <code><a href="VisionEgg.FlowControl.EvalStringController-class.html#set_during_go_eval_string">set_during_go_eval_string</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.FlowControl.Controller-class.html">FlowControl.Controller</a></code></b>:
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#evaluate_now">evaluate_now</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#returns_type">returns_type</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#set_eval_frequency">set_eval_frequency</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__delattr__</code>,
+      <code>__getattribute__</code>,
+      <code>__hash__</code>,
+      <code>__new__</code>,
+      <code>__reduce__</code>,
+      <code>__reduce_ex__</code>,
+      <code>__repr__</code>,
+      <code>__setattr__</code>,
+      <code>__str__</code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>Pyro.core.ObjBase</code></b>:
+      <code>GUID</code>,
+      <code>Pyro_dyncall</code>,
+      <code>delegateTo</code>,
+      <code>getAttrProxy</code>,
+      <code>getDaemon</code>,
+      <code>getLocalStorage</code>,
+      <code>getProxy</code>,
+      <code>remote_retrieve_code</code>,
+      <code>remote_supply_code</code>,
+      <code>setCodeValidator</code>,
+      <code>setGUID</code>,
+      <code>setPyroDaemon</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Class Variables</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.FlowControl.Controller-class.html">FlowControl.Controller</a></code></b>:
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#EVERY_FRAME">EVERY_FRAME</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#FRAMES_ABSOLUTE">FRAMES_ABSOLUTE</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#FRAMES_SINCE_GO">FRAMES_SINCE_GO</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#NEVER">NEVER</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#NOT_BETWEEN_GO">NOT_BETWEEN_GO</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#NOT_DURING_GO">NOT_DURING_GO</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#ONCE">ONCE</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#TIME_INDEPENDENT">TIME_INDEPENDENT</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#TIME_SEC_ABSOLUTE">TIME_SEC_ABSOLUTE</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#TIME_SEC_SINCE_GO">TIME_SEC_SINCE_GO</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#TRANSITIONS">TRANSITIONS</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#flag_dictionary">flag_dictionary</a></code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Properties</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__class__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Method Details</span></td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">**kw</span>)</span>
+    <br /><em class="fname">(Constructor)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.PyroHelpers-pysrc.html#PyroEvalStringController.__init__">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Create instance of Controller.
+
+Arguments:
+
+eval_frequency -- Int, bitwise "or" of flags
+temporal_variables -- Int, bitwise "or" of flags
+return_type -- Set to type() of the parameter under control
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.FlowControl.EvalStringController-class.html#__init__">FlowControl.EvalStringController.__init__</a>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:47 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.PyroHelpers.PyroExecStringController-class.html b/doc/reference/html/VisionEgg.PyroHelpers.PyroExecStringController-class.html
new file mode 100644
index 0000000..82d3bbe
--- /dev/null
+++ b/doc/reference/html/VisionEgg.PyroHelpers.PyroExecStringController-class.html
@@ -0,0 +1,281 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.PyroHelpers.PyroExecStringController</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.PyroHelpers-module.html">Module PyroHelpers</a> ::
+        Class PyroExecStringController
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.PyroHelpers.PyroExecStringController-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class PyroExecStringController</h1><span class="codelink"><a href="VisionEgg.PyroHelpers-pysrc.html#PyroExecStringController">source code</a></span><br /><br />
+<pre class="base-tree">
+                  object --+        
+                           |        
+      <a href="VisionEgg.FlowControl.Controller-class.html">FlowControl.Controller</a> --+    
+                               |    
+<a href="VisionEgg.FlowControl.ExecStringController-class.html">FlowControl.ExecStringController</a> --+
+                                   |
+               Pyro.core.ObjBase --+
+                                   |
+                                  <strong class="uidshort">PyroExecStringController</strong>
+</pre>
+
+<hr />
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.PyroHelpers.PyroExecStringController-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">**kw</span>)</span><br />
+      Create instance of Controller.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroHelpers-pysrc.html#PyroExecStringController.__init__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.FlowControl.ExecStringController-class.html">FlowControl.ExecStringController</a></code></b>:
+      <code><a href="VisionEgg.FlowControl.ExecStringController-class.html#between_go_eval">between_go_eval</a></code>,
+      <code><a href="VisionEgg.FlowControl.ExecStringController-class.html#during_go_eval">during_go_eval</a></code>,
+      <code><a href="VisionEgg.FlowControl.ExecStringController-class.html#get_between_go_exec_string">get_between_go_exec_string</a></code>,
+      <code><a href="VisionEgg.FlowControl.ExecStringController-class.html#get_during_go_exec_string">get_during_go_exec_string</a></code>,
+      <code><a href="VisionEgg.FlowControl.ExecStringController-class.html#set_between_go_exec_string">set_between_go_exec_string</a></code>,
+      <code><a href="VisionEgg.FlowControl.ExecStringController-class.html#set_during_go_exec_string">set_during_go_exec_string</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.FlowControl.Controller-class.html">FlowControl.Controller</a></code></b>:
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#evaluate_now">evaluate_now</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#returns_type">returns_type</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#set_eval_frequency">set_eval_frequency</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__delattr__</code>,
+      <code>__getattribute__</code>,
+      <code>__hash__</code>,
+      <code>__new__</code>,
+      <code>__reduce__</code>,
+      <code>__reduce_ex__</code>,
+      <code>__repr__</code>,
+      <code>__setattr__</code>,
+      <code>__str__</code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>Pyro.core.ObjBase</code></b>:
+      <code>GUID</code>,
+      <code>Pyro_dyncall</code>,
+      <code>delegateTo</code>,
+      <code>getAttrProxy</code>,
+      <code>getDaemon</code>,
+      <code>getLocalStorage</code>,
+      <code>getProxy</code>,
+      <code>remote_retrieve_code</code>,
+      <code>remote_supply_code</code>,
+      <code>setCodeValidator</code>,
+      <code>setGUID</code>,
+      <code>setPyroDaemon</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Class Variables</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.FlowControl.Controller-class.html">FlowControl.Controller</a></code></b>:
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#EVERY_FRAME">EVERY_FRAME</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#FRAMES_ABSOLUTE">FRAMES_ABSOLUTE</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#FRAMES_SINCE_GO">FRAMES_SINCE_GO</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#NEVER">NEVER</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#NOT_BETWEEN_GO">NOT_BETWEEN_GO</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#NOT_DURING_GO">NOT_DURING_GO</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#ONCE">ONCE</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#TIME_INDEPENDENT">TIME_INDEPENDENT</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#TIME_SEC_ABSOLUTE">TIME_SEC_ABSOLUTE</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#TIME_SEC_SINCE_GO">TIME_SEC_SINCE_GO</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#TRANSITIONS">TRANSITIONS</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#flag_dictionary">flag_dictionary</a></code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Properties</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__class__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Method Details</span></td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">**kw</span>)</span>
+    <br /><em class="fname">(Constructor)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.PyroHelpers-pysrc.html#PyroExecStringController.__init__">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Create instance of Controller.
+
+Arguments:
+
+eval_frequency -- Int, bitwise "or" of flags
+temporal_variables -- Int, bitwise "or" of flags
+return_type -- Set to type() of the parameter under control
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.FlowControl.ExecStringController-class.html#__init__">FlowControl.ExecStringController.__init__</a>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:47 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.PyroHelpers.PyroListenController-class.html b/doc/reference/html/VisionEgg.PyroHelpers.PyroListenController-class.html
new file mode 100644
index 0000000..e51db83
--- /dev/null
+++ b/doc/reference/html/VisionEgg.PyroHelpers.PyroListenController-class.html
@@ -0,0 +1,351 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.PyroHelpers.PyroListenController</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.PyroHelpers-module.html">Module PyroHelpers</a> ::
+        Class PyroListenController
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.PyroHelpers.PyroListenController-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class PyroListenController</h1><span class="codelink"><a href="VisionEgg.PyroHelpers-pysrc.html#PyroListenController">source code</a></span><br /><br />
+<pre class="base-tree">
+            object --+    
+                     |    
+<a href="VisionEgg.FlowControl.Controller-class.html">FlowControl.Controller</a> --+
+                         |
+                        <strong class="uidshort">PyroListenController</strong>
+</pre>
+
+<hr />
+<pre class="literalblock">
+Handle connection from remote machine, control PyroControllers.
+
+This meta controller handles a Pyro daemon, which checks the TCP
+socket for new input and acts accordingly.
+
+This class is analagous to VisionEgg.TCPController.SocketListenController.
+
+</pre><br /><br />
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.PyroHelpers.PyroListenController-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">server</span>=<span class="summary-sig-default">None</span>,
+        <span class="summary-sig-arg">**kw</span>)</span><br />
+      Called by PyroServer.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroHelpers-pysrc.html#PyroListenController.__init__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.PyroHelpers.PyroListenController-class.html#during_go_eval" class="summary-sig-name">during_go_eval</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      Called by Presentation.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroHelpers-pysrc.html#PyroListenController.during_go_eval">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.PyroHelpers.PyroListenController-class.html#between_go_eval" class="summary-sig-name">between_go_eval</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      Called by Presentation.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroHelpers-pysrc.html#PyroListenController.between_go_eval">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.FlowControl.Controller-class.html">FlowControl.Controller</a></code></b>:
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#evaluate_now">evaluate_now</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#returns_type">returns_type</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#set_eval_frequency">set_eval_frequency</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__delattr__</code>,
+      <code>__getattribute__</code>,
+      <code>__hash__</code>,
+      <code>__new__</code>,
+      <code>__reduce__</code>,
+      <code>__reduce_ex__</code>,
+      <code>__repr__</code>,
+      <code>__setattr__</code>,
+      <code>__str__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Class Variables</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.FlowControl.Controller-class.html">FlowControl.Controller</a></code></b>:
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#EVERY_FRAME">EVERY_FRAME</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#FRAMES_ABSOLUTE">FRAMES_ABSOLUTE</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#FRAMES_SINCE_GO">FRAMES_SINCE_GO</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#NEVER">NEVER</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#NOT_BETWEEN_GO">NOT_BETWEEN_GO</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#NOT_DURING_GO">NOT_DURING_GO</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#ONCE">ONCE</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#TIME_INDEPENDENT">TIME_INDEPENDENT</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#TIME_SEC_ABSOLUTE">TIME_SEC_ABSOLUTE</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#TIME_SEC_SINCE_GO">TIME_SEC_SINCE_GO</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#TRANSITIONS">TRANSITIONS</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#flag_dictionary">flag_dictionary</a></code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Properties</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__class__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Method Details</span></td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">server</span>=<span class="sig-default">None</span>,
+        <span class="sig-arg">**kw</span>)</span>
+    <br /><em class="fname">(Constructor)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.PyroHelpers-pysrc.html#PyroListenController.__init__">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Called by PyroServer. Creates a PyroListenerController instance.
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.FlowControl.Controller-class.html#__init__">FlowControl.Controller.__init__</a>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="during_go_eval"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">during_go_eval</span>(<span class="sig-arg">self</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.PyroHelpers-pysrc.html#PyroListenController.during_go_eval">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Called by Presentation. Evaluate during the main 'go' loop.
+
+Override this method in subclasses.
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.FlowControl.Controller-class.html#during_go_eval">FlowControl.Controller.during_go_eval</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="between_go_eval"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">between_go_eval</span>(<span class="sig-arg">self</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.PyroHelpers-pysrc.html#PyroListenController.between_go_eval">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Called by Presentation. Evaluate between runs of the main 'go' loop.
+
+Override this method in subclasses.
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.FlowControl.Controller-class.html#between_go_eval">FlowControl.Controller.between_go_eval</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:47 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.PyroHelpers.PyroLocalDictController-class.html b/doc/reference/html/VisionEgg.PyroHelpers.PyroLocalDictController-class.html
new file mode 100644
index 0000000..7c32d7f
--- /dev/null
+++ b/doc/reference/html/VisionEgg.PyroHelpers.PyroLocalDictController-class.html
@@ -0,0 +1,323 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.PyroHelpers.PyroLocalDictController</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.PyroHelpers-module.html">Module PyroHelpers</a> ::
+        Class PyroLocalDictController
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.PyroHelpers.PyroLocalDictController-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class PyroLocalDictController</h1><span class="codelink"><a href="VisionEgg.PyroHelpers-pysrc.html#PyroLocalDictController">source code</a></span><br /><br />
+<pre class="base-tree">
+                    object --+        
+                             |        
+        <a href="VisionEgg.FlowControl.Controller-class.html">FlowControl.Controller</a> --+    
+                                 |    
+<a href="VisionEgg.FlowControl.EncapsulatedController-class.html">FlowControl.EncapsulatedController</a> --+
+                                     |
+                 Pyro.core.ObjBase --+
+                                     |
+                                    <strong class="uidshort">PyroLocalDictController</strong>
+</pre>
+
+<hr />
+<pre class="literalblock">
+Contain several dictionary entries, set controller accordingly.
+    
+
+</pre><br /><br />
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.PyroHelpers.PyroLocalDictController-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">dict</span>=<span class="summary-sig-default">None</span>,
+        <span class="summary-sig-arg">key</span>=<span class="summary-sig-default">None</span>,
+        <span class="summary-sig-arg">**kw</span>)</span><br />
+      Create instance of Controller.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroHelpers-pysrc.html#PyroLocalDictController.__init__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="use_controller"></a><span class="summary-sig-name">use_controller</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">key</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroHelpers-pysrc.html#PyroLocalDictController.use_controller">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="add_controller"></a><span class="summary-sig-name">add_controller</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">key</span>,
+        <span class="summary-sig-arg">new_controller</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroHelpers-pysrc.html#PyroLocalDictController.add_controller">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.FlowControl.EncapsulatedController-class.html">FlowControl.EncapsulatedController</a></code></b>:
+      <code><a href="VisionEgg.FlowControl.EncapsulatedController-class.html#between_go_eval">between_go_eval</a></code>,
+      <code><a href="VisionEgg.FlowControl.EncapsulatedController-class.html#during_go_eval">during_go_eval</a></code>,
+      <code><a href="VisionEgg.FlowControl.EncapsulatedController-class.html#set_new_controller">set_new_controller</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.FlowControl.Controller-class.html">FlowControl.Controller</a></code></b>:
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#evaluate_now">evaluate_now</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#returns_type">returns_type</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#set_eval_frequency">set_eval_frequency</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__delattr__</code>,
+      <code>__getattribute__</code>,
+      <code>__hash__</code>,
+      <code>__new__</code>,
+      <code>__reduce__</code>,
+      <code>__reduce_ex__</code>,
+      <code>__repr__</code>,
+      <code>__setattr__</code>,
+      <code>__str__</code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>Pyro.core.ObjBase</code></b>:
+      <code>GUID</code>,
+      <code>Pyro_dyncall</code>,
+      <code>delegateTo</code>,
+      <code>getAttrProxy</code>,
+      <code>getDaemon</code>,
+      <code>getLocalStorage</code>,
+      <code>getProxy</code>,
+      <code>remote_retrieve_code</code>,
+      <code>remote_supply_code</code>,
+      <code>setCodeValidator</code>,
+      <code>setGUID</code>,
+      <code>setPyroDaemon</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Class Variables</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.FlowControl.Controller-class.html">FlowControl.Controller</a></code></b>:
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#EVERY_FRAME">EVERY_FRAME</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#FRAMES_ABSOLUTE">FRAMES_ABSOLUTE</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#FRAMES_SINCE_GO">FRAMES_SINCE_GO</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#NEVER">NEVER</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#NOT_BETWEEN_GO">NOT_BETWEEN_GO</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#NOT_DURING_GO">NOT_DURING_GO</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#ONCE">ONCE</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#TIME_INDEPENDENT">TIME_INDEPENDENT</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#TIME_SEC_ABSOLUTE">TIME_SEC_ABSOLUTE</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#TIME_SEC_SINCE_GO">TIME_SEC_SINCE_GO</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#TRANSITIONS">TRANSITIONS</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#flag_dictionary">flag_dictionary</a></code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Properties</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__class__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Method Details</span></td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">dict</span>=<span class="sig-default">None</span>,
+        <span class="sig-arg">key</span>=<span class="sig-default">None</span>,
+        <span class="sig-arg">**kw</span>)</span>
+    <br /><em class="fname">(Constructor)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.PyroHelpers-pysrc.html#PyroLocalDictController.__init__">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Create instance of Controller.
+
+Arguments:
+
+eval_frequency -- Int, bitwise "or" of flags
+temporal_variables -- Int, bitwise "or" of flags
+return_type -- Set to type() of the parameter under control
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.FlowControl.EncapsulatedController-class.html#__init__">FlowControl.EncapsulatedController.__init__</a>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:47 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.PyroHelpers.PyroServer-class.html b/doc/reference/html/VisionEgg.PyroHelpers.PyroServer-class.html
new file mode 100644
index 0000000..add1e7d
--- /dev/null
+++ b/doc/reference/html/VisionEgg.PyroHelpers.PyroServer-class.html
@@ -0,0 +1,266 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.PyroHelpers.PyroServer</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.PyroHelpers-module.html">Module PyroHelpers</a> ::
+        Class PyroServer
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.PyroHelpers.PyroServer-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class PyroServer</h1><span class="codelink"><a href="VisionEgg.PyroHelpers-pysrc.html#PyroServer">source code</a></span><br /><br />
+<pre class="literalblock">
+Set up a Pyro server for your PyroControllers and PyroGoClass.
+
+This class is analagous to VisionEgg.TCPController.TCPServer.
+
+</pre><br /><br />
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__init__"></a><span class="summary-sig-name">__init__</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroHelpers-pysrc.html#PyroServer.__init__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="get_hostname_and_port"></a><span class="summary-sig-name">get_hostname_and_port</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroHelpers-pysrc.html#PyroServer.get_hostname_and_port">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="connect"></a><span class="summary-sig-name">connect</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">object</span>,
+        <span class="summary-sig-arg">name</span>)</span><br />
+      Serve an object under a name</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroHelpers-pysrc.html#PyroServer.connect">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="disconnect"></a><span class="summary-sig-name">disconnect</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">object</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroHelpers-pysrc.html#PyroServer.disconnect">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="create_listener_controller"></a><span class="summary-sig-name">create_listener_controller</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroHelpers-pysrc.html#PyroServer.create_listener_controller">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.PyroHelpers.PyroServer-class.html#handleRequests" class="summary-sig-name">handleRequests</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">timeout</span>=<span class="summary-sig-default">0</span>)</span><br />
+      Only use this if you don't use the PyroListenerController.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.PyroHelpers-pysrc.html#PyroServer.handleRequests">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Method Details</span></td>
+</tr>
+</table>
+<a name="handleRequests"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">handleRequests</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">timeout</span>=<span class="sig-default">0</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.PyroHelpers-pysrc.html#PyroServer.handleRequests">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Only use this if you don't use the PyroListenerController.
+
+A timeout of 0 specifies return immediately.
+
+</pre>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:47 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.QuickTime-module.html b/doc/reference/html/VisionEgg.QuickTime-module.html
new file mode 100644
index 0000000..386cdd9
--- /dev/null
+++ b/doc/reference/html/VisionEgg.QuickTime-module.html
@@ -0,0 +1,181 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.QuickTime</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        Module QuickTime
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.QuickTime-module.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== MODULE DESCRIPTION ==================== -->
+<h1 class="epydoc">Module QuickTime</h1><span class="codelink"><a href="VisionEgg.QuickTime-pysrc.html">source code</a></span><br /><br />
+<pre class="literalblock">
+
+QuickTime movies in the Vision Egg.
+
+</pre><br /><br />
+
+<hr />
+<div class="fields">      <p><strong>Author:</strong>
+        Andrew Straw <astraw at users.sourceforge.net>
+      </p>
+</div><!-- ==================== CLASSES ==================== -->
+<a name="section-Classes"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Classes</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.QuickTime.MovieTexture-class.html" class="summary-name">MovieTexture</a>
+    </td>
+  </tr>
+</table>
+<!-- ==================== FUNCTIONS ==================== -->
+<a name="section-Functions"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Functions</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="new_movie_from_filename"></a><span class="summary-sig-name">new_movie_from_filename</span>(<span class="summary-sig-arg">filename</span>,
+        <span class="summary-sig-arg">MAX_PATH</span>=<span class="summary-sig-default">255</span>)</span><br />
+      create a Movie from filename</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.qtmovie-pysrc.html#new_movie_from_filename">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+</table>
+<!-- ==================== VARIABLES ==================== -->
+<a name="section-Variables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Variables</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="__version__"></a><span class="summary-name">__version__</span> = <code title="VisionEgg.release_name">VisionEgg.release_name</code>
+    </td>
+  </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.QuickTime-pysrc.html b/doc/reference/html/VisionEgg.QuickTime-pysrc.html
new file mode 100644
index 0000000..de3fdc8
--- /dev/null
+++ b/doc/reference/html/VisionEgg.QuickTime-pysrc.html
@@ -0,0 +1,251 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.QuickTime</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        Module QuickTime
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.QuickTime-pysrc.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<h1 class="epydoc">Source Code for <a href="VisionEgg.QuickTime-module.html">Module VisionEgg.QuickTime</a></h1>
+<pre class="py-src">
+<a name="L1"></a><tt class="py-lineno">  1</tt>  <tt class="py-line"><tt class="py-comment"># The Vision Egg: QuickTime</tt> </tt>
+<a name="L2"></a><tt class="py-lineno">  2</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L3"></a><tt class="py-lineno">  3</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Copyright (C) 2001-2003, 2006 Andrew Straw.</tt> </tt>
+<a name="L4"></a><tt class="py-lineno">  4</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Author: Andrew Straw <astraw at users.sourceforge.net></tt> </tt>
+<a name="L5"></a><tt class="py-lineno">  5</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># URL: <http://www.visionegg.org/></tt> </tt>
+<a name="L6"></a><tt class="py-lineno">  6</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L7"></a><tt class="py-lineno">  7</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Distributed under the terms of the GNU Lesser General Public License</tt> </tt>
+<a name="L8"></a><tt class="py-lineno">  8</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># (LGPL). See LICENSE.TXT that came with this file.</tt> </tt>
+<a name="L9"></a><tt class="py-lineno">  9</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L10"></a><tt class="py-lineno"> 10</tt>  <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L11"></a><tt class="py-lineno"> 11</tt>  <tt class="py-line"><tt class="py-docstring">QuickTime movies in the Vision Egg.</tt> </tt>
+<a name="L12"></a><tt class="py-lineno"> 12</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L13"></a><tt class="py-lineno"> 13</tt>  <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L14"></a><tt class="py-lineno"> 14</tt>  <tt class="py-line"> </tt>
+<a name="L15"></a><tt class="py-lineno"> 15</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-0" class="py-name" targets="Package VisionEgg=VisionEgg-module.html"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-0', 'VisionEgg', 'link-0');">VisionEgg</a></tt> </tt>
+<a name="L16"></a><tt class="py-lineno"> 16</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-1" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-1', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-2" class="py-name" targets="Module VisionEgg.gl_qt=VisionEgg.gl_qt-module.html"><a title="VisionEgg.gl_qt" class="py-name" href="#" onclick="return doclink('link-2', 'gl_qt', 'link-2');">gl_qt</a [...]
+<a name="L17"></a><tt class="py-lineno"> 17</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-3" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-3', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-4" class="py-name" targets="Module VisionEgg.qtmovie=VisionEgg.qtmovie-module.html"><a title="VisionEgg.qtmovie" class="py-name" href="#" onclick="return doclink('link-4', 'qtmovie', 'link-4');"> [...]
+<a name="L18"></a><tt class="py-lineno"> 18</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-6" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-6', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-7" class="py-name" targets="Module VisionEgg.Textures=VisionEgg.Textures-module.html"><a title="VisionEgg.Textures" class="py-name" href="#" onclick="return doclink('link-7', 'Textures', 'link-7' [...]
+<a name="L19"></a><tt class="py-lineno"> 19</tt>  <tt class="py-line"> </tt>
+<a name="L20"></a><tt class="py-lineno"> 20</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">numpy</tt><tt class="py-op">.</tt><tt class="py-name">oldnumeric</tt> <tt class="py-keyword">as</tt> <tt class="py-name">Numeric</tt> </tt>
+<a name="L21"></a><tt class="py-lineno"> 21</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">os</tt> </tt>
+<a name="L22"></a><tt class="py-lineno"> 22</tt>  <tt class="py-line"> </tt>
+<a name="L23"></a><tt class="py-lineno"> 23</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-8" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-8', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-9" class="py-name" targets="Module VisionEgg.GL=VisionEgg.GL-module.html"><a title="VisionEgg.GL" class="py-name" href="#" onclick="return doclink('link-9', 'GL', 'link-9');">GL</a></tt> <tt clas [...]
+<a name="L24"></a><tt class="py-lineno"> 24</tt>  <tt class="py-line"> </tt>
+<a name="L25"></a><tt class="py-lineno"> 25</tt>  <tt class="py-line"><tt id="link-10" class="py-name" targets="Variable VisionEgg.DaqKeyboard.__version__=VisionEgg.DaqKeyboard-module.html#__version__,Variable VisionEgg.DaqLPT.__version__=VisionEgg.DaqLPT-module.html#__version__,Variable VisionEgg.GL.__version__=VisionEgg.GL-module.html#__version__,Variable VisionEgg.PyroApps.EPhysGUI.__version__=VisionEgg.PyroApps.EPhysGUI-module.html#__version__,Variable VisionEgg.PyroApps.EPhysGUIUtil [...]
+VisionEgg.DaqLPT.__version__
+VisionEgg.GL.__version__
+VisionEgg.PyroApps.EPhysGUI.__version__
+VisionEgg.PyroApps.EPhysGUIUtils.__version__
+VisionEgg.PyroApps.EPhysServer.__version__
+VisionEgg.PyroApps.GridGUI.__version__
+VisionEgg.PyroApps.GridServer.__version__
+VisionEgg.PyroApps.ScreenPositionGUI.__version__
+VisionEgg.PyroApps.ScreenPositionServer.__version__
+VisionEgg.PyroApps.SpinningDrumGUI.__version__
+VisionEgg.PyroApps.SpinningDrumServer.__version__
+VisionEgg.PyroHelpers.__version__
+VisionEgg.QuickTime.__version__
+VisionEgg.ResponseControl.__version__
+VisionEgg.SphereMap.__version__
+VisionEgg.TCPController.__version__" class="py-name" href="#" onclick="return doclink('link-10', '__version__', 'link-10');">__version__</a></tt> <tt class="py-op">=</tt> <tt id="link-11" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-11', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-12" class="py-name" targets="Variable VisionEgg.release_name=VisionEgg-module.html#release_name"><a title="VisionEgg.release_na [...]
+<a name="L26"></a><tt class="py-lineno"> 26</tt>  <tt class="py-line"><tt id="link-13" class="py-name" targets="Variable VisionEgg.PyroApps.EPhysGUI.__author__=VisionEgg.PyroApps.EPhysGUI-module.html#__author__,Variable VisionEgg.PyroApps.EPhysGUIUtils.__author__=VisionEgg.PyroApps.EPhysGUIUtils-module.html#__author__,Variable VisionEgg.PyroApps.EPhysServer.__author__=VisionEgg.PyroApps.EPhysServer-module.html#__author__,Variable VisionEgg.PyroApps.GridGUI.__author__=VisionEgg.PyroApps.G [...]
+VisionEgg.PyroApps.EPhysGUIUtils.__author__
+VisionEgg.PyroApps.EPhysServer.__author__
+VisionEgg.PyroApps.GridGUI.__author__
+VisionEgg.PyroApps.GridServer.__author__
+VisionEgg.PyroApps.SpinningDrumGUI.__author__
+VisionEgg.PyroApps.SpinningDrumServer.__author__" class="py-name" href="#" onclick="return doclink('link-13', '__author__', 'link-13');">__author__</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'Andrew Straw <astraw at users.sourceforge.net>'</tt> </tt>
+<a name="L27"></a><tt class="py-lineno"> 27</tt>  <tt class="py-line"> </tt>
+<a name="L28"></a><tt class="py-lineno"> 28</tt>  <tt class="py-line"><tt class="py-comment">#######################################################</tt> </tt>
+<a name="L29"></a><tt class="py-lineno"> 29</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L30"></a><tt class="py-lineno"> 30</tt>  <tt class="py-line"><tt id="link-14" class="py-name" targets="Function VisionEgg.qtmovie.new_movie_from_filename()=VisionEgg.qtmovie-module.html#new_movie_from_filename"><a title="VisionEgg.qtmovie.new_movie_from_filename" class="py-name" href="#" onclick="return doclink('link-14', 'new_movie_from_filename', 'link-14');">new_movie_from_filename</a></tt> <tt class="py-op">=</tt> <tt id="link-15" class="py-name"><a title="VisionEgg.qtmovie" [...]
+<a name="L31"></a><tt class="py-lineno"> 31</tt>  <tt class="py-line">     </tt>
+<a name="MovieTexture"></a><div id="MovieTexture-def"><a name="L32"></a><tt class="py-lineno"> 32</tt> <a class="py-toggle" href="#" id="MovieTexture-toggle" onclick="return toggle('MovieTexture');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.QuickTime.MovieTexture-class.html">MovieTexture</a><tt class="py-op">(</tt><tt class="py-base-class">VisionEgg</tt><tt class="py-op">.</tt><tt class="py-base-class">Textures</tt><tt class="py-op" [...]
+</div><div id="MovieTexture-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="MovieTexture-expanded"><a name="L33"></a><tt class="py-lineno"> 33</tt>  <tt class="py-line"> </tt>
+<a name="L34"></a><tt class="py-lineno"> 34</tt>  <tt class="py-line">    <tt class="py-name">__slots__</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt> </tt>
+<a name="L35"></a><tt class="py-lineno"> 35</tt>  <tt class="py-line">        <tt class="py-string">'movie'</tt><tt class="py-op">,</tt> </tt>
+<a name="L36"></a><tt class="py-lineno"> 36</tt>  <tt class="py-line">        <tt class="py-string">'size'</tt><tt class="py-op">,</tt> </tt>
+<a name="L37"></a><tt class="py-lineno"> 37</tt>  <tt class="py-line">        <tt class="py-string">'scale'</tt><tt class="py-op">,</tt> </tt>
+<a name="L38"></a><tt class="py-lineno"> 38</tt>  <tt class="py-line">        <tt class="py-string">'gl_qt_renderer'</tt><tt class="py-op">,</tt> </tt>
+<a name="L39"></a><tt class="py-lineno"> 39</tt>  <tt class="py-line">        <tt class="py-op">)</tt> </tt>
+<a name="L40"></a><tt class="py-lineno"> 40</tt>  <tt class="py-line">     </tt>
+<a name="MovieTexture.__init__"></a><div id="MovieTexture.__init__-def"><a name="L41"></a><tt class="py-lineno"> 41</tt> <a class="py-toggle" href="#" id="MovieTexture.__init__-toggle" onclick="return toggle('MovieTexture.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.QuickTime.MovieTexture-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> </tt>
+<a name="L42"></a><tt class="py-lineno"> 42</tt>  <tt class="py-line">                 <tt class="py-param">movie</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
+<a name="L43"></a><tt class="py-lineno"> 43</tt>  <tt class="py-line">                 <tt class="py-param">texture_size</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-comment"># be default will be big enough for full movie, otherwise 2-tuple</tt> </tt>
+<a name="L44"></a><tt class="py-lineno"> 44</tt>  <tt class="py-line">                 <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="MovieTexture.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="MovieTexture.__init__-expanded"><a name="L45"></a><tt class="py-lineno"> 45</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">movie</tt><tt class="py-op">,</tt><tt id="link-17" class="py-name"><a title="VisionEgg.qtmovie" class="py-name" href="#" onclic [...]
+VisionEgg.qtmovie.Movie" class="py-name" href="#" onclick="return doclink('link-18', 'Movie', 'link-18');">Movie</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L46"></a><tt class="py-lineno"> 46</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">movie</tt><tt class="py-op">,</tt><tt class="py-name">str</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">movie</tt><tt class="py-op">,</tt><tt class="py-name">unicode</tt><tt class="py-op">)</tt><tt class="py [...]
+<a name="L47"></a><tt class="py-lineno"> 47</tt>  <tt class="py-line">                <tt class="py-name">movie</tt> <tt class="py-op">=</tt> <tt id="link-19" class="py-name"><a title="VisionEgg.qtmovie.new_movie_from_filename" class="py-name" href="#" onclick="return doclink('link-19', 'new_movie_from_filename', 'link-14');">new_movie_from_filename</a></tt><tt class="py-op">(</tt><tt class="py-name">filename</tt><tt class="py-op">=</tt><tt class="py-name">movie</tt><tt class="py-op">)</ [...]
+<a name="L48"></a><tt class="py-lineno"> 48</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">movie</tt> <tt class="py-op">=</tt> <tt class="py-name">movie</tt> </tt>
+<a name="L49"></a><tt class="py-lineno"> 49</tt>  <tt class="py-line">        <tt class="py-name">bounds</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">movie</tt><tt class="py-op">.</tt><tt id="link-20" class="py-name" targets="Variable VisionEgg.qtlowlevel.GetMovieBox=VisionEgg.qtlowlevel-module.html#GetMovieBox,Method VisionEgg.qtmovie.Movie.GetMovieBox()=VisionEgg.qtmovie.Movie-class.html#GetMovieBox"><a title="VisionEgg.qtlowlev [...]
+VisionEgg.qtmovie.Movie.GetMovieBox" class="py-name" href="#" onclick="return doclink('link-20', 'GetMovieBox', 'link-20');">GetMovieBox</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L50"></a><tt class="py-lineno"> 50</tt>  <tt class="py-line">        <tt class="py-name">height</tt> <tt class="py-op">=</tt> <tt class="py-name">bounds</tt><tt class="py-op">.</tt><tt class="py-name">bottom</tt><tt class="py-op">-</tt><tt class="py-name">bounds</tt><tt class="py-op">.</tt><tt class="py-name">top</tt> </tt>
+<a name="L51"></a><tt class="py-lineno"> 51</tt>  <tt class="py-line">        <tt class="py-name">width</tt> <tt class="py-op">=</tt> <tt class="py-name">bounds</tt><tt class="py-op">.</tt><tt id="link-21" class="py-name" targets="Variable VisionEgg.PyroApps.MouseTargetServer.right=VisionEgg.PyroApps.MouseTargetServer-module.html#right"><a title="VisionEgg.PyroApps.MouseTargetServer.right" class="py-name" href="#" onclick="return doclink('link-21', 'right', 'link-21');">right</a></tt><tt [...]
+<a name="L52"></a><tt class="py-lineno"> 52</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">movie</tt><tt class="py-op">.</tt><tt id="link-23" class="py-name" targets="Variable VisionEgg.qtlowlevel.SetMovieBox=VisionEgg.qtlowlevel-module.html#SetMovieBox,Method VisionEgg.qtmovie.Movie.SetMovieBox()=VisionEgg.qtmovie.Movie-class.html#SetMovieBox"><a title="VisionEgg.qtlowlevel.SetMovieBox
+VisionEgg.qtmovie.Movie.SetMovieBox" class="py-name" href="#" onclick="return doclink('link-23', 'SetMovieBox', 'link-23');">SetMovieBox</a></tt><tt class="py-op">(</tt><tt id="link-24" class="py-name"><a title="VisionEgg.qtmovie" class="py-name" href="#" onclick="return doclink('link-24', 'qtmovie', 'link-4');">qtmovie</a></tt><tt class="py-op">.</tt><tt id="link-25" class="py-name" targets="Class VisionEgg.qtlowlevel.Rect=VisionEgg.qtlowlevel.Rect-class.html,Class VisionEgg.qtmovie.Rec [...]
+VisionEgg.qtmovie.Rect" class="py-name" href="#" onclick="return doclink('link-25', 'Rect', 'link-25');">Rect</a></tt><tt class="py-op">(</tt><tt class="py-name">top</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">,</tt><tt id="link-26" class="py-name"><a title="VisionEgg.PyroApps.MouseTargetServer.left" class="py-name" href="#" onclick="return doclink('link-26', 'left', 'link-22');">left</a></tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py- [...]
+<a name="L53"></a><tt class="py-lineno"> 53</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-28" class="py-name" targets="Variable VisionEgg.Core.Screen.size=VisionEgg.Core.Screen-class.html#size"><a title="VisionEgg.Core.Screen.size" class="py-name" href="#" onclick="return doclink('link-28', 'size', 'link-28');">size</a></tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">width</tt><tt class="py-op">,</tt><tt clas [...]
+<a name="L54"></a><tt class="py-lineno"> 54</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-29" class="py-name" targets="Method VisionEgg.Core.ProjectionBaseClass.scale()=VisionEgg.Core.ProjectionBaseClass-class.html#scale,Method VisionEgg.ThreeDeeMath.TransformMatrix.scale()=VisionEgg.ThreeDeeMath.TransformMatrix-class.html#scale"><a title="VisionEgg.Core.ProjectionBaseClass.scale
+VisionEgg.ThreeDeeMath.TransformMatrix.scale" class="py-name" href="#" onclick="return doclink('link-29', 'scale', 'link-29');">scale</a></tt> <tt class="py-op">=</tt> <tt class="py-number">1.0</tt> </tt>
+</div><a name="L55"></a><tt class="py-lineno"> 55</tt>  <tt class="py-line"> </tt>
+<a name="MovieTexture.make_half_size"></a><div id="MovieTexture.make_half_size-def"><a name="L56"></a><tt class="py-lineno"> 56</tt> <a class="py-toggle" href="#" id="MovieTexture.make_half_size-toggle" onclick="return toggle('MovieTexture.make_half_size');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.QuickTime.MovieTexture-class.html#make_half_size">make_half_size</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class=" [...]
+</div><div id="MovieTexture.make_half_size-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="MovieTexture.make_half_size-expanded"><a name="L57"></a><tt class="py-lineno"> 57</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-30" class="py-name"><a title="VisionEgg.Core.Screen.size" class="py-name" href="#" onclick="return doclink('link-30', 'size', 'link-28');">size</a></tt> <tt class="py-op">=</tt> <tt class="py [...]
+<a name="L58"></a><tt class="py-lineno"> 58</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-33" class="py-name"><a title="VisionEgg.Core.ProjectionBaseClass.scale
+VisionEgg.ThreeDeeMath.TransformMatrix.scale" class="py-name" href="#" onclick="return doclink('link-33', 'scale', 'link-29');">scale</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-34" class="py-name"><a title="VisionEgg.Core.ProjectionBaseClass.scale
+VisionEgg.ThreeDeeMath.TransformMatrix.scale" class="py-name" href="#" onclick="return doclink('link-34', 'scale', 'link-29');">scale</a></tt><tt class="py-op">/</tt><tt class="py-number">2</tt> </tt>
+</div><a name="L59"></a><tt class="py-lineno"> 59</tt>  <tt class="py-line"> </tt>
+<a name="MovieTexture.unload"></a><div id="MovieTexture.unload-def"><a name="L60"></a><tt class="py-lineno"> 60</tt> <a class="py-toggle" href="#" id="MovieTexture.unload-toggle" onclick="return toggle('MovieTexture.unload');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.QuickTime.MovieTexture-class.html#unload">unload</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="MovieTexture.unload-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="MovieTexture.unload-expanded"><a name="L61"></a><tt class="py-lineno"> 61</tt>  <tt class="py-line">        <tt class="py-keyword">raise</tt> <tt class="py-name">NotImplementedError</tt><tt class="py-op">(</tt><tt class="py-string">''</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L62"></a><tt class="py-lineno"> 62</tt>  <tt class="py-line"> </tt>
+<a name="MovieTexture.get_texels_as_image"></a><div id="MovieTexture.get_texels_as_image-def"><a name="L63"></a><tt class="py-lineno"> 63</tt> <a class="py-toggle" href="#" id="MovieTexture.get_texels_as_image-toggle" onclick="return toggle('MovieTexture.get_texels_as_image');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.QuickTime.MovieTexture-class.html#get_texels_as_image">get_texels_as_image</a><tt class="py-op">(</tt><tt class=" [...]
+</div><div id="MovieTexture.get_texels_as_image-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="MovieTexture.get_texels_as_image-expanded"><a name="L64"></a><tt class="py-lineno"> 64</tt>  <tt class="py-line">        <tt class="py-keyword">raise</tt> <tt class="py-name">NotImplementedError</tt><tt class="py-op">(</tt><tt class="py-string">''</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L65"></a><tt class="py-lineno"> 65</tt>  <tt class="py-line">     </tt>
+<a name="MovieTexture.load"></a><div id="MovieTexture.load-def"><a name="L66"></a><tt class="py-lineno"> 66</tt> <a class="py-toggle" href="#" id="MovieTexture.load-toggle" onclick="return toggle('MovieTexture.load');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.QuickTime.MovieTexture-class.html#load">load</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">texture_object</tt><tt cl [...]
+<a name="L67"></a><tt class="py-lineno"> 67</tt>  <tt class="py-line">             <tt class="py-param">build_mipmaps</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">,</tt> </tt>
+<a name="L68"></a><tt class="py-lineno"> 68</tt>  <tt class="py-line">             <tt class="py-param">rescale_original_to_fill_texture_object</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt><tt class="py-op">,</tt> </tt>
+<a name="L69"></a><tt class="py-lineno"> 69</tt>  <tt class="py-line">             <tt class="py-param">internal_format</tt><tt class="py-op">=</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_RGB</tt><tt class="py-op">,</tt> </tt>
+<a name="L70"></a><tt class="py-lineno"> 70</tt>  <tt class="py-line">             <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="MovieTexture.load-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="MovieTexture.load-expanded"><a name="L71"></a><tt class="py-lineno"> 71</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">build_mipmaps</tt><tt class="py-op">:</tt> </tt>
+<a name="L72"></a><tt class="py-lineno"> 72</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">'cannot build mipmaps for QuickTime movies'</tt><tt class="py-op">)</tt> </tt>
+<a name="L73"></a><tt class="py-lineno"> 73</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">rescale_original_to_fill_texture_object</tt><tt class="py-op">:</tt> </tt>
+<a name="L74"></a><tt class="py-lineno"> 74</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">NotImplementedError</tt><tt class="py-op">(</tt><tt class="py-string">''</tt><tt class="py-op">)</tt> </tt>
+<a name="L75"></a><tt class="py-lineno"> 75</tt>  <tt class="py-line">        <tt class="py-name">width</tt><tt class="py-op">,</tt><tt class="py-name">height</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-35" class="py-name"><a title="VisionEgg.Core.Screen.size" class="py-name" href="#" onclick="return doclink('link-35', 'size', 'link-28');">size</a></tt> </tt>
+<a name="L76"></a><tt class="py-lineno"> 76</tt>  <tt class="py-line">        <tt class="py-name">tex_shape</tt> <tt class="py-op">=</tt> <tt id="link-36" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-36', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-37" class="py-name"><a title="VisionEgg.Textures" class="py-name" href="#" onclick="return doclink('link-37', 'Textures', 'link-7');">Textures</a></tt><tt class [...]
+<a name="L77"></a><tt class="py-lineno"> 77</tt>  <tt class="py-line">        <tt class="py-comment"># fractional coverage</tt> </tt>
+<a name="L78"></a><tt class="py-lineno"> 78</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">buf_lf</tt> <tt class="py-op">=</tt> <tt class="py-number">0.0</tt> </tt>
+<a name="L79"></a><tt class="py-lineno"> 79</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">buf_rf</tt> <tt class="py-op">=</tt> <tt id="link-39" class="py-name" targets="Class float=float-class.html"><a title="float" class="py-name" href="#" onclick="return doclink('link-39', 'float', 'link-39');">float</a></tt><tt class="py-op">(</tt><tt class="py-name">width</tt><tt class="py-op">)</tt><tt class="py-op">/</tt><tt class="py-nam [...]
+<a name="L80"></a><tt class="py-lineno"> 80</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">buf_bf</tt> <tt class="py-op">=</tt> <tt class="py-number">0.0</tt> </tt>
+<a name="L81"></a><tt class="py-lineno"> 81</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">buf_tf</tt> <tt class="py-op">=</tt> <tt id="link-40" class="py-name"><a title="float" class="py-name" href="#" onclick="return doclink('link-40', 'float', 'link-39');">float</a></tt><tt class="py-op">(</tt><tt class="py-name">height</tt><tt class="py-op">)</tt><tt class="py-op">/</tt><tt class="py-name">tex_shape</tt> </tt>
+<a name="L82"></a><tt class="py-lineno"> 82</tt>  <tt class="py-line"> </tt>
+<a name="L83"></a><tt class="py-lineno"> 83</tt>  <tt class="py-line">        <tt class="py-comment"># absolute (texel units) coverage</tt> </tt>
+<a name="L84"></a><tt class="py-lineno"> 84</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_buf_l</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L85"></a><tt class="py-lineno"> 85</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_buf_r</tt> <tt class="py-op">=</tt> <tt class="py-name">width</tt> </tt>
+<a name="L86"></a><tt class="py-lineno"> 86</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_buf_b</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L87"></a><tt class="py-lineno"> 87</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_buf_t</tt> <tt class="py-op">=</tt> <tt class="py-name">height</tt> </tt>
+<a name="L88"></a><tt class="py-lineno"> 88</tt>  <tt class="py-line">         </tt>
+<a name="L89"></a><tt class="py-lineno"> 89</tt>  <tt class="py-line">        <tt class="py-name">buffer</tt> <tt class="py-op">=</tt> <tt class="py-name">Numeric</tt><tt class="py-op">.</tt><tt class="py-name">zeros</tt><tt class="py-op">(</tt> <tt class="py-op">(</tt><tt class="py-name">tex_shape</tt><tt class="py-op">,</tt><tt class="py-name">tex_shape</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">Numeric</tt><tt class="py-op">.</tt><tt class="py-name">UInt8 [...]
+<a name="L90"></a><tt class="py-lineno"> 90</tt>  <tt class="py-line">        <tt class="py-name">texture_object</tt><tt class="py-op">.</tt><tt id="link-41" class="py-name" targets="Method VisionEgg.Textures.TextureObject.put_new_image()=VisionEgg.Textures.TextureObject-class.html#put_new_image"><a title="VisionEgg.Textures.TextureObject.put_new_image" class="py-name" href="#" onclick="return doclink('link-41', 'put_new_image', 'link-41');">put_new_image</a></tt><tt class="py-op">(</tt> [...]
+<a name="L91"></a><tt class="py-lineno"> 91</tt>  <tt class="py-line">                                      <tt class="py-name">internal_format</tt><tt class="py-op">=</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_RGB</tt><tt class="py-op">,</tt> </tt>
+<a name="L92"></a><tt class="py-lineno"> 92</tt>  <tt class="py-line">                                      <tt class="py-name">mipmap_level</tt><tt class="py-op">=</tt><tt class="py-number">0</tt> <tt class="py-op">)</tt> </tt>
+<a name="L93"></a><tt class="py-lineno"> 93</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">texture_object</tt> <tt class="py-op">=</tt> <tt class="py-name">texture_object</tt> </tt>
+<a name="L94"></a><tt class="py-lineno"> 94</tt>  <tt class="py-line"> </tt>
+<a name="L95"></a><tt class="py-lineno"> 95</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">gl_qt_renderer</tt> <tt class="py-op">=</tt> <tt id="link-42" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-42', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-43" class="py-name"><a title="VisionEgg.gl_qt" class="py-name" href="#" onclick="return doclink('link- [...]
+VisionEgg.ThreeDeeMath.TransformMatrix.scale" class="py-name" href="#" onclick="return doclink('link-45', 'scale', 'link-29');">scale</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L96"></a><tt class="py-lineno"> 96</tt>  <tt class="py-line"> </tt>
+<a name="MovieTexture.update"></a><div id="MovieTexture.update-def"><a name="L97"></a><tt class="py-lineno"> 97</tt> <a class="py-toggle" href="#" id="MovieTexture.update-toggle" onclick="return toggle('MovieTexture.update');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.QuickTime.MovieTexture-class.html#update">update</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="MovieTexture.update-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="MovieTexture.update-expanded"><a name="L98"></a><tt class="py-lineno"> 98</tt>  <tt class="py-line">        <tt class="py-comment"># only call this when my texture unit is active</tt> </tt>
+<a name="L99"></a><tt class="py-lineno"> 99</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt id="link-46" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-46', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-47" class="py-name"><a title="VisionEgg.gl_qt" class="py-name" href="#" onclick="return doclink('link-47', 'gl_qt', 'link-2');">gl_qt</a></tt><tt class="py-op">.</tt><tt id="link-48" class="py [...]
+</div><a name="L100"></a><tt class="py-lineno">100</tt>  <tt class="py-line"> </tt>
+<a name="MovieTexture.__del__"></a><div id="MovieTexture.__del__-def"><a name="L101"></a><tt class="py-lineno">101</tt> <a class="py-toggle" href="#" id="MovieTexture.__del__-toggle" onclick="return toggle('MovieTexture.__del__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.QuickTime.MovieTexture-class.html#__del__">__del__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="MovieTexture.__del__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="MovieTexture.__del__-expanded"><a name="L102"></a><tt class="py-lineno">102</tt>  <tt class="py-line">        <tt id="link-49" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-49', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-50" class="py-name"><a title="VisionEgg.gl_qt" class="py-name" href="#" oncl [...]
+</div></div><a name="L103"></a><tt class="py-lineno">103</tt>  <tt class="py-line"> </tt><script type="text/javascript">
+<!--
+expandto(location.href);
+// -->
+</script>
+</pre>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:49 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.QuickTime.MovieTexture-class.html b/doc/reference/html/VisionEgg.QuickTime.MovieTexture-class.html
new file mode 100644
index 0000000..80b50f8
--- /dev/null
+++ b/doc/reference/html/VisionEgg.QuickTime.MovieTexture-class.html
@@ -0,0 +1,488 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.QuickTime.MovieTexture</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.QuickTime-module.html">Module QuickTime</a> ::
+        Class MovieTexture
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.QuickTime.MovieTexture-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class MovieTexture</h1><span class="codelink"><a href="VisionEgg.QuickTime-pysrc.html#MovieTexture">source code</a></span><br /><br />
+<pre class="base-tree">
+      object --+    
+               |    
+<a href="VisionEgg.Textures.Texture-class.html">Textures.Texture</a> --+
+                   |
+                  <strong class="uidshort">MovieTexture</strong>
+</pre>
+
+<hr />
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.QuickTime.MovieTexture-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">movie</span>=<span class="summary-sig-default">None</span>,
+        <span class="summary-sig-arg">texture_size</span>=<span class="summary-sig-default">None</span>)</span><br />
+      Creates instance of Texture object.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.QuickTime-pysrc.html#MovieTexture.__init__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.QuickTime.MovieTexture-class.html#make_half_size" class="summary-sig-name">make_half_size</a>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.QuickTime-pysrc.html#MovieTexture.make_half_size">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.QuickTime.MovieTexture-class.html#unload" class="summary-sig-name">unload</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      Unload texture data from video texture memory.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.QuickTime-pysrc.html#MovieTexture.unload">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.QuickTime.MovieTexture-class.html#get_texels_as_image" class="summary-sig-name">get_texels_as_image</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      Return texel data as PIL image</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.QuickTime-pysrc.html#MovieTexture.get_texels_as_image">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.QuickTime.MovieTexture-class.html#load" class="summary-sig-name">load</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">texture_object</span>,
+        <span class="summary-sig-arg">build_mipmaps</span>=<span class="summary-sig-default">False</span>,
+        <span class="summary-sig-arg">rescale_original_to_fill_texture_object</span>=<span class="summary-sig-default">False</span>,
+        <span class="summary-sig-arg">internal_format</span>=<span class="summary-sig-default">gl.GL_RGB</span>)</span><br />
+      Load texture data to video texture memory.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.QuickTime-pysrc.html#MovieTexture.load">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.QuickTime.MovieTexture-class.html#update" class="summary-sig-name">update</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      Update texture data
+
+This method does nothing, but may be overriden in classes that
+need to update their texture data whenever drawn.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.QuickTime-pysrc.html#MovieTexture.update">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__del__"></a><span class="summary-sig-name">__del__</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.QuickTime-pysrc.html#MovieTexture.__del__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.Textures.Texture-class.html">Textures.Texture</a></code></b>:
+      <code><a href="VisionEgg.Textures.Texture-class.html#get_pixels_as_image">get_pixels_as_image</a></code>,
+      <code><a href="VisionEgg.Textures.Texture-class.html#get_texture_object">get_texture_object</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__delattr__</code>,
+      <code>__getattribute__</code>,
+      <code>__hash__</code>,
+      <code>__new__</code>,
+      <code>__reduce__</code>,
+      <code>__reduce_ex__</code>,
+      <code>__repr__</code>,
+      <code>__setattr__</code>,
+      <code>__str__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Properties</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__class__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Method Details</span></td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">movie</span>=<span class="sig-default">None</span>,
+        <span class="sig-arg">texture_size</span>=<span class="sig-default">None</span>)</span>
+    <br /><em class="fname">(Constructor)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.QuickTime-pysrc.html#MovieTexture.__init__">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Creates instance of Texture object.
+
+texels -- Texture data. If not specified, a blank white
+          texture is created.
+size -- If a tuple, force size of texture data if possible,
+        raising an exception if not. If None, has no effect.
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.Textures.Texture-class.html#__init__">Textures.Texture.__init__</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="make_half_size"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">make_half_size</span>(<span class="sig-arg">self</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.QuickTime-pysrc.html#MovieTexture.make_half_size">source code</a></span> 
+    </td>
+  </table>
+  
+  
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.Textures.Texture-class.html#make_half_size">Textures.Texture.make_half_size</a>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="unload"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">unload</span>(<span class="sig-arg">self</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.QuickTime-pysrc.html#MovieTexture.unload">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Unload texture data from video texture memory.
+
+This only removes data from the video texture memory if there
+are no other references to the TextureObject instance.  To
+ensure this, all references to the texture_object argument
+passed to the load() method should be deleted.
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.Textures.Texture-class.html#unload">Textures.Texture.unload</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="get_texels_as_image"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">get_texels_as_image</span>(<span class="sig-arg">self</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.QuickTime-pysrc.html#MovieTexture.get_texels_as_image">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Return texel data as PIL image
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.Textures.Texture-class.html#get_texels_as_image">Textures.Texture.get_texels_as_image</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="load"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">load</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">texture_object</span>,
+        <span class="sig-arg">build_mipmaps</span>=<span class="sig-default">False</span>,
+        <span class="sig-arg">rescale_original_to_fill_texture_object</span>=<span class="sig-default">False</span>,
+        <span class="sig-arg">internal_format</span>=<span class="sig-default">gl.GL_RGB</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.QuickTime-pysrc.html#MovieTexture.load">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Load texture data to video texture memory.
+
+This will cause the texture data to become resident in OpenGL
+video texture memory, enabling fast drawing.
+
+The texture_object argument is used to specify an instance of
+the TextureObject class, which is a wrapper for the OpenGL
+texture object holding the resident texture.
+
+To remove a texture from OpenGL's resident textures:       TextureObject passed as the texture_object argument and 2)
+call the unload() method
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.Textures.Texture-class.html#load">Textures.Texture.load</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="update"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">update</span>(<span class="sig-arg">self</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.QuickTime-pysrc.html#MovieTexture.update">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Update texture data
+
+This method does nothing, but may be overriden in classes that
+need to update their texture data whenever drawn.
+
+It it called by the draw() method of any stimuli using
+textures when its texture object is active, so it can safely
+use put_sub_image() to manipulate its own texture data.
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.Textures.Texture-class.html#update">Textures.Texture.update</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:47 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.ResponseControl-module.html b/doc/reference/html/VisionEgg.ResponseControl-module.html
new file mode 100644
index 0000000..45f98e8
--- /dev/null
+++ b/doc/reference/html/VisionEgg.ResponseControl-module.html
@@ -0,0 +1,159 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.ResponseControl</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        Module ResponseControl
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.ResponseControl-module.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== MODULE DESCRIPTION ==================== -->
+<h1 class="epydoc">Module ResponseControl</h1><span class="codelink"><a href="VisionEgg.ResponseControl-pysrc.html">source code</a></span><br /><br />
+<pre class="literalblock">
+
+Response control during a presentation is running.
+
+</pre><br /><br />
+
+<!-- ==================== CLASSES ==================== -->
+<a name="section-Classes"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Classes</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.ResponseControl.ResponseController-class.html" class="summary-name">ResponseController</a><br />
+      This abstract base class defines the interface to any ResponseController.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.ResponseControl.KeyboardResponseController-class.html" class="summary-name">KeyboardResponseController</a><br />
+      Use the keyboard to collect responses during a presentation is running.
+    </td>
+  </tr>
+</table>
+<!-- ==================== VARIABLES ==================== -->
+<a name="section-Variables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Variables</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="__version__"></a><span class="summary-name">__version__</span> = <code title="VisionEgg.release_name">VisionEgg.release_name</code>
+    </td>
+  </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.ResponseControl-pysrc.html b/doc/reference/html/VisionEgg.ResponseControl-pysrc.html
new file mode 100644
index 0000000..33a1913
--- /dev/null
+++ b/doc/reference/html/VisionEgg.ResponseControl-pysrc.html
@@ -0,0 +1,433 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.ResponseControl</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        Module ResponseControl
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.ResponseControl-pysrc.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<h1 class="epydoc">Source Code for <a href="VisionEgg.ResponseControl-module.html">Module VisionEgg.ResponseControl</a></h1>
+<pre class="py-src">
+<a name="L1"></a><tt class="py-lineno">  1</tt>  <tt class="py-line"><tt class="py-comment"># The Vision Egg: ResponseControl</tt> </tt>
+<a name="L2"></a><tt class="py-lineno">  2</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L3"></a><tt class="py-lineno">  3</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Author(s): Hubertus Becker <hubertus.becker at uni-tuebingen.de></tt> </tt>
+<a name="L4"></a><tt class="py-lineno">  4</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Copyright: (C) 2005 by Hertie Institute for Clinical Brain Research,</tt> </tt>
+<a name="L5"></a><tt class="py-lineno">  5</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#            Department of Cognitive Neurology, University of Tuebingen</tt> </tt>
+<a name="L6"></a><tt class="py-lineno">  6</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># URL:       http://www.hubertus-becker.de/resources/visionegg/</tt> </tt>
+<a name="L7"></a><tt class="py-lineno">  7</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L8"></a><tt class="py-lineno">  8</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># This library is free software; you can redistribute it and/or modify</tt> </tt>
+<a name="L9"></a><tt class="py-lineno">  9</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># it under the terms of the GNU Lesser General Public License as</tt> </tt>
+<a name="L10"></a><tt class="py-lineno"> 10</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># published by the Free Software Foundation; either version 2.1 of</tt> </tt>
+<a name="L11"></a><tt class="py-lineno"> 11</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># the License, or (at your option) any later version.</tt> </tt>
+<a name="L12"></a><tt class="py-lineno"> 12</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L13"></a><tt class="py-lineno"> 13</tt>  <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L14"></a><tt class="py-lineno"> 14</tt>  <tt class="py-line"><tt class="py-docstring">Response control during a presentation is running.</tt> </tt>
+<a name="L15"></a><tt class="py-lineno"> 15</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L16"></a><tt class="py-lineno"> 16</tt>  <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L17"></a><tt class="py-lineno"> 17</tt>  <tt class="py-line"> </tt>
+<a name="L18"></a><tt class="py-lineno"> 18</tt>  <tt class="py-line"><tt class="py-comment">####################################################################</tt> </tt>
+<a name="L19"></a><tt class="py-lineno"> 19</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L20"></a><tt class="py-lineno"> 20</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#        Import all the necessary packages</tt> </tt>
+<a name="L21"></a><tt class="py-lineno"> 21</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L22"></a><tt class="py-lineno"> 22</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">####################################################################</tt> </tt>
+<a name="L23"></a><tt class="py-lineno"> 23</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L24"></a><tt class="py-lineno"> 24</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">logging</tt> </tt>
+<a name="L25"></a><tt class="py-lineno"> 25</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">handlers</tt> </tt>
+<a name="L26"></a><tt class="py-lineno"> 26</tt>  <tt class="py-line"> </tt>
+<a name="L27"></a><tt class="py-lineno"> 27</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-0" class="py-name" targets="Package VisionEgg=VisionEgg-module.html"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-0', 'VisionEgg', 'link-0');">VisionEgg</a></tt> </tt>
+<a name="L28"></a><tt class="py-lineno"> 28</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-1" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-1', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-2" class="py-name" targets="Module VisionEgg.Core=VisionEgg.Core-module.html"><a title="VisionEgg.Core" class="py-name" href="#" onclick="return doclink('link-2', 'Core', 'link-2');">Core</a></tt> </tt>
+<a name="L29"></a><tt class="py-lineno"> 29</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-3" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-3', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-4" class="py-name" targets="Module VisionEgg.FlowControl=VisionEgg.FlowControl-module.html"><a title="VisionEgg.FlowControl" class="py-name" href="#" onclick="return doclink('link-4', 'FlowContro [...]
+<a name="L30"></a><tt class="py-lineno"> 30</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-5" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-5', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-6" class="py-name" targets="Module VisionEgg.DaqKeyboard=VisionEgg.DaqKeyboard-module.html"><a title="VisionEgg.DaqKeyboard" class="py-name" href="#" onclick="return doclink('link-6', 'DaqKeyboar [...]
+<a name="L31"></a><tt class="py-lineno"> 31</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-7" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-7', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-8" class="py-name" targets="Module VisionEgg.ParameterTypes=VisionEgg.ParameterTypes-module.html"><a title="VisionEgg.ParameterTypes" class="py-name" href="#" onclick="return doclink('link-8', 'P [...]
+<a name="L32"></a><tt class="py-lineno"> 32</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">pygame</tt> </tt>
+<a name="L33"></a><tt class="py-lineno"> 33</tt>  <tt class="py-line"> </tt>
+<a name="L34"></a><tt class="py-lineno"> 34</tt>  <tt class="py-line"><tt id="link-9" class="py-name" targets="Variable VisionEgg.DaqKeyboard.__version__=VisionEgg.DaqKeyboard-module.html#__version__,Variable VisionEgg.DaqLPT.__version__=VisionEgg.DaqLPT-module.html#__version__,Variable VisionEgg.GL.__version__=VisionEgg.GL-module.html#__version__,Variable VisionEgg.PyroApps.EPhysGUI.__version__=VisionEgg.PyroApps.EPhysGUI-module.html#__version__,Variable VisionEgg.PyroApps.EPhysGUIUtils [...]
+VisionEgg.DaqLPT.__version__
+VisionEgg.GL.__version__
+VisionEgg.PyroApps.EPhysGUI.__version__
+VisionEgg.PyroApps.EPhysGUIUtils.__version__
+VisionEgg.PyroApps.EPhysServer.__version__
+VisionEgg.PyroApps.GridGUI.__version__
+VisionEgg.PyroApps.GridServer.__version__
+VisionEgg.PyroApps.ScreenPositionGUI.__version__
+VisionEgg.PyroApps.ScreenPositionServer.__version__
+VisionEgg.PyroApps.SpinningDrumGUI.__version__
+VisionEgg.PyroApps.SpinningDrumServer.__version__
+VisionEgg.PyroHelpers.__version__
+VisionEgg.QuickTime.__version__
+VisionEgg.ResponseControl.__version__
+VisionEgg.SphereMap.__version__
+VisionEgg.TCPController.__version__" class="py-name" href="#" onclick="return doclink('link-9', '__version__', 'link-9');">__version__</a></tt> <tt class="py-op">=</tt> <tt id="link-10" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-10', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-11" class="py-name" targets="Variable VisionEgg.release_name=VisionEgg-module.html#release_name"><a title="VisionEgg.release_name [...]
+<a name="L35"></a><tt class="py-lineno"> 35</tt>  <tt class="py-line"> </tt>
+<a name="L36"></a><tt class="py-lineno"> 36</tt>  <tt class="py-line"><tt class="py-comment">####################################################################</tt> </tt>
+<a name="L37"></a><tt class="py-lineno"> 37</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L38"></a><tt class="py-lineno"> 38</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#        ResponseController</tt> </tt>
+<a name="L39"></a><tt class="py-lineno"> 39</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L40"></a><tt class="py-lineno"> 40</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">####################################################################</tt> </tt>
+<a name="L41"></a><tt class="py-lineno"> 41</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="ResponseController"></a><div id="ResponseController-def"><a name="L42"></a><tt class="py-lineno"> 42</tt> <a class="py-toggle" href="#" id="ResponseController-toggle" onclick="return toggle('ResponseController');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.ResponseControl.ResponseController-class.html">ResponseController</a><tt class="py-op">(</tt><tt class="py-base-class">VisionEgg</tt><tt class="py-op">.</tt><tt class="py- [...]
+</div><div id="ResponseController-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="ResponseController-expanded"><a name="L43"></a><tt class="py-lineno"> 43</tt>  <tt class="py-line">    <tt class="py-docstring">"""This abstract base class defines the interface to any ResponseController.</tt> </tt>
+<a name="L44"></a><tt class="py-lineno"> 44</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L45"></a><tt class="py-lineno"> 45</tt>  <tt class="py-line"><tt class="py-docstring">    This module provides an interface to collect responses during a</tt> </tt>
+<a name="L46"></a><tt class="py-lineno"> 46</tt>  <tt class="py-line"><tt class="py-docstring">    presentation is running. To interface with real data acquisition devices,</tt> </tt>
+<a name="L47"></a><tt class="py-lineno"> 47</tt>  <tt class="py-line"><tt class="py-docstring">    use a module that subclasses the classes defined here.</tt> </tt>
+<a name="L48"></a><tt class="py-lineno"> 48</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L49"></a><tt class="py-lineno"> 49</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L50"></a><tt class="py-lineno"> 50</tt>  <tt class="py-line"> </tt>
+<a name="ResponseController._reset"></a><div id="ResponseController._reset-def"><a name="L51"></a><tt class="py-lineno"> 51</tt> <a class="py-toggle" href="#" id="ResponseController._reset-toggle" onclick="return toggle('ResponseController._reset');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.ResponseControl.ResponseController-class.html#_reset">_reset</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt [...]
+</div><div id="ResponseController._reset-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ResponseController._reset-expanded"><a name="L52"></a><tt class="py-lineno"> 52</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">responses</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L53"></a><tt class="py-lineno"> 53</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">responses_since_go</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L54"></a><tt class="py-lineno"> 54</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">time_responses_since_go</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L55"></a><tt class="py-lineno"> 55</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">first_responses_since_go</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L56"></a><tt class="py-lineno"> 56</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">time_first_responses_since_go</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L57"></a><tt class="py-lineno"> 57</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">status_first_responses_since_go</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
+<a name="L58"></a><tt class="py-lineno"> 58</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">last_responses_since_go</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L59"></a><tt class="py-lineno"> 59</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">time_last_responses_since_go</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+</div><a name="L60"></a><tt class="py-lineno"> 60</tt>  <tt class="py-line"> </tt>
+<a name="ResponseController.__init__"></a><div id="ResponseController.__init__-def"><a name="L61"></a><tt class="py-lineno"> 61</tt> <a class="py-toggle" href="#" id="ResponseController.__init__-toggle" onclick="return toggle('ResponseController.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.ResponseControl.ResponseController-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class=" [...]
+</div><div id="ResponseController.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ResponseController.__init__-expanded"><a name="L62"></a><tt class="py-lineno"> 62</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_reset</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L63"></a><tt class="py-lineno"> 63</tt>  <tt class="py-line"> </tt>
+<a name="ResponseController.get_responses"></a><div id="ResponseController.get_responses-def"><a name="L64"></a><tt class="py-lineno"> 64</tt> <a class="py-toggle" href="#" id="ResponseController.get_responses-toggle" onclick="return toggle('ResponseController.get_responses');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.ResponseControl.ResponseController-class.html#get_responses">get_responses</a><tt class="py-op">(</tt><tt class=" [...]
+</div><div id="ResponseController.get_responses-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ResponseController.get_responses-expanded"><a name="L65"></a><tt class="py-lineno"> 65</tt>  <tt class="py-line">        <tt class="py-docstring">"""Returns the responses in the current frame."""</tt> </tt>
+<a name="L66"></a><tt class="py-lineno"> 66</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">responses</tt> </tt>
+</div><a name="L67"></a><tt class="py-lineno"> 67</tt>  <tt class="py-line"> </tt>
+<a name="L68"></a><tt class="py-lineno"> 68</tt>  <tt class="py-line">    <tt id="link-12" class="py-name" targets="Method VisionEgg.Daq.Input.get_data()=VisionEgg.Daq.Input-class.html#get_data,Method VisionEgg.DaqLPT.LPTInput.get_data()=VisionEgg.DaqLPT.LPTInput-class.html#get_data"><a title="VisionEgg.Daq.Input.get_data
+VisionEgg.DaqLPT.LPTInput.get_data" class="py-name" href="#" onclick="return doclink('link-12', 'get_data', 'link-12');">get_data</a></tt> <tt class="py-op">=</tt> <tt id="link-13" class="py-name" targets="Method VisionEgg.ResponseControl.ResponseController.get_responses()=VisionEgg.ResponseControl.ResponseController-class.html#get_responses"><a title="VisionEgg.ResponseControl.ResponseController.get_responses" class="py-name" href="#" onclick="return doclink('link-13', 'get_responses',  [...]
+<a name="L69"></a><tt class="py-lineno"> 69</tt>  <tt class="py-line"> </tt>
+<a name="ResponseController.get_responses_since_go"></a><div id="ResponseController.get_responses_since_go-def"><a name="L70"></a><tt class="py-lineno"> 70</tt> <a class="py-toggle" href="#" id="ResponseController.get_responses_since_go-toggle" onclick="return toggle('ResponseController.get_responses_since_go');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.ResponseControl.ResponseController-class.html#get_responses_since_go">get_res [...]
+</div><div id="ResponseController.get_responses_since_go-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ResponseController.get_responses_since_go-expanded"><a name="L71"></a><tt class="py-lineno"> 71</tt>  <tt class="py-line">        <tt class="py-docstring">"""Returns all responses since the main 'go' loop has been</tt> </tt>
+<a name="L72"></a><tt class="py-lineno"> 72</tt>  <tt class="py-line"><tt class="py-docstring">        started."""</tt> </tt>
+<a name="L73"></a><tt class="py-lineno"> 73</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">responses_since_go</tt> </tt>
+</div><a name="L74"></a><tt class="py-lineno"> 74</tt>  <tt class="py-line"> </tt>
+<a name="ResponseController.get_time_responses_since_go"></a><div id="ResponseController.get_time_responses_since_go-def"><a name="L75"></a><tt class="py-lineno"> 75</tt> <a class="py-toggle" href="#" id="ResponseController.get_time_responses_since_go-toggle" onclick="return toggle('ResponseController.get_time_responses_since_go');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.ResponseControl.ResponseController-class.html#get_time_re [...]
+</div><div id="ResponseController.get_time_responses_since_go-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ResponseController.get_time_responses_since_go-expanded"><a name="L76"></a><tt class="py-lineno"> 76</tt>  <tt class="py-line">        <tt class="py-docstring">"""Returns the time stamps for all responses since the main 'go'</tt> </tt>
+<a name="L77"></a><tt class="py-lineno"> 77</tt>  <tt class="py-line"><tt class="py-docstring">        loop has been started."""</tt> </tt>
+<a name="L78"></a><tt class="py-lineno"> 78</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">time_responses_since_go</tt> </tt>
+</div><a name="L79"></a><tt class="py-lineno"> 79</tt>  <tt class="py-line"> </tt>
+<a name="ResponseController.get_first_response_since_go"></a><div id="ResponseController.get_first_response_since_go-def"><a name="L80"></a><tt class="py-lineno"> 80</tt> <a class="py-toggle" href="#" id="ResponseController.get_first_response_since_go-toggle" onclick="return toggle('ResponseController.get_first_response_since_go');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.ResponseControl.ResponseController-class.html#get_first_r [...]
+</div><div id="ResponseController.get_first_response_since_go-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ResponseController.get_first_response_since_go-expanded"><a name="L81"></a><tt class="py-lineno"> 81</tt>  <tt class="py-line">        <tt class="py-docstring">"""Returns the first response since the main 'go' loop has been</tt> </tt>
+<a name="L82"></a><tt class="py-lineno"> 82</tt>  <tt class="py-line"><tt class="py-docstring">        started."""</tt> </tt>
+<a name="L83"></a><tt class="py-lineno"> 83</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">first_responses_since_go</tt> <tt class="py-op">==</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
+<a name="L84"></a><tt class="py-lineno"> 84</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L85"></a><tt class="py-lineno"> 85</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L86"></a><tt class="py-lineno"> 86</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">first_responses_since_go</tt><tt class="py-op">[</tt><tt class="py-name">index</tt><tt class="py-op">]</tt> </tt>
+</div><a name="L87"></a><tt class="py-lineno"> 87</tt>  <tt class="py-line"> </tt>
+<a name="ResponseController.get_first_responses_since_go"></a><div id="ResponseController.get_first_responses_since_go-def"><a name="L88"></a><tt class="py-lineno"> 88</tt> <a class="py-toggle" href="#" id="ResponseController.get_first_responses_since_go-toggle" onclick="return toggle('ResponseController.get_first_responses_since_go');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.ResponseControl.ResponseController-class.html#get_fir [...]
+</div><div id="ResponseController.get_first_responses_since_go-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ResponseController.get_first_responses_since_go-expanded"><a name="L89"></a><tt class="py-lineno"> 89</tt>  <tt class="py-line">        <tt class="py-docstring">"""Returns the first responses since the main 'go' loop has been</tt> </tt>
+<a name="L90"></a><tt class="py-lineno"> 90</tt>  <tt class="py-line"><tt class="py-docstring">        started."""</tt> </tt>
+<a name="L91"></a><tt class="py-lineno"> 91</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">first_responses_since_go</tt> </tt>
+</div><a name="L92"></a><tt class="py-lineno"> 92</tt>  <tt class="py-line"> </tt>
+<a name="ResponseController.get_time_first_response_since_go"></a><div id="ResponseController.get_time_first_response_since_go-def"><a name="L93"></a><tt class="py-lineno"> 93</tt> <a class="py-toggle" href="#" id="ResponseController.get_time_first_response_since_go-toggle" onclick="return toggle('ResponseController.get_time_first_response_since_go');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.ResponseControl.ResponseController-cl [...]
+</div><div id="ResponseController.get_time_first_response_since_go-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ResponseController.get_time_first_response_since_go-expanded"><a name="L94"></a><tt class="py-lineno"> 94</tt>  <tt class="py-line">        <tt class="py-docstring">"""Returns the time stamp for first responses since the main 'go'</tt> </tt>
+<a name="L95"></a><tt class="py-lineno"> 95</tt>  <tt class="py-line"><tt class="py-docstring">        loop has been started."""</tt> </tt>
+<a name="L96"></a><tt class="py-lineno"> 96</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">time_first_responses_since_go</tt> </tt>
+</div><a name="L97"></a><tt class="py-lineno"> 97</tt>  <tt class="py-line"> </tt>
+<a name="L98"></a><tt class="py-lineno"> 98</tt>  <tt class="py-line">    <tt class="py-name">get_time_first_responses_since_go</tt> <tt class="py-op">=</tt> <tt id="link-14" class="py-name" targets="Method VisionEgg.ResponseControl.ResponseController.get_time_first_response_since_go()=VisionEgg.ResponseControl.ResponseController-class.html#get_time_first_response_since_go"><a title="VisionEgg.ResponseControl.ResponseController.get_time_first_response_since_go" class="py-name" href="#" o [...]
+<a name="L99"></a><tt class="py-lineno"> 99</tt>  <tt class="py-line"> </tt>
+<a name="ResponseController.get_last_response_since_go"></a><div id="ResponseController.get_last_response_since_go-def"><a name="L100"></a><tt class="py-lineno">100</tt> <a class="py-toggle" href="#" id="ResponseController.get_last_response_since_go-toggle" onclick="return toggle('ResponseController.get_last_response_since_go');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.ResponseControl.ResponseController-class.html#get_last_respo [...]
+</div><div id="ResponseController.get_last_response_since_go-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ResponseController.get_last_response_since_go-expanded"><a name="L101"></a><tt class="py-lineno">101</tt>  <tt class="py-line">        <tt class="py-docstring">"""Returns the last response since the main 'go' loop has been</tt> </tt>
+<a name="L102"></a><tt class="py-lineno">102</tt>  <tt class="py-line"><tt class="py-docstring">        started."""</tt> </tt>
+<a name="L103"></a><tt class="py-lineno">103</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">last_responses_since_go</tt> <tt class="py-op">==</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
+<a name="L104"></a><tt class="py-lineno">104</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L105"></a><tt class="py-lineno">105</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L106"></a><tt class="py-lineno">106</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">last_responses_since_go</tt><tt class="py-op">[</tt><tt class="py-name">index</tt><tt class="py-op">]</tt> </tt>
+</div><a name="L107"></a><tt class="py-lineno">107</tt>  <tt class="py-line"> </tt>
+<a name="ResponseController.get_last_responses_since_go"></a><div id="ResponseController.get_last_responses_since_go-def"><a name="L108"></a><tt class="py-lineno">108</tt> <a class="py-toggle" href="#" id="ResponseController.get_last_responses_since_go-toggle" onclick="return toggle('ResponseController.get_last_responses_since_go');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.ResponseControl.ResponseController-class.html#get_last_r [...]
+</div><div id="ResponseController.get_last_responses_since_go-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ResponseController.get_last_responses_since_go-expanded"><a name="L109"></a><tt class="py-lineno">109</tt>  <tt class="py-line">        <tt class="py-docstring">"""Returns the last responses since the main 'go' loop has been</tt> </tt>
+<a name="L110"></a><tt class="py-lineno">110</tt>  <tt class="py-line"><tt class="py-docstring">        started."""</tt> </tt>
+<a name="L111"></a><tt class="py-lineno">111</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">last_responses_since_go</tt> </tt>
+</div><a name="L112"></a><tt class="py-lineno">112</tt>  <tt class="py-line"> </tt>
+<a name="ResponseController.get_time_last_response_since_go"></a><div id="ResponseController.get_time_last_response_since_go-def"><a name="L113"></a><tt class="py-lineno">113</tt> <a class="py-toggle" href="#" id="ResponseController.get_time_last_response_since_go-toggle" onclick="return toggle('ResponseController.get_time_last_response_since_go');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.ResponseControl.ResponseController-class [...]
+</div><div id="ResponseController.get_time_last_response_since_go-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ResponseController.get_time_last_response_since_go-expanded"><a name="L114"></a><tt class="py-lineno">114</tt>  <tt class="py-line">        <tt class="py-docstring">"""Returns the time stamp for last response since the main 'go'</tt> </tt>
+<a name="L115"></a><tt class="py-lineno">115</tt>  <tt class="py-line"><tt class="py-docstring">        loop has been started."""</tt> </tt>
+<a name="L116"></a><tt class="py-lineno">116</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">time_last_responses_since_go</tt> </tt>
+</div><a name="L117"></a><tt class="py-lineno">117</tt>  <tt class="py-line"> </tt>
+<a name="L118"></a><tt class="py-lineno">118</tt>  <tt class="py-line">    <tt class="py-name">get_time_last_responses_since_go</tt> <tt class="py-op">=</tt> <tt id="link-15" class="py-name" targets="Method VisionEgg.ResponseControl.ResponseController.get_time_last_response_since_go()=VisionEgg.ResponseControl.ResponseController-class.html#get_time_last_response_since_go"><a title="VisionEgg.ResponseControl.ResponseController.get_time_last_response_since_go" class="py-name" href="#" oncl [...]
+<a name="L119"></a><tt class="py-lineno">119</tt>  <tt class="py-line"> </tt>
+<a name="ResponseController.between_go_eval"></a><div id="ResponseController.between_go_eval-def"><a name="L120"></a><tt class="py-lineno">120</tt> <a class="py-toggle" href="#" id="ResponseController.between_go_eval-toggle" onclick="return toggle('ResponseController.between_go_eval');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.ResponseControl.ResponseController-class.html#between_go_eval">between_go_eval</a><tt class="py-op">(</t [...]
+</div><div id="ResponseController.between_go_eval-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ResponseController.between_go_eval-expanded"><a name="L121"></a><tt class="py-lineno">121</tt>  <tt class="py-line">        <tt class="py-docstring">"""Evaluate between runs of the main 'go' loop.</tt> </tt>
+<a name="L122"></a><tt class="py-lineno">122</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L123"></a><tt class="py-lineno">123</tt>  <tt class="py-line"><tt class="py-docstring">        Override this method in subclasses."""</tt> </tt>
+<a name="L124"></a><tt class="py-lineno">124</tt>  <tt class="py-line">        <tt class="py-keyword">raise</tt> <tt class="py-name">RuntimeError</tt><tt class="py-op">(</tt><tt class="py-string">"%s: Definition of between_go_eval() in abstract base class ResponseController must be overriden."</tt><tt class="py-op">%</tt><tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">,</tt><tt class="py-op [...]
+</div><a name="L125"></a><tt class="py-lineno">125</tt>  <tt class="py-line"> </tt>
+<a name="ResponseController.during_go_eval"></a><div id="ResponseController.during_go_eval-def"><a name="L126"></a><tt class="py-lineno">126</tt> <a class="py-toggle" href="#" id="ResponseController.during_go_eval-toggle" onclick="return toggle('ResponseController.during_go_eval');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.ResponseControl.ResponseController-class.html#during_go_eval">during_go_eval</a><tt class="py-op">(</tt><tt  [...]
+</div><div id="ResponseController.during_go_eval-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ResponseController.during_go_eval-expanded"><a name="L127"></a><tt class="py-lineno">127</tt>  <tt class="py-line">        <tt class="py-docstring">"""Evaluate during the main 'go' loop.</tt> </tt>
+<a name="L128"></a><tt class="py-lineno">128</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L129"></a><tt class="py-lineno">129</tt>  <tt class="py-line"><tt class="py-docstring">        Override this method in subclasses."""</tt> </tt>
+<a name="L130"></a><tt class="py-lineno">130</tt>  <tt class="py-line">        <tt class="py-keyword">raise</tt> <tt class="py-name">RuntimeError</tt><tt class="py-op">(</tt><tt class="py-string">"%s: Definition of during_go_eval() in abstract base class ResponseController must be overriden."</tt><tt class="py-op">%</tt><tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">,</tt><tt class="py-op" [...]
+</div></div><a name="L131"></a><tt class="py-lineno">131</tt>  <tt class="py-line"> </tt>
+<a name="L132"></a><tt class="py-lineno">132</tt>  <tt class="py-line"> </tt>
+<a name="L133"></a><tt class="py-lineno">133</tt>  <tt class="py-line"><tt class="py-comment">####################################################################</tt> </tt>
+<a name="L134"></a><tt class="py-lineno">134</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L135"></a><tt class="py-lineno">135</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#        KeyboardResponseController</tt> </tt>
+<a name="L136"></a><tt class="py-lineno">136</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L137"></a><tt class="py-lineno">137</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">####################################################################</tt> </tt>
+<a name="L138"></a><tt class="py-lineno">138</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L139"></a><tt class="py-lineno">139</tt>  <tt class="py-line"><tt class="py-comment">#class KeyboardResponseController(VisionEgg.ReponseController):</tt> </tt>
+<a name="KeyboardResponseController"></a><div id="KeyboardResponseController-def"><a name="L140"></a><tt class="py-lineno">140</tt> <a class="py-toggle" href="#" id="KeyboardResponseController-toggle" onclick="return toggle('KeyboardResponseController');">-</a><tt class="py-line"><tt class="py-comment"></tt><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.ResponseControl.KeyboardResponseController-class.html">KeyboardResponseController</a><tt class="py-op">(</tt>< [...]
+</div><div id="KeyboardResponseController-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="KeyboardResponseController-expanded"><a name="L141"></a><tt class="py-lineno">141</tt>  <tt class="py-line">    <tt class="py-docstring">"""Use the keyboard to collect responses during a presentation is running."""</tt> </tt>
+<a name="L142"></a><tt class="py-lineno">142</tt>  <tt class="py-line"> </tt>
+<a name="KeyboardResponseController.__init__"></a><div id="KeyboardResponseController.__init__-def"><a name="L143"></a><tt class="py-lineno">143</tt> <a class="py-toggle" href="#" id="KeyboardResponseController.__init__-toggle" onclick="return toggle('KeyboardResponseController.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.ResponseControl.KeyboardResponseController-class.html#__init__">__init__</a><tt class="py-op">(</tt> [...]
+</div><div id="KeyboardResponseController.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="KeyboardResponseController.__init__-expanded"><a name="L144"></a><tt class="py-lineno">144</tt>  <tt class="py-line">        <tt id="link-16" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-16', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-17" class="py-name"><a title="VisionEgg.FlowCo [...]
+VisionEgg.Configuration.Config.__init__
+VisionEgg.Core.FixationSpot.__init__
+VisionEgg.Core.FrameTimer.__init__
+VisionEgg.Core.ModelView.__init__
+VisionEgg.Core.OrthographicProjection.__init__
+VisionEgg.Core.OrthographicProjectionNoZClip.__init__
+VisionEgg.Core.PerspectiveProjection.__init__
+VisionEgg.Core.Projection.__init__
+VisionEgg.Core.ProjectionBaseClass.__init__
+VisionEgg.Core.Screen.__init__
+VisionEgg.Core.SimplePerspectiveProjection.__init__
+VisionEgg.Core.Stimulus.__init__
+VisionEgg.Core.Viewport.__init__
+VisionEgg.Daq.Channel.__init__
+VisionEgg.Daq.DaqMode.__init__
+VisionEgg.Daq.Device.__init__
+VisionEgg.Daq.Functionality.__init__
+VisionEgg.Daq.SignalType.__init__
+VisionEgg.DaqKeyboard.KeyboardTriggerInController.__init__
+VisionEgg.DaqLPT.LPTChannel.__init__
+VisionEgg.DaqLPT.LPTDevice.__init__
+VisionEgg.DaqLPT.LPTTriggerInController.__init__
+VisionEgg.DaqLPT.LPTTriggerOutController.__init__
+VisionEgg.Deprecated.Message.__init__
+VisionEgg.Dots.DotArea2D.__init__
+VisionEgg.FlowControl.ConstantController.__init__
+VisionEgg.FlowControl.Controller.__init__
+VisionEgg.FlowControl.EncapsulatedController.__init__
+VisionEgg.FlowControl.EvalStringController.__init__
+VisionEgg.FlowControl.ExecStringController.__init__
+VisionEgg.FlowControl.FunctionController.__init__
+VisionEgg.FlowControl.Presentation.__init__
+VisionEgg.GLTrace.Wrapper.__init__
+VisionEgg.GUI.AppWindow.__init__
+VisionEgg.GUI.GetKeypressDialog.__init__
+VisionEgg.GUI.GraphicsConfigurationWindow.__init__
+VisionEgg.GUI.InfoFrame.__init__
+VisionEgg.GUI.ProgressBar.__init__
+VisionEgg.GUI.ToplevelDialog.__init__
+VisionEgg.Gratings.SinGrating2D.__init__
+VisionEgg.Gratings.SinGrating3D.__init__
+VisionEgg.MoreStimuli.Arrow.__init__
+VisionEgg.MoreStimuli.FilledCircle.__init__
+VisionEgg.MoreStimuli.Rectangle3D.__init__
+VisionEgg.MoreStimuli.Target2D.__init__
+VisionEgg.ParameterTypes.AnyOf.__init__
+VisionEgg.ParameterTypes.Instance.__init__
+VisionEgg.ParameterTypes.Sequence.__init__
+VisionEgg.ParameterTypes.SubClass.__init__
+VisionEgg.PyroApps.AST_ext.AST_Visitor.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalMetaParameters.__init__
+VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.__init__
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.__init__
+VisionEgg.PyroApps.DropinGUI.DropinMetaParameters.__init__
+VisionEgg.PyroApps.DropinServer.DropinMetaController.__init__
+VisionEgg.PyroApps.EPhysGUI.AppWindow.__init__
+VisionEgg.PyroApps.EPhysGUI.BarButton.__init__
+VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase.__init__
+VisionEgg.PyroApps.EPhysGUI.GammaFrame.__init__
+VisionEgg.PyroApps.EPhysGUI.ImageSequenceLauncher.__init__
+VisionEgg.PyroApps.EPhysGUI.Loop.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopContainedObject.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopParamDialog.__init__
+VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.__init__
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.__init__
+VisionEgg.PyroApps.EPhysServer.EPhysServer.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingMetaParameters.__init__
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.GridGUI.GridControlFrame.__init__
+VisionEgg.PyroApps.GridGUI.GridMetaParameters.__init__
+VisionEgg.PyroApps.GridServer.GridMetaController.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetMetaParameters.__init__
+VisionEgg.PyroApps.MouseTargetServer.MousePositionController.__init__
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetOrientationController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetPositionController.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.CallbackEntry.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionParameters.__init__
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingMetaParameters.__init__
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumMetaParameters.__init__
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.__init__
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.__init__
+VisionEgg.PyroApps.TargetGUI.TargetMetaParameters.__init__
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.__init__
+VisionEgg.PyroClient.PyroClient.__init__
+VisionEgg.PyroHelpers.PyroConstantController.__init__
+VisionEgg.PyroHelpers.PyroEncapsulatedController.__init__
+VisionEgg.PyroHelpers.PyroEvalStringController.__init__
+VisionEgg.PyroHelpers.PyroExecStringController.__init__
+VisionEgg.PyroHelpers.PyroListenController.__init__
+VisionEgg.PyroHelpers.PyroLocalDictController.__init__
+VisionEgg.PyroHelpers.PyroServer.__init__
+VisionEgg.QuickTime.MovieTexture.__init__
+VisionEgg.ResponseControl.KeyboardResponseController.__init__
+VisionEgg.ResponseControl.ResponseController.__init__
+VisionEgg.SphereMap.AzElGrid.__init__
+VisionEgg.SphereMap.SphereGrating.__init__
+VisionEgg.SphereMap.SphereMap.__init__
+VisionEgg.SphereMap.SphereWindow.__init__
+VisionEgg.TCPController.SocketListenController.__init__
+VisionEgg.TCPController.TCPController.__init__
+VisionEgg.TCPController.TCPServer.__init__
+VisionEgg.Text.BitmapText.__init__
+VisionEgg.Text.GlutTextBase.__init__
+VisionEgg.Text.StrokeText.__init__
+VisionEgg.Text.Text.__init__
+VisionEgg.Textures.FixationCross.__init__
+VisionEgg.Textures.Mask2D.__init__
+VisionEgg.Textures.SpinningDrum.__init__
+VisionEgg.Textures.Texture.__init__
+VisionEgg.Textures.TextureFromFile.__init__
+VisionEgg.Textures.TextureObject.__init__
+VisionEgg.Textures.TextureStimulusBaseClass.__init__
+VisionEgg.ThreeDeeMath.TransformMatrix.__init__
+VisionEgg.WrappedText.WrappedText.__init__
+VisionEgg.qtmovie.Movie.__init__
+VisionEgg.qtmovie.Rect.__init__" class="py-name" href="#" onclick="return doclink('link-19', '__init__', 'link-19');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> </tt>
+<a name="L145"></a><tt class="py-lineno">145</tt>  <tt class="py-line">            <tt class="py-name">return_type</tt><tt class="py-op">=</tt><tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-20" class="py-name" targets="Function VisionEgg.ParameterTypes.get_type()=VisionEgg.ParameterTypes-module.html#get_type,Method VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.get_type()=VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html#ge [...]
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.get_type
+VisionEgg.get_type" class="py-name" href="#" onclick="return doclink('link-20', 'get_type', 'link-20');">get_type</a></tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L146"></a><tt class="py-lineno">146</tt>  <tt class="py-line">            <tt class="py-name">eval_frequency</tt><tt class="py-op">=</tt><tt id="link-21" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-21', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-22" class="py-name"><a title="VisionEgg.FlowControl" class="py-name" href="#" onclick="return doclink('link-22', 'FlowControl', 'link-4');">FlowControl< [...]
+VisionEgg.FlowControl.EVERY_FRAME" class="py-name" href="#" onclick="return doclink('link-24', 'EVERY_FRAME', 'link-24');">EVERY_FRAME</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L147"></a><tt class="py-lineno">147</tt>  <tt class="py-line">            <tt class="py-name">temporal_variables</tt><tt class="py-op">=</tt><tt id="link-25" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-25', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-26" class="py-name"><a title="VisionEgg.FlowControl" class="py-name" href="#" onclick="return doclink('link-26', 'FlowControl', 'link-4');">FlowCont [...]
+VisionEgg.FlowControl.TIME_SEC_SINCE_GO" class="py-name" href="#" onclick="return doclink('link-28', 'TIME_SEC_SINCE_GO', 'link-28');">TIME_SEC_SINCE_GO</a></tt> </tt>
+<a name="L148"></a><tt class="py-lineno">148</tt>  <tt class="py-line">        <tt class="py-op">)</tt> </tt>
+<a name="L149"></a><tt class="py-lineno">149</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">input</tt> <tt class="py-op">=</tt> <tt id="link-29" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-29', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-30" class="py-name"><a title="VisionEgg.DaqKeyboard" class="py-name" href="#" onclick="return doclink('link-30 [...]
+</div><a name="L150"></a><tt class="py-lineno">150</tt>  <tt class="py-line"> </tt>
+<a name="KeyboardResponseController.between_go_eval"></a><div id="KeyboardResponseController.between_go_eval-def"><a name="L151"></a><tt class="py-lineno">151</tt> <a class="py-toggle" href="#" id="KeyboardResponseController.between_go_eval-toggle" onclick="return toggle('KeyboardResponseController.between_go_eval');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.ResponseControl.KeyboardResponseController-class.html#between_go_eval">b [...]
+</div><div id="KeyboardResponseController.between_go_eval-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="KeyboardResponseController.between_go_eval-expanded"><a name="L152"></a><tt class="py-lineno">152</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> <tt class="py-comment"># Ignore keyboard</tt> </tt>
+</div><a name="L153"></a><tt class="py-lineno">153</tt>  <tt class="py-line"> </tt>
+<a name="KeyboardResponseController.during_go_eval"></a><div id="KeyboardResponseController.during_go_eval-def"><a name="L154"></a><tt class="py-lineno">154</tt> <a class="py-toggle" href="#" id="KeyboardResponseController.during_go_eval-toggle" onclick="return toggle('KeyboardResponseController.during_go_eval');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.ResponseControl.KeyboardResponseController-class.html#during_go_eval">during [...]
+</div><div id="KeyboardResponseController.during_go_eval-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="KeyboardResponseController.during_go_eval-expanded"><a name="L155"></a><tt class="py-lineno">155</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">time_sec_since_go</tt> <tt class="py-op"><=</tt> <tt class="py-number">0.01</tt><tt class="py-op">:</tt> <tt class="py-co [...]
+<a name="L156"></a><tt class="py-lineno">156</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_reset</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L157"></a><tt class="py-lineno">157</tt>  <tt class="py-line"><tt class="py-comment">#       self.responses = self.input.get_pygame_data()</tt> </tt>
+<a name="L158"></a><tt class="py-lineno">158</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">responses</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">input</tt><tt class="py-op">.</tt><tt id="link-32" class="py-name" targets="Method VisionEgg.DaqKeyboard.KeyboardInput.get_string_data()=VisionEgg.DaqKeyboard.KeyboardInput-class.html#get_string_data [...]
+<a name="L159"></a><tt class="py-lineno">159</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">responses</tt><tt class="py-op">)</tt> <tt class="py-op">></tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt>
+<a name="L160"></a><tt class="py-lineno">160</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">responses_since_go</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">responses</tt><tt class="py-op">)</tt> </tt>
+<a name="L161"></a><tt class="py-lineno">161</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">time_responses_since_go</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">time_sec_since_go</tt><tt class="py-op">)</tt> </tt>
+<a name="L162"></a><tt class="py-lineno">162</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">status_first_responses_since_go</tt> <tt class="py-op">==</tt> <tt class="py-name">False</tt><tt class="py-op">:</tt> </tt>
+<a name="L163"></a><tt class="py-lineno">163</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">time_first_responses_since_go</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">time_sec_since_go</tt> </tt>
+<a name="L164"></a><tt class="py-lineno">164</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">first_responses_since_go</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">responses</tt> </tt>
+<a name="L165"></a><tt class="py-lineno">165</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">status_first_responses_since_go</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
+<a name="L166"></a><tt class="py-lineno">166</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">time_last_responses_since_go</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">time_sec_since_go</tt> </tt>
+<a name="L167"></a><tt class="py-lineno">167</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">last_responses_since_go</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">responses</tt> </tt>
+<a name="L168"></a><tt class="py-lineno">168</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt>
+</div></div><a name="L169"></a><tt class="py-lineno">169</tt>  <tt class="py-line"> </tt><script type="text/javascript">
+<!--
+expandto(location.href);
+// -->
+</script>
+</pre>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:51 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.ResponseControl.KeyboardResponseController-class.html b/doc/reference/html/VisionEgg.ResponseControl.KeyboardResponseController-class.html
new file mode 100644
index 0000000..50a1f02
--- /dev/null
+++ b/doc/reference/html/VisionEgg.ResponseControl.KeyboardResponseController-class.html
@@ -0,0 +1,354 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.ResponseControl.KeyboardResponseController</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.ResponseControl-module.html">Module ResponseControl</a> ::
+        Class KeyboardResponseController
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.ResponseControl.KeyboardResponseController-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class KeyboardResponseController</h1><span class="codelink"><a href="VisionEgg.ResponseControl-pysrc.html#KeyboardResponseController">source code</a></span><br /><br />
+<pre class="base-tree">
+            object --+        
+                     |        
+<a href="VisionEgg.FlowControl.Controller-class.html">FlowControl.Controller</a> --+    
+                         |    
+        <a href="VisionEgg.ResponseControl.ResponseController-class.html">ResponseController</a> --+
+                             |
+                            <strong class="uidshort">KeyboardResponseController</strong>
+</pre>
+
+<hr />
+<pre class="literalblock">
+Use the keyboard to collect responses during a presentation is running.
+
+</pre><br /><br />
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.ResponseControl.KeyboardResponseController-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.ResponseControl-pysrc.html#KeyboardResponseController.__init__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.ResponseControl.KeyboardResponseController-class.html#between_go_eval" class="summary-sig-name">between_go_eval</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      Evaluate between runs of the main 'go' loop.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.ResponseControl-pysrc.html#KeyboardResponseController.between_go_eval">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.ResponseControl.KeyboardResponseController-class.html#during_go_eval" class="summary-sig-name">during_go_eval</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      Evaluate during the main 'go' loop.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.ResponseControl-pysrc.html#KeyboardResponseController.during_go_eval">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.ResponseControl.ResponseController-class.html">ResponseController</a></code></b>:
+      <code><a href="VisionEgg.ResponseControl.ResponseController-class.html#get_data">get_data</a></code>,
+      <code><a href="VisionEgg.ResponseControl.ResponseController-class.html#get_first_response_since_go">get_first_response_since_go</a></code>,
+      <code><a href="VisionEgg.ResponseControl.ResponseController-class.html#get_first_responses_since_go">get_first_responses_since_go</a></code>,
+      <code><a href="VisionEgg.ResponseControl.ResponseController-class.html#get_last_response_since_go">get_last_response_since_go</a></code>,
+      <code><a href="VisionEgg.ResponseControl.ResponseController-class.html#get_last_responses_since_go">get_last_responses_since_go</a></code>,
+      <code><a href="VisionEgg.ResponseControl.ResponseController-class.html#get_responses">get_responses</a></code>,
+      <code><a href="VisionEgg.ResponseControl.ResponseController-class.html#get_responses_since_go">get_responses_since_go</a></code>,
+      <code><a href="VisionEgg.ResponseControl.ResponseController-class.html#get_time_first_response_since_go">get_time_first_response_since_go</a></code>,
+      <code><a href="VisionEgg.ResponseControl.ResponseController-class.html#get_time_first_responses_since_go">get_time_first_responses_since_go</a></code>,
+      <code><a href="VisionEgg.ResponseControl.ResponseController-class.html#get_time_last_response_since_go">get_time_last_response_since_go</a></code>,
+      <code><a href="VisionEgg.ResponseControl.ResponseController-class.html#get_time_last_responses_since_go">get_time_last_responses_since_go</a></code>,
+      <code><a href="VisionEgg.ResponseControl.ResponseController-class.html#get_time_responses_since_go">get_time_responses_since_go</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.FlowControl.Controller-class.html">FlowControl.Controller</a></code></b>:
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#evaluate_now">evaluate_now</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#returns_type">returns_type</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#set_eval_frequency">set_eval_frequency</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__delattr__</code>,
+      <code>__getattribute__</code>,
+      <code>__hash__</code>,
+      <code>__new__</code>,
+      <code>__reduce__</code>,
+      <code>__reduce_ex__</code>,
+      <code>__repr__</code>,
+      <code>__setattr__</code>,
+      <code>__str__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Class Variables</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.FlowControl.Controller-class.html">FlowControl.Controller</a></code></b>:
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#EVERY_FRAME">EVERY_FRAME</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#FRAMES_ABSOLUTE">FRAMES_ABSOLUTE</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#FRAMES_SINCE_GO">FRAMES_SINCE_GO</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#NEVER">NEVER</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#NOT_BETWEEN_GO">NOT_BETWEEN_GO</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#NOT_DURING_GO">NOT_DURING_GO</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#ONCE">ONCE</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#TIME_INDEPENDENT">TIME_INDEPENDENT</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#TIME_SEC_ABSOLUTE">TIME_SEC_ABSOLUTE</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#TIME_SEC_SINCE_GO">TIME_SEC_SINCE_GO</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#TRANSITIONS">TRANSITIONS</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#flag_dictionary">flag_dictionary</a></code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Properties</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__class__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Method Details</span></td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>)</span>
+    <br /><em class="fname">(Constructor)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.ResponseControl-pysrc.html#KeyboardResponseController.__init__">source code</a></span> 
+    </td>
+  </table>
+  
+  
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.ResponseControl.ResponseController-class.html#__init__">ResponseController.__init__</a>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="between_go_eval"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">between_go_eval</span>(<span class="sig-arg">self</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.ResponseControl-pysrc.html#KeyboardResponseController.between_go_eval">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Evaluate between runs of the main 'go' loop.
+
+Override this method in subclasses.
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.ResponseControl.ResponseController-class.html#between_go_eval">ResponseController.between_go_eval</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="during_go_eval"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">during_go_eval</span>(<span class="sig-arg">self</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.ResponseControl-pysrc.html#KeyboardResponseController.during_go_eval">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Evaluate during the main 'go' loop.
+
+Override this method in subclasses.
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.ResponseControl.ResponseController-class.html#during_go_eval">ResponseController.during_go_eval</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:47 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.ResponseControl.ResponseController-class.html b/doc/reference/html/VisionEgg.ResponseControl.ResponseController-class.html
new file mode 100644
index 0000000..975bd6f
--- /dev/null
+++ b/doc/reference/html/VisionEgg.ResponseControl.ResponseController-class.html
@@ -0,0 +1,569 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.ResponseControl.ResponseController</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.ResponseControl-module.html">Module ResponseControl</a> ::
+        Class ResponseController
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.ResponseControl.ResponseController-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class ResponseController</h1><span class="codelink"><a href="VisionEgg.ResponseControl-pysrc.html#ResponseController">source code</a></span><br /><br />
+<pre class="base-tree">
+            object --+    
+                     |    
+<a href="VisionEgg.FlowControl.Controller-class.html">FlowControl.Controller</a> --+
+                         |
+                        <strong class="uidshort">ResponseController</strong>
+</pre>
+
+<hr />
+<pre class="literalblock">
+This abstract base class defines the interface to any ResponseController.
+
+This module provides an interface to collect responses during a
+presentation is running. To interface with real data acquisition devices,
+use a module that subclasses the classes defined here.
+
+</pre><br /><br />
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.ResponseControl.ResponseController-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">**kw</span>)</span><br />
+      Create instance of Controller.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.ResponseControl-pysrc.html#ResponseController.__init__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="get_responses"></a><span class="summary-sig-name">get_responses</span>(<span class="summary-sig-arg">self</span>)</span><br />
+      Returns the responses in the current frame.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.ResponseControl-pysrc.html#ResponseController.get_responses">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="get_data"></a><span class="summary-sig-name">get_data</span>(<span class="summary-sig-arg">self</span>)</span><br />
+      Returns the responses in the current frame.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.ResponseControl-pysrc.html#ResponseController.get_responses">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="get_responses_since_go"></a><span class="summary-sig-name">get_responses_since_go</span>(<span class="summary-sig-arg">self</span>)</span><br />
+      Returns all responses since the main 'go' loop has been
+started.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.ResponseControl-pysrc.html#ResponseController.get_responses_since_go">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="get_time_responses_since_go"></a><span class="summary-sig-name">get_time_responses_since_go</span>(<span class="summary-sig-arg">self</span>)</span><br />
+      Returns the time stamps for all responses since the main 'go'
+loop has been started.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.ResponseControl-pysrc.html#ResponseController.get_time_responses_since_go">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="get_first_response_since_go"></a><span class="summary-sig-name">get_first_response_since_go</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">index</span>=<span class="summary-sig-default">0</span>)</span><br />
+      Returns the first response since the main 'go' loop has been
+started.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.ResponseControl-pysrc.html#ResponseController.get_first_response_since_go">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="get_first_responses_since_go"></a><span class="summary-sig-name">get_first_responses_since_go</span>(<span class="summary-sig-arg">self</span>)</span><br />
+      Returns the first responses since the main 'go' loop has been
+started.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.ResponseControl-pysrc.html#ResponseController.get_first_responses_since_go">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="get_time_first_response_since_go"></a><span class="summary-sig-name">get_time_first_response_since_go</span>(<span class="summary-sig-arg">self</span>)</span><br />
+      Returns the time stamp for first responses since the main 'go'
+loop has been started.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.ResponseControl-pysrc.html#ResponseController.get_time_first_response_since_go">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="get_time_first_responses_since_go"></a><span class="summary-sig-name">get_time_first_responses_since_go</span>(<span class="summary-sig-arg">self</span>)</span><br />
+      Returns the time stamp for first responses since the main 'go'
+loop has been started.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.ResponseControl-pysrc.html#ResponseController.get_time_first_response_since_go">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="get_last_response_since_go"></a><span class="summary-sig-name">get_last_response_since_go</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">index</span>=<span class="summary-sig-default">0</span>)</span><br />
+      Returns the last response since the main 'go' loop has been
+started.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.ResponseControl-pysrc.html#ResponseController.get_last_response_since_go">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="get_last_responses_since_go"></a><span class="summary-sig-name">get_last_responses_since_go</span>(<span class="summary-sig-arg">self</span>)</span><br />
+      Returns the last responses since the main 'go' loop has been
+started.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.ResponseControl-pysrc.html#ResponseController.get_last_responses_since_go">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="get_time_last_response_since_go"></a><span class="summary-sig-name">get_time_last_response_since_go</span>(<span class="summary-sig-arg">self</span>)</span><br />
+      Returns the time stamp for last response since the main 'go'
+loop has been started.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.ResponseControl-pysrc.html#ResponseController.get_time_last_response_since_go">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="get_time_last_responses_since_go"></a><span class="summary-sig-name">get_time_last_responses_since_go</span>(<span class="summary-sig-arg">self</span>)</span><br />
+      Returns the time stamp for last response since the main 'go'
+loop has been started.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.ResponseControl-pysrc.html#ResponseController.get_time_last_response_since_go">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.ResponseControl.ResponseController-class.html#between_go_eval" class="summary-sig-name">between_go_eval</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      Evaluate between runs of the main 'go' loop.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.ResponseControl-pysrc.html#ResponseController.between_go_eval">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.ResponseControl.ResponseController-class.html#during_go_eval" class="summary-sig-name">during_go_eval</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      Evaluate during the main 'go' loop.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.ResponseControl-pysrc.html#ResponseController.during_go_eval">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.FlowControl.Controller-class.html">FlowControl.Controller</a></code></b>:
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#evaluate_now">evaluate_now</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#returns_type">returns_type</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#set_eval_frequency">set_eval_frequency</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__delattr__</code>,
+      <code>__getattribute__</code>,
+      <code>__hash__</code>,
+      <code>__new__</code>,
+      <code>__reduce__</code>,
+      <code>__reduce_ex__</code>,
+      <code>__repr__</code>,
+      <code>__setattr__</code>,
+      <code>__str__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Class Variables</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.FlowControl.Controller-class.html">FlowControl.Controller</a></code></b>:
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#EVERY_FRAME">EVERY_FRAME</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#FRAMES_ABSOLUTE">FRAMES_ABSOLUTE</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#FRAMES_SINCE_GO">FRAMES_SINCE_GO</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#NEVER">NEVER</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#NOT_BETWEEN_GO">NOT_BETWEEN_GO</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#NOT_DURING_GO">NOT_DURING_GO</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#ONCE">ONCE</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#TIME_INDEPENDENT">TIME_INDEPENDENT</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#TIME_SEC_ABSOLUTE">TIME_SEC_ABSOLUTE</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#TIME_SEC_SINCE_GO">TIME_SEC_SINCE_GO</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#TRANSITIONS">TRANSITIONS</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#flag_dictionary">flag_dictionary</a></code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Properties</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__class__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Method Details</span></td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">**kw</span>)</span>
+    <br /><em class="fname">(Constructor)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.ResponseControl-pysrc.html#ResponseController.__init__">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Create instance of Controller.
+
+Arguments:
+
+eval_frequency -- Int, bitwise "or" of flags
+temporal_variables -- Int, bitwise "or" of flags
+return_type -- Set to type() of the parameter under control
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.FlowControl.Controller-class.html#__init__">FlowControl.Controller.__init__</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="between_go_eval"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">between_go_eval</span>(<span class="sig-arg">self</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.ResponseControl-pysrc.html#ResponseController.between_go_eval">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Evaluate between runs of the main 'go' loop.
+
+Override this method in subclasses.
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.FlowControl.Controller-class.html#between_go_eval">FlowControl.Controller.between_go_eval</a>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="during_go_eval"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">during_go_eval</span>(<span class="sig-arg">self</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.ResponseControl-pysrc.html#ResponseController.during_go_eval">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Evaluate during the main 'go' loop.
+
+Override this method in subclasses.
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.FlowControl.Controller-class.html#during_go_eval">FlowControl.Controller.during_go_eval</a>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:47 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.SphereMap-module.html b/doc/reference/html/VisionEgg.SphereMap-module.html
new file mode 100644
index 0000000..61ea26c
--- /dev/null
+++ b/doc/reference/html/VisionEgg.SphereMap-module.html
@@ -0,0 +1,175 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.SphereMap</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        Module SphereMap
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.SphereMap-module.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== MODULE DESCRIPTION ==================== -->
+<h1 class="epydoc">Module SphereMap</h1><span class="codelink"><a href="VisionEgg.SphereMap-pysrc.html">source code</a></span><br /><br />
+<pre class="literalblock">
+
+Stimuli on spheres, including texture maps.
+
+</pre><br /><br />
+
+<!-- ==================== CLASSES ==================== -->
+<a name="section-Classes"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Classes</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.SphereMap.AzElGrid-class.html" class="summary-name">AzElGrid</a><br />
+      Spherical grid of iso-azimuth and iso-elevation lines.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.SphereMap.SphereMap-class.html" class="summary-name">SphereMap</a><br />
+      Mercator mapping of rectangular texture onto sphere.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.SphereMap.SphereGrating-class.html" class="summary-name">SphereGrating</a><br />
+      Map 2D sinusoidal grating onto sphere.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.SphereMap.SphereWindow-class.html" class="summary-name">SphereWindow</a><br />
+      This draws an opaque sphere with a single window in it.
+    </td>
+  </tr>
+</table>
+<!-- ==================== VARIABLES ==================== -->
+<a name="section-Variables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Variables</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="__version__"></a><span class="summary-name">__version__</span> = <code title="VisionEgg.release_name">VisionEgg.release_name</code>
+    </td>
+  </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.SphereMap-pysrc.html b/doc/reference/html/VisionEgg.SphereMap-pysrc.html
new file mode 100644
index 0000000..1aebea3
--- /dev/null
+++ b/doc/reference/html/VisionEgg.SphereMap-pysrc.html
@@ -0,0 +1,2015 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.SphereMap</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        Module SphereMap
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.SphereMap-pysrc.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<h1 class="epydoc">Source Code for <a href="VisionEgg.SphereMap-module.html">Module VisionEgg.SphereMap</a></h1>
+<pre class="py-src">
+<a name="L1"></a><tt class="py-lineno">   1</tt>  <tt class="py-line"><tt class="py-comment"># The Vision Egg: SphereMap</tt> </tt>
+<a name="L2"></a><tt class="py-lineno">   2</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L3"></a><tt class="py-lineno">   3</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Copyright (C) 2001-2004 Andrew Straw.</tt> </tt>
+<a name="L4"></a><tt class="py-lineno">   4</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Copyright (C) 2005-2008 California Institute of Technology</tt> </tt>
+<a name="L5"></a><tt class="py-lineno">   5</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L6"></a><tt class="py-lineno">   6</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Author: Andrew Straw <astraw at users.sourceforge.net></tt> </tt>
+<a name="L7"></a><tt class="py-lineno">   7</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># URL: <http://www.visionegg.org/></tt> </tt>
+<a name="L8"></a><tt class="py-lineno">   8</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L9"></a><tt class="py-lineno">   9</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Distributed under the terms of the GNU Lesser General Public License</tt> </tt>
+<a name="L10"></a><tt class="py-lineno">  10</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># (LGPL). See LICENSE.TXT that came with this file.</tt> </tt>
+<a name="L11"></a><tt class="py-lineno">  11</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L12"></a><tt class="py-lineno">  12</tt>  <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L13"></a><tt class="py-lineno">  13</tt>  <tt class="py-line"><tt class="py-docstring">Stimuli on spheres, including texture maps.</tt> </tt>
+<a name="L14"></a><tt class="py-lineno">  14</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L15"></a><tt class="py-lineno">  15</tt>  <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L16"></a><tt class="py-lineno">  16</tt>  <tt class="py-line"> </tt>
+<a name="L17"></a><tt class="py-lineno">  17</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">math</tt><tt class="py-op">,</tt> <tt class="py-name">types</tt> </tt>
+<a name="L18"></a><tt class="py-lineno">  18</tt>  <tt class="py-line"> </tt>
+<a name="L19"></a><tt class="py-lineno">  19</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">logging</tt> </tt>
+<a name="L20"></a><tt class="py-lineno">  20</tt>  <tt class="py-line"> </tt>
+<a name="L21"></a><tt class="py-lineno">  21</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-0" class="py-name" targets="Package VisionEgg=VisionEgg-module.html"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-0', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-1" class="py-name" targets="Module VisionEgg.Core=VisionEgg.Core-module.html"><a title="VisionEgg.Core" class="py-name" href="#" onclick="return [...]
+<a name="L22"></a><tt class="py-lineno">  22</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-2" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-2', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-3" class="py-name" targets="Module VisionEgg.Textures=VisionEgg.Textures-module.html"><a title="VisionEgg.Textures" class="py-name" href="#" onclick="return doclink('link-3', 'Textures', 'link-3 [...]
+<a name="L23"></a><tt class="py-lineno">  23</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-4" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-4', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-5" class="py-name" targets="Module VisionEgg.Text=VisionEgg.Text-module.html,Class VisionEgg.Text.Text=VisionEgg.Text.Text-class.html"><a title="VisionEgg.Text
+VisionEgg.Text.Text" class="py-name" href="#" onclick="return doclink('link-5', 'Text', 'link-5');">Text</a></tt> </tt>
+<a name="L24"></a><tt class="py-lineno">  24</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-6" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-6', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-7" class="py-name" targets="Module VisionEgg.Gratings=VisionEgg.Gratings-module.html"><a title="VisionEgg.Gratings" class="py-name" href="#" onclick="return doclink('link-7', 'Gratings', 'link-7 [...]
+<a name="L25"></a><tt class="py-lineno">  25</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-8" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-8', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-9" class="py-name" targets="Module VisionEgg.ThreeDeeMath=VisionEgg.ThreeDeeMath-module.html"><a title="VisionEgg.ThreeDeeMath" class="py-name" href="#" onclick="return doclink('link-9', 'ThreeD [...]
+<a name="L26"></a><tt class="py-lineno">  26</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-10" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-10', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-11" class="py-name" targets="Module VisionEgg.ParameterTypes=VisionEgg.ParameterTypes-module.html"><a title="VisionEgg.ParameterTypes" class="py-name" href="#" onclick="return doclink('link-11 [...]
+<a name="L27"></a><tt class="py-lineno">  27</tt>  <tt class="py-line"> </tt>
+<a name="L28"></a><tt class="py-lineno">  28</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">numpy</tt> </tt>
+<a name="L29"></a><tt class="py-lineno">  29</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">numpy</tt><tt class="py-op">.</tt><tt class="py-name">oldnumeric</tt> <tt class="py-keyword">as</tt> <tt class="py-name">Numeric</tt> </tt>
+<a name="L30"></a><tt class="py-lineno">  30</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">Image</tt> </tt>
+<a name="L31"></a><tt class="py-lineno">  31</tt>  <tt class="py-line"> </tt>
+<a name="L32"></a><tt class="py-lineno">  32</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-12" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-12', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-13" class="py-name" targets="Module VisionEgg.GL=VisionEgg.GL-module.html"><a title="VisionEgg.GL" class="py-name" href="#" onclick="return doclink('link-13', 'GL', 'link-13');">GL</a></tt> <t [...]
+<a name="L33"></a><tt class="py-lineno">  33</tt>  <tt class="py-line"> </tt>
+<a name="L34"></a><tt class="py-lineno">  34</tt>  <tt class="py-line"><tt id="link-14" class="py-name" targets="Variable VisionEgg.DaqKeyboard.__version__=VisionEgg.DaqKeyboard-module.html#__version__,Variable VisionEgg.DaqLPT.__version__=VisionEgg.DaqLPT-module.html#__version__,Variable VisionEgg.GL.__version__=VisionEgg.GL-module.html#__version__,Variable VisionEgg.PyroApps.EPhysGUI.__version__=VisionEgg.PyroApps.EPhysGUI-module.html#__version__,Variable VisionEgg.PyroApps.EPhysGUIUti [...]
+VisionEgg.DaqLPT.__version__
+VisionEgg.GL.__version__
+VisionEgg.PyroApps.EPhysGUI.__version__
+VisionEgg.PyroApps.EPhysGUIUtils.__version__
+VisionEgg.PyroApps.EPhysServer.__version__
+VisionEgg.PyroApps.GridGUI.__version__
+VisionEgg.PyroApps.GridServer.__version__
+VisionEgg.PyroApps.ScreenPositionGUI.__version__
+VisionEgg.PyroApps.ScreenPositionServer.__version__
+VisionEgg.PyroApps.SpinningDrumGUI.__version__
+VisionEgg.PyroApps.SpinningDrumServer.__version__
+VisionEgg.PyroHelpers.__version__
+VisionEgg.QuickTime.__version__
+VisionEgg.ResponseControl.__version__
+VisionEgg.SphereMap.__version__
+VisionEgg.TCPController.__version__" class="py-name" href="#" onclick="return doclink('link-14', '__version__', 'link-14');">__version__</a></tt> <tt class="py-op">=</tt> <tt id="link-15" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-15', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-16" class="py-name" targets="Variable VisionEgg.release_name=VisionEgg-module.html#release_name"><a title="VisionEgg.release_na [...]
+<a name="L35"></a><tt class="py-lineno">  35</tt>  <tt class="py-line"> </tt>
+<a name="AzElGrid"></a><div id="AzElGrid-def"><a name="L36"></a><tt class="py-lineno">  36</tt> <a class="py-toggle" href="#" id="AzElGrid-toggle" onclick="return toggle('AzElGrid');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.SphereMap.AzElGrid-class.html">AzElGrid</a><tt class="py-op">(</tt><tt class="py-base-class">VisionEgg</tt><tt class="py-op">.</tt><tt class="py-base-class">Core</tt><tt class="py-op">.</tt><tt class="py-base-c [...]
+</div><div id="AzElGrid-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="AzElGrid-expanded"><a name="L37"></a><tt class="py-lineno">  37</tt>  <tt class="py-line">    <tt class="py-docstring">"""Spherical grid of iso-azimuth and iso-elevation lines.</tt> </tt>
+<a name="L38"></a><tt class="py-lineno">  38</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L39"></a><tt class="py-lineno">  39</tt>  <tt class="py-line"><tt class="py-docstring">    Parameters</tt> </tt>
+<a name="L40"></a><tt class="py-lineno">  40</tt>  <tt class="py-line"><tt class="py-docstring">    ==========</tt> </tt>
+<a name="L41"></a><tt class="py-lineno">  41</tt>  <tt class="py-line"><tt class="py-docstring">    anti_aliasing    -- (Boolean)</tt> </tt>
+<a name="L42"></a><tt class="py-lineno">  42</tt>  <tt class="py-line"><tt class="py-docstring">                        Default: True</tt> </tt>
+<a name="L43"></a><tt class="py-lineno">  43</tt>  <tt class="py-line"><tt class="py-docstring">    center_azimuth   -- (Real)</tt> </tt>
+<a name="L44"></a><tt class="py-lineno">  44</tt>  <tt class="py-line"><tt class="py-docstring">                        Default: 0.0</tt> </tt>
+<a name="L45"></a><tt class="py-lineno">  45</tt>  <tt class="py-line"><tt class="py-docstring">    center_elevation -- (Real)</tt> </tt>
+<a name="L46"></a><tt class="py-lineno">  46</tt>  <tt class="py-line"><tt class="py-docstring">                        Default: 0.0</tt> </tt>
+<a name="L47"></a><tt class="py-lineno">  47</tt>  <tt class="py-line"><tt class="py-docstring">    major_line_color -- (AnyOf(Sequence3 of Real or Sequence4 of Real))</tt> </tt>
+<a name="L48"></a><tt class="py-lineno">  48</tt>  <tt class="py-line"><tt class="py-docstring">                        Default: (0.0, 0.0, 0.0)</tt> </tt>
+<a name="L49"></a><tt class="py-lineno">  49</tt>  <tt class="py-line"><tt class="py-docstring">    major_line_width -- (Real)</tt> </tt>
+<a name="L50"></a><tt class="py-lineno">  50</tt>  <tt class="py-line"><tt class="py-docstring">                        Default: 2.0</tt> </tt>
+<a name="L51"></a><tt class="py-lineno">  51</tt>  <tt class="py-line"><tt class="py-docstring">    minor_line_color -- (AnyOf(Sequence3 of Real or Sequence4 of Real))</tt> </tt>
+<a name="L52"></a><tt class="py-lineno">  52</tt>  <tt class="py-line"><tt class="py-docstring">                        Default: (0.0, 0.0, 1.0)</tt> </tt>
+<a name="L53"></a><tt class="py-lineno">  53</tt>  <tt class="py-line"><tt class="py-docstring">    minor_line_width -- (Real)</tt> </tt>
+<a name="L54"></a><tt class="py-lineno">  54</tt>  <tt class="py-line"><tt class="py-docstring">                        Default: 1.0</tt> </tt>
+<a name="L55"></a><tt class="py-lineno">  55</tt>  <tt class="py-line"><tt class="py-docstring">    my_viewport      -- (Instance of <class 'VisionEgg.Core.Viewport'>)</tt> </tt>
+<a name="L56"></a><tt class="py-lineno">  56</tt>  <tt class="py-line"><tt class="py-docstring">                        Default: (determined at runtime)</tt> </tt>
+<a name="L57"></a><tt class="py-lineno">  57</tt>  <tt class="py-line"><tt class="py-docstring">    on               -- (Boolean)</tt> </tt>
+<a name="L58"></a><tt class="py-lineno">  58</tt>  <tt class="py-line"><tt class="py-docstring">                        Default: True</tt> </tt>
+<a name="L59"></a><tt class="py-lineno">  59</tt>  <tt class="py-line"><tt class="py-docstring">    text_offset      -- (Sequence2 of Real)</tt> </tt>
+<a name="L60"></a><tt class="py-lineno">  60</tt>  <tt class="py-line"><tt class="py-docstring">                        Default: (3, -2)</tt> </tt>
+<a name="L61"></a><tt class="py-lineno">  61</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L62"></a><tt class="py-lineno">  62</tt>  <tt class="py-line"><tt class="py-docstring">    Constant Parameters</tt> </tt>
+<a name="L63"></a><tt class="py-lineno">  63</tt>  <tt class="py-line"><tt class="py-docstring">    ===================</tt> </tt>
+<a name="L64"></a><tt class="py-lineno">  64</tt>  <tt class="py-line"><tt class="py-docstring">    az_major_spacing       -- (Real)</tt> </tt>
+<a name="L65"></a><tt class="py-lineno">  65</tt>  <tt class="py-line"><tt class="py-docstring">                              Default: 30.0</tt> </tt>
+<a name="L66"></a><tt class="py-lineno">  66</tt>  <tt class="py-line"><tt class="py-docstring">    az_minor_spacing       -- (Real)</tt> </tt>
+<a name="L67"></a><tt class="py-lineno">  67</tt>  <tt class="py-line"><tt class="py-docstring">                              Default: 10.0</tt> </tt>
+<a name="L68"></a><tt class="py-lineno">  68</tt>  <tt class="py-line"><tt class="py-docstring">    el_major_spacing       -- (Real)</tt> </tt>
+<a name="L69"></a><tt class="py-lineno">  69</tt>  <tt class="py-line"><tt class="py-docstring">                              Default: 30.0</tt> </tt>
+<a name="L70"></a><tt class="py-lineno">  70</tt>  <tt class="py-line"><tt class="py-docstring">    el_minor_spacing       -- (Real)</tt> </tt>
+<a name="L71"></a><tt class="py-lineno">  71</tt>  <tt class="py-line"><tt class="py-docstring">                              Default: 10.0</tt> </tt>
+<a name="L72"></a><tt class="py-lineno">  72</tt>  <tt class="py-line"><tt class="py-docstring">    font_size              -- (UnsignedInteger)</tt> </tt>
+<a name="L73"></a><tt class="py-lineno">  73</tt>  <tt class="py-line"><tt class="py-docstring">                              Default: 24</tt> </tt>
+<a name="L74"></a><tt class="py-lineno">  74</tt>  <tt class="py-line"><tt class="py-docstring">    num_samples_per_circle -- (UnsignedInteger)</tt> </tt>
+<a name="L75"></a><tt class="py-lineno">  75</tt>  <tt class="py-line"><tt class="py-docstring">                              Default: 100</tt> </tt>
+<a name="L76"></a><tt class="py-lineno">  76</tt>  <tt class="py-line"><tt class="py-docstring">    radius                 -- (Real)</tt> </tt>
+<a name="L77"></a><tt class="py-lineno">  77</tt>  <tt class="py-line"><tt class="py-docstring">                              Default: 1.0</tt> </tt>
+<a name="L78"></a><tt class="py-lineno">  78</tt>  <tt class="py-line"><tt class="py-docstring">    text_anchor            -- (String)</tt> </tt>
+<a name="L79"></a><tt class="py-lineno">  79</tt>  <tt class="py-line"><tt class="py-docstring">                              Default: lowerleft</tt> </tt>
+<a name="L80"></a><tt class="py-lineno">  80</tt>  <tt class="py-line"><tt class="py-docstring">    text_color             -- (AnyOf(Sequence3 of Real or Sequence4 of Real))</tt> </tt>
+<a name="L81"></a><tt class="py-lineno">  81</tt>  <tt class="py-line"><tt class="py-docstring">                              Default: (0.0, 0.0, 0.0)</tt> </tt>
+<a name="L82"></a><tt class="py-lineno">  82</tt>  <tt class="py-line"><tt class="py-docstring">    use_text               -- (Boolean)</tt> </tt>
+<a name="L83"></a><tt class="py-lineno">  83</tt>  <tt class="py-line"><tt class="py-docstring">                              Default: True</tt> </tt>
+<a name="L84"></a><tt class="py-lineno">  84</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L85"></a><tt class="py-lineno">  85</tt>  <tt class="py-line"> </tt>
+<a name="L86"></a><tt class="py-lineno">  86</tt>  <tt class="py-line">    <tt id="link-17" class="py-name" targets="Variable VisionEgg.ClassWithParameters.parameters_and_defaults=VisionEgg.ClassWithParameters-class.html#parameters_and_defaults,Variable VisionEgg.Core.FixationSpot.parameters_and_defaults=VisionEgg.Core.FixationSpot-class.html#parameters_and_defaults,Variable VisionEgg.Core.ProjectionBaseClass.parameters_and_defaults=VisionEgg.Core.ProjectionBaseClass-class.html#parameter [...]
+VisionEgg.Core.FixationSpot.parameters_and_defaults
+VisionEgg.Core.ProjectionBaseClass.parameters_and_defaults
+VisionEgg.Core.Screen.parameters_and_defaults
+VisionEgg.Core.Viewport.parameters_and_defaults
+VisionEgg.Daq.Buffered.parameters_and_defaults
+VisionEgg.Dots.DotArea2D.parameters_and_defaults
+VisionEgg.FlowControl.Presentation.parameters_and_defaults
+VisionEgg.Gratings.AlphaGratingCommon.parameters_and_defaults
+VisionEgg.Gratings.LuminanceGratingCommon.parameters_and_defaults
+VisionEgg.Gratings.SinGrating2D.parameters_and_defaults
+VisionEgg.Gratings.SinGrating3D.parameters_and_defaults
+VisionEgg.MoreStimuli.Arrow.parameters_and_defaults
+VisionEgg.MoreStimuli.FilledCircle.parameters_and_defaults
+VisionEgg.MoreStimuli.Rectangle3D.parameters_and_defaults
+VisionEgg.MoreStimuli.Target2D.parameters_and_defaults
+VisionEgg.PyroApps.EPhysGUI.Loop.parameters_and_defaults
+VisionEgg.SphereMap.AzElGrid.parameters_and_defaults
+VisionEgg.SphereMap.SphereGrating.parameters_and_defaults
+VisionEgg.SphereMap.SphereMap.parameters_and_defaults
+VisionEgg.SphereMap.SphereWindow.parameters_and_defaults
+VisionEgg.Text.BitmapText.parameters_and_defaults
+VisionEgg.Text.GlutTextBase.parameters_and_defaults
+VisionEgg.Text.StrokeText.parameters_and_defaults
+VisionEgg.Text.Text.parameters_and_defaults
+VisionEgg.Textures.FixationCross.parameters_and_defaults
+VisionEgg.Textures.SpinningDrum.parameters_and_defaults
+VisionEgg.Textures.TextureStimulus.parameters_and_defaults
+VisionEgg.Textures.TextureStimulus3D.parameters_and_defaults
+VisionEgg.Textures.TextureStimulusBaseClass.parameters_and_defaults
+VisionEgg.WrappedText.WrappedText.parameters_and_defaults" class="py-name" href="#" onclick="return doclink('link-17', 'parameters_and_defaults', 'link-17');">parameters_and_defaults</a></tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> </tt>
+<a name="L87"></a><tt class="py-lineno">  87</tt>  <tt class="py-line">        <tt class="py-string">'on'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-name">True</tt><tt class="py-op">,</tt> </tt>
+<a name="L88"></a><tt class="py-lineno">  88</tt>  <tt class="py-line">              <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-18" class="py-name" targets="Class VisionEgg.ParameterTypes.Boolean=VisionEgg.ParameterTypes.Boolean-class.html"><a title="VisionEgg.ParameterTypes.Boolean" class="py-name" href="#" onclick="return doclink('link-18', 'Boolean', 'link-18');">Boolean</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L89"></a><tt class="py-lineno">  89</tt>  <tt class="py-line">        <tt class="py-string">'center_azimuth'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-number">0.0</tt><tt class="py-op">,</tt> <tt class="py-comment"># 0=right, 90=right</tt> </tt>
+<a name="L90"></a><tt class="py-lineno">  90</tt>  <tt class="py-line">                          <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-19" class="py-name" targets="Class VisionEgg.ParameterTypes.Real=VisionEgg.ParameterTypes.Real-class.html"><a title="VisionEgg.ParameterTypes.Real" class="py-name" href="#" onclick="return doclink('link-19', 'Real', 'link-19');">Real</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L91"></a><tt class="py-lineno">  91</tt>  <tt class="py-line">        <tt class="py-string">'center_elevation'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-number">0.0</tt><tt class="py-op">,</tt> <tt class="py-comment"># 0=right, 90=up</tt> </tt>
+<a name="L92"></a><tt class="py-lineno">  92</tt>  <tt class="py-line">                            <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-20" class="py-name"><a title="VisionEgg.ParameterTypes.Real" class="py-name" href="#" onclick="return doclink('link-20', 'Real', 'link-19');">Real</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L93"></a><tt class="py-lineno">  93</tt>  <tt class="py-line">        <tt class="py-string">'minor_line_width'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-number">1.0</tt><tt class="py-op">,</tt> </tt>
+<a name="L94"></a><tt class="py-lineno">  94</tt>  <tt class="py-line">                            <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-21" class="py-name"><a title="VisionEgg.ParameterTypes.Real" class="py-name" href="#" onclick="return doclink('link-21', 'Real', 'link-19');">Real</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L95"></a><tt class="py-lineno">  95</tt>  <tt class="py-line">        <tt class="py-string">'major_line_width'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-number">2.0</tt><tt class="py-op">,</tt> </tt>
+<a name="L96"></a><tt class="py-lineno">  96</tt>  <tt class="py-line">                            <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-22" class="py-name"><a title="VisionEgg.ParameterTypes.Real" class="py-name" href="#" onclick="return doclink('link-22', 'Real', 'link-19');">Real</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L97"></a><tt class="py-lineno">  97</tt>  <tt class="py-line">        <tt class="py-string">'minor_line_color'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-number">0.0</tt><tt class="py-op">,</tt><tt class="py-number">0.0</tt><tt class="py-op">,</tt><tt class="py-number">1.0</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L98"></a><tt class="py-lineno">  98</tt>  <tt class="py-line">                            <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-23" class="py-name" targets="Class VisionEgg.ParameterTypes.AnyOf=VisionEgg.ParameterTypes.AnyOf-class.html"><a title="VisionEgg.ParameterTypes.AnyOf" class="py-name" href="#" onclick="return doclink('link-23', 'AnyOf', 'link-23');">AnyOf</a></tt><tt class="py-op">(</tt><tt class="py-name">ve_types</tt><tt class="py-op">. [...]
+<a name="L99"></a><tt class="py-lineno">  99</tt>  <tt class="py-line">                                           <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-26" class="py-name" targets="Class VisionEgg.ParameterTypes.Sequence4=VisionEgg.ParameterTypes.Sequence4-class.html"><a title="VisionEgg.ParameterTypes.Sequence4" class="py-name" href="#" onclick="return doclink('link-26', 'Sequence4', 'link-26');">Sequence4</a></tt><tt class="py-op">(</tt><tt class="py-nam [...]
+<a name="L100"></a><tt class="py-lineno"> 100</tt>  <tt class="py-line">        <tt class="py-string">'major_line_color'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-number">0.0</tt><tt class="py-op">,</tt><tt class="py-number">0.0</tt><tt class="py-op">,</tt><tt class="py-number">0.0</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L101"></a><tt class="py-lineno"> 101</tt>  <tt class="py-line">                            <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-28" class="py-name"><a title="VisionEgg.ParameterTypes.AnyOf" class="py-name" href="#" onclick="return doclink('link-28', 'AnyOf', 'link-23');">AnyOf</a></tt><tt class="py-op">(</tt><tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-29" class="py-name"><a title="VisionEgg.ParameterTypes.Sequence3" clas [...]
+<a name="L102"></a><tt class="py-lineno"> 102</tt>  <tt class="py-line">                                           <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-31" class="py-name"><a title="VisionEgg.ParameterTypes.Sequence4" class="py-name" href="#" onclick="return doclink('link-31', 'Sequence4', 'link-26');">Sequence4</a></tt><tt class="py-op">(</tt><tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-32" class="py-name"><a title="VisionEgg.Par [...]
+<a name="L103"></a><tt class="py-lineno"> 103</tt>  <tt class="py-line">        <tt class="py-string">'my_viewport'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-comment"># viewport I'm in</tt> </tt>
+<a name="L104"></a><tt class="py-lineno"> 104</tt>  <tt class="py-line">                       <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-33" class="py-name" targets="Class VisionEgg.ParameterTypes.Instance=VisionEgg.ParameterTypes.Instance-class.html"><a title="VisionEgg.ParameterTypes.Instance" class="py-name" href="#" onclick="return doclink('link-33', 'Instance', 'link-33');">Instance</a></tt><tt class="py-op">(</tt><tt id="link-34" class="py-name"><a title [...]
+<a name="L105"></a><tt class="py-lineno"> 105</tt>  <tt class="py-line">        <tt class="py-string">'text_offset'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-number">3</tt><tt class="py-op">,</tt><tt class="py-op">-</tt><tt class="py-number">2</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-comment"># offset (x,y) to nudge text labels</tt> </tt>
+<a name="L106"></a><tt class="py-lineno"> 106</tt>  <tt class="py-line">                       <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-37" class="py-name" targets="Class VisionEgg.ParameterTypes.Sequence2=VisionEgg.ParameterTypes.Sequence2-class.html"><a title="VisionEgg.ParameterTypes.Sequence2" class="py-name" href="#" onclick="return doclink('link-37', 'Sequence2', 'link-37');">Sequence2</a></tt><tt class="py-op">(</tt><tt class="py-name">ve_types</tt><tt [...]
+<a name="L107"></a><tt class="py-lineno"> 107</tt>  <tt class="py-line">        <tt class="py-string">'anti_aliasing'</tt> <tt class="py-op">:</tt> <tt class="py-op">(</tt> <tt class="py-name">True</tt><tt class="py-op">,</tt> </tt>
+<a name="L108"></a><tt class="py-lineno"> 108</tt>  <tt class="py-line">                            <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-39" class="py-name"><a title="VisionEgg.ParameterTypes.Boolean" class="py-name" href="#" onclick="return doclink('link-39', 'Boolean', 'link-18');">Boolean</a></tt> <tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L109"></a><tt class="py-lineno"> 109</tt>  <tt class="py-line">        <tt class="py-op">}</tt> </tt>
+<a name="L110"></a><tt class="py-lineno"> 110</tt>  <tt class="py-line"> </tt>
+<a name="L111"></a><tt class="py-lineno"> 111</tt>  <tt class="py-line">    <tt id="link-40" class="py-name" targets="Variable VisionEgg.ClassWithParameters.constant_parameters_and_defaults=VisionEgg.ClassWithParameters-class.html#constant_parameters_and_defaults,Variable VisionEgg.Core.Screen.constant_parameters_and_defaults=VisionEgg.Core.Screen-class.html#constant_parameters_and_defaults,Variable VisionEgg.Daq.Analog.constant_parameters_and_defaults=VisionEgg.Daq.Analog-class.html#con [...]
+VisionEgg.Core.Screen.constant_parameters_and_defaults
+VisionEgg.Daq.Analog.constant_parameters_and_defaults
+VisionEgg.Daq.Channel.constant_parameters_and_defaults
+VisionEgg.Daq.SignalType.constant_parameters_and_defaults
+VisionEgg.Dots.DotArea2D.constant_parameters_and_defaults
+VisionEgg.SphereMap.AzElGrid.constant_parameters_and_defaults
+VisionEgg.Text.Text.constant_parameters_and_defaults
+VisionEgg.Textures.FixationCross.constant_parameters_and_defaults
+VisionEgg.Textures.Mask2D.constant_parameters_and_defaults
+VisionEgg.Textures.TextureStimulusBaseClass.constant_parameters_and_defaults
+VisionEgg.WrappedText.WrappedText.constant_parameters_and_defaults" class="py-name" href="#" onclick="return doclink('link-40', 'constant_parameters_and_defaults', 'link-40');">constant_parameters_and_defaults</a></tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> </tt>
+<a name="L112"></a><tt class="py-lineno"> 112</tt>  <tt class="py-line">        <tt class="py-string">'use_text'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-name">True</tt><tt class="py-op">,</tt> </tt>
+<a name="L113"></a><tt class="py-lineno"> 113</tt>  <tt class="py-line">                    <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-41" class="py-name"><a title="VisionEgg.ParameterTypes.Boolean" class="py-name" href="#" onclick="return doclink('link-41', 'Boolean', 'link-18');">Boolean</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L114"></a><tt class="py-lineno"> 114</tt>  <tt class="py-line">        <tt class="py-string">'radius'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-number">1.0</tt><tt class="py-op">,</tt> </tt>
+<a name="L115"></a><tt class="py-lineno"> 115</tt>  <tt class="py-line">                  <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-42" class="py-name"><a title="VisionEgg.ParameterTypes.Real" class="py-name" href="#" onclick="return doclink('link-42', 'Real', 'link-19');">Real</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L116"></a><tt class="py-lineno"> 116</tt>  <tt class="py-line">        <tt class="py-string">'az_minor_spacing'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-number">10.0</tt><tt class="py-op">,</tt> </tt>
+<a name="L117"></a><tt class="py-lineno"> 117</tt>  <tt class="py-line">                            <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-43" class="py-name"><a title="VisionEgg.ParameterTypes.Real" class="py-name" href="#" onclick="return doclink('link-43', 'Real', 'link-19');">Real</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L118"></a><tt class="py-lineno"> 118</tt>  <tt class="py-line">        <tt class="py-string">'az_major_spacing'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-number">30.0</tt><tt class="py-op">,</tt> </tt>
+<a name="L119"></a><tt class="py-lineno"> 119</tt>  <tt class="py-line">                            <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-44" class="py-name"><a title="VisionEgg.ParameterTypes.Real" class="py-name" href="#" onclick="return doclink('link-44', 'Real', 'link-19');">Real</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L120"></a><tt class="py-lineno"> 120</tt>  <tt class="py-line">        <tt class="py-string">'el_minor_spacing'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-number">10.0</tt><tt class="py-op">,</tt> </tt>
+<a name="L121"></a><tt class="py-lineno"> 121</tt>  <tt class="py-line">                            <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-45" class="py-name"><a title="VisionEgg.ParameterTypes.Real" class="py-name" href="#" onclick="return doclink('link-45', 'Real', 'link-19');">Real</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L122"></a><tt class="py-lineno"> 122</tt>  <tt class="py-line">        <tt class="py-string">'el_major_spacing'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-number">30.0</tt><tt class="py-op">,</tt> </tt>
+<a name="L123"></a><tt class="py-lineno"> 123</tt>  <tt class="py-line">                            <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-46" class="py-name"><a title="VisionEgg.ParameterTypes.Real" class="py-name" href="#" onclick="return doclink('link-46', 'Real', 'link-19');">Real</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L124"></a><tt class="py-lineno"> 124</tt>  <tt class="py-line">        <tt class="py-string">'num_samples_per_circle'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-number">100</tt><tt class="py-op">,</tt> </tt>
+<a name="L125"></a><tt class="py-lineno"> 125</tt>  <tt class="py-line">                                  <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-47" class="py-name" targets="Class VisionEgg.ParameterTypes.UnsignedInteger=VisionEgg.ParameterTypes.UnsignedInteger-class.html"><a title="VisionEgg.ParameterTypes.UnsignedInteger" class="py-name" href="#" onclick="return doclink('link-47', 'UnsignedInteger', 'link-47');">UnsignedInteger</a></tt><tt class="py-op">) [...]
+<a name="L126"></a><tt class="py-lineno"> 126</tt>  <tt class="py-line">        <tt class="py-string">'font_size'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-number">24</tt><tt class="py-op">,</tt> </tt>
+<a name="L127"></a><tt class="py-lineno"> 127</tt>  <tt class="py-line">                     <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-48" class="py-name"><a title="VisionEgg.ParameterTypes.UnsignedInteger" class="py-name" href="#" onclick="return doclink('link-48', 'UnsignedInteger', 'link-47');">UnsignedInteger</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L128"></a><tt class="py-lineno"> 128</tt>  <tt class="py-line">        <tt class="py-string">'text_color'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-number">0.0</tt><tt class="py-op">,</tt><tt class="py-number">0.0</tt><tt class="py-op">,</tt><tt class="py-number">0.0</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L129"></a><tt class="py-lineno"> 129</tt>  <tt class="py-line">                      <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-49" class="py-name"><a title="VisionEgg.ParameterTypes.AnyOf" class="py-name" href="#" onclick="return doclink('link-49', 'AnyOf', 'link-23');">AnyOf</a></tt><tt class="py-op">(</tt><tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-50" class="py-name"><a title="VisionEgg.ParameterTypes.Sequence3" class="py- [...]
+<a name="L130"></a><tt class="py-lineno"> 130</tt>  <tt class="py-line">                                     <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-52" class="py-name"><a title="VisionEgg.ParameterTypes.Sequence4" class="py-name" href="#" onclick="return doclink('link-52', 'Sequence4', 'link-26');">Sequence4</a></tt><tt class="py-op">(</tt><tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-53" class="py-name"><a title="VisionEgg.Parameter [...]
+<a name="L131"></a><tt class="py-lineno"> 131</tt>  <tt class="py-line">        <tt class="py-string">'text_anchor'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-string">'lowerleft'</tt><tt class="py-op">,</tt> </tt>
+<a name="L132"></a><tt class="py-lineno"> 132</tt>  <tt class="py-line">                       <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-54" class="py-name" targets="Class VisionEgg.ParameterTypes.String=VisionEgg.ParameterTypes.String-class.html"><a title="VisionEgg.ParameterTypes.String" class="py-name" href="#" onclick="return doclink('link-54', 'String', 'link-54');">String</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L133"></a><tt class="py-lineno"> 133</tt>  <tt class="py-line">        <tt class="py-op">}</tt> </tt>
+<a name="L134"></a><tt class="py-lineno"> 134</tt>  <tt class="py-line"> </tt>
+<a name="L135"></a><tt class="py-lineno"> 135</tt>  <tt class="py-line">    <tt class="py-name">__slots__</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt> </tt>
+<a name="L136"></a><tt class="py-lineno"> 136</tt>  <tt class="py-line">        <tt class="py-string">'cached_minor_lines_display_list'</tt><tt class="py-op">,</tt> </tt>
+<a name="L137"></a><tt class="py-lineno"> 137</tt>  <tt class="py-line">        <tt class="py-string">'cached_major_lines_display_list'</tt><tt class="py-op">,</tt> </tt>
+<a name="L138"></a><tt class="py-lineno"> 138</tt>  <tt class="py-line">        <tt class="py-string">'text_viewport'</tt><tt class="py-op">,</tt> </tt>
+<a name="L139"></a><tt class="py-lineno"> 139</tt>  <tt class="py-line">        <tt class="py-string">'text_viewport_orig'</tt><tt class="py-op">,</tt> </tt>
+<a name="L140"></a><tt class="py-lineno"> 140</tt>  <tt class="py-line">        <tt class="py-string">'_gave_alpha_warning'</tt><tt class="py-op">,</tt> </tt>
+<a name="L141"></a><tt class="py-lineno"> 141</tt>  <tt class="py-line">        <tt class="py-string">'labels'</tt><tt class="py-op">,</tt> </tt>
+<a name="L142"></a><tt class="py-lineno"> 142</tt>  <tt class="py-line">        <tt class="py-string">'labels_xyz'</tt><tt class="py-op">,</tt> </tt>
+<a name="L143"></a><tt class="py-lineno"> 143</tt>  <tt class="py-line">        <tt class="py-op">)</tt> </tt>
+<a name="L144"></a><tt class="py-lineno"> 144</tt>  <tt class="py-line"> </tt>
+<a name="AzElGrid.__init__"></a><div id="AzElGrid.__init__-def"><a name="L145"></a><tt class="py-lineno"> 145</tt> <a class="py-toggle" href="#" id="AzElGrid.__init__-toggle" onclick="return toggle('AzElGrid.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.SphereMap.AzElGrid-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt><tt class="py-op">**</tt><tt class="py-pa [...]
+</div><div id="AzElGrid.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="AzElGrid.__init__-expanded"><a name="L146"></a><tt class="py-lineno"> 146</tt>  <tt class="py-line">        <tt id="link-55" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-55', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-56" class="py-name"><a title="VisionEgg.Core" class="py-name" href="#" onclick=" [...]
+VisionEgg.Configuration.Config.__init__
+VisionEgg.Core.FixationSpot.__init__
+VisionEgg.Core.FrameTimer.__init__
+VisionEgg.Core.ModelView.__init__
+VisionEgg.Core.OrthographicProjection.__init__
+VisionEgg.Core.OrthographicProjectionNoZClip.__init__
+VisionEgg.Core.PerspectiveProjection.__init__
+VisionEgg.Core.Projection.__init__
+VisionEgg.Core.ProjectionBaseClass.__init__
+VisionEgg.Core.Screen.__init__
+VisionEgg.Core.SimplePerspectiveProjection.__init__
+VisionEgg.Core.Stimulus.__init__
+VisionEgg.Core.Viewport.__init__
+VisionEgg.Daq.Channel.__init__
+VisionEgg.Daq.DaqMode.__init__
+VisionEgg.Daq.Device.__init__
+VisionEgg.Daq.Functionality.__init__
+VisionEgg.Daq.SignalType.__init__
+VisionEgg.DaqKeyboard.KeyboardTriggerInController.__init__
+VisionEgg.DaqLPT.LPTChannel.__init__
+VisionEgg.DaqLPT.LPTDevice.__init__
+VisionEgg.DaqLPT.LPTTriggerInController.__init__
+VisionEgg.DaqLPT.LPTTriggerOutController.__init__
+VisionEgg.Deprecated.Message.__init__
+VisionEgg.Dots.DotArea2D.__init__
+VisionEgg.FlowControl.ConstantController.__init__
+VisionEgg.FlowControl.Controller.__init__
+VisionEgg.FlowControl.EncapsulatedController.__init__
+VisionEgg.FlowControl.EvalStringController.__init__
+VisionEgg.FlowControl.ExecStringController.__init__
+VisionEgg.FlowControl.FunctionController.__init__
+VisionEgg.FlowControl.Presentation.__init__
+VisionEgg.GLTrace.Wrapper.__init__
+VisionEgg.GUI.AppWindow.__init__
+VisionEgg.GUI.GetKeypressDialog.__init__
+VisionEgg.GUI.GraphicsConfigurationWindow.__init__
+VisionEgg.GUI.InfoFrame.__init__
+VisionEgg.GUI.ProgressBar.__init__
+VisionEgg.GUI.ToplevelDialog.__init__
+VisionEgg.Gratings.SinGrating2D.__init__
+VisionEgg.Gratings.SinGrating3D.__init__
+VisionEgg.MoreStimuli.Arrow.__init__
+VisionEgg.MoreStimuli.FilledCircle.__init__
+VisionEgg.MoreStimuli.Rectangle3D.__init__
+VisionEgg.MoreStimuli.Target2D.__init__
+VisionEgg.ParameterTypes.AnyOf.__init__
+VisionEgg.ParameterTypes.Instance.__init__
+VisionEgg.ParameterTypes.Sequence.__init__
+VisionEgg.ParameterTypes.SubClass.__init__
+VisionEgg.PyroApps.AST_ext.AST_Visitor.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalMetaParameters.__init__
+VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.__init__
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.__init__
+VisionEgg.PyroApps.DropinGUI.DropinMetaParameters.__init__
+VisionEgg.PyroApps.DropinServer.DropinMetaController.__init__
+VisionEgg.PyroApps.EPhysGUI.AppWindow.__init__
+VisionEgg.PyroApps.EPhysGUI.BarButton.__init__
+VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase.__init__
+VisionEgg.PyroApps.EPhysGUI.GammaFrame.__init__
+VisionEgg.PyroApps.EPhysGUI.ImageSequenceLauncher.__init__
+VisionEgg.PyroApps.EPhysGUI.Loop.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopContainedObject.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopParamDialog.__init__
+VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.__init__
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.__init__
+VisionEgg.PyroApps.EPhysServer.EPhysServer.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingMetaParameters.__init__
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.GridGUI.GridControlFrame.__init__
+VisionEgg.PyroApps.GridGUI.GridMetaParameters.__init__
+VisionEgg.PyroApps.GridServer.GridMetaController.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetMetaParameters.__init__
+VisionEgg.PyroApps.MouseTargetServer.MousePositionController.__init__
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetOrientationController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetPositionController.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.CallbackEntry.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionParameters.__init__
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingMetaParameters.__init__
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumMetaParameters.__init__
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.__init__
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.__init__
+VisionEgg.PyroApps.TargetGUI.TargetMetaParameters.__init__
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.__init__
+VisionEgg.PyroClient.PyroClient.__init__
+VisionEgg.PyroHelpers.PyroConstantController.__init__
+VisionEgg.PyroHelpers.PyroEncapsulatedController.__init__
+VisionEgg.PyroHelpers.PyroEvalStringController.__init__
+VisionEgg.PyroHelpers.PyroExecStringController.__init__
+VisionEgg.PyroHelpers.PyroListenController.__init__
+VisionEgg.PyroHelpers.PyroLocalDictController.__init__
+VisionEgg.PyroHelpers.PyroServer.__init__
+VisionEgg.QuickTime.MovieTexture.__init__
+VisionEgg.ResponseControl.KeyboardResponseController.__init__
+VisionEgg.ResponseControl.ResponseController.__init__
+VisionEgg.SphereMap.AzElGrid.__init__
+VisionEgg.SphereMap.SphereGrating.__init__
+VisionEgg.SphereMap.SphereMap.__init__
+VisionEgg.SphereMap.SphereWindow.__init__
+VisionEgg.TCPController.SocketListenController.__init__
+VisionEgg.TCPController.TCPController.__init__
+VisionEgg.TCPController.TCPServer.__init__
+VisionEgg.Text.BitmapText.__init__
+VisionEgg.Text.GlutTextBase.__init__
+VisionEgg.Text.StrokeText.__init__
+VisionEgg.Text.Text.__init__
+VisionEgg.Textures.FixationCross.__init__
+VisionEgg.Textures.Mask2D.__init__
+VisionEgg.Textures.SpinningDrum.__init__
+VisionEgg.Textures.Texture.__init__
+VisionEgg.Textures.TextureFromFile.__init__
+VisionEgg.Textures.TextureObject.__init__
+VisionEgg.Textures.TextureStimulusBaseClass.__init__
+VisionEgg.ThreeDeeMath.TransformMatrix.__init__
+VisionEgg.WrappedText.WrappedText.__init__
+VisionEgg.qtmovie.Movie.__init__
+VisionEgg.qtmovie.Rect.__init__" class="py-name" href="#" onclick="return doclink('link-58', '__init__', 'link-58');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt><tt class="py-op">**</tt><tt class="py-name">kw</tt><tt class="py-op">)</tt> </tt>
+<a name="L147"></a><tt class="py-lineno"> 147</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">cached_minor_lines_display_list</tt> <tt class="py-op">=</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glGenLists</tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> <tt class="py-comment"># Allocate a new display list</tt> </tt>
+<a name="L148"></a><tt class="py-lineno"> 148</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">cached_major_lines_display_list</tt> <tt class="py-op">=</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glGenLists</tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> <tt class="py-comment"># Allocate a new display list</tt> </tt>
+<a name="L149"></a><tt class="py-lineno"> 149</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__rebuild_display_lists</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L150"></a><tt class="py-lineno"> 150</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">text_viewport</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> <tt class="py-comment"># not set yet</tt> </tt>
+<a name="L151"></a><tt class="py-lineno"> 151</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_gave_alpha_warning</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
+</div><a name="L152"></a><tt class="py-lineno"> 152</tt>  <tt class="py-line"> </tt>
+<a name="AzElGrid.__rebuild_display_lists"></a><div id="AzElGrid.__rebuild_display_lists-def"><a name="L153"></a><tt class="py-lineno"> 153</tt> <a class="py-toggle" href="#" id="AzElGrid.__rebuild_display_lists-toggle" onclick="return toggle('AzElGrid.__rebuild_display_lists');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.SphereMap.AzElGrid-class.html#__rebuild_display_lists">__rebuild_display_lists</a><tt class="py-op">(</tt><tt c [...]
+</div><div id="AzElGrid.__rebuild_display_lists-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="AzElGrid.__rebuild_display_lists-expanded"><a name="L154"></a><tt class="py-lineno"> 154</tt>  <tt class="py-line">        <tt class="py-keyword">def</tt> <tt class="py-def-name">get_xyz</tt><tt class="py-op">(</tt><tt class="py-param">theta</tt><tt class="py-op">,</tt><tt class="py-param">phi</tt><tt class="py-op">,</tt><tt class="py-param">radius</tt><tt class="p [...]
+<a name="L155"></a><tt class="py-lineno"> 155</tt>  <tt class="py-line">            <tt class="py-comment"># theta normally between 0 and pi (north pole to south pole)</tt> </tt>
+<a name="L156"></a><tt class="py-lineno"> 156</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># phi between -pi and pi</tt> </tt>
+<a name="L157"></a><tt class="py-lineno"> 157</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">y</tt> <tt class="py-op">=</tt> <tt class="py-name">radius</tt> <tt class="py-op">*</tt> <tt class="py-name">math</tt><tt class="py-op">.</tt><tt class="py-name">cos</tt><tt class="py-op">(</tt> <tt class="py-name">theta</tt> <tt class="py-op">)</tt> </tt>
+<a name="L158"></a><tt class="py-lineno"> 158</tt>  <tt class="py-line">            <tt class="py-name">w</tt> <tt class="py-op">=</tt> <tt class="py-name">radius</tt> <tt class="py-op">*</tt> <tt class="py-name">math</tt><tt class="py-op">.</tt><tt class="py-name">sin</tt><tt class="py-op">(</tt> <tt class="py-name">theta</tt> <tt class="py-op">)</tt> </tt>
+<a name="L159"></a><tt class="py-lineno"> 159</tt>  <tt class="py-line">            <tt class="py-name">x</tt> <tt class="py-op">=</tt> <tt class="py-name">w</tt> <tt class="py-op">*</tt> <tt class="py-name">math</tt><tt class="py-op">.</tt><tt class="py-name">cos</tt><tt class="py-op">(</tt> <tt class="py-name">phi</tt> <tt class="py-op">)</tt> </tt>
+<a name="L160"></a><tt class="py-lineno"> 160</tt>  <tt class="py-line">            <tt class="py-name">z</tt> <tt class="py-op">=</tt> <tt class="py-name">w</tt> <tt class="py-op">*</tt> <tt class="py-name">math</tt><tt class="py-op">.</tt><tt class="py-name">sin</tt><tt class="py-op">(</tt> <tt class="py-name">phi</tt> <tt class="py-op">)</tt> </tt>
+<a name="L161"></a><tt class="py-lineno"> 161</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">x</tt><tt class="py-op">,</tt><tt class="py-name">y</tt><tt class="py-op">,</tt><tt class="py-name">z</tt> </tt>
+</div><a name="L162"></a><tt class="py-lineno"> 162</tt>  <tt class="py-line">        <tt class="py-keyword">def</tt> <tt class="py-def-name">draw_half_great_circle</tt><tt class="py-op">(</tt><tt class="py-param">az</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L163"></a><tt class="py-lineno"> 163</tt>  <tt class="py-line">            <tt class="py-keyword">for</tt> <tt class="py-name">i</tt> <tt class="py-keyword">in</tt> <tt class="py-name">range</tt><tt class="py-op">(</tt><tt class="py-name">cp</tt><tt class="py-op">.</tt><tt class="py-name">num_samples_per_circle</tt><tt class="py-op">/</tt><tt class="py-number">2</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L164"></a><tt class="py-lineno"> 164</tt>  <tt class="py-line">                <tt class="py-comment"># let theta exceed 1 pi to draw 2nd half of circle</tt> </tt>
+<a name="L165"></a><tt class="py-lineno"> 165</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-name">theta_start</tt> <tt class="py-op">=</tt> <tt class="py-name">i</tt><tt class="py-op">/</tt><tt id="link-59" class="py-name" targets="Class float=float-class.html"><a title="float" class="py-name" href="#" onclick="return doclink('link-59', 'float', 'link-59');">float</a></tt><tt class="py-op">(</tt><tt class="py-name">cp</tt><tt class="py-op">.</tt><tt  [...]
+<a name="L166"></a><tt class="py-lineno"> 166</tt>  <tt class="py-line">                <tt class="py-name">theta_stop</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">i</tt><tt class="py-op">+</tt><tt class="py-number">1</tt><tt class="py-op">)</tt><tt class="py-op">/</tt><tt id="link-60" class="py-name"><a title="float" class="py-name" href="#" onclick="return doclink('link-60', 'float', 'link-59');">float</a></tt><tt class="py-op">(</tt><tt class="py-name">cp< [...]
+<a name="L167"></a><tt class="py-lineno"> 167</tt>  <tt class="py-line">                <tt class="py-name">phi_start</tt> <tt class="py-op">=</tt> <tt class="py-name">phi_stop</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">az</tt><tt class="py-op">-</tt><tt class="py-number">90.0</tt><tt class="py-op">)</tt><tt class="py-op">/</tt><tt class="py-number">180.0</tt><tt class="py-op">*</tt><tt class="py-name">math</tt><tt class="py-op">.</tt><tt class="py-name">pi [...]
+<a name="L168"></a><tt class="py-lineno"> 168</tt>  <tt class="py-line">                <tt class="py-name">x_start</tt><tt class="py-op">,</tt><tt class="py-name">y_start</tt><tt class="py-op">,</tt><tt class="py-name">z_start</tt> <tt class="py-op">=</tt> <tt id="link-61" class="py-name" targets="Method VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.get_xyz()=VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html#get_xyz"><a title="VisionEgg.PyroApp [...]
+<a name="L169"></a><tt class="py-lineno"> 169</tt>  <tt class="py-line">                <tt class="py-name">x_stop</tt><tt class="py-op">,</tt><tt class="py-name">y_stop</tt><tt class="py-op">,</tt><tt class="py-name">z_stop</tt> <tt class="py-op">=</tt> <tt id="link-62" class="py-name"><a title="VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.get_xyz" class="py-name" href="#" onclick="return doclink('link-62', 'get_xyz', 'link-61');">get_xyz</a></tt><tt class="py-op">(</ [...]
+<a name="L170"></a><tt class="py-lineno"> 170</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glVertex3f</tt><tt class="py-op">(</tt><tt class="py-name">x_start</tt><tt class="py-op">,</tt> <tt class="py-name">y_start</tt><tt class="py-op">,</tt> <tt class="py-name">z_start</tt><tt class="py-op">)</tt> </tt>
+<a name="L171"></a><tt class="py-lineno"> 171</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glVertex3f</tt><tt class="py-op">(</tt><tt class="py-name">x_stop</tt><tt class="py-op">,</tt> <tt class="py-name">y_stop</tt><tt class="py-op">,</tt> <tt class="py-name">z_stop</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L172"></a><tt class="py-lineno"> 172</tt>  <tt class="py-line">        <tt class="py-keyword">def</tt> <tt class="py-def-name">draw_iso_elevation_circle</tt><tt class="py-op">(</tt><tt class="py-param">el</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L173"></a><tt class="py-lineno"> 173</tt>  <tt class="py-line">            <tt class="py-comment"># el from -90 = pi to el 90 = 0</tt> </tt>
+<a name="L174"></a><tt class="py-lineno"> 174</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">theta_start</tt> <tt class="py-op">=</tt> <tt class="py-name">theta_stop</tt> <tt class="py-op">=</tt> <tt class="py-op">-</tt><tt class="py-op">(</tt><tt class="py-name">el</tt><tt class="py-op">-</tt><tt class="py-number">90</tt><tt class="py-op">)</tt> <tt class="py-op">/</tt> <tt class="py-number">180.0</tt> <tt class="py-op">*</tt> <tt class="py-name">m [...]
+<a name="L175"></a><tt class="py-lineno"> 175</tt>  <tt class="py-line">            <tt class="py-keyword">for</tt> <tt class="py-name">i</tt> <tt class="py-keyword">in</tt> <tt class="py-name">range</tt><tt class="py-op">(</tt><tt class="py-name">cp</tt><tt class="py-op">.</tt><tt class="py-name">num_samples_per_circle</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L176"></a><tt class="py-lineno"> 176</tt>  <tt class="py-line">                <tt class="py-name">phi_start</tt> <tt class="py-op">=</tt> <tt class="py-name">i</tt><tt class="py-op">/</tt><tt id="link-63" class="py-name"><a title="float" class="py-name" href="#" onclick="return doclink('link-63', 'float', 'link-59');">float</a></tt><tt class="py-op">(</tt><tt class="py-name">cp</tt><tt class="py-op">.</tt><tt class="py-name">num_samples_per_circle</tt><tt class="py-op">)</tt><t [...]
+<a name="L177"></a><tt class="py-lineno"> 177</tt>  <tt class="py-line">                <tt class="py-name">phi_stop</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">i</tt><tt class="py-op">+</tt><tt class="py-number">1</tt><tt class="py-op">)</tt><tt class="py-op">/</tt><tt id="link-64" class="py-name"><a title="float" class="py-name" href="#" onclick="return doclink('link-64', 'float', 'link-59');">float</a></tt><tt class="py-op">(</tt><tt class="py-name">cp</t [...]
+<a name="L178"></a><tt class="py-lineno"> 178</tt>  <tt class="py-line">                <tt class="py-name">x_start</tt><tt class="py-op">,</tt><tt class="py-name">y_start</tt><tt class="py-op">,</tt><tt class="py-name">z_start</tt> <tt class="py-op">=</tt> <tt id="link-65" class="py-name"><a title="VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.get_xyz" class="py-name" href="#" onclick="return doclink('link-65', 'get_xyz', 'link-61');">get_xyz</a></tt><tt class="py-op"> [...]
+<a name="L179"></a><tt class="py-lineno"> 179</tt>  <tt class="py-line">                <tt class="py-name">x_stop</tt><tt class="py-op">,</tt><tt class="py-name">y_stop</tt><tt class="py-op">,</tt><tt class="py-name">z_stop</tt> <tt class="py-op">=</tt> <tt id="link-66" class="py-name"><a title="VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.get_xyz" class="py-name" href="#" onclick="return doclink('link-66', 'get_xyz', 'link-61');">get_xyz</a></tt><tt class="py-op">(</ [...]
+<a name="L180"></a><tt class="py-lineno"> 180</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glVertex3f</tt><tt class="py-op">(</tt><tt class="py-name">x_start</tt><tt class="py-op">,</tt> <tt class="py-name">y_start</tt><tt class="py-op">,</tt> <tt class="py-name">z_start</tt><tt class="py-op">)</tt> </tt>
+<a name="L181"></a><tt class="py-lineno"> 181</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glVertex3f</tt><tt class="py-op">(</tt><tt class="py-name">x_stop</tt><tt class="py-op">,</tt> <tt class="py-name">y_stop</tt><tt class="py-op">,</tt> <tt class="py-name">z_stop</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L182"></a><tt class="py-lineno"> 182</tt>  <tt class="py-line"> </tt>
+<a name="L183"></a><tt class="py-lineno"> 183</tt>  <tt class="py-line">        <tt class="py-name">cp</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">constant_parameters</tt> </tt>
+<a name="L184"></a><tt class="py-lineno"> 184</tt>  <tt class="py-line">        <tt class="py-comment"># Weird range construction to be sure to include zero.</tt> </tt>
+<a name="L185"></a><tt class="py-lineno"> 185</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">azs_major</tt> <tt class="py-op">=</tt> <tt class="py-name">numpy</tt><tt class="py-op">.</tt><tt class="py-name">concatenate</tt><tt class="py-op">(</tt><tt class="py-op">(</tt> </tt>
+<a name="L186"></a><tt class="py-lineno"> 186</tt>  <tt class="py-line">            <tt class="py-name">numpy</tt><tt class="py-op">.</tt><tt class="py-name">arange</tt><tt class="py-op">(</tt><tt class="py-number">0.0</tt><tt class="py-op">,</tt><tt class="py-number">180.0</tt><tt class="py-op">,</tt><tt class="py-name">cp</tt><tt class="py-op">.</tt><tt class="py-name">az_major_spacing</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L187"></a><tt class="py-lineno"> 187</tt>  <tt class="py-line">            <tt class="py-op">-</tt><tt class="py-name">numpy</tt><tt class="py-op">.</tt><tt class="py-name">arange</tt><tt class="py-op">(</tt><tt class="py-number">0.0</tt><tt class="py-op">,</tt><tt class="py-number">180.0</tt><tt class="py-op">,</tt><tt class="py-name">cp</tt><tt class="py-op">.</tt><tt class="py-name">az_major_spacing</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">1</ [...]
+<a name="L188"></a><tt class="py-lineno"> 188</tt>  <tt class="py-line">        <tt class="py-name">azs_minor</tt> <tt class="py-op">=</tt> <tt class="py-name">numpy</tt><tt class="py-op">.</tt><tt class="py-name">concatenate</tt><tt class="py-op">(</tt><tt class="py-op">(</tt> </tt>
+<a name="L189"></a><tt class="py-lineno"> 189</tt>  <tt class="py-line">            <tt class="py-name">numpy</tt><tt class="py-op">.</tt><tt class="py-name">arange</tt><tt class="py-op">(</tt><tt class="py-number">0.0</tt><tt class="py-op">,</tt><tt class="py-number">180.0</tt><tt class="py-op">,</tt><tt class="py-name">cp</tt><tt class="py-op">.</tt><tt class="py-name">az_minor_spacing</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L190"></a><tt class="py-lineno"> 190</tt>  <tt class="py-line">            <tt class="py-op">-</tt><tt class="py-name">numpy</tt><tt class="py-op">.</tt><tt class="py-name">arange</tt><tt class="py-op">(</tt><tt class="py-number">0.0</tt><tt class="py-op">,</tt><tt class="py-number">180.0</tt><tt class="py-op">,</tt><tt class="py-name">cp</tt><tt class="py-op">.</tt><tt class="py-name">az_minor_spacing</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">1</ [...]
+<a name="L191"></a><tt class="py-lineno"> 191</tt>  <tt class="py-line">        <tt class="py-name">els_major</tt> <tt class="py-op">=</tt> <tt class="py-name">numpy</tt><tt class="py-op">.</tt><tt class="py-name">concatenate</tt><tt class="py-op">(</tt><tt class="py-op">(</tt> </tt>
+<a name="L192"></a><tt class="py-lineno"> 192</tt>  <tt class="py-line">            <tt class="py-name">numpy</tt><tt class="py-op">.</tt><tt class="py-name">arange</tt><tt class="py-op">(</tt><tt class="py-number">0.0</tt><tt class="py-op">,</tt><tt class="py-number">90.0</tt><tt class="py-op">,</tt><tt class="py-name">cp</tt><tt class="py-op">.</tt><tt class="py-name">el_major_spacing</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L193"></a><tt class="py-lineno"> 193</tt>  <tt class="py-line">            <tt class="py-op">-</tt><tt class="py-name">numpy</tt><tt class="py-op">.</tt><tt class="py-name">arange</tt><tt class="py-op">(</tt><tt class="py-number">0.0</tt><tt class="py-op">,</tt><tt class="py-number">90.0</tt><tt class="py-op">,</tt><tt class="py-name">cp</tt><tt class="py-op">.</tt><tt class="py-name">el_major_spacing</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">1</t [...]
+<a name="L194"></a><tt class="py-lineno"> 194</tt>  <tt class="py-line">        <tt class="py-name">els_minor</tt> <tt class="py-op">=</tt> <tt class="py-name">numpy</tt><tt class="py-op">.</tt><tt class="py-name">concatenate</tt><tt class="py-op">(</tt><tt class="py-op">(</tt> </tt>
+<a name="L195"></a><tt class="py-lineno"> 195</tt>  <tt class="py-line">            <tt class="py-name">numpy</tt><tt class="py-op">.</tt><tt class="py-name">arange</tt><tt class="py-op">(</tt><tt class="py-number">0.0</tt><tt class="py-op">,</tt><tt class="py-number">90.0</tt><tt class="py-op">,</tt><tt class="py-name">cp</tt><tt class="py-op">.</tt><tt class="py-name">el_minor_spacing</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L196"></a><tt class="py-lineno"> 196</tt>  <tt class="py-line">            <tt class="py-op">-</tt><tt class="py-name">numpy</tt><tt class="py-op">.</tt><tt class="py-name">arange</tt><tt class="py-op">(</tt><tt class="py-number">0.0</tt><tt class="py-op">,</tt><tt class="py-number">90.0</tt><tt class="py-op">,</tt><tt class="py-name">cp</tt><tt class="py-op">.</tt><tt class="py-name">el_minor_spacing</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">1</t [...]
+<a name="L197"></a><tt class="py-lineno"> 197</tt>  <tt class="py-line"> </tt>
+<a name="L198"></a><tt class="py-lineno"> 198</tt>  <tt class="py-line">        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glNewList</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">cached_minor_lines_display_list</tt><tt class="py-op">,</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_COMPILE</tt><tt class="py-op">)</tt> </tt>
+<a name="L199"></a><tt class="py-lineno"> 199</tt>  <tt class="py-line">        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glBegin</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_LINES</tt><tt class="py-op">)</tt> </tt>
+<a name="L200"></a><tt class="py-lineno"> 200</tt>  <tt class="py-line">        <tt class="py-comment"># az minor</tt> </tt>
+<a name="L201"></a><tt class="py-lineno"> 201</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">for</tt> <tt class="py-name">az</tt> <tt class="py-keyword">in</tt> <tt class="py-name">azs_minor</tt><tt class="py-op">:</tt> </tt>
+<a name="L202"></a><tt class="py-lineno"> 202</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">az</tt> <tt class="py-keyword">in</tt> <tt class="py-name">azs_major</tt><tt class="py-op">:</tt> </tt>
+<a name="L203"></a><tt class="py-lineno"> 203</tt>  <tt class="py-line">                <tt class="py-keyword">continue</tt> <tt class="py-comment"># draw only once as major</tt> </tt>
+<a name="L204"></a><tt class="py-lineno"> 204</tt>  <tt class="py-line">            <tt class="py-name">draw_half_great_circle</tt><tt class="py-op">(</tt><tt class="py-name">az</tt><tt class="py-op">)</tt> </tt>
+<a name="L205"></a><tt class="py-lineno"> 205</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">el</tt> <tt class="py-keyword">in</tt> <tt class="py-name">els_minor</tt><tt class="py-op">:</tt> </tt>
+<a name="L206"></a><tt class="py-lineno"> 206</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">el</tt> <tt class="py-keyword">in</tt> <tt class="py-name">els_major</tt><tt class="py-op">:</tt> </tt>
+<a name="L207"></a><tt class="py-lineno"> 207</tt>  <tt class="py-line">                <tt class="py-keyword">continue</tt> <tt class="py-comment"># draw only once as major</tt> </tt>
+<a name="L208"></a><tt class="py-lineno"> 208</tt>  <tt class="py-line">            <tt class="py-name">draw_iso_elevation_circle</tt><tt class="py-op">(</tt><tt class="py-name">el</tt><tt class="py-op">)</tt> </tt>
+<a name="L209"></a><tt class="py-lineno"> 209</tt>  <tt class="py-line">        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glEnd</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L210"></a><tt class="py-lineno"> 210</tt>  <tt class="py-line">        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glEndList</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L211"></a><tt class="py-lineno"> 211</tt>  <tt class="py-line"> </tt>
+<a name="L212"></a><tt class="py-lineno"> 212</tt>  <tt class="py-line">        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glNewList</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">cached_major_lines_display_list</tt><tt class="py-op">,</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_COMPILE</tt><tt class="py-op">)</tt> </tt>
+<a name="L213"></a><tt class="py-lineno"> 213</tt>  <tt class="py-line">        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glBegin</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_LINES</tt><tt class="py-op">)</tt> </tt>
+<a name="L214"></a><tt class="py-lineno"> 214</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">az</tt> <tt class="py-keyword">in</tt> <tt class="py-name">azs_major</tt><tt class="py-op">:</tt> </tt>
+<a name="L215"></a><tt class="py-lineno"> 215</tt>  <tt class="py-line">            <tt class="py-name">draw_half_great_circle</tt><tt class="py-op">(</tt><tt class="py-name">az</tt><tt class="py-op">)</tt> </tt>
+<a name="L216"></a><tt class="py-lineno"> 216</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">el</tt> <tt class="py-keyword">in</tt> <tt class="py-name">els_major</tt><tt class="py-op">:</tt> </tt>
+<a name="L217"></a><tt class="py-lineno"> 217</tt>  <tt class="py-line">            <tt class="py-name">draw_iso_elevation_circle</tt><tt class="py-op">(</tt><tt class="py-name">el</tt><tt class="py-op">)</tt> </tt>
+<a name="L218"></a><tt class="py-lineno"> 218</tt>  <tt class="py-line">        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glEnd</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L219"></a><tt class="py-lineno"> 219</tt>  <tt class="py-line">        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glEndList</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L220"></a><tt class="py-lineno"> 220</tt>  <tt class="py-line"> </tt>
+<a name="L221"></a><tt class="py-lineno"> 221</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">cp</tt><tt class="py-op">.</tt><tt class="py-name">use_text</tt><tt class="py-op">:</tt> </tt>
+<a name="L222"></a><tt class="py-lineno"> 222</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">labels</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L223"></a><tt class="py-lineno"> 223</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">labels_xyz</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L224"></a><tt class="py-lineno"> 224</tt>  <tt class="py-line">            <tt class="py-name">els_major</tt> <tt class="py-op">=</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">els_major</tt><tt class="py-op">)</tt><tt class="py-op">+</tt><tt class="py-op">[</tt><tt class="py-number">90.0</tt><tt class="py-op">]</tt> <tt class="py-comment"># make sure we have north pole</tt> </tt>
+<a name="L225"></a><tt class="py-lineno"> 225</tt>  <tt class="py-line">            <tt class="py-keyword">for</tt> <tt class="py-name">el</tt> <tt class="py-keyword">in</tt> <tt class="py-name">els_major</tt><tt class="py-op">:</tt> </tt>
+<a name="L226"></a><tt class="py-lineno"> 226</tt>  <tt class="py-line">                <tt class="py-keyword">for</tt> <tt class="py-name">az</tt> <tt class="py-keyword">in</tt> <tt class="py-name">azs_major</tt><tt class="py-op">:</tt> </tt>
+<a name="L227"></a><tt class="py-lineno"> 227</tt>  <tt class="py-line">                    <tt class="py-name">theta</tt> <tt class="py-op">=</tt> <tt class="py-op">-</tt><tt class="py-op">(</tt><tt class="py-name">el</tt><tt class="py-op">-</tt><tt class="py-number">90</tt><tt class="py-op">)</tt> <tt class="py-op">/</tt> <tt class="py-number">180.0</tt> <tt class="py-op">*</tt> <tt class="py-name">math</tt><tt class="py-op">.</tt><tt class="py-name">pi</tt> </tt>
+<a name="L228"></a><tt class="py-lineno"> 228</tt>  <tt class="py-line">                    <tt class="py-name">phi</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">az</tt><tt class="py-op">-</tt><tt class="py-number">90.0</tt><tt class="py-op">)</tt><tt class="py-op">/</tt><tt class="py-number">180.0</tt><tt class="py-op">*</tt><tt class="py-name">math</tt><tt class="py-op">.</tt><tt class="py-name">pi</tt> </tt>
+<a name="L229"></a><tt class="py-lineno"> 229</tt>  <tt class="py-line">                    <tt class="py-name">x</tt><tt class="py-op">,</tt><tt class="py-name">y</tt><tt class="py-op">,</tt><tt class="py-name">z</tt> <tt class="py-op">=</tt> <tt id="link-67" class="py-name"><a title="VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.get_xyz" class="py-name" href="#" onclick="return doclink('link-67', 'get_xyz', 'link-61');">get_xyz</a></tt><tt class="py-op">(</tt><tt clas [...]
+<a name="L230"></a><tt class="py-lineno"> 230</tt>  <tt class="py-line">                    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">labels_xyz</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-name">x</tt><tt class="py-op">,</tt><tt class="py-name">y</tt><tt class="py-op">,</tt><tt class="py-name">z</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L231"></a><tt class="py-lineno"> 231</tt>  <tt class="py-line">                    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">labels</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt> </tt>
+<a name="L232"></a><tt class="py-lineno"> 232</tt>  <tt class="py-line">                        <tt id="link-68" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-68', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-69" class="py-name"><a title="VisionEgg.Text
+VisionEgg.Text.Text" class="py-name" href="#" onclick="return doclink('link-69', 'Text', 'link-5');">Text</a></tt><tt class="py-op">.</tt><tt id="link-70" class="py-name"><a title="VisionEgg.Text
+VisionEgg.Text.Text" class="py-name" href="#" onclick="return doclink('link-70', 'Text', 'link-5');">Text</a></tt><tt class="py-op">(</tt> <tt class="py-name">text</tt> <tt class="py-op">=</tt> <tt class="py-string">'%.0f, %.0f'</tt><tt class="py-op">%</tt><tt class="py-op">(</tt><tt class="py-name">az</tt><tt class="py-op">,</tt><tt class="py-name">el</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L233"></a><tt class="py-lineno"> 233</tt>  <tt class="py-line">                                             <tt class="py-name">font_size</tt> <tt class="py-op">=</tt> <tt class="py-name">cp</tt><tt class="py-op">.</tt><tt class="py-name">font_size</tt><tt class="py-op">,</tt> </tt>
+<a name="L234"></a><tt class="py-lineno"> 234</tt>  <tt class="py-line">                                             <tt class="py-name">color</tt> <tt class="py-op">=</tt> <tt class="py-name">cp</tt><tt class="py-op">.</tt><tt class="py-name">text_color</tt><tt class="py-op">,</tt> </tt>
+<a name="L235"></a><tt class="py-lineno"> 235</tt>  <tt class="py-line">                                             <tt class="py-name">anchor</tt> <tt class="py-op">=</tt> <tt class="py-name">cp</tt><tt class="py-op">.</tt><tt class="py-name">text_anchor</tt><tt class="py-op">,</tt> </tt>
+<a name="L236"></a><tt class="py-lineno"> 236</tt>  <tt class="py-line">                                             <tt class="py-op">)</tt> </tt>
+<a name="L237"></a><tt class="py-lineno"> 237</tt>  <tt class="py-line">                        <tt class="py-op">)</tt> </tt>
+<a name="L238"></a><tt class="py-lineno"> 238</tt>  <tt class="py-line">                    <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">el</tt> <tt class="py-op">==</tt> <tt class="py-op">-</tt><tt class="py-number">90</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-op">(</tt><tt class="py-name">el</tt> <tt class="py-op">==</tt> <tt class="py-number">90</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L239"></a><tt class="py-lineno"> 239</tt>  <tt class="py-line">                        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">labels</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">text</tt> <tt class="py-op">=</tt> <tt class="py-string">'x, %.0f'</tt><tt class="py-op">%</tt><tt class="py- [...]
+<a name="L240"></a><tt class="py-lineno"> 240</tt>  <tt class="py-line">                        <tt class="py-keyword">break</tt> <tt class="py-comment"># only one label at the poles</tt> </tt>
+<a name="L241"></a><tt class="py-lineno"> 241</tt>  <tt class="py-line"> </tt>
+<a name="L242"></a><tt class="py-lineno"> 242</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">labels_xyz</tt> <tt class="py-op">=</tt> <tt class="py-name">Numeric</tt><tt class="py-op">.</tt><tt class="py-name">array</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">labels_xyz</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L243"></a><tt class="py-lineno"> 243</tt>  <tt class="py-line"> </tt>
+<a name="AzElGrid.draw"></a><div id="AzElGrid.draw-def"><a name="L244"></a><tt class="py-lineno"> 244</tt> <a class="py-toggle" href="#" id="AzElGrid.draw-toggle" onclick="return toggle('AzElGrid.draw');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.SphereMap.AzElGrid-class.html#draw">draw</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="AzElGrid.draw-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="AzElGrid.draw-expanded"><a name="L245"></a><tt class="py-lineno"> 245</tt>  <tt class="py-line">        <tt class="py-name">p</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt> </tt>
+<a name="L246"></a><tt class="py-lineno"> 246</tt>  <tt class="py-line">        <tt class="py-name">cp</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">constant_parameters</tt> </tt>
+<a name="L247"></a><tt class="py-lineno"> 247</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">on</tt><tt class="py-op">:</tt> </tt>
+<a name="L248"></a><tt class="py-lineno"> 248</tt>  <tt class="py-line">            <tt class="py-comment"># Set OpenGL state variables</tt> </tt>
+<a name="L249"></a><tt class="py-lineno"> 249</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glDisable</tt><tt class="py-op">(</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_DEPTH_TEST</tt> <tt class="py-op">)</tt> </tt>
+<a name="L250"></a><tt class="py-lineno"> 250</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glDisable</tt><tt class="py-op">(</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE_2D</tt> <tt class="py-op">)</tt>  <tt class="py-comment"># Make sure textures are not drawn</tt> </tt>
+<a name="L251"></a><tt class="py-lineno"> 251</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glMatrixMode</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_MODELVIEW</tt><tt class="py-op">)</tt> </tt>
+<a name="L252"></a><tt class="py-lineno"> 252</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glPushMatrix</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L253"></a><tt class="py-lineno"> 253</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glRotatef</tt><tt class="py-op">(</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">center_azimuth</tt><tt class="py-op">,</tt><tt class="py-number">0.0</tt><tt class="py-op">,</tt><tt class="py-op">-</tt><tt class="py-number">1.0</tt><tt class="py-op">,</tt><tt class="py-number">0.0</tt><tt class="py-op">)</tt> </tt>
+<a name="L254"></a><tt class="py-lineno"> 254</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glRotatef</tt><tt class="py-op">(</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">center_elevation</tt><tt class="py-op">,</tt><tt class="py-number">1.0</tt><tt class="py-op">,</tt><tt class="py-number">0.0</tt><tt class="py-op">,</tt><tt class="py-number">0.0</tt><tt class="py-op">)</tt> </tt>
+<a name="L255"></a><tt class="py-lineno"> 255</tt>  <tt class="py-line"> </tt>
+<a name="L256"></a><tt class="py-lineno"> 256</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">anti_aliasing</tt><tt class="py-op">:</tt> </tt>
+<a name="L257"></a><tt class="py-lineno"> 257</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">minor_line_color</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">4</tt> <tt class="py-keyword">and</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_gave_alpha_w [...]
+<a name="L258"></a><tt class="py-lineno"> 258</tt>  <tt class="py-line">                    <tt class="py-keyword">if</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">minor_line_color</tt><tt class="py-op">[</tt><tt class="py-number">3</tt><tt class="py-op">]</tt> <tt class="py-op">!=</tt> <tt class="py-number">1.0</tt><tt class="py-op">:</tt> </tt>
+<a name="L259"></a><tt class="py-lineno"> 259</tt>  <tt class="py-line">                        <tt id="link-71" class="py-name" targets="Variable VisionEgg.logger=VisionEgg-module.html#logger"><a title="VisionEgg.logger" class="py-name" href="#" onclick="return doclink('link-71', 'logger', 'link-71');">logger</a></tt> <tt class="py-op">=</tt> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">getLogger</tt><tt class="py-op">(</tt><tt class="py-string">'VisionEgg [...]
+<a name="L260"></a><tt class="py-lineno"> 260</tt>  <tt class="py-line">                        <tt id="link-72" class="py-name"><a title="VisionEgg.logger" class="py-name" href="#" onclick="return doclink('link-72', 'logger', 'link-71');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">warning</tt><tt class="py-op">(</tt><tt class="py-string">"The parameter anti_aliasing is "</tt> </tt>
+<a name="L261"></a><tt class="py-lineno"> 261</tt>  <tt class="py-line">                                       <tt class="py-string">"set to true in the AzElGrid "</tt> </tt>
+<a name="L262"></a><tt class="py-lineno"> 262</tt>  <tt class="py-line">                                       <tt class="py-string">"stimulus class, but the color "</tt> </tt>
+<a name="L263"></a><tt class="py-lineno"> 263</tt>  <tt class="py-line">                                       <tt class="py-string">"parameter specifies an alpha "</tt> </tt>
+<a name="L264"></a><tt class="py-lineno"> 264</tt>  <tt class="py-line">                                       <tt class="py-string">"value other than 1.0.  To "</tt> </tt>
+<a name="L265"></a><tt class="py-lineno"> 265</tt>  <tt class="py-line">                                       <tt class="py-string">"acheive the best anti-aliasing, "</tt> </tt>
+<a name="L266"></a><tt class="py-lineno"> 266</tt>  <tt class="py-line">                                       <tt class="py-string">"ensure that the alpha value for "</tt> </tt>
+<a name="L267"></a><tt class="py-lineno"> 267</tt>  <tt class="py-line">                                       <tt class="py-string">"the color parameter is 1.0."</tt><tt class="py-op">)</tt> </tt>
+<a name="L268"></a><tt class="py-lineno"> 268</tt>  <tt class="py-line">                        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_gave_alpha_warning</tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L269"></a><tt class="py-lineno"> 269</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">major_line_color</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">4</tt> <tt class="py-keyword">and</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_gave_alpha_w [...]
+<a name="L270"></a><tt class="py-lineno"> 270</tt>  <tt class="py-line">                    <tt class="py-keyword">if</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">major_line_color</tt><tt class="py-op">[</tt><tt class="py-number">3</tt><tt class="py-op">]</tt> <tt class="py-op">!=</tt> <tt class="py-number">1.0</tt><tt class="py-op">:</tt> </tt>
+<a name="L271"></a><tt class="py-lineno"> 271</tt>  <tt class="py-line">                        <tt id="link-73" class="py-name"><a title="VisionEgg.logger" class="py-name" href="#" onclick="return doclink('link-73', 'logger', 'link-71');">logger</a></tt> <tt class="py-op">=</tt> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">getLogger</tt><tt class="py-op">(</tt><tt class="py-string">'VisionEgg.SphereMap'</tt><tt class="py-op">)</tt> </tt>
+<a name="L272"></a><tt class="py-lineno"> 272</tt>  <tt class="py-line">                        <tt id="link-74" class="py-name"><a title="VisionEgg.logger" class="py-name" href="#" onclick="return doclink('link-74', 'logger', 'link-71');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">warning</tt><tt class="py-op">(</tt><tt class="py-string">"The parameter anti_aliasing is "</tt> </tt>
+<a name="L273"></a><tt class="py-lineno"> 273</tt>  <tt class="py-line">                                       <tt class="py-string">"set to true in the AzElGrid "</tt> </tt>
+<a name="L274"></a><tt class="py-lineno"> 274</tt>  <tt class="py-line">                                       <tt class="py-string">"stimulus class, but the color "</tt> </tt>
+<a name="L275"></a><tt class="py-lineno"> 275</tt>  <tt class="py-line">                                       <tt class="py-string">"parameter specifies an alpha "</tt> </tt>
+<a name="L276"></a><tt class="py-lineno"> 276</tt>  <tt class="py-line">                                       <tt class="py-string">"value other than 1.0.  To "</tt> </tt>
+<a name="L277"></a><tt class="py-lineno"> 277</tt>  <tt class="py-line">                                       <tt class="py-string">"acheive the best anti-aliasing, "</tt> </tt>
+<a name="L278"></a><tt class="py-lineno"> 278</tt>  <tt class="py-line">                                       <tt class="py-string">"ensure that the alpha value for "</tt> </tt>
+<a name="L279"></a><tt class="py-lineno"> 279</tt>  <tt class="py-line">                                       <tt class="py-string">"the color parameter is 1.0."</tt><tt class="py-op">)</tt> </tt>
+<a name="L280"></a><tt class="py-lineno"> 280</tt>  <tt class="py-line">                        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_gave_alpha_warning</tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L281"></a><tt class="py-lineno"> 281</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glEnable</tt><tt class="py-op">(</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_LINE_SMOOTH</tt> <tt class="py-op">)</tt> </tt>
+<a name="L282"></a><tt class="py-lineno"> 282</tt>  <tt class="py-line">                <tt class="py-comment"># allow max_alpha value to control blending</tt> </tt>
+<a name="L283"></a><tt class="py-lineno"> 283</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glEnable</tt><tt class="py-op">(</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_BLEND</tt> <tt class="py-op">)</tt> </tt>
+<a name="L284"></a><tt class="py-lineno"> 284</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glBlendFunc</tt><tt class="py-op">(</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_SRC_ALPHA</tt><tt class="py-op">,</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_ONE_MINUS_SRC_ALPHA</tt> <tt class="py-op">)</tt> </tt>
+<a name="L285"></a><tt class="py-lineno"> 285</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L286"></a><tt class="py-lineno"> 286</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glDisable</tt><tt class="py-op">(</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_BLEND</tt> <tt class="py-op">)</tt> </tt>
+<a name="L287"></a><tt class="py-lineno"> 287</tt>  <tt class="py-line"> </tt>
+<a name="L288"></a><tt class="py-lineno"> 288</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">minor_line_color</tt><tt class="py-op">)</tt><tt class="py-op">==</tt><tt class="py-number">3</tt><tt class="py-op">:</tt> </tt>
+<a name="L289"></a><tt class="py-lineno"> 289</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glColor3f</tt><tt class="py-op">(</tt><tt class="py-op">*</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">minor_line_color</tt><tt class="py-op">)</tt> </tt>
+<a name="L290"></a><tt class="py-lineno"> 290</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">minor_line_color</tt><tt class="py-op">)</tt><tt class="py-op">==</tt><tt class="py-number">4</tt><tt class="py-op">:</tt> </tt>
+<a name="L291"></a><tt class="py-lineno"> 291</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glColor4f</tt><tt class="py-op">(</tt><tt class="py-op">*</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">minor_line_color</tt><tt class="py-op">)</tt> </tt>
+<a name="L292"></a><tt class="py-lineno"> 292</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glLineWidth</tt><tt class="py-op">(</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">minor_line_width</tt><tt class="py-op">)</tt> </tt>
+<a name="L293"></a><tt class="py-lineno"> 293</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glCallList</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">cached_minor_lines_display_list</tt><tt class="py-op">)</tt> </tt>
+<a name="L294"></a><tt class="py-lineno"> 294</tt>  <tt class="py-line"> </tt>
+<a name="L295"></a><tt class="py-lineno"> 295</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">major_line_color</tt><tt class="py-op">)</tt><tt class="py-op">==</tt><tt class="py-number">3</tt><tt class="py-op">:</tt> </tt>
+<a name="L296"></a><tt class="py-lineno"> 296</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glColor3f</tt><tt class="py-op">(</tt><tt class="py-op">*</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">major_line_color</tt><tt class="py-op">)</tt> </tt>
+<a name="L297"></a><tt class="py-lineno"> 297</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">major_line_color</tt><tt class="py-op">)</tt><tt class="py-op">==</tt><tt class="py-number">4</tt><tt class="py-op">:</tt> </tt>
+<a name="L298"></a><tt class="py-lineno"> 298</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glColor4f</tt><tt class="py-op">(</tt><tt class="py-op">*</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">major_line_color</tt><tt class="py-op">)</tt> </tt>
+<a name="L299"></a><tt class="py-lineno"> 299</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glLineWidth</tt><tt class="py-op">(</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">major_line_width</tt><tt class="py-op">)</tt> </tt>
+<a name="L300"></a><tt class="py-lineno"> 300</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glCallList</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">cached_major_lines_display_list</tt><tt class="py-op">)</tt> </tt>
+<a name="L301"></a><tt class="py-lineno"> 301</tt>  <tt class="py-line"> </tt>
+<a name="L302"></a><tt class="py-lineno"> 302</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">anti_aliasing</tt><tt class="py-op">:</tt> </tt>
+<a name="L303"></a><tt class="py-lineno"> 303</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glDisable</tt><tt class="py-op">(</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_LINE_SMOOTH</tt> <tt class="py-op">)</tt> <tt class="py-comment"># turn off</tt> </tt>
+<a name="L304"></a><tt class="py-lineno"> 304</tt>  <tt class="py-line"> </tt>
+<a name="L305"></a><tt class="py-lineno"> 305</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">cp</tt><tt class="py-op">.</tt><tt class="py-name">use_text</tt><tt class="py-op">:</tt> </tt>
+<a name="L306"></a><tt class="py-lineno"> 306</tt>  <tt class="py-line">                <tt class="py-name">my_view</tt> <tt class="py-op">=</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">my_viewport</tt> </tt>
+<a name="L307"></a><tt class="py-lineno"> 307</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">my_view</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-op">(</tt><tt class="py-keyword">not</tt> <tt class="py-name">my_view</tt><tt class="py-op">.</tt><tt class="py-name">_is_drawing</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L308"></a><tt class="py-lineno"> 308</tt>  <tt class="py-line">                    <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">'use_text is True, but my_viewport not (properly) assigned'</tt><tt class="py-op">)</tt> </tt>
+<a name="L309"></a><tt class="py-lineno"> 309</tt>  <tt class="py-line"> </tt>
+<a name="L310"></a><tt class="py-lineno"> 310</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">text_viewport</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt> <tt class="py-keyword">or</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">text_viewport_orig</tt> <tt class="py-op">!=</tt> <tt class="py-name">my_view</tt><tt class="py-op">:</tt> </tt>
+<a name="L311"></a><tt class="py-lineno"> 311</tt>  <tt class="py-line">                    <tt class="py-comment"># make viewport for text (uses default orthographic projection)</tt> </tt>
+<a name="L312"></a><tt class="py-lineno"> 312</tt>  <tt class="py-line"><tt class="py-comment"></tt>                    <tt class="py-name">vp</tt> <tt class="py-op">=</tt> <tt class="py-name">my_view</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt> </tt>
+<a name="L313"></a><tt class="py-lineno"> 313</tt>  <tt class="py-line">                    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">text_viewport</tt> <tt class="py-op">=</tt> <tt id="link-75" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-75', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-76" class="py-name"><a title="VisionEgg.Core" class="py-name" href="#" onclick="return do [...]
+<a name="L314"></a><tt class="py-lineno"> 314</tt>  <tt class="py-line">                                                                 <tt class="py-name">position</tt><tt class="py-op">=</tt><tt class="py-name">vp</tt><tt class="py-op">.</tt><tt class="py-name">position</tt><tt class="py-op">,</tt> </tt>
+<a name="L315"></a><tt class="py-lineno"> 315</tt>  <tt class="py-line">                                                                 <tt id="link-78" class="py-name" targets="Variable VisionEgg.Core.Screen.size=VisionEgg.Core.Screen-class.html#size"><a title="VisionEgg.Core.Screen.size" class="py-name" href="#" onclick="return doclink('link-78', 'size', 'link-78');">size</a></tt><tt class="py-op">=</tt><tt class="py-name">vp</tt><tt class="py-op">.</tt><tt id="link-79" class="py-name [...]
+<a name="L316"></a><tt class="py-lineno"> 316</tt>  <tt class="py-line">                                                                 <tt class="py-name">anchor</tt><tt class="py-op">=</tt><tt class="py-name">vp</tt><tt class="py-op">.</tt><tt class="py-name">anchor</tt><tt class="py-op">,</tt> </tt>
+<a name="L317"></a><tt class="py-lineno"> 317</tt>  <tt class="py-line">                                                                 <tt class="py-op">)</tt> </tt>
+<a name="L318"></a><tt class="py-lineno"> 318</tt>  <tt class="py-line">                    <tt class="py-name">lowerleft</tt> <tt class="py-op">=</tt> <tt id="link-80" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-80', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt class="py-name">_get_lowerleft</tt><tt class="py-op">(</tt><tt class="py-name">vp</tt><tt class="py-op">.</tt><tt class="py-name">position</tt><tt class="p [...]
+<a name="L319"></a><tt class="py-lineno"> 319</tt>  <tt class="py-line">                    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">text_viewport</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">projection</tt><tt class="py-op">.</tt><tt id="link-82" class="py-name" targets="Method VisionEgg.Core.ProjectionBaseClass.stateless_translate()=VisionEgg.Core.ProjectionBaseClass-class.html#stateless_trans [...]
+<a name="L320"></a><tt class="py-lineno"> 320</tt>  <tt class="py-line">                    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">text_viewport_orig</tt> <tt class="py-op">=</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">my_viewport</tt> <tt class="py-comment"># in case my_viewport changes, change text_viewport</tt> </tt>
+<a name="L321"></a><tt class="py-lineno"> 321</tt>  <tt class="py-line"> </tt>
+<a name="L322"></a><tt class="py-lineno"> 322</tt>  <tt class="py-line">                <tt class="py-comment"># draw text labels</tt> </tt>
+<a name="L323"></a><tt class="py-lineno"> 323</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-name">my_proj</tt> <tt class="py-op">=</tt> <tt class="py-name">my_view</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">projection</tt> </tt>
+<a name="L324"></a><tt class="py-lineno"> 324</tt>  <tt class="py-line"> </tt>
+<a name="L325"></a><tt class="py-lineno"> 325</tt>  <tt class="py-line">                <tt class="py-name">xyz</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">labels_xyz</tt> </tt>
+<a name="L326"></a><tt class="py-lineno"> 326</tt>  <tt class="py-line"> </tt>
+<a name="L327"></a><tt class="py-lineno"> 327</tt>  <tt class="py-line">                <tt class="py-name">t</tt> <tt class="py-op">=</tt> <tt id="link-83" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-83', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-84" class="py-name"><a title="VisionEgg.ThreeDeeMath" class="py-name" href="#" onclick="return doclink('link-84', 'ThreeDeeMath', 'link-9');">ThreeDeeMath</a> [...]
+<a name="L328"></a><tt class="py-lineno"> 328</tt>  <tt class="py-line">                <tt class="py-name">t</tt><tt class="py-op">.</tt><tt id="link-86" class="py-name" targets="Method VisionEgg.Core.ProjectionBaseClass.rotate()=VisionEgg.Core.ProjectionBaseClass-class.html#rotate,Method VisionEgg.ThreeDeeMath.TransformMatrix.rotate()=VisionEgg.ThreeDeeMath.TransformMatrix-class.html#rotate"><a title="VisionEgg.Core.ProjectionBaseClass.rotate
+VisionEgg.ThreeDeeMath.TransformMatrix.rotate" class="py-name" href="#" onclick="return doclink('link-86', 'rotate', 'link-86');">rotate</a></tt><tt class="py-op">(</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">center_azimuth</tt><tt class="py-op">,</tt><tt class="py-number">0.0</tt><tt class="py-op">,</tt><tt class="py-op">-</tt><tt class="py-number">1.0</tt><tt class="py-op">,</tt><tt class="py-number">0.0</tt>  <tt class="py-op">)</tt> <tt class="py-commen [...]
+<a name="L329"></a><tt class="py-lineno"> 329</tt>  <tt class="py-line">                <tt class="py-name">t</tt><tt class="py-op">.</tt><tt id="link-87" class="py-name"><a title="VisionEgg.Core.ProjectionBaseClass.rotate
+VisionEgg.ThreeDeeMath.TransformMatrix.rotate" class="py-name" href="#" onclick="return doclink('link-87', 'rotate', 'link-86');">rotate</a></tt><tt class="py-op">(</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">center_elevation</tt><tt class="py-op">,</tt><tt class="py-number">1.0</tt><tt class="py-op">,</tt><tt class="py-number">0.0</tt><tt class="py-op">,</tt><tt class="py-number">0.0</tt> <tt class="py-op">)</tt> </tt>
+<a name="L330"></a><tt class="py-lineno"> 330</tt>  <tt class="py-line"> </tt>
+<a name="L331"></a><tt class="py-lineno"> 331</tt>  <tt class="py-line">                <tt class="py-name">xyz</tt> <tt class="py-op">=</tt> <tt class="py-name">t</tt><tt class="py-op">.</tt><tt id="link-88" class="py-name" targets="Method VisionEgg.ThreeDeeMath.TransformMatrix.transform_vertices()=VisionEgg.ThreeDeeMath.TransformMatrix-class.html#transform_vertices"><a title="VisionEgg.ThreeDeeMath.TransformMatrix.transform_vertices" class="py-name" href="#" onclick="return doclink('li [...]
+<a name="L332"></a><tt class="py-lineno"> 332</tt>  <tt class="py-line"> </tt>
+<a name="L333"></a><tt class="py-lineno"> 333</tt>  <tt class="py-line">                <tt class="py-name">clip</tt> <tt class="py-op">=</tt> <tt class="py-name">my_proj</tt><tt class="py-op">.</tt><tt id="link-89" class="py-name" targets="Method VisionEgg.Core.ProjectionBaseClass.eye_2_clip()=VisionEgg.Core.ProjectionBaseClass-class.html#eye_2_clip"><a title="VisionEgg.Core.ProjectionBaseClass.eye_2_clip" class="py-name" href="#" onclick="return doclink('link-89', 'eye_2_clip', 'link-8 [...]
+<a name="L334"></a><tt class="py-lineno"> 334</tt>  <tt class="py-line">                <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L335"></a><tt class="py-lineno"> 335</tt>  <tt class="py-line">                    <tt class="py-comment"># this is much faster when no OverflowError...</tt> </tt>
+<a name="L336"></a><tt class="py-lineno"> 336</tt>  <tt class="py-line"><tt class="py-comment"></tt>                    <tt class="py-name">window_coords</tt> <tt class="py-op">=</tt> <tt class="py-name">my_view</tt><tt class="py-op">.</tt><tt id="link-90" class="py-name" targets="Method VisionEgg.Core.Viewport.clip_2_window()=VisionEgg.Core.Viewport-class.html#clip_2_window"><a title="VisionEgg.Core.Viewport.clip_2_window" class="py-name" href="#" onclick="return doclink('link-90', 'cli [...]
+<a name="L337"></a><tt class="py-lineno"> 337</tt>  <tt class="py-line">                    <tt class="py-name">all_at_once</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
+<a name="L338"></a><tt class="py-lineno"> 338</tt>  <tt class="py-line">                <tt class="py-keyword">except</tt> <tt class="py-name">OverflowError</tt><tt class="py-op">:</tt> </tt>
+<a name="L339"></a><tt class="py-lineno"> 339</tt>  <tt class="py-line">                    <tt class="py-name">all_at_once</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
+<a name="L340"></a><tt class="py-lineno"> 340</tt>  <tt class="py-line">                <tt class="py-name">draw_labels</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L341"></a><tt class="py-lineno"> 341</tt>  <tt class="py-line">                <tt class="py-keyword">for</tt> <tt class="py-name">i</tt> <tt class="py-keyword">in</tt> <tt class="py-name">range</tt><tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">labels</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L342"></a><tt class="py-lineno"> 342</tt>  <tt class="py-line">                    <tt class="py-keyword">if</tt> <tt class="py-name">clip</tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">,</tt><tt class="py-number">3</tt><tt class="py-op">]</tt> <tt class="py-op"><</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> <tt class="py-keyword">continue</tt> <tt class="py-comment"># this vertex is not on screen</tt> </tt>
+<a name="L343"></a><tt class="py-lineno"> 343</tt>  <tt class="py-line">                    <tt class="py-name">label</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">labels</tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">]</tt> </tt>
+<a name="L344"></a><tt class="py-lineno"> 344</tt>  <tt class="py-line">                    <tt class="py-keyword">if</tt> <tt class="py-name">all_at_once</tt><tt class="py-op">:</tt> </tt>
+<a name="L345"></a><tt class="py-lineno"> 345</tt>  <tt class="py-line">                        <tt class="py-name">this_pos</tt> <tt class="py-op">=</tt> <tt class="py-name">window_coords</tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">,</tt><tt class="py-op">:</tt><tt class="py-number">2</tt><tt class="py-op">]</tt> </tt>
+<a name="L346"></a><tt class="py-lineno"> 346</tt>  <tt class="py-line">                    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L347"></a><tt class="py-lineno"> 347</tt>  <tt class="py-line">                        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L348"></a><tt class="py-lineno"> 348</tt>  <tt class="py-line">                            <tt class="py-name">window_coords</tt> <tt class="py-op">=</tt> <tt class="py-name">my_view</tt><tt class="py-op">.</tt><tt id="link-91" class="py-name"><a title="VisionEgg.Core.Viewport.clip_2_window" class="py-name" href="#" onclick="return doclink('link-91', 'clip_2_window', 'link-90');">clip_2_window</a></tt><tt class="py-op">(</tt><tt class="py-name">clip</tt><tt class="py-op">[</tt>< [...]
+<a name="L349"></a><tt class="py-lineno"> 349</tt>  <tt class="py-line">                        <tt class="py-keyword">except</tt> <tt class="py-name">OverflowError</tt><tt class="py-op">:</tt> </tt>
+<a name="L350"></a><tt class="py-lineno"> 350</tt>  <tt class="py-line">                            <tt class="py-keyword">continue</tt> <tt class="py-comment"># not much we can do with this vertex, either</tt> </tt>
+<a name="L351"></a><tt class="py-lineno"> 351</tt>  <tt class="py-line">                        <tt class="py-name">this_pos</tt> <tt class="py-op">=</tt> <tt class="py-name">window_coords</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-number">2</tt><tt class="py-op">]</tt> </tt>
+<a name="L352"></a><tt class="py-lineno"> 352</tt>  <tt class="py-line">                    <tt class="py-name">label</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">position</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">this_pos</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">+</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name" [...]
+<a name="L353"></a><tt class="py-lineno"> 353</tt>  <tt class="py-line">                                                 <tt class="py-name">this_pos</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-op">+</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">text_offset</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L354"></a><tt class="py-lineno"> 354</tt>  <tt class="py-line">                    <tt class="py-name">draw_labels</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">label</tt><tt class="py-op">)</tt> </tt>
+<a name="L355"></a><tt class="py-lineno"> 355</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">text_viewport</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">stimuli</tt> <tt class="py-op">=</tt> <tt class="py-name">draw_labels</tt> </tt>
+<a name="L356"></a><tt class="py-lineno"> 356</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">text_viewport</tt><tt class="py-op">.</tt><tt id="link-92" class="py-name" targets="Method VisionEgg.Core.FixationSpot.draw()=VisionEgg.Core.FixationSpot-class.html#draw,Method VisionEgg.Core.Stimulus.draw()=VisionEgg.Core.Stimulus-class.html#draw,Method VisionEgg.Core.Viewport.draw()=VisionEgg.Core.Viewport-class.html#draw,Metho [...]
+VisionEgg.Core.Stimulus.draw
+VisionEgg.Core.Viewport.draw
+VisionEgg.Dots.DotArea2D.draw
+VisionEgg.Gratings.SinGrating2D.draw
+VisionEgg.Gratings.SinGrating3D.draw
+VisionEgg.MoreStimuli.Arrow.draw
+VisionEgg.MoreStimuli.FilledCircle.draw
+VisionEgg.MoreStimuli.Rectangle3D.draw
+VisionEgg.MoreStimuli.Target2D.draw
+VisionEgg.SphereMap.AzElGrid.draw
+VisionEgg.SphereMap.SphereGrating.draw
+VisionEgg.SphereMap.SphereMap.draw
+VisionEgg.SphereMap.SphereWindow.draw
+VisionEgg.Text.BitmapText.draw
+VisionEgg.Text.StrokeText.draw
+VisionEgg.Text.Text.draw
+VisionEgg.Textures.FixationCross.draw
+VisionEgg.Textures.SpinningDrum.draw
+VisionEgg.Textures.TextureStimulus.draw
+VisionEgg.Textures.TextureStimulus3D.draw
+VisionEgg.WrappedText.WrappedText.draw" class="py-name" href="#" onclick="return doclink('link-92', 'draw', 'link-92');">draw</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L357"></a><tt class="py-lineno"> 357</tt>  <tt class="py-line">                <tt class="py-name">my_view</tt><tt class="py-op">.</tt><tt id="link-93" class="py-name" targets="Method VisionEgg.Core.Screen.make_current()=VisionEgg.Core.Screen-class.html#make_current,Method VisionEgg.Core.Viewport.make_current()=VisionEgg.Core.Viewport-class.html#make_current"><a title="VisionEgg.Core.Screen.make_current
+VisionEgg.Core.Viewport.make_current" class="py-name" href="#" onclick="return doclink('link-93', 'make_current', 'link-93');">make_current</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-comment"># restore viewport</tt> </tt>
+<a name="L358"></a><tt class="py-lineno"> 358</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glPopMatrix</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L359"></a><tt class="py-lineno"> 359</tt>  <tt class="py-line"> </tt>
+<a name="SphereMap"></a><div id="SphereMap-def"><a name="L360"></a><tt class="py-lineno"> 360</tt> <a class="py-toggle" href="#" id="SphereMap-toggle" onclick="return toggle('SphereMap');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.SphereMap.SphereMap-class.html">SphereMap</a><tt class="py-op">(</tt><tt class="py-base-class">VisionEgg</tt><tt class="py-op">.</tt><tt class="py-base-class">Textures</tt><tt class="py-op">.</tt><tt class [...]
+</div><div id="SphereMap-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="SphereMap-expanded"><a name="L361"></a><tt class="py-lineno"> 361</tt>  <tt class="py-line">    <tt class="py-docstring">"""Mercator mapping of rectangular texture onto sphere.</tt> </tt>
+<a name="L362"></a><tt class="py-lineno"> 362</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L363"></a><tt class="py-lineno"> 363</tt>  <tt class="py-line"><tt class="py-docstring">    Parameters</tt> </tt>
+<a name="L364"></a><tt class="py-lineno"> 364</tt>  <tt class="py-line"><tt class="py-docstring">    ==========</tt> </tt>
+<a name="L365"></a><tt class="py-lineno"> 365</tt>  <tt class="py-line"><tt class="py-docstring">    center_azimuth     -- (Real)</tt> </tt>
+<a name="L366"></a><tt class="py-lineno"> 366</tt>  <tt class="py-line"><tt class="py-docstring">                          Default: 0.0</tt> </tt>
+<a name="L367"></a><tt class="py-lineno"> 367</tt>  <tt class="py-line"><tt class="py-docstring">    center_elevation   -- (Real)</tt> </tt>
+<a name="L368"></a><tt class="py-lineno"> 368</tt>  <tt class="py-line"><tt class="py-docstring">                          Default: 0.0</tt> </tt>
+<a name="L369"></a><tt class="py-lineno"> 369</tt>  <tt class="py-line"><tt class="py-docstring">    contrast           -- (Real)</tt> </tt>
+<a name="L370"></a><tt class="py-lineno"> 370</tt>  <tt class="py-line"><tt class="py-docstring">                          Default: 1.0</tt> </tt>
+<a name="L371"></a><tt class="py-lineno"> 371</tt>  <tt class="py-line"><tt class="py-docstring">    on                 -- (Boolean)</tt> </tt>
+<a name="L372"></a><tt class="py-lineno"> 372</tt>  <tt class="py-line"><tt class="py-docstring">                          Default: True</tt> </tt>
+<a name="L373"></a><tt class="py-lineno"> 373</tt>  <tt class="py-line"><tt class="py-docstring">    radius             -- (Real)</tt> </tt>
+<a name="L374"></a><tt class="py-lineno"> 374</tt>  <tt class="py-line"><tt class="py-docstring">                          Default: 1.0</tt> </tt>
+<a name="L375"></a><tt class="py-lineno"> 375</tt>  <tt class="py-line"><tt class="py-docstring">    slices             -- (UnsignedInteger)</tt> </tt>
+<a name="L376"></a><tt class="py-lineno"> 376</tt>  <tt class="py-line"><tt class="py-docstring">                          Default: 30</tt> </tt>
+<a name="L377"></a><tt class="py-lineno"> 377</tt>  <tt class="py-line"><tt class="py-docstring">    stacks             -- (UnsignedInteger)</tt> </tt>
+<a name="L378"></a><tt class="py-lineno"> 378</tt>  <tt class="py-line"><tt class="py-docstring">                          Default: 30</tt> </tt>
+<a name="L379"></a><tt class="py-lineno"> 379</tt>  <tt class="py-line"><tt class="py-docstring">    texture            -- source of texture data (Instance of <class 'VisionEgg.Textures.Texture'>)</tt> </tt>
+<a name="L380"></a><tt class="py-lineno"> 380</tt>  <tt class="py-line"><tt class="py-docstring">                          Inherited from VisionEgg.Textures.TextureStimulusBaseClass</tt> </tt>
+<a name="L381"></a><tt class="py-lineno"> 381</tt>  <tt class="py-line"><tt class="py-docstring">                          Default: (determined at runtime)</tt> </tt>
+<a name="L382"></a><tt class="py-lineno"> 382</tt>  <tt class="py-line"><tt class="py-docstring">    texture_mag_filter -- OpenGL filter enum (Integer)</tt> </tt>
+<a name="L383"></a><tt class="py-lineno"> 383</tt>  <tt class="py-line"><tt class="py-docstring">                          Inherited from VisionEgg.Textures.TextureStimulusBaseClass</tt> </tt>
+<a name="L384"></a><tt class="py-lineno"> 384</tt>  <tt class="py-line"><tt class="py-docstring">                          Default: GL_LINEAR (9729)</tt> </tt>
+<a name="L385"></a><tt class="py-lineno"> 385</tt>  <tt class="py-line"><tt class="py-docstring">    texture_min_filter -- OpenGL filter enum (Integer)</tt> </tt>
+<a name="L386"></a><tt class="py-lineno"> 386</tt>  <tt class="py-line"><tt class="py-docstring">                          Inherited from VisionEgg.Textures.TextureStimulusBaseClass</tt> </tt>
+<a name="L387"></a><tt class="py-lineno"> 387</tt>  <tt class="py-line"><tt class="py-docstring">                          Default: (GL enum determined at runtime)</tt> </tt>
+<a name="L388"></a><tt class="py-lineno"> 388</tt>  <tt class="py-line"><tt class="py-docstring">    texture_wrap_s     -- OpenGL texture wrap enum (Integer)</tt> </tt>
+<a name="L389"></a><tt class="py-lineno"> 389</tt>  <tt class="py-line"><tt class="py-docstring">                          Inherited from VisionEgg.Textures.TextureStimulusBaseClass</tt> </tt>
+<a name="L390"></a><tt class="py-lineno"> 390</tt>  <tt class="py-line"><tt class="py-docstring">                          Default: (GL enum determined at runtime)</tt> </tt>
+<a name="L391"></a><tt class="py-lineno"> 391</tt>  <tt class="py-line"><tt class="py-docstring">    texture_wrap_t     -- OpenGL texture wrap enum (Integer)</tt> </tt>
+<a name="L392"></a><tt class="py-lineno"> 392</tt>  <tt class="py-line"><tt class="py-docstring">                          Inherited from VisionEgg.Textures.TextureStimulusBaseClass</tt> </tt>
+<a name="L393"></a><tt class="py-lineno"> 393</tt>  <tt class="py-line"><tt class="py-docstring">                          Default: (GL enum determined at runtime)</tt> </tt>
+<a name="L394"></a><tt class="py-lineno"> 394</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L395"></a><tt class="py-lineno"> 395</tt>  <tt class="py-line"><tt class="py-docstring">    Constant Parameters</tt> </tt>
+<a name="L396"></a><tt class="py-lineno"> 396</tt>  <tt class="py-line"><tt class="py-docstring">    ===================</tt> </tt>
+<a name="L397"></a><tt class="py-lineno"> 397</tt>  <tt class="py-line"><tt class="py-docstring">    internal_format   -- format with which OpenGL uses texture data (OpenGL data type enum) (Integer)</tt> </tt>
+<a name="L398"></a><tt class="py-lineno"> 398</tt>  <tt class="py-line"><tt class="py-docstring">                         Default: GL_RGB (6407)</tt> </tt>
+<a name="L399"></a><tt class="py-lineno"> 399</tt>  <tt class="py-line"><tt class="py-docstring">    mipmaps_enabled   -- Are mipmaps enabled? (Boolean)</tt> </tt>
+<a name="L400"></a><tt class="py-lineno"> 400</tt>  <tt class="py-line"><tt class="py-docstring">                         Default: True</tt> </tt>
+<a name="L401"></a><tt class="py-lineno"> 401</tt>  <tt class="py-line"><tt class="py-docstring">    shrink_texture_ok -- Allow automatic shrinking of texture if too big? (Boolean)</tt> </tt>
+<a name="L402"></a><tt class="py-lineno"> 402</tt>  <tt class="py-line"><tt class="py-docstring">                         Default: False</tt> </tt>
+<a name="L403"></a><tt class="py-lineno"> 403</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L404"></a><tt class="py-lineno"> 404</tt>  <tt class="py-line"> </tt>
+<a name="L405"></a><tt class="py-lineno"> 405</tt>  <tt class="py-line">    <tt id="link-94" class="py-name"><a title="VisionEgg.ClassWithParameters.parameters_and_defaults
+VisionEgg.Core.FixationSpot.parameters_and_defaults
+VisionEgg.Core.ProjectionBaseClass.parameters_and_defaults
+VisionEgg.Core.Screen.parameters_and_defaults
+VisionEgg.Core.Viewport.parameters_and_defaults
+VisionEgg.Daq.Buffered.parameters_and_defaults
+VisionEgg.Dots.DotArea2D.parameters_and_defaults
+VisionEgg.FlowControl.Presentation.parameters_and_defaults
+VisionEgg.Gratings.AlphaGratingCommon.parameters_and_defaults
+VisionEgg.Gratings.LuminanceGratingCommon.parameters_and_defaults
+VisionEgg.Gratings.SinGrating2D.parameters_and_defaults
+VisionEgg.Gratings.SinGrating3D.parameters_and_defaults
+VisionEgg.MoreStimuli.Arrow.parameters_and_defaults
+VisionEgg.MoreStimuli.FilledCircle.parameters_and_defaults
+VisionEgg.MoreStimuli.Rectangle3D.parameters_and_defaults
+VisionEgg.MoreStimuli.Target2D.parameters_and_defaults
+VisionEgg.PyroApps.EPhysGUI.Loop.parameters_and_defaults
+VisionEgg.SphereMap.AzElGrid.parameters_and_defaults
+VisionEgg.SphereMap.SphereGrating.parameters_and_defaults
+VisionEgg.SphereMap.SphereMap.parameters_and_defaults
+VisionEgg.SphereMap.SphereWindow.parameters_and_defaults
+VisionEgg.Text.BitmapText.parameters_and_defaults
+VisionEgg.Text.GlutTextBase.parameters_and_defaults
+VisionEgg.Text.StrokeText.parameters_and_defaults
+VisionEgg.Text.Text.parameters_and_defaults
+VisionEgg.Textures.FixationCross.parameters_and_defaults
+VisionEgg.Textures.SpinningDrum.parameters_and_defaults
+VisionEgg.Textures.TextureStimulus.parameters_and_defaults
+VisionEgg.Textures.TextureStimulus3D.parameters_and_defaults
+VisionEgg.Textures.TextureStimulusBaseClass.parameters_and_defaults
+VisionEgg.WrappedText.WrappedText.parameters_and_defaults" class="py-name" href="#" onclick="return doclink('link-94', 'parameters_and_defaults', 'link-17');">parameters_and_defaults</a></tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> </tt>
+<a name="L406"></a><tt class="py-lineno"> 406</tt>  <tt class="py-line">        <tt class="py-string">'on'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-name">True</tt><tt class="py-op">,</tt> </tt>
+<a name="L407"></a><tt class="py-lineno"> 407</tt>  <tt class="py-line">              <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-95" class="py-name"><a title="VisionEgg.ParameterTypes.Boolean" class="py-name" href="#" onclick="return doclink('link-95', 'Boolean', 'link-18');">Boolean</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L408"></a><tt class="py-lineno"> 408</tt>  <tt class="py-line">        <tt class="py-string">'contrast'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-number">1.0</tt><tt class="py-op">,</tt> </tt>
+<a name="L409"></a><tt class="py-lineno"> 409</tt>  <tt class="py-line">                    <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-96" class="py-name"><a title="VisionEgg.ParameterTypes.Real" class="py-name" href="#" onclick="return doclink('link-96', 'Real', 'link-19');">Real</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L410"></a><tt class="py-lineno"> 410</tt>  <tt class="py-line">        <tt class="py-string">'center_azimuth'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-number">0.0</tt><tt class="py-op">,</tt> <tt class="py-comment"># 0=right, 90=right</tt> </tt>
+<a name="L411"></a><tt class="py-lineno"> 411</tt>  <tt class="py-line">                          <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-97" class="py-name"><a title="VisionEgg.ParameterTypes.Real" class="py-name" href="#" onclick="return doclink('link-97', 'Real', 'link-19');">Real</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L412"></a><tt class="py-lineno"> 412</tt>  <tt class="py-line">        <tt class="py-string">'center_elevation'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-number">0.0</tt><tt class="py-op">,</tt> <tt class="py-comment"># 0=right, 90=up</tt> </tt>
+<a name="L413"></a><tt class="py-lineno"> 413</tt>  <tt class="py-line">                            <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-98" class="py-name"><a title="VisionEgg.ParameterTypes.Real" class="py-name" href="#" onclick="return doclink('link-98', 'Real', 'link-19');">Real</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L414"></a><tt class="py-lineno"> 414</tt>  <tt class="py-line"> </tt>
+<a name="L415"></a><tt class="py-lineno"> 415</tt>  <tt class="py-line">        <tt class="py-comment"># Changing these parameters will cause re-computation of display list (may cause frame skip)</tt> </tt>
+<a name="L416"></a><tt class="py-lineno"> 416</tt>  <tt class="py-line">        <tt class="py-string">'radius'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-number">1.0</tt><tt class="py-op">,</tt> </tt>
+<a name="L417"></a><tt class="py-lineno"> 417</tt>  <tt class="py-line">                  <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-99" class="py-name"><a title="VisionEgg.ParameterTypes.Real" class="py-name" href="#" onclick="return doclink('link-99', 'Real', 'link-19');">Real</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L418"></a><tt class="py-lineno"> 418</tt>  <tt class="py-line">        <tt class="py-string">'slices'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-number">30</tt><tt class="py-op">,</tt> </tt>
+<a name="L419"></a><tt class="py-lineno"> 419</tt>  <tt class="py-line">                  <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-100" class="py-name"><a title="VisionEgg.ParameterTypes.UnsignedInteger" class="py-name" href="#" onclick="return doclink('link-100', 'UnsignedInteger', 'link-47');">UnsignedInteger</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L420"></a><tt class="py-lineno"> 420</tt>  <tt class="py-line">        <tt class="py-string">'stacks'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-number">30</tt><tt class="py-op">,</tt> </tt>
+<a name="L421"></a><tt class="py-lineno"> 421</tt>  <tt class="py-line">                  <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-101" class="py-name"><a title="VisionEgg.ParameterTypes.UnsignedInteger" class="py-name" href="#" onclick="return doclink('link-101', 'UnsignedInteger', 'link-47');">UnsignedInteger</a></tt><tt class="py-op">)</tt><tt class="py-op">}</tt> </tt>
+<a name="L422"></a><tt class="py-lineno"> 422</tt>  <tt class="py-line"> </tt>
+<a name="L423"></a><tt class="py-lineno"> 423</tt>  <tt class="py-line">    <tt class="py-name">__slots__</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt> </tt>
+<a name="L424"></a><tt class="py-lineno"> 424</tt>  <tt class="py-line">        <tt class="py-string">'cached_display_list'</tt><tt class="py-op">,</tt> </tt>
+<a name="L425"></a><tt class="py-lineno"> 425</tt>  <tt class="py-line">        <tt class="py-string">'_cached_radius'</tt><tt class="py-op">,</tt> </tt>
+<a name="L426"></a><tt class="py-lineno"> 426</tt>  <tt class="py-line">        <tt class="py-string">'_cached_slices'</tt><tt class="py-op">,</tt> </tt>
+<a name="L427"></a><tt class="py-lineno"> 427</tt>  <tt class="py-line">        <tt class="py-string">'_cached_stacks'</tt><tt class="py-op">,</tt> </tt>
+<a name="L428"></a><tt class="py-lineno"> 428</tt>  <tt class="py-line">        <tt class="py-op">)</tt> </tt>
+<a name="L429"></a><tt class="py-lineno"> 429</tt>  <tt class="py-line"> </tt>
+<a name="SphereMap.__init__"></a><div id="SphereMap.__init__-def"><a name="L430"></a><tt class="py-lineno"> 430</tt> <a class="py-toggle" href="#" id="SphereMap.__init__-toggle" onclick="return toggle('SphereMap.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.SphereMap.SphereMap-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt><tt class="py-op">**</tt><tt class=" [...]
+</div><div id="SphereMap.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="SphereMap.__init__-expanded"><a name="L431"></a><tt class="py-lineno"> 431</tt>  <tt class="py-line">        <tt id="link-102" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-102', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-103" class="py-name"><a title="VisionEgg.Textures" class="py-name" href="#"  [...]
+VisionEgg.Configuration.Config.__init__
+VisionEgg.Core.FixationSpot.__init__
+VisionEgg.Core.FrameTimer.__init__
+VisionEgg.Core.ModelView.__init__
+VisionEgg.Core.OrthographicProjection.__init__
+VisionEgg.Core.OrthographicProjectionNoZClip.__init__
+VisionEgg.Core.PerspectiveProjection.__init__
+VisionEgg.Core.Projection.__init__
+VisionEgg.Core.ProjectionBaseClass.__init__
+VisionEgg.Core.Screen.__init__
+VisionEgg.Core.SimplePerspectiveProjection.__init__
+VisionEgg.Core.Stimulus.__init__
+VisionEgg.Core.Viewport.__init__
+VisionEgg.Daq.Channel.__init__
+VisionEgg.Daq.DaqMode.__init__
+VisionEgg.Daq.Device.__init__
+VisionEgg.Daq.Functionality.__init__
+VisionEgg.Daq.SignalType.__init__
+VisionEgg.DaqKeyboard.KeyboardTriggerInController.__init__
+VisionEgg.DaqLPT.LPTChannel.__init__
+VisionEgg.DaqLPT.LPTDevice.__init__
+VisionEgg.DaqLPT.LPTTriggerInController.__init__
+VisionEgg.DaqLPT.LPTTriggerOutController.__init__
+VisionEgg.Deprecated.Message.__init__
+VisionEgg.Dots.DotArea2D.__init__
+VisionEgg.FlowControl.ConstantController.__init__
+VisionEgg.FlowControl.Controller.__init__
+VisionEgg.FlowControl.EncapsulatedController.__init__
+VisionEgg.FlowControl.EvalStringController.__init__
+VisionEgg.FlowControl.ExecStringController.__init__
+VisionEgg.FlowControl.FunctionController.__init__
+VisionEgg.FlowControl.Presentation.__init__
+VisionEgg.GLTrace.Wrapper.__init__
+VisionEgg.GUI.AppWindow.__init__
+VisionEgg.GUI.GetKeypressDialog.__init__
+VisionEgg.GUI.GraphicsConfigurationWindow.__init__
+VisionEgg.GUI.InfoFrame.__init__
+VisionEgg.GUI.ProgressBar.__init__
+VisionEgg.GUI.ToplevelDialog.__init__
+VisionEgg.Gratings.SinGrating2D.__init__
+VisionEgg.Gratings.SinGrating3D.__init__
+VisionEgg.MoreStimuli.Arrow.__init__
+VisionEgg.MoreStimuli.FilledCircle.__init__
+VisionEgg.MoreStimuli.Rectangle3D.__init__
+VisionEgg.MoreStimuli.Target2D.__init__
+VisionEgg.ParameterTypes.AnyOf.__init__
+VisionEgg.ParameterTypes.Instance.__init__
+VisionEgg.ParameterTypes.Sequence.__init__
+VisionEgg.ParameterTypes.SubClass.__init__
+VisionEgg.PyroApps.AST_ext.AST_Visitor.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalMetaParameters.__init__
+VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.__init__
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.__init__
+VisionEgg.PyroApps.DropinGUI.DropinMetaParameters.__init__
+VisionEgg.PyroApps.DropinServer.DropinMetaController.__init__
+VisionEgg.PyroApps.EPhysGUI.AppWindow.__init__
+VisionEgg.PyroApps.EPhysGUI.BarButton.__init__
+VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase.__init__
+VisionEgg.PyroApps.EPhysGUI.GammaFrame.__init__
+VisionEgg.PyroApps.EPhysGUI.ImageSequenceLauncher.__init__
+VisionEgg.PyroApps.EPhysGUI.Loop.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopContainedObject.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopParamDialog.__init__
+VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.__init__
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.__init__
+VisionEgg.PyroApps.EPhysServer.EPhysServer.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingMetaParameters.__init__
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.GridGUI.GridControlFrame.__init__
+VisionEgg.PyroApps.GridGUI.GridMetaParameters.__init__
+VisionEgg.PyroApps.GridServer.GridMetaController.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetMetaParameters.__init__
+VisionEgg.PyroApps.MouseTargetServer.MousePositionController.__init__
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetOrientationController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetPositionController.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.CallbackEntry.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionParameters.__init__
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingMetaParameters.__init__
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumMetaParameters.__init__
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.__init__
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.__init__
+VisionEgg.PyroApps.TargetGUI.TargetMetaParameters.__init__
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.__init__
+VisionEgg.PyroClient.PyroClient.__init__
+VisionEgg.PyroHelpers.PyroConstantController.__init__
+VisionEgg.PyroHelpers.PyroEncapsulatedController.__init__
+VisionEgg.PyroHelpers.PyroEvalStringController.__init__
+VisionEgg.PyroHelpers.PyroExecStringController.__init__
+VisionEgg.PyroHelpers.PyroListenController.__init__
+VisionEgg.PyroHelpers.PyroLocalDictController.__init__
+VisionEgg.PyroHelpers.PyroServer.__init__
+VisionEgg.QuickTime.MovieTexture.__init__
+VisionEgg.ResponseControl.KeyboardResponseController.__init__
+VisionEgg.ResponseControl.ResponseController.__init__
+VisionEgg.SphereMap.AzElGrid.__init__
+VisionEgg.SphereMap.SphereGrating.__init__
+VisionEgg.SphereMap.SphereMap.__init__
+VisionEgg.SphereMap.SphereWindow.__init__
+VisionEgg.TCPController.SocketListenController.__init__
+VisionEgg.TCPController.TCPController.__init__
+VisionEgg.TCPController.TCPServer.__init__
+VisionEgg.Text.BitmapText.__init__
+VisionEgg.Text.GlutTextBase.__init__
+VisionEgg.Text.StrokeText.__init__
+VisionEgg.Text.Text.__init__
+VisionEgg.Textures.FixationCross.__init__
+VisionEgg.Textures.Mask2D.__init__
+VisionEgg.Textures.SpinningDrum.__init__
+VisionEgg.Textures.Texture.__init__
+VisionEgg.Textures.TextureFromFile.__init__
+VisionEgg.Textures.TextureObject.__init__
+VisionEgg.Textures.TextureStimulusBaseClass.__init__
+VisionEgg.ThreeDeeMath.TransformMatrix.__init__
+VisionEgg.WrappedText.WrappedText.__init__
+VisionEgg.qtmovie.Movie.__init__
+VisionEgg.qtmovie.Rect.__init__" class="py-name" href="#" onclick="return doclink('link-105', '__init__', 'link-58');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt><tt class="py-op">**</tt><tt class="py-name">kw</tt><tt class="py-op">)</tt> </tt>
+<a name="L432"></a><tt class="py-lineno"> 432</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">cached_display_list</tt> <tt class="py-op">=</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glGenLists</tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> <tt class="py-comment"># Allocate a new display list</tt> </tt>
+<a name="L433"></a><tt class="py-lineno"> 433</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__rebuild_display_list</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L434"></a><tt class="py-lineno"> 434</tt>  <tt class="py-line"> </tt>
+<a name="SphereMap.__rebuild_display_list"></a><div id="SphereMap.__rebuild_display_list-def"><a name="L435"></a><tt class="py-lineno"> 435</tt> <a class="py-toggle" href="#" id="SphereMap.__rebuild_display_list-toggle" onclick="return toggle('SphereMap.__rebuild_display_list');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.SphereMap.SphereMap-class.html#__rebuild_display_list">__rebuild_display_list</a><tt class="py-op">(</tt><tt cl [...]
+</div><div id="SphereMap.__rebuild_display_list-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="SphereMap.__rebuild_display_list-expanded"><a name="L436"></a><tt class="py-lineno"> 436</tt>  <tt class="py-line">        <tt class="py-name">p</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt> </tt>
+<a name="L437"></a><tt class="py-lineno"> 437</tt>  <tt class="py-line"> </tt>
+<a name="L438"></a><tt class="py-lineno"> 438</tt>  <tt class="py-line">        <tt class="py-name">s_gain</tt> <tt class="py-op">=</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">texture</tt><tt class="py-op">.</tt><tt class="py-name">buf_rf</tt> <tt class="py-op">-</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">texture</tt><tt class="py-op">.</tt><tt class="py-name">buf_lf</tt> </tt>
+<a name="L439"></a><tt class="py-lineno"> 439</tt>  <tt class="py-line">        <tt class="py-name">t_gain</tt> <tt class="py-op">=</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">texture</tt><tt class="py-op">.</tt><tt class="py-name">buf_bf</tt> <tt class="py-op">-</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">texture</tt><tt class="py-op">.</tt><tt class="py-name">buf_tf</tt> </tt>
+<a name="L440"></a><tt class="py-lineno"> 440</tt>  <tt class="py-line"> </tt>
+<a name="L441"></a><tt class="py-lineno"> 441</tt>  <tt class="py-line">        <tt class="py-name">s_offs</tt> <tt class="py-op">=</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">texture</tt><tt class="py-op">.</tt><tt class="py-name">buf_lf</tt> </tt>
+<a name="L442"></a><tt class="py-lineno"> 442</tt>  <tt class="py-line">        <tt class="py-name">t_offs</tt> <tt class="py-op">=</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">texture</tt><tt class="py-op">.</tt><tt class="py-name">buf_tf</tt> </tt>
+<a name="L443"></a><tt class="py-lineno"> 443</tt>  <tt class="py-line"> </tt>
+<a name="L444"></a><tt class="py-lineno"> 444</tt>  <tt class="py-line">        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glNewList</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">cached_display_list</tt><tt class="py-op">,</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_COMPILE</tt><tt class="py-op">)</tt> </tt>
+<a name="L445"></a><tt class="py-lineno"> 445</tt>  <tt class="py-line">        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glBegin</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_QUADS</tt><tt class="py-op">)</tt> </tt>
+<a name="L446"></a><tt class="py-lineno"> 446</tt>  <tt class="py-line"> </tt>
+<a name="L447"></a><tt class="py-lineno"> 447</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">stack</tt> <tt class="py-keyword">in</tt> <tt class="py-name">range</tt><tt class="py-op">(</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">stacks</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L448"></a><tt class="py-lineno"> 448</tt>  <tt class="py-line">            <tt class="py-name">stack_upper_frac</tt> <tt class="py-op">=</tt> <tt id="link-106" class="py-name"><a title="float" class="py-name" href="#" onclick="return doclink('link-106', 'float', 'link-59');">float</a></tt><tt class="py-op">(</tt><tt class="py-name">stack</tt><tt class="py-op">+</tt><tt class="py-number">1</tt><tt class="py-op">)</tt><tt class="py-op">/</tt><tt class="py-name">p</tt><tt class="py [...]
+<a name="L449"></a><tt class="py-lineno"> 449</tt>  <tt class="py-line">            <tt class="py-name">stack_lower_frac</tt> <tt class="py-op">=</tt> <tt id="link-107" class="py-name"><a title="float" class="py-name" href="#" onclick="return doclink('link-107', 'float', 'link-59');">float</a></tt><tt class="py-op">(</tt><tt class="py-name">stack</tt><tt class="py-op">)</tt><tt class="py-op">/</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">stacks</tt> </tt>
+<a name="L450"></a><tt class="py-lineno"> 450</tt>  <tt class="py-line">            <tt class="py-name">theta_upper</tt> <tt class="py-op">=</tt> <tt class="py-name">stack_upper_frac</tt> <tt class="py-op">*</tt> <tt class="py-name">math</tt><tt class="py-op">.</tt><tt class="py-name">pi</tt> </tt>
+<a name="L451"></a><tt class="py-lineno"> 451</tt>  <tt class="py-line">            <tt class="py-name">theta_lower</tt> <tt class="py-op">=</tt> <tt class="py-name">stack_lower_frac</tt> <tt class="py-op">*</tt> <tt class="py-name">math</tt><tt class="py-op">.</tt><tt class="py-name">pi</tt> </tt>
+<a name="L452"></a><tt class="py-lineno"> 452</tt>  <tt class="py-line">            <tt class="py-name">y_upper</tt> <tt class="py-op">=</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">radius</tt> <tt class="py-op">*</tt> <tt class="py-name">math</tt><tt class="py-op">.</tt><tt class="py-name">cos</tt><tt class="py-op">(</tt> <tt class="py-name">theta_upper</tt> <tt class="py-op">)</tt> </tt>
+<a name="L453"></a><tt class="py-lineno"> 453</tt>  <tt class="py-line">            <tt class="py-name">w_upper</tt> <tt class="py-op">=</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">radius</tt> <tt class="py-op">*</tt> <tt class="py-name">math</tt><tt class="py-op">.</tt><tt class="py-name">sin</tt><tt class="py-op">(</tt> <tt class="py-name">theta_upper</tt> <tt class="py-op">)</tt> </tt>
+<a name="L454"></a><tt class="py-lineno"> 454</tt>  <tt class="py-line">            <tt class="py-name">y_lower</tt> <tt class="py-op">=</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">radius</tt> <tt class="py-op">*</tt> <tt class="py-name">math</tt><tt class="py-op">.</tt><tt class="py-name">cos</tt><tt class="py-op">(</tt> <tt class="py-name">theta_lower</tt> <tt class="py-op">)</tt> </tt>
+<a name="L455"></a><tt class="py-lineno"> 455</tt>  <tt class="py-line">            <tt class="py-name">w_lower</tt> <tt class="py-op">=</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">radius</tt> <tt class="py-op">*</tt> <tt class="py-name">math</tt><tt class="py-op">.</tt><tt class="py-name">sin</tt><tt class="py-op">(</tt> <tt class="py-name">theta_lower</tt> <tt class="py-op">)</tt> </tt>
+<a name="L456"></a><tt class="py-lineno"> 456</tt>  <tt class="py-line">            <tt class="py-keyword">for</tt> <tt class="py-name">slice</tt> <tt class="py-keyword">in</tt> <tt class="py-name">range</tt><tt class="py-op">(</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">slices</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L457"></a><tt class="py-lineno"> 457</tt>  <tt class="py-line">                <tt class="py-name">slice_start_frac</tt> <tt class="py-op">=</tt> <tt id="link-108" class="py-name"><a title="float" class="py-name" href="#" onclick="return doclink('link-108', 'float', 'link-59');">float</a></tt><tt class="py-op">(</tt><tt class="py-name">slice</tt><tt class="py-op">)</tt><tt class="py-op">/</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">slices</tt> </tt>
+<a name="L458"></a><tt class="py-lineno"> 458</tt>  <tt class="py-line">                <tt class="py-name">slice_stop_frac</tt> <tt class="py-op">=</tt> <tt id="link-109" class="py-name"><a title="float" class="py-name" href="#" onclick="return doclink('link-109', 'float', 'link-59');">float</a></tt><tt class="py-op">(</tt><tt class="py-name">slice</tt><tt class="py-op">+</tt><tt class="py-number">1</tt><tt class="py-op">)</tt><tt class="py-op">/</tt><tt class="py-name">p</tt><tt class= [...]
+<a name="L459"></a><tt class="py-lineno"> 459</tt>  <tt class="py-line">                <tt class="py-name">phi_start</tt> <tt class="py-op">=</tt> <tt class="py-name">slice_start_frac</tt> <tt class="py-op">*</tt> <tt class="py-number">2</tt> <tt class="py-op">*</tt> <tt class="py-name">math</tt><tt class="py-op">.</tt><tt class="py-name">pi</tt> </tt>
+<a name="L460"></a><tt class="py-lineno"> 460</tt>  <tt class="py-line">                <tt class="py-name">phi_stop</tt> <tt class="py-op">=</tt> <tt class="py-name">slice_stop_frac</tt> <tt class="py-op">*</tt> <tt class="py-number">2</tt> <tt class="py-op">*</tt> <tt class="py-name">math</tt><tt class="py-op">.</tt><tt class="py-name">pi</tt> </tt>
+<a name="L461"></a><tt class="py-lineno"> 461</tt>  <tt class="py-line">                <tt class="py-name">x_start_upper</tt> <tt class="py-op">=</tt> <tt class="py-name">w_upper</tt> <tt class="py-op">*</tt> <tt class="py-name">math</tt><tt class="py-op">.</tt><tt class="py-name">cos</tt><tt class="py-op">(</tt><tt class="py-name">phi_start</tt><tt class="py-op">)</tt> </tt>
+<a name="L462"></a><tt class="py-lineno"> 462</tt>  <tt class="py-line">                <tt class="py-name">x_start_lower</tt> <tt class="py-op">=</tt> <tt class="py-name">w_lower</tt> <tt class="py-op">*</tt> <tt class="py-name">math</tt><tt class="py-op">.</tt><tt class="py-name">cos</tt><tt class="py-op">(</tt><tt class="py-name">phi_start</tt><tt class="py-op">)</tt> </tt>
+<a name="L463"></a><tt class="py-lineno"> 463</tt>  <tt class="py-line">                <tt class="py-name">x_stop_upper</tt> <tt class="py-op">=</tt> <tt class="py-name">w_upper</tt> <tt class="py-op">*</tt> <tt class="py-name">math</tt><tt class="py-op">.</tt><tt class="py-name">cos</tt><tt class="py-op">(</tt><tt class="py-name">phi_stop</tt><tt class="py-op">)</tt> </tt>
+<a name="L464"></a><tt class="py-lineno"> 464</tt>  <tt class="py-line">                <tt class="py-name">x_stop_lower</tt> <tt class="py-op">=</tt> <tt class="py-name">w_lower</tt> <tt class="py-op">*</tt> <tt class="py-name">math</tt><tt class="py-op">.</tt><tt class="py-name">cos</tt><tt class="py-op">(</tt><tt class="py-name">phi_stop</tt><tt class="py-op">)</tt> </tt>
+<a name="L465"></a><tt class="py-lineno"> 465</tt>  <tt class="py-line">                <tt class="py-name">z_start_upper</tt> <tt class="py-op">=</tt> <tt class="py-name">w_upper</tt> <tt class="py-op">*</tt> <tt class="py-name">math</tt><tt class="py-op">.</tt><tt class="py-name">sin</tt><tt class="py-op">(</tt><tt class="py-name">phi_start</tt><tt class="py-op">)</tt> </tt>
+<a name="L466"></a><tt class="py-lineno"> 466</tt>  <tt class="py-line">                <tt class="py-name">z_start_lower</tt> <tt class="py-op">=</tt> <tt class="py-name">w_lower</tt> <tt class="py-op">*</tt> <tt class="py-name">math</tt><tt class="py-op">.</tt><tt class="py-name">sin</tt><tt class="py-op">(</tt><tt class="py-name">phi_start</tt><tt class="py-op">)</tt> </tt>
+<a name="L467"></a><tt class="py-lineno"> 467</tt>  <tt class="py-line">                <tt class="py-name">z_stop_upper</tt> <tt class="py-op">=</tt> <tt class="py-name">w_upper</tt> <tt class="py-op">*</tt> <tt class="py-name">math</tt><tt class="py-op">.</tt><tt class="py-name">sin</tt><tt class="py-op">(</tt><tt class="py-name">phi_stop</tt><tt class="py-op">)</tt> </tt>
+<a name="L468"></a><tt class="py-lineno"> 468</tt>  <tt class="py-line">                <tt class="py-name">z_stop_lower</tt> <tt class="py-op">=</tt> <tt class="py-name">w_lower</tt> <tt class="py-op">*</tt> <tt class="py-name">math</tt><tt class="py-op">.</tt><tt class="py-name">sin</tt><tt class="py-op">(</tt><tt class="py-name">phi_stop</tt><tt class="py-op">)</tt> </tt>
+<a name="L469"></a><tt class="py-lineno"> 469</tt>  <tt class="py-line"> </tt>
+<a name="L470"></a><tt class="py-lineno"> 470</tt>  <tt class="py-line">                <tt class="py-name">tex_l</tt> <tt class="py-op">=</tt> <tt class="py-name">slice_start_frac</tt><tt class="py-op">*</tt><tt class="py-name">s_gain</tt><tt class="py-op">+</tt><tt class="py-name">s_offs</tt> </tt>
+<a name="L471"></a><tt class="py-lineno"> 471</tt>  <tt class="py-line">                <tt class="py-name">tex_r</tt> <tt class="py-op">=</tt> <tt class="py-name">slice_stop_frac</tt><tt class="py-op">*</tt><tt class="py-name">s_gain</tt><tt class="py-op">+</tt><tt class="py-name">s_offs</tt> </tt>
+<a name="L472"></a><tt class="py-lineno"> 472</tt>  <tt class="py-line">                <tt class="py-name">tex_b</tt> <tt class="py-op">=</tt> <tt class="py-name">stack_lower_frac</tt><tt class="py-op">*</tt><tt class="py-name">t_gain</tt><tt class="py-op">+</tt><tt class="py-name">t_offs</tt> </tt>
+<a name="L473"></a><tt class="py-lineno"> 473</tt>  <tt class="py-line">                <tt class="py-name">tex_t</tt> <tt class="py-op">=</tt> <tt class="py-name">stack_upper_frac</tt><tt class="py-op">*</tt><tt class="py-name">t_gain</tt><tt class="py-op">+</tt><tt class="py-name">t_offs</tt> </tt>
+<a name="L474"></a><tt class="py-lineno"> 474</tt>  <tt class="py-line"> </tt>
+<a name="L475"></a><tt class="py-lineno"> 475</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glTexCoord2f</tt><tt class="py-op">(</tt><tt class="py-name">tex_l</tt><tt class="py-op">,</tt><tt class="py-name">tex_t</tt><tt class="py-op">)</tt> </tt>
+<a name="L476"></a><tt class="py-lineno"> 476</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glVertex3f</tt><tt class="py-op">(</tt><tt class="py-name">x_start_upper</tt><tt class="py-op">,</tt> <tt class="py-name">y_upper</tt><tt class="py-op">,</tt> <tt class="py-name">z_start_upper</tt><tt class="py-op">)</tt> </tt>
+<a name="L477"></a><tt class="py-lineno"> 477</tt>  <tt class="py-line"> </tt>
+<a name="L478"></a><tt class="py-lineno"> 478</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glTexCoord2f</tt><tt class="py-op">(</tt><tt class="py-name">tex_r</tt><tt class="py-op">,</tt><tt class="py-name">tex_t</tt><tt class="py-op">)</tt> </tt>
+<a name="L479"></a><tt class="py-lineno"> 479</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glVertex3f</tt><tt class="py-op">(</tt><tt class="py-name">x_stop_upper</tt><tt class="py-op">,</tt> <tt class="py-name">y_upper</tt><tt class="py-op">,</tt> <tt class="py-name">z_stop_upper</tt><tt class="py-op">)</tt> </tt>
+<a name="L480"></a><tt class="py-lineno"> 480</tt>  <tt class="py-line"> </tt>
+<a name="L481"></a><tt class="py-lineno"> 481</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glTexCoord2f</tt><tt class="py-op">(</tt><tt class="py-name">tex_r</tt><tt class="py-op">,</tt><tt class="py-name">tex_b</tt><tt class="py-op">)</tt> </tt>
+<a name="L482"></a><tt class="py-lineno"> 482</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glVertex3f</tt><tt class="py-op">(</tt><tt class="py-name">x_stop_lower</tt><tt class="py-op">,</tt> <tt class="py-name">y_lower</tt><tt class="py-op">,</tt> <tt class="py-name">z_stop_lower</tt><tt class="py-op">)</tt> </tt>
+<a name="L483"></a><tt class="py-lineno"> 483</tt>  <tt class="py-line"> </tt>
+<a name="L484"></a><tt class="py-lineno"> 484</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glTexCoord2f</tt><tt class="py-op">(</tt><tt class="py-name">tex_l</tt><tt class="py-op">,</tt><tt class="py-name">tex_b</tt><tt class="py-op">)</tt> </tt>
+<a name="L485"></a><tt class="py-lineno"> 485</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glVertex3f</tt><tt class="py-op">(</tt><tt class="py-name">x_start_lower</tt><tt class="py-op">,</tt> <tt class="py-name">y_lower</tt><tt class="py-op">,</tt> <tt class="py-name">z_start_lower</tt><tt class="py-op">)</tt> </tt>
+<a name="L486"></a><tt class="py-lineno"> 486</tt>  <tt class="py-line"> </tt>
+<a name="L487"></a><tt class="py-lineno"> 487</tt>  <tt class="py-line">        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glEnd</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L488"></a><tt class="py-lineno"> 488</tt>  <tt class="py-line">        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glEndList</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L489"></a><tt class="py-lineno"> 489</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_cached_radius</tt> <tt class="py-op">=</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">radius</tt> </tt>
+<a name="L490"></a><tt class="py-lineno"> 490</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_cached_slices</tt> <tt class="py-op">=</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">slices</tt> </tt>
+<a name="L491"></a><tt class="py-lineno"> 491</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_cached_stacks</tt> <tt class="py-op">=</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">stacks</tt> </tt>
+</div><a name="L492"></a><tt class="py-lineno"> 492</tt>  <tt class="py-line"> </tt>
+<a name="SphereMap.draw"></a><div id="SphereMap.draw-def"><a name="L493"></a><tt class="py-lineno"> 493</tt> <a class="py-toggle" href="#" id="SphereMap.draw-toggle" onclick="return toggle('SphereMap.draw');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.SphereMap.SphereMap-class.html#draw">draw</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="SphereMap.draw-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="SphereMap.draw-expanded"><a name="L494"></a><tt class="py-lineno"> 494</tt>  <tt class="py-line">        <tt class="py-docstring">"""Redraw the scene on every frame.</tt> </tt>
+<a name="L495"></a><tt class="py-lineno"> 495</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L496"></a><tt class="py-lineno"> 496</tt>  <tt class="py-line">        <tt class="py-name">p</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt> </tt>
+<a name="L497"></a><tt class="py-lineno"> 497</tt>  <tt class="py-line"> </tt>
+<a name="L498"></a><tt class="py-lineno"> 498</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_cached_radius</tt> <tt class="py-op">!=</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">radius</tt> <tt class="py-keyword">or</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_cached_slices</tt> <tt class="py-op">!=</tt> <tt class="py-name">p</tt><tt  [...]
+<a name="L499"></a><tt class="py-lineno"> 499</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__rebuild_display_list</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L500"></a><tt class="py-lineno"> 500</tt>  <tt class="py-line"> </tt>
+<a name="L501"></a><tt class="py-lineno"> 501</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">on</tt><tt class="py-op">:</tt> </tt>
+<a name="L502"></a><tt class="py-lineno"> 502</tt>  <tt class="py-line">            <tt class="py-comment"># Set OpenGL state variables</tt> </tt>
+<a name="L503"></a><tt class="py-lineno"> 503</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glEnable</tt><tt class="py-op">(</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_DEPTH_TEST</tt> <tt class="py-op">)</tt> </tt>
+<a name="L504"></a><tt class="py-lineno"> 504</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glEnable</tt><tt class="py-op">(</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE_2D</tt> <tt class="py-op">)</tt>  <tt class="py-comment"># Make sure textures are drawn</tt> </tt>
+<a name="L505"></a><tt class="py-lineno"> 505</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glEnable</tt><tt class="py-op">(</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_BLEND</tt> <tt class="py-op">)</tt> <tt class="py-comment"># Contrast control implemented through blending</tt> </tt>
+<a name="L506"></a><tt class="py-lineno"> 506</tt>  <tt class="py-line"> </tt>
+<a name="L507"></a><tt class="py-lineno"> 507</tt>  <tt class="py-line">            <tt class="py-comment"># All of the contrast control stuff is somewhat arcane and</tt> </tt>
+<a name="L508"></a><tt class="py-lineno"> 508</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># not very clear from reading the code, so here is how it</tt> </tt>
+<a name="L509"></a><tt class="py-lineno"> 509</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># works in English. (Not that it makes it any more clear!)</tt> </tt>
+<a name="L510"></a><tt class="py-lineno"> 510</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment">#</tt> </tt>
+<a name="L511"></a><tt class="py-lineno"> 511</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># In the final "textured fragment" (before being blended</tt> </tt>
+<a name="L512"></a><tt class="py-lineno"> 512</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># to the framebuffer), the color values are equal to those</tt> </tt>
+<a name="L513"></a><tt class="py-lineno"> 513</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># of the texture (with the exception of pixels around the</tt> </tt>
+<a name="L514"></a><tt class="py-lineno"> 514</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># edges which have their amplitudes reduced due to</tt> </tt>
+<a name="L515"></a><tt class="py-lineno"> 515</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># anti-aliasing and are intermediate between the color of</tt> </tt>
+<a name="L516"></a><tt class="py-lineno"> 516</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># the texture and mid-gray), and the alpha value is set to</tt> </tt>
+<a name="L517"></a><tt class="py-lineno"> 517</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># the contrast.  Blending occurs, and by choosing the</tt> </tt>
+<a name="L518"></a><tt class="py-lineno"> 518</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># appropriate values for glBlendFunc, adds the product of</tt> </tt>
+<a name="L519"></a><tt class="py-lineno"> 519</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># fragment alpha (contrast) and fragment color to the</tt> </tt>
+<a name="L520"></a><tt class="py-lineno"> 520</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># product of one minus fragment alpha (contrast) and what</tt> </tt>
+<a name="L521"></a><tt class="py-lineno"> 521</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># was already in the framebuffer.</tt> </tt>
+<a name="L522"></a><tt class="py-lineno"> 522</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L523"></a><tt class="py-lineno"> 523</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glBlendFunc</tt><tt class="py-op">(</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_SRC_ALPHA</tt><tt class="py-op">,</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_ONE_MINUS_SRC_ALPHA</tt> <tt class="py-op">)</tt> </tt>
+<a name="L524"></a><tt class="py-lineno"> 524</tt>  <tt class="py-line"> </tt>
+<a name="L525"></a><tt class="py-lineno"> 525</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glTexEnvi</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE_ENV</tt><tt class="py-op">,</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE_ENV_MODE</tt><tt class="py-op">,</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py [...]
+<a name="L526"></a><tt class="py-lineno"> 526</tt>  <tt class="py-line"> </tt>
+<a name="L527"></a><tt class="py-lineno"> 527</tt>  <tt class="py-line">            <tt class="py-comment"># clear modelview matrix</tt> </tt>
+<a name="L528"></a><tt class="py-lineno"> 528</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glMatrixMode</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_MODELVIEW</tt><tt class="py-op">)</tt> </tt>
+<a name="L529"></a><tt class="py-lineno"> 529</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glPushMatrix</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L530"></a><tt class="py-lineno"> 530</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glColor4f</tt><tt class="py-op">(</tt><tt class="py-number">0.5</tt><tt class="py-op">,</tt><tt class="py-number">0.5</tt><tt class="py-op">,</tt><tt class="py-number">0.5</tt><tt class="py-op">,</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">contrast</tt><tt class="py-op">)</tt> <tt class="py-comment"># Set  [...]
+<a name="L531"></a><tt class="py-lineno"> 531</tt>  <tt class="py-line"> </tt>
+<a name="L532"></a><tt class="py-lineno"> 532</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">constant_parameters</tt><tt class="py-op">.</tt><tt class="py-name">mipmaps_enabled</tt><tt class="py-op">:</tt> </tt>
+<a name="L533"></a><tt class="py-lineno"> 533</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">texture_min_filter</tt> <tt class="py-keyword">in</tt> <tt id="link-110" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-110', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-111" class="py-name"><a title="VisionEgg.Textures" c [...]
+<a name="L534"></a><tt class="py-lineno"> 534</tt>  <tt class="py-line">                    <tt class="py-keyword">raise</tt> <tt class="py-name">RuntimeError</tt><tt class="py-op">(</tt><tt class="py-string">"Specified a mipmap mode in texture_min_filter, but mipmaps not enabled."</tt><tt class="py-op">)</tt> </tt>
+<a name="L535"></a><tt class="py-lineno"> 535</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">texture_object</tt><tt class="py-op">.</tt><tt id="link-114" class="py-name" targets="Method VisionEgg.Textures.TextureObject.set_min_filter()=VisionEgg.Textures.TextureObject-class.html#set_min_filter"><a title="VisionEgg.Textures.TextureObject.set_min_filter" class="py-name" href="#" onclick="return doclink('link-114', 'set_min_fil [...]
+<a name="L536"></a><tt class="py-lineno"> 536</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">texture_object</tt><tt class="py-op">.</tt><tt id="link-115" class="py-name" targets="Method VisionEgg.Textures.TextureObject.set_mag_filter()=VisionEgg.Textures.TextureObject-class.html#set_mag_filter"><a title="VisionEgg.Textures.TextureObject.set_mag_filter" class="py-name" href="#" onclick="return doclink('link-115', 'set_mag_fil [...]
+<a name="L537"></a><tt class="py-lineno"> 537</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">texture_object</tt><tt class="py-op">.</tt><tt id="link-116" class="py-name" targets="Method VisionEgg.Textures.TextureObject.set_wrap_mode_s()=VisionEgg.Textures.TextureObject-class.html#set_wrap_mode_s"><a title="VisionEgg.Textures.TextureObject.set_wrap_mode_s" class="py-name" href="#" onclick="return doclink('link-116', 'set_wrap [...]
+<a name="L538"></a><tt class="py-lineno"> 538</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">texture_object</tt><tt class="py-op">.</tt><tt id="link-117" class="py-name" targets="Method VisionEgg.Textures.TextureObject.set_wrap_mode_t()=VisionEgg.Textures.TextureObject-class.html#set_wrap_mode_t"><a title="VisionEgg.Textures.TextureObject.set_wrap_mode_t" class="py-name" href="#" onclick="return doclink('link-117', 'set_wrap [...]
+<a name="L539"></a><tt class="py-lineno"> 539</tt>  <tt class="py-line"> </tt>
+<a name="L540"></a><tt class="py-lineno"> 540</tt>  <tt class="py-line">            <tt class="py-comment"># center the texture map</tt> </tt>
+<a name="L541"></a><tt class="py-lineno"> 541</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glRotatef</tt><tt class="py-op">(</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">center_azimuth</tt><tt class="py-op">,</tt><tt class="py-number">0.0</tt><tt class="py-op">,</tt><tt class="py-op">-</tt><tt class="py-number">1.0</tt><tt class="py-op">,</tt><tt class="py-number">0.0< [...]
+<a name="L542"></a><tt class="py-lineno"> 542</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glRotatef</tt><tt class="py-op">(</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">center_elevation</tt><tt class="py-op">,</tt><tt class="py-number">1.0</tt><tt class="py-op">,</tt><tt class="py-number">0.0</tt><tt class="py-op">,</tt><tt class="py-number">0.0</tt><tt class="py-op">)</tt> </tt>
+<a name="L543"></a><tt class="py-lineno"> 543</tt>  <tt class="py-line"> </tt>
+<a name="L544"></a><tt class="py-lineno"> 544</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glCallList</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">cached_display_list</tt><tt class="py-op">)</tt> </tt>
+<a name="L545"></a><tt class="py-lineno"> 545</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glPopMatrix</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L546"></a><tt class="py-lineno"> 546</tt>  <tt class="py-line"> </tt>
+<a name="SphereGrating"></a><div id="SphereGrating-def"><a name="L547"></a><tt class="py-lineno"> 547</tt> <a class="py-toggle" href="#" id="SphereGrating-toggle" onclick="return toggle('SphereGrating');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.SphereMap.SphereGrating-class.html">SphereGrating</a><tt class="py-op">(</tt><tt class="py-base-class">VisionEgg</tt><tt class="py-op">.</tt><tt class="py-base-class">Gratings</tt><tt class [...]
+</div><div id="SphereGrating-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="SphereGrating-expanded"><a name="L548"></a><tt class="py-lineno"> 548</tt>  <tt class="py-line">    <tt class="py-docstring">"""Map 2D sinusoidal grating onto sphere.</tt> </tt>
+<a name="L549"></a><tt class="py-lineno"> 549</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L550"></a><tt class="py-lineno"> 550</tt>  <tt class="py-line"><tt class="py-docstring">    Parameters</tt> </tt>
+<a name="L551"></a><tt class="py-lineno"> 551</tt>  <tt class="py-line"><tt class="py-docstring">    ==========</tt> </tt>
+<a name="L552"></a><tt class="py-lineno"> 552</tt>  <tt class="py-line"><tt class="py-docstring">    bit_depth                       -- precision with which grating is calculated and sent to OpenGL (UnsignedInteger)</tt> </tt>
+<a name="L553"></a><tt class="py-lineno"> 553</tt>  <tt class="py-line"><tt class="py-docstring">                                       Inherited from VisionEgg.Gratings.LuminanceGratingCommon</tt> </tt>
+<a name="L554"></a><tt class="py-lineno"> 554</tt>  <tt class="py-line"><tt class="py-docstring">                                       Default: 8</tt> </tt>
+<a name="L555"></a><tt class="py-lineno"> 555</tt>  <tt class="py-line"><tt class="py-docstring">    check_texture_size              -- (Boolean)</tt> </tt>
+<a name="L556"></a><tt class="py-lineno"> 556</tt>  <tt class="py-line"><tt class="py-docstring">                                       Default: True</tt> </tt>
+<a name="L557"></a><tt class="py-lineno"> 557</tt>  <tt class="py-line"><tt class="py-docstring">    contrast                        -- (Real)</tt> </tt>
+<a name="L558"></a><tt class="py-lineno"> 558</tt>  <tt class="py-line"><tt class="py-docstring">                                       Default: 1.0</tt> </tt>
+<a name="L559"></a><tt class="py-lineno"> 559</tt>  <tt class="py-line"><tt class="py-docstring">    grating_center_azimuth          -- (Real)</tt> </tt>
+<a name="L560"></a><tt class="py-lineno"> 560</tt>  <tt class="py-line"><tt class="py-docstring">                                       Default: 0.0</tt> </tt>
+<a name="L561"></a><tt class="py-lineno"> 561</tt>  <tt class="py-line"><tt class="py-docstring">    grating_center_elevation        -- (Real)</tt> </tt>
+<a name="L562"></a><tt class="py-lineno"> 562</tt>  <tt class="py-line"><tt class="py-docstring">                                       Default: 0.0</tt> </tt>
+<a name="L563"></a><tt class="py-lineno"> 563</tt>  <tt class="py-line"><tt class="py-docstring">    ignore_time                     -- (Boolean)</tt> </tt>
+<a name="L564"></a><tt class="py-lineno"> 564</tt>  <tt class="py-line"><tt class="py-docstring">                                       Default: False</tt> </tt>
+<a name="L565"></a><tt class="py-lineno"> 565</tt>  <tt class="py-line"><tt class="py-docstring">    lowpass_cutoff_cycles_per_texel -- helps prevent spatial aliasing (Real)</tt> </tt>
+<a name="L566"></a><tt class="py-lineno"> 566</tt>  <tt class="py-line"><tt class="py-docstring">                                       Default: 0.5</tt> </tt>
+<a name="L567"></a><tt class="py-lineno"> 567</tt>  <tt class="py-line"><tt class="py-docstring">    min_filter                      -- OpenGL filter enum (Integer)</tt> </tt>
+<a name="L568"></a><tt class="py-lineno"> 568</tt>  <tt class="py-line"><tt class="py-docstring">                                       Default: GL_LINEAR (9729)</tt> </tt>
+<a name="L569"></a><tt class="py-lineno"> 569</tt>  <tt class="py-line"><tt class="py-docstring">    num_samples                     -- (UnsignedInteger)</tt> </tt>
+<a name="L570"></a><tt class="py-lineno"> 570</tt>  <tt class="py-line"><tt class="py-docstring">                                       Default: 1024</tt> </tt>
+<a name="L571"></a><tt class="py-lineno"> 571</tt>  <tt class="py-line"><tt class="py-docstring">    on                              -- (Boolean)</tt> </tt>
+<a name="L572"></a><tt class="py-lineno"> 572</tt>  <tt class="py-line"><tt class="py-docstring">                                       Default: True</tt> </tt>
+<a name="L573"></a><tt class="py-lineno"> 573</tt>  <tt class="py-line"><tt class="py-docstring">    orientation                     -- (Real)</tt> </tt>
+<a name="L574"></a><tt class="py-lineno"> 574</tt>  <tt class="py-line"><tt class="py-docstring">                                       Default: 0.0</tt> </tt>
+<a name="L575"></a><tt class="py-lineno"> 575</tt>  <tt class="py-line"><tt class="py-docstring">    phase_at_t0                     -- (Real)</tt> </tt>
+<a name="L576"></a><tt class="py-lineno"> 576</tt>  <tt class="py-line"><tt class="py-docstring">                                       Default: 0.0</tt> </tt>
+<a name="L577"></a><tt class="py-lineno"> 577</tt>  <tt class="py-line"><tt class="py-docstring">    radius                          -- (Real)</tt> </tt>
+<a name="L578"></a><tt class="py-lineno"> 578</tt>  <tt class="py-line"><tt class="py-docstring">                                       Default: 1.0</tt> </tt>
+<a name="L579"></a><tt class="py-lineno"> 579</tt>  <tt class="py-line"><tt class="py-docstring">    slices                          -- (UnsignedInteger)</tt> </tt>
+<a name="L580"></a><tt class="py-lineno"> 580</tt>  <tt class="py-line"><tt class="py-docstring">                                       Default: 30</tt> </tt>
+<a name="L581"></a><tt class="py-lineno"> 581</tt>  <tt class="py-line"><tt class="py-docstring">    spatial_freq_cpd                -- (Real)</tt> </tt>
+<a name="L582"></a><tt class="py-lineno"> 582</tt>  <tt class="py-line"><tt class="py-docstring">                                       Default: 0.0277777777778</tt> </tt>
+<a name="L583"></a><tt class="py-lineno"> 583</tt>  <tt class="py-line"><tt class="py-docstring">    stacks                          -- (UnsignedInteger)</tt> </tt>
+<a name="L584"></a><tt class="py-lineno"> 584</tt>  <tt class="py-line"><tt class="py-docstring">                                       Default: 30</tt> </tt>
+<a name="L585"></a><tt class="py-lineno"> 585</tt>  <tt class="py-line"><tt class="py-docstring">    t0_time_sec_absolute            -- (Real)</tt> </tt>
+<a name="L586"></a><tt class="py-lineno"> 586</tt>  <tt class="py-line"><tt class="py-docstring">                                       Default: (determined at runtime)</tt> </tt>
+<a name="L587"></a><tt class="py-lineno"> 587</tt>  <tt class="py-line"><tt class="py-docstring">    temporal_freq_hz                -- (Real)</tt> </tt>
+<a name="L588"></a><tt class="py-lineno"> 588</tt>  <tt class="py-line"><tt class="py-docstring">                                       Default: 5.0</tt> </tt>
+<a name="L589"></a><tt class="py-lineno"> 589</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L590"></a><tt class="py-lineno"> 590</tt>  <tt class="py-line"> </tt>
+<a name="L591"></a><tt class="py-lineno"> 591</tt>  <tt class="py-line">    <tt id="link-118" class="py-name"><a title="VisionEgg.ClassWithParameters.parameters_and_defaults
+VisionEgg.Core.FixationSpot.parameters_and_defaults
+VisionEgg.Core.ProjectionBaseClass.parameters_and_defaults
+VisionEgg.Core.Screen.parameters_and_defaults
+VisionEgg.Core.Viewport.parameters_and_defaults
+VisionEgg.Daq.Buffered.parameters_and_defaults
+VisionEgg.Dots.DotArea2D.parameters_and_defaults
+VisionEgg.FlowControl.Presentation.parameters_and_defaults
+VisionEgg.Gratings.AlphaGratingCommon.parameters_and_defaults
+VisionEgg.Gratings.LuminanceGratingCommon.parameters_and_defaults
+VisionEgg.Gratings.SinGrating2D.parameters_and_defaults
+VisionEgg.Gratings.SinGrating3D.parameters_and_defaults
+VisionEgg.MoreStimuli.Arrow.parameters_and_defaults
+VisionEgg.MoreStimuli.FilledCircle.parameters_and_defaults
+VisionEgg.MoreStimuli.Rectangle3D.parameters_and_defaults
+VisionEgg.MoreStimuli.Target2D.parameters_and_defaults
+VisionEgg.PyroApps.EPhysGUI.Loop.parameters_and_defaults
+VisionEgg.SphereMap.AzElGrid.parameters_and_defaults
+VisionEgg.SphereMap.SphereGrating.parameters_and_defaults
+VisionEgg.SphereMap.SphereMap.parameters_and_defaults
+VisionEgg.SphereMap.SphereWindow.parameters_and_defaults
+VisionEgg.Text.BitmapText.parameters_and_defaults
+VisionEgg.Text.GlutTextBase.parameters_and_defaults
+VisionEgg.Text.StrokeText.parameters_and_defaults
+VisionEgg.Text.Text.parameters_and_defaults
+VisionEgg.Textures.FixationCross.parameters_and_defaults
+VisionEgg.Textures.SpinningDrum.parameters_and_defaults
+VisionEgg.Textures.TextureStimulus.parameters_and_defaults
+VisionEgg.Textures.TextureStimulus3D.parameters_and_defaults
+VisionEgg.Textures.TextureStimulusBaseClass.parameters_and_defaults
+VisionEgg.WrappedText.WrappedText.parameters_and_defaults" class="py-name" href="#" onclick="return doclink('link-118', 'parameters_and_defaults', 'link-17');">parameters_and_defaults</a></tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> </tt>
+<a name="L592"></a><tt class="py-lineno"> 592</tt>  <tt class="py-line">        <tt class="py-string">'on'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-name">True</tt><tt class="py-op">,</tt> </tt>
+<a name="L593"></a><tt class="py-lineno"> 593</tt>  <tt class="py-line">              <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-119" class="py-name"><a title="VisionEgg.ParameterTypes.Boolean" class="py-name" href="#" onclick="return doclink('link-119', 'Boolean', 'link-18');">Boolean</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L594"></a><tt class="py-lineno"> 594</tt>  <tt class="py-line">        <tt class="py-string">'contrast'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-number">1.0</tt><tt class="py-op">,</tt> </tt>
+<a name="L595"></a><tt class="py-lineno"> 595</tt>  <tt class="py-line">                    <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-120" class="py-name"><a title="VisionEgg.ParameterTypes.Real" class="py-name" href="#" onclick="return doclink('link-120', 'Real', 'link-19');">Real</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L596"></a><tt class="py-lineno"> 596</tt>  <tt class="py-line">        <tt class="py-string">'spatial_freq_cpd'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-number">1.0</tt><tt class="py-op">/</tt><tt class="py-number">36.0</tt><tt class="py-op">,</tt> <tt class="py-comment"># cycles/degree</tt> </tt>
+<a name="L597"></a><tt class="py-lineno"> 597</tt>  <tt class="py-line">                            <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-121" class="py-name"><a title="VisionEgg.ParameterTypes.Real" class="py-name" href="#" onclick="return doclink('link-121', 'Real', 'link-19');">Real</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L598"></a><tt class="py-lineno"> 598</tt>  <tt class="py-line">        <tt class="py-string">'temporal_freq_hz'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-number">5.0</tt><tt class="py-op">,</tt> <tt class="py-comment"># hz</tt> </tt>
+<a name="L599"></a><tt class="py-lineno"> 599</tt>  <tt class="py-line">                            <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-122" class="py-name"><a title="VisionEgg.ParameterTypes.Real" class="py-name" href="#" onclick="return doclink('link-122', 'Real', 'link-19');">Real</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L600"></a><tt class="py-lineno"> 600</tt>  <tt class="py-line">        <tt class="py-string">'t0_time_sec_absolute'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
+<a name="L601"></a><tt class="py-lineno"> 601</tt>  <tt class="py-line">                                <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-123" class="py-name"><a title="VisionEgg.ParameterTypes.Real" class="py-name" href="#" onclick="return doclink('link-123', 'Real', 'link-19');">Real</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L602"></a><tt class="py-lineno"> 602</tt>  <tt class="py-line">        <tt class="py-string">'ignore_time'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-name">False</tt><tt class="py-op">,</tt> <tt class="py-comment"># ignore temporal frequency variable - allow control purely with phase_at_t0</tt> </tt>
+<a name="L603"></a><tt class="py-lineno"> 603</tt>  <tt class="py-line">                       <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-124" class="py-name"><a title="VisionEgg.ParameterTypes.Boolean" class="py-name" href="#" onclick="return doclink('link-124', 'Boolean', 'link-18');">Boolean</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L604"></a><tt class="py-lineno"> 604</tt>  <tt class="py-line">        <tt class="py-string">'phase_at_t0'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-number">0.0</tt><tt class="py-op">,</tt>  <tt class="py-comment"># degrees</tt> </tt>
+<a name="L605"></a><tt class="py-lineno"> 605</tt>  <tt class="py-line">                       <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-125" class="py-name"><a title="VisionEgg.ParameterTypes.Real" class="py-name" href="#" onclick="return doclink('link-125', 'Real', 'link-19');">Real</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L606"></a><tt class="py-lineno"> 606</tt>  <tt class="py-line">        <tt class="py-string">'orientation'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-number">0.0</tt><tt class="py-op">,</tt>  <tt class="py-comment"># 0=right, 90=up</tt> </tt>
+<a name="L607"></a><tt class="py-lineno"> 607</tt>  <tt class="py-line">                       <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-126" class="py-name"><a title="VisionEgg.ParameterTypes.Real" class="py-name" href="#" onclick="return doclink('link-126', 'Real', 'link-19');">Real</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L608"></a><tt class="py-lineno"> 608</tt>  <tt class="py-line">        <tt class="py-string">'grating_center_azimuth'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-number">0.0</tt><tt class="py-op">,</tt> <tt class="py-comment"># 0=right, 90=down</tt> </tt>
+<a name="L609"></a><tt class="py-lineno"> 609</tt>  <tt class="py-line">                                  <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-127" class="py-name"><a title="VisionEgg.ParameterTypes.Real" class="py-name" href="#" onclick="return doclink('link-127', 'Real', 'link-19');">Real</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L610"></a><tt class="py-lineno"> 610</tt>  <tt class="py-line">        <tt class="py-string">'grating_center_elevation'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-number">0.0</tt><tt class="py-op">,</tt> <tt class="py-comment"># 0=right, 90=down</tt> </tt>
+<a name="L611"></a><tt class="py-lineno"> 611</tt>  <tt class="py-line">                                    <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-128" class="py-name"><a title="VisionEgg.ParameterTypes.Real" class="py-name" href="#" onclick="return doclink('link-128', 'Real', 'link-19');">Real</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L612"></a><tt class="py-lineno"> 612</tt>  <tt class="py-line">        <tt class="py-string">'check_texture_size'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-name">True</tt><tt class="py-op">,</tt> <tt class="py-comment"># slows down drawing but catches errors</tt> </tt>
+<a name="L613"></a><tt class="py-lineno"> 613</tt>  <tt class="py-line">                              <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-129" class="py-name"><a title="VisionEgg.ParameterTypes.Boolean" class="py-name" href="#" onclick="return doclink('link-129', 'Boolean', 'link-18');">Boolean</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L614"></a><tt class="py-lineno"> 614</tt>  <tt class="py-line">        <tt class="py-string">'lowpass_cutoff_cycles_per_texel'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-number">0.5</tt><tt class="py-op">,</tt> </tt>
+<a name="L615"></a><tt class="py-lineno"> 615</tt>  <tt class="py-line">                                           <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-130" class="py-name"><a title="VisionEgg.ParameterTypes.Real" class="py-name" href="#" onclick="return doclink('link-130', 'Real', 'link-19');">Real</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L616"></a><tt class="py-lineno"> 616</tt>  <tt class="py-line">                                           <tt class="py-string">'helps prevent spatial aliasing'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L617"></a><tt class="py-lineno"> 617</tt>  <tt class="py-line">        <tt class="py-string">'min_filter'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_LINEAR</tt><tt class="py-op">,</tt> </tt>
+<a name="L618"></a><tt class="py-lineno"> 618</tt>  <tt class="py-line">                      <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-131" class="py-name" targets="Class VisionEgg.ParameterTypes.Integer=VisionEgg.ParameterTypes.Integer-class.html"><a title="VisionEgg.ParameterTypes.Integer" class="py-name" href="#" onclick="return doclink('link-131', 'Integer', 'link-131');">Integer</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L619"></a><tt class="py-lineno"> 619</tt>  <tt class="py-line">                      <tt class="py-string">"OpenGL filter enum"</tt><tt class="py-op">,</tt> </tt>
+<a name="L620"></a><tt class="py-lineno"> 620</tt>  <tt class="py-line">                      <tt id="link-132" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-132', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-133" class="py-name" targets="Class VisionEgg.ParameterDefinition=VisionEgg.ParameterDefinition-class.html"><a title="VisionEgg.ParameterDefinition" class="py-name" href="#" onclick="return doclink('lin [...]
+<a name="L621"></a><tt class="py-lineno"> 621</tt>  <tt class="py-line">        <tt class="py-comment"># changing this parameters causes re-drawing of the texture object and may cause frame skipping</tt> </tt>
+<a name="L622"></a><tt class="py-lineno"> 622</tt>  <tt class="py-line">        <tt class="py-string">'num_samples'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-number">1024</tt><tt class="py-op">,</tt>  <tt class="py-comment"># number of spatial samples, should be a power of 2</tt> </tt>
+<a name="L623"></a><tt class="py-lineno"> 623</tt>  <tt class="py-line">                       <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-135" class="py-name"><a title="VisionEgg.ParameterTypes.UnsignedInteger" class="py-name" href="#" onclick="return doclink('link-135', 'UnsignedInteger', 'link-47');">UnsignedInteger</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L624"></a><tt class="py-lineno"> 624</tt>  <tt class="py-line">        <tt class="py-comment"># Changing these parameters will cause re-computation of display list (may cause frame skip)</tt> </tt>
+<a name="L625"></a><tt class="py-lineno"> 625</tt>  <tt class="py-line">        <tt class="py-string">'radius'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-number">1.0</tt><tt class="py-op">,</tt> </tt>
+<a name="L626"></a><tt class="py-lineno"> 626</tt>  <tt class="py-line">                  <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-136" class="py-name"><a title="VisionEgg.ParameterTypes.Real" class="py-name" href="#" onclick="return doclink('link-136', 'Real', 'link-19');">Real</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L627"></a><tt class="py-lineno"> 627</tt>  <tt class="py-line">        <tt class="py-string">'slices'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-number">30</tt><tt class="py-op">,</tt> </tt>
+<a name="L628"></a><tt class="py-lineno"> 628</tt>  <tt class="py-line">                  <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-137" class="py-name"><a title="VisionEgg.ParameterTypes.UnsignedInteger" class="py-name" href="#" onclick="return doclink('link-137', 'UnsignedInteger', 'link-47');">UnsignedInteger</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L629"></a><tt class="py-lineno"> 629</tt>  <tt class="py-line">        <tt class="py-string">'stacks'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-number">30</tt><tt class="py-op">,</tt> </tt>
+<a name="L630"></a><tt class="py-lineno"> 630</tt>  <tt class="py-line">                  <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-138" class="py-name"><a title="VisionEgg.ParameterTypes.UnsignedInteger" class="py-name" href="#" onclick="return doclink('link-138', 'UnsignedInteger', 'link-47');">UnsignedInteger</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L631"></a><tt class="py-lineno"> 631</tt>  <tt class="py-line">        <tt class="py-op">}</tt> </tt>
+<a name="L632"></a><tt class="py-lineno"> 632</tt>  <tt class="py-line"> </tt>
+<a name="L633"></a><tt class="py-lineno"> 633</tt>  <tt class="py-line">    <tt class="py-name">__slots__</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt> </tt>
+<a name="L634"></a><tt class="py-lineno"> 634</tt>  <tt class="py-line">        <tt class="py-string">'texture_object_id'</tt><tt class="py-op">,</tt> </tt>
+<a name="L635"></a><tt class="py-lineno"> 635</tt>  <tt class="py-line">        <tt class="py-string">'cached_display_list_id'</tt><tt class="py-op">,</tt> </tt>
+<a name="L636"></a><tt class="py-lineno"> 636</tt>  <tt class="py-line">        <tt class="py-string">'_cached_num_samples'</tt><tt class="py-op">,</tt> </tt>
+<a name="L637"></a><tt class="py-lineno"> 637</tt>  <tt class="py-line">        <tt class="py-string">'_cached_radius'</tt><tt class="py-op">,</tt> </tt>
+<a name="L638"></a><tt class="py-lineno"> 638</tt>  <tt class="py-line">        <tt class="py-string">'_cached_slices'</tt><tt class="py-op">,</tt> </tt>
+<a name="L639"></a><tt class="py-lineno"> 639</tt>  <tt class="py-line">        <tt class="py-string">'_cached_stacks'</tt><tt class="py-op">,</tt> </tt>
+<a name="L640"></a><tt class="py-lineno"> 640</tt>  <tt class="py-line">        <tt class="py-op">)</tt> </tt>
+<a name="L641"></a><tt class="py-lineno"> 641</tt>  <tt class="py-line"> </tt>
+<a name="SphereGrating.__init__"></a><div id="SphereGrating.__init__-def"><a name="L642"></a><tt class="py-lineno"> 642</tt> <a class="py-toggle" href="#" id="SphereGrating.__init__-toggle" onclick="return toggle('SphereGrating.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.SphereMap.SphereGrating-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt><tt class="py-op [...]
+</div><div id="SphereGrating.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="SphereGrating.__init__-expanded"><a name="L643"></a><tt class="py-lineno"> 643</tt>  <tt class="py-line">        <tt id="link-139" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-139', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-140" class="py-name"><a title="VisionEgg.Gratings" class="py-name" h [...]
+VisionEgg.Configuration.Config.__init__
+VisionEgg.Core.FixationSpot.__init__
+VisionEgg.Core.FrameTimer.__init__
+VisionEgg.Core.ModelView.__init__
+VisionEgg.Core.OrthographicProjection.__init__
+VisionEgg.Core.OrthographicProjectionNoZClip.__init__
+VisionEgg.Core.PerspectiveProjection.__init__
+VisionEgg.Core.Projection.__init__
+VisionEgg.Core.ProjectionBaseClass.__init__
+VisionEgg.Core.Screen.__init__
+VisionEgg.Core.SimplePerspectiveProjection.__init__
+VisionEgg.Core.Stimulus.__init__
+VisionEgg.Core.Viewport.__init__
+VisionEgg.Daq.Channel.__init__
+VisionEgg.Daq.DaqMode.__init__
+VisionEgg.Daq.Device.__init__
+VisionEgg.Daq.Functionality.__init__
+VisionEgg.Daq.SignalType.__init__
+VisionEgg.DaqKeyboard.KeyboardTriggerInController.__init__
+VisionEgg.DaqLPT.LPTChannel.__init__
+VisionEgg.DaqLPT.LPTDevice.__init__
+VisionEgg.DaqLPT.LPTTriggerInController.__init__
+VisionEgg.DaqLPT.LPTTriggerOutController.__init__
+VisionEgg.Deprecated.Message.__init__
+VisionEgg.Dots.DotArea2D.__init__
+VisionEgg.FlowControl.ConstantController.__init__
+VisionEgg.FlowControl.Controller.__init__
+VisionEgg.FlowControl.EncapsulatedController.__init__
+VisionEgg.FlowControl.EvalStringController.__init__
+VisionEgg.FlowControl.ExecStringController.__init__
+VisionEgg.FlowControl.FunctionController.__init__
+VisionEgg.FlowControl.Presentation.__init__
+VisionEgg.GLTrace.Wrapper.__init__
+VisionEgg.GUI.AppWindow.__init__
+VisionEgg.GUI.GetKeypressDialog.__init__
+VisionEgg.GUI.GraphicsConfigurationWindow.__init__
+VisionEgg.GUI.InfoFrame.__init__
+VisionEgg.GUI.ProgressBar.__init__
+VisionEgg.GUI.ToplevelDialog.__init__
+VisionEgg.Gratings.SinGrating2D.__init__
+VisionEgg.Gratings.SinGrating3D.__init__
+VisionEgg.MoreStimuli.Arrow.__init__
+VisionEgg.MoreStimuli.FilledCircle.__init__
+VisionEgg.MoreStimuli.Rectangle3D.__init__
+VisionEgg.MoreStimuli.Target2D.__init__
+VisionEgg.ParameterTypes.AnyOf.__init__
+VisionEgg.ParameterTypes.Instance.__init__
+VisionEgg.ParameterTypes.Sequence.__init__
+VisionEgg.ParameterTypes.SubClass.__init__
+VisionEgg.PyroApps.AST_ext.AST_Visitor.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalMetaParameters.__init__
+VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.__init__
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.__init__
+VisionEgg.PyroApps.DropinGUI.DropinMetaParameters.__init__
+VisionEgg.PyroApps.DropinServer.DropinMetaController.__init__
+VisionEgg.PyroApps.EPhysGUI.AppWindow.__init__
+VisionEgg.PyroApps.EPhysGUI.BarButton.__init__
+VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase.__init__
+VisionEgg.PyroApps.EPhysGUI.GammaFrame.__init__
+VisionEgg.PyroApps.EPhysGUI.ImageSequenceLauncher.__init__
+VisionEgg.PyroApps.EPhysGUI.Loop.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopContainedObject.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopParamDialog.__init__
+VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.__init__
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.__init__
+VisionEgg.PyroApps.EPhysServer.EPhysServer.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingMetaParameters.__init__
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.GridGUI.GridControlFrame.__init__
+VisionEgg.PyroApps.GridGUI.GridMetaParameters.__init__
+VisionEgg.PyroApps.GridServer.GridMetaController.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetMetaParameters.__init__
+VisionEgg.PyroApps.MouseTargetServer.MousePositionController.__init__
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetOrientationController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetPositionController.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.CallbackEntry.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionParameters.__init__
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingMetaParameters.__init__
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumMetaParameters.__init__
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.__init__
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.__init__
+VisionEgg.PyroApps.TargetGUI.TargetMetaParameters.__init__
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.__init__
+VisionEgg.PyroClient.PyroClient.__init__
+VisionEgg.PyroHelpers.PyroConstantController.__init__
+VisionEgg.PyroHelpers.PyroEncapsulatedController.__init__
+VisionEgg.PyroHelpers.PyroEvalStringController.__init__
+VisionEgg.PyroHelpers.PyroExecStringController.__init__
+VisionEgg.PyroHelpers.PyroListenController.__init__
+VisionEgg.PyroHelpers.PyroLocalDictController.__init__
+VisionEgg.PyroHelpers.PyroServer.__init__
+VisionEgg.QuickTime.MovieTexture.__init__
+VisionEgg.ResponseControl.KeyboardResponseController.__init__
+VisionEgg.ResponseControl.ResponseController.__init__
+VisionEgg.SphereMap.AzElGrid.__init__
+VisionEgg.SphereMap.SphereGrating.__init__
+VisionEgg.SphereMap.SphereMap.__init__
+VisionEgg.SphereMap.SphereWindow.__init__
+VisionEgg.TCPController.SocketListenController.__init__
+VisionEgg.TCPController.TCPController.__init__
+VisionEgg.TCPController.TCPServer.__init__
+VisionEgg.Text.BitmapText.__init__
+VisionEgg.Text.GlutTextBase.__init__
+VisionEgg.Text.StrokeText.__init__
+VisionEgg.Text.Text.__init__
+VisionEgg.Textures.FixationCross.__init__
+VisionEgg.Textures.Mask2D.__init__
+VisionEgg.Textures.SpinningDrum.__init__
+VisionEgg.Textures.Texture.__init__
+VisionEgg.Textures.TextureFromFile.__init__
+VisionEgg.Textures.TextureObject.__init__
+VisionEgg.Textures.TextureStimulusBaseClass.__init__
+VisionEgg.ThreeDeeMath.TransformMatrix.__init__
+VisionEgg.WrappedText.WrappedText.__init__
+VisionEgg.qtmovie.Movie.__init__
+VisionEgg.qtmovie.Rect.__init__" class="py-name" href="#" onclick="return doclink('link-142', '__init__', 'link-58');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt><tt class="py-op">**</tt><tt class="py-name">kw</tt><tt class="py-op">)</tt> </tt>
+<a name="L644"></a><tt class="py-lineno"> 644</tt>  <tt class="py-line"> </tt>
+<a name="L645"></a><tt class="py-lineno"> 645</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">t0_time_sec_absolute</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L646"></a><tt class="py-lineno"> 646</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">t0_time_sec_absolute</tt> <tt class="py-op">=</tt> <tt id="link-143" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-143', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-144" class="py-name" targets= [...]
+<a name="L647"></a><tt class="py-lineno"> 647</tt>  <tt class="py-line"> </tt>
+<a name="L648"></a><tt class="py-lineno"> 648</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">texture_object_id</tt> <tt class="py-op">=</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glGenTextures</tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> <tt class="py-comment"># Allocate a new texture object</tt> </tt>
+<a name="L649"></a><tt class="py-lineno"> 649</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__rebuild_texture_object</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L650"></a><tt class="py-lineno"> 650</tt>  <tt class="py-line"> </tt>
+<a name="L651"></a><tt class="py-lineno"> 651</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">cached_display_list_id</tt> <tt class="py-op">=</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glGenLists</tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> <tt class="py-comment"># Allocate a new display list</tt> </tt>
+<a name="L652"></a><tt class="py-lineno"> 652</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__rebuild_display_list</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L653"></a><tt class="py-lineno"> 653</tt>  <tt class="py-line"> </tt>
+<a name="SphereGrating.__rebuild_texture_object"></a><div id="SphereGrating.__rebuild_texture_object-def"><a name="L654"></a><tt class="py-lineno"> 654</tt> <a class="py-toggle" href="#" id="SphereGrating.__rebuild_texture_object-toggle" onclick="return toggle('SphereGrating.__rebuild_texture_object');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.SphereMap.SphereGrating-class.html#__rebuild_texture_object">__rebuild_texture_object</ [...]
+</div><div id="SphereGrating.__rebuild_texture_object-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="SphereGrating.__rebuild_texture_object-expanded"><a name="L655"></a><tt class="py-lineno"> 655</tt>  <tt class="py-line">        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glBindTexture</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE_1D</tt><tt class="py-op">,</tt><tt cl [...]
+<a name="L656"></a><tt class="py-lineno"> 656</tt>  <tt class="py-line">        <tt class="py-name">p</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt> <tt class="py-comment"># shorthand</tt> </tt>
+<a name="L657"></a><tt class="py-lineno"> 657</tt>  <tt class="py-line"> </tt>
+<a name="L658"></a><tt class="py-lineno"> 658</tt>  <tt class="py-line">        <tt class="py-comment"># Do error-checking on texture to make sure it will load</tt> </tt>
+<a name="L659"></a><tt class="py-lineno"> 659</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">max_dim</tt> <tt class="py-op">=</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glGetIntegerv</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_MAX_TEXTURE_SIZE</tt><tt class="py-op">)</tt> </tt>
+<a name="L660"></a><tt class="py-lineno"> 660</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">num_samples</tt> <tt class="py-op">></tt> <tt class="py-name">max_dim</tt><tt class="py-op">:</tt> </tt>
+<a name="L661"></a><tt class="py-lineno"> 661</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt id="link-145" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-145', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-146" class="py-name"><a title="VisionEgg.Gratings" class="py-name" href="#" onclick="return doclink('link-146', 'Gratings', 'link-7');">Gratings</a></tt><tt class="py-op">.</tt>< [...]
+<a name="L662"></a><tt class="py-lineno"> 662</tt>  <tt class="py-line"> </tt>
+<a name="L663"></a><tt class="py-lineno"> 663</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-148" class="py-name" targets="Method VisionEgg.Gratings.AlphaGratingCommon.calculate_bit_depth_dependencies()=VisionEgg.Gratings.AlphaGratingCommon-class.html#calculate_bit_depth_dependencies,Method VisionEgg.Gratings.LuminanceGratingCommon.calculate_bit_depth_dependencies()=VisionEgg.Gratings.LuminanceGratingCommon-class.html#calculate_bit_dep [...]
+VisionEgg.Gratings.LuminanceGratingCommon.calculate_bit_depth_dependencies" class="py-name" href="#" onclick="return doclink('link-148', 'calculate_bit_depth_dependencies', 'link-148');">calculate_bit_depth_dependencies</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L664"></a><tt class="py-lineno"> 664</tt>  <tt class="py-line"> </tt>
+<a name="L665"></a><tt class="py-lineno"> 665</tt>  <tt class="py-line">        <tt class="py-name">l</tt> <tt class="py-op">=</tt> <tt class="py-number">0.0</tt> </tt>
+<a name="L666"></a><tt class="py-lineno"> 666</tt>  <tt class="py-line">        <tt class="py-name">r</tt> <tt class="py-op">=</tt> <tt class="py-number">360.0</tt> </tt>
+<a name="L667"></a><tt class="py-lineno"> 667</tt>  <tt class="py-line"> </tt>
+<a name="L668"></a><tt class="py-lineno"> 668</tt>  <tt class="py-line">        <tt class="py-name">mipmap_level</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L669"></a><tt class="py-lineno"> 669</tt>  <tt class="py-line">        <tt class="py-name">this_mipmap_level_num_samples</tt> <tt class="py-op">=</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">num_samples</tt> </tt>
+<a name="L670"></a><tt class="py-lineno"> 670</tt>  <tt class="py-line">        <tt class="py-keyword">while</tt> <tt class="py-name">this_mipmap_level_num_samples</tt> <tt class="py-op">>=</tt> <tt class="py-number">1</tt><tt class="py-op">:</tt> </tt>
+<a name="L671"></a><tt class="py-lineno"> 671</tt>  <tt class="py-line">            <tt class="py-name">inc</tt> <tt class="py-op">=</tt> <tt class="py-number">360.0</tt><tt class="py-op">/</tt><tt id="link-149" class="py-name"><a title="float" class="py-name" href="#" onclick="return doclink('link-149', 'float', 'link-59');">float</a></tt><tt class="py-op">(</tt><tt class="py-name">this_mipmap_level_num_samples</tt><tt class="py-op">)</tt> <tt class="py-comment"># degrees per pixel</tt> </tt>
+<a name="L672"></a><tt class="py-lineno"> 672</tt>  <tt class="py-line">            <tt class="py-name">cycles_per_texel</tt> <tt class="py-op">=</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">spatial_freq_cpd</tt> <tt class="py-op">*</tt> <tt class="py-name">inc</tt> </tt>
+<a name="L673"></a><tt class="py-lineno"> 673</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">cycles_per_texel</tt> <tt class="py-op"><</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">lowpass_cutoff_cycles_per_texel</tt><tt class="py-op">:</tt> <tt class="py-comment"># sharp cutoff lowpass filter</tt> </tt>
+<a name="L674"></a><tt class="py-lineno"> 674</tt>  <tt class="py-line">                <tt class="py-comment"># below cutoff frequency - draw sine wave</tt> </tt>
+<a name="L675"></a><tt class="py-lineno"> 675</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-keyword">if</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">ignore_time</tt><tt class="py-op">:</tt> </tt>
+<a name="L676"></a><tt class="py-lineno"> 676</tt>  <tt class="py-line">                    <tt class="py-name">phase</tt> <tt class="py-op">=</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">phase_at_t0</tt> </tt>
+<a name="L677"></a><tt class="py-lineno"> 677</tt>  <tt class="py-line">                <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L678"></a><tt class="py-lineno"> 678</tt>  <tt class="py-line">                    <tt class="py-name">t_var</tt> <tt class="py-op">=</tt> <tt id="link-150" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-150', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-151" class="py-name"><a title="VisionEgg.time_func" class="py-name" href="#" onclick="return doclink('link-151', 'time_func', 'link-144');">time_fun [...]
+<a name="L679"></a><tt class="py-lineno"> 679</tt>  <tt class="py-line">                    <tt class="py-name">phase</tt> <tt class="py-op">=</tt> <tt class="py-name">t_var</tt><tt class="py-op">*</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">temporal_freq_hz</tt><tt class="py-op">*</tt><tt class="py-number">360.0</tt> <tt class="py-op">+</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">phase_at_t0</tt> </tt>
+<a name="L680"></a><tt class="py-lineno"> 680</tt>  <tt class="py-line">                <tt class="py-name">floating_point_sin</tt> <tt class="py-op">=</tt> <tt class="py-name">Numeric</tt><tt class="py-op">.</tt><tt class="py-name">sin</tt><tt class="py-op">(</tt><tt class="py-number">2.0</tt><tt class="py-op">*</tt><tt class="py-name">math</tt><tt class="py-op">.</tt><tt class="py-name">pi</tt><tt class="py-op">*</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name" [...]
+<a name="L681"></a><tt class="py-lineno"> 681</tt>  <tt class="py-line">                <tt class="py-name">floating_point_sin</tt> <tt class="py-op">=</tt> <tt class="py-name">Numeric</tt><tt class="py-op">.</tt><tt class="py-name">clip</tt><tt class="py-op">(</tt><tt class="py-name">floating_point_sin</tt><tt class="py-op">,</tt><tt class="py-number">0.0</tt><tt class="py-op">,</tt><tt class="py-number">1.0</tt><tt class="py-op">)</tt> <tt class="py-comment"># allow square wave generat [...]
+<a name="L682"></a><tt class="py-lineno"> 682</tt>  <tt class="py-line">                <tt class="py-name">texel_data</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">floating_point_sin</tt><tt class="py-op">*</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">max_int_val</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">astype</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt cla [...]
+<a name="L683"></a><tt class="py-lineno"> 683</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L684"></a><tt class="py-lineno"> 684</tt>  <tt class="py-line">                <tt class="py-comment"># above cutoff frequency - blank</tt> </tt>
+<a name="L685"></a><tt class="py-lineno"> 685</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-name">texel_data</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">max_int_val</tt><tt class="py-op">*</tt><tt class="py-number">0.5</tt><tt class="py-op">)</tt><tt class="py-op">*</tt><tt class="py-name">Numeric</tt><tt class="py-op">.</tt><tt class="py-name">ones</tt><tt class="py-o [...]
+<a name="L686"></a><tt class="py-lineno"> 686</tt>  <tt class="py-line"> </tt>
+<a name="L687"></a><tt class="py-lineno"> 687</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">check_texture_size</tt><tt class="py-op">:</tt> </tt>
+<a name="L688"></a><tt class="py-lineno"> 688</tt>  <tt class="py-line">                <tt class="py-comment"># Because the MAX_TEXTURE_SIZE method is insensitive to the current</tt> </tt>
+<a name="L689"></a><tt class="py-lineno"> 689</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-comment"># state of the video system, another check must be done using</tt> </tt>
+<a name="L690"></a><tt class="py-lineno"> 690</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-comment"># "proxy textures".</tt> </tt>
+<a name="L691"></a><tt class="py-lineno"> 691</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glTexImage1D</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_PROXY_TEXTURE_1D</tt><tt class="py-op">,</tt>  <tt class="py-comment"># target</tt> </tt>
+<a name="L692"></a><tt class="py-lineno"> 692</tt>  <tt class="py-line">                                <tt class="py-name">mipmap_level</tt><tt class="py-op">,</tt>            <tt class="py-comment"># level</tt> </tt>
+<a name="L693"></a><tt class="py-lineno"> 693</tt>  <tt class="py-line">                                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">gl_internal_format</tt><tt class="py-op">,</tt> <tt class="py-comment"># video RAM internal format: RGB</tt> </tt>
+<a name="L694"></a><tt class="py-lineno"> 694</tt>  <tt class="py-line">                                <tt class="py-name">this_mipmap_level_num_samples</tt><tt class="py-op">,</tt>        <tt class="py-comment"># width</tt> </tt>
+<a name="L695"></a><tt class="py-lineno"> 695</tt>  <tt class="py-line">                                <tt class="py-number">0</tt><tt class="py-op">,</tt>                       <tt class="py-comment"># border</tt> </tt>
+<a name="L696"></a><tt class="py-lineno"> 696</tt>  <tt class="py-line">                                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">format</tt><tt class="py-op">,</tt>             <tt class="py-comment"># format of image data</tt> </tt>
+<a name="L697"></a><tt class="py-lineno"> 697</tt>  <tt class="py-line">                                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">gl_type</tt><tt class="py-op">,</tt>            <tt class="py-comment"># type of image data</tt> </tt>
+<a name="L698"></a><tt class="py-lineno"> 698</tt>  <tt class="py-line">                                <tt class="py-name">texel_data</tt><tt class="py-op">)</tt>              <tt class="py-comment"># texel data</tt> </tt>
+<a name="L699"></a><tt class="py-lineno"> 699</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glGetTexLevelParameteriv</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_PROXY_TEXTURE_1D</tt><tt class="py-op">,</tt><tt class="py-number">0</tt><tt class="py-op">,</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXT [...]
+<a name="L700"></a><tt class="py-lineno"> 700</tt>  <tt class="py-line">                    <tt class="py-keyword">raise</tt> <tt id="link-152" class="py-name"><a title="VisionEgg.Gratings.NumSamplesTooLargeError" class="py-name" href="#" onclick="return doclink('link-152', 'NumSamplesTooLargeError', 'link-147');">NumSamplesTooLargeError</a></tt><tt class="py-op">(</tt><tt class="py-string">"Grating num_samples is too wide for your video system!"</tt><tt class="py-op">)</tt> </tt>
+<a name="L701"></a><tt class="py-lineno"> 701</tt>  <tt class="py-line"> </tt>
+<a name="L702"></a><tt class="py-lineno"> 702</tt>  <tt class="py-line">            <tt class="py-comment"># If we got here, it worked and we can load the texture for real.</tt> </tt>
+<a name="L703"></a><tt class="py-lineno"> 703</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glTexImage1D</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE_1D</tt><tt class="py-op">,</tt>        <tt class="py-comment"># target</tt> </tt>
+<a name="L704"></a><tt class="py-lineno"> 704</tt>  <tt class="py-line">                            <tt class="py-name">mipmap_level</tt><tt class="py-op">,</tt>            <tt class="py-comment"># level</tt> </tt>
+<a name="L705"></a><tt class="py-lineno"> 705</tt>  <tt class="py-line">                            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">gl_internal_format</tt><tt class="py-op">,</tt> <tt class="py-comment"># video RAM internal format: RGB</tt> </tt>
+<a name="L706"></a><tt class="py-lineno"> 706</tt>  <tt class="py-line">                            <tt class="py-name">this_mipmap_level_num_samples</tt><tt class="py-op">,</tt>        <tt class="py-comment"># width</tt> </tt>
+<a name="L707"></a><tt class="py-lineno"> 707</tt>  <tt class="py-line">                            <tt class="py-number">0</tt><tt class="py-op">,</tt>                       <tt class="py-comment"># border</tt> </tt>
+<a name="L708"></a><tt class="py-lineno"> 708</tt>  <tt class="py-line">                            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">format</tt><tt class="py-op">,</tt>             <tt class="py-comment"># format of image data</tt> </tt>
+<a name="L709"></a><tt class="py-lineno"> 709</tt>  <tt class="py-line">                            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">gl_type</tt><tt class="py-op">,</tt>            <tt class="py-comment"># type of image data</tt> </tt>
+<a name="L710"></a><tt class="py-lineno"> 710</tt>  <tt class="py-line">                            <tt class="py-name">texel_data</tt><tt class="py-op">)</tt>              <tt class="py-comment"># texel data</tt> </tt>
+<a name="L711"></a><tt class="py-lineno"> 711</tt>  <tt class="py-line"> </tt>
+<a name="L712"></a><tt class="py-lineno"> 712</tt>  <tt class="py-line">            <tt class="py-comment"># prepare for next mipmap level</tt> </tt>
+<a name="L713"></a><tt class="py-lineno"> 713</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">this_mipmap_level_num_samples</tt> <tt class="py-op">=</tt> <tt class="py-name">this_mipmap_level_num_samples</tt><tt class="py-op">/</tt><tt class="py-number">2</tt> <tt class="py-comment"># integer division</tt> </tt>
+<a name="L714"></a><tt class="py-lineno"> 714</tt>  <tt class="py-line">            <tt class="py-name">mipmap_level</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L715"></a><tt class="py-lineno"> 715</tt>  <tt class="py-line"> </tt>
+<a name="L716"></a><tt class="py-lineno"> 716</tt>  <tt class="py-line">        <tt class="py-comment"># Set some texture object defaults</tt> </tt>
+<a name="L717"></a><tt class="py-lineno"> 717</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glTexParameteri</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE_1D</tt><tt class="py-op">,</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE_WRAP_S</tt><tt class="py-op">,</tt><tt class="py-name">gl</tt><tt class="p [...]
+<a name="L718"></a><tt class="py-lineno"> 718</tt>  <tt class="py-line">        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glTexParameteri</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE_1D</tt><tt class="py-op">,</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE_WRAP_T</tt><tt class="py-op">,</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-na [...]
+<a name="L719"></a><tt class="py-lineno"> 719</tt>  <tt class="py-line">        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glTexParameteri</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE_1D</tt><tt class="py-op">,</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE_MAG_FILTER</tt><tt class="py-op">,</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="p [...]
+<a name="L720"></a><tt class="py-lineno"> 720</tt>  <tt class="py-line">        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glTexParameteri</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE_1D</tt><tt class="py-op">,</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE_MIN_FILTER</tt><tt class="py-op">,</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py [...]
+<a name="L721"></a><tt class="py-lineno"> 721</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_cached_num_samples</tt> <tt class="py-op">=</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">num_samples</tt> </tt>
+</div><a name="L722"></a><tt class="py-lineno"> 722</tt>  <tt class="py-line"> </tt>
+<a name="SphereGrating.__rebuild_display_list"></a><div id="SphereGrating.__rebuild_display_list-def"><a name="L723"></a><tt class="py-lineno"> 723</tt> <a class="py-toggle" href="#" id="SphereGrating.__rebuild_display_list-toggle" onclick="return toggle('SphereGrating.__rebuild_display_list');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.SphereMap.SphereGrating-class.html#__rebuild_display_list">__rebuild_display_list</a><tt class= [...]
+</div><div id="SphereGrating.__rebuild_display_list-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="SphereGrating.__rebuild_display_list-expanded"><a name="L724"></a><tt class="py-lineno"> 724</tt>  <tt class="py-line">        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glNewList</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">cached_display_list_id</tt><tt class="py-op">,</tt><tt [...]
+<a name="L725"></a><tt class="py-lineno"> 725</tt>  <tt class="py-line"> </tt>
+<a name="L726"></a><tt class="py-lineno"> 726</tt>  <tt class="py-line">        <tt class="py-name">p</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt> </tt>
+<a name="L727"></a><tt class="py-lineno"> 727</tt>  <tt class="py-line">        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glBegin</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_QUADS</tt><tt class="py-op">)</tt> </tt>
+<a name="L728"></a><tt class="py-lineno"> 728</tt>  <tt class="py-line"> </tt>
+<a name="L729"></a><tt class="py-lineno"> 729</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">stack</tt> <tt class="py-keyword">in</tt> <tt class="py-name">range</tt><tt class="py-op">(</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">stacks</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L730"></a><tt class="py-lineno"> 730</tt>  <tt class="py-line">            <tt class="py-name">stack_upper_frac</tt> <tt class="py-op">=</tt> <tt id="link-153" class="py-name"><a title="float" class="py-name" href="#" onclick="return doclink('link-153', 'float', 'link-59');">float</a></tt><tt class="py-op">(</tt><tt class="py-name">stack</tt><tt class="py-op">+</tt><tt class="py-number">1</tt><tt class="py-op">)</tt><tt class="py-op">/</tt><tt class="py-name">p</tt><tt class="py [...]
+<a name="L731"></a><tt class="py-lineno"> 731</tt>  <tt class="py-line">            <tt class="py-name">stack_lower_frac</tt> <tt class="py-op">=</tt> <tt id="link-154" class="py-name"><a title="float" class="py-name" href="#" onclick="return doclink('link-154', 'float', 'link-59');">float</a></tt><tt class="py-op">(</tt><tt class="py-name">stack</tt><tt class="py-op">)</tt><tt class="py-op">/</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">stacks</tt> </tt>
+<a name="L732"></a><tt class="py-lineno"> 732</tt>  <tt class="py-line">            <tt class="py-name">theta_upper</tt> <tt class="py-op">=</tt> <tt class="py-name">stack_upper_frac</tt> <tt class="py-op">*</tt> <tt class="py-name">math</tt><tt class="py-op">.</tt><tt class="py-name">pi</tt> </tt>
+<a name="L733"></a><tt class="py-lineno"> 733</tt>  <tt class="py-line">            <tt class="py-name">theta_lower</tt> <tt class="py-op">=</tt> <tt class="py-name">stack_lower_frac</tt> <tt class="py-op">*</tt> <tt class="py-name">math</tt><tt class="py-op">.</tt><tt class="py-name">pi</tt> </tt>
+<a name="L734"></a><tt class="py-lineno"> 734</tt>  <tt class="py-line">            <tt class="py-name">y_upper</tt> <tt class="py-op">=</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">radius</tt> <tt class="py-op">*</tt> <tt class="py-name">math</tt><tt class="py-op">.</tt><tt class="py-name">cos</tt><tt class="py-op">(</tt> <tt class="py-name">theta_upper</tt> <tt class="py-op">)</tt> </tt>
+<a name="L735"></a><tt class="py-lineno"> 735</tt>  <tt class="py-line">            <tt class="py-name">w_upper</tt> <tt class="py-op">=</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">radius</tt> <tt class="py-op">*</tt> <tt class="py-name">math</tt><tt class="py-op">.</tt><tt class="py-name">sin</tt><tt class="py-op">(</tt> <tt class="py-name">theta_upper</tt> <tt class="py-op">)</tt> </tt>
+<a name="L736"></a><tt class="py-lineno"> 736</tt>  <tt class="py-line">            <tt class="py-name">y_lower</tt> <tt class="py-op">=</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">radius</tt> <tt class="py-op">*</tt> <tt class="py-name">math</tt><tt class="py-op">.</tt><tt class="py-name">cos</tt><tt class="py-op">(</tt> <tt class="py-name">theta_lower</tt> <tt class="py-op">)</tt> </tt>
+<a name="L737"></a><tt class="py-lineno"> 737</tt>  <tt class="py-line">            <tt class="py-name">w_lower</tt> <tt class="py-op">=</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">radius</tt> <tt class="py-op">*</tt> <tt class="py-name">math</tt><tt class="py-op">.</tt><tt class="py-name">sin</tt><tt class="py-op">(</tt> <tt class="py-name">theta_lower</tt> <tt class="py-op">)</tt> </tt>
+<a name="L738"></a><tt class="py-lineno"> 738</tt>  <tt class="py-line">            <tt class="py-keyword">for</tt> <tt class="py-name">slice</tt> <tt class="py-keyword">in</tt> <tt class="py-name">range</tt><tt class="py-op">(</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">slices</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L739"></a><tt class="py-lineno"> 739</tt>  <tt class="py-line">                <tt class="py-name">slice_start_frac</tt> <tt class="py-op">=</tt> <tt id="link-155" class="py-name"><a title="float" class="py-name" href="#" onclick="return doclink('link-155', 'float', 'link-59');">float</a></tt><tt class="py-op">(</tt><tt class="py-name">slice</tt><tt class="py-op">)</tt><tt class="py-op">/</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">slices</tt> </tt>
+<a name="L740"></a><tt class="py-lineno"> 740</tt>  <tt class="py-line">                <tt class="py-name">slice_stop_frac</tt> <tt class="py-op">=</tt> <tt id="link-156" class="py-name"><a title="float" class="py-name" href="#" onclick="return doclink('link-156', 'float', 'link-59');">float</a></tt><tt class="py-op">(</tt><tt class="py-name">slice</tt><tt class="py-op">+</tt><tt class="py-number">1</tt><tt class="py-op">)</tt><tt class="py-op">/</tt><tt class="py-name">p</tt><tt class= [...]
+<a name="L741"></a><tt class="py-lineno"> 741</tt>  <tt class="py-line">                <tt class="py-name">phi_start</tt> <tt class="py-op">=</tt> <tt class="py-name">slice_start_frac</tt> <tt class="py-op">*</tt> <tt class="py-number">2</tt> <tt class="py-op">*</tt> <tt class="py-name">math</tt><tt class="py-op">.</tt><tt class="py-name">pi</tt> </tt>
+<a name="L742"></a><tt class="py-lineno"> 742</tt>  <tt class="py-line">                <tt class="py-name">phi_stop</tt> <tt class="py-op">=</tt> <tt class="py-name">slice_stop_frac</tt> <tt class="py-op">*</tt> <tt class="py-number">2</tt> <tt class="py-op">*</tt> <tt class="py-name">math</tt><tt class="py-op">.</tt><tt class="py-name">pi</tt> </tt>
+<a name="L743"></a><tt class="py-lineno"> 743</tt>  <tt class="py-line">                <tt class="py-name">x_start_upper</tt> <tt class="py-op">=</tt> <tt class="py-name">w_upper</tt> <tt class="py-op">*</tt> <tt class="py-name">math</tt><tt class="py-op">.</tt><tt class="py-name">cos</tt><tt class="py-op">(</tt><tt class="py-name">phi_start</tt><tt class="py-op">)</tt> </tt>
+<a name="L744"></a><tt class="py-lineno"> 744</tt>  <tt class="py-line">                <tt class="py-name">x_start_lower</tt> <tt class="py-op">=</tt> <tt class="py-name">w_lower</tt> <tt class="py-op">*</tt> <tt class="py-name">math</tt><tt class="py-op">.</tt><tt class="py-name">cos</tt><tt class="py-op">(</tt><tt class="py-name">phi_start</tt><tt class="py-op">)</tt> </tt>
+<a name="L745"></a><tt class="py-lineno"> 745</tt>  <tt class="py-line">                <tt class="py-name">x_stop_upper</tt> <tt class="py-op">=</tt> <tt class="py-name">w_upper</tt> <tt class="py-op">*</tt> <tt class="py-name">math</tt><tt class="py-op">.</tt><tt class="py-name">cos</tt><tt class="py-op">(</tt><tt class="py-name">phi_stop</tt><tt class="py-op">)</tt> </tt>
+<a name="L746"></a><tt class="py-lineno"> 746</tt>  <tt class="py-line">                <tt class="py-name">x_stop_lower</tt> <tt class="py-op">=</tt> <tt class="py-name">w_lower</tt> <tt class="py-op">*</tt> <tt class="py-name">math</tt><tt class="py-op">.</tt><tt class="py-name">cos</tt><tt class="py-op">(</tt><tt class="py-name">phi_stop</tt><tt class="py-op">)</tt> </tt>
+<a name="L747"></a><tt class="py-lineno"> 747</tt>  <tt class="py-line">                <tt class="py-name">z_start_upper</tt> <tt class="py-op">=</tt> <tt class="py-name">w_upper</tt> <tt class="py-op">*</tt> <tt class="py-name">math</tt><tt class="py-op">.</tt><tt class="py-name">sin</tt><tt class="py-op">(</tt><tt class="py-name">phi_start</tt><tt class="py-op">)</tt> </tt>
+<a name="L748"></a><tt class="py-lineno"> 748</tt>  <tt class="py-line">                <tt class="py-name">z_start_lower</tt> <tt class="py-op">=</tt> <tt class="py-name">w_lower</tt> <tt class="py-op">*</tt> <tt class="py-name">math</tt><tt class="py-op">.</tt><tt class="py-name">sin</tt><tt class="py-op">(</tt><tt class="py-name">phi_start</tt><tt class="py-op">)</tt> </tt>
+<a name="L749"></a><tt class="py-lineno"> 749</tt>  <tt class="py-line">                <tt class="py-name">z_stop_upper</tt> <tt class="py-op">=</tt> <tt class="py-name">w_upper</tt> <tt class="py-op">*</tt> <tt class="py-name">math</tt><tt class="py-op">.</tt><tt class="py-name">sin</tt><tt class="py-op">(</tt><tt class="py-name">phi_stop</tt><tt class="py-op">)</tt> </tt>
+<a name="L750"></a><tt class="py-lineno"> 750</tt>  <tt class="py-line">                <tt class="py-name">z_stop_lower</tt> <tt class="py-op">=</tt> <tt class="py-name">w_lower</tt> <tt class="py-op">*</tt> <tt class="py-name">math</tt><tt class="py-op">.</tt><tt class="py-name">sin</tt><tt class="py-op">(</tt><tt class="py-name">phi_stop</tt><tt class="py-op">)</tt> </tt>
+<a name="L751"></a><tt class="py-lineno"> 751</tt>  <tt class="py-line"> </tt>
+<a name="L752"></a><tt class="py-lineno"> 752</tt>  <tt class="py-line">                <tt class="py-name">tex_l</tt> <tt class="py-op">=</tt> <tt class="py-name">slice_start_frac</tt> </tt>
+<a name="L753"></a><tt class="py-lineno"> 753</tt>  <tt class="py-line">                <tt class="py-name">tex_r</tt> <tt class="py-op">=</tt> <tt class="py-name">slice_stop_frac</tt> </tt>
+<a name="L754"></a><tt class="py-lineno"> 754</tt>  <tt class="py-line">                <tt class="py-name">tex_b</tt> <tt class="py-op">=</tt> <tt class="py-number">0.0</tt><tt class="py-comment">#stack_lower_frac</tt> </tt>
+<a name="L755"></a><tt class="py-lineno"> 755</tt>  <tt class="py-line">                <tt class="py-name">tex_t</tt> <tt class="py-op">=</tt> <tt class="py-number">1.0</tt><tt class="py-comment">#stack_upper_frac</tt> </tt>
+<a name="L756"></a><tt class="py-lineno"> 756</tt>  <tt class="py-line"> </tt>
+<a name="L757"></a><tt class="py-lineno"> 757</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glTexCoord2f</tt><tt class="py-op">(</tt><tt class="py-name">tex_l</tt><tt class="py-op">,</tt><tt class="py-name">tex_t</tt><tt class="py-op">)</tt> </tt>
+<a name="L758"></a><tt class="py-lineno"> 758</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glVertex3f</tt><tt class="py-op">(</tt><tt class="py-name">x_start_upper</tt><tt class="py-op">,</tt> <tt class="py-name">y_upper</tt><tt class="py-op">,</tt> <tt class="py-name">z_start_upper</tt><tt class="py-op">)</tt> </tt>
+<a name="L759"></a><tt class="py-lineno"> 759</tt>  <tt class="py-line"> </tt>
+<a name="L760"></a><tt class="py-lineno"> 760</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glTexCoord2f</tt><tt class="py-op">(</tt><tt class="py-name">tex_r</tt><tt class="py-op">,</tt><tt class="py-name">tex_t</tt><tt class="py-op">)</tt> </tt>
+<a name="L761"></a><tt class="py-lineno"> 761</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glVertex3f</tt><tt class="py-op">(</tt><tt class="py-name">x_stop_upper</tt><tt class="py-op">,</tt> <tt class="py-name">y_upper</tt><tt class="py-op">,</tt> <tt class="py-name">z_stop_upper</tt><tt class="py-op">)</tt> </tt>
+<a name="L762"></a><tt class="py-lineno"> 762</tt>  <tt class="py-line"> </tt>
+<a name="L763"></a><tt class="py-lineno"> 763</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glTexCoord2f</tt><tt class="py-op">(</tt><tt class="py-name">tex_r</tt><tt class="py-op">,</tt><tt class="py-name">tex_b</tt><tt class="py-op">)</tt> </tt>
+<a name="L764"></a><tt class="py-lineno"> 764</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glVertex3f</tt><tt class="py-op">(</tt><tt class="py-name">x_stop_lower</tt><tt class="py-op">,</tt> <tt class="py-name">y_lower</tt><tt class="py-op">,</tt> <tt class="py-name">z_stop_lower</tt><tt class="py-op">)</tt> </tt>
+<a name="L765"></a><tt class="py-lineno"> 765</tt>  <tt class="py-line"> </tt>
+<a name="L766"></a><tt class="py-lineno"> 766</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glTexCoord2f</tt><tt class="py-op">(</tt><tt class="py-name">tex_l</tt><tt class="py-op">,</tt><tt class="py-name">tex_b</tt><tt class="py-op">)</tt> </tt>
+<a name="L767"></a><tt class="py-lineno"> 767</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glVertex3f</tt><tt class="py-op">(</tt><tt class="py-name">x_start_lower</tt><tt class="py-op">,</tt> <tt class="py-name">y_lower</tt><tt class="py-op">,</tt> <tt class="py-name">z_start_lower</tt><tt class="py-op">)</tt> </tt>
+<a name="L768"></a><tt class="py-lineno"> 768</tt>  <tt class="py-line"> </tt>
+<a name="L769"></a><tt class="py-lineno"> 769</tt>  <tt class="py-line">        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glEnd</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L770"></a><tt class="py-lineno"> 770</tt>  <tt class="py-line">        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glEndList</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L771"></a><tt class="py-lineno"> 771</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_cached_radius</tt> <tt class="py-op">=</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">radius</tt> </tt>
+<a name="L772"></a><tt class="py-lineno"> 772</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_cached_slices</tt> <tt class="py-op">=</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">slices</tt> </tt>
+<a name="L773"></a><tt class="py-lineno"> 773</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_cached_stacks</tt> <tt class="py-op">=</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">stacks</tt> </tt>
+</div><a name="L774"></a><tt class="py-lineno"> 774</tt>  <tt class="py-line"> </tt>
+<a name="SphereGrating.draw"></a><div id="SphereGrating.draw-def"><a name="L775"></a><tt class="py-lineno"> 775</tt> <a class="py-toggle" href="#" id="SphereGrating.draw-toggle" onclick="return toggle('SphereGrating.draw');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.SphereMap.SphereGrating-class.html#draw">draw</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="SphereGrating.draw-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="SphereGrating.draw-expanded"><a name="L776"></a><tt class="py-lineno"> 776</tt>  <tt class="py-line">        <tt class="py-docstring">"""Redraw the scene on every frame.</tt> </tt>
+<a name="L777"></a><tt class="py-lineno"> 777</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L778"></a><tt class="py-lineno"> 778</tt>  <tt class="py-line">        <tt class="py-name">p</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt> </tt>
+<a name="L779"></a><tt class="py-lineno"> 779</tt>  <tt class="py-line"> </tt>
+<a name="L780"></a><tt class="py-lineno"> 780</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_cached_radius</tt> <tt class="py-op">!=</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">radius</tt> <tt class="py-keyword">or</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_cached_slices</tt> <tt class="py-op">!=</tt> <tt class="py-name">p</tt><tt  [...]
+<a name="L781"></a><tt class="py-lineno"> 781</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__rebuild_display_list</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L782"></a><tt class="py-lineno"> 782</tt>  <tt class="py-line"> </tt>
+<a name="L783"></a><tt class="py-lineno"> 783</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_cached_num_samples</tt> <tt class="py-op">!=</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">num_samples</tt><tt class="py-op">:</tt> </tt>
+<a name="L784"></a><tt class="py-lineno"> 784</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__rebuild_texture_object</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L785"></a><tt class="py-lineno"> 785</tt>  <tt class="py-line"> </tt>
+<a name="L786"></a><tt class="py-lineno"> 786</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">on</tt><tt class="py-op">:</tt> </tt>
+<a name="L787"></a><tt class="py-lineno"> 787</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">bit_depth</tt> <tt class="py-op">!=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">cached_bit_depth</tt><tt class="py-op">:</tt> </tt>
+<a name="L788"></a><tt class="py-lineno"> 788</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-157" class="py-name"><a title="VisionEgg.Gratings.AlphaGratingCommon.calculate_bit_depth_dependencies
+VisionEgg.Gratings.LuminanceGratingCommon.calculate_bit_depth_dependencies" class="py-name" href="#" onclick="return doclink('link-157', 'calculate_bit_depth_dependencies', 'link-148');">calculate_bit_depth_dependencies</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L789"></a><tt class="py-lineno"> 789</tt>  <tt class="py-line">            <tt class="py-comment"># Set OpenGL state variables</tt> </tt>
+<a name="L790"></a><tt class="py-lineno"> 790</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glEnable</tt><tt class="py-op">(</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_DEPTH_TEST</tt> <tt class="py-op">)</tt> </tt>
+<a name="L791"></a><tt class="py-lineno"> 791</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glEnable</tt><tt class="py-op">(</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE_1D</tt> <tt class="py-op">)</tt>  <tt class="py-comment"># Make sure textures are drawn</tt> </tt>
+<a name="L792"></a><tt class="py-lineno"> 792</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glDisable</tt><tt class="py-op">(</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE_2D</tt> <tt class="py-op">)</tt> </tt>
+<a name="L793"></a><tt class="py-lineno"> 793</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glDisable</tt><tt class="py-op">(</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_BLEND</tt> <tt class="py-op">)</tt> </tt>
+<a name="L794"></a><tt class="py-lineno"> 794</tt>  <tt class="py-line"> </tt>
+<a name="L795"></a><tt class="py-lineno"> 795</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glBindTexture</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE_1D</tt><tt class="py-op">,</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">texture_object_id</tt><tt class="py-op">)</tt> </tt>
+<a name="L796"></a><tt class="py-lineno"> 796</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glTexParameteri</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE_1D</tt><tt class="py-op">,</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE_MIN_FILTER</tt><tt class="py-op">,</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class [...]
+<a name="L797"></a><tt class="py-lineno"> 797</tt>  <tt class="py-line"> </tt>
+<a name="L798"></a><tt class="py-lineno"> 798</tt>  <tt class="py-line">            <tt class="py-name">l</tt> <tt class="py-op">=</tt> <tt class="py-number">0.0</tt> </tt>
+<a name="L799"></a><tt class="py-lineno"> 799</tt>  <tt class="py-line">            <tt class="py-name">r</tt> <tt class="py-op">=</tt> <tt class="py-number">360.0</tt> </tt>
+<a name="L800"></a><tt class="py-lineno"> 800</tt>  <tt class="py-line"> </tt>
+<a name="L801"></a><tt class="py-lineno"> 801</tt>  <tt class="py-line">            <tt class="py-name">mipmap_level</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L802"></a><tt class="py-lineno"> 802</tt>  <tt class="py-line">            <tt class="py-name">this_mipmap_level_num_samples</tt> <tt class="py-op">=</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">num_samples</tt> </tt>
+<a name="L803"></a><tt class="py-lineno"> 803</tt>  <tt class="py-line">            <tt class="py-keyword">while</tt> <tt class="py-name">this_mipmap_level_num_samples</tt> <tt class="py-op">>=</tt> <tt class="py-number">1</tt><tt class="py-op">:</tt> </tt>
+<a name="L804"></a><tt class="py-lineno"> 804</tt>  <tt class="py-line">                <tt class="py-name">inc</tt> <tt class="py-op">=</tt> <tt class="py-number">360.0</tt><tt class="py-op">/</tt><tt id="link-158" class="py-name"><a title="float" class="py-name" href="#" onclick="return doclink('link-158', 'float', 'link-59');">float</a></tt><tt class="py-op">(</tt><tt class="py-name">this_mipmap_level_num_samples</tt><tt class="py-op">)</tt><tt class="py-comment"># degrees per pixel</ [...]
+<a name="L805"></a><tt class="py-lineno"> 805</tt>  <tt class="py-line">                <tt class="py-name">cycles_per_texel</tt> <tt class="py-op">=</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">spatial_freq_cpd</tt> <tt class="py-op">*</tt> <tt class="py-name">inc</tt> </tt>
+<a name="L806"></a><tt class="py-lineno"> 806</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">cycles_per_texel</tt> <tt class="py-op"><</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">lowpass_cutoff_cycles_per_texel</tt><tt class="py-op">:</tt> <tt class="py-comment"># sharp cutoff lowpass filter</tt> </tt>
+<a name="L807"></a><tt class="py-lineno"> 807</tt>  <tt class="py-line">                    <tt class="py-keyword">if</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">ignore_time</tt><tt class="py-op">:</tt> </tt>
+<a name="L808"></a><tt class="py-lineno"> 808</tt>  <tt class="py-line">                        <tt class="py-name">phase</tt> <tt class="py-op">=</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">phase_at_t0</tt> </tt>
+<a name="L809"></a><tt class="py-lineno"> 809</tt>  <tt class="py-line">                    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L810"></a><tt class="py-lineno"> 810</tt>  <tt class="py-line">                        <tt class="py-name">t_var</tt> <tt class="py-op">=</tt> <tt id="link-159" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-159', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-160" class="py-name"><a title="VisionEgg.time_func" class="py-name" href="#" onclick="return doclink('link-160', 'time_func', 'link-144');">time [...]
+<a name="L811"></a><tt class="py-lineno"> 811</tt>  <tt class="py-line">                        <tt class="py-name">phase</tt> <tt class="py-op">=</tt> <tt class="py-name">t_var</tt><tt class="py-op">*</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">temporal_freq_hz</tt><tt class="py-op">*</tt><tt class="py-number">360.0</tt> <tt class="py-op">+</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">phase_at_t0</tt> </tt>
+<a name="L812"></a><tt class="py-lineno"> 812</tt>  <tt class="py-line">                    <tt class="py-name">floating_point_sin</tt> <tt class="py-op">=</tt> <tt class="py-name">Numeric</tt><tt class="py-op">.</tt><tt class="py-name">sin</tt><tt class="py-op">(</tt><tt class="py-number">2.0</tt><tt class="py-op">*</tt><tt class="py-name">math</tt><tt class="py-op">.</tt><tt class="py-name">pi</tt><tt class="py-op">*</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-n [...]
+<a name="L813"></a><tt class="py-lineno"> 813</tt>  <tt class="py-line">                    <tt class="py-name">floating_point_sin</tt> <tt class="py-op">=</tt> <tt class="py-name">Numeric</tt><tt class="py-op">.</tt><tt class="py-name">clip</tt><tt class="py-op">(</tt><tt class="py-name">floating_point_sin</tt><tt class="py-op">,</tt><tt class="py-number">0.0</tt><tt class="py-op">,</tt><tt class="py-number">1.0</tt><tt class="py-op">)</tt> <tt class="py-comment"># allow square wave gen [...]
+<a name="L814"></a><tt class="py-lineno"> 814</tt>  <tt class="py-line">                    <tt class="py-name">texel_data</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">floating_point_sin</tt><tt class="py-op">*</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">max_int_val</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">astype</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt [...]
+<a name="L815"></a><tt class="py-lineno"> 815</tt>  <tt class="py-line">                <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L816"></a><tt class="py-lineno"> 816</tt>  <tt class="py-line">                    <tt class="py-name">blank</tt> <tt class="py-op">=</tt> <tt class="py-number">0.5</tt><tt class="py-op">*</tt><tt class="py-name">Numeric</tt><tt class="py-op">.</tt><tt class="py-name">ones</tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-name">this_mipmap_level_num_samples</tt><tt class="py-op">,</tt><tt class="py-op">)</tt><tt class="py-op">,</tt><tt class="py-string">'d'</tt>< [...]
+<a name="L817"></a><tt class="py-lineno"> 817</tt>  <tt class="py-line">                    <tt class="py-name">texel_data</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">blank</tt><tt class="py-op">*</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">max_int_val</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">astype</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-na [...]
+<a name="L818"></a><tt class="py-lineno"> 818</tt>  <tt class="py-line"> </tt>
+<a name="L819"></a><tt class="py-lineno"> 819</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glTexSubImage1D</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE_1D</tt><tt class="py-op">,</tt>           <tt class="py-comment"># target</tt> </tt>
+<a name="L820"></a><tt class="py-lineno"> 820</tt>  <tt class="py-line">                                <tt class="py-name">mipmap_level</tt><tt class="py-op">,</tt>                  <tt class="py-comment"># level</tt> </tt>
+<a name="L821"></a><tt class="py-lineno"> 821</tt>  <tt class="py-line">                                <tt class="py-number">0</tt><tt class="py-op">,</tt>                             <tt class="py-comment"># x offset</tt> </tt>
+<a name="L822"></a><tt class="py-lineno"> 822</tt>  <tt class="py-line">                                <tt class="py-name">this_mipmap_level_num_samples</tt><tt class="py-op">,</tt> <tt class="py-comment"># width</tt> </tt>
+<a name="L823"></a><tt class="py-lineno"> 823</tt>  <tt class="py-line">                                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">format</tt><tt class="py-op">,</tt>                   <tt class="py-comment"># data format</tt> </tt>
+<a name="L824"></a><tt class="py-lineno"> 824</tt>  <tt class="py-line">                                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">gl_type</tt><tt class="py-op">,</tt>                  <tt class="py-comment"># data type</tt> </tt>
+<a name="L825"></a><tt class="py-lineno"> 825</tt>  <tt class="py-line">                                <tt class="py-name">texel_data</tt><tt class="py-op">)</tt> </tt>
+<a name="L826"></a><tt class="py-lineno"> 826</tt>  <tt class="py-line"> </tt>
+<a name="L827"></a><tt class="py-lineno"> 827</tt>  <tt class="py-line">                <tt class="py-comment"># prepare for next mipmap level</tt> </tt>
+<a name="L828"></a><tt class="py-lineno"> 828</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-name">this_mipmap_level_num_samples</tt> <tt class="py-op">=</tt> <tt class="py-name">this_mipmap_level_num_samples</tt><tt class="py-op">/</tt><tt class="py-number">2</tt> <tt class="py-comment"># integer division</tt> </tt>
+<a name="L829"></a><tt class="py-lineno"> 829</tt>  <tt class="py-line">                <tt class="py-name">mipmap_level</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L830"></a><tt class="py-lineno"> 830</tt>  <tt class="py-line"> </tt>
+<a name="L831"></a><tt class="py-lineno"> 831</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glTexEnvi</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE_ENV</tt><tt class="py-op">,</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE_ENV_MODE</tt><tt class="py-op">,</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py [...]
+<a name="L832"></a><tt class="py-lineno"> 832</tt>  <tt class="py-line"> </tt>
+<a name="L833"></a><tt class="py-lineno"> 833</tt>  <tt class="py-line">            <tt class="py-comment"># clear modelview matrix</tt> </tt>
+<a name="L834"></a><tt class="py-lineno"> 834</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glMatrixMode</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_MODELVIEW</tt><tt class="py-op">)</tt> </tt>
+<a name="L835"></a><tt class="py-lineno"> 835</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glPushMatrix</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L836"></a><tt class="py-lineno"> 836</tt>  <tt class="py-line">            <tt class="py-comment"># center the grating</tt> </tt>
+<a name="L837"></a><tt class="py-lineno"> 837</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glRotatef</tt><tt class="py-op">(</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">grating_center_azimuth</tt><tt class="py-op">,</tt><tt class="py-number">0.0</tt><tt class="py-op">,</tt><tt class="py-op">-</tt><tt class="py-number">1.0</tt><tt class="py-op">,</tt><tt class="py-numb [...]
+<a name="L838"></a><tt class="py-lineno"> 838</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glRotatef</tt><tt class="py-op">(</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">grating_center_elevation</tt><tt class="py-op">,</tt><tt class="py-number">1.0</tt><tt class="py-op">,</tt><tt class="py-number">0.0</tt><tt class="py-op">,</tt><tt class="py-number">0.0</tt><tt class="py-op">)</tt> </tt>
+<a name="L839"></a><tt class="py-lineno"> 839</tt>  <tt class="py-line"> </tt>
+<a name="L840"></a><tt class="py-lineno"> 840</tt>  <tt class="py-line">            <tt class="py-comment"># do the orientation</tt> </tt>
+<a name="L841"></a><tt class="py-lineno"> 841</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glRotatef</tt><tt class="py-op">(</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">orientation</tt><tt class="py-op">,</tt><tt class="py-number">0.0</tt><tt class="py-op">,</tt><tt class="py-number">0.0</tt><tt class="py-op">,</tt><tt class="py-number">1.0</tt><tt class="py-op">)</tt> </tt>
+<a name="L842"></a><tt class="py-lineno"> 842</tt>  <tt class="py-line"> </tt>
+<a name="L843"></a><tt class="py-lineno"> 843</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glCallList</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">cached_display_list_id</tt><tt class="py-op">)</tt> </tt>
+<a name="L844"></a><tt class="py-lineno"> 844</tt>  <tt class="py-line"> </tt>
+<a name="L845"></a><tt class="py-lineno"> 845</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glDisable</tt><tt class="py-op">(</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE_1D</tt> <tt class="py-op">)</tt> </tt>
+<a name="L846"></a><tt class="py-lineno"> 846</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glPopMatrix</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L847"></a><tt class="py-lineno"> 847</tt>  <tt class="py-line"> </tt>
+<a name="SphereWindow"></a><div id="SphereWindow-def"><a name="L848"></a><tt class="py-lineno"> 848</tt> <a class="py-toggle" href="#" id="SphereWindow-toggle" onclick="return toggle('SphereWindow');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.SphereMap.SphereWindow-class.html">SphereWindow</a><tt class="py-op">(</tt><tt class="py-base-class">VisionEgg</tt><tt class="py-op">.</tt><tt class="py-base-class">Gratings</tt><tt class="py-o [...]
+</div><div id="SphereWindow-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="SphereWindow-expanded"><a name="L849"></a><tt class="py-lineno"> 849</tt>  <tt class="py-line">    <tt class="py-docstring">"""This draws an opaque sphere with a single window in it.</tt> </tt>
+<a name="L850"></a><tt class="py-lineno"> 850</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L851"></a><tt class="py-lineno"> 851</tt>  <tt class="py-line"><tt class="py-docstring">    This is useful when you need to have a viewport on a 3D scene.</tt> </tt>
+<a name="L852"></a><tt class="py-lineno"> 852</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L853"></a><tt class="py-lineno"> 853</tt>  <tt class="py-line"><tt class="py-docstring">    Parameters</tt> </tt>
+<a name="L854"></a><tt class="py-lineno"> 854</tt>  <tt class="py-line"><tt class="py-docstring">    ==========</tt> </tt>
+<a name="L855"></a><tt class="py-lineno"> 855</tt>  <tt class="py-line"><tt class="py-docstring">    bit_depth                     -- precision with which grating is calculated and sent to OpenGL (UnsignedInteger)</tt> </tt>
+<a name="L856"></a><tt class="py-lineno"> 856</tt>  <tt class="py-line"><tt class="py-docstring">                                     Inherited from VisionEgg.Gratings.LuminanceGratingCommon</tt> </tt>
+<a name="L857"></a><tt class="py-lineno"> 857</tt>  <tt class="py-line"><tt class="py-docstring">                                     Default: 8</tt> </tt>
+<a name="L858"></a><tt class="py-lineno"> 858</tt>  <tt class="py-line"><tt class="py-docstring">    num_s_samples                 -- (UnsignedInteger)</tt> </tt>
+<a name="L859"></a><tt class="py-lineno"> 859</tt>  <tt class="py-line"><tt class="py-docstring">                                     Default: 512</tt> </tt>
+<a name="L860"></a><tt class="py-lineno"> 860</tt>  <tt class="py-line"><tt class="py-docstring">    num_t_samples                 -- (UnsignedInteger)</tt> </tt>
+<a name="L861"></a><tt class="py-lineno"> 861</tt>  <tt class="py-line"><tt class="py-docstring">                                     Default: 512</tt> </tt>
+<a name="L862"></a><tt class="py-lineno"> 862</tt>  <tt class="py-line"><tt class="py-docstring">    on                            -- (Boolean)</tt> </tt>
+<a name="L863"></a><tt class="py-lineno"> 863</tt>  <tt class="py-line"><tt class="py-docstring">                                     Default: True</tt> </tt>
+<a name="L864"></a><tt class="py-lineno"> 864</tt>  <tt class="py-line"><tt class="py-docstring">    opaque_color                  -- (Sequence4 of Real)</tt> </tt>
+<a name="L865"></a><tt class="py-lineno"> 865</tt>  <tt class="py-line"><tt class="py-docstring">                                     Default: (0.5, 0.5, 0.5, 0.0)</tt> </tt>
+<a name="L866"></a><tt class="py-lineno"> 866</tt>  <tt class="py-line"><tt class="py-docstring">    radius                        -- (Real)</tt> </tt>
+<a name="L867"></a><tt class="py-lineno"> 867</tt>  <tt class="py-line"><tt class="py-docstring">                                     Default: 1.0</tt> </tt>
+<a name="L868"></a><tt class="py-lineno"> 868</tt>  <tt class="py-line"><tt class="py-docstring">    slices                        -- (UnsignedInteger)</tt> </tt>
+<a name="L869"></a><tt class="py-lineno"> 869</tt>  <tt class="py-line"><tt class="py-docstring">                                     Default: 30</tt> </tt>
+<a name="L870"></a><tt class="py-lineno"> 870</tt>  <tt class="py-line"><tt class="py-docstring">    stacks                        -- (UnsignedInteger)</tt> </tt>
+<a name="L871"></a><tt class="py-lineno"> 871</tt>  <tt class="py-line"><tt class="py-docstring">                                     Default: 30</tt> </tt>
+<a name="L872"></a><tt class="py-lineno"> 872</tt>  <tt class="py-line"><tt class="py-docstring">    window_center_azimuth         -- (Real)</tt> </tt>
+<a name="L873"></a><tt class="py-lineno"> 873</tt>  <tt class="py-line"><tt class="py-docstring">                                     Default: 0.0</tt> </tt>
+<a name="L874"></a><tt class="py-lineno"> 874</tt>  <tt class="py-line"><tt class="py-docstring">    window_center_elevation       -- (Real)</tt> </tt>
+<a name="L875"></a><tt class="py-lineno"> 875</tt>  <tt class="py-line"><tt class="py-docstring">                                     Default: 0.0</tt> </tt>
+<a name="L876"></a><tt class="py-lineno"> 876</tt>  <tt class="py-line"><tt class="py-docstring">    window_shape                  -- can be 'circle', 'gaussian', or 'lat-long rectangle' (String)</tt> </tt>
+<a name="L877"></a><tt class="py-lineno"> 877</tt>  <tt class="py-line"><tt class="py-docstring">                                     Default: gaussian</tt> </tt>
+<a name="L878"></a><tt class="py-lineno"> 878</tt>  <tt class="py-line"><tt class="py-docstring">    window_shape_parameter2       -- (currently only used for) height of lat-long rectangle (in degrees) (Real)</tt> </tt>
+<a name="L879"></a><tt class="py-lineno"> 879</tt>  <tt class="py-line"><tt class="py-docstring">                                     Default: 30.0</tt> </tt>
+<a name="L880"></a><tt class="py-lineno"> 880</tt>  <tt class="py-line"><tt class="py-docstring">    window_shape_radius_parameter -- radius of circle, sigma of gaussian, width of lat-long rectangle (in degrees) (Real)</tt> </tt>
+<a name="L881"></a><tt class="py-lineno"> 881</tt>  <tt class="py-line"><tt class="py-docstring">                                     Default: 36.0</tt> </tt>
+<a name="L882"></a><tt class="py-lineno"> 882</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L883"></a><tt class="py-lineno"> 883</tt>  <tt class="py-line"> </tt>
+<a name="L884"></a><tt class="py-lineno"> 884</tt>  <tt class="py-line">    <tt id="link-161" class="py-name"><a title="VisionEgg.ClassWithParameters.parameters_and_defaults
+VisionEgg.Core.FixationSpot.parameters_and_defaults
+VisionEgg.Core.ProjectionBaseClass.parameters_and_defaults
+VisionEgg.Core.Screen.parameters_and_defaults
+VisionEgg.Core.Viewport.parameters_and_defaults
+VisionEgg.Daq.Buffered.parameters_and_defaults
+VisionEgg.Dots.DotArea2D.parameters_and_defaults
+VisionEgg.FlowControl.Presentation.parameters_and_defaults
+VisionEgg.Gratings.AlphaGratingCommon.parameters_and_defaults
+VisionEgg.Gratings.LuminanceGratingCommon.parameters_and_defaults
+VisionEgg.Gratings.SinGrating2D.parameters_and_defaults
+VisionEgg.Gratings.SinGrating3D.parameters_and_defaults
+VisionEgg.MoreStimuli.Arrow.parameters_and_defaults
+VisionEgg.MoreStimuli.FilledCircle.parameters_and_defaults
+VisionEgg.MoreStimuli.Rectangle3D.parameters_and_defaults
+VisionEgg.MoreStimuli.Target2D.parameters_and_defaults
+VisionEgg.PyroApps.EPhysGUI.Loop.parameters_and_defaults
+VisionEgg.SphereMap.AzElGrid.parameters_and_defaults
+VisionEgg.SphereMap.SphereGrating.parameters_and_defaults
+VisionEgg.SphereMap.SphereMap.parameters_and_defaults
+VisionEgg.SphereMap.SphereWindow.parameters_and_defaults
+VisionEgg.Text.BitmapText.parameters_and_defaults
+VisionEgg.Text.GlutTextBase.parameters_and_defaults
+VisionEgg.Text.StrokeText.parameters_and_defaults
+VisionEgg.Text.Text.parameters_and_defaults
+VisionEgg.Textures.FixationCross.parameters_and_defaults
+VisionEgg.Textures.SpinningDrum.parameters_and_defaults
+VisionEgg.Textures.TextureStimulus.parameters_and_defaults
+VisionEgg.Textures.TextureStimulus3D.parameters_and_defaults
+VisionEgg.Textures.TextureStimulusBaseClass.parameters_and_defaults
+VisionEgg.WrappedText.WrappedText.parameters_and_defaults" class="py-name" href="#" onclick="return doclink('link-161', 'parameters_and_defaults', 'link-17');">parameters_and_defaults</a></tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> </tt>
+<a name="L885"></a><tt class="py-lineno"> 885</tt>  <tt class="py-line">        <tt class="py-string">'on'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-name">True</tt><tt class="py-op">,</tt> </tt>
+<a name="L886"></a><tt class="py-lineno"> 886</tt>  <tt class="py-line">              <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-162" class="py-name"><a title="VisionEgg.ParameterTypes.Boolean" class="py-name" href="#" onclick="return doclink('link-162', 'Boolean', 'link-18');">Boolean</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L887"></a><tt class="py-lineno"> 887</tt>  <tt class="py-line">        <tt class="py-string">'window_center_elevation'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-number">0.0</tt><tt class="py-op">,</tt> </tt>
+<a name="L888"></a><tt class="py-lineno"> 888</tt>  <tt class="py-line">                                   <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-163" class="py-name"><a title="VisionEgg.ParameterTypes.Real" class="py-name" href="#" onclick="return doclink('link-163', 'Real', 'link-19');">Real</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L889"></a><tt class="py-lineno"> 889</tt>  <tt class="py-line">        <tt class="py-string">'window_center_azimuth'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-number">0.0</tt><tt class="py-op">,</tt> </tt>
+<a name="L890"></a><tt class="py-lineno"> 890</tt>  <tt class="py-line">                                 <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-164" class="py-name"><a title="VisionEgg.ParameterTypes.Real" class="py-name" href="#" onclick="return doclink('link-164', 'Real', 'link-19');">Real</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L891"></a><tt class="py-lineno"> 891</tt>  <tt class="py-line">        <tt class="py-string">'opaque_color'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-number">0.5</tt><tt class="py-op">,</tt><tt class="py-number">0.5</tt><tt class="py-op">,</tt><tt class="py-number">0.5</tt><tt class="py-op">,</tt><tt class="py-number">0.0</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L892"></a><tt class="py-lineno"> 892</tt>  <tt class="py-line">                        <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-165" class="py-name"><a title="VisionEgg.ParameterTypes.Sequence4" class="py-name" href="#" onclick="return doclink('link-165', 'Sequence4', 'link-26');">Sequence4</a></tt><tt class="py-op">(</tt><tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-166" class="py-name"><a title="VisionEgg.ParameterTypes.Real [...]
+<a name="L893"></a><tt class="py-lineno"> 893</tt>  <tt class="py-line">        <tt class="py-comment"># changing these parameters causes re-drawing of the texture object and may cause frame skipping</tt> </tt>
+<a name="L894"></a><tt class="py-lineno"> 894</tt>  <tt class="py-line">        <tt class="py-string">'window_shape'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-string">'gaussian'</tt><tt class="py-op">,</tt> <tt class="py-comment"># can be 'circle' or 'gaussian'</tt> </tt>
+<a name="L895"></a><tt class="py-lineno"> 895</tt>  <tt class="py-line">                        <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-167" class="py-name"><a title="VisionEgg.ParameterTypes.String" class="py-name" href="#" onclick="return doclink('link-167', 'String', 'link-54');">String</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L896"></a><tt class="py-lineno"> 896</tt>  <tt class="py-line">                        <tt class="py-string">"can be 'circle', 'gaussian', or 'lat-long rectangle'"</tt><tt class="py-op">,</tt> </tt>
+<a name="L897"></a><tt class="py-lineno"> 897</tt>  <tt class="py-line">                        <tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L898"></a><tt class="py-lineno"> 898</tt>  <tt class="py-line">        <tt class="py-string">'window_shape_radius_parameter'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-number">36.0</tt><tt class="py-op">,</tt> </tt>
+<a name="L899"></a><tt class="py-lineno"> 899</tt>  <tt class="py-line">                                         <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-168" class="py-name"><a title="VisionEgg.ParameterTypes.Real" class="py-name" href="#" onclick="return doclink('link-168', 'Real', 'link-19');">Real</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L900"></a><tt class="py-lineno"> 900</tt>  <tt class="py-line">                                         <tt class="py-string">'radius of circle, sigma of gaussian, width of lat-long rectangle (in degrees)'</tt><tt class="py-op">,</tt> </tt>
+<a name="L901"></a><tt class="py-lineno"> 901</tt>  <tt class="py-line">                                         <tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L902"></a><tt class="py-lineno"> 902</tt>  <tt class="py-line">        <tt class="py-string">'window_shape_parameter2'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-number">30.0</tt><tt class="py-op">,</tt> </tt>
+<a name="L903"></a><tt class="py-lineno"> 903</tt>  <tt class="py-line">                                   <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-169" class="py-name"><a title="VisionEgg.ParameterTypes.Real" class="py-name" href="#" onclick="return doclink('link-169', 'Real', 'link-19');">Real</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L904"></a><tt class="py-lineno"> 904</tt>  <tt class="py-line">                                   <tt class="py-string">'(currently only used for) height of lat-long rectangle (in degrees)'</tt><tt class="py-op">,</tt> </tt>
+<a name="L905"></a><tt class="py-lineno"> 905</tt>  <tt class="py-line">                                   <tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L906"></a><tt class="py-lineno"> 906</tt>  <tt class="py-line">        <tt class="py-string">'num_s_samples'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-number">512</tt><tt class="py-op">,</tt>  <tt class="py-comment"># number of horizontal spatial samples, should be a power of 2</tt> </tt>
+<a name="L907"></a><tt class="py-lineno"> 907</tt>  <tt class="py-line">                         <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-170" class="py-name"><a title="VisionEgg.ParameterTypes.UnsignedInteger" class="py-name" href="#" onclick="return doclink('link-170', 'UnsignedInteger', 'link-47');">UnsignedInteger</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L908"></a><tt class="py-lineno"> 908</tt>  <tt class="py-line">        <tt class="py-string">'num_t_samples'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-number">512</tt><tt class="py-op">,</tt>  <tt class="py-comment"># number of vertical spatial samples, should be a power of 2</tt> </tt>
+<a name="L909"></a><tt class="py-lineno"> 909</tt>  <tt class="py-line">                         <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-171" class="py-name"><a title="VisionEgg.ParameterTypes.UnsignedInteger" class="py-name" href="#" onclick="return doclink('link-171', 'UnsignedInteger', 'link-47');">UnsignedInteger</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L910"></a><tt class="py-lineno"> 910</tt>  <tt class="py-line">        <tt class="py-comment"># Changing these parameters will cause re-computation of display list (may cause frame skip)</tt> </tt>
+<a name="L911"></a><tt class="py-lineno"> 911</tt>  <tt class="py-line">        <tt class="py-string">'radius'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-number">1.0</tt><tt class="py-op">,</tt> <tt class="py-comment"># XXX could modify code below to use scaling, thus avoiding need for recomputation</tt> </tt>
+<a name="L912"></a><tt class="py-lineno"> 912</tt>  <tt class="py-line">                  <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-172" class="py-name"><a title="VisionEgg.ParameterTypes.Real" class="py-name" href="#" onclick="return doclink('link-172', 'Real', 'link-19');">Real</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L913"></a><tt class="py-lineno"> 913</tt>  <tt class="py-line">        <tt class="py-string">'slices'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-number">30</tt><tt class="py-op">,</tt> </tt>
+<a name="L914"></a><tt class="py-lineno"> 914</tt>  <tt class="py-line">                  <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-173" class="py-name"><a title="VisionEgg.ParameterTypes.UnsignedInteger" class="py-name" href="#" onclick="return doclink('link-173', 'UnsignedInteger', 'link-47');">UnsignedInteger</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L915"></a><tt class="py-lineno"> 915</tt>  <tt class="py-line">        <tt class="py-string">'stacks'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-number">30</tt><tt class="py-op">,</tt> </tt>
+<a name="L916"></a><tt class="py-lineno"> 916</tt>  <tt class="py-line">                  <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-174" class="py-name"><a title="VisionEgg.ParameterTypes.UnsignedInteger" class="py-name" href="#" onclick="return doclink('link-174', 'UnsignedInteger', 'link-47');">UnsignedInteger</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L917"></a><tt class="py-lineno"> 917</tt>  <tt class="py-line">        <tt class="py-op">}</tt> </tt>
+<a name="L918"></a><tt class="py-lineno"> 918</tt>  <tt class="py-line"> </tt>
+<a name="L919"></a><tt class="py-lineno"> 919</tt>  <tt class="py-line">    <tt class="py-name">__slots__</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt> </tt>
+<a name="L920"></a><tt class="py-lineno"> 920</tt>  <tt class="py-line">        <tt class="py-string">'texture_object_id'</tt><tt class="py-op">,</tt> </tt>
+<a name="L921"></a><tt class="py-lineno"> 921</tt>  <tt class="py-line">        <tt class="py-string">'windowed_display_list_id'</tt><tt class="py-op">,</tt> </tt>
+<a name="L922"></a><tt class="py-lineno"> 922</tt>  <tt class="py-line">        <tt class="py-string">'opaque_display_list_id'</tt><tt class="py-op">,</tt> </tt>
+<a name="L923"></a><tt class="py-lineno"> 923</tt>  <tt class="py-line">        <tt class="py-string">'_cached_window_shape'</tt><tt class="py-op">,</tt> </tt>
+<a name="L924"></a><tt class="py-lineno"> 924</tt>  <tt class="py-line">        <tt class="py-string">'_cached_shape_radius_parameter'</tt><tt class="py-op">,</tt> </tt>
+<a name="L925"></a><tt class="py-lineno"> 925</tt>  <tt class="py-line">        <tt class="py-string">'_cached_shape_parameter2'</tt><tt class="py-op">,</tt> </tt>
+<a name="L926"></a><tt class="py-lineno"> 926</tt>  <tt class="py-line">        <tt class="py-string">'_cached_num_s_samples'</tt><tt class="py-op">,</tt> </tt>
+<a name="L927"></a><tt class="py-lineno"> 927</tt>  <tt class="py-line">        <tt class="py-string">'_cached_num_t_samples'</tt><tt class="py-op">,</tt> </tt>
+<a name="L928"></a><tt class="py-lineno"> 928</tt>  <tt class="py-line">        <tt class="py-string">'_cached_radius'</tt><tt class="py-op">,</tt> </tt>
+<a name="L929"></a><tt class="py-lineno"> 929</tt>  <tt class="py-line">        <tt class="py-string">'_cached_slices'</tt><tt class="py-op">,</tt> </tt>
+<a name="L930"></a><tt class="py-lineno"> 930</tt>  <tt class="py-line">        <tt class="py-string">'_cached_stacks'</tt><tt class="py-op">,</tt> </tt>
+<a name="L931"></a><tt class="py-lineno"> 931</tt>  <tt class="py-line">        <tt class="py-string">'_texture_s_is_azimuth'</tt><tt class="py-op">,</tt> </tt>
+<a name="L932"></a><tt class="py-lineno"> 932</tt>  <tt class="py-line">        <tt class="py-op">)</tt> </tt>
+<a name="L933"></a><tt class="py-lineno"> 933</tt>  <tt class="py-line"> </tt>
+<a name="SphereWindow.__init__"></a><div id="SphereWindow.__init__-def"><a name="L934"></a><tt class="py-lineno"> 934</tt> <a class="py-toggle" href="#" id="SphereWindow.__init__-toggle" onclick="return toggle('SphereWindow.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.SphereMap.SphereWindow-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-op">** [...]
+</div><div id="SphereWindow.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="SphereWindow.__init__-expanded"><a name="L935"></a><tt class="py-lineno"> 935</tt>  <tt class="py-line">        <tt id="link-175" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-175', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-176" class="py-name"><a title="VisionEgg.Gratings" class="py-name" hre [...]
+VisionEgg.Configuration.Config.__init__
+VisionEgg.Core.FixationSpot.__init__
+VisionEgg.Core.FrameTimer.__init__
+VisionEgg.Core.ModelView.__init__
+VisionEgg.Core.OrthographicProjection.__init__
+VisionEgg.Core.OrthographicProjectionNoZClip.__init__
+VisionEgg.Core.PerspectiveProjection.__init__
+VisionEgg.Core.Projection.__init__
+VisionEgg.Core.ProjectionBaseClass.__init__
+VisionEgg.Core.Screen.__init__
+VisionEgg.Core.SimplePerspectiveProjection.__init__
+VisionEgg.Core.Stimulus.__init__
+VisionEgg.Core.Viewport.__init__
+VisionEgg.Daq.Channel.__init__
+VisionEgg.Daq.DaqMode.__init__
+VisionEgg.Daq.Device.__init__
+VisionEgg.Daq.Functionality.__init__
+VisionEgg.Daq.SignalType.__init__
+VisionEgg.DaqKeyboard.KeyboardTriggerInController.__init__
+VisionEgg.DaqLPT.LPTChannel.__init__
+VisionEgg.DaqLPT.LPTDevice.__init__
+VisionEgg.DaqLPT.LPTTriggerInController.__init__
+VisionEgg.DaqLPT.LPTTriggerOutController.__init__
+VisionEgg.Deprecated.Message.__init__
+VisionEgg.Dots.DotArea2D.__init__
+VisionEgg.FlowControl.ConstantController.__init__
+VisionEgg.FlowControl.Controller.__init__
+VisionEgg.FlowControl.EncapsulatedController.__init__
+VisionEgg.FlowControl.EvalStringController.__init__
+VisionEgg.FlowControl.ExecStringController.__init__
+VisionEgg.FlowControl.FunctionController.__init__
+VisionEgg.FlowControl.Presentation.__init__
+VisionEgg.GLTrace.Wrapper.__init__
+VisionEgg.GUI.AppWindow.__init__
+VisionEgg.GUI.GetKeypressDialog.__init__
+VisionEgg.GUI.GraphicsConfigurationWindow.__init__
+VisionEgg.GUI.InfoFrame.__init__
+VisionEgg.GUI.ProgressBar.__init__
+VisionEgg.GUI.ToplevelDialog.__init__
+VisionEgg.Gratings.SinGrating2D.__init__
+VisionEgg.Gratings.SinGrating3D.__init__
+VisionEgg.MoreStimuli.Arrow.__init__
+VisionEgg.MoreStimuli.FilledCircle.__init__
+VisionEgg.MoreStimuli.Rectangle3D.__init__
+VisionEgg.MoreStimuli.Target2D.__init__
+VisionEgg.ParameterTypes.AnyOf.__init__
+VisionEgg.ParameterTypes.Instance.__init__
+VisionEgg.ParameterTypes.Sequence.__init__
+VisionEgg.ParameterTypes.SubClass.__init__
+VisionEgg.PyroApps.AST_ext.AST_Visitor.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalMetaParameters.__init__
+VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.__init__
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.__init__
+VisionEgg.PyroApps.DropinGUI.DropinMetaParameters.__init__
+VisionEgg.PyroApps.DropinServer.DropinMetaController.__init__
+VisionEgg.PyroApps.EPhysGUI.AppWindow.__init__
+VisionEgg.PyroApps.EPhysGUI.BarButton.__init__
+VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase.__init__
+VisionEgg.PyroApps.EPhysGUI.GammaFrame.__init__
+VisionEgg.PyroApps.EPhysGUI.ImageSequenceLauncher.__init__
+VisionEgg.PyroApps.EPhysGUI.Loop.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopContainedObject.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopParamDialog.__init__
+VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.__init__
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.__init__
+VisionEgg.PyroApps.EPhysServer.EPhysServer.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingMetaParameters.__init__
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.GridGUI.GridControlFrame.__init__
+VisionEgg.PyroApps.GridGUI.GridMetaParameters.__init__
+VisionEgg.PyroApps.GridServer.GridMetaController.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetMetaParameters.__init__
+VisionEgg.PyroApps.MouseTargetServer.MousePositionController.__init__
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetOrientationController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetPositionController.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.CallbackEntry.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionParameters.__init__
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingMetaParameters.__init__
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumMetaParameters.__init__
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.__init__
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.__init__
+VisionEgg.PyroApps.TargetGUI.TargetMetaParameters.__init__
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.__init__
+VisionEgg.PyroClient.PyroClient.__init__
+VisionEgg.PyroHelpers.PyroConstantController.__init__
+VisionEgg.PyroHelpers.PyroEncapsulatedController.__init__
+VisionEgg.PyroHelpers.PyroEvalStringController.__init__
+VisionEgg.PyroHelpers.PyroExecStringController.__init__
+VisionEgg.PyroHelpers.PyroListenController.__init__
+VisionEgg.PyroHelpers.PyroLocalDictController.__init__
+VisionEgg.PyroHelpers.PyroServer.__init__
+VisionEgg.QuickTime.MovieTexture.__init__
+VisionEgg.ResponseControl.KeyboardResponseController.__init__
+VisionEgg.ResponseControl.ResponseController.__init__
+VisionEgg.SphereMap.AzElGrid.__init__
+VisionEgg.SphereMap.SphereGrating.__init__
+VisionEgg.SphereMap.SphereMap.__init__
+VisionEgg.SphereMap.SphereWindow.__init__
+VisionEgg.TCPController.SocketListenController.__init__
+VisionEgg.TCPController.TCPController.__init__
+VisionEgg.TCPController.TCPServer.__init__
+VisionEgg.Text.BitmapText.__init__
+VisionEgg.Text.GlutTextBase.__init__
+VisionEgg.Text.StrokeText.__init__
+VisionEgg.Text.Text.__init__
+VisionEgg.Textures.FixationCross.__init__
+VisionEgg.Textures.Mask2D.__init__
+VisionEgg.Textures.SpinningDrum.__init__
+VisionEgg.Textures.Texture.__init__
+VisionEgg.Textures.TextureFromFile.__init__
+VisionEgg.Textures.TextureObject.__init__
+VisionEgg.Textures.TextureStimulusBaseClass.__init__
+VisionEgg.ThreeDeeMath.TransformMatrix.__init__
+VisionEgg.WrappedText.WrappedText.__init__
+VisionEgg.qtmovie.Movie.__init__
+VisionEgg.qtmovie.Rect.__init__" class="py-name" href="#" onclick="return doclink('link-178', '__init__', 'link-58');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-name">kw</tt> <tt class="py-op">)</tt> </tt>
+<a name="L936"></a><tt class="py-lineno"> 936</tt>  <tt class="py-line"> </tt>
+<a name="L937"></a><tt class="py-lineno"> 937</tt>  <tt class="py-line">        <tt class="py-name">p</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt> </tt>
+<a name="L938"></a><tt class="py-lineno"> 938</tt>  <tt class="py-line"> </tt>
+<a name="L939"></a><tt class="py-lineno"> 939</tt>  <tt class="py-line">        <tt class="py-comment"># set self._texture_s_is_azimuth in advance</tt> </tt>
+<a name="L940"></a><tt class="py-lineno"> 940</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">window_shape</tt> <tt class="py-op">==</tt> <tt class="py-string">'lat-long rectangle'</tt><tt class="py-op">:</tt> </tt>
+<a name="L941"></a><tt class="py-lineno"> 941</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_texture_s_is_azimuth</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
+<a name="L942"></a><tt class="py-lineno"> 942</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L943"></a><tt class="py-lineno"> 943</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_texture_s_is_azimuth</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
+<a name="L944"></a><tt class="py-lineno"> 944</tt>  <tt class="py-line"> </tt>
+<a name="L945"></a><tt class="py-lineno"> 945</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">texture_object_id</tt> <tt class="py-op">=</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glGenTextures</tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="L946"></a><tt class="py-lineno"> 946</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__rebuild_texture_object</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L947"></a><tt class="py-lineno"> 947</tt>  <tt class="py-line"> </tt>
+<a name="L948"></a><tt class="py-lineno"> 948</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">windowed_display_list_id</tt> <tt class="py-op">=</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glGenLists</tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> <tt class="py-comment"># Allocate a new display list</tt> </tt>
+<a name="L949"></a><tt class="py-lineno"> 949</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">opaque_display_list_id</tt> <tt class="py-op">=</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glGenLists</tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> <tt class="py-comment"># Allocate a new display list</tt> </tt>
+<a name="L950"></a><tt class="py-lineno"> 950</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__rebuild_display_lists</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L951"></a><tt class="py-lineno"> 951</tt>  <tt class="py-line"> </tt>
+<a name="SphereWindow.__rebuild_texture_object"></a><div id="SphereWindow.__rebuild_texture_object-def"><a name="L952"></a><tt class="py-lineno"> 952</tt> <a class="py-toggle" href="#" id="SphereWindow.__rebuild_texture_object-toggle" onclick="return toggle('SphereWindow.__rebuild_texture_object');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.SphereMap.SphereWindow-class.html#__rebuild_texture_object">__rebuild_texture_object</a><tt [...]
+</div><div id="SphereWindow.__rebuild_texture_object-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="SphereWindow.__rebuild_texture_object-expanded"><a name="L953"></a><tt class="py-lineno"> 953</tt>  <tt class="py-line">        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glBindTexture</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE_2D</tt><tt class="py-op">,</tt><tt clas [...]
+<a name="L954"></a><tt class="py-lineno"> 954</tt>  <tt class="py-line">        <tt class="py-name">p</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt> </tt>
+<a name="L955"></a><tt class="py-lineno"> 955</tt>  <tt class="py-line"> </tt>
+<a name="L956"></a><tt class="py-lineno"> 956</tt>  <tt class="py-line">        <tt class="py-comment"># Do error-checking on texture to make sure it will load</tt> </tt>
+<a name="L957"></a><tt class="py-lineno"> 957</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">max_dim</tt> <tt class="py-op">=</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glGetIntegerv</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_MAX_TEXTURE_SIZE</tt><tt class="py-op">)</tt> </tt>
+<a name="L958"></a><tt class="py-lineno"> 958</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">num_s_samples</tt> <tt class="py-op">></tt> <tt class="py-name">max_dim</tt><tt class="py-op">:</tt> </tt>
+<a name="L959"></a><tt class="py-lineno"> 959</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt id="link-179" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-179', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-180" class="py-name"><a title="VisionEgg.Gratings" class="py-name" href="#" onclick="return doclink('link-180', 'Gratings', 'link-7');">Gratings</a></tt><tt class="py-op">.</tt>< [...]
+<a name="L960"></a><tt class="py-lineno"> 960</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">num_t_samples</tt> <tt class="py-op">></tt> <tt class="py-name">max_dim</tt><tt class="py-op">:</tt> </tt>
+<a name="L961"></a><tt class="py-lineno"> 961</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt id="link-182" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-182', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-183" class="py-name"><a title="VisionEgg.Gratings" class="py-name" href="#" onclick="return doclink('link-183', 'Gratings', 'link-7');">Gratings</a></tt><tt class="py-op">.</tt>< [...]
+<a name="L962"></a><tt class="py-lineno"> 962</tt>  <tt class="py-line"> </tt>
+<a name="L963"></a><tt class="py-lineno"> 963</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-185" class="py-name"><a title="VisionEgg.Gratings.AlphaGratingCommon.calculate_bit_depth_dependencies
+VisionEgg.Gratings.LuminanceGratingCommon.calculate_bit_depth_dependencies" class="py-name" href="#" onclick="return doclink('link-185', 'calculate_bit_depth_dependencies', 'link-148');">calculate_bit_depth_dependencies</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L964"></a><tt class="py-lineno"> 964</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">gl_internal_format</tt> <tt class="py-op">=</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_ALPHA</tt> <tt class="py-comment"># change from luminance to alpha</tt> </tt>
+<a name="L965"></a><tt class="py-lineno"> 965</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">format</tt> <tt class="py-op">=</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_ALPHA</tt> </tt>
+<a name="L966"></a><tt class="py-lineno"> 966</tt>  <tt class="py-line"> </tt>
+<a name="L967"></a><tt class="py-lineno"> 967</tt>  <tt class="py-line">        <tt class="py-comment"># texture coordinates are Mercator: (determined when building display list)</tt> </tt>
+<a name="L968"></a><tt class="py-lineno"> 968</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment">#   s: x within sphere</tt> </tt>
+<a name="L969"></a><tt class="py-lineno"> 969</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment">#   t: z within sphere</tt> </tt>
+<a name="L970"></a><tt class="py-lineno"> 970</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L971"></a><tt class="py-lineno"> 971</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">window_shape</tt> <tt class="py-op">==</tt> <tt class="py-string">'circle'</tt><tt class="py-op">:</tt> </tt>
+<a name="L972"></a><tt class="py-lineno"> 972</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_texture_s_is_azimuth</tt><tt class="py-op">:</tt> </tt>
+<a name="L973"></a><tt class="py-lineno"> 973</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__rebuild_display_lists</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L974"></a><tt class="py-lineno"> 974</tt>  <tt class="py-line"> </tt>
+<a name="L975"></a><tt class="py-lineno"> 975</tt>  <tt class="py-line">            <tt class="py-comment"># XXX this is aliased</tt> </tt>
+<a name="L976"></a><tt class="py-lineno"> 976</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">s_axis</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">Numeric</tt><tt class="py-op">.</tt><tt class="py-name">arange</tt><tt class="py-op">(</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">num_s_samples</tt><tt class="py-op">)</tt><tt class="py-op">/</tt><tt id="link-186" class="py-name"><a title="float" c [...]
+<a name="L977"></a><tt class="py-lineno"> 977</tt>  <tt class="py-line">            <tt class="py-name">t_axis</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">Numeric</tt><tt class="py-op">.</tt><tt class="py-name">arange</tt><tt class="py-op">(</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">num_t_samples</tt><tt class="py-op">)</tt><tt class="py-op">/</tt><tt id="link-187" class="py-name"><a title="float" class="py-name" href="#" oncl [...]
+<a name="L978"></a><tt class="py-lineno"> 978</tt>  <tt class="py-line">            <tt class="py-name">mask</tt> <tt class="py-op">=</tt> <tt class="py-name">s_axis</tt><tt class="py-op">[</tt><tt class="py-name">Numeric</tt><tt class="py-op">.</tt><tt class="py-name">NewAxis</tt><tt class="py-op">,</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> <tt class="py-op">+</tt> <tt class="py-name">t_axis</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">,</tt><tt class [...]
+<a name="L979"></a><tt class="py-lineno"> 979</tt>  <tt class="py-line">            <tt class="py-name">angle_deg</tt> <tt class="py-op">=</tt> <tt class="py-name">min</tt><tt class="py-op">(</tt><tt class="py-number">180</tt><tt class="py-op">,</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">window_shape_radius_parameter</tt><tt class="py-op">)</tt> <tt class="py-comment"># clip angle</tt> </tt>
+<a name="L980"></a><tt class="py-lineno"> 980</tt>  <tt class="py-line">            <tt class="py-name">cartesian_radius</tt> <tt class="py-op">=</tt> <tt class="py-number">0.5</tt><tt class="py-op">*</tt><tt class="py-name">math</tt><tt class="py-op">.</tt><tt class="py-name">sin</tt><tt class="py-op">(</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">window_shape_radius_parameter</tt><tt class="py-op">/</tt><tt class="py-number">180.0</tt><tt class="py-op">*</t [...]
+<a name="L981"></a><tt class="py-lineno"> 981</tt>  <tt class="py-line">            <tt class="py-name">floating_point_window</tt> <tt class="py-op">=</tt> <tt class="py-name">Numeric</tt><tt class="py-op">.</tt><tt class="py-name">less</tt><tt class="py-op">(</tt><tt class="py-name">mask</tt><tt class="py-op">,</tt><tt class="py-name">cartesian_radius</tt><tt class="py-op">**</tt><tt class="py-number">2</tt><tt class="py-op">)</tt> </tt>
+<a name="L982"></a><tt class="py-lineno"> 982</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">window_shape</tt> <tt class="py-op">==</tt> <tt class="py-string">'gaussian'</tt><tt class="py-op">:</tt> </tt>
+<a name="L983"></a><tt class="py-lineno"> 983</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_texture_s_is_azimuth</tt><tt class="py-op">:</tt> </tt>
+<a name="L984"></a><tt class="py-lineno"> 984</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__rebuild_display_lists</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L985"></a><tt class="py-lineno"> 985</tt>  <tt class="py-line"> </tt>
+<a name="L986"></a><tt class="py-lineno"> 986</tt>  <tt class="py-line">            <tt class="py-name">MIN_EXP</tt> <tt class="py-op">=</tt> <tt class="py-op">-</tt><tt class="py-number">745.0</tt> </tt>
+<a name="L987"></a><tt class="py-lineno"> 987</tt>  <tt class="py-line">            <tt class="py-name">MAX_EXP</tt> <tt class="py-op">=</tt>  <tt class="py-number">709.0</tt> </tt>
+<a name="L988"></a><tt class="py-lineno"> 988</tt>  <tt class="py-line"> </tt>
+<a name="L989"></a><tt class="py-lineno"> 989</tt>  <tt class="py-line">            <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-name">Numeric</tt><tt class="py-op">.</tt><tt class="py-name">arange</tt><tt class="py-op">(</tt><tt class="py-number">0.0</tt><tt class="py-op">,</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">num_s_samples</tt><tt class="py-op">,</tt><tt class="py-number">1.0</tt><tt class="py-op">,</tt><tt class="py-string">'f' [...]
+<a name="L990"></a><tt class="py-lineno"> 990</tt>  <tt class="py-line">            <tt class="py-name">t</tt> <tt class="py-op">=</tt> <tt class="py-name">Numeric</tt><tt class="py-op">.</tt><tt class="py-name">arange</tt><tt class="py-op">(</tt><tt class="py-number">0.0</tt><tt class="py-op">,</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">num_t_samples</tt><tt class="py-op">,</tt><tt class="py-number">1.0</tt><tt class="py-op">,</tt><tt class="py-string">'f' [...]
+<a name="L991"></a><tt class="py-lineno"> 991</tt>  <tt class="py-line">            <tt class="py-name">sigma_normalized</tt> <tt class="py-op">=</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">window_shape_radius_parameter</tt> <tt class="py-op">/</tt> <tt class="py-number">90.0</tt> <tt class="py-op">*</tt> <tt class="py-number">0.5</tt> </tt>
+<a name="L992"></a><tt class="py-lineno"> 992</tt>  <tt class="py-line"> </tt>
+<a name="L993"></a><tt class="py-lineno"> 993</tt>  <tt class="py-line">            <tt class="py-name">check_s</tt> <tt class="py-op">=</tt> <tt class="py-op">-</tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">-</tt><tt class="py-number">0.5</tt><tt class="py-op">)</tt><tt class="py-op">**</tt><tt class="py-number">2</tt><tt class="py-op">/</tt><tt class="py-op">(</tt><tt class="py-number">2.0</tt><tt class="py-op">*</tt><tt class="py-name" [...]
+<a name="L994"></a><tt class="py-lineno"> 994</tt>  <tt class="py-line">            <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L995"></a><tt class="py-lineno"> 995</tt>  <tt class="py-line">                <tt class="py-comment"># some platforms raise OverflowError when doing this on small numbers</tt> </tt>
+<a name="L996"></a><tt class="py-lineno"> 996</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-name">val_s</tt> <tt class="py-op">=</tt> <tt class="py-name">Numeric</tt><tt class="py-op">.</tt><tt class="py-name">exp</tt><tt class="py-op">(</tt> <tt class="py-name">check_s</tt> <tt class="py-op">)</tt> </tt>
+<a name="L997"></a><tt class="py-lineno"> 997</tt>  <tt class="py-line">            <tt class="py-keyword">except</tt> <tt class="py-name">OverflowError</tt><tt class="py-op">:</tt> </tt>
+<a name="L998"></a><tt class="py-lineno"> 998</tt>  <tt class="py-line">                <tt class="py-name">check_s</tt> <tt class="py-op">=</tt> <tt class="py-name">Numeric</tt><tt class="py-op">.</tt><tt class="py-name">clip</tt><tt class="py-op">(</tt><tt class="py-name">check_s</tt><tt class="py-op">,</tt><tt class="py-name">MIN_EXP</tt><tt class="py-op">,</tt><tt class="py-name">MAX_EXP</tt><tt class="py-op">)</tt> </tt>
+<a name="L999"></a><tt class="py-lineno"> 999</tt>  <tt class="py-line">                <tt class="py-name">val_s</tt> <tt class="py-op">=</tt> <tt class="py-name">Numeric</tt><tt class="py-op">.</tt><tt class="py-name">exp</tt><tt class="py-op">(</tt> <tt class="py-name">check_s</tt> <tt class="py-op">)</tt> </tt>
+<a name="L1000"></a><tt class="py-lineno">1000</tt>  <tt class="py-line"> </tt>
+<a name="L1001"></a><tt class="py-lineno">1001</tt>  <tt class="py-line">            <tt class="py-name">check_t</tt> <tt class="py-op">=</tt> <tt class="py-op">-</tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-name">t</tt><tt class="py-op">-</tt><tt class="py-number">0.5</tt><tt class="py-op">)</tt><tt class="py-op">**</tt><tt class="py-number">2</tt><tt class="py-op">/</tt><tt class="py-op">(</tt><tt class="py-number">2.0</tt><tt class="py-op">*</tt><tt class="py-name [...]
+<a name="L1002"></a><tt class="py-lineno">1002</tt>  <tt class="py-line">            <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L1003"></a><tt class="py-lineno">1003</tt>  <tt class="py-line">                <tt class="py-name">val_t</tt> <tt class="py-op">=</tt> <tt class="py-name">Numeric</tt><tt class="py-op">.</tt><tt class="py-name">exp</tt><tt class="py-op">(</tt> <tt class="py-name">check_t</tt> <tt class="py-op">)</tt> </tt>
+<a name="L1004"></a><tt class="py-lineno">1004</tt>  <tt class="py-line">            <tt class="py-keyword">except</tt> <tt class="py-name">OverflowError</tt><tt class="py-op">:</tt> </tt>
+<a name="L1005"></a><tt class="py-lineno">1005</tt>  <tt class="py-line">                <tt class="py-name">check_t</tt> <tt class="py-op">=</tt> <tt class="py-name">Numeric</tt><tt class="py-op">.</tt><tt class="py-name">clip</tt><tt class="py-op">(</tt><tt class="py-name">check_t</tt><tt class="py-op">,</tt><tt class="py-name">MIN_EXP</tt><tt class="py-op">,</tt><tt class="py-name">MAX_EXP</tt><tt class="py-op">)</tt> </tt>
+<a name="L1006"></a><tt class="py-lineno">1006</tt>  <tt class="py-line">                <tt class="py-name">val_t</tt> <tt class="py-op">=</tt> <tt class="py-name">Numeric</tt><tt class="py-op">.</tt><tt class="py-name">exp</tt><tt class="py-op">(</tt> <tt class="py-name">check_t</tt> <tt class="py-op">)</tt> </tt>
+<a name="L1007"></a><tt class="py-lineno">1007</tt>  <tt class="py-line">            <tt class="py-name">floating_point_window</tt> <tt class="py-op">=</tt> <tt class="py-name">Numeric</tt><tt class="py-op">.</tt><tt class="py-name">outerproduct</tt><tt class="py-op">(</tt><tt class="py-name">val_t</tt><tt class="py-op">,</tt><tt class="py-name">val_s</tt><tt class="py-op">)</tt> </tt>
+<a name="L1008"></a><tt class="py-lineno">1008</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt>  <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">window_shape</tt> <tt class="py-op">==</tt> <tt class="py-string">'lat-long rectangle'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1009"></a><tt class="py-lineno">1009</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_texture_s_is_azimuth</tt><tt class="py-op">:</tt> </tt>
+<a name="L1010"></a><tt class="py-lineno">1010</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__rebuild_display_lists</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1011"></a><tt class="py-lineno">1011</tt>  <tt class="py-line"> </tt>
+<a name="L1012"></a><tt class="py-lineno">1012</tt>  <tt class="py-line">            <tt class="py-comment"># s coordinate represents -90 to +90 degrees (azimuth).</tt> </tt>
+<a name="L1013"></a><tt class="py-lineno">1013</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">s_axis</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">Numeric</tt><tt class="py-op">.</tt><tt class="py-name">arange</tt><tt class="py-op">(</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">num_s_samples</tt><tt class="py-op">)</tt><tt class="py-op">/</tt><tt id="link-188" class="py-name"><a title="float"  [...]
+<a name="L1014"></a><tt class="py-lineno">1014</tt>  <tt class="py-line">            <tt class="py-name">s_axis</tt> <tt class="py-op">=</tt> <tt class="py-name">Numeric</tt><tt class="py-op">.</tt><tt class="py-name">less</tt><tt class="py-op">(</tt> <tt class="py-name">abs</tt><tt class="py-op">(</tt><tt class="py-name">s_axis</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">window_shape_radius_parameter</tt><tt  [...]
+<a name="L1015"></a><tt class="py-lineno">1015</tt>  <tt class="py-line"> </tt>
+<a name="L1016"></a><tt class="py-lineno">1016</tt>  <tt class="py-line">            <tt class="py-comment"># t coordinate represents height.</tt> </tt>
+<a name="L1017"></a><tt class="py-lineno">1017</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># Convert angle to height.</tt> </tt>
+<a name="L1018"></a><tt class="py-lineno">1018</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">angle_deg</tt> <tt class="py-op">=</tt> <tt class="py-name">min</tt><tt class="py-op">(</tt><tt class="py-number">90</tt><tt class="py-op">,</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">window_shape_parameter2</tt><tt class="py-op">*</tt><tt class="py-number">0.5</tt><tt class="py-op">)</tt> <tt class="py-comment"># clip angle</ [...]
+<a name="L1019"></a><tt class="py-lineno">1019</tt>  <tt class="py-line">            <tt class="py-name">desired_height</tt> <tt class="py-op">=</tt> <tt class="py-name">math</tt><tt class="py-op">.</tt><tt class="py-name">sin</tt><tt class="py-op">(</tt><tt class="py-name">angle_deg</tt><tt class="py-op">/</tt><tt class="py-number">180.0</tt><tt class="py-op">*</tt><tt class="py-name">math</tt><tt class="py-op">.</tt><tt class="py-name">pi</tt><tt class="py-op">)</tt><tt class="py-op">* [...]
+<a name="L1020"></a><tt class="py-lineno">1020</tt>  <tt class="py-line">            <tt class="py-name">t_axis</tt> <tt class="py-op">=</tt> <tt class="py-name">Numeric</tt><tt class="py-op">.</tt><tt class="py-name">arange</tt><tt class="py-op">(</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">num_t_samples</tt><tt class="py-op">)</tt><tt class="py-op">/</tt><tt id="link-189" class="py-name"><a title="float" class="py-name" href="#" onclick="return doclink('li [...]
+<a name="L1021"></a><tt class="py-lineno">1021</tt>  <tt class="py-line">            <tt class="py-name">t_axis</tt> <tt class="py-op">=</tt> <tt class="py-name">Numeric</tt><tt class="py-op">.</tt><tt class="py-name">less</tt><tt class="py-op">(</tt><tt class="py-name">abs</tt><tt class="py-op">(</tt><tt class="py-name">t_axis</tt><tt class="py-op">)</tt><tt class="py-op">,</tt><tt class="py-name">desired_height</tt><tt class="py-op">)</tt> </tt>
+<a name="L1022"></a><tt class="py-lineno">1022</tt>  <tt class="py-line">            <tt class="py-name">floating_point_window</tt> <tt class="py-op">=</tt> <tt class="py-name">Numeric</tt><tt class="py-op">.</tt><tt class="py-name">outerproduct</tt><tt class="py-op">(</tt><tt class="py-name">t_axis</tt><tt class="py-op">,</tt><tt class="py-name">s_axis</tt><tt class="py-op">)</tt> </tt>
+<a name="L1023"></a><tt class="py-lineno">1023</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1024"></a><tt class="py-lineno">1024</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">RuntimeError</tt><tt class="py-op">(</tt><tt class="py-string">'Unknown window_shape "%s"'</tt><tt class="py-op">%</tt><tt class="py-op">(</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">window_shape</tt><tt class="py-op">,</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1025"></a><tt class="py-lineno">1025</tt>  <tt class="py-line">        <tt class="py-name">texel_data</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">floating_point_window</tt> <tt class="py-op">*</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">max_int_val</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">astype</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class [...]
+<a name="L1026"></a><tt class="py-lineno">1026</tt>  <tt class="py-line"> </tt>
+<a name="L1027"></a><tt class="py-lineno">1027</tt>  <tt class="py-line">        <tt class="py-comment"># Because the MAX_TEXTURE_SIZE method is insensitive to the current</tt> </tt>
+<a name="L1028"></a><tt class="py-lineno">1028</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># state of the video system, another check must be done using</tt> </tt>
+<a name="L1029"></a><tt class="py-lineno">1029</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># "proxy textures".</tt> </tt>
+<a name="L1030"></a><tt class="py-lineno">1030</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glTexImage2D</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_PROXY_TEXTURE_2D</tt><tt class="py-op">,</tt>      <tt class="py-comment"># target</tt> </tt>
+<a name="L1031"></a><tt class="py-lineno">1031</tt>  <tt class="py-line">                     <tt class="py-number">0</tt><tt class="py-op">,</tt>                              <tt class="py-comment"># mipmap_level</tt> </tt>
+<a name="L1032"></a><tt class="py-lineno">1032</tt>  <tt class="py-line">                     <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">gl_internal_format</tt><tt class="py-op">,</tt>        <tt class="py-comment"># video RAM internal format</tt> </tt>
+<a name="L1033"></a><tt class="py-lineno">1033</tt>  <tt class="py-line">                     <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">num_s_samples</tt><tt class="py-op">,</tt>  <tt class="py-comment"># width</tt> </tt>
+<a name="L1034"></a><tt class="py-lineno">1034</tt>  <tt class="py-line">                     <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">num_t_samples</tt><tt class="py-op">,</tt>  <tt class="py-comment"># height</tt> </tt>
+<a name="L1035"></a><tt class="py-lineno">1035</tt>  <tt class="py-line">                     <tt class="py-number">0</tt><tt class="py-op">,</tt>                              <tt class="py-comment"># border</tt> </tt>
+<a name="L1036"></a><tt class="py-lineno">1036</tt>  <tt class="py-line">                     <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">format</tt><tt class="py-op">,</tt>                    <tt class="py-comment"># format of image data</tt> </tt>
+<a name="L1037"></a><tt class="py-lineno">1037</tt>  <tt class="py-line">                     <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">gl_type</tt><tt class="py-op">,</tt>                   <tt class="py-comment"># type of image data</tt> </tt>
+<a name="L1038"></a><tt class="py-lineno">1038</tt>  <tt class="py-line">                     <tt class="py-name">texel_data</tt><tt class="py-op">)</tt>                     <tt class="py-comment"># texel data</tt> </tt>
+<a name="L1039"></a><tt class="py-lineno">1039</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glGetTexLevelParameteriv</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_PROXY_TEXTURE_2D</tt><tt class="py-op">,</tt> <tt class="py-comment"># Need PyOpenGL >= 2.0</tt> </tt>
+<a name="L1040"></a><tt class="py-lineno">1040</tt>  <tt class="py-line">                                        <tt class="py-number">0</tt><tt class="py-op">,</tt> </tt>
+<a name="L1041"></a><tt class="py-lineno">1041</tt>  <tt class="py-line">                                        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE_WIDTH</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">0</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-op">(</tt> </tt>
+<a name="L1042"></a><tt class="py-lineno">1042</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glGetTexLevelParameteriv</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_PROXY_TEXTURE_2D</tt><tt class="py-op">,</tt> </tt>
+<a name="L1043"></a><tt class="py-lineno">1043</tt>  <tt class="py-line">                                        <tt class="py-number">0</tt><tt class="py-op">,</tt> </tt>
+<a name="L1044"></a><tt class="py-lineno">1044</tt>  <tt class="py-line">                                        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE_HEIGHT</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">0</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1045"></a><tt class="py-lineno">1045</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt id="link-190" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-190', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-191" class="py-name"><a title="VisionEgg.Gratings" class="py-name" href="#" onclick="return doclink('link-191', 'Gratings', 'link-7');">Gratings</a></tt><tt class="py-op">.</tt> [...]
+<a name="L1046"></a><tt class="py-lineno">1046</tt>  <tt class="py-line"> </tt>
+<a name="L1047"></a><tt class="py-lineno">1047</tt>  <tt class="py-line">        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glTexImage2D</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE_2D</tt><tt class="py-op">,</tt>      <tt class="py-comment"># target</tt> </tt>
+<a name="L1048"></a><tt class="py-lineno">1048</tt>  <tt class="py-line">                        <tt class="py-number">0</tt><tt class="py-op">,</tt>                              <tt class="py-comment"># mipmap_level</tt> </tt>
+<a name="L1049"></a><tt class="py-lineno">1049</tt>  <tt class="py-line">                        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">gl_internal_format</tt><tt class="py-op">,</tt>        <tt class="py-comment"># video RAM internal format</tt> </tt>
+<a name="L1050"></a><tt class="py-lineno">1050</tt>  <tt class="py-line">                        <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">num_s_samples</tt><tt class="py-op">,</tt>  <tt class="py-comment"># width</tt> </tt>
+<a name="L1051"></a><tt class="py-lineno">1051</tt>  <tt class="py-line">                        <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">num_t_samples</tt><tt class="py-op">,</tt>  <tt class="py-comment"># height</tt> </tt>
+<a name="L1052"></a><tt class="py-lineno">1052</tt>  <tt class="py-line">                        <tt class="py-number">0</tt><tt class="py-op">,</tt>                              <tt class="py-comment"># border</tt> </tt>
+<a name="L1053"></a><tt class="py-lineno">1053</tt>  <tt class="py-line">                        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">format</tt><tt class="py-op">,</tt>                    <tt class="py-comment"># format of image data</tt> </tt>
+<a name="L1054"></a><tt class="py-lineno">1054</tt>  <tt class="py-line">                        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">gl_type</tt><tt class="py-op">,</tt>                   <tt class="py-comment"># type of image data</tt> </tt>
+<a name="L1055"></a><tt class="py-lineno">1055</tt>  <tt class="py-line">                        <tt class="py-name">texel_data</tt><tt class="py-op">)</tt>                     <tt class="py-comment"># texel data</tt> </tt>
+<a name="L1056"></a><tt class="py-lineno">1056</tt>  <tt class="py-line"> </tt>
+<a name="L1057"></a><tt class="py-lineno">1057</tt>  <tt class="py-line">        <tt class="py-comment"># Set some texture object defaults</tt> </tt>
+<a name="L1058"></a><tt class="py-lineno">1058</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glTexParameteri</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE_2D</tt><tt class="py-op">,</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE_WRAP_S</tt><tt class="py-op">,</tt><tt class="py-name">gl</tt><tt class=" [...]
+<a name="L1059"></a><tt class="py-lineno">1059</tt>  <tt class="py-line">        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glTexParameteri</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE_2D</tt><tt class="py-op">,</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE_WRAP_T</tt><tt class="py-op">,</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-n [...]
+<a name="L1060"></a><tt class="py-lineno">1060</tt>  <tt class="py-line">        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glTexParameteri</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE_2D</tt><tt class="py-op">,</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE_MAG_FILTER</tt><tt class="py-op">,</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class=" [...]
+<a name="L1061"></a><tt class="py-lineno">1061</tt>  <tt class="py-line">        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glTexParameteri</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE_2D</tt><tt class="py-op">,</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE_MIN_FILTER</tt><tt class="py-op">,</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class=" [...]
+<a name="L1062"></a><tt class="py-lineno">1062</tt>  <tt class="py-line"> </tt>
+<a name="L1063"></a><tt class="py-lineno">1063</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_cached_window_shape</tt> <tt class="py-op">=</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">window_shape</tt> </tt>
+<a name="L1064"></a><tt class="py-lineno">1064</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_cached_shape_radius_parameter</tt> <tt class="py-op">=</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">window_shape_radius_parameter</tt> </tt>
+<a name="L1065"></a><tt class="py-lineno">1065</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_cached_shape_parameter2</tt> <tt class="py-op">=</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">window_shape_parameter2</tt> </tt>
+<a name="L1066"></a><tt class="py-lineno">1066</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_cached_num_s_samples</tt> <tt class="py-op">=</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">num_s_samples</tt> </tt>
+<a name="L1067"></a><tt class="py-lineno">1067</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_cached_num_t_samples</tt> <tt class="py-op">=</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">num_t_samples</tt> </tt>
+</div><a name="L1068"></a><tt class="py-lineno">1068</tt>  <tt class="py-line"> </tt>
+<a name="SphereWindow.__rebuild_display_lists"></a><div id="SphereWindow.__rebuild_display_lists-def"><a name="L1069"></a><tt class="py-lineno">1069</tt> <a class="py-toggle" href="#" id="SphereWindow.__rebuild_display_lists-toggle" onclick="return toggle('SphereWindow.__rebuild_display_lists');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.SphereMap.SphereWindow-class.html#__rebuild_display_lists">__rebuild_display_lists</a><tt clas [...]
+</div><div id="SphereWindow.__rebuild_display_lists-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="SphereWindow.__rebuild_display_lists-expanded"><a name="L1070"></a><tt class="py-lineno">1070</tt>  <tt class="py-line">        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glMatrixMode</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_MODELVIEW</tt><tt class="py-op">)</tt> </tt>
+<a name="L1071"></a><tt class="py-lineno">1071</tt>  <tt class="py-line">        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glPushMatrix</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1072"></a><tt class="py-lineno">1072</tt>  <tt class="py-line"> </tt>
+<a name="L1073"></a><tt class="py-lineno">1073</tt>  <tt class="py-line">        <tt class="py-name">p</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt> </tt>
+<a name="L1074"></a><tt class="py-lineno">1074</tt>  <tt class="py-line"> </tt>
+<a name="L1075"></a><tt class="py-lineno">1075</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">window_shape</tt> <tt class="py-op">==</tt> <tt class="py-string">'lat-long rectangle'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1076"></a><tt class="py-lineno">1076</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_texture_s_is_azimuth</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
+<a name="L1077"></a><tt class="py-lineno">1077</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1078"></a><tt class="py-lineno">1078</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_texture_s_is_azimuth</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
+<a name="L1079"></a><tt class="py-lineno">1079</tt>  <tt class="py-line"> </tt>
+<a name="L1080"></a><tt class="py-lineno">1080</tt>  <tt class="py-line">        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glNewList</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">windowed_display_list_id</tt><tt class="py-op">,</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_COMPILE</tt><tt class="py-op">)</tt> </tt>
+<a name="L1081"></a><tt class="py-lineno">1081</tt>  <tt class="py-line"> </tt>
+<a name="L1082"></a><tt class="py-lineno">1082</tt>  <tt class="py-line">        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glBegin</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_QUADS</tt><tt class="py-op">)</tt> </tt>
+<a name="L1083"></a><tt class="py-lineno">1083</tt>  <tt class="py-line"> </tt>
+<a name="L1084"></a><tt class="py-lineno">1084</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">stack</tt> <tt class="py-keyword">in</tt> <tt class="py-name">range</tt><tt class="py-op">(</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">stacks</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1085"></a><tt class="py-lineno">1085</tt>  <tt class="py-line">            <tt class="py-name">stack_upper_frac</tt> <tt class="py-op">=</tt> <tt id="link-193" class="py-name"><a title="float" class="py-name" href="#" onclick="return doclink('link-193', 'float', 'link-59');">float</a></tt><tt class="py-op">(</tt><tt class="py-name">stack</tt><tt class="py-op">+</tt><tt class="py-number">1</tt><tt class="py-op">)</tt><tt class="py-op">/</tt><tt class="py-name">p</tt><tt class="p [...]
+<a name="L1086"></a><tt class="py-lineno">1086</tt>  <tt class="py-line">            <tt class="py-name">stack_lower_frac</tt> <tt class="py-op">=</tt> <tt id="link-194" class="py-name"><a title="float" class="py-name" href="#" onclick="return doclink('link-194', 'float', 'link-59');">float</a></tt><tt class="py-op">(</tt><tt class="py-name">stack</tt><tt class="py-op">)</tt><tt class="py-op">/</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">stacks</tt> </tt>
+<a name="L1087"></a><tt class="py-lineno">1087</tt>  <tt class="py-line">            <tt class="py-name">theta_upper</tt> <tt class="py-op">=</tt> <tt class="py-name">stack_upper_frac</tt> <tt class="py-op">*</tt> <tt class="py-name">math</tt><tt class="py-op">.</tt><tt class="py-name">pi</tt> </tt>
+<a name="L1088"></a><tt class="py-lineno">1088</tt>  <tt class="py-line">            <tt class="py-name">theta_lower</tt> <tt class="py-op">=</tt> <tt class="py-name">stack_lower_frac</tt> <tt class="py-op">*</tt> <tt class="py-name">math</tt><tt class="py-op">.</tt><tt class="py-name">pi</tt> </tt>
+<a name="L1089"></a><tt class="py-lineno">1089</tt>  <tt class="py-line">            <tt class="py-name">y_upper</tt> <tt class="py-op">=</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">radius</tt> <tt class="py-op">*</tt> <tt class="py-name">math</tt><tt class="py-op">.</tt><tt class="py-name">cos</tt><tt class="py-op">(</tt> <tt class="py-name">theta_upper</tt> <tt class="py-op">)</tt> </tt>
+<a name="L1090"></a><tt class="py-lineno">1090</tt>  <tt class="py-line">            <tt class="py-name">w_upper</tt> <tt class="py-op">=</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">radius</tt> <tt class="py-op">*</tt> <tt class="py-name">math</tt><tt class="py-op">.</tt><tt class="py-name">sin</tt><tt class="py-op">(</tt> <tt class="py-name">theta_upper</tt> <tt class="py-op">)</tt> </tt>
+<a name="L1091"></a><tt class="py-lineno">1091</tt>  <tt class="py-line">            <tt class="py-name">y_lower</tt> <tt class="py-op">=</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">radius</tt> <tt class="py-op">*</tt> <tt class="py-name">math</tt><tt class="py-op">.</tt><tt class="py-name">cos</tt><tt class="py-op">(</tt> <tt class="py-name">theta_lower</tt> <tt class="py-op">)</tt> </tt>
+<a name="L1092"></a><tt class="py-lineno">1092</tt>  <tt class="py-line">            <tt class="py-name">w_lower</tt> <tt class="py-op">=</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">radius</tt> <tt class="py-op">*</tt> <tt class="py-name">math</tt><tt class="py-op">.</tt><tt class="py-name">sin</tt><tt class="py-op">(</tt> <tt class="py-name">theta_lower</tt> <tt class="py-op">)</tt> </tt>
+<a name="L1093"></a><tt class="py-lineno">1093</tt>  <tt class="py-line">            <tt class="py-keyword">for</tt> <tt class="py-name">slice</tt> <tt class="py-keyword">in</tt> <tt class="py-name">range</tt><tt class="py-op">(</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">slices</tt><tt class="py-op">/</tt><tt class="py-number">2</tt><tt class="py-op">,</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">slices</tt><tt class="py-op">)</ [...]
+<a name="L1094"></a><tt class="py-lineno">1094</tt>  <tt class="py-line">                <tt class="py-name">slice_start_frac</tt> <tt class="py-op">=</tt> <tt id="link-195" class="py-name"><a title="float" class="py-name" href="#" onclick="return doclink('link-195', 'float', 'link-59');">float</a></tt><tt class="py-op">(</tt><tt class="py-name">slice</tt><tt class="py-op">)</tt><tt class="py-op">/</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">slices</tt> </tt>
+<a name="L1095"></a><tt class="py-lineno">1095</tt>  <tt class="py-line">                <tt class="py-name">slice_stop_frac</tt> <tt class="py-op">=</tt> <tt id="link-196" class="py-name"><a title="float" class="py-name" href="#" onclick="return doclink('link-196', 'float', 'link-59');">float</a></tt><tt class="py-op">(</tt><tt class="py-name">slice</tt><tt class="py-op">+</tt><tt class="py-number">1</tt><tt class="py-op">)</tt><tt class="py-op">/</tt><tt class="py-name">p</tt><tt class [...]
+<a name="L1096"></a><tt class="py-lineno">1096</tt>  <tt class="py-line">                <tt class="py-name">phi_start</tt> <tt class="py-op">=</tt> <tt class="py-name">slice_start_frac</tt> <tt class="py-op">*</tt> <tt class="py-number">2</tt> <tt class="py-op">*</tt> <tt class="py-name">math</tt><tt class="py-op">.</tt><tt class="py-name">pi</tt> </tt>
+<a name="L1097"></a><tt class="py-lineno">1097</tt>  <tt class="py-line">                <tt class="py-name">phi_stop</tt> <tt class="py-op">=</tt> <tt class="py-name">slice_stop_frac</tt> <tt class="py-op">*</tt> <tt class="py-number">2</tt> <tt class="py-op">*</tt> <tt class="py-name">math</tt><tt class="py-op">.</tt><tt class="py-name">pi</tt> </tt>
+<a name="L1098"></a><tt class="py-lineno">1098</tt>  <tt class="py-line">                <tt class="py-name">x_start_upper</tt> <tt class="py-op">=</tt> <tt class="py-name">w_upper</tt> <tt class="py-op">*</tt> <tt class="py-name">math</tt><tt class="py-op">.</tt><tt class="py-name">cos</tt><tt class="py-op">(</tt><tt class="py-name">phi_start</tt><tt class="py-op">)</tt> </tt>
+<a name="L1099"></a><tt class="py-lineno">1099</tt>  <tt class="py-line">                <tt class="py-name">x_start_lower</tt> <tt class="py-op">=</tt> <tt class="py-name">w_lower</tt> <tt class="py-op">*</tt> <tt class="py-name">math</tt><tt class="py-op">.</tt><tt class="py-name">cos</tt><tt class="py-op">(</tt><tt class="py-name">phi_start</tt><tt class="py-op">)</tt> </tt>
+<a name="L1100"></a><tt class="py-lineno">1100</tt>  <tt class="py-line">                <tt class="py-name">x_stop_upper</tt> <tt class="py-op">=</tt> <tt class="py-name">w_upper</tt> <tt class="py-op">*</tt> <tt class="py-name">math</tt><tt class="py-op">.</tt><tt class="py-name">cos</tt><tt class="py-op">(</tt><tt class="py-name">phi_stop</tt><tt class="py-op">)</tt> </tt>
+<a name="L1101"></a><tt class="py-lineno">1101</tt>  <tt class="py-line">                <tt class="py-name">x_stop_lower</tt> <tt class="py-op">=</tt> <tt class="py-name">w_lower</tt> <tt class="py-op">*</tt> <tt class="py-name">math</tt><tt class="py-op">.</tt><tt class="py-name">cos</tt><tt class="py-op">(</tt><tt class="py-name">phi_stop</tt><tt class="py-op">)</tt> </tt>
+<a name="L1102"></a><tt class="py-lineno">1102</tt>  <tt class="py-line">                <tt class="py-name">z_start_upper</tt> <tt class="py-op">=</tt> <tt class="py-name">w_upper</tt> <tt class="py-op">*</tt> <tt class="py-name">math</tt><tt class="py-op">.</tt><tt class="py-name">sin</tt><tt class="py-op">(</tt><tt class="py-name">phi_start</tt><tt class="py-op">)</tt> </tt>
+<a name="L1103"></a><tt class="py-lineno">1103</tt>  <tt class="py-line">                <tt class="py-name">z_start_lower</tt> <tt class="py-op">=</tt> <tt class="py-name">w_lower</tt> <tt class="py-op">*</tt> <tt class="py-name">math</tt><tt class="py-op">.</tt><tt class="py-name">sin</tt><tt class="py-op">(</tt><tt class="py-name">phi_start</tt><tt class="py-op">)</tt> </tt>
+<a name="L1104"></a><tt class="py-lineno">1104</tt>  <tt class="py-line">                <tt class="py-name">z_stop_upper</tt> <tt class="py-op">=</tt> <tt class="py-name">w_upper</tt> <tt class="py-op">*</tt> <tt class="py-name">math</tt><tt class="py-op">.</tt><tt class="py-name">sin</tt><tt class="py-op">(</tt><tt class="py-name">phi_stop</tt><tt class="py-op">)</tt> </tt>
+<a name="L1105"></a><tt class="py-lineno">1105</tt>  <tt class="py-line">                <tt class="py-name">z_stop_lower</tt> <tt class="py-op">=</tt> <tt class="py-name">w_lower</tt> <tt class="py-op">*</tt> <tt class="py-name">math</tt><tt class="py-op">.</tt><tt class="py-name">sin</tt><tt class="py-op">(</tt><tt class="py-name">phi_stop</tt><tt class="py-op">)</tt> </tt>
+<a name="L1106"></a><tt class="py-lineno">1106</tt>  <tt class="py-line"> </tt>
+<a name="L1107"></a><tt class="py-lineno">1107</tt>  <tt class="py-line">                <tt class="py-name">o</tt> <tt class="py-op">=</tt> <tt class="py-number">0.5</tt> </tt>
+<a name="L1108"></a><tt class="py-lineno">1108</tt>  <tt class="py-line">                <tt class="py-name">g</tt> <tt class="py-op">=</tt> <tt class="py-number">0.5</tt> <tt class="py-op">/</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">radius</tt> </tt>
+<a name="L1109"></a><tt class="py-lineno">1109</tt>  <tt class="py-line"> </tt>
+<a name="L1110"></a><tt class="py-lineno">1110</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_texture_s_is_azimuth</tt><tt class="py-op">:</tt> </tt>
+<a name="L1111"></a><tt class="py-lineno">1111</tt>  <tt class="py-line">                    <tt class="py-name">tex_s_start</tt> <tt class="py-op">=</tt> <tt class="py-name">slice_start_frac</tt><tt class="py-op">*</tt><tt class="py-number">2</tt><tt class="py-op">-</tt><tt class="py-number">1</tt> </tt>
+<a name="L1112"></a><tt class="py-lineno">1112</tt>  <tt class="py-line">                    <tt class="py-name">tex_s_stop</tt> <tt class="py-op">=</tt> <tt class="py-name">slice_stop_frac</tt><tt class="py-op">*</tt><tt class="py-number">2</tt><tt class="py-op">-</tt><tt class="py-number">1</tt> </tt>
+<a name="L1113"></a><tt class="py-lineno">1113</tt>  <tt class="py-line">                <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1114"></a><tt class="py-lineno">1114</tt>  <tt class="py-line">                    <tt class="py-name">tex_s_start</tt> <tt class="py-op">=</tt> <tt class="py-name">x_start_upper</tt><tt class="py-op">*</tt><tt class="py-name">g</tt><tt class="py-op">+</tt><tt class="py-name">o</tt> </tt>
+<a name="L1115"></a><tt class="py-lineno">1115</tt>  <tt class="py-line">                    <tt class="py-name">tex_s_stop</tt> <tt class="py-op">=</tt> <tt class="py-name">x_stop_upper</tt><tt class="py-op">*</tt><tt class="py-name">g</tt><tt class="py-op">+</tt><tt class="py-name">o</tt> </tt>
+<a name="L1116"></a><tt class="py-lineno">1116</tt>  <tt class="py-line"> </tt>
+<a name="L1117"></a><tt class="py-lineno">1117</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glTexCoord2f</tt><tt class="py-op">(</tt><tt class="py-name">tex_s_start</tt><tt class="py-op">,</tt><tt class="py-name">y_upper</tt><tt class="py-op">*</tt><tt class="py-name">g</tt><tt class="py-op">+</tt><tt class="py-name">o</tt><tt class="py-op">)</tt> </tt>
+<a name="L1118"></a><tt class="py-lineno">1118</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glVertex3f</tt><tt class="py-op">(</tt><tt class="py-name">x_start_upper</tt><tt class="py-op">,</tt> <tt class="py-name">y_upper</tt><tt class="py-op">,</tt> <tt class="py-name">z_start_upper</tt><tt class="py-op">)</tt> </tt>
+<a name="L1119"></a><tt class="py-lineno">1119</tt>  <tt class="py-line"> </tt>
+<a name="L1120"></a><tt class="py-lineno">1120</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glTexCoord2f</tt><tt class="py-op">(</tt><tt class="py-name">tex_s_stop</tt><tt class="py-op">,</tt><tt class="py-name">y_upper</tt><tt class="py-op">*</tt><tt class="py-name">g</tt><tt class="py-op">+</tt><tt class="py-name">o</tt><tt class="py-op">)</tt> </tt>
+<a name="L1121"></a><tt class="py-lineno">1121</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glVertex3f</tt><tt class="py-op">(</tt><tt class="py-name">x_stop_upper</tt><tt class="py-op">,</tt> <tt class="py-name">y_upper</tt><tt class="py-op">,</tt> <tt class="py-name">z_stop_upper</tt><tt class="py-op">)</tt> </tt>
+<a name="L1122"></a><tt class="py-lineno">1122</tt>  <tt class="py-line"> </tt>
+<a name="L1123"></a><tt class="py-lineno">1123</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glTexCoord2f</tt><tt class="py-op">(</tt><tt class="py-name">tex_s_stop</tt><tt class="py-op">,</tt><tt class="py-name">y_lower</tt><tt class="py-op">*</tt><tt class="py-name">g</tt><tt class="py-op">+</tt><tt class="py-name">o</tt><tt class="py-op">)</tt> </tt>
+<a name="L1124"></a><tt class="py-lineno">1124</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glVertex3f</tt><tt class="py-op">(</tt><tt class="py-name">x_stop_lower</tt><tt class="py-op">,</tt> <tt class="py-name">y_lower</tt><tt class="py-op">,</tt> <tt class="py-name">z_stop_lower</tt><tt class="py-op">)</tt> </tt>
+<a name="L1125"></a><tt class="py-lineno">1125</tt>  <tt class="py-line"> </tt>
+<a name="L1126"></a><tt class="py-lineno">1126</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glTexCoord2f</tt><tt class="py-op">(</tt><tt class="py-name">tex_s_start</tt><tt class="py-op">,</tt><tt class="py-name">y_lower</tt><tt class="py-op">*</tt><tt class="py-name">g</tt><tt class="py-op">+</tt><tt class="py-name">o</tt><tt class="py-op">)</tt> </tt>
+<a name="L1127"></a><tt class="py-lineno">1127</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glVertex3f</tt><tt class="py-op">(</tt><tt class="py-name">x_start_lower</tt><tt class="py-op">,</tt> <tt class="py-name">y_lower</tt><tt class="py-op">,</tt> <tt class="py-name">z_start_lower</tt><tt class="py-op">)</tt> </tt>
+<a name="L1128"></a><tt class="py-lineno">1128</tt>  <tt class="py-line"> </tt>
+<a name="L1129"></a><tt class="py-lineno">1129</tt>  <tt class="py-line">        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glEnd</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1130"></a><tt class="py-lineno">1130</tt>  <tt class="py-line">        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glEndList</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1131"></a><tt class="py-lineno">1131</tt>  <tt class="py-line"> </tt>
+<a name="L1132"></a><tt class="py-lineno">1132</tt>  <tt class="py-line">        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glNewList</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">opaque_display_list_id</tt><tt class="py-op">,</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_COMPILE</tt><tt class="py-op">)</tt> </tt>
+<a name="L1133"></a><tt class="py-lineno">1133</tt>  <tt class="py-line"> </tt>
+<a name="L1134"></a><tt class="py-lineno">1134</tt>  <tt class="py-line">        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glBegin</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_QUADS</tt><tt class="py-op">)</tt> </tt>
+<a name="L1135"></a><tt class="py-lineno">1135</tt>  <tt class="py-line"> </tt>
+<a name="L1136"></a><tt class="py-lineno">1136</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">stack</tt> <tt class="py-keyword">in</tt> <tt class="py-name">range</tt><tt class="py-op">(</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">stacks</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1137"></a><tt class="py-lineno">1137</tt>  <tt class="py-line">            <tt class="py-name">stack_upper_frac</tt> <tt class="py-op">=</tt> <tt id="link-197" class="py-name"><a title="float" class="py-name" href="#" onclick="return doclink('link-197', 'float', 'link-59');">float</a></tt><tt class="py-op">(</tt><tt class="py-name">stack</tt><tt class="py-op">+</tt><tt class="py-number">1</tt><tt class="py-op">)</tt><tt class="py-op">/</tt><tt class="py-name">p</tt><tt class="p [...]
+<a name="L1138"></a><tt class="py-lineno">1138</tt>  <tt class="py-line">            <tt class="py-name">stack_lower_frac</tt> <tt class="py-op">=</tt> <tt id="link-198" class="py-name"><a title="float" class="py-name" href="#" onclick="return doclink('link-198', 'float', 'link-59');">float</a></tt><tt class="py-op">(</tt><tt class="py-name">stack</tt><tt class="py-op">)</tt><tt class="py-op">/</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">stacks</tt> </tt>
+<a name="L1139"></a><tt class="py-lineno">1139</tt>  <tt class="py-line">            <tt class="py-name">theta_upper</tt> <tt class="py-op">=</tt> <tt class="py-name">stack_upper_frac</tt> <tt class="py-op">*</tt> <tt class="py-name">math</tt><tt class="py-op">.</tt><tt class="py-name">pi</tt> </tt>
+<a name="L1140"></a><tt class="py-lineno">1140</tt>  <tt class="py-line">            <tt class="py-name">theta_lower</tt> <tt class="py-op">=</tt> <tt class="py-name">stack_lower_frac</tt> <tt class="py-op">*</tt> <tt class="py-name">math</tt><tt class="py-op">.</tt><tt class="py-name">pi</tt> </tt>
+<a name="L1141"></a><tt class="py-lineno">1141</tt>  <tt class="py-line">            <tt class="py-name">y_upper</tt> <tt class="py-op">=</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">radius</tt> <tt class="py-op">*</tt> <tt class="py-name">math</tt><tt class="py-op">.</tt><tt class="py-name">cos</tt><tt class="py-op">(</tt> <tt class="py-name">theta_upper</tt> <tt class="py-op">)</tt> </tt>
+<a name="L1142"></a><tt class="py-lineno">1142</tt>  <tt class="py-line">            <tt class="py-name">w_upper</tt> <tt class="py-op">=</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">radius</tt> <tt class="py-op">*</tt> <tt class="py-name">math</tt><tt class="py-op">.</tt><tt class="py-name">sin</tt><tt class="py-op">(</tt> <tt class="py-name">theta_upper</tt> <tt class="py-op">)</tt> </tt>
+<a name="L1143"></a><tt class="py-lineno">1143</tt>  <tt class="py-line">            <tt class="py-name">y_lower</tt> <tt class="py-op">=</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">radius</tt> <tt class="py-op">*</tt> <tt class="py-name">math</tt><tt class="py-op">.</tt><tt class="py-name">cos</tt><tt class="py-op">(</tt> <tt class="py-name">theta_lower</tt> <tt class="py-op">)</tt> </tt>
+<a name="L1144"></a><tt class="py-lineno">1144</tt>  <tt class="py-line">            <tt class="py-name">w_lower</tt> <tt class="py-op">=</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">radius</tt> <tt class="py-op">*</tt> <tt class="py-name">math</tt><tt class="py-op">.</tt><tt class="py-name">sin</tt><tt class="py-op">(</tt> <tt class="py-name">theta_lower</tt> <tt class="py-op">)</tt> </tt>
+<a name="L1145"></a><tt class="py-lineno">1145</tt>  <tt class="py-line">            <tt class="py-keyword">for</tt> <tt class="py-name">slice</tt> <tt class="py-keyword">in</tt> <tt class="py-name">range</tt><tt class="py-op">(</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">slices</tt><tt class="py-op">/</tt><tt class="py-number">2</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> <tt class="py-comment"># half of sphere with no window</tt> </tt>
+<a name="L1146"></a><tt class="py-lineno">1146</tt>  <tt class="py-line">                <tt class="py-name">slice_start_frac</tt> <tt class="py-op">=</tt> <tt id="link-199" class="py-name"><a title="float" class="py-name" href="#" onclick="return doclink('link-199', 'float', 'link-59');">float</a></tt><tt class="py-op">(</tt><tt class="py-name">slice</tt><tt class="py-op">)</tt><tt class="py-op">/</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">slices</tt> </tt>
+<a name="L1147"></a><tt class="py-lineno">1147</tt>  <tt class="py-line">                <tt class="py-name">slice_stop_frac</tt> <tt class="py-op">=</tt> <tt id="link-200" class="py-name"><a title="float" class="py-name" href="#" onclick="return doclink('link-200', 'float', 'link-59');">float</a></tt><tt class="py-op">(</tt><tt class="py-name">slice</tt><tt class="py-op">+</tt><tt class="py-number">1</tt><tt class="py-op">)</tt><tt class="py-op">/</tt><tt class="py-name">p</tt><tt class [...]
+<a name="L1148"></a><tt class="py-lineno">1148</tt>  <tt class="py-line">                <tt class="py-name">phi_start</tt> <tt class="py-op">=</tt> <tt class="py-name">slice_start_frac</tt> <tt class="py-op">*</tt> <tt class="py-number">2</tt> <tt class="py-op">*</tt> <tt class="py-name">math</tt><tt class="py-op">.</tt><tt class="py-name">pi</tt> </tt>
+<a name="L1149"></a><tt class="py-lineno">1149</tt>  <tt class="py-line">                <tt class="py-name">phi_stop</tt> <tt class="py-op">=</tt> <tt class="py-name">slice_stop_frac</tt> <tt class="py-op">*</tt> <tt class="py-number">2</tt> <tt class="py-op">*</tt> <tt class="py-name">math</tt><tt class="py-op">.</tt><tt class="py-name">pi</tt> </tt>
+<a name="L1150"></a><tt class="py-lineno">1150</tt>  <tt class="py-line">                <tt class="py-name">x_start_upper</tt> <tt class="py-op">=</tt> <tt class="py-name">w_upper</tt> <tt class="py-op">*</tt> <tt class="py-name">math</tt><tt class="py-op">.</tt><tt class="py-name">cos</tt><tt class="py-op">(</tt><tt class="py-name">phi_start</tt><tt class="py-op">)</tt> </tt>
+<a name="L1151"></a><tt class="py-lineno">1151</tt>  <tt class="py-line">                <tt class="py-name">x_start_lower</tt> <tt class="py-op">=</tt> <tt class="py-name">w_lower</tt> <tt class="py-op">*</tt> <tt class="py-name">math</tt><tt class="py-op">.</tt><tt class="py-name">cos</tt><tt class="py-op">(</tt><tt class="py-name">phi_start</tt><tt class="py-op">)</tt> </tt>
+<a name="L1152"></a><tt class="py-lineno">1152</tt>  <tt class="py-line">                <tt class="py-name">x_stop_upper</tt> <tt class="py-op">=</tt> <tt class="py-name">w_upper</tt> <tt class="py-op">*</tt> <tt class="py-name">math</tt><tt class="py-op">.</tt><tt class="py-name">cos</tt><tt class="py-op">(</tt><tt class="py-name">phi_stop</tt><tt class="py-op">)</tt> </tt>
+<a name="L1153"></a><tt class="py-lineno">1153</tt>  <tt class="py-line">                <tt class="py-name">x_stop_lower</tt> <tt class="py-op">=</tt> <tt class="py-name">w_lower</tt> <tt class="py-op">*</tt> <tt class="py-name">math</tt><tt class="py-op">.</tt><tt class="py-name">cos</tt><tt class="py-op">(</tt><tt class="py-name">phi_stop</tt><tt class="py-op">)</tt> </tt>
+<a name="L1154"></a><tt class="py-lineno">1154</tt>  <tt class="py-line">                <tt class="py-name">z_start_upper</tt> <tt class="py-op">=</tt> <tt class="py-name">w_upper</tt> <tt class="py-op">*</tt> <tt class="py-name">math</tt><tt class="py-op">.</tt><tt class="py-name">sin</tt><tt class="py-op">(</tt><tt class="py-name">phi_start</tt><tt class="py-op">)</tt> </tt>
+<a name="L1155"></a><tt class="py-lineno">1155</tt>  <tt class="py-line">                <tt class="py-name">z_start_lower</tt> <tt class="py-op">=</tt> <tt class="py-name">w_lower</tt> <tt class="py-op">*</tt> <tt class="py-name">math</tt><tt class="py-op">.</tt><tt class="py-name">sin</tt><tt class="py-op">(</tt><tt class="py-name">phi_start</tt><tt class="py-op">)</tt> </tt>
+<a name="L1156"></a><tt class="py-lineno">1156</tt>  <tt class="py-line">                <tt class="py-name">z_stop_upper</tt> <tt class="py-op">=</tt> <tt class="py-name">w_upper</tt> <tt class="py-op">*</tt> <tt class="py-name">math</tt><tt class="py-op">.</tt><tt class="py-name">sin</tt><tt class="py-op">(</tt><tt class="py-name">phi_stop</tt><tt class="py-op">)</tt> </tt>
+<a name="L1157"></a><tt class="py-lineno">1157</tt>  <tt class="py-line">                <tt class="py-name">z_stop_lower</tt> <tt class="py-op">=</tt> <tt class="py-name">w_lower</tt> <tt class="py-op">*</tt> <tt class="py-name">math</tt><tt class="py-op">.</tt><tt class="py-name">sin</tt><tt class="py-op">(</tt><tt class="py-name">phi_stop</tt><tt class="py-op">)</tt> </tt>
+<a name="L1158"></a><tt class="py-lineno">1158</tt>  <tt class="py-line"> </tt>
+<a name="L1159"></a><tt class="py-lineno">1159</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glVertex3f</tt><tt class="py-op">(</tt><tt class="py-name">x_start_upper</tt><tt class="py-op">,</tt> <tt class="py-name">y_upper</tt><tt class="py-op">,</tt> <tt class="py-name">z_start_upper</tt><tt class="py-op">)</tt> </tt>
+<a name="L1160"></a><tt class="py-lineno">1160</tt>  <tt class="py-line"> </tt>
+<a name="L1161"></a><tt class="py-lineno">1161</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glVertex3f</tt><tt class="py-op">(</tt><tt class="py-name">x_stop_upper</tt><tt class="py-op">,</tt> <tt class="py-name">y_upper</tt><tt class="py-op">,</tt> <tt class="py-name">z_stop_upper</tt><tt class="py-op">)</tt> </tt>
+<a name="L1162"></a><tt class="py-lineno">1162</tt>  <tt class="py-line"> </tt>
+<a name="L1163"></a><tt class="py-lineno">1163</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glVertex3f</tt><tt class="py-op">(</tt><tt class="py-name">x_stop_lower</tt><tt class="py-op">,</tt> <tt class="py-name">y_lower</tt><tt class="py-op">,</tt> <tt class="py-name">z_stop_lower</tt><tt class="py-op">)</tt> </tt>
+<a name="L1164"></a><tt class="py-lineno">1164</tt>  <tt class="py-line"> </tt>
+<a name="L1165"></a><tt class="py-lineno">1165</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glVertex3f</tt><tt class="py-op">(</tt><tt class="py-name">x_start_lower</tt><tt class="py-op">,</tt> <tt class="py-name">y_lower</tt><tt class="py-op">,</tt> <tt class="py-name">z_start_lower</tt><tt class="py-op">)</tt> </tt>
+<a name="L1166"></a><tt class="py-lineno">1166</tt>  <tt class="py-line"> </tt>
+<a name="L1167"></a><tt class="py-lineno">1167</tt>  <tt class="py-line">        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glEnd</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1168"></a><tt class="py-lineno">1168</tt>  <tt class="py-line">        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glEndList</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1169"></a><tt class="py-lineno">1169</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_cached_radius</tt> <tt class="py-op">=</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">radius</tt> </tt>
+<a name="L1170"></a><tt class="py-lineno">1170</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_cached_slices</tt> <tt class="py-op">=</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">slices</tt> </tt>
+<a name="L1171"></a><tt class="py-lineno">1171</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_cached_stacks</tt> <tt class="py-op">=</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">stacks</tt> </tt>
+<a name="L1172"></a><tt class="py-lineno">1172</tt>  <tt class="py-line">        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glPopMatrix</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1173"></a><tt class="py-lineno">1173</tt>  <tt class="py-line"> </tt>
+<a name="SphereWindow.draw"></a><div id="SphereWindow.draw-def"><a name="L1174"></a><tt class="py-lineno">1174</tt> <a class="py-toggle" href="#" id="SphereWindow.draw-toggle" onclick="return toggle('SphereWindow.draw');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.SphereMap.SphereWindow-class.html#draw">draw</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="SphereWindow.draw-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="SphereWindow.draw-expanded"><a name="L1175"></a><tt class="py-lineno">1175</tt>  <tt class="py-line">        <tt class="py-docstring">"""Redraw the scene on every frame.</tt> </tt>
+<a name="L1176"></a><tt class="py-lineno">1176</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L1177"></a><tt class="py-lineno">1177</tt>  <tt class="py-line">        <tt class="py-name">p</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt> </tt>
+<a name="L1178"></a><tt class="py-lineno">1178</tt>  <tt class="py-line"> </tt>
+<a name="L1179"></a><tt class="py-lineno">1179</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_cached_radius</tt> <tt class="py-op">!=</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">radius</tt> <tt class="py-keyword">or</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_cached_slices</tt> <tt class="py-op">!=</tt> <tt class="py-name">p</tt><tt [...]
+<a name="L1180"></a><tt class="py-lineno">1180</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__rebuild_display_lists</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1181"></a><tt class="py-lineno">1181</tt>  <tt class="py-line"> </tt>
+<a name="L1182"></a><tt class="py-lineno">1182</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_cached_window_shape</tt> <tt class="py-op">!=</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">window_shape</tt> <tt class="py-keyword">or</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_cached_shape_radius_parameter</tt> <tt class="py-op">!=</tt> < [...]
+<a name="L1183"></a><tt class="py-lineno">1183</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__rebuild_texture_object</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1184"></a><tt class="py-lineno">1184</tt>  <tt class="py-line"> </tt>
+<a name="L1185"></a><tt class="py-lineno">1185</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">window_shape</tt> <tt class="py-op">==</tt> <tt class="py-string">'lat-long rectangle'</tt> <tt class="py-keyword">and</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_cached_shape_parameter2</tt> <tt class="py-op">!=</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt cla [...]
+<a name="L1186"></a><tt class="py-lineno">1186</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__rebuild_texture_object</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1187"></a><tt class="py-lineno">1187</tt>  <tt class="py-line"> </tt>
+<a name="L1188"></a><tt class="py-lineno">1188</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_cached_num_s_samples</tt> <tt class="py-op">!=</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">num_s_samples</tt> <tt class="py-keyword">or</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_cached_num_t_samples</tt> <tt class="py-op">!=</tt> <tt clas [...]
+<a name="L1189"></a><tt class="py-lineno">1189</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__rebuild_texture_object</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1190"></a><tt class="py-lineno">1190</tt>  <tt class="py-line"> </tt>
+<a name="L1191"></a><tt class="py-lineno">1191</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">on</tt><tt class="py-op">:</tt> </tt>
+<a name="L1192"></a><tt class="py-lineno">1192</tt>  <tt class="py-line">            <tt class="py-comment">#gl.glPolygonMode( gl.GL_FRONT_AND_BACK, gl.GL_LINE )</tt> </tt>
+<a name="L1193"></a><tt class="py-lineno">1193</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">if</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">bit_depth</tt> <tt class="py-op">!=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">cached_bit_depth</tt><tt class="py-op">:</tt> </tt>
+<a name="L1194"></a><tt class="py-lineno">1194</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-201" class="py-name"><a title="VisionEgg.Gratings.AlphaGratingCommon.calculate_bit_depth_dependencies
+VisionEgg.Gratings.LuminanceGratingCommon.calculate_bit_depth_dependencies" class="py-name" href="#" onclick="return doclink('link-201', 'calculate_bit_depth_dependencies', 'link-148');">calculate_bit_depth_dependencies</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1195"></a><tt class="py-lineno">1195</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">gl_internal_format</tt> <tt class="py-op">=</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_ALPHA</tt> <tt class="py-comment"># change from luminance to alpha</tt> </tt>
+<a name="L1196"></a><tt class="py-lineno">1196</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">format</tt> <tt class="py-op">=</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_ALPHA</tt> </tt>
+<a name="L1197"></a><tt class="py-lineno">1197</tt>  <tt class="py-line">            <tt class="py-comment"># Set OpenGL state variables</tt> </tt>
+<a name="L1198"></a><tt class="py-lineno">1198</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glEnable</tt><tt class="py-op">(</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_DEPTH_TEST</tt> <tt class="py-op">)</tt> </tt>
+<a name="L1199"></a><tt class="py-lineno">1199</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glEnable</tt><tt class="py-op">(</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE_2D</tt> <tt class="py-op">)</tt> </tt>
+<a name="L1200"></a><tt class="py-lineno">1200</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glEnable</tt><tt class="py-op">(</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_BLEND</tt> <tt class="py-op">)</tt> </tt>
+<a name="L1201"></a><tt class="py-lineno">1201</tt>  <tt class="py-line"> </tt>
+<a name="L1202"></a><tt class="py-lineno">1202</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glBlendFunc</tt><tt class="py-op">(</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_ONE_MINUS_SRC_ALPHA</tt><tt class="py-op">,</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_SRC_ALPHA</tt> <tt class="py-op">)</tt> <tt class="py-comment"># alpha 1.0 = transparent</tt> </tt>
+<a name="L1203"></a><tt class="py-lineno">1203</tt>  <tt class="py-line"> </tt>
+<a name="L1204"></a><tt class="py-lineno">1204</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glBindTexture</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE_2D</tt><tt class="py-op">,</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">texture_object_id</tt><tt class="py-op">)</tt> </tt>
+<a name="L1205"></a><tt class="py-lineno">1205</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glColor4f</tt><tt class="py-op">(</tt> <tt class="py-op">*</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">opaque_color</tt> <tt class="py-op">)</tt> </tt>
+<a name="L1206"></a><tt class="py-lineno">1206</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glTexEnvi</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE_ENV</tt><tt class="py-op">,</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE_ENV_MODE</tt><tt class="py-op">,</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="p [...]
+<a name="L1207"></a><tt class="py-lineno">1207</tt>  <tt class="py-line"> </tt>
+<a name="L1208"></a><tt class="py-lineno">1208</tt>  <tt class="py-line">            <tt class="py-comment"># clear modelview matrix</tt> </tt>
+<a name="L1209"></a><tt class="py-lineno">1209</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glMatrixMode</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_MODELVIEW</tt><tt class="py-op">)</tt> </tt>
+<a name="L1210"></a><tt class="py-lineno">1210</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glPushMatrix</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1211"></a><tt class="py-lineno">1211</tt>  <tt class="py-line"> </tt>
+<a name="L1212"></a><tt class="py-lineno">1212</tt>  <tt class="py-line">            <tt class="py-comment"># do the window position</tt> </tt>
+<a name="L1213"></a><tt class="py-lineno">1213</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glRotatef</tt><tt class="py-op">(</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">window_center_azimuth</tt><tt class="py-op">,</tt><tt class="py-number">0.0</tt><tt class="py-op">,</tt><tt class="py-op">-</tt><tt class="py-number">1.0</tt><tt class="py-op">,</tt><tt class="py-numb [...]
+<a name="L1214"></a><tt class="py-lineno">1214</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glRotatef</tt><tt class="py-op">(</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">window_center_elevation</tt><tt class="py-op">,</tt><tt class="py-number">1.0</tt><tt class="py-op">,</tt><tt class="py-number">0.0</tt><tt class="py-op">,</tt><tt class="py-number">0.0</tt><tt class="py-op">)</tt> </tt>
+<a name="L1215"></a><tt class="py-lineno">1215</tt>  <tt class="py-line"> </tt>
+<a name="L1216"></a><tt class="py-lineno">1216</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glCallList</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">windowed_display_list_id</tt><tt class="py-op">)</tt> </tt>
+<a name="L1217"></a><tt class="py-lineno">1217</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glCallList</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">opaque_display_list_id</tt><tt class="py-op">)</tt> </tt>
+<a name="L1218"></a><tt class="py-lineno">1218</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glPopMatrix</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L1219"></a><tt class="py-lineno">1219</tt>  <tt class="py-line"> </tt><script type="text/javascript">
+<!--
+expandto(location.href);
+// -->
+</script>
+</pre>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:48 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.SphereMap.AzElGrid-class.html b/doc/reference/html/VisionEgg.SphereMap.AzElGrid-class.html
new file mode 100644
index 0000000..a33d21b
--- /dev/null
+++ b/doc/reference/html/VisionEgg.SphereMap.AzElGrid-class.html
@@ -0,0 +1,435 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.SphereMap.AzElGrid</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.SphereMap-module.html">Module SphereMap</a> ::
+        Class AzElGrid
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.SphereMap.AzElGrid-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class AzElGrid</h1><span class="codelink"><a href="VisionEgg.SphereMap-pysrc.html#AzElGrid">source code</a></span><br /><br />
+<pre class="base-tree">
+         object --+        
+                  |        
+<a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a> --+    
+                      |    
+          <a href="VisionEgg.Core.Stimulus-class.html">Core.Stimulus</a> --+
+                          |
+                         <strong class="uidshort">AzElGrid</strong>
+</pre>
+
+<hr />
+<pre class="literalblock">
+Spherical grid of iso-azimuth and iso-elevation lines.
+
+Parameters
+==========
+anti_aliasing    -- (Boolean)
+                    Default: True
+center_azimuth   -- (Real)
+                    Default: 0.0
+center_elevation -- (Real)
+                    Default: 0.0
+major_line_color -- (AnyOf(Sequence3 of Real or Sequence4 of Real))
+                    Default: (0.0, 0.0, 0.0)
+major_line_width -- (Real)
+                    Default: 2.0
+minor_line_color -- (AnyOf(Sequence3 of Real or Sequence4 of Real))
+                    Default: (0.0, 0.0, 1.0)
+minor_line_width -- (Real)
+                    Default: 1.0
+my_viewport      -- (Instance of <class 'VisionEgg.Core.Viewport'>)
+                    Default: (determined at runtime)
+on               -- (Boolean)
+                    Default: True
+text_offset      -- (Sequence2 of Real)
+                    Default: (3, -2)
+
+Constant Parameters
+===================
+az_major_spacing       -- (Real)
+                          Default: 30.0
+az_minor_spacing       -- (Real)
+                          Default: 10.0
+el_major_spacing       -- (Real)
+                          Default: 30.0
+el_minor_spacing       -- (Real)
+                          Default: 10.0
+font_size              -- (UnsignedInteger)
+                          Default: 24
+num_samples_per_circle -- (UnsignedInteger)
+                          Default: 100
+radius                 -- (Real)
+                          Default: 1.0
+text_anchor            -- (String)
+                          Default: lowerleft
+text_color             -- (AnyOf(Sequence3 of Real or Sequence4 of Real))
+                          Default: (0.0, 0.0, 0.0)
+use_text               -- (Boolean)
+                          Default: True
+
+</pre><br /><br />
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.SphereMap.AzElGrid-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">**kw</span>)</span><br />
+      Instantiate and get ready to draw.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.SphereMap-pysrc.html#AzElGrid.__init__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.SphereMap.AzElGrid-class.html#draw" class="summary-sig-name">draw</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      Draw the stimulus.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.SphereMap-pysrc.html#AzElGrid.draw">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a></code></b>:
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__getstate__">__getstate__</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__setstate__">__setstate__</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#get_specified_type">get_specified_type</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#is_constant_parameter">is_constant_parameter</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#set">set</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#verify_parameters">verify_parameters</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__delattr__</code>,
+      <code>__getattribute__</code>,
+      <code>__hash__</code>,
+      <code>__new__</code>,
+      <code>__reduce__</code>,
+      <code>__reduce_ex__</code>,
+      <code>__repr__</code>,
+      <code>__setattr__</code>,
+      <code>__str__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Class Variables</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.SphereMap.AzElGrid-class.html#parameters_and_defaults" class="summary-name">parameters_and_defaults</a> = <code title="{'on':(True, ve_types.Boolean), 'center_azimuth':(0.0, ve_types.Real),\
+ 'center_elevation':(0.0, ve_types.Real), 'minor_line_width':(1.0, ve_\
+types.Real), 'major_line_width':(2.0, ve_types.Real), 'minor_line_colo\
+r':((0.0, 0.0, 1.0), ve_types.AnyOf(ve_types.Sequence3(ve_types.Real),\
+ ve_types.Sequence4(ve_types.Real))), 'major_line_color':((0.0, 0.0, 0\
+.0), ve_types.AnyOf(ve_types.Sequence3(ve_types.Real), ve_types.Sequen\
+ce4(ve_types.Real))), 'my_viewport':(None, ve_types.Instance(VisionEgg\
+.Core.Viewport)), 'text_offset':((3,-2), ve_types.Sequence2(ve_types.R\
+...">{'on':(True, ve_types.Boolean), 'cen<code class="variable-ellipsis">...</code></code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.SphereMap.AzElGrid-class.html#constant_parameters_and_defaults" class="summary-name">constant_parameters_and_defaults</a> = <code title="{'use_text':(True, ve_types.Boolean), 'radius':(1.0, ve_types.Real), '\
+az_minor_spacing':(10.0, ve_types.Real), 'az_major_spacing':(30.0, ve_\
+types.Real), 'el_minor_spacing':(10.0, ve_types.Real), 'el_major_spaci\
+ng':(30.0, ve_types.Real), 'num_samples_per_circle':(100, ve_types.Uns\
+ignedInteger), 'font_size':(24, ve_types.UnsignedInteger), 'text_color\
+':((0.0, 0.0, 0.0), ve_types.AnyOf(ve_types.Sequence3(ve_types.Real), \
+ve_types.Sequence4(ve_types.Real))), 'text_anchor':('lowerleft', ve_ty\
+pes.String),}">{'use_text':(True, ve_types<code class="variable-ellipsis">...</code></code>
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a></code></b>:
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__safe_for_unpickling__">__safe_for_unpickling__</a></code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Properties</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__class__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Method Details</span></td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">**kw</span>)</span>
+    <br /><em class="fname">(Constructor)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.SphereMap-pysrc.html#AzElGrid.__init__">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Instantiate and get ready to draw.
+
+Set parameter values and create anything needed to draw the
+stimulus including OpenGL state variables such display lists
+and texture objects.
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.Core.Stimulus-class.html#__init__">Core.Stimulus.__init__</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="draw"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">draw</span>(<span class="sig-arg">self</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.SphereMap-pysrc.html#AzElGrid.draw">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Draw the stimulus. (Called by Viewport instance.)
+
+This method is called every frame.  This method actually
+performs the OpenGL calls to draw the stimulus.
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.Core.Stimulus-class.html#draw">Core.Stimulus.draw</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== CLASS VARIABLE DETAILS ==================== -->
+<a name="section-ClassVariableDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Class Variable Details</span></td>
+</tr>
+</table>
+<a name="parameters_and_defaults"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">parameters_and_defaults</h3>
+  
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+{'on':(True, ve_types.Boolean), 'center_azimuth':(0.0, ve_types.Real),<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+ 'center_elevation':(0.0, ve_types.Real), 'minor_line_width':(1.0, ve_<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+types.Real), 'major_line_width':(2.0, ve_types.Real), 'minor_line_colo<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+r':((0.0, 0.0, 1.0), ve_types.AnyOf(ve_types.Sequence3(ve_types.Real),<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+ ve_types.Sequence4(ve_types.Real))), 'major_line_color':((0.0, 0.0, 0<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+.0), ve_types.AnyOf(ve_types.Sequence3(ve_types.Real), ve_types.Sequen<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+ce4(ve_types.Real))), 'my_viewport':(None, ve_types.Instance(VisionEgg<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+.Core.Viewport)), 'text_offset':((3,-2), ve_types.Sequence2(ve_types.R<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+<code class="variable-ellipsis">...</code>
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="constant_parameters_and_defaults"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">constant_parameters_and_defaults</h3>
+  
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+{'use_text':(True, ve_types.Boolean), 'radius':(1.0, ve_types.Real), '<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+az_minor_spacing':(10.0, ve_types.Real), 'az_major_spacing':(30.0, ve_<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+types.Real), 'el_minor_spacing':(10.0, ve_types.Real), 'el_major_spaci<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+ng':(30.0, ve_types.Real), 'num_samples_per_circle':(100, ve_types.Uns<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+ignedInteger), 'font_size':(24, ve_types.UnsignedInteger), 'text_color<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+':((0.0, 0.0, 0.0), ve_types.AnyOf(ve_types.Sequence3(ve_types.Real), <span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+ve_types.Sequence4(ve_types.Real))), 'text_anchor':('lowerleft', ve_ty<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+pes.String),}
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:47 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.SphereMap.SphereGrating-class.html b/doc/reference/html/VisionEgg.SphereMap.SphereGrating-class.html
new file mode 100644
index 0000000..21d228f
--- /dev/null
+++ b/doc/reference/html/VisionEgg.SphereMap.SphereGrating-class.html
@@ -0,0 +1,393 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.SphereMap.SphereGrating</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.SphereMap-module.html">Module SphereMap</a> ::
+        Class SphereGrating
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.SphereMap.SphereGrating-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class SphereGrating</h1><span class="codelink"><a href="VisionEgg.SphereMap-pysrc.html#SphereGrating">source code</a></span><br /><br />
+<pre class="base-tree">
+             object --+            
+                      |            
+    <a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a> --+        
+                          |        
+              <a href="VisionEgg.Core.Stimulus-class.html">Core.Stimulus</a> --+    
+                              |    
+<a href="VisionEgg.Gratings.LuminanceGratingCommon-class.html">Gratings.LuminanceGratingCommon</a> --+
+                                  |
+                                 <strong class="uidshort">SphereGrating</strong>
+</pre>
+
+<hr />
+<pre class="literalblock">
+Map 2D sinusoidal grating onto sphere.
+
+Parameters
+==========
+bit_depth                       -- precision with which grating is calculated and sent to OpenGL (UnsignedInteger)
+                                   Inherited from VisionEgg.Gratings.LuminanceGratingCommon
+                                   Default: 8
+check_texture_size              -- (Boolean)
+                                   Default: True
+contrast                        -- (Real)
+                                   Default: 1.0
+grating_center_azimuth          -- (Real)
+                                   Default: 0.0
+grating_center_elevation        -- (Real)
+                                   Default: 0.0
+ignore_time                     -- (Boolean)
+                                   Default: False
+lowpass_cutoff_cycles_per_texel -- helps prevent spatial aliasing (Real)
+                                   Default: 0.5
+min_filter                      -- OpenGL filter enum (Integer)
+                                   Default: GL_LINEAR (9729)
+num_samples                     -- (UnsignedInteger)
+                                   Default: 1024
+on                              -- (Boolean)
+                                   Default: True
+orientation                     -- (Real)
+                                   Default: 0.0
+phase_at_t0                     -- (Real)
+                                   Default: 0.0
+radius                          -- (Real)
+                                   Default: 1.0
+slices                          -- (UnsignedInteger)
+                                   Default: 30
+spatial_freq_cpd                -- (Real)
+                                   Default: 0.0277777777778
+stacks                          -- (UnsignedInteger)
+                                   Default: 30
+t0_time_sec_absolute            -- (Real)
+                                   Default: (determined at runtime)
+temporal_freq_hz                -- (Real)
+                                   Default: 5.0
+
+</pre><br /><br />
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.SphereMap.SphereGrating-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">**kw</span>)</span><br />
+      Instantiate and get ready to draw.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.SphereMap-pysrc.html#SphereGrating.__init__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.SphereMap.SphereGrating-class.html#draw" class="summary-sig-name">draw</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      Redraw the scene on every frame.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.SphereMap-pysrc.html#SphereGrating.draw">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.Gratings.LuminanceGratingCommon-class.html">Gratings.LuminanceGratingCommon</a></code></b>:
+      <code><a href="VisionEgg.Gratings.LuminanceGratingCommon-class.html#calculate_bit_depth_dependencies">calculate_bit_depth_dependencies</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a></code></b>:
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__getstate__">__getstate__</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__setstate__">__setstate__</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#get_specified_type">get_specified_type</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#is_constant_parameter">is_constant_parameter</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#set">set</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#verify_parameters">verify_parameters</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__delattr__</code>,
+      <code>__getattribute__</code>,
+      <code>__hash__</code>,
+      <code>__new__</code>,
+      <code>__reduce__</code>,
+      <code>__reduce_ex__</code>,
+      <code>__repr__</code>,
+      <code>__setattr__</code>,
+      <code>__str__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Class Variables</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.SphereMap.SphereGrating-class.html#parameters_and_defaults" class="summary-name">parameters_and_defaults</a> = <code title="{'on':(True, ve_types.Boolean), 'contrast':(1.0, ve_types.Real), 'spat\
+ial_freq_cpd':(1.0/ 36.0, ve_types.Real), 'temporal_freq_hz':(5.0, ve_\
+types.Real), 't0_time_sec_absolute':(None, ve_types.Real), 'ignore_tim\
+e':(False, ve_types.Boolean), 'phase_at_t0':(0.0, ve_types.Real), 'ori\
+entation':(0.0, ve_types.Real), 'grating_center_azimuth':(0.0, ve_type\
+s.Real), 'grating_center_elevation':(0.0, ve_types.Real), 'check_textu\
+re_size':(True, ve_types.Boolean), 'lowpass_cutoff_cycles_per_texel':(\
+0.5, ve_types.Real, 'helps prevent spatial aliasing'), 'min_filter':(g\
+...">{'on':(True, ve_types.Boolean), 'con<code class="variable-ellipsis">...</code></code>
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a></code></b>:
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__safe_for_unpickling__">__safe_for_unpickling__</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#constant_parameters_and_defaults">constant_parameters_and_defaults</a></code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Properties</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__class__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Method Details</span></td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">**kw</span>)</span>
+    <br /><em class="fname">(Constructor)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.SphereMap-pysrc.html#SphereGrating.__init__">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Instantiate and get ready to draw.
+
+Set parameter values and create anything needed to draw the
+stimulus including OpenGL state variables such display lists
+and texture objects.
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.Core.Stimulus-class.html#__init__">Core.Stimulus.__init__</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="draw"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">draw</span>(<span class="sig-arg">self</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.SphereMap-pysrc.html#SphereGrating.draw">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Redraw the scene on every frame.
+        
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.Core.Stimulus-class.html#draw">Core.Stimulus.draw</a>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== CLASS VARIABLE DETAILS ==================== -->
+<a name="section-ClassVariableDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Class Variable Details</span></td>
+</tr>
+</table>
+<a name="parameters_and_defaults"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">parameters_and_defaults</h3>
+  
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+{'on':(True, ve_types.Boolean), 'contrast':(1.0, ve_types.Real), 'spat<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+ial_freq_cpd':(1.0/ 36.0, ve_types.Real), 'temporal_freq_hz':(5.0, ve_<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+types.Real), 't0_time_sec_absolute':(None, ve_types.Real), 'ignore_tim<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+e':(False, ve_types.Boolean), 'phase_at_t0':(0.0, ve_types.Real), 'ori<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+entation':(0.0, ve_types.Real), 'grating_center_azimuth':(0.0, ve_type<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+s.Real), 'grating_center_elevation':(0.0, ve_types.Real), 'check_textu<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+re_size':(True, ve_types.Boolean), 'lowpass_cutoff_cycles_per_texel':(<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+0.5, ve_types.Real, 'helps prevent spatial aliasing'), 'min_filter':(g<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+<code class="variable-ellipsis">...</code>
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:47 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.SphereMap.SphereMap-class.html b/doc/reference/html/VisionEgg.SphereMap.SphereMap-class.html
new file mode 100644
index 0000000..42fdc7b
--- /dev/null
+++ b/doc/reference/html/VisionEgg.SphereMap.SphereMap-class.html
@@ -0,0 +1,374 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.SphereMap.SphereMap</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.SphereMap-module.html">Module SphereMap</a> ::
+        Class SphereMap
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.SphereMap.SphereMap-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class SphereMap</h1><span class="codelink"><a href="VisionEgg.SphereMap-pysrc.html#SphereMap">source code</a></span><br /><br />
+<pre class="base-tree">
+               object --+            
+                        |            
+      <a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a> --+        
+                            |        
+                <a href="VisionEgg.Core.Stimulus-class.html">Core.Stimulus</a> --+    
+                                |    
+<a href="VisionEgg.Textures.TextureStimulusBaseClass-class.html">Textures.TextureStimulusBaseClass</a> --+
+                                    |
+                                   <strong class="uidshort">SphereMap</strong>
+</pre>
+
+<hr />
+<pre class="literalblock">
+Mercator mapping of rectangular texture onto sphere.
+
+Parameters
+==========
+center_azimuth     -- (Real)
+                      Default: 0.0
+center_elevation   -- (Real)
+                      Default: 0.0
+contrast           -- (Real)
+                      Default: 1.0
+on                 -- (Boolean)
+                      Default: True
+radius             -- (Real)
+                      Default: 1.0
+slices             -- (UnsignedInteger)
+                      Default: 30
+stacks             -- (UnsignedInteger)
+                      Default: 30
+texture            -- source of texture data (Instance of <class 'VisionEgg.Textures.Texture'>)
+                      Inherited from VisionEgg.Textures.TextureStimulusBaseClass
+                      Default: (determined at runtime)
+texture_mag_filter -- OpenGL filter enum (Integer)
+                      Inherited from VisionEgg.Textures.TextureStimulusBaseClass
+                      Default: GL_LINEAR (9729)
+texture_min_filter -- OpenGL filter enum (Integer)
+                      Inherited from VisionEgg.Textures.TextureStimulusBaseClass
+                      Default: (GL enum determined at runtime)
+texture_wrap_s     -- OpenGL texture wrap enum (Integer)
+                      Inherited from VisionEgg.Textures.TextureStimulusBaseClass
+                      Default: (GL enum determined at runtime)
+texture_wrap_t     -- OpenGL texture wrap enum (Integer)
+                      Inherited from VisionEgg.Textures.TextureStimulusBaseClass
+                      Default: (GL enum determined at runtime)
+
+Constant Parameters
+===================
+internal_format   -- format with which OpenGL uses texture data (OpenGL data type enum) (Integer)
+                     Default: GL_RGB (6407)
+mipmaps_enabled   -- Are mipmaps enabled? (Boolean)
+                     Default: True
+shrink_texture_ok -- Allow automatic shrinking of texture if too big? (Boolean)
+                     Default: False
+
+</pre><br /><br />
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.SphereMap.SphereMap-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">**kw</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.SphereMap-pysrc.html#SphereMap.__init__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.SphereMap.SphereMap-class.html#draw" class="summary-sig-name">draw</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      Redraw the scene on every frame.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.SphereMap-pysrc.html#SphereMap.draw">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a></code></b>:
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__getstate__">__getstate__</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__setstate__">__setstate__</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#get_specified_type">get_specified_type</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#is_constant_parameter">is_constant_parameter</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#set">set</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#verify_parameters">verify_parameters</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__delattr__</code>,
+      <code>__getattribute__</code>,
+      <code>__hash__</code>,
+      <code>__new__</code>,
+      <code>__reduce__</code>,
+      <code>__reduce_ex__</code>,
+      <code>__repr__</code>,
+      <code>__setattr__</code>,
+      <code>__str__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Class Variables</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.SphereMap.SphereMap-class.html#parameters_and_defaults" class="summary-name">parameters_and_defaults</a> = <code title="{'on':(True, ve_types.Boolean), 'contrast':(1.0, ve_types.Real), 'cent\
+er_azimuth':(0.0, ve_types.Real), 'center_elevation':(0.0, ve_types.Re\
+al), 'radius':(1.0, ve_types.Real), 'slices':(30, ve_types.UnsignedInt\
+eger), 'stacks':(30, ve_types.UnsignedInteger)}">{'on':(True, ve_types.Boolean), 'con<code class="variable-ellipsis">...</code></code>
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.Textures.TextureStimulusBaseClass-class.html">Textures.TextureStimulusBaseClass</a></code></b>:
+      <code><a href="VisionEgg.Textures.TextureStimulusBaseClass-class.html#constant_parameters_and_defaults">constant_parameters_and_defaults</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a></code></b>:
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__safe_for_unpickling__">__safe_for_unpickling__</a></code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Properties</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__class__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Method Details</span></td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">**kw</span>)</span>
+    <br /><em class="fname">(Constructor)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.SphereMap-pysrc.html#SphereMap.__init__">source code</a></span> 
+    </td>
+  </table>
+  
+  
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.Textures.TextureStimulusBaseClass-class.html#__init__">Textures.TextureStimulusBaseClass.__init__</a>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="draw"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">draw</span>(<span class="sig-arg">self</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.SphereMap-pysrc.html#SphereMap.draw">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Redraw the scene on every frame.
+        
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.Core.Stimulus-class.html#draw">Core.Stimulus.draw</a>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== CLASS VARIABLE DETAILS ==================== -->
+<a name="section-ClassVariableDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Class Variable Details</span></td>
+</tr>
+</table>
+<a name="parameters_and_defaults"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">parameters_and_defaults</h3>
+  
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+{'on':(True, ve_types.Boolean), 'contrast':(1.0, ve_types.Real), 'cent<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+er_azimuth':(0.0, ve_types.Real), 'center_elevation':(0.0, ve_types.Re<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+al), 'radius':(1.0, ve_types.Real), 'slices':(30, ve_types.UnsignedInt<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+eger), 'stacks':(30, ve_types.UnsignedInteger)}
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:47 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.SphereMap.SphereWindow-class.html b/doc/reference/html/VisionEgg.SphereMap.SphereWindow-class.html
new file mode 100644
index 0000000..0e112c2
--- /dev/null
+++ b/doc/reference/html/VisionEgg.SphereMap.SphereWindow-class.html
@@ -0,0 +1,385 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.SphereMap.SphereWindow</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.SphereMap-module.html">Module SphereMap</a> ::
+        Class SphereWindow
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.SphereMap.SphereWindow-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class SphereWindow</h1><span class="codelink"><a href="VisionEgg.SphereMap-pysrc.html#SphereWindow">source code</a></span><br /><br />
+<pre class="base-tree">
+             object --+            
+                      |            
+    <a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a> --+        
+                          |        
+              <a href="VisionEgg.Core.Stimulus-class.html">Core.Stimulus</a> --+    
+                              |    
+<a href="VisionEgg.Gratings.LuminanceGratingCommon-class.html">Gratings.LuminanceGratingCommon</a> --+
+                                  |
+                                 <strong class="uidshort">SphereWindow</strong>
+</pre>
+
+<hr />
+<pre class="literalblock">
+This draws an opaque sphere with a single window in it.
+
+This is useful when you need to have a viewport on a 3D scene.
+
+Parameters
+==========
+bit_depth                     -- precision with which grating is calculated and sent to OpenGL (UnsignedInteger)
+                                 Inherited from VisionEgg.Gratings.LuminanceGratingCommon
+                                 Default: 8
+num_s_samples                 -- (UnsignedInteger)
+                                 Default: 512
+num_t_samples                 -- (UnsignedInteger)
+                                 Default: 512
+on                            -- (Boolean)
+                                 Default: True
+opaque_color                  -- (Sequence4 of Real)
+                                 Default: (0.5, 0.5, 0.5, 0.0)
+radius                        -- (Real)
+                                 Default: 1.0
+slices                        -- (UnsignedInteger)
+                                 Default: 30
+stacks                        -- (UnsignedInteger)
+                                 Default: 30
+window_center_azimuth         -- (Real)
+                                 Default: 0.0
+window_center_elevation       -- (Real)
+                                 Default: 0.0
+window_shape                  -- can be 'circle', 'gaussian', or 'lat-long rectangle' (String)
+                                 Default: gaussian
+window_shape_parameter2       -- (currently only used for) height of lat-long rectangle (in degrees) (Real)
+                                 Default: 30.0
+window_shape_radius_parameter -- radius of circle, sigma of gaussian, width of lat-long rectangle (in degrees) (Real)
+                                 Default: 36.0
+
+</pre><br /><br />
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.SphereMap.SphereWindow-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">**kw</span>)</span><br />
+      Instantiate and get ready to draw.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.SphereMap-pysrc.html#SphereWindow.__init__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.SphereMap.SphereWindow-class.html#draw" class="summary-sig-name">draw</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      Redraw the scene on every frame.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.SphereMap-pysrc.html#SphereWindow.draw">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.Gratings.LuminanceGratingCommon-class.html">Gratings.LuminanceGratingCommon</a></code></b>:
+      <code><a href="VisionEgg.Gratings.LuminanceGratingCommon-class.html#calculate_bit_depth_dependencies">calculate_bit_depth_dependencies</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a></code></b>:
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__getstate__">__getstate__</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__setstate__">__setstate__</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#get_specified_type">get_specified_type</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#is_constant_parameter">is_constant_parameter</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#set">set</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#verify_parameters">verify_parameters</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__delattr__</code>,
+      <code>__getattribute__</code>,
+      <code>__hash__</code>,
+      <code>__new__</code>,
+      <code>__reduce__</code>,
+      <code>__reduce_ex__</code>,
+      <code>__repr__</code>,
+      <code>__setattr__</code>,
+      <code>__str__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Class Variables</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.SphereMap.SphereWindow-class.html#parameters_and_defaults" class="summary-name">parameters_and_defaults</a> = <code title="{'on':(True, ve_types.Boolean), 'window_center_elevation':(0.0, ve_typ\
+es.Real), 'window_center_azimuth':(0.0, ve_types.Real), 'opaque_color'\
+:((0.5, 0.5, 0.5, 0.0), ve_types.Sequence4(ve_types.Real)), 'window_sh\
+ape':('gaussian', ve_types.String, "can be 'circle', 'gaussian', or 'l\
+at-long rectangle'",), 'window_shape_radius_parameter':(36.0, ve_types\
+.Real, 'radius of circle, sigma of gaussian, width of lat-long rectang\
+le (in degrees)',), 'window_shape_parameter2':(30.0, ve_types.Real, '(\
+currently only used for) height of lat-long rectangle (in degrees)',),\
+...">{'on':(True, ve_types.Boolean), 'win<code class="variable-ellipsis">...</code></code>
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a></code></b>:
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__safe_for_unpickling__">__safe_for_unpickling__</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#constant_parameters_and_defaults">constant_parameters_and_defaults</a></code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Properties</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__class__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Method Details</span></td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">**kw</span>)</span>
+    <br /><em class="fname">(Constructor)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.SphereMap-pysrc.html#SphereWindow.__init__">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Instantiate and get ready to draw.
+
+Set parameter values and create anything needed to draw the
+stimulus including OpenGL state variables such display lists
+and texture objects.
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.Core.Stimulus-class.html#__init__">Core.Stimulus.__init__</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="draw"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">draw</span>(<span class="sig-arg">self</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.SphereMap-pysrc.html#SphereWindow.draw">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Redraw the scene on every frame.
+        
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.Core.Stimulus-class.html#draw">Core.Stimulus.draw</a>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== CLASS VARIABLE DETAILS ==================== -->
+<a name="section-ClassVariableDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Class Variable Details</span></td>
+</tr>
+</table>
+<a name="parameters_and_defaults"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">parameters_and_defaults</h3>
+  
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+{'on':(True, ve_types.Boolean), 'window_center_elevation':(0.0, ve_typ<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+es.Real), 'window_center_azimuth':(0.0, ve_types.Real), 'opaque_color'<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+:((0.5, 0.5, 0.5, 0.0), ve_types.Sequence4(ve_types.Real)), 'window_sh<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+ape':('gaussian', ve_types.String, "can be 'circle', 'gaussian', or 'l<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+at-long rectangle'",), 'window_shape_radius_parameter':(36.0, ve_types<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+.Real, 'radius of circle, sigma of gaussian, width of lat-long rectang<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+le (in degrees)',), 'window_shape_parameter2':(30.0, ve_types.Real, '(<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+currently only used for) height of lat-long rectangle (in degrees)',),<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+<code class="variable-ellipsis">...</code>
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:47 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.TCPController-module.html b/doc/reference/html/VisionEgg.TCPController-module.html
new file mode 100644
index 0000000..e464799
--- /dev/null
+++ b/doc/reference/html/VisionEgg.TCPController-module.html
@@ -0,0 +1,213 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.TCPController</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        Module TCPController
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.TCPController-module.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== MODULE DESCRIPTION ==================== -->
+<h1 class="epydoc">Module TCPController</h1><span class="codelink"><a href="VisionEgg.TCPController-pysrc.html">source code</a></span><br /><br />
+<pre class="literalblock">
+
+Allows control of parameter values over the network.
+
+Don't use for realtime control unless you think your network is that
+fast and reliable. Also, this code has not been optimized for speed,
+and I think it is unwise to attempt to change the value of controllers
+in realtime.  In other words, do not design an experiment where, on a
+remote computer, you have determined that a certain amount of time has
+passed, and you require a certain new controller value NOW.  In this
+case, it would be better to use parameter=eval_str() with an if
+statement involving time.
+
+To control parameters over a network, start a server with an instance
+of TCPServer.  The server spawns an instance of SocketListenController
+for each connected socket.  (Most commonly you will only want
+connection over a single socket.)  The instance of
+SocketListenController handles all communication for that connection
+and serves as a container and (meta) controller for instances of
+TCPController.
+
+This module contains ABSOLUTELY NO SECURITY FEATURES, and could easily
+allow arbitrary execution of code on your computer. For this reason,
+if you use this module, I recommend operating behind a firewall. This
+could be an inexpensive "routing switch" used for cable modems, which
+would provide the added benefit that your local network would be
+isolated.  This would elimate all traffic not to or from computers on
+the switch and therefore reduce/eliminate packet collisions, decrease
+latency, and providing a network performance and reliability. To
+address security concerns, you could also write code that implements
+IP address checking or other security features.
+
+</pre><br /><br />
+
+<hr />
+<div class="fields">      <p><strong>Author:</strong>
+        Andrew Straw <astraw at users.sourceforge.net>
+      </p>
+</div><!-- ==================== CLASSES ==================== -->
+<a name="section-Classes"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Classes</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.TCPController.TCPServer-class.html" class="summary-name">TCPServer</a><br />
+      TCP server creates SocketListenController upon connection.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.TCPController.SocketListenController-class.html" class="summary-name">SocketListenController</a><br />
+      Handle connection from remote machine, control TCPControllers.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.TCPController.TCPController-class.html" class="summary-name">TCPController</a><br />
+      Control a parameter from a network (TCP) connection.
+    </td>
+  </tr>
+</table>
+<!-- ==================== VARIABLES ==================== -->
+<a name="section-Variables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Variables</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="__version__"></a><span class="summary-name">__version__</span> = <code title="VisionEgg.release_name">VisionEgg.release_name</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="__cvs__"></a><span class="summary-name">__cvs__</span> = <code title="'$Revision$'.split() [1]">'$Revision$'.split() [1]</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="__date__"></a><span class="summary-name">__date__</span> = <code title="' '.join('$Date$'.split() [1: 3])">' '.join('$Date$'.split() [1: 3])</code>
+    </td>
+  </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.TCPController-pysrc.html b/doc/reference/html/VisionEgg.TCPController-pysrc.html
new file mode 100644
index 0000000..59c3f72
--- /dev/null
+++ b/doc/reference/html/VisionEgg.TCPController-pysrc.html
@@ -0,0 +1,1610 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.TCPController</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        Module TCPController
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.TCPController-pysrc.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<h1 class="epydoc">Source Code for <a href="VisionEgg.TCPController-module.html">Module VisionEgg.TCPController</a></h1>
+<pre class="py-src">
+<a name="L1"></a><tt class="py-lineno">  1</tt>  <tt class="py-line"><tt class="py-comment"># The Vision Egg: TCPController</tt> </tt>
+<a name="L2"></a><tt class="py-lineno">  2</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L3"></a><tt class="py-lineno">  3</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Copyright (C) 2001-2003 Andrew Straw.</tt> </tt>
+<a name="L4"></a><tt class="py-lineno">  4</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Author: Andrew Straw <astraw at users.sourceforge.net></tt> </tt>
+<a name="L5"></a><tt class="py-lineno">  5</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># URL: <http://www.visionegg.org/></tt> </tt>
+<a name="L6"></a><tt class="py-lineno">  6</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L7"></a><tt class="py-lineno">  7</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Distributed under the terms of the GNU Lesser General Public License</tt> </tt>
+<a name="L8"></a><tt class="py-lineno">  8</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># (LGPL). See LICENSE.TXT that came with this file.</tt> </tt>
+<a name="L9"></a><tt class="py-lineno">  9</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L10"></a><tt class="py-lineno"> 10</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># $Id$</tt> </tt>
+<a name="L11"></a><tt class="py-lineno"> 11</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L12"></a><tt class="py-lineno"> 12</tt>  <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L13"></a><tt class="py-lineno"> 13</tt>  <tt class="py-line"><tt class="py-docstring">Allows control of parameter values over the network.</tt> </tt>
+<a name="L14"></a><tt class="py-lineno"> 14</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L15"></a><tt class="py-lineno"> 15</tt>  <tt class="py-line"><tt class="py-docstring">Don't use for realtime control unless you think your network is that</tt> </tt>
+<a name="L16"></a><tt class="py-lineno"> 16</tt>  <tt class="py-line"><tt class="py-docstring">fast and reliable. Also, this code has not been optimized for speed,</tt> </tt>
+<a name="L17"></a><tt class="py-lineno"> 17</tt>  <tt class="py-line"><tt class="py-docstring">and I think it is unwise to attempt to change the value of controllers</tt> </tt>
+<a name="L18"></a><tt class="py-lineno"> 18</tt>  <tt class="py-line"><tt class="py-docstring">in realtime.  In other words, do not design an experiment where, on a</tt> </tt>
+<a name="L19"></a><tt class="py-lineno"> 19</tt>  <tt class="py-line"><tt class="py-docstring">remote computer, you have determined that a certain amount of time has</tt> </tt>
+<a name="L20"></a><tt class="py-lineno"> 20</tt>  <tt class="py-line"><tt class="py-docstring">passed, and you require a certain new controller value NOW.  In this</tt> </tt>
+<a name="L21"></a><tt class="py-lineno"> 21</tt>  <tt class="py-line"><tt class="py-docstring">case, it would be better to use parameter=eval_str() with an if</tt> </tt>
+<a name="L22"></a><tt class="py-lineno"> 22</tt>  <tt class="py-line"><tt class="py-docstring">statement involving time.</tt> </tt>
+<a name="L23"></a><tt class="py-lineno"> 23</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L24"></a><tt class="py-lineno"> 24</tt>  <tt class="py-line"><tt class="py-docstring">To control parameters over a network, start a server with an instance</tt> </tt>
+<a name="L25"></a><tt class="py-lineno"> 25</tt>  <tt class="py-line"><tt class="py-docstring">of TCPServer.  The server spawns an instance of SocketListenController</tt> </tt>
+<a name="L26"></a><tt class="py-lineno"> 26</tt>  <tt class="py-line"><tt class="py-docstring">for each connected socket.  (Most commonly you will only want</tt> </tt>
+<a name="L27"></a><tt class="py-lineno"> 27</tt>  <tt class="py-line"><tt class="py-docstring">connection over a single socket.)  The instance of</tt> </tt>
+<a name="L28"></a><tt class="py-lineno"> 28</tt>  <tt class="py-line"><tt class="py-docstring">SocketListenController handles all communication for that connection</tt> </tt>
+<a name="L29"></a><tt class="py-lineno"> 29</tt>  <tt class="py-line"><tt class="py-docstring">and serves as a container and (meta) controller for instances of</tt> </tt>
+<a name="L30"></a><tt class="py-lineno"> 30</tt>  <tt class="py-line"><tt class="py-docstring">TCPController.</tt> </tt>
+<a name="L31"></a><tt class="py-lineno"> 31</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L32"></a><tt class="py-lineno"> 32</tt>  <tt class="py-line"><tt class="py-docstring">This module contains ABSOLUTELY NO SECURITY FEATURES, and could easily</tt> </tt>
+<a name="L33"></a><tt class="py-lineno"> 33</tt>  <tt class="py-line"><tt class="py-docstring">allow arbitrary execution of code on your computer. For this reason,</tt> </tt>
+<a name="L34"></a><tt class="py-lineno"> 34</tt>  <tt class="py-line"><tt class="py-docstring">if you use this module, I recommend operating behind a firewall. This</tt> </tt>
+<a name="L35"></a><tt class="py-lineno"> 35</tt>  <tt class="py-line"><tt class="py-docstring">could be an inexpensive "routing switch" used for cable modems, which</tt> </tt>
+<a name="L36"></a><tt class="py-lineno"> 36</tt>  <tt class="py-line"><tt class="py-docstring">would provide the added benefit that your local network would be</tt> </tt>
+<a name="L37"></a><tt class="py-lineno"> 37</tt>  <tt class="py-line"><tt class="py-docstring">isolated.  This would elimate all traffic not to or from computers on</tt> </tt>
+<a name="L38"></a><tt class="py-lineno"> 38</tt>  <tt class="py-line"><tt class="py-docstring">the switch and therefore reduce/eliminate packet collisions, decrease</tt> </tt>
+<a name="L39"></a><tt class="py-lineno"> 39</tt>  <tt class="py-line"><tt class="py-docstring">latency, and providing a network performance and reliability. To</tt> </tt>
+<a name="L40"></a><tt class="py-lineno"> 40</tt>  <tt class="py-line"><tt class="py-docstring">address security concerns, you could also write code that implements</tt> </tt>
+<a name="L41"></a><tt class="py-lineno"> 41</tt>  <tt class="py-line"><tt class="py-docstring">IP address checking or other security features.</tt> </tt>
+<a name="L42"></a><tt class="py-lineno"> 42</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L43"></a><tt class="py-lineno"> 43</tt>  <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L44"></a><tt class="py-lineno"> 44</tt>  <tt class="py-line"> </tt>
+<a name="L45"></a><tt class="py-lineno"> 45</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-0" class="py-name" targets="Package VisionEgg=VisionEgg-module.html"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-0', 'VisionEgg', 'link-0');">VisionEgg</a></tt> </tt>
+<a name="L46"></a><tt class="py-lineno"> 46</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-1" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-1', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-2" class="py-name" targets="Module VisionEgg.Core=VisionEgg.Core-module.html"><a title="VisionEgg.Core" class="py-name" href="#" onclick="return doclink('link-2', 'Core', 'link-2');">Core</a></tt> </tt>
+<a name="L47"></a><tt class="py-lineno"> 47</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-3" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-3', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-4" class="py-name" targets="Module VisionEgg.FlowControl=VisionEgg.FlowControl-module.html"><a title="VisionEgg.FlowControl" class="py-name" href="#" onclick="return doclink('link-4', 'FlowContro [...]
+<a name="L48"></a><tt class="py-lineno"> 48</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-5" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-5', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-6" class="py-name" targets="Module VisionEgg.ParameterTypes=VisionEgg.ParameterTypes-module.html"><a title="VisionEgg.ParameterTypes" class="py-name" href="#" onclick="return doclink('link-6', 'P [...]
+<a name="L49"></a><tt class="py-lineno"> 49</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">socket</tt><tt class="py-op">,</tt> <tt class="py-name">select</tt><tt class="py-op">,</tt> <tt class="py-name">re</tt><tt class="py-op">,</tt> <tt class="py-name">string</tt><tt class="py-op">,</tt> <tt class="py-name">types</tt> </tt>
+<a name="L50"></a><tt class="py-lineno"> 50</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">numpy</tt><tt class="py-op">.</tt><tt class="py-name">oldnumeric</tt> <tt class="py-keyword">as</tt> <tt class="py-name">Numeric</tt><tt class="py-op">,</tt> <tt class="py-name">math</tt> <tt class="py-comment"># for eval</tt> </tt>
+<a name="L51"></a><tt class="py-lineno"> 51</tt>  <tt class="py-line"> </tt>
+<a name="L52"></a><tt class="py-lineno"> 52</tt>  <tt class="py-line"><tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L53"></a><tt class="py-lineno"> 53</tt>  <tt class="py-line">    <tt class="py-keyword">import</tt> <tt id="link-7" class="py-name" targets="Variable VisionEgg.GUI.Tkinter=VisionEgg.GUI-module.html#Tkinter"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-7', 'Tkinter', 'link-7');">Tkinter</a></tt> </tt>
+<a name="L54"></a><tt class="py-lineno"> 54</tt>  <tt class="py-line"><tt class="py-keyword">except</tt><tt class="py-op">:</tt> </tt>
+<a name="L55"></a><tt class="py-lineno"> 55</tt>  <tt class="py-line">    <tt class="py-keyword">pass</tt> </tt>
+<a name="L56"></a><tt class="py-lineno"> 56</tt>  <tt class="py-line"> </tt>
+<a name="L57"></a><tt class="py-lineno"> 57</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">logging</tt> </tt>
+<a name="L58"></a><tt class="py-lineno"> 58</tt>  <tt class="py-line"> </tt>
+<a name="L59"></a><tt class="py-lineno"> 59</tt>  <tt class="py-line"><tt id="link-8" class="py-name" targets="Variable VisionEgg.DaqKeyboard.__version__=VisionEgg.DaqKeyboard-module.html#__version__,Variable VisionEgg.DaqLPT.__version__=VisionEgg.DaqLPT-module.html#__version__,Variable VisionEgg.GL.__version__=VisionEgg.GL-module.html#__version__,Variable VisionEgg.PyroApps.EPhysGUI.__version__=VisionEgg.PyroApps.EPhysGUI-module.html#__version__,Variable VisionEgg.PyroApps.EPhysGUIUtils [...]
+VisionEgg.DaqLPT.__version__
+VisionEgg.GL.__version__
+VisionEgg.PyroApps.EPhysGUI.__version__
+VisionEgg.PyroApps.EPhysGUIUtils.__version__
+VisionEgg.PyroApps.EPhysServer.__version__
+VisionEgg.PyroApps.GridGUI.__version__
+VisionEgg.PyroApps.GridServer.__version__
+VisionEgg.PyroApps.ScreenPositionGUI.__version__
+VisionEgg.PyroApps.ScreenPositionServer.__version__
+VisionEgg.PyroApps.SpinningDrumGUI.__version__
+VisionEgg.PyroApps.SpinningDrumServer.__version__
+VisionEgg.PyroHelpers.__version__
+VisionEgg.QuickTime.__version__
+VisionEgg.ResponseControl.__version__
+VisionEgg.SphereMap.__version__
+VisionEgg.TCPController.__version__" class="py-name" href="#" onclick="return doclink('link-8', '__version__', 'link-8');">__version__</a></tt> <tt class="py-op">=</tt> <tt id="link-9" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-9', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-10" class="py-name" targets="Variable VisionEgg.release_name=VisionEgg-module.html#release_name"><a title="VisionEgg.release_name"  [...]
+<a name="L60"></a><tt class="py-lineno"> 60</tt>  <tt class="py-line"><tt id="link-11" class="py-name" targets="Variable VisionEgg.PyroApps.ColorCalGUI.__cvs__=VisionEgg.PyroApps.ColorCalGUI-module.html#__cvs__,Variable VisionEgg.PyroApps.ColorCalServer.__cvs__=VisionEgg.PyroApps.ColorCalServer-module.html#__cvs__,Variable VisionEgg.PyroApps.EPhysGUI.__cvs__=VisionEgg.PyroApps.EPhysGUI-module.html#__cvs__,Variable VisionEgg.PyroApps.EPhysGUIUtils.__cvs__=VisionEgg.PyroApps.EPhysGUIUtils- [...]
+VisionEgg.PyroApps.ColorCalServer.__cvs__
+VisionEgg.PyroApps.EPhysGUI.__cvs__
+VisionEgg.PyroApps.EPhysGUIUtils.__cvs__
+VisionEgg.PyroApps.EPhysServer.__cvs__
+VisionEgg.PyroApps.FlatGratingGUI.__cvs__
+VisionEgg.PyroApps.FlatGratingServer.__cvs__
+VisionEgg.PyroApps.GridGUI.__cvs__
+VisionEgg.PyroApps.GridServer.__cvs__
+VisionEgg.PyroApps.MouseTargetGUI.__cvs__
+VisionEgg.PyroApps.MouseTargetServer.__cvs__
+VisionEgg.PyroApps.ScreenPositionGUI.__cvs__
+VisionEgg.PyroApps.ScreenPositionServer.__cvs__
+VisionEgg.PyroApps.SphereGratingGUI.__cvs__
+VisionEgg.PyroApps.SphereGratingServer.__cvs__
+VisionEgg.PyroApps.SpinningDrumGUI.__cvs__
+VisionEgg.PyroApps.SpinningDrumServer.__cvs__
+VisionEgg.PyroApps.TargetGUI.__cvs__
+VisionEgg.PyroApps.TargetServer.__cvs__
+VisionEgg.PyroClient.__cvs__
+VisionEgg.PyroHelpers.__cvs__
+VisionEgg.TCPController.__cvs__" class="py-name" href="#" onclick="return doclink('link-11', '__cvs__', 'link-11');">__cvs__</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'$Revision$'</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
+<a name="L61"></a><tt class="py-lineno"> 61</tt>  <tt class="py-line"><tt id="link-12" class="py-name" targets="Variable VisionEgg.PyroApps.ColorCalGUI.__date__=VisionEgg.PyroApps.ColorCalGUI-module.html#__date__,Variable VisionEgg.PyroApps.ColorCalServer.__date__=VisionEgg.PyroApps.ColorCalServer-module.html#__date__,Variable VisionEgg.PyroApps.EPhysGUI.__date__=VisionEgg.PyroApps.EPhysGUI-module.html#__date__,Variable VisionEgg.PyroApps.EPhysGUIUtils.__date__=VisionEgg.PyroApps.EPhysGU [...]
+VisionEgg.PyroApps.ColorCalServer.__date__
+VisionEgg.PyroApps.EPhysGUI.__date__
+VisionEgg.PyroApps.EPhysGUIUtils.__date__
+VisionEgg.PyroApps.EPhysServer.__date__
+VisionEgg.PyroApps.FlatGratingGUI.__date__
+VisionEgg.PyroApps.FlatGratingServer.__date__
+VisionEgg.PyroApps.GridGUI.__date__
+VisionEgg.PyroApps.GridServer.__date__
+VisionEgg.PyroApps.MouseTargetGUI.__date__
+VisionEgg.PyroApps.MouseTargetServer.__date__
+VisionEgg.PyroApps.ScreenPositionGUI.__date__
+VisionEgg.PyroApps.ScreenPositionServer.__date__
+VisionEgg.PyroApps.SphereGratingGUI.__date__
+VisionEgg.PyroApps.SphereGratingServer.__date__
+VisionEgg.PyroApps.SpinningDrumGUI.__date__
+VisionEgg.PyroApps.SpinningDrumServer.__date__
+VisionEgg.PyroApps.TargetGUI.__date__
+VisionEgg.PyroApps.TargetServer.__date__
+VisionEgg.PyroClient.__date__
+VisionEgg.PyroHelpers.__date__
+VisionEgg.TCPController.__date__" class="py-name" href="#" onclick="return doclink('link-12', '__date__', 'link-12');">__date__</a></tt> <tt class="py-op">=</tt> <tt class="py-string">' '</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-string">'$Date$'</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">:</tt><tt class= [...]
+<a name="L62"></a><tt class="py-lineno"> 62</tt>  <tt class="py-line"><tt id="link-13" class="py-name" targets="Variable VisionEgg.PyroApps.EPhysGUI.__author__=VisionEgg.PyroApps.EPhysGUI-module.html#__author__,Variable VisionEgg.PyroApps.EPhysGUIUtils.__author__=VisionEgg.PyroApps.EPhysGUIUtils-module.html#__author__,Variable VisionEgg.PyroApps.EPhysServer.__author__=VisionEgg.PyroApps.EPhysServer-module.html#__author__,Variable VisionEgg.PyroApps.GridGUI.__author__=VisionEgg.PyroApps.G [...]
+VisionEgg.PyroApps.EPhysGUIUtils.__author__
+VisionEgg.PyroApps.EPhysServer.__author__
+VisionEgg.PyroApps.GridGUI.__author__
+VisionEgg.PyroApps.GridServer.__author__
+VisionEgg.PyroApps.SpinningDrumGUI.__author__
+VisionEgg.PyroApps.SpinningDrumServer.__author__" class="py-name" href="#" onclick="return doclink('link-13', '__author__', 'link-13');">__author__</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'Andrew Straw <astraw at users.sourceforge.net>'</tt> </tt>
+<a name="L63"></a><tt class="py-lineno"> 63</tt>  <tt class="py-line"> </tt>
+<a name="TCPServer"></a><div id="TCPServer-def"><a name="L64"></a><tt class="py-lineno"> 64</tt> <a class="py-toggle" href="#" id="TCPServer-toggle" onclick="return toggle('TCPServer');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.TCPController.TCPServer-class.html">TCPServer</a><tt class="py-op">:</tt> </tt>
+</div><div id="TCPServer-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="TCPServer-expanded"><a name="L65"></a><tt class="py-lineno"> 65</tt>  <tt class="py-line">    <tt class="py-docstring">"""TCP server creates SocketListenController upon connection.</tt> </tt>
+<a name="L66"></a><tt class="py-lineno"> 66</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L67"></a><tt class="py-lineno"> 67</tt>  <tt class="py-line"><tt class="py-docstring">    This class is analagous to VisionEgg.PyroHelpers.PyroServer.</tt> </tt>
+<a name="L68"></a><tt class="py-lineno"> 68</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L69"></a><tt class="py-lineno"> 69</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="TCPServer.__init__"></a><div id="TCPServer.__init__-def"><a name="L70"></a><tt class="py-lineno"> 70</tt> <a class="py-toggle" href="#" id="TCPServer.__init__-toggle" onclick="return toggle('TCPServer.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.TCPController.TCPServer-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> </tt>
+<a name="L71"></a><tt class="py-lineno"> 71</tt>  <tt class="py-line">                 <tt class="py-param">hostname</tt><tt class="py-op">=</tt><tt class="py-string">""</tt><tt class="py-op">,</tt> </tt>
+<a name="L72"></a><tt class="py-lineno"> 72</tt>  <tt class="py-line">                 <tt class="py-param">port</tt><tt class="py-op">=</tt><tt class="py-number">7834</tt><tt class="py-op">,</tt> </tt>
+<a name="L73"></a><tt class="py-lineno"> 73</tt>  <tt class="py-line">                 <tt class="py-param">single_socket_but_reconnect_ok</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> </tt>
+<a name="L74"></a><tt class="py-lineno"> 74</tt>  <tt class="py-line">                 <tt class="py-param">dialog_ok</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py-op">,</tt> </tt>
+<a name="L75"></a><tt class="py-lineno"> 75</tt>  <tt class="py-line">                 <tt class="py-param">confirm_address_with_gui</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="TCPServer.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="TCPServer.__init__-expanded"><a name="L76"></a><tt class="py-lineno"> 76</tt>  <tt class="py-line">        <tt class="py-docstring">"""Bind to hostname and port, but don't listen yet.</tt> </tt>
+<a name="L77"></a><tt class="py-lineno"> 77</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L78"></a><tt class="py-lineno"> 78</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L79"></a><tt class="py-lineno"> 79</tt>  <tt class="py-line">        <tt class="py-name">server_address</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">socket</tt><tt class="py-op">.</tt><tt class="py-name">getfqdn</tt><tt class="py-op">(</tt><tt class="py-name">hostname</tt><tt class="py-op">)</tt><tt class="py-op">,</tt><tt class="py-name">port</tt><tt class="py-op">)</tt> </tt>
+<a name="L80"></a><tt class="py-lineno"> 80</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">dialog_ok</tt> <tt class="py-op">=</tt> <tt class="py-name">dialog_ok</tt> </tt>
+<a name="L81"></a><tt class="py-lineno"> 81</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">single_socket_but_reconnect_ok</tt> <tt class="py-op">=</tt> <tt class="py-name">single_socket_but_reconnect_ok</tt> </tt>
+<a name="L82"></a><tt class="py-lineno"> 82</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">buffer</tt> <tt class="py-op">=</tt> <tt class="py-string">""</tt> </tt>
+<a name="L83"></a><tt class="py-lineno"> 83</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">server_socket</tt><tt class="py-op">=</tt><tt class="py-name">None</tt> </tt>
+<a name="L84"></a><tt class="py-lineno"> 84</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">globals</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">has_key</tt><tt class="py-op">(</tt><tt class="py-string">"Tkinter"</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-op">(</tt><tt id="link-14" class="py-name"><a title="VisionEgg" class="py-name" href= [...]
+<a name="L85"></a><tt class="py-lineno"> 85</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">dialog_ok</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L86"></a><tt class="py-lineno"> 86</tt>  <tt class="py-line"> </tt>
+<a name="L87"></a><tt class="py-lineno"> 87</tt>  <tt class="py-line">        <tt class="py-keyword">class</tt> <tt class="py-def-name">GetServerAddressWindow</tt><tt class="py-op">(</tt><tt class="py-base-class">Tkinter</tt><tt class="py-op">.</tt><tt class="py-base-class">Frame</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L88"></a><tt class="py-lineno"> 88</tt>  <tt class="py-line">            <tt class="py-keyword">def</tt> <tt class="py-def-name">__init__</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt><tt class="py-param">server_address</tt><tt class="py-op">,</tt><tt class="py-op">**</tt><tt class="py-param">kw</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L89"></a><tt class="py-lineno"> 89</tt>  <tt class="py-line">                <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L90"></a><tt class="py-lineno"> 90</tt>  <tt class="py-line">                    <tt id="link-16" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-16', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Frame</tt><tt class="py-op">.</tt><tt id="link-17" class="py-name" targets="Method VisionEgg.ClassWithParameters.__init__()=VisionEgg.ClassWithParameters-class.html#__init__,Method VisionEgg.Co [...]
+VisionEgg.Configuration.Config.__init__
+VisionEgg.Core.FixationSpot.__init__
+VisionEgg.Core.FrameTimer.__init__
+VisionEgg.Core.ModelView.__init__
+VisionEgg.Core.OrthographicProjection.__init__
+VisionEgg.Core.OrthographicProjectionNoZClip.__init__
+VisionEgg.Core.PerspectiveProjection.__init__
+VisionEgg.Core.Projection.__init__
+VisionEgg.Core.ProjectionBaseClass.__init__
+VisionEgg.Core.Screen.__init__
+VisionEgg.Core.SimplePerspectiveProjection.__init__
+VisionEgg.Core.Stimulus.__init__
+VisionEgg.Core.Viewport.__init__
+VisionEgg.Daq.Channel.__init__
+VisionEgg.Daq.DaqMode.__init__
+VisionEgg.Daq.Device.__init__
+VisionEgg.Daq.Functionality.__init__
+VisionEgg.Daq.SignalType.__init__
+VisionEgg.DaqKeyboard.KeyboardTriggerInController.__init__
+VisionEgg.DaqLPT.LPTChannel.__init__
+VisionEgg.DaqLPT.LPTDevice.__init__
+VisionEgg.DaqLPT.LPTTriggerInController.__init__
+VisionEgg.DaqLPT.LPTTriggerOutController.__init__
+VisionEgg.Deprecated.Message.__init__
+VisionEgg.Dots.DotArea2D.__init__
+VisionEgg.FlowControl.ConstantController.__init__
+VisionEgg.FlowControl.Controller.__init__
+VisionEgg.FlowControl.EncapsulatedController.__init__
+VisionEgg.FlowControl.EvalStringController.__init__
+VisionEgg.FlowControl.ExecStringController.__init__
+VisionEgg.FlowControl.FunctionController.__init__
+VisionEgg.FlowControl.Presentation.__init__
+VisionEgg.GLTrace.Wrapper.__init__
+VisionEgg.GUI.AppWindow.__init__
+VisionEgg.GUI.GetKeypressDialog.__init__
+VisionEgg.GUI.GraphicsConfigurationWindow.__init__
+VisionEgg.GUI.InfoFrame.__init__
+VisionEgg.GUI.ProgressBar.__init__
+VisionEgg.GUI.ToplevelDialog.__init__
+VisionEgg.Gratings.SinGrating2D.__init__
+VisionEgg.Gratings.SinGrating3D.__init__
+VisionEgg.MoreStimuli.Arrow.__init__
+VisionEgg.MoreStimuli.FilledCircle.__init__
+VisionEgg.MoreStimuli.Rectangle3D.__init__
+VisionEgg.MoreStimuli.Target2D.__init__
+VisionEgg.ParameterTypes.AnyOf.__init__
+VisionEgg.ParameterTypes.Instance.__init__
+VisionEgg.ParameterTypes.Sequence.__init__
+VisionEgg.ParameterTypes.SubClass.__init__
+VisionEgg.PyroApps.AST_ext.AST_Visitor.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalMetaParameters.__init__
+VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.__init__
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.__init__
+VisionEgg.PyroApps.DropinGUI.DropinMetaParameters.__init__
+VisionEgg.PyroApps.DropinServer.DropinMetaController.__init__
+VisionEgg.PyroApps.EPhysGUI.AppWindow.__init__
+VisionEgg.PyroApps.EPhysGUI.BarButton.__init__
+VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase.__init__
+VisionEgg.PyroApps.EPhysGUI.GammaFrame.__init__
+VisionEgg.PyroApps.EPhysGUI.ImageSequenceLauncher.__init__
+VisionEgg.PyroApps.EPhysGUI.Loop.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopContainedObject.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopParamDialog.__init__
+VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.__init__
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.__init__
+VisionEgg.PyroApps.EPhysServer.EPhysServer.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingMetaParameters.__init__
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.GridGUI.GridControlFrame.__init__
+VisionEgg.PyroApps.GridGUI.GridMetaParameters.__init__
+VisionEgg.PyroApps.GridServer.GridMetaController.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetMetaParameters.__init__
+VisionEgg.PyroApps.MouseTargetServer.MousePositionController.__init__
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetOrientationController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetPositionController.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.CallbackEntry.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionParameters.__init__
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingMetaParameters.__init__
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumMetaParameters.__init__
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.__init__
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.__init__
+VisionEgg.PyroApps.TargetGUI.TargetMetaParameters.__init__
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.__init__
+VisionEgg.PyroClient.PyroClient.__init__
+VisionEgg.PyroHelpers.PyroConstantController.__init__
+VisionEgg.PyroHelpers.PyroEncapsulatedController.__init__
+VisionEgg.PyroHelpers.PyroEvalStringController.__init__
+VisionEgg.PyroHelpers.PyroExecStringController.__init__
+VisionEgg.PyroHelpers.PyroListenController.__init__
+VisionEgg.PyroHelpers.PyroLocalDictController.__init__
+VisionEgg.PyroHelpers.PyroServer.__init__
+VisionEgg.QuickTime.MovieTexture.__init__
+VisionEgg.ResponseControl.KeyboardResponseController.__init__
+VisionEgg.ResponseControl.ResponseController.__init__
+VisionEgg.SphereMap.AzElGrid.__init__
+VisionEgg.SphereMap.SphereGrating.__init__
+VisionEgg.SphereMap.SphereMap.__init__
+VisionEgg.SphereMap.SphereWindow.__init__
+VisionEgg.TCPController.SocketListenController.__init__
+VisionEgg.TCPController.TCPController.__init__
+VisionEgg.TCPController.TCPServer.__init__
+VisionEgg.Text.BitmapText.__init__
+VisionEgg.Text.GlutTextBase.__init__
+VisionEgg.Text.StrokeText.__init__
+VisionEgg.Text.Text.__init__
+VisionEgg.Textures.FixationCross.__init__
+VisionEgg.Textures.Mask2D.__init__
+VisionEgg.Textures.SpinningDrum.__init__
+VisionEgg.Textures.Texture.__init__
+VisionEgg.Textures.TextureFromFile.__init__
+VisionEgg.Textures.TextureObject.__init__
+VisionEgg.Textures.TextureStimulusBaseClass.__init__
+VisionEgg.ThreeDeeMath.TransformMatrix.__init__
+VisionEgg.WrappedText.WrappedText.__init__
+VisionEgg.qtmovie.Movie.__init__
+VisionEgg.qtmovie.Rect.__init__" class="py-name" href="#" onclick="return doclink('link-17', '__init__', 'link-17');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt><tt class="py-op">**</tt><tt class="py-name">kw</tt><tt class="py-op">)</tt> </tt>
+<a name="L91"></a><tt class="py-lineno"> 91</tt>  <tt class="py-line">                <tt class="py-keyword">except</tt> <tt class="py-name">AttributeError</tt><tt class="py-op">,</tt><tt class="py-name">x</tt><tt class="py-op">:</tt> </tt>
+<a name="L92"></a><tt class="py-lineno"> 92</tt>  <tt class="py-line">                    <tt class="py-name">tk</tt><tt class="py-op">=</tt><tt id="link-18" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-18', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Tk</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-comment"># restart Tk and see if that helps</tt> </tt>
+<a name="L93"></a><tt class="py-lineno"> 93</tt>  <tt class="py-line">                    <tt id="link-19" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-19', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Frame</tt><tt class="py-op">.</tt><tt id="link-20" class="py-name"><a title="VisionEgg.ClassWithParameters.__init__
+VisionEgg.Configuration.Config.__init__
+VisionEgg.Core.FixationSpot.__init__
+VisionEgg.Core.FrameTimer.__init__
+VisionEgg.Core.ModelView.__init__
+VisionEgg.Core.OrthographicProjection.__init__
+VisionEgg.Core.OrthographicProjectionNoZClip.__init__
+VisionEgg.Core.PerspectiveProjection.__init__
+VisionEgg.Core.Projection.__init__
+VisionEgg.Core.ProjectionBaseClass.__init__
+VisionEgg.Core.Screen.__init__
+VisionEgg.Core.SimplePerspectiveProjection.__init__
+VisionEgg.Core.Stimulus.__init__
+VisionEgg.Core.Viewport.__init__
+VisionEgg.Daq.Channel.__init__
+VisionEgg.Daq.DaqMode.__init__
+VisionEgg.Daq.Device.__init__
+VisionEgg.Daq.Functionality.__init__
+VisionEgg.Daq.SignalType.__init__
+VisionEgg.DaqKeyboard.KeyboardTriggerInController.__init__
+VisionEgg.DaqLPT.LPTChannel.__init__
+VisionEgg.DaqLPT.LPTDevice.__init__
+VisionEgg.DaqLPT.LPTTriggerInController.__init__
+VisionEgg.DaqLPT.LPTTriggerOutController.__init__
+VisionEgg.Deprecated.Message.__init__
+VisionEgg.Dots.DotArea2D.__init__
+VisionEgg.FlowControl.ConstantController.__init__
+VisionEgg.FlowControl.Controller.__init__
+VisionEgg.FlowControl.EncapsulatedController.__init__
+VisionEgg.FlowControl.EvalStringController.__init__
+VisionEgg.FlowControl.ExecStringController.__init__
+VisionEgg.FlowControl.FunctionController.__init__
+VisionEgg.FlowControl.Presentation.__init__
+VisionEgg.GLTrace.Wrapper.__init__
+VisionEgg.GUI.AppWindow.__init__
+VisionEgg.GUI.GetKeypressDialog.__init__
+VisionEgg.GUI.GraphicsConfigurationWindow.__init__
+VisionEgg.GUI.InfoFrame.__init__
+VisionEgg.GUI.ProgressBar.__init__
+VisionEgg.GUI.ToplevelDialog.__init__
+VisionEgg.Gratings.SinGrating2D.__init__
+VisionEgg.Gratings.SinGrating3D.__init__
+VisionEgg.MoreStimuli.Arrow.__init__
+VisionEgg.MoreStimuli.FilledCircle.__init__
+VisionEgg.MoreStimuli.Rectangle3D.__init__
+VisionEgg.MoreStimuli.Target2D.__init__
+VisionEgg.ParameterTypes.AnyOf.__init__
+VisionEgg.ParameterTypes.Instance.__init__
+VisionEgg.ParameterTypes.Sequence.__init__
+VisionEgg.ParameterTypes.SubClass.__init__
+VisionEgg.PyroApps.AST_ext.AST_Visitor.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalMetaParameters.__init__
+VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.__init__
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.__init__
+VisionEgg.PyroApps.DropinGUI.DropinMetaParameters.__init__
+VisionEgg.PyroApps.DropinServer.DropinMetaController.__init__
+VisionEgg.PyroApps.EPhysGUI.AppWindow.__init__
+VisionEgg.PyroApps.EPhysGUI.BarButton.__init__
+VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase.__init__
+VisionEgg.PyroApps.EPhysGUI.GammaFrame.__init__
+VisionEgg.PyroApps.EPhysGUI.ImageSequenceLauncher.__init__
+VisionEgg.PyroApps.EPhysGUI.Loop.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopContainedObject.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopParamDialog.__init__
+VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.__init__
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.__init__
+VisionEgg.PyroApps.EPhysServer.EPhysServer.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingMetaParameters.__init__
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.GridGUI.GridControlFrame.__init__
+VisionEgg.PyroApps.GridGUI.GridMetaParameters.__init__
+VisionEgg.PyroApps.GridServer.GridMetaController.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetMetaParameters.__init__
+VisionEgg.PyroApps.MouseTargetServer.MousePositionController.__init__
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetOrientationController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetPositionController.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.CallbackEntry.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionParameters.__init__
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingMetaParameters.__init__
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumMetaParameters.__init__
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.__init__
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.__init__
+VisionEgg.PyroApps.TargetGUI.TargetMetaParameters.__init__
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.__init__
+VisionEgg.PyroClient.PyroClient.__init__
+VisionEgg.PyroHelpers.PyroConstantController.__init__
+VisionEgg.PyroHelpers.PyroEncapsulatedController.__init__
+VisionEgg.PyroHelpers.PyroEvalStringController.__init__
+VisionEgg.PyroHelpers.PyroExecStringController.__init__
+VisionEgg.PyroHelpers.PyroListenController.__init__
+VisionEgg.PyroHelpers.PyroLocalDictController.__init__
+VisionEgg.PyroHelpers.PyroServer.__init__
+VisionEgg.QuickTime.MovieTexture.__init__
+VisionEgg.ResponseControl.KeyboardResponseController.__init__
+VisionEgg.ResponseControl.ResponseController.__init__
+VisionEgg.SphereMap.AzElGrid.__init__
+VisionEgg.SphereMap.SphereGrating.__init__
+VisionEgg.SphereMap.SphereMap.__init__
+VisionEgg.SphereMap.SphereWindow.__init__
+VisionEgg.TCPController.SocketListenController.__init__
+VisionEgg.TCPController.TCPController.__init__
+VisionEgg.TCPController.TCPServer.__init__
+VisionEgg.Text.BitmapText.__init__
+VisionEgg.Text.GlutTextBase.__init__
+VisionEgg.Text.StrokeText.__init__
+VisionEgg.Text.Text.__init__
+VisionEgg.Textures.FixationCross.__init__
+VisionEgg.Textures.Mask2D.__init__
+VisionEgg.Textures.SpinningDrum.__init__
+VisionEgg.Textures.Texture.__init__
+VisionEgg.Textures.TextureFromFile.__init__
+VisionEgg.Textures.TextureObject.__init__
+VisionEgg.Textures.TextureStimulusBaseClass.__init__
+VisionEgg.ThreeDeeMath.TransformMatrix.__init__
+VisionEgg.WrappedText.WrappedText.__init__
+VisionEgg.qtmovie.Movie.__init__
+VisionEgg.qtmovie.Rect.__init__" class="py-name" href="#" onclick="return doclink('link-20', '__init__', 'link-17');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt><tt class="py-name">tk</tt><tt class="py-op">,</tt><tt class="py-op">**</tt><tt class="py-name">kw</tt><tt class="py-op">)</tt> </tt>
+<a name="L94"></a><tt class="py-lineno"> 94</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">winfo_toplevel</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-21" class="py-name" targets="Variable VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.title=VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame-class.html#title,Variable VisionEgg.PyroApps.DropinGUI.DropinControlFrame.title=V [...]
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.title
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.title
+VisionEgg.PyroApps.GridGUI.GridControlFrame.title
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.title
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.title
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.title
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.title" class="py-name" href="#" onclick="return doclink('link-21', 'title', 'link-21');">title</a></tt><tt class="py-op">(</tt><tt class="py-string">"Vision Egg: TCP Server get address"</tt><tt class="py-op">)</tt> </tt>
+<a name="L95"></a><tt class="py-lineno"> 95</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">server_address</tt> <tt class="py-op">=</tt> <tt class="py-name">server_address</tt> </tt>
+<a name="L96"></a><tt class="py-lineno"> 96</tt>  <tt class="py-line">                <tt class="py-name">hostname</tt><tt class="py-op">,</tt><tt class="py-name">port</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">server_address</tt> </tt>
+<a name="L97"></a><tt class="py-lineno"> 97</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">clicked_ok</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L98"></a><tt class="py-lineno"> 98</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">hostname</tt> <tt class="py-op">=</tt> <tt id="link-22" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-22', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">StringVar</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L99"></a><tt class="py-lineno"> 99</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">hostname</tt><tt class="py-op">.</tt><tt id="link-23" class="py-name" targets="Method VisionEgg.ClassWithParameters.set()=VisionEgg.ClassWithParameters-class.html#set"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-23', 'set', 'link-23');">set</a></tt><tt class="py-op">(</tt><tt  [...]
+<a name="L100"></a><tt class="py-lineno">100</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">port</tt> <tt class="py-op">=</tt> <tt id="link-24" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-24', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">StringVar</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L101"></a><tt class="py-lineno">101</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">port</tt><tt class="py-op">.</tt><tt id="link-25" class="py-name"><a title="VisionEgg.ClassWithParameters.set" class="py-name" href="#" onclick="return doclink('link-25', 'set', 'link-23');">set</a></tt><tt class="py-op">(</tt><tt class="py-name">port</tt><tt class="py-op">)</tt> </tt>
+<a name="L102"></a><tt class="py-lineno">102</tt>  <tt class="py-line">                <tt class="py-name">row</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L103"></a><tt class="py-lineno">103</tt>  <tt class="py-line">                <tt id="link-26" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-26', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> </tt>
+<a name="L104"></a><tt class="py-lineno">104</tt>  <tt class="py-line">                              <tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Please enter the hostname and port you would like to listen for connections on."</tt><tt class="py-op">,</tt> </tt>
+<a name="L105"></a><tt class="py-lineno">105</tt>  <tt class="py-line">                              <tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-name">row</tt><tt class="py-op">,</tt><tt class="py-name">columnspan</tt><tt class="py-op">=</tt><tt class="py-number">2</tt><tt class="py-op">)</tt> </tt>
+<a name="L106"></a><tt class="py-lineno">106</tt>  <tt class="py-line">                <tt class="py-name">row</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L107"></a><tt class="py-lineno">107</tt>  <tt class="py-line">                <tt id="link-27" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-27', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> </tt>
+<a name="L108"></a><tt class="py-lineno">108</tt>  <tt class="py-line">                              <tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Hostname (blank means localhost):"</tt><tt class="py-op">,</tt> </tt>
+<a name="L109"></a><tt class="py-lineno">109</tt>  <tt class="py-line">                              <tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-name">row</tt><tt class="py-op">,</tt><tt class="py-name">column</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">,</tt><tt class="py-name">sticky</tt><tt class="py-op">=</tt><tt id="link-28" class=" [...]
+<a name="L110"></a><tt class="py-lineno">110</tt>  <tt class="py-line">                <tt id="link-29" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-29', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Entry</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt><tt class="py-name">textvariable</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">. [...]
+<a name="L111"></a><tt class="py-lineno">111</tt>  <tt class="py-line">                <tt class="py-name">row</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L112"></a><tt class="py-lineno">112</tt>  <tt class="py-line">                <tt id="link-32" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-32', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> </tt>
+<a name="L113"></a><tt class="py-lineno">113</tt>  <tt class="py-line">                              <tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Port:"</tt><tt class="py-op">,</tt> </tt>
+<a name="L114"></a><tt class="py-lineno">114</tt>  <tt class="py-line">                              <tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-name">row</tt><tt class="py-op">,</tt><tt class="py-name">column</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">,</tt><tt class="py-name">sticky</tt><tt class="py-op">=</tt><tt id="link-33" class=" [...]
+<a name="L115"></a><tt class="py-lineno">115</tt>  <tt class="py-line">                <tt id="link-34" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-34', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Entry</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt><tt class="py-name">textvariable</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">. [...]
+<a name="L116"></a><tt class="py-lineno">116</tt>  <tt class="py-line">                <tt class="py-name">row</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L117"></a><tt class="py-lineno">117</tt>  <tt class="py-line">                <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-37" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-37', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Button</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> </tt>
+<a name="L118"></a><tt class="py-lineno">118</tt>  <tt class="py-line">                                   <tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-string">"Bind port and listen for connections"</tt><tt class="py-op">,</tt> </tt>
+<a name="L119"></a><tt class="py-lineno">119</tt>  <tt class="py-line">                                   <tt class="py-name">command</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">click_ok</tt><tt class="py-op">)</tt> </tt>
+<a name="L120"></a><tt class="py-lineno">120</tt>  <tt class="py-line">                <tt class="py-name">b</tt><tt class="py-op">.</tt><tt class="py-name">grid</tt><tt class="py-op">(</tt><tt class="py-name">row</tt><tt class="py-op">=</tt><tt class="py-name">row</tt><tt class="py-op">,</tt><tt class="py-name">columnspan</tt><tt class="py-op">=</tt><tt class="py-number">2</tt><tt class="py-op">)</tt> </tt>
+<a name="L121"></a><tt class="py-lineno">121</tt>  <tt class="py-line">                <tt class="py-name">b</tt><tt class="py-op">.</tt><tt class="py-name">focus_force</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L122"></a><tt class="py-lineno">122</tt>  <tt class="py-line">                <tt class="py-name">b</tt><tt class="py-op">.</tt><tt class="py-name">bind</tt><tt class="py-op">(</tt><tt class="py-string">'<Return>'</tt><tt class="py-op">,</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">click_ok</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L123"></a><tt class="py-lineno">123</tt>  <tt class="py-line">            <tt class="py-keyword">def</tt> <tt class="py-def-name">click_ok</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt><tt class="py-param">dummy_arg</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L124"></a><tt class="py-lineno">124</tt>  <tt class="py-line">                <tt class="py-name">hostname</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">hostname</tt><tt class="py-op">.</tt><tt id="link-38" class="py-name" targets="Method VisionEgg.PyroClient.PyroClient.get()=VisionEgg.PyroClient.PyroClient-class.html#get"><a title="VisionEgg.PyroClient.PyroClient.get" class="py-name" href="#" onclick="return doclink('link [...]
+<a name="L125"></a><tt class="py-lineno">125</tt>  <tt class="py-line">                <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L126"></a><tt class="py-lineno">126</tt>  <tt class="py-line">                    <tt class="py-name">port</tt> <tt class="py-op">=</tt> <tt id="link-39" class="py-name" targets="Class int=int-class.html"><a title="int" class="py-name" href="#" onclick="return doclink('link-39', 'int', 'link-39');">int</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">port</tt><tt class="py-op">.</tt><tt id="link-40" class="py-name"><a title [...]
+<a name="L127"></a><tt class="py-lineno">127</tt>  <tt class="py-line">                <tt class="py-keyword">except</tt><tt class="py-op">:</tt> </tt>
+<a name="L128"></a><tt class="py-lineno">128</tt>  <tt class="py-line">                    <tt class="py-name">port</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">port</tt><tt class="py-op">.</tt><tt id="link-41" class="py-name"><a title="VisionEgg.PyroClient.PyroClient.get" class="py-name" href="#" onclick="return doclink('link-41', 'get', 'link-38');">get</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L129"></a><tt class="py-lineno">129</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">server_address</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">hostname</tt><tt class="py-op">,</tt><tt class="py-name">port</tt><tt class="py-op">)</tt> </tt>
+<a name="L130"></a><tt class="py-lineno">130</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">clicked_ok</tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L131"></a><tt class="py-lineno">131</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">winfo_toplevel</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-42" class="py-name" targets="Method VisionEgg.GUI.ToplevelDialog.destroy()=VisionEgg.GUI.ToplevelDialog-class.html#destroy,Method VisionEgg.PyroApps.EPhysGUI.AppWindow.destroy()=VisionEgg.PyroApps.EPhysGUI.AppWindow-class.html#d [...]
+VisionEgg.PyroApps.EPhysGUI.AppWindow.destroy
+VisionEgg.PyroApps.EPhysGUI.LoopParamDialog.destroy" class="py-name" href="#" onclick="return doclink('link-42', 'destroy', 'link-42');">destroy</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L132"></a><tt class="py-lineno">132</tt>  <tt class="py-line"> </tt>
+<a name="L133"></a><tt class="py-lineno">133</tt>  <tt class="py-line">        <tt class="py-name">bound</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L134"></a><tt class="py-lineno">134</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">bound</tt><tt class="py-op">:</tt> </tt>
+<a name="L135"></a><tt class="py-lineno">135</tt>  <tt class="py-line"><tt class="py-comment">#        while not bound: # don't loop until the code is cleaner</tt> </tt>
+<a name="L136"></a><tt class="py-lineno">136</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">if</tt> <tt class="py-name">confirm_address_with_gui</tt> <tt class="py-keyword">and</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">dialog_ok</tt><tt class="py-op">:</tt> </tt>
+<a name="L137"></a><tt class="py-lineno">137</tt>  <tt class="py-line">                <tt class="py-name">window</tt> <tt class="py-op">=</tt> <tt class="py-name">GetServerAddressWindow</tt><tt class="py-op">(</tt><tt class="py-name">server_address</tt><tt class="py-op">)</tt> </tt>
+<a name="L138"></a><tt class="py-lineno">138</tt>  <tt class="py-line">                <tt class="py-name">window</tt><tt class="py-op">.</tt><tt class="py-name">pack</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L139"></a><tt class="py-lineno">139</tt>  <tt class="py-line">                <tt class="py-name">window</tt><tt class="py-op">.</tt><tt class="py-name">mainloop</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L140"></a><tt class="py-lineno">140</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">window</tt><tt class="py-op">.</tt><tt class="py-name">clicked_ok</tt><tt class="py-op">:</tt> </tt>
+<a name="L141"></a><tt class="py-lineno">141</tt>  <tt class="py-line">                    <tt class="py-keyword">return</tt> <tt class="py-comment"># User wants to quit</tt> </tt>
+<a name="L142"></a><tt class="py-lineno">142</tt>  <tt class="py-line">                <tt class="py-name">server_address</tt> <tt class="py-op">=</tt> <tt class="py-name">window</tt><tt class="py-op">.</tt><tt class="py-name">server_address</tt> </tt>
+<a name="L143"></a><tt class="py-lineno">143</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">server_socket</tt> <tt class="py-op">=</tt> <tt class="py-name">socket</tt><tt class="py-op">.</tt><tt class="py-name">socket</tt><tt class="py-op">(</tt><tt class="py-name">socket</tt><tt class="py-op">.</tt><tt class="py-name">AF_INET</tt><tt class="py-op">,</tt> <tt class="py-name">socket</tt><tt class="py-op">.</tt><tt class="py-n [...]
+<a name="L144"></a><tt class="py-lineno">144</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">server_socket</tt><tt class="py-op">.</tt><tt class="py-name">bind</tt><tt class="py-op">(</tt><tt class="py-name">server_address</tt><tt class="py-op">)</tt> </tt>
+<a name="L145"></a><tt class="py-lineno">145</tt>  <tt class="py-line">            <tt class="py-name">bound</tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt>
+</div><a name="L146"></a><tt class="py-lineno">146</tt>  <tt class="py-line"> </tt>
+<a name="TCPServer.create_listener_once_connected"></a><div id="TCPServer.create_listener_once_connected-def"><a name="L147"></a><tt class="py-lineno">147</tt> <a class="py-toggle" href="#" id="TCPServer.create_listener_once_connected-toggle" onclick="return toggle('TCPServer.create_listener_once_connected');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.TCPController.TCPServer-class.html#create_listener_once_connected">create_listen [...]
+</div><div id="TCPServer.create_listener_once_connected-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="TCPServer.create_listener_once_connected-expanded"><a name="L148"></a><tt class="py-lineno">148</tt>  <tt class="py-line">        <tt class="py-docstring">"""Wait for connection and spawn instance of SocketListenController."""</tt> </tt>
+<a name="L149"></a><tt class="py-lineno">149</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">eval_frequency</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L150"></a><tt class="py-lineno">150</tt>  <tt class="py-line">            <tt class="py-comment"># Don't listen to socket during go loop -- especially don't want to skip frames then</tt> </tt>
+<a name="L151"></a><tt class="py-lineno">151</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">eval_frequency</tt> <tt class="py-op">=</tt> <tt id="link-43" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-43', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-44" class="py-name"><a title="VisionEgg.FlowControl" class="py-name" href="#" onclick="return doclink('link-44', 'FlowCont [...]
+VisionEgg.FlowControl.EVERY_FRAME" class="py-name" href="#" onclick="return doclink('link-46', 'EVERY_FRAME', 'link-46');">EVERY_FRAME</a></tt> <tt class="py-op">|</tt> <tt id="link-47" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-47', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-48" class="py-name"><a title="VisionEgg.FlowControl" class="py-name" href="#" onclick="return doclink('link-48', 'FlowControl', ' [...]
+VisionEgg.FlowControl.NOT_DURING_GO" class="py-name" href="#" onclick="return doclink('link-50', 'NOT_DURING_GO', 'link-50');">NOT_DURING_GO</a></tt> </tt>
+<a name="L152"></a><tt class="py-lineno">152</tt>  <tt class="py-line">        <tt class="py-name">host</tt><tt class="py-op">,</tt><tt class="py-name">port</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">server_socket</tt><tt class="py-op">.</tt><tt class="py-name">getsockname</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L153"></a><tt class="py-lineno">153</tt>  <tt class="py-line">        <tt class="py-name">fqdn</tt> <tt class="py-op">=</tt> <tt class="py-name">socket</tt><tt class="py-op">.</tt><tt class="py-name">getfqdn</tt><tt class="py-op">(</tt><tt class="py-name">host</tt><tt class="py-op">)</tt> </tt>
+<a name="L154"></a><tt class="py-lineno">154</tt>  <tt class="py-line">        <tt id="link-51" class="py-name" targets="Variable VisionEgg.logger=VisionEgg-module.html#logger"><a title="VisionEgg.logger" class="py-name" href="#" onclick="return doclink('link-51', 'logger', 'link-51');">logger</a></tt> <tt class="py-op">=</tt> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">getLogger</tt><tt class="py-op">(</tt><tt class="py-string">'VisionEgg.TCPController'</ [...]
+<a name="L155"></a><tt class="py-lineno">155</tt>  <tt class="py-line">        <tt id="link-52" class="py-name"><a title="VisionEgg.logger" class="py-name" href="#" onclick="return doclink('link-52', 'logger', 'link-51');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">"Awaiting connection to TCP Server at '%s', port %d"</tt><tt class="py-op">%</tt><tt class="py-op">(</tt><tt class="py-name">fqdn</tt><tt class="py-op">,</ [...]
+<a name="L156"></a><tt class="py-lineno">156</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">server_socket</tt><tt class="py-op">.</tt><tt class="py-name">listen</tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="L157"></a><tt class="py-lineno">157</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">dialog_ok</tt><tt class="py-op">:</tt> </tt>
+<a name="L158"></a><tt class="py-lineno">158</tt>  <tt class="py-line">            <tt class="py-comment"># Make a Tkinter dialog box</tt> </tt>
+<a name="L159"></a><tt class="py-lineno">159</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">class</tt> <tt class="py-def-name">WaitingDialog</tt><tt class="py-op">(</tt><tt class="py-base-class">Tkinter</tt><tt class="py-op">.</tt><tt class="py-base-class">Frame</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L160"></a><tt class="py-lineno">160</tt>  <tt class="py-line">                <tt class="py-keyword">def</tt> <tt class="py-def-name">__init__</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt><tt class="py-param">server_socket</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt><tt class="py-op">**</tt><tt class="py-param">kw</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L161"></a><tt class="py-lineno">161</tt>  <tt class="py-line">                    <tt id="link-53" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-53', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Frame</tt><tt class="py-op">.</tt><tt id="link-54" class="py-name"><a title="VisionEgg.ClassWithParameters.__init__
+VisionEgg.Configuration.Config.__init__
+VisionEgg.Core.FixationSpot.__init__
+VisionEgg.Core.FrameTimer.__init__
+VisionEgg.Core.ModelView.__init__
+VisionEgg.Core.OrthographicProjection.__init__
+VisionEgg.Core.OrthographicProjectionNoZClip.__init__
+VisionEgg.Core.PerspectiveProjection.__init__
+VisionEgg.Core.Projection.__init__
+VisionEgg.Core.ProjectionBaseClass.__init__
+VisionEgg.Core.Screen.__init__
+VisionEgg.Core.SimplePerspectiveProjection.__init__
+VisionEgg.Core.Stimulus.__init__
+VisionEgg.Core.Viewport.__init__
+VisionEgg.Daq.Channel.__init__
+VisionEgg.Daq.DaqMode.__init__
+VisionEgg.Daq.Device.__init__
+VisionEgg.Daq.Functionality.__init__
+VisionEgg.Daq.SignalType.__init__
+VisionEgg.DaqKeyboard.KeyboardTriggerInController.__init__
+VisionEgg.DaqLPT.LPTChannel.__init__
+VisionEgg.DaqLPT.LPTDevice.__init__
+VisionEgg.DaqLPT.LPTTriggerInController.__init__
+VisionEgg.DaqLPT.LPTTriggerOutController.__init__
+VisionEgg.Deprecated.Message.__init__
+VisionEgg.Dots.DotArea2D.__init__
+VisionEgg.FlowControl.ConstantController.__init__
+VisionEgg.FlowControl.Controller.__init__
+VisionEgg.FlowControl.EncapsulatedController.__init__
+VisionEgg.FlowControl.EvalStringController.__init__
+VisionEgg.FlowControl.ExecStringController.__init__
+VisionEgg.FlowControl.FunctionController.__init__
+VisionEgg.FlowControl.Presentation.__init__
+VisionEgg.GLTrace.Wrapper.__init__
+VisionEgg.GUI.AppWindow.__init__
+VisionEgg.GUI.GetKeypressDialog.__init__
+VisionEgg.GUI.GraphicsConfigurationWindow.__init__
+VisionEgg.GUI.InfoFrame.__init__
+VisionEgg.GUI.ProgressBar.__init__
+VisionEgg.GUI.ToplevelDialog.__init__
+VisionEgg.Gratings.SinGrating2D.__init__
+VisionEgg.Gratings.SinGrating3D.__init__
+VisionEgg.MoreStimuli.Arrow.__init__
+VisionEgg.MoreStimuli.FilledCircle.__init__
+VisionEgg.MoreStimuli.Rectangle3D.__init__
+VisionEgg.MoreStimuli.Target2D.__init__
+VisionEgg.ParameterTypes.AnyOf.__init__
+VisionEgg.ParameterTypes.Instance.__init__
+VisionEgg.ParameterTypes.Sequence.__init__
+VisionEgg.ParameterTypes.SubClass.__init__
+VisionEgg.PyroApps.AST_ext.AST_Visitor.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalMetaParameters.__init__
+VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.__init__
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.__init__
+VisionEgg.PyroApps.DropinGUI.DropinMetaParameters.__init__
+VisionEgg.PyroApps.DropinServer.DropinMetaController.__init__
+VisionEgg.PyroApps.EPhysGUI.AppWindow.__init__
+VisionEgg.PyroApps.EPhysGUI.BarButton.__init__
+VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase.__init__
+VisionEgg.PyroApps.EPhysGUI.GammaFrame.__init__
+VisionEgg.PyroApps.EPhysGUI.ImageSequenceLauncher.__init__
+VisionEgg.PyroApps.EPhysGUI.Loop.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopContainedObject.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopParamDialog.__init__
+VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.__init__
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.__init__
+VisionEgg.PyroApps.EPhysServer.EPhysServer.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingMetaParameters.__init__
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.GridGUI.GridControlFrame.__init__
+VisionEgg.PyroApps.GridGUI.GridMetaParameters.__init__
+VisionEgg.PyroApps.GridServer.GridMetaController.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetMetaParameters.__init__
+VisionEgg.PyroApps.MouseTargetServer.MousePositionController.__init__
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetOrientationController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetPositionController.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.CallbackEntry.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionParameters.__init__
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingMetaParameters.__init__
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumMetaParameters.__init__
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.__init__
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.__init__
+VisionEgg.PyroApps.TargetGUI.TargetMetaParameters.__init__
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.__init__
+VisionEgg.PyroClient.PyroClient.__init__
+VisionEgg.PyroHelpers.PyroConstantController.__init__
+VisionEgg.PyroHelpers.PyroEncapsulatedController.__init__
+VisionEgg.PyroHelpers.PyroEvalStringController.__init__
+VisionEgg.PyroHelpers.PyroExecStringController.__init__
+VisionEgg.PyroHelpers.PyroListenController.__init__
+VisionEgg.PyroHelpers.PyroLocalDictController.__init__
+VisionEgg.PyroHelpers.PyroServer.__init__
+VisionEgg.QuickTime.MovieTexture.__init__
+VisionEgg.ResponseControl.KeyboardResponseController.__init__
+VisionEgg.ResponseControl.ResponseController.__init__
+VisionEgg.SphereMap.AzElGrid.__init__
+VisionEgg.SphereMap.SphereGrating.__init__
+VisionEgg.SphereMap.SphereMap.__init__
+VisionEgg.SphereMap.SphereWindow.__init__
+VisionEgg.TCPController.SocketListenController.__init__
+VisionEgg.TCPController.TCPController.__init__
+VisionEgg.TCPController.TCPServer.__init__
+VisionEgg.Text.BitmapText.__init__
+VisionEgg.Text.GlutTextBase.__init__
+VisionEgg.Text.StrokeText.__init__
+VisionEgg.Text.Text.__init__
+VisionEgg.Textures.FixationCross.__init__
+VisionEgg.Textures.Mask2D.__init__
+VisionEgg.Textures.SpinningDrum.__init__
+VisionEgg.Textures.Texture.__init__
+VisionEgg.Textures.TextureFromFile.__init__
+VisionEgg.Textures.TextureObject.__init__
+VisionEgg.Textures.TextureStimulusBaseClass.__init__
+VisionEgg.ThreeDeeMath.TransformMatrix.__init__
+VisionEgg.WrappedText.WrappedText.__init__
+VisionEgg.qtmovie.Movie.__init__
+VisionEgg.qtmovie.Rect.__init__" class="py-name" href="#" onclick="return doclink('link-54', '__init__', 'link-17');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt><tt class="py-op">**</tt><tt class="py-name">kw</tt><tt class="py-op">)</tt> </tt>
+<a name="L162"></a><tt class="py-lineno">162</tt>  <tt class="py-line">                    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">winfo_toplevel</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-55" class="py-name"><a title="VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.title
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.title
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.title
+VisionEgg.PyroApps.GridGUI.GridControlFrame.title
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.title
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.title
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.title
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.title" class="py-name" href="#" onclick="return doclink('link-55', 'title', 'link-21');">title</a></tt><tt class="py-op">(</tt><tt class="py-string">'Vision Egg TCP Server'</tt><tt class="py-op">)</tt> </tt>
+<a name="L163"></a><tt class="py-lineno">163</tt>  <tt class="py-line">                    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">server_socket</tt> <tt class="py-op">=</tt> <tt class="py-name">server_socket</tt> </tt>
+<a name="L164"></a><tt class="py-lineno">164</tt>  <tt class="py-line">                    <tt class="py-name">host</tt><tt class="py-op">,</tt><tt class="py-name">port</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">server_socket</tt><tt class="py-op">.</tt><tt class="py-name">getsockname</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L165"></a><tt class="py-lineno">165</tt>  <tt class="py-line">                    <tt class="py-name">fqdn</tt> <tt class="py-op">=</tt> <tt class="py-name">socket</tt><tt class="py-op">.</tt><tt class="py-name">getfqdn</tt><tt class="py-op">(</tt><tt class="py-name">host</tt><tt class="py-op">)</tt> </tt>
+<a name="L166"></a><tt class="py-lineno">166</tt>  <tt class="py-line">                    <tt class="py-name">spacer</tt> <tt class="py-op">=</tt> <tt id="link-56" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-56', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Frame</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt><tt class="py-name">borderwidth</tt><tt class="p [...]
+<a name="L167"></a><tt class="py-lineno">167</tt>  <tt class="py-line">                    <tt class="py-name">spacer</tt><tt class="py-op">.</tt><tt class="py-name">pack</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L168"></a><tt class="py-lineno">168</tt>  <tt class="py-line">                    <tt id="link-57" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-57', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Label</tt><tt class="py-op">(</tt><tt class="py-name">spacer</tt><tt class="py-op">,</tt><tt class="py-name">text</tt><tt class="py-op">=</tt> </tt>
+<a name="L169"></a><tt class="py-lineno">169</tt>  <tt class="py-line">                                  <tt class="py-string">"""Awaiting connection to TCP Server at "%s", port %d"""</tt><tt class="py-op">%</tt><tt class="py-op">(</tt><tt class="py-name">fqdn</tt><tt class="py-op">,</tt><tt class="py-name">port</tt><tt class="py-op">)</tt> </tt>
+<a name="L170"></a><tt class="py-lineno">170</tt>  <tt class="py-line">                                  <tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">pack</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L171"></a><tt class="py-lineno">171</tt>  <tt class="py-line">                    <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-58" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-58', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">Button</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt><tt class="py-name">text</tt><tt class="py-op">=</tt [...]
+<a name="L172"></a><tt class="py-lineno">172</tt>  <tt class="py-line">                    <tt class="py-name">b</tt><tt class="py-op">.</tt><tt class="py-name">pack</tt><tt class="py-op">(</tt><tt class="py-name">side</tt><tt class="py-op">=</tt><tt id="link-59" class="py-name"><a title="VisionEgg.GUI.Tkinter" class="py-name" href="#" onclick="return doclink('link-59', 'Tkinter', 'link-7');">Tkinter</a></tt><tt class="py-op">.</tt><tt class="py-name">BOTTOM</tt><tt class="py-op">)</tt> </tt>
+<a name="L173"></a><tt class="py-lineno">173</tt>  <tt class="py-line">                    <tt class="py-name">b</tt><tt class="py-op">.</tt><tt class="py-name">focus_force</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L174"></a><tt class="py-lineno">174</tt>  <tt class="py-line">                    <tt class="py-name">b</tt><tt class="py-op">.</tt><tt class="py-name">bind</tt><tt class="py-op">(</tt><tt class="py-string">'<Return>'</tt><tt class="py-op">,</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stop_listening</tt><tt class="py-op">)</tt> </tt>
+<a name="L175"></a><tt class="py-lineno">175</tt>  <tt class="py-line">                    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">winfo_toplevel</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">protocol</tt><tt class="py-op">(</tt><tt class="py-string">"WM_DELETE_WINDOW"</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stop_listening</tt><tt class="py-op"> [...]
+<a name="L176"></a><tt class="py-lineno">176</tt>  <tt class="py-line">                    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">server_socket</tt><tt class="py-op">.</tt><tt class="py-name">setblocking</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">)</tt> </tt>
+<a name="L177"></a><tt class="py-lineno">177</tt>  <tt class="py-line">                    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">after</tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">,</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">idle_func</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L178"></a><tt class="py-lineno">178</tt>  <tt class="py-line">                <tt class="py-keyword">def</tt> <tt class="py-def-name">stop_listening</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt><tt class="py-param">dummy</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L179"></a><tt class="py-lineno">179</tt>  <tt class="py-line">                    <tt class="py-keyword">raise</tt> <tt class="py-name">SystemExit</tt> </tt>
+</div><a name="L180"></a><tt class="py-lineno">180</tt>  <tt class="py-line">                <tt class="py-keyword">def</tt> <tt class="py-def-name">idle_func</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L181"></a><tt class="py-lineno">181</tt>  <tt class="py-line">                    <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L182"></a><tt class="py-lineno">182</tt>  <tt class="py-line">                        <tt class="py-comment"># This line raises an exception unless there's an incoming connection</tt> </tt>
+<a name="L183"></a><tt class="py-lineno">183</tt>  <tt class="py-line"><tt class="py-comment"></tt>                        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">accepted</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">server_socket</tt><tt class="py-op">.</tt><tt class="py-name">accept</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L184"></a><tt class="py-lineno">184</tt>  <tt class="py-line">                        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-60" class="py-name" targets="Method VisionEgg.PyroApps.EPhysGUI.AppWindow.quit()=VisionEgg.PyroApps.EPhysGUI.AppWindow-class.html#quit"><a title="VisionEgg.PyroApps.EPhysGUI.AppWindow.quit" class="py-name" href="#" onclick="return doclink('link-60', 'quit', 'link-60');">quit</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L185"></a><tt class="py-lineno">185</tt>  <tt class="py-line">                    <tt class="py-keyword">except</tt> <tt class="py-name">socket</tt><tt class="py-op">.</tt><tt class="py-name">error</tt><tt class="py-op">,</tt> <tt class="py-name">x</tt><tt class="py-op">:</tt> </tt>
+<a name="L186"></a><tt class="py-lineno">186</tt>  <tt class="py-line">                        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">after</tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">,</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">idle_func</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L187"></a><tt class="py-lineno">187</tt>  <tt class="py-line">            <tt class="py-name">dialog</tt> <tt class="py-op">=</tt> <tt class="py-name">WaitingDialog</tt><tt class="py-op">(</tt><tt class="py-name">server_socket</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">server_socket</tt><tt class="py-op">)</tt> </tt>
+<a name="L188"></a><tt class="py-lineno">188</tt>  <tt class="py-line">            <tt class="py-name">dialog</tt><tt class="py-op">.</tt><tt class="py-name">pack</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L189"></a><tt class="py-lineno">189</tt>  <tt class="py-line">            <tt class="py-name">dialog</tt><tt class="py-op">.</tt><tt class="py-name">mainloop</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L190"></a><tt class="py-lineno">190</tt>  <tt class="py-line">            <tt class="py-name">client</tt><tt class="py-op">,</tt> <tt class="py-name">client_address</tt> <tt class="py-op">=</tt> <tt class="py-name">dialog</tt><tt class="py-op">.</tt><tt class="py-name">accepted</tt> </tt>
+<a name="L191"></a><tt class="py-lineno">191</tt>  <tt class="py-line">            <tt class="py-name">dialog</tt><tt class="py-op">.</tt><tt class="py-name">winfo_toplevel</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-61" class="py-name"><a title="VisionEgg.GUI.ToplevelDialog.destroy
+VisionEgg.PyroApps.EPhysGUI.AppWindow.destroy
+VisionEgg.PyroApps.EPhysGUI.LoopParamDialog.destroy" class="py-name" href="#" onclick="return doclink('link-61', 'destroy', 'link-42');">destroy</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L192"></a><tt class="py-lineno">192</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L193"></a><tt class="py-lineno">193</tt>  <tt class="py-line">            <tt class="py-name">client</tt><tt class="py-op">,</tt> <tt class="py-name">client_address</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">server_socket</tt><tt class="py-op">.</tt><tt class="py-name">accept</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L194"></a><tt class="py-lineno">194</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">single_socket_but_reconnect_ok</tt><tt class="py-op">:</tt> </tt>
+<a name="L195"></a><tt class="py-lineno">195</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt id="link-62" class="py-name" targets="Class VisionEgg.TCPController.SocketListenController=VisionEgg.TCPController.SocketListenController-class.html"><a title="VisionEgg.TCPController.SocketListenController" class="py-name" href="#" onclick="return doclink('link-62', 'SocketListenController', 'link-62');">SocketListenController</a></tt><tt class="py-op">(</tt><tt clas [...]
+<a name="L196"></a><tt class="py-lineno">196</tt>  <tt class="py-line">                                          <tt class="py-name">disconnect_ok</tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt><tt class="py-op">,</tt> </tt>
+<a name="L197"></a><tt class="py-lineno">197</tt>  <tt class="py-line">                                          <tt class="py-name">server_socket</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">server_socket</tt><tt class="py-op">)</tt> </tt>
+<a name="L198"></a><tt class="py-lineno">198</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L199"></a><tt class="py-lineno">199</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt id="link-63" class="py-name"><a title="VisionEgg.TCPController.SocketListenController" class="py-name" href="#" onclick="return doclink('link-63', 'SocketListenController', 'link-62');">SocketListenController</a></tt><tt class="py-op">(</tt><tt class="py-name">client</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L200"></a><tt class="py-lineno">200</tt>  <tt class="py-line"> </tt>
+<a name="SocketListenController"></a><div id="SocketListenController-def"><a name="L201"></a><tt class="py-lineno">201</tt> <a class="py-toggle" href="#" id="SocketListenController-toggle" onclick="return toggle('SocketListenController');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.TCPController.SocketListenController-class.html">SocketListenController</a><tt class="py-op">(</tt><tt class="py-base-class">VisionEgg</tt><tt class="py-o [...]
+</div><div id="SocketListenController-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="SocketListenController-expanded"><a name="L202"></a><tt class="py-lineno">202</tt>  <tt class="py-line">    <tt class="py-docstring">r"""Handle connection from remote machine, control TCPControllers.</tt> </tt>
+<a name="L203"></a><tt class="py-lineno">203</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L204"></a><tt class="py-lineno">204</tt>  <tt class="py-line"><tt class="py-docstring">    This meta controller handles a TCP socket to control zero to many</tt> </tt>
+<a name="L205"></a><tt class="py-lineno">205</tt>  <tt class="py-line"><tt class="py-docstring">    instances of TCPController.  As a subclass of Controller, it gets</tt> </tt>
+<a name="L206"></a><tt class="py-lineno">206</tt>  <tt class="py-line"><tt class="py-docstring">    called at specified moments in time via the Presentation</tt> </tt>
+<a name="L207"></a><tt class="py-lineno">207</tt>  <tt class="py-line"><tt class="py-docstring">    class. When called in this way, it checks for any strings from the</tt> </tt>
+<a name="L208"></a><tt class="py-lineno">208</tt>  <tt class="py-line"><tt class="py-docstring">    TCP socket.  It parses this information into a command or fails</tt> </tt>
+<a name="L209"></a><tt class="py-lineno">209</tt>  <tt class="py-line"><tt class="py-docstring">    and sends an error.</tt> </tt>
+<a name="L210"></a><tt class="py-lineno">210</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L211"></a><tt class="py-lineno">211</tt>  <tt class="py-line"><tt class="py-docstring">    This class is analagous to VisionEgg.PyroHelpers.PyroListenController.</tt> </tt>
+<a name="L212"></a><tt class="py-lineno">212</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L213"></a><tt class="py-lineno">213</tt>  <tt class="py-line"><tt class="py-docstring">    TCP commands (sent over network socket)</tt> </tt>
+<a name="L214"></a><tt class="py-lineno">214</tt>  <tt class="py-line"><tt class="py-docstring">    =======================================</tt> </tt>
+<a name="L215"></a><tt class="py-lineno">215</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L216"></a><tt class="py-lineno">216</tt>  <tt class="py-line"><tt class="py-docstring">    close -- close the connection</tt> </tt>
+<a name="L217"></a><tt class="py-lineno">217</tt>  <tt class="py-line"><tt class="py-docstring">    exit -- close the connection</tt> </tt>
+<a name="L218"></a><tt class="py-lineno">218</tt>  <tt class="py-line"><tt class="py-docstring">    quit -- quit the server program</tt> </tt>
+<a name="L219"></a><tt class="py-lineno">219</tt>  <tt class="py-line"><tt class="py-docstring">    help -- print help message</tt> </tt>
+<a name="L220"></a><tt class="py-lineno">220</tt>  <tt class="py-line"><tt class="py-docstring">    <name> -- show the value of the controller of <name></tt> </tt>
+<a name="L221"></a><tt class="py-lineno">221</tt>  <tt class="py-line"><tt class="py-docstring">    <name>=const(<args>) -- assign a new ConstantController to <name></tt> </tt>
+<a name="L222"></a><tt class="py-lineno">222</tt>  <tt class="py-line"><tt class="py-docstring">    <name>=eval_str(<args>) -- assign a new EvalStringController to <name></tt> </tt>
+<a name="L223"></a><tt class="py-lineno">223</tt>  <tt class="py-line"><tt class="py-docstring">    <name>=exec_str(<args>) -- assign a new ExecStringController to <name></tt> </tt>
+<a name="L224"></a><tt class="py-lineno">224</tt>  <tt class="py-line"><tt class="py-docstring">    <name>=exec_str(*<args>) -- assign a new unrestricted namespace ExecStringController to <name></tt> </tt>
+<a name="L225"></a><tt class="py-lineno">225</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L226"></a><tt class="py-lineno">226</tt>  <tt class="py-line"><tt class="py-docstring">    TCP commands are always on a single line.  (Newlines in string</tt> </tt>
+<a name="L227"></a><tt class="py-lineno">227</tt>  <tt class="py-line"><tt class="py-docstring">    literals can be specified by using "\n" without the quotes.)</tt> </tt>
+<a name="L228"></a><tt class="py-lineno">228</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L229"></a><tt class="py-lineno">229</tt>  <tt class="py-line"><tt class="py-docstring">    The assignment commands share common behavior:</tt> </tt>
+<a name="L230"></a><tt class="py-lineno">230</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L231"></a><tt class="py-lineno">231</tt>  <tt class="py-line"><tt class="py-docstring">    <name> -- value passed as argument "tcp_name" to method create_tcp_controller</tt> </tt>
+<a name="L232"></a><tt class="py-lineno">232</tt>  <tt class="py-line"><tt class="py-docstring">    <args> -- during_go [, between_go [, eval_frequency [, temporal_variables [, return_type ]]]]</tt> </tt>
+<a name="L233"></a><tt class="py-lineno">233</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L234"></a><tt class="py-lineno">234</tt>  <tt class="py-line"><tt class="py-docstring">    The <args> string is parsed by the Python's eval() function.  If</tt> </tt>
+<a name="L235"></a><tt class="py-lineno">235</tt>  <tt class="py-line"><tt class="py-docstring">    you don't want to explicitly set an argument early in the argument</tt> </tt>
+<a name="L236"></a><tt class="py-lineno">236</tt>  <tt class="py-line"><tt class="py-docstring">    list, but you need to set one late in the list, use "None".  If</tt> </tt>
+<a name="L237"></a><tt class="py-lineno">237</tt>  <tt class="py-line"><tt class="py-docstring">    not set, the optional arguments default to:</tt> </tt>
+<a name="L238"></a><tt class="py-lineno">238</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L239"></a><tt class="py-lineno">239</tt>  <tt class="py-line"><tt class="py-docstring">    eval_frequency = EVERY_FRAME</tt> </tt>
+<a name="L240"></a><tt class="py-lineno">240</tt>  <tt class="py-line"><tt class="py-docstring">    temporal_variables = TIME_SEC_SINCE_GO</tt> </tt>
+<a name="L241"></a><tt class="py-lineno">241</tt>  <tt class="py-line"><tt class="py-docstring">    return_type = (evaluates during_go function to find)</tt> </tt>
+<a name="L242"></a><tt class="py-lineno">242</tt>  <tt class="py-line"><tt class="py-docstring">    between_go = (see below, depends on assignment type)</tt> </tt>
+<a name="L243"></a><tt class="py-lineno">243</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L244"></a><tt class="py-lineno">244</tt>  <tt class="py-line"><tt class="py-docstring">    The only difference between the assignment commands are in the</tt> </tt>
+<a name="L245"></a><tt class="py-lineno">245</tt>  <tt class="py-line"><tt class="py-docstring">    first two arguments.  For "const(...)", the first two arguments</tt> </tt>
+<a name="L246"></a><tt class="py-lineno">246</tt>  <tt class="py-line"><tt class="py-docstring">    are constant values, for "eval_str(...)" they are strings that</tt> </tt>
+<a name="L247"></a><tt class="py-lineno">247</tt>  <tt class="py-line"><tt class="py-docstring">    evaluate to a single variable, and for "exec_str(...)", they are</tt> </tt>
+<a name="L248"></a><tt class="py-lineno">248</tt>  <tt class="py-line"><tt class="py-docstring">    strings that set the variable "x" in their local namespace, which</tt> </tt>
+<a name="L249"></a><tt class="py-lineno">249</tt>  <tt class="py-line"><tt class="py-docstring">    is then returned.  (An unrestricted namespace is available with</tt> </tt>
+<a name="L250"></a><tt class="py-lineno">250</tt>  <tt class="py-line"><tt class="py-docstring">    "exec_str(*...)".)  If the argument between_go is set to None or</tt> </tt>
+<a name="L251"></a><tt class="py-lineno">251</tt>  <tt class="py-line"><tt class="py-docstring">    is not defined, the behavior depends on the assignment command.</tt> </tt>
+<a name="L252"></a><tt class="py-lineno">252</tt>  <tt class="py-line"><tt class="py-docstring">    If this is a <name>=const(...) assignment, between_go_value is set</tt> </tt>
+<a name="L253"></a><tt class="py-lineno">253</tt>  <tt class="py-line"><tt class="py-docstring">    to during_go_value.  If this is a <name>=eval_str(...) or</tt> </tt>
+<a name="L254"></a><tt class="py-lineno">254</tt>  <tt class="py-line"><tt class="py-docstring">    <name>=exec_str(...) assignment, the correct value cannot be</tt> </tt>
+<a name="L255"></a><tt class="py-lineno">255</tt>  <tt class="py-line"><tt class="py-docstring">    guessed, and therefore the between_go_eval function will never be</tt> </tt>
+<a name="L256"></a><tt class="py-lineno">256</tt>  <tt class="py-line"><tt class="py-docstring">    called (the eval_frequency flag NOT_BETWEEN_GO is set).</tt> </tt>
+<a name="L257"></a><tt class="py-lineno">257</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L258"></a><tt class="py-lineno">258</tt>  <tt class="py-line"><tt class="py-docstring">    Because the default value for temporal_variables is</tt> </tt>
+<a name="L259"></a><tt class="py-lineno">259</tt>  <tt class="py-line"><tt class="py-docstring">    TIME_SEC_SINCE_GO, the variable "t" may be safely used in the</tt> </tt>
+<a name="L260"></a><tt class="py-lineno">260</tt>  <tt class="py-line"><tt class="py-docstring">    during_go string for the eval_str or exec_str assignment commands.</tt> </tt>
+<a name="L261"></a><tt class="py-lineno">261</tt>  <tt class="py-line"><tt class="py-docstring">    See the documentation for VisionEgg.FlowControl.EvalStringController for</tt> </tt>
+<a name="L262"></a><tt class="py-lineno">262</tt>  <tt class="py-line"><tt class="py-docstring">    more information.</tt> </tt>
+<a name="L263"></a><tt class="py-lineno">263</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L264"></a><tt class="py-lineno">264</tt>  <tt class="py-line"><tt class="py-docstring">    Example commands from TCP port (try with telnet):</tt> </tt>
+<a name="L265"></a><tt class="py-lineno">265</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L266"></a><tt class="py-lineno">266</tt>  <tt class="py-line"><tt class="py-docstring">    <name>=const(1.0)</tt> </tt>
+<a name="L267"></a><tt class="py-lineno">267</tt>  <tt class="py-line"><tt class="py-docstring">    <name>=eval_str("t*360.0")</tt> </tt>
+<a name="L268"></a><tt class="py-lineno">268</tt>  <tt class="py-line"><tt class="py-docstring">    <name>=exec_str("x=t*360.0")</tt> </tt>
+<a name="L269"></a><tt class="py-lineno">269</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L270"></a><tt class="py-lineno">270</tt>  <tt class="py-line"><tt class="py-docstring">    <name>=const(0.,1.,EVERY_FRAME)</tt> </tt>
+<a name="L271"></a><tt class="py-lineno">271</tt>  <tt class="py-line"><tt class="py-docstring">    <name>=const(1,None,ONCE)</tt> </tt>
+<a name="L272"></a><tt class="py-lineno">272</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L273"></a><tt class="py-lineno">273</tt>  <tt class="py-line"><tt class="py-docstring">    <name>=const(1.0,0.0,EVERY_FRAME,TIME_INDEPENDENT,types.FloatType)</tt> </tt>
+<a name="L274"></a><tt class="py-lineno">274</tt>  <tt class="py-line"><tt class="py-docstring">    <name>=eval_str("t*360.0","t_abs*360.0",None,TIME_SEC_ABSOLUTE|TIME_SEC_SINCE_GO)</tt> </tt>
+<a name="L275"></a><tt class="py-lineno">275</tt>  <tt class="py-line"><tt class="py-docstring">    <name>=eval_str("t_abs*360.0","t_abs*360.0",EVERY_FRAME,TIME_SEC_ABSOLUTE,types.FloatType)</tt> </tt>
+<a name="L276"></a><tt class="py-lineno">276</tt>  <tt class="py-line"><tt class="py-docstring">    <name>=exec_str("x=t*360.0","x=0.0",EVERY_FRAME,TIME_SEC_SINCE_GO)</tt> </tt>
+<a name="L277"></a><tt class="py-lineno">277</tt>  <tt class="py-line"><tt class="py-docstring">    <name>=exec_str("print 'Time since go=%f'%(t,)\nx=t*360.0","x=0.0",EVERY_FRAME,TIME_SEC_SINCE_GO)</tt> </tt>
+<a name="L278"></a><tt class="py-lineno">278</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L279"></a><tt class="py-lineno">279</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L280"></a><tt class="py-lineno">280</tt>  <tt class="py-line"> </tt>
+<a name="L281"></a><tt class="py-lineno">281</tt>  <tt class="py-line">    <tt id="link-64" class="py-name" targets="Variable VisionEgg.TCPController.SocketListenController.help_string=VisionEgg.TCPController.SocketListenController-class.html#help_string"><a title="VisionEgg.TCPController.SocketListenController.help_string" class="py-name" href="#" onclick="return doclink('link-64', 'help_string', 'link-64');">help_string</a></tt> <tt class="py-op">=</tt> <tt class="py-string">r"""    TC [...]
+<a name="L282"></a><tt class="py-lineno">282</tt>  <tt class="py-line"><tt class="py-string"></tt> </tt>
+<a name="L283"></a><tt class="py-lineno">283</tt>  <tt class="py-line"><tt class="py-string">    close -- close the connection</tt> </tt>
+<a name="L284"></a><tt class="py-lineno">284</tt>  <tt class="py-line"><tt class="py-string">    exit -- close the connection</tt> </tt>
+<a name="L285"></a><tt class="py-lineno">285</tt>  <tt class="py-line"><tt class="py-string">    quit -- quit the server program</tt> </tt>
+<a name="L286"></a><tt class="py-lineno">286</tt>  <tt class="py-line"><tt class="py-string">    help -- print this message</tt> </tt>
+<a name="L287"></a><tt class="py-lineno">287</tt>  <tt class="py-line"><tt class="py-string">    <name> -- show the value of the controller of <name></tt> </tt>
+<a name="L288"></a><tt class="py-lineno">288</tt>  <tt class="py-line"><tt class="py-string">    <name>=const(<args>) -- assign a new ConstantController to <name></tt> </tt>
+<a name="L289"></a><tt class="py-lineno">289</tt>  <tt class="py-line"><tt class="py-string">    <name>=eval_str(<args>) -- assign a new EvalStringController to <name></tt> </tt>
+<a name="L290"></a><tt class="py-lineno">290</tt>  <tt class="py-line"><tt class="py-string">    <name>=exec_str(<args>) -- assign a new ExecStringController to <name></tt> </tt>
+<a name="L291"></a><tt class="py-lineno">291</tt>  <tt class="py-line"><tt class="py-string">    <name>=exec_str(*<args>) -- assign a new unrestricted namespace ExecStringController to <name></tt> </tt>
+<a name="L292"></a><tt class="py-lineno">292</tt>  <tt class="py-line"><tt class="py-string"></tt> </tt>
+<a name="L293"></a><tt class="py-lineno">293</tt>  <tt class="py-line"><tt class="py-string">    TCP commands are always on a single line.  (Newlines in string</tt> </tt>
+<a name="L294"></a><tt class="py-lineno">294</tt>  <tt class="py-line"><tt class="py-string">    literals can be specified by using "\n" without the quotes.)</tt> </tt>
+<a name="L295"></a><tt class="py-lineno">295</tt>  <tt class="py-line"><tt class="py-string"></tt> </tt>
+<a name="L296"></a><tt class="py-lineno">296</tt>  <tt class="py-line"><tt class="py-string">    The assignment commands share common behavior:</tt> </tt>
+<a name="L297"></a><tt class="py-lineno">297</tt>  <tt class="py-line"><tt class="py-string"></tt> </tt>
+<a name="L298"></a><tt class="py-lineno">298</tt>  <tt class="py-line"><tt class="py-string">    <name> -- value passed as argument "tcp_name" to method create_tcp_controller</tt> </tt>
+<a name="L299"></a><tt class="py-lineno">299</tt>  <tt class="py-line"><tt class="py-string">    <args> -- during_go [, between_go [, eval_frequency [, temporal_variables [, return_type ]]]]</tt> </tt>
+<a name="L300"></a><tt class="py-lineno">300</tt>  <tt class="py-line"><tt class="py-string">    """</tt> </tt>
+<a name="L301"></a><tt class="py-lineno">301</tt>  <tt class="py-line"> </tt>
+<a name="L302"></a><tt class="py-lineno">302</tt>  <tt class="py-line">    <tt id="link-65" class="py-name" targets="Variable VisionEgg.TCPController.SocketListenController._re_line=VisionEgg.TCPController.SocketListenController-class.html#_re_line"><a title="VisionEgg.TCPController.SocketListenController._re_line" class="py-name" href="#" onclick="return doclink('link-65', '_re_line', 'link-65');">_re_line</a></tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt class="py-op">.< [...]
+<a name="L303"></a><tt class="py-lineno">303</tt>  <tt class="py-line">    <tt id="link-66" class="py-name" targets="Variable VisionEgg.TCPController.SocketListenController._re_x_finder=VisionEgg.TCPController.SocketListenController-class.html#_re_x_finder"><a title="VisionEgg.TCPController.SocketListenController._re_x_finder" class="py-name" href="#" onclick="return doclink('link-66', '_re_x_finder', 'link-66');">_re_x_finder</a></tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt> [...]
+<a name="L304"></a><tt class="py-lineno">304</tt>  <tt class="py-line">    <tt class="py-comment"># The real newlines have already been parsed by the time the buffer gets to these statements:</tt> </tt>
+<a name="L305"></a><tt class="py-lineno">305</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-67" class="py-name" targets="Variable VisionEgg.TCPController.SocketListenController._re_const=VisionEgg.TCPController.SocketListenController-class.html#_re_const"><a title="VisionEgg.TCPController.SocketListenController._re_const" class="py-name" href="#" onclick="return doclink('link-67', '_re_const', 'link-67');">_re_const</a></tt> <tt class="py-op">=</tt> <tt class="py- [...]
+<a name="L306"></a><tt class="py-lineno">306</tt>  <tt class="py-line">    <tt id="link-68" class="py-name" targets="Variable VisionEgg.TCPController.SocketListenController._re_eval_str=VisionEgg.TCPController.SocketListenController-class.html#_re_eval_str"><a title="VisionEgg.TCPController.SocketListenController._re_eval_str" class="py-name" href="#" onclick="return doclink('link-68', '_re_eval_str', 'link-68');">_re_eval_str</a></tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt> [...]
+<a name="L307"></a><tt class="py-lineno">307</tt>  <tt class="py-line">    <tt id="link-69" class="py-name" targets="Variable VisionEgg.TCPController.SocketListenController._re_exec_str=VisionEgg.TCPController.SocketListenController-class.html#_re_exec_str"><a title="VisionEgg.TCPController.SocketListenController._re_exec_str" class="py-name" href="#" onclick="return doclink('link-69', '_re_exec_str', 'link-69');">_re_exec_str</a></tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt> [...]
+<a name="L308"></a><tt class="py-lineno">308</tt>  <tt class="py-line">    <tt id="link-70" class="py-name" targets="Variable VisionEgg.TCPController.SocketListenController._parse_args_globals=VisionEgg.TCPController.SocketListenController-class.html#_parse_args_globals"><a title="VisionEgg.TCPController.SocketListenController._parse_args_globals" class="py-name" href="#" onclick="return doclink('link-70', '_parse_args_globals', 'link-70');">_parse_args_globals</a></tt> <tt class="py-op" [...]
+<a name="L309"></a><tt class="py-lineno">309</tt>  <tt class="py-line">    <tt id="link-71" class="py-name" targets="Variable VisionEgg.TCPController.SocketListenController._parse_args_locals=VisionEgg.TCPController.SocketListenController-class.html#_parse_args_locals"><a title="VisionEgg.TCPController.SocketListenController._parse_args_locals" class="py-name" href="#" onclick="return doclink('link-71', '_parse_args_locals', 'link-71');">_parse_args_locals</a></tt> <tt class="py-op">=</t [...]
+<a name="SocketListenController.__init__"></a><div id="SocketListenController.__init__-def"><a name="L310"></a><tt class="py-lineno">310</tt> <a class="py-toggle" href="#" id="SocketListenController.__init__-toggle" onclick="return toggle('SocketListenController.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.TCPController.SocketListenController-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">s [...]
+<a name="L311"></a><tt class="py-lineno">311</tt>  <tt class="py-line">                 <tt class="py-param">socket</tt><tt class="py-op">,</tt> </tt>
+<a name="L312"></a><tt class="py-lineno">312</tt>  <tt class="py-line">                 <tt class="py-param">disconnect_ok</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt><tt class="py-op">,</tt> </tt>
+<a name="L313"></a><tt class="py-lineno">313</tt>  <tt class="py-line">                 <tt class="py-param">server_socket</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-comment"># Only needed if reconnecting ok</tt> </tt>
+<a name="L314"></a><tt class="py-lineno">314</tt>  <tt class="py-line">                 <tt class="py-param">temporal_variables</tt> <tt class="py-op">=</tt> <tt id="link-76" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-76', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-77" class="py-name"><a title="VisionEgg.FlowControl" class="py-name" href="#" onclick="return doclink('link-77', 'FlowControl', 'link-4');"> [...]
+VisionEgg.FlowControl.TIME_INDEPENDENT" class="py-name" href="#" onclick="return doclink('link-79', 'TIME_INDEPENDENT', 'link-79');">TIME_INDEPENDENT</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L315"></a><tt class="py-lineno">315</tt>  <tt class="py-line">                 <tt class="py-param">eval_frequency</tt> <tt class="py-op">=</tt> <tt id="link-80" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-80', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-81" class="py-name"><a title="VisionEgg.FlowControl" class="py-name" href="#" onclick="return doclink('link-81', 'FlowControl', 'link-4');">Flow [...]
+VisionEgg.FlowControl.EVERY_FRAME" class="py-name" href="#" onclick="return doclink('link-83', 'EVERY_FRAME', 'link-46');">EVERY_FRAME</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="SocketListenController.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SocketListenController.__init__-expanded"><a name="L316"></a><tt class="py-lineno">316</tt>  <tt class="py-line">        <tt class="py-docstring">"""Instantiated by TCPServer."""</tt> </tt>
+<a name="L317"></a><tt class="py-lineno">317</tt>  <tt class="py-line">        <tt id="link-84" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-84', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-85" class="py-name"><a title="VisionEgg.FlowControl" class="py-name" href="#" onclick="return doclink('link-85', 'FlowControl', 'link-4');">FlowControl</a></tt><tt class="py-op">.</tt><tt id="link-86" class="py-name"><a [...]
+VisionEgg.Configuration.Config.__init__
+VisionEgg.Core.FixationSpot.__init__
+VisionEgg.Core.FrameTimer.__init__
+VisionEgg.Core.ModelView.__init__
+VisionEgg.Core.OrthographicProjection.__init__
+VisionEgg.Core.OrthographicProjectionNoZClip.__init__
+VisionEgg.Core.PerspectiveProjection.__init__
+VisionEgg.Core.Projection.__init__
+VisionEgg.Core.ProjectionBaseClass.__init__
+VisionEgg.Core.Screen.__init__
+VisionEgg.Core.SimplePerspectiveProjection.__init__
+VisionEgg.Core.Stimulus.__init__
+VisionEgg.Core.Viewport.__init__
+VisionEgg.Daq.Channel.__init__
+VisionEgg.Daq.DaqMode.__init__
+VisionEgg.Daq.Device.__init__
+VisionEgg.Daq.Functionality.__init__
+VisionEgg.Daq.SignalType.__init__
+VisionEgg.DaqKeyboard.KeyboardTriggerInController.__init__
+VisionEgg.DaqLPT.LPTChannel.__init__
+VisionEgg.DaqLPT.LPTDevice.__init__
+VisionEgg.DaqLPT.LPTTriggerInController.__init__
+VisionEgg.DaqLPT.LPTTriggerOutController.__init__
+VisionEgg.Deprecated.Message.__init__
+VisionEgg.Dots.DotArea2D.__init__
+VisionEgg.FlowControl.ConstantController.__init__
+VisionEgg.FlowControl.Controller.__init__
+VisionEgg.FlowControl.EncapsulatedController.__init__
+VisionEgg.FlowControl.EvalStringController.__init__
+VisionEgg.FlowControl.ExecStringController.__init__
+VisionEgg.FlowControl.FunctionController.__init__
+VisionEgg.FlowControl.Presentation.__init__
+VisionEgg.GLTrace.Wrapper.__init__
+VisionEgg.GUI.AppWindow.__init__
+VisionEgg.GUI.GetKeypressDialog.__init__
+VisionEgg.GUI.GraphicsConfigurationWindow.__init__
+VisionEgg.GUI.InfoFrame.__init__
+VisionEgg.GUI.ProgressBar.__init__
+VisionEgg.GUI.ToplevelDialog.__init__
+VisionEgg.Gratings.SinGrating2D.__init__
+VisionEgg.Gratings.SinGrating3D.__init__
+VisionEgg.MoreStimuli.Arrow.__init__
+VisionEgg.MoreStimuli.FilledCircle.__init__
+VisionEgg.MoreStimuli.Rectangle3D.__init__
+VisionEgg.MoreStimuli.Target2D.__init__
+VisionEgg.ParameterTypes.AnyOf.__init__
+VisionEgg.ParameterTypes.Instance.__init__
+VisionEgg.ParameterTypes.Sequence.__init__
+VisionEgg.ParameterTypes.SubClass.__init__
+VisionEgg.PyroApps.AST_ext.AST_Visitor.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalMetaParameters.__init__
+VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.__init__
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.__init__
+VisionEgg.PyroApps.DropinGUI.DropinMetaParameters.__init__
+VisionEgg.PyroApps.DropinServer.DropinMetaController.__init__
+VisionEgg.PyroApps.EPhysGUI.AppWindow.__init__
+VisionEgg.PyroApps.EPhysGUI.BarButton.__init__
+VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase.__init__
+VisionEgg.PyroApps.EPhysGUI.GammaFrame.__init__
+VisionEgg.PyroApps.EPhysGUI.ImageSequenceLauncher.__init__
+VisionEgg.PyroApps.EPhysGUI.Loop.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopContainedObject.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopParamDialog.__init__
+VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.__init__
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.__init__
+VisionEgg.PyroApps.EPhysServer.EPhysServer.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingMetaParameters.__init__
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.GridGUI.GridControlFrame.__init__
+VisionEgg.PyroApps.GridGUI.GridMetaParameters.__init__
+VisionEgg.PyroApps.GridServer.GridMetaController.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetMetaParameters.__init__
+VisionEgg.PyroApps.MouseTargetServer.MousePositionController.__init__
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetOrientationController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetPositionController.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.CallbackEntry.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionParameters.__init__
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingMetaParameters.__init__
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumMetaParameters.__init__
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.__init__
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.__init__
+VisionEgg.PyroApps.TargetGUI.TargetMetaParameters.__init__
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.__init__
+VisionEgg.PyroClient.PyroClient.__init__
+VisionEgg.PyroHelpers.PyroConstantController.__init__
+VisionEgg.PyroHelpers.PyroEncapsulatedController.__init__
+VisionEgg.PyroHelpers.PyroEvalStringController.__init__
+VisionEgg.PyroHelpers.PyroExecStringController.__init__
+VisionEgg.PyroHelpers.PyroListenController.__init__
+VisionEgg.PyroHelpers.PyroLocalDictController.__init__
+VisionEgg.PyroHelpers.PyroServer.__init__
+VisionEgg.QuickTime.MovieTexture.__init__
+VisionEgg.ResponseControl.KeyboardResponseController.__init__
+VisionEgg.ResponseControl.ResponseController.__init__
+VisionEgg.SphereMap.AzElGrid.__init__
+VisionEgg.SphereMap.SphereGrating.__init__
+VisionEgg.SphereMap.SphereMap.__init__
+VisionEgg.SphereMap.SphereWindow.__init__
+VisionEgg.TCPController.SocketListenController.__init__
+VisionEgg.TCPController.TCPController.__init__
+VisionEgg.TCPController.TCPServer.__init__
+VisionEgg.Text.BitmapText.__init__
+VisionEgg.Text.GlutTextBase.__init__
+VisionEgg.Text.StrokeText.__init__
+VisionEgg.Text.Text.__init__
+VisionEgg.Textures.FixationCross.__init__
+VisionEgg.Textures.Mask2D.__init__
+VisionEgg.Textures.SpinningDrum.__init__
+VisionEgg.Textures.Texture.__init__
+VisionEgg.Textures.TextureFromFile.__init__
+VisionEgg.Textures.TextureObject.__init__
+VisionEgg.Textures.TextureStimulusBaseClass.__init__
+VisionEgg.ThreeDeeMath.TransformMatrix.__init__
+VisionEgg.WrappedText.WrappedText.__init__
+VisionEgg.qtmovie.Movie.__init__
+VisionEgg.qtmovie.Rect.__init__" class="py-name" href="#" onclick="return doclink('link-87', '__init__', 'link-17');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> </tt>
+<a name="L318"></a><tt class="py-lineno">318</tt>  <tt class="py-line">                                           <tt class="py-name">return_type</tt> <tt class="py-op">=</tt> <tt class="py-name">types</tt><tt class="py-op">.</tt><tt id="link-88" class="py-name" targets="Class VisionEgg.ParameterTypes.NoneType=VisionEgg.ParameterTypes.NoneType-class.html"><a title="VisionEgg.ParameterTypes.NoneType" class="py-name" href="#" onclick="return doclink('link-88', 'NoneType', 'link-88');">None [...]
+<a name="L319"></a><tt class="py-lineno">319</tt>  <tt class="py-line">                                           <tt class="py-name">temporal_variables</tt> <tt class="py-op">=</tt> <tt class="py-name">temporal_variables</tt><tt class="py-op">,</tt> </tt>
+<a name="L320"></a><tt class="py-lineno">320</tt>  <tt class="py-line">                                           <tt class="py-name">eval_frequency</tt> <tt class="py-op">=</tt> <tt class="py-name">eval_frequency</tt><tt class="py-op">)</tt> </tt>
+<a name="L321"></a><tt class="py-lineno">321</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">socket</tt> <tt class="py-op">=</tt> <tt class="py-name">socket</tt> </tt>
+<a name="L322"></a><tt class="py-lineno">322</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">disconnect_ok</tt> <tt class="py-op">=</tt> <tt class="py-name">disconnect_ok</tt> </tt>
+<a name="L323"></a><tt class="py-lineno">323</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">disconnect_ok</tt> <tt class="py-keyword">and</tt> <tt class="py-name">server_socket</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L324"></a><tt class="py-lineno">324</tt>  <tt class="py-line">            <tt class="py-comment"># Warning -- no ability to accept further incoming sockets...</tt> </tt>
+<a name="L325"></a><tt class="py-lineno">325</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">pass</tt> </tt>
+<a name="L326"></a><tt class="py-lineno">326</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">server_socket</tt> <tt class="py-op">=</tt> <tt class="py-name">server_socket</tt> </tt>
+<a name="L327"></a><tt class="py-lineno">327</tt>  <tt class="py-line"> </tt>
+<a name="L328"></a><tt class="py-lineno">328</tt>  <tt class="py-line">        <tt id="link-89" class="py-name"><a title="VisionEgg.logger" class="py-name" href="#" onclick="return doclink('link-89', 'logger', 'link-51');">logger</a></tt> <tt class="py-op">=</tt> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">getLogger</tt><tt class="py-op">(</tt><tt class="py-string">'VisionEgg.TCPController'</tt><tt class="py-op">)</tt> </tt>
+<a name="L329"></a><tt class="py-lineno">329</tt>  <tt class="py-line">        <tt id="link-90" class="py-name"><a title="VisionEgg.logger" class="py-name" href="#" onclick="return doclink('link-90', 'logger', 'link-51');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">"Handling connection from %s"</tt><tt class="py-op">%</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name"> [...]
+<a name="L330"></a><tt class="py-lineno">330</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">socket</tt><tt class="py-op">.</tt><tt class="py-name">setblocking</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">)</tt> <tt class="py-comment"># don't block on this socket</tt> </tt>
+<a name="L331"></a><tt class="py-lineno">331</tt>  <tt class="py-line"> </tt>
+<a name="L332"></a><tt class="py-lineno">332</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">socket</tt><tt class="py-op">.</tt><tt class="py-name">send</tt><tt class="py-op">(</tt><tt class="py-string">"Hello. This is %s version %s.\n"</tt><tt class="py-op">%</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__class__</tt><tt class="py-op">,</tt><tt id="link-91" class="py-name"> [...]
+VisionEgg.DaqLPT.__version__
+VisionEgg.GL.__version__
+VisionEgg.PyroApps.EPhysGUI.__version__
+VisionEgg.PyroApps.EPhysGUIUtils.__version__
+VisionEgg.PyroApps.EPhysServer.__version__
+VisionEgg.PyroApps.GridGUI.__version__
+VisionEgg.PyroApps.GridServer.__version__
+VisionEgg.PyroApps.ScreenPositionGUI.__version__
+VisionEgg.PyroApps.ScreenPositionServer.__version__
+VisionEgg.PyroApps.SpinningDrumGUI.__version__
+VisionEgg.PyroApps.SpinningDrumServer.__version__
+VisionEgg.PyroHelpers.__version__
+VisionEgg.QuickTime.__version__
+VisionEgg.ResponseControl.__version__
+VisionEgg.SphereMap.__version__
+VisionEgg.TCPController.__version__" class="py-name" href="#" onclick="return doclink('link-91', '__version__', 'link-8');">__version__</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L333"></a><tt class="py-lineno">333</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">socket</tt><tt class="py-op">.</tt><tt class="py-name">send</tt><tt class="py-op">(</tt><tt id="link-92" class="py-name"><a title="VisionEgg.TCPController.SocketListenController" class="py-name" href="#" onclick="return doclink('link-92', 'SocketListenController', 'link-62');">SocketListenController</a></tt><tt class="py-op">.</tt><tt id= [...]
+<a name="L334"></a><tt class="py-lineno">334</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">socket</tt><tt class="py-op">.</tt><tt class="py-name">send</tt><tt class="py-op">(</tt><tt class="py-string">"Begin sending commands now.\n"</tt><tt class="py-op">)</tt> </tt>
+<a name="L335"></a><tt class="py-lineno">335</tt>  <tt class="py-line"> </tt>
+<a name="L336"></a><tt class="py-lineno">336</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">buffer</tt> <tt class="py-op">=</tt> <tt class="py-string">""</tt> </tt>
+<a name="L337"></a><tt class="py-lineno">337</tt>  <tt class="py-line"> </tt>
+<a name="L338"></a><tt class="py-lineno">338</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">last_command</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L339"></a><tt class="py-lineno">339</tt>  <tt class="py-line"> </tt>
+<a name="L340"></a><tt class="py-lineno">340</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">names</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> <tt class="py-comment"># ( controller, name_re, parser, require_type )</tt> </tt>
+</div><a name="L341"></a><tt class="py-lineno">341</tt>  <tt class="py-line"> </tt>
+<a name="SocketListenController.send_raw_text"></a><div id="SocketListenController.send_raw_text-def"><a name="L342"></a><tt class="py-lineno">342</tt> <a class="py-toggle" href="#" id="SocketListenController.send_raw_text-toggle" onclick="return toggle('SocketListenController.send_raw_text');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.TCPController.SocketListenController-class.html#send_raw_text">send_raw_text</a><tt class="py-op [...]
+</div><div id="SocketListenController.send_raw_text-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SocketListenController.send_raw_text-expanded"><a name="L343"></a><tt class="py-lineno">343</tt>  <tt class="py-line">        <tt class="py-docstring">"""Send text over the TCP socket."""</tt> </tt>
+<a name="L344"></a><tt class="py-lineno">344</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">socket</tt><tt class="py-op">.</tt><tt class="py-name">send</tt><tt class="py-op">(</tt><tt class="py-name">text</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L345"></a><tt class="py-lineno">345</tt>  <tt class="py-line"> </tt>
+<a name="SocketListenController.__check_socket"></a><div id="SocketListenController.__check_socket-def"><a name="L346"></a><tt class="py-lineno">346</tt> <a class="py-toggle" href="#" id="SocketListenController.__check_socket-toggle" onclick="return toggle('SocketListenController.__check_socket');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.TCPController.SocketListenController-class.html#__check_socket">__check_socket</a><tt class= [...]
+</div><div id="SocketListenController.__check_socket-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SocketListenController.__check_socket-expanded"><a name="L347"></a><tt class="py-lineno">347</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">socket</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> <tt [...]
+<a name="L348"></a><tt class="py-lineno">348</tt>  <tt class="py-line">            <tt class="py-comment"># First, update the buffer</tt> </tt>
+<a name="L349"></a><tt class="py-lineno">349</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">ready_to_read</tt><tt class="py-op">,</tt> <tt class="py-name">temp</tt><tt class="py-op">,</tt> <tt class="py-name">temp2</tt> <tt class="py-op">=</tt> <tt class="py-name">select</tt><tt class="py-op">.</tt><tt class="py-name">select</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">s [...]
+<a name="L350"></a><tt class="py-lineno">350</tt>  <tt class="py-line">            <tt class="py-name">new_info</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L351"></a><tt class="py-lineno">351</tt>  <tt class="py-line">            <tt class="py-keyword">while</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">ready_to_read</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L352"></a><tt class="py-lineno">352</tt>  <tt class="py-line">                <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L353"></a><tt class="py-lineno">353</tt>  <tt class="py-line">                    <tt class="py-name">new</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">socket</tt><tt class="py-op">.</tt><tt class="py-name">recv</tt><tt class="py-op">(</tt><tt class="py-number">1024</tt><tt class="py-op">)</tt> <tt class="py-comment"># When disconnected, this fails on Win32</tt> </tt>
+<a name="L354"></a><tt class="py-lineno">354</tt>  <tt class="py-line">                <tt class="py-keyword">except</tt> <tt class="py-name">socket</tt><tt class="py-op">.</tt><tt class="py-name">error</tt><tt class="py-op">,</tt> <tt class="py-name">x</tt><tt class="py-op">:</tt> </tt>
+<a name="L355"></a><tt class="py-lineno">355</tt>  <tt class="py-line">                    <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">disconnect_ok</tt><tt class="py-op">:</tt> </tt>
+<a name="L356"></a><tt class="py-lineno">356</tt>  <tt class="py-line">                        <tt class="py-keyword">raise</tt> </tt>
+<a name="L357"></a><tt class="py-lineno">357</tt>  <tt class="py-line">                    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L358"></a><tt class="py-lineno">358</tt>  <tt class="py-line">                        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">socket</tt><tt class="py-op">.</tt><tt id="link-94" class="py-name" targets="Method VisionEgg.Core.Screen.close()=VisionEgg.Core.Screen-class.html#close"><a title="VisionEgg.Core.Screen.close" class="py-name" href="#" onclick="return doclink('link-94', 'close', 'link-94');">close</a></tt><tt class="py-op">(</tt><tt class=" [...]
+<a name="L359"></a><tt class="py-lineno">359</tt>  <tt class="py-line">                        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">socket</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L360"></a><tt class="py-lineno">360</tt>  <tt class="py-line">                        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">server_socket</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L361"></a><tt class="py-lineno">361</tt>  <tt class="py-line">                            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">server_socket</tt><tt class="py-op">.</tt><tt class="py-name">setblocking</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">)</tt> </tt>
+<a name="L362"></a><tt class="py-lineno">362</tt>  <tt class="py-line">                        <tt class="py-keyword">return</tt> </tt>
+<a name="L363"></a><tt class="py-lineno">363</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">new</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> <tt class="py-comment"># When disconnected, this happens on unix</tt> </tt>
+<a name="L364"></a><tt class="py-lineno">364</tt>  <tt class="py-line">                    <tt class="py-comment"># Disconnected</tt> </tt>
+<a name="L365"></a><tt class="py-lineno">365</tt>  <tt class="py-line"><tt class="py-comment"></tt>                    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">socket</tt><tt class="py-op">.</tt><tt id="link-95" class="py-name"><a title="VisionEgg.Core.Screen.close" class="py-name" href="#" onclick="return doclink('link-95', 'close', 'link-94');">close</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-comment"># close socket</tt> </tt>
+<a name="L366"></a><tt class="py-lineno">366</tt>  <tt class="py-line">                    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">socket</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L367"></a><tt class="py-lineno">367</tt>  <tt class="py-line">                    <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">disconnect_ok</tt><tt class="py-op">:</tt> </tt>
+<a name="L368"></a><tt class="py-lineno">368</tt>  <tt class="py-line">                        <tt class="py-keyword">raise</tt> <tt class="py-name">RuntimeError</tt><tt class="py-op">(</tt><tt class="py-string">"Socket disconnected!"</tt><tt class="py-op">)</tt> </tt>
+<a name="L369"></a><tt class="py-lineno">369</tt>  <tt class="py-line">                    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L370"></a><tt class="py-lineno">370</tt>  <tt class="py-line">                        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">server_socket</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L371"></a><tt class="py-lineno">371</tt>  <tt class="py-line">                            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">server_socket</tt><tt class="py-op">.</tt><tt class="py-name">setblocking</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">)</tt> </tt>
+<a name="L372"></a><tt class="py-lineno">372</tt>  <tt class="py-line">                    <tt class="py-keyword">return</tt> <tt class="py-comment"># don't do any more</tt> </tt>
+<a name="L373"></a><tt class="py-lineno">373</tt>  <tt class="py-line">                <tt class="py-comment">#assert(ready_to_read[0] == self.socket)</tt> </tt>
+<a name="L374"></a><tt class="py-lineno">374</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">buffer</tt> <tt class="py-op">+=</tt> <tt class="py-name">new</tt> </tt>
+<a name="L375"></a><tt class="py-lineno">375</tt>  <tt class="py-line">                <tt class="py-name">new_info</tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L376"></a><tt class="py-lineno">376</tt>  <tt class="py-line">                <tt class="py-name">ready_to_read</tt><tt class="py-op">,</tt> <tt class="py-name">temp</tt><tt class="py-op">,</tt> <tt class="py-name">temp2</tt> <tt class="py-op">=</tt> <tt class="py-name">select</tt><tt class="py-op">.</tt><tt class="py-name">select</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">socket</tt><tt class="py- [...]
+<a name="L377"></a><tt class="py-lineno">377</tt>  <tt class="py-line"> </tt>
+<a name="L378"></a><tt class="py-lineno">378</tt>  <tt class="py-line">            <tt class="py-comment"># Second, convert the buffer to command_queue entries</tt> </tt>
+<a name="L379"></a><tt class="py-lineno">379</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">if</tt> <tt class="py-name">new_info</tt><tt class="py-op">:</tt> </tt>
+<a name="L380"></a><tt class="py-lineno">380</tt>  <tt class="py-line">                <tt class="py-comment"># Handle variations on newlines:</tt> </tt>
+<a name="L381"></a><tt class="py-lineno">381</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">buffer</tt> <tt class="py-op">=</tt> <tt class="py-name">string</tt><tt class="py-op">.</tt><tt class="py-name">replace</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">buffer</tt><tt class="py-op">,</tt><tt class="py-name">chr</tt><tt class="py-op">(< [...]
+<a name="L382"></a><tt class="py-lineno">382</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">buffer</tt> <tt class="py-op">=</tt> <tt class="py-name">string</tt><tt class="py-op">.</tt><tt class="py-name">replace</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">buffer</tt><tt class="py-op">,</tt><tt class="py-name">chr</tt><tt class="py-op">(</tt><tt class="py-number">0x [...]
+<a name="L383"></a><tt class="py-lineno">383</tt>  <tt class="py-line">                <tt class="py-comment"># Handle each line for which we have a tcp_name</tt> </tt>
+<a name="L384"></a><tt class="py-lineno">384</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-keyword">for</tt> <tt class="py-name">tcp_name</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">names</tt><tt class="py-op">.</tt><tt class="py-name">keys</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L385"></a><tt class="py-lineno">385</tt>  <tt class="py-line">                    <tt class="py-op">(</tt><tt class="py-name">controller</tt><tt class="py-op">,</tt> <tt class="py-name">name_re_str</tt><tt class="py-op">,</tt> <tt class="py-name">parser</tt><tt class="py-op">,</tt> <tt class="py-name">require_type</tt><tt class="py-op">)</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">names</tt><tt class="py-op">[</tt><tt cl [...]
+<a name="L386"></a><tt class="py-lineno">386</tt>  <tt class="py-line"> </tt>
+<a name="L387"></a><tt class="py-lineno">387</tt>  <tt class="py-line">                    <tt class="py-comment"># If the following line makes a match, it</tt> </tt>
+<a name="L388"></a><tt class="py-lineno">388</tt>  <tt class="py-line"><tt class="py-comment"></tt>                    <tt class="py-comment"># sticks the result in self.last_command[tcp_name] by calling the parser function.</tt> </tt>
+<a name="L389"></a><tt class="py-lineno">389</tt>  <tt class="py-line"><tt class="py-comment"></tt>                    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">buffer</tt> <tt class="py-op">=</tt> <tt class="py-name">name_re_str</tt><tt class="py-op">.</tt><tt class="py-name">sub</tt><tt class="py-op">(</tt><tt class="py-name">parser</tt><tt class="py-op">,</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">buffer</tt><tt class="p [...]
+<a name="L390"></a><tt class="py-lineno">390</tt>  <tt class="py-line">                    <tt class="py-comment"># Now act based on the command parsed</tt> </tt>
+<a name="L391"></a><tt class="py-lineno">391</tt>  <tt class="py-line"><tt class="py-comment"></tt>                    <tt class="py-name">command</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">last_command</tt><tt class="py-op">[</tt><tt class="py-name">tcp_name</tt><tt class="py-op">]</tt> </tt>
+<a name="L392"></a><tt class="py-lineno">392</tt>  <tt class="py-line">                    <tt class="py-keyword">if</tt> <tt class="py-name">command</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L393"></a><tt class="py-lineno">393</tt>  <tt class="py-line">                        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__do_assignment_command</tt><tt class="py-op">(</tt><tt class="py-name">tcp_name</tt><tt class="py-op">,</tt><tt class="py-name">command</tt><tt class="py-op">,</tt><tt class="py-name">require_type</tt><tt class="py-op">)</tt> </tt>
+<a name="L394"></a><tt class="py-lineno">394</tt>  <tt class="py-line">                        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">last_command</tt><tt class="py-op">[</tt><tt class="py-name">tcp_name</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L395"></a><tt class="py-lineno">395</tt>  <tt class="py-line">                <tt class="py-comment"># Clear any complete lines for which we don't have a tcp_name</tt> </tt>
+<a name="L396"></a><tt class="py-lineno">396</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">buffer</tt> <tt class="py-op">=</tt> <tt id="link-96" class="py-name"><a title="VisionEgg.TCPController.SocketListenController" class="py-name" href="#" onclick="return doclink('link-96', 'SocketListenController', 'link-62');">SocketListenController</a></tt><tt class="py-op">.</tt><tt id="link-97" class [...]
+<a name="L397"></a><tt class="py-lineno">397</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">server_socket</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L398"></a><tt class="py-lineno">398</tt>  <tt class="py-line">            <tt class="py-comment"># Not connected on self.socket, check self.server_socket for new connection</tt> </tt>
+<a name="L399"></a><tt class="py-lineno">399</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L400"></a><tt class="py-lineno">400</tt>  <tt class="py-line">                <tt class="py-comment"># This line raises an exception unless there's an incoming connection (if server is not blocking, which it shouldn't be)</tt> </tt>
+<a name="L401"></a><tt class="py-lineno">401</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-op">(</tt><tt class="py-name">client</tt><tt class="py-op">,</tt> <tt class="py-name">client_address</tt><tt class="py-op">)</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">server_socket</tt><tt class="py-op">.</tt><tt class="py-name">accept</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L402"></a><tt class="py-lineno">402</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">socket</tt> <tt class="py-op">=</tt> <tt class="py-name">client</tt> </tt>
+<a name="L403"></a><tt class="py-lineno">403</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">socket</tt><tt class="py-op">.</tt><tt class="py-name">send</tt><tt class="py-op">(</tt><tt class="py-string">"Hello. This is %s version %s.\n"</tt><tt class="py-op">%</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__class__</tt><tt class="py-op">,</tt><tt id="link-98" class="p [...]
+VisionEgg.DaqLPT.__version__
+VisionEgg.GL.__version__
+VisionEgg.PyroApps.EPhysGUI.__version__
+VisionEgg.PyroApps.EPhysGUIUtils.__version__
+VisionEgg.PyroApps.EPhysServer.__version__
+VisionEgg.PyroApps.GridGUI.__version__
+VisionEgg.PyroApps.GridServer.__version__
+VisionEgg.PyroApps.ScreenPositionGUI.__version__
+VisionEgg.PyroApps.ScreenPositionServer.__version__
+VisionEgg.PyroApps.SpinningDrumGUI.__version__
+VisionEgg.PyroApps.SpinningDrumServer.__version__
+VisionEgg.PyroHelpers.__version__
+VisionEgg.QuickTime.__version__
+VisionEgg.ResponseControl.__version__
+VisionEgg.SphereMap.__version__
+VisionEgg.TCPController.__version__" class="py-name" href="#" onclick="return doclink('link-98', '__version__', 'link-8');">__version__</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L404"></a><tt class="py-lineno">404</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">socket</tt><tt class="py-op">.</tt><tt class="py-name">send</tt><tt class="py-op">(</tt><tt id="link-99" class="py-name"><a title="VisionEgg.TCPController.SocketListenController" class="py-name" href="#" onclick="return doclink('link-99', 'SocketListenController', 'link-62');">SocketListenController</a></tt><tt class="py-op">.</tt [...]
+<a name="L405"></a><tt class="py-lineno">405</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">socket</tt><tt class="py-op">.</tt><tt class="py-name">send</tt><tt class="py-op">(</tt><tt class="py-string">"Begin sending commands now.\n"</tt><tt class="py-op">)</tt> </tt>
+<a name="L406"></a><tt class="py-lineno">406</tt>  <tt class="py-line">                <tt class="py-keyword">for</tt> <tt class="py-name">tcp_name</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">names</tt><tt class="py-op">.</tt><tt class="py-name">keys</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L407"></a><tt class="py-lineno">407</tt>  <tt class="py-line">                    <tt class="py-op">(</tt><tt class="py-name">controller</tt><tt class="py-op">,</tt> <tt class="py-name">name_re_str</tt><tt class="py-op">,</tt> <tt class="py-name">parser</tt><tt class="py-op">,</tt> <tt class="py-name">require_type</tt><tt class="py-op">)</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">names</tt><tt class="py-op">[</tt><tt cl [...]
+<a name="L408"></a><tt class="py-lineno">408</tt>  <tt class="py-line">                    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">socket</tt><tt class="py-op">.</tt><tt class="py-name">send</tt><tt class="py-op">(</tt><tt class="py-string">'"%s" controllable with this connection.\n'</tt><tt class="py-op">%</tt><tt class="py-name">tcp_name</tt><tt class="py-op">)</tt> </tt>
+<a name="L409"></a><tt class="py-lineno">409</tt>  <tt class="py-line">            <tt class="py-keyword">except</tt> <tt class="py-name">socket</tt><tt class="py-op">.</tt><tt class="py-name">error</tt><tt class="py-op">,</tt> <tt class="py-name">x</tt><tt class="py-op">:</tt> </tt>
+<a name="L410"></a><tt class="py-lineno">410</tt>  <tt class="py-line">                <tt class="py-keyword">pass</tt> </tt>
+</div><a name="L411"></a><tt class="py-lineno">411</tt>  <tt class="py-line"> </tt>
+<a name="SocketListenController.__unprocessed_line"></a><div id="SocketListenController.__unprocessed_line-def"><a name="L412"></a><tt class="py-lineno">412</tt> <a class="py-toggle" href="#" id="SocketListenController.__unprocessed_line-toggle" onclick="return toggle('SocketListenController.__unprocessed_line');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.TCPController.SocketListenController-class.html#__unprocessed_line">__unproc [...]
+</div><div id="SocketListenController.__unprocessed_line-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SocketListenController.__unprocessed_line-expanded"><a name="L413"></a><tt class="py-lineno">413</tt>  <tt class="py-line">        <tt class="py-name">text</tt> <tt class="py-op">=</tt> <tt class="py-name">match</tt><tt class="py-op">.</tt><tt class="py-name">group</tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="L414"></a><tt class="py-lineno">414</tt>  <tt class="py-line">        <tt class="py-name">text</tt> <tt class="py-op">=</tt> <tt class="py-name">string</tt><tt class="py-op">.</tt><tt class="py-name">strip</tt><tt class="py-op">(</tt><tt class="py-name">text</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">lower</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L415"></a><tt class="py-lineno">415</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">text</tt><tt class="py-op">==</tt><tt class="py-string">"quit"</tt><tt class="py-op">:</tt> <tt class="py-comment"># this a hack, really (should be a controller in charge of Presentation.parameters.quit)</tt> </tt>
+<a name="L416"></a><tt class="py-lineno">416</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">SystemExit</tt> </tt>
+<a name="L417"></a><tt class="py-lineno">417</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">text</tt><tt class="py-op">==</tt><tt class="py-string">"close"</tt> <tt class="py-keyword">or</tt> <tt class="py-name">text</tt><tt class="py-op">==</tt><tt class="py-string">"exit"</tt><tt class="py-op">:</tt> </tt>
+<a name="L418"></a><tt class="py-lineno">418</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">socket</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> <tt class="py-comment"># close socket</tt> </tt>
+<a name="L419"></a><tt class="py-lineno">419</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">disconnect_ok</tt><tt class="py-op">:</tt> </tt>
+<a name="L420"></a><tt class="py-lineno">420</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> <tt class="py-name">RuntimeError</tt><tt class="py-op">(</tt><tt class="py-string">"Socket disconnected!"</tt><tt class="py-op">)</tt> </tt>
+<a name="L421"></a><tt class="py-lineno">421</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L422"></a><tt class="py-lineno">422</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">server_socket</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L423"></a><tt class="py-lineno">423</tt>  <tt class="py-line">                    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">server_socket</tt><tt class="py-op">.</tt><tt class="py-name">setblocking</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">)</tt> </tt>
+<a name="L424"></a><tt class="py-lineno">424</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-string">""</tt> </tt>
+<a name="L425"></a><tt class="py-lineno">425</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">text</tt><tt class="py-op">==</tt><tt class="py-string">"help"</tt><tt class="py-op">:</tt> </tt>
+<a name="L426"></a><tt class="py-lineno">426</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">socket</tt><tt class="py-op">.</tt><tt class="py-name">send</tt><tt class="py-op">(</tt><tt id="link-101" class="py-name"><a title="VisionEgg.TCPController.SocketListenController" class="py-name" href="#" onclick="return doclink('link-101', 'SocketListenController', 'link-62');">SocketListenController</a></tt><tt class="py-op">.</tt>< [...]
+<a name="L427"></a><tt class="py-lineno">427</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-string">""</tt> </tt>
+<a name="L428"></a><tt class="py-lineno">428</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">text</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">names</tt><tt class="py-op">.</tt><tt class="py-name">keys</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L429"></a><tt class="py-lineno">429</tt>  <tt class="py-line">            <tt class="py-op">(</tt><tt class="py-name">controller</tt><tt class="py-op">,</tt> <tt class="py-name">name_re_str</tt><tt class="py-op">,</tt> <tt class="py-name">parser</tt><tt class="py-op">,</tt> <tt class="py-name">require_type</tt><tt class="py-op">)</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">names</tt><tt class="py-op">[</tt><tt class="py- [...]
+<a name="L430"></a><tt class="py-lineno">430</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">socket</tt><tt class="py-op">.</tt><tt class="py-name">send</tt><tt class="py-op">(</tt><tt class="py-name">text</tt><tt class="py-op">+</tt><tt class="py-string">"="</tt><tt class="py-op">+</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">controller</tt><tt class="py-op">)</tt><tt class="py-op">+</tt><tt cl [...]
+<a name="L431"></a><tt class="py-lineno">431</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-string">""</tt> </tt>
+<a name="L432"></a><tt class="py-lineno">432</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">socket</tt><tt class="py-op">.</tt><tt class="py-name">send</tt><tt class="py-op">(</tt><tt class="py-string">"Error: Invalid command line \""</tt><tt class="py-op">+</tt><tt class="py-name">text</tt><tt class="py-op">+</tt><tt class="py-string">"\"\n"</tt><tt class="py-op">)</tt> </tt>
+<a name="L433"></a><tt class="py-lineno">433</tt>  <tt class="py-line">        <tt id="link-103" class="py-name"><a title="VisionEgg.logger" class="py-name" href="#" onclick="return doclink('link-103', 'logger', 'link-51');">logger</a></tt> <tt class="py-op">=</tt> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">getLogger</tt><tt class="py-op">(</tt><tt class="py-string">'VisionEgg.TCPController'</tt><tt class="py-op">)</tt> </tt>
+<a name="L434"></a><tt class="py-lineno">434</tt>  <tt class="py-line">        <tt id="link-104" class="py-name"><a title="VisionEgg.logger" class="py-name" href="#" onclick="return doclink('link-104', 'logger', 'link-51');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">warning</tt><tt class="py-op">(</tt><tt class="py-string">'Invalid command line: "%s"'</tt><tt class="py-op">%</tt><tt class="py-op">(</tt><tt class="py-name">text</tt><tt class="py-op">,</tt><tt class="py-op [...]
+<a name="L435"></a><tt class="py-lineno">435</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-string">''</tt> </tt>
+</div><a name="L436"></a><tt class="py-lineno">436</tt>  <tt class="py-line"> </tt>
+<a name="SocketListenController.create_tcp_controller"></a><div id="SocketListenController.create_tcp_controller-def"><a name="L437"></a><tt class="py-lineno">437</tt> <a class="py-toggle" href="#" id="SocketListenController.create_tcp_controller-toggle" onclick="return toggle('SocketListenController.create_tcp_controller');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.TCPController.SocketListenController-class.html#create_tcp_contr [...]
+<a name="L438"></a><tt class="py-lineno">438</tt>  <tt class="py-line">                              <tt class="py-param">tcp_name</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
+<a name="L439"></a><tt class="py-lineno">439</tt>  <tt class="py-line">                              <tt class="py-param">initial_controller</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
+<a name="L440"></a><tt class="py-lineno">440</tt>  <tt class="py-line">                              <tt class="py-param">require_type</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="SocketListenController.create_tcp_controller-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SocketListenController.create_tcp_controller-expanded"><a name="L441"></a><tt class="py-lineno">441</tt>  <tt class="py-line">        <tt class="py-docstring">"""Create new instance of TCPController.</tt> </tt>
+<a name="L442"></a><tt class="py-lineno">442</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L443"></a><tt class="py-lineno">443</tt>  <tt class="py-line"><tt class="py-docstring">        Arguments:</tt> </tt>
+<a name="L444"></a><tt class="py-lineno">444</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L445"></a><tt class="py-lineno">445</tt>  <tt class="py-line"><tt class="py-docstring">        tcp_name -- String to reference new TCPController over TCP</tt> </tt>
+<a name="L446"></a><tt class="py-lineno">446</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L447"></a><tt class="py-lineno">447</tt>  <tt class="py-line"><tt class="py-docstring">        Optional arguments:</tt> </tt>
+<a name="L448"></a><tt class="py-lineno">448</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L449"></a><tt class="py-lineno">449</tt>  <tt class="py-line"><tt class="py-docstring">        initial_controller -- Initial value of TCPController instance</tt> </tt>
+<a name="L450"></a><tt class="py-lineno">450</tt>  <tt class="py-line"><tt class="py-docstring">        require_type -- force this as TCPController instance's return_type</tt> </tt>
+<a name="L451"></a><tt class="py-lineno">451</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L452"></a><tt class="py-lineno">452</tt>  <tt class="py-line">        <tt class="py-keyword">class</tt> <tt class="py-def-name">Parser</tt><tt class="py-op">:</tt> </tt>
+<a name="L453"></a><tt class="py-lineno">453</tt>  <tt class="py-line">            <tt class="py-keyword">def</tt> <tt class="py-def-name">__init__</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt><tt class="py-param">tcp_name</tt><tt class="py-op">,</tt><tt class="py-param">most_recent_command</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L454"></a><tt class="py-lineno">454</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">tcp_name</tt> <tt class="py-op">=</tt> <tt class="py-name">tcp_name</tt> </tt>
+<a name="L455"></a><tt class="py-lineno">455</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">most_recent_command</tt> <tt class="py-op">=</tt> <tt class="py-name">most_recent_command</tt> </tt>
+</div><a name="L456"></a><tt class="py-lineno">456</tt>  <tt class="py-line"> </tt>
+<a name="L457"></a><tt class="py-lineno">457</tt>  <tt class="py-line">            <tt class="py-keyword">def</tt> <tt class="py-def-name">parse_func</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt><tt class="py-param">match</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L458"></a><tt class="py-lineno">458</tt>  <tt class="py-line">                <tt class="py-comment"># Could make this into a lambda function</tt> </tt>
+<a name="L459"></a><tt class="py-lineno">459</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">most_recent_command</tt><tt class="py-op">[</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">tcp_name</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">match</tt><tt class="py-op">.</tt><tt class="py-name">groups</tt><tt class="py-op">(</tt><tt class=" [...]
+<a name="L460"></a><tt class="py-lineno">460</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-string">""</tt> </tt>
+</div></div><a name="L461"></a><tt class="py-lineno">461</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">tcp_name</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L462"></a><tt class="py-lineno">462</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">"Must specify tcp_name"</tt><tt class="py-op">)</tt> </tt>
+<a name="L463"></a><tt class="py-lineno">463</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">tcp_name</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">names</tt><tt class="py-op">.</tt><tt class="py-name">keys</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L464"></a><tt class="py-lineno">464</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">'tcp_name "%s" already in use.'</tt><tt class="py-op">%</tt><tt class="py-name">tcp_name</tt><tt class="py-op">)</tt> </tt>
+<a name="L465"></a><tt class="py-lineno">465</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">string</tt><tt class="py-op">.</tt><tt class="py-name">count</tt><tt class="py-op">(</tt><tt class="py-name">tcp_name</tt><tt class="py-op">,</tt><tt class="py-string">' '</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L466"></a><tt class="py-lineno">466</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">'tcp_name "%s" cannot have spaces.'</tt><tt class="py-op">%</tt><tt class="py-name">tcp_name</tt><tt class="py-op">)</tt> </tt>
+<a name="L467"></a><tt class="py-lineno">467</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">tcp_name</tt> <tt class="py-op">==</tt> <tt class="py-string">"quit"</tt><tt class="py-op">:</tt> </tt>
+<a name="L468"></a><tt class="py-lineno">468</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">'tcp_name "%s" conflicts with reserved word.'</tt><tt class="py-op">%</tt><tt class="py-name">tcp_name</tt><tt class="py-op">)</tt> </tt>
+<a name="L469"></a><tt class="py-lineno">469</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">initial_controller</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L470"></a><tt class="py-lineno">470</tt>  <tt class="py-line">            <tt class="py-comment"># create default controller</tt> </tt>
+<a name="L471"></a><tt class="py-lineno">471</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">initial_controller</tt> <tt class="py-op">=</tt> <tt id="link-105" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-105', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-106" class="py-name"><a title="VisionEgg.FlowControl" class="py-name" href="#" onclick="return doclink('link-106', ' [...]
+<a name="L472"></a><tt class="py-lineno">472</tt>  <tt class="py-line">                <tt class="py-name">during_go_value</tt><tt class="py-op">=</tt><tt class="py-number">1.0</tt><tt class="py-op">,</tt> </tt>
+<a name="L473"></a><tt class="py-lineno">473</tt>  <tt class="py-line">                <tt class="py-name">between_go_value</tt><tt class="py-op">=</tt><tt class="py-number">0.0</tt><tt class="py-op">)</tt> </tt>
+<a name="L474"></a><tt class="py-lineno">474</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L475"></a><tt class="py-lineno">475</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">initial_controller</tt><tt class="py-op">,</tt><tt id="link-108" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-108', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-109" class="py-name"><a  [...]
+<a name="L476"></a><tt class="py-lineno">476</tt>  <tt class="py-line">                <tt class="py-keyword">print</tt> <tt class="py-name">initial_controller</tt> </tt>
+<a name="L477"></a><tt class="py-lineno">477</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">'initial_controller not an instance of VisionEgg.FlowControl.Controller'</tt><tt class="py-op">)</tt> </tt>
+<a name="L478"></a><tt class="py-lineno">478</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">require_type</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L479"></a><tt class="py-lineno">479</tt>  <tt class="py-line">            <tt class="py-name">require_type</tt> <tt class="py-op">=</tt> <tt class="py-name">initial_controller</tt><tt class="py-op">.</tt><tt id="link-111" class="py-name" targets="Method VisionEgg.FlowControl.Controller.returns_type()=VisionEgg.FlowControl.Controller-class.html#returns_type"><a title="VisionEgg.FlowControl.Controller.returns_type" class="py-name" href="#" onclick="return doclink('link-111', 'retu [...]
+<a name="L480"></a><tt class="py-lineno">480</tt>  <tt class="py-line">        <tt class="py-comment"># Create initial None value for self.last_command dict</tt> </tt>
+<a name="L481"></a><tt class="py-lineno">481</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">last_command</tt><tt class="py-op">[</tt><tt class="py-name">tcp_name</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L482"></a><tt class="py-lineno">482</tt>  <tt class="py-line">        <tt class="py-comment"># Create values for self.names dict tuple ( controller, name_re, most_recent_command, parser )</tt> </tt>
+<a name="L483"></a><tt class="py-lineno">483</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">controller</tt> <tt class="py-op">=</tt> <tt id="link-112" class="py-name" targets="Module VisionEgg.TCPController=VisionEgg.TCPController-module.html,Class VisionEgg.TCPController.TCPController=VisionEgg.TCPController.TCPController-class.html"><a title="VisionEgg.TCPController
+VisionEgg.TCPController.TCPController" class="py-name" href="#" onclick="return doclink('link-112', 'TCPController', 'link-112');">TCPController</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L484"></a><tt class="py-lineno">484</tt>  <tt class="py-line">            <tt class="py-name">tcp_name</tt><tt class="py-op">=</tt><tt class="py-name">tcp_name</tt><tt class="py-op">,</tt> </tt>
+<a name="L485"></a><tt class="py-lineno">485</tt>  <tt class="py-line">            <tt class="py-name">initial_controller</tt><tt class="py-op">=</tt><tt class="py-name">initial_controller</tt> </tt>
+<a name="L486"></a><tt class="py-lineno">486</tt>  <tt class="py-line">            <tt class="py-op">)</tt> </tt>
+<a name="L487"></a><tt class="py-lineno">487</tt>  <tt class="py-line">        <tt class="py-name">name_re_str</tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">compile</tt><tt class="py-op">(</tt><tt class="py-string">"^"</tt><tt class="py-op">+</tt><tt class="py-name">tcp_name</tt><tt class="py-op">+</tt><tt class="py-string">r"\s*=\s*(.*)\s*\n$"</tt><tt class="py-op">,</tt><tt class="py-name">re</tt><tt class="py-op">.</tt><tt class=" [...]
+<a name="L488"></a><tt class="py-lineno">488</tt>  <tt class="py-line">        <tt class="py-name">parser</tt> <tt class="py-op">=</tt> <tt class="py-name">Parser</tt><tt class="py-op">(</tt><tt class="py-name">tcp_name</tt><tt class="py-op">,</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">last_command</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">parse_func</tt> </tt>
+<a name="L489"></a><tt class="py-lineno">489</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">names</tt><tt class="py-op">[</tt><tt class="py-name">tcp_name</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">controller</tt><tt class="py-op">,</tt> <tt class="py-name">name_re_str</tt><tt class="py-op">,</tt> <tt class="py-name">parser</tt><tt class="py-op">,</tt> <tt class="py-name">re [...]
+<a name="L490"></a><tt class="py-lineno">490</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">socket</tt><tt class="py-op">.</tt><tt class="py-name">send</tt><tt class="py-op">(</tt><tt class="py-string">'"%s" controllable with this connection.\n'</tt><tt class="py-op">%</tt><tt class="py-name">tcp_name</tt><tt class="py-op">)</tt> </tt>
+<a name="L491"></a><tt class="py-lineno">491</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">controller</tt> </tt>
+</div><a name="L492"></a><tt class="py-lineno">492</tt>  <tt class="py-line"> </tt>
+<a name="SocketListenController.__get_five_args"></a><div id="SocketListenController.__get_five_args-def"><a name="L493"></a><tt class="py-lineno">493</tt> <a class="py-toggle" href="#" id="SocketListenController.__get_five_args-toggle" onclick="return toggle('SocketListenController.__get_five_args');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.TCPController.SocketListenController-class.html#__get_five_args">__get_five_args</a><tt  [...]
+</div><div id="SocketListenController.__get_five_args-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SocketListenController.__get_five_args-expanded"><a name="L494"></a><tt class="py-lineno">494</tt>  <tt class="py-line">        <tt class="py-name">args</tt> <tt class="py-op">=</tt> <tt class="py-name">eval</tt><tt class="py-op">(</tt><tt class="py-string">"("</tt><tt class="py-op">+</tt><tt class="py-name">arg_string</tt><tt class="py-op">+</tt><tt class="py [...]
+<a name="L495"></a><tt class="py-lineno">495</tt>  <tt class="py-line">        <tt class="py-name">num_args</tt> <tt class="py-op">=</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">args</tt><tt class="py-op">)</tt> </tt>
+<a name="L496"></a><tt class="py-lineno">496</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">num_args</tt> <tt class="py-op">==</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt>
+<a name="L497"></a><tt class="py-lineno">497</tt>  <tt class="py-line">            <tt class="py-name">args</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt><tt class="py-name">None</tt><tt class="py-op">,</tt><tt class="py-name">None</tt><tt class="py-op">,</tt><tt class="py-name">None</tt><tt class="py-op">,</tt><tt class="py-name">None</tt><tt class="py-op">)</tt> </tt>
+<a name="L498"></a><tt class="py-lineno">498</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">num_args</tt> <tt class="py-op">==</tt> <tt class="py-number">1</tt><tt class="py-op">:</tt> </tt>
+<a name="L499"></a><tt class="py-lineno">499</tt>  <tt class="py-line">            <tt class="py-name">args</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">args</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">,</tt><tt class="py-name">None</tt><tt class="py-op">,</tt><tt class="py-name">None</tt><tt class="py-op">,</tt><tt class="py-name">None</tt><tt class="py-op">,</tt><tt class="py-name">None</tt><tt class="py [...]
+<a name="L500"></a><tt class="py-lineno">500</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">num_args</tt> <tt class="py-op">==</tt> <tt class="py-number">2</tt><tt class="py-op">:</tt> </tt>
+<a name="L501"></a><tt class="py-lineno">501</tt>  <tt class="py-line">            <tt class="py-name">args</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">args</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">,</tt><tt class="py-name">args</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">,</tt><tt class="py-name">None</tt><tt class="py-op">,</tt><tt class="py-name" [...]
+<a name="L502"></a><tt class="py-lineno">502</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">num_args</tt> <tt class="py-op">==</tt> <tt class="py-number">3</tt><tt class="py-op">:</tt> </tt>
+<a name="L503"></a><tt class="py-lineno">503</tt>  <tt class="py-line">            <tt class="py-name">args</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">args</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">,</tt><tt class="py-name">args</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">,</tt><tt class="py-name">args</tt><tt class="py-op">[</tt><tt class="py-numbe [...]
+<a name="L504"></a><tt class="py-lineno">504</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">num_args</tt> <tt class="py-op">==</tt> <tt class="py-number">4</tt><tt class="py-op">:</tt> </tt>
+<a name="L505"></a><tt class="py-lineno">505</tt>  <tt class="py-line">            <tt class="py-name">args</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">args</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">,</tt><tt class="py-name">args</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">,</tt><tt class="py-name">args</tt><tt class="py-op">[</tt><tt class="py-numbe [...]
+<a name="L506"></a><tt class="py-lineno">506</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">num_args</tt> <tt class="py-op">></tt> <tt class="py-number">5</tt><tt class="py-op">:</tt> </tt>
+<a name="L507"></a><tt class="py-lineno">507</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">"Too many arguments!"</tt><tt class="py-op">)</tt> </tt>
+<a name="L508"></a><tt class="py-lineno">508</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">args</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L509"></a><tt class="py-lineno">509</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">"First argument must be set."</tt><tt class="py-op">)</tt> </tt>
+<a name="L510"></a><tt class="py-lineno">510</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">args</tt> </tt>
+</div><a name="L511"></a><tt class="py-lineno">511</tt>  <tt class="py-line"> </tt>
+<a name="SocketListenController.__process_common_args"></a><div id="SocketListenController.__process_common_args-def"><a name="L512"></a><tt class="py-lineno">512</tt> <a class="py-toggle" href="#" id="SocketListenController.__process_common_args-toggle" onclick="return toggle('SocketListenController.__process_common_args');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.TCPController.SocketListenController-class.html#__process_common [...]
+</div><div id="SocketListenController.__process_common_args-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SocketListenController.__process_common_args-expanded"><a name="L513"></a><tt class="py-lineno">513</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">match_groups</tt><tt class="py-op">[</tt><tt class="py-number">2</tt><tt class="py-op">]</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py- [...]
+<a name="L514"></a><tt class="py-lineno">514</tt>  <tt class="py-line">            <tt class="py-name">kw_args</tt><tt class="py-op">[</tt><tt class="py-string">'eval_frequency'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">match_groups</tt><tt class="py-op">[</tt><tt class="py-number">2</tt><tt class="py-op">]</tt> </tt>
+<a name="L515"></a><tt class="py-lineno">515</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">match_groups</tt><tt class="py-op">[</tt><tt class="py-number">3</tt><tt class="py-op">]</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L516"></a><tt class="py-lineno">516</tt>  <tt class="py-line">            <tt class="py-name">kw_args</tt><tt class="py-op">[</tt><tt class="py-string">'temporal_variables'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">match_groups</tt><tt class="py-op">[</tt><tt class="py-number">3</tt><tt class="py-op">]</tt> </tt>
+<a name="L517"></a><tt class="py-lineno">517</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">match_groups</tt><tt class="py-op">[</tt><tt class="py-number">4</tt><tt class="py-op">]</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L518"></a><tt class="py-lineno">518</tt>  <tt class="py-line">            <tt class="py-name">kw_args</tt><tt class="py-op">[</tt><tt class="py-string">'return_type'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">match_groups</tt><tt class="py-op">[</tt><tt class="py-number">4</tt><tt class="py-op">]</tt> </tt>
+</div><a name="L519"></a><tt class="py-lineno">519</tt>  <tt class="py-line"> </tt>
+<a name="SocketListenController.__do_assignment_command"></a><div id="SocketListenController.__do_assignment_command-def"><a name="L520"></a><tt class="py-lineno">520</tt> <a class="py-toggle" href="#" id="SocketListenController.__do_assignment_command-toggle" onclick="return toggle('SocketListenController.__do_assignment_command');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.TCPController.SocketListenController-class.html#__do_ass [...]
+</div><div id="SocketListenController.__do_assignment_command-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SocketListenController.__do_assignment_command-expanded"><a name="L521"></a><tt class="py-lineno">521</tt>  <tt class="py-line">        <tt class="py-name">new_contained_controller</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L522"></a><tt class="py-lineno">522</tt>  <tt class="py-line">        <tt class="py-name">match</tt> <tt class="py-op">=</tt> <tt id="link-117" class="py-name"><a title="VisionEgg.TCPController.SocketListenController" class="py-name" href="#" onclick="return doclink('link-117', 'SocketListenController', 'link-62');">SocketListenController</a></tt><tt class="py-op">.</tt><tt id="link-118" class="py-name"><a title="VisionEgg.TCPController.SocketListenController._re_const" class="p [...]
+<a name="L523"></a><tt class="py-lineno">523</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">match</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L524"></a><tt class="py-lineno">524</tt>  <tt class="py-line">            <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L525"></a><tt class="py-lineno">525</tt>  <tt class="py-line">                <tt class="py-name">match_groups</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__get_five_args</tt><tt class="py-op">(</tt><tt class="py-name">match</tt><tt class="py-op">.</tt><tt class="py-name">group</tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L526"></a><tt class="py-lineno">526</tt>  <tt class="py-line">                <tt class="py-name">kw_args</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L527"></a><tt class="py-lineno">527</tt>  <tt class="py-line">                <tt class="py-name">kw_args</tt><tt class="py-op">[</tt><tt class="py-string">'during_go_value'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">match_groups</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt>
+<a name="L528"></a><tt class="py-lineno">528</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">match_groups</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L529"></a><tt class="py-lineno">529</tt>  <tt class="py-line">                    <tt class="py-name">kw_args</tt><tt class="py-op">[</tt><tt class="py-string">'between_go_value'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">match_groups</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
+<a name="L530"></a><tt class="py-lineno">530</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__process_common_args</tt><tt class="py-op">(</tt><tt class="py-name">kw_args</tt><tt class="py-op">,</tt><tt class="py-name">match_groups</tt><tt class="py-op">)</tt> </tt>
+<a name="L531"></a><tt class="py-lineno">531</tt>  <tt class="py-line">                <tt class="py-name">kw_args</tt><tt class="py-op">.</tt><tt class="py-name">setdefault</tt><tt class="py-op">(</tt><tt class="py-string">'return_type'</tt><tt class="py-op">,</tt><tt class="py-name">require_type</tt><tt class="py-op">)</tt> </tt>
+<a name="L532"></a><tt class="py-lineno">532</tt>  <tt class="py-line">                <tt class="py-name">new_contained_controller</tt> <tt class="py-op">=</tt> <tt id="link-119" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-119', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-120" class="py-name"><a title="VisionEgg.FlowControl" class="py-name" href="#" onclick="return doclink('link-120', 'FlowControl', 'lin [...]
+<a name="L533"></a><tt class="py-lineno">533</tt>  <tt class="py-line">                <tt class="py-name">new_type</tt> <tt class="py-op">=</tt> <tt class="py-name">new_contained_controller</tt><tt class="py-op">.</tt><tt id="link-122" class="py-name"><a title="VisionEgg.FlowControl.Controller.returns_type" class="py-name" href="#" onclick="return doclink('link-122', 'returns_type', 'link-111');">returns_type</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L534"></a><tt class="py-lineno">534</tt>  <tt class="py-line">                <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-123" class="py-name" targets="Function VisionEgg.ParameterTypes.assert_type()=VisionEgg.ParameterTypes-module.html#assert_type,Function VisionEgg.assert_type()=VisionEgg-module.html#assert_type"><a title="VisionEgg.ParameterTypes.assert_type
+VisionEgg.assert_type" class="py-name" href="#" onclick="return doclink('link-123', 'assert_type', 'link-123');">assert_type</a></tt><tt class="py-op">(</tt> <tt class="py-name">new_type</tt><tt class="py-op">,</tt> <tt class="py-name">require_type</tt><tt class="py-op">)</tt> </tt>
+<a name="L535"></a><tt class="py-lineno">535</tt>  <tt class="py-line">            <tt class="py-keyword">except</tt> <tt class="py-name">Exception</tt><tt class="py-op">,</tt> <tt class="py-name">x</tt><tt class="py-op">:</tt> </tt>
+<a name="L536"></a><tt class="py-lineno">536</tt>  <tt class="py-line">                <tt class="py-keyword">import</tt> <tt class="py-name">traceback</tt> </tt>
+<a name="L537"></a><tt class="py-lineno">537</tt>  <tt class="py-line">                <tt class="py-name">traceback</tt><tt class="py-op">.</tt><tt class="py-name">print_exc</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L538"></a><tt class="py-lineno">538</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">socket</tt><tt class="py-op">.</tt><tt class="py-name">send</tt><tt class="py-op">(</tt><tt class="py-string">"Error %s parsing const for %s: %s\n"</tt><tt class="py-op">%</tt><tt class="py-op">(</tt><tt class="py-name">x</tt><tt class="py-op">.</tt><tt class="py-name">__class__</tt><tt class="py-op">,</tt><tt class="py-name">tcp_ [...]
+<a name="L539"></a><tt class="py-lineno">539</tt>  <tt class="py-line">                <tt id="link-124" class="py-name"><a title="VisionEgg.logger" class="py-name" href="#" onclick="return doclink('link-124', 'logger', 'link-51');">logger</a></tt> <tt class="py-op">=</tt> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">getLogger</tt><tt class="py-op">(</tt><tt class="py-string">'VisionEgg.TCPController'</tt><tt class="py-op">)</tt> </tt>
+<a name="L540"></a><tt class="py-lineno">540</tt>  <tt class="py-line">                <tt id="link-125" class="py-name"><a title="VisionEgg.logger" class="py-name" href="#" onclick="return doclink('link-125', 'logger', 'link-51');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">"%s parsing const for %s: %s"</tt><tt class="py-op">%</tt><tt class="py-op">(</tt><tt class="py-name">x</tt><tt class="py-op">.</tt><tt class="py [...]
+<a name="L541"></a><tt class="py-lineno">541</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L542"></a><tt class="py-lineno">542</tt>  <tt class="py-line">            <tt class="py-name">match</tt> <tt class="py-op">=</tt> <tt id="link-126" class="py-name"><a title="VisionEgg.TCPController.SocketListenController" class="py-name" href="#" onclick="return doclink('link-126', 'SocketListenController', 'link-62');">SocketListenController</a></tt><tt class="py-op">.</tt><tt id="link-127" class="py-name"><a title="VisionEgg.TCPController.SocketListenController._re_eval_str" c [...]
+<a name="L543"></a><tt class="py-lineno">543</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">match</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L544"></a><tt class="py-lineno">544</tt>  <tt class="py-line">                <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L545"></a><tt class="py-lineno">545</tt>  <tt class="py-line">                    <tt class="py-name">match_groups</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__get_five_args</tt><tt class="py-op">(</tt><tt class="py-name">match</tt><tt class="py-op">.</tt><tt class="py-name">group</tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L546"></a><tt class="py-lineno">546</tt>  <tt class="py-line">                    <tt class="py-name">kw_args</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L547"></a><tt class="py-lineno">547</tt>  <tt class="py-line">                    <tt class="py-name">kw_args</tt><tt class="py-op">[</tt><tt class="py-string">'during_go_eval_string'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">string</tt><tt class="py-op">.</tt><tt class="py-name">replace</tt><tt class="py-op">(</tt><tt class="py-name">match_groups</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">,</ [...]
+<a name="L548"></a><tt class="py-lineno">548</tt>  <tt class="py-line">                    <tt class="py-keyword">if</tt> <tt class="py-name">match_groups</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L549"></a><tt class="py-lineno">549</tt>  <tt class="py-line">                        <tt class="py-name">kw_args</tt><tt class="py-op">[</tt><tt class="py-string">'between_go_eval_string'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">string</tt><tt class="py-op">.</tt><tt class="py-name">replace</tt><tt class="py-op">(</tt><tt class="py-name">match_groups</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op [...]
+<a name="L550"></a><tt class="py-lineno">550</tt>  <tt class="py-line">                    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__process_common_args</tt><tt class="py-op">(</tt><tt class="py-name">kw_args</tt><tt class="py-op">,</tt><tt class="py-name">match_groups</tt><tt class="py-op">)</tt> </tt>
+<a name="L551"></a><tt class="py-lineno">551</tt>  <tt class="py-line">                    <tt class="py-name">kw_args</tt><tt class="py-op">.</tt><tt class="py-name">setdefault</tt><tt class="py-op">(</tt><tt class="py-string">'return_type'</tt><tt class="py-op">,</tt><tt class="py-name">require_type</tt><tt class="py-op">)</tt> </tt>
+<a name="L552"></a><tt class="py-lineno">552</tt>  <tt class="py-line">                    <tt class="py-name">new_contained_controller</tt> <tt class="py-op">=</tt> <tt id="link-128" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-128', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-129" class="py-name"><a title="VisionEgg.FlowControl" class="py-name" href="#" onclick="return doclink('link-129', 'FlowControl',  [...]
+<a name="L553"></a><tt class="py-lineno">553</tt>  <tt class="py-line">                    <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-op">(</tt><tt class="py-name">new_contained_controller</tt><tt class="py-op">.</tt><tt class="py-name">eval_frequency</tt> <tt class="py-op">&</tt> <tt id="link-131" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-131', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py [...]
+VisionEgg.FlowControl.NOT_DURING_GO" class="py-name" href="#" onclick="return doclink('link-134', 'NOT_DURING_GO', 'link-50');">NOT_DURING_GO</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L554"></a><tt class="py-lineno">554</tt>  <tt class="py-line">                        <tt id="link-135" class="py-name"><a title="VisionEgg.logger" class="py-name" href="#" onclick="return doclink('link-135', 'logger', 'link-51');">logger</a></tt> <tt class="py-op">=</tt> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">getLogger</tt><tt class="py-op">(</tt><tt class="py-string">'VisionEgg.TCPController'</tt><tt class="py-op">)</tt> </tt>
+<a name="L555"></a><tt class="py-lineno">555</tt>  <tt class="py-line">                        <tt id="link-136" class="py-name"><a title="VisionEgg.logger" class="py-name" href="#" onclick="return doclink('link-136', 'logger', 'link-51');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">debug</tt><tt class="py-op">(</tt><tt class="py-string">'Executing "%s" as safety check.'</tt><tt class="py-op">%</tt><tt class="py-op">(</tt><tt class="py-name">kw_args</tt><tt class="py-op"> [...]
+<a name="L556"></a><tt class="py-lineno">556</tt>  <tt class="py-line">                        <tt class="py-name">new_contained_controller</tt><tt class="py-op">.</tt><tt class="py-name">_test_self</tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="L557"></a><tt class="py-lineno">557</tt>  <tt class="py-line">                    <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-op">(</tt><tt class="py-name">new_contained_controller</tt><tt class="py-op">.</tt><tt class="py-name">eval_frequency</tt> <tt class="py-op">&</tt> <tt id="link-137" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-137', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py [...]
+VisionEgg.FlowControl.NOT_BETWEEN_GO" class="py-name" href="#" onclick="return doclink('link-140', 'NOT_BETWEEN_GO', 'link-140');">NOT_BETWEEN_GO</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L558"></a><tt class="py-lineno">558</tt>  <tt class="py-line">                        <tt id="link-141" class="py-name"><a title="VisionEgg.logger" class="py-name" href="#" onclick="return doclink('link-141', 'logger', 'link-51');">logger</a></tt> <tt class="py-op">=</tt> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">getLogger</tt><tt class="py-op">(</tt><tt class="py-string">'VisionEgg.TCPController'</tt><tt class="py-op">)</tt> </tt>
+<a name="L559"></a><tt class="py-lineno">559</tt>  <tt class="py-line">                        <tt id="link-142" class="py-name"><a title="VisionEgg.logger" class="py-name" href="#" onclick="return doclink('link-142', 'logger', 'link-51');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">debug</tt><tt class="py-op">(</tt><tt class="py-string">'Executing "%s" as safety check.'</tt><tt class="py-op">%</tt><tt class="py-op">(</tt><tt class="py-name">kw_args</tt><tt class="py-op"> [...]
+<a name="L560"></a><tt class="py-lineno">560</tt>  <tt class="py-line">                        <tt class="py-name">new_contained_controller</tt><tt class="py-op">.</tt><tt class="py-name">_test_self</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">)</tt> </tt>
+<a name="L561"></a><tt class="py-lineno">561</tt>  <tt class="py-line">                    <tt class="py-name">new_type</tt> <tt class="py-op">=</tt> <tt class="py-name">new_contained_controller</tt><tt class="py-op">.</tt><tt id="link-143" class="py-name"><a title="VisionEgg.FlowControl.Controller.returns_type" class="py-name" href="#" onclick="return doclink('link-143', 'returns_type', 'link-111');">returns_type</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L562"></a><tt class="py-lineno">562</tt>  <tt class="py-line">                    <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-144" class="py-name"><a title="VisionEgg.ParameterTypes.assert_type
+VisionEgg.assert_type" class="py-name" href="#" onclick="return doclink('link-144', 'assert_type', 'link-123');">assert_type</a></tt><tt class="py-op">(</tt> <tt class="py-name">new_type</tt><tt class="py-op">,</tt> <tt class="py-name">require_type</tt><tt class="py-op">)</tt> </tt>
+<a name="L563"></a><tt class="py-lineno">563</tt>  <tt class="py-line">                <tt class="py-keyword">except</tt> <tt class="py-name">Exception</tt><tt class="py-op">,</tt> <tt class="py-name">x</tt><tt class="py-op">:</tt> </tt>
+<a name="L564"></a><tt class="py-lineno">564</tt>  <tt class="py-line">                    <tt class="py-name">new_contained_controller</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L565"></a><tt class="py-lineno">565</tt>  <tt class="py-line">                    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">socket</tt><tt class="py-op">.</tt><tt class="py-name">send</tt><tt class="py-op">(</tt><tt class="py-string">"Error %s parsing eval_str for %s: %s\n"</tt><tt class="py-op">%</tt><tt class="py-op">(</tt><tt class="py-name">x</tt><tt class="py-op">.</tt><tt class="py-name">__class__</tt><tt class="py-op">,</tt><tt class="py-nam [...]
+<a name="L566"></a><tt class="py-lineno">566</tt>  <tt class="py-line">                    <tt id="link-145" class="py-name"><a title="VisionEgg.logger" class="py-name" href="#" onclick="return doclink('link-145', 'logger', 'link-51');">logger</a></tt> <tt class="py-op">=</tt> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">getLogger</tt><tt class="py-op">(</tt><tt class="py-string">'VisionEgg.TCPController'</tt><tt class="py-op">)</tt> </tt>
+<a name="L567"></a><tt class="py-lineno">567</tt>  <tt class="py-line">                    <tt id="link-146" class="py-name"><a title="VisionEgg.logger" class="py-name" href="#" onclick="return doclink('link-146', 'logger', 'link-51');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">"%s parsing eval_str for %s: %s"</tt><tt class="py-op">%</tt><tt class="py-op">(</tt><tt class="py-name">x</tt><tt class="py-op">.</tt><tt cl [...]
+<a name="L568"></a><tt class="py-lineno">568</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L569"></a><tt class="py-lineno">569</tt>  <tt class="py-line">                <tt class="py-name">match</tt> <tt class="py-op">=</tt> <tt id="link-147" class="py-name"><a title="VisionEgg.TCPController.SocketListenController" class="py-name" href="#" onclick="return doclink('link-147', 'SocketListenController', 'link-62');">SocketListenController</a></tt><tt class="py-op">.</tt><tt id="link-148" class="py-name"><a title="VisionEgg.TCPController.SocketListenController._re_exec_st [...]
+<a name="L570"></a><tt class="py-lineno">570</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">match</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L571"></a><tt class="py-lineno">571</tt>  <tt class="py-line">                    <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L572"></a><tt class="py-lineno">572</tt>  <tt class="py-line">                        <tt class="py-name">kw_args</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L573"></a><tt class="py-lineno">573</tt>  <tt class="py-line">                        <tt class="py-name">match_groups</tt> <tt class="py-op">=</tt> <tt class="py-name">match</tt><tt class="py-op">.</tt><tt class="py-name">groups</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L574"></a><tt class="py-lineno">574</tt>  <tt class="py-line">                        <tt class="py-keyword">if</tt> <tt class="py-name">match_groups</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-string">'*'</tt><tt class="py-op">:</tt> </tt>
+<a name="L575"></a><tt class="py-lineno">575</tt>  <tt class="py-line">                            <tt class="py-name">kw_args</tt><tt class="py-op">[</tt><tt class="py-string">'restricted_namespace'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L576"></a><tt class="py-lineno">576</tt>  <tt class="py-line">                        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L577"></a><tt class="py-lineno">577</tt>  <tt class="py-line">                            <tt class="py-name">kw_args</tt><tt class="py-op">[</tt><tt class="py-string">'restricted_namespace'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L578"></a><tt class="py-lineno">578</tt>  <tt class="py-line">                        <tt class="py-name">match_groups</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__get_five_args</tt><tt class="py-op">(</tt><tt class="py-name">match_groups</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L579"></a><tt class="py-lineno">579</tt>  <tt class="py-line">                        <tt class="py-name">tmp</tt> <tt class="py-op">=</tt> <tt class="py-name">string</tt><tt class="py-op">.</tt><tt class="py-name">replace</tt><tt class="py-op">(</tt><tt class="py-name">match_groups</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">,</tt><tt class="py-string">r"\n"</tt><tt class="py-op">,</tt><tt class="py-string">"\n"</tt><tt clas [...]
+<a name="L580"></a><tt class="py-lineno">580</tt>  <tt class="py-line">                        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt id="link-149" class="py-name"><a title="VisionEgg.TCPController.SocketListenController" class="py-name" href="#" onclick="return doclink('link-149', 'SocketListenController', 'link-62');">SocketListenController</a></tt><tt class="py-op">.</tt><tt id="link-150" class="py-name"><a title="VisionEgg.TCPController.SocketListenControl [...]
+<a name="L581"></a><tt class="py-lineno">581</tt>  <tt class="py-line">                            <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">"x is not defined for during_go_exec_string"</tt><tt class="py-op">)</tt> </tt>
+<a name="L582"></a><tt class="py-lineno">582</tt>  <tt class="py-line">                        <tt class="py-name">kw_args</tt><tt class="py-op">[</tt><tt class="py-string">'during_go_exec_string'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">tmp</tt> </tt>
+<a name="L583"></a><tt class="py-lineno">583</tt>  <tt class="py-line">                        <tt class="py-keyword">if</tt> <tt class="py-name">match_groups</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L584"></a><tt class="py-lineno">584</tt>  <tt class="py-line">                            <tt class="py-name">tmp</tt> <tt class="py-op">=</tt> <tt class="py-name">string</tt><tt class="py-op">.</tt><tt class="py-name">replace</tt><tt class="py-op">(</tt><tt class="py-name">match_groups</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">,</tt><tt class="py-string">r"\n"</tt><tt class="py-op">,</tt><tt class="py-string">"\n"</tt><tt  [...]
+<a name="L585"></a><tt class="py-lineno">585</tt>  <tt class="py-line">                            <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt id="link-151" class="py-name"><a title="VisionEgg.TCPController.SocketListenController" class="py-name" href="#" onclick="return doclink('link-151', 'SocketListenController', 'link-62');">SocketListenController</a></tt><tt class="py-op">.</tt><tt id="link-152" class="py-name"><a title="VisionEgg.TCPController.SocketListenCon [...]
+<a name="L586"></a><tt class="py-lineno">586</tt>  <tt class="py-line">                                <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">"x is not defined for between_go_exec_string"</tt><tt class="py-op">)</tt> </tt>
+<a name="L587"></a><tt class="py-lineno">587</tt>  <tt class="py-line">                            <tt class="py-name">kw_args</tt><tt class="py-op">[</tt><tt class="py-string">'between_go_exec_string'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">tmp</tt> </tt>
+<a name="L588"></a><tt class="py-lineno">588</tt>  <tt class="py-line">                        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__process_common_args</tt><tt class="py-op">(</tt><tt class="py-name">kw_args</tt><tt class="py-op">,</tt><tt class="py-name">match_groups</tt><tt class="py-op">)</tt> </tt>
+<a name="L589"></a><tt class="py-lineno">589</tt>  <tt class="py-line">                        <tt class="py-name">kw_args</tt><tt class="py-op">.</tt><tt class="py-name">setdefault</tt><tt class="py-op">(</tt><tt class="py-string">'return_type'</tt><tt class="py-op">,</tt><tt class="py-name">require_type</tt><tt class="py-op">)</tt> </tt>
+<a name="L590"></a><tt class="py-lineno">590</tt>  <tt class="py-line">                        <tt class="py-name">new_contained_controller</tt> <tt class="py-op">=</tt> <tt id="link-153" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-153', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-154" class="py-name"><a title="VisionEgg.FlowControl" class="py-name" href="#" onclick="return doclink('link-154', 'FlowContro [...]
+<a name="L591"></a><tt class="py-lineno">591</tt>  <tt class="py-line">                        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-op">(</tt><tt class="py-name">new_contained_controller</tt><tt class="py-op">.</tt><tt class="py-name">eval_frequency</tt> <tt class="py-op">&</tt> <tt id="link-156" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-156', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class [...]
+VisionEgg.FlowControl.NOT_DURING_GO" class="py-name" href="#" onclick="return doclink('link-159', 'NOT_DURING_GO', 'link-50');">NOT_DURING_GO</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L592"></a><tt class="py-lineno">592</tt>  <tt class="py-line">                            <tt id="link-160" class="py-name"><a title="VisionEgg.logger" class="py-name" href="#" onclick="return doclink('link-160', 'logger', 'link-51');">logger</a></tt> <tt class="py-op">=</tt> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">getLogger</tt><tt class="py-op">(</tt><tt class="py-string">'VisionEgg.TCPController'</tt><tt class="py-op">)</tt> </tt>
+<a name="L593"></a><tt class="py-lineno">593</tt>  <tt class="py-line">                            <tt id="link-161" class="py-name"><a title="VisionEgg.logger" class="py-name" href="#" onclick="return doclink('link-161', 'logger', 'link-51');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">debug</tt><tt class="py-op">(</tt><tt class="py-string">'Executing "%s" as safety check.'</tt><tt class="py-op">%</tt><tt class="py-op">(</tt><tt class="py-name">kw_args</tt><tt class="py- [...]
+<a name="L594"></a><tt class="py-lineno">594</tt>  <tt class="py-line">                            <tt class="py-name">new_contained_controller</tt><tt class="py-op">.</tt><tt class="py-name">_test_self</tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="L595"></a><tt class="py-lineno">595</tt>  <tt class="py-line">                        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-op">(</tt><tt class="py-name">new_contained_controller</tt><tt class="py-op">.</tt><tt class="py-name">eval_frequency</tt> <tt class="py-op">&</tt> <tt id="link-162" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-162', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class [...]
+VisionEgg.FlowControl.NOT_BETWEEN_GO" class="py-name" href="#" onclick="return doclink('link-165', 'NOT_BETWEEN_GO', 'link-140');">NOT_BETWEEN_GO</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L596"></a><tt class="py-lineno">596</tt>  <tt class="py-line">                            <tt id="link-166" class="py-name"><a title="VisionEgg.logger" class="py-name" href="#" onclick="return doclink('link-166', 'logger', 'link-51');">logger</a></tt> <tt class="py-op">=</tt> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">getLogger</tt><tt class="py-op">(</tt><tt class="py-string">'VisionEgg.TCPController'</tt><tt class="py-op">)</tt> </tt>
+<a name="L597"></a><tt class="py-lineno">597</tt>  <tt class="py-line">                            <tt id="link-167" class="py-name"><a title="VisionEgg.logger" class="py-name" href="#" onclick="return doclink('link-167', 'logger', 'link-51');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">debug</tt><tt class="py-op">(</tt><tt class="py-string">'Executing "%s" as safety check.'</tt><tt class="py-op">%</tt><tt class="py-op">(</tt><tt class="py-name">kw_args</tt><tt class="py- [...]
+<a name="L598"></a><tt class="py-lineno">598</tt>  <tt class="py-line">                            <tt class="py-name">new_contained_controller</tt><tt class="py-op">.</tt><tt class="py-name">_test_self</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">)</tt> </tt>
+<a name="L599"></a><tt class="py-lineno">599</tt>  <tt class="py-line">                        <tt class="py-name">new_type</tt> <tt class="py-op">=</tt> <tt class="py-name">new_contained_controller</tt><tt class="py-op">.</tt><tt id="link-168" class="py-name"><a title="VisionEgg.FlowControl.Controller.returns_type" class="py-name" href="#" onclick="return doclink('link-168', 'returns_type', 'link-111');">returns_type</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L600"></a><tt class="py-lineno">600</tt>  <tt class="py-line">                        <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-169" class="py-name"><a title="VisionEgg.ParameterTypes.assert_type
+VisionEgg.assert_type" class="py-name" href="#" onclick="return doclink('link-169', 'assert_type', 'link-123');">assert_type</a></tt><tt class="py-op">(</tt> <tt class="py-name">new_type</tt><tt class="py-op">,</tt> <tt class="py-name">require_type</tt><tt class="py-op">)</tt> </tt>
+<a name="L601"></a><tt class="py-lineno">601</tt>  <tt class="py-line">                    <tt class="py-keyword">except</tt> <tt class="py-name">Exception</tt><tt class="py-op">,</tt> <tt class="py-name">x</tt><tt class="py-op">:</tt> </tt>
+<a name="L602"></a><tt class="py-lineno">602</tt>  <tt class="py-line">                        <tt class="py-name">new_contained_controller</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L603"></a><tt class="py-lineno">603</tt>  <tt class="py-line">                        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">socket</tt><tt class="py-op">.</tt><tt class="py-name">send</tt><tt class="py-op">(</tt><tt class="py-string">"Error %s parsing exec_str for %s: %s\n"</tt><tt class="py-op">%</tt><tt class="py-op">(</tt><tt class="py-name">x</tt><tt class="py-op">.</tt><tt class="py-name">__class__</tt><tt class="py-op">,</tt><tt class="py [...]
+<a name="L604"></a><tt class="py-lineno">604</tt>  <tt class="py-line">                        <tt id="link-170" class="py-name"><a title="VisionEgg.logger" class="py-name" href="#" onclick="return doclink('link-170', 'logger', 'link-51');">logger</a></tt> <tt class="py-op">=</tt> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">getLogger</tt><tt class="py-op">(</tt><tt class="py-string">'VisionEgg.TCPController'</tt><tt class="py-op">)</tt> </tt>
+<a name="L605"></a><tt class="py-lineno">605</tt>  <tt class="py-line">                        <tt id="link-171" class="py-name"><a title="VisionEgg.logger" class="py-name" href="#" onclick="return doclink('link-171', 'logger', 'link-51');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">debug</tt><tt class="py-op">(</tt><tt class="py-string">"%s parsing exec_str for %s: %s"</tt><tt class="py-op">%</tt><tt class="py-op">(</tt><tt class="py-name">x</tt><tt class="py-op">.</tt>< [...]
+<a name="L606"></a><tt class="py-lineno">606</tt>  <tt class="py-line">                <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L607"></a><tt class="py-lineno">607</tt>  <tt class="py-line">                    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">socket</tt><tt class="py-op">.</tt><tt class="py-name">send</tt><tt class="py-op">(</tt><tt class="py-string">"Error: Invalid assignment command for %s: %s\n"</tt><tt class="py-op">%</tt><tt class="py-op">(</tt><tt class="py-name">tcp_name</tt><tt class="py-op">,</tt><tt class="py-name">command</tt><tt class="py-op">)</tt><tt  [...]
+<a name="L608"></a><tt class="py-lineno">608</tt>  <tt class="py-line">                    <tt id="link-172" class="py-name"><a title="VisionEgg.logger" class="py-name" href="#" onclick="return doclink('link-172', 'logger', 'link-51');">logger</a></tt> <tt class="py-op">=</tt> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">getLogger</tt><tt class="py-op">(</tt><tt class="py-string">'VisionEgg.TCPController'</tt><tt class="py-op">)</tt> </tt>
+<a name="L609"></a><tt class="py-lineno">609</tt>  <tt class="py-line">                    <tt id="link-173" class="py-name"><a title="VisionEgg.logger" class="py-name" href="#" onclick="return doclink('link-173', 'logger', 'link-51');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">"Invalid assignment command for %s: %s"</tt><tt class="py-op">%</tt><tt class="py-op">(</tt><tt class="py-name">tcp_name</tt><tt class="py-op [...]
+<a name="L610"></a><tt class="py-lineno">610</tt>  <tt class="py-line">        <tt class="py-comment"># create controller based on last command_queue</tt> </tt>
+<a name="L611"></a><tt class="py-lineno">611</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">new_contained_controller</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L612"></a><tt class="py-lineno">612</tt>  <tt class="py-line">            <tt class="py-op">(</tt><tt class="py-name">controller</tt><tt class="py-op">,</tt> <tt class="py-name">name_re_str</tt><tt class="py-op">,</tt> <tt class="py-name">parser</tt><tt class="py-op">,</tt> <tt class="py-name">require_type</tt><tt class="py-op">)</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">names</tt><tt class="py-op">[</tt><tt class="py- [...]
+<a name="L613"></a><tt class="py-lineno">613</tt>  <tt class="py-line">            <tt class="py-name">controller</tt><tt class="py-op">.</tt><tt id="link-174" class="py-name" targets="Method VisionEgg.FlowControl.EncapsulatedController.set_new_controller()=VisionEgg.FlowControl.EncapsulatedController-class.html#set_new_controller"><a title="VisionEgg.FlowControl.EncapsulatedController.set_new_controller" class="py-name" href="#" onclick="return doclink('link-174', 'set_new_controller',  [...]
+</div><a name="L614"></a><tt class="py-lineno">614</tt>  <tt class="py-line"> </tt>
+<a name="SocketListenController.during_go_eval"></a><div id="SocketListenController.during_go_eval-def"><a name="L615"></a><tt class="py-lineno">615</tt> <a class="py-toggle" href="#" id="SocketListenController.during_go_eval-toggle" onclick="return toggle('SocketListenController.during_go_eval');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.TCPController.SocketListenController-class.html#during_go_eval">during_go_eval</a><tt class= [...]
+</div><div id="SocketListenController.during_go_eval-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SocketListenController.during_go_eval-expanded"><a name="L616"></a><tt class="py-lineno">616</tt>  <tt class="py-line">        <tt class="py-docstring">"""Check socket and act accordingly. Called by instance of Presentation.</tt> </tt>
+<a name="L617"></a><tt class="py-lineno">617</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L618"></a><tt class="py-lineno">618</tt>  <tt class="py-line"><tt class="py-docstring">        Overrides base class Controller method."""</tt> </tt>
+<a name="L619"></a><tt class="py-lineno">619</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__check_socket</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L620"></a><tt class="py-lineno">620</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt>
+</div><a name="L621"></a><tt class="py-lineno">621</tt>  <tt class="py-line"> </tt>
+<a name="SocketListenController.between_go_eval"></a><div id="SocketListenController.between_go_eval-def"><a name="L622"></a><tt class="py-lineno">622</tt> <a class="py-toggle" href="#" id="SocketListenController.between_go_eval-toggle" onclick="return toggle('SocketListenController.between_go_eval');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.TCPController.SocketListenController-class.html#between_go_eval">between_go_eval</a><tt  [...]
+</div><div id="SocketListenController.between_go_eval-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="SocketListenController.between_go_eval-expanded"><a name="L623"></a><tt class="py-lineno">623</tt>  <tt class="py-line">        <tt class="py-docstring">"""Check socket and act accordingly. Called by instance of Presentation.</tt> </tt>
+<a name="L624"></a><tt class="py-lineno">624</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L625"></a><tt class="py-lineno">625</tt>  <tt class="py-line"><tt class="py-docstring">        Overrides base class Controller method."""</tt> </tt>
+<a name="L626"></a><tt class="py-lineno">626</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__check_socket</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L627"></a><tt class="py-lineno">627</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt>
+</div></div><a name="L628"></a><tt class="py-lineno">628</tt>  <tt class="py-line"> </tt>
+<a name="TCPController"></a><div id="TCPController-def"><a name="L629"></a><tt class="py-lineno">629</tt> <a class="py-toggle" href="#" id="TCPController-toggle" onclick="return toggle('TCPController');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.TCPController.TCPController-class.html">TCPController</a><tt class="py-op">(</tt><tt class="py-base-class">VisionEgg</tt><tt class="py-op">.</tt><tt class="py-base-class">FlowControl</tt><tt [...]
+</div><div id="TCPController-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="TCPController-expanded"><a name="L630"></a><tt class="py-lineno">630</tt>  <tt class="py-line">    <tt class="py-docstring">"""Control a parameter from a network (TCP) connection.</tt> </tt>
+<a name="L631"></a><tt class="py-lineno">631</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L632"></a><tt class="py-lineno">632</tt>  <tt class="py-line"><tt class="py-docstring">    Subclass of Controller to allow control of Parameters via the</tt> </tt>
+<a name="L633"></a><tt class="py-lineno">633</tt>  <tt class="py-line"><tt class="py-docstring">    network.</tt> </tt>
+<a name="L634"></a><tt class="py-lineno">634</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L635"></a><tt class="py-lineno">635</tt>  <tt class="py-line"><tt class="py-docstring">    This class is analagous to VisionEgg.PyroHelpers.PyroEncapsulatedController.</tt> </tt>
+<a name="L636"></a><tt class="py-lineno">636</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L637"></a><tt class="py-lineno">637</tt>  <tt class="py-line">    <tt class="py-comment"># Contains another controller...</tt> </tt>
+<a name="TCPController.__init__"></a><div id="TCPController.__init__-def"><a name="L638"></a><tt class="py-lineno">638</tt> <a class="py-toggle" href="#" id="TCPController.__init__-toggle" onclick="return toggle('TCPController.__init__');">-</a><tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.TCPController.TCPController-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class [...]
+</div><div id="TCPController.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="TCPController.__init__-expanded"><a name="L639"></a><tt class="py-lineno">639</tt>  <tt class="py-line">        <tt class="py-docstring">"""Instantiated by SocketListenController.</tt> </tt>
+<a name="L640"></a><tt class="py-lineno">640</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L641"></a><tt class="py-lineno">641</tt>  <tt class="py-line"><tt class="py-docstring">        Users should create instance by using method</tt> </tt>
+<a name="L642"></a><tt class="py-lineno">642</tt>  <tt class="py-line"><tt class="py-docstring">        create_tcp_controller of class SocketListenController."""</tt> </tt>
+<a name="L643"></a><tt class="py-lineno">643</tt>  <tt class="py-line">        <tt id="link-175" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-175', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-176" class="py-name"><a title="VisionEgg.FlowControl" class="py-name" href="#" onclick="return doclink('link-176', 'FlowControl', 'link-4');">FlowControl</a></tt><tt class="py-op">.</tt><tt id="link-177" class="py-nam [...]
+VisionEgg.Configuration.Config.__init__
+VisionEgg.Core.FixationSpot.__init__
+VisionEgg.Core.FrameTimer.__init__
+VisionEgg.Core.ModelView.__init__
+VisionEgg.Core.OrthographicProjection.__init__
+VisionEgg.Core.OrthographicProjectionNoZClip.__init__
+VisionEgg.Core.PerspectiveProjection.__init__
+VisionEgg.Core.Projection.__init__
+VisionEgg.Core.ProjectionBaseClass.__init__
+VisionEgg.Core.Screen.__init__
+VisionEgg.Core.SimplePerspectiveProjection.__init__
+VisionEgg.Core.Stimulus.__init__
+VisionEgg.Core.Viewport.__init__
+VisionEgg.Daq.Channel.__init__
+VisionEgg.Daq.DaqMode.__init__
+VisionEgg.Daq.Device.__init__
+VisionEgg.Daq.Functionality.__init__
+VisionEgg.Daq.SignalType.__init__
+VisionEgg.DaqKeyboard.KeyboardTriggerInController.__init__
+VisionEgg.DaqLPT.LPTChannel.__init__
+VisionEgg.DaqLPT.LPTDevice.__init__
+VisionEgg.DaqLPT.LPTTriggerInController.__init__
+VisionEgg.DaqLPT.LPTTriggerOutController.__init__
+VisionEgg.Deprecated.Message.__init__
+VisionEgg.Dots.DotArea2D.__init__
+VisionEgg.FlowControl.ConstantController.__init__
+VisionEgg.FlowControl.Controller.__init__
+VisionEgg.FlowControl.EncapsulatedController.__init__
+VisionEgg.FlowControl.EvalStringController.__init__
+VisionEgg.FlowControl.ExecStringController.__init__
+VisionEgg.FlowControl.FunctionController.__init__
+VisionEgg.FlowControl.Presentation.__init__
+VisionEgg.GLTrace.Wrapper.__init__
+VisionEgg.GUI.AppWindow.__init__
+VisionEgg.GUI.GetKeypressDialog.__init__
+VisionEgg.GUI.GraphicsConfigurationWindow.__init__
+VisionEgg.GUI.InfoFrame.__init__
+VisionEgg.GUI.ProgressBar.__init__
+VisionEgg.GUI.ToplevelDialog.__init__
+VisionEgg.Gratings.SinGrating2D.__init__
+VisionEgg.Gratings.SinGrating3D.__init__
+VisionEgg.MoreStimuli.Arrow.__init__
+VisionEgg.MoreStimuli.FilledCircle.__init__
+VisionEgg.MoreStimuli.Rectangle3D.__init__
+VisionEgg.MoreStimuli.Target2D.__init__
+VisionEgg.ParameterTypes.AnyOf.__init__
+VisionEgg.ParameterTypes.Instance.__init__
+VisionEgg.ParameterTypes.Sequence.__init__
+VisionEgg.ParameterTypes.SubClass.__init__
+VisionEgg.PyroApps.AST_ext.AST_Visitor.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalMetaParameters.__init__
+VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.__init__
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.__init__
+VisionEgg.PyroApps.DropinGUI.DropinMetaParameters.__init__
+VisionEgg.PyroApps.DropinServer.DropinMetaController.__init__
+VisionEgg.PyroApps.EPhysGUI.AppWindow.__init__
+VisionEgg.PyroApps.EPhysGUI.BarButton.__init__
+VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase.__init__
+VisionEgg.PyroApps.EPhysGUI.GammaFrame.__init__
+VisionEgg.PyroApps.EPhysGUI.ImageSequenceLauncher.__init__
+VisionEgg.PyroApps.EPhysGUI.Loop.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopContainedObject.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopParamDialog.__init__
+VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.__init__
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.__init__
+VisionEgg.PyroApps.EPhysServer.EPhysServer.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingMetaParameters.__init__
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.GridGUI.GridControlFrame.__init__
+VisionEgg.PyroApps.GridGUI.GridMetaParameters.__init__
+VisionEgg.PyroApps.GridServer.GridMetaController.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetMetaParameters.__init__
+VisionEgg.PyroApps.MouseTargetServer.MousePositionController.__init__
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetOrientationController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetPositionController.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.CallbackEntry.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionParameters.__init__
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingMetaParameters.__init__
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumMetaParameters.__init__
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.__init__
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.__init__
+VisionEgg.PyroApps.TargetGUI.TargetMetaParameters.__init__
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.__init__
+VisionEgg.PyroClient.PyroClient.__init__
+VisionEgg.PyroHelpers.PyroConstantController.__init__
+VisionEgg.PyroHelpers.PyroEncapsulatedController.__init__
+VisionEgg.PyroHelpers.PyroEvalStringController.__init__
+VisionEgg.PyroHelpers.PyroExecStringController.__init__
+VisionEgg.PyroHelpers.PyroListenController.__init__
+VisionEgg.PyroHelpers.PyroLocalDictController.__init__
+VisionEgg.PyroHelpers.PyroServer.__init__
+VisionEgg.QuickTime.MovieTexture.__init__
+VisionEgg.ResponseControl.KeyboardResponseController.__init__
+VisionEgg.ResponseControl.ResponseController.__init__
+VisionEgg.SphereMap.AzElGrid.__init__
+VisionEgg.SphereMap.SphereGrating.__init__
+VisionEgg.SphereMap.SphereMap.__init__
+VisionEgg.SphereMap.SphereWindow.__init__
+VisionEgg.TCPController.SocketListenController.__init__
+VisionEgg.TCPController.TCPController.__init__
+VisionEgg.TCPController.TCPServer.__init__
+VisionEgg.Text.BitmapText.__init__
+VisionEgg.Text.GlutTextBase.__init__
+VisionEgg.Text.StrokeText.__init__
+VisionEgg.Text.Text.__init__
+VisionEgg.Textures.FixationCross.__init__
+VisionEgg.Textures.Mask2D.__init__
+VisionEgg.Textures.SpinningDrum.__init__
+VisionEgg.Textures.Texture.__init__
+VisionEgg.Textures.TextureFromFile.__init__
+VisionEgg.Textures.TextureObject.__init__
+VisionEgg.Textures.TextureStimulusBaseClass.__init__
+VisionEgg.ThreeDeeMath.TransformMatrix.__init__
+VisionEgg.WrappedText.WrappedText.__init__
+VisionEgg.qtmovie.Movie.__init__
+VisionEgg.qtmovie.Rect.__init__" class="py-name" href="#" onclick="return doclink('link-178', '__init__', 'link-17');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt><tt class="py-name">initial_controller</tt><tt class="py-op">)</tt> </tt>
+<a name="L644"></a><tt class="py-lineno">644</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">tcp_name</tt> <tt class="py-op">=</tt> <tt class="py-name">tcp_name</tt> </tt>
+</div><a name="L645"></a><tt class="py-lineno">645</tt>  <tt class="py-line"> </tt>
+<a name="TCPController.__str__"></a><div id="TCPController.__str__-def"><a name="L646"></a><tt class="py-lineno">646</tt> <a class="py-toggle" href="#" id="TCPController.__str__-toggle" onclick="return toggle('TCPController.__str__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.TCPController.TCPController-class.html#__str__">__str__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">: [...]
+</div><div id="TCPController.__str__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="TCPController.__str__-expanded"><a name="L647"></a><tt class="py-lineno">647</tt>  <tt class="py-line">        <tt class="py-name">value</tt> <tt class="py-op">=</tt> <tt class="py-string">""</tt> </tt>
+<a name="L648"></a><tt class="py-lineno">648</tt>  <tt class="py-line">        <tt class="py-name">my_class</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">contained_controller</tt><tt class="py-op">.</tt><tt class="py-name">__class__</tt> </tt>
+<a name="L649"></a><tt class="py-lineno">649</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">my_class</tt> <tt class="py-op">==</tt> <tt id="link-179" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-179', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-180" class="py-name"><a title="VisionEgg.FlowControl" class="py-name" href="#" onclick="return doclink('link-180', 'FlowContro [...]
+<a name="L650"></a><tt class="py-lineno">650</tt>  <tt class="py-line">            <tt class="py-name">value</tt> <tt class="py-op">+=</tt> <tt class="py-string">"const( "</tt> </tt>
+<a name="L651"></a><tt class="py-lineno">651</tt>  <tt class="py-line">            <tt class="py-name">value</tt> <tt class="py-op">+=</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">contained_controller</tt><tt class="py-op">.</tt><tt id="link-182" class="py-name" targets="Method VisionEgg.FlowControl.ConstantController.get_during_go_value()=VisionEgg.FlowControl.ConstantController-class.html#get_during_go [...]
+<a name="L652"></a><tt class="py-lineno">652</tt>  <tt class="py-line">            <tt class="py-name">value</tt> <tt class="py-op">+=</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">contained_controller</tt><tt class="py-op">.</tt><tt id="link-183" class="py-name" targets="Method VisionEgg.FlowControl.ConstantController.get_between_go_value()=VisionEgg.FlowControl.ConstantController-class.html#get_between_ [...]
+<a name="L653"></a><tt class="py-lineno">653</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">my_class</tt> <tt class="py-op">==</tt> <tt id="link-184" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-184', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-185" class="py-name"><a title="VisionEgg.FlowControl" class="py-name" href="#" onclick="return doclink('link-185', 'FlowCont [...]
+<a name="L654"></a><tt class="py-lineno">654</tt>  <tt class="py-line">            <tt class="py-name">value</tt> <tt class="py-op">+=</tt> <tt class="py-string">"eval_str( "</tt> </tt>
+<a name="L655"></a><tt class="py-lineno">655</tt>  <tt class="py-line">            <tt class="py-name">str_val</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">contained_controller</tt><tt class="py-op">.</tt><tt id="link-187" class="py-name" targets="Method VisionEgg.FlowControl.EvalStringController.get_during_go_eval_string()=VisionEgg.FlowControl.EvalStringController-class.html#get_during_go_eval_string"><a title="VisionEgg.FlowCon [...]
+<a name="L656"></a><tt class="py-lineno">656</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">str_val</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L657"></a><tt class="py-lineno">657</tt>  <tt class="py-line">                <tt class="py-name">value</tt> <tt class="py-op">+=</tt> <tt class="py-string">"None, "</tt> </tt>
+<a name="L658"></a><tt class="py-lineno">658</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L659"></a><tt class="py-lineno">659</tt>  <tt class="py-line">                <tt class="py-name">value</tt> <tt class="py-op">+=</tt> <tt class="py-string">'"'</tt> <tt class="py-op">+</tt> <tt class="py-name">string</tt><tt class="py-op">.</tt><tt class="py-name">replace</tt><tt class="py-op">(</tt><tt class="py-name">str_val</tt><tt class="py-op">,</tt><tt class="py-string">"\n"</tt><tt class="py-op">,</tt><tt class="py-string">r"\n"</tt><tt class="py-op">)</tt> <tt class="py [...]
+<a name="L660"></a><tt class="py-lineno">660</tt>  <tt class="py-line">            <tt class="py-name">str_val</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">contained_controller</tt><tt class="py-op">.</tt><tt id="link-188" class="py-name" targets="Method VisionEgg.FlowControl.EvalStringController.get_between_go_eval_string()=VisionEgg.FlowControl.EvalStringController-class.html#get_between_go_eval_string"><a title="VisionEgg.FlowC [...]
+<a name="L661"></a><tt class="py-lineno">661</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">str_val</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L662"></a><tt class="py-lineno">662</tt>  <tt class="py-line">                <tt class="py-name">value</tt> <tt class="py-op">+=</tt> <tt class="py-string">"None, "</tt> </tt>
+<a name="L663"></a><tt class="py-lineno">663</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L664"></a><tt class="py-lineno">664</tt>  <tt class="py-line">                <tt class="py-name">value</tt> <tt class="py-op">+=</tt> <tt class="py-string">'"'</tt> <tt class="py-op">+</tt> <tt class="py-name">string</tt><tt class="py-op">.</tt><tt class="py-name">replace</tt><tt class="py-op">(</tt><tt class="py-name">str_val</tt><tt class="py-op">,</tt><tt class="py-string">"\n"</tt><tt class="py-op">,</tt><tt class="py-string">r"\n"</tt><tt class="py-op">)</tt> <tt class="py [...]
+<a name="L665"></a><tt class="py-lineno">665</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">my_class</tt> <tt class="py-op">==</tt> <tt id="link-189" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-189', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-190" class="py-name"><a title="VisionEgg.FlowControl" class="py-name" href="#" onclick="return doclink('link-190', 'FlowCont [...]
+<a name="L666"></a><tt class="py-lineno">666</tt>  <tt class="py-line">            <tt class="py-name">value</tt> <tt class="py-op">+=</tt> <tt class="py-string">"exec_str("</tt> </tt>
+<a name="L667"></a><tt class="py-lineno">667</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">contained_controller</tt><tt class="py-op">.</tt><tt class="py-name">restricted_namespace</tt><tt class="py-op">:</tt> </tt>
+<a name="L668"></a><tt class="py-lineno">668</tt>  <tt class="py-line">                <tt class="py-name">value</tt> <tt class="py-op">+=</tt> <tt class="py-string">" "</tt> </tt>
+<a name="L669"></a><tt class="py-lineno">669</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> <tt class="py-comment"># unrestricted</tt> </tt>
+<a name="L670"></a><tt class="py-lineno">670</tt>  <tt class="py-line">                <tt class="py-name">value</tt> <tt class="py-op">+=</tt> <tt class="py-string">"* "</tt> </tt>
+<a name="L671"></a><tt class="py-lineno">671</tt>  <tt class="py-line">            <tt class="py-name">str_val</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">contained_controller</tt><tt class="py-op">.</tt><tt id="link-192" class="py-name" targets="Method VisionEgg.FlowControl.ExecStringController.get_during_go_exec_string()=VisionEgg.FlowControl.ExecStringController-class.html#get_during_go_exec_string"><a title="VisionEgg.FlowCon [...]
+<a name="L672"></a><tt class="py-lineno">672</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">str_val</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L673"></a><tt class="py-lineno">673</tt>  <tt class="py-line">                <tt class="py-name">value</tt> <tt class="py-op">+=</tt> <tt class="py-string">"None, "</tt> </tt>
+<a name="L674"></a><tt class="py-lineno">674</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L675"></a><tt class="py-lineno">675</tt>  <tt class="py-line">                <tt class="py-name">value</tt> <tt class="py-op">+=</tt> <tt class="py-string">'"'</tt> <tt class="py-op">+</tt> <tt class="py-name">string</tt><tt class="py-op">.</tt><tt class="py-name">replace</tt><tt class="py-op">(</tt><tt class="py-name">str_val</tt><tt class="py-op">,</tt><tt class="py-string">"\n"</tt><tt class="py-op">,</tt><tt class="py-string">r"\n"</tt><tt class="py-op">)</tt> <tt class="py [...]
+<a name="L676"></a><tt class="py-lineno">676</tt>  <tt class="py-line">            <tt class="py-name">str_val</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">contained_controller</tt><tt class="py-op">.</tt><tt id="link-193" class="py-name" targets="Method VisionEgg.FlowControl.ExecStringController.get_between_go_exec_string()=VisionEgg.FlowControl.ExecStringController-class.html#get_between_go_exec_string"><a title="VisionEgg.FlowC [...]
+<a name="L677"></a><tt class="py-lineno">677</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">str_val</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L678"></a><tt class="py-lineno">678</tt>  <tt class="py-line">                <tt class="py-name">value</tt> <tt class="py-op">+=</tt> <tt class="py-string">"None, "</tt> </tt>
+<a name="L679"></a><tt class="py-lineno">679</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L680"></a><tt class="py-lineno">680</tt>  <tt class="py-line">                <tt class="py-name">value</tt> <tt class="py-op">+=</tt> <tt class="py-string">'"'</tt> <tt class="py-op">+</tt> <tt class="py-name">string</tt><tt class="py-op">.</tt><tt class="py-name">replace</tt><tt class="py-op">(</tt><tt class="py-name">str_val</tt><tt class="py-op">,</tt><tt class="py-string">"\n"</tt><tt class="py-op">,</tt><tt class="py-string">r"\n"</tt><tt class="py-op">)</tt> <tt class="py [...]
+<a name="L681"></a><tt class="py-lineno">681</tt>  <tt class="py-line">        <tt class="py-name">never</tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L682"></a><tt class="py-lineno">682</tt>  <tt class="py-line">        <tt class="py-name">ef</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">contained_controller</tt><tt class="py-op">.</tt><tt class="py-name">eval_frequency</tt> </tt>
+<a name="L683"></a><tt class="py-lineno">683</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">ef</tt> <tt class="py-op">&</tt> <tt id="link-194" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-194', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-195" class="py-name"><a title="VisionEgg.FlowControl" class="py-name" href="#" onclick="return doclink('link-195', 'FlowControl', [...]
+VisionEgg.FlowControl.EVERY_FRAME" class="py-name" href="#" onclick="return doclink('link-197', 'EVERY_FRAME', 'link-46');">EVERY_FRAME</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L684"></a><tt class="py-lineno">684</tt>  <tt class="py-line">            <tt class="py-name">value</tt> <tt class="py-op">+=</tt> <tt class="py-string">"EVERY_FRAME | "</tt> </tt>
+<a name="L685"></a><tt class="py-lineno">685</tt>  <tt class="py-line">            <tt class="py-name">never</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L686"></a><tt class="py-lineno">686</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">ef</tt> <tt class="py-op">&</tt> <tt id="link-198" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-198', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-199" class="py-name"><a title="VisionEgg.FlowControl" class="py-name" href="#" onclick="return doclink('link-199', 'FlowControl', [...]
+VisionEgg.FlowControl.TRANSITIONS" class="py-name" href="#" onclick="return doclink('link-201', 'TRANSITIONS', 'link-201');">TRANSITIONS</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L687"></a><tt class="py-lineno">687</tt>  <tt class="py-line">            <tt class="py-name">value</tt> <tt class="py-op">+=</tt> <tt class="py-string">"TRANSITIONS | "</tt> </tt>
+<a name="L688"></a><tt class="py-lineno">688</tt>  <tt class="py-line">            <tt class="py-name">never</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L689"></a><tt class="py-lineno">689</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">ef</tt> <tt class="py-op">&</tt> <tt id="link-202" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-202', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-203" class="py-name"><a title="VisionEgg.FlowControl" class="py-name" href="#" onclick="return doclink('link-203', 'FlowControl', [...]
+VisionEgg.FlowControl.ONCE" class="py-name" href="#" onclick="return doclink('link-205', 'ONCE', 'link-205');">ONCE</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L690"></a><tt class="py-lineno">690</tt>  <tt class="py-line">            <tt class="py-name">value</tt> <tt class="py-op">+=</tt> <tt class="py-string">"ONCE | "</tt> </tt>
+<a name="L691"></a><tt class="py-lineno">691</tt>  <tt class="py-line">            <tt class="py-name">never</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L692"></a><tt class="py-lineno">692</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">ef</tt> <tt class="py-op">&</tt> <tt id="link-206" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-206', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-207" class="py-name"><a title="VisionEgg.FlowControl" class="py-name" href="#" onclick="return doclink('link-207', 'FlowControl', [...]
+VisionEgg.FlowControl.NOT_DURING_GO" class="py-name" href="#" onclick="return doclink('link-209', 'NOT_DURING_GO', 'link-50');">NOT_DURING_GO</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L693"></a><tt class="py-lineno">693</tt>  <tt class="py-line">            <tt class="py-name">value</tt> <tt class="py-op">+=</tt> <tt class="py-string">"NOT_DURING_GO | "</tt> </tt>
+<a name="L694"></a><tt class="py-lineno">694</tt>  <tt class="py-line">            <tt class="py-name">never</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L695"></a><tt class="py-lineno">695</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">ef</tt> <tt class="py-op">&</tt> <tt id="link-210" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-210', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-211" class="py-name"><a title="VisionEgg.FlowControl" class="py-name" href="#" onclick="return doclink('link-211', 'FlowControl', [...]
+VisionEgg.FlowControl.NOT_BETWEEN_GO" class="py-name" href="#" onclick="return doclink('link-213', 'NOT_BETWEEN_GO', 'link-140');">NOT_BETWEEN_GO</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L696"></a><tt class="py-lineno">696</tt>  <tt class="py-line">            <tt class="py-name">value</tt> <tt class="py-op">+=</tt> <tt class="py-string">"NOT_BETWEEN_GO | "</tt> </tt>
+<a name="L697"></a><tt class="py-lineno">697</tt>  <tt class="py-line">            <tt class="py-name">never</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L698"></a><tt class="py-lineno">698</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">never</tt><tt class="py-op">:</tt> </tt>
+<a name="L699"></a><tt class="py-lineno">699</tt>  <tt class="py-line">            <tt class="py-name">value</tt> <tt class="py-op">+=</tt> <tt class="py-string">"NEVER"</tt> </tt>
+<a name="L700"></a><tt class="py-lineno">700</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L701"></a><tt class="py-lineno">701</tt>  <tt class="py-line">            <tt class="py-name">value</tt> <tt class="py-op">=</tt> <tt class="py-name">value</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">-</tt><tt class="py-number">3</tt><tt class="py-op">]</tt> <tt class="py-comment"># get rid of trailing "| "</tt> </tt>
+<a name="L702"></a><tt class="py-lineno">702</tt>  <tt class="py-line">        <tt class="py-name">value</tt> <tt class="py-op">+=</tt> <tt class="py-string">", "</tt> </tt>
+<a name="L703"></a><tt class="py-lineno">703</tt>  <tt class="py-line">        <tt class="py-name">time_indep</tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L704"></a><tt class="py-lineno">704</tt>  <tt class="py-line">        <tt class="py-name">tv</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">contained_controller</tt><tt class="py-op">.</tt><tt class="py-name">temporal_variables</tt> </tt>
+<a name="L705"></a><tt class="py-lineno">705</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">tv</tt> <tt class="py-op">&</tt> <tt id="link-214" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-214', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-215" class="py-name"><a title="VisionEgg.FlowControl" class="py-name" href="#" onclick="return doclink('link-215', 'FlowControl', [...]
+VisionEgg.FlowControl.TIME_SEC_ABSOLUTE" class="py-name" href="#" onclick="return doclink('link-217', 'TIME_SEC_ABSOLUTE', 'link-217');">TIME_SEC_ABSOLUTE</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L706"></a><tt class="py-lineno">706</tt>  <tt class="py-line">            <tt class="py-name">value</tt> <tt class="py-op">+=</tt> <tt class="py-string">"TIME_SEC_ABSOLUTE | "</tt> </tt>
+<a name="L707"></a><tt class="py-lineno">707</tt>  <tt class="py-line">            <tt class="py-name">time_indep</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L708"></a><tt class="py-lineno">708</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">tv</tt> <tt class="py-op">&</tt> <tt id="link-218" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-218', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-219" class="py-name"><a title="VisionEgg.FlowControl" class="py-name" href="#" onclick="return doclink('link-219', 'FlowControl', [...]
+VisionEgg.FlowControl.TIME_SEC_SINCE_GO" class="py-name" href="#" onclick="return doclink('link-221', 'TIME_SEC_SINCE_GO', 'link-221');">TIME_SEC_SINCE_GO</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L709"></a><tt class="py-lineno">709</tt>  <tt class="py-line">            <tt class="py-name">value</tt> <tt class="py-op">+=</tt> <tt class="py-string">"TIME_SEC_SINCE_GO | "</tt> </tt>
+<a name="L710"></a><tt class="py-lineno">710</tt>  <tt class="py-line">            <tt class="py-name">time_indep</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L711"></a><tt class="py-lineno">711</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">tv</tt> <tt class="py-op">&</tt> <tt id="link-222" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-222', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-223" class="py-name"><a title="VisionEgg.FlowControl" class="py-name" href="#" onclick="return doclink('link-223', 'FlowControl', [...]
+VisionEgg.FlowControl.FRAMES_ABSOLUTE" class="py-name" href="#" onclick="return doclink('link-225', 'FRAMES_ABSOLUTE', 'link-225');">FRAMES_ABSOLUTE</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L712"></a><tt class="py-lineno">712</tt>  <tt class="py-line">            <tt class="py-name">value</tt> <tt class="py-op">+=</tt> <tt class="py-string">"FRAMES_ABSOLUTE | "</tt> </tt>
+<a name="L713"></a><tt class="py-lineno">713</tt>  <tt class="py-line">            <tt class="py-name">time_indep</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L714"></a><tt class="py-lineno">714</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">tv</tt> <tt class="py-op">&</tt> <tt id="link-226" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-226', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-227" class="py-name"><a title="VisionEgg.FlowControl" class="py-name" href="#" onclick="return doclink('link-227', 'FlowControl', [...]
+VisionEgg.FlowControl.FRAMES_SINCE_GO" class="py-name" href="#" onclick="return doclink('link-229', 'FRAMES_SINCE_GO', 'link-229');">FRAMES_SINCE_GO</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L715"></a><tt class="py-lineno">715</tt>  <tt class="py-line">            <tt class="py-name">value</tt> <tt class="py-op">+=</tt> <tt class="py-string">"FRAMES_SINCE_GO | "</tt> </tt>
+<a name="L716"></a><tt class="py-lineno">716</tt>  <tt class="py-line">            <tt class="py-name">time_indep</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L717"></a><tt class="py-lineno">717</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">time_indep</tt><tt class="py-op">:</tt> </tt>
+<a name="L718"></a><tt class="py-lineno">718</tt>  <tt class="py-line">            <tt class="py-name">value</tt> <tt class="py-op">+=</tt> <tt class="py-string">"TIME_INDEPENDENT"</tt> </tt>
+<a name="L719"></a><tt class="py-lineno">719</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L720"></a><tt class="py-lineno">720</tt>  <tt class="py-line">            <tt class="py-name">value</tt> <tt class="py-op">=</tt> <tt class="py-name">value</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">-</tt><tt class="py-number">3</tt><tt class="py-op">]</tt> <tt class="py-comment"># get rid of trailing "| "</tt> </tt>
+<a name="L721"></a><tt class="py-lineno">721</tt>  <tt class="py-line">        <tt class="py-name">value</tt> <tt class="py-op">+=</tt> <tt class="py-string">", "</tt> </tt>
+<a name="L722"></a><tt class="py-lineno">722</tt>  <tt class="py-line">        <tt class="py-name">my_type</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">contained_controller</tt><tt class="py-op">.</tt><tt id="link-230" class="py-name"><a title="VisionEgg.FlowControl.Controller.returns_type" class="py-name" href="#" onclick="return doclink('link-230', 'returns_type', 'link-111');">returns_type</a></tt><tt class="py-op">(</tt><tt cl [...]
+<a name="L723"></a><tt class="py-lineno">723</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">my_type</tt> <tt class="py-op">==</tt> <tt class="py-name">types</tt><tt class="py-op">.</tt><tt class="py-name">ClassType</tt><tt class="py-op">:</tt> </tt>
+<a name="L724"></a><tt class="py-lineno">724</tt>  <tt class="py-line">            <tt class="py-name">value</tt> <tt class="py-op">+=</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">my_type</tt><tt class="py-op">)</tt> </tt>
+<a name="L725"></a><tt class="py-lineno">725</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L726"></a><tt class="py-lineno">726</tt>  <tt class="py-line">            <tt class="py-keyword">for</tt> <tt class="py-name">t</tt> <tt class="py-keyword">in</tt> <tt class="py-name">dir</tt><tt class="py-op">(</tt><tt class="py-name">types</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L727"></a><tt class="py-lineno">727</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">my_type</tt> <tt class="py-op">==</tt> <tt class="py-name">getattr</tt><tt class="py-op">(</tt><tt class="py-name">types</tt><tt class="py-op">,</tt><tt class="py-name">t</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L728"></a><tt class="py-lineno">728</tt>  <tt class="py-line">                    <tt class="py-name">value</tt> <tt class="py-op">+=</tt> <tt class="py-string">"types."</tt><tt class="py-op">+</tt><tt class="py-name">t</tt> </tt>
+<a name="L729"></a><tt class="py-lineno">729</tt>  <tt class="py-line">                    <tt class="py-keyword">break</tt> </tt>
+<a name="L730"></a><tt class="py-lineno">730</tt>  <tt class="py-line">        <tt class="py-name">value</tt> <tt class="py-op">+=</tt> <tt class="py-string">" )"</tt> </tt>
+<a name="L731"></a><tt class="py-lineno">731</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">value</tt> </tt>
+</div></div><a name="L732"></a><tt class="py-lineno">732</tt>  <tt class="py-line"> </tt><script type="text/javascript">
+<!--
+expandto(location.href);
+// -->
+</script>
+</pre>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:48 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.TCPController.SocketListenController-class.html b/doc/reference/html/VisionEgg.TCPController.SocketListenController-class.html
new file mode 100644
index 0000000..e067e99
--- /dev/null
+++ b/doc/reference/html/VisionEgg.TCPController.SocketListenController-class.html
@@ -0,0 +1,548 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.TCPController.SocketListenController</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.TCPController-module.html">Module TCPController</a> ::
+        Class SocketListenController
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.TCPController.SocketListenController-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class SocketListenController</h1><span class="codelink"><a href="VisionEgg.TCPController-pysrc.html#SocketListenController">source code</a></span><br /><br />
+<pre class="base-tree">
+            object --+    
+                     |    
+<a href="VisionEgg.FlowControl.Controller-class.html">FlowControl.Controller</a> --+
+                         |
+                        <strong class="uidshort">SocketListenController</strong>
+</pre>
+
+<hr />
+<pre class="literalblock">
+Handle connection from remote machine, control TCPControllers.
+
+This meta controller handles a TCP socket to control zero to many
+instances of TCPController.  As a subclass of Controller, it gets
+called at specified moments in time via the Presentation
+class. When called in this way, it checks for any strings from the
+TCP socket.  It parses this information into a command or fails
+and sends an error.
+
+This class is analagous to VisionEgg.PyroHelpers.PyroListenController.
+
+TCP commands (sent over network socket)
+=======================================
+
+close -- close the connection
+exit -- close the connection
+quit -- quit the server program
+help -- print help message
+<name> -- show the value of the controller of <name>
+<name>=const(<args>) -- assign a new ConstantController to <name>
+<name>=eval_str(<args>) -- assign a new EvalStringController to <name>
+<name>=exec_str(<args>) -- assign a new ExecStringController to <name>
+<name>=exec_str(*<args>) -- assign a new unrestricted namespace ExecStringController to <name>
+
+TCP commands are always on a single line.  (Newlines in string
+literals can be specified by using "\n" without the quotes.)
+
+The assignment commands share common behavior:
+
+<name> -- value passed as argument "tcp_name" to method create_tcp_controller
+<args> -- during_go [, between_go [, eval_frequency [, temporal_variables [, return_type ]]]]
+
+The <args> string is parsed by the Python's eval() function.  If
+you don't want to explicitly set an argument early in the argument
+list, but you need to set one late in the list, use "None".  If
+not set, the optional arguments default to:
+
+eval_frequency = EVERY_FRAME
+temporal_variables = TIME_SEC_SINCE_GO
+return_type = (evaluates during_go function to find)
+between_go = (see below, depends on assignment type)
+
+The only difference between the assignment commands are in the
+first two arguments.  For "const(...)", the first two arguments
+are constant values, for "eval_str(...)" they are strings that
+evaluate to a single variable, and for "exec_str(...)", they are
+strings that set the variable "x" in their local namespace, which
+is then returned.  (An unrestricted namespace is available with
+"exec_str(*...)".)  If the argument between_go is set to None or
+is not defined, the behavior depends on the assignment command.
+If this is a <name>=const(...) assignment, between_go_value is set
+to during_go_value.  If this is a <name>=eval_str(...) or
+<name>=exec_str(...) assignment, the correct value cannot be
+guessed, and therefore the between_go_eval function will never be
+called (the eval_frequency flag NOT_BETWEEN_GO is set).
+
+Because the default value for temporal_variables is
+TIME_SEC_SINCE_GO, the variable "t" may be safely used in the
+during_go string for the eval_str or exec_str assignment commands.
+See the documentation for VisionEgg.FlowControl.EvalStringController for
+more information.
+
+Example commands from TCP port (try with telnet):
+
+<name>=const(1.0)
+<name>=eval_str("t*360.0")
+<name>=exec_str("x=t*360.0")
+
+<name>=const(0.,1.,EVERY_FRAME)
+<name>=const(1,None,ONCE)
+
+<name>=const(1.0,0.0,EVERY_FRAME,TIME_INDEPENDENT,types.FloatType)
+<name>=eval_str("t*360.0","t_abs*360.0",None,TIME_SEC_ABSOLUTE|TIME_SEC_SINCE_GO)
+<name>=eval_str("t_abs*360.0","t_abs*360.0",EVERY_FRAME,TIME_SEC_ABSOLUTE,types.FloatType)
+<name>=exec_str("x=t*360.0","x=0.0",EVERY_FRAME,TIME_SEC_SINCE_GO)
+<name>=exec_str("print 'Time since go=%f'%(t,)\nx=t*360.0","x=0.0",EVERY_FRAME,TIME_SEC_SINCE_GO)
+
+</pre><br /><br />
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.TCPController.SocketListenController-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">socket</span>,
+        <span class="summary-sig-arg">disconnect_ok</span>=<span class="summary-sig-default">0</span>,
+        <span class="summary-sig-arg">server_socket</span>=<span class="summary-sig-default">None</span>,
+        <span class="summary-sig-arg">temporal_variables</span>=<span class="summary-sig-default">VisionEgg.FlowControl.Controller.TIME_INDEPENDENT</span>,
+        <span class="summary-sig-arg">eval_frequency</span>=<span class="summary-sig-default">VisionEgg.FlowControl.Controller.EVERY_FRAME</span>)</span><br />
+      Instantiated by TCPServer.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.TCPController-pysrc.html#SocketListenController.__init__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="send_raw_text"></a><span class="summary-sig-name">send_raw_text</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">text</span>)</span><br />
+      Send text over the TCP socket.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.TCPController-pysrc.html#SocketListenController.send_raw_text">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.TCPController.SocketListenController-class.html#create_tcp_controller" class="summary-sig-name">create_tcp_controller</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">tcp_name</span>=<span class="summary-sig-default">None</span>,
+        <span class="summary-sig-arg">initial_controller</span>=<span class="summary-sig-default">None</span>,
+        <span class="summary-sig-arg">require_type</span>=<span class="summary-sig-default">None</span>)</span><br />
+      Create new instance of TCPController.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.TCPController-pysrc.html#SocketListenController.create_tcp_controller">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.TCPController.SocketListenController-class.html#during_go_eval" class="summary-sig-name">during_go_eval</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      Check socket and act accordingly.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.TCPController-pysrc.html#SocketListenController.during_go_eval">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.TCPController.SocketListenController-class.html#between_go_eval" class="summary-sig-name">between_go_eval</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      Check socket and act accordingly.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.TCPController-pysrc.html#SocketListenController.between_go_eval">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.FlowControl.Controller-class.html">FlowControl.Controller</a></code></b>:
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#evaluate_now">evaluate_now</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#returns_type">returns_type</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#set_eval_frequency">set_eval_frequency</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__delattr__</code>,
+      <code>__getattribute__</code>,
+      <code>__hash__</code>,
+      <code>__new__</code>,
+      <code>__reduce__</code>,
+      <code>__reduce_ex__</code>,
+      <code>__repr__</code>,
+      <code>__setattr__</code>,
+      <code>__str__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Class Variables</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.TCPController.SocketListenController-class.html#help_string" class="summary-name">help_string</a> = <code title="r"""    TCP commands (sent over network socket):
+
+    close -- close the connection
+    exit -- close the connection
+    quit -- quit the server program
+    help -- print this message
+    <name> -- show the value of the controller of <name>
+    <name>=const(<args>) -- assign a new ConstantController to <name>
+...">r"""    TCP commands (sent over network socke<code class="variable-ellipsis">...</code></code>
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.FlowControl.Controller-class.html">FlowControl.Controller</a></code></b>:
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#EVERY_FRAME">EVERY_FRAME</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#FRAMES_ABSOLUTE">FRAMES_ABSOLUTE</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#FRAMES_SINCE_GO">FRAMES_SINCE_GO</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#NEVER">NEVER</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#NOT_BETWEEN_GO">NOT_BETWEEN_GO</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#NOT_DURING_GO">NOT_DURING_GO</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#ONCE">ONCE</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#TIME_INDEPENDENT">TIME_INDEPENDENT</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#TIME_SEC_ABSOLUTE">TIME_SEC_ABSOLUTE</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#TIME_SEC_SINCE_GO">TIME_SEC_SINCE_GO</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#TRANSITIONS">TRANSITIONS</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#flag_dictionary">flag_dictionary</a></code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Properties</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__class__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Method Details</span></td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">socket</span>,
+        <span class="sig-arg">disconnect_ok</span>=<span class="sig-default">0</span>,
+        <span class="sig-arg">server_socket</span>=<span class="sig-default">None</span>,
+        <span class="sig-arg">temporal_variables</span>=<span class="sig-default">VisionEgg.FlowControl.Controller.TIME_INDEPENDENT</span>,
+        <span class="sig-arg">eval_frequency</span>=<span class="sig-default">VisionEgg.FlowControl.Controller.EVERY_FRAME</span>)</span>
+    <br /><em class="fname">(Constructor)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.TCPController-pysrc.html#SocketListenController.__init__">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Instantiated by TCPServer.
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.FlowControl.Controller-class.html#__init__">FlowControl.Controller.__init__</a>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="create_tcp_controller"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">create_tcp_controller</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">tcp_name</span>=<span class="sig-default">None</span>,
+        <span class="sig-arg">initial_controller</span>=<span class="sig-default">None</span>,
+        <span class="sig-arg">require_type</span>=<span class="sig-default">None</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.TCPController-pysrc.html#SocketListenController.create_tcp_controller">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Create new instance of TCPController.
+
+Arguments:
+
+tcp_name -- String to reference new TCPController over TCP
+
+Optional arguments:
+
+initial_controller -- Initial value of TCPController instance
+require_type -- force this as TCPController instance's return_type
+
+</pre>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<a name="during_go_eval"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">during_go_eval</span>(<span class="sig-arg">self</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.TCPController-pysrc.html#SocketListenController.during_go_eval">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Check socket and act accordingly. Called by instance of Presentation.
+
+Overrides base class Controller method.
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.FlowControl.Controller-class.html#during_go_eval">FlowControl.Controller.during_go_eval</a>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="between_go_eval"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">between_go_eval</span>(<span class="sig-arg">self</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.TCPController-pysrc.html#SocketListenController.between_go_eval">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Check socket and act accordingly. Called by instance of Presentation.
+
+Overrides base class Controller method.
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.FlowControl.Controller-class.html#between_go_eval">FlowControl.Controller.between_go_eval</a>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== CLASS VARIABLE DETAILS ==================== -->
+<a name="section-ClassVariableDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Class Variable Details</span></td>
+</tr>
+</table>
+<a name="help_string"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">help_string</h3>
+  
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+r"""    TCP commands (sent over network socket):
+
+    close -- close the connection
+    exit -- close the connection
+    quit -- quit the server program
+    help -- print this message
+    <name> -- show the value of the controller of <name>
+    <name>=const(<args>) -- assign a new ConstantController to <name>
+<code class="variable-ellipsis">...</code>
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:47 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.TCPController.TCPController-class.html b/doc/reference/html/VisionEgg.TCPController.TCPController-class.html
new file mode 100644
index 0000000..3d614f7
--- /dev/null
+++ b/doc/reference/html/VisionEgg.TCPController.TCPController-class.html
@@ -0,0 +1,314 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.TCPController.TCPController</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.TCPController-module.html">Module TCPController</a> ::
+        Class TCPController
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.TCPController.TCPController-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class TCPController</h1><span class="codelink"><a href="VisionEgg.TCPController-pysrc.html#TCPController">source code</a></span><br /><br />
+<pre class="base-tree">
+                    object --+        
+                             |        
+        <a href="VisionEgg.FlowControl.Controller-class.html">FlowControl.Controller</a> --+    
+                                 |    
+<a href="VisionEgg.FlowControl.EncapsulatedController-class.html">FlowControl.EncapsulatedController</a> --+
+                                     |
+                                    <strong class="uidshort">TCPController</strong>
+</pre>
+
+<hr />
+<pre class="literalblock">
+Control a parameter from a network (TCP) connection.
+
+Subclass of Controller to allow control of Parameters via the
+network.
+
+This class is analagous to VisionEgg.PyroHelpers.PyroEncapsulatedController.
+
+</pre><br /><br />
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.TCPController.TCPController-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">tcp_name</span>,
+        <span class="summary-sig-arg">initial_controller</span>)</span><br />
+      Instantiated by SocketListenController.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.TCPController-pysrc.html#TCPController.__init__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.TCPController.TCPController-class.html#__str__" class="summary-sig-name">__str__</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      str(x)</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.TCPController-pysrc.html#TCPController.__str__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.FlowControl.EncapsulatedController-class.html">FlowControl.EncapsulatedController</a></code></b>:
+      <code><a href="VisionEgg.FlowControl.EncapsulatedController-class.html#between_go_eval">between_go_eval</a></code>,
+      <code><a href="VisionEgg.FlowControl.EncapsulatedController-class.html#during_go_eval">during_go_eval</a></code>,
+      <code><a href="VisionEgg.FlowControl.EncapsulatedController-class.html#set_new_controller">set_new_controller</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.FlowControl.Controller-class.html">FlowControl.Controller</a></code></b>:
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#evaluate_now">evaluate_now</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#returns_type">returns_type</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#set_eval_frequency">set_eval_frequency</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__delattr__</code>,
+      <code>__getattribute__</code>,
+      <code>__hash__</code>,
+      <code>__new__</code>,
+      <code>__reduce__</code>,
+      <code>__reduce_ex__</code>,
+      <code>__repr__</code>,
+      <code>__setattr__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Class Variables</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.FlowControl.Controller-class.html">FlowControl.Controller</a></code></b>:
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#EVERY_FRAME">EVERY_FRAME</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#FRAMES_ABSOLUTE">FRAMES_ABSOLUTE</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#FRAMES_SINCE_GO">FRAMES_SINCE_GO</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#NEVER">NEVER</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#NOT_BETWEEN_GO">NOT_BETWEEN_GO</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#NOT_DURING_GO">NOT_DURING_GO</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#ONCE">ONCE</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#TIME_INDEPENDENT">TIME_INDEPENDENT</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#TIME_SEC_ABSOLUTE">TIME_SEC_ABSOLUTE</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#TIME_SEC_SINCE_GO">TIME_SEC_SINCE_GO</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#TRANSITIONS">TRANSITIONS</a></code>,
+      <code><a href="VisionEgg.FlowControl.Controller-class.html#flag_dictionary">flag_dictionary</a></code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Properties</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__class__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Method Details</span></td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">tcp_name</span>,
+        <span class="sig-arg">initial_controller</span>)</span>
+    <br /><em class="fname">(Constructor)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.TCPController-pysrc.html#TCPController.__init__">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Instantiated by SocketListenController.
+
+Users should create instance by using method
+create_tcp_controller of class SocketListenController.
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.FlowControl.EncapsulatedController-class.html#__init__">FlowControl.EncapsulatedController.__init__</a>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="__str__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__str__</span>(<span class="sig-arg">self</span>)</span>
+    <br /><em class="fname">(Informal representation operator)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.TCPController-pysrc.html#TCPController.__str__">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+str(x)
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      object.__str__
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:47 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.TCPController.TCPServer-class.html b/doc/reference/html/VisionEgg.TCPController.TCPServer-class.html
new file mode 100644
index 0000000..6329028
--- /dev/null
+++ b/doc/reference/html/VisionEgg.TCPController.TCPServer-class.html
@@ -0,0 +1,169 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.TCPController.TCPServer</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.TCPController-module.html">Module TCPController</a> ::
+        Class TCPServer
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.TCPController.TCPServer-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class TCPServer</h1><span class="codelink"><a href="VisionEgg.TCPController-pysrc.html#TCPServer">source code</a></span><br /><br />
+<pre class="literalblock">
+TCP server creates SocketListenController upon connection.
+
+This class is analagous to VisionEgg.PyroHelpers.PyroServer.
+
+</pre><br /><br />
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__init__"></a><span class="summary-sig-name">__init__</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">hostname</span>=<span class="summary-sig-default">""</span>,
+        <span class="summary-sig-arg">port</span>=<span class="summary-sig-default">7834</span>,
+        <span class="summary-sig-arg">single_socket_but_reconnect_ok</span>=<span class="summary-sig-default">0</span>,
+        <span class="summary-sig-arg">dialog_ok</span>=<span class="summary-sig-default">1</span>,
+        <span class="summary-sig-arg">confirm_address_with_gui</span>=<span class="summary-sig-default">1</span>)</span><br />
+      Bind to hostname and port, but don't listen yet.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.TCPController-pysrc.html#TCPServer.__init__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="create_listener_once_connected"></a><span class="summary-sig-name">create_listener_once_connected</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">eval_frequency</span>=<span class="summary-sig-default">None</span>)</span><br />
+      Wait for connection and spawn instance of SocketListenController.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.TCPController-pysrc.html#TCPServer.create_listener_once_connected">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:47 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.Text-module.html b/doc/reference/html/VisionEgg.Text-module.html
new file mode 100644
index 0000000..29101f5
--- /dev/null
+++ b/doc/reference/html/VisionEgg.Text-module.html
@@ -0,0 +1,175 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.Text</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        Module Text
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.Text-module.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== MODULE DESCRIPTION ==================== -->
+<h1 class="epydoc">Module Text</h1><span class="codelink"><a href="VisionEgg.Text-pysrc.html">source code</a></span><br /><br />
+<pre class="literalblock">
+
+Text stimuli.
+
+</pre><br /><br />
+
+<!-- ==================== CLASSES ==================== -->
+<a name="section-Classes"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Classes</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.Text.Text-class.html" class="summary-name">Text</a><br />
+      Single line of text rendered using pygame/SDL true type fonts.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.Text.GlutTextBase-class.html" class="summary-name">GlutTextBase</a><br />
+      DEPRECATED.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.Text.BitmapText-class.html" class="summary-name">BitmapText</a><br />
+      DEPRECATED.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.Text.StrokeText-class.html" class="summary-name">StrokeText</a><br />
+      DEPRECATED.
+    </td>
+  </tr>
+</table>
+<!-- ==================== VARIABLES ==================== -->
+<a name="section-Variables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Variables</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="have_glut"></a><span class="summary-name">have_glut</span> = <code title="False">False</code>
+    </td>
+  </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.Text-pysrc.html b/doc/reference/html/VisionEgg.Text-pysrc.html
new file mode 100644
index 0000000..760db8c
--- /dev/null
+++ b/doc/reference/html/VisionEgg.Text-pysrc.html
@@ -0,0 +1,1116 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.Text</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        Module Text
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.Text-pysrc.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<h1 class="epydoc">Source Code for <a href="VisionEgg.Text-module.html">Module VisionEgg.Text</a></h1>
+<pre class="py-src">
+<a name="L1"></a><tt class="py-lineno">  1</tt>  <tt class="py-line"><tt class="py-comment"># The Vision Egg: Text</tt> </tt>
+<a name="L2"></a><tt class="py-lineno">  2</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L3"></a><tt class="py-lineno">  3</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Copyright (C) 2001-2003 Andrew Straw.</tt> </tt>
+<a name="L4"></a><tt class="py-lineno">  4</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Copyright (C) 2005,2008 California Institute of Technology</tt> </tt>
+<a name="L5"></a><tt class="py-lineno">  5</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L6"></a><tt class="py-lineno">  6</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># URL: <http://www.visionegg.org/></tt> </tt>
+<a name="L7"></a><tt class="py-lineno">  7</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L8"></a><tt class="py-lineno">  8</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Distributed under the terms of the GNU Lesser General Public License</tt> </tt>
+<a name="L9"></a><tt class="py-lineno">  9</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># (LGPL). See LICENSE.TXT that came with this file.</tt> </tt>
+<a name="L10"></a><tt class="py-lineno"> 10</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L11"></a><tt class="py-lineno"> 11</tt>  <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L12"></a><tt class="py-lineno"> 12</tt>  <tt class="py-line"><tt class="py-docstring">Text stimuli.</tt> </tt>
+<a name="L13"></a><tt class="py-lineno"> 13</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L14"></a><tt class="py-lineno"> 14</tt>  <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L15"></a><tt class="py-lineno"> 15</tt>  <tt class="py-line"> </tt>
+<a name="L16"></a><tt class="py-lineno"> 16</tt>  <tt class="py-line"><tt class="py-comment">####################################################################</tt> </tt>
+<a name="L17"></a><tt class="py-lineno"> 17</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L18"></a><tt class="py-lineno"> 18</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#        Import all the necessary packages</tt> </tt>
+<a name="L19"></a><tt class="py-lineno"> 19</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L20"></a><tt class="py-lineno"> 20</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">####################################################################</tt> </tt>
+<a name="L21"></a><tt class="py-lineno"> 21</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L22"></a><tt class="py-lineno"> 22</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">logging</tt> </tt>
+<a name="L23"></a><tt class="py-lineno"> 23</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">handlers</tt> </tt>
+<a name="L24"></a><tt class="py-lineno"> 24</tt>  <tt class="py-line"> </tt>
+<a name="L25"></a><tt class="py-lineno"> 25</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-0" class="py-name" targets="Package VisionEgg=VisionEgg-module.html"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-0', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-1" class="py-name" targets="Module VisionEgg.Core=VisionEgg.Core-module.html"><a title="VisionEgg.Core" class="py-name" href="#" onclick="return  [...]
+<a name="L26"></a><tt class="py-lineno"> 26</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-2" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-2', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-3" class="py-name" targets="Module VisionEgg.Textures=VisionEgg.Textures-module.html"><a title="VisionEgg.Textures" class="py-name" href="#" onclick="return doclink('link-3', 'Textures', 'link-3' [...]
+<a name="L27"></a><tt class="py-lineno"> 27</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-4" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-4', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-5" class="py-name" targets="Module VisionEgg.ParameterTypes=VisionEgg.ParameterTypes-module.html"><a title="VisionEgg.ParameterTypes" class="py-name" href="#" onclick="return doclink('link-5', 'P [...]
+<a name="L28"></a><tt class="py-lineno"> 28</tt>  <tt class="py-line"> </tt>
+<a name="L29"></a><tt class="py-lineno"> 29</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-6" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-6', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-7" class="py-name" targets="Module VisionEgg.GL=VisionEgg.GL-module.html"><a title="VisionEgg.GL" class="py-name" href="#" onclick="return doclink('link-7', 'GL', 'link-7');">GL</a></tt> <tt clas [...]
+<a name="L30"></a><tt class="py-lineno"> 30</tt>  <tt class="py-line"> </tt>
+<a name="L31"></a><tt class="py-lineno"> 31</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">pygame</tt> </tt>
+<a name="L32"></a><tt class="py-lineno"> 32</tt>  <tt class="py-line"> </tt>
+<a name="L33"></a><tt class="py-lineno"> 33</tt>  <tt class="py-line"><tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L34"></a><tt class="py-lineno"> 34</tt>  <tt class="py-line">    <tt class="py-keyword">import</tt> <tt class="py-name">OpenGL</tt><tt class="py-op">.</tt><tt class="py-name">GLUT</tt> <tt class="py-keyword">as</tt> <tt class="py-name">glut</tt> </tt>
+<a name="L35"></a><tt class="py-lineno"> 35</tt>  <tt class="py-line">    <tt id="link-8" class="py-name" targets="Variable VisionEgg.Text.have_glut=VisionEgg.Text-module.html#have_glut"><a title="VisionEgg.Text.have_glut" class="py-name" href="#" onclick="return doclink('link-8', 'have_glut', 'link-8');">have_glut</a></tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
+<a name="L36"></a><tt class="py-lineno"> 36</tt>  <tt class="py-line"><tt class="py-keyword">except</tt><tt class="py-op">:</tt> </tt>
+<a name="L37"></a><tt class="py-lineno"> 37</tt>  <tt class="py-line">    <tt id="link-9" class="py-name"><a title="VisionEgg.Text.have_glut" class="py-name" href="#" onclick="return doclink('link-9', 'have_glut', 'link-8');">have_glut</a></tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
+<a name="L38"></a><tt class="py-lineno"> 38</tt>  <tt class="py-line"> </tt>
+<a name="L39"></a><tt class="py-lineno"> 39</tt>  <tt class="py-line"><tt id="link-10" class="py-name" targets="Variable VisionEgg.Text._font_objects=VisionEgg.Text-module.html#_font_objects"><a title="VisionEgg.Text._font_objects" class="py-name" href="#" onclick="return doclink('link-10', '_font_objects', 'link-10');">_font_objects</a></tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> <tt class="py-comment"># global variable to cache pygame font objects</tt> </tt>
+<a name="L40"></a><tt class="py-lineno"> 40</tt>  <tt class="py-line"> </tt>
+<a name="Text"></a><div id="Text-def"><a name="L41"></a><tt class="py-lineno"> 41</tt> <a class="py-toggle" href="#" id="Text-toggle" onclick="return toggle('Text');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.Text.Text-class.html">Text</a><tt class="py-op">(</tt><tt class="py-base-class">VisionEgg</tt><tt class="py-op">.</tt><tt class="py-base-class">Textures</tt><tt class="py-op">.</tt><tt class="py-base-class">TextureStimulus</tt> [...]
+</div><div id="Text-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="Text-expanded"><a name="L42"></a><tt class="py-lineno"> 42</tt>  <tt class="py-line">    <tt class="py-docstring">"""Single line of text rendered using pygame/SDL true type fonts.</tt> </tt>
+<a name="L43"></a><tt class="py-lineno"> 43</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L44"></a><tt class="py-lineno"> 44</tt>  <tt class="py-line"><tt class="py-docstring">    Parameters</tt> </tt>
+<a name="L45"></a><tt class="py-lineno"> 45</tt>  <tt class="py-line"><tt class="py-docstring">    ==========</tt> </tt>
+<a name="L46"></a><tt class="py-lineno"> 46</tt>  <tt class="py-line"><tt class="py-docstring">    anchor                -- specifies how position parameter is interpreted (String)</tt> </tt>
+<a name="L47"></a><tt class="py-lineno"> 47</tt>  <tt class="py-line"><tt class="py-docstring">                             Inherited from VisionEgg.Textures.TextureStimulus</tt> </tt>
+<a name="L48"></a><tt class="py-lineno"> 48</tt>  <tt class="py-line"><tt class="py-docstring">                             Default: lowerleft</tt> </tt>
+<a name="L49"></a><tt class="py-lineno"> 49</tt>  <tt class="py-line"><tt class="py-docstring">    angle                 -- units: degrees, 0=right, 90=up (Real)</tt> </tt>
+<a name="L50"></a><tt class="py-lineno"> 50</tt>  <tt class="py-line"><tt class="py-docstring">                             Inherited from VisionEgg.Textures.TextureStimulus</tt> </tt>
+<a name="L51"></a><tt class="py-lineno"> 51</tt>  <tt class="py-line"><tt class="py-docstring">                             Default: 0.0</tt> </tt>
+<a name="L52"></a><tt class="py-lineno"> 52</tt>  <tt class="py-line"><tt class="py-docstring">    color                 -- texture environment color. alpha ignored (if given) for max_alpha parameter (AnyOf(Sequence3 of Real or Sequence4 of Real))</tt> </tt>
+<a name="L53"></a><tt class="py-lineno"> 53</tt>  <tt class="py-line"><tt class="py-docstring">                             Inherited from VisionEgg.Textures.TextureStimulus</tt> </tt>
+<a name="L54"></a><tt class="py-lineno"> 54</tt>  <tt class="py-line"><tt class="py-docstring">                             Default: (1.0, 1.0, 1.0)</tt> </tt>
+<a name="L55"></a><tt class="py-lineno"> 55</tt>  <tt class="py-line"><tt class="py-docstring">    depth_test            -- perform depth test? (Boolean)</tt> </tt>
+<a name="L56"></a><tt class="py-lineno"> 56</tt>  <tt class="py-line"><tt class="py-docstring">                             Inherited from VisionEgg.Textures.TextureStimulus</tt> </tt>
+<a name="L57"></a><tt class="py-lineno"> 57</tt>  <tt class="py-line"><tt class="py-docstring">                             Default: False</tt> </tt>
+<a name="L58"></a><tt class="py-lineno"> 58</tt>  <tt class="py-line"><tt class="py-docstring">    ignore_size_parameter -- (Boolean)</tt> </tt>
+<a name="L59"></a><tt class="py-lineno"> 59</tt>  <tt class="py-line"><tt class="py-docstring">                             Default: True</tt> </tt>
+<a name="L60"></a><tt class="py-lineno"> 60</tt>  <tt class="py-line"><tt class="py-docstring">    mask                  -- optional masking function (Instance of <class 'VisionEgg.Textures.Mask2D'>)</tt> </tt>
+<a name="L61"></a><tt class="py-lineno"> 61</tt>  <tt class="py-line"><tt class="py-docstring">                             Inherited from VisionEgg.Textures.TextureStimulus</tt> </tt>
+<a name="L62"></a><tt class="py-lineno"> 62</tt>  <tt class="py-line"><tt class="py-docstring">                             Default: (determined at runtime)</tt> </tt>
+<a name="L63"></a><tt class="py-lineno"> 63</tt>  <tt class="py-line"><tt class="py-docstring">    max_alpha             -- controls opacity. 1.0=copletely opaque, 0.0=completely transparent (Real)</tt> </tt>
+<a name="L64"></a><tt class="py-lineno"> 64</tt>  <tt class="py-line"><tt class="py-docstring">                             Inherited from VisionEgg.Textures.TextureStimulus</tt> </tt>
+<a name="L65"></a><tt class="py-lineno"> 65</tt>  <tt class="py-line"><tt class="py-docstring">                             Default: 1.0</tt> </tt>
+<a name="L66"></a><tt class="py-lineno"> 66</tt>  <tt class="py-line"><tt class="py-docstring">    on                    -- draw stimulus? (Boolean)</tt> </tt>
+<a name="L67"></a><tt class="py-lineno"> 67</tt>  <tt class="py-line"><tt class="py-docstring">                             Inherited from VisionEgg.Textures.TextureStimulus</tt> </tt>
+<a name="L68"></a><tt class="py-lineno"> 68</tt>  <tt class="py-line"><tt class="py-docstring">                             Default: True</tt> </tt>
+<a name="L69"></a><tt class="py-lineno"> 69</tt>  <tt class="py-line"><tt class="py-docstring">    position              -- units: eye coordinates (AnyOf(Sequence2 of Real or Sequence3 of Real or Sequence4 of Real))</tt> </tt>
+<a name="L70"></a><tt class="py-lineno"> 70</tt>  <tt class="py-line"><tt class="py-docstring">                             Inherited from VisionEgg.Textures.TextureStimulus</tt> </tt>
+<a name="L71"></a><tt class="py-lineno"> 71</tt>  <tt class="py-line"><tt class="py-docstring">                             Default: (0.0, 0.0)</tt> </tt>
+<a name="L72"></a><tt class="py-lineno"> 72</tt>  <tt class="py-line"><tt class="py-docstring">    size                  -- defaults to texture data size (units: eye coordinates) (Sequence2 of Real)</tt> </tt>
+<a name="L73"></a><tt class="py-lineno"> 73</tt>  <tt class="py-line"><tt class="py-docstring">                             Inherited from VisionEgg.Textures.TextureStimulus</tt> </tt>
+<a name="L74"></a><tt class="py-lineno"> 74</tt>  <tt class="py-line"><tt class="py-docstring">                             Default: (determined at runtime)</tt> </tt>
+<a name="L75"></a><tt class="py-lineno"> 75</tt>  <tt class="py-line"><tt class="py-docstring">    text                  -- (AnyOf(String or Unicode))</tt> </tt>
+<a name="L76"></a><tt class="py-lineno"> 76</tt>  <tt class="py-line"><tt class="py-docstring">                             Default: the string to display</tt> </tt>
+<a name="L77"></a><tt class="py-lineno"> 77</tt>  <tt class="py-line"><tt class="py-docstring">    texture               -- source of texture data (Instance of <class 'VisionEgg.Textures.Texture'>)</tt> </tt>
+<a name="L78"></a><tt class="py-lineno"> 78</tt>  <tt class="py-line"><tt class="py-docstring">                             Inherited from VisionEgg.Textures.TextureStimulusBaseClass</tt> </tt>
+<a name="L79"></a><tt class="py-lineno"> 79</tt>  <tt class="py-line"><tt class="py-docstring">                             Default: (determined at runtime)</tt> </tt>
+<a name="L80"></a><tt class="py-lineno"> 80</tt>  <tt class="py-line"><tt class="py-docstring">    texture_mag_filter    -- OpenGL filter enum (Integer)</tt> </tt>
+<a name="L81"></a><tt class="py-lineno"> 81</tt>  <tt class="py-line"><tt class="py-docstring">                             Inherited from VisionEgg.Textures.TextureStimulusBaseClass</tt> </tt>
+<a name="L82"></a><tt class="py-lineno"> 82</tt>  <tt class="py-line"><tt class="py-docstring">                             Default: GL_LINEAR (9729)</tt> </tt>
+<a name="L83"></a><tt class="py-lineno"> 83</tt>  <tt class="py-line"><tt class="py-docstring">    texture_min_filter    -- OpenGL filter enum (Integer)</tt> </tt>
+<a name="L84"></a><tt class="py-lineno"> 84</tt>  <tt class="py-line"><tt class="py-docstring">                             Inherited from VisionEgg.Textures.TextureStimulusBaseClass</tt> </tt>
+<a name="L85"></a><tt class="py-lineno"> 85</tt>  <tt class="py-line"><tt class="py-docstring">                             Default: (GL enum determined at runtime)</tt> </tt>
+<a name="L86"></a><tt class="py-lineno"> 86</tt>  <tt class="py-line"><tt class="py-docstring">    texture_wrap_s        -- OpenGL texture wrap enum (Integer)</tt> </tt>
+<a name="L87"></a><tt class="py-lineno"> 87</tt>  <tt class="py-line"><tt class="py-docstring">                             Inherited from VisionEgg.Textures.TextureStimulusBaseClass</tt> </tt>
+<a name="L88"></a><tt class="py-lineno"> 88</tt>  <tt class="py-line"><tt class="py-docstring">                             Default: (GL enum determined at runtime)</tt> </tt>
+<a name="L89"></a><tt class="py-lineno"> 89</tt>  <tt class="py-line"><tt class="py-docstring">    texture_wrap_t        -- OpenGL texture wrap enum (Integer)</tt> </tt>
+<a name="L90"></a><tt class="py-lineno"> 90</tt>  <tt class="py-line"><tt class="py-docstring">                             Inherited from VisionEgg.Textures.TextureStimulusBaseClass</tt> </tt>
+<a name="L91"></a><tt class="py-lineno"> 91</tt>  <tt class="py-line"><tt class="py-docstring">                             Default: (GL enum determined at runtime)</tt> </tt>
+<a name="L92"></a><tt class="py-lineno"> 92</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L93"></a><tt class="py-lineno"> 93</tt>  <tt class="py-line"><tt class="py-docstring">    Constant Parameters</tt> </tt>
+<a name="L94"></a><tt class="py-lineno"> 94</tt>  <tt class="py-line"><tt class="py-docstring">    ===================</tt> </tt>
+<a name="L95"></a><tt class="py-lineno"> 95</tt>  <tt class="py-line"><tt class="py-docstring">    font_name         -- (AnyOf(String or Unicode))</tt> </tt>
+<a name="L96"></a><tt class="py-lineno"> 96</tt>  <tt class="py-line"><tt class="py-docstring">                         Default: (determined at runtime)</tt> </tt>
+<a name="L97"></a><tt class="py-lineno"> 97</tt>  <tt class="py-line"><tt class="py-docstring">    font_size         -- (UnsignedInteger)</tt> </tt>
+<a name="L98"></a><tt class="py-lineno"> 98</tt>  <tt class="py-line"><tt class="py-docstring">                         Default: 30</tt> </tt>
+<a name="L99"></a><tt class="py-lineno"> 99</tt>  <tt class="py-line"><tt class="py-docstring">    internal_format   -- format with which OpenGL uses texture data (OpenGL data type enum) (Integer)</tt> </tt>
+<a name="L100"></a><tt class="py-lineno">100</tt>  <tt class="py-line"><tt class="py-docstring">                         Inherited from VisionEgg.Textures.TextureStimulus</tt> </tt>
+<a name="L101"></a><tt class="py-lineno">101</tt>  <tt class="py-line"><tt class="py-docstring">                         Default: GL_RGB (6407)</tt> </tt>
+<a name="L102"></a><tt class="py-lineno">102</tt>  <tt class="py-line"><tt class="py-docstring">    mipmaps_enabled   -- Are mipmaps enabled? (Boolean)</tt> </tt>
+<a name="L103"></a><tt class="py-lineno">103</tt>  <tt class="py-line"><tt class="py-docstring">                         Inherited from VisionEgg.Textures.TextureStimulus</tt> </tt>
+<a name="L104"></a><tt class="py-lineno">104</tt>  <tt class="py-line"><tt class="py-docstring">                         Default: True</tt> </tt>
+<a name="L105"></a><tt class="py-lineno">105</tt>  <tt class="py-line"><tt class="py-docstring">    shrink_texture_ok -- Allow automatic shrinking of texture if too big? (Boolean)</tt> </tt>
+<a name="L106"></a><tt class="py-lineno">106</tt>  <tt class="py-line"><tt class="py-docstring">                         Inherited from VisionEgg.Textures.TextureStimulus</tt> </tt>
+<a name="L107"></a><tt class="py-lineno">107</tt>  <tt class="py-line"><tt class="py-docstring">                         Default: False</tt> </tt>
+<a name="L108"></a><tt class="py-lineno">108</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L109"></a><tt class="py-lineno">109</tt>  <tt class="py-line"> </tt>
+<a name="L110"></a><tt class="py-lineno">110</tt>  <tt class="py-line">    <tt id="link-11" class="py-name" targets="Variable VisionEgg.ClassWithParameters.parameters_and_defaults=VisionEgg.ClassWithParameters-class.html#parameters_and_defaults,Variable VisionEgg.Core.FixationSpot.parameters_and_defaults=VisionEgg.Core.FixationSpot-class.html#parameters_and_defaults,Variable VisionEgg.Core.ProjectionBaseClass.parameters_and_defaults=VisionEgg.Core.ProjectionBaseClass-class.html#parameter [...]
+VisionEgg.Core.FixationSpot.parameters_and_defaults
+VisionEgg.Core.ProjectionBaseClass.parameters_and_defaults
+VisionEgg.Core.Screen.parameters_and_defaults
+VisionEgg.Core.Viewport.parameters_and_defaults
+VisionEgg.Daq.Buffered.parameters_and_defaults
+VisionEgg.Dots.DotArea2D.parameters_and_defaults
+VisionEgg.FlowControl.Presentation.parameters_and_defaults
+VisionEgg.Gratings.AlphaGratingCommon.parameters_and_defaults
+VisionEgg.Gratings.LuminanceGratingCommon.parameters_and_defaults
+VisionEgg.Gratings.SinGrating2D.parameters_and_defaults
+VisionEgg.Gratings.SinGrating3D.parameters_and_defaults
+VisionEgg.MoreStimuli.Arrow.parameters_and_defaults
+VisionEgg.MoreStimuli.FilledCircle.parameters_and_defaults
+VisionEgg.MoreStimuli.Rectangle3D.parameters_and_defaults
+VisionEgg.MoreStimuli.Target2D.parameters_and_defaults
+VisionEgg.PyroApps.EPhysGUI.Loop.parameters_and_defaults
+VisionEgg.SphereMap.AzElGrid.parameters_and_defaults
+VisionEgg.SphereMap.SphereGrating.parameters_and_defaults
+VisionEgg.SphereMap.SphereMap.parameters_and_defaults
+VisionEgg.SphereMap.SphereWindow.parameters_and_defaults
+VisionEgg.Text.BitmapText.parameters_and_defaults
+VisionEgg.Text.GlutTextBase.parameters_and_defaults
+VisionEgg.Text.StrokeText.parameters_and_defaults
+VisionEgg.Text.Text.parameters_and_defaults
+VisionEgg.Textures.FixationCross.parameters_and_defaults
+VisionEgg.Textures.SpinningDrum.parameters_and_defaults
+VisionEgg.Textures.TextureStimulus.parameters_and_defaults
+VisionEgg.Textures.TextureStimulus3D.parameters_and_defaults
+VisionEgg.Textures.TextureStimulusBaseClass.parameters_and_defaults
+VisionEgg.WrappedText.WrappedText.parameters_and_defaults" class="py-name" href="#" onclick="return doclink('link-11', 'parameters_and_defaults', 'link-11');">parameters_and_defaults</a></tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> </tt>
+<a name="L111"></a><tt class="py-lineno">111</tt>  <tt class="py-line">        <tt class="py-string">'text'</tt><tt class="py-op">:</tt> <tt class="py-op">(</tt> <tt class="py-string">'the string to display'</tt><tt class="py-op">,</tt> <tt class="py-comment">#changing this redraws texture, may cause slowdown</tt> </tt>
+<a name="L112"></a><tt class="py-lineno">112</tt>  <tt class="py-line">                  <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-12" class="py-name" targets="Class VisionEgg.ParameterTypes.AnyOf=VisionEgg.ParameterTypes.AnyOf-class.html"><a title="VisionEgg.ParameterTypes.AnyOf" class="py-name" href="#" onclick="return doclink('link-12', 'AnyOf', 'link-12');">AnyOf</a></tt><tt class="py-op">(</tt><tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt i [...]
+<a name="L113"></a><tt class="py-lineno">113</tt>  <tt class="py-line">        <tt class="py-string">'ignore_size_parameter'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-name">True</tt><tt class="py-op">,</tt> <tt class="py-comment"># when true, draws text at 100% size</tt> </tt>
+<a name="L114"></a><tt class="py-lineno">114</tt>  <tt class="py-line">                                 <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-15" class="py-name" targets="Class VisionEgg.ParameterTypes.Boolean=VisionEgg.ParameterTypes.Boolean-class.html"><a title="VisionEgg.ParameterTypes.Boolean" class="py-name" href="#" onclick="return doclink('link-15', 'Boolean', 'link-15');">Boolean</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L115"></a><tt class="py-lineno">115</tt>  <tt class="py-line">        <tt class="py-op">}</tt> </tt>
+<a name="L116"></a><tt class="py-lineno">116</tt>  <tt class="py-line"> </tt>
+<a name="L117"></a><tt class="py-lineno">117</tt>  <tt class="py-line">    <tt id="link-16" class="py-name" targets="Variable VisionEgg.ClassWithParameters.constant_parameters_and_defaults=VisionEgg.ClassWithParameters-class.html#constant_parameters_and_defaults,Variable VisionEgg.Core.Screen.constant_parameters_and_defaults=VisionEgg.Core.Screen-class.html#constant_parameters_and_defaults,Variable VisionEgg.Daq.Analog.constant_parameters_and_defaults=VisionEgg.Daq.Analog-class.html#cons [...]
+VisionEgg.Core.Screen.constant_parameters_and_defaults
+VisionEgg.Daq.Analog.constant_parameters_and_defaults
+VisionEgg.Daq.Channel.constant_parameters_and_defaults
+VisionEgg.Daq.SignalType.constant_parameters_and_defaults
+VisionEgg.Dots.DotArea2D.constant_parameters_and_defaults
+VisionEgg.SphereMap.AzElGrid.constant_parameters_and_defaults
+VisionEgg.Text.Text.constant_parameters_and_defaults
+VisionEgg.Textures.FixationCross.constant_parameters_and_defaults
+VisionEgg.Textures.Mask2D.constant_parameters_and_defaults
+VisionEgg.Textures.TextureStimulusBaseClass.constant_parameters_and_defaults
+VisionEgg.WrappedText.WrappedText.constant_parameters_and_defaults" class="py-name" href="#" onclick="return doclink('link-16', 'constant_parameters_and_defaults', 'link-16');">constant_parameters_and_defaults</a></tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> </tt>
+<a name="L118"></a><tt class="py-lineno">118</tt>  <tt class="py-line">        <tt class="py-string">'font_size'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-number">30</tt><tt class="py-op">,</tt> </tt>
+<a name="L119"></a><tt class="py-lineno">119</tt>  <tt class="py-line">                     <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-17" class="py-name" targets="Class VisionEgg.ParameterTypes.UnsignedInteger=VisionEgg.ParameterTypes.UnsignedInteger-class.html"><a title="VisionEgg.ParameterTypes.UnsignedInteger" class="py-name" href="#" onclick="return doclink('link-17', 'UnsignedInteger', 'link-17');">UnsignedInteger</a></tt><tt class="py-op">)</tt><tt class [...]
+<a name="L120"></a><tt class="py-lineno">120</tt>  <tt class="py-line">        <tt class="py-string">'font_name'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-comment"># None = use default font</tt> </tt>
+<a name="L121"></a><tt class="py-lineno">121</tt>  <tt class="py-line">                     <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-18" class="py-name"><a title="VisionEgg.ParameterTypes.AnyOf" class="py-name" href="#" onclick="return doclink('link-18', 'AnyOf', 'link-12');">AnyOf</a></tt><tt class="py-op">(</tt><tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-19" class="py-name"><a title="VisionEgg.ParameterTypes.String" class="py-name" [...]
+<a name="L122"></a><tt class="py-lineno">122</tt>  <tt class="py-line">        <tt class="py-op">}</tt> </tt>
+<a name="L123"></a><tt class="py-lineno">123</tt>  <tt class="py-line"> </tt>
+<a name="L124"></a><tt class="py-lineno">124</tt>  <tt class="py-line">    <tt class="py-name">__slots__</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt> </tt>
+<a name="L125"></a><tt class="py-lineno">125</tt>  <tt class="py-line">        <tt class="py-string">'font'</tt><tt class="py-op">,</tt> </tt>
+<a name="L126"></a><tt class="py-lineno">126</tt>  <tt class="py-line">        <tt class="py-string">'_text'</tt><tt class="py-op">,</tt> </tt>
+<a name="L127"></a><tt class="py-lineno">127</tt>  <tt class="py-line">        <tt class="py-op">)</tt> </tt>
+<a name="L128"></a><tt class="py-lineno">128</tt>  <tt class="py-line"> </tt>
+<a name="Text.__init__"></a><div id="Text.__init__-def"><a name="L129"></a><tt class="py-lineno">129</tt> <a class="py-toggle" href="#" id="Text.__init__-toggle" onclick="return toggle('Text.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.Text.Text-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt><tt class="py-op">**</tt><tt class="py-param">kw</tt><tt class="py- [...]
+</div><div id="Text.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Text.__init__-expanded"><a name="L130"></a><tt class="py-lineno">130</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">pygame</tt><tt class="py-op">.</tt><tt class="py-name">font</tt><tt class="py-op">:</tt> </tt>
+<a name="L131"></a><tt class="py-lineno">131</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">RuntimeError</tt><tt class="py-op">(</tt><tt class="py-string">"no pygame font module"</tt><tt class="py-op">)</tt> </tt>
+<a name="L132"></a><tt class="py-lineno">132</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">pygame</tt><tt class="py-op">.</tt><tt class="py-name">font</tt><tt class="py-op">.</tt><tt class="py-name">get_init</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L133"></a><tt class="py-lineno">133</tt>  <tt class="py-line">            <tt class="py-name">pygame</tt><tt class="py-op">.</tt><tt class="py-name">font</tt><tt class="py-op">.</tt><tt class="py-name">init</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L134"></a><tt class="py-lineno">134</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">pygame</tt><tt class="py-op">.</tt><tt class="py-name">font</tt><tt class="py-op">.</tt><tt class="py-name">get_init</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L135"></a><tt class="py-lineno">135</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> <tt class="py-name">RuntimeError</tt><tt class="py-op">(</tt><tt class="py-string">"pygame doesn't init"</tt><tt class="py-op">)</tt> </tt>
+<a name="L136"></a><tt class="py-lineno">136</tt>  <tt class="py-line">        <tt class="py-comment"># override some defaults</tt> </tt>
+<a name="L137"></a><tt class="py-lineno">137</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-string">'internal_format'</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">kw</tt><tt class="py-op">.</tt><tt class="py-name">keys</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L138"></a><tt class="py-lineno">138</tt>  <tt class="py-line">            <tt class="py-name">kw</tt><tt class="py-op">[</tt><tt class="py-string">'internal_format'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_RGBA</tt> </tt>
+<a name="L139"></a><tt class="py-lineno">139</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-string">'mipmaps_enabled'</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">kw</tt><tt class="py-op">.</tt><tt class="py-name">keys</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L140"></a><tt class="py-lineno">140</tt>  <tt class="py-line">            <tt class="py-name">kw</tt><tt class="py-op">[</tt><tt class="py-string">'mipmaps_enabled'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L141"></a><tt class="py-lineno">141</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-string">'texture_min_filter'</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">kw</tt><tt class="py-op">.</tt><tt class="py-name">keys</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L142"></a><tt class="py-lineno">142</tt>  <tt class="py-line">            <tt class="py-name">kw</tt><tt class="py-op">[</tt><tt class="py-string">'texture_min_filter'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_LINEAR</tt> </tt>
+<a name="L143"></a><tt class="py-lineno">143</tt>  <tt class="py-line">        <tt id="link-21" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-21', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-22" class="py-name"><a title="VisionEgg.Textures" class="py-name" href="#" onclick="return doclink('link-22', 'Textures', 'link-3');">Textures</a></tt><tt class="py-op">.</tt><tt id="link-23" class="py-name" targets="Cl [...]
+VisionEgg.Configuration.Config.__init__
+VisionEgg.Core.FixationSpot.__init__
+VisionEgg.Core.FrameTimer.__init__
+VisionEgg.Core.ModelView.__init__
+VisionEgg.Core.OrthographicProjection.__init__
+VisionEgg.Core.OrthographicProjectionNoZClip.__init__
+VisionEgg.Core.PerspectiveProjection.__init__
+VisionEgg.Core.Projection.__init__
+VisionEgg.Core.ProjectionBaseClass.__init__
+VisionEgg.Core.Screen.__init__
+VisionEgg.Core.SimplePerspectiveProjection.__init__
+VisionEgg.Core.Stimulus.__init__
+VisionEgg.Core.Viewport.__init__
+VisionEgg.Daq.Channel.__init__
+VisionEgg.Daq.DaqMode.__init__
+VisionEgg.Daq.Device.__init__
+VisionEgg.Daq.Functionality.__init__
+VisionEgg.Daq.SignalType.__init__
+VisionEgg.DaqKeyboard.KeyboardTriggerInController.__init__
+VisionEgg.DaqLPT.LPTChannel.__init__
+VisionEgg.DaqLPT.LPTDevice.__init__
+VisionEgg.DaqLPT.LPTTriggerInController.__init__
+VisionEgg.DaqLPT.LPTTriggerOutController.__init__
+VisionEgg.Deprecated.Message.__init__
+VisionEgg.Dots.DotArea2D.__init__
+VisionEgg.FlowControl.ConstantController.__init__
+VisionEgg.FlowControl.Controller.__init__
+VisionEgg.FlowControl.EncapsulatedController.__init__
+VisionEgg.FlowControl.EvalStringController.__init__
+VisionEgg.FlowControl.ExecStringController.__init__
+VisionEgg.FlowControl.FunctionController.__init__
+VisionEgg.FlowControl.Presentation.__init__
+VisionEgg.GLTrace.Wrapper.__init__
+VisionEgg.GUI.AppWindow.__init__
+VisionEgg.GUI.GetKeypressDialog.__init__
+VisionEgg.GUI.GraphicsConfigurationWindow.__init__
+VisionEgg.GUI.InfoFrame.__init__
+VisionEgg.GUI.ProgressBar.__init__
+VisionEgg.GUI.ToplevelDialog.__init__
+VisionEgg.Gratings.SinGrating2D.__init__
+VisionEgg.Gratings.SinGrating3D.__init__
+VisionEgg.MoreStimuli.Arrow.__init__
+VisionEgg.MoreStimuli.FilledCircle.__init__
+VisionEgg.MoreStimuli.Rectangle3D.__init__
+VisionEgg.MoreStimuli.Target2D.__init__
+VisionEgg.ParameterTypes.AnyOf.__init__
+VisionEgg.ParameterTypes.Instance.__init__
+VisionEgg.ParameterTypes.Sequence.__init__
+VisionEgg.ParameterTypes.SubClass.__init__
+VisionEgg.PyroApps.AST_ext.AST_Visitor.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalMetaParameters.__init__
+VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.__init__
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.__init__
+VisionEgg.PyroApps.DropinGUI.DropinMetaParameters.__init__
+VisionEgg.PyroApps.DropinServer.DropinMetaController.__init__
+VisionEgg.PyroApps.EPhysGUI.AppWindow.__init__
+VisionEgg.PyroApps.EPhysGUI.BarButton.__init__
+VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase.__init__
+VisionEgg.PyroApps.EPhysGUI.GammaFrame.__init__
+VisionEgg.PyroApps.EPhysGUI.ImageSequenceLauncher.__init__
+VisionEgg.PyroApps.EPhysGUI.Loop.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopContainedObject.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopParamDialog.__init__
+VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.__init__
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.__init__
+VisionEgg.PyroApps.EPhysServer.EPhysServer.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingMetaParameters.__init__
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.GridGUI.GridControlFrame.__init__
+VisionEgg.PyroApps.GridGUI.GridMetaParameters.__init__
+VisionEgg.PyroApps.GridServer.GridMetaController.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetMetaParameters.__init__
+VisionEgg.PyroApps.MouseTargetServer.MousePositionController.__init__
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetOrientationController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetPositionController.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.CallbackEntry.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionParameters.__init__
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingMetaParameters.__init__
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumMetaParameters.__init__
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.__init__
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.__init__
+VisionEgg.PyroApps.TargetGUI.TargetMetaParameters.__init__
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.__init__
+VisionEgg.PyroClient.PyroClient.__init__
+VisionEgg.PyroHelpers.PyroConstantController.__init__
+VisionEgg.PyroHelpers.PyroEncapsulatedController.__init__
+VisionEgg.PyroHelpers.PyroEvalStringController.__init__
+VisionEgg.PyroHelpers.PyroExecStringController.__init__
+VisionEgg.PyroHelpers.PyroListenController.__init__
+VisionEgg.PyroHelpers.PyroLocalDictController.__init__
+VisionEgg.PyroHelpers.PyroServer.__init__
+VisionEgg.QuickTime.MovieTexture.__init__
+VisionEgg.ResponseControl.KeyboardResponseController.__init__
+VisionEgg.ResponseControl.ResponseController.__init__
+VisionEgg.SphereMap.AzElGrid.__init__
+VisionEgg.SphereMap.SphereGrating.__init__
+VisionEgg.SphereMap.SphereMap.__init__
+VisionEgg.SphereMap.SphereWindow.__init__
+VisionEgg.TCPController.SocketListenController.__init__
+VisionEgg.TCPController.TCPController.__init__
+VisionEgg.TCPController.TCPServer.__init__
+VisionEgg.Text.BitmapText.__init__
+VisionEgg.Text.GlutTextBase.__init__
+VisionEgg.Text.StrokeText.__init__
+VisionEgg.Text.Text.__init__
+VisionEgg.Textures.FixationCross.__init__
+VisionEgg.Textures.Mask2D.__init__
+VisionEgg.Textures.SpinningDrum.__init__
+VisionEgg.Textures.Texture.__init__
+VisionEgg.Textures.TextureFromFile.__init__
+VisionEgg.Textures.TextureObject.__init__
+VisionEgg.Textures.TextureStimulusBaseClass.__init__
+VisionEgg.ThreeDeeMath.TransformMatrix.__init__
+VisionEgg.WrappedText.WrappedText.__init__
+VisionEgg.qtmovie.Movie.__init__
+VisionEgg.qtmovie.Rect.__init__" class="py-name" href="#" onclick="return doclink('link-24', '__init__', 'link-24');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt><tt class="py-op">**</tt><tt class="py-name">kw</tt><tt class="py-op">)</tt> </tt>
+<a name="L144"></a><tt class="py-lineno">144</tt>  <tt class="py-line">        <tt class="py-name">cp</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">constant_parameters</tt> </tt>
+<a name="L145"></a><tt class="py-lineno">145</tt>  <tt class="py-line">        <tt class="py-name">fontobject_args</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">cp</tt><tt class="py-op">.</tt><tt class="py-name">font_name</tt><tt class="py-op">,</tt><tt class="py-name">cp</tt><tt class="py-op">.</tt><tt class="py-name">font_size</tt><tt class="py-op">)</tt> </tt>
+<a name="L146"></a><tt class="py-lineno">146</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">fontobject_args</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt id="link-25" class="py-name"><a title="VisionEgg.Text._font_objects" class="py-name" href="#" onclick="return doclink('link-25', '_font_objects', 'link-10');">_font_objects</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L147"></a><tt class="py-lineno">147</tt>  <tt class="py-line">            <tt class="py-comment"># make global cache of font objects</tt> </tt>
+<a name="L148"></a><tt class="py-lineno">148</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">fontobject</tt> <tt class="py-op">=</tt> <tt class="py-name">pygame</tt><tt class="py-op">.</tt><tt class="py-name">font</tt><tt class="py-op">.</tt><tt class="py-name">Font</tt><tt class="py-op">(</tt><tt class="py-op">*</tt><tt class="py-name">fontobject_args</tt><tt class="py-op">)</tt> </tt>
+<a name="L149"></a><tt class="py-lineno">149</tt>  <tt class="py-line">            <tt id="link-26" class="py-name"><a title="VisionEgg.Text._font_objects" class="py-name" href="#" onclick="return doclink('link-26', '_font_objects', 'link-10');">_font_objects</a></tt><tt class="py-op">[</tt><tt class="py-name">fontobject_args</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">fontobject</tt> </tt>
+<a name="L150"></a><tt class="py-lineno">150</tt>  <tt class="py-line">        <tt class="py-comment"># get font object from global cache</tt> </tt>
+<a name="L151"></a><tt class="py-lineno">151</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">font</tt> <tt class="py-op">=</tt> <tt id="link-27" class="py-name"><a title="VisionEgg.Text._font_objects" class="py-name" href="#" onclick="return doclink('link-27', '_font_objects', 'link-10');">_font_objects</a></tt><tt class="py-op">[</tt><tt class="py-name">fontobject_args</tt><tt class="py-op">]</tt> </tt>
+<a name="L152"></a><tt class="py-lineno">152</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_render_text</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L153"></a><tt class="py-lineno">153</tt>  <tt class="py-line"> </tt>
+<a name="Text._render_text"></a><div id="Text._render_text-def"><a name="L154"></a><tt class="py-lineno">154</tt> <a class="py-toggle" href="#" id="Text._render_text-toggle" onclick="return toggle('Text._render_text');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.Text.Text-class.html#_render_text">_render_text</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Text._render_text-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Text._render_text-expanded"><a name="L155"></a><tt class="py-lineno">155</tt>  <tt class="py-line">        <tt class="py-name">p</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt> </tt>
+<a name="L156"></a><tt class="py-lineno">156</tt>  <tt class="py-line">        <tt class="py-name">rendered_surf</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">font</tt><tt class="py-op">.</tt><tt class="py-name">render</tt><tt class="py-op">(</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">text</tt><tt class="py-op">,</tt> <tt class="py-number">1</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt cla [...]
+<a name="L157"></a><tt class="py-lineno">157</tt>  <tt class="py-line"> </tt>
+<a name="L158"></a><tt class="py-lineno">158</tt>  <tt class="py-line">        <tt class="py-comment"># we could use put_new_image for speed (or put_sub_image for more)</tt> </tt>
+<a name="L159"></a><tt class="py-lineno">159</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">texture</tt> <tt class="py-op">=</tt> <tt id="link-28" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-28', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-29" class="py-name"><a title="VisionEgg.Textures" class="py-name" href="#" onclick= [...]
+<a name="L160"></a><tt class="py-lineno">160</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_reload_texture</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L161"></a><tt class="py-lineno">161</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_text</tt> <tt class="py-op">=</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">text</tt> <tt class="py-comment"># cache string so we know when to re-render</tt> </tt>
+<a name="L162"></a><tt class="py-lineno">162</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">ignore_size_parameter</tt><tt class="py-op">:</tt> </tt>
+<a name="L163"></a><tt class="py-lineno">163</tt>  <tt class="py-line">            <tt class="py-name">p</tt><tt class="py-op">.</tt><tt id="link-31" class="py-name" targets="Variable VisionEgg.Core.Screen.size=VisionEgg.Core.Screen-class.html#size"><a title="VisionEgg.Core.Screen.size" class="py-name" href="#" onclick="return doclink('link-31', 'size', 'link-31');">size</a></tt> <tt class="py-op">=</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">texture</tt><t [...]
+</div><a name="L164"></a><tt class="py-lineno">164</tt>  <tt class="py-line"> </tt>
+<a name="Text.draw"></a><div id="Text.draw-def"><a name="L165"></a><tt class="py-lineno">165</tt> <a class="py-toggle" href="#" id="Text.draw-toggle" onclick="return toggle('Text.draw');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.Text.Text-class.html#draw">draw</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Text.draw-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Text.draw-expanded"><a name="L166"></a><tt class="py-lineno">166</tt>  <tt class="py-line">        <tt class="py-name">p</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt> </tt>
+<a name="L167"></a><tt class="py-lineno">167</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">texture</tt> <tt class="py-op">!=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_using_texture</tt><tt class="py-op">:</tt> <tt class="py-comment"># self._using_texture is from TextureStimulusBaseClass</tt> </tt>
+<a name="L168"></a><tt class="py-lineno">168</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">RuntimeError</tt><tt class="py-op">(</tt><tt class="py-string">"my texture has been modified, but it shouldn't be"</tt><tt class="py-op">)</tt> </tt>
+<a name="L169"></a><tt class="py-lineno">169</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">text</tt> <tt class="py-op">!=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_text</tt><tt class="py-op">:</tt> <tt class="py-comment"># new text</tt> </tt>
+<a name="L170"></a><tt class="py-lineno">170</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_render_text</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L171"></a><tt class="py-lineno">171</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">ignore_size_parameter</tt><tt class="py-op">:</tt> </tt>
+<a name="L172"></a><tt class="py-lineno">172</tt>  <tt class="py-line">            <tt class="py-name">p</tt><tt class="py-op">.</tt><tt id="link-33" class="py-name"><a title="VisionEgg.Core.Screen.size" class="py-name" href="#" onclick="return doclink('link-33', 'size', 'link-31');">size</a></tt> <tt class="py-op">=</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">texture</tt><tt class="py-op">.</tt><tt id="link-34" class="py-name"><a title="VisionEgg.Core.Scre [...]
+<a name="L173"></a><tt class="py-lineno">173</tt>  <tt class="py-line">        <tt id="link-35" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-35', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-36" class="py-name"><a title="VisionEgg.Textures" class="py-name" href="#" onclick="return doclink('link-36', 'Textures', 'link-3');">Textures</a></tt><tt class="py-op">.</tt><tt id="link-37" class="py-name"><a title="V [...]
+VisionEgg.Core.Stimulus.draw
+VisionEgg.Core.Viewport.draw
+VisionEgg.Dots.DotArea2D.draw
+VisionEgg.Gratings.SinGrating2D.draw
+VisionEgg.Gratings.SinGrating3D.draw
+VisionEgg.MoreStimuli.Arrow.draw
+VisionEgg.MoreStimuli.FilledCircle.draw
+VisionEgg.MoreStimuli.Rectangle3D.draw
+VisionEgg.MoreStimuli.Target2D.draw
+VisionEgg.SphereMap.AzElGrid.draw
+VisionEgg.SphereMap.SphereGrating.draw
+VisionEgg.SphereMap.SphereMap.draw
+VisionEgg.SphereMap.SphereWindow.draw
+VisionEgg.Text.BitmapText.draw
+VisionEgg.Text.StrokeText.draw
+VisionEgg.Text.Text.draw
+VisionEgg.Textures.FixationCross.draw
+VisionEgg.Textures.SpinningDrum.draw
+VisionEgg.Textures.TextureStimulus.draw
+VisionEgg.Textures.TextureStimulus3D.draw
+VisionEgg.WrappedText.WrappedText.draw" class="py-name" href="#" onclick="return doclink('link-38', 'draw', 'link-38');">draw</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> <tt class="py-comment"># call base class</tt> </tt>
+</div></div><a name="L174"></a><tt class="py-lineno">174</tt>  <tt class="py-line"> </tt>
+<a name="L175"></a><tt class="py-lineno">175</tt>  <tt class="py-line"><tt class="py-keyword">if</tt> <tt id="link-39" class="py-name"><a title="VisionEgg.Text.have_glut" class="py-name" href="#" onclick="return doclink('link-39', 'have_glut', 'link-8');">have_glut</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L176"></a><tt class="py-lineno">176</tt>  <tt class="py-line"> </tt>
+<a name="GlutTextBase"></a><div id="GlutTextBase-def"><a name="L177"></a><tt class="py-lineno">177</tt> <a class="py-toggle" href="#" id="GlutTextBase-toggle" onclick="return toggle('GlutTextBase');">-</a><tt class="py-line">    <tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.Text.GlutTextBase-class.html">GlutTextBase</a><tt class="py-op">(</tt><tt class="py-base-class">VisionEgg</tt><tt class="py-op">.</tt><tt class="py-base-class">Core</tt><tt class="py-op">.</ [...]
+</div><div id="GlutTextBase-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="GlutTextBase-expanded"><a name="L178"></a><tt class="py-lineno">178</tt>  <tt class="py-line">        <tt class="py-docstring">"""DEPRECATED. Base class: don't instantiate this class directly.</tt> </tt>
+<a name="L179"></a><tt class="py-lineno">179</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L180"></a><tt class="py-lineno">180</tt>  <tt class="py-line"><tt class="py-docstring">        Base class that defines the common interface between the</tt> </tt>
+<a name="L181"></a><tt class="py-lineno">181</tt>  <tt class="py-line"><tt class="py-docstring">        other glut-based text stimuli.</tt> </tt>
+<a name="L182"></a><tt class="py-lineno">182</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L183"></a><tt class="py-lineno">183</tt>  <tt class="py-line"><tt class="py-docstring">        Parameters</tt> </tt>
+<a name="L184"></a><tt class="py-lineno">184</tt>  <tt class="py-line"><tt class="py-docstring">        ==========</tt> </tt>
+<a name="L185"></a><tt class="py-lineno">185</tt>  <tt class="py-line"><tt class="py-docstring">        color     -- (AnyOf(Sequence3 of Real or Sequence4 of Real))</tt> </tt>
+<a name="L186"></a><tt class="py-lineno">186</tt>  <tt class="py-line"><tt class="py-docstring">                     Default: (1.0, 1.0, 1.0)</tt> </tt>
+<a name="L187"></a><tt class="py-lineno">187</tt>  <tt class="py-line"><tt class="py-docstring">        lowerleft -- (Sequence2 of Real)</tt> </tt>
+<a name="L188"></a><tt class="py-lineno">188</tt>  <tt class="py-line"><tt class="py-docstring">                     Default: (320, 240)</tt> </tt>
+<a name="L189"></a><tt class="py-lineno">189</tt>  <tt class="py-line"><tt class="py-docstring">        on        -- (Boolean)</tt> </tt>
+<a name="L190"></a><tt class="py-lineno">190</tt>  <tt class="py-line"><tt class="py-docstring">                     Default: True</tt> </tt>
+<a name="L191"></a><tt class="py-lineno">191</tt>  <tt class="py-line"><tt class="py-docstring">        text      -- (String)</tt> </tt>
+<a name="L192"></a><tt class="py-lineno">192</tt>  <tt class="py-line"><tt class="py-docstring">                     Default: the string to display</tt> </tt>
+<a name="L193"></a><tt class="py-lineno">193</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L194"></a><tt class="py-lineno">194</tt>  <tt class="py-line"> </tt>
+<a name="L195"></a><tt class="py-lineno">195</tt>  <tt class="py-line">        <tt id="link-40" class="py-name"><a title="VisionEgg.ClassWithParameters.parameters_and_defaults
+VisionEgg.Core.FixationSpot.parameters_and_defaults
+VisionEgg.Core.ProjectionBaseClass.parameters_and_defaults
+VisionEgg.Core.Screen.parameters_and_defaults
+VisionEgg.Core.Viewport.parameters_and_defaults
+VisionEgg.Daq.Buffered.parameters_and_defaults
+VisionEgg.Dots.DotArea2D.parameters_and_defaults
+VisionEgg.FlowControl.Presentation.parameters_and_defaults
+VisionEgg.Gratings.AlphaGratingCommon.parameters_and_defaults
+VisionEgg.Gratings.LuminanceGratingCommon.parameters_and_defaults
+VisionEgg.Gratings.SinGrating2D.parameters_and_defaults
+VisionEgg.Gratings.SinGrating3D.parameters_and_defaults
+VisionEgg.MoreStimuli.Arrow.parameters_and_defaults
+VisionEgg.MoreStimuli.FilledCircle.parameters_and_defaults
+VisionEgg.MoreStimuli.Rectangle3D.parameters_and_defaults
+VisionEgg.MoreStimuli.Target2D.parameters_and_defaults
+VisionEgg.PyroApps.EPhysGUI.Loop.parameters_and_defaults
+VisionEgg.SphereMap.AzElGrid.parameters_and_defaults
+VisionEgg.SphereMap.SphereGrating.parameters_and_defaults
+VisionEgg.SphereMap.SphereMap.parameters_and_defaults
+VisionEgg.SphereMap.SphereWindow.parameters_and_defaults
+VisionEgg.Text.BitmapText.parameters_and_defaults
+VisionEgg.Text.GlutTextBase.parameters_and_defaults
+VisionEgg.Text.StrokeText.parameters_and_defaults
+VisionEgg.Text.Text.parameters_and_defaults
+VisionEgg.Textures.FixationCross.parameters_and_defaults
+VisionEgg.Textures.SpinningDrum.parameters_and_defaults
+VisionEgg.Textures.TextureStimulus.parameters_and_defaults
+VisionEgg.Textures.TextureStimulus3D.parameters_and_defaults
+VisionEgg.Textures.TextureStimulusBaseClass.parameters_and_defaults
+VisionEgg.WrappedText.WrappedText.parameters_and_defaults" class="py-name" href="#" onclick="return doclink('link-40', 'parameters_and_defaults', 'link-11');">parameters_and_defaults</a></tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> </tt>
+<a name="L196"></a><tt class="py-lineno">196</tt>  <tt class="py-line">            <tt class="py-string">'on'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-name">True</tt><tt class="py-op">,</tt> </tt>
+<a name="L197"></a><tt class="py-lineno">197</tt>  <tt class="py-line">                  <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-41" class="py-name"><a title="VisionEgg.ParameterTypes.Boolean" class="py-name" href="#" onclick="return doclink('link-41', 'Boolean', 'link-15');">Boolean</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L198"></a><tt class="py-lineno">198</tt>  <tt class="py-line">            <tt class="py-string">'color'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-number">1.0</tt><tt class="py-op">,</tt><tt class="py-number">1.0</tt><tt class="py-op">,</tt><tt class="py-number">1.0</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L199"></a><tt class="py-lineno">199</tt>  <tt class="py-line">                     <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-42" class="py-name"><a title="VisionEgg.ParameterTypes.AnyOf" class="py-name" href="#" onclick="return doclink('link-42', 'AnyOf', 'link-12');">AnyOf</a></tt><tt class="py-op">(</tt><tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-43" class="py-name" targets="Class VisionEgg.ParameterTypes.Sequence3=VisionEg [...]
+<a name="L200"></a><tt class="py-lineno">200</tt>  <tt class="py-line">                                    <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-45" class="py-name" targets="Class VisionEgg.ParameterTypes.Sequence4=VisionEgg.ParameterTypes.Sequence4-class.html"><a title="VisionEgg.ParameterTypes.Sequence4" class="py-name" href="#" onclick="return doclink('link-45', 'Sequence4', 'link-45');">Sequence4</a></tt><tt class="py-op">(</tt><tt class="py-name">ve_t [...]
+<a name="L201"></a><tt class="py-lineno">201</tt>  <tt class="py-line">            <tt class="py-string">'lowerleft'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-number">320</tt><tt class="py-op">,</tt><tt class="py-number">240</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L202"></a><tt class="py-lineno">202</tt>  <tt class="py-line">                         <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-47" class="py-name" targets="Class VisionEgg.ParameterTypes.Sequence2=VisionEgg.ParameterTypes.Sequence2-class.html"><a title="VisionEgg.ParameterTypes.Sequence2" class="py-name" href="#" onclick="return doclink('link-47', 'Sequence2', 'link-47');">Sequence2</a></tt><tt class="py-op">(</tt><tt class="py-name">ve_types</tt><t [...]
+<a name="L203"></a><tt class="py-lineno">203</tt>  <tt class="py-line">            <tt class="py-string">'text'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-string">'the string to display'</tt><tt class="py-op">,</tt> </tt>
+<a name="L204"></a><tt class="py-lineno">204</tt>  <tt class="py-line">                    <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-49" class="py-name"><a title="VisionEgg.ParameterTypes.String" class="py-name" href="#" onclick="return doclink('link-49', 'String', 'link-13');">String</a></tt><tt class="py-op">)</tt><tt class="py-op">}</tt> </tt>
+<a name="L205"></a><tt class="py-lineno">205</tt>  <tt class="py-line"> </tt>
+<a name="GlutTextBase.__init__"></a><div id="GlutTextBase.__init__-def"><a name="L206"></a><tt class="py-lineno">206</tt> <a class="py-toggle" href="#" id="GlutTextBase.__init__-toggle" onclick="return toggle('GlutTextBase.__init__');">-</a><tt class="py-line">        <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.Text.GlutTextBase-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt><tt class="py-op">**</t [...]
+</div><div id="GlutTextBase.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++++++++++"></div><div id="GlutTextBase.__init__-expanded"><a name="L207"></a><tt class="py-lineno">207</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt id="link-50" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-50', 'VisionEgg', 'link-0'); [...]
+<a name="L208"></a><tt class="py-lineno">208</tt>  <tt class="py-line">                <tt id="link-52" class="py-name" targets="Variable VisionEgg.logger=VisionEgg-module.html#logger"><a title="VisionEgg.logger" class="py-name" href="#" onclick="return doclink('link-52', 'logger', 'link-52');">logger</a></tt> <tt class="py-op">=</tt> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">getLogger</tt><tt class="py-op">(</tt><tt class="py-string">'VisionEgg.Text'</t [...]
+<a name="L209"></a><tt class="py-lineno">209</tt>  <tt class="py-line">                <tt id="link-53" class="py-name"><a title="VisionEgg.logger" class="py-name" href="#" onclick="return doclink('link-53', 'logger', 'link-52');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">warning</tt><tt class="py-op">(</tt><tt class="py-string">"Using GlutTextBase class.  This will be "</tt> </tt>
+<a name="L210"></a><tt class="py-lineno">210</tt>  <tt class="py-line">                               <tt class="py-string">"removed in a future release. Use "</tt> </tt>
+<a name="L211"></a><tt class="py-lineno">211</tt>  <tt class="py-line">                               <tt class="py-string">"VisionEgg.Text.Text instead."</tt><tt class="py-op">)</tt> </tt>
+<a name="L212"></a><tt class="py-lineno">212</tt>  <tt class="py-line">                <tt id="link-54" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-54', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-55" class="py-name"><a title="VisionEgg.config" class="py-name" href="#" onclick="return doclink('link-55', 'config', 'link-51');">config</a></tt><tt class="py-op">.</tt><tt class="py-name">_GAVE_GLUT_TEXT_DEPRE [...]
+<a name="L213"></a><tt class="py-lineno">213</tt>  <tt class="py-line">                <tt id="link-56" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-56', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-57" class="py-name"><a title="VisionEgg.Core" class="py-name" href="#" onclick="return doclink('link-57', 'Core', 'link-1');">Core</a></tt><tt class="py-op">.</tt><tt id="link-58" class="py-name" targets="Class  [...]
+VisionEgg.Configuration.Config.__init__
+VisionEgg.Core.FixationSpot.__init__
+VisionEgg.Core.FrameTimer.__init__
+VisionEgg.Core.ModelView.__init__
+VisionEgg.Core.OrthographicProjection.__init__
+VisionEgg.Core.OrthographicProjectionNoZClip.__init__
+VisionEgg.Core.PerspectiveProjection.__init__
+VisionEgg.Core.Projection.__init__
+VisionEgg.Core.ProjectionBaseClass.__init__
+VisionEgg.Core.Screen.__init__
+VisionEgg.Core.SimplePerspectiveProjection.__init__
+VisionEgg.Core.Stimulus.__init__
+VisionEgg.Core.Viewport.__init__
+VisionEgg.Daq.Channel.__init__
+VisionEgg.Daq.DaqMode.__init__
+VisionEgg.Daq.Device.__init__
+VisionEgg.Daq.Functionality.__init__
+VisionEgg.Daq.SignalType.__init__
+VisionEgg.DaqKeyboard.KeyboardTriggerInController.__init__
+VisionEgg.DaqLPT.LPTChannel.__init__
+VisionEgg.DaqLPT.LPTDevice.__init__
+VisionEgg.DaqLPT.LPTTriggerInController.__init__
+VisionEgg.DaqLPT.LPTTriggerOutController.__init__
+VisionEgg.Deprecated.Message.__init__
+VisionEgg.Dots.DotArea2D.__init__
+VisionEgg.FlowControl.ConstantController.__init__
+VisionEgg.FlowControl.Controller.__init__
+VisionEgg.FlowControl.EncapsulatedController.__init__
+VisionEgg.FlowControl.EvalStringController.__init__
+VisionEgg.FlowControl.ExecStringController.__init__
+VisionEgg.FlowControl.FunctionController.__init__
+VisionEgg.FlowControl.Presentation.__init__
+VisionEgg.GLTrace.Wrapper.__init__
+VisionEgg.GUI.AppWindow.__init__
+VisionEgg.GUI.GetKeypressDialog.__init__
+VisionEgg.GUI.GraphicsConfigurationWindow.__init__
+VisionEgg.GUI.InfoFrame.__init__
+VisionEgg.GUI.ProgressBar.__init__
+VisionEgg.GUI.ToplevelDialog.__init__
+VisionEgg.Gratings.SinGrating2D.__init__
+VisionEgg.Gratings.SinGrating3D.__init__
+VisionEgg.MoreStimuli.Arrow.__init__
+VisionEgg.MoreStimuli.FilledCircle.__init__
+VisionEgg.MoreStimuli.Rectangle3D.__init__
+VisionEgg.MoreStimuli.Target2D.__init__
+VisionEgg.ParameterTypes.AnyOf.__init__
+VisionEgg.ParameterTypes.Instance.__init__
+VisionEgg.ParameterTypes.Sequence.__init__
+VisionEgg.ParameterTypes.SubClass.__init__
+VisionEgg.PyroApps.AST_ext.AST_Visitor.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalMetaParameters.__init__
+VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.__init__
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.__init__
+VisionEgg.PyroApps.DropinGUI.DropinMetaParameters.__init__
+VisionEgg.PyroApps.DropinServer.DropinMetaController.__init__
+VisionEgg.PyroApps.EPhysGUI.AppWindow.__init__
+VisionEgg.PyroApps.EPhysGUI.BarButton.__init__
+VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase.__init__
+VisionEgg.PyroApps.EPhysGUI.GammaFrame.__init__
+VisionEgg.PyroApps.EPhysGUI.ImageSequenceLauncher.__init__
+VisionEgg.PyroApps.EPhysGUI.Loop.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopContainedObject.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopParamDialog.__init__
+VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.__init__
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.__init__
+VisionEgg.PyroApps.EPhysServer.EPhysServer.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingMetaParameters.__init__
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.GridGUI.GridControlFrame.__init__
+VisionEgg.PyroApps.GridGUI.GridMetaParameters.__init__
+VisionEgg.PyroApps.GridServer.GridMetaController.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetMetaParameters.__init__
+VisionEgg.PyroApps.MouseTargetServer.MousePositionController.__init__
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetOrientationController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetPositionController.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.CallbackEntry.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionParameters.__init__
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingMetaParameters.__init__
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumMetaParameters.__init__
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.__init__
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.__init__
+VisionEgg.PyroApps.TargetGUI.TargetMetaParameters.__init__
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.__init__
+VisionEgg.PyroClient.PyroClient.__init__
+VisionEgg.PyroHelpers.PyroConstantController.__init__
+VisionEgg.PyroHelpers.PyroEncapsulatedController.__init__
+VisionEgg.PyroHelpers.PyroEvalStringController.__init__
+VisionEgg.PyroHelpers.PyroExecStringController.__init__
+VisionEgg.PyroHelpers.PyroListenController.__init__
+VisionEgg.PyroHelpers.PyroLocalDictController.__init__
+VisionEgg.PyroHelpers.PyroServer.__init__
+VisionEgg.QuickTime.MovieTexture.__init__
+VisionEgg.ResponseControl.KeyboardResponseController.__init__
+VisionEgg.ResponseControl.ResponseController.__init__
+VisionEgg.SphereMap.AzElGrid.__init__
+VisionEgg.SphereMap.SphereGrating.__init__
+VisionEgg.SphereMap.SphereMap.__init__
+VisionEgg.SphereMap.SphereWindow.__init__
+VisionEgg.TCPController.SocketListenController.__init__
+VisionEgg.TCPController.TCPController.__init__
+VisionEgg.TCPController.TCPServer.__init__
+VisionEgg.Text.BitmapText.__init__
+VisionEgg.Text.GlutTextBase.__init__
+VisionEgg.Text.StrokeText.__init__
+VisionEgg.Text.Text.__init__
+VisionEgg.Textures.FixationCross.__init__
+VisionEgg.Textures.Mask2D.__init__
+VisionEgg.Textures.SpinningDrum.__init__
+VisionEgg.Textures.Texture.__init__
+VisionEgg.Textures.TextureFromFile.__init__
+VisionEgg.Textures.TextureObject.__init__
+VisionEgg.Textures.TextureStimulusBaseClass.__init__
+VisionEgg.ThreeDeeMath.TransformMatrix.__init__
+VisionEgg.WrappedText.WrappedText.__init__
+VisionEgg.qtmovie.Movie.__init__
+VisionEgg.qtmovie.Rect.__init__" class="py-name" href="#" onclick="return doclink('link-59', '__init__', 'link-24');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt><tt class="py-op">**</tt><tt class="py-name">kw</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L214"></a><tt class="py-lineno">214</tt>  <tt class="py-line"> </tt>
+<a name="BitmapText"></a><div id="BitmapText-def"><a name="L215"></a><tt class="py-lineno">215</tt> <a class="py-toggle" href="#" id="BitmapText-toggle" onclick="return toggle('BitmapText');">-</a><tt class="py-line">    <tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.Text.BitmapText-class.html">BitmapText</a><tt class="py-op">(</tt><tt class="py-base-class">GlutTextBase</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="BitmapText-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="BitmapText-expanded"><a name="L216"></a><tt class="py-lineno">216</tt>  <tt class="py-line">        <tt class="py-docstring">"""DEPRECATED. Bitmap fonts from GLUT.</tt> </tt>
+<a name="L217"></a><tt class="py-lineno">217</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L218"></a><tt class="py-lineno">218</tt>  <tt class="py-line"><tt class="py-docstring">        Parameters</tt> </tt>
+<a name="L219"></a><tt class="py-lineno">219</tt>  <tt class="py-line"><tt class="py-docstring">        ==========</tt> </tt>
+<a name="L220"></a><tt class="py-lineno">220</tt>  <tt class="py-line"><tt class="py-docstring">        color     -- (AnyOf(Sequence3 of Real or Sequence4 of Real))</tt> </tt>
+<a name="L221"></a><tt class="py-lineno">221</tt>  <tt class="py-line"><tt class="py-docstring">                     Inherited from GlutTextBase</tt> </tt>
+<a name="L222"></a><tt class="py-lineno">222</tt>  <tt class="py-line"><tt class="py-docstring">                     Default: (1.0, 1.0, 1.0)</tt> </tt>
+<a name="L223"></a><tt class="py-lineno">223</tt>  <tt class="py-line"><tt class="py-docstring">        font      -- (Integer)</tt> </tt>
+<a name="L224"></a><tt class="py-lineno">224</tt>  <tt class="py-line"><tt class="py-docstring">                     Default: 5</tt> </tt>
+<a name="L225"></a><tt class="py-lineno">225</tt>  <tt class="py-line"><tt class="py-docstring">        lowerleft -- (Sequence2 of Real)</tt> </tt>
+<a name="L226"></a><tt class="py-lineno">226</tt>  <tt class="py-line"><tt class="py-docstring">                     Inherited from GlutTextBase</tt> </tt>
+<a name="L227"></a><tt class="py-lineno">227</tt>  <tt class="py-line"><tt class="py-docstring">                     Default: (320, 240)</tt> </tt>
+<a name="L228"></a><tt class="py-lineno">228</tt>  <tt class="py-line"><tt class="py-docstring">        on        -- (Boolean)</tt> </tt>
+<a name="L229"></a><tt class="py-lineno">229</tt>  <tt class="py-line"><tt class="py-docstring">                     Inherited from GlutTextBase</tt> </tt>
+<a name="L230"></a><tt class="py-lineno">230</tt>  <tt class="py-line"><tt class="py-docstring">                     Default: True</tt> </tt>
+<a name="L231"></a><tt class="py-lineno">231</tt>  <tt class="py-line"><tt class="py-docstring">        text      -- (String)</tt> </tt>
+<a name="L232"></a><tt class="py-lineno">232</tt>  <tt class="py-line"><tt class="py-docstring">                     Inherited from GlutTextBase</tt> </tt>
+<a name="L233"></a><tt class="py-lineno">233</tt>  <tt class="py-line"><tt class="py-docstring">                     Default: the string to display</tt> </tt>
+<a name="L234"></a><tt class="py-lineno">234</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L235"></a><tt class="py-lineno">235</tt>  <tt class="py-line"> </tt>
+<a name="L236"></a><tt class="py-lineno">236</tt>  <tt class="py-line">        <tt id="link-60" class="py-name"><a title="VisionEgg.ClassWithParameters.parameters_and_defaults
+VisionEgg.Core.FixationSpot.parameters_and_defaults
+VisionEgg.Core.ProjectionBaseClass.parameters_and_defaults
+VisionEgg.Core.Screen.parameters_and_defaults
+VisionEgg.Core.Viewport.parameters_and_defaults
+VisionEgg.Daq.Buffered.parameters_and_defaults
+VisionEgg.Dots.DotArea2D.parameters_and_defaults
+VisionEgg.FlowControl.Presentation.parameters_and_defaults
+VisionEgg.Gratings.AlphaGratingCommon.parameters_and_defaults
+VisionEgg.Gratings.LuminanceGratingCommon.parameters_and_defaults
+VisionEgg.Gratings.SinGrating2D.parameters_and_defaults
+VisionEgg.Gratings.SinGrating3D.parameters_and_defaults
+VisionEgg.MoreStimuli.Arrow.parameters_and_defaults
+VisionEgg.MoreStimuli.FilledCircle.parameters_and_defaults
+VisionEgg.MoreStimuli.Rectangle3D.parameters_and_defaults
+VisionEgg.MoreStimuli.Target2D.parameters_and_defaults
+VisionEgg.PyroApps.EPhysGUI.Loop.parameters_and_defaults
+VisionEgg.SphereMap.AzElGrid.parameters_and_defaults
+VisionEgg.SphereMap.SphereGrating.parameters_and_defaults
+VisionEgg.SphereMap.SphereMap.parameters_and_defaults
+VisionEgg.SphereMap.SphereWindow.parameters_and_defaults
+VisionEgg.Text.BitmapText.parameters_and_defaults
+VisionEgg.Text.GlutTextBase.parameters_and_defaults
+VisionEgg.Text.StrokeText.parameters_and_defaults
+VisionEgg.Text.Text.parameters_and_defaults
+VisionEgg.Textures.FixationCross.parameters_and_defaults
+VisionEgg.Textures.SpinningDrum.parameters_and_defaults
+VisionEgg.Textures.TextureStimulus.parameters_and_defaults
+VisionEgg.Textures.TextureStimulus3D.parameters_and_defaults
+VisionEgg.Textures.TextureStimulusBaseClass.parameters_and_defaults
+VisionEgg.WrappedText.WrappedText.parameters_and_defaults" class="py-name" href="#" onclick="return doclink('link-60', 'parameters_and_defaults', 'link-11');">parameters_and_defaults</a></tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> </tt>
+<a name="L237"></a><tt class="py-lineno">237</tt>  <tt class="py-line">            <tt class="py-string">'font'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-name">glut</tt><tt class="py-op">.</tt><tt class="py-name">GLUT_BITMAP_TIMES_ROMAN_24</tt><tt class="py-op">,</tt> </tt>
+<a name="L238"></a><tt class="py-lineno">238</tt>  <tt class="py-line">                    <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-61" class="py-name" targets="Class VisionEgg.ParameterTypes.Integer=VisionEgg.ParameterTypes.Integer-class.html"><a title="VisionEgg.ParameterTypes.Integer" class="py-name" href="#" onclick="return doclink('link-61', 'Integer', 'link-61');">Integer</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L239"></a><tt class="py-lineno">239</tt>  <tt class="py-line">            <tt class="py-op">}</tt> </tt>
+<a name="L240"></a><tt class="py-lineno">240</tt>  <tt class="py-line"> </tt>
+<a name="BitmapText.__init__"></a><div id="BitmapText.__init__-def"><a name="L241"></a><tt class="py-lineno">241</tt> <a class="py-toggle" href="#" id="BitmapText.__init__-toggle" onclick="return toggle('BitmapText.__init__');">-</a><tt class="py-line">        <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.Text.BitmapText-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt><tt class="py-op">**</tt><tt clas [...]
+</div><div id="BitmapText.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++++++++++"></div><div id="BitmapText.__init__-expanded"><a name="L242"></a><tt class="py-lineno">242</tt>  <tt class="py-line">            <tt id="link-62" class="py-name" targets="Class VisionEgg.Text.GlutTextBase=VisionEgg.Text.GlutTextBase-class.html"><a title="VisionEgg.Text.GlutTextBase" class="py-name" href="#" onclick="return doclink('link-62', 'GlutTextBase', 'link-62');">GlutTextBase</a> [...]
+VisionEgg.Configuration.Config.__init__
+VisionEgg.Core.FixationSpot.__init__
+VisionEgg.Core.FrameTimer.__init__
+VisionEgg.Core.ModelView.__init__
+VisionEgg.Core.OrthographicProjection.__init__
+VisionEgg.Core.OrthographicProjectionNoZClip.__init__
+VisionEgg.Core.PerspectiveProjection.__init__
+VisionEgg.Core.Projection.__init__
+VisionEgg.Core.ProjectionBaseClass.__init__
+VisionEgg.Core.Screen.__init__
+VisionEgg.Core.SimplePerspectiveProjection.__init__
+VisionEgg.Core.Stimulus.__init__
+VisionEgg.Core.Viewport.__init__
+VisionEgg.Daq.Channel.__init__
+VisionEgg.Daq.DaqMode.__init__
+VisionEgg.Daq.Device.__init__
+VisionEgg.Daq.Functionality.__init__
+VisionEgg.Daq.SignalType.__init__
+VisionEgg.DaqKeyboard.KeyboardTriggerInController.__init__
+VisionEgg.DaqLPT.LPTChannel.__init__
+VisionEgg.DaqLPT.LPTDevice.__init__
+VisionEgg.DaqLPT.LPTTriggerInController.__init__
+VisionEgg.DaqLPT.LPTTriggerOutController.__init__
+VisionEgg.Deprecated.Message.__init__
+VisionEgg.Dots.DotArea2D.__init__
+VisionEgg.FlowControl.ConstantController.__init__
+VisionEgg.FlowControl.Controller.__init__
+VisionEgg.FlowControl.EncapsulatedController.__init__
+VisionEgg.FlowControl.EvalStringController.__init__
+VisionEgg.FlowControl.ExecStringController.__init__
+VisionEgg.FlowControl.FunctionController.__init__
+VisionEgg.FlowControl.Presentation.__init__
+VisionEgg.GLTrace.Wrapper.__init__
+VisionEgg.GUI.AppWindow.__init__
+VisionEgg.GUI.GetKeypressDialog.__init__
+VisionEgg.GUI.GraphicsConfigurationWindow.__init__
+VisionEgg.GUI.InfoFrame.__init__
+VisionEgg.GUI.ProgressBar.__init__
+VisionEgg.GUI.ToplevelDialog.__init__
+VisionEgg.Gratings.SinGrating2D.__init__
+VisionEgg.Gratings.SinGrating3D.__init__
+VisionEgg.MoreStimuli.Arrow.__init__
+VisionEgg.MoreStimuli.FilledCircle.__init__
+VisionEgg.MoreStimuli.Rectangle3D.__init__
+VisionEgg.MoreStimuli.Target2D.__init__
+VisionEgg.ParameterTypes.AnyOf.__init__
+VisionEgg.ParameterTypes.Instance.__init__
+VisionEgg.ParameterTypes.Sequence.__init__
+VisionEgg.ParameterTypes.SubClass.__init__
+VisionEgg.PyroApps.AST_ext.AST_Visitor.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalMetaParameters.__init__
+VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.__init__
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.__init__
+VisionEgg.PyroApps.DropinGUI.DropinMetaParameters.__init__
+VisionEgg.PyroApps.DropinServer.DropinMetaController.__init__
+VisionEgg.PyroApps.EPhysGUI.AppWindow.__init__
+VisionEgg.PyroApps.EPhysGUI.BarButton.__init__
+VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase.__init__
+VisionEgg.PyroApps.EPhysGUI.GammaFrame.__init__
+VisionEgg.PyroApps.EPhysGUI.ImageSequenceLauncher.__init__
+VisionEgg.PyroApps.EPhysGUI.Loop.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopContainedObject.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopParamDialog.__init__
+VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.__init__
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.__init__
+VisionEgg.PyroApps.EPhysServer.EPhysServer.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingMetaParameters.__init__
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.GridGUI.GridControlFrame.__init__
+VisionEgg.PyroApps.GridGUI.GridMetaParameters.__init__
+VisionEgg.PyroApps.GridServer.GridMetaController.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetMetaParameters.__init__
+VisionEgg.PyroApps.MouseTargetServer.MousePositionController.__init__
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetOrientationController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetPositionController.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.CallbackEntry.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionParameters.__init__
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingMetaParameters.__init__
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumMetaParameters.__init__
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.__init__
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.__init__
+VisionEgg.PyroApps.TargetGUI.TargetMetaParameters.__init__
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.__init__
+VisionEgg.PyroClient.PyroClient.__init__
+VisionEgg.PyroHelpers.PyroConstantController.__init__
+VisionEgg.PyroHelpers.PyroEncapsulatedController.__init__
+VisionEgg.PyroHelpers.PyroEvalStringController.__init__
+VisionEgg.PyroHelpers.PyroExecStringController.__init__
+VisionEgg.PyroHelpers.PyroListenController.__init__
+VisionEgg.PyroHelpers.PyroLocalDictController.__init__
+VisionEgg.PyroHelpers.PyroServer.__init__
+VisionEgg.QuickTime.MovieTexture.__init__
+VisionEgg.ResponseControl.KeyboardResponseController.__init__
+VisionEgg.ResponseControl.ResponseController.__init__
+VisionEgg.SphereMap.AzElGrid.__init__
+VisionEgg.SphereMap.SphereGrating.__init__
+VisionEgg.SphereMap.SphereMap.__init__
+VisionEgg.SphereMap.SphereWindow.__init__
+VisionEgg.TCPController.SocketListenController.__init__
+VisionEgg.TCPController.TCPController.__init__
+VisionEgg.TCPController.TCPServer.__init__
+VisionEgg.Text.BitmapText.__init__
+VisionEgg.Text.GlutTextBase.__init__
+VisionEgg.Text.StrokeText.__init__
+VisionEgg.Text.Text.__init__
+VisionEgg.Textures.FixationCross.__init__
+VisionEgg.Textures.Mask2D.__init__
+VisionEgg.Textures.SpinningDrum.__init__
+VisionEgg.Textures.Texture.__init__
+VisionEgg.Textures.TextureFromFile.__init__
+VisionEgg.Textures.TextureObject.__init__
+VisionEgg.Textures.TextureStimulusBaseClass.__init__
+VisionEgg.ThreeDeeMath.TransformMatrix.__init__
+VisionEgg.WrappedText.WrappedText.__init__
+VisionEgg.qtmovie.Movie.__init__
+VisionEgg.qtmovie.Rect.__init__" class="py-name" href="#" onclick="return doclink('link-63', '__init__', 'link-24');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt><tt class="py-op">**</tt><tt class="py-name">kw</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L243"></a><tt class="py-lineno">243</tt>  <tt class="py-line"> </tt>
+<a name="BitmapText.draw"></a><div id="BitmapText.draw-def"><a name="L244"></a><tt class="py-lineno">244</tt> <a class="py-toggle" href="#" id="BitmapText.draw-toggle" onclick="return toggle('BitmapText.draw');">-</a><tt class="py-line">        <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.Text.BitmapText-class.html#draw">draw</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="BitmapText.draw-collapsed" style="display:none;" pad="+++" indent="++++++++++++++++"></div><div id="BitmapText.draw-expanded"><a name="L245"></a><tt class="py-lineno">245</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">on</tt><tt class="py-op">:</tt> </tt>
+<a name="L246"></a><tt class="py-lineno">246</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glDisable</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE_2D</tt><tt class="py-op">)</tt> </tt>
+<a name="L247"></a><tt class="py-lineno">247</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glDisable</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_BLEND</tt><tt class="py-op">)</tt> </tt>
+<a name="L248"></a><tt class="py-lineno">248</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glDisable</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_DEPTH_TEST</tt><tt class="py-op">)</tt> </tt>
+<a name="L249"></a><tt class="py-lineno">249</tt>  <tt class="py-line"> </tt>
+<a name="L250"></a><tt class="py-lineno">250</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glMatrixMode</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_MODELVIEW</tt><tt class="py-op">)</tt> </tt>
+<a name="L251"></a><tt class="py-lineno">251</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glPushMatrix</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L252"></a><tt class="py-lineno">252</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glTranslate</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">lowerleft</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">,</tt><tt class="py-name">self</tt><tt class="py-op">. [...]
+<a name="L253"></a><tt class="py-lineno">253</tt>  <tt class="py-line"> </tt>
+<a name="L254"></a><tt class="py-lineno">254</tt>  <tt class="py-line">                <tt class="py-name">c</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">color</tt> </tt>
+<a name="L255"></a><tt class="py-lineno">255</tt>  <tt class="py-line"> </tt>
+<a name="L256"></a><tt class="py-lineno">256</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">c</tt><tt class="py-op">)</tt><tt class="py-op">==</tt><tt class="py-number">3</tt><tt class="py-op">:</tt> </tt>
+<a name="L257"></a><tt class="py-lineno">257</tt>  <tt class="py-line">                    <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glColor3f</tt><tt class="py-op">(</tt><tt class="py-op">*</tt><tt class="py-name">c</tt><tt class="py-op">)</tt> </tt>
+<a name="L258"></a><tt class="py-lineno">258</tt>  <tt class="py-line">                <tt class="py-keyword">elif</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">c</tt><tt class="py-op">)</tt><tt class="py-op">==</tt><tt class="py-number">4</tt><tt class="py-op">:</tt> </tt>
+<a name="L259"></a><tt class="py-lineno">259</tt>  <tt class="py-line">                    <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glColor4f</tt><tt class="py-op">(</tt><tt class="py-op">*</tt><tt class="py-name">c</tt><tt class="py-op">)</tt> </tt>
+<a name="L260"></a><tt class="py-lineno">260</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glDisable</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE_2D</tt><tt class="py-op">)</tt> </tt>
+<a name="L261"></a><tt class="py-lineno">261</tt>  <tt class="py-line"> </tt>
+<a name="L262"></a><tt class="py-lineno">262</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glRasterPos3f</tt><tt class="py-op">(</tt><tt class="py-number">0.0</tt><tt class="py-op">,</tt><tt class="py-number">0.0</tt><tt class="py-op">,</tt><tt class="py-number">0.0</tt><tt class="py-op">)</tt> </tt>
+<a name="L263"></a><tt class="py-lineno">263</tt>  <tt class="py-line">                <tt class="py-keyword">for</tt> <tt class="py-name">char</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">text</tt><tt class="py-op">:</tt> </tt>
+<a name="L264"></a><tt class="py-lineno">264</tt>  <tt class="py-line">                    <tt class="py-name">glut</tt><tt class="py-op">.</tt><tt class="py-name">glutBitmapCharacter</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">font</tt><tt class="py-op">,</tt><tt class="py-name">ord</tt><tt class="py-op">(</tt><tt class="py-name">char</tt><tt class="py-op">)</tt><tt class= [...]
+<a name="L265"></a><tt class="py-lineno">265</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glPopMatrix</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L266"></a><tt class="py-lineno">266</tt>  <tt class="py-line"> </tt>
+<a name="StrokeText"></a><div id="StrokeText-def"><a name="L267"></a><tt class="py-lineno">267</tt> <a class="py-toggle" href="#" id="StrokeText-toggle" onclick="return toggle('StrokeText');">-</a><tt class="py-line">    <tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.Text.StrokeText-class.html">StrokeText</a><tt class="py-op">(</tt><tt class="py-base-class">GlutTextBase</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="StrokeText-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="StrokeText-expanded"><a name="L268"></a><tt class="py-lineno">268</tt>  <tt class="py-line">        <tt class="py-docstring">"""DEPRECATED. Text rendered by GLUT using stroke fonts.</tt> </tt>
+<a name="L269"></a><tt class="py-lineno">269</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L270"></a><tt class="py-lineno">270</tt>  <tt class="py-line"><tt class="py-docstring">        Parameters</tt> </tt>
+<a name="L271"></a><tt class="py-lineno">271</tt>  <tt class="py-line"><tt class="py-docstring">        ==========</tt> </tt>
+<a name="L272"></a><tt class="py-lineno">272</tt>  <tt class="py-line"><tt class="py-docstring">        anti_aliasing -- (Boolean)</tt> </tt>
+<a name="L273"></a><tt class="py-lineno">273</tt>  <tt class="py-line"><tt class="py-docstring">                         Default: True</tt> </tt>
+<a name="L274"></a><tt class="py-lineno">274</tt>  <tt class="py-line"><tt class="py-docstring">        color         -- (AnyOf(Sequence3 of Real or Sequence4 of Real))</tt> </tt>
+<a name="L275"></a><tt class="py-lineno">275</tt>  <tt class="py-line"><tt class="py-docstring">                         Inherited from GlutTextBase</tt> </tt>
+<a name="L276"></a><tt class="py-lineno">276</tt>  <tt class="py-line"><tt class="py-docstring">                         Default: (1.0, 1.0, 1.0)</tt> </tt>
+<a name="L277"></a><tt class="py-lineno">277</tt>  <tt class="py-line"><tt class="py-docstring">        font          -- (Integer)</tt> </tt>
+<a name="L278"></a><tt class="py-lineno">278</tt>  <tt class="py-line"><tt class="py-docstring">                         Default: 0</tt> </tt>
+<a name="L279"></a><tt class="py-lineno">279</tt>  <tt class="py-line"><tt class="py-docstring">        linewidth     -- (Real)</tt> </tt>
+<a name="L280"></a><tt class="py-lineno">280</tt>  <tt class="py-line"><tt class="py-docstring">                         Default: 3.0</tt> </tt>
+<a name="L281"></a><tt class="py-lineno">281</tt>  <tt class="py-line"><tt class="py-docstring">        lowerleft     -- (Sequence2 of Real)</tt> </tt>
+<a name="L282"></a><tt class="py-lineno">282</tt>  <tt class="py-line"><tt class="py-docstring">                         Inherited from GlutTextBase</tt> </tt>
+<a name="L283"></a><tt class="py-lineno">283</tt>  <tt class="py-line"><tt class="py-docstring">                         Default: (320, 240)</tt> </tt>
+<a name="L284"></a><tt class="py-lineno">284</tt>  <tt class="py-line"><tt class="py-docstring">        on            -- (Boolean)</tt> </tt>
+<a name="L285"></a><tt class="py-lineno">285</tt>  <tt class="py-line"><tt class="py-docstring">                         Inherited from GlutTextBase</tt> </tt>
+<a name="L286"></a><tt class="py-lineno">286</tt>  <tt class="py-line"><tt class="py-docstring">                         Default: True</tt> </tt>
+<a name="L287"></a><tt class="py-lineno">287</tt>  <tt class="py-line"><tt class="py-docstring">        orientation   -- (Real)</tt> </tt>
+<a name="L288"></a><tt class="py-lineno">288</tt>  <tt class="py-line"><tt class="py-docstring">                         Default: 0.0</tt> </tt>
+<a name="L289"></a><tt class="py-lineno">289</tt>  <tt class="py-line"><tt class="py-docstring">        text          -- (String)</tt> </tt>
+<a name="L290"></a><tt class="py-lineno">290</tt>  <tt class="py-line"><tt class="py-docstring">                         Inherited from GlutTextBase</tt> </tt>
+<a name="L291"></a><tt class="py-lineno">291</tt>  <tt class="py-line"><tt class="py-docstring">                         Default: the string to display</tt> </tt>
+<a name="L292"></a><tt class="py-lineno">292</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L293"></a><tt class="py-lineno">293</tt>  <tt class="py-line"> </tt>
+<a name="L294"></a><tt class="py-lineno">294</tt>  <tt class="py-line">        <tt id="link-64" class="py-name"><a title="VisionEgg.ClassWithParameters.parameters_and_defaults
+VisionEgg.Core.FixationSpot.parameters_and_defaults
+VisionEgg.Core.ProjectionBaseClass.parameters_and_defaults
+VisionEgg.Core.Screen.parameters_and_defaults
+VisionEgg.Core.Viewport.parameters_and_defaults
+VisionEgg.Daq.Buffered.parameters_and_defaults
+VisionEgg.Dots.DotArea2D.parameters_and_defaults
+VisionEgg.FlowControl.Presentation.parameters_and_defaults
+VisionEgg.Gratings.AlphaGratingCommon.parameters_and_defaults
+VisionEgg.Gratings.LuminanceGratingCommon.parameters_and_defaults
+VisionEgg.Gratings.SinGrating2D.parameters_and_defaults
+VisionEgg.Gratings.SinGrating3D.parameters_and_defaults
+VisionEgg.MoreStimuli.Arrow.parameters_and_defaults
+VisionEgg.MoreStimuli.FilledCircle.parameters_and_defaults
+VisionEgg.MoreStimuli.Rectangle3D.parameters_and_defaults
+VisionEgg.MoreStimuli.Target2D.parameters_and_defaults
+VisionEgg.PyroApps.EPhysGUI.Loop.parameters_and_defaults
+VisionEgg.SphereMap.AzElGrid.parameters_and_defaults
+VisionEgg.SphereMap.SphereGrating.parameters_and_defaults
+VisionEgg.SphereMap.SphereMap.parameters_and_defaults
+VisionEgg.SphereMap.SphereWindow.parameters_and_defaults
+VisionEgg.Text.BitmapText.parameters_and_defaults
+VisionEgg.Text.GlutTextBase.parameters_and_defaults
+VisionEgg.Text.StrokeText.parameters_and_defaults
+VisionEgg.Text.Text.parameters_and_defaults
+VisionEgg.Textures.FixationCross.parameters_and_defaults
+VisionEgg.Textures.SpinningDrum.parameters_and_defaults
+VisionEgg.Textures.TextureStimulus.parameters_and_defaults
+VisionEgg.Textures.TextureStimulus3D.parameters_and_defaults
+VisionEgg.Textures.TextureStimulusBaseClass.parameters_and_defaults
+VisionEgg.WrappedText.WrappedText.parameters_and_defaults" class="py-name" href="#" onclick="return doclink('link-64', 'parameters_and_defaults', 'link-11');">parameters_and_defaults</a></tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> </tt>
+<a name="L295"></a><tt class="py-lineno">295</tt>  <tt class="py-line">            <tt class="py-string">'font'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-name">glut</tt><tt class="py-op">.</tt><tt class="py-name">GLUT_STROKE_ROMAN</tt><tt class="py-op">,</tt> </tt>
+<a name="L296"></a><tt class="py-lineno">296</tt>  <tt class="py-line">                    <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-65" class="py-name"><a title="VisionEgg.ParameterTypes.Integer" class="py-name" href="#" onclick="return doclink('link-65', 'Integer', 'link-61');">Integer</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L297"></a><tt class="py-lineno">297</tt>  <tt class="py-line">            <tt class="py-string">'orientation'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-number">0.0</tt><tt class="py-op">,</tt> </tt>
+<a name="L298"></a><tt class="py-lineno">298</tt>  <tt class="py-line">                           <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-66" class="py-name"><a title="VisionEgg.ParameterTypes.Real" class="py-name" href="#" onclick="return doclink('link-66', 'Real', 'link-44');">Real</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L299"></a><tt class="py-lineno">299</tt>  <tt class="py-line">            <tt class="py-string">'linewidth'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-number">3.0</tt><tt class="py-op">,</tt> <tt class="py-comment"># pixels</tt> </tt>
+<a name="L300"></a><tt class="py-lineno">300</tt>  <tt class="py-line">                         <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-67" class="py-name"><a title="VisionEgg.ParameterTypes.Real" class="py-name" href="#" onclick="return doclink('link-67', 'Real', 'link-44');">Real</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L301"></a><tt class="py-lineno">301</tt>  <tt class="py-line">            <tt class="py-string">'anti_aliasing'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-name">True</tt><tt class="py-op">,</tt> </tt>
+<a name="L302"></a><tt class="py-lineno">302</tt>  <tt class="py-line">                             <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-68" class="py-name"><a title="VisionEgg.ParameterTypes.Boolean" class="py-name" href="#" onclick="return doclink('link-68', 'Boolean', 'link-15');">Boolean</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L303"></a><tt class="py-lineno">303</tt>  <tt class="py-line">            <tt class="py-op">}</tt> </tt>
+<a name="L304"></a><tt class="py-lineno">304</tt>  <tt class="py-line"> </tt>
+<a name="StrokeText.__init__"></a><div id="StrokeText.__init__-def"><a name="L305"></a><tt class="py-lineno">305</tt> <a class="py-toggle" href="#" id="StrokeText.__init__-toggle" onclick="return toggle('StrokeText.__init__');">-</a><tt class="py-line">        <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.Text.StrokeText-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt><tt class="py-op">**</tt><tt clas [...]
+</div><div id="StrokeText.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++++++++++"></div><div id="StrokeText.__init__-expanded"><a name="L306"></a><tt class="py-lineno">306</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">NotImplementedError</tt><tt class="py-op">(</tt><tt class="py-string">"There's something broken with StrokeText, and I haven't figured it out yet!"</tt><tt class="py-op">)</tt> </tt>
+<a name="L307"></a><tt class="py-lineno">307</tt>  <tt class="py-line">            <tt id="link-69" class="py-name"><a title="VisionEgg.Text.GlutTextBase" class="py-name" href="#" onclick="return doclink('link-69', 'GlutTextBase', 'link-62');">GlutTextBase</a></tt><tt class="py-op">.</tt><tt id="link-70" class="py-name"><a title="VisionEgg.ClassWithParameters.__init__
+VisionEgg.Configuration.Config.__init__
+VisionEgg.Core.FixationSpot.__init__
+VisionEgg.Core.FrameTimer.__init__
+VisionEgg.Core.ModelView.__init__
+VisionEgg.Core.OrthographicProjection.__init__
+VisionEgg.Core.OrthographicProjectionNoZClip.__init__
+VisionEgg.Core.PerspectiveProjection.__init__
+VisionEgg.Core.Projection.__init__
+VisionEgg.Core.ProjectionBaseClass.__init__
+VisionEgg.Core.Screen.__init__
+VisionEgg.Core.SimplePerspectiveProjection.__init__
+VisionEgg.Core.Stimulus.__init__
+VisionEgg.Core.Viewport.__init__
+VisionEgg.Daq.Channel.__init__
+VisionEgg.Daq.DaqMode.__init__
+VisionEgg.Daq.Device.__init__
+VisionEgg.Daq.Functionality.__init__
+VisionEgg.Daq.SignalType.__init__
+VisionEgg.DaqKeyboard.KeyboardTriggerInController.__init__
+VisionEgg.DaqLPT.LPTChannel.__init__
+VisionEgg.DaqLPT.LPTDevice.__init__
+VisionEgg.DaqLPT.LPTTriggerInController.__init__
+VisionEgg.DaqLPT.LPTTriggerOutController.__init__
+VisionEgg.Deprecated.Message.__init__
+VisionEgg.Dots.DotArea2D.__init__
+VisionEgg.FlowControl.ConstantController.__init__
+VisionEgg.FlowControl.Controller.__init__
+VisionEgg.FlowControl.EncapsulatedController.__init__
+VisionEgg.FlowControl.EvalStringController.__init__
+VisionEgg.FlowControl.ExecStringController.__init__
+VisionEgg.FlowControl.FunctionController.__init__
+VisionEgg.FlowControl.Presentation.__init__
+VisionEgg.GLTrace.Wrapper.__init__
+VisionEgg.GUI.AppWindow.__init__
+VisionEgg.GUI.GetKeypressDialog.__init__
+VisionEgg.GUI.GraphicsConfigurationWindow.__init__
+VisionEgg.GUI.InfoFrame.__init__
+VisionEgg.GUI.ProgressBar.__init__
+VisionEgg.GUI.ToplevelDialog.__init__
+VisionEgg.Gratings.SinGrating2D.__init__
+VisionEgg.Gratings.SinGrating3D.__init__
+VisionEgg.MoreStimuli.Arrow.__init__
+VisionEgg.MoreStimuli.FilledCircle.__init__
+VisionEgg.MoreStimuli.Rectangle3D.__init__
+VisionEgg.MoreStimuli.Target2D.__init__
+VisionEgg.ParameterTypes.AnyOf.__init__
+VisionEgg.ParameterTypes.Instance.__init__
+VisionEgg.ParameterTypes.Sequence.__init__
+VisionEgg.ParameterTypes.SubClass.__init__
+VisionEgg.PyroApps.AST_ext.AST_Visitor.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalMetaParameters.__init__
+VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.__init__
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.__init__
+VisionEgg.PyroApps.DropinGUI.DropinMetaParameters.__init__
+VisionEgg.PyroApps.DropinServer.DropinMetaController.__init__
+VisionEgg.PyroApps.EPhysGUI.AppWindow.__init__
+VisionEgg.PyroApps.EPhysGUI.BarButton.__init__
+VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase.__init__
+VisionEgg.PyroApps.EPhysGUI.GammaFrame.__init__
+VisionEgg.PyroApps.EPhysGUI.ImageSequenceLauncher.__init__
+VisionEgg.PyroApps.EPhysGUI.Loop.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopContainedObject.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopParamDialog.__init__
+VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.__init__
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.__init__
+VisionEgg.PyroApps.EPhysServer.EPhysServer.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingMetaParameters.__init__
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.GridGUI.GridControlFrame.__init__
+VisionEgg.PyroApps.GridGUI.GridMetaParameters.__init__
+VisionEgg.PyroApps.GridServer.GridMetaController.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetMetaParameters.__init__
+VisionEgg.PyroApps.MouseTargetServer.MousePositionController.__init__
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetOrientationController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetPositionController.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.CallbackEntry.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionParameters.__init__
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingMetaParameters.__init__
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumMetaParameters.__init__
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.__init__
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.__init__
+VisionEgg.PyroApps.TargetGUI.TargetMetaParameters.__init__
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.__init__
+VisionEgg.PyroClient.PyroClient.__init__
+VisionEgg.PyroHelpers.PyroConstantController.__init__
+VisionEgg.PyroHelpers.PyroEncapsulatedController.__init__
+VisionEgg.PyroHelpers.PyroEvalStringController.__init__
+VisionEgg.PyroHelpers.PyroExecStringController.__init__
+VisionEgg.PyroHelpers.PyroListenController.__init__
+VisionEgg.PyroHelpers.PyroLocalDictController.__init__
+VisionEgg.PyroHelpers.PyroServer.__init__
+VisionEgg.QuickTime.MovieTexture.__init__
+VisionEgg.ResponseControl.KeyboardResponseController.__init__
+VisionEgg.ResponseControl.ResponseController.__init__
+VisionEgg.SphereMap.AzElGrid.__init__
+VisionEgg.SphereMap.SphereGrating.__init__
+VisionEgg.SphereMap.SphereMap.__init__
+VisionEgg.SphereMap.SphereWindow.__init__
+VisionEgg.TCPController.SocketListenController.__init__
+VisionEgg.TCPController.TCPController.__init__
+VisionEgg.TCPController.TCPServer.__init__
+VisionEgg.Text.BitmapText.__init__
+VisionEgg.Text.GlutTextBase.__init__
+VisionEgg.Text.StrokeText.__init__
+VisionEgg.Text.Text.__init__
+VisionEgg.Textures.FixationCross.__init__
+VisionEgg.Textures.Mask2D.__init__
+VisionEgg.Textures.SpinningDrum.__init__
+VisionEgg.Textures.Texture.__init__
+VisionEgg.Textures.TextureFromFile.__init__
+VisionEgg.Textures.TextureObject.__init__
+VisionEgg.Textures.TextureStimulusBaseClass.__init__
+VisionEgg.ThreeDeeMath.TransformMatrix.__init__
+VisionEgg.WrappedText.WrappedText.__init__
+VisionEgg.qtmovie.Movie.__init__
+VisionEgg.qtmovie.Rect.__init__" class="py-name" href="#" onclick="return doclink('link-70', '__init__', 'link-24');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt><tt class="py-op">**</tt><tt class="py-name">kw</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L308"></a><tt class="py-lineno">308</tt>  <tt class="py-line"> </tt>
+<a name="StrokeText.draw"></a><div id="StrokeText.draw-def"><a name="L309"></a><tt class="py-lineno">309</tt> <a class="py-toggle" href="#" id="StrokeText.draw-toggle" onclick="return toggle('StrokeText.draw');">-</a><tt class="py-line">        <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.Text.StrokeText-class.html#draw">draw</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="StrokeText.draw-collapsed" style="display:none;" pad="+++" indent="++++++++++++++++"></div><div id="StrokeText.draw-expanded"><a name="L310"></a><tt class="py-lineno">310</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">on</tt><tt class="py-op">:</tt> </tt>
+<a name="L311"></a><tt class="py-lineno">311</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glDisable</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE_2D</tt><tt class="py-op">)</tt> </tt>
+<a name="L312"></a><tt class="py-lineno">312</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glDisable</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_DEPTH_TEST</tt><tt class="py-op">)</tt> </tt>
+<a name="L313"></a><tt class="py-lineno">313</tt>  <tt class="py-line"> </tt>
+<a name="L314"></a><tt class="py-lineno">314</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glMatrixMode</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_MODELVIEW</tt><tt class="py-op">)</tt> </tt>
+<a name="L315"></a><tt class="py-lineno">315</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glPushMatrix</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L316"></a><tt class="py-lineno">316</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glTranslate</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">lowerleft</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">,</tt><tt class="py-name">self</tt><tt class="py-op">. [...]
+<a name="L317"></a><tt class="py-lineno">317</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glRotate</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">orientation</tt><tt class="py-op">,</tt><tt class="py-number">0.0</tt><tt class="py-op">,</tt><tt class="py-number">0.0</tt><tt class="py-op">,</tt><tt class="py-num [...]
+<a name="L318"></a><tt class="py-lineno">318</tt>  <tt class="py-line"> </tt>
+<a name="L319"></a><tt class="py-lineno">319</tt>  <tt class="py-line">                <tt class="py-name">c</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">color</tt> </tt>
+<a name="L320"></a><tt class="py-lineno">320</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">c</tt><tt class="py-op">)</tt><tt class="py-op">==</tt><tt class="py-number">3</tt><tt class="py-op">:</tt> </tt>
+<a name="L321"></a><tt class="py-lineno">321</tt>  <tt class="py-line">                    <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glColor3f</tt><tt class="py-op">(</tt><tt class="py-op">*</tt><tt class="py-name">c</tt><tt class="py-op">)</tt> </tt>
+<a name="L322"></a><tt class="py-lineno">322</tt>  <tt class="py-line">                <tt class="py-keyword">elif</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">c</tt><tt class="py-op">)</tt><tt class="py-op">==</tt><tt class="py-number">4</tt><tt class="py-op">:</tt> </tt>
+<a name="L323"></a><tt class="py-lineno">323</tt>  <tt class="py-line">                    <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glColor4f</tt><tt class="py-op">(</tt><tt class="py-op">*</tt><tt class="py-name">c</tt><tt class="py-op">)</tt> </tt>
+<a name="L324"></a><tt class="py-lineno">324</tt>  <tt class="py-line"> </tt>
+<a name="L325"></a><tt class="py-lineno">325</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glLineWidth</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">linewidth</tt><tt class="py-op">)</tt> </tt>
+<a name="L326"></a><tt class="py-lineno">326</tt>  <tt class="py-line"> </tt>
+<a name="L327"></a><tt class="py-lineno">327</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">anti_aliasing</tt><tt class="py-op">:</tt> </tt>
+<a name="L328"></a><tt class="py-lineno">328</tt>  <tt class="py-line">                    <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glEnable</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_BLEND</tt><tt class="py-op">)</tt> </tt>
+<a name="L329"></a><tt class="py-lineno">329</tt>  <tt class="py-line">                    <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glBlendFunc</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_SRC_ALPHA</tt><tt class="py-op">,</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_ONE_MINUS_SRC_ALPHA</tt><tt class="py-op">)</tt> </tt>
+<a name="L330"></a><tt class="py-lineno">330</tt>  <tt class="py-line">                    <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glEnable</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_LINE_SMOOTH</tt><tt class="py-op">)</tt> </tt>
+<a name="L331"></a><tt class="py-lineno">331</tt>  <tt class="py-line">                <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L332"></a><tt class="py-lineno">332</tt>  <tt class="py-line">                    <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glDisable</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_BLEND</tt><tt class="py-op">)</tt> </tt>
+<a name="L333"></a><tt class="py-lineno">333</tt>  <tt class="py-line"> </tt>
+<a name="L334"></a><tt class="py-lineno">334</tt>  <tt class="py-line">    <tt class="py-comment">##            # This code successfully draws a box...</tt> </tt>
+<a name="L335"></a><tt class="py-lineno">335</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">##            gl.glBegin(gl.GL_QUADS)</tt> </tt>
+<a name="L336"></a><tt class="py-lineno">336</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">##            gl.glVertex2f(0.0,0.0)</tt> </tt>
+<a name="L337"></a><tt class="py-lineno">337</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">##            gl.glVertex2f(0.0,0.1)</tt> </tt>
+<a name="L338"></a><tt class="py-lineno">338</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">##            gl.glVertex2f(0.1,0.1)</tt> </tt>
+<a name="L339"></a><tt class="py-lineno">339</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">##            gl.glVertex2f(0.1,0.0)</tt> </tt>
+<a name="L340"></a><tt class="py-lineno">340</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment">##            gl.glEnd()</tt> </tt>
+<a name="L341"></a><tt class="py-lineno">341</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L342"></a><tt class="py-lineno">342</tt>  <tt class="py-line">                <tt class="py-comment"># But this code does not draw the string!?!</tt> </tt>
+<a name="L343"></a><tt class="py-lineno">343</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-keyword">for</tt> <tt class="py-name">char</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">text</tt><tt class="py-op">:</tt> </tt>
+<a name="L344"></a><tt class="py-lineno">344</tt>  <tt class="py-line">                    <tt class="py-name">glut</tt><tt class="py-op">.</tt><tt class="py-name">glutStrokeCharacter</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">font</tt><tt class="py-op">,</tt><tt class="py-name">ord</tt><tt class="py-op">(</tt><tt class="py-name">char</tt><tt class="py-op">)</tt><tt class= [...]
+<a name="L345"></a><tt class="py-lineno">345</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glPopMatrix</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L346"></a><tt class="py-lineno">346</tt>  <tt class="py-line"> </tt><script type="text/javascript">
+<!--
+expandto(location.href);
+// -->
+</script>
+</pre>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:49 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.Text.BitmapText-class.html b/doc/reference/html/VisionEgg.Text.BitmapText-class.html
new file mode 100644
index 0000000..ed8c0af
--- /dev/null
+++ b/doc/reference/html/VisionEgg.Text.BitmapText-class.html
@@ -0,0 +1,345 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.Text.BitmapText</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.Text-module.html">Module Text</a> ::
+        Class BitmapText
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.Text.BitmapText-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class BitmapText</h1><span class="codelink"><a href="VisionEgg.Text-pysrc.html#BitmapText">source code</a></span><br /><br />
+<pre class="base-tree">
+         object --+            
+                  |            
+<a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a> --+        
+                      |        
+          <a href="VisionEgg.Core.Stimulus-class.html">Core.Stimulus</a> --+    
+                          |    
+               <a href="VisionEgg.Text.GlutTextBase-class.html">GlutTextBase</a> --+
+                              |
+                             <strong class="uidshort">BitmapText</strong>
+</pre>
+
+<hr />
+<pre class="literalblock">
+DEPRECATED. Bitmap fonts from GLUT.
+
+Parameters
+==========
+color     -- (AnyOf(Sequence3 of Real or Sequence4 of Real))
+             Inherited from GlutTextBase
+             Default: (1.0, 1.0, 1.0)
+font      -- (Integer)
+             Default: 5
+lowerleft -- (Sequence2 of Real)
+             Inherited from GlutTextBase
+             Default: (320, 240)
+on        -- (Boolean)
+             Inherited from GlutTextBase
+             Default: True
+text      -- (String)
+             Inherited from GlutTextBase
+             Default: the string to display
+
+</pre><br /><br />
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.Text.BitmapText-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">**kw</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.Text-pysrc.html#BitmapText.__init__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.Text.BitmapText-class.html#draw" class="summary-sig-name">draw</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      Draw the stimulus.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.Text-pysrc.html#BitmapText.draw">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a></code></b>:
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__getstate__">__getstate__</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__setstate__">__setstate__</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#get_specified_type">get_specified_type</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#is_constant_parameter">is_constant_parameter</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#set">set</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#verify_parameters">verify_parameters</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__delattr__</code>,
+      <code>__getattribute__</code>,
+      <code>__hash__</code>,
+      <code>__new__</code>,
+      <code>__reduce__</code>,
+      <code>__reduce_ex__</code>,
+      <code>__repr__</code>,
+      <code>__setattr__</code>,
+      <code>__str__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Class Variables</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.Text.BitmapText-class.html#parameters_and_defaults" class="summary-name">parameters_and_defaults</a> = <code title="{'font':(glut.GLUT_BITMAP_TIMES_ROMAN_24, ve_types.Integer),}">{'font':(glut.GLUT_BITMAP_TIMES_ROMA<code class="variable-ellipsis">...</code></code>
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a></code></b>:
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__safe_for_unpickling__">__safe_for_unpickling__</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#constant_parameters_and_defaults">constant_parameters_and_defaults</a></code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Properties</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__class__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Method Details</span></td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">**kw</span>)</span>
+    <br /><em class="fname">(Constructor)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.Text-pysrc.html#BitmapText.__init__">source code</a></span> 
+    </td>
+  </table>
+  
+  
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.Text.GlutTextBase-class.html#__init__">GlutTextBase.__init__</a>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="draw"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">draw</span>(<span class="sig-arg">self</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.Text-pysrc.html#BitmapText.draw">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Draw the stimulus. (Called by Viewport instance.)
+
+This method is called every frame.  This method actually
+performs the OpenGL calls to draw the stimulus.
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.Core.Stimulus-class.html#draw">Core.Stimulus.draw</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== CLASS VARIABLE DETAILS ==================== -->
+<a name="section-ClassVariableDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Class Variable Details</span></td>
+</tr>
+</table>
+<a name="parameters_and_defaults"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">parameters_and_defaults</h3>
+  
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+{'font':(glut.GLUT_BITMAP_TIMES_ROMAN_24, ve_types.Integer),}
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:47 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.Text.GlutTextBase-class.html b/doc/reference/html/VisionEgg.Text.GlutTextBase-class.html
new file mode 100644
index 0000000..5b4d030
--- /dev/null
+++ b/doc/reference/html/VisionEgg.Text.GlutTextBase-class.html
@@ -0,0 +1,312 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.Text.GlutTextBase</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.Text-module.html">Module Text</a> ::
+        Class GlutTextBase
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.Text.GlutTextBase-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class GlutTextBase</h1><span class="codelink"><a href="VisionEgg.Text-pysrc.html#GlutTextBase">source code</a></span><br /><br />
+<pre class="base-tree">
+         object --+        
+                  |        
+<a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a> --+    
+                      |    
+          <a href="VisionEgg.Core.Stimulus-class.html">Core.Stimulus</a> --+
+                          |
+                         <strong class="uidshort">GlutTextBase</strong>
+</pre>
+
+<hr />
+<pre class="literalblock">
+DEPRECATED. Base class: don't instantiate this class directly.
+
+Base class that defines the common interface between the
+other glut-based text stimuli.
+
+Parameters
+==========
+color     -- (AnyOf(Sequence3 of Real or Sequence4 of Real))
+             Default: (1.0, 1.0, 1.0)
+lowerleft -- (Sequence2 of Real)
+             Default: (320, 240)
+on        -- (Boolean)
+             Default: True
+text      -- (String)
+             Default: the string to display
+
+</pre><br /><br />
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.Text.GlutTextBase-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">**kw</span>)</span><br />
+      Instantiate and get ready to draw.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.Text-pysrc.html#GlutTextBase.__init__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.Core.Stimulus-class.html">Core.Stimulus</a></code></b>:
+      <code><a href="VisionEgg.Core.Stimulus-class.html#draw">draw</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a></code></b>:
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__getstate__">__getstate__</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__setstate__">__setstate__</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#get_specified_type">get_specified_type</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#is_constant_parameter">is_constant_parameter</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#set">set</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#verify_parameters">verify_parameters</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__delattr__</code>,
+      <code>__getattribute__</code>,
+      <code>__hash__</code>,
+      <code>__new__</code>,
+      <code>__reduce__</code>,
+      <code>__reduce_ex__</code>,
+      <code>__repr__</code>,
+      <code>__setattr__</code>,
+      <code>__str__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Class Variables</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.Text.GlutTextBase-class.html#parameters_and_defaults" class="summary-name">parameters_and_defaults</a> = <code title="{'on':(True, ve_types.Boolean), 'color':((1.0, 1.0, 1.0), ve_types.Any\
+Of(ve_types.Sequence3(ve_types.Real), ve_types.Sequence4(ve_types.Real\
+))), 'lowerleft':((320, 240), ve_types.Sequence2(ve_types.Real)), 'tex\
+t':('the string to display', ve_types.String)}">{'on':(True, ve_types.Boolean), 'col<code class="variable-ellipsis">...</code></code>
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a></code></b>:
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__safe_for_unpickling__">__safe_for_unpickling__</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#constant_parameters_and_defaults">constant_parameters_and_defaults</a></code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Properties</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__class__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Method Details</span></td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">**kw</span>)</span>
+    <br /><em class="fname">(Constructor)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.Text-pysrc.html#GlutTextBase.__init__">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Instantiate and get ready to draw.
+
+Set parameter values and create anything needed to draw the
+stimulus including OpenGL state variables such display lists
+and texture objects.
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.Core.Stimulus-class.html#__init__">Core.Stimulus.__init__</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== CLASS VARIABLE DETAILS ==================== -->
+<a name="section-ClassVariableDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Class Variable Details</span></td>
+</tr>
+</table>
+<a name="parameters_and_defaults"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">parameters_and_defaults</h3>
+  
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+{'on':(True, ve_types.Boolean), 'color':((1.0, 1.0, 1.0), ve_types.Any<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+Of(ve_types.Sequence3(ve_types.Real), ve_types.Sequence4(ve_types.Real<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+))), 'lowerleft':((320, 240), ve_types.Sequence2(ve_types.Real)), 'tex<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+t':('the string to display', ve_types.String)}
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:47 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.Text.StrokeText-class.html b/doc/reference/html/VisionEgg.Text.StrokeText-class.html
new file mode 100644
index 0000000..e45c104
--- /dev/null
+++ b/doc/reference/html/VisionEgg.Text.StrokeText-class.html
@@ -0,0 +1,363 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.Text.StrokeText</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.Text-module.html">Module Text</a> ::
+        Class StrokeText
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.Text.StrokeText-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class StrokeText</h1><span class="codelink"><a href="VisionEgg.Text-pysrc.html#StrokeText">source code</a></span><br /><br />
+<pre class="base-tree">
+         object --+            
+                  |            
+<a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a> --+        
+                      |        
+          <a href="VisionEgg.Core.Stimulus-class.html">Core.Stimulus</a> --+    
+                          |    
+               <a href="VisionEgg.Text.GlutTextBase-class.html">GlutTextBase</a> --+
+                              |
+                             <strong class="uidshort">StrokeText</strong>
+</pre>
+
+<hr />
+<pre class="literalblock">
+DEPRECATED. Text rendered by GLUT using stroke fonts.
+
+Parameters
+==========
+anti_aliasing -- (Boolean)
+                 Default: True
+color         -- (AnyOf(Sequence3 of Real or Sequence4 of Real))
+                 Inherited from GlutTextBase
+                 Default: (1.0, 1.0, 1.0)
+font          -- (Integer)
+                 Default: 0
+linewidth     -- (Real)
+                 Default: 3.0
+lowerleft     -- (Sequence2 of Real)
+                 Inherited from GlutTextBase
+                 Default: (320, 240)
+on            -- (Boolean)
+                 Inherited from GlutTextBase
+                 Default: True
+orientation   -- (Real)
+                 Default: 0.0
+text          -- (String)
+                 Inherited from GlutTextBase
+                 Default: the string to display
+
+</pre><br /><br />
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.Text.StrokeText-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">**kw</span>)</span><br />
+      Instantiate and get ready to draw.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.Text-pysrc.html#StrokeText.__init__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.Text.StrokeText-class.html#draw" class="summary-sig-name">draw</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      Draw the stimulus.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.Text-pysrc.html#StrokeText.draw">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a></code></b>:
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__getstate__">__getstate__</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__setstate__">__setstate__</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#get_specified_type">get_specified_type</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#is_constant_parameter">is_constant_parameter</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#set">set</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#verify_parameters">verify_parameters</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__delattr__</code>,
+      <code>__getattribute__</code>,
+      <code>__hash__</code>,
+      <code>__new__</code>,
+      <code>__reduce__</code>,
+      <code>__reduce_ex__</code>,
+      <code>__repr__</code>,
+      <code>__setattr__</code>,
+      <code>__str__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Class Variables</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.Text.StrokeText-class.html#parameters_and_defaults" class="summary-name">parameters_and_defaults</a> = <code title="{'font':(glut.GLUT_STROKE_ROMAN, ve_types.Integer), 'orientation':(0.0\
+, ve_types.Real), 'linewidth':(3.0, ve_types.Real), 'anti_aliasing':(T\
+rue, ve_types.Boolean),}">{'font':(glut.GLUT_STROKE_ROMAN, ve_<code class="variable-ellipsis">...</code></code>
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a></code></b>:
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__safe_for_unpickling__">__safe_for_unpickling__</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#constant_parameters_and_defaults">constant_parameters_and_defaults</a></code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Properties</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__class__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Method Details</span></td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">**kw</span>)</span>
+    <br /><em class="fname">(Constructor)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.Text-pysrc.html#StrokeText.__init__">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Instantiate and get ready to draw.
+
+Set parameter values and create anything needed to draw the
+stimulus including OpenGL state variables such display lists
+and texture objects.
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.Text.GlutTextBase-class.html#__init__">GlutTextBase.__init__</a>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="draw"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">draw</span>(<span class="sig-arg">self</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.Text-pysrc.html#StrokeText.draw">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Draw the stimulus. (Called by Viewport instance.)
+
+This method is called every frame.  This method actually
+performs the OpenGL calls to draw the stimulus.
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.Core.Stimulus-class.html#draw">Core.Stimulus.draw</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== CLASS VARIABLE DETAILS ==================== -->
+<a name="section-ClassVariableDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Class Variable Details</span></td>
+</tr>
+</table>
+<a name="parameters_and_defaults"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">parameters_and_defaults</h3>
+  
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+{'font':(glut.GLUT_STROKE_ROMAN, ve_types.Integer), 'orientation':(0.0<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+, ve_types.Real), 'linewidth':(3.0, ve_types.Real), 'anti_aliasing':(T<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+rue, ve_types.Boolean),}
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:47 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.Text.Text-class.html b/doc/reference/html/VisionEgg.Text.Text-class.html
new file mode 100644
index 0000000..c80a45d
--- /dev/null
+++ b/doc/reference/html/VisionEgg.Text.Text-class.html
@@ -0,0 +1,415 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.Text.Text</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.Text-module.html">Module Text</a> ::
+        Class Text
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.Text.Text-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class Text</h1><span class="codelink"><a href="VisionEgg.Text-pysrc.html#Text">source code</a></span><br /><br />
+<pre class="base-tree">
+               object --+                
+                        |                
+      <a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a> --+            
+                            |            
+                <a href="VisionEgg.Core.Stimulus-class.html">Core.Stimulus</a> --+        
+                                |        
+<a href="VisionEgg.Textures.TextureStimulusBaseClass-class.html">Textures.TextureStimulusBaseClass</a> --+    
+                                    |    
+             <a href="VisionEgg.Textures.TextureStimulus-class.html">Textures.TextureStimulus</a> --+
+                                        |
+                                       <strong class="uidshort">Text</strong>
+</pre>
+
+<hr />
+<pre class="literalblock">
+Single line of text rendered using pygame/SDL true type fonts.
+
+Parameters
+==========
+anchor                -- specifies how position parameter is interpreted (String)
+                         Inherited from VisionEgg.Textures.TextureStimulus
+                         Default: lowerleft
+angle                 -- units: degrees, 0=right, 90=up (Real)
+                         Inherited from VisionEgg.Textures.TextureStimulus
+                         Default: 0.0
+color                 -- texture environment color. alpha ignored (if given) for max_alpha parameter (AnyOf(Sequence3 of Real or Sequence4 of Real))
+                         Inherited from VisionEgg.Textures.TextureStimulus
+                         Default: (1.0, 1.0, 1.0)
+depth_test            -- perform depth test? (Boolean)
+                         Inherited from VisionEgg.Textures.TextureStimulus
+                         Default: False
+ignore_size_parameter -- (Boolean)
+                         Default: True
+mask                  -- optional masking function (Instance of <class 'VisionEgg.Textures.Mask2D'>)
+                         Inherited from VisionEgg.Textures.TextureStimulus
+                         Default: (determined at runtime)
+max_alpha             -- controls opacity. 1.0=copletely opaque, 0.0=completely transparent (Real)
+                         Inherited from VisionEgg.Textures.TextureStimulus
+                         Default: 1.0
+on                    -- draw stimulus? (Boolean)
+                         Inherited from VisionEgg.Textures.TextureStimulus
+                         Default: True
+position              -- units: eye coordinates (AnyOf(Sequence2 of Real or Sequence3 of Real or Sequence4 of Real))
+                         Inherited from VisionEgg.Textures.TextureStimulus
+                         Default: (0.0, 0.0)
+size                  -- defaults to texture data size (units: eye coordinates) (Sequence2 of Real)
+                         Inherited from VisionEgg.Textures.TextureStimulus
+                         Default: (determined at runtime)
+text                  -- (AnyOf(String or Unicode))
+                         Default: the string to display
+texture               -- source of texture data (Instance of <class 'VisionEgg.Textures.Texture'>)
+                         Inherited from VisionEgg.Textures.TextureStimulusBaseClass
+                         Default: (determined at runtime)
+texture_mag_filter    -- OpenGL filter enum (Integer)
+                         Inherited from VisionEgg.Textures.TextureStimulusBaseClass
+                         Default: GL_LINEAR (9729)
+texture_min_filter    -- OpenGL filter enum (Integer)
+                         Inherited from VisionEgg.Textures.TextureStimulusBaseClass
+                         Default: (GL enum determined at runtime)
+texture_wrap_s        -- OpenGL texture wrap enum (Integer)
+                         Inherited from VisionEgg.Textures.TextureStimulusBaseClass
+                         Default: (GL enum determined at runtime)
+texture_wrap_t        -- OpenGL texture wrap enum (Integer)
+                         Inherited from VisionEgg.Textures.TextureStimulusBaseClass
+                         Default: (GL enum determined at runtime)
+
+Constant Parameters
+===================
+font_name         -- (AnyOf(String or Unicode))
+                     Default: (determined at runtime)
+font_size         -- (UnsignedInteger)
+                     Default: 30
+internal_format   -- format with which OpenGL uses texture data (OpenGL data type enum) (Integer)
+                     Inherited from VisionEgg.Textures.TextureStimulus
+                     Default: GL_RGB (6407)
+mipmaps_enabled   -- Are mipmaps enabled? (Boolean)
+                     Inherited from VisionEgg.Textures.TextureStimulus
+                     Default: True
+shrink_texture_ok -- Allow automatic shrinking of texture if too big? (Boolean)
+                     Inherited from VisionEgg.Textures.TextureStimulus
+                     Default: False
+
+</pre><br /><br />
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.Text.Text-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">**kw</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.Text-pysrc.html#Text.__init__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.Text.Text-class.html#draw" class="summary-sig-name">draw</a>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.Text-pysrc.html#Text.draw">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a></code></b>:
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__getstate__">__getstate__</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__setstate__">__setstate__</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#get_specified_type">get_specified_type</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#is_constant_parameter">is_constant_parameter</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#set">set</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#verify_parameters">verify_parameters</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__delattr__</code>,
+      <code>__getattribute__</code>,
+      <code>__hash__</code>,
+      <code>__new__</code>,
+      <code>__reduce__</code>,
+      <code>__reduce_ex__</code>,
+      <code>__repr__</code>,
+      <code>__setattr__</code>,
+      <code>__str__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Class Variables</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.Text.Text-class.html#parameters_and_defaults" class="summary-name">parameters_and_defaults</a> = <code title="{'text':('the string to display', ve_types.AnyOf(ve_types.String, ve_t\
+ypes.Unicode)), 'ignore_size_parameter':(True, ve_types.Boolean),}">{'text':('the string to display', ve<code class="variable-ellipsis">...</code></code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.Text.Text-class.html#constant_parameters_and_defaults" class="summary-name">constant_parameters_and_defaults</a> = <code title="{'font_size':(30, ve_types.UnsignedInteger), 'font_name':(None, ve_typ\
+es.AnyOf(ve_types.String, ve_types.Unicode)),}">{'font_size':(30, ve_types.<code class="variable-ellipsis">...</code></code>
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a></code></b>:
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__safe_for_unpickling__">__safe_for_unpickling__</a></code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Properties</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__class__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Method Details</span></td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">**kw</span>)</span>
+    <br /><em class="fname">(Constructor)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.Text-pysrc.html#Text.__init__">source code</a></span> 
+    </td>
+  </table>
+  
+  
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.Textures.TextureStimulusBaseClass-class.html#__init__">Textures.TextureStimulusBaseClass.__init__</a>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="draw"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">draw</span>(<span class="sig-arg">self</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.Text-pysrc.html#Text.draw">source code</a></span> 
+    </td>
+  </table>
+  
+  
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.Textures.TextureStimulus-class.html#draw">Textures.TextureStimulus.draw</a>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== CLASS VARIABLE DETAILS ==================== -->
+<a name="section-ClassVariableDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Class Variable Details</span></td>
+</tr>
+</table>
+<a name="parameters_and_defaults"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">parameters_and_defaults</h3>
+  
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+{'text':('the string to display', ve_types.AnyOf(ve_types.String, ve_t<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+ypes.Unicode)), 'ignore_size_parameter':(True, ve_types.Boolean),}
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="constant_parameters_and_defaults"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">constant_parameters_and_defaults</h3>
+  
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+{'font_size':(30, ve_types.UnsignedInteger), 'font_name':(None, ve_typ<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+es.AnyOf(ve_types.String, ve_types.Unicode)),}
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:47 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.Textures-module.html b/doc/reference/html/VisionEgg.Textures-module.html
new file mode 100644
index 0000000..1e1b8cf
--- /dev/null
+++ b/doc/reference/html/VisionEgg.Textures-module.html
@@ -0,0 +1,286 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.Textures</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        Module Textures
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.Textures-module.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== MODULE DESCRIPTION ==================== -->
+<h1 class="epydoc">Module Textures</h1><span class="codelink"><a href="VisionEgg.Textures-pysrc.html">source code</a></span><br /><br />
+<pre class="literalblock">
+
+Texture (images mapped onto polygons) stimuli.
+
+</pre><br /><br />
+
+<!-- ==================== CLASSES ==================== -->
+<a name="section-Classes"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Classes</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.Textures.Texture-class.html" class="summary-name">Texture</a><br />
+      A 2 dimensional texture.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.Textures.TextureFromFile-class.html" class="summary-name">TextureFromFile</a><br />
+      DEPRECATED.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.Textures.TextureObject-class.html" class="summary-name">TextureObject</a><br />
+      Texture data in OpenGL.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.Textures.TextureStimulusBaseClass-class.html" class="summary-name">TextureStimulusBaseClass</a><br />
+      Parameters common to all stimuli that use textures.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.Textures.Mask2D-class.html" class="summary-name">Mask2D</a><br />
+      A mask for windowing a portion of a texture.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.Textures.TextureStimulus-class.html" class="summary-name">TextureStimulus</a><br />
+      A textured rectangle.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.Textures.TextureStimulus3D-class.html" class="summary-name">TextureStimulus3D</a><br />
+      A textured rectangle placed arbitrarily in 3 space.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.Textures.SpinningDrum-class.html" class="summary-name">SpinningDrum</a><br />
+      Panoramic image texture mapped onto flat rectangle or 3D cylinder.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.Textures.FixationCross-class.html" class="summary-name">FixationCross</a><br />
+      Cross useful for fixation point.
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.Textures.TextureTooLargeError-class.html" class="summary-name">TextureTooLargeError</a>
+    </td>
+  </tr>
+</table>
+<!-- ==================== FUNCTIONS ==================== -->
+<a name="section-Functions"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Functions</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="convert_to_numpy_if_array"></a><span class="summary-sig-name">convert_to_numpy_if_array</span>(<span class="summary-sig-arg">A</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.Textures-pysrc.html#convert_to_numpy_if_array">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="next_power_of_2"></a><span class="summary-sig-name">next_power_of_2</span>(<span class="summary-sig-arg">f</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.Textures-pysrc.html#next_power_of_2">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="is_power_of_2"></a><span class="summary-sig-name">is_power_of_2</span>(<span class="summary-sig-arg">f</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.Textures-pysrc.html#is_power_of_2">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+</table>
+<!-- ==================== VARIABLES ==================== -->
+<a name="section-Variables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Variables</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="shrink_filter"></a><span class="summary-name">shrink_filter</span> = <code title="Image.BICUBIC">Image.BICUBIC</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="array_types"></a><span class="summary-name">array_types</span> = <code title="[numpy.ndarray]">[numpy.ndarray]</code>
+    </td>
+  </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.Textures-pysrc.html b/doc/reference/html/VisionEgg.Textures-pysrc.html
new file mode 100644
index 0000000..cb781c7
--- /dev/null
+++ b/doc/reference/html/VisionEgg.Textures-pysrc.html
@@ -0,0 +1,2973 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.Textures</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        Module Textures
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.Textures-pysrc.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<h1 class="epydoc">Source Code for <a href="VisionEgg.Textures-module.html">Module VisionEgg.Textures</a></h1>
+<pre class="py-src">
+<a name="L1"></a><tt class="py-lineno">   1</tt>  <tt class="py-line"><tt class="py-comment"># The Vision Egg: Textures</tt> </tt>
+<a name="L2"></a><tt class="py-lineno">   2</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L3"></a><tt class="py-lineno">   3</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Copyright (C) 2001-2004 Andrew Straw</tt> </tt>
+<a name="L4"></a><tt class="py-lineno">   4</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Copyright (C) 2004-2008 California Institute of Technology</tt> </tt>
+<a name="L5"></a><tt class="py-lineno">   5</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L6"></a><tt class="py-lineno">   6</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># URL: <http://www.visionegg.org/></tt> </tt>
+<a name="L7"></a><tt class="py-lineno">   7</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L8"></a><tt class="py-lineno">   8</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Distributed under the terms of the GNU Lesser General Public License</tt> </tt>
+<a name="L9"></a><tt class="py-lineno">   9</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># (LGPL). See LICENSE.TXT that came with this file.</tt> </tt>
+<a name="L10"></a><tt class="py-lineno">  10</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L11"></a><tt class="py-lineno">  11</tt>  <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L12"></a><tt class="py-lineno">  12</tt>  <tt class="py-line"><tt class="py-docstring">Texture (images mapped onto polygons) stimuli.</tt> </tt>
+<a name="L13"></a><tt class="py-lineno">  13</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L14"></a><tt class="py-lineno">  14</tt>  <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L15"></a><tt class="py-lineno">  15</tt>  <tt class="py-line"> </tt>
+<a name="L16"></a><tt class="py-lineno">  16</tt>  <tt class="py-line"><tt class="py-comment">####################################################################</tt> </tt>
+<a name="L17"></a><tt class="py-lineno">  17</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L18"></a><tt class="py-lineno">  18</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#        Import all the necessary packages</tt> </tt>
+<a name="L19"></a><tt class="py-lineno">  19</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L20"></a><tt class="py-lineno">  20</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">####################################################################</tt> </tt>
+<a name="L21"></a><tt class="py-lineno">  21</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L22"></a><tt class="py-lineno">  22</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">logging</tt>                              <tt class="py-comment"># available in Python 2.3</tt> </tt>
+<a name="L23"></a><tt class="py-lineno">  23</tt>  <tt class="py-line"> </tt>
+<a name="L24"></a><tt class="py-lineno">  24</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-0" class="py-name" targets="Package VisionEgg=VisionEgg-module.html"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-0', 'VisionEgg', 'link-0');">VisionEgg</a></tt> </tt>
+<a name="L25"></a><tt class="py-lineno">  25</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-1" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-1', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-2" class="py-name" targets="Module VisionEgg.Core=VisionEgg.Core-module.html"><a title="VisionEgg.Core" class="py-name" href="#" onclick="return doclink('link-2', 'Core', 'link-2');">Core</a></t [...]
+<a name="L26"></a><tt class="py-lineno">  26</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-3" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-3', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-4" class="py-name" targets="Module VisionEgg.ParameterTypes=VisionEgg.ParameterTypes-module.html"><a title="VisionEgg.ParameterTypes" class="py-name" href="#" onclick="return doclink('link-4', ' [...]
+<a name="L27"></a><tt class="py-lineno">  27</tt>  <tt class="py-line"> </tt>
+<a name="L28"></a><tt class="py-lineno">  28</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">Image</tt><tt class="py-op">,</tt> <tt class="py-name">ImageDraw</tt>                         <tt class="py-comment"># Python Imaging Library packages</tt> </tt>
+<a name="L29"></a><tt class="py-lineno">  29</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">pygame</tt><tt class="py-op">.</tt><tt class="py-name">surface</tt><tt class="py-op">,</tt> <tt class="py-name">pygame</tt><tt class="py-op">.</tt><tt class="py-name">image</tt>             <tt class="py-comment"># pygame</tt> </tt>
+<a name="L30"></a><tt class="py-lineno">  30</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">math</tt><tt class="py-op">,</tt> <tt class="py-name">types</tt><tt class="py-op">,</tt> <tt class="py-name">os</tt> </tt>
+<a name="L31"></a><tt class="py-lineno">  31</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">numpy</tt> </tt>
+<a name="L32"></a><tt class="py-lineno">  32</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">numpy</tt><tt class="py-op">.</tt><tt class="py-name">oldnumeric</tt> <tt class="py-keyword">as</tt> <tt class="py-name">numpyNumeric</tt><tt class="py-op">,</tt> <tt class="py-name">numpy</tt><tt class="py-op">.</tt><tt class="py-name">oldnumeric</tt><tt class="py-op">.</tt><tt class="py-name">mlab</tt> <tt class="py-keyword">as</tt> <tt class="py-name">MLab</tt> </tt>
+<a name="L33"></a><tt class="py-lineno">  33</tt>  <tt class="py-line"> </tt>
+<a name="L34"></a><tt class="py-lineno">  34</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-5" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-5', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-6" class="py-name" targets="Module VisionEgg.GL=VisionEgg.GL-module.html"><a title="VisionEgg.GL" class="py-name" href="#" onclick="return doclink('link-6', 'GL', 'link-6');">GL</a></tt> <tt cla [...]
+<a name="L35"></a><tt class="py-lineno">  35</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">OpenGL</tt><tt class="py-op">.</tt><tt class="py-name">GLU</tt> <tt class="py-keyword">as</tt> <tt class="py-name">glu</tt> </tt>
+<a name="L36"></a><tt class="py-lineno">  36</tt>  <tt class="py-line"> </tt>
+<a name="L37"></a><tt class="py-lineno">  37</tt>  <tt class="py-line"><tt class="py-comment"># These modules are part of PIL and get loaded as needed by Image.</tt> </tt>
+<a name="L38"></a><tt class="py-lineno">  38</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># They are listed here so that Gordon McMillan's Installer properly</tt> </tt>
+<a name="L39"></a><tt class="py-lineno">  39</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># locates them.  You will not hurt anything other than your ability to</tt> </tt>
+<a name="L40"></a><tt class="py-lineno">  40</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># make executables using Intaller if you remove these lines.</tt> </tt>
+<a name="L41"></a><tt class="py-lineno">  41</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-keyword">import</tt> <tt class="py-name">_imaging</tt> </tt>
+<a name="L42"></a><tt class="py-lineno">  42</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">ImageFile</tt><tt class="py-op">,</tt> <tt class="py-name">ImageFileIO</tt><tt class="py-op">,</tt> <tt class="py-name">BmpImagePlugin</tt><tt class="py-op">,</tt> <tt class="py-name">JpegImagePlugin</tt><tt class="py-op">,</tt> <tt class="py-name">PngImagePlugin</tt> </tt>
+<a name="L43"></a><tt class="py-lineno">  43</tt>  <tt class="py-line"> </tt>
+<a name="L44"></a><tt class="py-lineno">  44</tt>  <tt class="py-line"><tt class="py-keyword">if</tt> <tt class="py-name">Image</tt><tt class="py-op">.</tt><tt class="py-name">VERSION</tt> <tt class="py-op">>=</tt> <tt class="py-string">'1.1.3'</tt><tt class="py-op">:</tt> </tt>
+<a name="L45"></a><tt class="py-lineno">  45</tt>  <tt class="py-line">    <tt id="link-7" class="py-name" targets="Variable VisionEgg.Textures.shrink_filter=VisionEgg.Textures-module.html#shrink_filter"><a title="VisionEgg.Textures.shrink_filter" class="py-name" href="#" onclick="return doclink('link-7', 'shrink_filter', 'link-7');">shrink_filter</a></tt> <tt class="py-op">=</tt> <tt class="py-name">Image</tt><tt class="py-op">.</tt><tt class="py-name">ANTIALIAS</tt> <tt class="py-comme [...]
+<a name="L46"></a><tt class="py-lineno">  46</tt>  <tt class="py-line"><tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L47"></a><tt class="py-lineno">  47</tt>  <tt class="py-line">    <tt id="link-8" class="py-name"><a title="VisionEgg.Textures.shrink_filter" class="py-name" href="#" onclick="return doclink('link-8', 'shrink_filter', 'link-7');">shrink_filter</a></tt> <tt class="py-op">=</tt> <tt class="py-name">Image</tt><tt class="py-op">.</tt><tt class="py-name">BICUBIC</tt> <tt class="py-comment"># Fallback filtering</tt> </tt>
+<a name="L48"></a><tt class="py-lineno">  48</tt>  <tt class="py-line"> </tt>
+<a name="L49"></a><tt class="py-lineno">  49</tt>  <tt class="py-line"><tt id="link-9" class="py-name" targets="Variable VisionEgg.ParameterTypes.array_types=VisionEgg.ParameterTypes-module.html#array_types,Variable VisionEgg.Textures.array_types=VisionEgg.Textures-module.html#array_types"><a title="VisionEgg.ParameterTypes.array_types
+VisionEgg.Textures.array_types" class="py-name" href="#" onclick="return doclink('link-9', 'array_types', 'link-9');">array_types</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">numpy</tt><tt class="py-op">.</tt><tt class="py-name">ndarray</tt><tt class="py-op">]</tt> </tt>
+<a name="L50"></a><tt class="py-lineno">  50</tt>  <tt class="py-line"><tt class="py-comment"># Allow use of numarray and original Numeric texels without requiring either</tt> </tt>
+<a name="L51"></a><tt class="py-lineno">  51</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L52"></a><tt class="py-lineno">  52</tt>  <tt class="py-line">    <tt class="py-keyword">import</tt> <tt class="py-name">numarray</tt> </tt>
+<a name="L53"></a><tt class="py-lineno">  53</tt>  <tt class="py-line">    <tt id="link-10" class="py-name"><a title="VisionEgg.ParameterTypes.array_types
+VisionEgg.Textures.array_types" class="py-name" href="#" onclick="return doclink('link-10', 'array_types', 'link-9');">array_types</a></tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt> <tt class="py-name">numarray</tt><tt class="py-op">.</tt><tt class="py-name">numarraycore</tt><tt class="py-op">.</tt><tt class="py-name">NumArray</tt> <tt class="py-op">)</tt> </tt>
+<a name="L54"></a><tt class="py-lineno">  54</tt>  <tt class="py-line"><tt class="py-keyword">except</tt> <tt class="py-name">ImportError</tt><tt class="py-op">:</tt> </tt>
+<a name="L55"></a><tt class="py-lineno">  55</tt>  <tt class="py-line">    <tt class="py-keyword">pass</tt> </tt>
+<a name="L56"></a><tt class="py-lineno">  56</tt>  <tt class="py-line"><tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L57"></a><tt class="py-lineno">  57</tt>  <tt class="py-line">    <tt class="py-keyword">import</tt> <tt class="py-name">Numeric</tt> <tt class="py-keyword">as</tt> <tt class="py-name">orig_Numeric</tt> </tt>
+<a name="L58"></a><tt class="py-lineno">  58</tt>  <tt class="py-line">    <tt id="link-11" class="py-name"><a title="VisionEgg.ParameterTypes.array_types
+VisionEgg.Textures.array_types" class="py-name" href="#" onclick="return doclink('link-11', 'array_types', 'link-9');">array_types</a></tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt> <tt class="py-name">orig_Numeric</tt><tt class="py-op">.</tt><tt class="py-name">ArrayType</tt> <tt class="py-op">)</tt> </tt>
+<a name="L59"></a><tt class="py-lineno">  59</tt>  <tt class="py-line"><tt class="py-keyword">except</tt> <tt class="py-name">ImportError</tt><tt class="py-op">:</tt> </tt>
+<a name="L60"></a><tt class="py-lineno">  60</tt>  <tt class="py-line">    <tt class="py-keyword">pass</tt> </tt>
+<a name="L61"></a><tt class="py-lineno">  61</tt>  <tt class="py-line"> </tt>
+<a name="convert_to_numpy_if_array"></a><div id="convert_to_numpy_if_array-def"><a name="L62"></a><tt class="py-lineno">  62</tt> <a class="py-toggle" href="#" id="convert_to_numpy_if_array-toggle" onclick="return toggle('convert_to_numpy_if_array');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.Textures-module.html#convert_to_numpy_if_array">convert_to_numpy_if_array</a><tt class="py-op">(</tt><tt class="py-param">A</tt><tt class="py-op [...]
+</div><div id="convert_to_numpy_if_array-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="convert_to_numpy_if_array-expanded"><a name="L63"></a><tt class="py-lineno">  63</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">A</tt><tt class="py-op">)</tt> <tt class="py-keyword">in</tt> <tt id="link-12" class="py-name"><a title="VisionEgg.ParameterTypes.array_types
+VisionEgg.Textures.array_types" class="py-name" href="#" onclick="return doclink('link-12', 'array_types', 'link-9');">array_types</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L64"></a><tt class="py-lineno">  64</tt>  <tt class="py-line">        <tt class="py-comment"># with late release Numeric and numarray this is a view of the data</tt> </tt>
+<a name="L65"></a><tt class="py-lineno">  65</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">return</tt> <tt class="py-name">numpy</tt><tt class="py-op">.</tt><tt class="py-name">asarray</tt><tt class="py-op">(</tt><tt class="py-name">A</tt><tt class="py-op">)</tt> </tt>
+<a name="L66"></a><tt class="py-lineno">  66</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L67"></a><tt class="py-lineno">  67</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">A</tt> </tt>
+</div><a name="L68"></a><tt class="py-lineno">  68</tt>  <tt class="py-line"> </tt>
+<a name="L69"></a><tt class="py-lineno">  69</tt>  <tt class="py-line"><tt class="py-comment">####################################################################</tt> </tt>
+<a name="L70"></a><tt class="py-lineno">  70</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L71"></a><tt class="py-lineno">  71</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># XXX ToDo:</tt> </tt>
+<a name="L72"></a><tt class="py-lineno">  72</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L73"></a><tt class="py-lineno">  73</tt>  <tt class="py-line"><tt class="py-comment"># The main remaining feature to add to this module is automatic</tt> </tt>
+<a name="L74"></a><tt class="py-lineno">  74</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># management of texture objects.  This would allow many small images</tt> </tt>
+<a name="L75"></a><tt class="py-lineno">  75</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># (e.g. a bit of text) to live in one large texture object.  This</tt> </tt>
+<a name="L76"></a><tt class="py-lineno">  76</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># would be much faster when many small textures are drawn in rapid</tt> </tt>
+<a name="L77"></a><tt class="py-lineno">  77</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># succession. (Apparently this might not be such a big improvement on</tt> </tt>
+<a name="L78"></a><tt class="py-lineno">  78</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># OS X. (See http://crystal.sourceforge.net/phpwiki/index.php?MacXGL)</tt> </tt>
+<a name="L79"></a><tt class="py-lineno">  79</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L80"></a><tt class="py-lineno">  80</tt>  <tt class="py-line"><tt class="py-comment"># Here's a sample from Apple's TextureRange demo which is supposed</tt> </tt>
+<a name="L81"></a><tt class="py-lineno">  81</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># to speed up texture transfers.</tt> </tt>
+<a name="L82"></a><tt class="py-lineno">  82</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># glBindTextures( target, &texID);</tt> </tt>
+<a name="L83"></a><tt class="py-lineno">  83</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># glPixelStorei(GL_UNPACK_CLIENT_STORAGE_APPLE, 1);</tt> </tt>
+<a name="L84"></a><tt class="py-lineno">  84</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># glTexImage2D(target, 0, GL_RGBA, width, height, 0, GL_BGRA, GL_UNSIGNED_INT_8_8_8_8_REV,image_ptr);</tt> </tt>
+<a name="L85"></a><tt class="py-lineno">  85</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Update the texture with:</tt> </tt>
+<a name="L86"></a><tt class="py-lineno">  86</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># glTexSubImage2D(target, 0, 0, 0, width, height, GL_BGRA, GL_UNSIGNED_INT_8_8_8_8_REV,image_ptr);</tt> </tt>
+<a name="L87"></a><tt class="py-lineno">  87</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L88"></a><tt class="py-lineno">  88</tt>  <tt class="py-line"><tt class="py-comment">####################################################################</tt> </tt>
+<a name="L89"></a><tt class="py-lineno">  89</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L90"></a><tt class="py-lineno">  90</tt>  <tt class="py-line"><tt class="py-comment">####################################################################</tt> </tt>
+<a name="L91"></a><tt class="py-lineno">  91</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L92"></a><tt class="py-lineno">  92</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#        Textures</tt> </tt>
+<a name="L93"></a><tt class="py-lineno">  93</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L94"></a><tt class="py-lineno">  94</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">####################################################################</tt> </tt>
+<a name="L95"></a><tt class="py-lineno">  95</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="next_power_of_2"></a><div id="next_power_of_2-def"><a name="L96"></a><tt class="py-lineno">  96</tt> <a class="py-toggle" href="#" id="next_power_of_2-toggle" onclick="return toggle('next_power_of_2');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.Textures-module.html#next_power_of_2">next_power_of_2</a><tt class="py-op">(</tt><tt class="py-param">f</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="next_power_of_2-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="next_power_of_2-expanded"><a name="L97"></a><tt class="py-lineno">  97</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt id="link-13" class="py-name" targets="Class int=int-class.html"><a title="int" class="py-name" href="#" onclick="return doclink('link-13', 'int', 'link-13');">int</a></tt><tt class="py-op">(</tt><tt class="py-name">math</tt><tt class="py-op">.</tt> [...]
+</div><a name="L98"></a><tt class="py-lineno">  98</tt>  <tt class="py-line"> </tt>
+<a name="is_power_of_2"></a><div id="is_power_of_2-def"><a name="L99"></a><tt class="py-lineno">  99</tt> <a class="py-toggle" href="#" id="is_power_of_2-toggle" onclick="return toggle('is_power_of_2');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.Textures-module.html#is_power_of_2">is_power_of_2</a><tt class="py-op">(</tt><tt class="py-param">f</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="is_power_of_2-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="is_power_of_2-expanded"><a name="L100"></a><tt class="py-lineno"> 100</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">f</tt> <tt class="py-op">==</tt> <tt id="link-14" class="py-name" targets="Function VisionEgg.Textures.next_power_of_2()=VisionEgg.Textures-module.html#next_power_of_2"><a title="VisionEgg.Textures.next_power_of_2" class="py-name" href [...]
+</div><a name="L101"></a><tt class="py-lineno"> 101</tt>  <tt class="py-line"> </tt>
+<a name="Texture"></a><div id="Texture-def"><a name="L102"></a><tt class="py-lineno"> 102</tt> <a class="py-toggle" href="#" id="Texture-toggle" onclick="return toggle('Texture');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.Textures.Texture-class.html">Texture</a><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Texture-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="Texture-expanded"><a name="L103"></a><tt class="py-lineno"> 103</tt>  <tt class="py-line">    <tt class="py-docstring">"""A 2 dimensional texture.</tt> </tt>
+<a name="L104"></a><tt class="py-lineno"> 104</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L105"></a><tt class="py-lineno"> 105</tt>  <tt class="py-line"><tt class="py-docstring">    The pixel data can come from an image file, an image file stream,</tt> </tt>
+<a name="L106"></a><tt class="py-lineno"> 106</tt>  <tt class="py-line"><tt class="py-docstring">    an instance of Image from the Python Imaging Library, a numpy</tt> </tt>
+<a name="L107"></a><tt class="py-lineno"> 107</tt>  <tt class="py-line"><tt class="py-docstring">    array, or None.</tt> </tt>
+<a name="L108"></a><tt class="py-lineno"> 108</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L109"></a><tt class="py-lineno"> 109</tt>  <tt class="py-line"><tt class="py-docstring">    If the data is a numpy array, floating point numbers are assumed</tt> </tt>
+<a name="L110"></a><tt class="py-lineno"> 110</tt>  <tt class="py-line"><tt class="py-docstring">    to be in the range 0.0 to 1.0, and integers are assumed to be in</tt> </tt>
+<a name="L111"></a><tt class="py-lineno"> 111</tt>  <tt class="py-line"><tt class="py-docstring">    the range 0 to 255.  The first index is the row (y position), the</tt> </tt>
+<a name="L112"></a><tt class="py-lineno"> 112</tt>  <tt class="py-line"><tt class="py-docstring">    second index is the column (x position), and if it's RGB or RGBA</tt> </tt>
+<a name="L113"></a><tt class="py-lineno"> 113</tt>  <tt class="py-line"><tt class="py-docstring">    data, the third index specifies the color band.  Thus, if the</tt> </tt>
+<a name="L114"></a><tt class="py-lineno"> 114</tt>  <tt class="py-line"><tt class="py-docstring">    texel data was 640 pixels wide by 480 pixels tall, the array would</tt> </tt>
+<a name="L115"></a><tt class="py-lineno"> 115</tt>  <tt class="py-line"><tt class="py-docstring">    have shape (480,640) for luminance information, (480,640,3) for</tt> </tt>
+<a name="L116"></a><tt class="py-lineno"> 116</tt>  <tt class="py-line"><tt class="py-docstring">    RGB information, and (480,640,4) for RGBA information.</tt> </tt>
+<a name="L117"></a><tt class="py-lineno"> 117</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L118"></a><tt class="py-lineno"> 118</tt>  <tt class="py-line"><tt class="py-docstring">    The 2D texture data is not sent to OpenGL (video texture memory)</tt> </tt>
+<a name="L119"></a><tt class="py-lineno"> 119</tt>  <tt class="py-line"><tt class="py-docstring">    until the load() method is called.  The unload() method may be</tt> </tt>
+<a name="L120"></a><tt class="py-lineno"> 120</tt>  <tt class="py-line"><tt class="py-docstring">    used to remove the data from OpenGL.</tt> </tt>
+<a name="L121"></a><tt class="py-lineno"> 121</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L122"></a><tt class="py-lineno"> 122</tt>  <tt class="py-line"><tt class="py-docstring">    A reference to the original image data is maintained."""</tt> </tt>
+<a name="L123"></a><tt class="py-lineno"> 123</tt>  <tt class="py-line"> </tt>
+<a name="L124"></a><tt class="py-lineno"> 124</tt>  <tt class="py-line">    <tt class="py-name">__slots__</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-string">'texels'</tt><tt class="py-op">,</tt> </tt>
+<a name="L125"></a><tt class="py-lineno"> 125</tt>  <tt class="py-line">                 <tt class="py-string">'texture_object'</tt><tt class="py-op">,</tt> </tt>
+<a name="L126"></a><tt class="py-lineno"> 126</tt>  <tt class="py-line">                 <tt class="py-string">'size'</tt><tt class="py-op">,</tt> </tt>
+<a name="L127"></a><tt class="py-lineno"> 127</tt>  <tt class="py-line">                 <tt class="py-string">'_filename'</tt><tt class="py-op">,</tt> </tt>
+<a name="L128"></a><tt class="py-lineno"> 128</tt>  <tt class="py-line">                 <tt class="py-string">'_file_stream'</tt><tt class="py-op">,</tt> </tt>
+<a name="L129"></a><tt class="py-lineno"> 129</tt>  <tt class="py-line">                 <tt class="py-string">'buf_lf'</tt><tt class="py-op">,</tt> </tt>
+<a name="L130"></a><tt class="py-lineno"> 130</tt>  <tt class="py-line">                 <tt class="py-string">'buf_rf'</tt><tt class="py-op">,</tt> </tt>
+<a name="L131"></a><tt class="py-lineno"> 131</tt>  <tt class="py-line">                 <tt class="py-string">'buf_bf'</tt><tt class="py-op">,</tt> </tt>
+<a name="L132"></a><tt class="py-lineno"> 132</tt>  <tt class="py-line">                 <tt class="py-string">'buf_tf'</tt><tt class="py-op">,</tt> </tt>
+<a name="L133"></a><tt class="py-lineno"> 133</tt>  <tt class="py-line">                 <tt class="py-string">'_buf_l'</tt><tt class="py-op">,</tt> </tt>
+<a name="L134"></a><tt class="py-lineno"> 134</tt>  <tt class="py-line">                 <tt class="py-string">'_buf_r'</tt><tt class="py-op">,</tt> </tt>
+<a name="L135"></a><tt class="py-lineno"> 135</tt>  <tt class="py-line">                 <tt class="py-string">'_buf_b'</tt><tt class="py-op">,</tt> </tt>
+<a name="L136"></a><tt class="py-lineno"> 136</tt>  <tt class="py-line">                 <tt class="py-string">'_buf_t'</tt><tt class="py-op">,</tt> </tt>
+<a name="L137"></a><tt class="py-lineno"> 137</tt>  <tt class="py-line">                 <tt class="py-op">)</tt> </tt>
+<a name="L138"></a><tt class="py-lineno"> 138</tt>  <tt class="py-line"> </tt>
+<a name="Texture.__init__"></a><div id="Texture.__init__-def"><a name="L139"></a><tt class="py-lineno"> 139</tt> <a class="py-toggle" href="#" id="Texture.__init__-toggle" onclick="return toggle('Texture.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.Textures.Texture-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt><tt class="py-param">texels</tt><tt class="py-o [...]
+</div><div id="Texture.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Texture.__init__-expanded"><a name="L140"></a><tt class="py-lineno"> 140</tt>  <tt class="py-line">        <tt class="py-docstring">"""Creates instance of Texture object.</tt> </tt>
+<a name="L141"></a><tt class="py-lineno"> 141</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L142"></a><tt class="py-lineno"> 142</tt>  <tt class="py-line"><tt class="py-docstring">        texels -- Texture data. If not specified, a blank white</tt> </tt>
+<a name="L143"></a><tt class="py-lineno"> 143</tt>  <tt class="py-line"><tt class="py-docstring">                  texture is created.</tt> </tt>
+<a name="L144"></a><tt class="py-lineno"> 144</tt>  <tt class="py-line"><tt class="py-docstring">        size -- If a tuple, force size of texture data if possible,</tt> </tt>
+<a name="L145"></a><tt class="py-lineno"> 145</tt>  <tt class="py-line"><tt class="py-docstring">                raising an exception if not. If None, has no effect.</tt> </tt>
+<a name="L146"></a><tt class="py-lineno"> 146</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L147"></a><tt class="py-lineno"> 147</tt>  <tt class="py-line"> </tt>
+<a name="L148"></a><tt class="py-lineno"> 148</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">texels</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> <tt class="py-comment"># no texel data: make default</tt> </tt>
+<a name="L149"></a><tt class="py-lineno"> 149</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt id="link-15" class="py-name" targets="Variable VisionEgg.Core.Screen.size=VisionEgg.Core.Screen-class.html#size"><a title="VisionEgg.Core.Screen.size" class="py-name" href="#" onclick="return doclink('link-15', 'size', 'link-15');">size</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L150"></a><tt class="py-lineno"> 150</tt>  <tt class="py-line">                <tt id="link-16" class="py-name"><a title="VisionEgg.Core.Screen.size" class="py-name" href="#" onclick="return doclink('link-16', 'size', 'link-15');">size</a></tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-number">256</tt><tt class="py-op">,</tt><tt class="py-number">256</tt><tt class="py-op">)</tt> <tt class="py-comment"># an arbitrary default size</tt> </tt>
+<a name="L151"></a><tt class="py-lineno"> 151</tt>  <tt class="py-line">            <tt class="py-name">texels</tt> <tt class="py-op">=</tt> <tt class="py-name">Image</tt><tt class="py-op">.</tt><tt class="py-name">new</tt><tt class="py-op">(</tt><tt class="py-string">"RGB"</tt><tt class="py-op">,</tt><tt id="link-17" class="py-name"><a title="VisionEgg.Core.Screen.size" class="py-name" href="#" onclick="return doclink('link-17', 'size', 'link-15');">size</a></tt><tt class="py-op">,</tt> [...]
+<a name="L152"></a><tt class="py-lineno"> 152</tt>  <tt class="py-line"> </tt>
+<a name="L153"></a><tt class="py-lineno"> 153</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">texels</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-name">types</tt><tt class="py-op">.</tt><tt class="py-name">FileType</tt><tt class="py-op">:</tt> </tt>
+<a name="L154"></a><tt class="py-lineno"> 154</tt>  <tt class="py-line">            <tt class="py-name">texels</tt> <tt class="py-op">=</tt> <tt class="py-name">Image</tt><tt class="py-op">.</tt><tt class="py-name">open</tt><tt class="py-op">(</tt><tt class="py-name">texels</tt><tt class="py-op">)</tt> <tt class="py-comment"># Attempt to open as an image file</tt> </tt>
+<a name="L155"></a><tt class="py-lineno"> 155</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">texels</tt><tt class="py-op">)</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-name">types</tt><tt class="py-op">.</tt><tt class="py-name">StringType</tt><tt class="py-op">,</tt><tt class="py-name">types</tt><tt class="py-op">.</tt><tt class="py-name">UnicodeType</tt><tt class="p [...]
+<a name="L156"></a><tt class="py-lineno"> 156</tt>  <tt class="py-line">            <tt class="py-comment"># is this string a filename or raw image data?</tt> </tt>
+<a name="L157"></a><tt class="py-lineno"> 157</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">if</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">path</tt><tt class="py-op">.</tt><tt class="py-name">isfile</tt><tt class="py-op">(</tt><tt class="py-name">texels</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L158"></a><tt class="py-lineno"> 158</tt>  <tt class="py-line">                <tt class="py-comment"># cache filename and file stream for later use (if possible)</tt> </tt>
+<a name="L159"></a><tt class="py-lineno"> 159</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_filename</tt> <tt class="py-op">=</tt> <tt class="py-name">texels</tt> </tt>
+<a name="L160"></a><tt class="py-lineno"> 160</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_file_stream</tt> <tt class="py-op">=</tt> <tt class="py-name">open</tt><tt class="py-op">(</tt><tt class="py-name">texels</tt><tt class="py-op">,</tt><tt class="py-string">"rb"</tt><tt class="py-op">)</tt> </tt>
+<a name="L161"></a><tt class="py-lineno"> 161</tt>  <tt class="py-line">            <tt class="py-name">texels</tt> <tt class="py-op">=</tt> <tt class="py-name">Image</tt><tt class="py-op">.</tt><tt class="py-name">open</tt><tt class="py-op">(</tt><tt class="py-name">texels</tt><tt class="py-op">)</tt> <tt class="py-comment"># Attempt to open as an image stream</tt> </tt>
+<a name="L162"></a><tt class="py-lineno"> 162</tt>  <tt class="py-line"> </tt>
+<a name="L163"></a><tt class="py-lineno"> 163</tt>  <tt class="py-line">        <tt class="py-name">texels</tt> <tt class="py-op">=</tt> <tt id="link-18" class="py-name" targets="Function VisionEgg.Textures.convert_to_numpy_if_array()=VisionEgg.Textures-module.html#convert_to_numpy_if_array"><a title="VisionEgg.Textures.convert_to_numpy_if_array" class="py-name" href="#" onclick="return doclink('link-18', 'convert_to_numpy_if_array', 'link-18');">convert_to_numpy_if_array</a></tt><tt cla [...]
+<a name="L164"></a><tt class="py-lineno"> 164</tt>  <tt class="py-line"> </tt>
+<a name="L165"></a><tt class="py-lineno"> 165</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">texels</tt><tt class="py-op">,</tt> <tt class="py-name">Image</tt><tt class="py-op">.</tt><tt class="py-name">Image</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> <tt class="py-comment"># PIL Image</tt> </tt>
+<a name="L166"></a><tt class="py-lineno"> 166</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">texels</tt><tt class="py-op">.</tt><tt class="py-name">mode</tt> <tt class="py-op">==</tt> <tt class="py-string">'P'</tt><tt class="py-op">:</tt> <tt class="py-comment"># convert from paletted</tt> </tt>
+<a name="L167"></a><tt class="py-lineno"> 167</tt>  <tt class="py-line">                <tt class="py-name">texels</tt> <tt class="py-op">=</tt> <tt class="py-name">texels</tt><tt class="py-op">.</tt><tt class="py-name">convert</tt><tt class="py-op">(</tt><tt class="py-string">'RGBX'</tt><tt class="py-op">)</tt> </tt>
+<a name="L168"></a><tt class="py-lineno"> 168</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-19" class="py-name"><a title="VisionEgg.Core.Screen.size" class="py-name" href="#" onclick="return doclink('link-19', 'size', 'link-15');">size</a></tt> <tt class="py-op">=</tt> <tt class="py-name">texels</tt><tt class="py-op">.</tt><tt id="link-20" class="py-name"><a title="VisionEgg.Core.Screen.size" class="py-name" href="#" onclick="retu [...]
+<a name="L169"></a><tt class="py-lineno"> 169</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">texels</tt><tt class="py-op">,</tt> <tt class="py-name">pygame</tt><tt class="py-op">.</tt><tt class="py-name">surface</tt><tt class="py-op">.</tt><tt class="py-name">Surface</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> <tt class="py-comment"># pygame surface</tt> </tt>
+<a name="L170"></a><tt class="py-lineno"> 170</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-21" class="py-name"><a title="VisionEgg.Core.Screen.size" class="py-name" href="#" onclick="return doclink('link-21', 'size', 'link-15');">size</a></tt> <tt class="py-op">=</tt> <tt class="py-name">texels</tt><tt class="py-op">.</tt><tt id="link-22" class="py-name" targets="Method VisionEgg.Core.Screen.get_size()=VisionEgg.Core.Screen-class [...]
+<a name="L171"></a><tt class="py-lineno"> 171</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">texels</tt><tt class="py-op">,</tt><tt class="py-name">numpy</tt><tt class="py-op">.</tt><tt class="py-name">ndarray</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> <tt class="py-comment"># numpy array</tt> </tt>
+<a name="L172"></a><tt class="py-lineno"> 172</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">texels</tt><tt class="py-op">.</tt><tt class="py-name">shape</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">3</tt><tt class="py-op">:</tt> </tt>
+<a name="L173"></a><tt class="py-lineno"> 173</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">texels</tt><tt class="py-op">.</tt><tt class="py-name">shape</tt><tt class="py-op">[</tt><tt class="py-number">2</tt><tt class="py-op">]</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-op">[</tt><tt class="py-number">3</tt><tt class="py-op">,</tt><tt class="py-number">4</tt><tt class="py-op">]</tt><tt class="py-op">:< [...]
+<a name="L174"></a><tt class="py-lineno"> 174</tt>  <tt class="py-line">                    <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">"Only luminance (rank 2), and RGB, RGBA (rank 3) arrays allowed"</tt><tt class="py-op">)</tt> </tt>
+<a name="L175"></a><tt class="py-lineno"> 175</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">texels</tt><tt class="py-op">.</tt><tt class="py-name">shape</tt><tt class="py-op">)</tt> <tt class="py-op">!=</tt> <tt class="py-number">2</tt><tt class="py-op">:</tt> </tt>
+<a name="L176"></a><tt class="py-lineno"> 176</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">"Only luminance (rank 2), and RGB, RGBA (rank 3) arrays allowed"</tt><tt class="py-op">)</tt> </tt>
+<a name="L177"></a><tt class="py-lineno"> 177</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-23" class="py-name"><a title="VisionEgg.Core.Screen.size" class="py-name" href="#" onclick="return doclink('link-23', 'size', 'link-15');">size</a></tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt> <tt class="py-name">texels</tt><tt class="py-op">.</tt><tt class="py-name">shape</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><t [...]
+<a name="L178"></a><tt class="py-lineno"> 178</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L179"></a><tt class="py-lineno"> 179</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">TypeError</tt><tt class="py-op">(</tt><tt class="py-string">"texel data could not be recognized. (Use a PIL Image, numpy array, or pygame surface.)"</tt><tt class="py-op">)</tt> </tt>
+<a name="L180"></a><tt class="py-lineno"> 180</tt>  <tt class="py-line"> </tt>
+<a name="L181"></a><tt class="py-lineno"> 181</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">texels</tt> <tt class="py-op">=</tt> <tt class="py-name">texels</tt> </tt>
+<a name="L182"></a><tt class="py-lineno"> 182</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">texture_object</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L183"></a><tt class="py-lineno"> 183</tt>  <tt class="py-line"> </tt>
+<a name="L184"></a><tt class="py-lineno"> 184</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt id="link-24" class="py-name"><a title="VisionEgg.Core.Screen.size" class="py-name" href="#" onclick="return doclink('link-24', 'size', 'link-15');">size</a></tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt> <tt class="py-keyword">and</tt> <tt id="link-25" class="py-name"><a title="VisionEgg.Core.Screen.size" class="py-name" hre [...]
+<a name="L185"></a><tt class="py-lineno"> 185</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">"size was specified, but data could not be rescaled"</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L186"></a><tt class="py-lineno"> 186</tt>  <tt class="py-line"> </tt>
+<a name="Texture.update"></a><div id="Texture.update-def"><a name="L187"></a><tt class="py-lineno"> 187</tt> <a class="py-toggle" href="#" id="Texture.update-toggle" onclick="return toggle('Texture.update');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.Textures.Texture-class.html#update">update</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Texture.update-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Texture.update-expanded"><a name="L188"></a><tt class="py-lineno"> 188</tt>  <tt class="py-line">        <tt class="py-docstring">"""Update texture data</tt> </tt>
+<a name="L189"></a><tt class="py-lineno"> 189</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L190"></a><tt class="py-lineno"> 190</tt>  <tt class="py-line"><tt class="py-docstring">        This method does nothing, but may be overriden in classes that</tt> </tt>
+<a name="L191"></a><tt class="py-lineno"> 191</tt>  <tt class="py-line"><tt class="py-docstring">        need to update their texture data whenever drawn.</tt> </tt>
+<a name="L192"></a><tt class="py-lineno"> 192</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L193"></a><tt class="py-lineno"> 193</tt>  <tt class="py-line"><tt class="py-docstring">        It it called by the draw() method of any stimuli using</tt> </tt>
+<a name="L194"></a><tt class="py-lineno"> 194</tt>  <tt class="py-line"><tt class="py-docstring">        textures when its texture object is active, so it can safely</tt> </tt>
+<a name="L195"></a><tt class="py-lineno"> 195</tt>  <tt class="py-line"><tt class="py-docstring">        use put_sub_image() to manipulate its own texture data.</tt> </tt>
+<a name="L196"></a><tt class="py-lineno"> 196</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L197"></a><tt class="py-lineno"> 197</tt>  <tt class="py-line">        <tt class="py-keyword">pass</tt> </tt>
+</div><a name="L198"></a><tt class="py-lineno"> 198</tt>  <tt class="py-line"> </tt>
+<a name="Texture.make_half_size"></a><div id="Texture.make_half_size-def"><a name="L199"></a><tt class="py-lineno"> 199</tt> <a class="py-toggle" href="#" id="Texture.make_half_size-toggle" onclick="return toggle('Texture.make_half_size');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.Textures.Texture-class.html#make_half_size">make_half_size</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class=" [...]
+</div><div id="Texture.make_half_size-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Texture.make_half_size-expanded"><a name="L200"></a><tt class="py-lineno"> 200</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">texture_object</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L201"></a><tt class="py-lineno"> 201</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">RuntimeError</tt><tt class="py-op">(</tt><tt class="py-string">"make_half_size() only available BEFORE texture loaded to OpenGL."</tt><tt class="py-op">)</tt> </tt>
+<a name="L202"></a><tt class="py-lineno"> 202</tt>  <tt class="py-line"> </tt>
+<a name="L203"></a><tt class="py-lineno"> 203</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">texels</tt><tt class="py-op">,</tt><tt class="py-name">Image</tt><tt class="py-op">.</tt><tt class="py-name">Image</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L204"></a><tt class="py-lineno"> 204</tt>  <tt class="py-line">            <tt class="py-name">w</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-27" class="py-name"><a title="VisionEgg.Core.Screen.size" class="py-name" href="#" onclick="return doclink('link-27', 'size', 'link-15');">size</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">/</tt><tt class="py-number">2</tt> </tt>
+<a name="L205"></a><tt class="py-lineno"> 205</tt>  <tt class="py-line">            <tt class="py-name">h</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-28" class="py-name"><a title="VisionEgg.Core.Screen.size" class="py-name" href="#" onclick="return doclink('link-28', 'size', 'link-15');">size</a></tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">/</tt><tt class="py-number">2</tt> </tt>
+<a name="L206"></a><tt class="py-lineno"> 206</tt>  <tt class="py-line">            <tt class="py-name">small_texels</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">texels</tt><tt class="py-op">.</tt><tt class="py-name">resize</tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-name">w</tt><tt class="py-op">,</tt><tt class="py-name">h</tt><tt class="py-op">)</tt><tt class="py-op">,</tt><tt id="link-29" class="py-name">< [...]
+<a name="L207"></a><tt class="py-lineno"> 207</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">texels</tt> <tt class="py-op">=</tt> <tt class="py-name">small_texels</tt> </tt>
+<a name="L208"></a><tt class="py-lineno"> 208</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-30" class="py-name"><a title="VisionEgg.Core.Screen.size" class="py-name" href="#" onclick="return doclink('link-30', 'size', 'link-15');">size</a></tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">w</tt><tt class="py-op">,</tt><tt class="py-name">h</tt><tt class="py-op">)</tt> </tt>
+<a name="L209"></a><tt class="py-lineno"> 209</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L210"></a><tt class="py-lineno"> 210</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">NotImplementedError</tt><tt class="py-op">(</tt><tt class="py-string">"Texture too large, but rescaling only implemented for PIL images."</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L211"></a><tt class="py-lineno"> 211</tt>  <tt class="py-line"> </tt>
+<a name="Texture.unload"></a><div id="Texture.unload-def"><a name="L212"></a><tt class="py-lineno"> 212</tt> <a class="py-toggle" href="#" id="Texture.unload-toggle" onclick="return toggle('Texture.unload');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.Textures.Texture-class.html#unload">unload</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Texture.unload-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Texture.unload-expanded"><a name="L213"></a><tt class="py-lineno"> 213</tt>  <tt class="py-line">        <tt class="py-docstring">"""Unload texture data from video texture memory.</tt> </tt>
+<a name="L214"></a><tt class="py-lineno"> 214</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L215"></a><tt class="py-lineno"> 215</tt>  <tt class="py-line"><tt class="py-docstring">        This only removes data from the video texture memory if there</tt> </tt>
+<a name="L216"></a><tt class="py-lineno"> 216</tt>  <tt class="py-line"><tt class="py-docstring">        are no other references to the TextureObject instance.  To</tt> </tt>
+<a name="L217"></a><tt class="py-lineno"> 217</tt>  <tt class="py-line"><tt class="py-docstring">        ensure this, all references to the texture_object argument</tt> </tt>
+<a name="L218"></a><tt class="py-lineno"> 218</tt>  <tt class="py-line"><tt class="py-docstring">        passed to the load() method should be deleted."""</tt> </tt>
+<a name="L219"></a><tt class="py-lineno"> 219</tt>  <tt class="py-line"> </tt>
+<a name="L220"></a><tt class="py-lineno"> 220</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">texture_object</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+</div><a name="L221"></a><tt class="py-lineno"> 221</tt>  <tt class="py-line"> </tt>
+<a name="Texture.get_texels_as_image"></a><div id="Texture.get_texels_as_image-def"><a name="L222"></a><tt class="py-lineno"> 222</tt> <a class="py-toggle" href="#" id="Texture.get_texels_as_image-toggle" onclick="return toggle('Texture.get_texels_as_image');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.Textures.Texture-class.html#get_texels_as_image">get_texels_as_image</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt c [...]
+</div><div id="Texture.get_texels_as_image-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Texture.get_texels_as_image-expanded"><a name="L223"></a><tt class="py-lineno"> 223</tt>  <tt class="py-line">        <tt class="py-docstring">"""Return texel data as PIL image"""</tt> </tt>
+<a name="L224"></a><tt class="py-lineno"> 224</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">texels</tt><tt class="py-op">,</tt><tt class="py-name">numpy</tt><tt class="py-op">.</tt><tt class="py-name">ndarray</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L225"></a><tt class="py-lineno"> 225</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">texels</tt><tt class="py-op">.</tt><tt class="py-name">shape</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">2</tt><tt class="py-op">:</tt> </tt>
+<a name="L226"></a><tt class="py-lineno"> 226</tt>  <tt class="py-line">                <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">texels</tt> </tt>
+<a name="L227"></a><tt class="py-lineno"> 227</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">a</tt><tt class="py-op">.</tt><tt class="py-name">dtype</tt> <tt class="py-op">==</tt> <tt class="py-name">numpy</tt><tt class="py-op">.</tt><tt class="py-name">uint8</tt><tt class="py-op">:</tt> </tt>
+<a name="L228"></a><tt class="py-lineno"> 228</tt>  <tt class="py-line">                    <tt class="py-name">mode</tt> <tt class="py-op">=</tt> <tt class="py-string">"L"</tt> </tt>
+<a name="L229"></a><tt class="py-lineno"> 229</tt>  <tt class="py-line">                <tt class="py-keyword">elif</tt> <tt class="py-name">a</tt><tt class="py-op">.</tt><tt class="py-name">dtype</tt> <tt class="py-op">==</tt> <tt class="py-name">numpy</tt><tt class="py-op">.</tt><tt class="py-name">float32</tt><tt class="py-op">:</tt> </tt>
+<a name="L230"></a><tt class="py-lineno"> 230</tt>  <tt class="py-line">                    <tt class="py-name">mode</tt> <tt class="py-op">=</tt> <tt class="py-string">"F"</tt> </tt>
+<a name="L231"></a><tt class="py-lineno"> 231</tt>  <tt class="py-line">                <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L232"></a><tt class="py-lineno"> 232</tt>  <tt class="py-line">                    <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">"unsupported image mode"</tt><tt class="py-op">)</tt> </tt>
+<a name="L233"></a><tt class="py-lineno"> 233</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-name">Image</tt><tt class="py-op">.</tt><tt class="py-name">fromstring</tt><tt class="py-op">(</tt><tt class="py-name">mode</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">.</tt><tt class="py-name">shape</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">,</t [...]
+<a name="L234"></a><tt class="py-lineno"> 234</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L235"></a><tt class="py-lineno"> 235</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> <tt class="py-name">NotImplementedError</tt><tt class="py-op">(</tt><tt class="py-string">"Currently only luminance data can be converted to images"</tt><tt class="py-op">)</tt> </tt>
+<a name="L236"></a><tt class="py-lineno"> 236</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">texels</tt><tt class="py-op">,</tt> <tt class="py-name">Image</tt><tt class="py-op">.</tt><tt class="py-name">Image</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L237"></a><tt class="py-lineno"> 237</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">texels</tt> </tt>
+<a name="L238"></a><tt class="py-lineno"> 238</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L239"></a><tt class="py-lineno"> 239</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">NotImplementedError</tt><tt class="py-op">(</tt><tt class="py-string">"Don't know how to convert texel data to PIL image"</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L240"></a><tt class="py-lineno"> 240</tt>  <tt class="py-line"> </tt>
+<a name="Texture.get_pixels_as_image"></a><div id="Texture.get_pixels_as_image-def"><a name="L241"></a><tt class="py-lineno"> 241</tt> <a class="py-toggle" href="#" id="Texture.get_pixels_as_image-toggle" onclick="return toggle('Texture.get_pixels_as_image');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.Textures.Texture-class.html#get_pixels_as_image">get_pixels_as_image</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt c [...]
+</div><div id="Texture.get_pixels_as_image-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Texture.get_pixels_as_image-expanded"><a name="L242"></a><tt class="py-lineno"> 242</tt>  <tt class="py-line">        <tt id="link-31" class="py-name" targets="Variable VisionEgg.logger=VisionEgg-module.html#logger"><a title="VisionEgg.logger" class="py-name" href="#" onclick="return doclink('link-31', 'logger', 'link-31');">logger</a></tt> <tt class="py-op">=</tt> <tt  [...]
+<a name="L243"></a><tt class="py-lineno"> 243</tt>  <tt class="py-line">        <tt id="link-32" class="py-name"><a title="VisionEgg.logger" class="py-name" href="#" onclick="return doclink('link-32', 'logger', 'link-31');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">warning</tt><tt class="py-op">(</tt><tt class="py-string">"Using deprecated method get_pixels_as_image(). "</tt> </tt>
+<a name="L244"></a><tt class="py-lineno"> 244</tt>  <tt class="py-line">                       <tt class="py-string">"Use get_texels_as_image() instead."</tt><tt class="py-op">)</tt> </tt>
+<a name="L245"></a><tt class="py-lineno"> 245</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-33" class="py-name" targets="Method VisionEgg.QuickTime.MovieTexture.get_texels_as_image()=VisionEgg.QuickTime.MovieTexture-class.html#get_texels_as_image,Method VisionEgg.Textures.Texture.get_texels_as_image()=VisionEgg.Textures.Texture-class.html#get_texels_as_image"><a title="VisionEgg.QuickTime.MovieTextur [...]
+VisionEgg.Textures.Texture.get_texels_as_image" class="py-name" href="#" onclick="return doclink('link-33', 'get_texels_as_image', 'link-33');">get_texels_as_image</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L246"></a><tt class="py-lineno"> 246</tt>  <tt class="py-line"> </tt>
+<a name="Texture.load"></a><div id="Texture.load-def"><a name="L247"></a><tt class="py-lineno"> 247</tt> <a class="py-toggle" href="#" id="Texture.load-toggle" onclick="return toggle('Texture.load');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.Textures.Texture-class.html#load">load</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> </tt>
+<a name="L248"></a><tt class="py-lineno"> 248</tt>  <tt class="py-line">             <tt class="py-param">texture_object</tt><tt class="py-op">,</tt> </tt>
+<a name="L249"></a><tt class="py-lineno"> 249</tt>  <tt class="py-line">             <tt class="py-param">build_mipmaps</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt><tt class="py-op">,</tt> </tt>
+<a name="L250"></a><tt class="py-lineno"> 250</tt>  <tt class="py-line">             <tt class="py-param">rescale_original_to_fill_texture_object</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt><tt class="py-op">,</tt> </tt>
+<a name="L251"></a><tt class="py-lineno"> 251</tt>  <tt class="py-line">             <tt class="py-param">internal_format</tt><tt class="py-op">=</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_RGB</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Texture.load-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Texture.load-expanded"><a name="L252"></a><tt class="py-lineno"> 252</tt>  <tt class="py-line">        <tt class="py-docstring">"""Load texture data to video texture memory.</tt> </tt>
+<a name="L253"></a><tt class="py-lineno"> 253</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L254"></a><tt class="py-lineno"> 254</tt>  <tt class="py-line"><tt class="py-docstring">        This will cause the texture data to become resident in OpenGL</tt> </tt>
+<a name="L255"></a><tt class="py-lineno"> 255</tt>  <tt class="py-line"><tt class="py-docstring">        video texture memory, enabling fast drawing.</tt> </tt>
+<a name="L256"></a><tt class="py-lineno"> 256</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L257"></a><tt class="py-lineno"> 257</tt>  <tt class="py-line"><tt class="py-docstring">        The texture_object argument is used to specify an instance of</tt> </tt>
+<a name="L258"></a><tt class="py-lineno"> 258</tt>  <tt class="py-line"><tt class="py-docstring">        the TextureObject class, which is a wrapper for the OpenGL</tt> </tt>
+<a name="L259"></a><tt class="py-lineno"> 259</tt>  <tt class="py-line"><tt class="py-docstring">        texture object holding the resident texture.</tt> </tt>
+<a name="L260"></a><tt class="py-lineno"> 260</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L261"></a><tt class="py-lineno"> 261</tt>  <tt class="py-line"><tt class="py-docstring">        To remove a texture from OpenGL's resident textures:       TextureObject passed as the texture_object argument and 2)</tt> </tt>
+<a name="L262"></a><tt class="py-lineno"> 262</tt>  <tt class="py-line"><tt class="py-docstring">        call the unload() method"""</tt> </tt>
+<a name="L263"></a><tt class="py-lineno"> 263</tt>  <tt class="py-line"> </tt>
+<a name="L264"></a><tt class="py-lineno"> 264</tt>  <tt class="py-line">        <tt class="py-keyword">assert</tt><tt class="py-op">(</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt> <tt class="py-name">texture_object</tt><tt class="py-op">,</tt> <tt id="link-34" class="py-name" targets="Class VisionEgg.Textures.TextureObject=VisionEgg.Textures.TextureObject-class.html"><a title="VisionEgg.Textures.TextureObject" class="py-name" href="#" onclick="return doclink('link-34', [...]
+<a name="L265"></a><tt class="py-lineno"> 265</tt>  <tt class="py-line">        <tt class="py-keyword">assert</tt><tt class="py-op">(</tt> <tt class="py-name">texture_object</tt><tt class="py-op">.</tt><tt class="py-name">dimensions</tt> <tt class="py-op">==</tt> <tt class="py-number">2</tt> <tt class="py-op">)</tt> </tt>
+<a name="L266"></a><tt class="py-lineno"> 266</tt>  <tt class="py-line"> </tt>
+<a name="L267"></a><tt class="py-lineno"> 267</tt>  <tt class="py-line">        <tt class="py-name">width</tt><tt class="py-op">,</tt> <tt class="py-name">height</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-35" class="py-name"><a title="VisionEgg.Core.Screen.size" class="py-name" href="#" onclick="return doclink('link-35', 'size', 'link-15');">size</a></tt> </tt>
+<a name="L268"></a><tt class="py-lineno"> 268</tt>  <tt class="py-line"> </tt>
+<a name="L269"></a><tt class="py-lineno"> 269</tt>  <tt class="py-line">        <tt class="py-name">width_pow2</tt>  <tt class="py-op">=</tt> <tt id="link-36" class="py-name"><a title="VisionEgg.Textures.next_power_of_2" class="py-name" href="#" onclick="return doclink('link-36', 'next_power_of_2', 'link-14');">next_power_of_2</a></tt><tt class="py-op">(</tt><tt class="py-name">width</tt><tt class="py-op">)</tt> </tt>
+<a name="L270"></a><tt class="py-lineno"> 270</tt>  <tt class="py-line">        <tt class="py-name">height_pow2</tt>  <tt class="py-op">=</tt> <tt id="link-37" class="py-name"><a title="VisionEgg.Textures.next_power_of_2" class="py-name" href="#" onclick="return doclink('link-37', 'next_power_of_2', 'link-14');">next_power_of_2</a></tt><tt class="py-op">(</tt><tt class="py-name">height</tt><tt class="py-op">)</tt> </tt>
+<a name="L271"></a><tt class="py-lineno"> 271</tt>  <tt class="py-line"> </tt>
+<a name="L272"></a><tt class="py-lineno"> 272</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">rescale_original_to_fill_texture_object</tt><tt class="py-op">:</tt> </tt>
+<a name="L273"></a><tt class="py-lineno"> 273</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">texels</tt><tt class="py-op">,</tt><tt class="py-name">Image</tt><tt class="py-op">.</tt><tt class="py-name">Image</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L274"></a><tt class="py-lineno"> 274</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> <tt class="py-name">NotImplementedError</tt><tt class="py-op">(</tt><tt class="py-string">"Automatic rescaling not implemented for this texel data type."</tt><tt class="py-op">)</tt> </tt>
+<a name="L275"></a><tt class="py-lineno"> 275</tt>  <tt class="py-line"> </tt>
+<a name="L276"></a><tt class="py-lineno"> 276</tt>  <tt class="py-line">        <tt class="py-comment"># fractional coverage</tt> </tt>
+<a name="L277"></a><tt class="py-lineno"> 277</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">buf_lf</tt> <tt class="py-op">=</tt> <tt class="py-number">0.0</tt> </tt>
+<a name="L278"></a><tt class="py-lineno"> 278</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">buf_rf</tt> <tt class="py-op">=</tt> <tt id="link-38" class="py-name" targets="Class float=float-class.html"><a title="float" class="py-name" href="#" onclick="return doclink('link-38', 'float', 'link-38');">float</a></tt><tt class="py-op">(</tt><tt class="py-name">width</tt><tt class="py-op">)</tt><tt class="py-op">/</tt><tt class="py-n [...]
+<a name="L279"></a><tt class="py-lineno"> 279</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">buf_bf</tt> <tt class="py-op">=</tt> <tt class="py-number">0.0</tt> </tt>
+<a name="L280"></a><tt class="py-lineno"> 280</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">buf_tf</tt> <tt class="py-op">=</tt> <tt id="link-39" class="py-name"><a title="float" class="py-name" href="#" onclick="return doclink('link-39', 'float', 'link-38');">float</a></tt><tt class="py-op">(</tt><tt class="py-name">height</tt><tt class="py-op">)</tt><tt class="py-op">/</tt><tt class="py-name">height_pow2</tt> </tt>
+<a name="L281"></a><tt class="py-lineno"> 281</tt>  <tt class="py-line"> </tt>
+<a name="L282"></a><tt class="py-lineno"> 282</tt>  <tt class="py-line">        <tt class="py-comment"># absolute (texel units) coverage</tt> </tt>
+<a name="L283"></a><tt class="py-lineno"> 283</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_buf_l</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L284"></a><tt class="py-lineno"> 284</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_buf_r</tt> <tt class="py-op">=</tt> <tt class="py-name">width</tt> </tt>
+<a name="L285"></a><tt class="py-lineno"> 285</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_buf_b</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L286"></a><tt class="py-lineno"> 286</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_buf_t</tt> <tt class="py-op">=</tt> <tt class="py-name">height</tt> </tt>
+<a name="L287"></a><tt class="py-lineno"> 287</tt>  <tt class="py-line"> </tt>
+<a name="L288"></a><tt class="py-lineno"> 288</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">width</tt> <tt class="py-op">!=</tt> <tt class="py-name">width_pow2</tt> <tt class="py-keyword">or</tt> <tt class="py-name">height</tt> <tt class="py-op">!=</tt> <tt class="py-name">height_pow2</tt><tt class="py-op">:</tt> </tt>
+<a name="L289"></a><tt class="py-lineno"> 289</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">texels</tt><tt class="py-op">,</tt><tt class="py-name">numpy</tt><tt class="py-op">.</tt><tt class="py-name">ndarray</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L290"></a><tt class="py-lineno"> 290</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">texels</tt><tt class="py-op">.</tt><tt class="py-name">shape</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">2</tt><tt class="py-op">:</tt> </tt>
+<a name="L291"></a><tt class="py-lineno"> 291</tt>  <tt class="py-line">                    <tt class="py-name">buffer</tt> <tt class="py-op">=</tt> <tt class="py-name">numpy</tt><tt class="py-op">.</tt><tt class="py-name">zeros</tt><tt class="py-op">(</tt> <tt class="py-op">(</tt><tt class="py-name">height_pow2</tt><tt class="py-op">,</tt><tt class="py-name">width_pow2</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">dtype</tt><tt class="py-op">=</tt><tt class="p [...]
+<a name="L292"></a><tt class="py-lineno"> 292</tt>  <tt class="py-line">                    <tt class="py-name">buffer</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">:</tt><tt class="py-name">height</tt><tt class="py-op">,</tt><tt class="py-number">0</tt><tt class="py-op">:</tt><tt class="py-name">width</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">texels</tt> </tt>
+<a name="L293"></a><tt class="py-lineno"> 293</tt>  <tt class="py-line">                <tt class="py-keyword">elif</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">texels</tt><tt class="py-op">.</tt><tt class="py-name">shape</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">3</tt><tt class="py-op">:</tt> </tt>
+<a name="L294"></a><tt class="py-lineno"> 294</tt>  <tt class="py-line">                    <tt class="py-name">buffer</tt> <tt class="py-op">=</tt> <tt class="py-name">numpy</tt><tt class="py-op">.</tt><tt class="py-name">zeros</tt><tt class="py-op">(</tt> <tt class="py-op">(</tt><tt class="py-name">height_pow2</tt><tt class="py-op">,</tt><tt class="py-name">width_pow2</tt><tt class="py-op">,</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">texels</tt><tt cla [...]
+<a name="L295"></a><tt class="py-lineno"> 295</tt>  <tt class="py-line">                    <tt class="py-name">buffer</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">:</tt><tt class="py-name">height</tt><tt class="py-op">,</tt><tt class="py-number">0</tt><tt class="py-op">:</tt><tt class="py-name">width</tt><tt class="py-op">,</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt c [...]
+<a name="L296"></a><tt class="py-lineno"> 296</tt>  <tt class="py-line">                <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L297"></a><tt class="py-lineno"> 297</tt>  <tt class="py-line">                    <tt class="py-keyword">raise</tt> <tt class="py-name">RuntimeError</tt><tt class="py-op">(</tt><tt class="py-string">"Unexpected shape for self.texels"</tt><tt class="py-op">)</tt> </tt>
+<a name="L298"></a><tt class="py-lineno"> 298</tt>  <tt class="py-line"> </tt>
+<a name="L299"></a><tt class="py-lineno"> 299</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">texels</tt><tt class="py-op">,</tt> <tt class="py-name">Image</tt><tt class="py-op">.</tt><tt class="py-name">Image</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> <tt class="py-comment"># PIL Image</tt> </tt>
+<a name="L300"></a><tt class="py-lineno"> 300</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">rescale_original_to_fill_texture_object</tt><tt class="py-op">:</tt> </tt>
+<a name="L301"></a><tt class="py-lineno"> 301</tt>  <tt class="py-line">                    <tt class="py-comment"># reset coverage values</tt> </tt>
+<a name="L302"></a><tt class="py-lineno"> 302</tt>  <tt class="py-line"><tt class="py-comment"></tt>                    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">buf_lf</tt> <tt class="py-op">=</tt> <tt class="py-number">0.0</tt> </tt>
+<a name="L303"></a><tt class="py-lineno"> 303</tt>  <tt class="py-line">                    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">buf_rf</tt> <tt class="py-op">=</tt> <tt class="py-number">1.0</tt> </tt>
+<a name="L304"></a><tt class="py-lineno"> 304</tt>  <tt class="py-line">                    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">buf_bf</tt> <tt class="py-op">=</tt> <tt class="py-number">0.0</tt> </tt>
+<a name="L305"></a><tt class="py-lineno"> 305</tt>  <tt class="py-line">                    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">buf_tf</tt> <tt class="py-op">=</tt> <tt class="py-number">1.0</tt> </tt>
+<a name="L306"></a><tt class="py-lineno"> 306</tt>  <tt class="py-line"> </tt>
+<a name="L307"></a><tt class="py-lineno"> 307</tt>  <tt class="py-line">                    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_buf_l</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L308"></a><tt class="py-lineno"> 308</tt>  <tt class="py-line">                    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_buf_r</tt> <tt class="py-op">=</tt> <tt class="py-name">width_pow2</tt> </tt>
+<a name="L309"></a><tt class="py-lineno"> 309</tt>  <tt class="py-line">                    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_buf_t</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L310"></a><tt class="py-lineno"> 310</tt>  <tt class="py-line">                    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_buf_b</tt> <tt class="py-op">=</tt> <tt class="py-name">height_pow2</tt> </tt>
+<a name="L311"></a><tt class="py-lineno"> 311</tt>  <tt class="py-line"> </tt>
+<a name="L312"></a><tt class="py-lineno"> 312</tt>  <tt class="py-line">                    <tt class="py-name">buffer</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">texels</tt><tt class="py-op">.</tt><tt class="py-name">resize</tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-name">width_pow2</tt><tt class="py-op">,</tt><tt class="py-name">height_pow2</tt><tt class="py-op">)</tt><tt class="py-op">,</tt><tt id="link- [...]
+<a name="L313"></a><tt class="py-lineno"> 313</tt>  <tt class="py-line"> </tt>
+<a name="L314"></a><tt class="py-lineno"> 314</tt>  <tt class="py-line">                    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-41" class="py-name"><a title="VisionEgg.Core.Screen.size" class="py-name" href="#" onclick="return doclink('link-41', 'size', 'link-15');">size</a></tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">width_pow2</tt><tt class="py-op">,</tt> <tt class="py-name">height_pow2</tt><tt class="py-op">)</tt> </tt>
+<a name="L315"></a><tt class="py-lineno"> 315</tt>  <tt class="py-line">                <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L316"></a><tt class="py-lineno"> 316</tt>  <tt class="py-line">                    <tt class="py-name">buffer</tt> <tt class="py-op">=</tt> <tt class="py-name">Image</tt><tt class="py-op">.</tt><tt class="py-name">new</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">texels</tt><tt class="py-op">.</tt><tt class="py-name">mode</tt><tt class="py-op">,</tt><tt class="py-op">(</tt><tt class="py-name">width_pow2</tt><tt class="py-op" [...]
+<a name="L317"></a><tt class="py-lineno"> 317</tt>  <tt class="py-line">                    <tt class="py-name">buffer</tt><tt class="py-op">.</tt><tt class="py-name">paste</tt><tt class="py-op">(</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">texels</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">,</tt><tt class="py-name">height_pow2</tt><tt class="py-op">-</tt><tt class="py-name">height</tt><tt class="py- [...]
+<a name="L318"></a><tt class="py-lineno"> 318</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">texels</tt><tt class="py-op">,</tt> <tt class="py-name">pygame</tt><tt class="py-op">.</tt><tt class="py-name">surface</tt><tt class="py-op">.</tt><tt class="py-name">Surface</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> <tt class="py-c [...]
+<a name="L319"></a><tt class="py-lineno"> 319</tt>  <tt class="py-line">                <tt class="py-name">buffer</tt> <tt class="py-op">=</tt> <tt class="py-name">pygame</tt><tt class="py-op">.</tt><tt class="py-name">surface</tt><tt class="py-op">.</tt><tt class="py-name">Surface</tt><tt class="py-op">(</tt> <tt class="py-op">(</tt><tt class="py-name">width_pow2</tt><tt class="py-op">,</tt> <tt class="py-name">height_pow2</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L320"></a><tt class="py-lineno"> 320</tt>  <tt class="py-line">                                                 <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">texels</tt><tt class="py-op">.</tt><tt class="py-name">get_flags</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L321"></a><tt class="py-lineno"> 321</tt>  <tt class="py-line">                                                 <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">texels</tt><tt class="py-op">.</tt><tt class="py-name">get_bitsize</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">)</tt> </tt>
+<a name="L322"></a><tt class="py-lineno"> 322</tt>  <tt class="py-line">                <tt class="py-name">buffer</tt><tt class="py-op">.</tt><tt class="py-name">blit</tt><tt class="py-op">(</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">texels</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">,</tt><tt class="py-name">height_pow2</tt><tt class="py-op">-</tt><tt class="py-name">height</tt><tt class="py-op">) [...]
+<a name="L323"></a><tt class="py-lineno"> 323</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L324"></a><tt class="py-lineno"> 324</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> <tt class="py-name">RuntimeError</tt><tt class="py-op">(</tt><tt class="py-string">"texel data not recognized - changed?"</tt><tt class="py-op">)</tt> </tt>
+<a name="L325"></a><tt class="py-lineno"> 325</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L326"></a><tt class="py-lineno"> 326</tt>  <tt class="py-line">            <tt class="py-name">buffer</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">texels</tt> </tt>
+<a name="L327"></a><tt class="py-lineno"> 327</tt>  <tt class="py-line"> </tt>
+<a name="L328"></a><tt class="py-lineno"> 328</tt>  <tt class="py-line">        <tt class="py-comment"># Put data in texture object</tt> </tt>
+<a name="L329"></a><tt class="py-lineno"> 329</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">build_mipmaps</tt><tt class="py-op">:</tt> </tt>
+<a name="L330"></a><tt class="py-lineno"> 330</tt>  <tt class="py-line">            <tt class="py-name">texture_object</tt><tt class="py-op">.</tt><tt id="link-42" class="py-name" targets="Method VisionEgg.Textures.TextureObject.put_new_image()=VisionEgg.Textures.TextureObject-class.html#put_new_image"><a title="VisionEgg.Textures.TextureObject.put_new_image" class="py-name" href="#" onclick="return doclink('link-42', 'put_new_image', 'link-42');">put_new_image</a></tt><tt class="py-op"> [...]
+<a name="L331"></a><tt class="py-lineno"> 331</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L332"></a><tt class="py-lineno"> 332</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt>
+<a name="L333"></a><tt class="py-lineno"> 333</tt>  <tt class="py-line">                <tt class="py-comment"># Build mipmaps with GLU (faster, but currently broken)</tt> </tt>
+<a name="L334"></a><tt class="py-lineno"> 334</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-name">texture_object</tt><tt class="py-op">.</tt><tt id="link-43" class="py-name" targets="Method VisionEgg.Textures.TextureObject.put_new_image_build_mipmaps()=VisionEgg.Textures.TextureObject-class.html#put_new_image_build_mipmaps"><a title="VisionEgg.Textures.TextureObject.put_new_image_build_mipmaps" class="py-name" href="#" onclick="return doclink('link-4 [...]
+<a name="L335"></a><tt class="py-lineno"> 335</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L336"></a><tt class="py-lineno"> 336</tt>  <tt class="py-line">                <tt class="py-comment"># Build mipmaps in PIL</tt> </tt>
+<a name="L337"></a><tt class="py-lineno"> 337</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-name">texture_object</tt><tt class="py-op">.</tt><tt id="link-44" class="py-name"><a title="VisionEgg.Textures.TextureObject.put_new_image" class="py-name" href="#" onclick="return doclink('link-44', 'put_new_image', 'link-42');">put_new_image</a></tt><tt class="py-op">(</tt> <tt class="py-name">buffer</tt><tt class="py-op">,</tt> <tt class="py-name">internal_ [...]
+<a name="L338"></a><tt class="py-lineno"> 338</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">texels</tt><tt class="py-op">,</tt> <tt class="py-name">Image</tt><tt class="py-op">.</tt><tt class="py-name">Image</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> <tt class="py-comment"># PIL Image</tt> </tt>
+<a name="L339"></a><tt class="py-lineno"> 339</tt>  <tt class="py-line">                    <tt class="py-keyword">raise</tt> <tt class="py-name">NotImplementedError</tt><tt class="py-op">(</tt> </tt>
+<a name="L340"></a><tt class="py-lineno"> 340</tt>  <tt class="py-line">                        <tt class="py-string">"Building of mipmaps not implemented for this texel "</tt><tt class="py-op">+</tt>\ </tt>
+<a name="L341"></a><tt class="py-lineno"> 341</tt>  <tt class="py-line">                        <tt class="py-string">"data type. (Use PIL Images or set parameter "</tt><tt class="py-op">+</tt>\ </tt>
+<a name="L342"></a><tt class="py-lineno"> 342</tt>  <tt class="py-line">                        <tt class="py-string">"mipmaps_enabled = False.)"</tt><tt class="py-op">)</tt> </tt>
+<a name="L343"></a><tt class="py-lineno"> 343</tt>  <tt class="py-line">                <tt class="py-name">this_width</tt><tt class="py-op">,</tt> <tt class="py-name">this_height</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-45" class="py-name"><a title="VisionEgg.Core.Screen.size" class="py-name" href="#" onclick="return doclink('link-45', 'size', 'link-15');">size</a></tt> </tt>
+<a name="L344"></a><tt class="py-lineno"> 344</tt>  <tt class="py-line">                <tt class="py-name">biggest_dim</tt> <tt class="py-op">=</tt> <tt class="py-name">max</tt><tt class="py-op">(</tt><tt class="py-name">this_width</tt><tt class="py-op">,</tt><tt class="py-name">this_height</tt><tt class="py-op">)</tt> </tt>
+<a name="L345"></a><tt class="py-lineno"> 345</tt>  <tt class="py-line">                <tt class="py-name">mipmap_level</tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L346"></a><tt class="py-lineno"> 346</tt>  <tt class="py-line">                <tt class="py-keyword">while</tt> <tt class="py-name">biggest_dim</tt> <tt class="py-op">></tt> <tt class="py-number">1</tt><tt class="py-op">:</tt> </tt>
+<a name="L347"></a><tt class="py-lineno"> 347</tt>  <tt class="py-line">                    <tt class="py-name">this_width</tt> <tt class="py-op">=</tt> <tt class="py-name">this_width</tt><tt class="py-op">/</tt><tt class="py-number">2.0</tt> </tt>
+<a name="L348"></a><tt class="py-lineno"> 348</tt>  <tt class="py-line">                    <tt class="py-name">this_height</tt> <tt class="py-op">=</tt> <tt class="py-name">this_height</tt><tt class="py-op">/</tt><tt class="py-number">2.0</tt> </tt>
+<a name="L349"></a><tt class="py-lineno"> 349</tt>  <tt class="py-line"> </tt>
+<a name="L350"></a><tt class="py-lineno"> 350</tt>  <tt class="py-line">                    <tt class="py-name">width_pix</tt> <tt class="py-op">=</tt> <tt id="link-46" class="py-name"><a title="int" class="py-name" href="#" onclick="return doclink('link-46', 'int', 'link-13');">int</a></tt><tt class="py-op">(</tt><tt class="py-name">math</tt><tt class="py-op">.</tt><tt class="py-name">ceil</tt><tt class="py-op">(</tt><tt class="py-name">this_width</tt><tt class="py-op">)</tt><tt class=" [...]
+<a name="L351"></a><tt class="py-lineno"> 351</tt>  <tt class="py-line">                    <tt class="py-name">height_pix</tt> <tt class="py-op">=</tt> <tt id="link-47" class="py-name"><a title="int" class="py-name" href="#" onclick="return doclink('link-47', 'int', 'link-13');">int</a></tt><tt class="py-op">(</tt><tt class="py-name">math</tt><tt class="py-op">.</tt><tt class="py-name">ceil</tt><tt class="py-op">(</tt><tt class="py-name">this_height</tt><tt class="py-op">)</tt><tt class [...]
+<a name="L352"></a><tt class="py-lineno"> 352</tt>  <tt class="py-line">                    <tt class="py-name">shrunk</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">texels</tt><tt class="py-op">.</tt><tt class="py-name">resize</tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-name">width_pix</tt><tt class="py-op">,</tt><tt class="py-name">height_pix</tt><tt class="py-op">)</tt><tt class="py-op">,</tt><tt id="link-48 [...]
+<a name="L353"></a><tt class="py-lineno"> 353</tt>  <tt class="py-line"> </tt>
+<a name="L354"></a><tt class="py-lineno"> 354</tt>  <tt class="py-line">                    <tt class="py-name">width_pow2</tt>  <tt class="py-op">=</tt> <tt id="link-49" class="py-name"><a title="VisionEgg.Textures.next_power_of_2" class="py-name" href="#" onclick="return doclink('link-49', 'next_power_of_2', 'link-14');">next_power_of_2</a></tt><tt class="py-op">(</tt><tt class="py-name">width_pix</tt><tt class="py-op">)</tt> </tt>
+<a name="L355"></a><tt class="py-lineno"> 355</tt>  <tt class="py-line">                    <tt class="py-name">height_pow2</tt>  <tt class="py-op">=</tt> <tt id="link-50" class="py-name"><a title="VisionEgg.Textures.next_power_of_2" class="py-name" href="#" onclick="return doclink('link-50', 'next_power_of_2', 'link-14');">next_power_of_2</a></tt><tt class="py-op">(</tt><tt class="py-name">height_pix</tt><tt class="py-op">)</tt> </tt>
+<a name="L356"></a><tt class="py-lineno"> 356</tt>  <tt class="py-line"> </tt>
+<a name="L357"></a><tt class="py-lineno"> 357</tt>  <tt class="py-line">                    <tt class="py-name">im</tt> <tt class="py-op">=</tt> <tt class="py-name">Image</tt><tt class="py-op">.</tt><tt class="py-name">new</tt><tt class="py-op">(</tt><tt class="py-name">shrunk</tt><tt class="py-op">.</tt><tt class="py-name">mode</tt><tt class="py-op">,</tt><tt class="py-op">(</tt><tt class="py-name">width_pow2</tt><tt class="py-op">,</tt><tt class="py-name">height_pow2</tt><tt class="py- [...]
+<a name="L358"></a><tt class="py-lineno"> 358</tt>  <tt class="py-line">                    <tt class="py-name">im</tt><tt class="py-op">.</tt><tt class="py-name">paste</tt><tt class="py-op">(</tt><tt class="py-name">shrunk</tt><tt class="py-op">,</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">,</tt><tt class="py-name">height_pow2</tt><tt class="py-op">-</tt><tt class="py-name">height_pix</tt><tt class="py-op">,</tt><tt class="py-name">width_pix</tt><tt class=" [...]
+<a name="L359"></a><tt class="py-lineno"> 359</tt>  <tt class="py-line"> </tt>
+<a name="L360"></a><tt class="py-lineno"> 360</tt>  <tt class="py-line">                    <tt class="py-name">texture_object</tt><tt class="py-op">.</tt><tt id="link-51" class="py-name"><a title="VisionEgg.Textures.TextureObject.put_new_image" class="py-name" href="#" onclick="return doclink('link-51', 'put_new_image', 'link-42');">put_new_image</a></tt><tt class="py-op">(</tt> <tt class="py-name">im</tt><tt class="py-op">,</tt> </tt>
+<a name="L361"></a><tt class="py-lineno"> 361</tt>  <tt class="py-line">                                                  <tt class="py-name">mipmap_level</tt><tt class="py-op">=</tt><tt class="py-name">mipmap_level</tt><tt class="py-op">,</tt> </tt>
+<a name="L362"></a><tt class="py-lineno"> 362</tt>  <tt class="py-line">                                                  <tt class="py-name">internal_format</tt> <tt class="py-op">=</tt> <tt class="py-name">internal_format</tt><tt class="py-op">,</tt> </tt>
+<a name="L363"></a><tt class="py-lineno"> 363</tt>  <tt class="py-line">                                                  <tt class="py-name">check_opengl_errors</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt><tt class="py-op">,</tt> <tt class="py-comment"># no point -- we've already seen biggest texture work, we're just making mipmap</tt> </tt>
+<a name="L364"></a><tt class="py-lineno"> 364</tt>  <tt class="py-line">                                                  <tt class="py-op">)</tt> </tt>
+<a name="L365"></a><tt class="py-lineno"> 365</tt>  <tt class="py-line"> </tt>
+<a name="L366"></a><tt class="py-lineno"> 366</tt>  <tt class="py-line">                    <tt class="py-name">mipmap_level</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L367"></a><tt class="py-lineno"> 367</tt>  <tt class="py-line">                    <tt class="py-name">biggest_dim</tt> <tt class="py-op">=</tt> <tt class="py-name">max</tt><tt class="py-op">(</tt><tt class="py-name">this_width</tt><tt class="py-op">,</tt><tt class="py-name">this_height</tt><tt class="py-op">)</tt> </tt>
+<a name="L368"></a><tt class="py-lineno"> 368</tt>  <tt class="py-line"> </tt>
+<a name="L369"></a><tt class="py-lineno"> 369</tt>  <tt class="py-line">        <tt class="py-comment"># Keep reference to texture_object</tt> </tt>
+<a name="L370"></a><tt class="py-lineno"> 370</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">texture_object</tt> <tt class="py-op">=</tt> <tt class="py-name">texture_object</tt> </tt>
+</div><a name="L371"></a><tt class="py-lineno"> 371</tt>  <tt class="py-line"> </tt>
+<a name="Texture.get_texture_object"></a><div id="Texture.get_texture_object-def"><a name="L372"></a><tt class="py-lineno"> 372</tt> <a class="py-toggle" href="#" id="Texture.get_texture_object-toggle" onclick="return toggle('Texture.get_texture_object');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.Textures.Texture-class.html#get_texture_object">get_texture_object</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class=" [...]
+</div><div id="Texture.get_texture_object-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Texture.get_texture_object-expanded"><a name="L373"></a><tt class="py-lineno"> 373</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">texture_object</tt> </tt>
+</div></div><a name="L374"></a><tt class="py-lineno"> 374</tt>  <tt class="py-line"> </tt>
+<a name="TextureFromFile"></a><div id="TextureFromFile-def"><a name="L375"></a><tt class="py-lineno"> 375</tt> <a class="py-toggle" href="#" id="TextureFromFile-toggle" onclick="return toggle('TextureFromFile');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.Textures.TextureFromFile-class.html">TextureFromFile</a><tt class="py-op">(</tt> <tt class="py-base-class">Texture</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="TextureFromFile-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="TextureFromFile-expanded"><a name="L376"></a><tt class="py-lineno"> 376</tt>  <tt class="py-line">    <tt class="py-docstring">"""DEPRECATED."""</tt> </tt>
+<a name="TextureFromFile.__init__"></a><div id="TextureFromFile.__init__-def"><a name="L377"></a><tt class="py-lineno"> 377</tt> <a class="py-toggle" href="#" id="TextureFromFile.__init__-toggle" onclick="return toggle('TextureFromFile.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.Textures.TextureFromFile-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt cl [...]
+</div><div id="TextureFromFile.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="TextureFromFile.__init__-expanded"><a name="L378"></a><tt class="py-lineno"> 378</tt>  <tt class="py-line">        <tt id="link-52" class="py-name"><a title="VisionEgg.logger" class="py-name" href="#" onclick="return doclink('link-52', 'logger', 'link-31');">logger</a></tt> <tt class="py-op">=</tt> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name" [...]
+<a name="L379"></a><tt class="py-lineno"> 379</tt>  <tt class="py-line">        <tt id="link-53" class="py-name"><a title="VisionEgg.logger" class="py-name" href="#" onclick="return doclink('link-53', 'logger', 'link-31');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">warning</tt><tt class="py-op">(</tt><tt class="py-string">"class TextureFromFile deprecated, use class "</tt> </tt>
+<a name="L380"></a><tt class="py-lineno"> 380</tt>  <tt class="py-line">                       <tt class="py-string">"Texture instead."</tt><tt class="py-op">)</tt> </tt>
+<a name="L381"></a><tt class="py-lineno"> 381</tt>  <tt class="py-line">        <tt id="link-54" class="py-name" targets="Class VisionEgg.Textures.Texture=VisionEgg.Textures.Texture-class.html"><a title="VisionEgg.Textures.Texture" class="py-name" href="#" onclick="return doclink('link-54', 'Texture', 'link-54');">Texture</a></tt><tt class="py-op">.</tt><tt id="link-55" class="py-name" targets="Method VisionEgg.ClassWithParameters.__init__()=VisionEgg.ClassWithParameters-class.html#__ini [...]
+VisionEgg.Configuration.Config.__init__
+VisionEgg.Core.FixationSpot.__init__
+VisionEgg.Core.FrameTimer.__init__
+VisionEgg.Core.ModelView.__init__
+VisionEgg.Core.OrthographicProjection.__init__
+VisionEgg.Core.OrthographicProjectionNoZClip.__init__
+VisionEgg.Core.PerspectiveProjection.__init__
+VisionEgg.Core.Projection.__init__
+VisionEgg.Core.ProjectionBaseClass.__init__
+VisionEgg.Core.Screen.__init__
+VisionEgg.Core.SimplePerspectiveProjection.__init__
+VisionEgg.Core.Stimulus.__init__
+VisionEgg.Core.Viewport.__init__
+VisionEgg.Daq.Channel.__init__
+VisionEgg.Daq.DaqMode.__init__
+VisionEgg.Daq.Device.__init__
+VisionEgg.Daq.Functionality.__init__
+VisionEgg.Daq.SignalType.__init__
+VisionEgg.DaqKeyboard.KeyboardTriggerInController.__init__
+VisionEgg.DaqLPT.LPTChannel.__init__
+VisionEgg.DaqLPT.LPTDevice.__init__
+VisionEgg.DaqLPT.LPTTriggerInController.__init__
+VisionEgg.DaqLPT.LPTTriggerOutController.__init__
+VisionEgg.Deprecated.Message.__init__
+VisionEgg.Dots.DotArea2D.__init__
+VisionEgg.FlowControl.ConstantController.__init__
+VisionEgg.FlowControl.Controller.__init__
+VisionEgg.FlowControl.EncapsulatedController.__init__
+VisionEgg.FlowControl.EvalStringController.__init__
+VisionEgg.FlowControl.ExecStringController.__init__
+VisionEgg.FlowControl.FunctionController.__init__
+VisionEgg.FlowControl.Presentation.__init__
+VisionEgg.GLTrace.Wrapper.__init__
+VisionEgg.GUI.AppWindow.__init__
+VisionEgg.GUI.GetKeypressDialog.__init__
+VisionEgg.GUI.GraphicsConfigurationWindow.__init__
+VisionEgg.GUI.InfoFrame.__init__
+VisionEgg.GUI.ProgressBar.__init__
+VisionEgg.GUI.ToplevelDialog.__init__
+VisionEgg.Gratings.SinGrating2D.__init__
+VisionEgg.Gratings.SinGrating3D.__init__
+VisionEgg.MoreStimuli.Arrow.__init__
+VisionEgg.MoreStimuli.FilledCircle.__init__
+VisionEgg.MoreStimuli.Rectangle3D.__init__
+VisionEgg.MoreStimuli.Target2D.__init__
+VisionEgg.ParameterTypes.AnyOf.__init__
+VisionEgg.ParameterTypes.Instance.__init__
+VisionEgg.ParameterTypes.Sequence.__init__
+VisionEgg.ParameterTypes.SubClass.__init__
+VisionEgg.PyroApps.AST_ext.AST_Visitor.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalMetaParameters.__init__
+VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.__init__
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.__init__
+VisionEgg.PyroApps.DropinGUI.DropinMetaParameters.__init__
+VisionEgg.PyroApps.DropinServer.DropinMetaController.__init__
+VisionEgg.PyroApps.EPhysGUI.AppWindow.__init__
+VisionEgg.PyroApps.EPhysGUI.BarButton.__init__
+VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase.__init__
+VisionEgg.PyroApps.EPhysGUI.GammaFrame.__init__
+VisionEgg.PyroApps.EPhysGUI.ImageSequenceLauncher.__init__
+VisionEgg.PyroApps.EPhysGUI.Loop.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopContainedObject.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopParamDialog.__init__
+VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.__init__
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.__init__
+VisionEgg.PyroApps.EPhysServer.EPhysServer.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingMetaParameters.__init__
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.GridGUI.GridControlFrame.__init__
+VisionEgg.PyroApps.GridGUI.GridMetaParameters.__init__
+VisionEgg.PyroApps.GridServer.GridMetaController.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetMetaParameters.__init__
+VisionEgg.PyroApps.MouseTargetServer.MousePositionController.__init__
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetOrientationController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetPositionController.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.CallbackEntry.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionParameters.__init__
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingMetaParameters.__init__
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumMetaParameters.__init__
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.__init__
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.__init__
+VisionEgg.PyroApps.TargetGUI.TargetMetaParameters.__init__
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.__init__
+VisionEgg.PyroClient.PyroClient.__init__
+VisionEgg.PyroHelpers.PyroConstantController.__init__
+VisionEgg.PyroHelpers.PyroEncapsulatedController.__init__
+VisionEgg.PyroHelpers.PyroEvalStringController.__init__
+VisionEgg.PyroHelpers.PyroExecStringController.__init__
+VisionEgg.PyroHelpers.PyroListenController.__init__
+VisionEgg.PyroHelpers.PyroLocalDictController.__init__
+VisionEgg.PyroHelpers.PyroServer.__init__
+VisionEgg.QuickTime.MovieTexture.__init__
+VisionEgg.ResponseControl.KeyboardResponseController.__init__
+VisionEgg.ResponseControl.ResponseController.__init__
+VisionEgg.SphereMap.AzElGrid.__init__
+VisionEgg.SphereMap.SphereGrating.__init__
+VisionEgg.SphereMap.SphereMap.__init__
+VisionEgg.SphereMap.SphereWindow.__init__
+VisionEgg.TCPController.SocketListenController.__init__
+VisionEgg.TCPController.TCPController.__init__
+VisionEgg.TCPController.TCPServer.__init__
+VisionEgg.Text.BitmapText.__init__
+VisionEgg.Text.GlutTextBase.__init__
+VisionEgg.Text.StrokeText.__init__
+VisionEgg.Text.Text.__init__
+VisionEgg.Textures.FixationCross.__init__
+VisionEgg.Textures.Mask2D.__init__
+VisionEgg.Textures.SpinningDrum.__init__
+VisionEgg.Textures.Texture.__init__
+VisionEgg.Textures.TextureFromFile.__init__
+VisionEgg.Textures.TextureObject.__init__
+VisionEgg.Textures.TextureStimulusBaseClass.__init__
+VisionEgg.ThreeDeeMath.TransformMatrix.__init__
+VisionEgg.WrappedText.WrappedText.__init__
+VisionEgg.qtmovie.Movie.__init__
+VisionEgg.qtmovie.Rect.__init__" class="py-name" href="#" onclick="return doclink('link-55', '__init__', 'link-55');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-name">filename</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L382"></a><tt class="py-lineno"> 382</tt>  <tt class="py-line"> </tt>
+<a name="TextureObject"></a><div id="TextureObject-def"><a name="L383"></a><tt class="py-lineno"> 383</tt> <a class="py-toggle" href="#" id="TextureObject-toggle" onclick="return toggle('TextureObject');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.Textures.TextureObject-class.html">TextureObject</a><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="TextureObject-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="TextureObject-expanded"><a name="L384"></a><tt class="py-lineno"> 384</tt>  <tt class="py-line">    <tt class="py-docstring">"""Texture data in OpenGL. Potentially resident in video texture memory.</tt> </tt>
+<a name="L385"></a><tt class="py-lineno"> 385</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L386"></a><tt class="py-lineno"> 386</tt>  <tt class="py-line"><tt class="py-docstring">    This class encapsulates the state variables in OpenGL texture objects.  Do not</tt> </tt>
+<a name="L387"></a><tt class="py-lineno"> 387</tt>  <tt class="py-line"><tt class="py-docstring">    change attribute values directly.  Use the methods provided instead."""</tt> </tt>
+<a name="L388"></a><tt class="py-lineno"> 388</tt>  <tt class="py-line"> </tt>
+<a name="L389"></a><tt class="py-lineno"> 389</tt>  <tt class="py-line">    <tt class="py-name">__slots__</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt> </tt>
+<a name="L390"></a><tt class="py-lineno"> 390</tt>  <tt class="py-line">        <tt class="py-string">'min_filter'</tt><tt class="py-op">,</tt> </tt>
+<a name="L391"></a><tt class="py-lineno"> 391</tt>  <tt class="py-line">        <tt class="py-string">'mag_filter'</tt><tt class="py-op">,</tt> </tt>
+<a name="L392"></a><tt class="py-lineno"> 392</tt>  <tt class="py-line">        <tt class="py-string">'wrap_mode_r'</tt><tt class="py-op">,</tt> <tt class="py-comment"># if dimensions > 2</tt> </tt>
+<a name="L393"></a><tt class="py-lineno"> 393</tt>  <tt class="py-line">        <tt class="py-string">'wrap_mode_s'</tt><tt class="py-op">,</tt> </tt>
+<a name="L394"></a><tt class="py-lineno"> 394</tt>  <tt class="py-line">        <tt class="py-string">'wrap_mode_t'</tt><tt class="py-op">,</tt> <tt class="py-comment"># if dimensions > 1</tt> </tt>
+<a name="L395"></a><tt class="py-lineno"> 395</tt>  <tt class="py-line">        <tt class="py-string">'border_color'</tt><tt class="py-op">,</tt> </tt>
+<a name="L396"></a><tt class="py-lineno"> 396</tt>  <tt class="py-line">        <tt class="py-string">'target'</tt><tt class="py-op">,</tt> </tt>
+<a name="L397"></a><tt class="py-lineno"> 397</tt>  <tt class="py-line">        <tt class="py-string">'dimensions'</tt><tt class="py-op">,</tt> </tt>
+<a name="L398"></a><tt class="py-lineno"> 398</tt>  <tt class="py-line">        <tt class="py-string">'gl_id'</tt><tt class="py-op">,</tt> </tt>
+<a name="L399"></a><tt class="py-lineno"> 399</tt>  <tt class="py-line">        <tt class="py-string">'__gl_module__'</tt><tt class="py-op">,</tt> </tt>
+<a name="L400"></a><tt class="py-lineno"> 400</tt>  <tt class="py-line">        <tt class="py-op">)</tt> </tt>
+<a name="L401"></a><tt class="py-lineno"> 401</tt>  <tt class="py-line"> </tt>
+<a name="L402"></a><tt class="py-lineno"> 402</tt>  <tt class="py-line">    <tt id="link-56" class="py-name" targets="Variable VisionEgg.Textures.TextureObject._cube_map_side_names=VisionEgg.Textures.TextureObject-class.html#_cube_map_side_names"><a title="VisionEgg.Textures.TextureObject._cube_map_side_names" class="py-name" href="#" onclick="return doclink('link-56', '_cube_map_side_names', 'link-56');">_cube_map_side_names</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt  [...]
+<a name="L403"></a><tt class="py-lineno"> 403</tt>  <tt class="py-line">                            <tt class="py-string">'positive_y'</tt><tt class="py-op">,</tt> <tt class="py-string">'negative_y'</tt><tt class="py-op">,</tt> </tt>
+<a name="L404"></a><tt class="py-lineno"> 404</tt>  <tt class="py-line">                            <tt class="py-string">'positive_z'</tt><tt class="py-op">,</tt> <tt class="py-string">'negative_z'</tt><tt class="py-op">]</tt> </tt>
+<a name="L405"></a><tt class="py-lineno"> 405</tt>  <tt class="py-line"> </tt>
+<a name="TextureObject.__init__"></a><div id="TextureObject.__init__-def"><a name="L406"></a><tt class="py-lineno"> 406</tt> <a class="py-toggle" href="#" id="TextureObject.__init__-toggle" onclick="return toggle('TextureObject.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.Textures.TextureObject-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> </tt>
+<a name="L407"></a><tt class="py-lineno"> 407</tt>  <tt class="py-line">                 <tt class="py-param">dimensions</tt> <tt class="py-op">=</tt> <tt class="py-number">2</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="TextureObject.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="TextureObject.__init__-expanded"><a name="L408"></a><tt class="py-lineno"> 408</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">dimensions</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">,</tt><tt class="py-number">2</tt><tt class="py-op">,</tt><tt cl [...]
+<a name="L409"></a><tt class="py-lineno"> 409</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">"TextureObject dimensions must be 1,2,3, or 'cube'"</tt><tt class="py-op">)</tt> </tt>
+<a name="L410"></a><tt class="py-lineno"> 410</tt>  <tt class="py-line">        <tt class="py-comment"># default OpenGL values for these values</tt> </tt>
+<a name="L411"></a><tt class="py-lineno"> 411</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">min_filter</tt> <tt class="py-op">=</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_NEAREST_MIPMAP_LINEAR</tt> </tt>
+<a name="L412"></a><tt class="py-lineno"> 412</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">mag_filter</tt> <tt class="py-op">=</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_LINEAR</tt> </tt>
+<a name="L413"></a><tt class="py-lineno"> 413</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">wrap_mode_s</tt> <tt class="py-op">=</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_REPEAT</tt> </tt>
+<a name="L414"></a><tt class="py-lineno"> 414</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">dimensions</tt> <tt class="py-op">!=</tt> <tt class="py-number">1</tt><tt class="py-op">:</tt> </tt>
+<a name="L415"></a><tt class="py-lineno"> 415</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">wrap_mode_t</tt> <tt class="py-op">=</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_REPEAT</tt> </tt>
+<a name="L416"></a><tt class="py-lineno"> 416</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">dimensions</tt> <tt class="py-op">==</tt> <tt class="py-number">3</tt><tt class="py-op">:</tt> </tt>
+<a name="L417"></a><tt class="py-lineno"> 417</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">wrap_mode_r</tt> <tt class="py-op">=</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_REPEAT</tt> </tt>
+<a name="L418"></a><tt class="py-lineno"> 418</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">border_color</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-number">0</tt><tt class="py-op">)</tt> </tt>
+<a name="L419"></a><tt class="py-lineno"> 419</tt>  <tt class="py-line"> </tt>
+<a name="L420"></a><tt class="py-lineno"> 420</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">dimensions</tt> <tt class="py-op">==</tt> <tt class="py-number">1</tt><tt class="py-op">:</tt> </tt>
+<a name="L421"></a><tt class="py-lineno"> 421</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">target</tt> <tt class="py-op">=</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE_1D</tt> </tt>
+<a name="L422"></a><tt class="py-lineno"> 422</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">dimensions</tt> <tt class="py-op">==</tt> <tt class="py-number">2</tt><tt class="py-op">:</tt> </tt>
+<a name="L423"></a><tt class="py-lineno"> 423</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">target</tt> <tt class="py-op">=</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE_2D</tt> </tt>
+<a name="L424"></a><tt class="py-lineno"> 424</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">dimensions</tt> <tt class="py-op">==</tt> <tt class="py-number">3</tt><tt class="py-op">:</tt> </tt>
+<a name="L425"></a><tt class="py-lineno"> 425</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">target</tt> <tt class="py-op">=</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE_3D</tt> </tt>
+<a name="L426"></a><tt class="py-lineno"> 426</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">dimensions</tt> <tt class="py-op">==</tt> <tt class="py-string">'cube'</tt><tt class="py-op">:</tt> </tt>
+<a name="L427"></a><tt class="py-lineno"> 427</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">target</tt> <tt class="py-op">=</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE_CUBE</tt> </tt>
+<a name="L428"></a><tt class="py-lineno"> 428</tt>  <tt class="py-line"> </tt>
+<a name="L429"></a><tt class="py-lineno"> 429</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">dimensions</tt> <tt class="py-op">=</tt> <tt class="py-name">dimensions</tt> </tt>
+<a name="L430"></a><tt class="py-lineno"> 430</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">gl_id</tt> <tt class="py-op">=</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glGenTextures</tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="L431"></a><tt class="py-lineno"> 431</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__gl_module__</tt> <tt class="py-op">=</tt> <tt class="py-name">gl</tt> <tt class="py-comment"># keep so we there's no error in __del__</tt> </tt>
+</div><a name="L432"></a><tt class="py-lineno"> 432</tt>  <tt class="py-line"> </tt>
+<a name="TextureObject.__del__"></a><div id="TextureObject.__del__-def"><a name="L433"></a><tt class="py-lineno"> 433</tt> <a class="py-toggle" href="#" id="TextureObject.__del__-toggle" onclick="return toggle('TextureObject.__del__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.Textures.TextureObject-class.html#__del__">__del__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="TextureObject.__del__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="TextureObject.__del__-expanded"><a name="L434"></a><tt class="py-lineno"> 434</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__gl_module__</tt><tt class="py-op">.</tt><tt class="py-name">glDeleteTextures</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">gl_id</tt><tt [...]
+</div><a name="L435"></a><tt class="py-lineno"> 435</tt>  <tt class="py-line"> </tt>
+<a name="TextureObject.is_resident"></a><div id="TextureObject.is_resident-def"><a name="L436"></a><tt class="py-lineno"> 436</tt> <a class="py-toggle" href="#" id="TextureObject.is_resident-toggle" onclick="return toggle('TextureObject.is_resident');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.Textures.TextureObject-class.html#is_resident">is_resident</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt [...]
+</div><div id="TextureObject.is_resident-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="TextureObject.is_resident-expanded"><a name="L437"></a><tt class="py-lineno"> 437</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glAreTexturesResident</tt><tt class="py-op">(</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">gl_id</tt> <tt class="py-op" [...]
+</div><a name="L438"></a><tt class="py-lineno"> 438</tt>  <tt class="py-line"> </tt>
+<a name="TextureObject.set_priority"></a><div id="TextureObject.set_priority-def"><a name="L439"></a><tt class="py-lineno"> 439</tt> <a class="py-toggle" href="#" id="TextureObject.set_priority-toggle" onclick="return toggle('TextureObject.set_priority');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.Textures.TextureObject-class.html#set_priority">set_priority</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op" [...]
+</div><div id="TextureObject.set_priority-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="TextureObject.set_priority-expanded"><a name="L440"></a><tt class="py-lineno"> 440</tt>  <tt class="py-line">        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glPrioritizeTextures</tt><tt class="py-op">(</tt> <tt class="py-op">[</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">gl_id</tt><tt class="py-op">]</tt><tt  [...]
+</div><a name="L441"></a><tt class="py-lineno"> 441</tt>  <tt class="py-line"> </tt>
+<a name="TextureObject.set_min_filter"></a><div id="TextureObject.set_min_filter-def"><a name="L442"></a><tt class="py-lineno"> 442</tt> <a class="py-toggle" href="#" id="TextureObject.set_min_filter-toggle" onclick="return toggle('TextureObject.set_min_filter');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.Textures.TextureObject-class.html#set_min_filter">set_min_filter</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt c [...]
+</div><div id="TextureObject.set_min_filter-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="TextureObject.set_min_filter-expanded"><a name="L443"></a><tt class="py-lineno"> 443</tt>  <tt class="py-line">        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glBindTexture</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">target</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt>< [...]
+<a name="L444"></a><tt class="py-lineno"> 444</tt>  <tt class="py-line">        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glTexParameteri</tt><tt class="py-op">(</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">target</tt><tt class="py-op">,</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE_MIN_FILTER</tt><tt class="py-op">,</tt><tt class="py-name">filter</tt><tt class="py-op">)</tt> </tt>
+<a name="L445"></a><tt class="py-lineno"> 445</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">min_filter</tt> <tt class="py-op">=</tt> <tt class="py-name">filter</tt> </tt>
+</div><a name="L446"></a><tt class="py-lineno"> 446</tt>  <tt class="py-line"> </tt>
+<a name="TextureObject.set_mag_filter"></a><div id="TextureObject.set_mag_filter-def"><a name="L447"></a><tt class="py-lineno"> 447</tt> <a class="py-toggle" href="#" id="TextureObject.set_mag_filter-toggle" onclick="return toggle('TextureObject.set_mag_filter');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.Textures.TextureObject-class.html#set_mag_filter">set_mag_filter</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt c [...]
+</div><div id="TextureObject.set_mag_filter-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="TextureObject.set_mag_filter-expanded"><a name="L448"></a><tt class="py-lineno"> 448</tt>  <tt class="py-line">        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glBindTexture</tt><tt class="py-op">(</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">target</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt> [...]
+<a name="L449"></a><tt class="py-lineno"> 449</tt>  <tt class="py-line">        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glTexParameteri</tt><tt class="py-op">(</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">target</tt><tt class="py-op">,</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE_MAG_FILTER</tt><tt class="py-op">,</tt> <tt class="py-name">filter</tt><tt class="py-op">)</tt> </tt>
+<a name="L450"></a><tt class="py-lineno"> 450</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">mag_filter</tt> <tt class="py-op">=</tt> <tt class="py-name">filter</tt> </tt>
+</div><a name="L451"></a><tt class="py-lineno"> 451</tt>  <tt class="py-line"> </tt>
+<a name="TextureObject.set_wrap_mode_s"></a><div id="TextureObject.set_wrap_mode_s-def"><a name="L452"></a><tt class="py-lineno"> 452</tt> <a class="py-toggle" href="#" id="TextureObject.set_wrap_mode_s-toggle" onclick="return toggle('TextureObject.set_wrap_mode_s');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.Textures.TextureObject-class.html#set_wrap_mode_s">set_wrap_mode_s</a><tt class="py-op">(</tt><tt class="py-param">self</tt [...]
+</div><div id="TextureObject.set_wrap_mode_s-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="TextureObject.set_wrap_mode_s-expanded"><a name="L453"></a><tt class="py-lineno"> 453</tt>  <tt class="py-line">        <tt class="py-docstring">"""Set to GL_CLAMP, GL_CLAMP_TO_EDGE, GL_REPEAT, or GL_CLAMP_TO_BORDER"""</tt> </tt>
+<a name="L454"></a><tt class="py-lineno"> 454</tt>  <tt class="py-line">        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glBindTexture</tt><tt class="py-op">(</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">target</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">gl_id</tt><tt class="py-op">)</tt> </tt>
+<a name="L455"></a><tt class="py-lineno"> 455</tt>  <tt class="py-line">        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glTexParameteri</tt><tt class="py-op">(</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">target</tt><tt class="py-op">,</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE_WRAP_S</tt><tt class="py-op">,</tt> <tt class="py-name">wrap_mode</tt><tt class="py-op">)</tt> </tt>
+<a name="L456"></a><tt class="py-lineno"> 456</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">wrap_mode_s</tt> <tt class="py-op">=</tt> <tt class="py-name">wrap_mode</tt> </tt>
+</div><a name="L457"></a><tt class="py-lineno"> 457</tt>  <tt class="py-line"> </tt>
+<a name="TextureObject.set_wrap_mode_t"></a><div id="TextureObject.set_wrap_mode_t-def"><a name="L458"></a><tt class="py-lineno"> 458</tt> <a class="py-toggle" href="#" id="TextureObject.set_wrap_mode_t-toggle" onclick="return toggle('TextureObject.set_wrap_mode_t');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.Textures.TextureObject-class.html#set_wrap_mode_t">set_wrap_mode_t</a><tt class="py-op">(</tt><tt class="py-param">self</tt [...]
+</div><div id="TextureObject.set_wrap_mode_t-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="TextureObject.set_wrap_mode_t-expanded"><a name="L459"></a><tt class="py-lineno"> 459</tt>  <tt class="py-line">        <tt class="py-docstring">"""Set to GL_CLAMP, GL_CLAMP_TO_EDGE, GL_REPEAT, or GL_CLAMP_TO_BORDER"""</tt> </tt>
+<a name="L460"></a><tt class="py-lineno"> 460</tt>  <tt class="py-line">        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glBindTexture</tt><tt class="py-op">(</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">target</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">gl_id</tt><tt class="py-op">)</tt> </tt>
+<a name="L461"></a><tt class="py-lineno"> 461</tt>  <tt class="py-line">        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glTexParameteri</tt><tt class="py-op">(</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">target</tt><tt class="py-op">,</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE_WRAP_T</tt><tt class="py-op">,</tt> <tt class="py-name">wrap_mode</tt><tt class="py-op">)</tt> </tt>
+<a name="L462"></a><tt class="py-lineno"> 462</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">wrap_mode_t</tt> <tt class="py-op">=</tt> <tt class="py-name">wrap_mode</tt> </tt>
+</div><a name="L463"></a><tt class="py-lineno"> 463</tt>  <tt class="py-line"> </tt>
+<a name="TextureObject.set_wrap_mode_r"></a><div id="TextureObject.set_wrap_mode_r-def"><a name="L464"></a><tt class="py-lineno"> 464</tt> <a class="py-toggle" href="#" id="TextureObject.set_wrap_mode_r-toggle" onclick="return toggle('TextureObject.set_wrap_mode_r');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.Textures.TextureObject-class.html#set_wrap_mode_r">set_wrap_mode_r</a><tt class="py-op">(</tt><tt class="py-param">self</tt [...]
+</div><div id="TextureObject.set_wrap_mode_r-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="TextureObject.set_wrap_mode_r-expanded"><a name="L465"></a><tt class="py-lineno"> 465</tt>  <tt class="py-line">        <tt class="py-docstring">"""Set to GL_CLAMP, GL_CLAMP_TO_EDGE, GL_REPEAT, or GL_CLAMP_TO_BORDER"""</tt> </tt>
+<a name="L466"></a><tt class="py-lineno"> 466</tt>  <tt class="py-line">        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glBindTexture</tt><tt class="py-op">(</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">target</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">gl_id</tt><tt class="py-op">)</tt> </tt>
+<a name="L467"></a><tt class="py-lineno"> 467</tt>  <tt class="py-line">        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glTexParameteri</tt><tt class="py-op">(</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">target</tt><tt class="py-op">,</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE_WRAP_R</tt><tt class="py-op">,</tt> <tt class="py-name">wrap_mode</tt><tt class="py-op">)</tt> </tt>
+<a name="L468"></a><tt class="py-lineno"> 468</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">wrap_mode_r</tt> <tt class="py-op">=</tt> <tt class="py-name">wrap_mode</tt> </tt>
+</div><a name="L469"></a><tt class="py-lineno"> 469</tt>  <tt class="py-line"> </tt>
+<a name="TextureObject.set_border_color"></a><div id="TextureObject.set_border_color-def"><a name="L470"></a><tt class="py-lineno"> 470</tt> <a class="py-toggle" href="#" id="TextureObject.set_border_color-toggle" onclick="return toggle('TextureObject.set_border_color');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.Textures.TextureObject-class.html#set_border_color">set_border_color</a><tt class="py-op">(</tt><tt class="py-param">se [...]
+</div><div id="TextureObject.set_border_color-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="TextureObject.set_border_color-expanded"><a name="L471"></a><tt class="py-lineno"> 471</tt>  <tt class="py-line">        <tt class="py-docstring">"""Set to a sequence of 4 floats in the range 0.0 to 1.0"""</tt> </tt>
+<a name="L472"></a><tt class="py-lineno"> 472</tt>  <tt class="py-line">        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glBindTexture</tt><tt class="py-op">(</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">target</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">gl_id</tt><tt class="py-op">)</tt> </tt>
+<a name="L473"></a><tt class="py-lineno"> 473</tt>  <tt class="py-line">        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glTexParameteriv</tt><tt class="py-op">(</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">target</tt><tt class="py-op">,</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE_BORDER_COLOR</tt><tt class="py-op">,</tt> <tt class="py-name">border_color</tt><tt class="py-op">)</tt> </tt>
+<a name="L474"></a><tt class="py-lineno"> 474</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">border_color</tt> <tt class="py-op">=</tt> <tt class="py-name">border_color</tt> </tt>
+</div><a name="L475"></a><tt class="py-lineno"> 475</tt>  <tt class="py-line"> </tt>
+<a name="TextureObject.put_new_image"></a><div id="TextureObject.put_new_image-def"><a name="L476"></a><tt class="py-lineno"> 476</tt> <a class="py-toggle" href="#" id="TextureObject.put_new_image-toggle" onclick="return toggle('TextureObject.put_new_image');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.Textures.TextureObject-class.html#put_new_image">put_new_image</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class=" [...]
+<a name="L477"></a><tt class="py-lineno"> 477</tt>  <tt class="py-line">                      <tt class="py-param">texel_data</tt><tt class="py-op">,</tt> </tt>
+<a name="L478"></a><tt class="py-lineno"> 478</tt>  <tt class="py-line">                      <tt class="py-param">mipmap_level</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt><tt class="py-op">,</tt> </tt>
+<a name="L479"></a><tt class="py-lineno"> 479</tt>  <tt class="py-line">                      <tt class="py-param">border</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt><tt class="py-op">,</tt> </tt>
+<a name="L480"></a><tt class="py-lineno"> 480</tt>  <tt class="py-line">                      <tt class="py-param">check_opengl_errors</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt><tt class="py-op">,</tt> </tt>
+<a name="L481"></a><tt class="py-lineno"> 481</tt>  <tt class="py-line">                      <tt class="py-param">internal_format</tt> <tt class="py-op">=</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_RGB</tt><tt class="py-op">,</tt> </tt>
+<a name="L482"></a><tt class="py-lineno"> 482</tt>  <tt class="py-line">                      <tt class="py-param">data_format</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-comment"># automatic guess unless set explicitly</tt> </tt>
+<a name="L483"></a><tt class="py-lineno"> 483</tt>  <tt class="py-line">                      <tt class="py-param">data_type</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-comment"># automatic guess unless set explicitly</tt> </tt>
+<a name="L484"></a><tt class="py-lineno"> 484</tt>  <tt class="py-line">                      <tt class="py-param">cube_side</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
+<a name="L485"></a><tt class="py-lineno"> 485</tt>  <tt class="py-line">                      <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="TextureObject.put_new_image-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="TextureObject.put_new_image-expanded"><a name="L486"></a><tt class="py-lineno"> 486</tt>  <tt class="py-line"> </tt>
+<a name="L487"></a><tt class="py-lineno"> 487</tt>  <tt class="py-line">        <tt class="py-docstring">"""Put numpy array or PIL Image into OpenGL as texture data.</tt> </tt>
+<a name="L488"></a><tt class="py-lineno"> 488</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L489"></a><tt class="py-lineno"> 489</tt>  <tt class="py-line"><tt class="py-docstring">        The texel_data parameter contains the texture data.  If it is</tt> </tt>
+<a name="L490"></a><tt class="py-lineno"> 490</tt>  <tt class="py-line"><tt class="py-docstring">        a numpy array, it must be 1D, 2D, or 3D data in grayscale or</tt> </tt>
+<a name="L491"></a><tt class="py-lineno"> 491</tt>  <tt class="py-line"><tt class="py-docstring">        color (RGB or RGBA).  Remember that OpenGL begins its textures</tt> </tt>
+<a name="L492"></a><tt class="py-lineno"> 492</tt>  <tt class="py-line"><tt class="py-docstring">        from the lower left corner, so texel_data[0,:] = 1.0 would set</tt> </tt>
+<a name="L493"></a><tt class="py-lineno"> 493</tt>  <tt class="py-line"><tt class="py-docstring">        the bottom line of the texture to white, while texel_data[:,0]</tt> </tt>
+<a name="L494"></a><tt class="py-lineno"> 494</tt>  <tt class="py-line"><tt class="py-docstring">        = 1.0 would set the left line of the texture to white.</tt> </tt>
+<a name="L495"></a><tt class="py-lineno"> 495</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L496"></a><tt class="py-lineno"> 496</tt>  <tt class="py-line"><tt class="py-docstring">        The mipmap_level parameter specifies which of the texture</tt> </tt>
+<a name="L497"></a><tt class="py-lineno"> 497</tt>  <tt class="py-line"><tt class="py-docstring">        object's mipmap arrays you are filling.</tt> </tt>
+<a name="L498"></a><tt class="py-lineno"> 498</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L499"></a><tt class="py-lineno"> 499</tt>  <tt class="py-line"><tt class="py-docstring">        The border parameter specifies the width of the border.</tt> </tt>
+<a name="L500"></a><tt class="py-lineno"> 500</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L501"></a><tt class="py-lineno"> 501</tt>  <tt class="py-line"><tt class="py-docstring">        The check_opengl_errors parameter turns on (more</tt> </tt>
+<a name="L502"></a><tt class="py-lineno"> 502</tt>  <tt class="py-line"><tt class="py-docstring">        comprehensible) error messages when something goes wrong.  It</tt> </tt>
+<a name="L503"></a><tt class="py-lineno"> 503</tt>  <tt class="py-line"><tt class="py-docstring">        also slows down performance a little bit.</tt> </tt>
+<a name="L504"></a><tt class="py-lineno"> 504</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L505"></a><tt class="py-lineno"> 505</tt>  <tt class="py-line"><tt class="py-docstring">        The internal_format parameter specifies the format in which</tt> </tt>
+<a name="L506"></a><tt class="py-lineno"> 506</tt>  <tt class="py-line"><tt class="py-docstring">        the image data is stored on the video card.  See the OpenGL</tt> </tt>
+<a name="L507"></a><tt class="py-lineno"> 507</tt>  <tt class="py-line"><tt class="py-docstring">        specification for all possible values.</tt> </tt>
+<a name="L508"></a><tt class="py-lineno"> 508</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L509"></a><tt class="py-lineno"> 509</tt>  <tt class="py-line"><tt class="py-docstring">        If the data_format parameter is None (the default), an attempt</tt> </tt>
+<a name="L510"></a><tt class="py-lineno"> 510</tt>  <tt class="py-line"><tt class="py-docstring">        is made to guess data_format according to the following</tt> </tt>
+<a name="L511"></a><tt class="py-lineno"> 511</tt>  <tt class="py-line"><tt class="py-docstring">        description. For numpy arrays: If texel_data.shape is equal</tt> </tt>
+<a name="L512"></a><tt class="py-lineno"> 512</tt>  <tt class="py-line"><tt class="py-docstring">        to the dimensions of the texture object, texel_data is assumed</tt> </tt>
+<a name="L513"></a><tt class="py-lineno"> 513</tt>  <tt class="py-line"><tt class="py-docstring">        to contain luminance (grayscale) information and data_format</tt> </tt>
+<a name="L514"></a><tt class="py-lineno"> 514</tt>  <tt class="py-line"><tt class="py-docstring">        is set to GL_LUMINANCE.  If texel_data.shape is equal to one</tt> </tt>
+<a name="L515"></a><tt class="py-lineno"> 515</tt>  <tt class="py-line"><tt class="py-docstring">        plus the dimensions of the texture object, texel_data is</tt> </tt>
+<a name="L516"></a><tt class="py-lineno"> 516</tt>  <tt class="py-line"><tt class="py-docstring">        assumed to contain color information.  If texel_data.shape[-1]</tt> </tt>
+<a name="L517"></a><tt class="py-lineno"> 517</tt>  <tt class="py-line"><tt class="py-docstring">        is 3, this is assumed to be RGB data and data_format is set to</tt> </tt>
+<a name="L518"></a><tt class="py-lineno"> 518</tt>  <tt class="py-line"><tt class="py-docstring">        GL_RGB.  If, texel_data.shape[-1] is 4, this is assumed to be</tt> </tt>
+<a name="L519"></a><tt class="py-lineno"> 519</tt>  <tt class="py-line"><tt class="py-docstring">        RGBA data and data_format is set to GL_RGBA. For PIL images:</tt> </tt>
+<a name="L520"></a><tt class="py-lineno"> 520</tt>  <tt class="py-line"><tt class="py-docstring">        the "mode" attribute is queried.</tt> </tt>
+<a name="L521"></a><tt class="py-lineno"> 521</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L522"></a><tt class="py-lineno"> 522</tt>  <tt class="py-line"><tt class="py-docstring">        If the data_type parameter is None (the default), it is set to</tt> </tt>
+<a name="L523"></a><tt class="py-lineno"> 523</tt>  <tt class="py-line"><tt class="py-docstring">        GL_UNSIGNED_BYTE. For numpy arrays: texel_data is (re)cast</tt> </tt>
+<a name="L524"></a><tt class="py-lineno"> 524</tt>  <tt class="py-line"><tt class="py-docstring">        to UInt8 and, if it is a floating point type, values are</tt> </tt>
+<a name="L525"></a><tt class="py-lineno"> 525</tt>  <tt class="py-line"><tt class="py-docstring">        assumed to be in the range 0.0-1.0 and are scaled to the range</tt> </tt>
+<a name="L526"></a><tt class="py-lineno"> 526</tt>  <tt class="py-line"><tt class="py-docstring">        0-255.  If the data_type parameter is not None, the texel_data</tt> </tt>
+<a name="L527"></a><tt class="py-lineno"> 527</tt>  <tt class="py-line"><tt class="py-docstring">        is not rescaled or recast.  Currently only GL_UNSIGNED_BYTE is</tt> </tt>
+<a name="L528"></a><tt class="py-lineno"> 528</tt>  <tt class="py-line"><tt class="py-docstring">        supported. For PIL images: texel_data is used as unsigned</tt> </tt>
+<a name="L529"></a><tt class="py-lineno"> 529</tt>  <tt class="py-line"><tt class="py-docstring">        bytes.  This is the usual format for common computer graphics</tt> </tt>
+<a name="L530"></a><tt class="py-lineno"> 530</tt>  <tt class="py-line"><tt class="py-docstring">        files."""</tt> </tt>
+<a name="L531"></a><tt class="py-lineno"> 531</tt>  <tt class="py-line"> </tt>
+<a name="L532"></a><tt class="py-lineno"> 532</tt>  <tt class="py-line">        <tt class="py-name">texel_data</tt> <tt class="py-op">=</tt> <tt id="link-57" class="py-name"><a title="VisionEgg.Textures.convert_to_numpy_if_array" class="py-name" href="#" onclick="return doclink('link-57', 'convert_to_numpy_if_array', 'link-18');">convert_to_numpy_if_array</a></tt><tt class="py-op">(</tt><tt class="py-name">texel_data</tt><tt class="py-op">)</tt> </tt>
+<a name="L533"></a><tt class="py-lineno"> 533</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">texel_data</tt><tt class="py-op">,</tt><tt class="py-name">numpy</tt><tt class="py-op">.</tt><tt class="py-name">ndarray</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L534"></a><tt class="py-lineno"> 534</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">dimensions</tt> <tt class="py-op">!=</tt> <tt class="py-string">'cube'</tt><tt class="py-op">:</tt> </tt>
+<a name="L535"></a><tt class="py-lineno"> 535</tt>  <tt class="py-line">                <tt class="py-keyword">assert</tt><tt class="py-op">(</tt><tt class="py-name">cube_side</tt> <tt class="py-op">==</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt> </tt>
+<a name="L536"></a><tt class="py-lineno"> 536</tt>  <tt class="py-line">                <tt class="py-name">data_dimensions</tt> <tt class="py-op">=</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">texel_data</tt><tt class="py-op">.</tt><tt class="py-name">shape</tt><tt class="py-op">)</tt> </tt>
+<a name="L537"></a><tt class="py-lineno"> 537</tt>  <tt class="py-line">                <tt class="py-keyword">assert</tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-name">data_dimensions</tt> <tt class="py-op">==</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">dimensions</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-op">(</tt><tt class="py-name">data_dimensions</tt> <tt class="py-op">==</tt> <tt class="py-name"> [...]
+<a name="L538"></a><tt class="py-lineno"> 538</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L539"></a><tt class="py-lineno"> 539</tt>  <tt class="py-line">                <tt class="py-keyword">assert</tt><tt class="py-op">(</tt><tt class="py-name">cube_side</tt> <tt class="py-keyword">in</tt> <tt id="link-58" class="py-name"><a title="VisionEgg.Textures.TextureObject" class="py-name" href="#" onclick="return doclink('link-58', 'TextureObject', 'link-34');">TextureObject</a></tt><tt class="py-op">.</tt><tt id="link-59" class="py-name"><a title="VisionEgg.Textures.Textu [...]
+<a name="L540"></a><tt class="py-lineno"> 540</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">texel_data</tt><tt class="py-op">,</tt><tt class="py-name">Image</tt><tt class="py-op">.</tt><tt class="py-name">Image</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L541"></a><tt class="py-lineno"> 541</tt>  <tt class="py-line">            <tt class="py-keyword">assert</tt><tt class="py-op">(</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">dimensions</tt> <tt class="py-op">==</tt> <tt class="py-number">2</tt> <tt class="py-op">)</tt> </tt>
+<a name="L542"></a><tt class="py-lineno"> 542</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">texel_data</tt><tt class="py-op">,</tt><tt class="py-name">pygame</tt><tt class="py-op">.</tt><tt class="py-name">surface</tt><tt class="py-op">.</tt><tt class="py-name">Surface</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L543"></a><tt class="py-lineno"> 543</tt>  <tt class="py-line">            <tt class="py-keyword">assert</tt><tt class="py-op">(</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">dimensions</tt> <tt class="py-op">==</tt> <tt class="py-number">2</tt> <tt class="py-op">)</tt> </tt>
+<a name="L544"></a><tt class="py-lineno"> 544</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L545"></a><tt class="py-lineno"> 545</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">TypeError</tt><tt class="py-op">(</tt><tt class="py-string">"Expecting numpy array, PIL image, or pygame surface"</tt><tt class="py-op">)</tt> </tt>
+<a name="L546"></a><tt class="py-lineno"> 546</tt>  <tt class="py-line"> </tt>
+<a name="L547"></a><tt class="py-lineno"> 547</tt>  <tt class="py-line">        <tt class="py-comment"># make myself the active texture</tt> </tt>
+<a name="L548"></a><tt class="py-lineno"> 548</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glBindTexture</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">target</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">gl_id</tt><tt class="py-op">)</tt> </tt>
+<a name="L549"></a><tt class="py-lineno"> 549</tt>  <tt class="py-line"> </tt>
+<a name="L550"></a><tt class="py-lineno"> 550</tt>  <tt class="py-line">        <tt class="py-comment"># Determine the data_format, data_type and rescale the data if needed</tt> </tt>
+<a name="L551"></a><tt class="py-lineno"> 551</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">data_format</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> <tt class="py-comment"># guess the format of the data</tt> </tt>
+<a name="L552"></a><tt class="py-lineno"> 552</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">texel_data</tt><tt class="py-op">,</tt><tt class="py-name">numpy</tt><tt class="py-op">.</tt><tt class="py-name">ndarray</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L553"></a><tt class="py-lineno"> 553</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">texel_data</tt><tt class="py-op">.</tt><tt class="py-name">shape</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">dimensions</tt><tt class="py-op">:</tt> </tt>
+<a name="L554"></a><tt class="py-lineno"> 554</tt>  <tt class="py-line">                    <tt class="py-name">data_format</tt> <tt class="py-op">=</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_LUMINANCE</tt> </tt>
+<a name="L555"></a><tt class="py-lineno"> 555</tt>  <tt class="py-line">                <tt class="py-keyword">elif</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">texel_data</tt><tt class="py-op">.</tt><tt class="py-name">shape</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">dimensions</tt><tt class="py-op">+</tt><tt class="py-number">1</tt><tt class="py-o [...]
+<a name="L556"></a><tt class="py-lineno"> 556</tt>  <tt class="py-line">                    <tt class="py-keyword">if</tt> <tt class="py-name">texel_data</tt><tt class="py-op">.</tt><tt class="py-name">shape</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-number">3</tt><tt class="py-op">:</tt> </tt>
+<a name="L557"></a><tt class="py-lineno"> 557</tt>  <tt class="py-line">                        <tt class="py-name">data_format</tt> <tt class="py-op">=</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_RGB</tt> </tt>
+<a name="L558"></a><tt class="py-lineno"> 558</tt>  <tt class="py-line">                    <tt class="py-keyword">elif</tt> <tt class="py-name">texel_data</tt><tt class="py-op">.</tt><tt class="py-name">shape</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-number">4</tt><tt class="py-op">:</tt> </tt>
+<a name="L559"></a><tt class="py-lineno"> 559</tt>  <tt class="py-line">                        <tt class="py-name">data_format</tt> <tt class="py-op">=</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_RGBA</tt> </tt>
+<a name="L560"></a><tt class="py-lineno"> 560</tt>  <tt class="py-line">                    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L561"></a><tt class="py-lineno"> 561</tt>  <tt class="py-line">                        <tt class="py-keyword">raise</tt> <tt class="py-name">RuntimeError</tt><tt class="py-op">(</tt><tt class="py-string">"Couldn't determine a format for your texel_data."</tt><tt class="py-op">)</tt> </tt>
+<a name="L562"></a><tt class="py-lineno"> 562</tt>  <tt class="py-line">                <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L563"></a><tt class="py-lineno"> 563</tt>  <tt class="py-line">                    <tt class="py-keyword">raise</tt> <tt class="py-name">RuntimeError</tt><tt class="py-op">(</tt><tt class="py-string">"Couldn't determine a format for your texel_data."</tt><tt class="py-op">)</tt> </tt>
+<a name="L564"></a><tt class="py-lineno"> 564</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">texel_data</tt><tt class="py-op">,</tt><tt class="py-name">Image</tt><tt class="py-op">.</tt><tt class="py-name">Image</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L565"></a><tt class="py-lineno"> 565</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">texel_data</tt><tt class="py-op">.</tt><tt class="py-name">mode</tt> <tt class="py-op">==</tt> <tt class="py-string">'L'</tt><tt class="py-op">:</tt> </tt>
+<a name="L566"></a><tt class="py-lineno"> 566</tt>  <tt class="py-line">                    <tt class="py-name">data_format</tt> <tt class="py-op">=</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_LUMINANCE</tt> </tt>
+<a name="L567"></a><tt class="py-lineno"> 567</tt>  <tt class="py-line">                <tt class="py-keyword">elif</tt> <tt class="py-name">texel_data</tt><tt class="py-op">.</tt><tt class="py-name">mode</tt> <tt class="py-op">==</tt> <tt class="py-string">'RGB'</tt><tt class="py-op">:</tt> </tt>
+<a name="L568"></a><tt class="py-lineno"> 568</tt>  <tt class="py-line">                    <tt class="py-name">data_format</tt> <tt class="py-op">=</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_RGB</tt> </tt>
+<a name="L569"></a><tt class="py-lineno"> 569</tt>  <tt class="py-line">                <tt class="py-keyword">elif</tt> <tt class="py-name">texel_data</tt><tt class="py-op">.</tt><tt class="py-name">mode</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-string">'RGBA'</tt><tt class="py-op">,</tt><tt class="py-string">'RGBX'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L570"></a><tt class="py-lineno"> 570</tt>  <tt class="py-line">                    <tt class="py-name">data_format</tt> <tt class="py-op">=</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_RGBA</tt> </tt>
+<a name="L571"></a><tt class="py-lineno"> 571</tt>  <tt class="py-line">                <tt class="py-keyword">elif</tt> <tt class="py-name">texel_data</tt><tt class="py-op">.</tt><tt class="py-name">mode</tt> <tt class="py-op">==</tt> <tt class="py-string">'P'</tt><tt class="py-op">:</tt> </tt>
+<a name="L572"></a><tt class="py-lineno"> 572</tt>  <tt class="py-line">                    <tt class="py-keyword">raise</tt> <tt class="py-name">NotImplementedError</tt><tt class="py-op">(</tt><tt class="py-string">"Paletted images are not supported."</tt><tt class="py-op">)</tt> </tt>
+<a name="L573"></a><tt class="py-lineno"> 573</tt>  <tt class="py-line">                <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L574"></a><tt class="py-lineno"> 574</tt>  <tt class="py-line">                    <tt class="py-keyword">raise</tt> <tt class="py-name">RuntimeError</tt><tt class="py-op">(</tt><tt class="py-string">"Couldn't determine format for your texel_data. (PIL mode = '%s')"</tt><tt class="py-op">%</tt><tt class="py-name">texel_data</tt><tt class="py-op">.</tt><tt class="py-name">mode</tt><tt class="py-op">)</tt> </tt>
+<a name="L575"></a><tt class="py-lineno"> 575</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">texel_data</tt><tt class="py-op">,</tt><tt class="py-name">pygame</tt><tt class="py-op">.</tt><tt class="py-name">surface</tt><tt class="py-op">.</tt><tt class="py-name">Surface</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L576"></a><tt class="py-lineno"> 576</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">texel_data</tt><tt class="py-op">.</tt><tt class="py-name">get_alpha</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L577"></a><tt class="py-lineno"> 577</tt>  <tt class="py-line">                    <tt class="py-name">data_format</tt> <tt class="py-op">=</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_RGBA</tt> </tt>
+<a name="L578"></a><tt class="py-lineno"> 578</tt>  <tt class="py-line">                <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L579"></a><tt class="py-lineno"> 579</tt>  <tt class="py-line">                    <tt class="py-name">data_format</tt> <tt class="py-op">=</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_RGB</tt> </tt>
+<a name="L580"></a><tt class="py-lineno"> 580</tt>  <tt class="py-line"> </tt>
+<a name="L581"></a><tt class="py-lineno"> 581</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">data_type</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> <tt class="py-comment"># guess the data type</tt> </tt>
+<a name="L582"></a><tt class="py-lineno"> 582</tt>  <tt class="py-line">            <tt class="py-name">data_type</tt> <tt class="py-op">=</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_UNSIGNED_BYTE</tt> </tt>
+<a name="L583"></a><tt class="py-lineno"> 583</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">texel_data</tt><tt class="py-op">,</tt><tt class="py-name">numpy</tt><tt class="py-op">.</tt><tt class="py-name">ndarray</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L584"></a><tt class="py-lineno"> 584</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">texel_data</tt><tt class="py-op">.</tt><tt class="py-name">dtype</tt> <tt class="py-op">==</tt> <tt class="py-name">numpy</tt><tt class="py-op">.</tt><tt id="link-60" class="py-name"><a title="float" class="py-name" href="#" onclick="return doclink('link-60', 'float', 'link-38');">float</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L585"></a><tt class="py-lineno"> 585</tt>  <tt class="py-line">                    <tt class="py-name">texel_data</tt> <tt class="py-op">=</tt> <tt class="py-name">texel_data</tt><tt class="py-op">*</tt><tt class="py-number">255.0</tt> </tt>
+<a name="L586"></a><tt class="py-lineno"> 586</tt>  <tt class="py-line"> </tt>
+<a name="L587"></a><tt class="py-lineno"> 587</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">data_type</tt> <tt class="py-op">==</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_UNSIGNED_BYTE</tt><tt class="py-op">:</tt> </tt>
+<a name="L588"></a><tt class="py-lineno"> 588</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">texel_data</tt><tt class="py-op">,</tt><tt class="py-name">numpy</tt><tt class="py-op">.</tt><tt class="py-name">ndarray</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L589"></a><tt class="py-lineno"> 589</tt>  <tt class="py-line">                <tt class="py-name">texel_data</tt> <tt class="py-op">=</tt> <tt class="py-name">texel_data</tt><tt class="py-op">.</tt><tt class="py-name">astype</tt><tt class="py-op">(</tt><tt class="py-name">numpy</tt><tt class="py-op">.</tt><tt class="py-name">uint8</tt><tt class="py-op">)</tt> <tt class="py-comment"># (re)cast if necessary</tt> </tt>
+<a name="L590"></a><tt class="py-lineno"> 590</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L591"></a><tt class="py-lineno"> 591</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">NotImplementedError</tt><tt class="py-op">(</tt><tt class="py-string">"Only data_type GL_UNSIGNED_BYTE currently supported"</tt><tt class="py-op">)</tt> </tt>
+<a name="L592"></a><tt class="py-lineno"> 592</tt>  <tt class="py-line"> </tt>
+<a name="L593"></a><tt class="py-lineno"> 593</tt>  <tt class="py-line">        <tt class="py-comment"># determine size and make sure its power of 2</tt> </tt>
+<a name="L594"></a><tt class="py-lineno"> 594</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">dimensions</tt> <tt class="py-op">==</tt> <tt class="py-number">1</tt><tt class="py-op">:</tt> </tt>
+<a name="L595"></a><tt class="py-lineno"> 595</tt>  <tt class="py-line">            <tt class="py-comment"># must be numpy array</tt> </tt>
+<a name="L596"></a><tt class="py-lineno"> 596</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">width</tt> <tt class="py-op">=</tt> <tt class="py-name">texel_data</tt><tt class="py-op">.</tt><tt class="py-name">shape</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt>
+<a name="L597"></a><tt class="py-lineno"> 597</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt id="link-61" class="py-name" targets="Function VisionEgg.Textures.is_power_of_2()=VisionEgg.Textures-module.html#is_power_of_2"><a title="VisionEgg.Textures.is_power_of_2" class="py-name" href="#" onclick="return doclink('link-61', 'is_power_of_2', 'link-61');">is_power_of_2</a></tt><tt class="py-op">(</tt><tt class="py-name">width</tt><tt [...]
+<a name="L598"></a><tt class="py-lineno"> 598</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L599"></a><tt class="py-lineno"> 599</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">texel_data</tt><tt class="py-op">,</tt><tt class="py-name">numpy</tt><tt class="py-op">.</tt><tt class="py-name">ndarray</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L600"></a><tt class="py-lineno"> 600</tt>  <tt class="py-line">                <tt class="py-name">width</tt> <tt class="py-op">=</tt> <tt class="py-name">texel_data</tt><tt class="py-op">.</tt><tt class="py-name">shape</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
+<a name="L601"></a><tt class="py-lineno"> 601</tt>  <tt class="py-line">                <tt class="py-name">height</tt> <tt class="py-op">=</tt> <tt class="py-name">texel_data</tt><tt class="py-op">.</tt><tt class="py-name">shape</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt>
+<a name="L602"></a><tt class="py-lineno"> 602</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">texel_data</tt><tt class="py-op">,</tt><tt class="py-name">Image</tt><tt class="py-op">.</tt><tt class="py-name">Image</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L603"></a><tt class="py-lineno"> 603</tt>  <tt class="py-line">                <tt class="py-name">width</tt><tt class="py-op">,</tt> <tt class="py-name">height</tt> <tt class="py-op">=</tt> <tt class="py-name">texel_data</tt><tt class="py-op">.</tt><tt id="link-62" class="py-name"><a title="VisionEgg.Core.Screen.size" class="py-name" href="#" onclick="return doclink('link-62', 'size', 'link-15');">size</a></tt> </tt>
+<a name="L604"></a><tt class="py-lineno"> 604</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">texel_data</tt><tt class="py-op">,</tt><tt class="py-name">pygame</tt><tt class="py-op">.</tt><tt class="py-name">surface</tt><tt class="py-op">.</tt><tt class="py-name">Surface</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L605"></a><tt class="py-lineno"> 605</tt>  <tt class="py-line">                <tt class="py-name">width</tt><tt class="py-op">,</tt> <tt class="py-name">height</tt> <tt class="py-op">=</tt> <tt class="py-name">texel_data</tt><tt class="py-op">.</tt><tt id="link-63" class="py-name"><a title="VisionEgg.Core.Screen.get_size" class="py-name" href="#" onclick="return doclink('link-63', 'get_size', 'link-22');">get_size</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L606"></a><tt class="py-lineno"> 606</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt id="link-64" class="py-name"><a title="VisionEgg.Textures.is_power_of_2" class="py-name" href="#" onclick="return doclink('link-64', 'is_power_of_2', 'link-61');">is_power_of_2</a></tt><tt class="py-op">(</tt><tt class="py-name">width</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> <tt class="py-keyword">raise</tt> <tt class="py-name" [...]
+<a name="L607"></a><tt class="py-lineno"> 607</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt id="link-65" class="py-name"><a title="VisionEgg.Textures.is_power_of_2" class="py-name" href="#" onclick="return doclink('link-65', 'is_power_of_2', 'link-61');">is_power_of_2</a></tt><tt class="py-op">(</tt><tt class="py-name">height</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> <tt class="py-keyword">raise</tt> <tt class="py-name [...]
+<a name="L608"></a><tt class="py-lineno"> 608</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">dimensions</tt> <tt class="py-op">==</tt> <tt class="py-number">3</tt><tt class="py-op">:</tt> </tt>
+<a name="L609"></a><tt class="py-lineno"> 609</tt>  <tt class="py-line">                <tt class="py-comment"># must be numpy array</tt> </tt>
+<a name="L610"></a><tt class="py-lineno"> 610</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-name">depth</tt> <tt class="py-op">=</tt> <tt class="py-name">texel_data</tt><tt class="py-op">.</tt><tt class="py-name">shape</tt><tt class="py-op">[</tt><tt class="py-number">2</tt><tt class="py-op">]</tt> </tt>
+<a name="L611"></a><tt class="py-lineno"> 611</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt id="link-66" class="py-name"><a title="VisionEgg.Textures.is_power_of_2" class="py-name" href="#" onclick="return doclink('link-66', 'is_power_of_2', 'link-61');">is_power_of_2</a></tt><tt class="py-op">(</tt><tt class="py-name">depth</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> <tt class="py-keyword">raise</tt> <tt class="py-n [...]
+<a name="L612"></a><tt class="py-lineno"> 612</tt>  <tt class="py-line"> </tt>
+<a name="L613"></a><tt class="py-lineno"> 613</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">dimensions</tt> <tt class="py-keyword">in</tt> <tt class="py-op">[</tt><tt class="py-number">2</tt><tt class="py-op">,</tt><tt class="py-string">'cube'</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
+<a name="L614"></a><tt class="py-lineno"> 614</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">texel_data</tt><tt class="py-op">,</tt><tt class="py-name">numpy</tt><tt class="py-op">.</tt><tt class="py-name">ndarray</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L615"></a><tt class="py-lineno"> 615</tt>  <tt class="py-line">                <tt class="py-name">raw_data</tt> <tt class="py-op">=</tt> <tt class="py-name">texel_data</tt><tt class="py-op">.</tt><tt class="py-name">tostring</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L616"></a><tt class="py-lineno"> 616</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">texel_data</tt><tt class="py-op">,</tt><tt class="py-name">Image</tt><tt class="py-op">.</tt><tt class="py-name">Image</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L617"></a><tt class="py-lineno"> 617</tt>  <tt class="py-line">                <tt class="py-name">raw_data</tt> <tt class="py-op">=</tt> <tt class="py-name">texel_data</tt><tt class="py-op">.</tt><tt class="py-name">tostring</tt><tt class="py-op">(</tt><tt class="py-string">'raw'</tt><tt class="py-op">,</tt><tt class="py-name">texel_data</tt><tt class="py-op">.</tt><tt class="py-name">mode</tt><tt class="py-op">,</tt><tt class="py-number">0</tt><tt class="py-op">,</tt><tt class [...]
+<a name="L618"></a><tt class="py-lineno"> 618</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">texel_data</tt><tt class="py-op">,</tt><tt class="py-name">pygame</tt><tt class="py-op">.</tt><tt class="py-name">surface</tt><tt class="py-op">.</tt><tt class="py-name">Surface</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L619"></a><tt class="py-lineno"> 619</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">texel_data</tt><tt class="py-op">.</tt><tt class="py-name">get_alpha</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L620"></a><tt class="py-lineno"> 620</tt>  <tt class="py-line">                    <tt class="py-name">raw_data</tt> <tt class="py-op">=</tt> <tt class="py-name">pygame</tt><tt class="py-op">.</tt><tt class="py-name">image</tt><tt class="py-op">.</tt><tt class="py-name">tostring</tt><tt class="py-op">(</tt><tt class="py-name">texel_data</tt><tt class="py-op">,</tt><tt class="py-string">'RGBA'</tt><tt class="py-op">,</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="L621"></a><tt class="py-lineno"> 621</tt>  <tt class="py-line">                <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L622"></a><tt class="py-lineno"> 622</tt>  <tt class="py-line">                    <tt class="py-name">raw_data</tt> <tt class="py-op">=</tt> <tt class="py-name">pygame</tt><tt class="py-op">.</tt><tt class="py-name">image</tt><tt class="py-op">.</tt><tt class="py-name">tostring</tt><tt class="py-op">(</tt><tt class="py-name">texel_data</tt><tt class="py-op">,</tt><tt class="py-string">'RGB'</tt><tt class="py-op">,</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="L623"></a><tt class="py-lineno"> 623</tt>  <tt class="py-line"> </tt>
+<a name="L624"></a><tt class="py-lineno"> 624</tt>  <tt class="py-line">        <tt class="py-comment"># check for OpenGL errors</tt> </tt>
+<a name="L625"></a><tt class="py-lineno"> 625</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">check_opengl_errors</tt><tt class="py-op">:</tt> </tt>
+<a name="L626"></a><tt class="py-lineno"> 626</tt>  <tt class="py-line">            <tt class="py-name">max_dim</tt> <tt class="py-op">=</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glGetIntegerv</tt><tt class="py-op">(</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_MAX_TEXTURE_SIZE</tt> <tt class="py-op">)</tt> </tt>
+<a name="L627"></a><tt class="py-lineno"> 627</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">width</tt> <tt class="py-op">></tt> <tt class="py-name">max_dim</tt><tt class="py-op">:</tt> </tt>
+<a name="L628"></a><tt class="py-lineno"> 628</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> <tt id="link-67" class="py-name" targets="Class VisionEgg.Textures.TextureTooLargeError=VisionEgg.Textures.TextureTooLargeError-class.html"><a title="VisionEgg.Textures.TextureTooLargeError" class="py-name" href="#" onclick="return doclink('link-67', 'TextureTooLargeError', 'link-67');">TextureTooLargeError</a></tt><tt class="py-op">(</tt><tt class="py-string">"texel_ [...]
+<a name="L629"></a><tt class="py-lineno"> 629</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">dimensions</tt> <tt class="py-op">==</tt> <tt class="py-number">1</tt><tt class="py-op">:</tt> </tt>
+<a name="L630"></a><tt class="py-lineno"> 630</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glTexImage1Dub</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_PROXY_TEXTURE_1D</tt><tt class="py-op">,</tt> </tt>
+<a name="L631"></a><tt class="py-lineno"> 631</tt>  <tt class="py-line">                                <tt class="py-name">mipmap_level</tt><tt class="py-op">,</tt> </tt>
+<a name="L632"></a><tt class="py-lineno"> 632</tt>  <tt class="py-line">                                <tt class="py-name">internal_format</tt><tt class="py-op">,</tt> </tt>
+<a name="L633"></a><tt class="py-lineno"> 633</tt>  <tt class="py-line">                                <tt class="py-name">border</tt><tt class="py-op">,</tt> </tt>
+<a name="L634"></a><tt class="py-lineno"> 634</tt>  <tt class="py-line">                                <tt class="py-name">data_format</tt><tt class="py-op">,</tt> </tt>
+<a name="L635"></a><tt class="py-lineno"> 635</tt>  <tt class="py-line">                                <tt class="py-name">texel_data</tt><tt class="py-op">)</tt> </tt>
+<a name="L636"></a><tt class="py-lineno"> 636</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glGetTexLevelParameteriv</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_PROXY_TEXTURE_1D</tt><tt class="py-op">,</tt><tt class="py-name">mipmap_level</tt><tt class="py-op">,</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name [...]
+<a name="L637"></a><tt class="py-lineno"> 637</tt>  <tt class="py-line">                    <tt class="py-keyword">raise</tt> <tt id="link-68" class="py-name"><a title="VisionEgg.Textures.TextureTooLargeError" class="py-name" href="#" onclick="return doclink('link-68', 'TextureTooLargeError', 'link-67');">TextureTooLargeError</a></tt><tt class="py-op">(</tt><tt class="py-string">"texel_data is too wide for your video system."</tt><tt class="py-op">)</tt> </tt>
+<a name="L638"></a><tt class="py-lineno"> 638</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">dimensions</tt> <tt class="py-keyword">in</tt> <tt class="py-op">[</tt><tt class="py-number">2</tt><tt class="py-op">,</tt><tt class="py-string">'cube'</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
+<a name="L639"></a><tt class="py-lineno"> 639</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">height</tt> <tt class="py-op">></tt> <tt class="py-name">max_dim</tt><tt class="py-op">:</tt> </tt>
+<a name="L640"></a><tt class="py-lineno"> 640</tt>  <tt class="py-line">                    <tt class="py-keyword">raise</tt> <tt id="link-69" class="py-name"><a title="VisionEgg.Textures.TextureTooLargeError" class="py-name" href="#" onclick="return doclink('link-69', 'TextureTooLargeError', 'link-67');">TextureTooLargeError</a></tt><tt class="py-op">(</tt><tt class="py-string">"texel_data is too tall for your video system."</tt><tt class="py-op">)</tt> </tt>
+<a name="L641"></a><tt class="py-lineno"> 641</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">dimensions</tt> <tt class="py-op">==</tt> <tt class="py-number">2</tt><tt class="py-op">:</tt> </tt>
+<a name="L642"></a><tt class="py-lineno"> 642</tt>  <tt class="py-line">                    <tt class="py-name">target</tt> <tt class="py-op">=</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_PROXY_TEXTURE_2D</tt> </tt>
+<a name="L643"></a><tt class="py-lineno"> 643</tt>  <tt class="py-line">                <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L644"></a><tt class="py-lineno"> 644</tt>  <tt class="py-line">                    <tt class="py-name">target</tt> <tt class="py-op">=</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_PROXY_CUBE_MAP</tt> </tt>
+<a name="L645"></a><tt class="py-lineno"> 645</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glTexImage2D</tt><tt class="py-op">(</tt><tt class="py-name">target</tt><tt class="py-op">,</tt> </tt>
+<a name="L646"></a><tt class="py-lineno"> 646</tt>  <tt class="py-line">                                <tt class="py-name">mipmap_level</tt><tt class="py-op">,</tt> </tt>
+<a name="L647"></a><tt class="py-lineno"> 647</tt>  <tt class="py-line">                                <tt class="py-name">internal_format</tt><tt class="py-op">,</tt> </tt>
+<a name="L648"></a><tt class="py-lineno"> 648</tt>  <tt class="py-line">                                <tt class="py-name">width</tt><tt class="py-op">,</tt> </tt>
+<a name="L649"></a><tt class="py-lineno"> 649</tt>  <tt class="py-line">                                <tt class="py-name">height</tt><tt class="py-op">,</tt> </tt>
+<a name="L650"></a><tt class="py-lineno"> 650</tt>  <tt class="py-line">                                <tt class="py-name">border</tt><tt class="py-op">,</tt> </tt>
+<a name="L651"></a><tt class="py-lineno"> 651</tt>  <tt class="py-line">                                <tt class="py-name">data_format</tt><tt class="py-op">,</tt> </tt>
+<a name="L652"></a><tt class="py-lineno"> 652</tt>  <tt class="py-line">                                <tt class="py-name">data_type</tt><tt class="py-op">,</tt> </tt>
+<a name="L653"></a><tt class="py-lineno"> 653</tt>  <tt class="py-line">                                <tt class="py-name">raw_data</tt><tt class="py-op">)</tt> </tt>
+<a name="L654"></a><tt class="py-lineno"> 654</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glGetTexLevelParameteriv</tt><tt class="py-op">(</tt><tt class="py-name">target</tt><tt class="py-op">,</tt> <tt class="py-comment"># Need PyOpenGL >= 2.0</tt> </tt>
+<a name="L655"></a><tt class="py-lineno"> 655</tt>  <tt class="py-line">                                               <tt class="py-name">mipmap_level</tt><tt class="py-op">,</tt> </tt>
+<a name="L656"></a><tt class="py-lineno"> 656</tt>  <tt class="py-line">                                               <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE_WIDTH</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt>
+<a name="L657"></a><tt class="py-lineno"> 657</tt>  <tt class="py-line">                    <tt class="py-keyword">raise</tt> <tt id="link-70" class="py-name"><a title="VisionEgg.Textures.TextureTooLargeError" class="py-name" href="#" onclick="return doclink('link-70', 'TextureTooLargeError', 'link-67');">TextureTooLargeError</a></tt><tt class="py-op">(</tt><tt class="py-string">"texel_data is too wide for your video system."</tt><tt class="py-op">)</tt> </tt>
+<a name="L658"></a><tt class="py-lineno"> 658</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glGetTexLevelParameteriv</tt><tt class="py-op">(</tt><tt class="py-name">target</tt><tt class="py-op">,</tt><tt class="py-name">mipmap_level</tt><tt class="py-op">,</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE_HEIGHT</tt><tt class="py-op">)</tt> <tt class="py-o [...]
+<a name="L659"></a><tt class="py-lineno"> 659</tt>  <tt class="py-line">                    <tt class="py-keyword">raise</tt> <tt id="link-71" class="py-name"><a title="VisionEgg.Textures.TextureTooLargeError" class="py-name" href="#" onclick="return doclink('link-71', 'TextureTooLargeError', 'link-67');">TextureTooLargeError</a></tt><tt class="py-op">(</tt><tt class="py-string">"texel_data is too tall for your video system."</tt><tt class="py-op">)</tt> </tt>
+<a name="L660"></a><tt class="py-lineno"> 660</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">dimensions</tt> <tt class="py-op">==</tt> <tt class="py-number">3</tt><tt class="py-op">:</tt> </tt>
+<a name="L661"></a><tt class="py-lineno"> 661</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">max</tt><tt class="py-op">(</tt><tt class="py-name">height</tt><tt class="py-op">,</tt><tt class="py-name">depth</tt><tt class="py-op">)</tt> <tt class="py-op">></tt> <tt class="py-name">max_dim</tt><tt class="py-op">:</tt> </tt>
+<a name="L662"></a><tt class="py-lineno"> 662</tt>  <tt class="py-line">                    <tt class="py-keyword">raise</tt> <tt id="link-72" class="py-name"><a title="VisionEgg.Textures.TextureTooLargeError" class="py-name" href="#" onclick="return doclink('link-72', 'TextureTooLargeError', 'link-67');">TextureTooLargeError</a></tt><tt class="py-op">(</tt><tt class="py-string">"texel_data is too large for your video system."</tt><tt class="py-op">)</tt> </tt>
+<a name="L663"></a><tt class="py-lineno"> 663</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glTexImage3Dub</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_PROXY_TEXTURE_3D</tt><tt class="py-op">,</tt> </tt>
+<a name="L664"></a><tt class="py-lineno"> 664</tt>  <tt class="py-line">                                  <tt class="py-name">mipmap_level</tt><tt class="py-op">,</tt> </tt>
+<a name="L665"></a><tt class="py-lineno"> 665</tt>  <tt class="py-line">                                  <tt class="py-name">internal_format</tt><tt class="py-op">,</tt> </tt>
+<a name="L666"></a><tt class="py-lineno"> 666</tt>  <tt class="py-line">                                  <tt class="py-name">border</tt><tt class="py-op">,</tt> </tt>
+<a name="L667"></a><tt class="py-lineno"> 667</tt>  <tt class="py-line">                                  <tt class="py-name">data_format</tt><tt class="py-op">,</tt> </tt>
+<a name="L668"></a><tt class="py-lineno"> 668</tt>  <tt class="py-line">                                  <tt class="py-name">texel_data</tt><tt class="py-op">)</tt> </tt>
+<a name="L669"></a><tt class="py-lineno"> 669</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glGetTexLevelParameteriv</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_PROXY_TEXTURE_3D</tt><tt class="py-op">,</tt><tt class="py-name">mipmap_level</tt><tt class="py-op">,</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name [...]
+<a name="L670"></a><tt class="py-lineno"> 670</tt>  <tt class="py-line">                    <tt class="py-keyword">raise</tt> <tt id="link-73" class="py-name"><a title="VisionEgg.Textures.TextureTooLargeError" class="py-name" href="#" onclick="return doclink('link-73', 'TextureTooLargeError', 'link-67');">TextureTooLargeError</a></tt><tt class="py-op">(</tt><tt class="py-string">"texel_data is too wide for your video system."</tt><tt class="py-op">)</tt> </tt>
+<a name="L671"></a><tt class="py-lineno"> 671</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glGetTexLevelParameteriv</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_PROXY_TEXTURE_3D</tt><tt class="py-op">,</tt><tt class="py-name">mipmap_level</tt><tt class="py-op">,</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name [...]
+<a name="L672"></a><tt class="py-lineno"> 672</tt>  <tt class="py-line">                    <tt class="py-keyword">raise</tt> <tt id="link-74" class="py-name"><a title="VisionEgg.Textures.TextureTooLargeError" class="py-name" href="#" onclick="return doclink('link-74', 'TextureTooLargeError', 'link-67');">TextureTooLargeError</a></tt><tt class="py-op">(</tt><tt class="py-string">"texel_data is too tall for your video system."</tt><tt class="py-op">)</tt> </tt>
+<a name="L673"></a><tt class="py-lineno"> 673</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glGetTexLevelParameteriv</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_PROXY_TEXTURE_3D</tt><tt class="py-op">,</tt><tt class="py-name">mipmap_level</tt><tt class="py-op">,</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name [...]
+<a name="L674"></a><tt class="py-lineno"> 674</tt>  <tt class="py-line">                    <tt class="py-keyword">raise</tt> <tt id="link-75" class="py-name"><a title="VisionEgg.Textures.TextureTooLargeError" class="py-name" href="#" onclick="return doclink('link-75', 'TextureTooLargeError', 'link-67');">TextureTooLargeError</a></tt><tt class="py-op">(</tt><tt class="py-string">"texel_data is too deep for your video system."</tt><tt class="py-op">)</tt> </tt>
+<a name="L675"></a><tt class="py-lineno"> 675</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L676"></a><tt class="py-lineno"> 676</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> <tt class="py-name">RuntimeError</tt><tt class="py-op">(</tt><tt class="py-string">"Unknown number of dimensions."</tt><tt class="py-op">)</tt> </tt>
+<a name="L677"></a><tt class="py-lineno"> 677</tt>  <tt class="py-line"> </tt>
+<a name="L678"></a><tt class="py-lineno"> 678</tt>  <tt class="py-line">        <tt class="py-comment"># No OpenGL error, put the texture in!</tt> </tt>
+<a name="L679"></a><tt class="py-lineno"> 679</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">dimensions</tt> <tt class="py-op">==</tt> <tt class="py-number">1</tt><tt class="py-op">:</tt> </tt>
+<a name="L680"></a><tt class="py-lineno"> 680</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glTexImage1Dub</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE_1D</tt><tt class="py-op">,</tt> </tt>
+<a name="L681"></a><tt class="py-lineno"> 681</tt>  <tt class="py-line">                              <tt class="py-name">mipmap_level</tt><tt class="py-op">,</tt> </tt>
+<a name="L682"></a><tt class="py-lineno"> 682</tt>  <tt class="py-line">                              <tt class="py-name">internal_format</tt><tt class="py-op">,</tt> </tt>
+<a name="L683"></a><tt class="py-lineno"> 683</tt>  <tt class="py-line">                              <tt class="py-name">border</tt><tt class="py-op">,</tt> </tt>
+<a name="L684"></a><tt class="py-lineno"> 684</tt>  <tt class="py-line">                              <tt class="py-name">data_format</tt><tt class="py-op">,</tt> </tt>
+<a name="L685"></a><tt class="py-lineno"> 685</tt>  <tt class="py-line">                              <tt class="py-name">texel_data</tt><tt class="py-op">)</tt> </tt>
+<a name="L686"></a><tt class="py-lineno"> 686</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">dimensions</tt> <tt class="py-keyword">in</tt> <tt class="py-op">[</tt><tt class="py-number">2</tt><tt class="py-op">,</tt><tt class="py-string">'cube'</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
+<a name="L687"></a><tt class="py-lineno"> 687</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">dimensions</tt> <tt class="py-op">==</tt> <tt class="py-number">2</tt><tt class="py-op">:</tt> </tt>
+<a name="L688"></a><tt class="py-lineno"> 688</tt>  <tt class="py-line">                <tt class="py-name">target</tt> <tt class="py-op">=</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE_2D</tt> </tt>
+<a name="L689"></a><tt class="py-lineno"> 689</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L690"></a><tt class="py-lineno"> 690</tt>  <tt class="py-line">                <tt class="py-name">target_name</tt> <tt class="py-op">=</tt> <tt class="py-string">'GL_CUBE_MAP_'</tt><tt class="py-op">+</tt><tt class="py-name">cube_side</tt><tt class="py-op">.</tt><tt class="py-name">upper</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L691"></a><tt class="py-lineno"> 691</tt>  <tt class="py-line">                <tt class="py-name">target</tt> <tt class="py-op">=</tt> <tt class="py-name">getattr</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">,</tt><tt class="py-name">target_name</tt><tt class="py-op">)</tt> </tt>
+<a name="L692"></a><tt class="py-lineno"> 692</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glTexImage2D</tt><tt class="py-op">(</tt><tt class="py-name">target</tt><tt class="py-op">,</tt> </tt>
+<a name="L693"></a><tt class="py-lineno"> 693</tt>  <tt class="py-line">                            <tt class="py-name">mipmap_level</tt><tt class="py-op">,</tt> </tt>
+<a name="L694"></a><tt class="py-lineno"> 694</tt>  <tt class="py-line">                            <tt class="py-name">internal_format</tt><tt class="py-op">,</tt> </tt>
+<a name="L695"></a><tt class="py-lineno"> 695</tt>  <tt class="py-line">                            <tt class="py-name">width</tt><tt class="py-op">,</tt> </tt>
+<a name="L696"></a><tt class="py-lineno"> 696</tt>  <tt class="py-line">                            <tt class="py-name">height</tt><tt class="py-op">,</tt> </tt>
+<a name="L697"></a><tt class="py-lineno"> 697</tt>  <tt class="py-line">                            <tt class="py-name">border</tt><tt class="py-op">,</tt> </tt>
+<a name="L698"></a><tt class="py-lineno"> 698</tt>  <tt class="py-line">                            <tt class="py-name">data_format</tt><tt class="py-op">,</tt> </tt>
+<a name="L699"></a><tt class="py-lineno"> 699</tt>  <tt class="py-line">                            <tt class="py-name">data_type</tt><tt class="py-op">,</tt> </tt>
+<a name="L700"></a><tt class="py-lineno"> 700</tt>  <tt class="py-line">                            <tt class="py-name">raw_data</tt><tt class="py-op">)</tt> </tt>
+<a name="L701"></a><tt class="py-lineno"> 701</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">dimensions</tt> <tt class="py-op">==</tt> <tt class="py-number">3</tt><tt class="py-op">:</tt> </tt>
+<a name="L702"></a><tt class="py-lineno"> 702</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glTexImage3Dub</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE_3D</tt><tt class="py-op">,</tt> </tt>
+<a name="L703"></a><tt class="py-lineno"> 703</tt>  <tt class="py-line">                              <tt class="py-name">mipmap_level</tt><tt class="py-op">,</tt> </tt>
+<a name="L704"></a><tt class="py-lineno"> 704</tt>  <tt class="py-line">                              <tt class="py-name">internal_format</tt><tt class="py-op">,</tt> </tt>
+<a name="L705"></a><tt class="py-lineno"> 705</tt>  <tt class="py-line">                              <tt class="py-name">border</tt><tt class="py-op">,</tt> </tt>
+<a name="L706"></a><tt class="py-lineno"> 706</tt>  <tt class="py-line">                              <tt class="py-name">data_format</tt><tt class="py-op">,</tt> </tt>
+<a name="L707"></a><tt class="py-lineno"> 707</tt>  <tt class="py-line">                              <tt class="py-name">texel_data</tt><tt class="py-op">)</tt> </tt>
+<a name="L708"></a><tt class="py-lineno"> 708</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L709"></a><tt class="py-lineno"> 709</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">RuntimeError</tt><tt class="py-op">(</tt><tt class="py-string">"Unknown number of dimensions."</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L710"></a><tt class="py-lineno"> 710</tt>  <tt class="py-line"> </tt>
+<a name="TextureObject.put_new_image_build_mipmaps"></a><div id="TextureObject.put_new_image_build_mipmaps-def"><a name="L711"></a><tt class="py-lineno"> 711</tt> <a class="py-toggle" href="#" id="TextureObject.put_new_image_build_mipmaps-toggle" onclick="return toggle('TextureObject.put_new_image_build_mipmaps');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.Textures.TextureObject-class.html#put_new_image_build_mipmaps">put_new_imag [...]
+<a name="L712"></a><tt class="py-lineno"> 712</tt>  <tt class="py-line">                                    <tt class="py-param">texel_data</tt><tt class="py-op">,</tt> </tt>
+<a name="L713"></a><tt class="py-lineno"> 713</tt>  <tt class="py-line">                                    <tt class="py-param">internal_format</tt> <tt class="py-op">=</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_RGB</tt><tt class="py-op">,</tt> </tt>
+<a name="L714"></a><tt class="py-lineno"> 714</tt>  <tt class="py-line">                                    <tt class="py-param">data_format</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-comment"># automatic guess unless set explicitly</tt> </tt>
+<a name="L715"></a><tt class="py-lineno"> 715</tt>  <tt class="py-line">                                    <tt class="py-param">data_type</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt><tt class="py-op">,</tt>   <tt class="py-comment"># automatic guess unless set explicitly</tt> </tt>
+<a name="L716"></a><tt class="py-lineno"> 716</tt>  <tt class="py-line">                                    <tt class="py-param">cube_side</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
+<a name="L717"></a><tt class="py-lineno"> 717</tt>  <tt class="py-line">                                    <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="TextureObject.put_new_image_build_mipmaps-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="TextureObject.put_new_image_build_mipmaps-expanded"><a name="L718"></a><tt class="py-lineno"> 718</tt>  <tt class="py-line"> </tt>
+<a name="L719"></a><tt class="py-lineno"> 719</tt>  <tt class="py-line">        <tt class="py-docstring">"""Similar to put_new_image(), but builds mipmaps."""</tt> </tt>
+<a name="L720"></a><tt class="py-lineno"> 720</tt>  <tt class="py-line"> </tt>
+<a name="L721"></a><tt class="py-lineno"> 721</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">dimensions</tt> <tt class="py-op">!=</tt> <tt class="py-number">2</tt><tt class="py-op">:</tt> </tt>
+<a name="L722"></a><tt class="py-lineno"> 722</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">"can only handle 2D texel data for automatic mipmap building"</tt><tt class="py-op">)</tt> </tt>
+<a name="L723"></a><tt class="py-lineno"> 723</tt>  <tt class="py-line">        <tt class="py-name">texel_data</tt> <tt class="py-op">=</tt> <tt id="link-76" class="py-name"><a title="VisionEgg.Textures.convert_to_numpy_if_array" class="py-name" href="#" onclick="return doclink('link-76', 'convert_to_numpy_if_array', 'link-18');">convert_to_numpy_if_array</a></tt><tt class="py-op">(</tt><tt class="py-name">texel_data</tt><tt class="py-op">)</tt> </tt>
+<a name="L724"></a><tt class="py-lineno"> 724</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">texel_data</tt><tt class="py-op">,</tt><tt class="py-name">numpy</tt><tt class="py-op">.</tt><tt class="py-name">ndarray</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L725"></a><tt class="py-lineno"> 725</tt>  <tt class="py-line">            <tt class="py-keyword">assert</tt><tt class="py-op">(</tt><tt class="py-name">cube_side</tt> <tt class="py-op">==</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt> </tt>
+<a name="L726"></a><tt class="py-lineno"> 726</tt>  <tt class="py-line">            <tt class="py-name">data_dimensions</tt> <tt class="py-op">=</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">texel_data</tt><tt class="py-op">.</tt><tt class="py-name">shape</tt><tt class="py-op">)</tt> </tt>
+<a name="L727"></a><tt class="py-lineno"> 727</tt>  <tt class="py-line">            <tt class="py-keyword">assert</tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-name">data_dimensions</tt> <tt class="py-op">==</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">dimensions</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-op">(</tt><tt class="py-name">data_dimensions</tt> <tt class="py-op">==</tt> <tt class="py-name">self [...]
+<a name="L728"></a><tt class="py-lineno"> 728</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">texel_data</tt><tt class="py-op">,</tt><tt class="py-name">Image</tt><tt class="py-op">.</tt><tt class="py-name">Image</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L729"></a><tt class="py-lineno"> 729</tt>  <tt class="py-line">            <tt class="py-keyword">assert</tt><tt class="py-op">(</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">dimensions</tt> <tt class="py-op">==</tt> <tt class="py-number">2</tt> <tt class="py-op">)</tt> </tt>
+<a name="L730"></a><tt class="py-lineno"> 730</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">texel_data</tt><tt class="py-op">,</tt><tt class="py-name">pygame</tt><tt class="py-op">.</tt><tt class="py-name">surface</tt><tt class="py-op">.</tt><tt class="py-name">Surface</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L731"></a><tt class="py-lineno"> 731</tt>  <tt class="py-line">            <tt class="py-keyword">assert</tt><tt class="py-op">(</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">dimensions</tt> <tt class="py-op">==</tt> <tt class="py-number">2</tt> <tt class="py-op">)</tt> </tt>
+<a name="L732"></a><tt class="py-lineno"> 732</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L733"></a><tt class="py-lineno"> 733</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">TypeError</tt><tt class="py-op">(</tt><tt class="py-string">"Expecting numpy array, PIL image, or pygame surface"</tt><tt class="py-op">)</tt> </tt>
+<a name="L734"></a><tt class="py-lineno"> 734</tt>  <tt class="py-line"> </tt>
+<a name="L735"></a><tt class="py-lineno"> 735</tt>  <tt class="py-line">        <tt class="py-comment"># make myself the active texture</tt> </tt>
+<a name="L736"></a><tt class="py-lineno"> 736</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glBindTexture</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">target</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">gl_id</tt><tt class="py-op">)</tt> </tt>
+<a name="L737"></a><tt class="py-lineno"> 737</tt>  <tt class="py-line"> </tt>
+<a name="L738"></a><tt class="py-lineno"> 738</tt>  <tt class="py-line">        <tt class="py-comment"># Determine the data_format, data_type and rescale the data if needed</tt> </tt>
+<a name="L739"></a><tt class="py-lineno"> 739</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">data_format</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> <tt class="py-comment"># guess the format of the data</tt> </tt>
+<a name="L740"></a><tt class="py-lineno"> 740</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">texel_data</tt><tt class="py-op">,</tt><tt class="py-name">numpy</tt><tt class="py-op">.</tt><tt class="py-name">ndarray</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L741"></a><tt class="py-lineno"> 741</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">texel_data</tt><tt class="py-op">.</tt><tt class="py-name">shape</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">dimensions</tt><tt class="py-op">:</tt> </tt>
+<a name="L742"></a><tt class="py-lineno"> 742</tt>  <tt class="py-line">                    <tt class="py-name">data_format</tt> <tt class="py-op">=</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_LUMINANCE</tt> </tt>
+<a name="L743"></a><tt class="py-lineno"> 743</tt>  <tt class="py-line">                <tt class="py-keyword">elif</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">texel_data</tt><tt class="py-op">.</tt><tt class="py-name">shape</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">dimensions</tt><tt class="py-op">+</tt><tt class="py-number">1</tt><tt class="py-o [...]
+<a name="L744"></a><tt class="py-lineno"> 744</tt>  <tt class="py-line">                    <tt class="py-keyword">if</tt> <tt class="py-name">texel_data</tt><tt class="py-op">.</tt><tt class="py-name">shape</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-number">3</tt><tt class="py-op">:</tt> </tt>
+<a name="L745"></a><tt class="py-lineno"> 745</tt>  <tt class="py-line">                        <tt class="py-name">data_format</tt> <tt class="py-op">=</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_RGB</tt> </tt>
+<a name="L746"></a><tt class="py-lineno"> 746</tt>  <tt class="py-line">                    <tt class="py-keyword">elif</tt> <tt class="py-name">texel_data</tt><tt class="py-op">.</tt><tt class="py-name">shape</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-number">4</tt><tt class="py-op">:</tt> </tt>
+<a name="L747"></a><tt class="py-lineno"> 747</tt>  <tt class="py-line">                        <tt class="py-name">data_format</tt> <tt class="py-op">=</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_RGBA</tt> </tt>
+<a name="L748"></a><tt class="py-lineno"> 748</tt>  <tt class="py-line">                    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L749"></a><tt class="py-lineno"> 749</tt>  <tt class="py-line">                        <tt class="py-keyword">raise</tt> <tt class="py-name">RuntimeError</tt><tt class="py-op">(</tt><tt class="py-string">"Couldn't determine a format for your texel_data."</tt><tt class="py-op">)</tt> </tt>
+<a name="L750"></a><tt class="py-lineno"> 750</tt>  <tt class="py-line">                <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L751"></a><tt class="py-lineno"> 751</tt>  <tt class="py-line">                    <tt class="py-keyword">raise</tt> <tt class="py-name">RuntimeError</tt><tt class="py-op">(</tt><tt class="py-string">"Couldn't determine a format for your texel_data."</tt><tt class="py-op">)</tt> </tt>
+<a name="L752"></a><tt class="py-lineno"> 752</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">texel_data</tt><tt class="py-op">,</tt><tt class="py-name">Image</tt><tt class="py-op">.</tt><tt class="py-name">Image</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L753"></a><tt class="py-lineno"> 753</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">texel_data</tt><tt class="py-op">.</tt><tt class="py-name">mode</tt> <tt class="py-op">==</tt> <tt class="py-string">'L'</tt><tt class="py-op">:</tt> </tt>
+<a name="L754"></a><tt class="py-lineno"> 754</tt>  <tt class="py-line">                    <tt class="py-name">data_format</tt> <tt class="py-op">=</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_LUMINANCE</tt> </tt>
+<a name="L755"></a><tt class="py-lineno"> 755</tt>  <tt class="py-line">                <tt class="py-keyword">elif</tt> <tt class="py-name">texel_data</tt><tt class="py-op">.</tt><tt class="py-name">mode</tt> <tt class="py-op">==</tt> <tt class="py-string">'RGB'</tt><tt class="py-op">:</tt> </tt>
+<a name="L756"></a><tt class="py-lineno"> 756</tt>  <tt class="py-line">                    <tt class="py-name">data_format</tt> <tt class="py-op">=</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_RGB</tt> </tt>
+<a name="L757"></a><tt class="py-lineno"> 757</tt>  <tt class="py-line">                <tt class="py-keyword">elif</tt> <tt class="py-name">texel_data</tt><tt class="py-op">.</tt><tt class="py-name">mode</tt> <tt class="py-keyword">in</tt> <tt class="py-op">[</tt><tt class="py-string">'RGBA'</tt><tt class="py-op">,</tt><tt class="py-string">'RGBX'</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
+<a name="L758"></a><tt class="py-lineno"> 758</tt>  <tt class="py-line">                    <tt class="py-name">data_format</tt> <tt class="py-op">=</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_RGBA</tt> </tt>
+<a name="L759"></a><tt class="py-lineno"> 759</tt>  <tt class="py-line">                <tt class="py-keyword">elif</tt> <tt class="py-name">texel_data</tt><tt class="py-op">.</tt><tt class="py-name">mode</tt> <tt class="py-op">==</tt> <tt class="py-string">'P'</tt><tt class="py-op">:</tt> </tt>
+<a name="L760"></a><tt class="py-lineno"> 760</tt>  <tt class="py-line">                    <tt class="py-keyword">raise</tt> <tt class="py-name">NotImplementedError</tt><tt class="py-op">(</tt><tt class="py-string">"Paletted images are not supported."</tt><tt class="py-op">)</tt> </tt>
+<a name="L761"></a><tt class="py-lineno"> 761</tt>  <tt class="py-line">                <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L762"></a><tt class="py-lineno"> 762</tt>  <tt class="py-line">                    <tt class="py-keyword">raise</tt> <tt class="py-name">RuntimeError</tt><tt class="py-op">(</tt><tt class="py-string">"Couldn't determine format for your texel_data. (PIL mode = '%s')"</tt><tt class="py-op">%</tt><tt class="py-name">texel_data</tt><tt class="py-op">.</tt><tt class="py-name">mode</tt><tt class="py-op">)</tt> </tt>
+<a name="L763"></a><tt class="py-lineno"> 763</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">texel_data</tt><tt class="py-op">,</tt><tt class="py-name">pygame</tt><tt class="py-op">.</tt><tt class="py-name">surface</tt><tt class="py-op">.</tt><tt class="py-name">Surface</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L764"></a><tt class="py-lineno"> 764</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">texel_data</tt><tt class="py-op">.</tt><tt class="py-name">get_alpha</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L765"></a><tt class="py-lineno"> 765</tt>  <tt class="py-line">                    <tt class="py-name">data_format</tt> <tt class="py-op">=</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_RGBA</tt> </tt>
+<a name="L766"></a><tt class="py-lineno"> 766</tt>  <tt class="py-line">                <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L767"></a><tt class="py-lineno"> 767</tt>  <tt class="py-line">                    <tt class="py-name">data_format</tt> <tt class="py-op">=</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_RGB</tt> </tt>
+<a name="L768"></a><tt class="py-lineno"> 768</tt>  <tt class="py-line"> </tt>
+<a name="L769"></a><tt class="py-lineno"> 769</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">data_type</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> <tt class="py-comment"># guess the data type</tt> </tt>
+<a name="L770"></a><tt class="py-lineno"> 770</tt>  <tt class="py-line">            <tt class="py-name">data_type</tt> <tt class="py-op">=</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_UNSIGNED_BYTE</tt> </tt>
+<a name="L771"></a><tt class="py-lineno"> 771</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">texel_data</tt><tt class="py-op">,</tt><tt class="py-name">numpy</tt><tt class="py-op">.</tt><tt class="py-name">ndarray</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L772"></a><tt class="py-lineno"> 772</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">texel_data</tt><tt class="py-op">.</tt><tt class="py-name">dtype</tt> <tt class="py-op">==</tt> <tt class="py-name">numpy</tt><tt class="py-op">.</tt><tt id="link-77" class="py-name"><a title="float" class="py-name" href="#" onclick="return doclink('link-77', 'float', 'link-38');">float</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L773"></a><tt class="py-lineno"> 773</tt>  <tt class="py-line">                    <tt class="py-name">texel_data</tt> <tt class="py-op">=</tt> <tt class="py-name">texel_data</tt><tt class="py-op">*</tt><tt class="py-number">255.0</tt> </tt>
+<a name="L774"></a><tt class="py-lineno"> 774</tt>  <tt class="py-line"> </tt>
+<a name="L775"></a><tt class="py-lineno"> 775</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">data_type</tt> <tt class="py-op">==</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_UNSIGNED_BYTE</tt><tt class="py-op">:</tt> </tt>
+<a name="L776"></a><tt class="py-lineno"> 776</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">texel_data</tt><tt class="py-op">,</tt><tt class="py-name">numpy</tt><tt class="py-op">.</tt><tt class="py-name">ndarray</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L777"></a><tt class="py-lineno"> 777</tt>  <tt class="py-line">                <tt class="py-name">texel_data</tt> <tt class="py-op">=</tt> <tt class="py-name">texel_data</tt><tt class="py-op">.</tt><tt class="py-name">astype</tt><tt class="py-op">(</tt><tt class="py-name">numpy</tt><tt class="py-op">.</tt><tt class="py-name">uint8</tt><tt class="py-op">)</tt> <tt class="py-comment"># (re)cast if necessary</tt> </tt>
+<a name="L778"></a><tt class="py-lineno"> 778</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L779"></a><tt class="py-lineno"> 779</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">NotImplementedError</tt><tt class="py-op">(</tt><tt class="py-string">"Only data_type GL_UNSIGNED_BYTE currently supported"</tt><tt class="py-op">)</tt> </tt>
+<a name="L780"></a><tt class="py-lineno"> 780</tt>  <tt class="py-line"> </tt>
+<a name="L781"></a><tt class="py-lineno"> 781</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">texel_data</tt><tt class="py-op">,</tt><tt class="py-name">numpy</tt><tt class="py-op">.</tt><tt class="py-name">ndarray</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L782"></a><tt class="py-lineno"> 782</tt>  <tt class="py-line">            <tt class="py-name">width</tt> <tt class="py-op">=</tt> <tt class="py-name">texel_data</tt><tt class="py-op">.</tt><tt class="py-name">shape</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
+<a name="L783"></a><tt class="py-lineno"> 783</tt>  <tt class="py-line">            <tt class="py-name">height</tt> <tt class="py-op">=</tt> <tt class="py-name">texel_data</tt><tt class="py-op">.</tt><tt class="py-name">shape</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt>
+<a name="L784"></a><tt class="py-lineno"> 784</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">texel_data</tt><tt class="py-op">,</tt><tt class="py-name">Image</tt><tt class="py-op">.</tt><tt class="py-name">Image</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L785"></a><tt class="py-lineno"> 785</tt>  <tt class="py-line">            <tt class="py-name">width</tt><tt class="py-op">,</tt> <tt class="py-name">height</tt> <tt class="py-op">=</tt> <tt class="py-name">texel_data</tt><tt class="py-op">.</tt><tt id="link-78" class="py-name"><a title="VisionEgg.Core.Screen.size" class="py-name" href="#" onclick="return doclink('link-78', 'size', 'link-15');">size</a></tt> </tt>
+<a name="L786"></a><tt class="py-lineno"> 786</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">texel_data</tt><tt class="py-op">,</tt><tt class="py-name">pygame</tt><tt class="py-op">.</tt><tt class="py-name">surface</tt><tt class="py-op">.</tt><tt class="py-name">Surface</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L787"></a><tt class="py-lineno"> 787</tt>  <tt class="py-line">            <tt class="py-name">width</tt><tt class="py-op">,</tt> <tt class="py-name">height</tt> <tt class="py-op">=</tt> <tt class="py-name">texel_data</tt><tt class="py-op">.</tt><tt id="link-79" class="py-name"><a title="VisionEgg.Core.Screen.get_size" class="py-name" href="#" onclick="return doclink('link-79', 'get_size', 'link-22');">get_size</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L788"></a><tt class="py-lineno"> 788</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt id="link-80" class="py-name"><a title="VisionEgg.Textures.is_power_of_2" class="py-name" href="#" onclick="return doclink('link-80', 'is_power_of_2', 'link-61');">is_power_of_2</a></tt><tt class="py-op">(</tt><tt class="py-name">width</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> <tt class="py-keyword">raise</tt> <tt class="py-name">Val [...]
+<a name="L789"></a><tt class="py-lineno"> 789</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt id="link-81" class="py-name"><a title="VisionEgg.Textures.is_power_of_2" class="py-name" href="#" onclick="return doclink('link-81', 'is_power_of_2', 'link-61');">is_power_of_2</a></tt><tt class="py-op">(</tt><tt class="py-name">height</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> <tt class="py-keyword">raise</tt> <tt class="py-name">Va [...]
+<a name="L790"></a><tt class="py-lineno"> 790</tt>  <tt class="py-line"> </tt>
+<a name="L791"></a><tt class="py-lineno"> 791</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">texel_data</tt><tt class="py-op">,</tt><tt class="py-name">numpy</tt><tt class="py-op">.</tt><tt class="py-name">ndarray</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L792"></a><tt class="py-lineno"> 792</tt>  <tt class="py-line">            <tt class="py-name">raw_data</tt> <tt class="py-op">=</tt> <tt class="py-name">texel_data</tt><tt class="py-op">.</tt><tt class="py-name">tostring</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L793"></a><tt class="py-lineno"> 793</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">texel_data</tt><tt class="py-op">,</tt><tt class="py-name">Image</tt><tt class="py-op">.</tt><tt class="py-name">Image</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L794"></a><tt class="py-lineno"> 794</tt>  <tt class="py-line">            <tt class="py-name">raw_data</tt> <tt class="py-op">=</tt> <tt class="py-name">texel_data</tt><tt class="py-op">.</tt><tt class="py-name">tostring</tt><tt class="py-op">(</tt><tt class="py-string">'raw'</tt><tt class="py-op">,</tt><tt class="py-name">texel_data</tt><tt class="py-op">.</tt><tt class="py-name">mode</tt><tt class="py-op">,</tt><tt class="py-number">0</tt><tt class="py-op">,</tt><tt class="py [...]
+<a name="L795"></a><tt class="py-lineno"> 795</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">texel_data</tt><tt class="py-op">,</tt><tt class="py-name">pygame</tt><tt class="py-op">.</tt><tt class="py-name">surface</tt><tt class="py-op">.</tt><tt class="py-name">Surface</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L796"></a><tt class="py-lineno"> 796</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">texel_data</tt><tt class="py-op">.</tt><tt class="py-name">get_alpha</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L797"></a><tt class="py-lineno"> 797</tt>  <tt class="py-line">                <tt class="py-name">raw_data</tt> <tt class="py-op">=</tt> <tt class="py-name">pygame</tt><tt class="py-op">.</tt><tt class="py-name">image</tt><tt class="py-op">.</tt><tt class="py-name">tostring</tt><tt class="py-op">(</tt><tt class="py-name">texel_data</tt><tt class="py-op">,</tt><tt class="py-string">'RGBA'</tt><tt class="py-op">,</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="L798"></a><tt class="py-lineno"> 798</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L799"></a><tt class="py-lineno"> 799</tt>  <tt class="py-line">                <tt class="py-name">raw_data</tt> <tt class="py-op">=</tt> <tt class="py-name">pygame</tt><tt class="py-op">.</tt><tt class="py-name">image</tt><tt class="py-op">.</tt><tt class="py-name">tostring</tt><tt class="py-op">(</tt><tt class="py-name">texel_data</tt><tt class="py-op">,</tt><tt class="py-string">'RGB'</tt><tt class="py-op">,</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="L800"></a><tt class="py-lineno"> 800</tt>  <tt class="py-line"> </tt>
+<a name="L801"></a><tt class="py-lineno"> 801</tt>  <tt class="py-line">        <tt class="py-name">args</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">target</tt><tt class="py-op">,</tt> </tt>
+<a name="L802"></a><tt class="py-lineno"> 802</tt>  <tt class="py-line">                              <tt class="py-name">internal_format</tt><tt class="py-op">,</tt> </tt>
+<a name="L803"></a><tt class="py-lineno"> 803</tt>  <tt class="py-line">                              <tt class="py-name">width</tt><tt class="py-op">,</tt> <tt class="py-comment"># XXX should be width_pow2?</tt> </tt>
+<a name="L804"></a><tt class="py-lineno"> 804</tt>  <tt class="py-line">                              <tt class="py-name">height</tt><tt class="py-op">,</tt><tt class="py-comment"># XXX should be height_pow2?</tt> </tt>
+<a name="L805"></a><tt class="py-lineno"> 805</tt>  <tt class="py-line">                              <tt class="py-name">data_format</tt><tt class="py-op">,</tt> </tt>
+<a name="L806"></a><tt class="py-lineno"> 806</tt>  <tt class="py-line">                              <tt class="py-name">data_type</tt><tt class="py-op">)</tt> </tt>
+<a name="L807"></a><tt class="py-lineno"> 807</tt>  <tt class="py-line">                              <tt class="py-comment">#raw_data)</tt> </tt>
+<a name="L808"></a><tt class="py-lineno"> 808</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">print</tt> <tt class="py-string">'args'</tt><tt class="py-op">,</tt><tt class="py-name">args</tt> </tt>
+<a name="L809"></a><tt class="py-lineno"> 809</tt>  <tt class="py-line"> </tt>
+<a name="L810"></a><tt class="py-lineno"> 810</tt>  <tt class="py-line">        <tt class="py-name">glu</tt><tt class="py-op">.</tt><tt class="py-name">gluBuild2DMipmaps</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">target</tt><tt class="py-op">,</tt> </tt>
+<a name="L811"></a><tt class="py-lineno"> 811</tt>  <tt class="py-line">                              <tt class="py-name">internal_format</tt><tt class="py-op">,</tt> </tt>
+<a name="L812"></a><tt class="py-lineno"> 812</tt>  <tt class="py-line">                              <tt class="py-name">width</tt><tt class="py-op">,</tt> <tt class="py-comment"># XXX should be width_pow2?</tt> </tt>
+<a name="L813"></a><tt class="py-lineno"> 813</tt>  <tt class="py-line">                              <tt class="py-name">height</tt><tt class="py-op">,</tt><tt class="py-comment"># XXX should be height_pow2?</tt> </tt>
+<a name="L814"></a><tt class="py-lineno"> 814</tt>  <tt class="py-line">                              <tt class="py-name">data_format</tt><tt class="py-op">,</tt> </tt>
+<a name="L815"></a><tt class="py-lineno"> 815</tt>  <tt class="py-line">                              <tt class="py-name">data_type</tt><tt class="py-op">,</tt> </tt>
+<a name="L816"></a><tt class="py-lineno"> 816</tt>  <tt class="py-line">                              <tt class="py-name">raw_data</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L817"></a><tt class="py-lineno"> 817</tt>  <tt class="py-line"> </tt>
+<a name="TextureObject.put_sub_image"></a><div id="TextureObject.put_sub_image-def"><a name="L818"></a><tt class="py-lineno"> 818</tt> <a class="py-toggle" href="#" id="TextureObject.put_sub_image-toggle" onclick="return toggle('TextureObject.put_sub_image');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.Textures.TextureObject-class.html#put_sub_image">put_sub_image</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class=" [...]
+<a name="L819"></a><tt class="py-lineno"> 819</tt>  <tt class="py-line">                      <tt class="py-param">texel_data</tt><tt class="py-op">,</tt> </tt>
+<a name="L820"></a><tt class="py-lineno"> 820</tt>  <tt class="py-line">                      <tt class="py-param">mipmap_level</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt><tt class="py-op">,</tt> </tt>
+<a name="L821"></a><tt class="py-lineno"> 821</tt>  <tt class="py-line">                      <tt class="py-param">offset_tuple</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
+<a name="L822"></a><tt class="py-lineno"> 822</tt>  <tt class="py-line">                      <tt class="py-param">data_format</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-comment"># automatic guess unless set explicitly</tt> </tt>
+<a name="L823"></a><tt class="py-lineno"> 823</tt>  <tt class="py-line">                      <tt class="py-param">data_type</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-comment"># automatic guess unless set explicitly</tt> </tt>
+<a name="L824"></a><tt class="py-lineno"> 824</tt>  <tt class="py-line">                      <tt class="py-param">cube_side</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
+<a name="L825"></a><tt class="py-lineno"> 825</tt>  <tt class="py-line">                      <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="TextureObject.put_sub_image-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="TextureObject.put_sub_image-expanded"><a name="L826"></a><tt class="py-lineno"> 826</tt>  <tt class="py-line"> </tt>
+<a name="L827"></a><tt class="py-lineno"> 827</tt>  <tt class="py-line">        <tt class="py-docstring">"""Replace all or part of a texture object.</tt> </tt>
+<a name="L828"></a><tt class="py-lineno"> 828</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L829"></a><tt class="py-lineno"> 829</tt>  <tt class="py-line"><tt class="py-docstring">        This is faster that put_new_image(), and can be used to</tt> </tt>
+<a name="L830"></a><tt class="py-lineno"> 830</tt>  <tt class="py-line"><tt class="py-docstring">        rapidly update textures.</tt> </tt>
+<a name="L831"></a><tt class="py-lineno"> 831</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L832"></a><tt class="py-lineno"> 832</tt>  <tt class="py-line"><tt class="py-docstring">        The offset_tuple parameter determines the lower left corner</tt> </tt>
+<a name="L833"></a><tt class="py-lineno"> 833</tt>  <tt class="py-line"><tt class="py-docstring">        (for 2D textures) of your data in pixel units.  For example,</tt> </tt>
+<a name="L834"></a><tt class="py-lineno"> 834</tt>  <tt class="py-line"><tt class="py-docstring">        (0,0) would be no offset and thus the new data would be placed</tt> </tt>
+<a name="L835"></a><tt class="py-lineno"> 835</tt>  <tt class="py-line"><tt class="py-docstring">        in the lower left of the texture.</tt> </tt>
+<a name="L836"></a><tt class="py-lineno"> 836</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L837"></a><tt class="py-lineno"> 837</tt>  <tt class="py-line"><tt class="py-docstring">        For an explanation of most parameters, see the</tt> </tt>
+<a name="L838"></a><tt class="py-lineno"> 838</tt>  <tt class="py-line"><tt class="py-docstring">        put_new_image() method."""</tt> </tt>
+<a name="L839"></a><tt class="py-lineno"> 839</tt>  <tt class="py-line"> </tt>
+<a name="L840"></a><tt class="py-lineno"> 840</tt>  <tt class="py-line">        <tt class="py-name">texel_data</tt> <tt class="py-op">=</tt> <tt id="link-82" class="py-name"><a title="VisionEgg.Textures.convert_to_numpy_if_array" class="py-name" href="#" onclick="return doclink('link-82', 'convert_to_numpy_if_array', 'link-18');">convert_to_numpy_if_array</a></tt><tt class="py-op">(</tt><tt class="py-name">texel_data</tt><tt class="py-op">)</tt> </tt>
+<a name="L841"></a><tt class="py-lineno"> 841</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">texel_data</tt><tt class="py-op">,</tt><tt class="py-name">numpy</tt><tt class="py-op">.</tt><tt class="py-name">ndarray</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L842"></a><tt class="py-lineno"> 842</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">dimensions</tt> <tt class="py-op">!=</tt> <tt class="py-string">'cube'</tt><tt class="py-op">:</tt> </tt>
+<a name="L843"></a><tt class="py-lineno"> 843</tt>  <tt class="py-line">                <tt class="py-keyword">assert</tt><tt class="py-op">(</tt><tt class="py-name">cube_side</tt> <tt class="py-op">==</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt> </tt>
+<a name="L844"></a><tt class="py-lineno"> 844</tt>  <tt class="py-line">                <tt class="py-name">data_dimensions</tt> <tt class="py-op">=</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">texel_data</tt><tt class="py-op">.</tt><tt class="py-name">shape</tt><tt class="py-op">)</tt> </tt>
+<a name="L845"></a><tt class="py-lineno"> 845</tt>  <tt class="py-line">                <tt class="py-keyword">assert</tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-name">data_dimensions</tt> <tt class="py-op">==</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">dimensions</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-op">(</tt><tt class="py-name">data_dimensions</tt> <tt class="py-op">==</tt> <tt class="py-name"> [...]
+<a name="L846"></a><tt class="py-lineno"> 846</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L847"></a><tt class="py-lineno"> 847</tt>  <tt class="py-line">                <tt class="py-keyword">assert</tt><tt class="py-op">(</tt><tt class="py-name">cube_side</tt> <tt class="py-keyword">in</tt> <tt id="link-83" class="py-name"><a title="VisionEgg.Textures.TextureObject" class="py-name" href="#" onclick="return doclink('link-83', 'TextureObject', 'link-34');">TextureObject</a></tt><tt class="py-op">.</tt><tt id="link-84" class="py-name"><a title="VisionEgg.Textures.Textu [...]
+<a name="L848"></a><tt class="py-lineno"> 848</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">texel_data</tt><tt class="py-op">,</tt><tt class="py-name">Image</tt><tt class="py-op">.</tt><tt class="py-name">Image</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L849"></a><tt class="py-lineno"> 849</tt>  <tt class="py-line">            <tt class="py-keyword">assert</tt><tt class="py-op">(</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">dimensions</tt> <tt class="py-op">==</tt> <tt class="py-number">2</tt> <tt class="py-op">)</tt> </tt>
+<a name="L850"></a><tt class="py-lineno"> 850</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">texel_data</tt><tt class="py-op">,</tt><tt class="py-name">pygame</tt><tt class="py-op">.</tt><tt class="py-name">surface</tt><tt class="py-op">.</tt><tt class="py-name">Surface</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L851"></a><tt class="py-lineno"> 851</tt>  <tt class="py-line">            <tt class="py-keyword">assert</tt><tt class="py-op">(</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">dimensions</tt> <tt class="py-op">==</tt> <tt class="py-number">2</tt> <tt class="py-op">)</tt> </tt>
+<a name="L852"></a><tt class="py-lineno"> 852</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L853"></a><tt class="py-lineno"> 853</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">TypeError</tt><tt class="py-op">(</tt><tt class="py-string">"Expecting numpy array, PIL image, or pygame surface"</tt><tt class="py-op">)</tt> </tt>
+<a name="L854"></a><tt class="py-lineno"> 854</tt>  <tt class="py-line"> </tt>
+<a name="L855"></a><tt class="py-lineno"> 855</tt>  <tt class="py-line">        <tt class="py-comment"># make myself the active texture</tt> </tt>
+<a name="L856"></a><tt class="py-lineno"> 856</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glBindTexture</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">target</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">gl_id</tt><tt class="py-op">)</tt> </tt>
+<a name="L857"></a><tt class="py-lineno"> 857</tt>  <tt class="py-line"> </tt>
+<a name="L858"></a><tt class="py-lineno"> 858</tt>  <tt class="py-line">        <tt class="py-comment"># Determine the data_format, data_type and rescale the data if needed</tt> </tt>
+<a name="L859"></a><tt class="py-lineno"> 859</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">data</tt> <tt class="py-op">=</tt> <tt class="py-name">texel_data</tt> </tt>
+<a name="L860"></a><tt class="py-lineno"> 860</tt>  <tt class="py-line"> </tt>
+<a name="L861"></a><tt class="py-lineno"> 861</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">data_format</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> <tt class="py-comment"># guess the format of the data</tt> </tt>
+<a name="L862"></a><tt class="py-lineno"> 862</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">texel_data</tt><tt class="py-op">,</tt><tt class="py-name">numpy</tt><tt class="py-op">.</tt><tt class="py-name">ndarray</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L863"></a><tt class="py-lineno"> 863</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">.</tt><tt class="py-name">shape</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">dimensions</tt><tt class="py-op">:</tt> </tt>
+<a name="L864"></a><tt class="py-lineno"> 864</tt>  <tt class="py-line">                    <tt class="py-name">data_format</tt> <tt class="py-op">=</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_LUMINANCE</tt> </tt>
+<a name="L865"></a><tt class="py-lineno"> 865</tt>  <tt class="py-line">                <tt class="py-keyword">elif</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">.</tt><tt class="py-name">shape</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">dimensions</tt><tt class="py-op">+</tt><tt class="py-number">1</tt><tt class="py-op">)</ [...]
+<a name="L866"></a><tt class="py-lineno"> 866</tt>  <tt class="py-line">                    <tt class="py-keyword">if</tt> <tt class="py-name">data</tt><tt class="py-op">.</tt><tt class="py-name">shape</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-number">3</tt><tt class="py-op">:</tt> </tt>
+<a name="L867"></a><tt class="py-lineno"> 867</tt>  <tt class="py-line">                        <tt class="py-name">data_format</tt> <tt class="py-op">=</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_RGB</tt> </tt>
+<a name="L868"></a><tt class="py-lineno"> 868</tt>  <tt class="py-line">                    <tt class="py-keyword">elif</tt> <tt class="py-name">data</tt><tt class="py-op">.</tt><tt class="py-name">shape</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-number">4</tt><tt class="py-op">:</tt> </tt>
+<a name="L869"></a><tt class="py-lineno"> 869</tt>  <tt class="py-line">                        <tt class="py-name">data_format</tt> <tt class="py-op">=</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_RGBA</tt> </tt>
+<a name="L870"></a><tt class="py-lineno"> 870</tt>  <tt class="py-line">                    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L871"></a><tt class="py-lineno"> 871</tt>  <tt class="py-line">                        <tt class="py-keyword">raise</tt> <tt class="py-name">RuntimeError</tt><tt class="py-op">(</tt><tt class="py-string">"Couldn't determine a format for your texel_data."</tt><tt class="py-op">)</tt> </tt>
+<a name="L872"></a><tt class="py-lineno"> 872</tt>  <tt class="py-line">                <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L873"></a><tt class="py-lineno"> 873</tt>  <tt class="py-line">                    <tt class="py-keyword">raise</tt> <tt class="py-name">RuntimeError</tt><tt class="py-op">(</tt><tt class="py-string">"Couldn't determine a format for your texel_data."</tt><tt class="py-op">)</tt> </tt>
+<a name="L874"></a><tt class="py-lineno"> 874</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">texel_data</tt><tt class="py-op">,</tt><tt class="py-name">Image</tt><tt class="py-op">.</tt><tt class="py-name">Image</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L875"></a><tt class="py-lineno"> 875</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">data</tt><tt class="py-op">.</tt><tt class="py-name">mode</tt> <tt class="py-op">==</tt> <tt class="py-string">'L'</tt><tt class="py-op">:</tt> </tt>
+<a name="L876"></a><tt class="py-lineno"> 876</tt>  <tt class="py-line">                    <tt class="py-name">data_format</tt> <tt class="py-op">=</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_LUMINANCE</tt> </tt>
+<a name="L877"></a><tt class="py-lineno"> 877</tt>  <tt class="py-line">                <tt class="py-keyword">elif</tt> <tt class="py-name">data</tt><tt class="py-op">.</tt><tt class="py-name">mode</tt> <tt class="py-op">==</tt> <tt class="py-string">'RGB'</tt><tt class="py-op">:</tt> </tt>
+<a name="L878"></a><tt class="py-lineno"> 878</tt>  <tt class="py-line">                    <tt class="py-name">data_format</tt> <tt class="py-op">=</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_RGB</tt> </tt>
+<a name="L879"></a><tt class="py-lineno"> 879</tt>  <tt class="py-line">                <tt class="py-keyword">elif</tt> <tt class="py-name">data</tt><tt class="py-op">.</tt><tt class="py-name">mode</tt> <tt class="py-keyword">in</tt> <tt class="py-op">[</tt><tt class="py-string">'RGBA'</tt><tt class="py-op">,</tt><tt class="py-string">'RGBX'</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
+<a name="L880"></a><tt class="py-lineno"> 880</tt>  <tt class="py-line">                    <tt class="py-name">data_format</tt> <tt class="py-op">=</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_RGBA</tt> </tt>
+<a name="L881"></a><tt class="py-lineno"> 881</tt>  <tt class="py-line">                <tt class="py-keyword">elif</tt> <tt class="py-name">data</tt><tt class="py-op">.</tt><tt class="py-name">mode</tt> <tt class="py-op">==</tt> <tt class="py-string">'P'</tt><tt class="py-op">:</tt> </tt>
+<a name="L882"></a><tt class="py-lineno"> 882</tt>  <tt class="py-line">                    <tt class="py-keyword">raise</tt> <tt class="py-name">NotImplementedError</tt><tt class="py-op">(</tt><tt class="py-string">"Paletted images are not supported."</tt><tt class="py-op">)</tt> </tt>
+<a name="L883"></a><tt class="py-lineno"> 883</tt>  <tt class="py-line">                <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L884"></a><tt class="py-lineno"> 884</tt>  <tt class="py-line">                    <tt class="py-keyword">raise</tt> <tt class="py-name">RuntimeError</tt><tt class="py-op">(</tt><tt class="py-string">"Couldn't determine format for your texel_data. (PIL mode = '%s')"</tt><tt class="py-op">%</tt><tt class="py-name">data</tt><tt class="py-op">.</tt><tt class="py-name">mode</tt><tt class="py-op">)</tt> </tt>
+<a name="L885"></a><tt class="py-lineno"> 885</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">texel_data</tt><tt class="py-op">,</tt><tt class="py-name">pygame</tt><tt class="py-op">.</tt><tt class="py-name">surface</tt><tt class="py-op">.</tt><tt class="py-name">Surface</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L886"></a><tt class="py-lineno"> 886</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">data</tt><tt class="py-op">.</tt><tt class="py-name">get_alpha</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L887"></a><tt class="py-lineno"> 887</tt>  <tt class="py-line">                    <tt class="py-name">data_format</tt> <tt class="py-op">=</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_RGBA</tt> </tt>
+<a name="L888"></a><tt class="py-lineno"> 888</tt>  <tt class="py-line">                <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L889"></a><tt class="py-lineno"> 889</tt>  <tt class="py-line">                    <tt class="py-name">data_format</tt> <tt class="py-op">=</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_RGB</tt> </tt>
+<a name="L890"></a><tt class="py-lineno"> 890</tt>  <tt class="py-line"> </tt>
+<a name="L891"></a><tt class="py-lineno"> 891</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">data_type</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> <tt class="py-comment"># guess the data type</tt> </tt>
+<a name="L892"></a><tt class="py-lineno"> 892</tt>  <tt class="py-line">            <tt class="py-name">data_type</tt> <tt class="py-op">=</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_UNSIGNED_BYTE</tt> </tt>
+<a name="L893"></a><tt class="py-lineno"> 893</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">,</tt><tt class="py-name">numpy</tt><tt class="py-op">.</tt><tt class="py-name">ndarray</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L894"></a><tt class="py-lineno"> 894</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">data</tt><tt class="py-op">.</tt><tt class="py-name">dtype</tt> <tt class="py-op">==</tt> <tt class="py-name">numpy</tt><tt class="py-op">.</tt><tt id="link-85" class="py-name"><a title="float" class="py-name" href="#" onclick="return doclink('link-85', 'float', 'link-38');">float</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L895"></a><tt class="py-lineno"> 895</tt>  <tt class="py-line">                    <tt class="py-name">data</tt> <tt class="py-op">=</tt> <tt class="py-name">data</tt><tt class="py-op">*</tt><tt class="py-number">255.0</tt> </tt>
+<a name="L896"></a><tt class="py-lineno"> 896</tt>  <tt class="py-line"> </tt>
+<a name="L897"></a><tt class="py-lineno"> 897</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">data_type</tt> <tt class="py-op">==</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_UNSIGNED_BYTE</tt><tt class="py-op">:</tt> </tt>
+<a name="L898"></a><tt class="py-lineno"> 898</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">,</tt><tt class="py-name">numpy</tt><tt class="py-op">.</tt><tt class="py-name">ndarray</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L899"></a><tt class="py-lineno"> 899</tt>  <tt class="py-line">                <tt class="py-name">data</tt> <tt class="py-op">=</tt> <tt class="py-name">data</tt><tt class="py-op">.</tt><tt class="py-name">astype</tt><tt class="py-op">(</tt><tt class="py-name">numpy</tt><tt class="py-op">.</tt><tt class="py-name">uint8</tt><tt class="py-op">)</tt> <tt class="py-comment"># (re)cast if necessary</tt> </tt>
+<a name="L900"></a><tt class="py-lineno"> 900</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L901"></a><tt class="py-lineno"> 901</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">NotImplementedError</tt><tt class="py-op">(</tt><tt class="py-string">"Only data_type GL_UNSIGNED_BYTE currently supported"</tt><tt class="py-op">)</tt> </tt>
+<a name="L902"></a><tt class="py-lineno"> 902</tt>  <tt class="py-line"> </tt>
+<a name="L903"></a><tt class="py-lineno"> 903</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">dimensions</tt> <tt class="py-op">==</tt> <tt class="py-number">1</tt><tt class="py-op">:</tt> </tt>
+<a name="L904"></a><tt class="py-lineno"> 904</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">offset_tuple</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L905"></a><tt class="py-lineno"> 905</tt>  <tt class="py-line">                <tt class="py-name">x_offset</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L906"></a><tt class="py-lineno"> 906</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L907"></a><tt class="py-lineno"> 907</tt>  <tt class="py-line">                <tt class="py-name">x_offset</tt> <tt class="py-op">=</tt> <tt class="py-name">offset_tuple</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt>
+<a name="L908"></a><tt class="py-lineno"> 908</tt>  <tt class="py-line">            <tt class="py-name">width</tt> <tt class="py-op">=</tt> <tt class="py-name">data</tt><tt class="py-op">.</tt><tt class="py-name">shape</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt>
+<a name="L909"></a><tt class="py-lineno"> 909</tt>  <tt class="py-line">            <tt class="py-name">raw_data</tt> <tt class="py-op">=</tt> <tt class="py-name">data</tt><tt class="py-op">.</tt><tt class="py-name">astype</tt><tt class="py-op">(</tt><tt class="py-name">numpy</tt><tt class="py-op">.</tt><tt class="py-name">uint8</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">tostring</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L910"></a><tt class="py-lineno"> 910</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glTexSubImage1D</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE_1D</tt><tt class="py-op">,</tt> </tt>
+<a name="L911"></a><tt class="py-lineno"> 911</tt>  <tt class="py-line">                               <tt class="py-name">mipmap_level</tt><tt class="py-op">,</tt> </tt>
+<a name="L912"></a><tt class="py-lineno"> 912</tt>  <tt class="py-line">                               <tt class="py-name">x_offset</tt><tt class="py-op">,</tt> </tt>
+<a name="L913"></a><tt class="py-lineno"> 913</tt>  <tt class="py-line">                               <tt class="py-name">width</tt><tt class="py-op">,</tt> </tt>
+<a name="L914"></a><tt class="py-lineno"> 914</tt>  <tt class="py-line">                               <tt class="py-name">data_format</tt><tt class="py-op">,</tt> </tt>
+<a name="L915"></a><tt class="py-lineno"> 915</tt>  <tt class="py-line">                               <tt class="py-name">data_type</tt><tt class="py-op">,</tt> </tt>
+<a name="L916"></a><tt class="py-lineno"> 916</tt>  <tt class="py-line">                               <tt class="py-name">raw_data</tt><tt class="py-op">)</tt> </tt>
+<a name="L917"></a><tt class="py-lineno"> 917</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">dimensions</tt> <tt class="py-keyword">in</tt> <tt class="py-op">[</tt><tt class="py-number">2</tt><tt class="py-op">,</tt><tt class="py-string">'cube'</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
+<a name="L918"></a><tt class="py-lineno"> 918</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">dimensions</tt> <tt class="py-op">==</tt> <tt class="py-number">2</tt><tt class="py-op">:</tt> </tt>
+<a name="L919"></a><tt class="py-lineno"> 919</tt>  <tt class="py-line">                <tt class="py-name">target</tt> <tt class="py-op">=</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE_2D</tt> </tt>
+<a name="L920"></a><tt class="py-lineno"> 920</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L921"></a><tt class="py-lineno"> 921</tt>  <tt class="py-line">                <tt class="py-name">target_name</tt> <tt class="py-op">=</tt> <tt class="py-string">'GL_CUBE_MAP_'</tt><tt class="py-op">+</tt><tt class="py-name">cube_side</tt><tt class="py-op">.</tt><tt class="py-name">upper</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L922"></a><tt class="py-lineno"> 922</tt>  <tt class="py-line">                <tt class="py-name">target</tt> <tt class="py-op">=</tt> <tt class="py-name">getattr</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">,</tt><tt class="py-name">target_name</tt><tt class="py-op">)</tt> </tt>
+<a name="L923"></a><tt class="py-lineno"> 923</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">offset_tuple</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L924"></a><tt class="py-lineno"> 924</tt>  <tt class="py-line">                <tt class="py-name">x_offset</tt> <tt class="py-op">=</tt> <tt class="py-name">y_offset</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L925"></a><tt class="py-lineno"> 925</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L926"></a><tt class="py-lineno"> 926</tt>  <tt class="py-line">                <tt class="py-name">x_offset</tt><tt class="py-op">,</tt> <tt class="py-name">y_offset</tt> <tt class="py-op">=</tt> <tt class="py-name">offset_tuple</tt> </tt>
+<a name="L927"></a><tt class="py-lineno"> 927</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">,</tt><tt class="py-name">numpy</tt><tt class="py-op">.</tt><tt class="py-name">ndarray</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L928"></a><tt class="py-lineno"> 928</tt>  <tt class="py-line">                <tt class="py-name">width</tt> <tt class="py-op">=</tt> <tt class="py-name">data</tt><tt class="py-op">.</tt><tt class="py-name">shape</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
+<a name="L929"></a><tt class="py-lineno"> 929</tt>  <tt class="py-line">                <tt class="py-name">height</tt> <tt class="py-op">=</tt> <tt class="py-name">data</tt><tt class="py-op">.</tt><tt class="py-name">shape</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt>
+<a name="L930"></a><tt class="py-lineno"> 930</tt>  <tt class="py-line">                <tt class="py-name">raw_data</tt> <tt class="py-op">=</tt> <tt class="py-name">data</tt><tt class="py-op">.</tt><tt class="py-name">astype</tt><tt class="py-op">(</tt><tt class="py-name">numpy</tt><tt class="py-op">.</tt><tt class="py-name">uint8</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">tostring</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L931"></a><tt class="py-lineno"> 931</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">texel_data</tt><tt class="py-op">,</tt><tt class="py-name">Image</tt><tt class="py-op">.</tt><tt class="py-name">Image</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L932"></a><tt class="py-lineno"> 932</tt>  <tt class="py-line">                <tt class="py-name">width</tt> <tt class="py-op">=</tt> <tt class="py-name">data</tt><tt class="py-op">.</tt><tt id="link-86" class="py-name"><a title="VisionEgg.Core.Screen.size" class="py-name" href="#" onclick="return doclink('link-86', 'size', 'link-15');">size</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt>
+<a name="L933"></a><tt class="py-lineno"> 933</tt>  <tt class="py-line">                <tt class="py-name">height</tt> <tt class="py-op">=</tt> <tt class="py-name">data</tt><tt class="py-op">.</tt><tt id="link-87" class="py-name"><a title="VisionEgg.Core.Screen.size" class="py-name" href="#" onclick="return doclink('link-87', 'size', 'link-15');">size</a></tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
+<a name="L934"></a><tt class="py-lineno"> 934</tt>  <tt class="py-line">                <tt class="py-name">raw_data</tt> <tt class="py-op">=</tt> <tt class="py-name">data</tt><tt class="py-op">.</tt><tt class="py-name">tostring</tt><tt class="py-op">(</tt><tt class="py-string">'raw'</tt><tt class="py-op">,</tt><tt class="py-name">data</tt><tt class="py-op">.</tt><tt class="py-name">mode</tt><tt class="py-op">,</tt><tt class="py-number">0</tt><tt class="py-op">,</tt><tt class="py-op">-</ [...]
+<a name="L935"></a><tt class="py-lineno"> 935</tt>  <tt class="py-line">            <tt class="py-keyword">elif</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">texel_data</tt><tt class="py-op">,</tt><tt class="py-name">pygame</tt><tt class="py-op">.</tt><tt class="py-name">surface</tt><tt class="py-op">.</tt><tt class="py-name">Surface</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L936"></a><tt class="py-lineno"> 936</tt>  <tt class="py-line">                <tt class="py-name">width</tt><tt class="py-op">,</tt> <tt class="py-name">height</tt> <tt class="py-op">=</tt> <tt class="py-name">texel_data</tt><tt class="py-op">.</tt><tt id="link-88" class="py-name"><a title="VisionEgg.Core.Screen.get_size" class="py-name" href="#" onclick="return doclink('link-88', 'get_size', 'link-22');">get_size</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L937"></a><tt class="py-lineno"> 937</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">data</tt><tt class="py-op">.</tt><tt class="py-name">get_alpha</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L938"></a><tt class="py-lineno"> 938</tt>  <tt class="py-line">                    <tt class="py-name">raw_data</tt> <tt class="py-op">=</tt> <tt class="py-name">pygame</tt><tt class="py-op">.</tt><tt class="py-name">image</tt><tt class="py-op">.</tt><tt class="py-name">tostring</tt><tt class="py-op">(</tt><tt class="py-name">texel_data</tt><tt class="py-op">,</tt><tt class="py-string">'RGBA'</tt><tt class="py-op">,</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="L939"></a><tt class="py-lineno"> 939</tt>  <tt class="py-line">                <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L940"></a><tt class="py-lineno"> 940</tt>  <tt class="py-line">                    <tt class="py-name">raw_data</tt> <tt class="py-op">=</tt> <tt class="py-name">pygame</tt><tt class="py-op">.</tt><tt class="py-name">image</tt><tt class="py-op">.</tt><tt class="py-name">tostring</tt><tt class="py-op">(</tt><tt class="py-name">texel_data</tt><tt class="py-op">,</tt><tt class="py-string">'RGB'</tt><tt class="py-op">,</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="L941"></a><tt class="py-lineno"> 941</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glTexSubImage2D</tt><tt class="py-op">(</tt><tt class="py-name">target</tt><tt class="py-op">,</tt> </tt>
+<a name="L942"></a><tt class="py-lineno"> 942</tt>  <tt class="py-line">                               <tt class="py-name">mipmap_level</tt><tt class="py-op">,</tt> </tt>
+<a name="L943"></a><tt class="py-lineno"> 943</tt>  <tt class="py-line">                               <tt class="py-name">x_offset</tt><tt class="py-op">,</tt> </tt>
+<a name="L944"></a><tt class="py-lineno"> 944</tt>  <tt class="py-line">                               <tt class="py-name">y_offset</tt><tt class="py-op">,</tt> </tt>
+<a name="L945"></a><tt class="py-lineno"> 945</tt>  <tt class="py-line">                               <tt class="py-name">width</tt><tt class="py-op">,</tt> </tt>
+<a name="L946"></a><tt class="py-lineno"> 946</tt>  <tt class="py-line">                               <tt class="py-name">height</tt><tt class="py-op">,</tt> </tt>
+<a name="L947"></a><tt class="py-lineno"> 947</tt>  <tt class="py-line">                               <tt class="py-name">data_format</tt><tt class="py-op">,</tt> </tt>
+<a name="L948"></a><tt class="py-lineno"> 948</tt>  <tt class="py-line">                               <tt class="py-name">data_type</tt><tt class="py-op">,</tt> </tt>
+<a name="L949"></a><tt class="py-lineno"> 949</tt>  <tt class="py-line">                               <tt class="py-name">raw_data</tt><tt class="py-op">)</tt> </tt>
+<a name="L950"></a><tt class="py-lineno"> 950</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">dimensions</tt> <tt class="py-op">==</tt> <tt class="py-number">3</tt><tt class="py-op">:</tt> </tt>
+<a name="L951"></a><tt class="py-lineno"> 951</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">RuntimeError</tt><tt class="py-op">(</tt><tt class="py-string">"Cannot put_sub_image on 3D texture_object."</tt><tt class="py-op">)</tt> </tt>
+<a name="L952"></a><tt class="py-lineno"> 952</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L953"></a><tt class="py-lineno"> 953</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">RuntimeError</tt><tt class="py-op">(</tt><tt class="py-string">"Unknown number of dimensions."</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L954"></a><tt class="py-lineno"> 954</tt>  <tt class="py-line"> </tt>
+<a name="TextureObject.put_new_framebuffer"></a><div id="TextureObject.put_new_framebuffer-def"><a name="L955"></a><tt class="py-lineno"> 955</tt> <a class="py-toggle" href="#" id="TextureObject.put_new_framebuffer-toggle" onclick="return toggle('TextureObject.put_new_framebuffer');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.Textures.TextureObject-class.html#put_new_framebuffer">put_new_framebuffer</a><tt class="py-op">(</tt><tt c [...]
+<a name="L956"></a><tt class="py-lineno"> 956</tt>  <tt class="py-line">                            <tt class="py-param">buffer</tt><tt class="py-op">=</tt><tt class="py-string">'back'</tt><tt class="py-op">,</tt> </tt>
+<a name="L957"></a><tt class="py-lineno"> 957</tt>  <tt class="py-line">                            <tt class="py-param">mipmap_level</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt><tt class="py-op">,</tt> </tt>
+<a name="L958"></a><tt class="py-lineno"> 958</tt>  <tt class="py-line">                            <tt class="py-param">border</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt><tt class="py-op">,</tt> </tt>
+<a name="L959"></a><tt class="py-lineno"> 959</tt>  <tt class="py-line">                            <tt class="py-param">framebuffer_lowerleft</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
+<a name="L960"></a><tt class="py-lineno"> 960</tt>  <tt class="py-line">                            <tt class="py-param">size</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
+<a name="L961"></a><tt class="py-lineno"> 961</tt>  <tt class="py-line">                            <tt class="py-param">internal_format</tt> <tt class="py-op">=</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_RGB</tt><tt class="py-op">,</tt> </tt>
+<a name="L962"></a><tt class="py-lineno"> 962</tt>  <tt class="py-line">                            <tt class="py-param">cube_side</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
+<a name="L963"></a><tt class="py-lineno"> 963</tt>  <tt class="py-line">                            <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="TextureObject.put_new_framebuffer-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="TextureObject.put_new_framebuffer-expanded"><a name="L964"></a><tt class="py-lineno"> 964</tt>  <tt class="py-line"> </tt>
+<a name="L965"></a><tt class="py-lineno"> 965</tt>  <tt class="py-line">        <tt class="py-docstring">"""Replace texture object with the framebuffer contents.</tt> </tt>
+<a name="L966"></a><tt class="py-lineno"> 966</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L967"></a><tt class="py-lineno"> 967</tt>  <tt class="py-line"><tt class="py-docstring">        The framebuffer_lowerleft parameter determines the lower left</tt> </tt>
+<a name="L968"></a><tt class="py-lineno"> 968</tt>  <tt class="py-line"><tt class="py-docstring">        corner of the framebuffer region from which to copy texel data</tt> </tt>
+<a name="L969"></a><tt class="py-lineno"> 969</tt>  <tt class="py-line"><tt class="py-docstring">        in pixel units.  For example, (0,0) would be no offset and</tt> </tt>
+<a name="L970"></a><tt class="py-lineno"> 970</tt>  <tt class="py-line"><tt class="py-docstring">        thus the new data would be placed from the lower left of the</tt> </tt>
+<a name="L971"></a><tt class="py-lineno"> 971</tt>  <tt class="py-line"><tt class="py-docstring">        framebuffer.</tt> </tt>
+<a name="L972"></a><tt class="py-lineno"> 972</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L973"></a><tt class="py-lineno"> 973</tt>  <tt class="py-line"><tt class="py-docstring">        For an explanation of most parameters, see the</tt> </tt>
+<a name="L974"></a><tt class="py-lineno"> 974</tt>  <tt class="py-line"><tt class="py-docstring">        put_new_image() method."""</tt> </tt>
+<a name="L975"></a><tt class="py-lineno"> 975</tt>  <tt class="py-line"> </tt>
+<a name="L976"></a><tt class="py-lineno"> 976</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">dimensions</tt> <tt class="py-op">!=</tt> <tt class="py-number">2</tt><tt class="py-op">:</tt> </tt>
+<a name="L977"></a><tt class="py-lineno"> 977</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">RuntimeError</tt><tt class="py-op">(</tt><tt class="py-string">"put_new_framebuffer only supported for 2D textures."</tt><tt class="py-op">)</tt> </tt>
+<a name="L978"></a><tt class="py-lineno"> 978</tt>  <tt class="py-line"> </tt>
+<a name="L979"></a><tt class="py-lineno"> 979</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">buffer</tt> <tt class="py-op">==</tt> <tt class="py-string">'front'</tt><tt class="py-op">:</tt> </tt>
+<a name="L980"></a><tt class="py-lineno"> 980</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glReadBuffer</tt><tt class="py-op">(</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_FRONT</tt> <tt class="py-op">)</tt> </tt>
+<a name="L981"></a><tt class="py-lineno"> 981</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">buffer</tt> <tt class="py-op">==</tt> <tt class="py-string">'back'</tt><tt class="py-op">:</tt> </tt>
+<a name="L982"></a><tt class="py-lineno"> 982</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glReadBuffer</tt><tt class="py-op">(</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_BACK</tt> <tt class="py-op">)</tt> </tt>
+<a name="L983"></a><tt class="py-lineno"> 983</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L984"></a><tt class="py-lineno"> 984</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">'No support for "%s" framebuffer'</tt><tt class="py-op">%</tt><tt class="py-name">buffer</tt><tt class="py-op">)</tt> </tt>
+<a name="L985"></a><tt class="py-lineno"> 985</tt>  <tt class="py-line"> </tt>
+<a name="L986"></a><tt class="py-lineno"> 986</tt>  <tt class="py-line">        <tt class="py-comment"># make myself the active texture</tt> </tt>
+<a name="L987"></a><tt class="py-lineno"> 987</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glBindTexture</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">target</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">gl_id</tt><tt class="py-op">)</tt> </tt>
+<a name="L988"></a><tt class="py-lineno"> 988</tt>  <tt class="py-line"> </tt>
+<a name="L989"></a><tt class="py-lineno"> 989</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">framebuffer_lowerleft</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L990"></a><tt class="py-lineno"> 990</tt>  <tt class="py-line">            <tt class="py-name">framebuffer_lowerleft</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">,</tt><tt class="py-number">0</tt><tt class="py-op">)</tt> </tt>
+<a name="L991"></a><tt class="py-lineno"> 991</tt>  <tt class="py-line">        <tt class="py-name">x</tt><tt class="py-op">,</tt><tt class="py-name">y</tt> <tt class="py-op">=</tt> <tt class="py-name">framebuffer_lowerleft</tt> </tt>
+<a name="L992"></a><tt class="py-lineno"> 992</tt>  <tt class="py-line"> </tt>
+<a name="L993"></a><tt class="py-lineno"> 993</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt id="link-89" class="py-name"><a title="VisionEgg.Core.Screen.size" class="py-name" href="#" onclick="return doclink('link-89', 'size', 'link-15');">size</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L994"></a><tt class="py-lineno"> 994</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">"Must specify size for put_new_framebuffer(): cannot guess"</tt><tt class="py-op">)</tt> </tt>
+<a name="L995"></a><tt class="py-lineno"> 995</tt>  <tt class="py-line"> </tt>
+<a name="L996"></a><tt class="py-lineno"> 996</tt>  <tt class="py-line">        <tt class="py-comment"># determine size and make sure its power of 2</tt> </tt>
+<a name="L997"></a><tt class="py-lineno"> 997</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">width</tt><tt class="py-op">,</tt> <tt class="py-name">height</tt> <tt class="py-op">=</tt> <tt id="link-90" class="py-name"><a title="VisionEgg.Core.Screen.size" class="py-name" href="#" onclick="return doclink('link-90', 'size', 'link-15');">size</a></tt> </tt>
+<a name="L998"></a><tt class="py-lineno"> 998</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt id="link-91" class="py-name"><a title="VisionEgg.Textures.is_power_of_2" class="py-name" href="#" onclick="return doclink('link-91', 'is_power_of_2', 'link-61');">is_power_of_2</a></tt><tt class="py-op">(</tt><tt class="py-name">width</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> <tt class="py-keyword">raise</tt> <tt class="py-name">Val [...]
+<a name="L999"></a><tt class="py-lineno"> 999</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt id="link-92" class="py-name"><a title="VisionEgg.Textures.is_power_of_2" class="py-name" href="#" onclick="return doclink('link-92', 'is_power_of_2', 'link-61');">is_power_of_2</a></tt><tt class="py-op">(</tt><tt class="py-name">height</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> <tt class="py-keyword">raise</tt> <tt class="py-name">Va [...]
+<a name="L1000"></a><tt class="py-lineno">1000</tt>  <tt class="py-line"> </tt>
+<a name="L1001"></a><tt class="py-lineno">1001</tt>  <tt class="py-line">        <tt class="py-name">target</tt> <tt class="py-op">=</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE_2D</tt> </tt>
+<a name="L1002"></a><tt class="py-lineno">1002</tt>  <tt class="py-line">        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glCopyTexImage2D</tt><tt class="py-op">(</tt><tt class="py-name">target</tt><tt class="py-op">,</tt> </tt>
+<a name="L1003"></a><tt class="py-lineno">1003</tt>  <tt class="py-line">                            <tt class="py-name">mipmap_level</tt><tt class="py-op">,</tt> </tt>
+<a name="L1004"></a><tt class="py-lineno">1004</tt>  <tt class="py-line">                            <tt class="py-name">internal_format</tt><tt class="py-op">,</tt> </tt>
+<a name="L1005"></a><tt class="py-lineno">1005</tt>  <tt class="py-line">                            <tt class="py-name">x</tt><tt class="py-op">,</tt> </tt>
+<a name="L1006"></a><tt class="py-lineno">1006</tt>  <tt class="py-line">                            <tt class="py-name">y</tt><tt class="py-op">,</tt> </tt>
+<a name="L1007"></a><tt class="py-lineno">1007</tt>  <tt class="py-line">                            <tt class="py-name">width</tt><tt class="py-op">,</tt> </tt>
+<a name="L1008"></a><tt class="py-lineno">1008</tt>  <tt class="py-line">                            <tt class="py-name">height</tt><tt class="py-op">,</tt> </tt>
+<a name="L1009"></a><tt class="py-lineno">1009</tt>  <tt class="py-line">                            <tt class="py-name">border</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L1010"></a><tt class="py-lineno">1010</tt>  <tt class="py-line"> </tt>
+<a name="L1011"></a><tt class="py-lineno">1011</tt>  <tt class="py-line"><tt class="py-comment">####################################################################</tt> </tt>
+<a name="L1012"></a><tt class="py-lineno">1012</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L1013"></a><tt class="py-lineno">1013</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#        Stimulus - TextureStimulus</tt> </tt>
+<a name="L1014"></a><tt class="py-lineno">1014</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L1015"></a><tt class="py-lineno">1015</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">####################################################################</tt> </tt>
+<a name="L1016"></a><tt class="py-lineno">1016</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="TextureStimulusBaseClass"></a><div id="TextureStimulusBaseClass-def"><a name="L1017"></a><tt class="py-lineno">1017</tt> <a class="py-toggle" href="#" id="TextureStimulusBaseClass-toggle" onclick="return toggle('TextureStimulusBaseClass');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.Textures.TextureStimulusBaseClass-class.html">TextureStimulusBaseClass</a><tt class="py-op">(</tt><tt class="py-base-class">VisionEgg</tt><tt cl [...]
+</div><div id="TextureStimulusBaseClass-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="TextureStimulusBaseClass-expanded"><a name="L1018"></a><tt class="py-lineno">1018</tt>  <tt class="py-line">    <tt class="py-docstring">"""Parameters common to all stimuli that use textures.</tt> </tt>
+<a name="L1019"></a><tt class="py-lineno">1019</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1020"></a><tt class="py-lineno">1020</tt>  <tt class="py-line"><tt class="py-docstring">    Don't instantiate this class directly.</tt> </tt>
+<a name="L1021"></a><tt class="py-lineno">1021</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1022"></a><tt class="py-lineno">1022</tt>  <tt class="py-line"><tt class="py-docstring">    Parameters</tt> </tt>
+<a name="L1023"></a><tt class="py-lineno">1023</tt>  <tt class="py-line"><tt class="py-docstring">    ==========</tt> </tt>
+<a name="L1024"></a><tt class="py-lineno">1024</tt>  <tt class="py-line"><tt class="py-docstring">    texture            -- source of texture data (Instance of <class 'VisionEgg.Textures.Texture'>)</tt> </tt>
+<a name="L1025"></a><tt class="py-lineno">1025</tt>  <tt class="py-line"><tt class="py-docstring">                          Default: (determined at runtime)</tt> </tt>
+<a name="L1026"></a><tt class="py-lineno">1026</tt>  <tt class="py-line"><tt class="py-docstring">    texture_mag_filter -- OpenGL filter enum (Integer)</tt> </tt>
+<a name="L1027"></a><tt class="py-lineno">1027</tt>  <tt class="py-line"><tt class="py-docstring">                          Default: GL_LINEAR (9729)</tt> </tt>
+<a name="L1028"></a><tt class="py-lineno">1028</tt>  <tt class="py-line"><tt class="py-docstring">    texture_min_filter -- OpenGL filter enum (Integer)</tt> </tt>
+<a name="L1029"></a><tt class="py-lineno">1029</tt>  <tt class="py-line"><tt class="py-docstring">                          Default: (GL enum determined at runtime)</tt> </tt>
+<a name="L1030"></a><tt class="py-lineno">1030</tt>  <tt class="py-line"><tt class="py-docstring">    texture_wrap_s     -- OpenGL texture wrap enum (Integer)</tt> </tt>
+<a name="L1031"></a><tt class="py-lineno">1031</tt>  <tt class="py-line"><tt class="py-docstring">                          Default: (GL enum determined at runtime)</tt> </tt>
+<a name="L1032"></a><tt class="py-lineno">1032</tt>  <tt class="py-line"><tt class="py-docstring">    texture_wrap_t     -- OpenGL texture wrap enum (Integer)</tt> </tt>
+<a name="L1033"></a><tt class="py-lineno">1033</tt>  <tt class="py-line"><tt class="py-docstring">                          Default: (GL enum determined at runtime)</tt> </tt>
+<a name="L1034"></a><tt class="py-lineno">1034</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1035"></a><tt class="py-lineno">1035</tt>  <tt class="py-line"><tt class="py-docstring">    Constant Parameters</tt> </tt>
+<a name="L1036"></a><tt class="py-lineno">1036</tt>  <tt class="py-line"><tt class="py-docstring">    ===================</tt> </tt>
+<a name="L1037"></a><tt class="py-lineno">1037</tt>  <tt class="py-line"><tt class="py-docstring">    internal_format   -- format with which OpenGL uses texture data (OpenGL data type enum) (Integer)</tt> </tt>
+<a name="L1038"></a><tt class="py-lineno">1038</tt>  <tt class="py-line"><tt class="py-docstring">                         Default: GL_RGB (6407)</tt> </tt>
+<a name="L1039"></a><tt class="py-lineno">1039</tt>  <tt class="py-line"><tt class="py-docstring">    mipmaps_enabled   -- Are mipmaps enabled? (Boolean)</tt> </tt>
+<a name="L1040"></a><tt class="py-lineno">1040</tt>  <tt class="py-line"><tt class="py-docstring">                         Default: True</tt> </tt>
+<a name="L1041"></a><tt class="py-lineno">1041</tt>  <tt class="py-line"><tt class="py-docstring">    shrink_texture_ok -- Allow automatic shrinking of texture if too big? (Boolean)</tt> </tt>
+<a name="L1042"></a><tt class="py-lineno">1042</tt>  <tt class="py-line"><tt class="py-docstring">                         Default: False</tt> </tt>
+<a name="L1043"></a><tt class="py-lineno">1043</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L1044"></a><tt class="py-lineno">1044</tt>  <tt class="py-line"> </tt>
+<a name="L1045"></a><tt class="py-lineno">1045</tt>  <tt class="py-line">    <tt id="link-93" class="py-name" targets="Variable VisionEgg.ClassWithParameters.parameters_and_defaults=VisionEgg.ClassWithParameters-class.html#parameters_and_defaults,Variable VisionEgg.Core.FixationSpot.parameters_and_defaults=VisionEgg.Core.FixationSpot-class.html#parameters_and_defaults,Variable VisionEgg.Core.ProjectionBaseClass.parameters_and_defaults=VisionEgg.Core.ProjectionBaseClass-class.html#paramet [...]
+VisionEgg.Core.FixationSpot.parameters_and_defaults
+VisionEgg.Core.ProjectionBaseClass.parameters_and_defaults
+VisionEgg.Core.Screen.parameters_and_defaults
+VisionEgg.Core.Viewport.parameters_and_defaults
+VisionEgg.Daq.Buffered.parameters_and_defaults
+VisionEgg.Dots.DotArea2D.parameters_and_defaults
+VisionEgg.FlowControl.Presentation.parameters_and_defaults
+VisionEgg.Gratings.AlphaGratingCommon.parameters_and_defaults
+VisionEgg.Gratings.LuminanceGratingCommon.parameters_and_defaults
+VisionEgg.Gratings.SinGrating2D.parameters_and_defaults
+VisionEgg.Gratings.SinGrating3D.parameters_and_defaults
+VisionEgg.MoreStimuli.Arrow.parameters_and_defaults
+VisionEgg.MoreStimuli.FilledCircle.parameters_and_defaults
+VisionEgg.MoreStimuli.Rectangle3D.parameters_and_defaults
+VisionEgg.MoreStimuli.Target2D.parameters_and_defaults
+VisionEgg.PyroApps.EPhysGUI.Loop.parameters_and_defaults
+VisionEgg.SphereMap.AzElGrid.parameters_and_defaults
+VisionEgg.SphereMap.SphereGrating.parameters_and_defaults
+VisionEgg.SphereMap.SphereMap.parameters_and_defaults
+VisionEgg.SphereMap.SphereWindow.parameters_and_defaults
+VisionEgg.Text.BitmapText.parameters_and_defaults
+VisionEgg.Text.GlutTextBase.parameters_and_defaults
+VisionEgg.Text.StrokeText.parameters_and_defaults
+VisionEgg.Text.Text.parameters_and_defaults
+VisionEgg.Textures.FixationCross.parameters_and_defaults
+VisionEgg.Textures.SpinningDrum.parameters_and_defaults
+VisionEgg.Textures.TextureStimulus.parameters_and_defaults
+VisionEgg.Textures.TextureStimulus3D.parameters_and_defaults
+VisionEgg.Textures.TextureStimulusBaseClass.parameters_and_defaults
+VisionEgg.WrappedText.WrappedText.parameters_and_defaults" class="py-name" href="#" onclick="return doclink('link-93', 'parameters_and_defaults', 'link-93');">parameters_and_defaults</a></tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> </tt>
+<a name="L1046"></a><tt class="py-lineno">1046</tt>  <tt class="py-line">        <tt class="py-string">'texture'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
+<a name="L1047"></a><tt class="py-lineno">1047</tt>  <tt class="py-line">                   <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-94" class="py-name" targets="Class VisionEgg.ParameterTypes.Instance=VisionEgg.ParameterTypes.Instance-class.html"><a title="VisionEgg.ParameterTypes.Instance" class="py-name" href="#" onclick="return doclink('link-94', 'Instance', 'link-94');">Instance</a></tt><tt class="py-op">(</tt><tt id="link-95" class="py-name"><a title="V [...]
+<a name="L1048"></a><tt class="py-lineno">1048</tt>  <tt class="py-line">                   <tt class="py-string">"source of texture data"</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L1049"></a><tt class="py-lineno">1049</tt>  <tt class="py-line">        <tt class="py-string">'texture_mag_filter'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_LINEAR</tt><tt class="py-op">,</tt> </tt>
+<a name="L1050"></a><tt class="py-lineno">1050</tt>  <tt class="py-line">                              <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-96" class="py-name" targets="Class VisionEgg.ParameterTypes.Integer=VisionEgg.ParameterTypes.Integer-class.html"><a title="VisionEgg.ParameterTypes.Integer" class="py-name" href="#" onclick="return doclink('link-96', 'Integer', 'link-96');">Integer</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L1051"></a><tt class="py-lineno">1051</tt>  <tt class="py-line">                              <tt class="py-string">"OpenGL filter enum"</tt><tt class="py-op">,</tt> </tt>
+<a name="L1052"></a><tt class="py-lineno">1052</tt>  <tt class="py-line">                              <tt id="link-97" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-97', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-98" class="py-name" targets="Class VisionEgg.ParameterDefinition=VisionEgg.ParameterDefinition-class.html"><a title="VisionEgg.ParameterDefinition" class="py-name" href="#" onclick="return doclin [...]
+<a name="L1053"></a><tt class="py-lineno">1053</tt>  <tt class="py-line">        <tt class="py-string">'texture_min_filter'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-comment"># defaults to gl.GL_LINEAR_MIPMAP_LINEAR (unless mipmaps_enabled False, then gl.GL_LINEAR)</tt> </tt>
+<a name="L1054"></a><tt class="py-lineno">1054</tt>  <tt class="py-line">                              <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-100" class="py-name"><a title="VisionEgg.ParameterTypes.Integer" class="py-name" href="#" onclick="return doclink('link-100', 'Integer', 'link-96');">Integer</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L1055"></a><tt class="py-lineno">1055</tt>  <tt class="py-line">                              <tt class="py-string">"OpenGL filter enum"</tt><tt class="py-op">,</tt> </tt>
+<a name="L1056"></a><tt class="py-lineno">1056</tt>  <tt class="py-line">                              <tt id="link-101" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-101', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-102" class="py-name"><a title="VisionEgg.ParameterDefinition" class="py-name" href="#" onclick="return doclink('link-102', 'ParameterDefinition', 'link-98');">ParameterDefinition</a></tt><tt cl [...]
+<a name="L1057"></a><tt class="py-lineno">1057</tt>  <tt class="py-line">        <tt class="py-string">'texture_wrap_s'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-comment"># set to gl.GL_CLAMP_TO_EDGE below</tt> </tt>
+<a name="L1058"></a><tt class="py-lineno">1058</tt>  <tt class="py-line">                          <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-104" class="py-name"><a title="VisionEgg.ParameterTypes.Integer" class="py-name" href="#" onclick="return doclink('link-104', 'Integer', 'link-96');">Integer</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L1059"></a><tt class="py-lineno">1059</tt>  <tt class="py-line">                          <tt class="py-string">"OpenGL texture wrap enum"</tt><tt class="py-op">,</tt> </tt>
+<a name="L1060"></a><tt class="py-lineno">1060</tt>  <tt class="py-line">                          <tt id="link-105" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-105', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-106" class="py-name"><a title="VisionEgg.ParameterDefinition" class="py-name" href="#" onclick="return doclink('link-106', 'ParameterDefinition', 'link-98');">ParameterDefinition</a></tt><tt class= [...]
+<a name="L1061"></a><tt class="py-lineno">1061</tt>  <tt class="py-line">        <tt class="py-string">'texture_wrap_t'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-comment"># set to gl.GL_CLAMP_TO_EDGE below</tt> </tt>
+<a name="L1062"></a><tt class="py-lineno">1062</tt>  <tt class="py-line">                          <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-108" class="py-name"><a title="VisionEgg.ParameterTypes.Integer" class="py-name" href="#" onclick="return doclink('link-108', 'Integer', 'link-96');">Integer</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L1063"></a><tt class="py-lineno">1063</tt>  <tt class="py-line">                          <tt class="py-string">"OpenGL texture wrap enum"</tt><tt class="py-op">,</tt> </tt>
+<a name="L1064"></a><tt class="py-lineno">1064</tt>  <tt class="py-line">                          <tt id="link-109" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-109', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-110" class="py-name"><a title="VisionEgg.ParameterDefinition" class="py-name" href="#" onclick="return doclink('link-110', 'ParameterDefinition', 'link-98');">ParameterDefinition</a></tt><tt class= [...]
+<a name="L1065"></a><tt class="py-lineno">1065</tt>  <tt class="py-line">        <tt class="py-op">}</tt> </tt>
+<a name="L1066"></a><tt class="py-lineno">1066</tt>  <tt class="py-line"> </tt>
+<a name="L1067"></a><tt class="py-lineno">1067</tt>  <tt class="py-line">    <tt id="link-112" class="py-name" targets="Variable VisionEgg.ClassWithParameters.constant_parameters_and_defaults=VisionEgg.ClassWithParameters-class.html#constant_parameters_and_defaults,Variable VisionEgg.Core.Screen.constant_parameters_and_defaults=VisionEgg.Core.Screen-class.html#constant_parameters_and_defaults,Variable VisionEgg.Daq.Analog.constant_parameters_and_defaults=VisionEgg.Daq.Analog-class.html#c [...]
+VisionEgg.Core.Screen.constant_parameters_and_defaults
+VisionEgg.Daq.Analog.constant_parameters_and_defaults
+VisionEgg.Daq.Channel.constant_parameters_and_defaults
+VisionEgg.Daq.SignalType.constant_parameters_and_defaults
+VisionEgg.Dots.DotArea2D.constant_parameters_and_defaults
+VisionEgg.SphereMap.AzElGrid.constant_parameters_and_defaults
+VisionEgg.Text.Text.constant_parameters_and_defaults
+VisionEgg.Textures.FixationCross.constant_parameters_and_defaults
+VisionEgg.Textures.Mask2D.constant_parameters_and_defaults
+VisionEgg.Textures.TextureStimulusBaseClass.constant_parameters_and_defaults
+VisionEgg.WrappedText.WrappedText.constant_parameters_and_defaults" class="py-name" href="#" onclick="return doclink('link-112', 'constant_parameters_and_defaults', 'link-112');">constant_parameters_and_defaults</a></tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> </tt>
+<a name="L1068"></a><tt class="py-lineno">1068</tt>  <tt class="py-line">        <tt class="py-string">'internal_format'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_RGB</tt><tt class="py-op">,</tt><tt class="py-comment">#None,</tt> </tt>
+<a name="L1069"></a><tt class="py-lineno">1069</tt>  <tt class="py-line">                           <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-113" class="py-name"><a title="VisionEgg.ParameterTypes.Integer" class="py-name" href="#" onclick="return doclink('link-113', 'Integer', 'link-96');">Integer</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L1070"></a><tt class="py-lineno">1070</tt>  <tt class="py-line">                           <tt class="py-string">"format with which OpenGL uses texture data (OpenGL data type enum)"</tt><tt class="py-op">,</tt> </tt>
+<a name="L1071"></a><tt class="py-lineno">1071</tt>  <tt class="py-line">                           <tt id="link-114" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-114', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-115" class="py-name"><a title="VisionEgg.ParameterDefinition" class="py-name" href="#" onclick="return doclink('link-115', 'ParameterDefinition', 'link-98');">ParameterDefinition</a></tt><tt class [...]
+<a name="L1072"></a><tt class="py-lineno">1072</tt>  <tt class="py-line">        <tt class="py-string">'mipmaps_enabled'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-name">True</tt><tt class="py-op">,</tt> </tt>
+<a name="L1073"></a><tt class="py-lineno">1073</tt>  <tt class="py-line">                           <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-117" class="py-name" targets="Class VisionEgg.ParameterTypes.Boolean=VisionEgg.ParameterTypes.Boolean-class.html"><a title="VisionEgg.ParameterTypes.Boolean" class="py-name" href="#" onclick="return doclink('link-117', 'Boolean', 'link-117');">Boolean</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L1074"></a><tt class="py-lineno">1074</tt>  <tt class="py-line">                           <tt class="py-string">"Are mipmaps enabled?"</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L1075"></a><tt class="py-lineno">1075</tt>  <tt class="py-line">        <tt class="py-string">'shrink_texture_ok'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-name">False</tt><tt class="py-op">,</tt> </tt>
+<a name="L1076"></a><tt class="py-lineno">1076</tt>  <tt class="py-line">                             <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-118" class="py-name"><a title="VisionEgg.ParameterTypes.Boolean" class="py-name" href="#" onclick="return doclink('link-118', 'Boolean', 'link-117');">Boolean</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L1077"></a><tt class="py-lineno">1077</tt>  <tt class="py-line">                             <tt class="py-string">"Allow automatic shrinking of texture if too big?"</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L1078"></a><tt class="py-lineno">1078</tt>  <tt class="py-line">        <tt class="py-op">}</tt> </tt>
+<a name="L1079"></a><tt class="py-lineno">1079</tt>  <tt class="py-line"> </tt>
+<a name="L1080"></a><tt class="py-lineno">1080</tt>  <tt class="py-line">    <tt class="py-name">__slots__</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt> </tt>
+<a name="L1081"></a><tt class="py-lineno">1081</tt>  <tt class="py-line">        <tt class="py-string">'texture_object'</tt><tt class="py-op">,</tt> </tt>
+<a name="L1082"></a><tt class="py-lineno">1082</tt>  <tt class="py-line">        <tt class="py-string">'_using_texture'</tt><tt class="py-op">,</tt> </tt>
+<a name="L1083"></a><tt class="py-lineno">1083</tt>  <tt class="py-line">        <tt class="py-op">)</tt> </tt>
+<a name="L1084"></a><tt class="py-lineno">1084</tt>  <tt class="py-line"> </tt>
+<a name="L1085"></a><tt class="py-lineno">1085</tt>  <tt class="py-line">    <tt id="link-119" class="py-name" targets="Variable VisionEgg.Textures.TextureStimulusBaseClass._mipmap_modes=VisionEgg.Textures.TextureStimulusBaseClass-class.html#_mipmap_modes"><a title="VisionEgg.Textures.TextureStimulusBaseClass._mipmap_modes" class="py-name" href="#" onclick="return doclink('link-119', '_mipmap_modes', 'link-119');">_mipmap_modes</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><t [...]
+<a name="L1086"></a><tt class="py-lineno">1086</tt>  <tt class="py-line">                     <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_NEAREST_MIPMAP_LINEAR</tt><tt class="py-op">,</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_NEAREST_MIPMAP_NEAREST</tt><tt class="py-op">]</tt> </tt>
+<a name="L1087"></a><tt class="py-lineno">1087</tt>  <tt class="py-line"> </tt>
+<a name="TextureStimulusBaseClass.__init__"></a><div id="TextureStimulusBaseClass.__init__-def"><a name="L1088"></a><tt class="py-lineno">1088</tt> <a class="py-toggle" href="#" id="TextureStimulusBaseClass.__init__-toggle" onclick="return toggle('TextureStimulusBaseClass.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.Textures.TextureStimulusBaseClass-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-p [...]
+</div><div id="TextureStimulusBaseClass.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="TextureStimulusBaseClass.__init__-expanded"><a name="L1089"></a><tt class="py-lineno">1089</tt>  <tt class="py-line">        <tt id="link-120" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-120', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-121" class="py-name"><a title="VisionEgg.Core [...]
+VisionEgg.Configuration.Config.__init__
+VisionEgg.Core.FixationSpot.__init__
+VisionEgg.Core.FrameTimer.__init__
+VisionEgg.Core.ModelView.__init__
+VisionEgg.Core.OrthographicProjection.__init__
+VisionEgg.Core.OrthographicProjectionNoZClip.__init__
+VisionEgg.Core.PerspectiveProjection.__init__
+VisionEgg.Core.Projection.__init__
+VisionEgg.Core.ProjectionBaseClass.__init__
+VisionEgg.Core.Screen.__init__
+VisionEgg.Core.SimplePerspectiveProjection.__init__
+VisionEgg.Core.Stimulus.__init__
+VisionEgg.Core.Viewport.__init__
+VisionEgg.Daq.Channel.__init__
+VisionEgg.Daq.DaqMode.__init__
+VisionEgg.Daq.Device.__init__
+VisionEgg.Daq.Functionality.__init__
+VisionEgg.Daq.SignalType.__init__
+VisionEgg.DaqKeyboard.KeyboardTriggerInController.__init__
+VisionEgg.DaqLPT.LPTChannel.__init__
+VisionEgg.DaqLPT.LPTDevice.__init__
+VisionEgg.DaqLPT.LPTTriggerInController.__init__
+VisionEgg.DaqLPT.LPTTriggerOutController.__init__
+VisionEgg.Deprecated.Message.__init__
+VisionEgg.Dots.DotArea2D.__init__
+VisionEgg.FlowControl.ConstantController.__init__
+VisionEgg.FlowControl.Controller.__init__
+VisionEgg.FlowControl.EncapsulatedController.__init__
+VisionEgg.FlowControl.EvalStringController.__init__
+VisionEgg.FlowControl.ExecStringController.__init__
+VisionEgg.FlowControl.FunctionController.__init__
+VisionEgg.FlowControl.Presentation.__init__
+VisionEgg.GLTrace.Wrapper.__init__
+VisionEgg.GUI.AppWindow.__init__
+VisionEgg.GUI.GetKeypressDialog.__init__
+VisionEgg.GUI.GraphicsConfigurationWindow.__init__
+VisionEgg.GUI.InfoFrame.__init__
+VisionEgg.GUI.ProgressBar.__init__
+VisionEgg.GUI.ToplevelDialog.__init__
+VisionEgg.Gratings.SinGrating2D.__init__
+VisionEgg.Gratings.SinGrating3D.__init__
+VisionEgg.MoreStimuli.Arrow.__init__
+VisionEgg.MoreStimuli.FilledCircle.__init__
+VisionEgg.MoreStimuli.Rectangle3D.__init__
+VisionEgg.MoreStimuli.Target2D.__init__
+VisionEgg.ParameterTypes.AnyOf.__init__
+VisionEgg.ParameterTypes.Instance.__init__
+VisionEgg.ParameterTypes.Sequence.__init__
+VisionEgg.ParameterTypes.SubClass.__init__
+VisionEgg.PyroApps.AST_ext.AST_Visitor.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalMetaParameters.__init__
+VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.__init__
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.__init__
+VisionEgg.PyroApps.DropinGUI.DropinMetaParameters.__init__
+VisionEgg.PyroApps.DropinServer.DropinMetaController.__init__
+VisionEgg.PyroApps.EPhysGUI.AppWindow.__init__
+VisionEgg.PyroApps.EPhysGUI.BarButton.__init__
+VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase.__init__
+VisionEgg.PyroApps.EPhysGUI.GammaFrame.__init__
+VisionEgg.PyroApps.EPhysGUI.ImageSequenceLauncher.__init__
+VisionEgg.PyroApps.EPhysGUI.Loop.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopContainedObject.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopParamDialog.__init__
+VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.__init__
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.__init__
+VisionEgg.PyroApps.EPhysServer.EPhysServer.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingMetaParameters.__init__
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.GridGUI.GridControlFrame.__init__
+VisionEgg.PyroApps.GridGUI.GridMetaParameters.__init__
+VisionEgg.PyroApps.GridServer.GridMetaController.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetMetaParameters.__init__
+VisionEgg.PyroApps.MouseTargetServer.MousePositionController.__init__
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetOrientationController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetPositionController.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.CallbackEntry.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionParameters.__init__
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingMetaParameters.__init__
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumMetaParameters.__init__
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.__init__
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.__init__
+VisionEgg.PyroApps.TargetGUI.TargetMetaParameters.__init__
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.__init__
+VisionEgg.PyroClient.PyroClient.__init__
+VisionEgg.PyroHelpers.PyroConstantController.__init__
+VisionEgg.PyroHelpers.PyroEncapsulatedController.__init__
+VisionEgg.PyroHelpers.PyroEvalStringController.__init__
+VisionEgg.PyroHelpers.PyroExecStringController.__init__
+VisionEgg.PyroHelpers.PyroListenController.__init__
+VisionEgg.PyroHelpers.PyroLocalDictController.__init__
+VisionEgg.PyroHelpers.PyroServer.__init__
+VisionEgg.QuickTime.MovieTexture.__init__
+VisionEgg.ResponseControl.KeyboardResponseController.__init__
+VisionEgg.ResponseControl.ResponseController.__init__
+VisionEgg.SphereMap.AzElGrid.__init__
+VisionEgg.SphereMap.SphereGrating.__init__
+VisionEgg.SphereMap.SphereMap.__init__
+VisionEgg.SphereMap.SphereWindow.__init__
+VisionEgg.TCPController.SocketListenController.__init__
+VisionEgg.TCPController.TCPController.__init__
+VisionEgg.TCPController.TCPServer.__init__
+VisionEgg.Text.BitmapText.__init__
+VisionEgg.Text.GlutTextBase.__init__
+VisionEgg.Text.StrokeText.__init__
+VisionEgg.Text.Text.__init__
+VisionEgg.Textures.FixationCross.__init__
+VisionEgg.Textures.Mask2D.__init__
+VisionEgg.Textures.SpinningDrum.__init__
+VisionEgg.Textures.Texture.__init__
+VisionEgg.Textures.TextureFromFile.__init__
+VisionEgg.Textures.TextureObject.__init__
+VisionEgg.Textures.TextureStimulusBaseClass.__init__
+VisionEgg.ThreeDeeMath.TransformMatrix.__init__
+VisionEgg.WrappedText.WrappedText.__init__
+VisionEgg.qtmovie.Movie.__init__
+VisionEgg.qtmovie.Rect.__init__" class="py-name" href="#" onclick="return doclink('link-123', '__init__', 'link-55');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt><tt class="py-op">**</tt><tt class="py-name">kw</tt><tt class="py-op">)</tt> </tt>
+<a name="L1090"></a><tt class="py-lineno">1090</tt>  <tt class="py-line"> </tt>
+<a name="L1091"></a><tt class="py-lineno">1091</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">texture</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L1092"></a><tt class="py-lineno">1092</tt>  <tt class="py-line">            <tt class="py-comment"># generate default texture</tt> </tt>
+<a name="L1093"></a><tt class="py-lineno">1093</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">texture</tt> <tt class="py-op">=</tt> <tt id="link-124" class="py-name"><a title="VisionEgg.Textures.Texture" class="py-name" href="#" onclick="return doclink('link-124', 'Texture', 'link-54');">Texture</a></tt><tt class="py-op">(</tt><tt class="p [...]
+<a name="L1094"></a><tt class="py-lineno">1094</tt>  <tt class="py-line"> </tt>
+<a name="L1095"></a><tt class="py-lineno">1095</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">texture_min_filter</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L1096"></a><tt class="py-lineno">1096</tt>  <tt class="py-line">            <tt class="py-comment"># generate default texture minimization filter</tt> </tt>
+<a name="L1097"></a><tt class="py-lineno">1097</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">constant_parameters</tt><tt class="py-op">.</tt><tt class="py-name">mipmaps_enabled</tt><tt class="py-op">:</tt> </tt>
+<a name="L1098"></a><tt class="py-lineno">1098</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">texture_min_filter</tt> <tt class="py-op">=</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_LINEAR_MIPMAP_LINEAR</tt> </tt>
+<a name="L1099"></a><tt class="py-lineno">1099</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1100"></a><tt class="py-lineno">1100</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">texture_min_filter</tt> <tt class="py-op">=</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_LINEAR</tt> </tt>
+<a name="L1101"></a><tt class="py-lineno">1101</tt>  <tt class="py-line"> </tt>
+<a name="L1102"></a><tt class="py-lineno">1102</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">constant_parameters</tt><tt class="py-op">.</tt><tt class="py-name">mipmaps_enabled</tt><tt class="py-op">:</tt> </tt>
+<a name="L1103"></a><tt class="py-lineno">1103</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">texture_min_filter</tt> <tt class="py-keyword">in</tt> <tt id="link-125" class="py-name" targets="Class VisionEgg.Textures.TextureStimulusBaseClass=VisionEgg.Textures.TextureStimulusBaseClass-class.html"><a title="VisionEgg.Textures.TextureStim [...]
+<a name="L1104"></a><tt class="py-lineno">1104</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">"texture_min_filter cannot be a mipmap type if mipmaps not enabled."</tt><tt class="py-op">)</tt> </tt>
+<a name="L1105"></a><tt class="py-lineno">1105</tt>  <tt class="py-line">        <tt class="py-comment"># We have to set these parameters here because we may have</tt> </tt>
+<a name="L1106"></a><tt class="py-lineno">1106</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># re-assigned gl.GL_CLAMP_TO_EDGE.  This allows us to use</tt> </tt>
+<a name="L1107"></a><tt class="py-lineno">1107</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># symbol gl.GL_CLAMP_TO_EDGE even if our version of OpenGL</tt> </tt>
+<a name="L1108"></a><tt class="py-lineno">1108</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># doesn't support it.</tt> </tt>
+<a name="L1109"></a><tt class="py-lineno">1109</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">texture_wrap_s</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L1110"></a><tt class="py-lineno">1110</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">texture_wrap_s</tt> <tt class="py-op">=</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_CLAMP_TO_EDGE</tt> </tt>
+<a name="L1111"></a><tt class="py-lineno">1111</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">texture_wrap_t</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L1112"></a><tt class="py-lineno">1112</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">texture_wrap_t</tt> <tt class="py-op">=</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_CLAMP_TO_EDGE</tt> </tt>
+<a name="L1113"></a><tt class="py-lineno">1113</tt>  <tt class="py-line"> </tt>
+<a name="L1114"></a><tt class="py-lineno">1114</tt>  <tt class="py-line">        <tt class="py-comment"># Create an OpenGL texture object this instance "owns"</tt> </tt>
+<a name="L1115"></a><tt class="py-lineno">1115</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">texture_object</tt> <tt class="py-op">=</tt> <tt id="link-127" class="py-name"><a title="VisionEgg.Textures.TextureObject" class="py-name" href="#" onclick="return doclink('link-127', 'TextureObject', 'link-34');">TextureObject</a></tt><tt class="py-op">(</tt><tt class="py-name">dimensions</tt><tt class="py-o [...]
+<a name="L1116"></a><tt class="py-lineno">1116</tt>  <tt class="py-line"> </tt>
+<a name="L1117"></a><tt class="py-lineno">1117</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_reload_texture</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1118"></a><tt class="py-lineno">1118</tt>  <tt class="py-line"> </tt>
+<a name="TextureStimulusBaseClass._reload_texture"></a><div id="TextureStimulusBaseClass._reload_texture-def"><a name="L1119"></a><tt class="py-lineno">1119</tt> <a class="py-toggle" href="#" id="TextureStimulusBaseClass._reload_texture-toggle" onclick="return toggle('TextureStimulusBaseClass._reload_texture');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.Textures.TextureStimulusBaseClass-class.html#_reload_texture">_reload_texture< [...]
+</div><div id="TextureStimulusBaseClass._reload_texture-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="TextureStimulusBaseClass._reload_texture-expanded"><a name="L1120"></a><tt class="py-lineno">1120</tt>  <tt class="py-line">        <tt class="py-docstring">"""(Re)load texture to OpenGL"""</tt> </tt>
+<a name="L1121"></a><tt class="py-lineno">1121</tt>  <tt class="py-line">        <tt class="py-name">p</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt> </tt>
+<a name="L1122"></a><tt class="py-lineno">1122</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_using_texture</tt> <tt class="py-op">=</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">texture</tt> </tt>
+<a name="L1123"></a><tt class="py-lineno">1123</tt>  <tt class="py-line"> </tt>
+<a name="L1124"></a><tt class="py-lineno">1124</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">constant_parameters</tt><tt class="py-op">.</tt><tt class="py-name">shrink_texture_ok</tt><tt class="py-op">:</tt> </tt>
+<a name="L1125"></a><tt class="py-lineno">1125</tt>  <tt class="py-line">            <tt class="py-comment"># send texture to OpenGL</tt> </tt>
+<a name="L1126"></a><tt class="py-lineno">1126</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">texture</tt><tt class="py-op">.</tt><tt id="link-128" class="py-name" targets="Method VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.load()=VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html#load,Method VisionEgg.QuickTime.MovieTexture.load()=VisionEgg.QuickTime.Movie [...]
+VisionEgg.QuickTime.MovieTexture.load
+VisionEgg.Textures.Texture.load" class="py-name" href="#" onclick="return doclink('link-128', 'load', 'link-128');">load</a></tt><tt class="py-op">(</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">texture_object</tt><tt class="py-op">,</tt> </tt>
+<a name="L1127"></a><tt class="py-lineno">1127</tt>  <tt class="py-line">                            <tt class="py-name">internal_format</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">constant_parameters</tt><tt class="py-op">.</tt><tt class="py-name">internal_format</tt><tt class="py-op">,</tt> </tt>
+<a name="L1128"></a><tt class="py-lineno">1128</tt>  <tt class="py-line">                            <tt class="py-name">build_mipmaps</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">constant_parameters</tt><tt class="py-op">.</tt><tt class="py-name">mipmaps_enabled</tt> <tt class="py-op">)</tt> </tt>
+<a name="L1129"></a><tt class="py-lineno">1129</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1130"></a><tt class="py-lineno">1130</tt>  <tt class="py-line">            <tt class="py-name">max_dim</tt> <tt class="py-op">=</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glGetIntegerv</tt><tt class="py-op">(</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_MAX_TEXTURE_SIZE</tt> <tt class="py-op">)</tt> </tt>
+<a name="L1131"></a><tt class="py-lineno">1131</tt>  <tt class="py-line">            <tt class="py-name">resized</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L1132"></a><tt class="py-lineno">1132</tt>  <tt class="py-line">            <tt class="py-keyword">while</tt> <tt class="py-name">max</tt><tt class="py-op">(</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">texture</tt><tt class="py-op">.</tt><tt id="link-129" class="py-name"><a title="VisionEgg.Core.Screen.size" class="py-name" href="#" onclick="return doclink('link-129', 'size', 'link-15');">size</a></tt><tt class="py-op">)</tt> <tt class="py-op">>< [...]
+<a name="L1133"></a><tt class="py-lineno">1133</tt>  <tt class="py-line">                <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">texture</tt><tt class="py-op">.</tt><tt id="link-130" class="py-name" targets="Method VisionEgg.QuickTime.MovieTexture.make_half_size()=VisionEgg.QuickTime.MovieTexture-class.html#make_half_size,Method VisionEgg.Textures.Texture.make_half_size()=VisionEgg.Textures.Texture-class.html#make_half_size"><a title="VisionEgg.QuickTime.Mov [...]
+VisionEgg.Textures.Texture.make_half_size" class="py-name" href="#" onclick="return doclink('link-130', 'make_half_size', 'link-130');">make_half_size</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1134"></a><tt class="py-lineno">1134</tt>  <tt class="py-line">                <tt class="py-name">resized</tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L1135"></a><tt class="py-lineno">1135</tt>  <tt class="py-line">            <tt class="py-name">loaded_ok</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L1136"></a><tt class="py-lineno">1136</tt>  <tt class="py-line">            <tt class="py-keyword">while</tt> <tt class="py-keyword">not</tt> <tt class="py-name">loaded_ok</tt><tt class="py-op">:</tt> </tt>
+<a name="L1137"></a><tt class="py-lineno">1137</tt>  <tt class="py-line">                <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L1138"></a><tt class="py-lineno">1138</tt>  <tt class="py-line">                    <tt class="py-comment"># send texture to OpenGL</tt> </tt>
+<a name="L1139"></a><tt class="py-lineno">1139</tt>  <tt class="py-line"><tt class="py-comment"></tt>                    <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">texture</tt><tt class="py-op">.</tt><tt id="link-131" class="py-name"><a title="VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.load
+VisionEgg.QuickTime.MovieTexture.load
+VisionEgg.Textures.Texture.load" class="py-name" href="#" onclick="return doclink('link-131', 'load', 'link-128');">load</a></tt><tt class="py-op">(</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">texture_object</tt><tt class="py-op">,</tt> </tt>
+<a name="L1140"></a><tt class="py-lineno">1140</tt>  <tt class="py-line">                                    <tt class="py-name">internal_format</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">constant_parameters</tt><tt class="py-op">.</tt><tt class="py-name">internal_format</tt><tt class="py-op">,</tt> </tt>
+<a name="L1141"></a><tt class="py-lineno">1141</tt>  <tt class="py-line">                                    <tt class="py-name">build_mipmaps</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">constant_parameters</tt><tt class="py-op">.</tt><tt class="py-name">mipmaps_enabled</tt> <tt class="py-op">)</tt> </tt>
+<a name="L1142"></a><tt class="py-lineno">1142</tt>  <tt class="py-line">                <tt class="py-keyword">except</tt> <tt id="link-132" class="py-name"><a title="VisionEgg.Textures.TextureTooLargeError" class="py-name" href="#" onclick="return doclink('link-132', 'TextureTooLargeError', 'link-67');">TextureTooLargeError</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L1143"></a><tt class="py-lineno">1143</tt>  <tt class="py-line">                    <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">texture</tt><tt class="py-op">.</tt><tt id="link-133" class="py-name"><a title="VisionEgg.QuickTime.MovieTexture.make_half_size
+VisionEgg.Textures.Texture.make_half_size" class="py-name" href="#" onclick="return doclink('link-133', 'make_half_size', 'link-130');">make_half_size</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1144"></a><tt class="py-lineno">1144</tt>  <tt class="py-line">                    <tt class="py-name">resized</tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L1145"></a><tt class="py-lineno">1145</tt>  <tt class="py-line">                <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1146"></a><tt class="py-lineno">1146</tt>  <tt class="py-line">                    <tt class="py-name">loaded_ok</tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L1147"></a><tt class="py-lineno">1147</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">resized</tt><tt class="py-op">:</tt> </tt>
+<a name="L1148"></a><tt class="py-lineno">1148</tt>  <tt class="py-line">                <tt id="link-134" class="py-name"><a title="VisionEgg.logger" class="py-name" href="#" onclick="return doclink('link-134', 'logger', 'link-31');">logger</a></tt> <tt class="py-op">=</tt> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">getLogger</tt><tt class="py-op">(</tt><tt class="py-string">'VisionEgg.Textures'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1149"></a><tt class="py-lineno">1149</tt>  <tt class="py-line">                <tt id="link-135" class="py-name"><a title="VisionEgg.logger" class="py-name" href="#" onclick="return doclink('link-135', 'logger', 'link-31');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">warning</tt><tt class="py-op">(</tt><tt class="py-string">"Resized texture in %s to %d x %d"</tt><tt class="py-op">%</tt><tt class="py-op">(</tt> </tt>
+<a name="L1150"></a><tt class="py-lineno">1150</tt>  <tt class="py-line">                    <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">,</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">texture</tt><tt class="py-op">.</tt><tt id="link-136" class="py-name"><a title="VisionEgg.Core.Screen.size" class="py-name" href="#" onclick="return doclink('link-136', 'size', 'link-15');">size</a></ [...]
+</div></div><a name="L1151"></a><tt class="py-lineno">1151</tt>  <tt class="py-line"> </tt>
+<a name="Mask2D"></a><div id="Mask2D-def"><a name="L1152"></a><tt class="py-lineno">1152</tt> <a class="py-toggle" href="#" id="Mask2D-toggle" onclick="return toggle('Mask2D');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.Textures.Mask2D-class.html">Mask2D</a><tt class="py-op">(</tt><tt class="py-base-class">VisionEgg</tt><tt class="py-op">.</tt><tt class="py-base-class">ClassWithParameters</tt><tt class="py-op">)</tt><tt class="py-op [...]
+</div><div id="Mask2D-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="Mask2D-expanded"><a name="L1153"></a><tt class="py-lineno">1153</tt>  <tt class="py-line">    <tt class="py-docstring">"""A mask for windowing a portion of a texture.</tt> </tt>
+<a name="L1154"></a><tt class="py-lineno">1154</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1155"></a><tt class="py-lineno">1155</tt>  <tt class="py-line"><tt class="py-docstring">    Thanks to the author, Jon Peirce, of the AlphaStim class from the</tt> </tt>
+<a name="L1156"></a><tt class="py-lineno">1156</tt>  <tt class="py-line"><tt class="py-docstring">    PsychoPy package from which the idea to do this came.</tt> </tt>
+<a name="L1157"></a><tt class="py-lineno">1157</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1158"></a><tt class="py-lineno">1158</tt>  <tt class="py-line"><tt class="py-docstring">    Constant Parameters</tt> </tt>
+<a name="L1159"></a><tt class="py-lineno">1159</tt>  <tt class="py-line"><tt class="py-docstring">    ===================</tt> </tt>
+<a name="L1160"></a><tt class="py-lineno">1160</tt>  <tt class="py-line"><tt class="py-docstring">    function         -- 'gaussian' or 'circle' (String)</tt> </tt>
+<a name="L1161"></a><tt class="py-lineno">1161</tt>  <tt class="py-line"><tt class="py-docstring">                        Default: gaussian</tt> </tt>
+<a name="L1162"></a><tt class="py-lineno">1162</tt>  <tt class="py-line"><tt class="py-docstring">    num_samples      -- size of mask texture data (units: number of texels) (Sequence2 of Real)</tt> </tt>
+<a name="L1163"></a><tt class="py-lineno">1163</tt>  <tt class="py-line"><tt class="py-docstring">                        Default: (256, 256)</tt> </tt>
+<a name="L1164"></a><tt class="py-lineno">1164</tt>  <tt class="py-line"><tt class="py-docstring">    radius_parameter -- radius for circle, sigma for gaussian (Real)</tt> </tt>
+<a name="L1165"></a><tt class="py-lineno">1165</tt>  <tt class="py-line"><tt class="py-docstring">                        Default: 25.0</tt> </tt>
+<a name="L1166"></a><tt class="py-lineno">1166</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L1167"></a><tt class="py-lineno">1167</tt>  <tt class="py-line"> </tt>
+<a name="L1168"></a><tt class="py-lineno">1168</tt>  <tt class="py-line">    <tt class="py-comment"># All of these parameters are constant -- if you need a new mask, create a new instance</tt> </tt>
+<a name="L1169"></a><tt class="py-lineno">1169</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-138" class="py-name"><a title="VisionEgg.ClassWithParameters.constant_parameters_and_defaults
+VisionEgg.Core.Screen.constant_parameters_and_defaults
+VisionEgg.Daq.Analog.constant_parameters_and_defaults
+VisionEgg.Daq.Channel.constant_parameters_and_defaults
+VisionEgg.Daq.SignalType.constant_parameters_and_defaults
+VisionEgg.Dots.DotArea2D.constant_parameters_and_defaults
+VisionEgg.SphereMap.AzElGrid.constant_parameters_and_defaults
+VisionEgg.Text.Text.constant_parameters_and_defaults
+VisionEgg.Textures.FixationCross.constant_parameters_and_defaults
+VisionEgg.Textures.Mask2D.constant_parameters_and_defaults
+VisionEgg.Textures.TextureStimulusBaseClass.constant_parameters_and_defaults
+VisionEgg.WrappedText.WrappedText.constant_parameters_and_defaults" class="py-name" href="#" onclick="return doclink('link-138', 'constant_parameters_and_defaults', 'link-112');">constant_parameters_and_defaults</a></tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> </tt>
+<a name="L1170"></a><tt class="py-lineno">1170</tt>  <tt class="py-line">        <tt class="py-string">'function'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-string">'gaussian'</tt><tt class="py-op">,</tt> <tt class="py-comment"># can be 'gaussian' or 'circle'</tt> </tt>
+<a name="L1171"></a><tt class="py-lineno">1171</tt>  <tt class="py-line">                    <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-139" class="py-name" targets="Class VisionEgg.ParameterTypes.String=VisionEgg.ParameterTypes.String-class.html"><a title="VisionEgg.ParameterTypes.String" class="py-name" href="#" onclick="return doclink('link-139', 'String', 'link-139');">String</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L1172"></a><tt class="py-lineno">1172</tt>  <tt class="py-line">                    <tt class="py-string">"'gaussian' or 'circle'"</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L1173"></a><tt class="py-lineno">1173</tt>  <tt class="py-line">        <tt class="py-string">'radius_parameter'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-number">25.0</tt><tt class="py-op">,</tt> <tt class="py-comment"># radius for circle, sigma for gaussian, same units as num_samples</tt> </tt>
+<a name="L1174"></a><tt class="py-lineno">1174</tt>  <tt class="py-line">                            <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-140" class="py-name" targets="Class VisionEgg.ParameterTypes.Real=VisionEgg.ParameterTypes.Real-class.html"><a title="VisionEgg.ParameterTypes.Real" class="py-name" href="#" onclick="return doclink('link-140', 'Real', 'link-140');">Real</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L1175"></a><tt class="py-lineno">1175</tt>  <tt class="py-line">                            <tt class="py-string">"radius for circle, sigma for gaussian"</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L1176"></a><tt class="py-lineno">1176</tt>  <tt class="py-line">        <tt class="py-string">'num_samples'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-number">256</tt><tt class="py-op">,</tt><tt class="py-number">256</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-comment"># size of mask data in texels</tt> </tt>
+<a name="L1177"></a><tt class="py-lineno">1177</tt>  <tt class="py-line">                       <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-141" class="py-name" targets="Class VisionEgg.ParameterTypes.Sequence2=VisionEgg.ParameterTypes.Sequence2-class.html"><a title="VisionEgg.ParameterTypes.Sequence2" class="py-name" href="#" onclick="return doclink('link-141', 'Sequence2', 'link-141');">Sequence2</a></tt><tt class="py-op">(</tt><tt class="py-name">ve_types</tt [...]
+<a name="L1178"></a><tt class="py-lineno">1178</tt>  <tt class="py-line">                       <tt class="py-string">"size of mask texture data (units: number of texels)"</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L1179"></a><tt class="py-lineno">1179</tt>  <tt class="py-line">        <tt class="py-op">}</tt> </tt>
+<a name="Mask2D.__init__"></a><div id="Mask2D.__init__-def"><a name="L1180"></a><tt class="py-lineno">1180</tt> <a class="py-toggle" href="#" id="Mask2D.__init__-toggle" onclick="return toggle('Mask2D.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.Textures.Mask2D-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt><tt class="py-op">**</tt><tt class="py-param">kw</t [...]
+</div><div id="Mask2D.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Mask2D.__init__-expanded"><a name="L1181"></a><tt class="py-lineno">1181</tt>  <tt class="py-line">        <tt id="link-143" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-143', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-144" class="py-name" targets="Class VisionEgg.ClassWithParameters=VisionEgg.Class [...]
+VisionEgg.Configuration.Config.__init__
+VisionEgg.Core.FixationSpot.__init__
+VisionEgg.Core.FrameTimer.__init__
+VisionEgg.Core.ModelView.__init__
+VisionEgg.Core.OrthographicProjection.__init__
+VisionEgg.Core.OrthographicProjectionNoZClip.__init__
+VisionEgg.Core.PerspectiveProjection.__init__
+VisionEgg.Core.Projection.__init__
+VisionEgg.Core.ProjectionBaseClass.__init__
+VisionEgg.Core.Screen.__init__
+VisionEgg.Core.SimplePerspectiveProjection.__init__
+VisionEgg.Core.Stimulus.__init__
+VisionEgg.Core.Viewport.__init__
+VisionEgg.Daq.Channel.__init__
+VisionEgg.Daq.DaqMode.__init__
+VisionEgg.Daq.Device.__init__
+VisionEgg.Daq.Functionality.__init__
+VisionEgg.Daq.SignalType.__init__
+VisionEgg.DaqKeyboard.KeyboardTriggerInController.__init__
+VisionEgg.DaqLPT.LPTChannel.__init__
+VisionEgg.DaqLPT.LPTDevice.__init__
+VisionEgg.DaqLPT.LPTTriggerInController.__init__
+VisionEgg.DaqLPT.LPTTriggerOutController.__init__
+VisionEgg.Deprecated.Message.__init__
+VisionEgg.Dots.DotArea2D.__init__
+VisionEgg.FlowControl.ConstantController.__init__
+VisionEgg.FlowControl.Controller.__init__
+VisionEgg.FlowControl.EncapsulatedController.__init__
+VisionEgg.FlowControl.EvalStringController.__init__
+VisionEgg.FlowControl.ExecStringController.__init__
+VisionEgg.FlowControl.FunctionController.__init__
+VisionEgg.FlowControl.Presentation.__init__
+VisionEgg.GLTrace.Wrapper.__init__
+VisionEgg.GUI.AppWindow.__init__
+VisionEgg.GUI.GetKeypressDialog.__init__
+VisionEgg.GUI.GraphicsConfigurationWindow.__init__
+VisionEgg.GUI.InfoFrame.__init__
+VisionEgg.GUI.ProgressBar.__init__
+VisionEgg.GUI.ToplevelDialog.__init__
+VisionEgg.Gratings.SinGrating2D.__init__
+VisionEgg.Gratings.SinGrating3D.__init__
+VisionEgg.MoreStimuli.Arrow.__init__
+VisionEgg.MoreStimuli.FilledCircle.__init__
+VisionEgg.MoreStimuli.Rectangle3D.__init__
+VisionEgg.MoreStimuli.Target2D.__init__
+VisionEgg.ParameterTypes.AnyOf.__init__
+VisionEgg.ParameterTypes.Instance.__init__
+VisionEgg.ParameterTypes.Sequence.__init__
+VisionEgg.ParameterTypes.SubClass.__init__
+VisionEgg.PyroApps.AST_ext.AST_Visitor.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalMetaParameters.__init__
+VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.__init__
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.__init__
+VisionEgg.PyroApps.DropinGUI.DropinMetaParameters.__init__
+VisionEgg.PyroApps.DropinServer.DropinMetaController.__init__
+VisionEgg.PyroApps.EPhysGUI.AppWindow.__init__
+VisionEgg.PyroApps.EPhysGUI.BarButton.__init__
+VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase.__init__
+VisionEgg.PyroApps.EPhysGUI.GammaFrame.__init__
+VisionEgg.PyroApps.EPhysGUI.ImageSequenceLauncher.__init__
+VisionEgg.PyroApps.EPhysGUI.Loop.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopContainedObject.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopParamDialog.__init__
+VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.__init__
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.__init__
+VisionEgg.PyroApps.EPhysServer.EPhysServer.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingMetaParameters.__init__
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.GridGUI.GridControlFrame.__init__
+VisionEgg.PyroApps.GridGUI.GridMetaParameters.__init__
+VisionEgg.PyroApps.GridServer.GridMetaController.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetMetaParameters.__init__
+VisionEgg.PyroApps.MouseTargetServer.MousePositionController.__init__
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetOrientationController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetPositionController.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.CallbackEntry.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionParameters.__init__
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingMetaParameters.__init__
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumMetaParameters.__init__
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.__init__
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.__init__
+VisionEgg.PyroApps.TargetGUI.TargetMetaParameters.__init__
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.__init__
+VisionEgg.PyroClient.PyroClient.__init__
+VisionEgg.PyroHelpers.PyroConstantController.__init__
+VisionEgg.PyroHelpers.PyroEncapsulatedController.__init__
+VisionEgg.PyroHelpers.PyroEvalStringController.__init__
+VisionEgg.PyroHelpers.PyroExecStringController.__init__
+VisionEgg.PyroHelpers.PyroListenController.__init__
+VisionEgg.PyroHelpers.PyroLocalDictController.__init__
+VisionEgg.PyroHelpers.PyroServer.__init__
+VisionEgg.QuickTime.MovieTexture.__init__
+VisionEgg.ResponseControl.KeyboardResponseController.__init__
+VisionEgg.ResponseControl.ResponseController.__init__
+VisionEgg.SphereMap.AzElGrid.__init__
+VisionEgg.SphereMap.SphereGrating.__init__
+VisionEgg.SphereMap.SphereMap.__init__
+VisionEgg.SphereMap.SphereWindow.__init__
+VisionEgg.TCPController.SocketListenController.__init__
+VisionEgg.TCPController.TCPController.__init__
+VisionEgg.TCPController.TCPServer.__init__
+VisionEgg.Text.BitmapText.__init__
+VisionEgg.Text.GlutTextBase.__init__
+VisionEgg.Text.StrokeText.__init__
+VisionEgg.Text.Text.__init__
+VisionEgg.Textures.FixationCross.__init__
+VisionEgg.Textures.Mask2D.__init__
+VisionEgg.Textures.SpinningDrum.__init__
+VisionEgg.Textures.Texture.__init__
+VisionEgg.Textures.TextureFromFile.__init__
+VisionEgg.Textures.TextureObject.__init__
+VisionEgg.Textures.TextureStimulusBaseClass.__init__
+VisionEgg.ThreeDeeMath.TransformMatrix.__init__
+VisionEgg.WrappedText.WrappedText.__init__
+VisionEgg.qtmovie.Movie.__init__
+VisionEgg.qtmovie.Rect.__init__" class="py-name" href="#" onclick="return doclink('link-145', '__init__', 'link-55');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt><tt class="py-op">**</tt><tt class="py-name">kw</tt><tt class="py-op">)</tt> </tt>
+<a name="L1182"></a><tt class="py-lineno">1182</tt>  <tt class="py-line"> </tt>
+<a name="L1183"></a><tt class="py-lineno">1183</tt>  <tt class="py-line">        <tt class="py-name">cp</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">constant_parameters</tt> <tt class="py-comment"># shorthand</tt> </tt>
+<a name="L1184"></a><tt class="py-lineno">1184</tt>  <tt class="py-line">        <tt class="py-name">width</tt><tt class="py-op">,</tt><tt class="py-name">height</tt> <tt class="py-op">=</tt> <tt class="py-name">cp</tt><tt class="py-op">.</tt><tt class="py-name">num_samples</tt> </tt>
+<a name="L1185"></a><tt class="py-lineno">1185</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">width</tt> <tt class="py-op">!=</tt> <tt id="link-146" class="py-name"><a title="VisionEgg.Textures.next_power_of_2" class="py-name" href="#" onclick="return doclink('link-146', 'next_power_of_2', 'link-14');">next_power_of_2</a></tt><tt class="py-op">(</tt><tt class="py-name">width</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1186"></a><tt class="py-lineno">1186</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">RuntimeError</tt><tt class="py-op">(</tt><tt class="py-string">"Mask must have width num_samples power of 2"</tt><tt class="py-op">)</tt> </tt>
+<a name="L1187"></a><tt class="py-lineno">1187</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">height</tt> <tt class="py-op">!=</tt> <tt id="link-147" class="py-name"><a title="VisionEgg.Textures.next_power_of_2" class="py-name" href="#" onclick="return doclink('link-147', 'next_power_of_2', 'link-14');">next_power_of_2</a></tt><tt class="py-op">(</tt><tt class="py-name">height</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1188"></a><tt class="py-lineno">1188</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">RuntimeError</tt><tt class="py-op">(</tt><tt class="py-string">"Mask must have height num_samples power of 2"</tt><tt class="py-op">)</tt> </tt>
+<a name="L1189"></a><tt class="py-lineno">1189</tt>  <tt class="py-line"> </tt>
+<a name="L1190"></a><tt class="py-lineno">1190</tt>  <tt class="py-line">        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glActiveTextureARB</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE1_ARB</tt><tt class="py-op">)</tt> <tt class="py-comment"># Need PyOpenGL >= 2.0</tt> </tt>
+<a name="L1191"></a><tt class="py-lineno">1191</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">texture_object</tt> <tt class="py-op">=</tt> <tt id="link-148" class="py-name"><a title="VisionEgg.Textures.TextureObject" class="py-name" href="#" onclick="return doclink('link-148', 'TextureObject', 'link-34');">TextureObject</a></tt><tt class="py-op">(</tt><tt class="py-name">dimensions</tt><tt class="py-op">=</tt><tt class="py-numbe [...]
+<a name="L1192"></a><tt class="py-lineno">1192</tt>  <tt class="py-line"> </tt>
+<a name="L1193"></a><tt class="py-lineno">1193</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">cp</tt><tt class="py-op">.</tt><tt class="py-name">function</tt> <tt class="py-op">==</tt> <tt class="py-string">"gaussian"</tt><tt class="py-op">:</tt> </tt>
+<a name="L1194"></a><tt class="py-lineno">1194</tt>  <tt class="py-line">            <tt class="py-name">xx</tt> <tt class="py-op">=</tt> <tt class="py-name">numpyNumeric</tt><tt class="py-op">.</tt><tt class="py-name">outerproduct</tt><tt class="py-op">(</tt><tt class="py-name">numpyNumeric</tt><tt class="py-op">.</tt><tt class="py-name">ones</tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">,</tt><tt class="py-name">cp</tt><tt class="py-o [...]
+<a name="L1195"></a><tt class="py-lineno">1195</tt>  <tt class="py-line">                                      <tt class="py-name">numpyNumeric</tt><tt class="py-op">.</tt><tt class="py-name">arange</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">,</tt><tt class="py-name">cp</tt><tt class="py-op">.</tt><tt class="py-name">num_samples</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">,</tt><tt class="py-number">1.0< [...]
+<a name="L1196"></a><tt class="py-lineno">1196</tt>  <tt class="py-line">            <tt class="py-name">yy</tt> <tt class="py-op">=</tt> <tt class="py-name">numpyNumeric</tt><tt class="py-op">.</tt><tt class="py-name">outerproduct</tt><tt class="py-op">(</tt><tt class="py-name">numpyNumeric</tt><tt class="py-op">.</tt><tt class="py-name">arange</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">,</tt><tt class="py-name">cp</tt><tt class="py-op">.</tt><tt class="py [...]
+<a name="L1197"></a><tt class="py-lineno">1197</tt>  <tt class="py-line">                                      <tt class="py-name">numpyNumeric</tt><tt class="py-op">.</tt><tt class="py-name">ones</tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">,</tt><tt class="py-name">cp</tt><tt class="py-op">.</tt><tt class="py-name">num_samples</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt  [...]
+<a name="L1198"></a><tt class="py-lineno">1198</tt>  <tt class="py-line">            <tt class="py-name">dist_from_center</tt> <tt class="py-op">=</tt> <tt class="py-name">numpyNumeric</tt><tt class="py-op">.</tt><tt class="py-name">sqrt</tt><tt class="py-op">(</tt><tt class="py-name">xx</tt><tt class="py-op">**</tt><tt class="py-number">2</tt> <tt class="py-op">+</tt> <tt class="py-name">yy</tt><tt class="py-op">**</tt><tt class="py-number">2</tt><tt class="py-op">)</tt> </tt>
+<a name="L1199"></a><tt class="py-lineno">1199</tt>  <tt class="py-line">            <tt class="py-name">sigma</tt> <tt class="py-op">=</tt> <tt class="py-name">cp</tt><tt class="py-op">.</tt><tt class="py-name">radius_parameter</tt> </tt>
+<a name="L1200"></a><tt class="py-lineno">1200</tt>  <tt class="py-line">            <tt class="py-name">data</tt> <tt class="py-op">=</tt> <tt class="py-name">numpyNumeric</tt><tt class="py-op">.</tt><tt class="py-name">exp</tt><tt class="py-op">(</tt> <tt class="py-op">-</tt><tt class="py-name">dist_from_center</tt><tt class="py-op">**</tt><tt class="py-number">2.0</tt> <tt class="py-op">/</tt> <tt class="py-op">(</tt><tt class="py-number">2.0</tt><tt class="py-op">*</tt><tt class="py- [...]
+<a name="L1201"></a><tt class="py-lineno">1201</tt>  <tt class="py-line">        <tt class="py-keyword">elif</tt> <tt class="py-name">cp</tt><tt class="py-op">.</tt><tt class="py-name">function</tt> <tt class="py-op">==</tt> <tt class="py-string">"circle"</tt><tt class="py-op">:</tt> </tt>
+<a name="L1202"></a><tt class="py-lineno">1202</tt>  <tt class="py-line">            <tt class="py-name">data</tt> <tt class="py-op">=</tt> <tt class="py-name">numpyNumeric</tt><tt class="py-op">.</tt><tt class="py-name">zeros</tt><tt class="py-op">(</tt><tt class="py-name">cp</tt><tt class="py-op">.</tt><tt class="py-name">num_samples</tt><tt class="py-op">,</tt><tt class="py-name">numpyNumeric</tt><tt class="py-op">.</tt><tt class="py-name">Float</tt><tt class="py-op">)</tt> </tt>
+<a name="L1203"></a><tt class="py-lineno">1203</tt>  <tt class="py-line">            <tt class="py-comment"># perform anti-aliasing in circle computation by computing</tt> </tt>
+<a name="L1204"></a><tt class="py-lineno">1204</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># at several slightly different locations and averaging</tt> </tt>
+<a name="L1205"></a><tt class="py-lineno">1205</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">oversamples</tt> <tt class="py-op">=</tt> <tt class="py-number">4</tt> </tt>
+<a name="L1206"></a><tt class="py-lineno">1206</tt>  <tt class="py-line">            <tt class="py-name">x_offsets</tt> <tt class="py-op">=</tt> <tt class="py-name">numpyNumeric</tt><tt class="py-op">.</tt><tt class="py-name">arange</tt><tt class="py-op">(</tt><tt class="py-number">0.0</tt><tt class="py-op">,</tt><tt class="py-number">1.0</tt><tt class="py-op">,</tt><tt class="py-number">1.0</tt><tt class="py-op">/</tt><tt class="py-name">oversamples</tt><tt class="py-op">)</tt> </tt>
+<a name="L1207"></a><tt class="py-lineno">1207</tt>  <tt class="py-line">            <tt class="py-name">x_offsets</tt> <tt class="py-op">=</tt> <tt class="py-name">x_offsets</tt> <tt class="py-op">-</tt> <tt class="py-name">MLab</tt><tt class="py-op">.</tt><tt class="py-name">mean</tt><tt class="py-op">(</tt><tt class="py-name">x_offsets</tt><tt class="py-op">)</tt> </tt>
+<a name="L1208"></a><tt class="py-lineno">1208</tt>  <tt class="py-line">            <tt class="py-name">y_offsets</tt> <tt class="py-op">=</tt> <tt class="py-name">x_offsets</tt> </tt>
+<a name="L1209"></a><tt class="py-lineno">1209</tt>  <tt class="py-line">            <tt class="py-keyword">for</tt> <tt class="py-name">x_offset</tt> <tt class="py-keyword">in</tt> <tt class="py-name">x_offsets</tt><tt class="py-op">:</tt> </tt>
+<a name="L1210"></a><tt class="py-lineno">1210</tt>  <tt class="py-line">                <tt class="py-keyword">for</tt> <tt class="py-name">y_offset</tt> <tt class="py-keyword">in</tt> <tt class="py-name">y_offsets</tt><tt class="py-op">:</tt> </tt>
+<a name="L1211"></a><tt class="py-lineno">1211</tt>  <tt class="py-line">                    <tt class="py-name">xx</tt> <tt class="py-op">=</tt> <tt class="py-name">numpyNumeric</tt><tt class="py-op">.</tt><tt class="py-name">outerproduct</tt><tt class="py-op">(</tt><tt class="py-name">numpyNumeric</tt><tt class="py-op">.</tt><tt class="py-name">ones</tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">,</tt><tt class="py-name">cp</tt><tt cla [...]
+<a name="L1212"></a><tt class="py-lineno">1212</tt>  <tt class="py-line">                                              <tt class="py-name">numpyNumeric</tt><tt class="py-op">.</tt><tt class="py-name">arange</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">,</tt><tt class="py-name">cp</tt><tt class="py-op">.</tt><tt class="py-name">num_samples</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">,</tt><tt class="py-numb [...]
+<a name="L1213"></a><tt class="py-lineno">1213</tt>  <tt class="py-line">                    <tt class="py-name">yy</tt> <tt class="py-op">=</tt> <tt class="py-name">numpyNumeric</tt><tt class="py-op">.</tt><tt class="py-name">outerproduct</tt><tt class="py-op">(</tt><tt class="py-name">numpyNumeric</tt><tt class="py-op">.</tt><tt class="py-name">arange</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">,</tt><tt class="py-name">cp</tt><tt class="py-op">.</tt><tt c [...]
+<a name="L1214"></a><tt class="py-lineno">1214</tt>  <tt class="py-line">                                              <tt class="py-name">numpyNumeric</tt><tt class="py-op">.</tt><tt class="py-name">ones</tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">,</tt><tt class="py-name">cp</tt><tt class="py-op">.</tt><tt class="py-name">num_samples</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">)< [...]
+<a name="L1215"></a><tt class="py-lineno">1215</tt>  <tt class="py-line">                    <tt class="py-name">dist_from_center</tt> <tt class="py-op">=</tt> <tt class="py-name">numpyNumeric</tt><tt class="py-op">.</tt><tt class="py-name">sqrt</tt><tt class="py-op">(</tt><tt class="py-name">xx</tt><tt class="py-op">**</tt><tt class="py-number">2</tt> <tt class="py-op">+</tt> <tt class="py-name">yy</tt><tt class="py-op">**</tt><tt class="py-number">2</tt><tt class="py-op">)</tt> </tt>
+<a name="L1216"></a><tt class="py-lineno">1216</tt>  <tt class="py-line">                    <tt class="py-name">data</tt> <tt class="py-op">+=</tt> <tt class="py-name">dist_from_center</tt> <tt class="py-op"><=</tt> <tt class="py-name">cp</tt><tt class="py-op">.</tt><tt class="py-name">radius_parameter</tt> </tt>
+<a name="L1217"></a><tt class="py-lineno">1217</tt>  <tt class="py-line">            <tt class="py-name">data</tt> <tt class="py-op">=</tt> <tt class="py-name">data</tt> <tt class="py-op">/</tt> <tt id="link-149" class="py-name"><a title="float" class="py-name" href="#" onclick="return doclink('link-149', 'float', 'link-38');">float</a></tt><tt class="py-op">(</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">x_offsets</tt><tt class="py-op">)</tt><tt class="py- [...]
+<a name="L1218"></a><tt class="py-lineno">1218</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1219"></a><tt class="py-lineno">1219</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">RuntimeError</tt><tt class="py-op">(</tt><tt class="py-string">"Don't know about window function %s"</tt><tt class="py-op">%</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">constant_parameters</tt><tt class="py-op">.</tt><tt class="py-name">function</tt><tt class="py-op">)</tt> </tt>
+<a name="L1220"></a><tt class="py-lineno">1220</tt>  <tt class="py-line"> </tt>
+<a name="L1221"></a><tt class="py-lineno">1221</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">texture_object</tt><tt class="py-op">.</tt><tt id="link-150" class="py-name"><a title="VisionEgg.Textures.TextureObject.put_new_image" class="py-name" href="#" onclick="return doclink('link-150', 'put_new_image', 'link-42');">put_new_image</a></tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">,</tt> </tt>
+<a name="L1222"></a><tt class="py-lineno">1222</tt>  <tt class="py-line">                                          <tt class="py-name">data_format</tt><tt class="py-op">=</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_ALPHA</tt><tt class="py-op">,</tt> </tt>
+<a name="L1223"></a><tt class="py-lineno">1223</tt>  <tt class="py-line">                                          <tt class="py-name">internal_format</tt><tt class="py-op">=</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_ALPHA</tt><tt class="py-op">)</tt> </tt>
+<a name="L1224"></a><tt class="py-lineno">1224</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">texture_object</tt><tt class="py-op">.</tt><tt id="link-151" class="py-name" targets="Method VisionEgg.Textures.TextureObject.set_min_filter()=VisionEgg.Textures.TextureObject-class.html#set_min_filter"><a title="VisionEgg.Textures.TextureObject.set_min_filter" class="py-name" href="#" onclick="return doclink('link-151', 'set_min_filter [...]
+<a name="L1225"></a><tt class="py-lineno">1225</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">texture_object</tt><tt class="py-op">.</tt><tt id="link-152" class="py-name" targets="Method VisionEgg.Textures.TextureObject.set_wrap_mode_s()=VisionEgg.Textures.TextureObject-class.html#set_wrap_mode_s"><a title="VisionEgg.Textures.TextureObject.set_wrap_mode_s" class="py-name" href="#" onclick="return doclink('link-152', 'set_wrap_mo [...]
+<a name="L1226"></a><tt class="py-lineno">1226</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">texture_object</tt><tt class="py-op">.</tt><tt id="link-153" class="py-name" targets="Method VisionEgg.Textures.TextureObject.set_wrap_mode_t()=VisionEgg.Textures.TextureObject-class.html#set_wrap_mode_t"><a title="VisionEgg.Textures.TextureObject.set_wrap_mode_t" class="py-name" href="#" onclick="return doclink('link-153', 'set_wrap_mo [...]
+<a name="L1227"></a><tt class="py-lineno">1227</tt>  <tt class="py-line">        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glTexEnvi</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE_ENV</tt><tt class="py-op">,</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE_ENV_MODE</tt><tt class="py-op">,</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-na [...]
+<a name="L1228"></a><tt class="py-lineno">1228</tt>  <tt class="py-line"> </tt>
+<a name="L1229"></a><tt class="py-lineno">1229</tt>  <tt class="py-line">        <tt class="py-comment"># reset active texture unit to 0</tt> </tt>
+<a name="L1230"></a><tt class="py-lineno">1230</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glActiveTextureARB</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE0_ARB</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1231"></a><tt class="py-lineno">1231</tt>  <tt class="py-line"> </tt>
+<a name="Mask2D.draw_masked_quad_3d"></a><div id="Mask2D.draw_masked_quad_3d-def"><a name="L1232"></a><tt class="py-lineno">1232</tt> <a class="py-toggle" href="#" id="Mask2D.draw_masked_quad_3d-toggle" onclick="return toggle('Mask2D.draw_masked_quad_3d');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.Textures.Mask2D-class.html#draw_masked_quad_3d">draw_masked_quad_3d</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class [...]
+</div><div id="Mask2D.draw_masked_quad_3d-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Mask2D.draw_masked_quad_3d-expanded"><a name="L1233"></a><tt class="py-lineno">1233</tt>  <tt class="py-line">        <tt class="py-comment"># The *t parameters are the texture coordinates.</tt> </tt>
+<a name="L1234"></a><tt class="py-lineno">1234</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L1235"></a><tt class="py-lineno">1235</tt>  <tt class="py-line">        <tt class="py-comment"># By the time this method is called, GL_TEXTURE0_ARB should be</tt> </tt>
+<a name="L1236"></a><tt class="py-lineno">1236</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># loaded as the texture object to be masked.</tt> </tt>
+<a name="L1237"></a><tt class="py-lineno">1237</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L1238"></a><tt class="py-lineno">1238</tt>  <tt class="py-line">        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glActiveTextureARB</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE1_ARB</tt><tt class="py-op">)</tt> <tt class="py-comment"># bind 2nd texture unit to mask texture</tt> </tt>
+<a name="L1239"></a><tt class="py-lineno">1239</tt>  <tt class="py-line">        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glBindTexture</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE_2D</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">texture_object</tt><tt class="py-op">.</tt><tt class="py-name">gl_id</tt><tt class="py-op">)</tt> </tt>
+<a name="L1240"></a><tt class="py-lineno">1240</tt>  <tt class="py-line">        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glEnable</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE_2D</tt><tt class="py-op">)</tt> </tt>
+<a name="L1241"></a><tt class="py-lineno">1241</tt>  <tt class="py-line"> </tt>
+<a name="L1242"></a><tt class="py-lineno">1242</tt>  <tt class="py-line">        <tt class="py-comment"># The normal TEXTURE2D object is the 1st (TEXTURE0) texture unit</tt> </tt>
+<a name="L1243"></a><tt class="py-lineno">1243</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glBegin</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_QUADS</tt><tt class="py-op">)</tt> </tt>
+<a name="L1244"></a><tt class="py-lineno">1244</tt>  <tt class="py-line"> </tt>
+<a name="L1245"></a><tt class="py-lineno">1245</tt>  <tt class="py-line">        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glMultiTexCoord2fARB</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE0_ARB</tt><tt class="py-op">,</tt><tt class="py-name">lt</tt><tt class="py-op">,</tt><tt class="py-name">bt</tt><tt class="py-op">)</tt> </tt>
+<a name="L1246"></a><tt class="py-lineno">1246</tt>  <tt class="py-line">        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glMultiTexCoord2fARB</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE1_ARB</tt><tt class="py-op">,</tt><tt class="py-number">0.0</tt><tt class="py-op">,</tt><tt class="py-number">0.0</tt><tt class="py-op">)</tt> </tt>
+<a name="L1247"></a><tt class="py-lineno">1247</tt>  <tt class="py-line">        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glVertex3f</tt><tt class="py-op">(</tt><tt class="py-op">*</tt><tt class="py-name">v1</tt><tt class="py-op">)</tt> </tt>
+<a name="L1248"></a><tt class="py-lineno">1248</tt>  <tt class="py-line"> </tt>
+<a name="L1249"></a><tt class="py-lineno">1249</tt>  <tt class="py-line">        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glMultiTexCoord2fARB</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE0_ARB</tt><tt class="py-op">,</tt><tt class="py-name">rt</tt><tt class="py-op">,</tt><tt class="py-name">bt</tt><tt class="py-op">)</tt> </tt>
+<a name="L1250"></a><tt class="py-lineno">1250</tt>  <tt class="py-line">        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glMultiTexCoord2fARB</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE1_ARB</tt><tt class="py-op">,</tt><tt class="py-number">1.0</tt><tt class="py-op">,</tt><tt class="py-number">0.0</tt><tt class="py-op">)</tt> </tt>
+<a name="L1251"></a><tt class="py-lineno">1251</tt>  <tt class="py-line">        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glVertex3f</tt><tt class="py-op">(</tt><tt class="py-op">*</tt><tt class="py-name">v2</tt><tt class="py-op">)</tt> </tt>
+<a name="L1252"></a><tt class="py-lineno">1252</tt>  <tt class="py-line"> </tt>
+<a name="L1253"></a><tt class="py-lineno">1253</tt>  <tt class="py-line">        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glMultiTexCoord2fARB</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE0_ARB</tt><tt class="py-op">,</tt><tt class="py-name">rt</tt><tt class="py-op">,</tt><tt class="py-name">tt</tt><tt class="py-op">)</tt> </tt>
+<a name="L1254"></a><tt class="py-lineno">1254</tt>  <tt class="py-line">        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glMultiTexCoord2fARB</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE1_ARB</tt><tt class="py-op">,</tt><tt class="py-number">1.0</tt><tt class="py-op">,</tt><tt class="py-number">1.0</tt><tt class="py-op">)</tt> </tt>
+<a name="L1255"></a><tt class="py-lineno">1255</tt>  <tt class="py-line">        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glVertex3f</tt><tt class="py-op">(</tt><tt class="py-op">*</tt><tt class="py-name">v3</tt><tt class="py-op">)</tt> </tt>
+<a name="L1256"></a><tt class="py-lineno">1256</tt>  <tt class="py-line"> </tt>
+<a name="L1257"></a><tt class="py-lineno">1257</tt>  <tt class="py-line">        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glMultiTexCoord2fARB</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE0_ARB</tt><tt class="py-op">,</tt><tt class="py-name">lt</tt><tt class="py-op">,</tt><tt class="py-name">tt</tt><tt class="py-op">)</tt> </tt>
+<a name="L1258"></a><tt class="py-lineno">1258</tt>  <tt class="py-line">        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glMultiTexCoord2fARB</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE1_ARB</tt><tt class="py-op">,</tt><tt class="py-number">0.0</tt><tt class="py-op">,</tt><tt class="py-number">1.0</tt><tt class="py-op">)</tt> </tt>
+<a name="L1259"></a><tt class="py-lineno">1259</tt>  <tt class="py-line">        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glVertex3f</tt><tt class="py-op">(</tt><tt class="py-op">*</tt><tt class="py-name">v4</tt><tt class="py-op">)</tt> </tt>
+<a name="L1260"></a><tt class="py-lineno">1260</tt>  <tt class="py-line"> </tt>
+<a name="L1261"></a><tt class="py-lineno">1261</tt>  <tt class="py-line">        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glEnd</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-comment"># GL_QUADS</tt> </tt>
+<a name="L1262"></a><tt class="py-lineno">1262</tt>  <tt class="py-line">        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glDisable</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE_2D</tt><tt class="py-op">)</tt> <tt class="py-comment"># turn off texturing in this texture unit</tt> </tt>
+<a name="L1263"></a><tt class="py-lineno">1263</tt>  <tt class="py-line">        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glActiveTextureARB</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE0_ARB</tt><tt class="py-op">)</tt> <tt class="py-comment"># return to 1st texture unit</tt> </tt>
+</div><a name="L1264"></a><tt class="py-lineno">1264</tt>  <tt class="py-line"> </tt>
+<a name="Mask2D.draw_masked_quad"></a><div id="Mask2D.draw_masked_quad-def"><a name="L1265"></a><tt class="py-lineno">1265</tt> <a class="py-toggle" href="#" id="Mask2D.draw_masked_quad-toggle" onclick="return toggle('Mask2D.draw_masked_quad');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.Textures.Mask2D-class.html#draw_masked_quad">draw_masked_quad</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt><tt [...]
+</div><div id="Mask2D.draw_masked_quad-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Mask2D.draw_masked_quad-expanded"><a name="L1266"></a><tt class="py-lineno">1266</tt>  <tt class="py-line">        <tt class="py-comment"># The *t parameters are the texture coordinates. The *e</tt> </tt>
+<a name="L1267"></a><tt class="py-lineno">1267</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># parameters are the eye coordinates for the vertices of the</tt> </tt>
+<a name="L1268"></a><tt class="py-lineno">1268</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># quad.</tt> </tt>
+<a name="L1269"></a><tt class="py-lineno">1269</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">v1</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">le</tt><tt class="py-op">,</tt><tt class="py-name">be</tt><tt class="py-op">,</tt><tt class="py-name">depth</tt><tt class="py-op">)</tt> </tt>
+<a name="L1270"></a><tt class="py-lineno">1270</tt>  <tt class="py-line">        <tt class="py-name">v2</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">re</tt><tt class="py-op">,</tt><tt class="py-name">be</tt><tt class="py-op">,</tt><tt class="py-name">depth</tt><tt class="py-op">)</tt> </tt>
+<a name="L1271"></a><tt class="py-lineno">1271</tt>  <tt class="py-line">        <tt class="py-name">v3</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">re</tt><tt class="py-op">,</tt><tt class="py-name">te</tt><tt class="py-op">,</tt><tt class="py-name">depth</tt><tt class="py-op">)</tt> </tt>
+<a name="L1272"></a><tt class="py-lineno">1272</tt>  <tt class="py-line">        <tt class="py-name">v4</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">le</tt><tt class="py-op">,</tt><tt class="py-name">te</tt><tt class="py-op">,</tt><tt class="py-name">depth</tt><tt class="py-op">)</tt> </tt>
+<a name="L1273"></a><tt class="py-lineno">1273</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-154" class="py-name" targets="Method VisionEgg.Textures.Mask2D.draw_masked_quad_3d()=VisionEgg.Textures.Mask2D-class.html#draw_masked_quad_3d"><a title="VisionEgg.Textures.Mask2D.draw_masked_quad_3d" class="py-name" href="#" onclick="return doclink('link-154', 'draw_masked_quad_3d', 'link-154');">draw_masked_quad_3d</a></tt><tt class="py-op">( [...]
+</div></div><a name="L1274"></a><tt class="py-lineno">1274</tt>  <tt class="py-line"> </tt>
+<a name="TextureStimulus"></a><div id="TextureStimulus-def"><a name="L1275"></a><tt class="py-lineno">1275</tt> <a class="py-toggle" href="#" id="TextureStimulus-toggle" onclick="return toggle('TextureStimulus');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.Textures.TextureStimulus-class.html">TextureStimulus</a><tt class="py-op">(</tt><tt class="py-base-class">TextureStimulusBaseClass</tt><tt class="py-op">)</tt><tt class="py-op">:</ [...]
+</div><div id="TextureStimulus-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="TextureStimulus-expanded"><a name="L1276"></a><tt class="py-lineno">1276</tt>  <tt class="py-line">    <tt class="py-docstring">"""A textured rectangle.</tt> </tt>
+<a name="L1277"></a><tt class="py-lineno">1277</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1278"></a><tt class="py-lineno">1278</tt>  <tt class="py-line"><tt class="py-docstring">    This is mainly for 2D use (z coordinate fixed to 0.0 and w</tt> </tt>
+<a name="L1279"></a><tt class="py-lineno">1279</tt>  <tt class="py-line"><tt class="py-docstring">    coordinated fixed to 1.0 if not given).</tt> </tt>
+<a name="L1280"></a><tt class="py-lineno">1280</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1281"></a><tt class="py-lineno">1281</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1282"></a><tt class="py-lineno">1282</tt>  <tt class="py-line"><tt class="py-docstring">    Parameters</tt> </tt>
+<a name="L1283"></a><tt class="py-lineno">1283</tt>  <tt class="py-line"><tt class="py-docstring">    ==========</tt> </tt>
+<a name="L1284"></a><tt class="py-lineno">1284</tt>  <tt class="py-line"><tt class="py-docstring">    anchor             -- specifies how position parameter is interpreted (String)</tt> </tt>
+<a name="L1285"></a><tt class="py-lineno">1285</tt>  <tt class="py-line"><tt class="py-docstring">                          Default: lowerleft</tt> </tt>
+<a name="L1286"></a><tt class="py-lineno">1286</tt>  <tt class="py-line"><tt class="py-docstring">    angle              -- units: degrees, 0=right, 90=up (Real)</tt> </tt>
+<a name="L1287"></a><tt class="py-lineno">1287</tt>  <tt class="py-line"><tt class="py-docstring">                          Default: 0.0</tt> </tt>
+<a name="L1288"></a><tt class="py-lineno">1288</tt>  <tt class="py-line"><tt class="py-docstring">    color              -- texture environment color. alpha ignored (if given) for max_alpha parameter (AnyOf(Sequence3 of Real or Sequence4 of Real))</tt> </tt>
+<a name="L1289"></a><tt class="py-lineno">1289</tt>  <tt class="py-line"><tt class="py-docstring">                          Default: (1.0, 1.0, 1.0)</tt> </tt>
+<a name="L1290"></a><tt class="py-lineno">1290</tt>  <tt class="py-line"><tt class="py-docstring">    depth_test         -- perform depth test? (Boolean)</tt> </tt>
+<a name="L1291"></a><tt class="py-lineno">1291</tt>  <tt class="py-line"><tt class="py-docstring">                          Default: False</tt> </tt>
+<a name="L1292"></a><tt class="py-lineno">1292</tt>  <tt class="py-line"><tt class="py-docstring">    mask               -- optional masking function (Instance of <class 'VisionEgg.Textures.Mask2D'>)</tt> </tt>
+<a name="L1293"></a><tt class="py-lineno">1293</tt>  <tt class="py-line"><tt class="py-docstring">                          Default: (determined at runtime)</tt> </tt>
+<a name="L1294"></a><tt class="py-lineno">1294</tt>  <tt class="py-line"><tt class="py-docstring">    max_alpha          -- controls opacity. 1.0=copletely opaque, 0.0=completely transparent (Real)</tt> </tt>
+<a name="L1295"></a><tt class="py-lineno">1295</tt>  <tt class="py-line"><tt class="py-docstring">                          Default: 1.0</tt> </tt>
+<a name="L1296"></a><tt class="py-lineno">1296</tt>  <tt class="py-line"><tt class="py-docstring">    on                 -- draw stimulus? (Boolean)</tt> </tt>
+<a name="L1297"></a><tt class="py-lineno">1297</tt>  <tt class="py-line"><tt class="py-docstring">                          Default: True</tt> </tt>
+<a name="L1298"></a><tt class="py-lineno">1298</tt>  <tt class="py-line"><tt class="py-docstring">    position           -- units: eye coordinates (AnyOf(Sequence2 of Real or Sequence3 of Real or Sequence4 of Real))</tt> </tt>
+<a name="L1299"></a><tt class="py-lineno">1299</tt>  <tt class="py-line"><tt class="py-docstring">                          Default: (0.0, 0.0)</tt> </tt>
+<a name="L1300"></a><tt class="py-lineno">1300</tt>  <tt class="py-line"><tt class="py-docstring">    size               -- defaults to texture data size (units: eye coordinates) (Sequence2 of Real)</tt> </tt>
+<a name="L1301"></a><tt class="py-lineno">1301</tt>  <tt class="py-line"><tt class="py-docstring">                          Default: (determined at runtime)</tt> </tt>
+<a name="L1302"></a><tt class="py-lineno">1302</tt>  <tt class="py-line"><tt class="py-docstring">    texture            -- source of texture data (Instance of <class 'VisionEgg.Textures.Texture'>)</tt> </tt>
+<a name="L1303"></a><tt class="py-lineno">1303</tt>  <tt class="py-line"><tt class="py-docstring">                          Inherited from TextureStimulusBaseClass</tt> </tt>
+<a name="L1304"></a><tt class="py-lineno">1304</tt>  <tt class="py-line"><tt class="py-docstring">                          Default: (determined at runtime)</tt> </tt>
+<a name="L1305"></a><tt class="py-lineno">1305</tt>  <tt class="py-line"><tt class="py-docstring">    texture_mag_filter -- OpenGL filter enum (Integer)</tt> </tt>
+<a name="L1306"></a><tt class="py-lineno">1306</tt>  <tt class="py-line"><tt class="py-docstring">                          Inherited from TextureStimulusBaseClass</tt> </tt>
+<a name="L1307"></a><tt class="py-lineno">1307</tt>  <tt class="py-line"><tt class="py-docstring">                          Default: GL_LINEAR (9729)</tt> </tt>
+<a name="L1308"></a><tt class="py-lineno">1308</tt>  <tt class="py-line"><tt class="py-docstring">    texture_min_filter -- OpenGL filter enum (Integer)</tt> </tt>
+<a name="L1309"></a><tt class="py-lineno">1309</tt>  <tt class="py-line"><tt class="py-docstring">                          Inherited from TextureStimulusBaseClass</tt> </tt>
+<a name="L1310"></a><tt class="py-lineno">1310</tt>  <tt class="py-line"><tt class="py-docstring">                          Default: (GL enum determined at runtime)</tt> </tt>
+<a name="L1311"></a><tt class="py-lineno">1311</tt>  <tt class="py-line"><tt class="py-docstring">    texture_wrap_s     -- OpenGL texture wrap enum (Integer)</tt> </tt>
+<a name="L1312"></a><tt class="py-lineno">1312</tt>  <tt class="py-line"><tt class="py-docstring">                          Inherited from TextureStimulusBaseClass</tt> </tt>
+<a name="L1313"></a><tt class="py-lineno">1313</tt>  <tt class="py-line"><tt class="py-docstring">                          Default: (GL enum determined at runtime)</tt> </tt>
+<a name="L1314"></a><tt class="py-lineno">1314</tt>  <tt class="py-line"><tt class="py-docstring">    texture_wrap_t     -- OpenGL texture wrap enum (Integer)</tt> </tt>
+<a name="L1315"></a><tt class="py-lineno">1315</tt>  <tt class="py-line"><tt class="py-docstring">                          Inherited from TextureStimulusBaseClass</tt> </tt>
+<a name="L1316"></a><tt class="py-lineno">1316</tt>  <tt class="py-line"><tt class="py-docstring">                          Default: (GL enum determined at runtime)</tt> </tt>
+<a name="L1317"></a><tt class="py-lineno">1317</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1318"></a><tt class="py-lineno">1318</tt>  <tt class="py-line"><tt class="py-docstring">    Constant Parameters</tt> </tt>
+<a name="L1319"></a><tt class="py-lineno">1319</tt>  <tt class="py-line"><tt class="py-docstring">    ===================</tt> </tt>
+<a name="L1320"></a><tt class="py-lineno">1320</tt>  <tt class="py-line"><tt class="py-docstring">    internal_format   -- format with which OpenGL uses texture data (OpenGL data type enum) (Integer)</tt> </tt>
+<a name="L1321"></a><tt class="py-lineno">1321</tt>  <tt class="py-line"><tt class="py-docstring">                         Default: GL_RGB (6407)</tt> </tt>
+<a name="L1322"></a><tt class="py-lineno">1322</tt>  <tt class="py-line"><tt class="py-docstring">    mipmaps_enabled   -- Are mipmaps enabled? (Boolean)</tt> </tt>
+<a name="L1323"></a><tt class="py-lineno">1323</tt>  <tt class="py-line"><tt class="py-docstring">                         Default: True</tt> </tt>
+<a name="L1324"></a><tt class="py-lineno">1324</tt>  <tt class="py-line"><tt class="py-docstring">    shrink_texture_ok -- Allow automatic shrinking of texture if too big? (Boolean)</tt> </tt>
+<a name="L1325"></a><tt class="py-lineno">1325</tt>  <tt class="py-line"><tt class="py-docstring">                         Default: False</tt> </tt>
+<a name="L1326"></a><tt class="py-lineno">1326</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L1327"></a><tt class="py-lineno">1327</tt>  <tt class="py-line"> </tt>
+<a name="L1328"></a><tt class="py-lineno">1328</tt>  <tt class="py-line">    <tt id="link-155" class="py-name"><a title="VisionEgg.ClassWithParameters.parameters_and_defaults
+VisionEgg.Core.FixationSpot.parameters_and_defaults
+VisionEgg.Core.ProjectionBaseClass.parameters_and_defaults
+VisionEgg.Core.Screen.parameters_and_defaults
+VisionEgg.Core.Viewport.parameters_and_defaults
+VisionEgg.Daq.Buffered.parameters_and_defaults
+VisionEgg.Dots.DotArea2D.parameters_and_defaults
+VisionEgg.FlowControl.Presentation.parameters_and_defaults
+VisionEgg.Gratings.AlphaGratingCommon.parameters_and_defaults
+VisionEgg.Gratings.LuminanceGratingCommon.parameters_and_defaults
+VisionEgg.Gratings.SinGrating2D.parameters_and_defaults
+VisionEgg.Gratings.SinGrating3D.parameters_and_defaults
+VisionEgg.MoreStimuli.Arrow.parameters_and_defaults
+VisionEgg.MoreStimuli.FilledCircle.parameters_and_defaults
+VisionEgg.MoreStimuli.Rectangle3D.parameters_and_defaults
+VisionEgg.MoreStimuli.Target2D.parameters_and_defaults
+VisionEgg.PyroApps.EPhysGUI.Loop.parameters_and_defaults
+VisionEgg.SphereMap.AzElGrid.parameters_and_defaults
+VisionEgg.SphereMap.SphereGrating.parameters_and_defaults
+VisionEgg.SphereMap.SphereMap.parameters_and_defaults
+VisionEgg.SphereMap.SphereWindow.parameters_and_defaults
+VisionEgg.Text.BitmapText.parameters_and_defaults
+VisionEgg.Text.GlutTextBase.parameters_and_defaults
+VisionEgg.Text.StrokeText.parameters_and_defaults
+VisionEgg.Text.Text.parameters_and_defaults
+VisionEgg.Textures.FixationCross.parameters_and_defaults
+VisionEgg.Textures.SpinningDrum.parameters_and_defaults
+VisionEgg.Textures.TextureStimulus.parameters_and_defaults
+VisionEgg.Textures.TextureStimulus3D.parameters_and_defaults
+VisionEgg.Textures.TextureStimulusBaseClass.parameters_and_defaults
+VisionEgg.WrappedText.WrappedText.parameters_and_defaults" class="py-name" href="#" onclick="return doclink('link-155', 'parameters_and_defaults', 'link-93');">parameters_and_defaults</a></tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> </tt>
+<a name="L1329"></a><tt class="py-lineno">1329</tt>  <tt class="py-line">        <tt class="py-string">'on'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-name">True</tt><tt class="py-op">,</tt> </tt>
+<a name="L1330"></a><tt class="py-lineno">1330</tt>  <tt class="py-line">              <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-156" class="py-name"><a title="VisionEgg.ParameterTypes.Boolean" class="py-name" href="#" onclick="return doclink('link-156', 'Boolean', 'link-117');">Boolean</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L1331"></a><tt class="py-lineno">1331</tt>  <tt class="py-line">              <tt class="py-string">"draw stimulus?"</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L1332"></a><tt class="py-lineno">1332</tt>  <tt class="py-line">        <tt class="py-string">'mask'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-comment"># texture mask</tt> </tt>
+<a name="L1333"></a><tt class="py-lineno">1333</tt>  <tt class="py-line">                <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-157" class="py-name"><a title="VisionEgg.ParameterTypes.Instance" class="py-name" href="#" onclick="return doclink('link-157', 'Instance', 'link-94');">Instance</a></tt><tt class="py-op">(</tt><tt id="link-158" class="py-name" targets="Class VisionEgg.Textures.Mask2D=VisionEgg.Textures.Mask2D-class.html"><a title="VisionEgg.Texture [...]
+<a name="L1334"></a><tt class="py-lineno">1334</tt>  <tt class="py-line">                <tt class="py-string">"optional masking function"</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L1335"></a><tt class="py-lineno">1335</tt>  <tt class="py-line">        <tt class="py-string">'position'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-number">0.0</tt><tt class="py-op">,</tt><tt class="py-number">0.0</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-comment"># in eye coordinates</tt> </tt>
+<a name="L1336"></a><tt class="py-lineno">1336</tt>  <tt class="py-line">                    <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-159" class="py-name" targets="Class VisionEgg.ParameterTypes.AnyOf=VisionEgg.ParameterTypes.AnyOf-class.html"><a title="VisionEgg.ParameterTypes.AnyOf" class="py-name" href="#" onclick="return doclink('link-159', 'AnyOf', 'link-159');">AnyOf</a></tt><tt class="py-op">(</tt><tt class="py-name">ve_types</tt><tt class="py-op">.</t [...]
+<a name="L1337"></a><tt class="py-lineno">1337</tt>  <tt class="py-line">                                   <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-162" class="py-name" targets="Class VisionEgg.ParameterTypes.Sequence3=VisionEgg.ParameterTypes.Sequence3-class.html"><a title="VisionEgg.ParameterTypes.Sequence3" class="py-name" href="#" onclick="return doclink('link-162', 'Sequence3', 'link-162');">Sequence3</a></tt><tt class="py-op">(</tt><tt class="py-name"> [...]
+<a name="L1338"></a><tt class="py-lineno">1338</tt>  <tt class="py-line">                                   <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-164" class="py-name" targets="Class VisionEgg.ParameterTypes.Sequence4=VisionEgg.ParameterTypes.Sequence4-class.html"><a title="VisionEgg.ParameterTypes.Sequence4" class="py-name" href="#" onclick="return doclink('link-164', 'Sequence4', 'link-164');">Sequence4</a></tt><tt class="py-op">(</tt><tt class="py-name"> [...]
+<a name="L1339"></a><tt class="py-lineno">1339</tt>  <tt class="py-line">                    <tt class="py-string">"units: eye coordinates"</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L1340"></a><tt class="py-lineno">1340</tt>  <tt class="py-line">        <tt class="py-string">'anchor'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-string">'lowerleft'</tt><tt class="py-op">,</tt> </tt>
+<a name="L1341"></a><tt class="py-lineno">1341</tt>  <tt class="py-line">                  <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-166" class="py-name"><a title="VisionEgg.ParameterTypes.String" class="py-name" href="#" onclick="return doclink('link-166', 'String', 'link-139');">String</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L1342"></a><tt class="py-lineno">1342</tt>  <tt class="py-line">                  <tt class="py-string">"specifies how position parameter is interpreted"</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L1343"></a><tt class="py-lineno">1343</tt>  <tt class="py-line">        <tt class="py-string">'lowerleft'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt>  <tt class="py-comment"># DEPRECATED -- don't use</tt> </tt>
+<a name="L1344"></a><tt class="py-lineno">1344</tt>  <tt class="py-line">                     <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-167" class="py-name"><a title="VisionEgg.ParameterTypes.Sequence2" class="py-name" href="#" onclick="return doclink('link-167', 'Sequence2', 'link-141');">Sequence2</a></tt><tt class="py-op">(</tt><tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-168" class="py-name"><a title="VisionEgg.ParameterTypes.Real" [...]
+<a name="L1345"></a><tt class="py-lineno">1345</tt>  <tt class="py-line">                     <tt class="py-string">""</tt><tt class="py-op">,</tt> </tt>
+<a name="L1346"></a><tt class="py-lineno">1346</tt>  <tt class="py-line">                     <tt id="link-169" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-169', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-170" class="py-name"><a title="VisionEgg.ParameterDefinition" class="py-name" href="#" onclick="return doclink('link-170', 'ParameterDefinition', 'link-98');">ParameterDefinition</a></tt><tt class="py-o [...]
+<a name="L1347"></a><tt class="py-lineno">1347</tt>  <tt class="py-line">        <tt class="py-string">'angle'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-number">0.0</tt><tt class="py-op">,</tt> <tt class="py-comment"># in degrees</tt> </tt>
+<a name="L1348"></a><tt class="py-lineno">1348</tt>  <tt class="py-line">                 <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-172" class="py-name"><a title="VisionEgg.ParameterTypes.Real" class="py-name" href="#" onclick="return doclink('link-172', 'Real', 'link-140');">Real</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L1349"></a><tt class="py-lineno">1349</tt>  <tt class="py-line">                 <tt class="py-string">"units: degrees, 0=right, 90=up"</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L1350"></a><tt class="py-lineno">1350</tt>  <tt class="py-line">        <tt class="py-string">'size'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
+<a name="L1351"></a><tt class="py-lineno">1351</tt>  <tt class="py-line">                <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-173" class="py-name"><a title="VisionEgg.ParameterTypes.Sequence2" class="py-name" href="#" onclick="return doclink('link-173', 'Sequence2', 'link-141');">Sequence2</a></tt><tt class="py-op">(</tt><tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-174" class="py-name"><a title="VisionEgg.ParameterTypes.Real" clas [...]
+<a name="L1352"></a><tt class="py-lineno">1352</tt>  <tt class="py-line">                <tt class="py-string">"defaults to texture data size (units: eye coordinates)"</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L1353"></a><tt class="py-lineno">1353</tt>  <tt class="py-line">        <tt class="py-string">'max_alpha'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-number">1.0</tt><tt class="py-op">,</tt> <tt class="py-comment"># controls "opacity": 1.0 = completely opaque, 0.0 = completely transparent</tt> </tt>
+<a name="L1354"></a><tt class="py-lineno">1354</tt>  <tt class="py-line">                     <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-175" class="py-name"><a title="VisionEgg.ParameterTypes.Real" class="py-name" href="#" onclick="return doclink('link-175', 'Real', 'link-140');">Real</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L1355"></a><tt class="py-lineno">1355</tt>  <tt class="py-line">                     <tt class="py-string">"controls opacity. 1.0=copletely opaque, 0.0=completely transparent"</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L1356"></a><tt class="py-lineno">1356</tt>  <tt class="py-line">        <tt class="py-string">'color'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-number">1.0</tt><tt class="py-op">,</tt><tt class="py-number">1.0</tt><tt class="py-op">,</tt><tt class="py-number">1.0</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-comment"># texture environment color. alpha is ignored (if given) -- use max_alpha parameter</tt> </tt>
+<a name="L1357"></a><tt class="py-lineno">1357</tt>  <tt class="py-line">                 <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-176" class="py-name"><a title="VisionEgg.ParameterTypes.AnyOf" class="py-name" href="#" onclick="return doclink('link-176', 'AnyOf', 'link-159');">AnyOf</a></tt><tt class="py-op">(</tt><tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-177" class="py-name"><a title="VisionEgg.ParameterTypes.Sequence3" class="py- [...]
+<a name="L1358"></a><tt class="py-lineno">1358</tt>  <tt class="py-line">                                <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-179" class="py-name"><a title="VisionEgg.ParameterTypes.Sequence4" class="py-name" href="#" onclick="return doclink('link-179', 'Sequence4', 'link-164');">Sequence4</a></tt><tt class="py-op">(</tt><tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-180" class="py-name"><a title="VisionEgg.Parameter [...]
+<a name="L1359"></a><tt class="py-lineno">1359</tt>  <tt class="py-line">                 <tt class="py-string">"texture environment color. alpha ignored (if given) for max_alpha parameter"</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L1360"></a><tt class="py-lineno">1360</tt>  <tt class="py-line">        <tt class="py-string">'depth_test'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-name">False</tt><tt class="py-op">,</tt> </tt>
+<a name="L1361"></a><tt class="py-lineno">1361</tt>  <tt class="py-line">                      <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-181" class="py-name"><a title="VisionEgg.ParameterTypes.Boolean" class="py-name" href="#" onclick="return doclink('link-181', 'Boolean', 'link-117');">Boolean</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L1362"></a><tt class="py-lineno">1362</tt>  <tt class="py-line">                      <tt class="py-string">"perform depth test?"</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L1363"></a><tt class="py-lineno">1363</tt>  <tt class="py-line">        <tt class="py-op">}</tt> </tt>
+<a name="L1364"></a><tt class="py-lineno">1364</tt>  <tt class="py-line"> </tt>
+<a name="TextureStimulus.draw"></a><div id="TextureStimulus.draw-def"><a name="L1365"></a><tt class="py-lineno">1365</tt> <a class="py-toggle" href="#" id="TextureStimulus.draw-toggle" onclick="return toggle('TextureStimulus.draw');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.Textures.TextureStimulus-class.html#draw">draw</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="TextureStimulus.draw-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="TextureStimulus.draw-expanded"><a name="L1366"></a><tt class="py-lineno">1366</tt>  <tt class="py-line">        <tt class="py-name">p</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt> </tt>
+<a name="L1367"></a><tt class="py-lineno">1367</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">texture</tt> <tt class="py-op">!=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_using_texture</tt><tt class="py-op">:</tt> <tt class="py-comment"># self._using_texture is from TextureStimulusBaseClass</tt> </tt>
+<a name="L1368"></a><tt class="py-lineno">1368</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_reload_texture</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1369"></a><tt class="py-lineno">1369</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">lowerleft</tt> <tt class="py-op">!=</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L1370"></a><tt class="py-lineno">1370</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt id="link-182" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-182', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-183" class="py-name" targets="Variable VisionEgg.config=VisionEgg-module.html#config"><a tit [...]
+<a name="L1371"></a><tt class="py-lineno">1371</tt>  <tt class="py-line">                <tt id="link-184" class="py-name"><a title="VisionEgg.logger" class="py-name" href="#" onclick="return doclink('link-184', 'logger', 'link-31');">logger</a></tt> <tt class="py-op">=</tt> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">getLogger</tt><tt class="py-op">(</tt><tt class="py-string">'VisionEgg.Textures'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1372"></a><tt class="py-lineno">1372</tt>  <tt class="py-line">                <tt id="link-185" class="py-name"><a title="VisionEgg.logger" class="py-name" href="#" onclick="return doclink('link-185', 'logger', 'link-31');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">warning</tt><tt class="py-op">(</tt><tt class="py-string">"Specifying texture by 'lowerleft' "</tt> </tt>
+<a name="L1373"></a><tt class="py-lineno">1373</tt>  <tt class="py-line">                               <tt class="py-string">"deprecated parameter deprecated.  Use "</tt> </tt>
+<a name="L1374"></a><tt class="py-lineno">1374</tt>  <tt class="py-line">                               <tt class="py-string">"'position' parameter instead.  (Allows "</tt> </tt>
+<a name="L1375"></a><tt class="py-lineno">1375</tt>  <tt class="py-line">                               <tt class="py-string">"use of 'anchor' parameter to set to "</tt> </tt>
+<a name="L1376"></a><tt class="py-lineno">1376</tt>  <tt class="py-line">                               <tt class="py-string">"other values.)"</tt><tt class="py-op">)</tt> </tt>
+<a name="L1377"></a><tt class="py-lineno">1377</tt>  <tt class="py-line">                <tt id="link-186" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-186', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-187" class="py-name"><a title="VisionEgg.config" class="py-name" href="#" onclick="return doclink('link-187', 'config', 'link-183');">config</a></tt><tt class="py-op">.</tt><tt class="py-name">_GAVE_LOWERLEF [...]
+<a name="L1378"></a><tt class="py-lineno">1378</tt>  <tt class="py-line">            <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">anchor</tt> <tt class="py-op">=</tt> <tt class="py-string">'lowerleft'</tt> </tt>
+<a name="L1379"></a><tt class="py-lineno">1379</tt>  <tt class="py-line">            <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">position</tt> <tt class="py-op">=</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">lowerleft</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">lowerleft</tt><tt class="py-op">[</tt><tt c [...]
+<a name="L1380"></a><tt class="py-lineno">1380</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">on</tt><tt class="py-op">:</tt> </tt>
+<a name="L1381"></a><tt class="py-lineno">1381</tt>  <tt class="py-line">            <tt class="py-name">tex</tt> <tt class="py-op">=</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">texture</tt> </tt>
+<a name="L1382"></a><tt class="py-lineno">1382</tt>  <tt class="py-line"> </tt>
+<a name="L1383"></a><tt class="py-lineno">1383</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt id="link-188" class="py-name"><a title="VisionEgg.Core.Screen.size" class="py-name" href="#" onclick="return doclink('link-188', 'size', 'link-15');">size</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L1384"></a><tt class="py-lineno">1384</tt>  <tt class="py-line">                <tt class="py-comment"># Note: 'size' attribute is not supposed to be part of the API,</tt> </tt>
+<a name="L1385"></a><tt class="py-lineno">1385</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-comment"># so this is naughty.</tt> </tt>
+<a name="L1386"></a><tt class="py-lineno">1386</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt id="link-189" class="py-name"><a title="VisionEgg.Core.Screen.size" class="py-name" href="#" onclick="return doclink('link-189', 'size', 'link-15');">size</a></tt> <tt class="py-op">=</tt> <tt class="py-name">tex</tt><tt class="py-op">.</tt><tt id="link-190" class="py-name"><a title="VisionEgg.Core.Screen.size" class="py-name" href="#" onclick="return doclink('link-190 [...]
+<a name="L1387"></a><tt class="py-lineno">1387</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1388"></a><tt class="py-lineno">1388</tt>  <tt class="py-line">                <tt id="link-191" class="py-name"><a title="VisionEgg.Core.Screen.size" class="py-name" href="#" onclick="return doclink('link-191', 'size', 'link-15');">size</a></tt> <tt class="py-op">=</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt id="link-192" class="py-name"><a title="VisionEgg.Core.Screen.size" class="py-name" href="#" onclick="return doclink('link-192', 'size', 'link-15');">size</ [...]
+<a name="L1389"></a><tt class="py-lineno">1389</tt>  <tt class="py-line"> </tt>
+<a name="L1390"></a><tt class="py-lineno">1390</tt>  <tt class="py-line">            <tt class="py-comment"># calculate lowerleft corner</tt> </tt>
+<a name="L1391"></a><tt class="py-lineno">1391</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">lowerleft</tt> <tt class="py-op">=</tt> <tt id="link-193" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-193', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt class="py-name">_get_lowerleft</tt><tt class="py-op">(</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">pos [...]
+<a name="L1392"></a><tt class="py-lineno">1392</tt>  <tt class="py-line"> </tt>
+<a name="L1393"></a><tt class="py-lineno">1393</tt>  <tt class="py-line">            <tt class="py-comment"># Clear the modelview matrix</tt> </tt>
+<a name="L1394"></a><tt class="py-lineno">1394</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glMatrixMode</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_MODELVIEW</tt><tt class="py-op">)</tt> </tt>
+<a name="L1395"></a><tt class="py-lineno">1395</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glPushMatrix</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1396"></a><tt class="py-lineno">1396</tt>  <tt class="py-line">            <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L1397"></a><tt class="py-lineno">1397</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">depth_test</tt><tt class="py-op">:</tt> </tt>
+<a name="L1398"></a><tt class="py-lineno">1398</tt>  <tt class="py-line">                    <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glEnable</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_DEPTH_TEST</tt><tt class="py-op">)</tt> </tt>
+<a name="L1399"></a><tt class="py-lineno">1399</tt>  <tt class="py-line">                <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1400"></a><tt class="py-lineno">1400</tt>  <tt class="py-line">                    <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glDisable</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_DEPTH_TEST</tt><tt class="py-op">)</tt> </tt>
+<a name="L1401"></a><tt class="py-lineno">1401</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glEnable</tt><tt class="py-op">(</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE_2D</tt> <tt class="py-op">)</tt> </tt>
+<a name="L1402"></a><tt class="py-lineno">1402</tt>  <tt class="py-line"> </tt>
+<a name="L1403"></a><tt class="py-lineno">1403</tt>  <tt class="py-line">                <tt class="py-comment"># allow max_alpha value to control blending</tt> </tt>
+<a name="L1404"></a><tt class="py-lineno">1404</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glEnable</tt><tt class="py-op">(</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_BLEND</tt> <tt class="py-op">)</tt> </tt>
+<a name="L1405"></a><tt class="py-lineno">1405</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glBlendFunc</tt><tt class="py-op">(</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_SRC_ALPHA</tt><tt class="py-op">,</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_ONE_MINUS_SRC_ALPHA</tt> <tt class="py-op">)</tt> </tt>
+<a name="L1406"></a><tt class="py-lineno">1406</tt>  <tt class="py-line"> </tt>
+<a name="L1407"></a><tt class="py-lineno">1407</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">constant_parameters</tt><tt class="py-op">.</tt><tt class="py-name">mipmaps_enabled</tt><tt class="py-op">:</tt> </tt>
+<a name="L1408"></a><tt class="py-lineno">1408</tt>  <tt class="py-line">                    <tt class="py-keyword">if</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">texture_min_filter</tt> <tt class="py-keyword">in</tt> <tt id="link-195" class="py-name"><a title="VisionEgg.Textures.TextureStimulusBaseClass" class="py-name" href="#" onclick="return doclink('link-195', 'TextureStimulusBaseClass', 'link-125');">TextureStimulusBaseClass</a></tt><tt class="py-op"> [...]
+<a name="L1409"></a><tt class="py-lineno">1409</tt>  <tt class="py-line">                        <tt class="py-keyword">raise</tt> <tt class="py-name">RuntimeError</tt><tt class="py-op">(</tt><tt class="py-string">"Specified a mipmap mode in texture_min_filter, but mipmaps not enabled."</tt><tt class="py-op">)</tt> </tt>
+<a name="L1410"></a><tt class="py-lineno">1410</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">texture_object</tt><tt class="py-op">.</tt><tt id="link-197" class="py-name"><a title="VisionEgg.Textures.TextureObject.set_min_filter" class="py-name" href="#" onclick="return doclink('link-197', 'set_min_filter', 'link-151');">set_min_filter</a></tt><tt class="py-op">(</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt [...]
+<a name="L1411"></a><tt class="py-lineno">1411</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">texture_object</tt><tt class="py-op">.</tt><tt id="link-198" class="py-name" targets="Method VisionEgg.Textures.TextureObject.set_mag_filter()=VisionEgg.Textures.TextureObject-class.html#set_mag_filter"><a title="VisionEgg.Textures.TextureObject.set_mag_filter" class="py-name" href="#" onclick="return doclink('link-198', 'set_ma [...]
+<a name="L1412"></a><tt class="py-lineno">1412</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">texture_object</tt><tt class="py-op">.</tt><tt id="link-199" class="py-name"><a title="VisionEgg.Textures.TextureObject.set_wrap_mode_s" class="py-name" href="#" onclick="return doclink('link-199', 'set_wrap_mode_s', 'link-152');">set_wrap_mode_s</a></tt><tt class="py-op">(</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt> [...]
+<a name="L1413"></a><tt class="py-lineno">1413</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">texture_object</tt><tt class="py-op">.</tt><tt id="link-200" class="py-name"><a title="VisionEgg.Textures.TextureObject.set_wrap_mode_t" class="py-name" href="#" onclick="return doclink('link-200', 'set_wrap_mode_t', 'link-153');">set_wrap_mode_t</a></tt><tt class="py-op">(</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt> [...]
+<a name="L1414"></a><tt class="py-lineno">1414</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glTexEnvi</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE_ENV</tt><tt class="py-op">,</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE_ENV_MODE</tt><tt class="py-op">,</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt clas [...]
+<a name="L1415"></a><tt class="py-lineno">1415</tt>  <tt class="py-line"> </tt>
+<a name="L1416"></a><tt class="py-lineno">1416</tt>  <tt class="py-line">                <tt class="py-name">translate_vector</tt> <tt class="py-op">=</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">position</tt> </tt>
+<a name="L1417"></a><tt class="py-lineno">1417</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">translate_vector</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">2</tt><tt class="py-op">:</tt> </tt>
+<a name="L1418"></a><tt class="py-lineno">1418</tt>  <tt class="py-line">                    <tt class="py-name">translate_vector</tt> <tt class="py-op">=</tt> <tt class="py-name">translate_vector</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">translate_vector</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-number">0</tt> </tt>
+<a name="L1419"></a><tt class="py-lineno">1419</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glTranslate</tt><tt class="py-op">(</tt><tt class="py-op">*</tt><tt class="py-name">translate_vector</tt><tt class="py-op">)</tt> </tt>
+<a name="L1420"></a><tt class="py-lineno">1420</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glRotate</tt><tt class="py-op">(</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">angle</tt><tt class="py-op">,</tt><tt class="py-number">0</tt><tt class="py-op">,</tt><tt class="py-number">0</tt><tt class="py-op">,</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="L1421"></a><tt class="py-lineno">1421</tt>  <tt class="py-line"> </tt>
+<a name="L1422"></a><tt class="py-lineno">1422</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glColor4f</tt><tt class="py-op">(</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">color</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">,</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">color</tt><tt class="py-op">[</tt><tt class= [...]
+<a name="L1423"></a><tt class="py-lineno">1423</tt>  <tt class="py-line"> </tt>
+<a name="L1424"></a><tt class="py-lineno">1424</tt>  <tt class="py-line">                <tt class="py-comment"># draw only if all values are finite</tt> </tt>
+<a name="L1425"></a><tt class="py-lineno">1425</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-keyword">if</tt> <tt class="py-name">numpy</tt><tt class="py-op">.</tt><tt class="py-name">alltrue</tt><tt class="py-op">(</tt> <tt class="py-name">numpy</tt><tt class="py-op">.</tt><tt class="py-name">isfinite</tt><tt class="py-op">(</tt> <tt class="py-name">numpy</tt><tt class="py-op">.</tt><tt class="py-name">concatenate</tt><tt class="py-op">(</tt><tt cla [...]
+<a name="L1426"></a><tt class="py-lineno">1426</tt>  <tt class="py-line">                    <tt class="py-name">l</tt> <tt class="py-op">=</tt> <tt class="py-name">lowerleft</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">-</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">position</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt>
+<a name="L1427"></a><tt class="py-lineno">1427</tt>  <tt class="py-line">                    <tt class="py-name">r</tt> <tt class="py-op">=</tt> <tt class="py-name">l</tt> <tt class="py-op">+</tt> <tt id="link-201" class="py-name"><a title="VisionEgg.Core.Screen.size" class="py-name" href="#" onclick="return doclink('link-201', 'size', 'link-15');">size</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt>
+<a name="L1428"></a><tt class="py-lineno">1428</tt>  <tt class="py-line">                    <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt class="py-name">lowerleft</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-op">-</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">position</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
+<a name="L1429"></a><tt class="py-lineno">1429</tt>  <tt class="py-line">                    <tt class="py-name">t</tt> <tt class="py-op">=</tt> <tt class="py-name">b</tt> <tt class="py-op">+</tt> <tt id="link-202" class="py-name"><a title="VisionEgg.Core.Screen.size" class="py-name" href="#" onclick="return doclink('link-202', 'size', 'link-15');">size</a></tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
+<a name="L1430"></a><tt class="py-lineno">1430</tt>  <tt class="py-line"> </tt>
+<a name="L1431"></a><tt class="py-lineno">1431</tt>  <tt class="py-line">                    <tt class="py-name">tex</tt><tt class="py-op">.</tt><tt id="link-203" class="py-name" targets="Method VisionEgg.GUI.InfoFrame.update()=VisionEgg.GUI.InfoFrame-class.html#update,Method VisionEgg.GUI.ProgressBar.update()=VisionEgg.GUI.ProgressBar-class.html#update,Method VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.update()=VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController-class. [...]
+VisionEgg.GUI.ProgressBar.update
+VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.update
+VisionEgg.PyroApps.DropinServer.DropinMetaController.update
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.update
+VisionEgg.PyroApps.GridServer.GridMetaController.update
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.update
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.update
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.update
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.update
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.update
+VisionEgg.QuickTime.MovieTexture.update
+VisionEgg.Textures.Texture.update" class="py-name" href="#" onclick="return doclink('link-203', 'update', 'link-203');">update</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1432"></a><tt class="py-lineno">1432</tt>  <tt class="py-line"> </tt>
+<a name="L1433"></a><tt class="py-lineno">1433</tt>  <tt class="py-line">                    <tt class="py-keyword">if</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">mask</tt><tt class="py-op">:</tt> </tt>
+<a name="L1434"></a><tt class="py-lineno">1434</tt>  <tt class="py-line">                        <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">mask</tt><tt class="py-op">.</tt><tt id="link-204" class="py-name" targets="Method VisionEgg.Textures.Mask2D.draw_masked_quad()=VisionEgg.Textures.Mask2D-class.html#draw_masked_quad"><a title="VisionEgg.Textures.Mask2D.draw_masked_quad" class="py-name" href="#" onclick="return doclink('link-204', 'draw_masked_quad', 'link-2 [...]
+<a name="L1435"></a><tt class="py-lineno">1435</tt>  <tt class="py-line">                                                <tt class="py-name">l</tt><tt class="py-op">,</tt><tt class="py-name">r</tt><tt class="py-op">,</tt><tt class="py-name">b</tt><tt class="py-op">,</tt><tt class="py-name">t</tt><tt class="py-op">,</tt><tt class="py-number">0.0</tt><tt class="py-op">)</tt> <tt class="py-comment"># l,r,b,t in eye coordinates</tt> </tt>
+<a name="L1436"></a><tt class="py-lineno">1436</tt>  <tt class="py-line">                    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1437"></a><tt class="py-lineno">1437</tt>  <tt class="py-line">                        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glBegin</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_QUADS</tt><tt class="py-op">)</tt> </tt>
+<a name="L1438"></a><tt class="py-lineno">1438</tt>  <tt class="py-line">                        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glTexCoord2f</tt><tt class="py-op">(</tt><tt class="py-name">tex</tt><tt class="py-op">.</tt><tt class="py-name">buf_lf</tt><tt class="py-op">,</tt><tt class="py-name">tex</tt><tt class="py-op">.</tt><tt class="py-name">buf_bf</tt><tt class="py-op">)</tt> </tt>
+<a name="L1439"></a><tt class="py-lineno">1439</tt>  <tt class="py-line">                        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glVertex2f</tt><tt class="py-op">(</tt><tt class="py-name">l</tt><tt class="py-op">,</tt><tt class="py-name">b</tt><tt class="py-op">)</tt> </tt>
+<a name="L1440"></a><tt class="py-lineno">1440</tt>  <tt class="py-line"> </tt>
+<a name="L1441"></a><tt class="py-lineno">1441</tt>  <tt class="py-line">                        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glTexCoord2f</tt><tt class="py-op">(</tt><tt class="py-name">tex</tt><tt class="py-op">.</tt><tt class="py-name">buf_rf</tt><tt class="py-op">,</tt><tt class="py-name">tex</tt><tt class="py-op">.</tt><tt class="py-name">buf_bf</tt><tt class="py-op">)</tt> </tt>
+<a name="L1442"></a><tt class="py-lineno">1442</tt>  <tt class="py-line">                        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glVertex2f</tt><tt class="py-op">(</tt><tt class="py-name">r</tt><tt class="py-op">,</tt><tt class="py-name">b</tt><tt class="py-op">)</tt> </tt>
+<a name="L1443"></a><tt class="py-lineno">1443</tt>  <tt class="py-line"> </tt>
+<a name="L1444"></a><tt class="py-lineno">1444</tt>  <tt class="py-line">                        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glTexCoord2f</tt><tt class="py-op">(</tt><tt class="py-name">tex</tt><tt class="py-op">.</tt><tt class="py-name">buf_rf</tt><tt class="py-op">,</tt><tt class="py-name">tex</tt><tt class="py-op">.</tt><tt class="py-name">buf_tf</tt><tt class="py-op">)</tt> </tt>
+<a name="L1445"></a><tt class="py-lineno">1445</tt>  <tt class="py-line">                        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glVertex2f</tt><tt class="py-op">(</tt><tt class="py-name">r</tt><tt class="py-op">,</tt><tt class="py-name">t</tt><tt class="py-op">)</tt> </tt>
+<a name="L1446"></a><tt class="py-lineno">1446</tt>  <tt class="py-line"> </tt>
+<a name="L1447"></a><tt class="py-lineno">1447</tt>  <tt class="py-line">                        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glTexCoord2f</tt><tt class="py-op">(</tt><tt class="py-name">tex</tt><tt class="py-op">.</tt><tt class="py-name">buf_lf</tt><tt class="py-op">,</tt><tt class="py-name">tex</tt><tt class="py-op">.</tt><tt class="py-name">buf_tf</tt><tt class="py-op">)</tt> </tt>
+<a name="L1448"></a><tt class="py-lineno">1448</tt>  <tt class="py-line">                        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glVertex2f</tt><tt class="py-op">(</tt><tt class="py-name">l</tt><tt class="py-op">,</tt><tt class="py-name">t</tt><tt class="py-op">)</tt> </tt>
+<a name="L1449"></a><tt class="py-lineno">1449</tt>  <tt class="py-line">                        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glEnd</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-comment"># GL_QUADS</tt> </tt>
+<a name="L1450"></a><tt class="py-lineno">1450</tt>  <tt class="py-line">            <tt class="py-keyword">finally</tt><tt class="py-op">:</tt> </tt>
+<a name="L1451"></a><tt class="py-lineno">1451</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glPopMatrix</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L1452"></a><tt class="py-lineno">1452</tt>  <tt class="py-line"> </tt>
+<a name="TextureStimulus3D"></a><div id="TextureStimulus3D-def"><a name="L1453"></a><tt class="py-lineno">1453</tt> <a class="py-toggle" href="#" id="TextureStimulus3D-toggle" onclick="return toggle('TextureStimulus3D');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.Textures.TextureStimulus3D-class.html">TextureStimulus3D</a><tt class="py-op">(</tt><tt class="py-base-class">TextureStimulusBaseClass</tt><tt class="py-op">)</tt><tt class [...]
+</div><div id="TextureStimulus3D-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="TextureStimulus3D-expanded"><a name="L1454"></a><tt class="py-lineno">1454</tt>  <tt class="py-line">    <tt class="py-docstring">"""A textured rectangle placed arbitrarily in 3 space.</tt> </tt>
+<a name="L1455"></a><tt class="py-lineno">1455</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1456"></a><tt class="py-lineno">1456</tt>  <tt class="py-line"><tt class="py-docstring">    Parameters</tt> </tt>
+<a name="L1457"></a><tt class="py-lineno">1457</tt>  <tt class="py-line"><tt class="py-docstring">    ==========</tt> </tt>
+<a name="L1458"></a><tt class="py-lineno">1458</tt>  <tt class="py-line"><tt class="py-docstring">    depth_test         -- perform depth test? (Boolean)</tt> </tt>
+<a name="L1459"></a><tt class="py-lineno">1459</tt>  <tt class="py-line"><tt class="py-docstring">                          Default: True</tt> </tt>
+<a name="L1460"></a><tt class="py-lineno">1460</tt>  <tt class="py-line"><tt class="py-docstring">    lowerleft          -- vertex position (units: eye coordinates) (AnyOf(Sequence3 of Real or Sequence4 of Real))</tt> </tt>
+<a name="L1461"></a><tt class="py-lineno">1461</tt>  <tt class="py-line"><tt class="py-docstring">                          Default: (0.0, 0.0, -1.0)</tt> </tt>
+<a name="L1462"></a><tt class="py-lineno">1462</tt>  <tt class="py-line"><tt class="py-docstring">    lowerright         -- vertex position (units: eye coordinates) (AnyOf(Sequence3 of Real or Sequence4 of Real))</tt> </tt>
+<a name="L1463"></a><tt class="py-lineno">1463</tt>  <tt class="py-line"><tt class="py-docstring">                          Default: (1.0, 0.0, -1.0)</tt> </tt>
+<a name="L1464"></a><tt class="py-lineno">1464</tt>  <tt class="py-line"><tt class="py-docstring">    on                 -- (Boolean)</tt> </tt>
+<a name="L1465"></a><tt class="py-lineno">1465</tt>  <tt class="py-line"><tt class="py-docstring">                          Default: True</tt> </tt>
+<a name="L1466"></a><tt class="py-lineno">1466</tt>  <tt class="py-line"><tt class="py-docstring">    texture            -- source of texture data (Instance of <class 'VisionEgg.Textures.Texture'>)</tt> </tt>
+<a name="L1467"></a><tt class="py-lineno">1467</tt>  <tt class="py-line"><tt class="py-docstring">                          Inherited from TextureStimulusBaseClass</tt> </tt>
+<a name="L1468"></a><tt class="py-lineno">1468</tt>  <tt class="py-line"><tt class="py-docstring">                          Default: (determined at runtime)</tt> </tt>
+<a name="L1469"></a><tt class="py-lineno">1469</tt>  <tt class="py-line"><tt class="py-docstring">    texture_mag_filter -- OpenGL filter enum (Integer)</tt> </tt>
+<a name="L1470"></a><tt class="py-lineno">1470</tt>  <tt class="py-line"><tt class="py-docstring">                          Inherited from TextureStimulusBaseClass</tt> </tt>
+<a name="L1471"></a><tt class="py-lineno">1471</tt>  <tt class="py-line"><tt class="py-docstring">                          Default: GL_LINEAR (9729)</tt> </tt>
+<a name="L1472"></a><tt class="py-lineno">1472</tt>  <tt class="py-line"><tt class="py-docstring">    texture_min_filter -- OpenGL filter enum (Integer)</tt> </tt>
+<a name="L1473"></a><tt class="py-lineno">1473</tt>  <tt class="py-line"><tt class="py-docstring">                          Inherited from TextureStimulusBaseClass</tt> </tt>
+<a name="L1474"></a><tt class="py-lineno">1474</tt>  <tt class="py-line"><tt class="py-docstring">                          Default: (GL enum determined at runtime)</tt> </tt>
+<a name="L1475"></a><tt class="py-lineno">1475</tt>  <tt class="py-line"><tt class="py-docstring">    texture_wrap_s     -- OpenGL texture wrap enum (Integer)</tt> </tt>
+<a name="L1476"></a><tt class="py-lineno">1476</tt>  <tt class="py-line"><tt class="py-docstring">                          Inherited from TextureStimulusBaseClass</tt> </tt>
+<a name="L1477"></a><tt class="py-lineno">1477</tt>  <tt class="py-line"><tt class="py-docstring">                          Default: (GL enum determined at runtime)</tt> </tt>
+<a name="L1478"></a><tt class="py-lineno">1478</tt>  <tt class="py-line"><tt class="py-docstring">    texture_wrap_t     -- OpenGL texture wrap enum (Integer)</tt> </tt>
+<a name="L1479"></a><tt class="py-lineno">1479</tt>  <tt class="py-line"><tt class="py-docstring">                          Inherited from TextureStimulusBaseClass</tt> </tt>
+<a name="L1480"></a><tt class="py-lineno">1480</tt>  <tt class="py-line"><tt class="py-docstring">                          Default: (GL enum determined at runtime)</tt> </tt>
+<a name="L1481"></a><tt class="py-lineno">1481</tt>  <tt class="py-line"><tt class="py-docstring">    upperleft          -- vertex position (units: eye coordinates) (AnyOf(Sequence3 of Real or Sequence4 of Real))</tt> </tt>
+<a name="L1482"></a><tt class="py-lineno">1482</tt>  <tt class="py-line"><tt class="py-docstring">                          Default: (0.0, 1.0, -1.0)</tt> </tt>
+<a name="L1483"></a><tt class="py-lineno">1483</tt>  <tt class="py-line"><tt class="py-docstring">    upperright         -- vertex position (units: eye coordinates) (AnyOf(Sequence3 of Real or Sequence4 of Real))</tt> </tt>
+<a name="L1484"></a><tt class="py-lineno">1484</tt>  <tt class="py-line"><tt class="py-docstring">                          Default: (1.0, 1.0, -1.0)</tt> </tt>
+<a name="L1485"></a><tt class="py-lineno">1485</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1486"></a><tt class="py-lineno">1486</tt>  <tt class="py-line"><tt class="py-docstring">    Constant Parameters</tt> </tt>
+<a name="L1487"></a><tt class="py-lineno">1487</tt>  <tt class="py-line"><tt class="py-docstring">    ===================</tt> </tt>
+<a name="L1488"></a><tt class="py-lineno">1488</tt>  <tt class="py-line"><tt class="py-docstring">    internal_format   -- format with which OpenGL uses texture data (OpenGL data type enum) (Integer)</tt> </tt>
+<a name="L1489"></a><tt class="py-lineno">1489</tt>  <tt class="py-line"><tt class="py-docstring">                         Default: GL_RGB (6407)</tt> </tt>
+<a name="L1490"></a><tt class="py-lineno">1490</tt>  <tt class="py-line"><tt class="py-docstring">    mipmaps_enabled   -- Are mipmaps enabled? (Boolean)</tt> </tt>
+<a name="L1491"></a><tt class="py-lineno">1491</tt>  <tt class="py-line"><tt class="py-docstring">                         Default: True</tt> </tt>
+<a name="L1492"></a><tt class="py-lineno">1492</tt>  <tt class="py-line"><tt class="py-docstring">    shrink_texture_ok -- Allow automatic shrinking of texture if too big? (Boolean)</tt> </tt>
+<a name="L1493"></a><tt class="py-lineno">1493</tt>  <tt class="py-line"><tt class="py-docstring">                         Default: False</tt> </tt>
+<a name="L1494"></a><tt class="py-lineno">1494</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L1495"></a><tt class="py-lineno">1495</tt>  <tt class="py-line"> </tt>
+<a name="L1496"></a><tt class="py-lineno">1496</tt>  <tt class="py-line">    <tt id="link-205" class="py-name"><a title="VisionEgg.ClassWithParameters.parameters_and_defaults
+VisionEgg.Core.FixationSpot.parameters_and_defaults
+VisionEgg.Core.ProjectionBaseClass.parameters_and_defaults
+VisionEgg.Core.Screen.parameters_and_defaults
+VisionEgg.Core.Viewport.parameters_and_defaults
+VisionEgg.Daq.Buffered.parameters_and_defaults
+VisionEgg.Dots.DotArea2D.parameters_and_defaults
+VisionEgg.FlowControl.Presentation.parameters_and_defaults
+VisionEgg.Gratings.AlphaGratingCommon.parameters_and_defaults
+VisionEgg.Gratings.LuminanceGratingCommon.parameters_and_defaults
+VisionEgg.Gratings.SinGrating2D.parameters_and_defaults
+VisionEgg.Gratings.SinGrating3D.parameters_and_defaults
+VisionEgg.MoreStimuli.Arrow.parameters_and_defaults
+VisionEgg.MoreStimuli.FilledCircle.parameters_and_defaults
+VisionEgg.MoreStimuli.Rectangle3D.parameters_and_defaults
+VisionEgg.MoreStimuli.Target2D.parameters_and_defaults
+VisionEgg.PyroApps.EPhysGUI.Loop.parameters_and_defaults
+VisionEgg.SphereMap.AzElGrid.parameters_and_defaults
+VisionEgg.SphereMap.SphereGrating.parameters_and_defaults
+VisionEgg.SphereMap.SphereMap.parameters_and_defaults
+VisionEgg.SphereMap.SphereWindow.parameters_and_defaults
+VisionEgg.Text.BitmapText.parameters_and_defaults
+VisionEgg.Text.GlutTextBase.parameters_and_defaults
+VisionEgg.Text.StrokeText.parameters_and_defaults
+VisionEgg.Text.Text.parameters_and_defaults
+VisionEgg.Textures.FixationCross.parameters_and_defaults
+VisionEgg.Textures.SpinningDrum.parameters_and_defaults
+VisionEgg.Textures.TextureStimulus.parameters_and_defaults
+VisionEgg.Textures.TextureStimulus3D.parameters_and_defaults
+VisionEgg.Textures.TextureStimulusBaseClass.parameters_and_defaults
+VisionEgg.WrappedText.WrappedText.parameters_and_defaults" class="py-name" href="#" onclick="return doclink('link-205', 'parameters_and_defaults', 'link-93');">parameters_and_defaults</a></tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-string">'on'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-name">True</tt><tt class="py-op">,</tt> </tt>
+<a name="L1497"></a><tt class="py-lineno">1497</tt>  <tt class="py-line">                                     <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-206" class="py-name"><a title="VisionEgg.ParameterTypes.Boolean" class="py-name" href="#" onclick="return doclink('link-206', 'Boolean', 'link-117');">Boolean</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L1498"></a><tt class="py-lineno">1498</tt>  <tt class="py-line">                               <tt class="py-string">'lowerleft'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-number">0.0</tt><tt class="py-op">,</tt><tt class="py-number">0.0</tt><tt class="py-op">,</tt><tt class="py-op">-</tt><tt class="py-number">1.0</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-comment"># in eye coordinates</tt> </tt>
+<a name="L1499"></a><tt class="py-lineno">1499</tt>  <tt class="py-line">                                            <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-207" class="py-name"><a title="VisionEgg.ParameterTypes.AnyOf" class="py-name" href="#" onclick="return doclink('link-207', 'AnyOf', 'link-159');">AnyOf</a></tt><tt class="py-op">(</tt><tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-208" class="py-name"><a title="VisionEgg.Parameter [...]
+<a name="L1500"></a><tt class="py-lineno">1500</tt>  <tt class="py-line">                                                           <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-210" class="py-name"><a title="VisionEgg.ParameterTypes.Sequence4" class="py-name" href="#" onclick="return doclink('link-210', 'Sequence4', 'link-164');">Sequence4</a></tt><tt class="py-op">(</tt><tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-211" class="py-name"><a [...]
+<a name="L1501"></a><tt class="py-lineno">1501</tt>  <tt class="py-line">                                            <tt class="py-string">"vertex position (units: eye coordinates)"</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L1502"></a><tt class="py-lineno">1502</tt>  <tt class="py-line">                               <tt class="py-string">'lowerright'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-number">1.0</tt><tt class="py-op">,</tt><tt class="py-number">0.0</tt><tt class="py-op">,</tt><tt class="py-op">-</tt><tt class="py-number">1.0</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-comment"># in eye coordinates</tt> </tt>
+<a name="L1503"></a><tt class="py-lineno">1503</tt>  <tt class="py-line">                                             <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-212" class="py-name"><a title="VisionEgg.ParameterTypes.AnyOf" class="py-name" href="#" onclick="return doclink('link-212', 'AnyOf', 'link-159');">AnyOf</a></tt><tt class="py-op">(</tt><tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-213" class="py-name"><a title="VisionEgg.Paramete [...]
+<a name="L1504"></a><tt class="py-lineno">1504</tt>  <tt class="py-line">                                                            <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-215" class="py-name"><a title="VisionEgg.ParameterTypes.Sequence4" class="py-name" href="#" onclick="return doclink('link-215', 'Sequence4', 'link-164');">Sequence4</a></tt><tt class="py-op">(</tt><tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-216" class="py-name">< [...]
+<a name="L1505"></a><tt class="py-lineno">1505</tt>  <tt class="py-line">                                            <tt class="py-string">"vertex position (units: eye coordinates)"</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L1506"></a><tt class="py-lineno">1506</tt>  <tt class="py-line">                               <tt class="py-string">'upperleft'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-number">0.0</tt><tt class="py-op">,</tt><tt class="py-number">1.0</tt><tt class="py-op">,</tt><tt class="py-op">-</tt><tt class="py-number">1.0</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-comment"># in eye coordinates</tt> </tt>
+<a name="L1507"></a><tt class="py-lineno">1507</tt>  <tt class="py-line">                                            <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-217" class="py-name"><a title="VisionEgg.ParameterTypes.AnyOf" class="py-name" href="#" onclick="return doclink('link-217', 'AnyOf', 'link-159');">AnyOf</a></tt><tt class="py-op">(</tt><tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-218" class="py-name"><a title="VisionEgg.Parameter [...]
+<a name="L1508"></a><tt class="py-lineno">1508</tt>  <tt class="py-line">                                                           <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-220" class="py-name"><a title="VisionEgg.ParameterTypes.Sequence4" class="py-name" href="#" onclick="return doclink('link-220', 'Sequence4', 'link-164');">Sequence4</a></tt><tt class="py-op">(</tt><tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-221" class="py-name"><a [...]
+<a name="L1509"></a><tt class="py-lineno">1509</tt>  <tt class="py-line">                                            <tt class="py-string">"vertex position (units: eye coordinates)"</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L1510"></a><tt class="py-lineno">1510</tt>  <tt class="py-line">                               <tt class="py-string">'upperright'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-number">1.0</tt><tt class="py-op">,</tt><tt class="py-number">1.0</tt><tt class="py-op">,</tt><tt class="py-op">-</tt><tt class="py-number">1.0</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-comment"># in eye coordinates</tt> </tt>
+<a name="L1511"></a><tt class="py-lineno">1511</tt>  <tt class="py-line">                                             <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-222" class="py-name"><a title="VisionEgg.ParameterTypes.AnyOf" class="py-name" href="#" onclick="return doclink('link-222', 'AnyOf', 'link-159');">AnyOf</a></tt><tt class="py-op">(</tt><tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-223" class="py-name"><a title="VisionEgg.Paramete [...]
+<a name="L1512"></a><tt class="py-lineno">1512</tt>  <tt class="py-line">                                                            <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-225" class="py-name"><a title="VisionEgg.ParameterTypes.Sequence4" class="py-name" href="#" onclick="return doclink('link-225', 'Sequence4', 'link-164');">Sequence4</a></tt><tt class="py-op">(</tt><tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-226" class="py-name">< [...]
+<a name="L1513"></a><tt class="py-lineno">1513</tt>  <tt class="py-line">                                            <tt class="py-string">"vertex position (units: eye coordinates)"</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L1514"></a><tt class="py-lineno">1514</tt>  <tt class="py-line">                               <tt class="py-string">'depth_test'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-name">True</tt><tt class="py-op">,</tt> </tt>
+<a name="L1515"></a><tt class="py-lineno">1515</tt>  <tt class="py-line">                                             <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-227" class="py-name"><a title="VisionEgg.ParameterTypes.Boolean" class="py-name" href="#" onclick="return doclink('link-227', 'Boolean', 'link-117');">Boolean</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L1516"></a><tt class="py-lineno">1516</tt>  <tt class="py-line">                                             <tt class="py-string">"perform depth test?"</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L1517"></a><tt class="py-lineno">1517</tt>  <tt class="py-line">                               <tt class="py-op">}</tt> </tt>
+<a name="L1518"></a><tt class="py-lineno">1518</tt>  <tt class="py-line"> </tt>
+<a name="TextureStimulus3D.draw"></a><div id="TextureStimulus3D.draw-def"><a name="L1519"></a><tt class="py-lineno">1519</tt> <a class="py-toggle" href="#" id="TextureStimulus3D.draw-toggle" onclick="return toggle('TextureStimulus3D.draw');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.Textures.TextureStimulus3D-class.html#draw">draw</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:< [...]
+</div><div id="TextureStimulus3D.draw-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="TextureStimulus3D.draw-expanded"><a name="L1520"></a><tt class="py-lineno">1520</tt>  <tt class="py-line">        <tt class="py-name">p</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt> </tt>
+<a name="L1521"></a><tt class="py-lineno">1521</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">texture</tt> <tt class="py-op">!=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_using_texture</tt><tt class="py-op">:</tt> <tt class="py-comment"># self._using_texture is from TextureStimulusBaseClass</tt> </tt>
+<a name="L1522"></a><tt class="py-lineno">1522</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_reload_texture</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1523"></a><tt class="py-lineno">1523</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">on</tt><tt class="py-op">:</tt> </tt>
+<a name="L1524"></a><tt class="py-lineno">1524</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">depth_test</tt><tt class="py-op">:</tt> </tt>
+<a name="L1525"></a><tt class="py-lineno">1525</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glEnable</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_DEPTH_TEST</tt><tt class="py-op">)</tt> </tt>
+<a name="L1526"></a><tt class="py-lineno">1526</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1527"></a><tt class="py-lineno">1527</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glDisable</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_DEPTH_TEST</tt><tt class="py-op">)</tt> </tt>
+<a name="L1528"></a><tt class="py-lineno">1528</tt>  <tt class="py-line"> </tt>
+<a name="L1529"></a><tt class="py-lineno">1529</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glEnable</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE_2D</tt><tt class="py-op">)</tt> </tt>
+<a name="L1530"></a><tt class="py-lineno">1530</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glBindTexture</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE_2D</tt><tt class="py-op">,</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">texture_object</tt><tt class="py-op">.</tt><tt class="py-name">gl_id</tt><tt class="py-op">)</tt> </tt>
+<a name="L1531"></a><tt class="py-lineno">1531</tt>  <tt class="py-line"> </tt>
+<a name="L1532"></a><tt class="py-lineno">1532</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">constant_parameters</tt><tt class="py-op">.</tt><tt class="py-name">mipmaps_enabled</tt><tt class="py-op">:</tt> </tt>
+<a name="L1533"></a><tt class="py-lineno">1533</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">texture_min_filter</tt> <tt class="py-keyword">in</tt> <tt id="link-228" class="py-name"><a title="VisionEgg.Textures.TextureStimulusBaseClass" class="py-name" href="#" onclick="return doclink('link-228', 'TextureStimulusBaseClass', 'link-125');">TextureStimulusBaseClass</a></tt><tt class="py-op">.</t [...]
+<a name="L1534"></a><tt class="py-lineno">1534</tt>  <tt class="py-line">                    <tt class="py-keyword">raise</tt> <tt class="py-name">RuntimeError</tt><tt class="py-op">(</tt><tt class="py-string">"Specified a mipmap mode in texture_min_filter, but mipmaps not enabled."</tt><tt class="py-op">)</tt> </tt>
+<a name="L1535"></a><tt class="py-lineno">1535</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">texture_object</tt><tt class="py-op">.</tt><tt id="link-230" class="py-name"><a title="VisionEgg.Textures.TextureObject.set_min_filter" class="py-name" href="#" onclick="return doclink('link-230', 'set_min_filter', 'link-151');">set_min_filter</a></tt><tt class="py-op">(</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt cla [...]
+<a name="L1536"></a><tt class="py-lineno">1536</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">texture_object</tt><tt class="py-op">.</tt><tt id="link-231" class="py-name"><a title="VisionEgg.Textures.TextureObject.set_mag_filter" class="py-name" href="#" onclick="return doclink('link-231', 'set_mag_filter', 'link-198');">set_mag_filter</a></tt><tt class="py-op">(</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt cla [...]
+<a name="L1537"></a><tt class="py-lineno">1537</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">texture_object</tt><tt class="py-op">.</tt><tt id="link-232" class="py-name"><a title="VisionEgg.Textures.TextureObject.set_wrap_mode_s" class="py-name" href="#" onclick="return doclink('link-232', 'set_wrap_mode_s', 'link-152');">set_wrap_mode_s</a></tt><tt class="py-op">(</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt  [...]
+<a name="L1538"></a><tt class="py-lineno">1538</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">texture_object</tt><tt class="py-op">.</tt><tt id="link-233" class="py-name"><a title="VisionEgg.Textures.TextureObject.set_wrap_mode_t" class="py-name" href="#" onclick="return doclink('link-233', 'set_wrap_mode_t', 'link-153');">set_wrap_mode_t</a></tt><tt class="py-op">(</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt  [...]
+<a name="L1539"></a><tt class="py-lineno">1539</tt>  <tt class="py-line"> </tt>
+<a name="L1540"></a><tt class="py-lineno">1540</tt>  <tt class="py-line">            <tt class="py-comment"># allow max_alpha value to control blending</tt> </tt>
+<a name="L1541"></a><tt class="py-lineno">1541</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glEnable</tt><tt class="py-op">(</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_BLEND</tt> <tt class="py-op">)</tt> </tt>
+<a name="L1542"></a><tt class="py-lineno">1542</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glBlendFunc</tt><tt class="py-op">(</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_SRC_ALPHA</tt><tt class="py-op">,</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_ONE_MINUS_SRC_ALPHA</tt> <tt class="py-op">)</tt> </tt>
+<a name="L1543"></a><tt class="py-lineno">1543</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glTexEnvi</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE_ENV</tt><tt class="py-op">,</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE_ENV_MODE</tt><tt class="py-op">,</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="p [...]
+<a name="L1544"></a><tt class="py-lineno">1544</tt>  <tt class="py-line"> </tt>
+<a name="L1545"></a><tt class="py-lineno">1545</tt>  <tt class="py-line">            <tt class="py-name">tex</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">texture</tt> </tt>
+<a name="L1546"></a><tt class="py-lineno">1546</tt>  <tt class="py-line">            <tt class="py-name">tex</tt><tt class="py-op">.</tt><tt id="link-234" class="py-name"><a title="VisionEgg.GUI.InfoFrame.update
+VisionEgg.GUI.ProgressBar.update
+VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.update
+VisionEgg.PyroApps.DropinServer.DropinMetaController.update
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.update
+VisionEgg.PyroApps.GridServer.GridMetaController.update
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.update
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.update
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.update
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.update
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.update
+VisionEgg.QuickTime.MovieTexture.update
+VisionEgg.Textures.Texture.update" class="py-name" href="#" onclick="return doclink('link-234', 'update', 'link-203');">update</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1547"></a><tt class="py-lineno">1547</tt>  <tt class="py-line"> </tt>
+<a name="L1548"></a><tt class="py-lineno">1548</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glBegin</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_QUADS</tt><tt class="py-op">)</tt> </tt>
+<a name="L1549"></a><tt class="py-lineno">1549</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glTexCoord2f</tt><tt class="py-op">(</tt><tt class="py-name">tex</tt><tt class="py-op">.</tt><tt class="py-name">buf_lf</tt><tt class="py-op">,</tt><tt class="py-name">tex</tt><tt class="py-op">.</tt><tt class="py-name">buf_bf</tt><tt class="py-op">)</tt> </tt>
+<a name="L1550"></a><tt class="py-lineno">1550</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glVertex</tt><tt class="py-op">(</tt><tt class="py-op">*</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">lowerleft</tt><tt class="py-op">)</tt> </tt>
+<a name="L1551"></a><tt class="py-lineno">1551</tt>  <tt class="py-line"> </tt>
+<a name="L1552"></a><tt class="py-lineno">1552</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glTexCoord2f</tt><tt class="py-op">(</tt><tt class="py-name">tex</tt><tt class="py-op">.</tt><tt class="py-name">buf_rf</tt><tt class="py-op">,</tt><tt class="py-name">tex</tt><tt class="py-op">.</tt><tt class="py-name">buf_bf</tt><tt class="py-op">)</tt> </tt>
+<a name="L1553"></a><tt class="py-lineno">1553</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glVertex</tt><tt class="py-op">(</tt><tt class="py-op">*</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">lowerright</tt><tt class="py-op">)</tt> </tt>
+<a name="L1554"></a><tt class="py-lineno">1554</tt>  <tt class="py-line"> </tt>
+<a name="L1555"></a><tt class="py-lineno">1555</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glTexCoord2f</tt><tt class="py-op">(</tt><tt class="py-name">tex</tt><tt class="py-op">.</tt><tt class="py-name">buf_rf</tt><tt class="py-op">,</tt><tt class="py-name">tex</tt><tt class="py-op">.</tt><tt class="py-name">buf_tf</tt><tt class="py-op">)</tt> </tt>
+<a name="L1556"></a><tt class="py-lineno">1556</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glVertex</tt><tt class="py-op">(</tt><tt class="py-op">*</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">upperright</tt><tt class="py-op">)</tt> </tt>
+<a name="L1557"></a><tt class="py-lineno">1557</tt>  <tt class="py-line"> </tt>
+<a name="L1558"></a><tt class="py-lineno">1558</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glTexCoord2f</tt><tt class="py-op">(</tt><tt class="py-name">tex</tt><tt class="py-op">.</tt><tt class="py-name">buf_lf</tt><tt class="py-op">,</tt><tt class="py-name">tex</tt><tt class="py-op">.</tt><tt class="py-name">buf_tf</tt><tt class="py-op">)</tt> </tt>
+<a name="L1559"></a><tt class="py-lineno">1559</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glVertex</tt><tt class="py-op">(</tt><tt class="py-op">*</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">upperleft</tt><tt class="py-op">)</tt> </tt>
+<a name="L1560"></a><tt class="py-lineno">1560</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glEnd</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-comment"># GL_QUADS</tt> </tt>
+</div></div><a name="L1561"></a><tt class="py-lineno">1561</tt>  <tt class="py-line"> </tt>
+<a name="L1562"></a><tt class="py-lineno">1562</tt>  <tt class="py-line"><tt class="py-comment">####################################################################</tt> </tt>
+<a name="L1563"></a><tt class="py-lineno">1563</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L1564"></a><tt class="py-lineno">1564</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#        Stimulus - Spinning Drum</tt> </tt>
+<a name="L1565"></a><tt class="py-lineno">1565</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L1566"></a><tt class="py-lineno">1566</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">####################################################################</tt> </tt>
+<a name="L1567"></a><tt class="py-lineno">1567</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="SpinningDrum"></a><div id="SpinningDrum-def"><a name="L1568"></a><tt class="py-lineno">1568</tt> <a class="py-toggle" href="#" id="SpinningDrum-toggle" onclick="return toggle('SpinningDrum');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.Textures.SpinningDrum-class.html">SpinningDrum</a><tt class="py-op">(</tt><tt class="py-base-class">TextureStimulusBaseClass</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="SpinningDrum-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="SpinningDrum-expanded"><a name="L1569"></a><tt class="py-lineno">1569</tt>  <tt class="py-line">    <tt class="py-docstring">"""Panoramic image texture mapped onto flat rectangle or 3D cylinder.</tt> </tt>
+<a name="L1570"></a><tt class="py-lineno">1570</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1571"></a><tt class="py-lineno">1571</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1572"></a><tt class="py-lineno">1572</tt>  <tt class="py-line"><tt class="py-docstring">    Parameters</tt> </tt>
+<a name="L1573"></a><tt class="py-lineno">1573</tt>  <tt class="py-line"><tt class="py-docstring">    ==========</tt> </tt>
+<a name="L1574"></a><tt class="py-lineno">1574</tt>  <tt class="py-line"><tt class="py-docstring">    anchor                -- only used when flat: same as anchor parameter of TextureStimulus (String)</tt> </tt>
+<a name="L1575"></a><tt class="py-lineno">1575</tt>  <tt class="py-line"><tt class="py-docstring">                             Default: center</tt> </tt>
+<a name="L1576"></a><tt class="py-lineno">1576</tt>  <tt class="py-line"><tt class="py-docstring">    angular_position      -- may be best to clamp in range [0.0,360.0] (Real)</tt> </tt>
+<a name="L1577"></a><tt class="py-lineno">1577</tt>  <tt class="py-line"><tt class="py-docstring">                             Default: 0.0</tt> </tt>
+<a name="L1578"></a><tt class="py-lineno">1578</tt>  <tt class="py-line"><tt class="py-docstring">    contrast              -- (Real)</tt> </tt>
+<a name="L1579"></a><tt class="py-lineno">1579</tt>  <tt class="py-line"><tt class="py-docstring">                             Default: 1.0</tt> </tt>
+<a name="L1580"></a><tt class="py-lineno">1580</tt>  <tt class="py-line"><tt class="py-docstring">    drum_center_azimuth   -- changes orientation of drum in space (Real)</tt> </tt>
+<a name="L1581"></a><tt class="py-lineno">1581</tt>  <tt class="py-line"><tt class="py-docstring">                             Default: 0.0</tt> </tt>
+<a name="L1582"></a><tt class="py-lineno">1582</tt>  <tt class="py-line"><tt class="py-docstring">    drum_center_elevation -- changes orientation of drum in space (Real)</tt> </tt>
+<a name="L1583"></a><tt class="py-lineno">1583</tt>  <tt class="py-line"><tt class="py-docstring">                             Default: 0.0</tt> </tt>
+<a name="L1584"></a><tt class="py-lineno">1584</tt>  <tt class="py-line"><tt class="py-docstring">    flat                  -- toggles flat vs. cylinder (Boolean)</tt> </tt>
+<a name="L1585"></a><tt class="py-lineno">1585</tt>  <tt class="py-line"><tt class="py-docstring">                             Default: False</tt> </tt>
+<a name="L1586"></a><tt class="py-lineno">1586</tt>  <tt class="py-line"><tt class="py-docstring">    flat_size             -- defaults to texture data size (units: eye coordinates) (Sequence2 of Real)</tt> </tt>
+<a name="L1587"></a><tt class="py-lineno">1587</tt>  <tt class="py-line"><tt class="py-docstring">                             Default: (determined at runtime)</tt> </tt>
+<a name="L1588"></a><tt class="py-lineno">1588</tt>  <tt class="py-line"><tt class="py-docstring">    flip_image            -- toggles normal vs. horizonally flipped image (Boolean)</tt> </tt>
+<a name="L1589"></a><tt class="py-lineno">1589</tt>  <tt class="py-line"><tt class="py-docstring">                             Default: False</tt> </tt>
+<a name="L1590"></a><tt class="py-lineno">1590</tt>  <tt class="py-line"><tt class="py-docstring">    height                -- height of cyliner, automatically set by texel aspect ratio if < 0. (Real)</tt> </tt>
+<a name="L1591"></a><tt class="py-lineno">1591</tt>  <tt class="py-line"><tt class="py-docstring">                             Default: -1</tt> </tt>
+<a name="L1592"></a><tt class="py-lineno">1592</tt>  <tt class="py-line"><tt class="py-docstring">    num_sides             -- (UnsignedInteger)</tt> </tt>
+<a name="L1593"></a><tt class="py-lineno">1593</tt>  <tt class="py-line"><tt class="py-docstring">                             Default: 50</tt> </tt>
+<a name="L1594"></a><tt class="py-lineno">1594</tt>  <tt class="py-line"><tt class="py-docstring">    on                    -- (Boolean)</tt> </tt>
+<a name="L1595"></a><tt class="py-lineno">1595</tt>  <tt class="py-line"><tt class="py-docstring">                             Default: True</tt> </tt>
+<a name="L1596"></a><tt class="py-lineno">1596</tt>  <tt class="py-line"><tt class="py-docstring">    orientation           -- 0=right, 90=up (Real)</tt> </tt>
+<a name="L1597"></a><tt class="py-lineno">1597</tt>  <tt class="py-line"><tt class="py-docstring">                             Default: 0.0</tt> </tt>
+<a name="L1598"></a><tt class="py-lineno">1598</tt>  <tt class="py-line"><tt class="py-docstring">    position              -- 3D: position of drum center, 2D (flat): same as position parameter for TextureStimulus (AnyOf(Sequence2 of Real or Sequence3 of Real))</tt> </tt>
+<a name="L1599"></a><tt class="py-lineno">1599</tt>  <tt class="py-line"><tt class="py-docstring">                             Default: (0.0, 0.0, 0.0)</tt> </tt>
+<a name="L1600"></a><tt class="py-lineno">1600</tt>  <tt class="py-line"><tt class="py-docstring">    radius                -- radius if cylinder (not used if flat) (Real)</tt> </tt>
+<a name="L1601"></a><tt class="py-lineno">1601</tt>  <tt class="py-line"><tt class="py-docstring">                             Default: 1.0</tt> </tt>
+<a name="L1602"></a><tt class="py-lineno">1602</tt>  <tt class="py-line"><tt class="py-docstring">    texture               -- source of texture data (Instance of <class 'VisionEgg.Textures.Texture'>)</tt> </tt>
+<a name="L1603"></a><tt class="py-lineno">1603</tt>  <tt class="py-line"><tt class="py-docstring">                             Inherited from TextureStimulusBaseClass</tt> </tt>
+<a name="L1604"></a><tt class="py-lineno">1604</tt>  <tt class="py-line"><tt class="py-docstring">                             Default: (determined at runtime)</tt> </tt>
+<a name="L1605"></a><tt class="py-lineno">1605</tt>  <tt class="py-line"><tt class="py-docstring">    texture_mag_filter    -- OpenGL filter enum (Integer)</tt> </tt>
+<a name="L1606"></a><tt class="py-lineno">1606</tt>  <tt class="py-line"><tt class="py-docstring">                             Inherited from TextureStimulusBaseClass</tt> </tt>
+<a name="L1607"></a><tt class="py-lineno">1607</tt>  <tt class="py-line"><tt class="py-docstring">                             Default: GL_LINEAR (9729)</tt> </tt>
+<a name="L1608"></a><tt class="py-lineno">1608</tt>  <tt class="py-line"><tt class="py-docstring">    texture_min_filter    -- OpenGL filter enum (Integer)</tt> </tt>
+<a name="L1609"></a><tt class="py-lineno">1609</tt>  <tt class="py-line"><tt class="py-docstring">                             Inherited from TextureStimulusBaseClass</tt> </tt>
+<a name="L1610"></a><tt class="py-lineno">1610</tt>  <tt class="py-line"><tt class="py-docstring">                             Default: (GL enum determined at runtime)</tt> </tt>
+<a name="L1611"></a><tt class="py-lineno">1611</tt>  <tt class="py-line"><tt class="py-docstring">    texture_wrap_s        -- OpenGL texture wrap enum (Integer)</tt> </tt>
+<a name="L1612"></a><tt class="py-lineno">1612</tt>  <tt class="py-line"><tt class="py-docstring">                             Inherited from TextureStimulusBaseClass</tt> </tt>
+<a name="L1613"></a><tt class="py-lineno">1613</tt>  <tt class="py-line"><tt class="py-docstring">                             Default: (GL enum determined at runtime)</tt> </tt>
+<a name="L1614"></a><tt class="py-lineno">1614</tt>  <tt class="py-line"><tt class="py-docstring">    texture_wrap_t        -- OpenGL texture wrap enum (Integer)</tt> </tt>
+<a name="L1615"></a><tt class="py-lineno">1615</tt>  <tt class="py-line"><tt class="py-docstring">                             Inherited from TextureStimulusBaseClass</tt> </tt>
+<a name="L1616"></a><tt class="py-lineno">1616</tt>  <tt class="py-line"><tt class="py-docstring">                             Default: (GL enum determined at runtime)</tt> </tt>
+<a name="L1617"></a><tt class="py-lineno">1617</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1618"></a><tt class="py-lineno">1618</tt>  <tt class="py-line"><tt class="py-docstring">    Constant Parameters</tt> </tt>
+<a name="L1619"></a><tt class="py-lineno">1619</tt>  <tt class="py-line"><tt class="py-docstring">    ===================</tt> </tt>
+<a name="L1620"></a><tt class="py-lineno">1620</tt>  <tt class="py-line"><tt class="py-docstring">    internal_format   -- format with which OpenGL uses texture data (OpenGL data type enum) (Integer)</tt> </tt>
+<a name="L1621"></a><tt class="py-lineno">1621</tt>  <tt class="py-line"><tt class="py-docstring">                         Default: GL_RGB (6407)</tt> </tt>
+<a name="L1622"></a><tt class="py-lineno">1622</tt>  <tt class="py-line"><tt class="py-docstring">    mipmaps_enabled   -- Are mipmaps enabled? (Boolean)</tt> </tt>
+<a name="L1623"></a><tt class="py-lineno">1623</tt>  <tt class="py-line"><tt class="py-docstring">                         Default: True</tt> </tt>
+<a name="L1624"></a><tt class="py-lineno">1624</tt>  <tt class="py-line"><tt class="py-docstring">    shrink_texture_ok -- Allow automatic shrinking of texture if too big? (Boolean)</tt> </tt>
+<a name="L1625"></a><tt class="py-lineno">1625</tt>  <tt class="py-line"><tt class="py-docstring">                         Default: False</tt> </tt>
+<a name="L1626"></a><tt class="py-lineno">1626</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L1627"></a><tt class="py-lineno">1627</tt>  <tt class="py-line"> </tt>
+<a name="L1628"></a><tt class="py-lineno">1628</tt>  <tt class="py-line">    <tt id="link-235" class="py-name"><a title="VisionEgg.ClassWithParameters.parameters_and_defaults
+VisionEgg.Core.FixationSpot.parameters_and_defaults
+VisionEgg.Core.ProjectionBaseClass.parameters_and_defaults
+VisionEgg.Core.Screen.parameters_and_defaults
+VisionEgg.Core.Viewport.parameters_and_defaults
+VisionEgg.Daq.Buffered.parameters_and_defaults
+VisionEgg.Dots.DotArea2D.parameters_and_defaults
+VisionEgg.FlowControl.Presentation.parameters_and_defaults
+VisionEgg.Gratings.AlphaGratingCommon.parameters_and_defaults
+VisionEgg.Gratings.LuminanceGratingCommon.parameters_and_defaults
+VisionEgg.Gratings.SinGrating2D.parameters_and_defaults
+VisionEgg.Gratings.SinGrating3D.parameters_and_defaults
+VisionEgg.MoreStimuli.Arrow.parameters_and_defaults
+VisionEgg.MoreStimuli.FilledCircle.parameters_and_defaults
+VisionEgg.MoreStimuli.Rectangle3D.parameters_and_defaults
+VisionEgg.MoreStimuli.Target2D.parameters_and_defaults
+VisionEgg.PyroApps.EPhysGUI.Loop.parameters_and_defaults
+VisionEgg.SphereMap.AzElGrid.parameters_and_defaults
+VisionEgg.SphereMap.SphereGrating.parameters_and_defaults
+VisionEgg.SphereMap.SphereMap.parameters_and_defaults
+VisionEgg.SphereMap.SphereWindow.parameters_and_defaults
+VisionEgg.Text.BitmapText.parameters_and_defaults
+VisionEgg.Text.GlutTextBase.parameters_and_defaults
+VisionEgg.Text.StrokeText.parameters_and_defaults
+VisionEgg.Text.Text.parameters_and_defaults
+VisionEgg.Textures.FixationCross.parameters_and_defaults
+VisionEgg.Textures.SpinningDrum.parameters_and_defaults
+VisionEgg.Textures.TextureStimulus.parameters_and_defaults
+VisionEgg.Textures.TextureStimulus3D.parameters_and_defaults
+VisionEgg.Textures.TextureStimulusBaseClass.parameters_and_defaults
+VisionEgg.WrappedText.WrappedText.parameters_and_defaults" class="py-name" href="#" onclick="return doclink('link-235', 'parameters_and_defaults', 'link-93');">parameters_and_defaults</a></tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> </tt>
+<a name="L1629"></a><tt class="py-lineno">1629</tt>  <tt class="py-line">        <tt class="py-string">'on'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-name">True</tt><tt class="py-op">,</tt> </tt>
+<a name="L1630"></a><tt class="py-lineno">1630</tt>  <tt class="py-line">              <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-236" class="py-name"><a title="VisionEgg.ParameterTypes.Boolean" class="py-name" href="#" onclick="return doclink('link-236', 'Boolean', 'link-117');">Boolean</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L1631"></a><tt class="py-lineno">1631</tt>  <tt class="py-line">        <tt class="py-string">'height'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">,</tt> </tt>
+<a name="L1632"></a><tt class="py-lineno">1632</tt>  <tt class="py-line">                  <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-237" class="py-name"><a title="VisionEgg.ParameterTypes.Real" class="py-name" href="#" onclick="return doclink('link-237', 'Real', 'link-140');">Real</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L1633"></a><tt class="py-lineno">1633</tt>  <tt class="py-line">                  <tt class="py-string">'height of cyliner, automatically set by texel aspect ratio if < 0.'</tt><tt class="py-op">,</tt> </tt>
+<a name="L1634"></a><tt class="py-lineno">1634</tt>  <tt class="py-line">                  <tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L1635"></a><tt class="py-lineno">1635</tt>  <tt class="py-line">        <tt class="py-string">'num_sides'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-number">50</tt><tt class="py-op">,</tt> </tt>
+<a name="L1636"></a><tt class="py-lineno">1636</tt>  <tt class="py-line">                     <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-238" class="py-name" targets="Class VisionEgg.ParameterTypes.UnsignedInteger=VisionEgg.ParameterTypes.UnsignedInteger-class.html"><a title="VisionEgg.ParameterTypes.UnsignedInteger" class="py-name" href="#" onclick="return doclink('link-238', 'UnsignedInteger', 'link-238');">UnsignedInteger</a></tt><tt class="py-op">)</tt><tt  [...]
+<a name="L1637"></a><tt class="py-lineno">1637</tt>  <tt class="py-line">        <tt class="py-string">'angular_position'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-number">0.0</tt><tt class="py-op">,</tt> <tt class="py-comment"># may be best to clamp [0.0,360.0]</tt> </tt>
+<a name="L1638"></a><tt class="py-lineno">1638</tt>  <tt class="py-line">                            <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-239" class="py-name"><a title="VisionEgg.ParameterTypes.Real" class="py-name" href="#" onclick="return doclink('link-239', 'Real', 'link-140');">Real</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L1639"></a><tt class="py-lineno">1639</tt>  <tt class="py-line">                            <tt class="py-string">'may be best to clamp in range [0.0,360.0]'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L1640"></a><tt class="py-lineno">1640</tt>  <tt class="py-line">        <tt class="py-string">'contrast'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-number">1.0</tt><tt class="py-op">,</tt> </tt>
+<a name="L1641"></a><tt class="py-lineno">1641</tt>  <tt class="py-line">                    <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-240" class="py-name"><a title="VisionEgg.ParameterTypes.Real" class="py-name" href="#" onclick="return doclink('link-240', 'Real', 'link-140');">Real</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L1642"></a><tt class="py-lineno">1642</tt>  <tt class="py-line">        <tt class="py-string">'flat'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-name">False</tt><tt class="py-op">,</tt> </tt>
+<a name="L1643"></a><tt class="py-lineno">1643</tt>  <tt class="py-line">                <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-241" class="py-name"><a title="VisionEgg.ParameterTypes.Boolean" class="py-name" href="#" onclick="return doclink('link-241', 'Boolean', 'link-117');">Boolean</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L1644"></a><tt class="py-lineno">1644</tt>  <tt class="py-line">                <tt class="py-string">'toggles flat vs. cylinder'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L1645"></a><tt class="py-lineno">1645</tt>  <tt class="py-line">        <tt class="py-string">'flat_size'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
+<a name="L1646"></a><tt class="py-lineno">1646</tt>  <tt class="py-line">                     <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-242" class="py-name"><a title="VisionEgg.ParameterTypes.Sequence2" class="py-name" href="#" onclick="return doclink('link-242', 'Sequence2', 'link-141');">Sequence2</a></tt><tt class="py-op">(</tt><tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-243" class="py-name"><a title="VisionEgg.ParameterTypes.Real" [...]
+<a name="L1647"></a><tt class="py-lineno">1647</tt>  <tt class="py-line">                     <tt class="py-string">"defaults to texture data size (units: eye coordinates)"</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L1648"></a><tt class="py-lineno">1648</tt>  <tt class="py-line">        <tt class="py-string">'flip_image'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-name">False</tt><tt class="py-op">,</tt> </tt>
+<a name="L1649"></a><tt class="py-lineno">1649</tt>  <tt class="py-line">                      <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-244" class="py-name"><a title="VisionEgg.ParameterTypes.Boolean" class="py-name" href="#" onclick="return doclink('link-244', 'Boolean', 'link-117');">Boolean</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L1650"></a><tt class="py-lineno">1650</tt>  <tt class="py-line">                      <tt class="py-string">'toggles normal vs. horizonally flipped image'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L1651"></a><tt class="py-lineno">1651</tt>  <tt class="py-line">        <tt class="py-string">'radius'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-number">1.0</tt><tt class="py-op">,</tt> </tt>
+<a name="L1652"></a><tt class="py-lineno">1652</tt>  <tt class="py-line">                  <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-245" class="py-name"><a title="VisionEgg.ParameterTypes.Real" class="py-name" href="#" onclick="return doclink('link-245', 'Real', 'link-140');">Real</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L1653"></a><tt class="py-lineno">1653</tt>  <tt class="py-line">                  <tt class="py-string">'radius if cylinder (not used if flat)'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L1654"></a><tt class="py-lineno">1654</tt>  <tt class="py-line">        <tt class="py-string">'position'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt> <tt class="py-op">(</tt><tt class="py-number">0.0</tt><tt class="py-op">,</tt><tt class="py-number">0.0</tt><tt class="py-op">,</tt><tt class="py-number">0.0</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L1655"></a><tt class="py-lineno">1655</tt>  <tt class="py-line">                     <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-246" class="py-name"><a title="VisionEgg.ParameterTypes.AnyOf" class="py-name" href="#" onclick="return doclink('link-246', 'AnyOf', 'link-159');">AnyOf</a></tt><tt class="py-op">(</tt><tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-247" class="py-name"><a title="VisionEgg.ParameterTypes.Sequence2" class= [...]
+<a name="L1656"></a><tt class="py-lineno">1656</tt>  <tt class="py-line">                                    <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-249" class="py-name"><a title="VisionEgg.ParameterTypes.Sequence3" class="py-name" href="#" onclick="return doclink('link-249', 'Sequence3', 'link-162');">Sequence3</a></tt><tt class="py-op">(</tt><tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-250" class="py-name"><a title="VisionEgg.Param [...]
+<a name="L1657"></a><tt class="py-lineno">1657</tt>  <tt class="py-line">                     <tt class="py-string">'3D: position of drum center, 2D (flat): same as position parameter for TextureStimulus'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L1658"></a><tt class="py-lineno">1658</tt>  <tt class="py-line">        <tt class="py-string">'anchor'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt> <tt class="py-string">'center'</tt><tt class="py-op">,</tt> </tt>
+<a name="L1659"></a><tt class="py-lineno">1659</tt>  <tt class="py-line">                   <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-251" class="py-name"><a title="VisionEgg.ParameterTypes.String" class="py-name" href="#" onclick="return doclink('link-251', 'String', 'link-139');">String</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L1660"></a><tt class="py-lineno">1660</tt>  <tt class="py-line">                   <tt class="py-string">'only used when flat: same as anchor parameter of TextureStimulus'</tt><tt class="py-op">,</tt> </tt>
+<a name="L1661"></a><tt class="py-lineno">1661</tt>  <tt class="py-line">                   <tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L1662"></a><tt class="py-lineno">1662</tt>  <tt class="py-line">        <tt class="py-string">'drum_center_azimuth'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-number">0.0</tt><tt class="py-op">,</tt> </tt>
+<a name="L1663"></a><tt class="py-lineno">1663</tt>  <tt class="py-line">                               <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-252" class="py-name"><a title="VisionEgg.ParameterTypes.Real" class="py-name" href="#" onclick="return doclink('link-252', 'Real', 'link-140');">Real</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L1664"></a><tt class="py-lineno">1664</tt>  <tt class="py-line">                               <tt class="py-string">'changes orientation of drum in space'</tt><tt class="py-op">,</tt> </tt>
+<a name="L1665"></a><tt class="py-lineno">1665</tt>  <tt class="py-line">                               <tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L1666"></a><tt class="py-lineno">1666</tt>  <tt class="py-line">        <tt class="py-string">'drum_center_elevation'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-number">0.0</tt><tt class="py-op">,</tt> </tt>
+<a name="L1667"></a><tt class="py-lineno">1667</tt>  <tt class="py-line">                                 <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-253" class="py-name"><a title="VisionEgg.ParameterTypes.Real" class="py-name" href="#" onclick="return doclink('link-253', 'Real', 'link-140');">Real</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L1668"></a><tt class="py-lineno">1668</tt>  <tt class="py-line">                                 <tt class="py-string">'changes orientation of drum in space'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L1669"></a><tt class="py-lineno">1669</tt>  <tt class="py-line">        <tt class="py-string">'orientation'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-number">0.0</tt><tt class="py-op">,</tt> </tt>
+<a name="L1670"></a><tt class="py-lineno">1670</tt>  <tt class="py-line">                       <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-254" class="py-name"><a title="VisionEgg.ParameterTypes.Real" class="py-name" href="#" onclick="return doclink('link-254', 'Real', 'link-140');">Real</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L1671"></a><tt class="py-lineno">1671</tt>  <tt class="py-line">                       <tt class="py-string">'0=right, 90=up'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L1672"></a><tt class="py-lineno">1672</tt>  <tt class="py-line">        <tt class="py-op">}</tt> </tt>
+<a name="L1673"></a><tt class="py-lineno">1673</tt>  <tt class="py-line"> </tt>
+<a name="L1674"></a><tt class="py-lineno">1674</tt>  <tt class="py-line">    <tt class="py-name">__slots__</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt> </tt>
+<a name="L1675"></a><tt class="py-lineno">1675</tt>  <tt class="py-line">        <tt class="py-string">'cached_display_list_normal'</tt><tt class="py-op">,</tt> </tt>
+<a name="L1676"></a><tt class="py-lineno">1676</tt>  <tt class="py-line">        <tt class="py-string">'cached_display_list_mirror'</tt><tt class="py-op">,</tt> </tt>
+<a name="L1677"></a><tt class="py-lineno">1677</tt>  <tt class="py-line">        <tt class="py-string">'cached_display_list_num_sides'</tt><tt class="py-op">,</tt> </tt>
+<a name="L1678"></a><tt class="py-lineno">1678</tt>  <tt class="py-line">        <tt class="py-string">'cached_display_list_radius'</tt><tt class="py-op">,</tt> </tt>
+<a name="L1679"></a><tt class="py-lineno">1679</tt>  <tt class="py-line">        <tt class="py-string">'cached_display_list_height'</tt><tt class="py-op">,</tt> </tt>
+<a name="L1680"></a><tt class="py-lineno">1680</tt>  <tt class="py-line">        <tt class="py-string">'texture_stimulus'</tt><tt class="py-op">,</tt> </tt>
+<a name="L1681"></a><tt class="py-lineno">1681</tt>  <tt class="py-line">        <tt class="py-op">)</tt> </tt>
+<a name="L1682"></a><tt class="py-lineno">1682</tt>  <tt class="py-line"> </tt>
+<a name="SpinningDrum.__init__"></a><div id="SpinningDrum.__init__-def"><a name="L1683"></a><tt class="py-lineno">1683</tt> <a class="py-toggle" href="#" id="SpinningDrum.__init__-toggle" onclick="return toggle('SpinningDrum.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.Textures.SpinningDrum-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt><tt class="py-op">**< [...]
+</div><div id="SpinningDrum.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="SpinningDrum.__init__-expanded"><a name="L1684"></a><tt class="py-lineno">1684</tt>  <tt class="py-line">        <tt id="link-255" class="py-name"><a title="VisionEgg.Textures.TextureStimulusBaseClass" class="py-name" href="#" onclick="return doclink('link-255', 'TextureStimulusBaseClass', 'link-125');">TextureStimulusBaseClass</a></tt><tt class="py-op">.</tt><tt id="link-256 [...]
+VisionEgg.Configuration.Config.__init__
+VisionEgg.Core.FixationSpot.__init__
+VisionEgg.Core.FrameTimer.__init__
+VisionEgg.Core.ModelView.__init__
+VisionEgg.Core.OrthographicProjection.__init__
+VisionEgg.Core.OrthographicProjectionNoZClip.__init__
+VisionEgg.Core.PerspectiveProjection.__init__
+VisionEgg.Core.Projection.__init__
+VisionEgg.Core.ProjectionBaseClass.__init__
+VisionEgg.Core.Screen.__init__
+VisionEgg.Core.SimplePerspectiveProjection.__init__
+VisionEgg.Core.Stimulus.__init__
+VisionEgg.Core.Viewport.__init__
+VisionEgg.Daq.Channel.__init__
+VisionEgg.Daq.DaqMode.__init__
+VisionEgg.Daq.Device.__init__
+VisionEgg.Daq.Functionality.__init__
+VisionEgg.Daq.SignalType.__init__
+VisionEgg.DaqKeyboard.KeyboardTriggerInController.__init__
+VisionEgg.DaqLPT.LPTChannel.__init__
+VisionEgg.DaqLPT.LPTDevice.__init__
+VisionEgg.DaqLPT.LPTTriggerInController.__init__
+VisionEgg.DaqLPT.LPTTriggerOutController.__init__
+VisionEgg.Deprecated.Message.__init__
+VisionEgg.Dots.DotArea2D.__init__
+VisionEgg.FlowControl.ConstantController.__init__
+VisionEgg.FlowControl.Controller.__init__
+VisionEgg.FlowControl.EncapsulatedController.__init__
+VisionEgg.FlowControl.EvalStringController.__init__
+VisionEgg.FlowControl.ExecStringController.__init__
+VisionEgg.FlowControl.FunctionController.__init__
+VisionEgg.FlowControl.Presentation.__init__
+VisionEgg.GLTrace.Wrapper.__init__
+VisionEgg.GUI.AppWindow.__init__
+VisionEgg.GUI.GetKeypressDialog.__init__
+VisionEgg.GUI.GraphicsConfigurationWindow.__init__
+VisionEgg.GUI.InfoFrame.__init__
+VisionEgg.GUI.ProgressBar.__init__
+VisionEgg.GUI.ToplevelDialog.__init__
+VisionEgg.Gratings.SinGrating2D.__init__
+VisionEgg.Gratings.SinGrating3D.__init__
+VisionEgg.MoreStimuli.Arrow.__init__
+VisionEgg.MoreStimuli.FilledCircle.__init__
+VisionEgg.MoreStimuli.Rectangle3D.__init__
+VisionEgg.MoreStimuli.Target2D.__init__
+VisionEgg.ParameterTypes.AnyOf.__init__
+VisionEgg.ParameterTypes.Instance.__init__
+VisionEgg.ParameterTypes.Sequence.__init__
+VisionEgg.ParameterTypes.SubClass.__init__
+VisionEgg.PyroApps.AST_ext.AST_Visitor.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalMetaParameters.__init__
+VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.__init__
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.__init__
+VisionEgg.PyroApps.DropinGUI.DropinMetaParameters.__init__
+VisionEgg.PyroApps.DropinServer.DropinMetaController.__init__
+VisionEgg.PyroApps.EPhysGUI.AppWindow.__init__
+VisionEgg.PyroApps.EPhysGUI.BarButton.__init__
+VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase.__init__
+VisionEgg.PyroApps.EPhysGUI.GammaFrame.__init__
+VisionEgg.PyroApps.EPhysGUI.ImageSequenceLauncher.__init__
+VisionEgg.PyroApps.EPhysGUI.Loop.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopContainedObject.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopParamDialog.__init__
+VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.__init__
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.__init__
+VisionEgg.PyroApps.EPhysServer.EPhysServer.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingMetaParameters.__init__
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.GridGUI.GridControlFrame.__init__
+VisionEgg.PyroApps.GridGUI.GridMetaParameters.__init__
+VisionEgg.PyroApps.GridServer.GridMetaController.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetMetaParameters.__init__
+VisionEgg.PyroApps.MouseTargetServer.MousePositionController.__init__
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetOrientationController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetPositionController.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.CallbackEntry.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionParameters.__init__
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingMetaParameters.__init__
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumMetaParameters.__init__
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.__init__
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.__init__
+VisionEgg.PyroApps.TargetGUI.TargetMetaParameters.__init__
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.__init__
+VisionEgg.PyroClient.PyroClient.__init__
+VisionEgg.PyroHelpers.PyroConstantController.__init__
+VisionEgg.PyroHelpers.PyroEncapsulatedController.__init__
+VisionEgg.PyroHelpers.PyroEvalStringController.__init__
+VisionEgg.PyroHelpers.PyroExecStringController.__init__
+VisionEgg.PyroHelpers.PyroListenController.__init__
+VisionEgg.PyroHelpers.PyroLocalDictController.__init__
+VisionEgg.PyroHelpers.PyroServer.__init__
+VisionEgg.QuickTime.MovieTexture.__init__
+VisionEgg.ResponseControl.KeyboardResponseController.__init__
+VisionEgg.ResponseControl.ResponseController.__init__
+VisionEgg.SphereMap.AzElGrid.__init__
+VisionEgg.SphereMap.SphereGrating.__init__
+VisionEgg.SphereMap.SphereMap.__init__
+VisionEgg.SphereMap.SphereWindow.__init__
+VisionEgg.TCPController.SocketListenController.__init__
+VisionEgg.TCPController.TCPController.__init__
+VisionEgg.TCPController.TCPServer.__init__
+VisionEgg.Text.BitmapText.__init__
+VisionEgg.Text.GlutTextBase.__init__
+VisionEgg.Text.StrokeText.__init__
+VisionEgg.Text.Text.__init__
+VisionEgg.Textures.FixationCross.__init__
+VisionEgg.Textures.Mask2D.__init__
+VisionEgg.Textures.SpinningDrum.__init__
+VisionEgg.Textures.Texture.__init__
+VisionEgg.Textures.TextureFromFile.__init__
+VisionEgg.Textures.TextureObject.__init__
+VisionEgg.Textures.TextureStimulusBaseClass.__init__
+VisionEgg.ThreeDeeMath.TransformMatrix.__init__
+VisionEgg.WrappedText.WrappedText.__init__
+VisionEgg.qtmovie.Movie.__init__
+VisionEgg.qtmovie.Rect.__init__" class="py-name" href="#" onclick="return doclink('link-256', '__init__', 'link-55');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt><tt class="py-op">**</tt><tt class="py-name">kw</tt><tt class="py-op">)</tt> </tt>
+<a name="L1685"></a><tt class="py-lineno">1685</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">cached_display_list_normal</tt> <tt class="py-op">=</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glGenLists</tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> <tt class="py-comment"># Allocate a new display list</tt> </tt>
+<a name="L1686"></a><tt class="py-lineno">1686</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">cached_display_list_mirror</tt> <tt class="py-op">=</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glGenLists</tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> <tt class="py-comment"># Allocate a new display list</tt> </tt>
+<a name="L1687"></a><tt class="py-lineno">1687</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-257" class="py-name" targets="Method VisionEgg.Textures.SpinningDrum.rebuild_display_list()=VisionEgg.Textures.SpinningDrum-class.html#rebuild_display_list"><a title="VisionEgg.Textures.SpinningDrum.rebuild_display_list" class="py-name" href="#" onclick="return doclink('link-257', 'rebuild_display_list', 'link-257');">rebuild_display_list</a>< [...]
+</div><a name="L1688"></a><tt class="py-lineno">1688</tt>  <tt class="py-line"> </tt>
+<a name="SpinningDrum.draw"></a><div id="SpinningDrum.draw-def"><a name="L1689"></a><tt class="py-lineno">1689</tt> <a class="py-toggle" href="#" id="SpinningDrum.draw-toggle" onclick="return toggle('SpinningDrum.draw');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.Textures.SpinningDrum-class.html#draw">draw</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="SpinningDrum.draw-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="SpinningDrum.draw-expanded"><a name="L1690"></a><tt class="py-lineno">1690</tt>  <tt class="py-line">        <tt class="py-docstring">"""Redraw the stimulus on every frame.</tt> </tt>
+<a name="L1691"></a><tt class="py-lineno">1691</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L1692"></a><tt class="py-lineno">1692</tt>  <tt class="py-line">        <tt class="py-name">p</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt> </tt>
+<a name="L1693"></a><tt class="py-lineno">1693</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">texture</tt> <tt class="py-op">!=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_using_texture</tt><tt class="py-op">:</tt> <tt class="py-comment"># self._using_texture is from TextureStimulusBaseClass</tt> </tt>
+<a name="L1694"></a><tt class="py-lineno">1694</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_reload_texture</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1695"></a><tt class="py-lineno">1695</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-258" class="py-name"><a title="VisionEgg.Textures.SpinningDrum.rebuild_display_list" class="py-name" href="#" onclick="return doclink('link-258', 'rebuild_display_list', 'link-257');">rebuild_display_list</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1696"></a><tt class="py-lineno">1696</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">on</tt><tt class="py-op">:</tt> </tt>
+<a name="L1697"></a><tt class="py-lineno">1697</tt>  <tt class="py-line">            <tt class="py-comment"># Set OpenGL state variables</tt> </tt>
+<a name="L1698"></a><tt class="py-lineno">1698</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glEnable</tt><tt class="py-op">(</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_DEPTH_TEST</tt> <tt class="py-op">)</tt> </tt>
+<a name="L1699"></a><tt class="py-lineno">1699</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glEnable</tt><tt class="py-op">(</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE_2D</tt> <tt class="py-op">)</tt>  <tt class="py-comment"># Make sure textures are drawn</tt> </tt>
+<a name="L1700"></a><tt class="py-lineno">1700</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glEnable</tt><tt class="py-op">(</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_BLEND</tt> <tt class="py-op">)</tt> <tt class="py-comment"># Contrast control implemented through blending</tt> </tt>
+<a name="L1701"></a><tt class="py-lineno">1701</tt>  <tt class="py-line"> </tt>
+<a name="L1702"></a><tt class="py-lineno">1702</tt>  <tt class="py-line">            <tt class="py-comment"># All of the contrast control stuff is somewhat arcane and</tt> </tt>
+<a name="L1703"></a><tt class="py-lineno">1703</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># not very clear from reading the code, so here is how it</tt> </tt>
+<a name="L1704"></a><tt class="py-lineno">1704</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># works in English. (Not that it makes it any more clear!)</tt> </tt>
+<a name="L1705"></a><tt class="py-lineno">1705</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment">#</tt> </tt>
+<a name="L1706"></a><tt class="py-lineno">1706</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># In the final "textured fragment" (before being blended</tt> </tt>
+<a name="L1707"></a><tt class="py-lineno">1707</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># to the framebuffer), the color values are equal to those</tt> </tt>
+<a name="L1708"></a><tt class="py-lineno">1708</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># of the texture (with the exception of texels around the</tt> </tt>
+<a name="L1709"></a><tt class="py-lineno">1709</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># edges which have their amplitudes reduced due to</tt> </tt>
+<a name="L1710"></a><tt class="py-lineno">1710</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># anti-aliasing and are intermediate between the color of</tt> </tt>
+<a name="L1711"></a><tt class="py-lineno">1711</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># the texture and mid-gray), and the alpha value is set to</tt> </tt>
+<a name="L1712"></a><tt class="py-lineno">1712</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># the contrast.  Blending occurs, and by choosing the</tt> </tt>
+<a name="L1713"></a><tt class="py-lineno">1713</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># appropriate values for glBlendFunc, adds the product of</tt> </tt>
+<a name="L1714"></a><tt class="py-lineno">1714</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># fragment alpha (contrast) and fragment color to the</tt> </tt>
+<a name="L1715"></a><tt class="py-lineno">1715</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># product of one minus fragment alpha (contrast) and what</tt> </tt>
+<a name="L1716"></a><tt class="py-lineno">1716</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-comment"># was already in the framebuffer.</tt> </tt>
+<a name="L1717"></a><tt class="py-lineno">1717</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L1718"></a><tt class="py-lineno">1718</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glBlendFunc</tt><tt class="py-op">(</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_SRC_ALPHA</tt><tt class="py-op">,</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_ONE_MINUS_SRC_ALPHA</tt> <tt class="py-op">)</tt> </tt>
+<a name="L1719"></a><tt class="py-lineno">1719</tt>  <tt class="py-line"> </tt>
+<a name="L1720"></a><tt class="py-lineno">1720</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glTexEnvi</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE_ENV</tt><tt class="py-op">,</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_TEXTURE_ENV_MODE</tt><tt class="py-op">,</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="p [...]
+<a name="L1721"></a><tt class="py-lineno">1721</tt>  <tt class="py-line"> </tt>
+<a name="L1722"></a><tt class="py-lineno">1722</tt>  <tt class="py-line">            <tt class="py-comment"># clear modelview matrix</tt> </tt>
+<a name="L1723"></a><tt class="py-lineno">1723</tt>  <tt class="py-line"><tt class="py-comment"></tt>            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glMatrixMode</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_MODELVIEW</tt><tt class="py-op">)</tt> </tt>
+<a name="L1724"></a><tt class="py-lineno">1724</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glPushMatrix</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1725"></a><tt class="py-lineno">1725</tt>  <tt class="py-line">            <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L1726"></a><tt class="py-lineno">1726</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glColor4f</tt><tt class="py-op">(</tt><tt class="py-number">0.5</tt><tt class="py-op">,</tt><tt class="py-number">0.5</tt><tt class="py-op">,</tt><tt class="py-number">0.5</tt><tt class="py-op">,</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">contrast</tt><tt class="py-op">)</tt> <tt class="py-comment"># [...]
+<a name="L1727"></a><tt class="py-lineno">1727</tt>  <tt class="py-line"> </tt>
+<a name="L1728"></a><tt class="py-lineno">1728</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">constant_parameters</tt><tt class="py-op">.</tt><tt class="py-name">mipmaps_enabled</tt><tt class="py-op">:</tt> </tt>
+<a name="L1729"></a><tt class="py-lineno">1729</tt>  <tt class="py-line">                    <tt class="py-keyword">if</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">texture_min_filter</tt> <tt class="py-keyword">in</tt> <tt id="link-259" class="py-name"><a title="VisionEgg.Textures.TextureStimulusBaseClass" class="py-name" href="#" onclick="return doclink('link-259', 'TextureStimulusBaseClass', 'link-125');">TextureStimulusBaseClass</a></tt><tt class="py-op"> [...]
+<a name="L1730"></a><tt class="py-lineno">1730</tt>  <tt class="py-line">                        <tt class="py-keyword">raise</tt> <tt class="py-name">RuntimeError</tt><tt class="py-op">(</tt><tt class="py-string">"Specified a mipmap mode in texture_min_filter, but mipmaps not enabled."</tt><tt class="py-op">)</tt> </tt>
+<a name="L1731"></a><tt class="py-lineno">1731</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">texture_object</tt><tt class="py-op">.</tt><tt id="link-261" class="py-name"><a title="VisionEgg.Textures.TextureObject.set_min_filter" class="py-name" href="#" onclick="return doclink('link-261', 'set_min_filter', 'link-151');">set_min_filter</a></tt><tt class="py-op">(</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt [...]
+<a name="L1732"></a><tt class="py-lineno">1732</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">texture_object</tt><tt class="py-op">.</tt><tt id="link-262" class="py-name"><a title="VisionEgg.Textures.TextureObject.set_mag_filter" class="py-name" href="#" onclick="return doclink('link-262', 'set_mag_filter', 'link-198');">set_mag_filter</a></tt><tt class="py-op">(</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt [...]
+<a name="L1733"></a><tt class="py-lineno">1733</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">texture_object</tt><tt class="py-op">.</tt><tt id="link-263" class="py-name"><a title="VisionEgg.Textures.TextureObject.set_wrap_mode_s" class="py-name" href="#" onclick="return doclink('link-263', 'set_wrap_mode_s', 'link-152');">set_wrap_mode_s</a></tt><tt class="py-op">(</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt> [...]
+<a name="L1734"></a><tt class="py-lineno">1734</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">texture_object</tt><tt class="py-op">.</tt><tt id="link-264" class="py-name"><a title="VisionEgg.Textures.TextureObject.set_wrap_mode_t" class="py-name" href="#" onclick="return doclink('link-264', 'set_wrap_mode_t', 'link-153');">set_wrap_mode_t</a></tt><tt class="py-op">(</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt> [...]
+<a name="L1735"></a><tt class="py-lineno">1735</tt>  <tt class="py-line"> </tt>
+<a name="L1736"></a><tt class="py-lineno">1736</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">flat</tt><tt class="py-op">:</tt> <tt class="py-comment"># draw as flat texture on a rectange</tt> </tt>
+<a name="L1737"></a><tt class="py-lineno">1737</tt>  <tt class="py-line">                    <tt class="py-name">lowerleft</tt> <tt class="py-op">=</tt> <tt id="link-265" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-265', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt class="py-name">_get_lowerleft</tt><tt class="py-op">(</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">position</tt><tt class= [...]
+<a name="L1738"></a><tt class="py-lineno">1738</tt>  <tt class="py-line"> </tt>
+<a name="L1739"></a><tt class="py-lineno">1739</tt>  <tt class="py-line">                    <tt class="py-name">translate_vector</tt> <tt class="py-op">=</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">position</tt> </tt>
+<a name="L1740"></a><tt class="py-lineno">1740</tt>  <tt class="py-line">                    <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">translate_vector</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">2</tt><tt class="py-op">:</tt> </tt>
+<a name="L1741"></a><tt class="py-lineno">1741</tt>  <tt class="py-line">                        <tt class="py-name">translate_vector</tt> <tt class="py-op">=</tt> <tt class="py-name">translate_vector</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">translate_vector</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-number">0</tt> </tt>
+<a name="L1742"></a><tt class="py-lineno">1742</tt>  <tt class="py-line">                    <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glTranslate</tt><tt class="py-op">(</tt><tt class="py-op">*</tt><tt class="py-name">translate_vector</tt><tt class="py-op">)</tt> </tt>
+<a name="L1743"></a><tt class="py-lineno">1743</tt>  <tt class="py-line">                    <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glRotatef</tt><tt class="py-op">(</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">orientation</tt><tt class="py-op">,</tt><tt class="py-number">0</tt><tt class="py-op">,</tt><tt class="py-number">0</tt><tt class="py-op">,</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="L1744"></a><tt class="py-lineno">1744</tt>  <tt class="py-line"> </tt>
+<a name="L1745"></a><tt class="py-lineno">1745</tt>  <tt class="py-line">                    <tt class="py-keyword">if</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">flip_image</tt><tt class="py-op">:</tt> </tt>
+<a name="L1746"></a><tt class="py-lineno">1746</tt>  <tt class="py-line">                        <tt class="py-keyword">raise</tt> <tt class="py-name">NotImplementedError</tt><tt class="py-op">(</tt><tt class="py-string">"flip_image not yet supported for flat spinning drums."</tt><tt class="py-op">)</tt> </tt>
+<a name="L1747"></a><tt class="py-lineno">1747</tt>  <tt class="py-line">                    <tt class="py-name">w</tt><tt class="py-op">,</tt><tt class="py-name">h</tt> <tt class="py-op">=</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">texture</tt><tt class="py-op">.</tt><tt id="link-267" class="py-name"><a title="VisionEgg.Core.Screen.size" class="py-name" href="#" onclick="return doclink('link-267', 'size', 'link-15');">size</a></tt> </tt>
+<a name="L1748"></a><tt class="py-lineno">1748</tt>  <tt class="py-line"> </tt>
+<a name="L1749"></a><tt class="py-lineno">1749</tt>  <tt class="py-line">                    <tt class="py-comment"># calculate texture coordinates based on current angle</tt> </tt>
+<a name="L1750"></a><tt class="py-lineno">1750</tt>  <tt class="py-line"><tt class="py-comment"></tt>                    <tt class="py-name">tex_phase</tt> <tt class="py-op">=</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">angular_position</tt><tt class="py-op">/</tt><tt class="py-number">360.0</tt> <tt class="py-op">+</tt> <tt class="py-number">0.5</tt> <tt class="py-comment"># offset to match non-flat</tt> </tt>
+<a name="L1751"></a><tt class="py-lineno">1751</tt>  <tt class="py-line">                    <tt class="py-name">tex_phase</tt> <tt class="py-op">=</tt> <tt class="py-name">tex_phase</tt> <tt class="py-op">%</tt> <tt class="py-number">1.0</tt> <tt class="py-comment"># make 0 <= tex_phase < 1.0</tt> </tt>
+<a name="L1752"></a><tt class="py-lineno">1752</tt>  <tt class="py-line"> </tt>
+<a name="L1753"></a><tt class="py-lineno">1753</tt>  <tt class="py-line">                    <tt class="py-name">TINY</tt> <tt class="py-op">=</tt> <tt class="py-number">1.0e-10</tt> </tt>
+<a name="L1754"></a><tt class="py-lineno">1754</tt>  <tt class="py-line">                    <tt class="py-name">tex</tt> <tt class="py-op">=</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">texture</tt> </tt>
+<a name="L1755"></a><tt class="py-lineno">1755</tt>  <tt class="py-line">                    <tt class="py-name">tex</tt><tt class="py-op">.</tt><tt id="link-268" class="py-name"><a title="VisionEgg.GUI.InfoFrame.update
+VisionEgg.GUI.ProgressBar.update
+VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.update
+VisionEgg.PyroApps.DropinServer.DropinMetaController.update
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.update
+VisionEgg.PyroApps.GridServer.GridMetaController.update
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.update
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.update
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.update
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.update
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.update
+VisionEgg.QuickTime.MovieTexture.update
+VisionEgg.Textures.Texture.update" class="py-name" href="#" onclick="return doclink('link-268', 'update', 'link-203');">update</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1756"></a><tt class="py-lineno">1756</tt>  <tt class="py-line"> </tt>
+<a name="L1757"></a><tt class="py-lineno">1757</tt>  <tt class="py-line">                    <tt class="py-keyword">if</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">flat_size</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L1758"></a><tt class="py-lineno">1758</tt>  <tt class="py-line">                        <tt id="link-269" class="py-name"><a title="VisionEgg.Core.Screen.size" class="py-name" href="#" onclick="return doclink('link-269', 'size', 'link-15');">size</a></tt> <tt class="py-op">=</tt> <tt class="py-name">tex</tt><tt class="py-op">.</tt><tt id="link-270" class="py-name"><a title="VisionEgg.Core.Screen.size" class="py-name" href="#" onclick="return doclink('link-270', 'size', 'link-15' [...]
+<a name="L1759"></a><tt class="py-lineno">1759</tt>  <tt class="py-line">                    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1760"></a><tt class="py-lineno">1760</tt>  <tt class="py-line">                        <tt id="link-271" class="py-name"><a title="VisionEgg.Core.Screen.size" class="py-name" href="#" onclick="return doclink('link-271', 'size', 'link-15');">size</a></tt> <tt class="py-op">=</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">flat_size</tt> </tt>
+<a name="L1761"></a><tt class="py-lineno">1761</tt>  <tt class="py-line"> </tt>
+<a name="L1762"></a><tt class="py-lineno">1762</tt>  <tt class="py-line">                    <tt class="py-name">l</tt> <tt class="py-op">=</tt> <tt class="py-name">lowerleft</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">-</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">position</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt>
+<a name="L1763"></a><tt class="py-lineno">1763</tt>  <tt class="py-line">                    <tt class="py-name">r</tt> <tt class="py-op">=</tt> <tt class="py-name">l</tt> <tt class="py-op">+</tt> <tt id="link-272" class="py-name"><a title="VisionEgg.Core.Screen.size" class="py-name" href="#" onclick="return doclink('link-272', 'size', 'link-15');">size</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt>
+<a name="L1764"></a><tt class="py-lineno">1764</tt>  <tt class="py-line">                    <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt class="py-name">lowerleft</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-op">-</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">position</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
+<a name="L1765"></a><tt class="py-lineno">1765</tt>  <tt class="py-line">                    <tt class="py-name">t</tt> <tt class="py-op">=</tt> <tt class="py-name">b</tt> <tt class="py-op">+</tt> <tt id="link-273" class="py-name"><a title="VisionEgg.Core.Screen.size" class="py-name" href="#" onclick="return doclink('link-273', 'size', 'link-15');">size</a></tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
+<a name="L1766"></a><tt class="py-lineno">1766</tt>  <tt class="py-line"> </tt>
+<a name="L1767"></a><tt class="py-lineno">1767</tt>  <tt class="py-line">                    <tt class="py-comment">#tex_phase = 0.0</tt> </tt>
+<a name="L1768"></a><tt class="py-lineno">1768</tt>  <tt class="py-line"><tt class="py-comment"></tt>                    <tt class="py-keyword">if</tt> <tt class="py-name">tex_phase</tt> <tt class="py-op"><</tt> <tt class="py-name">TINY</tt><tt class="py-op">:</tt> <tt class="py-comment"># it's effectively zero</tt> </tt>
+<a name="L1769"></a><tt class="py-lineno">1769</tt>  <tt class="py-line"> </tt>
+<a name="L1770"></a><tt class="py-lineno">1770</tt>  <tt class="py-line">                        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glBegin</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_QUADS</tt><tt class="py-op">)</tt> </tt>
+<a name="L1771"></a><tt class="py-lineno">1771</tt>  <tt class="py-line">                        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glTexCoord2f</tt><tt class="py-op">(</tt><tt class="py-name">tex</tt><tt class="py-op">.</tt><tt class="py-name">buf_lf</tt><tt class="py-op">,</tt><tt class="py-name">tex</tt><tt class="py-op">.</tt><tt class="py-name">buf_bf</tt><tt class="py-op">)</tt> </tt>
+<a name="L1772"></a><tt class="py-lineno">1772</tt>  <tt class="py-line">                        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glVertex2f</tt><tt class="py-op">(</tt><tt class="py-name">l</tt><tt class="py-op">,</tt><tt class="py-name">b</tt><tt class="py-op">)</tt> </tt>
+<a name="L1773"></a><tt class="py-lineno">1773</tt>  <tt class="py-line"> </tt>
+<a name="L1774"></a><tt class="py-lineno">1774</tt>  <tt class="py-line">                        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glTexCoord2f</tt><tt class="py-op">(</tt><tt class="py-name">tex</tt><tt class="py-op">.</tt><tt class="py-name">buf_rf</tt><tt class="py-op">,</tt><tt class="py-name">tex</tt><tt class="py-op">.</tt><tt class="py-name">buf_bf</tt><tt class="py-op">)</tt> </tt>
+<a name="L1775"></a><tt class="py-lineno">1775</tt>  <tt class="py-line">                        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glVertex2f</tt><tt class="py-op">(</tt><tt class="py-name">r</tt><tt class="py-op">,</tt><tt class="py-name">b</tt><tt class="py-op">)</tt> </tt>
+<a name="L1776"></a><tt class="py-lineno">1776</tt>  <tt class="py-line"> </tt>
+<a name="L1777"></a><tt class="py-lineno">1777</tt>  <tt class="py-line">                        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glTexCoord2f</tt><tt class="py-op">(</tt><tt class="py-name">tex</tt><tt class="py-op">.</tt><tt class="py-name">buf_rf</tt><tt class="py-op">,</tt><tt class="py-name">tex</tt><tt class="py-op">.</tt><tt class="py-name">buf_tf</tt><tt class="py-op">)</tt> </tt>
+<a name="L1778"></a><tt class="py-lineno">1778</tt>  <tt class="py-line">                        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glVertex2f</tt><tt class="py-op">(</tt><tt class="py-name">r</tt><tt class="py-op">,</tt><tt class="py-name">t</tt><tt class="py-op">)</tt> </tt>
+<a name="L1779"></a><tt class="py-lineno">1779</tt>  <tt class="py-line"> </tt>
+<a name="L1780"></a><tt class="py-lineno">1780</tt>  <tt class="py-line">                        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glTexCoord2f</tt><tt class="py-op">(</tt><tt class="py-name">tex</tt><tt class="py-op">.</tt><tt class="py-name">buf_lf</tt><tt class="py-op">,</tt><tt class="py-name">tex</tt><tt class="py-op">.</tt><tt class="py-name">buf_tf</tt><tt class="py-op">)</tt> </tt>
+<a name="L1781"></a><tt class="py-lineno">1781</tt>  <tt class="py-line">                        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glVertex2f</tt><tt class="py-op">(</tt><tt class="py-name">l</tt><tt class="py-op">,</tt><tt class="py-name">t</tt><tt class="py-op">)</tt> </tt>
+<a name="L1782"></a><tt class="py-lineno">1782</tt>  <tt class="py-line">                        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glEnd</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-comment"># GL_QUADS</tt> </tt>
+<a name="L1783"></a><tt class="py-lineno">1783</tt>  <tt class="py-line"> </tt>
+<a name="L1784"></a><tt class="py-lineno">1784</tt>  <tt class="py-line">                    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1785"></a><tt class="py-lineno">1785</tt>  <tt class="py-line">                        <tt class="py-comment"># Convert tex_phase into texture buffer fraction</tt> </tt>
+<a name="L1786"></a><tt class="py-lineno">1786</tt>  <tt class="py-line"><tt class="py-comment"></tt>                        <tt class="py-name">buf_break_f</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt> <tt class="py-op">(</tt><tt class="py-name">tex</tt><tt class="py-op">.</tt><tt class="py-name">buf_rf</tt> <tt class="py-op">-</tt> <tt class="py-name">tex</tt><tt class="py-op">.</tt><tt class="py-name">buf_lf</tt><tt class="py-op">)</tt> <tt class="py-op">*</tt> <tt class="py- [...]
+<a name="L1787"></a><tt class="py-lineno">1787</tt>  <tt class="py-line"> </tt>
+<a name="L1788"></a><tt class="py-lineno">1788</tt>  <tt class="py-line">                        <tt class="py-comment"># Convert tex_phase into object coords value</tt> </tt>
+<a name="L1789"></a><tt class="py-lineno">1789</tt>  <tt class="py-line"><tt class="py-comment"></tt>                        <tt class="py-name">quad_x_break</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">r</tt><tt class="py-op">-</tt><tt class="py-name">l</tt><tt class="py-op">)</tt> <tt class="py-op">*</tt> <tt class="py-name">tex_phase</tt> <tt class="py-op">+</tt> <tt class="py-name">l</tt> </tt>
+<a name="L1790"></a><tt class="py-lineno">1790</tt>  <tt class="py-line">    <tt class="py-comment">##                    quad_x_break = w * tex_phase</tt> </tt>
+<a name="L1791"></a><tt class="py-lineno">1791</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L1792"></a><tt class="py-lineno">1792</tt>  <tt class="py-line">                        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glBegin</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_QUADS</tt><tt class="py-op">)</tt> </tt>
+<a name="L1793"></a><tt class="py-lineno">1793</tt>  <tt class="py-line"> </tt>
+<a name="L1794"></a><tt class="py-lineno">1794</tt>  <tt class="py-line">                        <tt class="py-comment"># First quad</tt> </tt>
+<a name="L1795"></a><tt class="py-lineno">1795</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L1796"></a><tt class="py-lineno">1796</tt>  <tt class="py-line">                        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glTexCoord2f</tt><tt class="py-op">(</tt><tt class="py-name">buf_break_f</tt><tt class="py-op">,</tt><tt class="py-name">tex</tt><tt class="py-op">.</tt><tt class="py-name">buf_bf</tt><tt class="py-op">)</tt> </tt>
+<a name="L1797"></a><tt class="py-lineno">1797</tt>  <tt class="py-line">                        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glVertex2f</tt><tt class="py-op">(</tt><tt class="py-name">l</tt><tt class="py-op">,</tt><tt class="py-name">b</tt><tt class="py-op">)</tt> </tt>
+<a name="L1798"></a><tt class="py-lineno">1798</tt>  <tt class="py-line"> </tt>
+<a name="L1799"></a><tt class="py-lineno">1799</tt>  <tt class="py-line">                        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glTexCoord2f</tt><tt class="py-op">(</tt><tt class="py-name">tex</tt><tt class="py-op">.</tt><tt class="py-name">buf_rf</tt><tt class="py-op">,</tt><tt class="py-name">tex</tt><tt class="py-op">.</tt><tt class="py-name">buf_bf</tt><tt class="py-op">)</tt> </tt>
+<a name="L1800"></a><tt class="py-lineno">1800</tt>  <tt class="py-line">                        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glVertex2f</tt><tt class="py-op">(</tt><tt class="py-name">quad_x_break</tt><tt class="py-op">,</tt><tt class="py-name">b</tt><tt class="py-op">)</tt> </tt>
+<a name="L1801"></a><tt class="py-lineno">1801</tt>  <tt class="py-line"> </tt>
+<a name="L1802"></a><tt class="py-lineno">1802</tt>  <tt class="py-line">                        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glTexCoord2f</tt><tt class="py-op">(</tt><tt class="py-name">tex</tt><tt class="py-op">.</tt><tt class="py-name">buf_rf</tt><tt class="py-op">,</tt><tt class="py-name">tex</tt><tt class="py-op">.</tt><tt class="py-name">buf_tf</tt><tt class="py-op">)</tt> </tt>
+<a name="L1803"></a><tt class="py-lineno">1803</tt>  <tt class="py-line">                        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glVertex2f</tt><tt class="py-op">(</tt><tt class="py-name">quad_x_break</tt><tt class="py-op">,</tt><tt class="py-name">t</tt><tt class="py-op">)</tt> </tt>
+<a name="L1804"></a><tt class="py-lineno">1804</tt>  <tt class="py-line"> </tt>
+<a name="L1805"></a><tt class="py-lineno">1805</tt>  <tt class="py-line">                        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glTexCoord2f</tt><tt class="py-op">(</tt><tt class="py-name">buf_break_f</tt><tt class="py-op">,</tt><tt class="py-name">tex</tt><tt class="py-op">.</tt><tt class="py-name">buf_tf</tt><tt class="py-op">)</tt> </tt>
+<a name="L1806"></a><tt class="py-lineno">1806</tt>  <tt class="py-line">                        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glVertex2f</tt><tt class="py-op">(</tt><tt class="py-name">l</tt><tt class="py-op">,</tt><tt class="py-name">t</tt><tt class="py-op">)</tt> </tt>
+<a name="L1807"></a><tt class="py-lineno">1807</tt>  <tt class="py-line"> </tt>
+<a name="L1808"></a><tt class="py-lineno">1808</tt>  <tt class="py-line">                        <tt class="py-comment"># Second quad</tt> </tt>
+<a name="L1809"></a><tt class="py-lineno">1809</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L1810"></a><tt class="py-lineno">1810</tt>  <tt class="py-line">                        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glTexCoord2f</tt><tt class="py-op">(</tt><tt class="py-name">tex</tt><tt class="py-op">.</tt><tt class="py-name">buf_lf</tt><tt class="py-op">,</tt><tt class="py-name">tex</tt><tt class="py-op">.</tt><tt class="py-name">buf_bf</tt><tt class="py-op">)</tt> </tt>
+<a name="L1811"></a><tt class="py-lineno">1811</tt>  <tt class="py-line">                        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glVertex2f</tt><tt class="py-op">(</tt><tt class="py-name">quad_x_break</tt><tt class="py-op">,</tt><tt class="py-name">b</tt><tt class="py-op">)</tt> </tt>
+<a name="L1812"></a><tt class="py-lineno">1812</tt>  <tt class="py-line"> </tt>
+<a name="L1813"></a><tt class="py-lineno">1813</tt>  <tt class="py-line">                        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glTexCoord2f</tt><tt class="py-op">(</tt><tt class="py-name">buf_break_f</tt><tt class="py-op">,</tt><tt class="py-name">tex</tt><tt class="py-op">.</tt><tt class="py-name">buf_bf</tt><tt class="py-op">)</tt> </tt>
+<a name="L1814"></a><tt class="py-lineno">1814</tt>  <tt class="py-line">                        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glVertex2f</tt><tt class="py-op">(</tt><tt class="py-name">r</tt><tt class="py-op">,</tt><tt class="py-name">b</tt><tt class="py-op">)</tt> </tt>
+<a name="L1815"></a><tt class="py-lineno">1815</tt>  <tt class="py-line"> </tt>
+<a name="L1816"></a><tt class="py-lineno">1816</tt>  <tt class="py-line">                        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glTexCoord2f</tt><tt class="py-op">(</tt><tt class="py-name">buf_break_f</tt><tt class="py-op">,</tt><tt class="py-name">tex</tt><tt class="py-op">.</tt><tt class="py-name">buf_tf</tt><tt class="py-op">)</tt> </tt>
+<a name="L1817"></a><tt class="py-lineno">1817</tt>  <tt class="py-line">                        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glVertex2f</tt><tt class="py-op">(</tt><tt class="py-name">r</tt><tt class="py-op">,</tt><tt class="py-name">t</tt><tt class="py-op">)</tt> </tt>
+<a name="L1818"></a><tt class="py-lineno">1818</tt>  <tt class="py-line"> </tt>
+<a name="L1819"></a><tt class="py-lineno">1819</tt>  <tt class="py-line">                        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glTexCoord2f</tt><tt class="py-op">(</tt><tt class="py-name">tex</tt><tt class="py-op">.</tt><tt class="py-name">buf_lf</tt><tt class="py-op">,</tt><tt class="py-name">tex</tt><tt class="py-op">.</tt><tt class="py-name">buf_tf</tt><tt class="py-op">)</tt> </tt>
+<a name="L1820"></a><tt class="py-lineno">1820</tt>  <tt class="py-line">                        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glVertex2f</tt><tt class="py-op">(</tt><tt class="py-name">quad_x_break</tt><tt class="py-op">,</tt><tt class="py-name">t</tt><tt class="py-op">)</tt> </tt>
+<a name="L1821"></a><tt class="py-lineno">1821</tt>  <tt class="py-line">                        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glEnd</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-comment"># GL_QUADS</tt> </tt>
+<a name="L1822"></a><tt class="py-lineno">1822</tt>  <tt class="py-line"> </tt>
+<a name="L1823"></a><tt class="py-lineno">1823</tt>  <tt class="py-line">                <tt class="py-keyword">else</tt><tt class="py-op">:</tt> <tt class="py-comment"># draw as cylinder</tt> </tt>
+<a name="L1824"></a><tt class="py-lineno">1824</tt>  <tt class="py-line">                    <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glTranslatef</tt><tt class="py-op">(</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">position</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">,</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">position</tt><tt class="py-op">[</ [...]
+<a name="L1825"></a><tt class="py-lineno">1825</tt>  <tt class="py-line"> </tt>
+<a name="L1826"></a><tt class="py-lineno">1826</tt>  <tt class="py-line">                    <tt class="py-comment"># center the drum on new coordinates</tt> </tt>
+<a name="L1827"></a><tt class="py-lineno">1827</tt>  <tt class="py-line"><tt class="py-comment"></tt>                    <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glRotatef</tt><tt class="py-op">(</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">drum_center_azimuth</tt><tt class="py-op">,</tt><tt class="py-number">0</tt><tt class="py-op">,</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">,</tt><tt class="py-nu [...]
+<a name="L1828"></a><tt class="py-lineno">1828</tt>  <tt class="py-line">                    <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glRotatef</tt><tt class="py-op">(</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">drum_center_elevation</tt><tt class="py-op">,</tt><tt class="py-number">1</tt><tt class="py-op">,</tt><tt class="py-number">0</tt><tt class="py-op">,</tt><tt class="py-number">0</tt><tt class="py-op">)</tt> </tt>
+<a name="L1829"></a><tt class="py-lineno">1829</tt>  <tt class="py-line"> </tt>
+<a name="L1830"></a><tt class="py-lineno">1830</tt>  <tt class="py-line">                    <tt class="py-comment"># do the orientation</tt> </tt>
+<a name="L1831"></a><tt class="py-lineno">1831</tt>  <tt class="py-line"><tt class="py-comment"></tt>                    <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glRotatef</tt><tt class="py-op">(</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">orientation</tt><tt class="py-op">,</tt><tt class="py-number">0</tt><tt class="py-op">,</tt><tt class="py-number">0</tt><tt class="py-op">,</tt><tt class="py-number">1</tt><tt class="py-op">)< [...]
+<a name="L1832"></a><tt class="py-lineno">1832</tt>  <tt class="py-line"> </tt>
+<a name="L1833"></a><tt class="py-lineno">1833</tt>  <tt class="py-line">                    <tt class="py-comment"># turn the coordinate system so we don't have to deal with</tt> </tt>
+<a name="L1834"></a><tt class="py-lineno">1834</tt>  <tt class="py-line"><tt class="py-comment"></tt>                    <tt class="py-comment"># figuring out where to draw the texture relative to drum</tt> </tt>
+<a name="L1835"></a><tt class="py-lineno">1835</tt>  <tt class="py-line"><tt class="py-comment"></tt>                    <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glRotatef</tt><tt class="py-op">(</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">angular_position</tt><tt class="py-op">,</tt><tt class="py-number">0</tt><tt class="py-op">,</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">,</tt><tt class="py-numbe [...]
+<a name="L1836"></a><tt class="py-lineno">1836</tt>  <tt class="py-line"> </tt>
+<a name="L1837"></a><tt class="py-lineno">1837</tt>  <tt class="py-line">                    <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">num_sides</tt> <tt class="py-op">!=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">cached_display_list_num_sides</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> </tt>
+<a name="L1838"></a><tt class="py-lineno">1838</tt>  <tt class="py-line">                        <tt class="py-op">(</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">radius</tt> <tt class="py-op">!=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">cached_display_list_radius</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> </tt>
+<a name="L1839"></a><tt class="py-lineno">1839</tt>  <tt class="py-line">                        <tt class="py-op">(</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">height</tt> <tt class="py-op">!=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">cached_display_list_height</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1840"></a><tt class="py-lineno">1840</tt>  <tt class="py-line">                        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-274" class="py-name"><a title="VisionEgg.Textures.SpinningDrum.rebuild_display_list" class="py-name" href="#" onclick="return doclink('link-274', 'rebuild_display_list', 'link-257');">rebuild_display_list</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1841"></a><tt class="py-lineno">1841</tt>  <tt class="py-line"> </tt>
+<a name="L1842"></a><tt class="py-lineno">1842</tt>  <tt class="py-line">                    <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">flip_image</tt><tt class="py-op">:</tt> </tt>
+<a name="L1843"></a><tt class="py-lineno">1843</tt>  <tt class="py-line">                        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glCallList</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">cached_display_list_normal</tt><tt class="py-op">)</tt> </tt>
+<a name="L1844"></a><tt class="py-lineno">1844</tt>  <tt class="py-line">                    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1845"></a><tt class="py-lineno">1845</tt>  <tt class="py-line">                        <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glCallList</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">cached_display_list_mirror</tt><tt class="py-op">)</tt> </tt>
+<a name="L1846"></a><tt class="py-lineno">1846</tt>  <tt class="py-line">            <tt class="py-keyword">finally</tt><tt class="py-op">:</tt> </tt>
+<a name="L1847"></a><tt class="py-lineno">1847</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glMatrixMode</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_MODELVIEW</tt><tt class="py-op">)</tt> </tt>
+<a name="L1848"></a><tt class="py-lineno">1848</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glPopMatrix</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1849"></a><tt class="py-lineno">1849</tt>  <tt class="py-line"> </tt>
+<a name="SpinningDrum.rebuild_display_list"></a><div id="SpinningDrum.rebuild_display_list-def"><a name="L1850"></a><tt class="py-lineno">1850</tt> <a class="py-toggle" href="#" id="SpinningDrum.rebuild_display_list-toggle" onclick="return toggle('SpinningDrum.rebuild_display_list');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.Textures.SpinningDrum-class.html#rebuild_display_list">rebuild_display_list</a><tt class="py-op">(</tt><tt [...]
+</div><div id="SpinningDrum.rebuild_display_list-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="SpinningDrum.rebuild_display_list-expanded"><a name="L1851"></a><tt class="py-lineno">1851</tt>  <tt class="py-line">        <tt class="py-comment"># (Re)build the display list</tt> </tt>
+<a name="L1852"></a><tt class="py-lineno">1852</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment">#</tt> </tt>
+<a name="L1853"></a><tt class="py-lineno">1853</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># A "display list" is a series of OpenGL commands that is</tt> </tt>
+<a name="L1854"></a><tt class="py-lineno">1854</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># cached in a list for rapid re-drawing of the same object.</tt> </tt>
+<a name="L1855"></a><tt class="py-lineno">1855</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment">#</tt> </tt>
+<a name="L1856"></a><tt class="py-lineno">1856</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># This draws a display list for an approximation of a cylinder.</tt> </tt>
+<a name="L1857"></a><tt class="py-lineno">1857</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># The cylinder has "num_sides" sides. The following code</tt> </tt>
+<a name="L1858"></a><tt class="py-lineno">1858</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># generates a list of vertices and the texture coordinates</tt> </tt>
+<a name="L1859"></a><tt class="py-lineno">1859</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-comment"># to be used by those vertices.</tt> </tt>
+<a name="L1860"></a><tt class="py-lineno">1860</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">r</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">radius</tt> <tt class="py-comment"># in OpenGL (arbitrary) units</tt> </tt>
+<a name="L1861"></a><tt class="py-lineno">1861</tt>  <tt class="py-line">        <tt class="py-name">circum</tt> <tt class="py-op">=</tt> <tt class="py-number">2.0</tt><tt class="py-op">*</tt><tt class="py-name">math</tt><tt class="py-op">.</tt><tt class="py-name">pi</tt><tt class="py-op">*</tt><tt class="py-name">r</tt> </tt>
+<a name="L1862"></a><tt class="py-lineno">1862</tt>  <tt class="py-line">        <tt class="py-name">tex</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">texture</tt> </tt>
+<a name="L1863"></a><tt class="py-lineno">1863</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">height</tt> <tt class="py-op"><</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt>
+<a name="L1864"></a><tt class="py-lineno">1864</tt>  <tt class="py-line">            <tt class="py-name">h</tt> <tt class="py-op">=</tt> <tt class="py-name">circum</tt><tt class="py-op">/</tt><tt id="link-275" class="py-name"><a title="float" class="py-name" href="#" onclick="return doclink('link-275', 'float', 'link-38');">float</a></tt><tt class="py-op">(</tt><tt class="py-name">tex</tt><tt class="py-op">.</tt><tt id="link-276" class="py-name"><a title="VisionEgg.Core.Screen.size" clas [...]
+<a name="L1865"></a><tt class="py-lineno">1865</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1866"></a><tt class="py-lineno">1866</tt>  <tt class="py-line">            <tt class="py-name">h</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">height</tt> </tt>
+<a name="L1867"></a><tt class="py-lineno">1867</tt>  <tt class="py-line"> </tt>
+<a name="L1868"></a><tt class="py-lineno">1868</tt>  <tt class="py-line">        <tt class="py-name">num_sides</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">num_sides</tt> </tt>
+<a name="L1869"></a><tt class="py-lineno">1869</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">cached_display_list_num_sides</tt> <tt class="py-op">=</tt> <tt class="py-name">num_sides</tt> </tt>
+<a name="L1870"></a><tt class="py-lineno">1870</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">cached_display_list_radius</tt> <tt class="py-op">=</tt> <tt class="py-name">r</tt> </tt>
+<a name="L1871"></a><tt class="py-lineno">1871</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">cached_display_list_height</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">height</tt> </tt>
+<a name="L1872"></a><tt class="py-lineno">1872</tt>  <tt class="py-line"> </tt>
+<a name="L1873"></a><tt class="py-lineno">1873</tt>  <tt class="py-line">        <tt class="py-name">deltaTheta</tt> <tt class="py-op">=</tt> <tt class="py-number">2.0</tt><tt class="py-op">*</tt><tt class="py-name">math</tt><tt class="py-op">.</tt><tt class="py-name">pi</tt> <tt class="py-op">/</tt> <tt class="py-name">num_sides</tt> </tt>
+<a name="L1874"></a><tt class="py-lineno">1874</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">direction</tt> <tt class="py-keyword">in</tt> <tt class="py-op">[</tt><tt class="py-string">'normal'</tt><tt class="py-op">,</tt><tt class="py-string">'mirror'</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
+<a name="L1875"></a><tt class="py-lineno">1875</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">direction</tt> <tt class="py-op">==</tt> <tt class="py-string">'normal'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1876"></a><tt class="py-lineno">1876</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glNewList</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">cached_display_list_normal</tt><tt class="py-op">,</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_COMPILE</tt><tt class="py-op">)</tt> </tt>
+<a name="L1877"></a><tt class="py-lineno">1877</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1878"></a><tt class="py-lineno">1878</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glNewList</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">cached_display_list_mirror</tt><tt class="py-op">,</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_COMPILE</tt><tt class="py-op">)</tt> </tt>
+<a name="L1879"></a><tt class="py-lineno">1879</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glBegin</tt><tt class="py-op">(</tt><tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_QUADS</tt><tt class="py-op">)</tt> </tt>
+<a name="L1880"></a><tt class="py-lineno">1880</tt>  <tt class="py-line">            <tt class="py-keyword">for</tt> <tt class="py-name">i</tt> <tt class="py-keyword">in</tt> <tt class="py-name">range</tt><tt class="py-op">(</tt><tt class="py-name">num_sides</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1881"></a><tt class="py-lineno">1881</tt>  <tt class="py-line">                <tt class="py-comment"># angle of sides</tt> </tt>
+<a name="L1882"></a><tt class="py-lineno">1882</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-name">theta1</tt> <tt class="py-op">=</tt> <tt class="py-name">i</tt><tt class="py-op">*</tt><tt class="py-name">deltaTheta</tt> </tt>
+<a name="L1883"></a><tt class="py-lineno">1883</tt>  <tt class="py-line">                <tt class="py-name">theta2</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">i</tt><tt class="py-op">+</tt><tt class="py-number">1</tt><tt class="py-op">)</tt><tt class="py-op">*</tt><tt class="py-name">deltaTheta</tt> </tt>
+<a name="L1884"></a><tt class="py-lineno">1884</tt>  <tt class="py-line">                <tt class="py-comment"># fraction of texture</tt> </tt>
+<a name="L1885"></a><tt class="py-lineno">1885</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-keyword">if</tt> <tt class="py-name">direction</tt> <tt class="py-op">==</tt> <tt class="py-string">'normal'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1886"></a><tt class="py-lineno">1886</tt>  <tt class="py-line">                    <tt class="py-name">frac1</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">tex</tt><tt class="py-op">.</tt><tt class="py-name">buf_lf</tt> <tt class="py-op">+</tt> <tt class="py-op">(</tt><tt id="link-279" class="py-name"><a title="float" class="py-name" href="#" onclick="return doclink('link-279', 'float', 'link-38');">float</a></tt><tt class="py-op">(</tt><tt class="py- [...]
+<a name="L1887"></a><tt class="py-lineno">1887</tt>  <tt class="py-line">                    <tt class="py-name">frac2</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">tex</tt><tt class="py-op">.</tt><tt class="py-name">buf_lf</tt> <tt class="py-op">+</tt> <tt class="py-op">(</tt><tt id="link-283" class="py-name"><a title="float" class="py-name" href="#" onclick="return doclink('link-283', 'float', 'link-38');">float</a></tt><tt class="py-op">(</tt><tt class="py- [...]
+<a name="L1888"></a><tt class="py-lineno">1888</tt>  <tt class="py-line">                <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1889"></a><tt class="py-lineno">1889</tt>  <tt class="py-line">                    <tt class="py-name">j</tt> <tt class="py-op">=</tt> <tt class="py-name">num_sides</tt><tt class="py-op">-</tt><tt class="py-name">i</tt><tt class="py-op">-</tt><tt class="py-number">1</tt> </tt>
+<a name="L1890"></a><tt class="py-lineno">1890</tt>  <tt class="py-line">                    <tt class="py-name">frac1</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">tex</tt><tt class="py-op">.</tt><tt class="py-name">buf_lf</tt> <tt class="py-op">+</tt> <tt class="py-op">(</tt><tt id="link-287" class="py-name"><a title="float" class="py-name" href="#" onclick="return doclink('link-287', 'float', 'link-38');">float</a></tt><tt class="py-op">(</tt><tt class="py- [...]
+<a name="L1891"></a><tt class="py-lineno">1891</tt>  <tt class="py-line">                    <tt class="py-name">frac2</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">tex</tt><tt class="py-op">.</tt><tt class="py-name">buf_lf</tt> <tt class="py-op">+</tt> <tt class="py-op">(</tt><tt id="link-291" class="py-name"><a title="float" class="py-name" href="#" onclick="return doclink('link-291', 'float', 'link-38');">float</a></tt><tt class="py-op">(</tt><tt class="py- [...]
+<a name="L1892"></a><tt class="py-lineno">1892</tt>  <tt class="py-line">                <tt class="py-comment"># location of sides</tt> </tt>
+<a name="L1893"></a><tt class="py-lineno">1893</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-name">x1</tt> <tt class="py-op">=</tt> <tt class="py-name">r</tt><tt class="py-op">*</tt><tt class="py-name">math</tt><tt class="py-op">.</tt><tt class="py-name">cos</tt><tt class="py-op">(</tt><tt class="py-name">theta1</tt><tt class="py-op">)</tt> </tt>
+<a name="L1894"></a><tt class="py-lineno">1894</tt>  <tt class="py-line">                <tt class="py-name">z1</tt> <tt class="py-op">=</tt> <tt class="py-name">r</tt><tt class="py-op">*</tt><tt class="py-name">math</tt><tt class="py-op">.</tt><tt class="py-name">sin</tt><tt class="py-op">(</tt><tt class="py-name">theta1</tt><tt class="py-op">)</tt> </tt>
+<a name="L1895"></a><tt class="py-lineno">1895</tt>  <tt class="py-line">                <tt class="py-name">x2</tt> <tt class="py-op">=</tt> <tt class="py-name">r</tt><tt class="py-op">*</tt><tt class="py-name">math</tt><tt class="py-op">.</tt><tt class="py-name">cos</tt><tt class="py-op">(</tt><tt class="py-name">theta2</tt><tt class="py-op">)</tt> </tt>
+<a name="L1896"></a><tt class="py-lineno">1896</tt>  <tt class="py-line">                <tt class="py-name">z2</tt> <tt class="py-op">=</tt> <tt class="py-name">r</tt><tt class="py-op">*</tt><tt class="py-name">math</tt><tt class="py-op">.</tt><tt class="py-name">sin</tt><tt class="py-op">(</tt><tt class="py-name">theta2</tt><tt class="py-op">)</tt> </tt>
+<a name="L1897"></a><tt class="py-lineno">1897</tt>  <tt class="py-line"> </tt>
+<a name="L1898"></a><tt class="py-lineno">1898</tt>  <tt class="py-line">                <tt class="py-comment">#Bottom left of quad</tt> </tt>
+<a name="L1899"></a><tt class="py-lineno">1899</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glTexCoord2f</tt><tt class="py-op">(</tt><tt class="py-name">frac1</tt><tt class="py-op">,</tt> <tt class="py-name">tex</tt><tt class="py-op">.</tt><tt class="py-name">buf_bf</tt><tt class="py-op">)</tt> </tt>
+<a name="L1900"></a><tt class="py-lineno">1900</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glVertex4f</tt><tt class="py-op">(</tt> <tt class="py-name">x1</tt><tt class="py-op">,</tt> <tt class="py-op">-</tt><tt class="py-name">h</tt><tt class="py-op">,</tt> <tt class="py-name">z1</tt><tt class="py-op">,</tt> <tt class="py-number">1.0</tt> <tt class="py-op">)</tt> </tt>
+<a name="L1901"></a><tt class="py-lineno">1901</tt>  <tt class="py-line"> </tt>
+<a name="L1902"></a><tt class="py-lineno">1902</tt>  <tt class="py-line">                <tt class="py-comment">#Bottom right of quad</tt> </tt>
+<a name="L1903"></a><tt class="py-lineno">1903</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glTexCoord2f</tt><tt class="py-op">(</tt><tt class="py-name">frac2</tt><tt class="py-op">,</tt> <tt class="py-name">tex</tt><tt class="py-op">.</tt><tt class="py-name">buf_bf</tt><tt class="py-op">)</tt> </tt>
+<a name="L1904"></a><tt class="py-lineno">1904</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glVertex4f</tt><tt class="py-op">(</tt> <tt class="py-name">x2</tt><tt class="py-op">,</tt> <tt class="py-op">-</tt><tt class="py-name">h</tt><tt class="py-op">,</tt> <tt class="py-name">z2</tt><tt class="py-op">,</tt> <tt class="py-number">1.0</tt> <tt class="py-op">)</tt> </tt>
+<a name="L1905"></a><tt class="py-lineno">1905</tt>  <tt class="py-line">                <tt class="py-comment">#Top right of quad</tt> </tt>
+<a name="L1906"></a><tt class="py-lineno">1906</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glTexCoord2f</tt><tt class="py-op">(</tt><tt class="py-name">frac2</tt><tt class="py-op">,</tt> <tt class="py-name">tex</tt><tt class="py-op">.</tt><tt class="py-name">buf_tf</tt><tt class="py-op">)</tt><tt class="py-op">;</tt> </tt>
+<a name="L1907"></a><tt class="py-lineno">1907</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glVertex4f</tt><tt class="py-op">(</tt> <tt class="py-name">x2</tt><tt class="py-op">,</tt>  <tt class="py-name">h</tt><tt class="py-op">,</tt> <tt class="py-name">z2</tt><tt class="py-op">,</tt> <tt class="py-number">1.0</tt> <tt class="py-op">)</tt> </tt>
+<a name="L1908"></a><tt class="py-lineno">1908</tt>  <tt class="py-line">                <tt class="py-comment">#Top left of quad</tt> </tt>
+<a name="L1909"></a><tt class="py-lineno">1909</tt>  <tt class="py-line"><tt class="py-comment"></tt>                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glTexCoord2f</tt><tt class="py-op">(</tt><tt class="py-name">frac1</tt><tt class="py-op">,</tt> <tt class="py-name">tex</tt><tt class="py-op">.</tt><tt class="py-name">buf_tf</tt><tt class="py-op">)</tt> </tt>
+<a name="L1910"></a><tt class="py-lineno">1910</tt>  <tt class="py-line">                <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glVertex4f</tt><tt class="py-op">(</tt> <tt class="py-name">x1</tt><tt class="py-op">,</tt>  <tt class="py-name">h</tt><tt class="py-op">,</tt> <tt class="py-name">z1</tt><tt class="py-op">,</tt> <tt class="py-number">1.0</tt> <tt class="py-op">)</tt> </tt>
+<a name="L1911"></a><tt class="py-lineno">1911</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glEnd</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1912"></a><tt class="py-lineno">1912</tt>  <tt class="py-line">            <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">glEndList</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L1913"></a><tt class="py-lineno">1913</tt>  <tt class="py-line"> </tt>
+<a name="FixationCross"></a><div id="FixationCross-def"><a name="L1914"></a><tt class="py-lineno">1914</tt> <a class="py-toggle" href="#" id="FixationCross-toggle" onclick="return toggle('FixationCross');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.Textures.FixationCross-class.html">FixationCross</a><tt class="py-op">(</tt><tt class="py-base-class">VisionEgg</tt><tt class="py-op">.</tt><tt class="py-base-class">Core</tt><tt class="py [...]
+</div><div id="FixationCross-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="FixationCross-expanded"><a name="L1915"></a><tt class="py-lineno">1915</tt>  <tt class="py-line">    <tt class="py-docstring">"""Cross useful for fixation point.</tt> </tt>
+<a name="L1916"></a><tt class="py-lineno">1916</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1917"></a><tt class="py-lineno">1917</tt>  <tt class="py-line"><tt class="py-docstring">    Parameters</tt> </tt>
+<a name="L1918"></a><tt class="py-lineno">1918</tt>  <tt class="py-line"><tt class="py-docstring">    ==========</tt> </tt>
+<a name="L1919"></a><tt class="py-lineno">1919</tt>  <tt class="py-line"><tt class="py-docstring">    on       -- (Boolean)</tt> </tt>
+<a name="L1920"></a><tt class="py-lineno">1920</tt>  <tt class="py-line"><tt class="py-docstring">                Default: True</tt> </tt>
+<a name="L1921"></a><tt class="py-lineno">1921</tt>  <tt class="py-line"><tt class="py-docstring">    position -- (Sequence2 of Real)</tt> </tt>
+<a name="L1922"></a><tt class="py-lineno">1922</tt>  <tt class="py-line"><tt class="py-docstring">                Default: (320, 240)</tt> </tt>
+<a name="L1923"></a><tt class="py-lineno">1923</tt>  <tt class="py-line"><tt class="py-docstring">    size     -- (Sequence2 of Real)</tt> </tt>
+<a name="L1924"></a><tt class="py-lineno">1924</tt>  <tt class="py-line"><tt class="py-docstring">                Default: (64, 64)</tt> </tt>
+<a name="L1925"></a><tt class="py-lineno">1925</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1926"></a><tt class="py-lineno">1926</tt>  <tt class="py-line"><tt class="py-docstring">    Constant Parameters</tt> </tt>
+<a name="L1927"></a><tt class="py-lineno">1927</tt>  <tt class="py-line"><tt class="py-docstring">    ===================</tt> </tt>
+<a name="L1928"></a><tt class="py-lineno">1928</tt>  <tt class="py-line"><tt class="py-docstring">    texture_size -- (Sequence2 of Real)</tt> </tt>
+<a name="L1929"></a><tt class="py-lineno">1929</tt>  <tt class="py-line"><tt class="py-docstring">                    Default: (64, 64)</tt> </tt>
+<a name="L1930"></a><tt class="py-lineno">1930</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L1931"></a><tt class="py-lineno">1931</tt>  <tt class="py-line"> </tt>
+<a name="L1932"></a><tt class="py-lineno">1932</tt>  <tt class="py-line">    <tt id="link-295" class="py-name"><a title="VisionEgg.ClassWithParameters.parameters_and_defaults
+VisionEgg.Core.FixationSpot.parameters_and_defaults
+VisionEgg.Core.ProjectionBaseClass.parameters_and_defaults
+VisionEgg.Core.Screen.parameters_and_defaults
+VisionEgg.Core.Viewport.parameters_and_defaults
+VisionEgg.Daq.Buffered.parameters_and_defaults
+VisionEgg.Dots.DotArea2D.parameters_and_defaults
+VisionEgg.FlowControl.Presentation.parameters_and_defaults
+VisionEgg.Gratings.AlphaGratingCommon.parameters_and_defaults
+VisionEgg.Gratings.LuminanceGratingCommon.parameters_and_defaults
+VisionEgg.Gratings.SinGrating2D.parameters_and_defaults
+VisionEgg.Gratings.SinGrating3D.parameters_and_defaults
+VisionEgg.MoreStimuli.Arrow.parameters_and_defaults
+VisionEgg.MoreStimuli.FilledCircle.parameters_and_defaults
+VisionEgg.MoreStimuli.Rectangle3D.parameters_and_defaults
+VisionEgg.MoreStimuli.Target2D.parameters_and_defaults
+VisionEgg.PyroApps.EPhysGUI.Loop.parameters_and_defaults
+VisionEgg.SphereMap.AzElGrid.parameters_and_defaults
+VisionEgg.SphereMap.SphereGrating.parameters_and_defaults
+VisionEgg.SphereMap.SphereMap.parameters_and_defaults
+VisionEgg.SphereMap.SphereWindow.parameters_and_defaults
+VisionEgg.Text.BitmapText.parameters_and_defaults
+VisionEgg.Text.GlutTextBase.parameters_and_defaults
+VisionEgg.Text.StrokeText.parameters_and_defaults
+VisionEgg.Text.Text.parameters_and_defaults
+VisionEgg.Textures.FixationCross.parameters_and_defaults
+VisionEgg.Textures.SpinningDrum.parameters_and_defaults
+VisionEgg.Textures.TextureStimulus.parameters_and_defaults
+VisionEgg.Textures.TextureStimulus3D.parameters_and_defaults
+VisionEgg.Textures.TextureStimulusBaseClass.parameters_and_defaults
+VisionEgg.WrappedText.WrappedText.parameters_and_defaults" class="py-name" href="#" onclick="return doclink('link-295', 'parameters_and_defaults', 'link-93');">parameters_and_defaults</a></tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> </tt>
+<a name="L1933"></a><tt class="py-lineno">1933</tt>  <tt class="py-line">        <tt class="py-string">'on'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-name">True</tt><tt class="py-op">,</tt> </tt>
+<a name="L1934"></a><tt class="py-lineno">1934</tt>  <tt class="py-line">              <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-296" class="py-name"><a title="VisionEgg.ParameterTypes.Boolean" class="py-name" href="#" onclick="return doclink('link-296', 'Boolean', 'link-117');">Boolean</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L1935"></a><tt class="py-lineno">1935</tt>  <tt class="py-line">        <tt class="py-string">'position'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-number">320</tt><tt class="py-op">,</tt><tt class="py-number">240</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L1936"></a><tt class="py-lineno">1936</tt>  <tt class="py-line">                    <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-297" class="py-name"><a title="VisionEgg.ParameterTypes.Sequence2" class="py-name" href="#" onclick="return doclink('link-297', 'Sequence2', 'link-141');">Sequence2</a></tt><tt class="py-op">(</tt><tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-298" class="py-name"><a title="VisionEgg.ParameterTypes.Real"  [...]
+<a name="L1937"></a><tt class="py-lineno">1937</tt>  <tt class="py-line">        <tt class="py-string">'size'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-number">64</tt><tt class="py-op">,</tt><tt class="py-number">64</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L1938"></a><tt class="py-lineno">1938</tt>  <tt class="py-line">                <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-299" class="py-name"><a title="VisionEgg.ParameterTypes.Sequence2" class="py-name" href="#" onclick="return doclink('link-299', 'Sequence2', 'link-141');">Sequence2</a></tt><tt class="py-op">(</tt><tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-300" class="py-name"><a title="VisionEgg.ParameterTypes.Real" clas [...]
+<a name="L1939"></a><tt class="py-lineno">1939</tt>  <tt class="py-line">        <tt class="py-op">}</tt> </tt>
+<a name="L1940"></a><tt class="py-lineno">1940</tt>  <tt class="py-line">    <tt id="link-301" class="py-name"><a title="VisionEgg.ClassWithParameters.constant_parameters_and_defaults
+VisionEgg.Core.Screen.constant_parameters_and_defaults
+VisionEgg.Daq.Analog.constant_parameters_and_defaults
+VisionEgg.Daq.Channel.constant_parameters_and_defaults
+VisionEgg.Daq.SignalType.constant_parameters_and_defaults
+VisionEgg.Dots.DotArea2D.constant_parameters_and_defaults
+VisionEgg.SphereMap.AzElGrid.constant_parameters_and_defaults
+VisionEgg.Text.Text.constant_parameters_and_defaults
+VisionEgg.Textures.FixationCross.constant_parameters_and_defaults
+VisionEgg.Textures.Mask2D.constant_parameters_and_defaults
+VisionEgg.Textures.TextureStimulusBaseClass.constant_parameters_and_defaults
+VisionEgg.WrappedText.WrappedText.constant_parameters_and_defaults" class="py-name" href="#" onclick="return doclink('link-301', 'constant_parameters_and_defaults', 'link-112');">constant_parameters_and_defaults</a></tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> </tt>
+<a name="L1941"></a><tt class="py-lineno">1941</tt>  <tt class="py-line">        <tt class="py-string">'texture_size'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-number">64</tt><tt class="py-op">,</tt><tt class="py-number">64</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L1942"></a><tt class="py-lineno">1942</tt>  <tt class="py-line">                        <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-302" class="py-name"><a title="VisionEgg.ParameterTypes.Sequence2" class="py-name" href="#" onclick="return doclink('link-302', 'Sequence2', 'link-141');">Sequence2</a></tt><tt class="py-op">(</tt><tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-303" class="py-name"><a title="VisionEgg.ParameterTypes.Re [...]
+<a name="L1943"></a><tt class="py-lineno">1943</tt>  <tt class="py-line">        <tt class="py-op">}</tt> </tt>
+<a name="L1944"></a><tt class="py-lineno">1944</tt>  <tt class="py-line"> </tt>
+<a name="L1945"></a><tt class="py-lineno">1945</tt>  <tt class="py-line">    <tt class="py-name">__slots__</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt> </tt>
+<a name="L1946"></a><tt class="py-lineno">1946</tt>  <tt class="py-line">        <tt class="py-string">'texture_stimulus'</tt><tt class="py-op">,</tt> </tt>
+<a name="L1947"></a><tt class="py-lineno">1947</tt>  <tt class="py-line">        <tt class="py-op">)</tt> </tt>
+<a name="L1948"></a><tt class="py-lineno">1948</tt>  <tt class="py-line"> </tt>
+<a name="FixationCross.__init__"></a><div id="FixationCross.__init__-def"><a name="L1949"></a><tt class="py-lineno">1949</tt> <a class="py-toggle" href="#" id="FixationCross.__init__-toggle" onclick="return toggle('FixationCross.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.Textures.FixationCross-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt><tt class="py-op [...]
+</div><div id="FixationCross.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="FixationCross.__init__-expanded"><a name="L1950"></a><tt class="py-lineno">1950</tt>  <tt class="py-line">        <tt id="link-304" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-304', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-305" class="py-name"><a title="VisionEgg.Core" class="py-name" href [...]
+VisionEgg.Configuration.Config.__init__
+VisionEgg.Core.FixationSpot.__init__
+VisionEgg.Core.FrameTimer.__init__
+VisionEgg.Core.ModelView.__init__
+VisionEgg.Core.OrthographicProjection.__init__
+VisionEgg.Core.OrthographicProjectionNoZClip.__init__
+VisionEgg.Core.PerspectiveProjection.__init__
+VisionEgg.Core.Projection.__init__
+VisionEgg.Core.ProjectionBaseClass.__init__
+VisionEgg.Core.Screen.__init__
+VisionEgg.Core.SimplePerspectiveProjection.__init__
+VisionEgg.Core.Stimulus.__init__
+VisionEgg.Core.Viewport.__init__
+VisionEgg.Daq.Channel.__init__
+VisionEgg.Daq.DaqMode.__init__
+VisionEgg.Daq.Device.__init__
+VisionEgg.Daq.Functionality.__init__
+VisionEgg.Daq.SignalType.__init__
+VisionEgg.DaqKeyboard.KeyboardTriggerInController.__init__
+VisionEgg.DaqLPT.LPTChannel.__init__
+VisionEgg.DaqLPT.LPTDevice.__init__
+VisionEgg.DaqLPT.LPTTriggerInController.__init__
+VisionEgg.DaqLPT.LPTTriggerOutController.__init__
+VisionEgg.Deprecated.Message.__init__
+VisionEgg.Dots.DotArea2D.__init__
+VisionEgg.FlowControl.ConstantController.__init__
+VisionEgg.FlowControl.Controller.__init__
+VisionEgg.FlowControl.EncapsulatedController.__init__
+VisionEgg.FlowControl.EvalStringController.__init__
+VisionEgg.FlowControl.ExecStringController.__init__
+VisionEgg.FlowControl.FunctionController.__init__
+VisionEgg.FlowControl.Presentation.__init__
+VisionEgg.GLTrace.Wrapper.__init__
+VisionEgg.GUI.AppWindow.__init__
+VisionEgg.GUI.GetKeypressDialog.__init__
+VisionEgg.GUI.GraphicsConfigurationWindow.__init__
+VisionEgg.GUI.InfoFrame.__init__
+VisionEgg.GUI.ProgressBar.__init__
+VisionEgg.GUI.ToplevelDialog.__init__
+VisionEgg.Gratings.SinGrating2D.__init__
+VisionEgg.Gratings.SinGrating3D.__init__
+VisionEgg.MoreStimuli.Arrow.__init__
+VisionEgg.MoreStimuli.FilledCircle.__init__
+VisionEgg.MoreStimuli.Rectangle3D.__init__
+VisionEgg.MoreStimuli.Target2D.__init__
+VisionEgg.ParameterTypes.AnyOf.__init__
+VisionEgg.ParameterTypes.Instance.__init__
+VisionEgg.ParameterTypes.Sequence.__init__
+VisionEgg.ParameterTypes.SubClass.__init__
+VisionEgg.PyroApps.AST_ext.AST_Visitor.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalMetaParameters.__init__
+VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.__init__
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.__init__
+VisionEgg.PyroApps.DropinGUI.DropinMetaParameters.__init__
+VisionEgg.PyroApps.DropinServer.DropinMetaController.__init__
+VisionEgg.PyroApps.EPhysGUI.AppWindow.__init__
+VisionEgg.PyroApps.EPhysGUI.BarButton.__init__
+VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase.__init__
+VisionEgg.PyroApps.EPhysGUI.GammaFrame.__init__
+VisionEgg.PyroApps.EPhysGUI.ImageSequenceLauncher.__init__
+VisionEgg.PyroApps.EPhysGUI.Loop.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopContainedObject.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopParamDialog.__init__
+VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.__init__
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.__init__
+VisionEgg.PyroApps.EPhysServer.EPhysServer.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingMetaParameters.__init__
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.GridGUI.GridControlFrame.__init__
+VisionEgg.PyroApps.GridGUI.GridMetaParameters.__init__
+VisionEgg.PyroApps.GridServer.GridMetaController.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetMetaParameters.__init__
+VisionEgg.PyroApps.MouseTargetServer.MousePositionController.__init__
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetOrientationController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetPositionController.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.CallbackEntry.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionParameters.__init__
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingMetaParameters.__init__
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumMetaParameters.__init__
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.__init__
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.__init__
+VisionEgg.PyroApps.TargetGUI.TargetMetaParameters.__init__
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.__init__
+VisionEgg.PyroClient.PyroClient.__init__
+VisionEgg.PyroHelpers.PyroConstantController.__init__
+VisionEgg.PyroHelpers.PyroEncapsulatedController.__init__
+VisionEgg.PyroHelpers.PyroEvalStringController.__init__
+VisionEgg.PyroHelpers.PyroExecStringController.__init__
+VisionEgg.PyroHelpers.PyroListenController.__init__
+VisionEgg.PyroHelpers.PyroLocalDictController.__init__
+VisionEgg.PyroHelpers.PyroServer.__init__
+VisionEgg.QuickTime.MovieTexture.__init__
+VisionEgg.ResponseControl.KeyboardResponseController.__init__
+VisionEgg.ResponseControl.ResponseController.__init__
+VisionEgg.SphereMap.AzElGrid.__init__
+VisionEgg.SphereMap.SphereGrating.__init__
+VisionEgg.SphereMap.SphereMap.__init__
+VisionEgg.SphereMap.SphereWindow.__init__
+VisionEgg.TCPController.SocketListenController.__init__
+VisionEgg.TCPController.TCPController.__init__
+VisionEgg.TCPController.TCPServer.__init__
+VisionEgg.Text.BitmapText.__init__
+VisionEgg.Text.GlutTextBase.__init__
+VisionEgg.Text.StrokeText.__init__
+VisionEgg.Text.Text.__init__
+VisionEgg.Textures.FixationCross.__init__
+VisionEgg.Textures.Mask2D.__init__
+VisionEgg.Textures.SpinningDrum.__init__
+VisionEgg.Textures.Texture.__init__
+VisionEgg.Textures.TextureFromFile.__init__
+VisionEgg.Textures.TextureObject.__init__
+VisionEgg.Textures.TextureStimulusBaseClass.__init__
+VisionEgg.ThreeDeeMath.TransformMatrix.__init__
+VisionEgg.WrappedText.WrappedText.__init__
+VisionEgg.qtmovie.Movie.__init__
+VisionEgg.qtmovie.Rect.__init__" class="py-name" href="#" onclick="return doclink('link-307', '__init__', 'link-55');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt><tt class="py-op">**</tt><tt class="py-name">kw</tt><tt class="py-op">)</tt> </tt>
+<a name="L1951"></a><tt class="py-lineno">1951</tt>  <tt class="py-line">        <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">constant_parameters</tt><tt class="py-op">.</tt><tt class="py-name">texture_size</tt> </tt>
+<a name="L1952"></a><tt class="py-lineno">1952</tt>  <tt class="py-line">        <tt class="py-name">mid_x</tt> <tt class="py-op">=</tt> <tt class="py-name">s</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">/</tt><tt class="py-number">2.0</tt> </tt>
+<a name="L1953"></a><tt class="py-lineno">1953</tt>  <tt class="py-line">        <tt class="py-name">mid_y</tt> <tt class="py-op">=</tt> <tt class="py-name">s</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">/</tt><tt class="py-number">2.0</tt> </tt>
+<a name="L1954"></a><tt class="py-lineno">1954</tt>  <tt class="py-line">        <tt class="py-name">texels</tt> <tt class="py-op">=</tt> <tt class="py-name">Image</tt><tt class="py-op">.</tt><tt class="py-name">new</tt><tt class="py-op">(</tt><tt class="py-string">"RGBX"</tt><tt class="py-op">,</tt><tt class="py-name">s</tt><tt class="py-op">,</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">,</tt><tt class="py-number">0</tt><tt class="py-op">,</tt><tt class="py [...]
+<a name="L1955"></a><tt class="py-lineno">1955</tt>  <tt class="py-line">        <tt class="py-name">texels_draw</tt> <tt class="py-op">=</tt> <tt class="py-name">ImageDraw</tt><tt class="py-op">.</tt><tt class="py-name">Draw</tt><tt class="py-op">(</tt><tt class="py-name">texels</tt><tt class="py-op">)</tt> </tt>
+<a name="L1956"></a><tt class="py-lineno">1956</tt>  <tt class="py-line">        <tt class="py-name">texels_draw</tt><tt class="py-op">.</tt><tt class="py-name">rectangle</tt><tt class="py-op">(</tt> <tt class="py-op">(</tt><tt class="py-name">mid_x</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">,</tt> <tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-name">mid_x</tt><tt class="py-op">+</tt><tt class="py-number">1</tt><tt class="py-op">,</tt> < [...]
+<a name="L1957"></a><tt class="py-lineno">1957</tt>  <tt class="py-line">        <tt class="py-name">texels_draw</tt><tt class="py-op">.</tt><tt class="py-name">rectangle</tt><tt class="py-op">(</tt> <tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-name">mid_y</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">,</tt> <tt class="py-name">s</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt cl [...]
+<a name="L1958"></a><tt class="py-lineno">1958</tt>  <tt class="py-line">        <tt class="py-name">texels_draw</tt><tt class="py-op">.</tt><tt class="py-name">line</tt><tt class="py-op">(</tt> <tt class="py-op">(</tt><tt class="py-name">mid_x</tt><tt class="py-op">,</tt> <tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-name">mid_x</tt><tt class="py-op">,</tt> <tt class="py-name">s</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt clas [...]
+<a name="L1959"></a><tt class="py-lineno">1959</tt>  <tt class="py-line">        <tt class="py-name">texels_draw</tt><tt class="py-op">.</tt><tt class="py-name">line</tt><tt class="py-op">(</tt> <tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-name">mid_y</tt><tt class="py-op">,</tt> <tt class="py-name">s</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">mid_y</tt><tt clas [...]
+<a name="L1960"></a><tt class="py-lineno">1960</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">texture_stimulus</tt> <tt class="py-op">=</tt> <tt id="link-308" class="py-name" targets="Class VisionEgg.Textures.TextureStimulus=VisionEgg.Textures.TextureStimulus-class.html"><a title="VisionEgg.Textures.TextureStimulus" class="py-name" href="#" onclick="return doclink('link-308', 'TextureStimulus', 'link-308');">TextureStimulus</a>< [...]
+<a name="L1961"></a><tt class="py-lineno">1961</tt>  <tt class="py-line">                                                 <tt class="py-name">position</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">position</tt><tt class="py-op">,</tt> </tt>
+<a name="L1962"></a><tt class="py-lineno">1962</tt>  <tt class="py-line">                                                 <tt class="py-name">anchor</tt> <tt class="py-op">=</tt> <tt class="py-string">'center'</tt><tt class="py-op">,</tt> </tt>
+<a name="L1963"></a><tt class="py-lineno">1963</tt>  <tt class="py-line">                                                 <tt id="link-310" class="py-name"><a title="VisionEgg.Core.Screen.size" class="py-name" href="#" onclick="return doclink('link-310', 'size', 'link-15');">size</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt id="link-311" class="py-name"><a title="VisionEgg.Core.Screen [...]
+<a name="L1964"></a><tt class="py-lineno">1964</tt>  <tt class="py-line">                                                 <tt class="py-name">internal_format</tt> <tt class="py-op">=</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_RGBA</tt><tt class="py-op">,</tt> </tt>
+<a name="L1965"></a><tt class="py-lineno">1965</tt>  <tt class="py-line">                                                 <tt class="py-name">mipmaps_enabled</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt><tt class="py-op">,</tt> </tt>
+<a name="L1966"></a><tt class="py-lineno">1966</tt>  <tt class="py-line">                                                 <tt class="py-name">texture_min_filter</tt> <tt class="py-op">=</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_NEAREST</tt><tt class="py-op">,</tt> </tt>
+<a name="L1967"></a><tt class="py-lineno">1967</tt>  <tt class="py-line">                                                 <tt class="py-name">texture_mag_filter</tt> <tt class="py-op">=</tt> <tt class="py-name">gl</tt><tt class="py-op">.</tt><tt class="py-name">GL_NEAREST</tt><tt class="py-op">,</tt> </tt>
+<a name="L1968"></a><tt class="py-lineno">1968</tt>  <tt class="py-line">                                                 <tt class="py-op">)</tt> </tt>
+</div><a name="FixationCross.draw"></a><div id="FixationCross.draw-def"><a name="L1969"></a><tt class="py-lineno">1969</tt> <a class="py-toggle" href="#" id="FixationCross.draw-toggle" onclick="return toggle('FixationCross.draw');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.Textures.FixationCross-class.html#draw">draw</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="FixationCross.draw-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="FixationCross.draw-expanded"><a name="L1970"></a><tt class="py-lineno">1970</tt>  <tt class="py-line">        <tt class="py-name">contained</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">texture_stimulus</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt> <tt class="py-comment">#shorthand</tt> </tt>
+<a name="L1971"></a><tt class="py-lineno">1971</tt>  <tt class="py-line">        <tt class="py-name">my</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt> <tt class="py-comment">#shorthand</tt> </tt>
+<a name="L1972"></a><tt class="py-lineno">1972</tt>  <tt class="py-line">        <tt class="py-name">contained</tt><tt class="py-op">.</tt><tt class="py-name">position</tt> <tt class="py-op">=</tt> <tt class="py-name">my</tt><tt class="py-op">.</tt><tt class="py-name">position</tt> </tt>
+<a name="L1973"></a><tt class="py-lineno">1973</tt>  <tt class="py-line">        <tt class="py-name">contained</tt><tt class="py-op">.</tt><tt id="link-312" class="py-name"><a title="VisionEgg.Core.Screen.size" class="py-name" href="#" onclick="return doclink('link-312', 'size', 'link-15');">size</a></tt> <tt class="py-op">=</tt> <tt class="py-name">my</tt><tt class="py-op">.</tt><tt id="link-313" class="py-name"><a title="VisionEgg.Core.Screen.size" class="py-name" href="#" onclick="ret [...]
+<a name="L1974"></a><tt class="py-lineno">1974</tt>  <tt class="py-line">        <tt class="py-name">contained</tt><tt class="py-op">.</tt><tt class="py-name">on</tt> <tt class="py-op">=</tt> <tt class="py-name">my</tt><tt class="py-op">.</tt><tt class="py-name">on</tt> </tt>
+<a name="L1975"></a><tt class="py-lineno">1975</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">texture_stimulus</tt><tt class="py-op">.</tt><tt id="link-314" class="py-name" targets="Method VisionEgg.Core.FixationSpot.draw()=VisionEgg.Core.FixationSpot-class.html#draw,Method VisionEgg.Core.Stimulus.draw()=VisionEgg.Core.Stimulus-class.html#draw,Method VisionEgg.Core.Viewport.draw()=VisionEgg.Core.Viewport-class.html#draw,Method V [...]
+VisionEgg.Core.Stimulus.draw
+VisionEgg.Core.Viewport.draw
+VisionEgg.Dots.DotArea2D.draw
+VisionEgg.Gratings.SinGrating2D.draw
+VisionEgg.Gratings.SinGrating3D.draw
+VisionEgg.MoreStimuli.Arrow.draw
+VisionEgg.MoreStimuli.FilledCircle.draw
+VisionEgg.MoreStimuli.Rectangle3D.draw
+VisionEgg.MoreStimuli.Target2D.draw
+VisionEgg.SphereMap.AzElGrid.draw
+VisionEgg.SphereMap.SphereGrating.draw
+VisionEgg.SphereMap.SphereMap.draw
+VisionEgg.SphereMap.SphereWindow.draw
+VisionEgg.Text.BitmapText.draw
+VisionEgg.Text.StrokeText.draw
+VisionEgg.Text.Text.draw
+VisionEgg.Textures.FixationCross.draw
+VisionEgg.Textures.SpinningDrum.draw
+VisionEgg.Textures.TextureStimulus.draw
+VisionEgg.Textures.TextureStimulus3D.draw
+VisionEgg.WrappedText.WrappedText.draw" class="py-name" href="#" onclick="return doclink('link-314', 'draw', 'link-314');">draw</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L1976"></a><tt class="py-lineno">1976</tt>  <tt class="py-line"> </tt>
+<a name="TextureTooLargeError"></a><div id="TextureTooLargeError-def"><a name="L1977"></a><tt class="py-lineno">1977</tt> <a class="py-toggle" href="#" id="TextureTooLargeError-toggle" onclick="return toggle('TextureTooLargeError');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.Textures.TextureTooLargeError-class.html">TextureTooLargeError</a><tt class="py-op">(</tt> <tt class="py-base-class">RuntimeError</tt> <tt class="py-op">)</tt>< [...]
+</div><div id="TextureTooLargeError-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="TextureTooLargeError-expanded"><a name="L1978"></a><tt class="py-lineno">1978</tt>  <tt class="py-line">    <tt class="py-keyword">pass</tt> </tt>
+</div><a name="L1979"></a><tt class="py-lineno">1979</tt>  <tt class="py-line"> </tt><script type="text/javascript">
+<!--
+expandto(location.href);
+// -->
+</script>
+</pre>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:50 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.Textures.FixationCross-class.html b/doc/reference/html/VisionEgg.Textures.FixationCross-class.html
new file mode 100644
index 0000000..c090724
--- /dev/null
+++ b/doc/reference/html/VisionEgg.Textures.FixationCross-class.html
@@ -0,0 +1,377 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.Textures.FixationCross</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.Textures-module.html">Module Textures</a> ::
+        Class FixationCross
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.Textures.FixationCross-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class FixationCross</h1><span class="codelink"><a href="VisionEgg.Textures-pysrc.html#FixationCross">source code</a></span><br /><br />
+<pre class="base-tree">
+         object --+        
+                  |        
+<a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a> --+    
+                      |    
+          <a href="VisionEgg.Core.Stimulus-class.html">Core.Stimulus</a> --+
+                          |
+                         <strong class="uidshort">FixationCross</strong>
+</pre>
+
+<hr />
+<pre class="literalblock">
+Cross useful for fixation point.
+
+Parameters
+==========
+on       -- (Boolean)
+            Default: True
+position -- (Sequence2 of Real)
+            Default: (320, 240)
+size     -- (Sequence2 of Real)
+            Default: (64, 64)
+
+Constant Parameters
+===================
+texture_size -- (Sequence2 of Real)
+                Default: (64, 64)
+
+</pre><br /><br />
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.Textures.FixationCross-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">**kw</span>)</span><br />
+      Instantiate and get ready to draw.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.Textures-pysrc.html#FixationCross.__init__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.Textures.FixationCross-class.html#draw" class="summary-sig-name">draw</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      Draw the stimulus.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.Textures-pysrc.html#FixationCross.draw">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a></code></b>:
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__getstate__">__getstate__</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__setstate__">__setstate__</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#get_specified_type">get_specified_type</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#is_constant_parameter">is_constant_parameter</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#set">set</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#verify_parameters">verify_parameters</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__delattr__</code>,
+      <code>__getattribute__</code>,
+      <code>__hash__</code>,
+      <code>__new__</code>,
+      <code>__reduce__</code>,
+      <code>__reduce_ex__</code>,
+      <code>__repr__</code>,
+      <code>__setattr__</code>,
+      <code>__str__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Class Variables</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.Textures.FixationCross-class.html#parameters_and_defaults" class="summary-name">parameters_and_defaults</a> = <code title="{'on':(True, ve_types.Boolean), 'position':((320, 240), ve_types.Seque\
+nce2(ve_types.Real)), 'size':((64, 64), ve_types.Sequence2(ve_types.Re\
+al)),}">{'on':(True, ve_types.Boolean), 'pos<code class="variable-ellipsis">...</code></code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.Textures.FixationCross-class.html#constant_parameters_and_defaults" class="summary-name">constant_parameters_and_defaults</a> = <code title="{'texture_size':((64, 64), ve_types.Sequence2(ve_types.Real)),}">{'texture_size':((64, 64), <code class="variable-ellipsis">...</code></code>
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a></code></b>:
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__safe_for_unpickling__">__safe_for_unpickling__</a></code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Properties</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__class__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Method Details</span></td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">**kw</span>)</span>
+    <br /><em class="fname">(Constructor)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.Textures-pysrc.html#FixationCross.__init__">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Instantiate and get ready to draw.
+
+Set parameter values and create anything needed to draw the
+stimulus including OpenGL state variables such display lists
+and texture objects.
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.Core.Stimulus-class.html#__init__">Core.Stimulus.__init__</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="draw"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">draw</span>(<span class="sig-arg">self</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.Textures-pysrc.html#FixationCross.draw">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Draw the stimulus. (Called by Viewport instance.)
+
+This method is called every frame.  This method actually
+performs the OpenGL calls to draw the stimulus.
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.Core.Stimulus-class.html#draw">Core.Stimulus.draw</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== CLASS VARIABLE DETAILS ==================== -->
+<a name="section-ClassVariableDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Class Variable Details</span></td>
+</tr>
+</table>
+<a name="parameters_and_defaults"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">parameters_and_defaults</h3>
+  
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+{'on':(True, ve_types.Boolean), 'position':((320, 240), ve_types.Seque<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+nce2(ve_types.Real)), 'size':((64, 64), ve_types.Sequence2(ve_types.Re<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+al)),}
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="constant_parameters_and_defaults"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">constant_parameters_and_defaults</h3>
+  
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+{'texture_size':((64, 64), ve_types.Sequence2(ve_types.Real)),}
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:47 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.Textures.Mask2D-class.html b/doc/reference/html/VisionEgg.Textures.Mask2D-class.html
new file mode 100644
index 0000000..34322d0
--- /dev/null
+++ b/doc/reference/html/VisionEgg.Textures.Mask2D-class.html
@@ -0,0 +1,350 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.Textures.Mask2D</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.Textures-module.html">Module Textures</a> ::
+        Class Mask2D
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.Textures.Mask2D-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class Mask2D</h1><span class="codelink"><a href="VisionEgg.Textures-pysrc.html#Mask2D">source code</a></span><br /><br />
+<pre class="base-tree">
+         object --+    
+                  |    
+<a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a> --+
+                      |
+                     <strong class="uidshort">Mask2D</strong>
+</pre>
+
+<hr />
+<pre class="literalblock">
+A mask for windowing a portion of a texture.
+
+Thanks to the author, Jon Peirce, of the AlphaStim class from the
+PsychoPy package from which the idea to do this came.
+
+Constant Parameters
+===================
+function         -- 'gaussian' or 'circle' (String)
+                    Default: gaussian
+num_samples      -- size of mask texture data (units: number of texels) (Sequence2 of Real)
+                    Default: (256, 256)
+radius_parameter -- radius for circle, sigma for gaussian (Real)
+                    Default: 25.0
+
+</pre><br /><br />
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.Textures.Mask2D-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">**kw</span>)</span><br />
+      Create self.parameters and set values.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.Textures-pysrc.html#Mask2D.__init__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="draw_masked_quad_3d"></a><span class="summary-sig-name">draw_masked_quad_3d</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">lt</span>,
+        <span class="summary-sig-arg">rt</span>,
+        <span class="summary-sig-arg">bt</span>,
+        <span class="summary-sig-arg">tt</span>,
+        <span class="summary-sig-arg">v1</span>,
+        <span class="summary-sig-arg">v2</span>,
+        <span class="summary-sig-arg">v3</span>,
+        <span class="summary-sig-arg">v4</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.Textures-pysrc.html#Mask2D.draw_masked_quad_3d">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="draw_masked_quad"></a><span class="summary-sig-name">draw_masked_quad</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">lt</span>,
+        <span class="summary-sig-arg">rt</span>,
+        <span class="summary-sig-arg">bt</span>,
+        <span class="summary-sig-arg">tt</span>,
+        <span class="summary-sig-arg">le</span>,
+        <span class="summary-sig-arg">re</span>,
+        <span class="summary-sig-arg">be</span>,
+        <span class="summary-sig-arg">te</span>,
+        <span class="summary-sig-arg">depth</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.Textures-pysrc.html#Mask2D.draw_masked_quad">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a></code></b>:
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__getstate__">__getstate__</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__setstate__">__setstate__</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#get_specified_type">get_specified_type</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#is_constant_parameter">is_constant_parameter</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#set">set</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#verify_parameters">verify_parameters</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__delattr__</code>,
+      <code>__getattribute__</code>,
+      <code>__hash__</code>,
+      <code>__new__</code>,
+      <code>__reduce__</code>,
+      <code>__reduce_ex__</code>,
+      <code>__repr__</code>,
+      <code>__setattr__</code>,
+      <code>__str__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Class Variables</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.Textures.Mask2D-class.html#constant_parameters_and_defaults" class="summary-name">constant_parameters_and_defaults</a> = <code title="{'function':('gaussian', ve_types.String, "'gaussian' or 'circle'"), '\
+radius_parameter':(25.0, ve_types.Real, "radius for circle, sigma for \
+gaussian"), 'num_samples':((256, 256), ve_types.Sequence2(ve_types.Rea\
+l), "size of mask texture data (units: number of texels)"),}">{'function':('gaussian', ve<code class="variable-ellipsis">...</code></code>
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a></code></b>:
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__safe_for_unpickling__">__safe_for_unpickling__</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#parameters_and_defaults">parameters_and_defaults</a></code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Properties</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__class__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Method Details</span></td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">**kw</span>)</span>
+    <br /><em class="fname">(Constructor)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.Textures-pysrc.html#Mask2D.__init__">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Create self.parameters and set values.
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.ClassWithParameters-class.html#__init__">ClassWithParameters.__init__</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== CLASS VARIABLE DETAILS ==================== -->
+<a name="section-ClassVariableDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Class Variable Details</span></td>
+</tr>
+</table>
+<a name="constant_parameters_and_defaults"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">constant_parameters_and_defaults</h3>
+  
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+{'function':('gaussian', ve_types.String, "'gaussian' or 'circle'"), '<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+radius_parameter':(25.0, ve_types.Real, "radius for circle, sigma for <span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+gaussian"), 'num_samples':((256, 256), ve_types.Sequence2(ve_types.Rea<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+l), "size of mask texture data (units: number of texels)"),}
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:47 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.Textures.SpinningDrum-class.html b/doc/reference/html/VisionEgg.Textures.SpinningDrum-class.html
new file mode 100644
index 0000000..523291d
--- /dev/null
+++ b/doc/reference/html/VisionEgg.Textures.SpinningDrum-class.html
@@ -0,0 +1,415 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.Textures.SpinningDrum</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.Textures-module.html">Module Textures</a> ::
+        Class SpinningDrum
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.Textures.SpinningDrum-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class SpinningDrum</h1><span class="codelink"><a href="VisionEgg.Textures-pysrc.html#SpinningDrum">source code</a></span><br /><br />
+<pre class="base-tree">
+         object --+            
+                  |            
+<a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a> --+        
+                      |        
+          <a href="VisionEgg.Core.Stimulus-class.html">Core.Stimulus</a> --+    
+                          |    
+   <a href="VisionEgg.Textures.TextureStimulusBaseClass-class.html">TextureStimulusBaseClass</a> --+
+                              |
+                             <strong class="uidshort">SpinningDrum</strong>
+</pre>
+
+<hr />
+<pre class="literalblock">
+Panoramic image texture mapped onto flat rectangle or 3D cylinder.
+
+
+Parameters
+==========
+anchor                -- only used when flat: same as anchor parameter of TextureStimulus (String)
+                         Default: center
+angular_position      -- may be best to clamp in range [0.0,360.0] (Real)
+                         Default: 0.0
+contrast              -- (Real)
+                         Default: 1.0
+drum_center_azimuth   -- changes orientation of drum in space (Real)
+                         Default: 0.0
+drum_center_elevation -- changes orientation of drum in space (Real)
+                         Default: 0.0
+flat                  -- toggles flat vs. cylinder (Boolean)
+                         Default: False
+flat_size             -- defaults to texture data size (units: eye coordinates) (Sequence2 of Real)
+                         Default: (determined at runtime)
+flip_image            -- toggles normal vs. horizonally flipped image (Boolean)
+                         Default: False
+height                -- height of cyliner, automatically set by texel aspect ratio if < 0. (Real)
+                         Default: -1
+num_sides             -- (UnsignedInteger)
+                         Default: 50
+on                    -- (Boolean)
+                         Default: True
+orientation           -- 0=right, 90=up (Real)
+                         Default: 0.0
+position              -- 3D: position of drum center, 2D (flat): same as position parameter for TextureStimulus (AnyOf(Sequence2 of Real or Sequence3 of Real))
+                         Default: (0.0, 0.0, 0.0)
+radius                -- radius if cylinder (not used if flat) (Real)
+                         Default: 1.0
+texture               -- source of texture data (Instance of <class 'VisionEgg.Textures.Texture'>)
+                         Inherited from TextureStimulusBaseClass
+                         Default: (determined at runtime)
+texture_mag_filter    -- OpenGL filter enum (Integer)
+                         Inherited from TextureStimulusBaseClass
+                         Default: GL_LINEAR (9729)
+texture_min_filter    -- OpenGL filter enum (Integer)
+                         Inherited from TextureStimulusBaseClass
+                         Default: (GL enum determined at runtime)
+texture_wrap_s        -- OpenGL texture wrap enum (Integer)
+                         Inherited from TextureStimulusBaseClass
+                         Default: (GL enum determined at runtime)
+texture_wrap_t        -- OpenGL texture wrap enum (Integer)
+                         Inherited from TextureStimulusBaseClass
+                         Default: (GL enum determined at runtime)
+
+Constant Parameters
+===================
+internal_format   -- format with which OpenGL uses texture data (OpenGL data type enum) (Integer)
+                     Default: GL_RGB (6407)
+mipmaps_enabled   -- Are mipmaps enabled? (Boolean)
+                     Default: True
+shrink_texture_ok -- Allow automatic shrinking of texture if too big? (Boolean)
+                     Default: False
+
+</pre><br /><br />
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.Textures.SpinningDrum-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">**kw</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.Textures-pysrc.html#SpinningDrum.__init__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.Textures.SpinningDrum-class.html#draw" class="summary-sig-name">draw</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      Redraw the stimulus on every frame.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.Textures-pysrc.html#SpinningDrum.draw">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="rebuild_display_list"></a><span class="summary-sig-name">rebuild_display_list</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.Textures-pysrc.html#SpinningDrum.rebuild_display_list">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a></code></b>:
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__getstate__">__getstate__</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__setstate__">__setstate__</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#get_specified_type">get_specified_type</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#is_constant_parameter">is_constant_parameter</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#set">set</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#verify_parameters">verify_parameters</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__delattr__</code>,
+      <code>__getattribute__</code>,
+      <code>__hash__</code>,
+      <code>__new__</code>,
+      <code>__reduce__</code>,
+      <code>__reduce_ex__</code>,
+      <code>__repr__</code>,
+      <code>__setattr__</code>,
+      <code>__str__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Class Variables</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.Textures.SpinningDrum-class.html#parameters_and_defaults" class="summary-name">parameters_and_defaults</a> = <code title="{'on':(True, ve_types.Boolean), 'height':(-1, ve_types.Real, 'height o\
+f cyliner, automatically set by texel aspect ratio if < 0.',), 'num_si\
+des':(50, ve_types.UnsignedInteger), 'angular_position':(0.0, ve_types\
+.Real, 'may be best to clamp in range [0.0,360.0]'), 'contrast':(1.0, \
+ve_types.Real), 'flat':(False, ve_types.Boolean, 'toggles flat vs. cyl\
+inder'), 'flat_size':(None, ve_types.Sequence2(ve_types.Real), "defaul\
+ts to texture data size (units: eye coordinates)"), 'flip_image':(Fals\
+e, ve_types.Boolean, 'toggles normal vs. horizonally flipped image'), \
+...">{'on':(True, ve_types.Boolean), 'hei<code class="variable-ellipsis">...</code></code>
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.Textures.TextureStimulusBaseClass-class.html">TextureStimulusBaseClass</a></code></b>:
+      <code><a href="VisionEgg.Textures.TextureStimulusBaseClass-class.html#constant_parameters_and_defaults">constant_parameters_and_defaults</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a></code></b>:
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__safe_for_unpickling__">__safe_for_unpickling__</a></code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Properties</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__class__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Method Details</span></td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">**kw</span>)</span>
+    <br /><em class="fname">(Constructor)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.Textures-pysrc.html#SpinningDrum.__init__">source code</a></span> 
+    </td>
+  </table>
+  
+  
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.Textures.TextureStimulusBaseClass-class.html#__init__">TextureStimulusBaseClass.__init__</a>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="draw"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">draw</span>(<span class="sig-arg">self</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.Textures-pysrc.html#SpinningDrum.draw">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Redraw the stimulus on every frame.
+        
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.Core.Stimulus-class.html#draw">Core.Stimulus.draw</a>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== CLASS VARIABLE DETAILS ==================== -->
+<a name="section-ClassVariableDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Class Variable Details</span></td>
+</tr>
+</table>
+<a name="parameters_and_defaults"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">parameters_and_defaults</h3>
+  
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+{'on':(True, ve_types.Boolean), 'height':(-1, ve_types.Real, 'height o<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+f cyliner, automatically set by texel aspect ratio if < 0.',), 'num_si<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+des':(50, ve_types.UnsignedInteger), 'angular_position':(0.0, ve_types<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+.Real, 'may be best to clamp in range [0.0,360.0]'), 'contrast':(1.0, <span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+ve_types.Real), 'flat':(False, ve_types.Boolean, 'toggles flat vs. cyl<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+inder'), 'flat_size':(None, ve_types.Sequence2(ve_types.Real), "defaul<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+ts to texture data size (units: eye coordinates)"), 'flip_image':(Fals<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+e, ve_types.Boolean, 'toggles normal vs. horizonally flipped image'), <span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+<code class="variable-ellipsis">...</code>
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:47 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.Textures.Texture-class.html b/doc/reference/html/VisionEgg.Textures.Texture-class.html
new file mode 100644
index 0000000..b5192f6
--- /dev/null
+++ b/doc/reference/html/VisionEgg.Textures.Texture-class.html
@@ -0,0 +1,461 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.Textures.Texture</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.Textures-module.html">Module Textures</a> ::
+        Class Texture
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.Textures.Texture-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class Texture</h1><span class="codelink"><a href="VisionEgg.Textures-pysrc.html#Texture">source code</a></span><br /><br />
+<pre class="base-tree">
+object --+
+         |
+        <strong class="uidshort">Texture</strong>
+</pre>
+
+<hr />
+<pre class="literalblock">
+A 2 dimensional texture.
+
+The pixel data can come from an image file, an image file stream,
+an instance of Image from the Python Imaging Library, a numpy
+array, or None.
+
+If the data is a numpy array, floating point numbers are assumed
+to be in the range 0.0 to 1.0, and integers are assumed to be in
+the range 0 to 255.  The first index is the row (y position), the
+second index is the column (x position), and if it's RGB or RGBA
+data, the third index specifies the color band.  Thus, if the
+texel data was 640 pixels wide by 480 pixels tall, the array would
+have shape (480,640) for luminance information, (480,640,3) for
+RGB information, and (480,640,4) for RGBA information.
+
+The 2D texture data is not sent to OpenGL (video texture memory)
+until the load() method is called.  The unload() method may be
+used to remove the data from OpenGL.
+
+A reference to the original image data is maintained.
+
+</pre><br /><br />
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.Textures.Texture-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">texels</span>=<span class="summary-sig-default">None</span>,
+        <span class="summary-sig-arg">size</span>=<span class="summary-sig-default">None</span>)</span><br />
+      Creates instance of Texture object.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.Textures-pysrc.html#Texture.__init__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.Textures.Texture-class.html#update" class="summary-sig-name">update</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      Update texture data
+
+This method does nothing, but may be overriden in classes that
+need to update their texture data whenever drawn.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.Textures-pysrc.html#Texture.update">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="make_half_size"></a><span class="summary-sig-name">make_half_size</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.Textures-pysrc.html#Texture.make_half_size">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.Textures.Texture-class.html#unload" class="summary-sig-name">unload</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      Unload texture data from video texture memory.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.Textures-pysrc.html#Texture.unload">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="get_texels_as_image"></a><span class="summary-sig-name">get_texels_as_image</span>(<span class="summary-sig-arg">self</span>)</span><br />
+      Return texel data as PIL image</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.Textures-pysrc.html#Texture.get_texels_as_image">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="get_pixels_as_image"></a><span class="summary-sig-name">get_pixels_as_image</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.Textures-pysrc.html#Texture.get_pixels_as_image">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.Textures.Texture-class.html#load" class="summary-sig-name">load</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">texture_object</span>,
+        <span class="summary-sig-arg">build_mipmaps</span>=<span class="summary-sig-default">True</span>,
+        <span class="summary-sig-arg">rescale_original_to_fill_texture_object</span>=<span class="summary-sig-default">False</span>,
+        <span class="summary-sig-arg">internal_format</span>=<span class="summary-sig-default">gl.GL_RGB</span>)</span><br />
+      Load texture data to video texture memory.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.Textures-pysrc.html#Texture.load">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="get_texture_object"></a><span class="summary-sig-name">get_texture_object</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.Textures-pysrc.html#Texture.get_texture_object">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__delattr__</code>,
+      <code>__getattribute__</code>,
+      <code>__hash__</code>,
+      <code>__new__</code>,
+      <code>__reduce__</code>,
+      <code>__reduce_ex__</code>,
+      <code>__repr__</code>,
+      <code>__setattr__</code>,
+      <code>__str__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Properties</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__class__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Method Details</span></td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">texels</span>=<span class="sig-default">None</span>,
+        <span class="sig-arg">size</span>=<span class="sig-default">None</span>)</span>
+    <br /><em class="fname">(Constructor)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.Textures-pysrc.html#Texture.__init__">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Creates instance of Texture object.
+
+texels -- Texture data. If not specified, a blank white
+          texture is created.
+size -- If a tuple, force size of texture data if possible,
+        raising an exception if not. If None, has no effect.
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      object.__init__
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="update"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">update</span>(<span class="sig-arg">self</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.Textures-pysrc.html#Texture.update">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Update texture data
+
+This method does nothing, but may be overriden in classes that
+need to update their texture data whenever drawn.
+
+It it called by the draw() method of any stimuli using
+textures when its texture object is active, so it can safely
+use put_sub_image() to manipulate its own texture data.
+
+</pre>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<a name="unload"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">unload</span>(<span class="sig-arg">self</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.Textures-pysrc.html#Texture.unload">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Unload texture data from video texture memory.
+
+This only removes data from the video texture memory if there
+are no other references to the TextureObject instance.  To
+ensure this, all references to the texture_object argument
+passed to the load() method should be deleted.
+
+</pre>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<a name="load"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">load</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">texture_object</span>,
+        <span class="sig-arg">build_mipmaps</span>=<span class="sig-default">True</span>,
+        <span class="sig-arg">rescale_original_to_fill_texture_object</span>=<span class="sig-default">False</span>,
+        <span class="sig-arg">internal_format</span>=<span class="sig-default">gl.GL_RGB</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.Textures-pysrc.html#Texture.load">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Load texture data to video texture memory.
+
+This will cause the texture data to become resident in OpenGL
+video texture memory, enabling fast drawing.
+
+The texture_object argument is used to specify an instance of
+the TextureObject class, which is a wrapper for the OpenGL
+texture object holding the resident texture.
+
+To remove a texture from OpenGL's resident textures:       TextureObject passed as the texture_object argument and 2)
+call the unload() method
+
+</pre>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:47 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.Textures.TextureFromFile-class.html b/doc/reference/html/VisionEgg.Textures.TextureFromFile-class.html
new file mode 100644
index 0000000..23fcfb0
--- /dev/null
+++ b/doc/reference/html/VisionEgg.Textures.TextureFromFile-class.html
@@ -0,0 +1,237 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.Textures.TextureFromFile</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.Textures-module.html">Module Textures</a> ::
+        Class TextureFromFile
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.Textures.TextureFromFile-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class TextureFromFile</h1><span class="codelink"><a href="VisionEgg.Textures-pysrc.html#TextureFromFile">source code</a></span><br /><br />
+<pre class="base-tree">
+object --+    
+         |    
+   <a href="VisionEgg.Textures.Texture-class.html">Texture</a> --+
+             |
+            <strong class="uidshort">TextureFromFile</strong>
+</pre>
+
+<hr />
+<pre class="literalblock">
+DEPRECATED.
+
+</pre><br /><br />
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.Textures.TextureFromFile-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">filename</span>)</span><br />
+      Creates instance of Texture object.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.Textures-pysrc.html#TextureFromFile.__init__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.Textures.Texture-class.html">Texture</a></code></b>:
+      <code><a href="VisionEgg.Textures.Texture-class.html#get_pixels_as_image">get_pixels_as_image</a></code>,
+      <code><a href="VisionEgg.Textures.Texture-class.html#get_texels_as_image">get_texels_as_image</a></code>,
+      <code><a href="VisionEgg.Textures.Texture-class.html#get_texture_object">get_texture_object</a></code>,
+      <code><a href="VisionEgg.Textures.Texture-class.html#load">load</a></code>,
+      <code><a href="VisionEgg.Textures.Texture-class.html#make_half_size">make_half_size</a></code>,
+      <code><a href="VisionEgg.Textures.Texture-class.html#unload">unload</a></code>,
+      <code><a href="VisionEgg.Textures.Texture-class.html#update">update</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__delattr__</code>,
+      <code>__getattribute__</code>,
+      <code>__hash__</code>,
+      <code>__new__</code>,
+      <code>__reduce__</code>,
+      <code>__reduce_ex__</code>,
+      <code>__repr__</code>,
+      <code>__setattr__</code>,
+      <code>__str__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Properties</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__class__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Method Details</span></td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">filename</span>)</span>
+    <br /><em class="fname">(Constructor)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.Textures-pysrc.html#TextureFromFile.__init__">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Creates instance of Texture object.
+
+texels -- Texture data. If not specified, a blank white
+          texture is created.
+size -- If a tuple, force size of texture data if possible,
+        raising an exception if not. If None, has no effect.
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.Textures.Texture-class.html#__init__">Texture.__init__</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:47 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.Textures.TextureObject-class.html b/doc/reference/html/VisionEgg.Textures.TextureObject-class.html
new file mode 100644
index 0000000..6311d81
--- /dev/null
+++ b/doc/reference/html/VisionEgg.Textures.TextureObject-class.html
@@ -0,0 +1,623 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.Textures.TextureObject</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.Textures-module.html">Module Textures</a> ::
+        Class TextureObject
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.Textures.TextureObject-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class TextureObject</h1><span class="codelink"><a href="VisionEgg.Textures-pysrc.html#TextureObject">source code</a></span><br /><br />
+<pre class="base-tree">
+object --+
+         |
+        <strong class="uidshort">TextureObject</strong>
+</pre>
+
+<hr />
+<pre class="literalblock">
+Texture data in OpenGL. Potentially resident in video texture memory.
+
+This class encapsulates the state variables in OpenGL texture objects.  Do not
+change attribute values directly.  Use the methods provided instead.
+
+</pre><br /><br />
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.Textures.TextureObject-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">dimensions</span>=<span class="summary-sig-default">2</span>)</span><br />
+      x.__init__(...) initializes x; see x.__class__.__doc__ for signature</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.Textures-pysrc.html#TextureObject.__init__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__del__"></a><span class="summary-sig-name">__del__</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.Textures-pysrc.html#TextureObject.__del__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="is_resident"></a><span class="summary-sig-name">is_resident</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.Textures-pysrc.html#TextureObject.is_resident">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="set_priority"></a><span class="summary-sig-name">set_priority</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">priority</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.Textures-pysrc.html#TextureObject.set_priority">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="set_min_filter"></a><span class="summary-sig-name">set_min_filter</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">filter</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.Textures-pysrc.html#TextureObject.set_min_filter">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="set_mag_filter"></a><span class="summary-sig-name">set_mag_filter</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">filter</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.Textures-pysrc.html#TextureObject.set_mag_filter">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="set_wrap_mode_s"></a><span class="summary-sig-name">set_wrap_mode_s</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">wrap_mode</span>)</span><br />
+      Set to GL_CLAMP, GL_CLAMP_TO_EDGE, GL_REPEAT, or GL_CLAMP_TO_BORDER</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.Textures-pysrc.html#TextureObject.set_wrap_mode_s">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="set_wrap_mode_t"></a><span class="summary-sig-name">set_wrap_mode_t</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">wrap_mode</span>)</span><br />
+      Set to GL_CLAMP, GL_CLAMP_TO_EDGE, GL_REPEAT, or GL_CLAMP_TO_BORDER</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.Textures-pysrc.html#TextureObject.set_wrap_mode_t">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="set_wrap_mode_r"></a><span class="summary-sig-name">set_wrap_mode_r</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">wrap_mode</span>)</span><br />
+      Set to GL_CLAMP, GL_CLAMP_TO_EDGE, GL_REPEAT, or GL_CLAMP_TO_BORDER</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.Textures-pysrc.html#TextureObject.set_wrap_mode_r">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="set_border_color"></a><span class="summary-sig-name">set_border_color</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">border_color</span>)</span><br />
+      Set to a sequence of 4 floats in the range 0.0 to 1.0</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.Textures-pysrc.html#TextureObject.set_border_color">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.Textures.TextureObject-class.html#put_new_image" class="summary-sig-name">put_new_image</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">texel_data</span>,
+        <span class="summary-sig-arg">mipmap_level</span>=<span class="summary-sig-default">0</span>,
+        <span class="summary-sig-arg">border</span>=<span class="summary-sig-default">0</span>,
+        <span class="summary-sig-arg">check_opengl_errors</span>=<span class="summary-sig-default">True</span>,
+        <span class="summary-sig-arg">internal_format</span>=<span class="summary-sig-default">gl.GL_RGB</span>,
+        <span class="summary-sig-arg">data_format</span>=<span class="summary-sig-default">None</span>,
+        <span class="summary-sig-arg">data_type</span>=<span class="summary-sig-default">None</span>,
+        <span class="summary-sig-arg">cube_side</span>=<span class="summary-sig-default">None</span>)</span><br />
+      Put numpy array or PIL Image into OpenGL as texture data.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.Textures-pysrc.html#TextureObject.put_new_image">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="put_new_image_build_mipmaps"></a><span class="summary-sig-name">put_new_image_build_mipmaps</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">texel_data</span>,
+        <span class="summary-sig-arg">internal_format</span>=<span class="summary-sig-default">gl.GL_RGB</span>,
+        <span class="summary-sig-arg">data_format</span>=<span class="summary-sig-default">None</span>,
+        <span class="summary-sig-arg">data_type</span>=<span class="summary-sig-default">None</span>,
+        <span class="summary-sig-arg">cube_side</span>=<span class="summary-sig-default">None</span>)</span><br />
+      Similar to put_new_image(), but builds mipmaps.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.Textures-pysrc.html#TextureObject.put_new_image_build_mipmaps">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.Textures.TextureObject-class.html#put_sub_image" class="summary-sig-name">put_sub_image</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">texel_data</span>,
+        <span class="summary-sig-arg">mipmap_level</span>=<span class="summary-sig-default">0</span>,
+        <span class="summary-sig-arg">offset_tuple</span>=<span class="summary-sig-default">None</span>,
+        <span class="summary-sig-arg">data_format</span>=<span class="summary-sig-default">None</span>,
+        <span class="summary-sig-arg">data_type</span>=<span class="summary-sig-default">None</span>,
+        <span class="summary-sig-arg">cube_side</span>=<span class="summary-sig-default">None</span>)</span><br />
+      Replace all or part of a texture object.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.Textures-pysrc.html#TextureObject.put_sub_image">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.Textures.TextureObject-class.html#put_new_framebuffer" class="summary-sig-name">put_new_framebuffer</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">buffer</span>=<span class="summary-sig-default">'back'</span>,
+        <span class="summary-sig-arg">mipmap_level</span>=<span class="summary-sig-default">0</span>,
+        <span class="summary-sig-arg">border</span>=<span class="summary-sig-default">0</span>,
+        <span class="summary-sig-arg">framebuffer_lowerleft</span>=<span class="summary-sig-default">None</span>,
+        <span class="summary-sig-arg">size</span>=<span class="summary-sig-default">None</span>,
+        <span class="summary-sig-arg">internal_format</span>=<span class="summary-sig-default">gl.GL_RGB</span>,
+        <span class="summary-sig-arg">cube_side</span>=<span class="summary-sig-default">None</span>)</span><br />
+      Replace texture object with the framebuffer contents.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.Textures-pysrc.html#TextureObject.put_new_framebuffer">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__delattr__</code>,
+      <code>__getattribute__</code>,
+      <code>__hash__</code>,
+      <code>__new__</code>,
+      <code>__reduce__</code>,
+      <code>__reduce_ex__</code>,
+      <code>__repr__</code>,
+      <code>__setattr__</code>,
+      <code>__str__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Properties</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__class__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Method Details</span></td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">dimensions</span>=<span class="sig-default">2</span>)</span>
+    <br /><em class="fname">(Constructor)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.Textures-pysrc.html#TextureObject.__init__">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+x.__init__(...) initializes x; see x.__class__.__doc__ for signature
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      object.__init__
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="put_new_image"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">put_new_image</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">texel_data</span>,
+        <span class="sig-arg">mipmap_level</span>=<span class="sig-default">0</span>,
+        <span class="sig-arg">border</span>=<span class="sig-default">0</span>,
+        <span class="sig-arg">check_opengl_errors</span>=<span class="sig-default">True</span>,
+        <span class="sig-arg">internal_format</span>=<span class="sig-default">gl.GL_RGB</span>,
+        <span class="sig-arg">data_format</span>=<span class="sig-default">None</span>,
+        <span class="sig-arg">data_type</span>=<span class="sig-default">None</span>,
+        <span class="sig-arg">cube_side</span>=<span class="sig-default">None</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.Textures-pysrc.html#TextureObject.put_new_image">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Put numpy array or PIL Image into OpenGL as texture data.
+
+The texel_data parameter contains the texture data.  If it is
+a numpy array, it must be 1D, 2D, or 3D data in grayscale or
+color (RGB or RGBA).  Remember that OpenGL begins its textures
+from the lower left corner, so texel_data[0,:] = 1.0 would set
+the bottom line of the texture to white, while texel_data[:,0]
+= 1.0 would set the left line of the texture to white.
+
+The mipmap_level parameter specifies which of the texture
+object's mipmap arrays you are filling.
+
+The border parameter specifies the width of the border.
+
+The check_opengl_errors parameter turns on (more
+comprehensible) error messages when something goes wrong.  It
+also slows down performance a little bit.
+
+The internal_format parameter specifies the format in which
+the image data is stored on the video card.  See the OpenGL
+specification for all possible values.
+
+If the data_format parameter is None (the default), an attempt
+is made to guess data_format according to the following
+description. For numpy arrays: If texel_data.shape is equal
+to the dimensions of the texture object, texel_data is assumed
+to contain luminance (grayscale) information and data_format
+is set to GL_LUMINANCE.  If texel_data.shape is equal to one
+plus the dimensions of the texture object, texel_data is
+assumed to contain color information.  If texel_data.shape[-1]
+is 3, this is assumed to be RGB data and data_format is set to
+GL_RGB.  If, texel_data.shape[-1] is 4, this is assumed to be
+RGBA data and data_format is set to GL_RGBA. For PIL images:
+the "mode" attribute is queried.
+
+If the data_type parameter is None (the default), it is set to
+GL_UNSIGNED_BYTE. For numpy arrays: texel_data is (re)cast
+to UInt8 and, if it is a floating point type, values are
+assumed to be in the range 0.0-1.0 and are scaled to the range
+0-255.  If the data_type parameter is not None, the texel_data
+is not rescaled or recast.  Currently only GL_UNSIGNED_BYTE is
+supported. For PIL images: texel_data is used as unsigned
+bytes.  This is the usual format for common computer graphics
+files.
+
+</pre>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<a name="put_sub_image"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">put_sub_image</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">texel_data</span>,
+        <span class="sig-arg">mipmap_level</span>=<span class="sig-default">0</span>,
+        <span class="sig-arg">offset_tuple</span>=<span class="sig-default">None</span>,
+        <span class="sig-arg">data_format</span>=<span class="sig-default">None</span>,
+        <span class="sig-arg">data_type</span>=<span class="sig-default">None</span>,
+        <span class="sig-arg">cube_side</span>=<span class="sig-default">None</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.Textures-pysrc.html#TextureObject.put_sub_image">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Replace all or part of a texture object.
+
+This is faster that put_new_image(), and can be used to
+rapidly update textures.
+
+The offset_tuple parameter determines the lower left corner
+(for 2D textures) of your data in pixel units.  For example,
+(0,0) would be no offset and thus the new data would be placed
+in the lower left of the texture.
+
+For an explanation of most parameters, see the
+put_new_image() method.
+
+</pre>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<a name="put_new_framebuffer"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">put_new_framebuffer</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">buffer</span>=<span class="sig-default">'back'</span>,
+        <span class="sig-arg">mipmap_level</span>=<span class="sig-default">0</span>,
+        <span class="sig-arg">border</span>=<span class="sig-default">0</span>,
+        <span class="sig-arg">framebuffer_lowerleft</span>=<span class="sig-default">None</span>,
+        <span class="sig-arg">size</span>=<span class="sig-default">None</span>,
+        <span class="sig-arg">internal_format</span>=<span class="sig-default">gl.GL_RGB</span>,
+        <span class="sig-arg">cube_side</span>=<span class="sig-default">None</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.Textures-pysrc.html#TextureObject.put_new_framebuffer">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Replace texture object with the framebuffer contents.
+
+The framebuffer_lowerleft parameter determines the lower left
+corner of the framebuffer region from which to copy texel data
+in pixel units.  For example, (0,0) would be no offset and
+thus the new data would be placed from the lower left of the
+framebuffer.
+
+For an explanation of most parameters, see the
+put_new_image() method.
+
+</pre>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:47 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.Textures.TextureStimulus-class.html b/doc/reference/html/VisionEgg.Textures.TextureStimulus-class.html
new file mode 100644
index 0000000..bf17cd7
--- /dev/null
+++ b/doc/reference/html/VisionEgg.Textures.TextureStimulus-class.html
@@ -0,0 +1,357 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.Textures.TextureStimulus</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.Textures-module.html">Module Textures</a> ::
+        Class TextureStimulus
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.Textures.TextureStimulus-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class TextureStimulus</h1><span class="codelink"><a href="VisionEgg.Textures-pysrc.html#TextureStimulus">source code</a></span><br /><br />
+<pre class="base-tree">
+         object --+            
+                  |            
+<a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a> --+        
+                      |        
+          <a href="VisionEgg.Core.Stimulus-class.html">Core.Stimulus</a> --+    
+                          |    
+   <a href="VisionEgg.Textures.TextureStimulusBaseClass-class.html">TextureStimulusBaseClass</a> --+
+                              |
+                             <strong class="uidshort">TextureStimulus</strong>
+</pre>
+
+<hr />
+<pre class="literalblock">
+A textured rectangle.
+
+This is mainly for 2D use (z coordinate fixed to 0.0 and w
+coordinated fixed to 1.0 if not given).
+
+
+Parameters
+==========
+anchor             -- specifies how position parameter is interpreted (String)
+                      Default: lowerleft
+angle              -- units: degrees, 0=right, 90=up (Real)
+                      Default: 0.0
+color              -- texture environment color. alpha ignored (if given) for max_alpha parameter (AnyOf(Sequence3 of Real or Sequence4 of Real))
+                      Default: (1.0, 1.0, 1.0)
+depth_test         -- perform depth test? (Boolean)
+                      Default: False
+mask               -- optional masking function (Instance of <class 'VisionEgg.Textures.Mask2D'>)
+                      Default: (determined at runtime)
+max_alpha          -- controls opacity. 1.0=copletely opaque, 0.0=completely transparent (Real)
+                      Default: 1.0
+on                 -- draw stimulus? (Boolean)
+                      Default: True
+position           -- units: eye coordinates (AnyOf(Sequence2 of Real or Sequence3 of Real or Sequence4 of Real))
+                      Default: (0.0, 0.0)
+size               -- defaults to texture data size (units: eye coordinates) (Sequence2 of Real)
+                      Default: (determined at runtime)
+texture            -- source of texture data (Instance of <class 'VisionEgg.Textures.Texture'>)
+                      Inherited from TextureStimulusBaseClass
+                      Default: (determined at runtime)
+texture_mag_filter -- OpenGL filter enum (Integer)
+                      Inherited from TextureStimulusBaseClass
+                      Default: GL_LINEAR (9729)
+texture_min_filter -- OpenGL filter enum (Integer)
+                      Inherited from TextureStimulusBaseClass
+                      Default: (GL enum determined at runtime)
+texture_wrap_s     -- OpenGL texture wrap enum (Integer)
+                      Inherited from TextureStimulusBaseClass
+                      Default: (GL enum determined at runtime)
+texture_wrap_t     -- OpenGL texture wrap enum (Integer)
+                      Inherited from TextureStimulusBaseClass
+                      Default: (GL enum determined at runtime)
+
+Constant Parameters
+===================
+internal_format   -- format with which OpenGL uses texture data (OpenGL data type enum) (Integer)
+                     Default: GL_RGB (6407)
+mipmaps_enabled   -- Are mipmaps enabled? (Boolean)
+                     Default: True
+shrink_texture_ok -- Allow automatic shrinking of texture if too big? (Boolean)
+                     Default: False
+
+</pre><br /><br />
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.Textures.TextureStimulus-class.html#draw" class="summary-sig-name">draw</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      Draw the stimulus.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.Textures-pysrc.html#TextureStimulus.draw">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.Textures.TextureStimulusBaseClass-class.html">TextureStimulusBaseClass</a></code></b>:
+      <code><a href="VisionEgg.Textures.TextureStimulusBaseClass-class.html#__init__">__init__</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a></code></b>:
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__getstate__">__getstate__</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__setstate__">__setstate__</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#get_specified_type">get_specified_type</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#is_constant_parameter">is_constant_parameter</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#set">set</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#verify_parameters">verify_parameters</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__delattr__</code>,
+      <code>__getattribute__</code>,
+      <code>__hash__</code>,
+      <code>__new__</code>,
+      <code>__reduce__</code>,
+      <code>__reduce_ex__</code>,
+      <code>__repr__</code>,
+      <code>__setattr__</code>,
+      <code>__str__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Class Variables</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.Textures.TextureStimulus-class.html#parameters_and_defaults" class="summary-name">parameters_and_defaults</a> = <code title="{'on':(True, ve_types.Boolean, "draw stimulus?"), 'mask':(None, ve_typ\
+es.Instance(Mask2D), "optional masking function"), 'position':((0.0, 0\
+.0), ve_types.AnyOf(ve_types.Sequence2(ve_types.Real), ve_types.Sequen\
+ce3(ve_types.Real), ve_types.Sequence4(ve_types.Real)), "units: eye co\
+ordinates"), 'anchor':('lowerleft', ve_types.String, "specifies how po\
+sition parameter is interpreted"), 'lowerleft':(None, ve_types.Sequenc\
+e2(ve_types.Real), "", VisionEgg.ParameterDefinition.DEPRECATED), 'ang\
+le':(0.0, ve_types.Real, "units: degrees, 0=right, 90=up"), 'size':(No\
+...">{'on':(True, ve_types.Boolean, "draw<code class="variable-ellipsis">...</code></code>
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.Textures.TextureStimulusBaseClass-class.html">TextureStimulusBaseClass</a></code></b>:
+      <code><a href="VisionEgg.Textures.TextureStimulusBaseClass-class.html#constant_parameters_and_defaults">constant_parameters_and_defaults</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a></code></b>:
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__safe_for_unpickling__">__safe_for_unpickling__</a></code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Properties</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__class__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Method Details</span></td>
+</tr>
+</table>
+<a name="draw"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">draw</span>(<span class="sig-arg">self</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.Textures-pysrc.html#TextureStimulus.draw">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Draw the stimulus. (Called by Viewport instance.)
+
+This method is called every frame.  This method actually
+performs the OpenGL calls to draw the stimulus.
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.Core.Stimulus-class.html#draw">Core.Stimulus.draw</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== CLASS VARIABLE DETAILS ==================== -->
+<a name="section-ClassVariableDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Class Variable Details</span></td>
+</tr>
+</table>
+<a name="parameters_and_defaults"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">parameters_and_defaults</h3>
+  
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+{'on':(True, ve_types.Boolean, "draw stimulus?"), 'mask':(None, ve_typ<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+es.Instance(Mask2D), "optional masking function"), 'position':((0.0, 0<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+.0), ve_types.AnyOf(ve_types.Sequence2(ve_types.Real), ve_types.Sequen<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+ce3(ve_types.Real), ve_types.Sequence4(ve_types.Real)), "units: eye co<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+ordinates"), 'anchor':('lowerleft', ve_types.String, "specifies how po<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+sition parameter is interpreted"), 'lowerleft':(None, ve_types.Sequenc<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+e2(ve_types.Real), "", VisionEgg.ParameterDefinition.DEPRECATED), 'ang<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+le':(0.0, ve_types.Real, "units: degrees, 0=right, 90=up"), 'size':(No<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+<code class="variable-ellipsis">...</code>
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:47 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.Textures.TextureStimulus3D-class.html b/doc/reference/html/VisionEgg.Textures.TextureStimulus3D-class.html
new file mode 100644
index 0000000..f53bab4
--- /dev/null
+++ b/doc/reference/html/VisionEgg.Textures.TextureStimulus3D-class.html
@@ -0,0 +1,347 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.Textures.TextureStimulus3D</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.Textures-module.html">Module Textures</a> ::
+        Class TextureStimulus3D
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.Textures.TextureStimulus3D-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class TextureStimulus3D</h1><span class="codelink"><a href="VisionEgg.Textures-pysrc.html#TextureStimulus3D">source code</a></span><br /><br />
+<pre class="base-tree">
+         object --+            
+                  |            
+<a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a> --+        
+                      |        
+          <a href="VisionEgg.Core.Stimulus-class.html">Core.Stimulus</a> --+    
+                          |    
+   <a href="VisionEgg.Textures.TextureStimulusBaseClass-class.html">TextureStimulusBaseClass</a> --+
+                              |
+                             <strong class="uidshort">TextureStimulus3D</strong>
+</pre>
+
+<hr />
+<pre class="literalblock">
+A textured rectangle placed arbitrarily in 3 space.
+
+Parameters
+==========
+depth_test         -- perform depth test? (Boolean)
+                      Default: True
+lowerleft          -- vertex position (units: eye coordinates) (AnyOf(Sequence3 of Real or Sequence4 of Real))
+                      Default: (0.0, 0.0, -1.0)
+lowerright         -- vertex position (units: eye coordinates) (AnyOf(Sequence3 of Real or Sequence4 of Real))
+                      Default: (1.0, 0.0, -1.0)
+on                 -- (Boolean)
+                      Default: True
+texture            -- source of texture data (Instance of <class 'VisionEgg.Textures.Texture'>)
+                      Inherited from TextureStimulusBaseClass
+                      Default: (determined at runtime)
+texture_mag_filter -- OpenGL filter enum (Integer)
+                      Inherited from TextureStimulusBaseClass
+                      Default: GL_LINEAR (9729)
+texture_min_filter -- OpenGL filter enum (Integer)
+                      Inherited from TextureStimulusBaseClass
+                      Default: (GL enum determined at runtime)
+texture_wrap_s     -- OpenGL texture wrap enum (Integer)
+                      Inherited from TextureStimulusBaseClass
+                      Default: (GL enum determined at runtime)
+texture_wrap_t     -- OpenGL texture wrap enum (Integer)
+                      Inherited from TextureStimulusBaseClass
+                      Default: (GL enum determined at runtime)
+upperleft          -- vertex position (units: eye coordinates) (AnyOf(Sequence3 of Real or Sequence4 of Real))
+                      Default: (0.0, 1.0, -1.0)
+upperright         -- vertex position (units: eye coordinates) (AnyOf(Sequence3 of Real or Sequence4 of Real))
+                      Default: (1.0, 1.0, -1.0)
+
+Constant Parameters
+===================
+internal_format   -- format with which OpenGL uses texture data (OpenGL data type enum) (Integer)
+                     Default: GL_RGB (6407)
+mipmaps_enabled   -- Are mipmaps enabled? (Boolean)
+                     Default: True
+shrink_texture_ok -- Allow automatic shrinking of texture if too big? (Boolean)
+                     Default: False
+
+</pre><br /><br />
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.Textures.TextureStimulus3D-class.html#draw" class="summary-sig-name">draw</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      Draw the stimulus.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.Textures-pysrc.html#TextureStimulus3D.draw">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.Textures.TextureStimulusBaseClass-class.html">TextureStimulusBaseClass</a></code></b>:
+      <code><a href="VisionEgg.Textures.TextureStimulusBaseClass-class.html#__init__">__init__</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a></code></b>:
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__getstate__">__getstate__</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__setstate__">__setstate__</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#get_specified_type">get_specified_type</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#is_constant_parameter">is_constant_parameter</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#set">set</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#verify_parameters">verify_parameters</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__delattr__</code>,
+      <code>__getattribute__</code>,
+      <code>__hash__</code>,
+      <code>__new__</code>,
+      <code>__reduce__</code>,
+      <code>__reduce_ex__</code>,
+      <code>__repr__</code>,
+      <code>__setattr__</code>,
+      <code>__str__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Class Variables</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.Textures.TextureStimulus3D-class.html#parameters_and_defaults" class="summary-name">parameters_and_defaults</a> = <code title="{'on':(True, ve_types.Boolean), 'lowerleft':((0.0, 0.0,-1.0), ve_types\
+.AnyOf(ve_types.Sequence3(ve_types.Real), ve_types.Sequence4(ve_types.\
+Real)), "vertex position (units: eye coordinates)"), 'lowerright':((1.\
+0, 0.0,-1.0), ve_types.AnyOf(ve_types.Sequence3(ve_types.Real), ve_typ\
+es.Sequence4(ve_types.Real)), "vertex position (units: eye coordinates\
+)"), 'upperleft':((0.0, 1.0,-1.0), ve_types.AnyOf(ve_types.Sequence3(v\
+e_types.Real), ve_types.Sequence4(ve_types.Real)), "vertex position (u\
+nits: eye coordinates)"), 'upperright':((1.0, 1.0,-1.0), ve_types.AnyO\
+...">{'on':(True, ve_types.Boolean), 'low<code class="variable-ellipsis">...</code></code>
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.Textures.TextureStimulusBaseClass-class.html">TextureStimulusBaseClass</a></code></b>:
+      <code><a href="VisionEgg.Textures.TextureStimulusBaseClass-class.html#constant_parameters_and_defaults">constant_parameters_and_defaults</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a></code></b>:
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__safe_for_unpickling__">__safe_for_unpickling__</a></code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Properties</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__class__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Method Details</span></td>
+</tr>
+</table>
+<a name="draw"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">draw</span>(<span class="sig-arg">self</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.Textures-pysrc.html#TextureStimulus3D.draw">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Draw the stimulus. (Called by Viewport instance.)
+
+This method is called every frame.  This method actually
+performs the OpenGL calls to draw the stimulus.
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.Core.Stimulus-class.html#draw">Core.Stimulus.draw</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== CLASS VARIABLE DETAILS ==================== -->
+<a name="section-ClassVariableDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Class Variable Details</span></td>
+</tr>
+</table>
+<a name="parameters_and_defaults"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">parameters_and_defaults</h3>
+  
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+{'on':(True, ve_types.Boolean), 'lowerleft':((0.0, 0.0,-1.0), ve_types<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+.AnyOf(ve_types.Sequence3(ve_types.Real), ve_types.Sequence4(ve_types.<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+Real)), "vertex position (units: eye coordinates)"), 'lowerright':((1.<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+0, 0.0,-1.0), ve_types.AnyOf(ve_types.Sequence3(ve_types.Real), ve_typ<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+es.Sequence4(ve_types.Real)), "vertex position (units: eye coordinates<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+)"), 'upperleft':((0.0, 1.0,-1.0), ve_types.AnyOf(ve_types.Sequence3(v<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+e_types.Real), ve_types.Sequence4(ve_types.Real)), "vertex position (u<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+nits: eye coordinates)"), 'upperright':((1.0, 1.0,-1.0), ve_types.AnyO<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+<code class="variable-ellipsis">...</code>
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:47 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.Textures.TextureStimulusBaseClass-class.html b/doc/reference/html/VisionEgg.Textures.TextureStimulusBaseClass-class.html
new file mode 100644
index 0000000..aa9e93b
--- /dev/null
+++ b/doc/reference/html/VisionEgg.Textures.TextureStimulusBaseClass-class.html
@@ -0,0 +1,362 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.Textures.TextureStimulusBaseClass</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.Textures-module.html">Module Textures</a> ::
+        Class TextureStimulusBaseClass
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.Textures.TextureStimulusBaseClass-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class TextureStimulusBaseClass</h1><span class="codelink"><a href="VisionEgg.Textures-pysrc.html#TextureStimulusBaseClass">source code</a></span><br /><br />
+<pre class="base-tree">
+         object --+        
+                  |        
+<a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a> --+    
+                      |    
+          <a href="VisionEgg.Core.Stimulus-class.html">Core.Stimulus</a> --+
+                          |
+                         <strong class="uidshort">TextureStimulusBaseClass</strong>
+</pre>
+
+<hr />
+<pre class="literalblock">
+Parameters common to all stimuli that use textures.
+
+Don't instantiate this class directly.
+
+Parameters
+==========
+texture            -- source of texture data (Instance of <class 'VisionEgg.Textures.Texture'>)
+                      Default: (determined at runtime)
+texture_mag_filter -- OpenGL filter enum (Integer)
+                      Default: GL_LINEAR (9729)
+texture_min_filter -- OpenGL filter enum (Integer)
+                      Default: (GL enum determined at runtime)
+texture_wrap_s     -- OpenGL texture wrap enum (Integer)
+                      Default: (GL enum determined at runtime)
+texture_wrap_t     -- OpenGL texture wrap enum (Integer)
+                      Default: (GL enum determined at runtime)
+
+Constant Parameters
+===================
+internal_format   -- format with which OpenGL uses texture data (OpenGL data type enum) (Integer)
+                     Default: GL_RGB (6407)
+mipmaps_enabled   -- Are mipmaps enabled? (Boolean)
+                     Default: True
+shrink_texture_ok -- Allow automatic shrinking of texture if too big? (Boolean)
+                     Default: False
+
+</pre><br /><br />
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.Textures.TextureStimulusBaseClass-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">**kw</span>)</span><br />
+      Instantiate and get ready to draw.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.Textures-pysrc.html#TextureStimulusBaseClass.__init__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.Core.Stimulus-class.html">Core.Stimulus</a></code></b>:
+      <code><a href="VisionEgg.Core.Stimulus-class.html#draw">draw</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a></code></b>:
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__getstate__">__getstate__</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__setstate__">__setstate__</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#get_specified_type">get_specified_type</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#is_constant_parameter">is_constant_parameter</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#set">set</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#verify_parameters">verify_parameters</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__delattr__</code>,
+      <code>__getattribute__</code>,
+      <code>__hash__</code>,
+      <code>__new__</code>,
+      <code>__reduce__</code>,
+      <code>__reduce_ex__</code>,
+      <code>__repr__</code>,
+      <code>__setattr__</code>,
+      <code>__str__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Class Variables</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.Textures.TextureStimulusBaseClass-class.html#parameters_and_defaults" class="summary-name">parameters_and_defaults</a> = <code title="{'texture':(None, ve_types.Instance(Texture), "source of texture data"\
+), 'texture_mag_filter':(gl.GL_LINEAR, ve_types.Integer, "OpenGL filte\
+r enum", VisionEgg.ParameterDefinition.OPENGL_ENUM), 'texture_min_filt\
+er':(None, ve_types.Integer, "OpenGL filter enum", VisionEgg.Parameter\
+Definition.OPENGL_ENUM), 'texture_wrap_s':(None, ve_types.Integer, "Op\
+enGL texture wrap enum", VisionEgg.ParameterDefinition.OPENGL_ENUM), '\
+texture_wrap_t':(None, ve_types.Integer, "OpenGL texture wrap enum", V\
+isionEgg.ParameterDefinition.OPENGL_ENUM),}">{'texture':(None, ve_types.Instance(<code class="variable-ellipsis">...</code></code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.Textures.TextureStimulusBaseClass-class.html#constant_parameters_and_defaults" class="summary-name">constant_parameters_and_defaults</a> = <code title="{'internal_format':(gl.GL_RGB, ve_types.Integer, "format with which Op\
+enGL uses texture data (OpenGL data type enum)", VisionEgg.ParameterDe\
+finition.OPENGL_ENUM), 'mipmaps_enabled':(True, ve_types.Boolean, "Are\
+ mipmaps enabled?"), 'shrink_texture_ok':(False, ve_types.Boolean, "Al\
+low automatic shrinking of texture if too big?"),}">{'internal_format':(gl.GL_R<code class="variable-ellipsis">...</code></code>
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a></code></b>:
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__safe_for_unpickling__">__safe_for_unpickling__</a></code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Properties</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__class__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Method Details</span></td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">**kw</span>)</span>
+    <br /><em class="fname">(Constructor)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.Textures-pysrc.html#TextureStimulusBaseClass.__init__">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Instantiate and get ready to draw.
+
+Set parameter values and create anything needed to draw the
+stimulus including OpenGL state variables such display lists
+and texture objects.
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.Core.Stimulus-class.html#__init__">Core.Stimulus.__init__</a>
+        <dd><em class="note">(inherited documentation)</em></dd>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== CLASS VARIABLE DETAILS ==================== -->
+<a name="section-ClassVariableDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Class Variable Details</span></td>
+</tr>
+</table>
+<a name="parameters_and_defaults"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">parameters_and_defaults</h3>
+  
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+{'texture':(None, ve_types.Instance(Texture), "source of texture data"<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+), 'texture_mag_filter':(gl.GL_LINEAR, ve_types.Integer, "OpenGL filte<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+r enum", VisionEgg.ParameterDefinition.OPENGL_ENUM), 'texture_min_filt<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+er':(None, ve_types.Integer, "OpenGL filter enum", VisionEgg.Parameter<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+Definition.OPENGL_ENUM), 'texture_wrap_s':(None, ve_types.Integer, "Op<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+enGL texture wrap enum", VisionEgg.ParameterDefinition.OPENGL_ENUM), '<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+texture_wrap_t':(None, ve_types.Integer, "OpenGL texture wrap enum", V<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+isionEgg.ParameterDefinition.OPENGL_ENUM),}
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="constant_parameters_and_defaults"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">constant_parameters_and_defaults</h3>
+  
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+{'internal_format':(gl.GL_RGB, ve_types.Integer, "format with which Op<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+enGL uses texture data (OpenGL data type enum)", VisionEgg.ParameterDe<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+finition.OPENGL_ENUM), 'mipmaps_enabled':(True, ve_types.Boolean, "Are<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+ mipmaps enabled?"), 'shrink_texture_ok':(False, ve_types.Boolean, "Al<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+low automatic shrinking of texture if too big?"),}
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:47 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.Textures.TextureTooLargeError-class.html b/doc/reference/html/VisionEgg.Textures.TextureTooLargeError-class.html
new file mode 100644
index 0000000..6ce7ac6
--- /dev/null
+++ b/doc/reference/html/VisionEgg.Textures.TextureTooLargeError-class.html
@@ -0,0 +1,180 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.Textures.TextureTooLargeError</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.Textures-module.html">Module Textures</a> ::
+        Class TextureTooLargeError
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.Textures.TextureTooLargeError-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class TextureTooLargeError</h1><span class="codelink"><a href="VisionEgg.Textures-pysrc.html#TextureTooLargeError">source code</a></span><br /><br />
+<pre class="base-tree">
+              object --+                
+                       |                
+exceptions.BaseException --+            
+                           |            
+        exceptions.Exception --+        
+                               |        
+        exceptions.StandardError --+    
+                                   |    
+             exceptions.RuntimeError --+
+                                       |
+                                      <strong class="uidshort">TextureTooLargeError</strong>
+</pre>
+
+<hr />
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.RuntimeError</code></b>:
+      <code>__init__</code>,
+      <code>__new__</code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.BaseException</code></b>:
+      <code>__delattr__</code>,
+      <code>__getattribute__</code>,
+      <code>__getitem__</code>,
+      <code>__getslice__</code>,
+      <code>__reduce__</code>,
+      <code>__repr__</code>,
+      <code>__setattr__</code>,
+      <code>__setstate__</code>,
+      <code>__str__</code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__hash__</code>,
+      <code>__reduce_ex__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Properties</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.BaseException</code></b>:
+      <code>args</code>,
+      <code>message</code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__class__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:47 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.ThreeDeeMath-module.html b/doc/reference/html/VisionEgg.ThreeDeeMath-module.html
new file mode 100644
index 0000000..8a86182
--- /dev/null
+++ b/doc/reference/html/VisionEgg.ThreeDeeMath-module.html
@@ -0,0 +1,176 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.ThreeDeeMath</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        Module ThreeDeeMath
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.ThreeDeeMath-module.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== MODULE DESCRIPTION ==================== -->
+<h1 class="epydoc">Module ThreeDeeMath</h1><span class="codelink"><a href="VisionEgg.ThreeDeeMath-pysrc.html">source code</a></span><br /><br />
+<pre class="literalblock">
+
+Vertex and matrix operations - simulate OpenGL transforms.
+
+</pre><br /><br />
+
+<!-- ==================== CLASSES ==================== -->
+<a name="section-Classes"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Classes</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.ThreeDeeMath.TransformMatrix-class.html" class="summary-name">TransformMatrix</a>
+    </td>
+  </tr>
+</table>
+<!-- ==================== FUNCTIONS ==================== -->
+<a name="section-Functions"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Functions</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="make_homogeneous_coord_rows"></a><span class="summary-sig-name">make_homogeneous_coord_rows</span>(<span class="summary-sig-arg">v</span>)</span><br />
+      Convert vertex (or row-wise vertices) into homogeneous coordinates.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.ThreeDeeMath-pysrc.html#make_homogeneous_coord_rows">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="normalize_homogeneous_rows"></a><span class="summary-sig-name">normalize_homogeneous_rows</span>(<span class="summary-sig-arg">v</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.ThreeDeeMath-pysrc.html#normalize_homogeneous_rows">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.ThreeDeeMath-pysrc.html b/doc/reference/html/VisionEgg.ThreeDeeMath-pysrc.html
new file mode 100644
index 0000000..f7cc0ad
--- /dev/null
+++ b/doc/reference/html/VisionEgg.ThreeDeeMath-pysrc.html
@@ -0,0 +1,216 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.ThreeDeeMath</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        Module ThreeDeeMath
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.ThreeDeeMath-pysrc.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<h1 class="epydoc">Source Code for <a href="VisionEgg.ThreeDeeMath-module.html">Module VisionEgg.ThreeDeeMath</a></h1>
+<pre class="py-src">
+<a name="L1"></a><tt class="py-lineno"> 1</tt>  <tt class="py-line"><tt class="py-comment"># The Vision Egg: ThreeDeeMath</tt> </tt>
+<a name="L2"></a><tt class="py-lineno"> 2</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L3"></a><tt class="py-lineno"> 3</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Copyright (C) 2001-2003 Andrew Straw.</tt> </tt>
+<a name="L4"></a><tt class="py-lineno"> 4</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Copyright (C) 2008 California Institute of Technology</tt> </tt>
+<a name="L5"></a><tt class="py-lineno"> 5</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L6"></a><tt class="py-lineno"> 6</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># URL: <http://www.visionegg.org/></tt> </tt>
+<a name="L7"></a><tt class="py-lineno"> 7</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#</tt> </tt>
+<a name="L8"></a><tt class="py-lineno"> 8</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Distributed under the terms of the GNU Lesser General Public License</tt> </tt>
+<a name="L9"></a><tt class="py-lineno"> 9</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># (LGPL). See LICENSE.TXT that came with this file.</tt> </tt>
+<a name="L10"></a><tt class="py-lineno">10</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L11"></a><tt class="py-lineno">11</tt>  <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L12"></a><tt class="py-lineno">12</tt>  <tt class="py-line"><tt class="py-docstring">Vertex and matrix operations - simulate OpenGL transforms.</tt> </tt>
+<a name="L13"></a><tt class="py-lineno">13</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L14"></a><tt class="py-lineno">14</tt>  <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L15"></a><tt class="py-lineno">15</tt>  <tt class="py-line"> </tt>
+<a name="L16"></a><tt class="py-lineno">16</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">math</tt> </tt>
+<a name="L17"></a><tt class="py-lineno">17</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">numpy</tt> </tt>
+<a name="L18"></a><tt class="py-lineno">18</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">numpy</tt><tt class="py-op">.</tt><tt class="py-name">oldnumeric</tt> <tt class="py-keyword">as</tt> <tt class="py-name">Numeric</tt><tt class="py-op">,</tt> <tt class="py-name">numpy</tt><tt class="py-op">.</tt><tt class="py-name">oldnumeric</tt><tt class="py-op">.</tt><tt class="py-name">mlab</tt> <tt class="py-keyword">as</tt> <tt class="py-name">MLab</tt> </tt>
+<a name="L19"></a><tt class="py-lineno">19</tt>  <tt class="py-line"> </tt>
+<a name="make_homogeneous_coord_rows"></a><div id="make_homogeneous_coord_rows-def"><a name="L20"></a><tt class="py-lineno">20</tt> <a class="py-toggle" href="#" id="make_homogeneous_coord_rows-toggle" onclick="return toggle('make_homogeneous_coord_rows');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.ThreeDeeMath-module.html#make_homogeneous_coord_rows">make_homogeneous_coord_rows</a><tt class="py-op">(</tt><tt class="py-param">v</tt><t [...]
+</div><div id="make_homogeneous_coord_rows-collapsed" style="display:none;" pad="++" indent="++++"></div><div id="make_homogeneous_coord_rows-expanded"><a name="L21"></a><tt class="py-lineno">21</tt>  <tt class="py-line">    <tt class="py-docstring">"""Convert vertex (or row-wise vertices) into homogeneous coordinates."""</tt> </tt>
+<a name="L22"></a><tt class="py-lineno">22</tt>  <tt class="py-line">    <tt class="py-name">v</tt> <tt class="py-op">=</tt> <tt class="py-name">Numeric</tt><tt class="py-op">.</tt><tt class="py-name">array</tt><tt class="py-op">(</tt><tt class="py-name">v</tt><tt class="py-op">,</tt><tt class="py-name">typecode</tt><tt class="py-op">=</tt><tt class="py-name">Numeric</tt><tt class="py-op">.</tt><tt class="py-name">Float</tt><tt class="py-op">)</tt> <tt class="py-comment"># copy</tt> </tt>
+<a name="L23"></a><tt class="py-lineno">23</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">v</tt><tt class="py-op">.</tt><tt class="py-name">shape</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">1</tt><tt class="py-op">:</tt> </tt>
+<a name="L24"></a><tt class="py-lineno">24</tt>  <tt class="py-line">        <tt class="py-name">v</tt> <tt class="py-op">=</tt> <tt class="py-name">v</tt><tt class="py-op">[</tt><tt class="py-name">Numeric</tt><tt class="py-op">.</tt><tt class="py-name">NewAxis</tt><tt class="py-op">,</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> <tt class="py-comment"># make a rank-2 array</tt> </tt>
+<a name="L25"></a><tt class="py-lineno">25</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">v</tt><tt class="py-op">.</tt><tt class="py-name">shape</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-number">3</tt><tt class="py-op">:</tt> </tt>
+<a name="L26"></a><tt class="py-lineno">26</tt>  <tt class="py-line">        <tt class="py-name">ws</tt> <tt class="py-op">=</tt> <tt class="py-name">Numeric</tt><tt class="py-op">.</tt><tt class="py-name">ones</tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-name">v</tt><tt class="py-op">.</tt><tt class="py-name">shape</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">,</tt><tt class="py-number">1</tt><tt class="py-op">)</ [...]
+<a name="L27"></a><tt class="py-lineno">27</tt>  <tt class="py-line">        <tt class="py-name">v</tt> <tt class="py-op">=</tt> <tt class="py-name">Numeric</tt><tt class="py-op">.</tt><tt class="py-name">concatenate</tt><tt class="py-op">(</tt> <tt class="py-op">(</tt><tt class="py-name">v</tt><tt class="py-op">,</tt><tt class="py-name">ws</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">axis</tt><tt class="py-op">=</tt><tt class="py-number">1</tt> <tt class="py- [...]
+<a name="L28"></a><tt class="py-lineno">28</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">v</tt> </tt>
+</div><a name="L29"></a><tt class="py-lineno">29</tt>  <tt class="py-line"> </tt>
+<a name="normalize_homogeneous_rows"></a><div id="normalize_homogeneous_rows-def"><a name="L30"></a><tt class="py-lineno">30</tt> <a class="py-toggle" href="#" id="normalize_homogeneous_rows-toggle" onclick="return toggle('normalize_homogeneous_rows');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.ThreeDeeMath-module.html#normalize_homogeneous_rows">normalize_homogeneous_rows</a><tt class="py-op">(</tt><tt class="py-param">v</tt><tt clas [...]
+</div><div id="normalize_homogeneous_rows-collapsed" style="display:none;" pad="++" indent="++++"></div><div id="normalize_homogeneous_rows-expanded"><a name="L31"></a><tt class="py-lineno">31</tt>  <tt class="py-line">    <tt class="py-name">v</tt> <tt class="py-op">=</tt> <tt class="py-name">Numeric</tt><tt class="py-op">.</tt><tt class="py-name">asarray</tt><tt class="py-op">(</tt><tt class="py-name">v</tt><tt class="py-op">)</tt> </tt>
+<a name="L32"></a><tt class="py-lineno">32</tt>  <tt class="py-line">    <tt class="py-name">homog</tt> <tt class="py-op">=</tt> <tt id="link-0" class="py-name" targets="Function VisionEgg.ThreeDeeMath.make_homogeneous_coord_rows()=VisionEgg.ThreeDeeMath-module.html#make_homogeneous_coord_rows"><a title="VisionEgg.ThreeDeeMath.make_homogeneous_coord_rows" class="py-name" href="#" onclick="return doclink('link-0', 'make_homogeneous_coord_rows', 'link-0');">make_homogeneous_coord_rows</a>< [...]
+<a name="L33"></a><tt class="py-lineno">33</tt>  <tt class="py-line">    <tt class="py-name">r</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">homog</tt><tt class="py-op">/</tt><tt class="py-name">homog</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">,</tt><tt class="py-number">3</tt><tt class="py-op">,</tt><tt class="py-name">Numeric</tt><tt class="py-op">.</tt><tt class="py-name">NewAxis</tt><tt class="py-op">]</tt><tt class="py-op">)</tt [...]
+<a name="L34"></a><tt class="py-lineno">34</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">homog</tt><tt class="py-op">.</tt><tt class="py-name">shape</tt><tt class="py-op">)</tt> <tt class="py-op">></tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">v</tt><tt class="py-op">.</tt><tt class="py-name">shape</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L35"></a><tt class="py-lineno">35</tt>  <tt class="py-line">        <tt class="py-name">r</tt> <tt class="py-op">=</tt> <tt class="py-name">Numeric</tt><tt class="py-op">.</tt><tt class="py-name">reshape</tt><tt class="py-op">(</tt><tt class="py-name">r</tt><tt class="py-op">,</tt><tt class="py-op">(</tt><tt class="py-number">3</tt><tt class="py-op">,</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L36"></a><tt class="py-lineno">36</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">r</tt> </tt>
+</div><a name="L37"></a><tt class="py-lineno">37</tt>  <tt class="py-line"> </tt>
+<a name="TransformMatrix"></a><div id="TransformMatrix-def"><a name="L38"></a><tt class="py-lineno">38</tt> <a class="py-toggle" href="#" id="TransformMatrix-toggle" onclick="return toggle('TransformMatrix');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.ThreeDeeMath.TransformMatrix-class.html">TransformMatrix</a><tt class="py-op">:</tt> </tt>
+</div><div id="TransformMatrix-collapsed" style="display:none;" pad="++" indent="++++"></div><div id="TransformMatrix-expanded"><a name="TransformMatrix.__init__"></a><div id="TransformMatrix.__init__-def"><a name="L39"></a><tt class="py-lineno">39</tt> <a class="py-toggle" href="#" id="TransformMatrix.__init__-toggle" onclick="return toggle('TransformMatrix.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.ThreeDeeMath.Trans [...]
+</div><div id="TransformMatrix.__init__-collapsed" style="display:none;" pad="++" indent="++++++++"></div><div id="TransformMatrix.__init__-expanded"><a name="L40"></a><tt class="py-lineno">40</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">matrix</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L41"></a><tt class="py-lineno">41</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">matrix</tt> <tt class="py-op">=</tt> <tt class="py-name">MLab</tt><tt class="py-op">.</tt><tt class="py-name">eye</tt><tt class="py-op">(</tt><tt class="py-number">4</tt><tt class="py-op">,</tt><tt class="py-name">typecode</tt><tt class="py-op">=</tt><tt class="py-name">Numeric</tt><tt class="py-op">.</tt><tt class="py-name">Float</tt>< [...]
+<a name="L42"></a><tt class="py-lineno">42</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L43"></a><tt class="py-lineno">43</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">matrix</tt> <tt class="py-op">=</tt> <tt class="py-name">matrix</tt> </tt>
+</div><a name="L44"></a><tt class="py-lineno">44</tt>  <tt class="py-line"> </tt>
+<a name="TransformMatrix.__make_normalized_vert3"></a><div id="TransformMatrix.__make_normalized_vert3-def"><a name="L45"></a><tt class="py-lineno">45</tt> <a class="py-toggle" href="#" id="TransformMatrix.__make_normalized_vert3-toggle" onclick="return toggle('TransformMatrix.__make_normalized_vert3');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.ThreeDeeMath.TransformMatrix-class.html#__make_normalized_vert3">__make_normalized_ver [...]
+</div><div id="TransformMatrix.__make_normalized_vert3-collapsed" style="display:none;" pad="++" indent="++++++++"></div><div id="TransformMatrix.__make_normalized_vert3-expanded"><a name="L46"></a><tt class="py-lineno">46</tt>  <tt class="py-line">        <tt id="link-1" class="py-name" targets="Function VisionEgg.PyroApps.MouseTargetServer.mag()=VisionEgg.PyroApps.MouseTargetServer-module.html#mag"><a title="VisionEgg.PyroApps.MouseTargetServer.mag" class="py-name" href="#" onclick="re [...]
+<a name="L47"></a><tt class="py-lineno">47</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">Numeric</tt><tt class="py-op">.</tt><tt class="py-name">array</tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-name">x</tt><tt class="py-op">,</tt><tt class="py-name">y</tt><tt class="py-op">,</tt><tt class="py-name">z</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">/</tt><tt id="link-2" class="py-name"><a title="Vision [...]
+</div><a name="L48"></a><tt class="py-lineno">48</tt>  <tt class="py-line"> </tt>
+<a name="TransformMatrix.rotate"></a><div id="TransformMatrix.rotate-def"><a name="L49"></a><tt class="py-lineno">49</tt> <a class="py-toggle" href="#" id="TransformMatrix.rotate-toggle" onclick="return toggle('TransformMatrix.rotate');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.ThreeDeeMath.TransformMatrix-class.html#rotate">rotate</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-par [...]
+</div><div id="TransformMatrix.rotate-collapsed" style="display:none;" pad="++" indent="++++++++"></div><div id="TransformMatrix.rotate-expanded"><a name="L50"></a><tt class="py-lineno">50</tt>  <tt class="py-line">        <tt class="py-docstring">"""Follows the right hand rule.</tt> </tt>
+<a name="L51"></a><tt class="py-lineno">51</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L52"></a><tt class="py-lineno">52</tt>  <tt class="py-line"><tt class="py-docstring">        I visualize the right hand rule most easily as follows:</tt> </tt>
+<a name="L53"></a><tt class="py-lineno">53</tt>  <tt class="py-line"><tt class="py-docstring">        Naturally, using your right hand, wrap it around the axis of</tt> </tt>
+<a name="L54"></a><tt class="py-lineno">54</tt>  <tt class="py-line"><tt class="py-docstring">        rotation. Your fingers now point in the direction of rotation.</tt> </tt>
+<a name="L55"></a><tt class="py-lineno">55</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L56"></a><tt class="py-lineno">56</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L57"></a><tt class="py-lineno">57</tt>  <tt class="py-line">        <tt class="py-name">angleRadians</tt> <tt class="py-op">=</tt> <tt class="py-name">angle_degrees</tt> <tt class="py-op">/</tt> <tt class="py-number">180.0</tt> <tt class="py-op">*</tt> <tt class="py-name">math</tt><tt class="py-op">.</tt><tt class="py-name">pi</tt> </tt>
+<a name="L58"></a><tt class="py-lineno">58</tt>  <tt class="py-line">        <tt class="py-name">u</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__make_normalized_vert3</tt><tt class="py-op">(</tt><tt class="py-name">axis_x</tt><tt class="py-op">,</tt> <tt class="py-name">axis_y</tt><tt class="py-op">,</tt> <tt class="py-name">axis_z</tt> <tt class="py-op">)</tt> </tt>
+<a name="L59"></a><tt class="py-lineno">59</tt>  <tt class="py-line">        <tt class="py-name">u</tt><tt class="py-op">=</tt><tt class="py-op">-</tt><tt class="py-name">u</tt> <tt class="py-comment">#follow right hand rule</tt> </tt>
+<a name="L60"></a><tt class="py-lineno">60</tt>  <tt class="py-line">        <tt class="py-name">S</tt> <tt class="py-op">=</tt> <tt class="py-name">Numeric</tt><tt class="py-op">.</tt><tt class="py-name">zeros</tt><tt class="py-op">(</tt> <tt class="py-op">(</tt><tt class="py-number">3</tt><tt class="py-op">,</tt><tt class="py-number">3</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">Numeric</tt><tt class="py-op">.</tt><tt class="py-name">Float</tt> <tt class="p [...]
+<a name="L61"></a><tt class="py-lineno">61</tt>  <tt class="py-line">        <tt class="py-name">S</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">,</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">-</tt><tt class="py-name">u</tt><tt class="py-op">[</tt><tt class="py-number">2</tt><tt class="py-op">]</tt> </tt>
+<a name="L62"></a><tt class="py-lineno">62</tt>  <tt class="py-line">        <tt class="py-name">S</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">,</tt><tt class="py-number">2</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">u</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
+<a name="L63"></a><tt class="py-lineno">63</tt>  <tt class="py-line">        <tt class="py-name">S</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">,</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">u</tt><tt class="py-op">[</tt><tt class="py-number">2</tt><tt class="py-op">]</tt> </tt>
+<a name="L64"></a><tt class="py-lineno">64</tt>  <tt class="py-line">        <tt class="py-name">S</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">,</tt><tt class="py-number">2</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">-</tt><tt class="py-name">u</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt>
+<a name="L65"></a><tt class="py-lineno">65</tt>  <tt class="py-line">        <tt class="py-name">S</tt><tt class="py-op">[</tt><tt class="py-number">2</tt><tt class="py-op">,</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">-</tt><tt class="py-name">u</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
+<a name="L66"></a><tt class="py-lineno">66</tt>  <tt class="py-line">        <tt class="py-name">S</tt><tt class="py-op">[</tt><tt class="py-number">2</tt><tt class="py-op">,</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">u</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt>
+<a name="L67"></a><tt class="py-lineno">67</tt>  <tt class="py-line">        <tt class="py-name">U</tt> <tt class="py-op">=</tt> <tt class="py-name">Numeric</tt><tt class="py-op">.</tt><tt class="py-name">outerproduct</tt><tt class="py-op">(</tt><tt class="py-name">u</tt><tt class="py-op">,</tt><tt class="py-name">u</tt><tt class="py-op">)</tt> </tt>
+<a name="L68"></a><tt class="py-lineno">68</tt>  <tt class="py-line">        <tt class="py-name">R</tt> <tt class="py-op">=</tt> <tt class="py-name">U</tt> <tt class="py-op">+</tt> <tt class="py-name">math</tt><tt class="py-op">.</tt><tt class="py-name">cos</tt><tt class="py-op">(</tt><tt class="py-name">angleRadians</tt><tt class="py-op">)</tt><tt class="py-op">*</tt><tt class="py-op">(</tt><tt class="py-name">MLab</tt><tt class="py-op">.</tt><tt class="py-name">eye</tt><tt class="py-op [...]
+<a name="L69"></a><tt class="py-lineno">69</tt>  <tt class="py-line">        <tt class="py-name">R</tt> <tt class="py-op">=</tt> <tt class="py-name">Numeric</tt><tt class="py-op">.</tt><tt class="py-name">concatenate</tt><tt class="py-op">(</tt> <tt class="py-op">(</tt><tt class="py-name">R</tt><tt class="py-op">,</tt><tt class="py-name">Numeric</tt><tt class="py-op">.</tt><tt class="py-name">zeros</tt><tt class="py-op">(</tt> <tt class="py-op">(</tt><tt class="py-number">3</tt><tt class [...]
+<a name="L70"></a><tt class="py-lineno">70</tt>  <tt class="py-line">        <tt class="py-name">R</tt> <tt class="py-op">=</tt> <tt class="py-name">Numeric</tt><tt class="py-op">.</tt><tt class="py-name">concatenate</tt><tt class="py-op">(</tt> <tt class="py-op">(</tt><tt class="py-name">R</tt><tt class="py-op">,</tt><tt class="py-name">Numeric</tt><tt class="py-op">.</tt><tt class="py-name">zeros</tt><tt class="py-op">(</tt> <tt class="py-op">(</tt><tt class="py-number">1</tt><tt class [...]
+<a name="L71"></a><tt class="py-lineno">71</tt>  <tt class="py-line">        <tt class="py-name">R</tt><tt class="py-op">[</tt><tt class="py-number">3</tt><tt class="py-op">,</tt><tt class="py-number">3</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-number">1.0</tt> </tt>
+<a name="L72"></a><tt class="py-lineno">72</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">matrix</tt> <tt class="py-op">=</tt> <tt class="py-name">numpy</tt><tt class="py-op">.</tt><tt class="py-name">dot</tt><tt class="py-op">(</tt><tt class="py-name">R</tt><tt class="py-op">,</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">matrix</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L73"></a><tt class="py-lineno">73</tt>  <tt class="py-line"> </tt>
+<a name="TransformMatrix.translate"></a><div id="TransformMatrix.translate-def"><a name="L74"></a><tt class="py-lineno">74</tt> <a class="py-toggle" href="#" id="TransformMatrix.translate-toggle" onclick="return toggle('TransformMatrix.translate');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.ThreeDeeMath.TransformMatrix-class.html#translate">translate</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> [...]
+</div><div id="TransformMatrix.translate-collapsed" style="display:none;" pad="++" indent="++++++++"></div><div id="TransformMatrix.translate-expanded"><a name="L75"></a><tt class="py-lineno">75</tt>  <tt class="py-line">        <tt class="py-name">T</tt> <tt class="py-op">=</tt> <tt class="py-name">MLab</tt><tt class="py-op">.</tt><tt class="py-name">eye</tt><tt class="py-op">(</tt><tt class="py-number">4</tt><tt class="py-op">,</tt><tt class="py-name">typecode</tt><tt class="py-op">=</ [...]
+<a name="L76"></a><tt class="py-lineno">76</tt>  <tt class="py-line">        <tt class="py-name">T</tt><tt class="py-op">[</tt><tt class="py-number">3</tt><tt class="py-op">,</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">x</tt> </tt>
+<a name="L77"></a><tt class="py-lineno">77</tt>  <tt class="py-line">        <tt class="py-name">T</tt><tt class="py-op">[</tt><tt class="py-number">3</tt><tt class="py-op">,</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">y</tt> </tt>
+<a name="L78"></a><tt class="py-lineno">78</tt>  <tt class="py-line">        <tt class="py-name">T</tt><tt class="py-op">[</tt><tt class="py-number">3</tt><tt class="py-op">,</tt><tt class="py-number">2</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">z</tt> </tt>
+<a name="L79"></a><tt class="py-lineno">79</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">matrix</tt> <tt class="py-op">=</tt> <tt class="py-name">numpy</tt><tt class="py-op">.</tt><tt class="py-name">dot</tt><tt class="py-op">(</tt><tt class="py-name">T</tt><tt class="py-op">,</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">matrix</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L80"></a><tt class="py-lineno">80</tt>  <tt class="py-line"> </tt>
+<a name="TransformMatrix.scale"></a><div id="TransformMatrix.scale-def"><a name="L81"></a><tt class="py-lineno">81</tt> <a class="py-toggle" href="#" id="TransformMatrix.scale-toggle" onclick="return toggle('TransformMatrix.scale');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.ThreeDeeMath.TransformMatrix-class.html#scale">scale</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">x< [...]
+</div><div id="TransformMatrix.scale-collapsed" style="display:none;" pad="++" indent="++++++++"></div><div id="TransformMatrix.scale-expanded"><a name="L82"></a><tt class="py-lineno">82</tt>  <tt class="py-line">        <tt class="py-name">T</tt> <tt class="py-op">=</tt> <tt class="py-name">MLab</tt><tt class="py-op">.</tt><tt class="py-name">eye</tt><tt class="py-op">(</tt><tt class="py-number">4</tt><tt class="py-op">,</tt><tt class="py-name">typecode</tt><tt class="py-op">=</tt><tt c [...]
+<a name="L83"></a><tt class="py-lineno">83</tt>  <tt class="py-line">        <tt class="py-name">T</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">,</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">x</tt> </tt>
+<a name="L84"></a><tt class="py-lineno">84</tt>  <tt class="py-line">        <tt class="py-name">T</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">,</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">y</tt> </tt>
+<a name="L85"></a><tt class="py-lineno">85</tt>  <tt class="py-line">        <tt class="py-name">T</tt><tt class="py-op">[</tt><tt class="py-number">2</tt><tt class="py-op">,</tt><tt class="py-number">2</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">z</tt> </tt>
+<a name="L86"></a><tt class="py-lineno">86</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">matrix</tt> <tt class="py-op">=</tt> <tt class="py-name">numpy</tt><tt class="py-op">.</tt><tt class="py-name">dot</tt><tt class="py-op">(</tt><tt class="py-name">T</tt><tt class="py-op">,</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">matrix</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L87"></a><tt class="py-lineno">87</tt>  <tt class="py-line"> </tt>
+<a name="TransformMatrix.get_matrix"></a><div id="TransformMatrix.get_matrix-def"><a name="L88"></a><tt class="py-lineno">88</tt> <a class="py-toggle" href="#" id="TransformMatrix.get_matrix-toggle" onclick="return toggle('TransformMatrix.get_matrix');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.ThreeDeeMath.TransformMatrix-class.html#get_matrix">get_matrix</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op"> [...]
+</div><div id="TransformMatrix.get_matrix-collapsed" style="display:none;" pad="++" indent="++++++++"></div><div id="TransformMatrix.get_matrix-expanded"><a name="L89"></a><tt class="py-lineno">89</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">matrix</tt> </tt>
+</div><a name="L90"></a><tt class="py-lineno">90</tt>  <tt class="py-line"> </tt>
+<a name="TransformMatrix.transform_vertices"></a><div id="TransformMatrix.transform_vertices-def"><a name="L91"></a><tt class="py-lineno">91</tt> <a class="py-toggle" href="#" id="TransformMatrix.transform_vertices-toggle" onclick="return toggle('TransformMatrix.transform_vertices');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.ThreeDeeMath.TransformMatrix-class.html#transform_vertices">transform_vertices</a><tt class="py-op">(</tt> [...]
+</div><div id="TransformMatrix.transform_vertices-collapsed" style="display:none;" pad="++" indent="++++++++"></div><div id="TransformMatrix.transform_vertices-expanded"><a name="L92"></a><tt class="py-lineno">92</tt>  <tt class="py-line">        <tt class="py-name">v</tt> <tt class="py-op">=</tt> <tt class="py-name">Numeric</tt><tt class="py-op">.</tt><tt class="py-name">asarray</tt><tt class="py-op">(</tt><tt class="py-name">verts</tt><tt class="py-op">)</tt> </tt>
+<a name="L93"></a><tt class="py-lineno">93</tt>  <tt class="py-line">        <tt class="py-name">homog</tt> <tt class="py-op">=</tt> <tt id="link-3" class="py-name"><a title="VisionEgg.ThreeDeeMath.make_homogeneous_coord_rows" class="py-name" href="#" onclick="return doclink('link-3', 'make_homogeneous_coord_rows', 'link-0');">make_homogeneous_coord_rows</a></tt><tt class="py-op">(</tt><tt class="py-name">v</tt><tt class="py-op">)</tt> </tt>
+<a name="L94"></a><tt class="py-lineno">94</tt>  <tt class="py-line">        <tt class="py-name">r</tt> <tt class="py-op">=</tt> <tt class="py-name">numpy</tt><tt class="py-op">.</tt><tt class="py-name">dot</tt><tt class="py-op">(</tt><tt class="py-name">homog</tt><tt class="py-op">,</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">matrix</tt><tt class="py-op">)</tt> </tt>
+<a name="L95"></a><tt class="py-lineno">95</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">homog</tt><tt class="py-op">.</tt><tt class="py-name">shape</tt><tt class="py-op">)</tt> <tt class="py-op">></tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">v</tt><tt class="py-op">.</tt><tt class="py-name">shape</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L96"></a><tt class="py-lineno">96</tt>  <tt class="py-line">            <tt class="py-name">r</tt> <tt class="py-op">=</tt> <tt class="py-name">Numeric</tt><tt class="py-op">.</tt><tt class="py-name">reshape</tt><tt class="py-op">(</tt><tt class="py-name">r</tt><tt class="py-op">,</tt><tt class="py-op">(</tt><tt class="py-number">4</tt><tt class="py-op">,</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L97"></a><tt class="py-lineno">97</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">r</tt> </tt>
+</div></div><a name="L98"></a><tt class="py-lineno">98</tt>  <tt class="py-line"> </tt><script type="text/javascript">
+<!--
+expandto(location.href);
+// -->
+</script>
+</pre>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:49 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.ThreeDeeMath.TransformMatrix-class.html b/doc/reference/html/VisionEgg.ThreeDeeMath.TransformMatrix-class.html
new file mode 100644
index 0000000..df19b65
--- /dev/null
+++ b/doc/reference/html/VisionEgg.ThreeDeeMath.TransformMatrix-class.html
@@ -0,0 +1,271 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.ThreeDeeMath.TransformMatrix</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.ThreeDeeMath-module.html">Module ThreeDeeMath</a> ::
+        Class TransformMatrix
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.ThreeDeeMath.TransformMatrix-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class TransformMatrix</h1><span class="codelink"><a href="VisionEgg.ThreeDeeMath-pysrc.html#TransformMatrix">source code</a></span><br /><br />
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__init__"></a><span class="summary-sig-name">__init__</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">matrix</span>=<span class="summary-sig-default">None</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.ThreeDeeMath-pysrc.html#TransformMatrix.__init__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.ThreeDeeMath.TransformMatrix-class.html#rotate" class="summary-sig-name">rotate</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">angle_degrees</span>,
+        <span class="summary-sig-arg">axis_x</span>,
+        <span class="summary-sig-arg">axis_y</span>,
+        <span class="summary-sig-arg">axis_z</span>)</span><br />
+      Follows the right hand rule.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.ThreeDeeMath-pysrc.html#TransformMatrix.rotate">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="translate"></a><span class="summary-sig-name">translate</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">x</span>,
+        <span class="summary-sig-arg">y</span>,
+        <span class="summary-sig-arg">z</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.ThreeDeeMath-pysrc.html#TransformMatrix.translate">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="scale"></a><span class="summary-sig-name">scale</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">x</span>,
+        <span class="summary-sig-arg">y</span>,
+        <span class="summary-sig-arg">z</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.ThreeDeeMath-pysrc.html#TransformMatrix.scale">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="get_matrix"></a><span class="summary-sig-name">get_matrix</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.ThreeDeeMath-pysrc.html#TransformMatrix.get_matrix">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="transform_vertices"></a><span class="summary-sig-name">transform_vertices</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">verts</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.ThreeDeeMath-pysrc.html#TransformMatrix.transform_vertices">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Method Details</span></td>
+</tr>
+</table>
+<a name="rotate"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">rotate</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">angle_degrees</span>,
+        <span class="sig-arg">axis_x</span>,
+        <span class="sig-arg">axis_y</span>,
+        <span class="sig-arg">axis_z</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.ThreeDeeMath-pysrc.html#TransformMatrix.rotate">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Follows the right hand rule.
+
+I visualize the right hand rule most easily as follows:
+Naturally, using your right hand, wrap it around the axis of
+rotation. Your fingers now point in the direction of rotation.
+
+</pre>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:47 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.WrappedText-module.html b/doc/reference/html/VisionEgg.WrappedText-module.html
new file mode 100644
index 0000000..5697bc7
--- /dev/null
+++ b/doc/reference/html/VisionEgg.WrappedText-module.html
@@ -0,0 +1,161 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.WrappedText</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        Module WrappedText
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.WrappedText-module.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== MODULE DESCRIPTION ==================== -->
+<h1 class="epydoc">Module WrappedText</h1><span class="codelink"><a href="VisionEgg.WrappedText-pysrc.html">source code</a></span><br /><br />
+<pre class="literalblock">
+Module containing the Multi-line text stimulus class WrappedText, as well
+as a simple example of its use.
+
+</pre><br /><br />
+
+<!-- ==================== CLASSES ==================== -->
+<a name="section-Classes"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Classes</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.WrappedText.WrappedText-class.html" class="summary-name">WrappedText</a><br />
+      Multi-line text stimulus.
+    </td>
+  </tr>
+</table>
+<!-- ==================== FUNCTIONS ==================== -->
+<a name="section-Functions"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Functions</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="main"></a><span class="summary-sig-name">main</span>()</span><br />
+      Launch VisionEgg and demo the WrappedText object</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.WrappedText-pysrc.html#main">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.WrappedText-pysrc.html b/doc/reference/html/VisionEgg.WrappedText-pysrc.html
new file mode 100644
index 0000000..7a47cb5
--- /dev/null
+++ b/doc/reference/html/VisionEgg.WrappedText-pysrc.html
@@ -0,0 +1,471 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.WrappedText</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        Module WrappedText
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.WrappedText-pysrc.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<h1 class="epydoc">Source Code for <a href="VisionEgg.WrappedText-module.html">Module VisionEgg.WrappedText</a></h1>
+<pre class="py-src">
+<a name="L1"></a><tt class="py-lineno">  1</tt>  <tt class="py-line"><tt class="py-comment">#!/usr/bin/env python</tt> </tt>
+<a name="L2"></a><tt class="py-lineno">  2</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-docstring">"""Module containing the Multi-line text stimulus class WrappedText, as well</tt> </tt>
+<a name="L3"></a><tt class="py-lineno">  3</tt>  <tt class="py-line"><tt class="py-docstring">as a simple example of its use."""</tt> </tt>
+<a name="L4"></a><tt class="py-lineno">  4</tt>  <tt class="py-line"><tt class="py-comment"># Copyright (c) 2007 Eamon Caddigan, University of Illinois</tt> </tt>
+<a name="L5"></a><tt class="py-lineno">  5</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># License: LGPL (see LICENSE.txt distributed with this file)</tt> </tt>
+<a name="L6"></a><tt class="py-lineno">  6</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Created on 2007-11-15</tt> </tt>
+<a name="L7"></a><tt class="py-lineno">  7</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># </tt> </tt>
+<a name="L8"></a><tt class="py-lineno">  8</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># TODO: (more of a wishlist)</tt> </tt>
+<a name="L9"></a><tt class="py-lineno">  9</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#   * anchor parameter</tt> </tt>
+<a name="L10"></a><tt class="py-lineno"> 10</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#   * angle parameter (I dunno, maybe you want some paragraphs tilted)</tt> </tt>
+<a name="L11"></a><tt class="py-lineno"> 11</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#   * more robust line length calculation</tt> </tt>
+<a name="L12"></a><tt class="py-lineno"> 12</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#   * wholesale replacement of this module with *real* formatted text (e.g.,</tt> </tt>
+<a name="L13"></a><tt class="py-lineno"> 13</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment">#     ghostscript). The kerning of pygame's text is atrocious.</tt> </tt>
+<a name="L14"></a><tt class="py-lineno"> 14</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L15"></a><tt class="py-lineno"> 15</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-0" class="py-name" targets="Package VisionEgg=VisionEgg-module.html"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-0', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-1" class="py-name" targets="Module VisionEgg.Core=VisionEgg.Core-module.html"><a title="VisionEgg.Core" class="py-name" href="#" onclick="return  [...]
+<a name="L16"></a><tt class="py-lineno"> 16</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-2" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-2', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-3" class="py-name" targets="Module VisionEgg.Text=VisionEgg.Text-module.html,Class VisionEgg.Text.Text=VisionEgg.Text.Text-class.html"><a title="VisionEgg.Text
+VisionEgg.Text.Text" class="py-name" href="#" onclick="return doclink('link-3', 'Text', 'link-3');">Text</a></tt> </tt>
+<a name="L17"></a><tt class="py-lineno"> 17</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-4" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-4', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-5" class="py-name" targets="Module VisionEgg.Textures=VisionEgg.Textures-module.html"><a title="VisionEgg.Textures" class="py-name" href="#" onclick="return doclink('link-5', 'Textures', 'link-5' [...]
+<a name="L18"></a><tt class="py-lineno"> 18</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-6" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-6', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-7" class="py-name" targets="Module VisionEgg.ParameterTypes=VisionEgg.ParameterTypes-module.html"><a title="VisionEgg.ParameterTypes" class="py-name" href="#" onclick="return doclink('link-7', 'P [...]
+<a name="L19"></a><tt class="py-lineno"> 19</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">textwrap</tt> </tt>
+<a name="L20"></a><tt class="py-lineno"> 20</tt>  <tt class="py-line"> </tt>
+<a name="WrappedText"></a><div id="WrappedText-def"><a name="L21"></a><tt class="py-lineno"> 21</tt> <a class="py-toggle" href="#" id="WrappedText-toggle" onclick="return toggle('WrappedText');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.WrappedText.WrappedText-class.html">WrappedText</a><tt class="py-op">(</tt><tt class="py-base-class">VisionEgg</tt><tt class="py-op">.</tt><tt class="py-base-class">Core</tt><tt class="py-op">.</tt>< [...]
+</div><div id="WrappedText-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="WrappedText-expanded"><a name="L22"></a><tt class="py-lineno"> 22</tt>  <tt class="py-line">  <tt class="py-docstring">"""Multi-line text stimulus. No fancy formatting, but line breaks ('\\n')</tt> </tt>
+<a name="L23"></a><tt class="py-lineno"> 23</tt>  <tt class="py-line"><tt class="py-docstring">  are preserved, and text is wrapped to fit within the stimulus</tt> </tt>
+<a name="L24"></a><tt class="py-lineno"> 24</tt>  <tt class="py-line"><tt class="py-docstring">  boundaries."""</tt> </tt>
+<a name="L25"></a><tt class="py-lineno"> 25</tt>  <tt class="py-line"> </tt>
+<a name="L26"></a><tt class="py-lineno"> 26</tt>  <tt class="py-line">  <tt id="link-8" class="py-name" targets="Variable VisionEgg.ClassWithParameters.parameters_and_defaults=VisionEgg.ClassWithParameters-class.html#parameters_and_defaults,Variable VisionEgg.Core.FixationSpot.parameters_and_defaults=VisionEgg.Core.FixationSpot-class.html#parameters_and_defaults,Variable VisionEgg.Core.ProjectionBaseClass.parameters_and_defaults=VisionEgg.Core.ProjectionBaseClass-class.html#parameters_an [...]
+VisionEgg.Core.FixationSpot.parameters_and_defaults
+VisionEgg.Core.ProjectionBaseClass.parameters_and_defaults
+VisionEgg.Core.Screen.parameters_and_defaults
+VisionEgg.Core.Viewport.parameters_and_defaults
+VisionEgg.Daq.Buffered.parameters_and_defaults
+VisionEgg.Dots.DotArea2D.parameters_and_defaults
+VisionEgg.FlowControl.Presentation.parameters_and_defaults
+VisionEgg.Gratings.AlphaGratingCommon.parameters_and_defaults
+VisionEgg.Gratings.LuminanceGratingCommon.parameters_and_defaults
+VisionEgg.Gratings.SinGrating2D.parameters_and_defaults
+VisionEgg.Gratings.SinGrating3D.parameters_and_defaults
+VisionEgg.MoreStimuli.Arrow.parameters_and_defaults
+VisionEgg.MoreStimuli.FilledCircle.parameters_and_defaults
+VisionEgg.MoreStimuli.Rectangle3D.parameters_and_defaults
+VisionEgg.MoreStimuli.Target2D.parameters_and_defaults
+VisionEgg.PyroApps.EPhysGUI.Loop.parameters_and_defaults
+VisionEgg.SphereMap.AzElGrid.parameters_and_defaults
+VisionEgg.SphereMap.SphereGrating.parameters_and_defaults
+VisionEgg.SphereMap.SphereMap.parameters_and_defaults
+VisionEgg.SphereMap.SphereWindow.parameters_and_defaults
+VisionEgg.Text.BitmapText.parameters_and_defaults
+VisionEgg.Text.GlutTextBase.parameters_and_defaults
+VisionEgg.Text.StrokeText.parameters_and_defaults
+VisionEgg.Text.Text.parameters_and_defaults
+VisionEgg.Textures.FixationCross.parameters_and_defaults
+VisionEgg.Textures.SpinningDrum.parameters_and_defaults
+VisionEgg.Textures.TextureStimulus.parameters_and_defaults
+VisionEgg.Textures.TextureStimulus3D.parameters_and_defaults
+VisionEgg.Textures.TextureStimulusBaseClass.parameters_and_defaults
+VisionEgg.WrappedText.WrappedText.parameters_and_defaults" class="py-name" href="#" onclick="return doclink('link-8', 'parameters_and_defaults', 'link-8');">parameters_and_defaults</a></tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> </tt>
+<a name="L27"></a><tt class="py-lineno"> 27</tt>  <tt class="py-line">    <tt class="py-string">'on'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-name">True</tt><tt class="py-op">,</tt> <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-9" class="py-name" targets="Class VisionEgg.ParameterTypes.Boolean=VisionEgg.ParameterTypes.Boolean-class.html"><a title="VisionEgg.ParameterTypes.Boolean" class="py-name" href="#" onclick="return doclink('link-9',  [...]
+<a name="L28"></a><tt class="py-lineno"> 28</tt>  <tt class="py-line">    <tt class="py-string">'position'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-number">0.0</tt><tt class="py-op">,</tt><tt class="py-number">0.0</tt><tt class="py-op">)</tt><tt class="py-op">,</tt>  </tt>
+<a name="L29"></a><tt class="py-lineno"> 29</tt>  <tt class="py-line">        <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-10" class="py-name" targets="Class VisionEgg.ParameterTypes.AnyOf=VisionEgg.ParameterTypes.AnyOf-class.html"><a title="VisionEgg.ParameterTypes.AnyOf" class="py-name" href="#" onclick="return doclink('link-10', 'AnyOf', 'link-10');">AnyOf</a></tt><tt class="py-op">(</tt><tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-11" [...]
+<a name="L30"></a><tt class="py-lineno"> 30</tt>  <tt class="py-line">          <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-13" class="py-name" targets="Class VisionEgg.ParameterTypes.Sequence3=VisionEgg.ParameterTypes.Sequence3-class.html"><a title="VisionEgg.ParameterTypes.Sequence3" class="py-name" href="#" onclick="return doclink('link-13', 'Sequence3', 'link-13');">Sequence3</a></tt><tt class="py-op">(</tt><tt class="py-name">ve_types</tt><tt class="py-op"> [...]
+<a name="L31"></a><tt class="py-lineno"> 31</tt>  <tt class="py-line">          <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-15" class="py-name" targets="Class VisionEgg.ParameterTypes.Sequence4=VisionEgg.ParameterTypes.Sequence4-class.html"><a title="VisionEgg.ParameterTypes.Sequence4" class="py-name" href="#" onclick="return doclink('link-15', 'Sequence4', 'link-15');">Sequence4</a></tt><tt class="py-op">(</tt><tt class="py-name">ve_types</tt><tt class="py-op"> [...]
+<a name="L32"></a><tt class="py-lineno"> 32</tt>  <tt class="py-line">    <tt class="py-string">'size'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-17" class="py-name"><a title="VisionEgg.ParameterTypes.Sequence2" class="py-name" href="#" onclick="return doclink('link-17', 'Sequence2', 'link-11');">Sequence2</a></tt><tt class="py-op">(</tt><tt class="py-name" [...]
+<a name="L33"></a><tt class="py-lineno"> 33</tt>  <tt class="py-line">        <tt class="py-string">"""Defaults to the size of the screen."""</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L34"></a><tt class="py-lineno"> 34</tt>  <tt class="py-line">    <tt class="py-string">'text'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-string">'hello'</tt><tt class="py-op">,</tt> <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-19" class="py-name"><a title="VisionEgg.ParameterTypes.AnyOf" class="py-name" href="#" onclick="return doclink('link-19', 'AnyOf', 'link-10');">AnyOf</a></tt><tt class="py-op">(</tt><tt class="py-name">ve_typ [...]
+<a name="L35"></a><tt class="py-lineno"> 35</tt>  <tt class="py-line">    <tt class="py-string">'color'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-number">1.0</tt><tt class="py-op">,</tt><tt class="py-number">1.0</tt><tt class="py-op">,</tt><tt class="py-number">1.0</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L36"></a><tt class="py-lineno"> 36</tt>  <tt class="py-line">        <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-22" class="py-name"><a title="VisionEgg.ParameterTypes.AnyOf" class="py-name" href="#" onclick="return doclink('link-22', 'AnyOf', 'link-10');">AnyOf</a></tt><tt class="py-op">(</tt><tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-23" class="py-name"><a title="VisionEgg.ParameterTypes.Sequence3" class="py-name" href="#" o [...]
+<a name="L37"></a><tt class="py-lineno"> 37</tt>  <tt class="py-line">          <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-25" class="py-name"><a title="VisionEgg.ParameterTypes.Sequence4" class="py-name" href="#" onclick="return doclink('link-25', 'Sequence4', 'link-15');">Sequence4</a></tt><tt class="py-op">(</tt><tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-26" class="py-name"><a title="VisionEgg.ParameterTypes.Real" class="py-name" h [...]
+<a name="L38"></a><tt class="py-lineno"> 38</tt>  <tt class="py-line">  <tt class="py-op">}</tt> </tt>
+<a name="L39"></a><tt class="py-lineno"> 39</tt>  <tt class="py-line"> </tt>
+<a name="L40"></a><tt class="py-lineno"> 40</tt>  <tt class="py-line">  <tt id="link-27" class="py-name" targets="Variable VisionEgg.ClassWithParameters.constant_parameters_and_defaults=VisionEgg.ClassWithParameters-class.html#constant_parameters_and_defaults,Variable VisionEgg.Core.Screen.constant_parameters_and_defaults=VisionEgg.Core.Screen-class.html#constant_parameters_and_defaults,Variable VisionEgg.Daq.Analog.constant_parameters_and_defaults=VisionEgg.Daq.Analog-class.html#constan [...]
+VisionEgg.Core.Screen.constant_parameters_and_defaults
+VisionEgg.Daq.Analog.constant_parameters_and_defaults
+VisionEgg.Daq.Channel.constant_parameters_and_defaults
+VisionEgg.Daq.SignalType.constant_parameters_and_defaults
+VisionEgg.Dots.DotArea2D.constant_parameters_and_defaults
+VisionEgg.SphereMap.AzElGrid.constant_parameters_and_defaults
+VisionEgg.Text.Text.constant_parameters_and_defaults
+VisionEgg.Textures.FixationCross.constant_parameters_and_defaults
+VisionEgg.Textures.Mask2D.constant_parameters_and_defaults
+VisionEgg.Textures.TextureStimulusBaseClass.constant_parameters_and_defaults
+VisionEgg.WrappedText.WrappedText.constant_parameters_and_defaults" class="py-name" href="#" onclick="return doclink('link-27', 'constant_parameters_and_defaults', 'link-27');">constant_parameters_and_defaults</a></tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> </tt>
+<a name="L41"></a><tt class="py-lineno"> 41</tt>  <tt class="py-line">    <tt class="py-string">'font_name'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-28" class="py-name"><a title="VisionEgg.ParameterTypes.AnyOf" class="py-name" href="#" onclick="return doclink('link-28', 'AnyOf', 'link-10');">AnyOf</a></tt><tt class="py-op">(</tt><tt class="py-name">ve_typ [...]
+<a name="L42"></a><tt class="py-lineno"> 42</tt>  <tt class="py-line">        <tt class="py-string">"Name of font to use. If None, use the default font"</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L43"></a><tt class="py-lineno"> 43</tt>  <tt class="py-line">    <tt class="py-string">'font_size'</tt><tt class="py-op">:</tt><tt class="py-op">(</tt><tt class="py-number">30</tt><tt class="py-op">,</tt> <tt class="py-name">ve_types</tt><tt class="py-op">.</tt><tt id="link-31" class="py-name" targets="Class VisionEgg.ParameterTypes.UnsignedInteger=VisionEgg.ParameterTypes.UnsignedInteger-class.html"><a title="VisionEgg.ParameterTypes.UnsignedInteger" class="py-name" href="#" on [...]
+<a name="L44"></a><tt class="py-lineno"> 44</tt>  <tt class="py-line">  <tt class="py-op">}</tt> </tt>
+<a name="L45"></a><tt class="py-lineno"> 45</tt>  <tt class="py-line"> </tt>
+<a name="WrappedText.__init__"></a><div id="WrappedText.__init__-def"><a name="L46"></a><tt class="py-lineno"> 46</tt> <a class="py-toggle" href="#" id="WrappedText.__init__-toggle" onclick="return toggle('WrappedText.__init__');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.WrappedText.WrappedText-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><t [...]
+</div><div id="WrappedText.__init__-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="WrappedText.__init__-expanded"><a name="L47"></a><tt class="py-lineno"> 47</tt>  <tt class="py-line">    <tt class="py-docstring">"""Initialize the object, perform the initial line-splitting"""</tt> </tt>
+<a name="L48"></a><tt class="py-lineno"> 48</tt>  <tt class="py-line">    <tt id="link-32" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-32', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-33" class="py-name"><a title="VisionEgg.Core" class="py-name" href="#" onclick="return doclink('link-33', 'Core', 'link-1');">Core</a></tt><tt class="py-op">.</tt><tt id="link-34" class="py-name" targets="Class VisionEgg.Cor [...]
+VisionEgg.Configuration.Config.__init__
+VisionEgg.Core.FixationSpot.__init__
+VisionEgg.Core.FrameTimer.__init__
+VisionEgg.Core.ModelView.__init__
+VisionEgg.Core.OrthographicProjection.__init__
+VisionEgg.Core.OrthographicProjectionNoZClip.__init__
+VisionEgg.Core.PerspectiveProjection.__init__
+VisionEgg.Core.Projection.__init__
+VisionEgg.Core.ProjectionBaseClass.__init__
+VisionEgg.Core.Screen.__init__
+VisionEgg.Core.SimplePerspectiveProjection.__init__
+VisionEgg.Core.Stimulus.__init__
+VisionEgg.Core.Viewport.__init__
+VisionEgg.Daq.Channel.__init__
+VisionEgg.Daq.DaqMode.__init__
+VisionEgg.Daq.Device.__init__
+VisionEgg.Daq.Functionality.__init__
+VisionEgg.Daq.SignalType.__init__
+VisionEgg.DaqKeyboard.KeyboardTriggerInController.__init__
+VisionEgg.DaqLPT.LPTChannel.__init__
+VisionEgg.DaqLPT.LPTDevice.__init__
+VisionEgg.DaqLPT.LPTTriggerInController.__init__
+VisionEgg.DaqLPT.LPTTriggerOutController.__init__
+VisionEgg.Deprecated.Message.__init__
+VisionEgg.Dots.DotArea2D.__init__
+VisionEgg.FlowControl.ConstantController.__init__
+VisionEgg.FlowControl.Controller.__init__
+VisionEgg.FlowControl.EncapsulatedController.__init__
+VisionEgg.FlowControl.EvalStringController.__init__
+VisionEgg.FlowControl.ExecStringController.__init__
+VisionEgg.FlowControl.FunctionController.__init__
+VisionEgg.FlowControl.Presentation.__init__
+VisionEgg.GLTrace.Wrapper.__init__
+VisionEgg.GUI.AppWindow.__init__
+VisionEgg.GUI.GetKeypressDialog.__init__
+VisionEgg.GUI.GraphicsConfigurationWindow.__init__
+VisionEgg.GUI.InfoFrame.__init__
+VisionEgg.GUI.ProgressBar.__init__
+VisionEgg.GUI.ToplevelDialog.__init__
+VisionEgg.Gratings.SinGrating2D.__init__
+VisionEgg.Gratings.SinGrating3D.__init__
+VisionEgg.MoreStimuli.Arrow.__init__
+VisionEgg.MoreStimuli.FilledCircle.__init__
+VisionEgg.MoreStimuli.Rectangle3D.__init__
+VisionEgg.MoreStimuli.Target2D.__init__
+VisionEgg.ParameterTypes.AnyOf.__init__
+VisionEgg.ParameterTypes.Instance.__init__
+VisionEgg.ParameterTypes.Sequence.__init__
+VisionEgg.ParameterTypes.SubClass.__init__
+VisionEgg.PyroApps.AST_ext.AST_Visitor.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalMetaParameters.__init__
+VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.__init__
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.__init__
+VisionEgg.PyroApps.DropinGUI.DropinMetaParameters.__init__
+VisionEgg.PyroApps.DropinServer.DropinMetaController.__init__
+VisionEgg.PyroApps.EPhysGUI.AppWindow.__init__
+VisionEgg.PyroApps.EPhysGUI.BarButton.__init__
+VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase.__init__
+VisionEgg.PyroApps.EPhysGUI.GammaFrame.__init__
+VisionEgg.PyroApps.EPhysGUI.ImageSequenceLauncher.__init__
+VisionEgg.PyroApps.EPhysGUI.Loop.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopContainedObject.__init__
+VisionEgg.PyroApps.EPhysGUI.LoopParamDialog.__init__
+VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.__init__
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.__init__
+VisionEgg.PyroApps.EPhysServer.EPhysServer.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.__init__
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingMetaParameters.__init__
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.GridGUI.GridControlFrame.__init__
+VisionEgg.PyroApps.GridGUI.GridMetaParameters.__init__
+VisionEgg.PyroApps.GridServer.GridMetaController.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.__init__
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetMetaParameters.__init__
+VisionEgg.PyroApps.MouseTargetServer.MousePositionController.__init__
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetOrientationController.__init__
+VisionEgg.PyroApps.MouseTargetServer.TargetPositionController.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.CallbackEntry.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionParameters.__init__
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.__init__
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingMetaParameters.__init__
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.__init__
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumMetaParameters.__init__
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.__init__
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.__init__
+VisionEgg.PyroApps.TargetGUI.TargetMetaParameters.__init__
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.__init__
+VisionEgg.PyroClient.PyroClient.__init__
+VisionEgg.PyroHelpers.PyroConstantController.__init__
+VisionEgg.PyroHelpers.PyroEncapsulatedController.__init__
+VisionEgg.PyroHelpers.PyroEvalStringController.__init__
+VisionEgg.PyroHelpers.PyroExecStringController.__init__
+VisionEgg.PyroHelpers.PyroListenController.__init__
+VisionEgg.PyroHelpers.PyroLocalDictController.__init__
+VisionEgg.PyroHelpers.PyroServer.__init__
+VisionEgg.QuickTime.MovieTexture.__init__
+VisionEgg.ResponseControl.KeyboardResponseController.__init__
+VisionEgg.ResponseControl.ResponseController.__init__
+VisionEgg.SphereMap.AzElGrid.__init__
+VisionEgg.SphereMap.SphereGrating.__init__
+VisionEgg.SphereMap.SphereMap.__init__
+VisionEgg.SphereMap.SphereWindow.__init__
+VisionEgg.TCPController.SocketListenController.__init__
+VisionEgg.TCPController.TCPController.__init__
+VisionEgg.TCPController.TCPServer.__init__
+VisionEgg.Text.BitmapText.__init__
+VisionEgg.Text.GlutTextBase.__init__
+VisionEgg.Text.StrokeText.__init__
+VisionEgg.Text.Text.__init__
+VisionEgg.Textures.FixationCross.__init__
+VisionEgg.Textures.Mask2D.__init__
+VisionEgg.Textures.SpinningDrum.__init__
+VisionEgg.Textures.Texture.__init__
+VisionEgg.Textures.TextureFromFile.__init__
+VisionEgg.Textures.TextureObject.__init__
+VisionEgg.Textures.TextureStimulusBaseClass.__init__
+VisionEgg.ThreeDeeMath.TransformMatrix.__init__
+VisionEgg.WrappedText.WrappedText.__init__
+VisionEgg.qtmovie.Movie.__init__
+VisionEgg.qtmovie.Rect.__init__" class="py-name" href="#" onclick="return doclink('link-35', '__init__', 'link-35');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-name">kw</tt><tt class="py-op">)</tt> </tt>
+<a name="L49"></a><tt class="py-lineno"> 49</tt>  <tt class="py-line"> </tt>
+<a name="L50"></a><tt class="py-lineno"> 50</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt id="link-36" class="py-name" targets="Variable VisionEgg.Core.Screen.size=VisionEgg.Core.Screen-class.html#size"><a title="VisionEgg.Core.Screen.size" class="py-name" href="#" onclick="return doclink('link-36', 'size', 'link-36');">size</a></tt> <tt class="py-keyword">is [...]
+<a name="L51"></a><tt class="py-lineno"> 51</tt>  <tt class="py-line">      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt id="link-37" class="py-name"><a title="VisionEgg.Core.Screen.size" class="py-name" href="#" onclick="return doclink('link-37', 'size', 'link-36');">size</a></tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt id="link-38" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="r [...]
+<a name="L52"></a><tt class="py-lineno"> 52</tt>  <tt class="py-line">          <tt id="link-40" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-40', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-41" class="py-name"><a title="VisionEgg.config" class="py-name" href="#" onclick="return doclink('link-41', 'config', 'link-39');">config</a></tt><tt class="py-op">.</tt><tt class="py-name">VISIONEGG_SCREEN_H</tt><tt c [...]
+<a name="L53"></a><tt class="py-lineno"> 53</tt>  <tt class="py-line"> </tt>
+<a name="L54"></a><tt class="py-lineno"> 54</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_splitText</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L55"></a><tt class="py-lineno"> 55</tt>  <tt class="py-line"> </tt>
+<a name="WrappedText._splitText"></a><div id="WrappedText._splitText-def"><a name="L56"></a><tt class="py-lineno"> 56</tt> <a class="py-toggle" href="#" id="WrappedText._splitText-toggle" onclick="return toggle('WrappedText._splitText');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.WrappedText.WrappedText-class.html#_splitText">_splitText</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op [...]
+</div><div id="WrappedText._splitText-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="WrappedText._splitText-expanded"><a name="L57"></a><tt class="py-lineno"> 57</tt>  <tt class="py-line">    <tt class="py-docstring">"""Split a single string into multiple lines of text, storing each as a</tt> </tt>
+<a name="L58"></a><tt class="py-lineno"> 58</tt>  <tt class="py-line"><tt class="py-docstring">    VisionEgg.Text.Text instance"""</tt> </tt>
+<a name="L59"></a><tt class="py-lineno"> 59</tt>  <tt class="py-line">    <tt class="py-name">p</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt> </tt>
+<a name="L60"></a><tt class="py-lineno"> 60</tt>  <tt class="py-line">    <tt class="py-name">cp</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">constant_parameters</tt> </tt>
+<a name="L61"></a><tt class="py-lineno"> 61</tt>  <tt class="py-line"> </tt>
+<a name="L62"></a><tt class="py-lineno"> 62</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_text</tt> <tt class="py-op">=</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">text</tt> </tt>
+<a name="L63"></a><tt class="py-lineno"> 63</tt>  <tt class="py-line"> </tt>
+<a name="L64"></a><tt class="py-lineno"> 64</tt>  <tt class="py-line">    <tt class="py-name">textAreaWidth</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L65"></a><tt class="py-lineno"> 65</tt>  <tt class="py-line">    <tt class="py-name">maxLineLength</tt> <tt class="py-op">=</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_text</tt><tt class="py-op">)</tt> </tt>
+<a name="L66"></a><tt class="py-lineno"> 66</tt>  <tt class="py-line">    <tt class="py-name">minLineLength</tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L67"></a><tt class="py-lineno"> 67</tt>  <tt class="py-line">    <tt class="py-name">lineLength</tt> <tt class="py-op">=</tt> <tt class="py-name">maxLineLength</tt> </tt>
+<a name="L68"></a><tt class="py-lineno"> 68</tt>  <tt class="py-line">    <tt class="py-keyword">while</tt> <tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-name">textAreaWidth</tt> <tt class="py-op">></tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt id="link-42" class="py-name"><a title="VisionEgg.Core.Screen.size" class="py-name" href="#" onclick="return doclink('link-42', 'size', 'link-36');">size</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><t [...]
+<a name="L69"></a><tt class="py-lineno"> 69</tt>  <tt class="py-line">        <tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-name">maxLineLength</tt><tt class="py-op">-</tt><tt class="py-name">minLineLength</tt><tt class="py-op">)</tt> <tt class="py-op">></tt> <tt class="py-number">1</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-op">(</tt><tt class="py-name">maxLineLength</tt> <tt class="py-op">></tt> <tt class="py [...]
+<a name="L70"></a><tt class="py-lineno"> 70</tt>  <tt class="py-line">      <tt class="py-name">nextPosition</tt> <tt class="py-op">=</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">position</tt> </tt>
+<a name="L71"></a><tt class="py-lineno"> 71</tt>  <tt class="py-line">      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_textLines</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L72"></a><tt class="py-lineno"> 72</tt>  <tt class="py-line"> </tt>
+<a name="L73"></a><tt class="py-lineno"> 73</tt>  <tt class="py-line">      <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L74"></a><tt class="py-lineno"> 74</tt>  <tt class="py-line">        <tt class="py-name">textLineList</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L75"></a><tt class="py-lineno"> 75</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">text</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_text</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">"\n"</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L76"></a><tt class="py-lineno"> 76</tt>  <tt class="py-line">          <tt class="py-keyword">if</tt> <tt class="py-name">text</tt> <tt class="py-op">==</tt> <tt class="py-string">""</tt><tt class="py-op">:</tt> </tt>
+<a name="L77"></a><tt class="py-lineno"> 77</tt>  <tt class="py-line">            <tt class="py-name">textLineList</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-string">""</tt><tt class="py-op">)</tt> </tt>
+<a name="L78"></a><tt class="py-lineno"> 78</tt>  <tt class="py-line">          <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L79"></a><tt class="py-lineno"> 79</tt>  <tt class="py-line">            <tt class="py-name">textLineList</tt><tt class="py-op">.</tt><tt class="py-name">extend</tt><tt class="py-op">(</tt><tt class="py-name">textwrap</tt><tt class="py-op">.</tt><tt class="py-name">wrap</tt><tt class="py-op">(</tt><tt class="py-name">text</tt><tt class="py-op">,</tt> <tt class="py-name">lineLength</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L80"></a><tt class="py-lineno"> 80</tt>  <tt class="py-line"> </tt>
+<a name="L81"></a><tt class="py-lineno"> 81</tt>  <tt class="py-line">        <tt class="py-name">textAreaWidth</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L82"></a><tt class="py-lineno"> 82</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">textLine</tt> <tt class="py-keyword">in</tt> <tt class="py-name">textLineList</tt><tt class="py-op">:</tt> </tt>
+<a name="L83"></a><tt class="py-lineno"> 83</tt>  <tt class="py-line">          <tt class="py-keyword">if</tt> <tt class="py-name">textLine</tt> <tt class="py-op">!=</tt> <tt class="py-string">""</tt><tt class="py-op">:</tt> </tt>
+<a name="L84"></a><tt class="py-lineno"> 84</tt>  <tt class="py-line">            <tt class="py-name">line</tt> <tt class="py-op">=</tt> <tt id="link-43" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-43', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-44" class="py-name"><a title="VisionEgg.Text
+VisionEgg.Text.Text" class="py-name" href="#" onclick="return doclink('link-44', 'Text', 'link-3');">Text</a></tt><tt class="py-op">.</tt><tt id="link-45" class="py-name"><a title="VisionEgg.Text
+VisionEgg.Text.Text" class="py-name" href="#" onclick="return doclink('link-45', 'Text', 'link-3');">Text</a></tt><tt class="py-op">(</tt><tt class="py-name">text</tt><tt class="py-op">=</tt><tt class="py-name">textLine</tt><tt class="py-op">,</tt> </tt>
+<a name="L85"></a><tt class="py-lineno"> 85</tt>  <tt class="py-line">                <tt class="py-name">position</tt> <tt class="py-op">=</tt> <tt class="py-name">nextPosition</tt><tt class="py-op">,</tt> </tt>
+<a name="L86"></a><tt class="py-lineno"> 86</tt>  <tt class="py-line">                <tt class="py-name">anchor</tt> <tt class="py-op">=</tt> <tt class="py-string">"upperleft"</tt><tt class="py-op">,</tt> </tt>
+<a name="L87"></a><tt class="py-lineno"> 87</tt>  <tt class="py-line">                <tt class="py-name">ignore_size_parameter</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt><tt class="py-op">,</tt> </tt>
+<a name="L88"></a><tt class="py-lineno"> 88</tt>  <tt class="py-line">                <tt class="py-name">color</tt> <tt class="py-op">=</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">color</tt><tt class="py-op">,</tt> </tt>
+<a name="L89"></a><tt class="py-lineno"> 89</tt>  <tt class="py-line">                <tt class="py-name">font_name</tt> <tt class="py-op">=</tt> <tt class="py-name">cp</tt><tt class="py-op">.</tt><tt class="py-name">font_name</tt><tt class="py-op">,</tt> </tt>
+<a name="L90"></a><tt class="py-lineno"> 90</tt>  <tt class="py-line">                <tt class="py-name">font_size</tt> <tt class="py-op">=</tt> <tt class="py-name">cp</tt><tt class="py-op">.</tt><tt class="py-name">font_size</tt><tt class="py-op">)</tt> </tt>
+<a name="L91"></a><tt class="py-lineno"> 91</tt>  <tt class="py-line">            <tt class="py-name">textAreaWidth</tt> <tt class="py-op">=</tt> <tt class="py-name">max</tt><tt class="py-op">(</tt><tt class="py-name">textAreaWidth</tt><tt class="py-op">,</tt> <tt class="py-name">line</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt id="link-46" class="py-name"><a title="VisionEgg.Core.Screen.size" class="py-name" href="#" onclick="return doclink [...]
+<a name="L92"></a><tt class="py-lineno"> 92</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_textLines</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">line</tt><tt class="py-op">)</tt> </tt>
+<a name="L93"></a><tt class="py-lineno"> 93</tt>  <tt class="py-line"> </tt>
+<a name="L94"></a><tt class="py-lineno"> 94</tt>  <tt class="py-line">          <tt class="py-name">nextPosition</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">nextPosition</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L95"></a><tt class="py-lineno"> 95</tt>  <tt class="py-line">              <tt class="py-name">nextPosition</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">-</tt><tt class="py-name">line</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt id="link-47" class="py-name"><a title="VisionEgg.Core.Screen.size" class="py-name" href="#" onclick="return doclink('link-47', 'size', 'link-36');">size</a [...]
+<a name="L96"></a><tt class="py-lineno"> 96</tt>  <tt class="py-line"> </tt>
+<a name="L97"></a><tt class="py-lineno"> 97</tt>  <tt class="py-line">          <tt class="py-comment"># Stop adding lines if the text area's height has been reached</tt> </tt>
+<a name="L98"></a><tt class="py-lineno"> 98</tt>  <tt class="py-line"><tt class="py-comment"></tt>          <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">position</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-op">-</tt> <tt class="py-name">nextPosition</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> <tt cl [...]
+<a name="L99"></a><tt class="py-lineno"> 99</tt>  <tt class="py-line">            <tt class="py-keyword">break</tt> </tt>
+<a name="L100"></a><tt class="py-lineno">100</tt>  <tt class="py-line"> </tt>
+<a name="L101"></a><tt class="py-lineno">101</tt>  <tt class="py-line">      <tt class="py-keyword">except</tt> <tt id="link-49" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-49', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-50" class="py-name"><a title="VisionEgg.Textures" class="py-name" href="#" onclick="return doclink('link-50', 'Textures', 'link-5');">Textures</a></tt><tt class="py-op">.</tt><tt id="lin [...]
+<a name="L102"></a><tt class="py-lineno">102</tt>  <tt class="py-line">        <tt class="py-name">textAreaWidth</tt> <tt class="py-op">=</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt id="link-52" class="py-name"><a title="VisionEgg.Core.Screen.size" class="py-name" href="#" onclick="return doclink('link-52', 'size', 'link-36');">size</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">+</tt><tt class="py-number">1</tt> </tt>
+<a name="L103"></a><tt class="py-lineno">103</tt>  <tt class="py-line"> </tt>
+<a name="L104"></a><tt class="py-lineno">104</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-name">textAreaWidth</tt> <tt class="py-op">></tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt id="link-53" class="py-name"><a title="VisionEgg.Core.Screen.size" class="py-name" href="#" onclick="return doclink('link-53', 'size', 'link-36');">size</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
+<a name="L105"></a><tt class="py-lineno">105</tt>  <tt class="py-line">        <tt class="py-name">maxLineLength</tt> <tt class="py-op">=</tt> <tt class="py-name">lineLength</tt> </tt>
+<a name="L106"></a><tt class="py-lineno">106</tt>  <tt class="py-line">      <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L107"></a><tt class="py-lineno">107</tt>  <tt class="py-line">        <tt class="py-name">minLineLength</tt> <tt class="py-op">=</tt> <tt class="py-name">lineLength</tt> </tt>
+<a name="L108"></a><tt class="py-lineno">108</tt>  <tt class="py-line">      <tt class="py-name">lineLength</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">maxLineLength</tt><tt class="py-op">+</tt><tt class="py-name">minLineLength</tt><tt class="py-op">)</tt><tt class="py-op">/</tt><tt class="py-number">2</tt> </tt>
+</div><a name="L109"></a><tt class="py-lineno">109</tt>  <tt class="py-line"> </tt>
+<a name="WrappedText.draw"></a><div id="WrappedText.draw-def"><a name="L110"></a><tt class="py-lineno">110</tt> <a class="py-toggle" href="#" id="WrappedText.draw-toggle" onclick="return toggle('WrappedText.draw');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.WrappedText.WrappedText-class.html#draw">draw</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="WrappedText.draw-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="WrappedText.draw-expanded"><a name="L111"></a><tt class="py-lineno">111</tt>  <tt class="py-line">    <tt class="py-docstring">"""Draw the lines of text on the screen"""</tt> </tt>
+<a name="L112"></a><tt class="py-lineno">112</tt>  <tt class="py-line">    <tt class="py-name">p</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt> </tt>
+<a name="L113"></a><tt class="py-lineno">113</tt>  <tt class="py-line"> </tt>
+<a name="L114"></a><tt class="py-lineno">114</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">on</tt><tt class="py-op">:</tt> </tt>
+<a name="L115"></a><tt class="py-lineno">115</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">text</tt> <tt class="py-op">!=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_text</tt><tt class="py-op">:</tt> </tt>
+<a name="L116"></a><tt class="py-lineno">116</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_splitText</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L117"></a><tt class="py-lineno">117</tt>  <tt class="py-line"> </tt>
+<a name="L118"></a><tt class="py-lineno">118</tt>  <tt class="py-line">      <tt class="py-keyword">for</tt> <tt class="py-name">line</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_textLines</tt><tt class="py-op">:</tt> </tt>
+<a name="L119"></a><tt class="py-lineno">119</tt>  <tt class="py-line">        <tt class="py-name">line</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">color</tt> <tt class="py-op">=</tt> <tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">color</tt> </tt>
+<a name="L120"></a><tt class="py-lineno">120</tt>  <tt class="py-line">        <tt class="py-name">line</tt><tt class="py-op">.</tt><tt id="link-54" class="py-name" targets="Method VisionEgg.Core.FixationSpot.draw()=VisionEgg.Core.FixationSpot-class.html#draw,Method VisionEgg.Core.Stimulus.draw()=VisionEgg.Core.Stimulus-class.html#draw,Method VisionEgg.Core.Viewport.draw()=VisionEgg.Core.Viewport-class.html#draw,Method VisionEgg.Dots.DotArea2D.draw()=VisionEgg.Dots.DotArea2D-class.html#d [...]
+VisionEgg.Core.Stimulus.draw
+VisionEgg.Core.Viewport.draw
+VisionEgg.Dots.DotArea2D.draw
+VisionEgg.Gratings.SinGrating2D.draw
+VisionEgg.Gratings.SinGrating3D.draw
+VisionEgg.MoreStimuli.Arrow.draw
+VisionEgg.MoreStimuli.FilledCircle.draw
+VisionEgg.MoreStimuli.Rectangle3D.draw
+VisionEgg.MoreStimuli.Target2D.draw
+VisionEgg.SphereMap.AzElGrid.draw
+VisionEgg.SphereMap.SphereGrating.draw
+VisionEgg.SphereMap.SphereMap.draw
+VisionEgg.SphereMap.SphereWindow.draw
+VisionEgg.Text.BitmapText.draw
+VisionEgg.Text.StrokeText.draw
+VisionEgg.Text.Text.draw
+VisionEgg.Textures.FixationCross.draw
+VisionEgg.Textures.SpinningDrum.draw
+VisionEgg.Textures.TextureStimulus.draw
+VisionEgg.Textures.TextureStimulus3D.draw
+VisionEgg.WrappedText.WrappedText.draw" class="py-name" href="#" onclick="return doclink('link-54', 'draw', 'link-54');">draw</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L121"></a><tt class="py-lineno">121</tt>  <tt class="py-line"> </tt>
+<a name="main"></a><div id="main-def"><a name="L122"></a><tt class="py-lineno">122</tt> <a class="py-toggle" href="#" id="main-toggle" onclick="return toggle('main');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.WrappedText-module.html#main">main</a><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="main-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="main-expanded"><a name="L123"></a><tt class="py-lineno">123</tt>  <tt class="py-line">  <tt class="py-docstring">"""Launch VisionEgg and demo the WrappedText object"""</tt> </tt>
+<a name="L124"></a><tt class="py-lineno">124</tt>  <tt class="py-line">  <tt class="py-keyword">import</tt> <tt id="link-55" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-55', 'VisionEgg', 'link-0');">VisionEgg</a></tt> </tt>
+<a name="L125"></a><tt class="py-lineno">125</tt>  <tt class="py-line">  <tt id="link-56" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-56', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-57" class="py-name" targets="Function VisionEgg.start_default_logging()=VisionEgg-module.html#start_default_logging"><a title="VisionEgg.start_default_logging" class="py-name" href="#" onclick="return doclink('link-57', 'star [...]
+<a name="L126"></a><tt class="py-lineno">126</tt>  <tt class="py-line">  <tt class="py-keyword">import</tt> <tt id="link-60" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-60', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-61" class="py-name" targets="Module VisionEgg.FlowControl=VisionEgg.FlowControl-module.html"><a title="VisionEgg.FlowControl" class="py-name" href="#" onclick="return doclink('link-61', 'Flo [...]
+<a name="L127"></a><tt class="py-lineno">127</tt>  <tt class="py-line"> </tt>
+<a name="L128"></a><tt class="py-lineno">128</tt>  <tt class="py-line">  <tt class="py-name">screen</tt> <tt class="py-op">=</tt> <tt id="link-62" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-62', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-63" class="py-name"><a title="VisionEgg.Core" class="py-name" href="#" onclick="return doclink('link-63', 'Core', 'link-1');">Core</a></tt><tt class="py-op">.</tt><tt i [...]
+<a name="L129"></a><tt class="py-lineno">129</tt>  <tt class="py-line"> </tt>
+<a name="L130"></a><tt class="py-lineno">130</tt>  <tt class="py-line">  <tt id="link-65" class="py-name" targets="Variable VisionEgg.Core.message=VisionEgg.Core-module.html#message"><a title="VisionEgg.Core.message" class="py-name" href="#" onclick="return doclink('link-65', 'message', 'link-65');">message</a></tt><tt class="py-op">=</tt><tt class="py-string">"""Hello.</tt> </tt>
+<a name="L131"></a><tt class="py-lineno">131</tt>  <tt class="py-line"><tt class="py-string"></tt> </tt>
+<a name="L132"></a><tt class="py-lineno">132</tt>  <tt class="py-line"><tt class="py-string">This is a demonstration of the WrappedText object, which was created to allow users of VisionEgg to include large blocks of text in their programs. While this stimulus has many limitations, it should be useful for presenting on-screen instructions in experiments.</tt> </tt>
+<a name="L133"></a><tt class="py-lineno">133</tt>  <tt class="py-line"><tt class="py-string"></tt> </tt>
+<a name="L134"></a><tt class="py-lineno">134</tt>  <tt class="py-line"><tt class="py-string">While you are welcome to modify this file to extend its functionality, I hope you consider sharing any such modifications with the VisionEgg community.</tt> </tt>
+<a name="L135"></a><tt class="py-lineno">135</tt>  <tt class="py-line"><tt class="py-string"></tt> </tt>
+<a name="L136"></a><tt class="py-lineno">136</tt>  <tt class="py-line"><tt class="py-string">Eamon Caddigan,\nUniversity of Illinois\n15 November 2007"""</tt> </tt>
+<a name="L137"></a><tt class="py-lineno">137</tt>  <tt class="py-line"> </tt>
+<a name="L138"></a><tt class="py-lineno">138</tt>  <tt class="py-line">  <tt class="py-name">wt</tt> <tt class="py-op">=</tt> <tt id="link-66" class="py-name" targets="Module VisionEgg.WrappedText=VisionEgg.WrappedText-module.html,Class VisionEgg.WrappedText.WrappedText=VisionEgg.WrappedText.WrappedText-class.html"><a title="VisionEgg.WrappedText
+VisionEgg.WrappedText.WrappedText" class="py-name" href="#" onclick="return doclink('link-66', 'WrappedText', 'link-66');">WrappedText</a></tt><tt class="py-op">(</tt><tt class="py-name">text</tt><tt class="py-op">=</tt><tt id="link-67" class="py-name"><a title="VisionEgg.Core.message" class="py-name" href="#" onclick="return doclink('link-67', 'message', 'link-65');">message</a></tt><tt class="py-op">,</tt> <tt class="py-name">position</tt><tt class="py-op">=</tt><tt class="py-op">(</tt [...]
+<a name="L139"></a><tt class="py-lineno">139</tt>  <tt class="py-line">    <tt id="link-69" class="py-name"><a title="VisionEgg.Core.Screen.size" class="py-name" href="#" onclick="return doclink('link-69', 'size', 'link-36');">size</a></tt><tt class="py-op">=</tt><tt class="py-op">(</tt><tt class="py-name">screen</tt><tt class="py-op">.</tt><tt id="link-70" class="py-name"><a title="VisionEgg.Core.Screen.size" class="py-name" href="#" onclick="return doclink('link-70', 'size', 'link-36') [...]
+<a name="L140"></a><tt class="py-lineno">140</tt>  <tt class="py-line"> </tt>
+<a name="L141"></a><tt class="py-lineno">141</tt>  <tt class="py-line">  <tt class="py-name">viewport</tt> <tt class="py-op">=</tt> <tt id="link-72" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-72', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-73" class="py-name"><a title="VisionEgg.Core" class="py-name" href="#" onclick="return doclink('link-73', 'Core', 'link-1');">Core</a></tt><tt class="py-op">.</tt><tt [...]
+<a name="L142"></a><tt class="py-lineno">142</tt>  <tt class="py-line"> </tt>
+<a name="L143"></a><tt class="py-lineno">143</tt>  <tt class="py-line">  <tt class="py-comment"># Frame-based presentation duration makes it easier to use pdb</tt> </tt>
+<a name="L144"></a><tt class="py-lineno">144</tt>  <tt class="py-line"><tt class="py-comment"></tt>  <tt class="py-name">p</tt> <tt class="py-op">=</tt> <tt id="link-75" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-75', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-76" class="py-name"><a title="VisionEgg.FlowControl" class="py-name" href="#" onclick="return doclink('link-76', 'FlowControl', 'link-61');">Flow [...]
+<a name="L145"></a><tt class="py-lineno">145</tt>  <tt class="py-line">      <tt class="py-name">go_duration</tt><tt class="py-op">=</tt><tt class="py-op">(</tt><tt id="link-78" class="py-name"><a title="VisionEgg" class="py-name" href="#" onclick="return doclink('link-78', 'VisionEgg', 'link-0');">VisionEgg</a></tt><tt class="py-op">.</tt><tt id="link-79" class="py-name"><a title="VisionEgg.config" class="py-name" href="#" onclick="return doclink('link-79', 'config', 'link-39');">config [...]
+<a name="L146"></a><tt class="py-lineno">146</tt>  <tt class="py-line">  <tt class="py-name">p</tt><tt class="py-op">.</tt><tt id="link-80" class="py-name" targets="Method VisionEgg.FlowControl.Presentation.go()=VisionEgg.FlowControl.Presentation-class.html#go,Method VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.go()=VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController-class.html#go,Method VisionEgg.PyroApps.DropinServer.DropinMetaController.go()=VisionEgg.PyroApps.DropinS [...]
+VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.go
+VisionEgg.PyroApps.DropinServer.DropinMetaController.go
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.go
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.go
+VisionEgg.PyroApps.GridServer.GridMetaController.go
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.go
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.go
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.go
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.go
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.go" class="py-name" href="#" onclick="return doclink('link-80', 'go', 'link-80');">go</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L147"></a><tt class="py-lineno">147</tt>  <tt class="py-line"> </tt>
+<a name="L148"></a><tt class="py-lineno">148</tt>  <tt class="py-line">  <tt class="py-name">screen</tt><tt class="py-op">.</tt><tt id="link-81" class="py-name" targets="Method VisionEgg.Core.Screen.close()=VisionEgg.Core.Screen-class.html#close"><a title="VisionEgg.Core.Screen.close" class="py-name" href="#" onclick="return doclink('link-81', 'close', 'link-81');">close</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-comment"># Called explicitly to behave better i [...]
+</div><a name="L149"></a><tt class="py-lineno">149</tt>  <tt class="py-line"> </tt>
+<a name="L150"></a><tt class="py-lineno">150</tt>  <tt class="py-line"><tt class="py-keyword">if</tt> <tt class="py-name">__name__</tt> <tt class="py-op">==</tt> <tt class="py-string">"__main__"</tt><tt class="py-op">:</tt> </tt>
+<a name="L151"></a><tt class="py-lineno">151</tt>  <tt class="py-line">  <tt id="link-82" class="py-name" targets="Function VisionEgg.WrappedText.main()=VisionEgg.WrappedText-module.html#main"><a title="VisionEgg.WrappedText.main" class="py-name" href="#" onclick="return doclink('link-82', 'main', 'link-82');">main</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L152"></a><tt class="py-lineno">152</tt>  <tt class="py-line"> </tt><script type="text/javascript">
+<!--
+expandto(location.href);
+// -->
+</script>
+</pre>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:48 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.WrappedText.WrappedText-class.html b/doc/reference/html/VisionEgg.WrappedText.WrappedText-class.html
new file mode 100644
index 0000000..bee444f
--- /dev/null
+++ b/doc/reference/html/VisionEgg.WrappedText.WrappedText-class.html
@@ -0,0 +1,368 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.WrappedText.WrappedText</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.WrappedText-module.html">Module WrappedText</a> ::
+        Class WrappedText
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.WrappedText.WrappedText-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class WrappedText</h1><span class="codelink"><a href="VisionEgg.WrappedText-pysrc.html#WrappedText">source code</a></span><br /><br />
+<pre class="base-tree">
+         object --+        
+                  |        
+<a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a> --+    
+                      |    
+          <a href="VisionEgg.Core.Stimulus-class.html">Core.Stimulus</a> --+
+                          |
+                         <strong class="uidshort">WrappedText</strong>
+</pre>
+
+<hr />
+<pre class="literalblock">
+Multi-line text stimulus. No fancy formatting, but line breaks ('\n')
+are preserved, and text is wrapped to fit within the stimulus
+boundaries.
+
+</pre><br /><br />
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.WrappedText.WrappedText-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">**kw</span>)</span><br />
+      Initialize the object, perform the initial line-splitting</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.WrappedText-pysrc.html#WrappedText.__init__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="VisionEgg.WrappedText.WrappedText-class.html#draw" class="summary-sig-name">draw</a>(<span class="summary-sig-arg">self</span>)</span><br />
+      Draw the lines of text on the screen</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.WrappedText-pysrc.html#WrappedText.draw">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a></code></b>:
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__getstate__">__getstate__</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__setstate__">__setstate__</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#get_specified_type">get_specified_type</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#is_constant_parameter">is_constant_parameter</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#set">set</a></code>,
+      <code><a href="VisionEgg.ClassWithParameters-class.html#verify_parameters">verify_parameters</a></code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__delattr__</code>,
+      <code>__getattribute__</code>,
+      <code>__hash__</code>,
+      <code>__new__</code>,
+      <code>__reduce__</code>,
+      <code>__reduce_ex__</code>,
+      <code>__repr__</code>,
+      <code>__setattr__</code>,
+      <code>__str__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Class Variables</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.WrappedText.WrappedText-class.html#parameters_and_defaults" class="summary-name">parameters_and_defaults</a> = <code title="{'on':(True, ve_types.Boolean), 'position':((0.0, 0.0), ve_types.AnyOf\
+(ve_types.Sequence2(ve_types.Real), ve_types.Sequence3(ve_types.Real),\
+ ve_types.Sequence4(ve_types.Real))), 'size':(None, ve_types.Sequence2\
+(ve_types.Real), """Defaults to the size of the screen."""), 'text':('\
+hello', ve_types.AnyOf(ve_types.String, ve_types.Unicode)), 'color':((\
+1.0, 1.0, 1.0), ve_types.AnyOf(ve_types.Sequence3(ve_types.Real), ve_t\
+ypes.Sequence4(ve_types.Real)))}">{'on':(True, ve_types.Boolean), 'pos<code class="variable-ellipsis">...</code></code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.WrappedText.WrappedText-class.html#constant_parameters_and_defaults" class="summary-name">constant_parameters_and_defaults</a> = <code title="{'font_name':(None, ve_types.AnyOf(ve_types.String, ve_types.Unicode),\
+ "Name of font to use. If None, use the default font"), 'font_size':(3\
+0, ve_types.UnsignedInteger)}">{'font_name':(None, ve_type<code class="variable-ellipsis">...</code></code>
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code><a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a></code></b>:
+      <code><a href="VisionEgg.ClassWithParameters-class.html#__safe_for_unpickling__">__safe_for_unpickling__</a></code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Properties</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__class__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Method Details</span></td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+        <span class="sig-arg">**kw</span>)</span>
+    <br /><em class="fname">(Constructor)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.WrappedText-pysrc.html#WrappedText.__init__">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Initialize the object, perform the initial line-splitting
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.Core.Stimulus-class.html#__init__">Core.Stimulus.__init__</a>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="draw"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">draw</span>(<span class="sig-arg">self</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="VisionEgg.WrappedText-pysrc.html#WrappedText.draw">source code</a></span> 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+Draw the lines of text on the screen
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      <a href="VisionEgg.Core.Stimulus-class.html#draw">Core.Stimulus.draw</a>
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== CLASS VARIABLE DETAILS ==================== -->
+<a name="section-ClassVariableDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Class Variable Details</span></td>
+</tr>
+</table>
+<a name="parameters_and_defaults"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">parameters_and_defaults</h3>
+  
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+{'on':(True, ve_types.Boolean), 'position':((0.0, 0.0), ve_types.AnyOf<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+(ve_types.Sequence2(ve_types.Real), ve_types.Sequence3(ve_types.Real),<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+ ve_types.Sequence4(ve_types.Real))), 'size':(None, ve_types.Sequence2<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+(ve_types.Real), """Defaults to the size of the screen."""), 'text':('<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+hello', ve_types.AnyOf(ve_types.String, ve_types.Unicode)), 'color':((<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+1.0, 1.0, 1.0), ve_types.AnyOf(ve_types.Sequence3(ve_types.Real), ve_t<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+ypes.Sequence4(ve_types.Real)))}
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="constant_parameters_and_defaults"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">constant_parameters_and_defaults</h3>
+  
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+{'font_name':(None, ve_types.AnyOf(ve_types.String, ve_types.Unicode),<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+ "Name of font to use. If None, use the default font"), 'font_size':(3<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+0, ve_types.UnsignedInteger)}
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:47 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.darwin_getrefresh-module.html b/doc/reference/html/VisionEgg.darwin_getrefresh-module.html
new file mode 100644
index 0000000..8c1e569
--- /dev/null
+++ b/doc/reference/html/VisionEgg.darwin_getrefresh-module.html
@@ -0,0 +1,128 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.darwin_getrefresh</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        Module darwin_getrefresh
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.darwin_getrefresh-module.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== MODULE DESCRIPTION ==================== -->
+<h1 class="epydoc">Module darwin_getrefresh</h1><span class="codelink"><a href="VisionEgg.darwin_getrefresh-pysrc.html">source code</a></span><br /><br />
+<!-- ==================== VARIABLES ==================== -->
+<a name="section-Variables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Variables</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="getrefresh"></a><span class="summary-name">getrefresh</span> = <code title="_darwin_getrefresh.getrefresh">_darwin_getrefresh.getrefresh</code>
+    </td>
+  </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.darwin_getrefresh-pysrc.html b/doc/reference/html/VisionEgg.darwin_getrefresh-pysrc.html
new file mode 100644
index 0000000..3325d62
--- /dev/null
+++ b/doc/reference/html/VisionEgg.darwin_getrefresh-pysrc.html
@@ -0,0 +1,169 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.darwin_getrefresh</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        Module darwin_getrefresh
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.darwin_getrefresh-pysrc.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<h1 class="epydoc">Source Code for <a href="VisionEgg.darwin_getrefresh-module.html">Module VisionEgg.darwin_getrefresh</a></h1>
+<pre class="py-src">
+<a name="L1"></a><tt class="py-lineno"> 1</tt>  <tt class="py-line"><tt class="py-comment"># This file was created automatically by SWIG.</tt> </tt>
+<a name="L2"></a><tt class="py-lineno"> 2</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Don't modify this file, modify the SWIG interface instead.</tt> </tt>
+<a name="L3"></a><tt class="py-lineno"> 3</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># This file is compatible with both classic and new-style classes.</tt> </tt>
+<a name="L4"></a><tt class="py-lineno"> 4</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L5"></a><tt class="py-lineno"> 5</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">_darwin_getrefresh</tt> </tt>
+<a name="L6"></a><tt class="py-lineno"> 6</tt>  <tt class="py-line"> </tt>
+<a name="_swig_setattr_nondynamic"></a><div id="_swig_setattr_nondynamic-def"><a name="L7"></a><tt class="py-lineno"> 7</tt> <a class="py-toggle" href="#" id="_swig_setattr_nondynamic-toggle" onclick="return toggle('_swig_setattr_nondynamic');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.darwin_getrefresh-module.html#_swig_setattr_nondynamic">_swig_setattr_nondynamic</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py [...]
+</div><div id="_swig_setattr_nondynamic-collapsed" style="display:none;" pad="++" indent="++++"></div><div id="_swig_setattr_nondynamic-expanded"><a name="L8"></a><tt class="py-lineno"> 8</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">name</tt> <tt class="py-op">==</tt> <tt class="py-string">"this"</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L9"></a><tt class="py-lineno"> 9</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">,</tt> <tt class="py-name">class_type</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L10"></a><tt class="py-lineno">10</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__dict__</tt><tt class="py-op">[</tt><tt class="py-name">name</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">value</tt><tt class="py-op">.</tt><tt class="py-name">this</tt> </tt>
+<a name="L11"></a><tt class="py-lineno">11</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">,</tt><tt class="py-string">"thisown"</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__dict__</tt><tt class="py-op">[</tt><tt class="py-string">"thisown"</tt><tt class="py-op">]</tt> <tt class="py- [...]
+<a name="L12"></a><tt class="py-lineno">12</tt>  <tt class="py-line">            <tt class="py-keyword">del</tt> <tt class="py-name">value</tt><tt class="py-op">.</tt><tt class="py-name">thisown</tt> </tt>
+<a name="L13"></a><tt class="py-lineno">13</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> </tt>
+<a name="L14"></a><tt class="py-lineno">14</tt>  <tt class="py-line">    <tt class="py-name">method</tt> <tt class="py-op">=</tt> <tt class="py-name">class_type</tt><tt class="py-op">.</tt><tt class="py-name">__swig_setmethods__</tt><tt class="py-op">.</tt><tt id="link-0" class="py-name" targets="Method VisionEgg.PyroClient.PyroClient.get()=VisionEgg.PyroClient.PyroClient-class.html#get"><a title="VisionEgg.PyroClient.PyroClient.get" class="py-name" href="#" onclick="return doclink('link [...]
+<a name="L15"></a><tt class="py-lineno">15</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">method</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> <tt class="py-name">method</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt><tt class="py-name">value</tt><tt class="py-op">)</tt> </tt>
+<a name="L16"></a><tt class="py-lineno">16</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-keyword">not</tt> <tt class="py-name">static</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt><tt class="py-name">name</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-op">(</tt><tt class="py-name">name</t [...]
+<a name="L17"></a><tt class="py-lineno">17</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__dict__</tt><tt class="py-op">[</tt><tt class="py-name">name</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">value</tt> </tt>
+<a name="L18"></a><tt class="py-lineno">18</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L19"></a><tt class="py-lineno">19</tt>  <tt class="py-line">        <tt class="py-keyword">raise</tt> <tt class="py-name">AttributeError</tt><tt class="py-op">(</tt><tt class="py-string">"You cannot add attributes to %s"</tt> <tt class="py-op">%</tt> <tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L20"></a><tt class="py-lineno">20</tt>  <tt class="py-line"> </tt>
+<a name="_swig_setattr"></a><div id="_swig_setattr-def"><a name="L21"></a><tt class="py-lineno">21</tt> <a class="py-toggle" href="#" id="_swig_setattr-toggle" onclick="return toggle('_swig_setattr');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.darwin_getrefresh-module.html#_swig_setattr">_swig_setattr</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt><tt class="py-param">class_type</tt><tt class="py-op"> [...]
+</div><div id="_swig_setattr-collapsed" style="display:none;" pad="++" indent="++++"></div><div id="_swig_setattr-expanded"><a name="L22"></a><tt class="py-lineno">22</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">_swig_setattr_nondynamic</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt><tt class="py-name">class_type</tt><tt class="py-op">,</tt><tt class="py-name">name</tt><tt class="py-op">,</tt><tt class="py-name">va [...]
+</div><a name="L23"></a><tt class="py-lineno">23</tt>  <tt class="py-line"> </tt>
+<a name="_swig_getattr"></a><div id="_swig_getattr-def"><a name="L24"></a><tt class="py-lineno">24</tt> <a class="py-toggle" href="#" id="_swig_getattr-toggle" onclick="return toggle('_swig_getattr');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.darwin_getrefresh-module.html#_swig_getattr">_swig_getattr</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt><tt class="py-param">class_type</tt><tt class="py-op"> [...]
+</div><div id="_swig_getattr-collapsed" style="display:none;" pad="++" indent="++++"></div><div id="_swig_getattr-expanded"><a name="L25"></a><tt class="py-lineno">25</tt>  <tt class="py-line">    <tt class="py-name">method</tt> <tt class="py-op">=</tt> <tt class="py-name">class_type</tt><tt class="py-op">.</tt><tt class="py-name">__swig_getmethods__</tt><tt class="py-op">.</tt><tt id="link-1" class="py-name"><a title="VisionEgg.PyroClient.PyroClient.get" class="py-name" href="#" onclick [...]
+<a name="L26"></a><tt class="py-lineno">26</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">method</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> <tt class="py-name">method</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
+<a name="L27"></a><tt class="py-lineno">27</tt>  <tt class="py-line">    <tt class="py-keyword">raise</tt> <tt class="py-name">AttributeError</tt><tt class="py-op">,</tt><tt class="py-name">name</tt> </tt>
+</div><a name="L28"></a><tt class="py-lineno">28</tt>  <tt class="py-line"> </tt>
+<a name="L29"></a><tt class="py-lineno">29</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">types</tt> </tt>
+<a name="L30"></a><tt class="py-lineno">30</tt>  <tt class="py-line"><tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L31"></a><tt class="py-lineno">31</tt>  <tt class="py-line">    <tt class="py-name">_object</tt> <tt class="py-op">=</tt> <tt class="py-name">types</tt><tt class="py-op">.</tt><tt class="py-name">ObjectType</tt> </tt>
+<a name="L32"></a><tt class="py-lineno">32</tt>  <tt class="py-line">    <tt id="link-2" class="py-name" targets="Variable VisionEgg.darwin_getrefresh._newclass=VisionEgg.darwin_getrefresh-module.html#_newclass,Variable VisionEgg.gl_qt._newclass=VisionEgg.gl_qt-module.html#_newclass,Variable VisionEgg.posix_maxpriority._newclass=VisionEgg.posix_maxpriority-module.html#_newclass,Variable VisionEgg.win32_getrefresh._newclass=VisionEgg.win32_getrefresh-module.html#_newclass,Variable VisionE [...]
+VisionEgg.gl_qt._newclass
+VisionEgg.posix_maxpriority._newclass
+VisionEgg.win32_getrefresh._newclass
+VisionEgg.win32_maxpriority._newclass" class="py-name" href="#" onclick="return doclink('link-2', '_newclass', 'link-2');">_newclass</a></tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L33"></a><tt class="py-lineno">33</tt>  <tt class="py-line"><tt class="py-keyword">except</tt> <tt class="py-name">AttributeError</tt><tt class="py-op">:</tt> </tt>
+<a name="_object"></a><div id="_object-def"><a name="L34"></a><tt class="py-lineno">34</tt> <a class="py-toggle" href="#" id="_object-toggle" onclick="return toggle('_object');">-</a><tt class="py-line">    <tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.darwin_getrefresh._object-class.html">_object</a> <tt class="py-op">:</tt> <tt class="py-keyword">pass</tt> </tt>
+</div><a name="L35"></a><tt class="py-lineno">35</tt>  <tt class="py-line">    <tt id="link-3" class="py-name"><a title="VisionEgg.darwin_getrefresh._newclass
+VisionEgg.gl_qt._newclass
+VisionEgg.posix_maxpriority._newclass
+VisionEgg.win32_getrefresh._newclass
+VisionEgg.win32_maxpriority._newclass" class="py-name" href="#" onclick="return doclink('link-3', '_newclass', 'link-2');">_newclass</a></tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L36"></a><tt class="py-lineno">36</tt>  <tt class="py-line"><tt class="py-keyword">del</tt> <tt class="py-name">types</tt> </tt>
+<a name="L37"></a><tt class="py-lineno">37</tt>  <tt class="py-line"> </tt>
+<a name="L38"></a><tt class="py-lineno">38</tt>  <tt class="py-line"> </tt>
+<a name="L39"></a><tt class="py-lineno">39</tt>  <tt class="py-line"> </tt>
+<a name="L40"></a><tt class="py-lineno">40</tt>  <tt class="py-line"><tt id="link-4" class="py-name" targets="Variable VisionEgg.darwin_getrefresh.getrefresh=VisionEgg.darwin_getrefresh-module.html#getrefresh,Variable VisionEgg.win32_getrefresh.getrefresh=VisionEgg.win32_getrefresh-module.html#getrefresh"><a title="VisionEgg.darwin_getrefresh.getrefresh
+VisionEgg.win32_getrefresh.getrefresh" class="py-name" href="#" onclick="return doclink('link-4', 'getrefresh', 'link-4');">getrefresh</a></tt> <tt class="py-op">=</tt> <tt class="py-name">_darwin_getrefresh</tt><tt class="py-op">.</tt><tt id="link-5" class="py-name"><a title="VisionEgg.darwin_getrefresh.getrefresh
+VisionEgg.win32_getrefresh.getrefresh" class="py-name" href="#" onclick="return doclink('link-5', 'getrefresh', 'link-4');">getrefresh</a></tt> </tt>
+<a name="L41"></a><tt class="py-lineno">41</tt>  <tt class="py-line"> </tt><script type="text/javascript">
+<!--
+expandto(location.href);
+// -->
+</script>
+</pre>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:50 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.gl_qt-module.html b/doc/reference/html/VisionEgg.gl_qt-module.html
new file mode 100644
index 0000000..de73426
--- /dev/null
+++ b/doc/reference/html/VisionEgg.gl_qt-module.html
@@ -0,0 +1,142 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.gl_qt</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        Module gl_qt
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.gl_qt-module.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== MODULE DESCRIPTION ==================== -->
+<h1 class="epydoc">Module gl_qt</h1><span class="codelink"><a href="VisionEgg.gl_qt-pysrc.html">source code</a></span><br /><br />
+<!-- ==================== VARIABLES ==================== -->
+<a name="section-Variables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Variables</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="gl_qt_renderer_create"></a><span class="summary-name">gl_qt_renderer_create</span> = <code title="_gl_qt.gl_qt_renderer_create">_gl_qt.gl_qt_renderer_create</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="gl_qt_renderer_delete"></a><span class="summary-name">gl_qt_renderer_delete</span> = <code title="_gl_qt.gl_qt_renderer_delete">_gl_qt.gl_qt_renderer_delete</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="gl_qt_renderer_update"></a><span class="summary-name">gl_qt_renderer_update</span> = <code title="_gl_qt.gl_qt_renderer_update">_gl_qt.gl_qt_renderer_update</code>
+    </td>
+  </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.gl_qt-pysrc.html b/doc/reference/html/VisionEgg.gl_qt-pysrc.html
new file mode 100644
index 0000000..db35a30
--- /dev/null
+++ b/doc/reference/html/VisionEgg.gl_qt-pysrc.html
@@ -0,0 +1,171 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.gl_qt</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        Module gl_qt
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.gl_qt-pysrc.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<h1 class="epydoc">Source Code for <a href="VisionEgg.gl_qt-module.html">Module VisionEgg.gl_qt</a></h1>
+<pre class="py-src">
+<a name="L1"></a><tt class="py-lineno"> 1</tt>  <tt class="py-line"><tt class="py-comment"># This file was created automatically by SWIG.</tt> </tt>
+<a name="L2"></a><tt class="py-lineno"> 2</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Don't modify this file, modify the SWIG interface instead.</tt> </tt>
+<a name="L3"></a><tt class="py-lineno"> 3</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># This file is compatible with both classic and new-style classes.</tt> </tt>
+<a name="L4"></a><tt class="py-lineno"> 4</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L5"></a><tt class="py-lineno"> 5</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">_gl_qt</tt> </tt>
+<a name="L6"></a><tt class="py-lineno"> 6</tt>  <tt class="py-line"> </tt>
+<a name="_swig_setattr_nondynamic"></a><div id="_swig_setattr_nondynamic-def"><a name="L7"></a><tt class="py-lineno"> 7</tt> <a class="py-toggle" href="#" id="_swig_setattr_nondynamic-toggle" onclick="return toggle('_swig_setattr_nondynamic');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.gl_qt-module.html#_swig_setattr_nondynamic">_swig_setattr_nondynamic</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt>< [...]
+</div><div id="_swig_setattr_nondynamic-collapsed" style="display:none;" pad="++" indent="++++"></div><div id="_swig_setattr_nondynamic-expanded"><a name="L8"></a><tt class="py-lineno"> 8</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">name</tt> <tt class="py-op">==</tt> <tt class="py-string">"this"</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L9"></a><tt class="py-lineno"> 9</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">,</tt> <tt class="py-name">class_type</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L10"></a><tt class="py-lineno">10</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__dict__</tt><tt class="py-op">[</tt><tt class="py-name">name</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">value</tt><tt class="py-op">.</tt><tt class="py-name">this</tt> </tt>
+<a name="L11"></a><tt class="py-lineno">11</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">,</tt><tt class="py-string">"thisown"</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__dict__</tt><tt class="py-op">[</tt><tt class="py-string">"thisown"</tt><tt class="py-op">]</tt> <tt class="py- [...]
+<a name="L12"></a><tt class="py-lineno">12</tt>  <tt class="py-line">            <tt class="py-keyword">del</tt> <tt class="py-name">value</tt><tt class="py-op">.</tt><tt class="py-name">thisown</tt> </tt>
+<a name="L13"></a><tt class="py-lineno">13</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> </tt>
+<a name="L14"></a><tt class="py-lineno">14</tt>  <tt class="py-line">    <tt class="py-name">method</tt> <tt class="py-op">=</tt> <tt class="py-name">class_type</tt><tt class="py-op">.</tt><tt class="py-name">__swig_setmethods__</tt><tt class="py-op">.</tt><tt id="link-0" class="py-name" targets="Method VisionEgg.PyroClient.PyroClient.get()=VisionEgg.PyroClient.PyroClient-class.html#get"><a title="VisionEgg.PyroClient.PyroClient.get" class="py-name" href="#" onclick="return doclink('link [...]
+<a name="L15"></a><tt class="py-lineno">15</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">method</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> <tt class="py-name">method</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt><tt class="py-name">value</tt><tt class="py-op">)</tt> </tt>
+<a name="L16"></a><tt class="py-lineno">16</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-keyword">not</tt> <tt class="py-name">static</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt><tt class="py-name">name</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-op">(</tt><tt class="py-name">name</t [...]
+<a name="L17"></a><tt class="py-lineno">17</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__dict__</tt><tt class="py-op">[</tt><tt class="py-name">name</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">value</tt> </tt>
+<a name="L18"></a><tt class="py-lineno">18</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L19"></a><tt class="py-lineno">19</tt>  <tt class="py-line">        <tt class="py-keyword">raise</tt> <tt class="py-name">AttributeError</tt><tt class="py-op">(</tt><tt class="py-string">"You cannot add attributes to %s"</tt> <tt class="py-op">%</tt> <tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L20"></a><tt class="py-lineno">20</tt>  <tt class="py-line"> </tt>
+<a name="_swig_setattr"></a><div id="_swig_setattr-def"><a name="L21"></a><tt class="py-lineno">21</tt> <a class="py-toggle" href="#" id="_swig_setattr-toggle" onclick="return toggle('_swig_setattr');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.gl_qt-module.html#_swig_setattr">_swig_setattr</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt><tt class="py-param">class_type</tt><tt class="py-op">,</tt><tt cl [...]
+</div><div id="_swig_setattr-collapsed" style="display:none;" pad="++" indent="++++"></div><div id="_swig_setattr-expanded"><a name="L22"></a><tt class="py-lineno">22</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">_swig_setattr_nondynamic</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt><tt class="py-name">class_type</tt><tt class="py-op">,</tt><tt class="py-name">name</tt><tt class="py-op">,</tt><tt class="py-name">va [...]
+</div><a name="L23"></a><tt class="py-lineno">23</tt>  <tt class="py-line"> </tt>
+<a name="_swig_getattr"></a><div id="_swig_getattr-def"><a name="L24"></a><tt class="py-lineno">24</tt> <a class="py-toggle" href="#" id="_swig_getattr-toggle" onclick="return toggle('_swig_getattr');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.gl_qt-module.html#_swig_getattr">_swig_getattr</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt><tt class="py-param">class_type</tt><tt class="py-op">,</tt><tt cl [...]
+</div><div id="_swig_getattr-collapsed" style="display:none;" pad="++" indent="++++"></div><div id="_swig_getattr-expanded"><a name="L25"></a><tt class="py-lineno">25</tt>  <tt class="py-line">    <tt class="py-name">method</tt> <tt class="py-op">=</tt> <tt class="py-name">class_type</tt><tt class="py-op">.</tt><tt class="py-name">__swig_getmethods__</tt><tt class="py-op">.</tt><tt id="link-1" class="py-name"><a title="VisionEgg.PyroClient.PyroClient.get" class="py-name" href="#" onclick [...]
+<a name="L26"></a><tt class="py-lineno">26</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">method</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> <tt class="py-name">method</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
+<a name="L27"></a><tt class="py-lineno">27</tt>  <tt class="py-line">    <tt class="py-keyword">raise</tt> <tt class="py-name">AttributeError</tt><tt class="py-op">,</tt><tt class="py-name">name</tt> </tt>
+</div><a name="L28"></a><tt class="py-lineno">28</tt>  <tt class="py-line"> </tt>
+<a name="L29"></a><tt class="py-lineno">29</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">types</tt> </tt>
+<a name="L30"></a><tt class="py-lineno">30</tt>  <tt class="py-line"><tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L31"></a><tt class="py-lineno">31</tt>  <tt class="py-line">    <tt class="py-name">_object</tt> <tt class="py-op">=</tt> <tt class="py-name">types</tt><tt class="py-op">.</tt><tt class="py-name">ObjectType</tt> </tt>
+<a name="L32"></a><tt class="py-lineno">32</tt>  <tt class="py-line">    <tt id="link-2" class="py-name" targets="Variable VisionEgg.darwin_getrefresh._newclass=VisionEgg.darwin_getrefresh-module.html#_newclass,Variable VisionEgg.gl_qt._newclass=VisionEgg.gl_qt-module.html#_newclass,Variable VisionEgg.posix_maxpriority._newclass=VisionEgg.posix_maxpriority-module.html#_newclass,Variable VisionEgg.win32_getrefresh._newclass=VisionEgg.win32_getrefresh-module.html#_newclass,Variable VisionE [...]
+VisionEgg.gl_qt._newclass
+VisionEgg.posix_maxpriority._newclass
+VisionEgg.win32_getrefresh._newclass
+VisionEgg.win32_maxpriority._newclass" class="py-name" href="#" onclick="return doclink('link-2', '_newclass', 'link-2');">_newclass</a></tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L33"></a><tt class="py-lineno">33</tt>  <tt class="py-line"><tt class="py-keyword">except</tt> <tt class="py-name">AttributeError</tt><tt class="py-op">:</tt> </tt>
+<a name="_object"></a><div id="_object-def"><a name="L34"></a><tt class="py-lineno">34</tt> <a class="py-toggle" href="#" id="_object-toggle" onclick="return toggle('_object');">-</a><tt class="py-line">    <tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.gl_qt._object-class.html">_object</a> <tt class="py-op">:</tt> <tt class="py-keyword">pass</tt> </tt>
+</div><a name="L35"></a><tt class="py-lineno">35</tt>  <tt class="py-line">    <tt id="link-3" class="py-name"><a title="VisionEgg.darwin_getrefresh._newclass
+VisionEgg.gl_qt._newclass
+VisionEgg.posix_maxpriority._newclass
+VisionEgg.win32_getrefresh._newclass
+VisionEgg.win32_maxpriority._newclass" class="py-name" href="#" onclick="return doclink('link-3', '_newclass', 'link-2');">_newclass</a></tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L36"></a><tt class="py-lineno">36</tt>  <tt class="py-line"><tt class="py-keyword">del</tt> <tt class="py-name">types</tt> </tt>
+<a name="L37"></a><tt class="py-lineno">37</tt>  <tt class="py-line"> </tt>
+<a name="L38"></a><tt class="py-lineno">38</tt>  <tt class="py-line"> </tt>
+<a name="L39"></a><tt class="py-lineno">39</tt>  <tt class="py-line"> </tt>
+<a name="L40"></a><tt class="py-lineno">40</tt>  <tt class="py-line"><tt id="link-4" class="py-name" targets="Variable VisionEgg.gl_qt.gl_qt_renderer_create=VisionEgg.gl_qt-module.html#gl_qt_renderer_create"><a title="VisionEgg.gl_qt.gl_qt_renderer_create" class="py-name" href="#" onclick="return doclink('link-4', 'gl_qt_renderer_create', 'link-4');">gl_qt_renderer_create</a></tt> <tt class="py-op">=</tt> <tt class="py-name">_gl_qt</tt><tt class="py-op">.</tt><tt id="link-5" class="py-na [...]
+<a name="L41"></a><tt class="py-lineno">41</tt>  <tt class="py-line"> </tt>
+<a name="L42"></a><tt class="py-lineno">42</tt>  <tt class="py-line"><tt id="link-6" class="py-name" targets="Variable VisionEgg.gl_qt.gl_qt_renderer_delete=VisionEgg.gl_qt-module.html#gl_qt_renderer_delete"><a title="VisionEgg.gl_qt.gl_qt_renderer_delete" class="py-name" href="#" onclick="return doclink('link-6', 'gl_qt_renderer_delete', 'link-6');">gl_qt_renderer_delete</a></tt> <tt class="py-op">=</tt> <tt class="py-name">_gl_qt</tt><tt class="py-op">.</tt><tt id="link-7" class="py-na [...]
+<a name="L43"></a><tt class="py-lineno">43</tt>  <tt class="py-line"> </tt>
+<a name="L44"></a><tt class="py-lineno">44</tt>  <tt class="py-line"><tt id="link-8" class="py-name" targets="Variable VisionEgg.gl_qt.gl_qt_renderer_update=VisionEgg.gl_qt-module.html#gl_qt_renderer_update"><a title="VisionEgg.gl_qt.gl_qt_renderer_update" class="py-name" href="#" onclick="return doclink('link-8', 'gl_qt_renderer_update', 'link-8');">gl_qt_renderer_update</a></tt> <tt class="py-op">=</tt> <tt class="py-name">_gl_qt</tt><tt class="py-op">.</tt><tt id="link-9" class="py-na [...]
+<a name="L45"></a><tt class="py-lineno">45</tt>  <tt class="py-line"> </tt><script type="text/javascript">
+<!--
+expandto(location.href);
+// -->
+</script>
+</pre>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:49 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.posix_maxpriority-module.html b/doc/reference/html/VisionEgg.posix_maxpriority-module.html
new file mode 100644
index 0000000..a0725e2
--- /dev/null
+++ b/doc/reference/html/VisionEgg.posix_maxpriority-module.html
@@ -0,0 +1,202 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.posix_maxpriority</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        Module posix_maxpriority
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.posix_maxpriority-module.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== MODULE DESCRIPTION ==================== -->
+<h1 class="epydoc">Module posix_maxpriority</h1><span class="codelink"><a href="VisionEgg.posix_maxpriority-pysrc.html">source code</a></span><br /><br />
+<!-- ==================== VARIABLES ==================== -->
+<a name="section-Variables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Variables</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="SCHED_RR"></a><span class="summary-name">SCHED_RR</span> = <code title="_posix_maxpriority.SCHED_RR">_posix_maxpriority.SCHED_RR</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="SCHED_FIFO"></a><span class="summary-name">SCHED_FIFO</span> = <code title="_posix_maxpriority.SCHED_FIFO">_posix_maxpriority.SCHED_FIFO</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.posix_maxpriority-module.html#set_self_policy_priority" class="summary-name">set_self_policy_priority</a> = <code title="_posix_maxpriority.set_self_policy_priority">_posix_maxpriority.set_self_policy_<code class="variable-ellipsis">...</code></code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="stop_memory_paging"></a><span class="summary-name">stop_memory_paging</span> = <code title="_posix_maxpriority.stop_memory_paging">_posix_maxpriority.stop_memory_paging</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.posix_maxpriority-module.html#sched_get_priority_max" class="summary-name">sched_get_priority_max</a> = <code title="_posix_maxpriority.sched_get_priority_max">_posix_maxpriority.sched_get_priority<code class="variable-ellipsis">...</code></code>
+    </td>
+  </tr>
+</table>
+<!-- ==================== VARIABLES DETAILS ==================== -->
+<a name="section-VariablesDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Variables Details</span></td>
+</tr>
+</table>
+<a name="set_self_policy_priority"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">set_self_policy_priority</h3>
+  
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+_posix_maxpriority.set_self_policy_priority
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="sched_get_priority_max"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">sched_get_priority_max</h3>
+  
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+_posix_maxpriority.sched_get_priority_max
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.posix_maxpriority-pysrc.html b/doc/reference/html/VisionEgg.posix_maxpriority-pysrc.html
new file mode 100644
index 0000000..21abeb0
--- /dev/null
+++ b/doc/reference/html/VisionEgg.posix_maxpriority-pysrc.html
@@ -0,0 +1,173 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.posix_maxpriority</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        Module posix_maxpriority
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.posix_maxpriority-pysrc.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<h1 class="epydoc">Source Code for <a href="VisionEgg.posix_maxpriority-module.html">Module VisionEgg.posix_maxpriority</a></h1>
+<pre class="py-src">
+<a name="L1"></a><tt class="py-lineno"> 1</tt>  <tt class="py-line"><tt class="py-comment"># This file was created automatically by SWIG.</tt> </tt>
+<a name="L2"></a><tt class="py-lineno"> 2</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Don't modify this file, modify the SWIG interface instead.</tt> </tt>
+<a name="L3"></a><tt class="py-lineno"> 3</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># This file is compatible with both classic and new-style classes.</tt> </tt>
+<a name="L4"></a><tt class="py-lineno"> 4</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L5"></a><tt class="py-lineno"> 5</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">_posix_maxpriority</tt> </tt>
+<a name="L6"></a><tt class="py-lineno"> 6</tt>  <tt class="py-line"> </tt>
+<a name="_swig_setattr_nondynamic"></a><div id="_swig_setattr_nondynamic-def"><a name="L7"></a><tt class="py-lineno"> 7</tt> <a class="py-toggle" href="#" id="_swig_setattr_nondynamic-toggle" onclick="return toggle('_swig_setattr_nondynamic');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.posix_maxpriority-module.html#_swig_setattr_nondynamic">_swig_setattr_nondynamic</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py [...]
+</div><div id="_swig_setattr_nondynamic-collapsed" style="display:none;" pad="++" indent="++++"></div><div id="_swig_setattr_nondynamic-expanded"><a name="L8"></a><tt class="py-lineno"> 8</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">name</tt> <tt class="py-op">==</tt> <tt class="py-string">"this"</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L9"></a><tt class="py-lineno"> 9</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">,</tt> <tt class="py-name">class_type</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L10"></a><tt class="py-lineno">10</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__dict__</tt><tt class="py-op">[</tt><tt class="py-name">name</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">value</tt><tt class="py-op">.</tt><tt class="py-name">this</tt> </tt>
+<a name="L11"></a><tt class="py-lineno">11</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">,</tt><tt class="py-string">"thisown"</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__dict__</tt><tt class="py-op">[</tt><tt class="py-string">"thisown"</tt><tt class="py-op">]</tt> <tt class="py- [...]
+<a name="L12"></a><tt class="py-lineno">12</tt>  <tt class="py-line">            <tt class="py-keyword">del</tt> <tt class="py-name">value</tt><tt class="py-op">.</tt><tt class="py-name">thisown</tt> </tt>
+<a name="L13"></a><tt class="py-lineno">13</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> </tt>
+<a name="L14"></a><tt class="py-lineno">14</tt>  <tt class="py-line">    <tt class="py-name">method</tt> <tt class="py-op">=</tt> <tt class="py-name">class_type</tt><tt class="py-op">.</tt><tt class="py-name">__swig_setmethods__</tt><tt class="py-op">.</tt><tt id="link-0" class="py-name" targets="Method VisionEgg.PyroClient.PyroClient.get()=VisionEgg.PyroClient.PyroClient-class.html#get"><a title="VisionEgg.PyroClient.PyroClient.get" class="py-name" href="#" onclick="return doclink('link [...]
+<a name="L15"></a><tt class="py-lineno">15</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">method</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> <tt class="py-name">method</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt><tt class="py-name">value</tt><tt class="py-op">)</tt> </tt>
+<a name="L16"></a><tt class="py-lineno">16</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-keyword">not</tt> <tt class="py-name">static</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt><tt class="py-name">name</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-op">(</tt><tt class="py-name">name</t [...]
+<a name="L17"></a><tt class="py-lineno">17</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__dict__</tt><tt class="py-op">[</tt><tt class="py-name">name</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">value</tt> </tt>
+<a name="L18"></a><tt class="py-lineno">18</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L19"></a><tt class="py-lineno">19</tt>  <tt class="py-line">        <tt class="py-keyword">raise</tt> <tt class="py-name">AttributeError</tt><tt class="py-op">(</tt><tt class="py-string">"You cannot add attributes to %s"</tt> <tt class="py-op">%</tt> <tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L20"></a><tt class="py-lineno">20</tt>  <tt class="py-line"> </tt>
+<a name="_swig_setattr"></a><div id="_swig_setattr-def"><a name="L21"></a><tt class="py-lineno">21</tt> <a class="py-toggle" href="#" id="_swig_setattr-toggle" onclick="return toggle('_swig_setattr');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.posix_maxpriority-module.html#_swig_setattr">_swig_setattr</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt><tt class="py-param">class_type</tt><tt class="py-op"> [...]
+</div><div id="_swig_setattr-collapsed" style="display:none;" pad="++" indent="++++"></div><div id="_swig_setattr-expanded"><a name="L22"></a><tt class="py-lineno">22</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">_swig_setattr_nondynamic</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt><tt class="py-name">class_type</tt><tt class="py-op">,</tt><tt class="py-name">name</tt><tt class="py-op">,</tt><tt class="py-name">va [...]
+</div><a name="L23"></a><tt class="py-lineno">23</tt>  <tt class="py-line"> </tt>
+<a name="_swig_getattr"></a><div id="_swig_getattr-def"><a name="L24"></a><tt class="py-lineno">24</tt> <a class="py-toggle" href="#" id="_swig_getattr-toggle" onclick="return toggle('_swig_getattr');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.posix_maxpriority-module.html#_swig_getattr">_swig_getattr</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt><tt class="py-param">class_type</tt><tt class="py-op"> [...]
+</div><div id="_swig_getattr-collapsed" style="display:none;" pad="++" indent="++++"></div><div id="_swig_getattr-expanded"><a name="L25"></a><tt class="py-lineno">25</tt>  <tt class="py-line">    <tt class="py-name">method</tt> <tt class="py-op">=</tt> <tt class="py-name">class_type</tt><tt class="py-op">.</tt><tt class="py-name">__swig_getmethods__</tt><tt class="py-op">.</tt><tt id="link-1" class="py-name"><a title="VisionEgg.PyroClient.PyroClient.get" class="py-name" href="#" onclick [...]
+<a name="L26"></a><tt class="py-lineno">26</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">method</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> <tt class="py-name">method</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
+<a name="L27"></a><tt class="py-lineno">27</tt>  <tt class="py-line">    <tt class="py-keyword">raise</tt> <tt class="py-name">AttributeError</tt><tt class="py-op">,</tt><tt class="py-name">name</tt> </tt>
+</div><a name="L28"></a><tt class="py-lineno">28</tt>  <tt class="py-line"> </tt>
+<a name="L29"></a><tt class="py-lineno">29</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">types</tt> </tt>
+<a name="L30"></a><tt class="py-lineno">30</tt>  <tt class="py-line"><tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L31"></a><tt class="py-lineno">31</tt>  <tt class="py-line">    <tt class="py-name">_object</tt> <tt class="py-op">=</tt> <tt class="py-name">types</tt><tt class="py-op">.</tt><tt class="py-name">ObjectType</tt> </tt>
+<a name="L32"></a><tt class="py-lineno">32</tt>  <tt class="py-line">    <tt id="link-2" class="py-name" targets="Variable VisionEgg.darwin_getrefresh._newclass=VisionEgg.darwin_getrefresh-module.html#_newclass,Variable VisionEgg.gl_qt._newclass=VisionEgg.gl_qt-module.html#_newclass,Variable VisionEgg.posix_maxpriority._newclass=VisionEgg.posix_maxpriority-module.html#_newclass,Variable VisionEgg.win32_getrefresh._newclass=VisionEgg.win32_getrefresh-module.html#_newclass,Variable VisionE [...]
+VisionEgg.gl_qt._newclass
+VisionEgg.posix_maxpriority._newclass
+VisionEgg.win32_getrefresh._newclass
+VisionEgg.win32_maxpriority._newclass" class="py-name" href="#" onclick="return doclink('link-2', '_newclass', 'link-2');">_newclass</a></tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L33"></a><tt class="py-lineno">33</tt>  <tt class="py-line"><tt class="py-keyword">except</tt> <tt class="py-name">AttributeError</tt><tt class="py-op">:</tt> </tt>
+<a name="_object"></a><div id="_object-def"><a name="L34"></a><tt class="py-lineno">34</tt> <a class="py-toggle" href="#" id="_object-toggle" onclick="return toggle('_object');">-</a><tt class="py-line">    <tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.posix_maxpriority._object-class.html">_object</a> <tt class="py-op">:</tt> <tt class="py-keyword">pass</tt> </tt>
+</div><a name="L35"></a><tt class="py-lineno">35</tt>  <tt class="py-line">    <tt id="link-3" class="py-name"><a title="VisionEgg.darwin_getrefresh._newclass
+VisionEgg.gl_qt._newclass
+VisionEgg.posix_maxpriority._newclass
+VisionEgg.win32_getrefresh._newclass
+VisionEgg.win32_maxpriority._newclass" class="py-name" href="#" onclick="return doclink('link-3', '_newclass', 'link-2');">_newclass</a></tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L36"></a><tt class="py-lineno">36</tt>  <tt class="py-line"><tt class="py-keyword">del</tt> <tt class="py-name">types</tt> </tt>
+<a name="L37"></a><tt class="py-lineno">37</tt>  <tt class="py-line"> </tt>
+<a name="L38"></a><tt class="py-lineno">38</tt>  <tt class="py-line"> </tt>
+<a name="L39"></a><tt class="py-lineno">39</tt>  <tt class="py-line"><tt id="link-4" class="py-name" targets="Variable VisionEgg.posix_maxpriority.SCHED_RR=VisionEgg.posix_maxpriority-module.html#SCHED_RR"><a title="VisionEgg.posix_maxpriority.SCHED_RR" class="py-name" href="#" onclick="return doclink('link-4', 'SCHED_RR', 'link-4');">SCHED_RR</a></tt> <tt class="py-op">=</tt> <tt class="py-name">_posix_maxpriority</tt><tt class="py-op">.</tt><tt id="link-5" class="py-name"><a title="Vis [...]
+<a name="L40"></a><tt class="py-lineno">40</tt>  <tt class="py-line"><tt id="link-6" class="py-name" targets="Variable VisionEgg.posix_maxpriority.SCHED_FIFO=VisionEgg.posix_maxpriority-module.html#SCHED_FIFO"><a title="VisionEgg.posix_maxpriority.SCHED_FIFO" class="py-name" href="#" onclick="return doclink('link-6', 'SCHED_FIFO', 'link-6');">SCHED_FIFO</a></tt> <tt class="py-op">=</tt> <tt class="py-name">_posix_maxpriority</tt><tt class="py-op">.</tt><tt id="link-7" class="py-name"><a  [...]
+<a name="L41"></a><tt class="py-lineno">41</tt>  <tt class="py-line"> </tt>
+<a name="L42"></a><tt class="py-lineno">42</tt>  <tt class="py-line"><tt id="link-8" class="py-name" targets="Variable VisionEgg.posix_maxpriority.set_self_policy_priority=VisionEgg.posix_maxpriority-module.html#set_self_policy_priority"><a title="VisionEgg.posix_maxpriority.set_self_policy_priority" class="py-name" href="#" onclick="return doclink('link-8', 'set_self_policy_priority', 'link-8');">set_self_policy_priority</a></tt> <tt class="py-op">=</tt> <tt class="py-name">_posix_maxpr [...]
+<a name="L43"></a><tt class="py-lineno">43</tt>  <tt class="py-line"> </tt>
+<a name="L44"></a><tt class="py-lineno">44</tt>  <tt class="py-line"><tt id="link-10" class="py-name" targets="Variable VisionEgg.posix_maxpriority.stop_memory_paging=VisionEgg.posix_maxpriority-module.html#stop_memory_paging"><a title="VisionEgg.posix_maxpriority.stop_memory_paging" class="py-name" href="#" onclick="return doclink('link-10', 'stop_memory_paging', 'link-10');">stop_memory_paging</a></tt> <tt class="py-op">=</tt> <tt class="py-name">_posix_maxpriority</tt><tt class="py-op [...]
+<a name="L45"></a><tt class="py-lineno">45</tt>  <tt class="py-line"> </tt>
+<a name="L46"></a><tt class="py-lineno">46</tt>  <tt class="py-line"><tt id="link-12" class="py-name" targets="Variable VisionEgg.posix_maxpriority.sched_get_priority_max=VisionEgg.posix_maxpriority-module.html#sched_get_priority_max"><a title="VisionEgg.posix_maxpriority.sched_get_priority_max" class="py-name" href="#" onclick="return doclink('link-12', 'sched_get_priority_max', 'link-12');">sched_get_priority_max</a></tt> <tt class="py-op">=</tt> <tt class="py-name">_posix_maxpriority< [...]
+<a name="L47"></a><tt class="py-lineno">47</tt>  <tt class="py-line"> </tt><script type="text/javascript">
+<!--
+expandto(location.href);
+// -->
+</script>
+</pre>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:48 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.qtlowlevel-module.html b/doc/reference/html/VisionEgg.qtlowlevel-module.html
new file mode 100644
index 0000000..e2064b0
--- /dev/null
+++ b/doc/reference/html/VisionEgg.qtlowlevel-module.html
@@ -0,0 +1,1071 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.qtlowlevel</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        Module qtlowlevel
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.qtlowlevel-module.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== MODULE DESCRIPTION ==================== -->
+<h1 class="epydoc">Module qtlowlevel</h1><span class="codelink"><a href="VisionEgg.qtlowlevel-pysrc.html">source code</a></span><br /><br />
+<!-- ==================== CLASSES ==================== -->
+<a name="section-Classes"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Classes</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.qtlowlevel.Rect-class.html" class="summary-name">Rect</a>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.qtlowlevel.QTNewMoviePropertyElement-class.html" class="summary-name">QTNewMoviePropertyElement</a>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.qtlowlevel.qtlowlevelError-class.html" class="summary-name">qtlowlevelError</a>
+    </td>
+  </tr>
+</table>
+<!-- ==================== FUNCTIONS ==================== -->
+<a name="section-Functions"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Functions</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="FOUR_CHAR_CODE"></a><span class="summary-sig-name">FOUR_CHAR_CODE</span>(<span class="summary-sig-arg">code</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.qtlowlevel-pysrc.html#FOUR_CHAR_CODE">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="GetErrorString"></a><span class="summary-sig-name">GetErrorString</span>(<span class="summary-sig-arg">value</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.qtlowlevel-pysrc.html#GetErrorString">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="CheckOSStatus"></a><span class="summary-sig-name">CheckOSStatus</span>(<span class="summary-sig-arg">value</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.qtlowlevel-pysrc.html#CheckOSStatus">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+</table>
+<!-- ==================== VARIABLES ==================== -->
+<a name="section-Variables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Variables</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.qtlowlevel-module.html#QTMLClient" class="summary-name">QTMLClient</a> = <code title="ctypes.CDLL(r'C:\Program Files\QuickTime\QTSystem\QTMLClient.dll')">ctypes.CDLL(r'C:\Program Files\QuickTime\QTSystem<code class="variable-ellipsis">...</code></code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="OSErr"></a><span class="summary-name">OSErr</span> = <code title="ctypes.c_short">ctypes.c_short</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="OSStatus"></a><span class="summary-name">OSStatus</span> = <code title="ctypes.c_int">ctypes.c_int</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="ItemCount"></a><span class="summary-name">ItemCount</span> = <code title="ctypes.c_uint">ctypes.c_uint</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="FourCharCode"></a><span class="summary-name">FourCharCode</span> = <code title="ctypes.c_int">ctypes.c_int</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="OSType"></a><span class="summary-name">OSType</span> = <code title="ctypes.c_int">ctypes.c_int</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="QTPropertyClass"></a><span class="summary-name">QTPropertyClass</span> = <code title="ctypes.c_int">ctypes.c_int</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="QTPropertyID"></a><span class="summary-name">QTPropertyID</span> = <code title="ctypes.c_int">ctypes.c_int</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="ByteCount"></a><span class="summary-name">ByteCount</span> = <code title="ctypes.c_uint">ctypes.c_uint</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="QTPropertyValuePtr"></a><span class="summary-name">QTPropertyValuePtr</span> = <code title="ctypes.c_void_p">ctypes.c_void_p</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="QTVisualContextRef"></a><span class="summary-name">QTVisualContextRef</span> = <code title="ctypes.c_void_p">ctypes.c_void_p</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="Movie"></a><span class="summary-name">Movie</span> = <code title="ctypes.c_void_p">ctypes.c_void_p</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="kQTPropertyClass_DataLocation"></a><span class="summary-name">kQTPropertyClass_DataLocation</span> = <code title="FOUR_CHAR_CODE('dloc')">FOUR_CHAR_CODE('dloc')</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="kQTDataLocationPropertyID_DataReference"></a><span class="summary-name">kQTDataLocationPropertyID_DataReference</span> = <code title="FOUR_CHAR_CODE('dref')">FOUR_CHAR_CODE('dref')</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.qtlowlevel-module.html#kQTDataLocationPropertyID_CFStringNativePath" class="summary-name">kQTDataLocationPropertyID_CFStringNativePath</a> = <code title="FOUR_CHAR_CODE('cfnp')">FOUR_CHAR_CODE(<code class="variable-ellipsis">...</code></code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.qtlowlevel-module.html#kQTDataLocationPropertyID_CFStringPosixPath" class="summary-name">kQTDataLocationPropertyID_CFStringPosixPath</a> = <code title="FOUR_CHAR_CODE('cfpp')">FOUR_CHAR_CODE('<code class="variable-ellipsis">...</code></code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.qtlowlevel-module.html#kQTDataLocationPropertyID_CFStringHFSPath" class="summary-name">kQTDataLocationPropertyID_CFStringHFSPath</a> = <code title="FOUR_CHAR_CODE('cfhp')">FOUR_CHAR_CODE('cf<code class="variable-ellipsis">...</code></code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.qtlowlevel-module.html#kQTDataLocationPropertyID_CFStringWindowsPath" class="summary-name">kQTDataLocationPropertyID_CFStringWindowsPath</a> = <code title="FOUR_CHAR_CODE('cfwp')">FOUR_CHAR_CODE<code class="variable-ellipsis">...</code></code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="kQTDataLocationPropertyID_CFURL"></a><span class="summary-name">kQTDataLocationPropertyID_CFURL</span> = <code title="FOUR_CHAR_CODE('cfur')">FOUR_CHAR_CODE('cfur')</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="kQTDataLocationPropertyID_QTDataHandler"></a><span class="summary-name">kQTDataLocationPropertyID_QTDataHandler</span> = <code title="FOUR_CHAR_CODE('qtdh')">FOUR_CHAR_CODE('qtdh')</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="kQTDataLocationPropertyID_Scrap"></a><span class="summary-name">kQTDataLocationPropertyID_Scrap</span> = <code title="FOUR_CHAR_CODE('scrp')">FOUR_CHAR_CODE('scrp')</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.qtlowlevel-module.html#kQTDataLocationPropertyID_LegacyMovieResourceHandle" class="summary-name">kQTDataLocationPropertyID_LegacyMovieResourceHandle</a> = <code title="FOUR_CHAR_CODE('rezh')">FOUR_CHA<code class="variable-ellipsis">...</code></code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="kQTDataLocationPropertyID_MovieUserProc"></a><span class="summary-name">kQTDataLocationPropertyID_MovieUserProc</span> = <code title="FOUR_CHAR_CODE('uspr')">FOUR_CHAR_CODE('uspr')</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="kQTDataLocationPropertyID_ResourceFork"></a><span class="summary-name">kQTDataLocationPropertyID_ResourceFork</span> = <code title="FOUR_CHAR_CODE('rfrk')">FOUR_CHAR_CODE('rfrk')</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="kQTDataLocationPropertyID_DataFork"></a><span class="summary-name">kQTDataLocationPropertyID_DataFork</span> = <code title="FOUR_CHAR_CODE('dfrk')">FOUR_CHAR_CODE('dfrk')</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="kQTPropertyClass_Context"></a><span class="summary-name">kQTPropertyClass_Context</span> = <code title="FOUR_CHAR_CODE('ctxt')">FOUR_CHAR_CODE('ctxt')</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="kQTContextPropertyID_AudioContext"></a><span class="summary-name">kQTContextPropertyID_AudioContext</span> = <code title="FOUR_CHAR_CODE('audi')">FOUR_CHAR_CODE('audi')</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="kQTContextPropertyID_VisualContext"></a><span class="summary-name">kQTContextPropertyID_VisualContext</span> = <code title="FOUR_CHAR_CODE('visu')">FOUR_CHAR_CODE('visu')</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="kQTPropertyClass_MovieResourceLocator"></a><span class="summary-name">kQTPropertyClass_MovieResourceLocator</span> = <code title="FOUR_CHAR_CODE('rloc')">FOUR_CHAR_CODE('rloc')</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.qtlowlevel-module.html#kQTMovieResourceLocatorPropertyID_LegacyResID" class="summary-name">kQTMovieResourceLocatorPropertyID_LegacyResID</a> = <code title="FOUR_CHAR_CODE('rezi')">FOUR_CHAR_CODE<code class="variable-ellipsis">...</code></code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.qtlowlevel-module.html#kQTMovieResourceLocatorPropertyID_LegacyResName" class="summary-name">kQTMovieResourceLocatorPropertyID_LegacyResName</a> = <code title="FOUR_CHAR_CODE('rezn')">FOUR_CHAR_CO<code class="variable-ellipsis">...</code></code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.qtlowlevel-module.html#kQTMovieResourceLocatorPropertyID_FileOffset" class="summary-name">kQTMovieResourceLocatorPropertyID_FileOffset</a> = <code title="FOUR_CHAR_CODE('foff')">FOUR_CHAR_CODE(<code class="variable-ellipsis">...</code></code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.qtlowlevel-module.html#kQTMovieResourceLocatorPropertyID_Callback" class="summary-name">kQTMovieResourceLocatorPropertyID_Callback</a> = <code title="FOUR_CHAR_CODE('calb')">FOUR_CHAR_CODE('c<code class="variable-ellipsis">...</code></code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="kQTPropertyClass_MovieInstantiation"></a><span class="summary-name">kQTPropertyClass_MovieInstantiation</span> = <code title="FOUR_CHAR_CODE('mins')">FOUR_CHAR_CODE('mins')</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.qtlowlevel-module.html#kQTMovieInstantiationPropertyID_DontResolveDataRefs" class="summary-name">kQTMovieInstantiationPropertyID_DontResolveDataRefs</a> = <code title="FOUR_CHAR_CODE('rdrn')">FOUR_CHA<code class="variable-ellipsis">...</code></code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.qtlowlevel-module.html#kQTMovieInstantiationPropertyID_DontAskUnresolvedDataRefs" class="summary-name">kQTMovieInstantiationPropertyID_DontAskUnresolvedDataRefs</a> = <code title="FOUR_CHAR_CODE('aurn')">FO<code class="variable-ellipsis">...</code></code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.qtlowlevel-module.html#kQTMovieInstantiationPropertyID_DontAutoAlternates" class="summary-name">kQTMovieInstantiationPropertyID_DontAutoAlternates</a> = <code title="FOUR_CHAR_CODE('aaln')">FOUR_CHAR<code class="variable-ellipsis">...</code></code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.qtlowlevel-module.html#kQTMovieInstantiationPropertyID_DontUpdateForeBackPointers" class="summary-name">kQTMovieInstantiationPropertyID_DontUpdateForeBackPointers</a> = <code title="FOUR_CHAR_CODE('fbpn')">F<code class="variable-ellipsis">...</code></code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="kQTMovieInstantiationPropertyID_AsyncOK"></a><span class="summary-name">kQTMovieInstantiationPropertyID_AsyncOK</span> = <code title="FOUR_CHAR_CODE('asok')">FOUR_CHAR_CODE('asok')</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.qtlowlevel-module.html#kQTMovieInstantiationPropertyID_IdleImportOK" class="summary-name">kQTMovieInstantiationPropertyID_IdleImportOK</a> = <code title="FOUR_CHAR_CODE('imok')">FOUR_CHAR_CODE(<code class="variable-ellipsis">...</code></code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.qtlowlevel-module.html#kQTMovieInstantiationPropertyID_DontAutoUpdateClock" class="summary-name">kQTMovieInstantiationPropertyID_DontAutoUpdateClock</a> = <code title="FOUR_CHAR_CODE('aucl')">FOUR_CHA<code class="variable-ellipsis">...</code></code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.qtlowlevel-module.html#kQTMovieInstantiationPropertyID_ResultDataLocationChanged" class="summary-name">kQTMovieInstantiationPropertyID_ResultDataLocationChanged</a> = <code title="FOUR_CHAR_CODE('dlch')">FO<code class="variable-ellipsis">...</code></code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="kQTPropertyClass_NewMovieProperty"></a><span class="summary-name">kQTPropertyClass_NewMovieProperty</span> = <code title="FOUR_CHAR_CODE('mprp')">FOUR_CHAR_CODE('mprp')</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="kQTNewMoviePropertyID_DefaultDataRef"></a><span class="summary-name">kQTNewMoviePropertyID_DefaultDataRef</span> = <code title="FOUR_CHAR_CODE('ddrf')">FOUR_CHAR_CODE('ddrf')</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="kQTNewMoviePropertyID_Active"></a><span class="summary-name">kQTNewMoviePropertyID_Active</span> = <code title="FOUR_CHAR_CODE('actv')">FOUR_CHAR_CODE('actv')</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.qtlowlevel-module.html#kQTNewMoviePropertyID_DontInteractWithUser" class="summary-name">kQTNewMoviePropertyID_DontInteractWithUser</a> = <code title="FOUR_CHAR_CODE('intn')">FOUR_CHAR_CODE('i<code class="variable-ellipsis">...</code></code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="noErr"></a><span class="summary-name">noErr</span> = <code title="0">0</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="paramErr"></a><span class="summary-name">paramErr</span> = <code title="-50">-50</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="movieToolboxUninitialized"></a><span class="summary-name">movieToolboxUninitialized</span> = <code title="-2020">-2020</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="NewMovieFromFile"></a><span class="summary-name">NewMovieFromFile</span> = <code title="QTMLClient.NewMovieFromFile">QTMLClient.NewMovieFromFile</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="NewMovieFromProperties"></a><span class="summary-name">NewMovieFromProperties</span> = <code title="QTMLClient.NewMovieFromProperties">QTMLClient.NewMovieFromProperties</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="InitializeQTML"></a><span class="summary-name">InitializeQTML</span> = <code title="QTMLClient.InitializeQTML">QTMLClient.InitializeQTML</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="EnterMovies"></a><span class="summary-name">EnterMovies</span> = <code title="QTMLClient.EnterMovies">QTMLClient.EnterMovies</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="QTGetCFConstant"></a><span class="summary-name">QTGetCFConstant</span> = <code title="QTMLClient.QTGetCFConstant">QTMLClient.QTGetCFConstant</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="GetMovieBox"></a><span class="summary-name">GetMovieBox</span> = <code title="QTMLClient.GetMovieBox">QTMLClient.GetMovieBox</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="SetMovieBox"></a><span class="summary-name">SetMovieBox</span> = <code title="QTMLClient.SetMovieBox">QTMLClient.SetMovieBox</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="StartMovie"></a><span class="summary-name">StartMovie</span> = <code title="QTMLClient.StartMovie">QTMLClient.StartMovie</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="MoviesTask"></a><span class="summary-name">MoviesTask</span> = <code title="QTMLClient.MoviesTask">QTMLClient.MoviesTask</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="IsMovieDone"></a><span class="summary-name">IsMovieDone</span> = <code title="QTMLClient.IsMovieDone">QTMLClient.IsMovieDone</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="GoToBeginningOfMovie"></a><span class="summary-name">GoToBeginningOfMovie</span> = <code title="QTMLClient.GoToBeginningOfMovie">QTMLClient.GoToBeginningOfMovie</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="FSSpec"></a><span class="summary-name">FSSpec</span> = <code title="ctypes.c_void_p">ctypes.c_void_p</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="CFStringRef"></a><span class="summary-name">CFStringRef</span> = <code title="ctypes.c_void_p">ctypes.c_void_p</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="CFStringEncoding"></a><span class="summary-name">CFStringEncoding</span> = <code title="ctypes.c_uint">ctypes.c_uint</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="CFAllocatorRef"></a><span class="summary-name">CFAllocatorRef</span> = <code title="ctypes.c_void_p">ctypes.c_void_p</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="CFIndex"></a><span class="summary-name">CFIndex</span> = <code title="ctypes.c_int">ctypes.c_int</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.qtlowlevel-module.html#CFStringCreateWithCharacters" class="summary-name">CFStringCreateWithCharacters</a> = <code title="QTMLClient.CFStringCreateWithCharacters">QTMLClient.CFStringCreateWithCh<code class="variable-ellipsis">...</code></code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="CFStringCreateWithCString"></a><span class="summary-name">CFStringCreateWithCString</span> = <code title="QTMLClient.CFStringCreateWithCString">QTMLClient.CFStringCreateWithCString</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="CFStringGetCString"></a><span class="summary-name">CFStringGetCString</span> = <code title="QTMLClient.CFStringGetCString">QTMLClient.CFStringGetCString</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="CFStringGetCStringPtr"></a><span class="summary-name">CFStringGetCStringPtr</span> = <code title="QTMLClient.CFStringGetCStringPtr">QTMLClient.CFStringGetCStringPtr</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="NativePathNameToFSSpec"></a><span class="summary-name">NativePathNameToFSSpec</span> = <code title="QTMLClient.NativePathNameToFSSpec">QTMLClient.NativePathNameToFSSpec</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="OpenMovieFile"></a><span class="summary-name">OpenMovieFile</span> = <code title="QTMLClient.OpenMovieFile">QTMLClient.OpenMovieFile</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="kCFAllocatorDefault"></a><span class="summary-name">kCFAllocatorDefault</span> = <code title="0">0</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="kCFStringEncodingMacRoman"></a><span class="summary-name">kCFStringEncodingMacRoman</span> = <code title="0">0</code>
+    </td>
+  </tr>
+</table>
+<!-- ==================== VARIABLES DETAILS ==================== -->
+<a name="section-VariablesDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Variables Details</span></td>
+</tr>
+</table>
+<a name="QTMLClient"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">QTMLClient</h3>
+  
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+ctypes.CDLL(r'C:\Program Files\QuickTime\QTSystem\QTMLClient.dll')
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="kQTDataLocationPropertyID_CFStringNativePath"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">kQTDataLocationPropertyID_CFStringNativePath</h3>
+  
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+FOUR_CHAR_CODE('cfnp')
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="kQTDataLocationPropertyID_CFStringPosixPath"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">kQTDataLocationPropertyID_CFStringPosixPath</h3>
+  
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+FOUR_CHAR_CODE('cfpp')
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="kQTDataLocationPropertyID_CFStringHFSPath"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">kQTDataLocationPropertyID_CFStringHFSPath</h3>
+  
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+FOUR_CHAR_CODE('cfhp')
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="kQTDataLocationPropertyID_CFStringWindowsPath"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">kQTDataLocationPropertyID_CFStringWindowsPath</h3>
+  
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+FOUR_CHAR_CODE('cfwp')
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="kQTDataLocationPropertyID_LegacyMovieResourceHandle"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">kQTDataLocationPropertyID_LegacyMovieResourceHandle</h3>
+  
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+FOUR_CHAR_CODE('rezh')
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="kQTMovieResourceLocatorPropertyID_LegacyResID"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">kQTMovieResourceLocatorPropertyID_LegacyResID</h3>
+  
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+FOUR_CHAR_CODE('rezi')
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="kQTMovieResourceLocatorPropertyID_LegacyResName"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">kQTMovieResourceLocatorPropertyID_LegacyResName</h3>
+  
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+FOUR_CHAR_CODE('rezn')
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="kQTMovieResourceLocatorPropertyID_FileOffset"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">kQTMovieResourceLocatorPropertyID_FileOffset</h3>
+  
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+FOUR_CHAR_CODE('foff')
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="kQTMovieResourceLocatorPropertyID_Callback"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">kQTMovieResourceLocatorPropertyID_Callback</h3>
+  
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+FOUR_CHAR_CODE('calb')
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="kQTMovieInstantiationPropertyID_DontResolveDataRefs"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">kQTMovieInstantiationPropertyID_DontResolveDataRefs</h3>
+  
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+FOUR_CHAR_CODE('rdrn')
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="kQTMovieInstantiationPropertyID_DontAskUnresolvedDataRefs"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">kQTMovieInstantiationPropertyID_DontAskUnresolvedDataRefs</h3>
+  
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+FOUR_CHAR_CODE('aurn')
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="kQTMovieInstantiationPropertyID_DontAutoAlternates"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">kQTMovieInstantiationPropertyID_DontAutoAlternates</h3>
+  
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+FOUR_CHAR_CODE('aaln')
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="kQTMovieInstantiationPropertyID_DontUpdateForeBackPointers"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">kQTMovieInstantiationPropertyID_DontUpdateForeBackPointers</h3>
+  
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+FOUR_CHAR_CODE('fbpn')
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="kQTMovieInstantiationPropertyID_IdleImportOK"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">kQTMovieInstantiationPropertyID_IdleImportOK</h3>
+  
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+FOUR_CHAR_CODE('imok')
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="kQTMovieInstantiationPropertyID_DontAutoUpdateClock"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">kQTMovieInstantiationPropertyID_DontAutoUpdateClock</h3>
+  
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+FOUR_CHAR_CODE('aucl')
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="kQTMovieInstantiationPropertyID_ResultDataLocationChanged"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">kQTMovieInstantiationPropertyID_ResultDataLocationChanged</h3>
+  
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+FOUR_CHAR_CODE('dlch')
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="kQTNewMoviePropertyID_DontInteractWithUser"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">kQTNewMoviePropertyID_DontInteractWithUser</h3>
+  
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+FOUR_CHAR_CODE('intn')
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="CFStringCreateWithCharacters"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">CFStringCreateWithCharacters</h3>
+  
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+QTMLClient.CFStringCreateWithCharacters
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.qtlowlevel-pysrc.html b/doc/reference/html/VisionEgg.qtlowlevel-pysrc.html
new file mode 100644
index 0000000..bc1e75a
--- /dev/null
+++ b/doc/reference/html/VisionEgg.qtlowlevel-pysrc.html
@@ -0,0 +1,340 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.qtlowlevel</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        Module qtlowlevel
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.qtlowlevel-pysrc.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<h1 class="epydoc">Source Code for <a href="VisionEgg.qtlowlevel-module.html">Module VisionEgg.qtlowlevel</a></h1>
+<pre class="py-src">
+<a name="L1"></a><tt class="py-lineno">  1</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">os</tt><tt class="py-op">,</tt> <tt class="py-name">sys</tt> </tt>
+<a name="L2"></a><tt class="py-lineno">  2</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">ctypes</tt> </tt>
+<a name="L3"></a><tt class="py-lineno">  3</tt>  <tt class="py-line"> </tt>
+<a name="L4"></a><tt class="py-lineno">  4</tt>  <tt class="py-line"><tt class="py-keyword">if</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">name</tt><tt class="py-op">==</tt><tt class="py-string">'nt'</tt><tt class="py-op">:</tt> </tt>
+<a name="L5"></a><tt class="py-lineno">  5</tt>  <tt class="py-line">    <tt id="link-0" class="py-name" targets="Variable VisionEgg.qtlowlevel.QTMLClient=VisionEgg.qtlowlevel-module.html#QTMLClient"><a title="VisionEgg.qtlowlevel.QTMLClient" class="py-name" href="#" onclick="return doclink('link-0', 'QTMLClient', 'link-0');">QTMLClient</a></tt> <tt class="py-op">=</tt> <tt class="py-name">ctypes</tt><tt class="py-op">.</tt><tt class="py-name">CDLL</tt><tt class="py-op">(</tt><tt class=" [...]
+<a name="L6"></a><tt class="py-lineno">  6</tt>  <tt class="py-line"><tt class="py-keyword">elif</tt> <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">platform</tt><tt class="py-op">.</tt><tt class="py-name">startswith</tt><tt class="py-op">(</tt><tt class="py-string">'darwin'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L7"></a><tt class="py-lineno">  7</tt>  <tt class="py-line">    <tt class="py-comment"># There was once a functional Mac QuickTime implementation, but it</tt> </tt>
+<a name="L8"></a><tt class="py-lineno">  8</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># used a combination of the Python stdlib's quicktime module and</tt> </tt>
+<a name="L9"></a><tt class="py-lineno">  9</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># some C extensions based on the Carbon QuickTime interface. Given</tt> </tt>
+<a name="L10"></a><tt class="py-lineno"> 10</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># the inevitable long-term ultimate demise of Carbon, it would be</tt> </tt>
+<a name="L11"></a><tt class="py-lineno"> 11</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># foolish to spend much time on the Carbon implementation. On the</tt> </tt>
+<a name="L12"></a><tt class="py-lineno"> 12</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># other hand, the newer implementation will require someone who</tt> </tt>
+<a name="L13"></a><tt class="py-lineno"> 13</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-comment"># knows or learns the new QTKit bindings, which come included with PyObjC.</tt> </tt>
+<a name="L14"></a><tt class="py-lineno"> 14</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">raise</tt> <tt class="py-name">NotImplementedError</tt><tt class="py-op">(</tt><tt class="py-string">'QuickTime support is not implemented for Mac OS X.'</tt><tt class="py-op">)</tt> </tt>
+<a name="L15"></a><tt class="py-lineno"> 15</tt>  <tt class="py-line"> </tt>
+<a name="L16"></a><tt class="py-lineno"> 16</tt>  <tt class="py-line"><tt class="py-comment"># OSErr SInt16 MacTypes.h</tt> </tt>
+<a name="L17"></a><tt class="py-lineno"> 17</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># OSStatus SInt32 MacTypes.h</tt> </tt>
+<a name="L18"></a><tt class="py-lineno"> 18</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># ItemCount UInt32 MacTypes.h</tt> </tt>
+<a name="L19"></a><tt class="py-lineno"> 19</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># FourCharCode SInt32 MacTypes.h</tt> </tt>
+<a name="L20"></a><tt class="py-lineno"> 20</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># OSType FourCharCode MacTypes.h</tt> </tt>
+<a name="L21"></a><tt class="py-lineno"> 21</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># QTNewMoviePropertyElement struct Movies.h</tt> </tt>
+<a name="L22"></a><tt class="py-lineno"> 22</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># QTPropertyClass OSType Movies.h</tt> </tt>
+<a name="L23"></a><tt class="py-lineno"> 23</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># QTPropertyID OSType Movies.h</tt> </tt>
+<a name="L24"></a><tt class="py-lineno"> 24</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># ByteCount UInt32 MacTypes.h</tt> </tt>
+<a name="L25"></a><tt class="py-lineno"> 25</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># QTPropertyValuePtr void* Movies.h</tt> </tt>
+<a name="L26"></a><tt class="py-lineno"> 26</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Movie</tt> </tt>
+<a name="L27"></a><tt class="py-lineno"> 27</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L28"></a><tt class="py-lineno"> 28</tt>  <tt class="py-line"><tt id="link-1" class="py-name" targets="Variable VisionEgg.qtlowlevel.OSErr=VisionEgg.qtlowlevel-module.html#OSErr"><a title="VisionEgg.qtlowlevel.OSErr" class="py-name" href="#" onclick="return doclink('link-1', 'OSErr', 'link-1');">OSErr</a></tt> <tt class="py-op">=</tt> <tt class="py-name">ctypes</tt><tt class="py-op">.</tt><tt class="py-name">c_short</tt> </tt>
+<a name="L29"></a><tt class="py-lineno"> 29</tt>  <tt class="py-line"><tt id="link-2" class="py-name" targets="Variable VisionEgg.qtlowlevel.OSStatus=VisionEgg.qtlowlevel-module.html#OSStatus"><a title="VisionEgg.qtlowlevel.OSStatus" class="py-name" href="#" onclick="return doclink('link-2', 'OSStatus', 'link-2');">OSStatus</a></tt> <tt class="py-op">=</tt> <tt class="py-name">ctypes</tt><tt class="py-op">.</tt><tt class="py-name">c_int</tt> </tt>
+<a name="L30"></a><tt class="py-lineno"> 30</tt>  <tt class="py-line"><tt id="link-3" class="py-name" targets="Variable VisionEgg.qtlowlevel.ItemCount=VisionEgg.qtlowlevel-module.html#ItemCount"><a title="VisionEgg.qtlowlevel.ItemCount" class="py-name" href="#" onclick="return doclink('link-3', 'ItemCount', 'link-3');">ItemCount</a></tt> <tt class="py-op">=</tt> <tt class="py-name">ctypes</tt><tt class="py-op">.</tt><tt class="py-name">c_uint</tt> </tt>
+<a name="L31"></a><tt class="py-lineno"> 31</tt>  <tt class="py-line"><tt id="link-4" class="py-name" targets="Variable VisionEgg.qtlowlevel.FourCharCode=VisionEgg.qtlowlevel-module.html#FourCharCode"><a title="VisionEgg.qtlowlevel.FourCharCode" class="py-name" href="#" onclick="return doclink('link-4', 'FourCharCode', 'link-4');">FourCharCode</a></tt> <tt class="py-op">=</tt> <tt class="py-name">ctypes</tt><tt class="py-op">.</tt><tt class="py-name">c_int</tt> </tt>
+<a name="L32"></a><tt class="py-lineno"> 32</tt>  <tt class="py-line"><tt id="link-5" class="py-name" targets="Variable VisionEgg.qtlowlevel.OSType=VisionEgg.qtlowlevel-module.html#OSType"><a title="VisionEgg.qtlowlevel.OSType" class="py-name" href="#" onclick="return doclink('link-5', 'OSType', 'link-5');">OSType</a></tt> <tt class="py-op">=</tt> <tt id="link-6" class="py-name"><a title="VisionEgg.qtlowlevel.FourCharCode" class="py-name" href="#" onclick="return doclink('link-6', 'FourC [...]
+<a name="L33"></a><tt class="py-lineno"> 33</tt>  <tt class="py-line"><tt id="link-7" class="py-name" targets="Variable VisionEgg.qtlowlevel.QTPropertyClass=VisionEgg.qtlowlevel-module.html#QTPropertyClass"><a title="VisionEgg.qtlowlevel.QTPropertyClass" class="py-name" href="#" onclick="return doclink('link-7', 'QTPropertyClass', 'link-7');">QTPropertyClass</a></tt> <tt class="py-op">=</tt> <tt id="link-8" class="py-name"><a title="VisionEgg.qtlowlevel.OSType" class="py-name" href="#" o [...]
+<a name="L34"></a><tt class="py-lineno"> 34</tt>  <tt class="py-line"><tt id="link-9" class="py-name" targets="Variable VisionEgg.qtlowlevel.QTPropertyID=VisionEgg.qtlowlevel-module.html#QTPropertyID"><a title="VisionEgg.qtlowlevel.QTPropertyID" class="py-name" href="#" onclick="return doclink('link-9', 'QTPropertyID', 'link-9');">QTPropertyID</a></tt> <tt class="py-op">=</tt> <tt id="link-10" class="py-name"><a title="VisionEgg.qtlowlevel.OSType" class="py-name" href="#" onclick="return [...]
+<a name="L35"></a><tt class="py-lineno"> 35</tt>  <tt class="py-line"><tt id="link-11" class="py-name" targets="Variable VisionEgg.qtlowlevel.ByteCount=VisionEgg.qtlowlevel-module.html#ByteCount"><a title="VisionEgg.qtlowlevel.ByteCount" class="py-name" href="#" onclick="return doclink('link-11', 'ByteCount', 'link-11');">ByteCount</a></tt> <tt class="py-op">=</tt> <tt class="py-name">ctypes</tt><tt class="py-op">.</tt><tt class="py-name">c_uint</tt> </tt>
+<a name="L36"></a><tt class="py-lineno"> 36</tt>  <tt class="py-line"><tt id="link-12" class="py-name" targets="Variable VisionEgg.qtlowlevel.QTPropertyValuePtr=VisionEgg.qtlowlevel-module.html#QTPropertyValuePtr"><a title="VisionEgg.qtlowlevel.QTPropertyValuePtr" class="py-name" href="#" onclick="return doclink('link-12', 'QTPropertyValuePtr', 'link-12');">QTPropertyValuePtr</a></tt> <tt class="py-op">=</tt> <tt class="py-name">ctypes</tt><tt class="py-op">.</tt><tt class="py-name">c_vo [...]
+<a name="L37"></a><tt class="py-lineno"> 37</tt>  <tt class="py-line"><tt id="link-13" class="py-name" targets="Variable VisionEgg.qtlowlevel.QTVisualContextRef=VisionEgg.qtlowlevel-module.html#QTVisualContextRef"><a title="VisionEgg.qtlowlevel.QTVisualContextRef" class="py-name" href="#" onclick="return doclink('link-13', 'QTVisualContextRef', 'link-13');">QTVisualContextRef</a></tt> <tt class="py-op">=</tt> <tt class="py-name">ctypes</tt><tt class="py-op">.</tt><tt class="py-name">c_vo [...]
+<a name="Rect"></a><div id="Rect-def"><a name="L38"></a><tt class="py-lineno"> 38</tt> <a class="py-toggle" href="#" id="Rect-toggle" onclick="return toggle('Rect');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.qtlowlevel.Rect-class.html">Rect</a><tt class="py-op">(</tt><tt class="py-base-class">ctypes</tt><tt class="py-op">.</tt><tt class="py-base-class">Structure</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Rect-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="Rect-expanded"><a name="L39"></a><tt class="py-lineno"> 39</tt>  <tt class="py-line">    <tt id="link-14" class="py-name" targets="Variable VisionEgg.qtlowlevel.QTNewMoviePropertyElement._fields_=VisionEgg.qtlowlevel.QTNewMoviePropertyElement-class.html#_fields_,Variable VisionEgg.qtlowlevel.Rect._fields_=VisionEgg.qtlowlevel.Rect-class.html#_fields_"><a title="VisionEgg.qtlowlevel.QTNewMoviePrope [...]
+VisionEgg.qtlowlevel.Rect._fields_" class="py-name" href="#" onclick="return doclink('link-14', '_fields_', 'link-14');">_fields_</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">(</tt><tt class="py-string">"top"</tt><tt class="py-op">,</tt>   <tt class="py-name">ctypes</tt><tt class="py-op">.</tt><tt class="py-name">c_short</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L40"></a><tt class="py-lineno"> 40</tt>  <tt class="py-line">                <tt class="py-op">(</tt><tt class="py-string">"left"</tt><tt class="py-op">,</tt>  <tt class="py-name">ctypes</tt><tt class="py-op">.</tt><tt class="py-name">c_short</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L41"></a><tt class="py-lineno"> 41</tt>  <tt class="py-line">                <tt class="py-op">(</tt><tt class="py-string">"bottom"</tt><tt class="py-op">,</tt><tt class="py-name">ctypes</tt><tt class="py-op">.</tt><tt class="py-name">c_short</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L42"></a><tt class="py-lineno"> 42</tt>  <tt class="py-line">                <tt class="py-op">(</tt><tt class="py-string">"right"</tt><tt class="py-op">,</tt> <tt class="py-name">ctypes</tt><tt class="py-op">.</tt><tt class="py-name">c_short</tt><tt class="py-op">)</tt><tt class="py-op">]</tt> </tt>
+</div><a name="L43"></a><tt class="py-lineno"> 43</tt>  <tt class="py-line"> </tt>
+<a name="L44"></a><tt class="py-lineno"> 44</tt>  <tt class="py-line"><tt id="link-15" class="py-name" targets="Variable VisionEgg.qtlowlevel.Movie=VisionEgg.qtlowlevel-module.html#Movie,Class VisionEgg.qtmovie.Movie=VisionEgg.qtmovie.Movie-class.html"><a title="VisionEgg.qtlowlevel.Movie
+VisionEgg.qtmovie.Movie" class="py-name" href="#" onclick="return doclink('link-15', 'Movie', 'link-15');">Movie</a></tt> <tt class="py-op">=</tt> <tt class="py-name">ctypes</tt><tt class="py-op">.</tt><tt class="py-name">c_void_p</tt> <tt class="py-comment"># not done</tt> </tt>
+<a name="L45"></a><tt class="py-lineno"> 45</tt>  <tt class="py-line"> </tt>
+<a name="QTNewMoviePropertyElement"></a><div id="QTNewMoviePropertyElement-def"><a name="L46"></a><tt class="py-lineno"> 46</tt> <a class="py-toggle" href="#" id="QTNewMoviePropertyElement-toggle" onclick="return toggle('QTNewMoviePropertyElement');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.qtlowlevel.QTNewMoviePropertyElement-class.html">QTNewMoviePropertyElement</a><tt class="py-op">(</tt><tt class="py-base-class">ctypes</tt><tt  [...]
+</div><div id="QTNewMoviePropertyElement-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="QTNewMoviePropertyElement-expanded"><a name="L47"></a><tt class="py-lineno"> 47</tt>  <tt class="py-line">    <tt id="link-16" class="py-name"><a title="VisionEgg.qtlowlevel.QTNewMoviePropertyElement._fields_
+VisionEgg.qtlowlevel.Rect._fields_" class="py-name" href="#" onclick="return doclink('link-16', '_fields_', 'link-14');">_fields_</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">(</tt><tt class="py-string">"propClass"</tt><tt class="py-op">,</tt><tt id="link-17" class="py-name"><a title="VisionEgg.qtlowlevel.QTPropertyClass" class="py-name" href="#" onclick="return doclink('link-17', 'QTPropertyClass', 'link-7');">QTPropertyClass</a></tt><tt class="py-op">)</t [...]
+<a name="L48"></a><tt class="py-lineno"> 48</tt>  <tt class="py-line">                <tt class="py-op">(</tt><tt class="py-string">"propID"</tt><tt class="py-op">,</tt><tt id="link-18" class="py-name"><a title="VisionEgg.qtlowlevel.QTPropertyID" class="py-name" href="#" onclick="return doclink('link-18', 'QTPropertyID', 'link-9');">QTPropertyID</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L49"></a><tt class="py-lineno"> 49</tt>  <tt class="py-line">                <tt class="py-op">(</tt><tt class="py-string">"propValueSize"</tt><tt class="py-op">,</tt><tt id="link-19" class="py-name"><a title="VisionEgg.qtlowlevel.ByteCount" class="py-name" href="#" onclick="return doclink('link-19', 'ByteCount', 'link-11');">ByteCount</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L50"></a><tt class="py-lineno"> 50</tt>  <tt class="py-line">                <tt class="py-op">(</tt><tt class="py-string">"propValueAddress"</tt><tt class="py-op">,</tt><tt id="link-20" class="py-name"><a title="VisionEgg.qtlowlevel.QTPropertyValuePtr" class="py-name" href="#" onclick="return doclink('link-20', 'QTPropertyValuePtr', 'link-12');">QTPropertyValuePtr</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L51"></a><tt class="py-lineno"> 51</tt>  <tt class="py-line">                <tt class="py-op">(</tt><tt class="py-string">"propStatus"</tt><tt class="py-op">,</tt><tt id="link-21" class="py-name"><a title="VisionEgg.qtlowlevel.OSStatus" class="py-name" href="#" onclick="return doclink('link-21', 'OSStatus', 'link-2');">OSStatus</a></tt><tt class="py-op">)</tt><tt class="py-op">]</tt> </tt>
+</div><a name="L52"></a><tt class="py-lineno"> 52</tt>  <tt class="py-line"> </tt>
+<a name="FOUR_CHAR_CODE"></a><div id="FOUR_CHAR_CODE-def"><a name="L53"></a><tt class="py-lineno"> 53</tt> <a class="py-toggle" href="#" id="FOUR_CHAR_CODE-toggle" onclick="return toggle('FOUR_CHAR_CODE');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.qtlowlevel-module.html#FOUR_CHAR_CODE">FOUR_CHAR_CODE</a><tt class="py-op">(</tt><tt class="py-param">code</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="FOUR_CHAR_CODE-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="FOUR_CHAR_CODE-expanded"><a name="L54"></a><tt class="py-lineno"> 54</tt>  <tt class="py-line">    <tt class="py-keyword">assert</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">code</tt><tt class="py-op">,</tt><tt class="py-name">str</tt><tt class="py-op">)</tt> </tt>
+<a name="L55"></a><tt class="py-lineno"> 55</tt>  <tt class="py-line">    <tt class="py-keyword">assert</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">code</tt><tt class="py-op">)</tt><tt class="py-op">==</tt><tt class="py-number">4</tt> </tt>
+<a name="L56"></a><tt class="py-lineno"> 56</tt>  <tt class="py-line">    <tt class="py-name">val</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L57"></a><tt class="py-lineno"> 57</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">i</tt> <tt class="py-keyword">in</tt> <tt class="py-name">range</tt><tt class="py-op">(</tt><tt class="py-number">4</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L58"></a><tt class="py-lineno"> 58</tt>  <tt class="py-line">        <tt class="py-name">c</tt> <tt class="py-op">=</tt> <tt class="py-name">code</tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">]</tt> </tt>
+<a name="L59"></a><tt class="py-lineno"> 59</tt>  <tt class="py-line">        <tt class="py-name">ordc</tt> <tt class="py-op">=</tt> <tt class="py-name">ord</tt><tt class="py-op">(</tt><tt class="py-name">c</tt><tt class="py-op">)</tt> </tt>
+<a name="L60"></a><tt class="py-lineno"> 60</tt>  <tt class="py-line">        <tt class="py-name">addval</tt> <tt class="py-op">=</tt> <tt class="py-name">ordc</tt> <tt class="py-op"><<</tt> <tt class="py-op">(</tt><tt class="py-number">3</tt><tt class="py-op">-</tt><tt class="py-name">i</tt><tt class="py-op">)</tt><tt class="py-op">*</tt><tt class="py-number">8</tt> </tt>
+<a name="L61"></a><tt class="py-lineno"> 61</tt>  <tt class="py-line">        <tt class="py-comment">#print '%d: %s %x %x'%(i,c,ordc,addval)</tt> </tt>
+<a name="L62"></a><tt class="py-lineno"> 62</tt>  <tt class="py-line"><tt class="py-comment"></tt>        <tt class="py-name">val</tt> <tt class="py-op">+=</tt> <tt class="py-name">addval</tt> </tt>
+<a name="L63"></a><tt class="py-lineno"> 63</tt>  <tt class="py-line">    <tt class="py-comment">#print '%x\n'%val</tt> </tt>
+<a name="L64"></a><tt class="py-lineno"> 64</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt class="py-keyword">return</tt> <tt class="py-name">val</tt> </tt>
+</div><a name="L65"></a><tt class="py-lineno"> 65</tt>  <tt class="py-line"> </tt>
+<a name="L66"></a><tt class="py-lineno"> 66</tt>  <tt class="py-line"><tt class="py-keyword">if</tt> <tt class="py-number">1</tt><tt class="py-op">:</tt> </tt>
+<a name="L67"></a><tt class="py-lineno"> 67</tt>  <tt class="py-line">    <tt id="link-22" class="py-name" targets="Variable VisionEgg.qtlowlevel.kQTPropertyClass_DataLocation=VisionEgg.qtlowlevel-module.html#kQTPropertyClass_DataLocation"><a title="VisionEgg.qtlowlevel.kQTPropertyClass_DataLocation" class="py-name" href="#" onclick="return doclink('link-22', 'kQTPropertyClass_DataLocation', 'link-22');">kQTPropertyClass_DataLocation</a></tt> <tt class="py-op">=</tt> <tt id="link-23" cla [...]
+<a name="L68"></a><tt class="py-lineno"> 68</tt>  <tt class="py-line">    <tt id="link-24" class="py-name" targets="Variable VisionEgg.qtlowlevel.kQTDataLocationPropertyID_DataReference=VisionEgg.qtlowlevel-module.html#kQTDataLocationPropertyID_DataReference"><a title="VisionEgg.qtlowlevel.kQTDataLocationPropertyID_DataReference" class="py-name" href="#" onclick="return doclink('link-24', 'kQTDataLocationPropertyID_DataReference', 'link-24');">kQTDataLocationPropertyID_DataReference</a>< [...]
+<a name="L69"></a><tt class="py-lineno"> 69</tt>  <tt class="py-line">    <tt id="link-26" class="py-name" targets="Variable VisionEgg.qtlowlevel.kQTDataLocationPropertyID_CFStringNativePath=VisionEgg.qtlowlevel-module.html#kQTDataLocationPropertyID_CFStringNativePath"><a title="VisionEgg.qtlowlevel.kQTDataLocationPropertyID_CFStringNativePath" class="py-name" href="#" onclick="return doclink('link-26', 'kQTDataLocationPropertyID_CFStringNativePath', 'link-26');">kQTDataLocationPropertyI [...]
+<a name="L70"></a><tt class="py-lineno"> 70</tt>  <tt class="py-line">    <tt id="link-28" class="py-name" targets="Variable VisionEgg.qtlowlevel.kQTDataLocationPropertyID_CFStringPosixPath=VisionEgg.qtlowlevel-module.html#kQTDataLocationPropertyID_CFStringPosixPath"><a title="VisionEgg.qtlowlevel.kQTDataLocationPropertyID_CFStringPosixPath" class="py-name" href="#" onclick="return doclink('link-28', 'kQTDataLocationPropertyID_CFStringPosixPath', 'link-28');">kQTDataLocationPropertyID_CF [...]
+<a name="L71"></a><tt class="py-lineno"> 71</tt>  <tt class="py-line">    <tt id="link-30" class="py-name" targets="Variable VisionEgg.qtlowlevel.kQTDataLocationPropertyID_CFStringHFSPath=VisionEgg.qtlowlevel-module.html#kQTDataLocationPropertyID_CFStringHFSPath"><a title="VisionEgg.qtlowlevel.kQTDataLocationPropertyID_CFStringHFSPath" class="py-name" href="#" onclick="return doclink('link-30', 'kQTDataLocationPropertyID_CFStringHFSPath', 'link-30');">kQTDataLocationPropertyID_CFStringHF [...]
+<a name="L72"></a><tt class="py-lineno"> 72</tt>  <tt class="py-line">    <tt id="link-32" class="py-name" targets="Variable VisionEgg.qtlowlevel.kQTDataLocationPropertyID_CFStringWindowsPath=VisionEgg.qtlowlevel-module.html#kQTDataLocationPropertyID_CFStringWindowsPath"><a title="VisionEgg.qtlowlevel.kQTDataLocationPropertyID_CFStringWindowsPath" class="py-name" href="#" onclick="return doclink('link-32', 'kQTDataLocationPropertyID_CFStringWindowsPath', 'link-32');">kQTDataLocationPrope [...]
+<a name="L73"></a><tt class="py-lineno"> 73</tt>  <tt class="py-line">    <tt id="link-34" class="py-name" targets="Variable VisionEgg.qtlowlevel.kQTDataLocationPropertyID_CFURL=VisionEgg.qtlowlevel-module.html#kQTDataLocationPropertyID_CFURL"><a title="VisionEgg.qtlowlevel.kQTDataLocationPropertyID_CFURL" class="py-name" href="#" onclick="return doclink('link-34', 'kQTDataLocationPropertyID_CFURL', 'link-34');">kQTDataLocationPropertyID_CFURL</a></tt> <tt class="py-op">=</tt> <tt id="li [...]
+<a name="L74"></a><tt class="py-lineno"> 74</tt>  <tt class="py-line">    <tt id="link-36" class="py-name" targets="Variable VisionEgg.qtlowlevel.kQTDataLocationPropertyID_QTDataHandler=VisionEgg.qtlowlevel-module.html#kQTDataLocationPropertyID_QTDataHandler"><a title="VisionEgg.qtlowlevel.kQTDataLocationPropertyID_QTDataHandler" class="py-name" href="#" onclick="return doclink('link-36', 'kQTDataLocationPropertyID_QTDataHandler', 'link-36');">kQTDataLocationPropertyID_QTDataHandler</a>< [...]
+<a name="L75"></a><tt class="py-lineno"> 75</tt>  <tt class="py-line">    <tt id="link-38" class="py-name" targets="Variable VisionEgg.qtlowlevel.kQTDataLocationPropertyID_Scrap=VisionEgg.qtlowlevel-module.html#kQTDataLocationPropertyID_Scrap"><a title="VisionEgg.qtlowlevel.kQTDataLocationPropertyID_Scrap" class="py-name" href="#" onclick="return doclink('link-38', 'kQTDataLocationPropertyID_Scrap', 'link-38');">kQTDataLocationPropertyID_Scrap</a></tt> <tt class="py-op">=</tt> <tt id="li [...]
+<a name="L76"></a><tt class="py-lineno"> 76</tt>  <tt class="py-line">    <tt id="link-40" class="py-name" targets="Variable VisionEgg.qtlowlevel.kQTDataLocationPropertyID_LegacyMovieResourceHandle=VisionEgg.qtlowlevel-module.html#kQTDataLocationPropertyID_LegacyMovieResourceHandle"><a title="VisionEgg.qtlowlevel.kQTDataLocationPropertyID_LegacyMovieResourceHandle" class="py-name" href="#" onclick="return doclink('link-40', 'kQTDataLocationPropertyID_LegacyMovieResourceHandle', 'link-40' [...]
+<a name="L77"></a><tt class="py-lineno"> 77</tt>  <tt class="py-line">    <tt id="link-42" class="py-name" targets="Variable VisionEgg.qtlowlevel.kQTDataLocationPropertyID_MovieUserProc=VisionEgg.qtlowlevel-module.html#kQTDataLocationPropertyID_MovieUserProc"><a title="VisionEgg.qtlowlevel.kQTDataLocationPropertyID_MovieUserProc" class="py-name" href="#" onclick="return doclink('link-42', 'kQTDataLocationPropertyID_MovieUserProc', 'link-42');">kQTDataLocationPropertyID_MovieUserProc</a>< [...]
+<a name="L78"></a><tt class="py-lineno"> 78</tt>  <tt class="py-line">    <tt id="link-44" class="py-name" targets="Variable VisionEgg.qtlowlevel.kQTDataLocationPropertyID_ResourceFork=VisionEgg.qtlowlevel-module.html#kQTDataLocationPropertyID_ResourceFork"><a title="VisionEgg.qtlowlevel.kQTDataLocationPropertyID_ResourceFork" class="py-name" href="#" onclick="return doclink('link-44', 'kQTDataLocationPropertyID_ResourceFork', 'link-44');">kQTDataLocationPropertyID_ResourceFork</a></tt>  [...]
+<a name="L79"></a><tt class="py-lineno"> 79</tt>  <tt class="py-line">    <tt id="link-46" class="py-name" targets="Variable VisionEgg.qtlowlevel.kQTDataLocationPropertyID_DataFork=VisionEgg.qtlowlevel-module.html#kQTDataLocationPropertyID_DataFork"><a title="VisionEgg.qtlowlevel.kQTDataLocationPropertyID_DataFork" class="py-name" href="#" onclick="return doclink('link-46', 'kQTDataLocationPropertyID_DataFork', 'link-46');">kQTDataLocationPropertyID_DataFork</a></tt> <tt class="py-op">=< [...]
+<a name="L80"></a><tt class="py-lineno"> 80</tt>  <tt class="py-line">    <tt id="link-48" class="py-name" targets="Variable VisionEgg.qtlowlevel.kQTPropertyClass_Context=VisionEgg.qtlowlevel-module.html#kQTPropertyClass_Context"><a title="VisionEgg.qtlowlevel.kQTPropertyClass_Context" class="py-name" href="#" onclick="return doclink('link-48', 'kQTPropertyClass_Context', 'link-48');">kQTPropertyClass_Context</a></tt>      <tt class="py-op">=</tt> <tt id="link-49" class="py-name"><a titl [...]
+<a name="L81"></a><tt class="py-lineno"> 81</tt>  <tt class="py-line">    <tt id="link-50" class="py-name" targets="Variable VisionEgg.qtlowlevel.kQTContextPropertyID_AudioContext=VisionEgg.qtlowlevel-module.html#kQTContextPropertyID_AudioContext"><a title="VisionEgg.qtlowlevel.kQTContextPropertyID_AudioContext" class="py-name" href="#" onclick="return doclink('link-50', 'kQTContextPropertyID_AudioContext', 'link-50');">kQTContextPropertyID_AudioContext</a></tt> <tt class="py-op">=</tt>  [...]
+<a name="L82"></a><tt class="py-lineno"> 82</tt>  <tt class="py-line">    <tt id="link-52" class="py-name" targets="Variable VisionEgg.qtlowlevel.kQTContextPropertyID_VisualContext=VisionEgg.qtlowlevel-module.html#kQTContextPropertyID_VisualContext"><a title="VisionEgg.qtlowlevel.kQTContextPropertyID_VisualContext" class="py-name" href="#" onclick="return doclink('link-52', 'kQTContextPropertyID_VisualContext', 'link-52');">kQTContextPropertyID_VisualContext</a></tt> <tt class="py-op">=< [...]
+<a name="L83"></a><tt class="py-lineno"> 83</tt>  <tt class="py-line">    <tt id="link-54" class="py-name" targets="Variable VisionEgg.qtlowlevel.kQTPropertyClass_MovieResourceLocator=VisionEgg.qtlowlevel-module.html#kQTPropertyClass_MovieResourceLocator"><a title="VisionEgg.qtlowlevel.kQTPropertyClass_MovieResourceLocator" class="py-name" href="#" onclick="return doclink('link-54', 'kQTPropertyClass_MovieResourceLocator', 'link-54');">kQTPropertyClass_MovieResourceLocator</a></tt> <tt c [...]
+<a name="L84"></a><tt class="py-lineno"> 84</tt>  <tt class="py-line">    <tt id="link-56" class="py-name" targets="Variable VisionEgg.qtlowlevel.kQTMovieResourceLocatorPropertyID_LegacyResID=VisionEgg.qtlowlevel-module.html#kQTMovieResourceLocatorPropertyID_LegacyResID"><a title="VisionEgg.qtlowlevel.kQTMovieResourceLocatorPropertyID_LegacyResID" class="py-name" href="#" onclick="return doclink('link-56', 'kQTMovieResourceLocatorPropertyID_LegacyResID', 'link-56');">kQTMovieResourceLoca [...]
+<a name="L85"></a><tt class="py-lineno"> 85</tt>  <tt class="py-line">    <tt id="link-58" class="py-name" targets="Variable VisionEgg.qtlowlevel.kQTMovieResourceLocatorPropertyID_LegacyResName=VisionEgg.qtlowlevel-module.html#kQTMovieResourceLocatorPropertyID_LegacyResName"><a title="VisionEgg.qtlowlevel.kQTMovieResourceLocatorPropertyID_LegacyResName" class="py-name" href="#" onclick="return doclink('link-58', 'kQTMovieResourceLocatorPropertyID_LegacyResName', 'link-58');">kQTMovieReso [...]
+<a name="L86"></a><tt class="py-lineno"> 86</tt>  <tt class="py-line">    <tt id="link-60" class="py-name" targets="Variable VisionEgg.qtlowlevel.kQTMovieResourceLocatorPropertyID_FileOffset=VisionEgg.qtlowlevel-module.html#kQTMovieResourceLocatorPropertyID_FileOffset"><a title="VisionEgg.qtlowlevel.kQTMovieResourceLocatorPropertyID_FileOffset" class="py-name" href="#" onclick="return doclink('link-60', 'kQTMovieResourceLocatorPropertyID_FileOffset', 'link-60');">kQTMovieResourceLocatorP [...]
+<a name="L87"></a><tt class="py-lineno"> 87</tt>  <tt class="py-line">    <tt id="link-62" class="py-name" targets="Variable VisionEgg.qtlowlevel.kQTMovieResourceLocatorPropertyID_Callback=VisionEgg.qtlowlevel-module.html#kQTMovieResourceLocatorPropertyID_Callback"><a title="VisionEgg.qtlowlevel.kQTMovieResourceLocatorPropertyID_Callback" class="py-name" href="#" onclick="return doclink('link-62', 'kQTMovieResourceLocatorPropertyID_Callback', 'link-62');">kQTMovieResourceLocatorPropertyI [...]
+<a name="L88"></a><tt class="py-lineno"> 88</tt>  <tt class="py-line">                                        <tt class="py-comment"># Uses kQTMovieDefaultDataRefPropertyID for default dataref</tt> </tt>
+<a name="L89"></a><tt class="py-lineno"> 89</tt>  <tt class="py-line"><tt class="py-comment"></tt>    <tt id="link-64" class="py-name" targets="Variable VisionEgg.qtlowlevel.kQTPropertyClass_MovieInstantiation=VisionEgg.qtlowlevel-module.html#kQTPropertyClass_MovieInstantiation"><a title="VisionEgg.qtlowlevel.kQTPropertyClass_MovieInstantiation" class="py-name" href="#" onclick="return doclink('link-64', 'kQTPropertyClass_MovieInstantiation', 'link-64');">kQTPropertyClass_MovieInstantiat [...]
+<a name="L90"></a><tt class="py-lineno"> 90</tt>  <tt class="py-line">    <tt id="link-66" class="py-name" targets="Variable VisionEgg.qtlowlevel.kQTMovieInstantiationPropertyID_DontResolveDataRefs=VisionEgg.qtlowlevel-module.html#kQTMovieInstantiationPropertyID_DontResolveDataRefs"><a title="VisionEgg.qtlowlevel.kQTMovieInstantiationPropertyID_DontResolveDataRefs" class="py-name" href="#" onclick="return doclink('link-66', 'kQTMovieInstantiationPropertyID_DontResolveDataRefs', 'link-66' [...]
+<a name="L91"></a><tt class="py-lineno"> 91</tt>  <tt class="py-line">    <tt id="link-68" class="py-name" targets="Variable VisionEgg.qtlowlevel.kQTMovieInstantiationPropertyID_DontAskUnresolvedDataRefs=VisionEgg.qtlowlevel-module.html#kQTMovieInstantiationPropertyID_DontAskUnresolvedDataRefs"><a title="VisionEgg.qtlowlevel.kQTMovieInstantiationPropertyID_DontAskUnresolvedDataRefs" class="py-name" href="#" onclick="return doclink('link-68', 'kQTMovieInstantiationPropertyID_DontAskUnreso [...]
+<a name="L92"></a><tt class="py-lineno"> 92</tt>  <tt class="py-line">    <tt id="link-70" class="py-name" targets="Variable VisionEgg.qtlowlevel.kQTMovieInstantiationPropertyID_DontAutoAlternates=VisionEgg.qtlowlevel-module.html#kQTMovieInstantiationPropertyID_DontAutoAlternates"><a title="VisionEgg.qtlowlevel.kQTMovieInstantiationPropertyID_DontAutoAlternates" class="py-name" href="#" onclick="return doclink('link-70', 'kQTMovieInstantiationPropertyID_DontAutoAlternates', 'link-70');"> [...]
+<a name="L93"></a><tt class="py-lineno"> 93</tt>  <tt class="py-line">    <tt id="link-72" class="py-name" targets="Variable VisionEgg.qtlowlevel.kQTMovieInstantiationPropertyID_DontUpdateForeBackPointers=VisionEgg.qtlowlevel-module.html#kQTMovieInstantiationPropertyID_DontUpdateForeBackPointers"><a title="VisionEgg.qtlowlevel.kQTMovieInstantiationPropertyID_DontUpdateForeBackPointers" class="py-name" href="#" onclick="return doclink('link-72', 'kQTMovieInstantiationPropertyID_DontUpdate [...]
+<a name="L94"></a><tt class="py-lineno"> 94</tt>  <tt class="py-line">    <tt id="link-74" class="py-name" targets="Variable VisionEgg.qtlowlevel.kQTMovieInstantiationPropertyID_AsyncOK=VisionEgg.qtlowlevel-module.html#kQTMovieInstantiationPropertyID_AsyncOK"><a title="VisionEgg.qtlowlevel.kQTMovieInstantiationPropertyID_AsyncOK" class="py-name" href="#" onclick="return doclink('link-74', 'kQTMovieInstantiationPropertyID_AsyncOK', 'link-74');">kQTMovieInstantiationPropertyID_AsyncOK</a>< [...]
+<a name="L95"></a><tt class="py-lineno"> 95</tt>  <tt class="py-line">    <tt id="link-76" class="py-name" targets="Variable VisionEgg.qtlowlevel.kQTMovieInstantiationPropertyID_IdleImportOK=VisionEgg.qtlowlevel-module.html#kQTMovieInstantiationPropertyID_IdleImportOK"><a title="VisionEgg.qtlowlevel.kQTMovieInstantiationPropertyID_IdleImportOK" class="py-name" href="#" onclick="return doclink('link-76', 'kQTMovieInstantiationPropertyID_IdleImportOK', 'link-76');">kQTMovieInstantiationPro [...]
+<a name="L96"></a><tt class="py-lineno"> 96</tt>  <tt class="py-line">    <tt id="link-78" class="py-name" targets="Variable VisionEgg.qtlowlevel.kQTMovieInstantiationPropertyID_DontAutoUpdateClock=VisionEgg.qtlowlevel-module.html#kQTMovieInstantiationPropertyID_DontAutoUpdateClock"><a title="VisionEgg.qtlowlevel.kQTMovieInstantiationPropertyID_DontAutoUpdateClock" class="py-name" href="#" onclick="return doclink('link-78', 'kQTMovieInstantiationPropertyID_DontAutoUpdateClock', 'link-78' [...]
+<a name="L97"></a><tt class="py-lineno"> 97</tt>  <tt class="py-line">    <tt id="link-80" class="py-name" targets="Variable VisionEgg.qtlowlevel.kQTMovieInstantiationPropertyID_ResultDataLocationChanged=VisionEgg.qtlowlevel-module.html#kQTMovieInstantiationPropertyID_ResultDataLocationChanged"><a title="VisionEgg.qtlowlevel.kQTMovieInstantiationPropertyID_ResultDataLocationChanged" class="py-name" href="#" onclick="return doclink('link-80', 'kQTMovieInstantiationPropertyID_ResultDataLoc [...]
+<a name="L98"></a><tt class="py-lineno"> 98</tt>  <tt class="py-line">    <tt id="link-82" class="py-name" targets="Variable VisionEgg.qtlowlevel.kQTPropertyClass_NewMovieProperty=VisionEgg.qtlowlevel-module.html#kQTPropertyClass_NewMovieProperty"><a title="VisionEgg.qtlowlevel.kQTPropertyClass_NewMovieProperty" class="py-name" href="#" onclick="return doclink('link-82', 'kQTPropertyClass_NewMovieProperty', 'link-82');">kQTPropertyClass_NewMovieProperty</a></tt> <tt class="py-op">=</tt>  [...]
+<a name="L99"></a><tt class="py-lineno"> 99</tt>  <tt class="py-line">    <tt id="link-84" class="py-name" targets="Variable VisionEgg.qtlowlevel.kQTNewMoviePropertyID_DefaultDataRef=VisionEgg.qtlowlevel-module.html#kQTNewMoviePropertyID_DefaultDataRef"><a title="VisionEgg.qtlowlevel.kQTNewMoviePropertyID_DefaultDataRef" class="py-name" href="#" onclick="return doclink('link-84', 'kQTNewMoviePropertyID_DefaultDataRef', 'link-84');">kQTNewMoviePropertyID_DefaultDataRef</a></tt> <tt class= [...]
+<a name="L100"></a><tt class="py-lineno">100</tt>  <tt class="py-line">    <tt id="link-86" class="py-name" targets="Variable VisionEgg.qtlowlevel.kQTNewMoviePropertyID_Active=VisionEgg.qtlowlevel-module.html#kQTNewMoviePropertyID_Active"><a title="VisionEgg.qtlowlevel.kQTNewMoviePropertyID_Active" class="py-name" href="#" onclick="return doclink('link-86', 'kQTNewMoviePropertyID_Active', 'link-86');">kQTNewMoviePropertyID_Active</a></tt>  <tt class="py-op">=</tt> <tt id="link-87" class= [...]
+<a name="L101"></a><tt class="py-lineno">101</tt>  <tt class="py-line">    <tt id="link-88" class="py-name" targets="Variable VisionEgg.qtlowlevel.kQTNewMoviePropertyID_DontInteractWithUser=VisionEgg.qtlowlevel-module.html#kQTNewMoviePropertyID_DontInteractWithUser"><a title="VisionEgg.qtlowlevel.kQTNewMoviePropertyID_DontInteractWithUser" class="py-name" href="#" onclick="return doclink('link-88', 'kQTNewMoviePropertyID_DontInteractWithUser', 'link-88');">kQTNewMoviePropertyID_DontInter [...]
+<a name="L102"></a><tt class="py-lineno">102</tt>  <tt class="py-line">     </tt>
+<a name="qtlowlevelError"></a><div id="qtlowlevelError-def"><a name="L103"></a><tt class="py-lineno">103</tt> <a class="py-toggle" href="#" id="qtlowlevelError-toggle" onclick="return toggle('qtlowlevelError');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.qtlowlevel.qtlowlevelError-class.html">qtlowlevelError</a><tt class="py-op">(</tt><tt class="py-base-class">RuntimeError</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="qtlowlevelError-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="qtlowlevelError-expanded"><a name="L104"></a><tt class="py-lineno">104</tt>  <tt class="py-line">    <tt class="py-keyword">pass</tt> </tt>
+</div><a name="L105"></a><tt class="py-lineno">105</tt>  <tt class="py-line"> </tt>
+<a name="L106"></a><tt class="py-lineno">106</tt>  <tt class="py-line"><tt id="link-90" class="py-name" targets="Variable VisionEgg.qtlowlevel.noErr=VisionEgg.qtlowlevel-module.html#noErr"><a title="VisionEgg.qtlowlevel.noErr" class="py-name" href="#" onclick="return doclink('link-90', 'noErr', 'link-90');">noErr</a></tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L107"></a><tt class="py-lineno">107</tt>  <tt class="py-line"><tt id="link-91" class="py-name" targets="Variable VisionEgg.qtlowlevel.paramErr=VisionEgg.qtlowlevel-module.html#paramErr"><a title="VisionEgg.qtlowlevel.paramErr" class="py-name" href="#" onclick="return doclink('link-91', 'paramErr', 'link-91');">paramErr</a></tt> <tt class="py-op">=</tt> <tt class="py-op">-</tt><tt class="py-number">50</tt> </tt>
+<a name="L108"></a><tt class="py-lineno">108</tt>  <tt class="py-line"><tt id="link-92" class="py-name" targets="Variable VisionEgg.qtlowlevel.movieToolboxUninitialized=VisionEgg.qtlowlevel-module.html#movieToolboxUninitialized"><a title="VisionEgg.qtlowlevel.movieToolboxUninitialized" class="py-name" href="#" onclick="return doclink('link-92', 'movieToolboxUninitialized', 'link-92');">movieToolboxUninitialized</a></tt> <tt class="py-op">=</tt> <tt class="py-op">-</tt><tt class="py-numbe [...]
+<a name="GetErrorString"></a><div id="GetErrorString-def"><a name="L109"></a><tt class="py-lineno">109</tt> <a class="py-toggle" href="#" id="GetErrorString-toggle" onclick="return toggle('GetErrorString');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.qtlowlevel-module.html#GetErrorString">GetErrorString</a><tt class="py-op">(</tt><tt class="py-param">value</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="GetErrorString-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="GetErrorString-expanded"><a name="L110"></a><tt class="py-lineno">110</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">value</tt> <tt class="py-op">==</tt> <tt id="link-93" class="py-name"><a title="VisionEgg.qtlowlevel.paramErr" class="py-name" href="#" onclick="return doclink('link-93', 'paramErr', 'link-91');">paramErr</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L111"></a><tt class="py-lineno">111</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-string">'paramErr'</tt> </tt>
+<a name="L112"></a><tt class="py-lineno">112</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt class="py-name">value</tt> <tt class="py-op">==</tt> <tt id="link-94" class="py-name"><a title="VisionEgg.qtlowlevel.movieToolboxUninitialized" class="py-name" href="#" onclick="return doclink('link-94', 'movieToolboxUninitialized', 'link-92');">movieToolboxUninitialized</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L113"></a><tt class="py-lineno">113</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-string">'movieToolboxUninitialized'</tt> </tt>
+<a name="L114"></a><tt class="py-lineno">114</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt class="py-name">value</tt> <tt class="py-op">!=</tt> <tt id="link-95" class="py-name"><a title="VisionEgg.qtlowlevel.noErr" class="py-name" href="#" onclick="return doclink('link-95', 'noErr', 'link-90');">noErr</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L115"></a><tt class="py-lineno">115</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-string">'error value: %d'</tt><tt class="py-op">%</tt><tt class="py-name">value</tt> </tt>
+<a name="L116"></a><tt class="py-lineno">116</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L117"></a><tt class="py-lineno">117</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-string">'noErr'</tt> </tt>
+</div><a name="L118"></a><tt class="py-lineno">118</tt>  <tt class="py-line">     </tt>
+<a name="CheckOSStatus"></a><div id="CheckOSStatus-def"><a name="L119"></a><tt class="py-lineno">119</tt> <a class="py-toggle" href="#" id="CheckOSStatus-toggle" onclick="return toggle('CheckOSStatus');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.qtlowlevel-module.html#CheckOSStatus">CheckOSStatus</a><tt class="py-op">(</tt><tt class="py-param">value</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="CheckOSStatus-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="CheckOSStatus-expanded"><a name="L120"></a><tt class="py-lineno">120</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">value</tt> <tt class="py-op">!=</tt> <tt id="link-96" class="py-name"><a title="VisionEgg.qtlowlevel.noErr" class="py-name" href="#" onclick="return doclink('link-96', 'noErr', 'link-90');">noErr</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L121"></a><tt class="py-lineno">121</tt>  <tt class="py-line">        <tt class="py-keyword">raise</tt> <tt id="link-97" class="py-name" targets="Class VisionEgg.qtlowlevel.qtlowlevelError=VisionEgg.qtlowlevel.qtlowlevelError-class.html"><a title="VisionEgg.qtlowlevel.qtlowlevelError" class="py-name" href="#" onclick="return doclink('link-97', 'qtlowlevelError', 'link-97');">qtlowlevelError</a></tt><tt class="py-op">(</tt><tt id="link-98" class="py-name" targets="Function Vision [...]
+<a name="L122"></a><tt class="py-lineno">122</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">value</tt> </tt>
+</div><a name="L123"></a><tt class="py-lineno">123</tt>  <tt class="py-line"> </tt>
+<a name="L124"></a><tt class="py-lineno">124</tt>  <tt class="py-line"><tt id="link-99" class="py-name" targets="Variable VisionEgg.qtlowlevel.NewMovieFromFile=VisionEgg.qtlowlevel-module.html#NewMovieFromFile"><a title="VisionEgg.qtlowlevel.NewMovieFromFile" class="py-name" href="#" onclick="return doclink('link-99', 'NewMovieFromFile', 'link-99');">NewMovieFromFile</a></tt> <tt class="py-op">=</tt> <tt id="link-100" class="py-name"><a title="VisionEgg.qtlowlevel.QTMLClient" class="py-n [...]
+<a name="L125"></a><tt class="py-lineno">125</tt>  <tt class="py-line"> </tt>
+<a name="L126"></a><tt class="py-lineno">126</tt>  <tt class="py-line"><tt id="link-102" class="py-name" targets="Variable VisionEgg.qtlowlevel.NewMovieFromProperties=VisionEgg.qtlowlevel-module.html#NewMovieFromProperties"><a title="VisionEgg.qtlowlevel.NewMovieFromProperties" class="py-name" href="#" onclick="return doclink('link-102', 'NewMovieFromProperties', 'link-102');">NewMovieFromProperties</a></tt> <tt class="py-op">=</tt> <tt id="link-103" class="py-name"><a title="VisionEgg.q [...]
+<a name="L127"></a><tt class="py-lineno">127</tt>  <tt class="py-line"><tt class="py-comment">#NewMovieFromProperties.restype = OSStatus</tt> </tt>
+<a name="L128"></a><tt class="py-lineno">128</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt id="link-105" class="py-name"><a title="VisionEgg.qtlowlevel.NewMovieFromProperties" class="py-name" href="#" onclick="return doclink('link-105', 'NewMovieFromProperties', 'link-102');">NewMovieFromProperties</a></tt><tt class="py-op">.</tt><tt class="py-name">restype</tt> <tt class="py-op">=</tt> <tt id="link-106" class="py-name" targets="Function VisionEgg.qtlowlevel.CheckOSStatus()=V [...]
+<a name="L129"></a><tt class="py-lineno">129</tt>  <tt class="py-line"><tt id="link-107" class="py-name"><a title="VisionEgg.qtlowlevel.NewMovieFromProperties" class="py-name" href="#" onclick="return doclink('link-107', 'NewMovieFromProperties', 'link-102');">NewMovieFromProperties</a></tt><tt class="py-op">.</tt><tt class="py-name">argtypes</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt id="link-108" class="py-name"><a title="VisionEgg.qtlowlevel.ItemCount" class="py-name" h [...]
+<a name="L130"></a><tt class="py-lineno">130</tt>  <tt class="py-line">                                   <tt class="py-name">ctypes</tt><tt class="py-op">.</tt><tt class="py-name">POINTER</tt><tt class="py-op">(</tt><tt id="link-109" class="py-name" targets="Class VisionEgg.qtlowlevel.QTNewMoviePropertyElement=VisionEgg.qtlowlevel.QTNewMoviePropertyElement-class.html"><a title="VisionEgg.qtlowlevel.QTNewMoviePropertyElement" class="py-name" href="#" onclick="return doclink('link-109', ' [...]
+<a name="L131"></a><tt class="py-lineno">131</tt>  <tt class="py-line">                                   <tt id="link-110" class="py-name"><a title="VisionEgg.qtlowlevel.ItemCount" class="py-name" href="#" onclick="return doclink('link-110', 'ItemCount', 'link-3');">ItemCount</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L132"></a><tt class="py-lineno">132</tt>  <tt class="py-line">                                   <tt class="py-name">ctypes</tt><tt class="py-op">.</tt><tt class="py-name">POINTER</tt><tt class="py-op">(</tt><tt id="link-111" class="py-name"><a title="VisionEgg.qtlowlevel.QTNewMoviePropertyElement" class="py-name" href="#" onclick="return doclink('link-111', 'QTNewMoviePropertyElement', 'link-109');">QTNewMoviePropertyElement</a></tt><tt class="py-op">)</tt><tt class="py-op">,</ [...]
+<a name="L133"></a><tt class="py-lineno">133</tt>  <tt class="py-line">                                   <tt class="py-name">ctypes</tt><tt class="py-op">.</tt><tt class="py-name">POINTER</tt><tt class="py-op">(</tt><tt id="link-112" class="py-name"><a title="VisionEgg.qtlowlevel.Movie
+VisionEgg.qtmovie.Movie" class="py-name" href="#" onclick="return doclink('link-112', 'Movie', 'link-15');">Movie</a></tt><tt class="py-op">)</tt><tt class="py-op">]</tt> </tt>
+<a name="L134"></a><tt class="py-lineno">134</tt>  <tt class="py-line"> </tt>
+<a name="L135"></a><tt class="py-lineno">135</tt>  <tt class="py-line"><tt id="link-113" class="py-name" targets="Variable VisionEgg.qtlowlevel.InitializeQTML=VisionEgg.qtlowlevel-module.html#InitializeQTML"><a title="VisionEgg.qtlowlevel.InitializeQTML" class="py-name" href="#" onclick="return doclink('link-113', 'InitializeQTML', 'link-113');">InitializeQTML</a></tt> <tt class="py-op">=</tt> <tt id="link-114" class="py-name"><a title="VisionEgg.qtlowlevel.QTMLClient" class="py-name" hr [...]
+<a name="L136"></a><tt class="py-lineno">136</tt>  <tt class="py-line"><tt id="link-116" class="py-name" targets="Variable VisionEgg.qtlowlevel.EnterMovies=VisionEgg.qtlowlevel-module.html#EnterMovies"><a title="VisionEgg.qtlowlevel.EnterMovies" class="py-name" href="#" onclick="return doclink('link-116', 'EnterMovies', 'link-116');">EnterMovies</a></tt> <tt class="py-op">=</tt> <tt id="link-117" class="py-name"><a title="VisionEgg.qtlowlevel.QTMLClient" class="py-name" href="#" onclick= [...]
+<a name="L137"></a><tt class="py-lineno">137</tt>  <tt class="py-line"> </tt>
+<a name="L138"></a><tt class="py-lineno">138</tt>  <tt class="py-line"><tt id="link-119" class="py-name" targets="Variable VisionEgg.qtlowlevel.QTGetCFConstant=VisionEgg.qtlowlevel-module.html#QTGetCFConstant"><a title="VisionEgg.qtlowlevel.QTGetCFConstant" class="py-name" href="#" onclick="return doclink('link-119', 'QTGetCFConstant', 'link-119');">QTGetCFConstant</a></tt> <tt class="py-op">=</tt> <tt id="link-120" class="py-name"><a title="VisionEgg.qtlowlevel.QTMLClient" class="py-nam [...]
+<a name="L139"></a><tt class="py-lineno">139</tt>  <tt class="py-line"> </tt>
+<a name="L140"></a><tt class="py-lineno">140</tt>  <tt class="py-line"><tt id="link-122" class="py-name" targets="Variable VisionEgg.qtlowlevel.GetMovieBox=VisionEgg.qtlowlevel-module.html#GetMovieBox,Method VisionEgg.qtmovie.Movie.GetMovieBox()=VisionEgg.qtmovie.Movie-class.html#GetMovieBox"><a title="VisionEgg.qtlowlevel.GetMovieBox
+VisionEgg.qtmovie.Movie.GetMovieBox" class="py-name" href="#" onclick="return doclink('link-122', 'GetMovieBox', 'link-122');">GetMovieBox</a></tt> <tt class="py-op">=</tt> <tt id="link-123" class="py-name"><a title="VisionEgg.qtlowlevel.QTMLClient" class="py-name" href="#" onclick="return doclink('link-123', 'QTMLClient', 'link-0');">QTMLClient</a></tt><tt class="py-op">.</tt><tt id="link-124" class="py-name"><a title="VisionEgg.qtlowlevel.GetMovieBox
+VisionEgg.qtmovie.Movie.GetMovieBox" class="py-name" href="#" onclick="return doclink('link-124', 'GetMovieBox', 'link-122');">GetMovieBox</a></tt> </tt>
+<a name="L141"></a><tt class="py-lineno">141</tt>  <tt class="py-line"><tt id="link-125" class="py-name"><a title="VisionEgg.qtlowlevel.GetMovieBox
+VisionEgg.qtmovie.Movie.GetMovieBox" class="py-name" href="#" onclick="return doclink('link-125', 'GetMovieBox', 'link-122');">GetMovieBox</a></tt><tt class="py-op">.</tt><tt class="py-name">argtypes</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt id="link-126" class="py-name"><a title="VisionEgg.qtlowlevel.Movie
+VisionEgg.qtmovie.Movie" class="py-name" href="#" onclick="return doclink('link-126', 'Movie', 'link-15');">Movie</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L142"></a><tt class="py-lineno">142</tt>  <tt class="py-line">                        <tt class="py-name">ctypes</tt><tt class="py-op">.</tt><tt class="py-name">POINTER</tt><tt class="py-op">(</tt><tt id="link-127" class="py-name" targets="Class VisionEgg.qtlowlevel.Rect=VisionEgg.qtlowlevel.Rect-class.html,Class VisionEgg.qtmovie.Rect=VisionEgg.qtmovie.Rect-class.html"><a title="VisionEgg.qtlowlevel.Rect
+VisionEgg.qtmovie.Rect" class="py-name" href="#" onclick="return doclink('link-127', 'Rect', 'link-127');">Rect</a></tt><tt class="py-op">)</tt><tt class="py-op">]</tt> </tt>
+<a name="L143"></a><tt class="py-lineno">143</tt>  <tt class="py-line"><tt id="link-128" class="py-name" targets="Variable VisionEgg.qtlowlevel.SetMovieBox=VisionEgg.qtlowlevel-module.html#SetMovieBox,Method VisionEgg.qtmovie.Movie.SetMovieBox()=VisionEgg.qtmovie.Movie-class.html#SetMovieBox"><a title="VisionEgg.qtlowlevel.SetMovieBox
+VisionEgg.qtmovie.Movie.SetMovieBox" class="py-name" href="#" onclick="return doclink('link-128', 'SetMovieBox', 'link-128');">SetMovieBox</a></tt> <tt class="py-op">=</tt> <tt id="link-129" class="py-name"><a title="VisionEgg.qtlowlevel.QTMLClient" class="py-name" href="#" onclick="return doclink('link-129', 'QTMLClient', 'link-0');">QTMLClient</a></tt><tt class="py-op">.</tt><tt id="link-130" class="py-name"><a title="VisionEgg.qtlowlevel.SetMovieBox
+VisionEgg.qtmovie.Movie.SetMovieBox" class="py-name" href="#" onclick="return doclink('link-130', 'SetMovieBox', 'link-128');">SetMovieBox</a></tt> </tt>
+<a name="L144"></a><tt class="py-lineno">144</tt>  <tt class="py-line"><tt id="link-131" class="py-name"><a title="VisionEgg.qtlowlevel.SetMovieBox
+VisionEgg.qtmovie.Movie.SetMovieBox" class="py-name" href="#" onclick="return doclink('link-131', 'SetMovieBox', 'link-128');">SetMovieBox</a></tt><tt class="py-op">.</tt><tt class="py-name">argtypes</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt id="link-132" class="py-name"><a title="VisionEgg.qtlowlevel.Movie
+VisionEgg.qtmovie.Movie" class="py-name" href="#" onclick="return doclink('link-132', 'Movie', 'link-15');">Movie</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L145"></a><tt class="py-lineno">145</tt>  <tt class="py-line">                        <tt class="py-name">ctypes</tt><tt class="py-op">.</tt><tt class="py-name">POINTER</tt><tt class="py-op">(</tt><tt id="link-133" class="py-name"><a title="VisionEgg.qtlowlevel.Rect
+VisionEgg.qtmovie.Rect" class="py-name" href="#" onclick="return doclink('link-133', 'Rect', 'link-127');">Rect</a></tt><tt class="py-op">)</tt><tt class="py-op">]</tt> </tt>
+<a name="L146"></a><tt class="py-lineno">146</tt>  <tt class="py-line"> </tt>
+<a name="L147"></a><tt class="py-lineno">147</tt>  <tt class="py-line"><tt id="link-134" class="py-name" targets="Variable VisionEgg.qtlowlevel.StartMovie=VisionEgg.qtlowlevel-module.html#StartMovie,Method VisionEgg.qtmovie.Movie.StartMovie()=VisionEgg.qtmovie.Movie-class.html#StartMovie"><a title="VisionEgg.qtlowlevel.StartMovie
+VisionEgg.qtmovie.Movie.StartMovie" class="py-name" href="#" onclick="return doclink('link-134', 'StartMovie', 'link-134');">StartMovie</a></tt> <tt class="py-op">=</tt> <tt id="link-135" class="py-name"><a title="VisionEgg.qtlowlevel.QTMLClient" class="py-name" href="#" onclick="return doclink('link-135', 'QTMLClient', 'link-0');">QTMLClient</a></tt><tt class="py-op">.</tt><tt id="link-136" class="py-name"><a title="VisionEgg.qtlowlevel.StartMovie
+VisionEgg.qtmovie.Movie.StartMovie" class="py-name" href="#" onclick="return doclink('link-136', 'StartMovie', 'link-134');">StartMovie</a></tt> </tt>
+<a name="L148"></a><tt class="py-lineno">148</tt>  <tt class="py-line"><tt id="link-137" class="py-name"><a title="VisionEgg.qtlowlevel.StartMovie
+VisionEgg.qtmovie.Movie.StartMovie" class="py-name" href="#" onclick="return doclink('link-137', 'StartMovie', 'link-134');">StartMovie</a></tt><tt class="py-op">.</tt><tt class="py-name">argtypes</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt id="link-138" class="py-name"><a title="VisionEgg.qtlowlevel.Movie
+VisionEgg.qtmovie.Movie" class="py-name" href="#" onclick="return doclink('link-138', 'Movie', 'link-15');">Movie</a></tt><tt class="py-op">]</tt> </tt>
+<a name="L149"></a><tt class="py-lineno">149</tt>  <tt class="py-line"> </tt>
+<a name="L150"></a><tt class="py-lineno">150</tt>  <tt class="py-line"><tt id="link-139" class="py-name" targets="Variable VisionEgg.qtlowlevel.MoviesTask=VisionEgg.qtlowlevel-module.html#MoviesTask,Method VisionEgg.qtmovie.Movie.MoviesTask()=VisionEgg.qtmovie.Movie-class.html#MoviesTask"><a title="VisionEgg.qtlowlevel.MoviesTask
+VisionEgg.qtmovie.Movie.MoviesTask" class="py-name" href="#" onclick="return doclink('link-139', 'MoviesTask', 'link-139');">MoviesTask</a></tt> <tt class="py-op">=</tt> <tt id="link-140" class="py-name"><a title="VisionEgg.qtlowlevel.QTMLClient" class="py-name" href="#" onclick="return doclink('link-140', 'QTMLClient', 'link-0');">QTMLClient</a></tt><tt class="py-op">.</tt><tt id="link-141" class="py-name"><a title="VisionEgg.qtlowlevel.MoviesTask
+VisionEgg.qtmovie.Movie.MoviesTask" class="py-name" href="#" onclick="return doclink('link-141', 'MoviesTask', 'link-139');">MoviesTask</a></tt> </tt>
+<a name="L151"></a><tt class="py-lineno">151</tt>  <tt class="py-line"><tt id="link-142" class="py-name"><a title="VisionEgg.qtlowlevel.MoviesTask
+VisionEgg.qtmovie.Movie.MoviesTask" class="py-name" href="#" onclick="return doclink('link-142', 'MoviesTask', 'link-139');">MoviesTask</a></tt><tt class="py-op">.</tt><tt class="py-name">argtypes</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt id="link-143" class="py-name"><a title="VisionEgg.qtlowlevel.Movie
+VisionEgg.qtmovie.Movie" class="py-name" href="#" onclick="return doclink('link-143', 'Movie', 'link-15');">Movie</a></tt><tt class="py-op">,</tt><tt class="py-name">ctypes</tt><tt class="py-op">.</tt><tt class="py-name">c_long</tt><tt class="py-op">]</tt> </tt>
+<a name="L152"></a><tt class="py-lineno">152</tt>  <tt class="py-line"> </tt>
+<a name="L153"></a><tt class="py-lineno">153</tt>  <tt class="py-line"><tt id="link-144" class="py-name" targets="Variable VisionEgg.qtlowlevel.IsMovieDone=VisionEgg.qtlowlevel-module.html#IsMovieDone,Method VisionEgg.qtmovie.Movie.IsMovieDone()=VisionEgg.qtmovie.Movie-class.html#IsMovieDone"><a title="VisionEgg.qtlowlevel.IsMovieDone
+VisionEgg.qtmovie.Movie.IsMovieDone" class="py-name" href="#" onclick="return doclink('link-144', 'IsMovieDone', 'link-144');">IsMovieDone</a></tt> <tt class="py-op">=</tt> <tt id="link-145" class="py-name"><a title="VisionEgg.qtlowlevel.QTMLClient" class="py-name" href="#" onclick="return doclink('link-145', 'QTMLClient', 'link-0');">QTMLClient</a></tt><tt class="py-op">.</tt><tt id="link-146" class="py-name"><a title="VisionEgg.qtlowlevel.IsMovieDone
+VisionEgg.qtmovie.Movie.IsMovieDone" class="py-name" href="#" onclick="return doclink('link-146', 'IsMovieDone', 'link-144');">IsMovieDone</a></tt> </tt>
+<a name="L154"></a><tt class="py-lineno">154</tt>  <tt class="py-line"><tt id="link-147" class="py-name"><a title="VisionEgg.qtlowlevel.IsMovieDone
+VisionEgg.qtmovie.Movie.IsMovieDone" class="py-name" href="#" onclick="return doclink('link-147', 'IsMovieDone', 'link-144');">IsMovieDone</a></tt><tt class="py-op">.</tt><tt class="py-name">argtypes</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt id="link-148" class="py-name"><a title="VisionEgg.qtlowlevel.Movie
+VisionEgg.qtmovie.Movie" class="py-name" href="#" onclick="return doclink('link-148', 'Movie', 'link-15');">Movie</a></tt><tt class="py-op">]</tt> </tt>
+<a name="L155"></a><tt class="py-lineno">155</tt>  <tt class="py-line"> </tt>
+<a name="L156"></a><tt class="py-lineno">156</tt>  <tt class="py-line"><tt id="link-149" class="py-name" targets="Variable VisionEgg.qtlowlevel.GoToBeginningOfMovie=VisionEgg.qtlowlevel-module.html#GoToBeginningOfMovie,Method VisionEgg.qtmovie.Movie.GoToBeginningOfMovie()=VisionEgg.qtmovie.Movie-class.html#GoToBeginningOfMovie"><a title="VisionEgg.qtlowlevel.GoToBeginningOfMovie
+VisionEgg.qtmovie.Movie.GoToBeginningOfMovie" class="py-name" href="#" onclick="return doclink('link-149', 'GoToBeginningOfMovie', 'link-149');">GoToBeginningOfMovie</a></tt> <tt class="py-op">=</tt> <tt id="link-150" class="py-name"><a title="VisionEgg.qtlowlevel.QTMLClient" class="py-name" href="#" onclick="return doclink('link-150', 'QTMLClient', 'link-0');">QTMLClient</a></tt><tt class="py-op">.</tt><tt id="link-151" class="py-name"><a title="VisionEgg.qtlowlevel.GoToBeginningOfMovie
+VisionEgg.qtmovie.Movie.GoToBeginningOfMovie" class="py-name" href="#" onclick="return doclink('link-151', 'GoToBeginningOfMovie', 'link-149');">GoToBeginningOfMovie</a></tt> </tt>
+<a name="L157"></a><tt class="py-lineno">157</tt>  <tt class="py-line"><tt id="link-152" class="py-name"><a title="VisionEgg.qtlowlevel.GoToBeginningOfMovie
+VisionEgg.qtmovie.Movie.GoToBeginningOfMovie" class="py-name" href="#" onclick="return doclink('link-152', 'GoToBeginningOfMovie', 'link-149');">GoToBeginningOfMovie</a></tt><tt class="py-op">.</tt><tt class="py-name">argtypes</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt id="link-153" class="py-name"><a title="VisionEgg.qtlowlevel.Movie
+VisionEgg.qtmovie.Movie" class="py-name" href="#" onclick="return doclink('link-153', 'Movie', 'link-15');">Movie</a></tt><tt class="py-op">]</tt> </tt>
+<a name="L158"></a><tt class="py-lineno">158</tt>  <tt class="py-line"> </tt>
+<a name="L159"></a><tt class="py-lineno">159</tt>  <tt class="py-line"><tt id="link-154" class="py-name" targets="Variable VisionEgg.qtlowlevel.FSSpec=VisionEgg.qtlowlevel-module.html#FSSpec"><a title="VisionEgg.qtlowlevel.FSSpec" class="py-name" href="#" onclick="return doclink('link-154', 'FSSpec', 'link-154');">FSSpec</a></tt> <tt class="py-op">=</tt> <tt class="py-name">ctypes</tt><tt class="py-op">.</tt><tt class="py-name">c_void_p</tt> </tt>
+<a name="L160"></a><tt class="py-lineno">160</tt>  <tt class="py-line"><tt id="link-155" class="py-name" targets="Variable VisionEgg.qtlowlevel.CFStringRef=VisionEgg.qtlowlevel-module.html#CFStringRef"><a title="VisionEgg.qtlowlevel.CFStringRef" class="py-name" href="#" onclick="return doclink('link-155', 'CFStringRef', 'link-155');">CFStringRef</a></tt> <tt class="py-op">=</tt> <tt class="py-name">ctypes</tt><tt class="py-op">.</tt><tt class="py-name">c_void_p</tt> </tt>
+<a name="L161"></a><tt class="py-lineno">161</tt>  <tt class="py-line"><tt id="link-156" class="py-name" targets="Variable VisionEgg.qtlowlevel.CFStringEncoding=VisionEgg.qtlowlevel-module.html#CFStringEncoding"><a title="VisionEgg.qtlowlevel.CFStringEncoding" class="py-name" href="#" onclick="return doclink('link-156', 'CFStringEncoding', 'link-156');">CFStringEncoding</a></tt> <tt class="py-op">=</tt> <tt class="py-name">ctypes</tt><tt class="py-op">.</tt><tt class="py-name">c_uint</tt> </tt>
+<a name="L162"></a><tt class="py-lineno">162</tt>  <tt class="py-line"><tt id="link-157" class="py-name" targets="Variable VisionEgg.qtlowlevel.CFAllocatorRef=VisionEgg.qtlowlevel-module.html#CFAllocatorRef"><a title="VisionEgg.qtlowlevel.CFAllocatorRef" class="py-name" href="#" onclick="return doclink('link-157', 'CFAllocatorRef', 'link-157');">CFAllocatorRef</a></tt> <tt class="py-op">=</tt> <tt class="py-name">ctypes</tt><tt class="py-op">.</tt><tt class="py-name">c_void_p</tt> </tt>
+<a name="L163"></a><tt class="py-lineno">163</tt>  <tt class="py-line"><tt id="link-158" class="py-name" targets="Variable VisionEgg.qtlowlevel.CFIndex=VisionEgg.qtlowlevel-module.html#CFIndex"><a title="VisionEgg.qtlowlevel.CFIndex" class="py-name" href="#" onclick="return doclink('link-158', 'CFIndex', 'link-158');">CFIndex</a></tt> <tt class="py-op">=</tt> <tt class="py-name">ctypes</tt><tt class="py-op">.</tt><tt class="py-name">c_int</tt> </tt>
+<a name="L164"></a><tt class="py-lineno">164</tt>  <tt class="py-line"><tt class="py-keyword">if</tt> <tt class="py-number">1</tt><tt class="py-op">:</tt> </tt>
+<a name="L165"></a><tt class="py-lineno">165</tt>  <tt class="py-line">    <tt id="link-159" class="py-name" targets="Variable VisionEgg.qtlowlevel.CFStringCreateWithCharacters=VisionEgg.qtlowlevel-module.html#CFStringCreateWithCharacters"><a title="VisionEgg.qtlowlevel.CFStringCreateWithCharacters" class="py-name" href="#" onclick="return doclink('link-159', 'CFStringCreateWithCharacters', 'link-159');">CFStringCreateWithCharacters</a></tt> <tt class="py-op">=</tt> <tt id="link-160" cla [...]
+<a name="L166"></a><tt class="py-lineno">166</tt>  <tt class="py-line">    <tt id="link-162" class="py-name"><a title="VisionEgg.qtlowlevel.CFStringCreateWithCharacters" class="py-name" href="#" onclick="return doclink('link-162', 'CFStringCreateWithCharacters', 'link-159');">CFStringCreateWithCharacters</a></tt><tt class="py-op">.</tt><tt class="py-name">restype</tt> <tt class="py-op">=</tt> <tt id="link-163" class="py-name"><a title="VisionEgg.qtlowlevel.CFStringRef" class="py-name" hr [...]
+<a name="L167"></a><tt class="py-lineno">167</tt>  <tt class="py-line">    <tt id="link-164" class="py-name"><a title="VisionEgg.qtlowlevel.CFStringCreateWithCharacters" class="py-name" href="#" onclick="return doclink('link-164', 'CFStringCreateWithCharacters', 'link-159');">CFStringCreateWithCharacters</a></tt><tt class="py-op">.</tt><tt class="py-name">argtypes</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt id="link-165" class="py-name"><a title="VisionEgg.qtlowlevel.CFAllo [...]
+<a name="L168"></a><tt class="py-lineno">168</tt>  <tt class="py-line">                                             <tt class="py-name">ctypes</tt><tt class="py-op">.</tt><tt class="py-name">c_wchar_p</tt><tt class="py-op">,</tt> </tt>
+<a name="L169"></a><tt class="py-lineno">169</tt>  <tt class="py-line">                                             <tt id="link-166" class="py-name"><a title="VisionEgg.qtlowlevel.CFIndex" class="py-name" href="#" onclick="return doclink('link-166', 'CFIndex', 'link-158');">CFIndex</a></tt><tt class="py-op">]</tt> </tt>
+<a name="L170"></a><tt class="py-lineno">170</tt>  <tt class="py-line">     </tt>
+<a name="L171"></a><tt class="py-lineno">171</tt>  <tt class="py-line">    <tt id="link-167" class="py-name" targets="Variable VisionEgg.qtlowlevel.CFStringCreateWithCString=VisionEgg.qtlowlevel-module.html#CFStringCreateWithCString"><a title="VisionEgg.qtlowlevel.CFStringCreateWithCString" class="py-name" href="#" onclick="return doclink('link-167', 'CFStringCreateWithCString', 'link-167');">CFStringCreateWithCString</a></tt> <tt class="py-op">=</tt> <tt id="link-168" class="py-name"><a [...]
+<a name="L172"></a><tt class="py-lineno">172</tt>  <tt class="py-line">    <tt id="link-170" class="py-name"><a title="VisionEgg.qtlowlevel.CFStringCreateWithCString" class="py-name" href="#" onclick="return doclink('link-170', 'CFStringCreateWithCString', 'link-167');">CFStringCreateWithCString</a></tt><tt class="py-op">.</tt><tt class="py-name">restype</tt> <tt class="py-op">=</tt> <tt id="link-171" class="py-name"><a title="VisionEgg.qtlowlevel.CFStringRef" class="py-name" href="#" on [...]
+<a name="L173"></a><tt class="py-lineno">173</tt>  <tt class="py-line">    <tt id="link-172" class="py-name"><a title="VisionEgg.qtlowlevel.CFStringCreateWithCString" class="py-name" href="#" onclick="return doclink('link-172', 'CFStringCreateWithCString', 'link-167');">CFStringCreateWithCString</a></tt><tt class="py-op">.</tt><tt class="py-name">argtypes</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt id="link-173" class="py-name"><a title="VisionEgg.qtlowlevel.CFAllocatorRef" [...]
+<a name="L174"></a><tt class="py-lineno">174</tt>  <tt class="py-line">                                          <tt class="py-name">ctypes</tt><tt class="py-op">.</tt><tt class="py-name">c_char_p</tt><tt class="py-op">,</tt> </tt>
+<a name="L175"></a><tt class="py-lineno">175</tt>  <tt class="py-line">                                          <tt id="link-174" class="py-name"><a title="VisionEgg.qtlowlevel.CFStringEncoding" class="py-name" href="#" onclick="return doclink('link-174', 'CFStringEncoding', 'link-156');">CFStringEncoding</a></tt><tt class="py-op">]</tt> </tt>
+<a name="L176"></a><tt class="py-lineno">176</tt>  <tt class="py-line"> </tt>
+<a name="L177"></a><tt class="py-lineno">177</tt>  <tt class="py-line">    <tt id="link-175" class="py-name" targets="Variable VisionEgg.qtlowlevel.CFStringGetCString=VisionEgg.qtlowlevel-module.html#CFStringGetCString"><a title="VisionEgg.qtlowlevel.CFStringGetCString" class="py-name" href="#" onclick="return doclink('link-175', 'CFStringGetCString', 'link-175');">CFStringGetCString</a></tt> <tt class="py-op">=</tt> <tt id="link-176" class="py-name"><a title="VisionEgg.qtlowlevel.QTMLCl [...]
+<a name="L178"></a><tt class="py-lineno">178</tt>  <tt class="py-line">    <tt id="link-178" class="py-name" targets="Variable VisionEgg.qtlowlevel.CFStringGetCStringPtr=VisionEgg.qtlowlevel-module.html#CFStringGetCStringPtr"><a title="VisionEgg.qtlowlevel.CFStringGetCStringPtr" class="py-name" href="#" onclick="return doclink('link-178', 'CFStringGetCStringPtr', 'link-178');">CFStringGetCStringPtr</a></tt> <tt class="py-op">=</tt> <tt id="link-179" class="py-name"><a title="VisionEgg.qt [...]
+<a name="L179"></a><tt class="py-lineno">179</tt>  <tt class="py-line">    <tt id="link-181" class="py-name"><a title="VisionEgg.qtlowlevel.CFStringGetCStringPtr" class="py-name" href="#" onclick="return doclink('link-181', 'CFStringGetCStringPtr', 'link-178');">CFStringGetCStringPtr</a></tt><tt class="py-op">.</tt><tt class="py-name">restype</tt> <tt class="py-op">=</tt> <tt class="py-name">ctypes</tt><tt class="py-op">.</tt><tt class="py-name">c_char_p</tt> </tt>
+<a name="L180"></a><tt class="py-lineno">180</tt>  <tt class="py-line"> </tt>
+<a name="L181"></a><tt class="py-lineno">181</tt>  <tt class="py-line">    <tt id="link-182" class="py-name" targets="Variable VisionEgg.qtlowlevel.NativePathNameToFSSpec=VisionEgg.qtlowlevel-module.html#NativePathNameToFSSpec"><a title="VisionEgg.qtlowlevel.NativePathNameToFSSpec" class="py-name" href="#" onclick="return doclink('link-182', 'NativePathNameToFSSpec', 'link-182');">NativePathNameToFSSpec</a></tt> <tt class="py-op">=</tt> <tt id="link-183" class="py-name"><a title="VisionE [...]
+<a name="L182"></a><tt class="py-lineno">182</tt>  <tt class="py-line">    <tt id="link-185" class="py-name"><a title="VisionEgg.qtlowlevel.NativePathNameToFSSpec" class="py-name" href="#" onclick="return doclink('link-185', 'NativePathNameToFSSpec', 'link-182');">NativePathNameToFSSpec</a></tt><tt class="py-op">.</tt><tt class="py-name">restype</tt> <tt class="py-op">=</tt> <tt id="link-186" class="py-name"><a title="VisionEgg.qtlowlevel.OSErr" class="py-name" href="#" onclick="return d [...]
+<a name="L183"></a><tt class="py-lineno">183</tt>  <tt class="py-line">    <tt id="link-187" class="py-name"><a title="VisionEgg.qtlowlevel.NativePathNameToFSSpec" class="py-name" href="#" onclick="return doclink('link-187', 'NativePathNameToFSSpec', 'link-182');">NativePathNameToFSSpec</a></tt><tt class="py-op">.</tt><tt class="py-name">argtypes</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">ctypes</tt><tt class="py-op">.</tt><tt class="py-name">c_char_p</tt>< [...]
+<a name="L184"></a><tt class="py-lineno">184</tt>  <tt class="py-line">                                       <tt class="py-name">ctypes</tt><tt class="py-op">.</tt><tt class="py-name">POINTER</tt><tt class="py-op">(</tt><tt id="link-188" class="py-name"><a title="VisionEgg.qtlowlevel.FSSpec" class="py-name" href="#" onclick="return doclink('link-188', 'FSSpec', 'link-154');">FSSpec</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L185"></a><tt class="py-lineno">185</tt>  <tt class="py-line">                                       <tt class="py-name">ctypes</tt><tt class="py-op">.</tt><tt class="py-name">c_long</tt><tt class="py-op">]</tt> </tt>
+<a name="L186"></a><tt class="py-lineno">186</tt>  <tt class="py-line"> </tt>
+<a name="L187"></a><tt class="py-lineno">187</tt>  <tt class="py-line">    <tt id="link-189" class="py-name" targets="Variable VisionEgg.qtlowlevel.OpenMovieFile=VisionEgg.qtlowlevel-module.html#OpenMovieFile"><a title="VisionEgg.qtlowlevel.OpenMovieFile" class="py-name" href="#" onclick="return doclink('link-189', 'OpenMovieFile', 'link-189');">OpenMovieFile</a></tt> <tt class="py-op">=</tt> <tt id="link-190" class="py-name"><a title="VisionEgg.qtlowlevel.QTMLClient" class="py-name" hre [...]
+<a name="L188"></a><tt class="py-lineno">188</tt>  <tt class="py-line">     </tt>
+<a name="L189"></a><tt class="py-lineno">189</tt>  <tt class="py-line"><tt class="py-keyword">if</tt> <tt class="py-number">1</tt><tt class="py-op">:</tt> </tt>
+<a name="L190"></a><tt class="py-lineno">190</tt>  <tt class="py-line">    <tt id="link-192" class="py-name" targets="Variable VisionEgg.qtlowlevel.kCFAllocatorDefault=VisionEgg.qtlowlevel-module.html#kCFAllocatorDefault"><a title="VisionEgg.qtlowlevel.kCFAllocatorDefault" class="py-name" href="#" onclick="return doclink('link-192', 'kCFAllocatorDefault', 'link-192');">kCFAllocatorDefault</a></tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L191"></a><tt class="py-lineno">191</tt>  <tt class="py-line">    <tt id="link-193" class="py-name" targets="Variable VisionEgg.qtlowlevel.kCFStringEncodingMacRoman=VisionEgg.qtlowlevel-module.html#kCFStringEncodingMacRoman"><a title="VisionEgg.qtlowlevel.kCFStringEncodingMacRoman" class="py-name" href="#" onclick="return doclink('link-193', 'kCFStringEncodingMacRoman', 'link-193');">kCFStringEncodingMacRoman</a></tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> <tt cla [...]
+<a name="L192"></a><tt class="py-lineno">192</tt>  <tt class="py-line"> </tt><script type="text/javascript">
+<!--
+expandto(location.href);
+// -->
+</script>
+</pre>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:49 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.qtlowlevel.QTNewMoviePropertyElement-class.html b/doc/reference/html/VisionEgg.qtlowlevel.QTNewMoviePropertyElement-class.html
new file mode 100644
index 0000000..42835ee
--- /dev/null
+++ b/doc/reference/html/VisionEgg.qtlowlevel.QTNewMoviePropertyElement-class.html
@@ -0,0 +1,168 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.qtlowlevel.QTNewMoviePropertyElement</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.qtlowlevel-module.html">Module qtlowlevel</a> ::
+        Class QTNewMoviePropertyElement
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.qtlowlevel.QTNewMoviePropertyElement-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class QTNewMoviePropertyElement</h1><span class="codelink"><a href="VisionEgg.qtlowlevel-pysrc.html#QTNewMoviePropertyElement">source code</a></span><br /><br />
+<pre class="base-tree">
+ctypes.Structure --+
+                   |
+                  <strong class="uidshort">QTNewMoviePropertyElement</strong>
+</pre>
+
+<hr />
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Class Variables</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.qtlowlevel.QTNewMoviePropertyElement-class.html#_fields_" class="summary-name">_fields_</a> = <code title="[("propClass", QTPropertyClass), ("propID", QTPropertyID), ("propValue\
+Size", ByteCount), ("propValueAddress", QTPropertyValuePtr), ("propSta\
+tus", OSStatus)]">[("propClass", QTPropertyClass), ("propID", QTPrope<code class="variable-ellipsis">...</code></code>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLE DETAILS ==================== -->
+<a name="section-ClassVariableDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Class Variable Details</span></td>
+</tr>
+</table>
+<a name="_fields_"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">_fields_</h3>
+  
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+[("propClass", QTPropertyClass), ("propID", QTPropertyID), ("propValue<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+Size", ByteCount), ("propValueAddress", QTPropertyValuePtr), ("propSta<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+tus", OSStatus)]
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:47 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.qtlowlevel.Rect-class.html b/doc/reference/html/VisionEgg.qtlowlevel.Rect-class.html
new file mode 100644
index 0000000..b159abe
--- /dev/null
+++ b/doc/reference/html/VisionEgg.qtlowlevel.Rect-class.html
@@ -0,0 +1,166 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.qtlowlevel.Rect</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.qtlowlevel-module.html">Module qtlowlevel</a> ::
+        Class Rect
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.qtlowlevel.Rect-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class Rect</h1><span class="codelink"><a href="VisionEgg.qtlowlevel-pysrc.html#Rect">source code</a></span><br /><br />
+<pre class="base-tree">
+ctypes.Structure --+
+                   |
+                  <strong class="uidshort">Rect</strong>
+</pre>
+
+<hr />
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Class Variables</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.qtlowlevel.Rect-class.html#_fields_" class="summary-name">_fields_</a> = <code title="[("top", ctypes.c_short), ("left", ctypes.c_short), ("bottom", ctypes.\
+c_short), ("right", ctypes.c_short)]">[("top", ctypes.c_short), ("left", ctypes.c_short),<code class="variable-ellipsis">...</code></code>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS VARIABLE DETAILS ==================== -->
+<a name="section-ClassVariableDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Class Variable Details</span></td>
+</tr>
+</table>
+<a name="_fields_"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">_fields_</h3>
+  
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+[("top", ctypes.c_short), ("left", ctypes.c_short), ("bottom", ctypes.<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+c_short), ("right", ctypes.c_short)]
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:47 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.qtlowlevel.qtlowlevelError-class.html b/doc/reference/html/VisionEgg.qtlowlevel.qtlowlevelError-class.html
new file mode 100644
index 0000000..664624b
--- /dev/null
+++ b/doc/reference/html/VisionEgg.qtlowlevel.qtlowlevelError-class.html
@@ -0,0 +1,180 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.qtlowlevel.qtlowlevelError</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.qtlowlevel-module.html">Module qtlowlevel</a> ::
+        Class qtlowlevelError
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.qtlowlevel.qtlowlevelError-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class qtlowlevelError</h1><span class="codelink"><a href="VisionEgg.qtlowlevel-pysrc.html#qtlowlevelError">source code</a></span><br /><br />
+<pre class="base-tree">
+              object --+                
+                       |                
+exceptions.BaseException --+            
+                           |            
+        exceptions.Exception --+        
+                               |        
+        exceptions.StandardError --+    
+                                   |    
+             exceptions.RuntimeError --+
+                                       |
+                                      <strong class="uidshort">qtlowlevelError</strong>
+</pre>
+
+<hr />
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.RuntimeError</code></b>:
+      <code>__init__</code>,
+      <code>__new__</code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.BaseException</code></b>:
+      <code>__delattr__</code>,
+      <code>__getattribute__</code>,
+      <code>__getitem__</code>,
+      <code>__getslice__</code>,
+      <code>__reduce__</code>,
+      <code>__repr__</code>,
+      <code>__setattr__</code>,
+      <code>__setstate__</code>,
+      <code>__str__</code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__hash__</code>,
+      <code>__reduce_ex__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Properties</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.BaseException</code></b>:
+      <code>args</code>,
+      <code>message</code>
+      </p>
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__class__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:47 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.qtmovie-module.html b/doc/reference/html/VisionEgg.qtmovie-module.html
new file mode 100644
index 0000000..b8ea381
--- /dev/null
+++ b/doc/reference/html/VisionEgg.qtmovie-module.html
@@ -0,0 +1,168 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.qtmovie</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        Module qtmovie
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.qtmovie-module.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== MODULE DESCRIPTION ==================== -->
+<h1 class="epydoc">Module qtmovie</h1><span class="codelink"><a href="VisionEgg.qtmovie-pysrc.html">source code</a></span><br /><br />
+<pre class="literalblock">
+high level QuickTime Movie wrapper
+
+</pre><br /><br />
+
+<!-- ==================== CLASSES ==================== -->
+<a name="section-Classes"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Classes</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.qtmovie.Rect-class.html" class="summary-name">Rect</a>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.qtmovie.Movie-class.html" class="summary-name">Movie</a><br />
+      An encapsulated QuickTime Movie
+    </td>
+  </tr>
+</table>
+<!-- ==================== FUNCTIONS ==================== -->
+<a name="section-Functions"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Functions</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="new_movie_from_filename"></a><span class="summary-sig-name">new_movie_from_filename</span>(<span class="summary-sig-arg">filename</span>,
+        <span class="summary-sig-arg">MAX_PATH</span>=<span class="summary-sig-default">255</span>)</span><br />
+      create a Movie from filename</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.qtmovie-pysrc.html#new_movie_from_filename">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.qtmovie-pysrc.html b/doc/reference/html/VisionEgg.qtmovie-pysrc.html
new file mode 100644
index 0000000..5c50fb3
--- /dev/null
+++ b/doc/reference/html/VisionEgg.qtmovie-pysrc.html
@@ -0,0 +1,224 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.qtmovie</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        Module qtmovie
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.qtmovie-pysrc.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<h1 class="epydoc">Source Code for <a href="VisionEgg.qtmovie-module.html">Module VisionEgg.qtmovie</a></h1>
+<pre class="py-src">
+<a name="L1"></a><tt class="py-lineno"> 1</tt>  <tt class="py-line"><tt class="py-docstring">"""high level QuickTime Movie wrapper"""</tt> </tt>
+<a name="L2"></a><tt class="py-lineno"> 2</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-0" class="py-name" targets="Module VisionEgg.qtlowlevel=VisionEgg.qtlowlevel-module.html"><a title="VisionEgg.qtlowlevel" class="py-name" href="#" onclick="return doclink('link-0', 'qtlowlevel', 'link-0');">qtlowlevel</a></tt> </tt>
+<a name="L3"></a><tt class="py-lineno"> 3</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">ctypes</tt> </tt>
+<a name="L4"></a><tt class="py-lineno"> 4</tt>  <tt class="py-line"> </tt>
+<a name="L5"></a><tt class="py-lineno"> 5</tt>  <tt class="py-line"><tt id="link-1" class="py-name"><a title="VisionEgg.qtlowlevel" class="py-name" href="#" onclick="return doclink('link-1', 'qtlowlevel', 'link-0');">qtlowlevel</a></tt><tt class="py-op">.</tt><tt id="link-2" class="py-name" targets="Variable VisionEgg.qtlowlevel.InitializeQTML=VisionEgg.qtlowlevel-module.html#InitializeQTML"><a title="VisionEgg.qtlowlevel.InitializeQTML" class="py-name" href="#" onclick="return doclink(' [...]
+<a name="L6"></a><tt class="py-lineno"> 6</tt>  <tt class="py-line"><tt id="link-3" class="py-name"><a title="VisionEgg.qtlowlevel" class="py-name" href="#" onclick="return doclink('link-3', 'qtlowlevel', 'link-0');">qtlowlevel</a></tt><tt class="py-op">.</tt><tt id="link-4" class="py-name" targets="Variable VisionEgg.qtlowlevel.EnterMovies=VisionEgg.qtlowlevel-module.html#EnterMovies"><a title="VisionEgg.qtlowlevel.EnterMovies" class="py-name" href="#" onclick="return doclink('link-4',  [...]
+<a name="L7"></a><tt class="py-lineno"> 7</tt>  <tt class="py-line"> </tt>
+<a name="new_movie_from_filename"></a><div id="new_movie_from_filename-def"><a name="L8"></a><tt class="py-lineno"> 8</tt> <a class="py-toggle" href="#" id="new_movie_from_filename-toggle" onclick="return toggle('new_movie_from_filename');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.qtmovie-module.html#new_movie_from_filename">new_movie_from_filename</a><tt class="py-op">(</tt><tt class="py-param">filename</tt><tt class="py-op">,</tt>  [...]
+</div><div id="new_movie_from_filename-collapsed" style="display:none;" pad="++" indent="++++"></div><div id="new_movie_from_filename-expanded"><a name="L9"></a><tt class="py-lineno"> 9</tt>  <tt class="py-line">    <tt class="py-docstring">"""create a Movie from filename"""</tt> </tt>
+<a name="L10"></a><tt class="py-lineno">10</tt>  <tt class="py-line">    <tt class="py-name">movieProps</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt id="link-5" class="py-name"><a title="VisionEgg.qtlowlevel" class="py-name" href="#" onclick="return doclink('link-5', 'qtlowlevel', 'link-0');">qtlowlevel</a></tt><tt class="py-op">.</tt><tt id="link-6" class="py-name" targets="Class VisionEgg.qtlowlevel.QTNewMoviePropertyElement=VisionEgg.qtlowlevel.QTNewMoviePropertyElement-c [...]
+<a name="L11"></a><tt class="py-lineno">11</tt>  <tt class="py-line">    <tt class="py-name">filename</tt> <tt class="py-op">=</tt> <tt class="py-name">unicode</tt><tt class="py-op">(</tt><tt class="py-name">filename</tt><tt class="py-op">)</tt> </tt>
+<a name="L12"></a><tt class="py-lineno">12</tt>  <tt class="py-line"> </tt>
+<a name="L13"></a><tt class="py-lineno">13</tt>  <tt class="py-line">    <tt class="py-name">movieFilePathRef</tt> <tt class="py-op">=</tt> <tt id="link-7" class="py-name"><a title="VisionEgg.qtlowlevel" class="py-name" href="#" onclick="return doclink('link-7', 'qtlowlevel', 'link-0');">qtlowlevel</a></tt><tt class="py-op">.</tt><tt id="link-8" class="py-name" targets="Variable VisionEgg.qtlowlevel.CFStringRef=VisionEgg.qtlowlevel-module.html#CFStringRef"><a title="VisionEgg.qtlowlevel. [...]
+<a name="L14"></a><tt class="py-lineno">14</tt>  <tt class="py-line">    <tt class="py-name">movieFilePathRef</tt><tt class="py-op">.</tt><tt class="py-name">value</tt> <tt class="py-op">=</tt> <tt id="link-9" class="py-name"><a title="VisionEgg.qtlowlevel" class="py-name" href="#" onclick="return doclink('link-9', 'qtlowlevel', 'link-0');">qtlowlevel</a></tt><tt class="py-op">.</tt><tt id="link-10" class="py-name" targets="Variable VisionEgg.qtlowlevel.CFStringCreateWithCharacters=Visio [...]
+<a name="L15"></a><tt class="py-lineno">15</tt>  <tt class="py-line">                                                                     <tt class="py-name">filename</tt><tt class="py-op">,</tt> </tt>
+<a name="L16"></a><tt class="py-lineno">16</tt>  <tt class="py-line">                                                                     <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">filename</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L17"></a><tt class="py-lineno">17</tt>  <tt class="py-line"> </tt>
+<a name="L18"></a><tt class="py-lineno">18</tt>  <tt class="py-line">    <tt class="py-name">moviePropCount</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L19"></a><tt class="py-lineno">19</tt>  <tt class="py-line"> </tt>
+<a name="L20"></a><tt class="py-lineno">20</tt>  <tt class="py-line">    <tt class="py-name">movieProps</tt><tt class="py-op">[</tt><tt class="py-name">moviePropCount</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">propClass</tt> <tt class="py-op">=</tt> <tt id="link-13" class="py-name"><a title="VisionEgg.qtlowlevel" class="py-name" href="#" onclick="return doclink('link-13', 'qtlowlevel', 'link-0');">qtlowlevel</a></tt><tt class="py-op">.</tt><tt id="link-14" cl [...]
+<a name="L21"></a><tt class="py-lineno">21</tt>  <tt class="py-line">    <tt class="py-name">movieProps</tt><tt class="py-op">[</tt><tt class="py-name">moviePropCount</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">propID</tt> <tt class="py-op">=</tt> <tt id="link-15" class="py-name"><a title="VisionEgg.qtlowlevel" class="py-name" href="#" onclick="return doclink('link-15', 'qtlowlevel', 'link-0');">qtlowlevel</a></tt><tt class="py-op">.</tt><tt id="link-16" class [...]
+<a name="L22"></a><tt class="py-lineno">22</tt>  <tt class="py-line">    <tt class="py-name">movieProps</tt><tt class="py-op">[</tt><tt class="py-name">moviePropCount</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">propValueSize</tt> <tt class="py-op">=</tt> <tt class="py-name">ctypes</tt><tt class="py-op">.</tt><tt class="py-name">sizeof</tt><tt class="py-op">(</tt><tt class="py-name">ctypes</tt><tt class="py-op">.</tt><tt class="py-name">c_void_p</tt><tt class=" [...]
+<a name="L23"></a><tt class="py-lineno">23</tt>  <tt class="py-line">    <tt class="py-name">movieProps</tt><tt class="py-op">[</tt><tt class="py-name">moviePropCount</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">propValueAddress</tt> <tt class="py-op">=</tt> <tt class="py-name">ctypes</tt><tt class="py-op">.</tt><tt class="py-name">cast</tt><tt class="py-op">(</tt><tt class="py-name">ctypes</tt><tt class="py-op">.</tt><tt class="py-name">byref</tt><tt class="py [...]
+<a name="L24"></a><tt class="py-lineno">24</tt>  <tt class="py-line">    <tt class="py-name">movieProps</tt><tt class="py-op">[</tt><tt class="py-name">moviePropCount</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">propStatus</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L25"></a><tt class="py-lineno">25</tt>  <tt class="py-line"> </tt>
+<a name="L26"></a><tt class="py-lineno">26</tt>  <tt class="py-line">    <tt class="py-name">moviePropCount</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L27"></a><tt class="py-lineno">27</tt>  <tt class="py-line"> </tt>
+<a name="L28"></a><tt class="py-lineno">28</tt>  <tt class="py-line">    <tt class="py-name">boolTrue</tt> <tt class="py-op">=</tt> <tt class="py-name">ctypes</tt><tt class="py-op">.</tt><tt class="py-name">c_ubyte</tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="L29"></a><tt class="py-lineno">29</tt>  <tt class="py-line">    <tt class="py-name">movieProps</tt><tt class="py-op">[</tt><tt class="py-name">moviePropCount</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">propClass</tt> <tt class="py-op">=</tt> <tt id="link-17" class="py-name"><a title="VisionEgg.qtlowlevel" class="py-name" href="#" onclick="return doclink('link-17', 'qtlowlevel', 'link-0');">qtlowlevel</a></tt><tt class="py-op">.</tt><tt id="link-18" cl [...]
+<a name="L30"></a><tt class="py-lineno">30</tt>  <tt class="py-line">    <tt class="py-name">movieProps</tt><tt class="py-op">[</tt><tt class="py-name">moviePropCount</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">propID</tt> <tt class="py-op">=</tt> <tt id="link-19" class="py-name"><a title="VisionEgg.qtlowlevel" class="py-name" href="#" onclick="return doclink('link-19', 'qtlowlevel', 'link-0');">qtlowlevel</a></tt><tt class="py-op">.</tt><tt id="link-20" class [...]
+<a name="L31"></a><tt class="py-lineno">31</tt>  <tt class="py-line">    <tt class="py-name">movieProps</tt><tt class="py-op">[</tt><tt class="py-name">moviePropCount</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">propValueSize</tt> <tt class="py-op">=</tt> <tt class="py-name">ctypes</tt><tt class="py-op">.</tt><tt class="py-name">sizeof</tt><tt class="py-op">(</tt><tt class="py-name">boolTrue</tt><tt class="py-op">)</tt> </tt>
+<a name="L32"></a><tt class="py-lineno">32</tt>  <tt class="py-line">    <tt class="py-name">movieProps</tt><tt class="py-op">[</tt><tt class="py-name">moviePropCount</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">propValueAddress</tt> <tt class="py-op">=</tt> <tt class="py-name">ctypes</tt><tt class="py-op">.</tt><tt class="py-name">cast</tt><tt class="py-op">(</tt><tt class="py-name">ctypes</tt><tt class="py-op">.</tt><tt class="py-name">pointer</tt><tt class=" [...]
+<a name="L33"></a><tt class="py-lineno">33</tt>  <tt class="py-line">    <tt class="py-name">movieProps</tt><tt class="py-op">[</tt><tt class="py-name">moviePropCount</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">propStatus</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L34"></a><tt class="py-lineno">34</tt>  <tt class="py-line"> </tt>
+<a name="L35"></a><tt class="py-lineno">35</tt>  <tt class="py-line">    <tt class="py-name">moviePropCount</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L36"></a><tt class="py-lineno">36</tt>  <tt class="py-line"> </tt>
+<a name="L37"></a><tt class="py-lineno">37</tt>  <tt class="py-line">    <tt class="py-name">movieProps</tt><tt class="py-op">[</tt><tt class="py-name">moviePropCount</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">propClass</tt> <tt class="py-op">=</tt> <tt id="link-21" class="py-name"><a title="VisionEgg.qtlowlevel" class="py-name" href="#" onclick="return doclink('link-21', 'qtlowlevel', 'link-0');">qtlowlevel</a></tt><tt class="py-op">.</tt><tt id="link-22" cl [...]
+<a name="L38"></a><tt class="py-lineno">38</tt>  <tt class="py-line">    <tt class="py-name">movieProps</tt><tt class="py-op">[</tt><tt class="py-name">moviePropCount</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">propID</tt> <tt class="py-op">=</tt> <tt id="link-23" class="py-name"><a title="VisionEgg.qtlowlevel" class="py-name" href="#" onclick="return doclink('link-23', 'qtlowlevel', 'link-0');">qtlowlevel</a></tt><tt class="py-op">.</tt><tt id="link-24" class [...]
+<a name="L39"></a><tt class="py-lineno">39</tt>  <tt class="py-line">    <tt class="py-name">movieProps</tt><tt class="py-op">[</tt><tt class="py-name">moviePropCount</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">propValueSize</tt> <tt class="py-op">=</tt> <tt class="py-name">ctypes</tt><tt class="py-op">.</tt><tt class="py-name">sizeof</tt><tt class="py-op">(</tt><tt class="py-name">boolTrue</tt><tt class="py-op">)</tt> </tt>
+<a name="L40"></a><tt class="py-lineno">40</tt>  <tt class="py-line">    <tt class="py-name">movieProps</tt><tt class="py-op">[</tt><tt class="py-name">moviePropCount</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">propValueAddress</tt> <tt class="py-op">=</tt> <tt class="py-name">ctypes</tt><tt class="py-op">.</tt><tt class="py-name">cast</tt><tt class="py-op">(</tt><tt class="py-name">ctypes</tt><tt class="py-op">.</tt><tt class="py-name">pointer</tt><tt class=" [...]
+<a name="L41"></a><tt class="py-lineno">41</tt>  <tt class="py-line">    <tt class="py-name">movieProps</tt><tt class="py-op">[</tt><tt class="py-name">moviePropCount</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">propStatus</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L42"></a><tt class="py-lineno">42</tt>  <tt class="py-line"> </tt>
+<a name="L43"></a><tt class="py-lineno">43</tt>  <tt class="py-line">    <tt class="py-name">moviePropCount</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L44"></a><tt class="py-lineno">44</tt>  <tt class="py-line"> </tt>
+<a name="L45"></a><tt class="py-lineno">45</tt>  <tt class="py-line">    <tt class="py-name">movieProps</tt><tt class="py-op">[</tt><tt class="py-name">moviePropCount</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">propClass</tt> <tt class="py-op">=</tt> <tt id="link-25" class="py-name"><a title="VisionEgg.qtlowlevel" class="py-name" href="#" onclick="return doclink('link-25', 'qtlowlevel', 'link-0');">qtlowlevel</a></tt><tt class="py-op">.</tt><tt id="link-26" cl [...]
+<a name="L46"></a><tt class="py-lineno">46</tt>  <tt class="py-line">    <tt class="py-name">movieProps</tt><tt class="py-op">[</tt><tt class="py-name">moviePropCount</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">propID</tt> <tt class="py-op">=</tt> <tt id="link-27" class="py-name"><a title="VisionEgg.qtlowlevel" class="py-name" href="#" onclick="return doclink('link-27', 'qtlowlevel', 'link-0');">qtlowlevel</a></tt><tt class="py-op">.</tt><tt id="link-28" class [...]
+<a name="L47"></a><tt class="py-lineno">47</tt>  <tt class="py-line">    <tt class="py-name">movieProps</tt><tt class="py-op">[</tt><tt class="py-name">moviePropCount</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">propValueSize</tt> <tt class="py-op">=</tt> <tt class="py-name">ctypes</tt><tt class="py-op">.</tt><tt class="py-name">sizeof</tt><tt class="py-op">(</tt><tt class="py-name">boolTrue</tt><tt class="py-op">)</tt> </tt>
+<a name="L48"></a><tt class="py-lineno">48</tt>  <tt class="py-line">    <tt class="py-name">movieProps</tt><tt class="py-op">[</tt><tt class="py-name">moviePropCount</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">propValueAddress</tt> <tt class="py-op">=</tt> <tt class="py-name">ctypes</tt><tt class="py-op">.</tt><tt class="py-name">cast</tt><tt class="py-op">(</tt><tt class="py-name">ctypes</tt><tt class="py-op">.</tt><tt class="py-name">pointer</tt><tt class=" [...]
+<a name="L49"></a><tt class="py-lineno">49</tt>  <tt class="py-line">    <tt class="py-name">movieProps</tt><tt class="py-op">[</tt><tt class="py-name">moviePropCount</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">propStatus</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L50"></a><tt class="py-lineno">50</tt>  <tt class="py-line"> </tt>
+<a name="L51"></a><tt class="py-lineno">51</tt>  <tt class="py-line">    <tt class="py-name">moviePropCount</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L52"></a><tt class="py-lineno">52</tt>  <tt class="py-line"> </tt>
+<a name="L53"></a><tt class="py-lineno">53</tt>  <tt class="py-line">    <tt class="py-name">theMovie</tt> <tt class="py-op">=</tt> <tt id="link-29" class="py-name"><a title="VisionEgg.qtlowlevel" class="py-name" href="#" onclick="return doclink('link-29', 'qtlowlevel', 'link-0');">qtlowlevel</a></tt><tt class="py-op">.</tt><tt id="link-30" class="py-name" targets="Variable VisionEgg.qtlowlevel.Movie=VisionEgg.qtlowlevel-module.html#Movie,Class VisionEgg.qtmovie.Movie=VisionEgg.qtmovie.M [...]
+VisionEgg.qtmovie.Movie" class="py-name" href="#" onclick="return doclink('link-30', 'Movie', 'link-30');">Movie</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L54"></a><tt class="py-lineno">54</tt>  <tt class="py-line">    <tt id="link-31" class="py-name"><a title="VisionEgg.qtlowlevel" class="py-name" href="#" onclick="return doclink('link-31', 'qtlowlevel', 'link-0');">qtlowlevel</a></tt><tt class="py-op">.</tt><tt id="link-32" class="py-name" targets="Variable VisionEgg.qtlowlevel.NewMovieFromProperties=VisionEgg.qtlowlevel-module.html#NewMovieFromProperties"><a title="VisionEgg.qtlowlevel.NewMovieFromProperties" class="py-name" hr [...]
+<a name="L55"></a><tt class="py-lineno">55</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt id="link-33" class="py-name"><a title="VisionEgg.qtlowlevel.Movie
+VisionEgg.qtmovie.Movie" class="py-name" href="#" onclick="return doclink('link-33', 'Movie', 'link-30');">Movie</a></tt><tt class="py-op">(</tt><tt class="py-name">theMovie</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L56"></a><tt class="py-lineno">56</tt>  <tt class="py-line"> </tt>
+<a name="Rect"></a><div id="Rect-def"><a name="L57"></a><tt class="py-lineno">57</tt> <a class="py-toggle" href="#" id="Rect-toggle" onclick="return toggle('Rect');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.qtmovie.Rect-class.html">Rect</a><tt class="py-op">:</tt> </tt>
+</div><div id="Rect-collapsed" style="display:none;" pad="++" indent="++++"></div><div id="Rect-expanded"><a name="Rect.__init__"></a><div id="Rect.__init__-def"><a name="L58"></a><tt class="py-lineno">58</tt> <a class="py-toggle" href="#" id="Rect.__init__-toggle" onclick="return toggle('Rect.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.qtmovie.Rect-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py- [...]
+</div><div id="Rect.__init__-collapsed" style="display:none;" pad="++" indent="++++++++"></div><div id="Rect.__init__-expanded"><a name="L59"></a><tt class="py-lineno">59</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">top</tt> <tt class="py-op">=</tt> <tt class="py-name">top</tt> </tt>
+<a name="L60"></a><tt class="py-lineno">60</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-34" class="py-name" targets="Variable VisionEgg.PyroApps.MouseTargetServer.left=VisionEgg.PyroApps.MouseTargetServer-module.html#left"><a title="VisionEgg.PyroApps.MouseTargetServer.left" class="py-name" href="#" onclick="return doclink('link-34', 'left', 'link-34');">left</a></tt> <tt class="py-op">=</tt> <tt id="link-35" class="py-name"><a title [...]
+<a name="L61"></a><tt class="py-lineno">61</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">bottom</tt> <tt class="py-op">=</tt> <tt class="py-name">bottom</tt> </tt>
+<a name="L62"></a><tt class="py-lineno">62</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-36" class="py-name" targets="Variable VisionEgg.PyroApps.MouseTargetServer.right=VisionEgg.PyroApps.MouseTargetServer-module.html#right"><a title="VisionEgg.PyroApps.MouseTargetServer.right" class="py-name" href="#" onclick="return doclink('link-36', 'right', 'link-36');">right</a></tt> <tt class="py-op">=</tt> <tt id="link-37" class="py-name"><a  [...]
+</div></div><a name="L63"></a><tt class="py-lineno">63</tt>  <tt class="py-line"> </tt>
+<a name="Movie"></a><div id="Movie-def"><a name="L64"></a><tt class="py-lineno">64</tt> <a class="py-toggle" href="#" id="Movie-toggle" onclick="return toggle('Movie');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.qtmovie.Movie-class.html">Movie</a><tt class="py-op">:</tt> </tt>
+</div><div id="Movie-collapsed" style="display:none;" pad="++" indent="++++"></div><div id="Movie-expanded"><a name="L65"></a><tt class="py-lineno">65</tt>  <tt class="py-line">    <tt class="py-docstring">"""An encapsulated QuickTime Movie"""</tt> </tt>
+<a name="Movie.__init__"></a><div id="Movie.__init__-def"><a name="L66"></a><tt class="py-lineno">66</tt> <a class="py-toggle" href="#" id="Movie.__init__-toggle" onclick="return toggle('Movie.__init__');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.qtmovie.Movie-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt><tt class="py-param">theMovie</tt><tt class="py-op">)</tt><tt [...]
+</div><div id="Movie.__init__-collapsed" style="display:none;" pad="++" indent="++++++++"></div><div id="Movie.__init__-expanded"><a name="L67"></a><tt class="py-lineno">67</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">theMovie</tt> <tt class="py-op">=</tt> <tt class="py-name">theMovie</tt> </tt>
+</div><a name="Movie.GetMovieBox"></a><div id="Movie.GetMovieBox-def"><a name="L68"></a><tt class="py-lineno">68</tt> <a class="py-toggle" href="#" id="Movie.GetMovieBox-toggle" onclick="return toggle('Movie.GetMovieBox');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.qtmovie.Movie-class.html#GetMovieBox">GetMovieBox</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Movie.GetMovieBox-collapsed" style="display:none;" pad="++" indent="++++++++"></div><div id="Movie.GetMovieBox-expanded"><a name="L69"></a><tt class="py-lineno">69</tt>  <tt class="py-line">        <tt class="py-name">movieBounds</tt> <tt class="py-op">=</tt> <tt id="link-38" class="py-name"><a title="VisionEgg.qtlowlevel" class="py-name" href="#" onclick="return doclink('link-38', 'qtlowlevel', 'link-0');">qtlowlevel</a></tt><tt class="py-op">.</tt><tt id="link-39" class= [...]
+VisionEgg.qtmovie.Rect" class="py-name" href="#" onclick="return doclink('link-39', 'Rect', 'link-39');">Rect</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L70"></a><tt class="py-lineno">70</tt>  <tt class="py-line">        <tt id="link-40" class="py-name"><a title="VisionEgg.qtlowlevel" class="py-name" href="#" onclick="return doclink('link-40', 'qtlowlevel', 'link-0');">qtlowlevel</a></tt><tt class="py-op">.</tt><tt id="link-41" class="py-name" targets="Variable VisionEgg.qtlowlevel.GetMovieBox=VisionEgg.qtlowlevel-module.html#GetMovieBox,Method VisionEgg.qtmovie.Movie.GetMovieBox()=VisionEgg.qtmovie.Movie-class.html#GetMovieBox" [...]
+VisionEgg.qtmovie.Movie.GetMovieBox" class="py-name" href="#" onclick="return doclink('link-41', 'GetMovieBox', 'link-41');">GetMovieBox</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">theMovie</tt><tt class="py-op">,</tt> <tt class="py-name">ctypes</tt><tt class="py-op">.</tt><tt class="py-name">byref</tt><tt class="py-op">(</tt><tt class="py-name">movieBounds</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L71"></a><tt class="py-lineno">71</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt id="link-42" class="py-name"><a title="VisionEgg.qtlowlevel.Rect
+VisionEgg.qtmovie.Rect" class="py-name" href="#" onclick="return doclink('link-42', 'Rect', 'link-39');">Rect</a></tt><tt class="py-op">(</tt><tt class="py-name">top</tt><tt class="py-op">=</tt><tt class="py-name">movieBounds</tt><tt class="py-op">.</tt><tt class="py-name">top</tt><tt class="py-op">,</tt> </tt>
+<a name="L72"></a><tt class="py-lineno">72</tt>  <tt class="py-line">                    <tt id="link-43" class="py-name"><a title="VisionEgg.PyroApps.MouseTargetServer.left" class="py-name" href="#" onclick="return doclink('link-43', 'left', 'link-34');">left</a></tt><tt class="py-op">=</tt><tt class="py-name">movieBounds</tt><tt class="py-op">.</tt><tt id="link-44" class="py-name"><a title="VisionEgg.PyroApps.MouseTargetServer.left" class="py-name" href="#" onclick="return doclink('lin [...]
+<a name="L73"></a><tt class="py-lineno">73</tt>  <tt class="py-line">                    <tt class="py-name">bottom</tt><tt class="py-op">=</tt><tt class="py-name">movieBounds</tt><tt class="py-op">.</tt><tt class="py-name">bottom</tt><tt class="py-op">,</tt> </tt>
+<a name="L74"></a><tt class="py-lineno">74</tt>  <tt class="py-line">                    <tt id="link-45" class="py-name"><a title="VisionEgg.PyroApps.MouseTargetServer.right" class="py-name" href="#" onclick="return doclink('link-45', 'right', 'link-36');">right</a></tt><tt class="py-op">=</tt><tt class="py-name">movieBounds</tt><tt class="py-op">.</tt><tt id="link-46" class="py-name"><a title="VisionEgg.PyroApps.MouseTargetServer.right" class="py-name" href="#" onclick="return doclink( [...]
+</div><a name="L75"></a><tt class="py-lineno">75</tt>  <tt class="py-line">     </tt>
+<a name="Movie.SetMovieBox"></a><div id="Movie.SetMovieBox-def"><a name="L76"></a><tt class="py-lineno">76</tt> <a class="py-toggle" href="#" id="Movie.SetMovieBox-toggle" onclick="return toggle('Movie.SetMovieBox');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.qtmovie.Movie-class.html#SetMovieBox">SetMovieBox</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt><tt class="py-param">bounds</tt><tt class=" [...]
+</div><div id="Movie.SetMovieBox-collapsed" style="display:none;" pad="++" indent="++++++++"></div><div id="Movie.SetMovieBox-expanded"><a name="L77"></a><tt class="py-lineno">77</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">bounds</tt><tt class="py-op">,</tt><tt id="link-47" class="py-name"><a title="VisionEgg.qtlowlevel.Rect
+VisionEgg.qtmovie.Rect" class="py-name" href="#" onclick="return doclink('link-47', 'Rect', 'link-39');">Rect</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L78"></a><tt class="py-lineno">78</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">'bounds argument must be instance of VisionEgg.qtmovie.Rect'</tt><tt class="py-op">)</tt> </tt>
+<a name="L79"></a><tt class="py-lineno">79</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-48" class="py-name"><a title="VisionEgg.qtlowlevel" class="py-name" href="#" onclick="return doclink('link-48', 'qtlowlevel', 'link-0');">qtlowlevel</a></tt><tt class="py-op">.</tt><tt id="link-49" class="py-name"><a title="VisionEgg.qtlowlevel.Rect
+VisionEgg.qtmovie.Rect" class="py-name" href="#" onclick="return doclink('link-49', 'Rect', 'link-39');">Rect</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L80"></a><tt class="py-lineno">80</tt>  <tt class="py-line">        <tt class="py-op">(</tt><tt class="py-name">b</tt><tt class="py-op">.</tt><tt class="py-name">top</tt><tt class="py-op">,</tt> <tt class="py-name">b</tt><tt class="py-op">.</tt><tt id="link-50" class="py-name"><a title="VisionEgg.PyroApps.MouseTargetServer.left" class="py-name" href="#" onclick="return doclink('link-50', 'left', 'link-34');">left</a></tt><tt class="py-op">,</tt> <tt class="py-name">b</tt><tt cla [...]
+<a name="L81"></a><tt class="py-lineno">81</tt>  <tt class="py-line">                                              <tt class="py-name">bounds</tt><tt class="py-op">.</tt><tt class="py-name">bottom</tt><tt class="py-op">,</tt> <tt class="py-name">bounds</tt><tt class="py-op">.</tt><tt id="link-53" class="py-name"><a title="VisionEgg.PyroApps.MouseTargetServer.right" class="py-name" href="#" onclick="return doclink('link-53', 'right', 'link-36');">right</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L82"></a><tt class="py-lineno">82</tt>  <tt class="py-line">        <tt id="link-54" class="py-name"><a title="VisionEgg.qtlowlevel" class="py-name" href="#" onclick="return doclink('link-54', 'qtlowlevel', 'link-0');">qtlowlevel</a></tt><tt class="py-op">.</tt><tt id="link-55" class="py-name" targets="Variable VisionEgg.qtlowlevel.SetMovieBox=VisionEgg.qtlowlevel-module.html#SetMovieBox,Method VisionEgg.qtmovie.Movie.SetMovieBox()=VisionEgg.qtmovie.Movie-class.html#SetMovieBox" [...]
+VisionEgg.qtmovie.Movie.SetMovieBox" class="py-name" href="#" onclick="return doclink('link-55', 'SetMovieBox', 'link-55');">SetMovieBox</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">theMovie</tt><tt class="py-op">,</tt> <tt class="py-name">ctypes</tt><tt class="py-op">.</tt><tt class="py-name">byref</tt><tt class="py-op">(</tt><tt class="py-name">b</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="Movie.StartMovie"></a><div id="Movie.StartMovie-def"><a name="L83"></a><tt class="py-lineno">83</tt> <a class="py-toggle" href="#" id="Movie.StartMovie-toggle" onclick="return toggle('Movie.StartMovie');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.qtmovie.Movie-class.html#StartMovie">StartMovie</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Movie.StartMovie-collapsed" style="display:none;" pad="++" indent="++++++++"></div><div id="Movie.StartMovie-expanded"><a name="L84"></a><tt class="py-lineno">84</tt>  <tt class="py-line">        <tt id="link-56" class="py-name"><a title="VisionEgg.qtlowlevel" class="py-name" href="#" onclick="return doclink('link-56', 'qtlowlevel', 'link-0');">qtlowlevel</a></tt><tt class="py-op">.</tt><tt id="link-57" class="py-name" targets="Variable VisionEgg.qtlowlevel.StartMovie=Visi [...]
+VisionEgg.qtmovie.Movie.StartMovie" class="py-name" href="#" onclick="return doclink('link-57', 'StartMovie', 'link-57');">StartMovie</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">theMovie</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L85"></a><tt class="py-lineno">85</tt>  <tt class="py-line"> </tt>
+<a name="Movie.MoviesTask"></a><div id="Movie.MoviesTask-def"><a name="L86"></a><tt class="py-lineno">86</tt> <a class="py-toggle" href="#" id="Movie.MoviesTask-toggle" onclick="return toggle('Movie.MoviesTask');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.qtmovie.Movie-class.html#MoviesTask">MoviesTask</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt><tt class="py-param">value</tt><tt class="py-op"> [...]
+</div><div id="Movie.MoviesTask-collapsed" style="display:none;" pad="++" indent="++++++++"></div><div id="Movie.MoviesTask-expanded"><a name="L87"></a><tt class="py-lineno">87</tt>  <tt class="py-line">        <tt id="link-58" class="py-name"><a title="VisionEgg.qtlowlevel" class="py-name" href="#" onclick="return doclink('link-58', 'qtlowlevel', 'link-0');">qtlowlevel</a></tt><tt class="py-op">.</tt><tt id="link-59" class="py-name" targets="Variable VisionEgg.qtlowlevel.MoviesTask=Visi [...]
+VisionEgg.qtmovie.Movie.MoviesTask" class="py-name" href="#" onclick="return doclink('link-59', 'MoviesTask', 'link-59');">MoviesTask</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">theMovie</tt><tt class="py-op">,</tt> <tt class="py-name">value</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L88"></a><tt class="py-lineno">88</tt>  <tt class="py-line"> </tt>
+<a name="Movie.IsMovieDone"></a><div id="Movie.IsMovieDone-def"><a name="L89"></a><tt class="py-lineno">89</tt> <a class="py-toggle" href="#" id="Movie.IsMovieDone-toggle" onclick="return toggle('Movie.IsMovieDone');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.qtmovie.Movie-class.html#IsMovieDone">IsMovieDone</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Movie.IsMovieDone-collapsed" style="display:none;" pad="++" indent="++++++++"></div><div id="Movie.IsMovieDone-expanded"><a name="L90"></a><tt class="py-lineno">90</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt id="link-60" class="py-name"><a title="VisionEgg.qtlowlevel" class="py-name" href="#" onclick="return doclink('link-60', 'qtlowlevel', 'link-0');">qtlowlevel</a></tt><tt class="py-op">.</tt><tt id="link-61" class="py-name" targets="Variable [...]
+VisionEgg.qtmovie.Movie.IsMovieDone" class="py-name" href="#" onclick="return doclink('link-61', 'IsMovieDone', 'link-61');">IsMovieDone</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">theMovie</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L91"></a><tt class="py-lineno">91</tt>  <tt class="py-line"> </tt>
+<a name="Movie.GoToBeginningOfMovie"></a><div id="Movie.GoToBeginningOfMovie-def"><a name="L92"></a><tt class="py-lineno">92</tt> <a class="py-toggle" href="#" id="Movie.GoToBeginningOfMovie-toggle" onclick="return toggle('Movie.GoToBeginningOfMovie');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.qtmovie.Movie-class.html#GoToBeginningOfMovie">GoToBeginningOfMovie</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py [...]
+</div><div id="Movie.GoToBeginningOfMovie-collapsed" style="display:none;" pad="++" indent="++++++++"></div><div id="Movie.GoToBeginningOfMovie-expanded"><a name="L93"></a><tt class="py-lineno">93</tt>  <tt class="py-line">        <tt id="link-62" class="py-name"><a title="VisionEgg.qtlowlevel" class="py-name" href="#" onclick="return doclink('link-62', 'qtlowlevel', 'link-0');">qtlowlevel</a></tt><tt class="py-op">.</tt><tt id="link-63" class="py-name" targets="Variable VisionEgg.qtlowl [...]
+VisionEgg.qtmovie.Movie.GoToBeginningOfMovie" class="py-name" href="#" onclick="return doclink('link-63', 'GoToBeginningOfMovie', 'link-63');">GoToBeginningOfMovie</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">theMovie</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L94"></a><tt class="py-lineno">94</tt>  <tt class="py-line"> </tt><script type="text/javascript">
+<!--
+expandto(location.href);
+// -->
+</script>
+</pre>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:47 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.qtmovie.Movie-class.html b/doc/reference/html/VisionEgg.qtmovie.Movie-class.html
new file mode 100644
index 0000000..253f4c3
--- /dev/null
+++ b/doc/reference/html/VisionEgg.qtmovie.Movie-class.html
@@ -0,0 +1,242 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.qtmovie.Movie</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.qtmovie-module.html">Module qtmovie</a> ::
+        Class Movie
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.qtmovie.Movie-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class Movie</h1><span class="codelink"><a href="VisionEgg.qtmovie-pysrc.html#Movie">source code</a></span><br /><br />
+<pre class="literalblock">
+An encapsulated QuickTime Movie
+
+</pre><br /><br />
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__init__"></a><span class="summary-sig-name">__init__</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">theMovie</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.qtmovie-pysrc.html#Movie.__init__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="GetMovieBox"></a><span class="summary-sig-name">GetMovieBox</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.qtmovie-pysrc.html#Movie.GetMovieBox">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="SetMovieBox"></a><span class="summary-sig-name">SetMovieBox</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">bounds</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.qtmovie-pysrc.html#Movie.SetMovieBox">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="StartMovie"></a><span class="summary-sig-name">StartMovie</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.qtmovie-pysrc.html#Movie.StartMovie">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="MoviesTask"></a><span class="summary-sig-name">MoviesTask</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">value</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.qtmovie-pysrc.html#Movie.MoviesTask">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="IsMovieDone"></a><span class="summary-sig-name">IsMovieDone</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.qtmovie-pysrc.html#Movie.IsMovieDone">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="GoToBeginningOfMovie"></a><span class="summary-sig-name">GoToBeginningOfMovie</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.qtmovie-pysrc.html#Movie.GoToBeginningOfMovie">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:47 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.qtmovie.Rect-class.html b/doc/reference/html/VisionEgg.qtmovie.Rect-class.html
new file mode 100644
index 0000000..63655d8
--- /dev/null
+++ b/doc/reference/html/VisionEgg.qtmovie.Rect-class.html
@@ -0,0 +1,142 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.qtmovie.Rect</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        <a href="VisionEgg.qtmovie-module.html">Module qtmovie</a> ::
+        Class Rect
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.qtmovie.Rect-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class Rect</h1><span class="codelink"><a href="VisionEgg.qtmovie-pysrc.html#Rect">source code</a></span><br /><br />
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__init__"></a><span class="summary-sig-name">__init__</span>(<span class="summary-sig-arg">self</span>,
+        <span class="summary-sig-arg">top</span>=<span class="summary-sig-default">0</span>,
+        <span class="summary-sig-arg">left</span>=<span class="summary-sig-default">0</span>,
+        <span class="summary-sig-arg">bottom</span>=<span class="summary-sig-default">0</span>,
+        <span class="summary-sig-arg">right</span>=<span class="summary-sig-default">0</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="VisionEgg.qtmovie-pysrc.html#Rect.__init__">source code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:47 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.win32_getrefresh-module.html b/doc/reference/html/VisionEgg.win32_getrefresh-module.html
new file mode 100644
index 0000000..63a1288
--- /dev/null
+++ b/doc/reference/html/VisionEgg.win32_getrefresh-module.html
@@ -0,0 +1,128 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.win32_getrefresh</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        Module win32_getrefresh
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.win32_getrefresh-module.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== MODULE DESCRIPTION ==================== -->
+<h1 class="epydoc">Module win32_getrefresh</h1><span class="codelink"><a href="VisionEgg.win32_getrefresh-pysrc.html">source code</a></span><br /><br />
+<!-- ==================== VARIABLES ==================== -->
+<a name="section-Variables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Variables</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="getrefresh"></a><span class="summary-name">getrefresh</span> = <code title="_win32_getrefresh.getrefresh">_win32_getrefresh.getrefresh</code>
+    </td>
+  </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.win32_getrefresh-pysrc.html b/doc/reference/html/VisionEgg.win32_getrefresh-pysrc.html
new file mode 100644
index 0000000..1456eeb
--- /dev/null
+++ b/doc/reference/html/VisionEgg.win32_getrefresh-pysrc.html
@@ -0,0 +1,169 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.win32_getrefresh</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        Module win32_getrefresh
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.win32_getrefresh-pysrc.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<h1 class="epydoc">Source Code for <a href="VisionEgg.win32_getrefresh-module.html">Module VisionEgg.win32_getrefresh</a></h1>
+<pre class="py-src">
+<a name="L1"></a><tt class="py-lineno"> 1</tt>  <tt class="py-line"><tt class="py-comment"># This file was created automatically by SWIG.</tt> </tt>
+<a name="L2"></a><tt class="py-lineno"> 2</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Don't modify this file, modify the SWIG interface instead.</tt> </tt>
+<a name="L3"></a><tt class="py-lineno"> 3</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># This file is compatible with both classic and new-style classes.</tt> </tt>
+<a name="L4"></a><tt class="py-lineno"> 4</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L5"></a><tt class="py-lineno"> 5</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">_win32_getrefresh</tt> </tt>
+<a name="L6"></a><tt class="py-lineno"> 6</tt>  <tt class="py-line"> </tt>
+<a name="_swig_setattr_nondynamic"></a><div id="_swig_setattr_nondynamic-def"><a name="L7"></a><tt class="py-lineno"> 7</tt> <a class="py-toggle" href="#" id="_swig_setattr_nondynamic-toggle" onclick="return toggle('_swig_setattr_nondynamic');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.win32_getrefresh-module.html#_swig_setattr_nondynamic">_swig_setattr_nondynamic</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py- [...]
+</div><div id="_swig_setattr_nondynamic-collapsed" style="display:none;" pad="++" indent="++++"></div><div id="_swig_setattr_nondynamic-expanded"><a name="L8"></a><tt class="py-lineno"> 8</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">name</tt> <tt class="py-op">==</tt> <tt class="py-string">"this"</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L9"></a><tt class="py-lineno"> 9</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">,</tt> <tt class="py-name">class_type</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L10"></a><tt class="py-lineno">10</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__dict__</tt><tt class="py-op">[</tt><tt class="py-name">name</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">value</tt><tt class="py-op">.</tt><tt class="py-name">this</tt> </tt>
+<a name="L11"></a><tt class="py-lineno">11</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">,</tt><tt class="py-string">"thisown"</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__dict__</tt><tt class="py-op">[</tt><tt class="py-string">"thisown"</tt><tt class="py-op">]</tt> <tt class="py- [...]
+<a name="L12"></a><tt class="py-lineno">12</tt>  <tt class="py-line">            <tt class="py-keyword">del</tt> <tt class="py-name">value</tt><tt class="py-op">.</tt><tt class="py-name">thisown</tt> </tt>
+<a name="L13"></a><tt class="py-lineno">13</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> </tt>
+<a name="L14"></a><tt class="py-lineno">14</tt>  <tt class="py-line">    <tt class="py-name">method</tt> <tt class="py-op">=</tt> <tt class="py-name">class_type</tt><tt class="py-op">.</tt><tt class="py-name">__swig_setmethods__</tt><tt class="py-op">.</tt><tt id="link-0" class="py-name" targets="Method VisionEgg.PyroClient.PyroClient.get()=VisionEgg.PyroClient.PyroClient-class.html#get"><a title="VisionEgg.PyroClient.PyroClient.get" class="py-name" href="#" onclick="return doclink('link [...]
+<a name="L15"></a><tt class="py-lineno">15</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">method</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> <tt class="py-name">method</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt><tt class="py-name">value</tt><tt class="py-op">)</tt> </tt>
+<a name="L16"></a><tt class="py-lineno">16</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-keyword">not</tt> <tt class="py-name">static</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt><tt class="py-name">name</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-op">(</tt><tt class="py-name">name</t [...]
+<a name="L17"></a><tt class="py-lineno">17</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__dict__</tt><tt class="py-op">[</tt><tt class="py-name">name</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">value</tt> </tt>
+<a name="L18"></a><tt class="py-lineno">18</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L19"></a><tt class="py-lineno">19</tt>  <tt class="py-line">        <tt class="py-keyword">raise</tt> <tt class="py-name">AttributeError</tt><tt class="py-op">(</tt><tt class="py-string">"You cannot add attributes to %s"</tt> <tt class="py-op">%</tt> <tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L20"></a><tt class="py-lineno">20</tt>  <tt class="py-line"> </tt>
+<a name="_swig_setattr"></a><div id="_swig_setattr-def"><a name="L21"></a><tt class="py-lineno">21</tt> <a class="py-toggle" href="#" id="_swig_setattr-toggle" onclick="return toggle('_swig_setattr');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.win32_getrefresh-module.html#_swig_setattr">_swig_setattr</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt><tt class="py-param">class_type</tt><tt class="py-op">, [...]
+</div><div id="_swig_setattr-collapsed" style="display:none;" pad="++" indent="++++"></div><div id="_swig_setattr-expanded"><a name="L22"></a><tt class="py-lineno">22</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">_swig_setattr_nondynamic</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt><tt class="py-name">class_type</tt><tt class="py-op">,</tt><tt class="py-name">name</tt><tt class="py-op">,</tt><tt class="py-name">va [...]
+</div><a name="L23"></a><tt class="py-lineno">23</tt>  <tt class="py-line"> </tt>
+<a name="_swig_getattr"></a><div id="_swig_getattr-def"><a name="L24"></a><tt class="py-lineno">24</tt> <a class="py-toggle" href="#" id="_swig_getattr-toggle" onclick="return toggle('_swig_getattr');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.win32_getrefresh-module.html#_swig_getattr">_swig_getattr</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt><tt class="py-param">class_type</tt><tt class="py-op">, [...]
+</div><div id="_swig_getattr-collapsed" style="display:none;" pad="++" indent="++++"></div><div id="_swig_getattr-expanded"><a name="L25"></a><tt class="py-lineno">25</tt>  <tt class="py-line">    <tt class="py-name">method</tt> <tt class="py-op">=</tt> <tt class="py-name">class_type</tt><tt class="py-op">.</tt><tt class="py-name">__swig_getmethods__</tt><tt class="py-op">.</tt><tt id="link-1" class="py-name"><a title="VisionEgg.PyroClient.PyroClient.get" class="py-name" href="#" onclick [...]
+<a name="L26"></a><tt class="py-lineno">26</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">method</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> <tt class="py-name">method</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
+<a name="L27"></a><tt class="py-lineno">27</tt>  <tt class="py-line">    <tt class="py-keyword">raise</tt> <tt class="py-name">AttributeError</tt><tt class="py-op">,</tt><tt class="py-name">name</tt> </tt>
+</div><a name="L28"></a><tt class="py-lineno">28</tt>  <tt class="py-line"> </tt>
+<a name="L29"></a><tt class="py-lineno">29</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">types</tt> </tt>
+<a name="L30"></a><tt class="py-lineno">30</tt>  <tt class="py-line"><tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L31"></a><tt class="py-lineno">31</tt>  <tt class="py-line">    <tt class="py-name">_object</tt> <tt class="py-op">=</tt> <tt class="py-name">types</tt><tt class="py-op">.</tt><tt class="py-name">ObjectType</tt> </tt>
+<a name="L32"></a><tt class="py-lineno">32</tt>  <tt class="py-line">    <tt id="link-2" class="py-name" targets="Variable VisionEgg.darwin_getrefresh._newclass=VisionEgg.darwin_getrefresh-module.html#_newclass,Variable VisionEgg.gl_qt._newclass=VisionEgg.gl_qt-module.html#_newclass,Variable VisionEgg.posix_maxpriority._newclass=VisionEgg.posix_maxpriority-module.html#_newclass,Variable VisionEgg.win32_getrefresh._newclass=VisionEgg.win32_getrefresh-module.html#_newclass,Variable VisionE [...]
+VisionEgg.gl_qt._newclass
+VisionEgg.posix_maxpriority._newclass
+VisionEgg.win32_getrefresh._newclass
+VisionEgg.win32_maxpriority._newclass" class="py-name" href="#" onclick="return doclink('link-2', '_newclass', 'link-2');">_newclass</a></tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L33"></a><tt class="py-lineno">33</tt>  <tt class="py-line"><tt class="py-keyword">except</tt> <tt class="py-name">AttributeError</tt><tt class="py-op">:</tt> </tt>
+<a name="_object"></a><div id="_object-def"><a name="L34"></a><tt class="py-lineno">34</tt> <a class="py-toggle" href="#" id="_object-toggle" onclick="return toggle('_object');">-</a><tt class="py-line">    <tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.win32_getrefresh._object-class.html">_object</a> <tt class="py-op">:</tt> <tt class="py-keyword">pass</tt> </tt>
+</div><a name="L35"></a><tt class="py-lineno">35</tt>  <tt class="py-line">    <tt id="link-3" class="py-name"><a title="VisionEgg.darwin_getrefresh._newclass
+VisionEgg.gl_qt._newclass
+VisionEgg.posix_maxpriority._newclass
+VisionEgg.win32_getrefresh._newclass
+VisionEgg.win32_maxpriority._newclass" class="py-name" href="#" onclick="return doclink('link-3', '_newclass', 'link-2');">_newclass</a></tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L36"></a><tt class="py-lineno">36</tt>  <tt class="py-line"><tt class="py-keyword">del</tt> <tt class="py-name">types</tt> </tt>
+<a name="L37"></a><tt class="py-lineno">37</tt>  <tt class="py-line"> </tt>
+<a name="L38"></a><tt class="py-lineno">38</tt>  <tt class="py-line"> </tt>
+<a name="L39"></a><tt class="py-lineno">39</tt>  <tt class="py-line"> </tt>
+<a name="L40"></a><tt class="py-lineno">40</tt>  <tt class="py-line"><tt id="link-4" class="py-name" targets="Variable VisionEgg.darwin_getrefresh.getrefresh=VisionEgg.darwin_getrefresh-module.html#getrefresh,Variable VisionEgg.win32_getrefresh.getrefresh=VisionEgg.win32_getrefresh-module.html#getrefresh"><a title="VisionEgg.darwin_getrefresh.getrefresh
+VisionEgg.win32_getrefresh.getrefresh" class="py-name" href="#" onclick="return doclink('link-4', 'getrefresh', 'link-4');">getrefresh</a></tt> <tt class="py-op">=</tt> <tt class="py-name">_win32_getrefresh</tt><tt class="py-op">.</tt><tt id="link-5" class="py-name"><a title="VisionEgg.darwin_getrefresh.getrefresh
+VisionEgg.win32_getrefresh.getrefresh" class="py-name" href="#" onclick="return doclink('link-5', 'getrefresh', 'link-4');">getrefresh</a></tt> </tt>
+<a name="L41"></a><tt class="py-lineno">41</tt>  <tt class="py-line"> </tt><script type="text/javascript">
+<!--
+expandto(location.href);
+// -->
+</script>
+</pre>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:49 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.win32_maxpriority-module.html b/doc/reference/html/VisionEgg.win32_maxpriority-module.html
new file mode 100644
index 0000000..2c7812a
--- /dev/null
+++ b/doc/reference/html/VisionEgg.win32_maxpriority-module.html
@@ -0,0 +1,384 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.win32_maxpriority</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        Module win32_maxpriority
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.win32_maxpriority-module.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== MODULE DESCRIPTION ==================== -->
+<h1 class="epydoc">Module win32_maxpriority</h1><span class="codelink"><a href="VisionEgg.win32_maxpriority-pysrc.html">source code</a></span><br /><br />
+<!-- ==================== VARIABLES ==================== -->
+<a name="section-Variables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Variables</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="IDLE_PRIORITY_CLASS"></a><span class="summary-name">IDLE_PRIORITY_CLASS</span> = <code title="_win32_maxpriority.IDLE_PRIORITY_CLASS">_win32_maxpriority.IDLE_PRIORITY_CLASS</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="NORMAL_PRIORITY_CLASS"></a><span class="summary-name">NORMAL_PRIORITY_CLASS</span> = <code title="_win32_maxpriority.NORMAL_PRIORITY_CLASS">_win32_maxpriority.NORMAL_PRIORITY_CLASS</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="HIGH_PRIORITY_CLASS"></a><span class="summary-name">HIGH_PRIORITY_CLASS</span> = <code title="_win32_maxpriority.HIGH_PRIORITY_CLASS">_win32_maxpriority.HIGH_PRIORITY_CLASS</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.win32_maxpriority-module.html#REALTIME_PRIORITY_CLASS" class="summary-name">REALTIME_PRIORITY_CLASS</a> = <code title="_win32_maxpriority.REALTIME_PRIORITY_CLASS">_win32_maxpriority.REALTIME_PRIORITY<code class="variable-ellipsis">...</code></code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a name="THREAD_PRIORITY_IDLE"></a><span class="summary-name">THREAD_PRIORITY_IDLE</span> = <code title="_win32_maxpriority.THREAD_PRIORITY_IDLE">_win32_maxpriority.THREAD_PRIORITY_IDLE</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.win32_maxpriority-module.html#THREAD_PRIORITY_LOWEST" class="summary-name">THREAD_PRIORITY_LOWEST</a> = <code title="_win32_maxpriority.THREAD_PRIORITY_LOWEST">_win32_maxpriority.THREAD_PRIORITY_LO<code class="variable-ellipsis">...</code></code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.win32_maxpriority-module.html#THREAD_PRIORITY_BELOW_NORMAL" class="summary-name">THREAD_PRIORITY_BELOW_NORMAL</a> = <code title="_win32_maxpriority.THREAD_PRIORITY_BELOW_NORMAL">_win32_maxpriority.THREAD_PRIOR<code class="variable-ellipsis">...</code></code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.win32_maxpriority-module.html#THREAD_PRIORITY_NORMAL" class="summary-name">THREAD_PRIORITY_NORMAL</a> = <code title="_win32_maxpriority.THREAD_PRIORITY_NORMAL">_win32_maxpriority.THREAD_PRIORITY_NO<code class="variable-ellipsis">...</code></code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.win32_maxpriority-module.html#THREAD_PRIORITY_ABOVE_NORMAL" class="summary-name">THREAD_PRIORITY_ABOVE_NORMAL</a> = <code title="_win32_maxpriority.THREAD_PRIORITY_ABOVE_NORMAL">_win32_maxpriority.THREAD_PRIOR<code class="variable-ellipsis">...</code></code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.win32_maxpriority-module.html#THREAD_PRIORITY_HIGHEST" class="summary-name">THREAD_PRIORITY_HIGHEST</a> = <code title="_win32_maxpriority.THREAD_PRIORITY_HIGHEST">_win32_maxpriority.THREAD_PRIORITY_H<code class="variable-ellipsis">...</code></code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.win32_maxpriority-module.html#THREAD_PRIORITY_TIME_CRITICAL" class="summary-name">THREAD_PRIORITY_TIME_CRITICAL</a> = <code title="_win32_maxpriority.THREAD_PRIORITY_TIME_CRITICAL">_win32_maxpriority.THREAD_PRIO<code class="variable-ellipsis">...</code></code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.win32_maxpriority-module.html#set_self_process_priority_class" class="summary-name">set_self_process_priority_class</a> = <code title="_win32_maxpriority.set_self_process_priority_class">_win32_maxpriority.set_self_<code class="variable-ellipsis">...</code></code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+        <a href="VisionEgg.win32_maxpriority-module.html#set_self_thread_priority" class="summary-name">set_self_thread_priority</a> = <code title="_win32_maxpriority.set_self_thread_priority">_win32_maxpriority.set_self_thread_<code class="variable-ellipsis">...</code></code>
+    </td>
+  </tr>
+</table>
+<!-- ==================== VARIABLES DETAILS ==================== -->
+<a name="section-VariablesDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Variables Details</span></td>
+</tr>
+</table>
+<a name="REALTIME_PRIORITY_CLASS"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">REALTIME_PRIORITY_CLASS</h3>
+  
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+_win32_maxpriority.REALTIME_PRIORITY_CLASS
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="THREAD_PRIORITY_LOWEST"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">THREAD_PRIORITY_LOWEST</h3>
+  
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+_win32_maxpriority.THREAD_PRIORITY_LOWEST
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="THREAD_PRIORITY_BELOW_NORMAL"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">THREAD_PRIORITY_BELOW_NORMAL</h3>
+  
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+_win32_maxpriority.THREAD_PRIORITY_BELOW_NORMAL
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="THREAD_PRIORITY_NORMAL"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">THREAD_PRIORITY_NORMAL</h3>
+  
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+_win32_maxpriority.THREAD_PRIORITY_NORMAL
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="THREAD_PRIORITY_ABOVE_NORMAL"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">THREAD_PRIORITY_ABOVE_NORMAL</h3>
+  
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+_win32_maxpriority.THREAD_PRIORITY_ABOVE_NORMAL
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="THREAD_PRIORITY_HIGHEST"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">THREAD_PRIORITY_HIGHEST</h3>
+  
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+_win32_maxpriority.THREAD_PRIORITY_HIGHEST
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="THREAD_PRIORITY_TIME_CRITICAL"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">THREAD_PRIORITY_TIME_CRITICAL</h3>
+  
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+_win32_maxpriority.THREAD_PRIORITY_TIME_CRITICAL
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="set_self_process_priority_class"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">set_self_process_priority_class</h3>
+  
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+_win32_maxpriority.set_self_process_priority_class
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="set_self_thread_priority"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <h3 class="epydoc">set_self_thread_priority</h3>
+  
+  <dl class="fields">
+  </dl>
+  <dl class="fields">
+    <dt>Value:</dt>
+      <dd><table><tr><td><pre class="variable">
+_win32_maxpriority.set_self_thread_priority
+</pre></td></tr></table>
+</dd>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/VisionEgg.win32_maxpriority-pysrc.html b/doc/reference/html/VisionEgg.win32_maxpriority-pysrc.html
new file mode 100644
index 0000000..2c4022f
--- /dev/null
+++ b/doc/reference/html/VisionEgg.win32_maxpriority-pysrc.html
@@ -0,0 +1,180 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg.win32_maxpriority</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="VisionEgg-module.html">Package VisionEgg</a> ::
+        Module win32_maxpriority
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="VisionEgg.win32_maxpriority-pysrc.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<h1 class="epydoc">Source Code for <a href="VisionEgg.win32_maxpriority-module.html">Module VisionEgg.win32_maxpriority</a></h1>
+<pre class="py-src">
+<a name="L1"></a><tt class="py-lineno"> 1</tt>  <tt class="py-line"><tt class="py-comment"># This file was created automatically by SWIG.</tt> </tt>
+<a name="L2"></a><tt class="py-lineno"> 2</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># Don't modify this file, modify the SWIG interface instead.</tt> </tt>
+<a name="L3"></a><tt class="py-lineno"> 3</tt>  <tt class="py-line"><tt class="py-comment"></tt><tt class="py-comment"># This file is compatible with both classic and new-style classes.</tt> </tt>
+<a name="L4"></a><tt class="py-lineno"> 4</tt>  <tt class="py-line"><tt class="py-comment"></tt> </tt>
+<a name="L5"></a><tt class="py-lineno"> 5</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">_win32_maxpriority</tt> </tt>
+<a name="L6"></a><tt class="py-lineno"> 6</tt>  <tt class="py-line"> </tt>
+<a name="_swig_setattr_nondynamic"></a><div id="_swig_setattr_nondynamic-def"><a name="L7"></a><tt class="py-lineno"> 7</tt> <a class="py-toggle" href="#" id="_swig_setattr_nondynamic-toggle" onclick="return toggle('_swig_setattr_nondynamic');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.win32_maxpriority-module.html#_swig_setattr_nondynamic">_swig_setattr_nondynamic</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py [...]
+</div><div id="_swig_setattr_nondynamic-collapsed" style="display:none;" pad="++" indent="++++"></div><div id="_swig_setattr_nondynamic-expanded"><a name="L8"></a><tt class="py-lineno"> 8</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">name</tt> <tt class="py-op">==</tt> <tt class="py-string">"this"</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L9"></a><tt class="py-lineno"> 9</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">,</tt> <tt class="py-name">class_type</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L10"></a><tt class="py-lineno">10</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__dict__</tt><tt class="py-op">[</tt><tt class="py-name">name</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">value</tt><tt class="py-op">.</tt><tt class="py-name">this</tt> </tt>
+<a name="L11"></a><tt class="py-lineno">11</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">,</tt><tt class="py-string">"thisown"</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__dict__</tt><tt class="py-op">[</tt><tt class="py-string">"thisown"</tt><tt class="py-op">]</tt> <tt class="py- [...]
+<a name="L12"></a><tt class="py-lineno">12</tt>  <tt class="py-line">            <tt class="py-keyword">del</tt> <tt class="py-name">value</tt><tt class="py-op">.</tt><tt class="py-name">thisown</tt> </tt>
+<a name="L13"></a><tt class="py-lineno">13</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> </tt>
+<a name="L14"></a><tt class="py-lineno">14</tt>  <tt class="py-line">    <tt class="py-name">method</tt> <tt class="py-op">=</tt> <tt class="py-name">class_type</tt><tt class="py-op">.</tt><tt class="py-name">__swig_setmethods__</tt><tt class="py-op">.</tt><tt id="link-0" class="py-name" targets="Method VisionEgg.PyroClient.PyroClient.get()=VisionEgg.PyroClient.PyroClient-class.html#get"><a title="VisionEgg.PyroClient.PyroClient.get" class="py-name" href="#" onclick="return doclink('link [...]
+<a name="L15"></a><tt class="py-lineno">15</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">method</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> <tt class="py-name">method</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt><tt class="py-name">value</tt><tt class="py-op">)</tt> </tt>
+<a name="L16"></a><tt class="py-lineno">16</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-keyword">not</tt> <tt class="py-name">static</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt><tt class="py-name">name</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-op">(</tt><tt class="py-name">name</t [...]
+<a name="L17"></a><tt class="py-lineno">17</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__dict__</tt><tt class="py-op">[</tt><tt class="py-name">name</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">value</tt> </tt>
+<a name="L18"></a><tt class="py-lineno">18</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L19"></a><tt class="py-lineno">19</tt>  <tt class="py-line">        <tt class="py-keyword">raise</tt> <tt class="py-name">AttributeError</tt><tt class="py-op">(</tt><tt class="py-string">"You cannot add attributes to %s"</tt> <tt class="py-op">%</tt> <tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L20"></a><tt class="py-lineno">20</tt>  <tt class="py-line"> </tt>
+<a name="_swig_setattr"></a><div id="_swig_setattr-def"><a name="L21"></a><tt class="py-lineno">21</tt> <a class="py-toggle" href="#" id="_swig_setattr-toggle" onclick="return toggle('_swig_setattr');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.win32_maxpriority-module.html#_swig_setattr">_swig_setattr</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt><tt class="py-param">class_type</tt><tt class="py-op"> [...]
+</div><div id="_swig_setattr-collapsed" style="display:none;" pad="++" indent="++++"></div><div id="_swig_setattr-expanded"><a name="L22"></a><tt class="py-lineno">22</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">_swig_setattr_nondynamic</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt><tt class="py-name">class_type</tt><tt class="py-op">,</tt><tt class="py-name">name</tt><tt class="py-op">,</tt><tt class="py-name">va [...]
+</div><a name="L23"></a><tt class="py-lineno">23</tt>  <tt class="py-line"> </tt>
+<a name="_swig_getattr"></a><div id="_swig_getattr-def"><a name="L24"></a><tt class="py-lineno">24</tt> <a class="py-toggle" href="#" id="_swig_getattr-toggle" onclick="return toggle('_swig_getattr');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="VisionEgg.win32_maxpriority-module.html#_swig_getattr">_swig_getattr</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt><tt class="py-param">class_type</tt><tt class="py-op"> [...]
+</div><div id="_swig_getattr-collapsed" style="display:none;" pad="++" indent="++++"></div><div id="_swig_getattr-expanded"><a name="L25"></a><tt class="py-lineno">25</tt>  <tt class="py-line">    <tt class="py-name">method</tt> <tt class="py-op">=</tt> <tt class="py-name">class_type</tt><tt class="py-op">.</tt><tt class="py-name">__swig_getmethods__</tt><tt class="py-op">.</tt><tt id="link-1" class="py-name"><a title="VisionEgg.PyroClient.PyroClient.get" class="py-name" href="#" onclick [...]
+<a name="L26"></a><tt class="py-lineno">26</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">method</tt><tt class="py-op">:</tt> <tt class="py-keyword">return</tt> <tt class="py-name">method</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
+<a name="L27"></a><tt class="py-lineno">27</tt>  <tt class="py-line">    <tt class="py-keyword">raise</tt> <tt class="py-name">AttributeError</tt><tt class="py-op">,</tt><tt class="py-name">name</tt> </tt>
+</div><a name="L28"></a><tt class="py-lineno">28</tt>  <tt class="py-line"> </tt>
+<a name="L29"></a><tt class="py-lineno">29</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">types</tt> </tt>
+<a name="L30"></a><tt class="py-lineno">30</tt>  <tt class="py-line"><tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L31"></a><tt class="py-lineno">31</tt>  <tt class="py-line">    <tt class="py-name">_object</tt> <tt class="py-op">=</tt> <tt class="py-name">types</tt><tt class="py-op">.</tt><tt class="py-name">ObjectType</tt> </tt>
+<a name="L32"></a><tt class="py-lineno">32</tt>  <tt class="py-line">    <tt id="link-2" class="py-name" targets="Variable VisionEgg.darwin_getrefresh._newclass=VisionEgg.darwin_getrefresh-module.html#_newclass,Variable VisionEgg.gl_qt._newclass=VisionEgg.gl_qt-module.html#_newclass,Variable VisionEgg.posix_maxpriority._newclass=VisionEgg.posix_maxpriority-module.html#_newclass,Variable VisionEgg.win32_getrefresh._newclass=VisionEgg.win32_getrefresh-module.html#_newclass,Variable VisionE [...]
+VisionEgg.gl_qt._newclass
+VisionEgg.posix_maxpriority._newclass
+VisionEgg.win32_getrefresh._newclass
+VisionEgg.win32_maxpriority._newclass" class="py-name" href="#" onclick="return doclink('link-2', '_newclass', 'link-2');">_newclass</a></tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L33"></a><tt class="py-lineno">33</tt>  <tt class="py-line"><tt class="py-keyword">except</tt> <tt class="py-name">AttributeError</tt><tt class="py-op">:</tt> </tt>
+<a name="_object"></a><div id="_object-def"><a name="L34"></a><tt class="py-lineno">34</tt> <a class="py-toggle" href="#" id="_object-toggle" onclick="return toggle('_object');">-</a><tt class="py-line">    <tt class="py-keyword">class</tt> <a class="py-def-name" href="VisionEgg.win32_maxpriority._object-class.html">_object</a> <tt class="py-op">:</tt> <tt class="py-keyword">pass</tt> </tt>
+</div><a name="L35"></a><tt class="py-lineno">35</tt>  <tt class="py-line">    <tt id="link-3" class="py-name"><a title="VisionEgg.darwin_getrefresh._newclass
+VisionEgg.gl_qt._newclass
+VisionEgg.posix_maxpriority._newclass
+VisionEgg.win32_getrefresh._newclass
+VisionEgg.win32_maxpriority._newclass" class="py-name" href="#" onclick="return doclink('link-3', '_newclass', 'link-2');">_newclass</a></tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L36"></a><tt class="py-lineno">36</tt>  <tt class="py-line"><tt class="py-keyword">del</tt> <tt class="py-name">types</tt> </tt>
+<a name="L37"></a><tt class="py-lineno">37</tt>  <tt class="py-line"> </tt>
+<a name="L38"></a><tt class="py-lineno">38</tt>  <tt class="py-line"> </tt>
+<a name="L39"></a><tt class="py-lineno">39</tt>  <tt class="py-line"><tt id="link-4" class="py-name" targets="Variable VisionEgg.win32_maxpriority.IDLE_PRIORITY_CLASS=VisionEgg.win32_maxpriority-module.html#IDLE_PRIORITY_CLASS"><a title="VisionEgg.win32_maxpriority.IDLE_PRIORITY_CLASS" class="py-name" href="#" onclick="return doclink('link-4', 'IDLE_PRIORITY_CLASS', 'link-4');">IDLE_PRIORITY_CLASS</a></tt> <tt class="py-op">=</tt> <tt class="py-name">_win32_maxpriority</tt><tt class="py- [...]
+<a name="L40"></a><tt class="py-lineno">40</tt>  <tt class="py-line"><tt id="link-6" class="py-name" targets="Variable VisionEgg.win32_maxpriority.NORMAL_PRIORITY_CLASS=VisionEgg.win32_maxpriority-module.html#NORMAL_PRIORITY_CLASS"><a title="VisionEgg.win32_maxpriority.NORMAL_PRIORITY_CLASS" class="py-name" href="#" onclick="return doclink('link-6', 'NORMAL_PRIORITY_CLASS', 'link-6');">NORMAL_PRIORITY_CLASS</a></tt> <tt class="py-op">=</tt> <tt class="py-name">_win32_maxpriority</tt><tt  [...]
+<a name="L41"></a><tt class="py-lineno">41</tt>  <tt class="py-line"><tt id="link-8" class="py-name" targets="Variable VisionEgg.win32_maxpriority.HIGH_PRIORITY_CLASS=VisionEgg.win32_maxpriority-module.html#HIGH_PRIORITY_CLASS"><a title="VisionEgg.win32_maxpriority.HIGH_PRIORITY_CLASS" class="py-name" href="#" onclick="return doclink('link-8', 'HIGH_PRIORITY_CLASS', 'link-8');">HIGH_PRIORITY_CLASS</a></tt> <tt class="py-op">=</tt> <tt class="py-name">_win32_maxpriority</tt><tt class="py- [...]
+<a name="L42"></a><tt class="py-lineno">42</tt>  <tt class="py-line"><tt id="link-10" class="py-name" targets="Variable VisionEgg.win32_maxpriority.REALTIME_PRIORITY_CLASS=VisionEgg.win32_maxpriority-module.html#REALTIME_PRIORITY_CLASS"><a title="VisionEgg.win32_maxpriority.REALTIME_PRIORITY_CLASS" class="py-name" href="#" onclick="return doclink('link-10', 'REALTIME_PRIORITY_CLASS', 'link-10');">REALTIME_PRIORITY_CLASS</a></tt> <tt class="py-op">=</tt> <tt class="py-name">_win32_maxprio [...]
+<a name="L43"></a><tt class="py-lineno">43</tt>  <tt class="py-line"><tt id="link-12" class="py-name" targets="Variable VisionEgg.win32_maxpriority.THREAD_PRIORITY_IDLE=VisionEgg.win32_maxpriority-module.html#THREAD_PRIORITY_IDLE"><a title="VisionEgg.win32_maxpriority.THREAD_PRIORITY_IDLE" class="py-name" href="#" onclick="return doclink('link-12', 'THREAD_PRIORITY_IDLE', 'link-12');">THREAD_PRIORITY_IDLE</a></tt> <tt class="py-op">=</tt> <tt class="py-name">_win32_maxpriority</tt><tt cl [...]
+<a name="L44"></a><tt class="py-lineno">44</tt>  <tt class="py-line"><tt id="link-14" class="py-name" targets="Variable VisionEgg.win32_maxpriority.THREAD_PRIORITY_LOWEST=VisionEgg.win32_maxpriority-module.html#THREAD_PRIORITY_LOWEST"><a title="VisionEgg.win32_maxpriority.THREAD_PRIORITY_LOWEST" class="py-name" href="#" onclick="return doclink('link-14', 'THREAD_PRIORITY_LOWEST', 'link-14');">THREAD_PRIORITY_LOWEST</a></tt> <tt class="py-op">=</tt> <tt class="py-name">_win32_maxpriority< [...]
+<a name="L45"></a><tt class="py-lineno">45</tt>  <tt class="py-line"><tt id="link-16" class="py-name" targets="Variable VisionEgg.win32_maxpriority.THREAD_PRIORITY_BELOW_NORMAL=VisionEgg.win32_maxpriority-module.html#THREAD_PRIORITY_BELOW_NORMAL"><a title="VisionEgg.win32_maxpriority.THREAD_PRIORITY_BELOW_NORMAL" class="py-name" href="#" onclick="return doclink('link-16', 'THREAD_PRIORITY_BELOW_NORMAL', 'link-16');">THREAD_PRIORITY_BELOW_NORMAL</a></tt> <tt class="py-op">=</tt> <tt class [...]
+<a name="L46"></a><tt class="py-lineno">46</tt>  <tt class="py-line"><tt id="link-18" class="py-name" targets="Variable VisionEgg.win32_maxpriority.THREAD_PRIORITY_NORMAL=VisionEgg.win32_maxpriority-module.html#THREAD_PRIORITY_NORMAL"><a title="VisionEgg.win32_maxpriority.THREAD_PRIORITY_NORMAL" class="py-name" href="#" onclick="return doclink('link-18', 'THREAD_PRIORITY_NORMAL', 'link-18');">THREAD_PRIORITY_NORMAL</a></tt> <tt class="py-op">=</tt> <tt class="py-name">_win32_maxpriority< [...]
+<a name="L47"></a><tt class="py-lineno">47</tt>  <tt class="py-line"><tt id="link-20" class="py-name" targets="Variable VisionEgg.win32_maxpriority.THREAD_PRIORITY_ABOVE_NORMAL=VisionEgg.win32_maxpriority-module.html#THREAD_PRIORITY_ABOVE_NORMAL"><a title="VisionEgg.win32_maxpriority.THREAD_PRIORITY_ABOVE_NORMAL" class="py-name" href="#" onclick="return doclink('link-20', 'THREAD_PRIORITY_ABOVE_NORMAL', 'link-20');">THREAD_PRIORITY_ABOVE_NORMAL</a></tt> <tt class="py-op">=</tt> <tt class [...]
+<a name="L48"></a><tt class="py-lineno">48</tt>  <tt class="py-line"><tt id="link-22" class="py-name" targets="Variable VisionEgg.win32_maxpriority.THREAD_PRIORITY_HIGHEST=VisionEgg.win32_maxpriority-module.html#THREAD_PRIORITY_HIGHEST"><a title="VisionEgg.win32_maxpriority.THREAD_PRIORITY_HIGHEST" class="py-name" href="#" onclick="return doclink('link-22', 'THREAD_PRIORITY_HIGHEST', 'link-22');">THREAD_PRIORITY_HIGHEST</a></tt> <tt class="py-op">=</tt> <tt class="py-name">_win32_maxprio [...]
+<a name="L49"></a><tt class="py-lineno">49</tt>  <tt class="py-line"><tt id="link-24" class="py-name" targets="Variable VisionEgg.win32_maxpriority.THREAD_PRIORITY_TIME_CRITICAL=VisionEgg.win32_maxpriority-module.html#THREAD_PRIORITY_TIME_CRITICAL"><a title="VisionEgg.win32_maxpriority.THREAD_PRIORITY_TIME_CRITICAL" class="py-name" href="#" onclick="return doclink('link-24', 'THREAD_PRIORITY_TIME_CRITICAL', 'link-24');">THREAD_PRIORITY_TIME_CRITICAL</a></tt> <tt class="py-op">=</tt> <tt  [...]
+<a name="L50"></a><tt class="py-lineno">50</tt>  <tt class="py-line"> </tt>
+<a name="L51"></a><tt class="py-lineno">51</tt>  <tt class="py-line"><tt id="link-26" class="py-name" targets="Variable VisionEgg.win32_maxpriority.set_self_process_priority_class=VisionEgg.win32_maxpriority-module.html#set_self_process_priority_class"><a title="VisionEgg.win32_maxpriority.set_self_process_priority_class" class="py-name" href="#" onclick="return doclink('link-26', 'set_self_process_priority_class', 'link-26');">set_self_process_priority_class</a></tt> <tt class="py-op">= [...]
+<a name="L52"></a><tt class="py-lineno">52</tt>  <tt class="py-line"> </tt>
+<a name="L53"></a><tt class="py-lineno">53</tt>  <tt class="py-line"><tt id="link-28" class="py-name" targets="Variable VisionEgg.win32_maxpriority.set_self_thread_priority=VisionEgg.win32_maxpriority-module.html#set_self_thread_priority"><a title="VisionEgg.win32_maxpriority.set_self_thread_priority" class="py-name" href="#" onclick="return doclink('link-28', 'set_self_thread_priority', 'link-28');">set_self_thread_priority</a></tt> <tt class="py-op">=</tt> <tt class="py-name">_win32_ma [...]
+<a name="L54"></a><tt class="py-lineno">54</tt>  <tt class="py-line"> </tt><script type="text/javascript">
+<!--
+expandto(location.href);
+// -->
+</script>
+</pre>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:48 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/api-objects.txt b/doc/reference/html/api-objects.txt
new file mode 100644
index 0000000..30e8687
--- /dev/null
+++ b/doc/reference/html/api-objects.txt
@@ -0,0 +1,2457 @@
+VisionEgg	VisionEgg-module.html
+VisionEgg._get_lowerleft	VisionEgg-module.html#_get_lowerleft
+VisionEgg.stop_watching_exceptions	VisionEgg-module.html#stop_watching_exceptions
+VisionEgg.set_time_func_to_frame_locked	VisionEgg-module.html#set_time_func_to_frame_locked
+VisionEgg._default_logging_started	VisionEgg-module.html#_default_logging_started
+VisionEgg.get_type	VisionEgg-module.html#get_type
+VisionEgg.set_time_func_to_true_time	VisionEgg-module.html#set_time_func_to_true_time
+VisionEgg.log_formatter	VisionEgg-module.html#log_formatter
+VisionEgg.true_time_func	VisionEgg-module.html#true_time_func
+VisionEgg.logger	VisionEgg-module.html#logger
+VisionEgg._get_center	VisionEgg-module.html#_get_center
+VisionEgg.assert_type	VisionEgg-module.html#assert_type
+VisionEgg.recursive_base_class_finder	VisionEgg-module.html#recursive_base_class_finder
+VisionEgg.start_default_logging	VisionEgg-module.html#start_default_logging
+VisionEgg.timing_func	VisionEgg-module.html#timing_func
+VisionEgg.config	VisionEgg-module.html#config
+VisionEgg.watch_exceptions	VisionEgg-module.html#watch_exceptions
+VisionEgg.time_func_locked_to_frames	VisionEgg-module.html#time_func_locked_to_frames
+VisionEgg.release_name	VisionEgg-module.html#release_name
+VisionEgg.time_func	VisionEgg-module.html#time_func
+VisionEgg.Configuration	VisionEgg.Configuration-module.html
+VisionEgg.Configuration.extra_darwin_defaults	VisionEgg.Configuration-module.html#extra_darwin_defaults
+VisionEgg.Configuration.save_settings	VisionEgg.Configuration-module.html#save_settings
+VisionEgg.Configuration.defaults	VisionEgg.Configuration-module.html#defaults
+VisionEgg.Core	VisionEgg.Core-module.html
+VisionEgg.Core.post_gl_init	VisionEgg.Core-module.html#post_gl_init
+VisionEgg.Core.message	VisionEgg.Core-module.html#message
+VisionEgg.Core.sum	VisionEgg.Core-module.html#sum
+VisionEgg.Core.get_default_screen	VisionEgg.Core-module.html#get_default_screen
+VisionEgg.Core.add_gl_assumption	VisionEgg.Core-module.html#add_gl_assumption
+VisionEgg.Core.init_gl_extension	VisionEgg.Core-module.html#init_gl_extension
+VisionEgg.Core.gl_assumptions	VisionEgg.Core-module.html#gl_assumptions
+VisionEgg.Core.swap_buffers	VisionEgg.Core-module.html#swap_buffers
+VisionEgg.Daq	VisionEgg.Daq-module.html
+VisionEgg.DaqKeyboard	VisionEgg.DaqKeyboard-module.html
+VisionEgg.DaqKeyboard.__version__	VisionEgg.DaqKeyboard-module.html#__version__
+VisionEgg.DaqLPT	VisionEgg.DaqLPT-module.html
+VisionEgg.DaqLPT.__version__	VisionEgg.DaqLPT-module.html#__version__
+VisionEgg.Deprecated	VisionEgg.Deprecated-module.html
+VisionEgg.Dots	VisionEgg.Dots-module.html
+VisionEgg.Dots.draw_dots	VisionEgg.Dots-module.html#draw_dots
+VisionEgg.FlowControl	VisionEgg.FlowControl-module.html
+VisionEgg.FlowControl.TIME_INDEPENDENT	VisionEgg.FlowControl-module.html#TIME_INDEPENDENT
+VisionEgg.FlowControl.FRAMES_SINCE_GO	VisionEgg.FlowControl-module.html#FRAMES_SINCE_GO
+VisionEgg.FlowControl.NOT_BETWEEN_GO	VisionEgg.FlowControl-module.html#NOT_BETWEEN_GO
+VisionEgg.FlowControl.FRAMES_ABSOLUTE	VisionEgg.FlowControl-module.html#FRAMES_ABSOLUTE
+VisionEgg.FlowControl.NEVER	VisionEgg.FlowControl-module.html#NEVER
+VisionEgg.FlowControl.TRANSITIONS	VisionEgg.FlowControl-module.html#TRANSITIONS
+VisionEgg.FlowControl.ONCE	VisionEgg.FlowControl-module.html#ONCE
+VisionEgg.FlowControl.EVERY_FRAME	VisionEgg.FlowControl-module.html#EVERY_FRAME
+VisionEgg.FlowControl.TIME_SEC_ABSOLUTE	VisionEgg.FlowControl-module.html#TIME_SEC_ABSOLUTE
+VisionEgg.FlowControl.TIME_SEC_SINCE_GO	VisionEgg.FlowControl-module.html#TIME_SEC_SINCE_GO
+VisionEgg.FlowControl.NOT_DURING_GO	VisionEgg.FlowControl-module.html#NOT_DURING_GO
+VisionEgg.GL	VisionEgg.GL-module.html
+VisionEgg.GL.GL_UNSIGNED_INT_8_8_8_8_REV	VisionEgg.GL-module.html#GL_UNSIGNED_INT_8_8_8_8_REV
+VisionEgg.GL.glLoadMatrixf	VisionEgg.GL-module.html#glLoadMatrixf
+VisionEgg.GL.__version__	VisionEgg.GL-module.html#__version__
+VisionEgg.GL._orig_glLoadMatrixf	VisionEgg.GL-module.html#_orig_glLoadMatrixf
+VisionEgg.GLTrace	VisionEgg.GLTrace-module.html
+VisionEgg.GLTrace.bitmask_names_by_value	VisionEgg.GLTrace-module.html#bitmask_names_by_value
+VisionEgg.GLTrace.gl_trace_attach	VisionEgg.GLTrace-module.html#gl_trace_attach
+VisionEgg.GLTrace.bitmasks_by_function	VisionEgg.GLTrace-module.html#bitmasks_by_function
+VisionEgg.GLTrace.raw_args_by_function	VisionEgg.GLTrace-module.html#raw_args_by_function
+VisionEgg.GLTrace.gl_constants	VisionEgg.GLTrace-module.html#gl_constants
+VisionEgg.GLTrace.arg_to_str	VisionEgg.GLTrace-module.html#arg_to_str
+VisionEgg.GUI	VisionEgg.GUI-module.html
+VisionEgg.GUI.showexception	VisionEgg.GUI-module.html#showexception
+VisionEgg.GUI.tkMessageBox	VisionEgg.GUI-module.html#tkMessageBox
+VisionEgg.GUI.tkFileDialog	VisionEgg.GUI-module.html#tkFileDialog
+VisionEgg.GUI.Tkinter	VisionEgg.GUI-module.html#Tkinter
+VisionEgg.Gratings	VisionEgg.Gratings-module.html
+VisionEgg.Gratings._get_type_info	VisionEgg.Gratings-module.html#_get_type_info
+VisionEgg.MoreStimuli	VisionEgg.MoreStimuli-module.html
+VisionEgg.ParameterTypes	VisionEgg.ParameterTypes-module.html
+VisionEgg.ParameterTypes.array_types	VisionEgg.ParameterTypes-module.html#array_types
+VisionEgg.ParameterTypes.is_parameter_type_def	VisionEgg.ParameterTypes-module.html#is_parameter_type_def
+VisionEgg.ParameterTypes.get_type	VisionEgg.ParameterTypes-module.html#get_type
+VisionEgg.ParameterTypes.assert_type	VisionEgg.ParameterTypes-module.html#assert_type
+VisionEgg.ParameterTypes.get_all_classes_list	VisionEgg.ParameterTypes-module.html#get_all_classes_list
+VisionEgg.PlatformDependent	VisionEgg.PlatformDependent-module.html
+VisionEgg.PlatformDependent.attempt_to_load_multitexturing	VisionEgg.PlatformDependent-module.html#attempt_to_load_multitexturing
+VisionEgg.PlatformDependent.sync_swap_with_vbl_post_gl_init	VisionEgg.PlatformDependent-module.html#sync_swap_with_vbl_post_gl_init
+VisionEgg.PlatformDependent.sync_swap_with_vbl_pre_gl_init	VisionEgg.PlatformDependent-module.html#sync_swap_with_vbl_pre_gl_init
+VisionEgg.PlatformDependent.linux_but_unknown_drivers	VisionEgg.PlatformDependent-module.html#linux_but_unknown_drivers
+VisionEgg.PlatformDependent.query_refresh_rate	VisionEgg.PlatformDependent-module.html#query_refresh_rate
+VisionEgg.PlatformDependent.set_priority	VisionEgg.PlatformDependent-module.html#set_priority
+VisionEgg.PyroApps	VisionEgg.PyroApps-module.html
+VisionEgg.PyroApps.AST_ext	VisionEgg.PyroApps.AST_ext-module.html
+VisionEgg.PyroApps.AST_ext.modify_AST	VisionEgg.PyroApps.AST_ext-module.html#modify_AST
+VisionEgg.PyroApps.AST_ext.gen_assign_val_subtree	VisionEgg.PyroApps.AST_ext-module.html#gen_assign_val_subtree
+VisionEgg.PyroApps.AST_ext.extract_from_AST	VisionEgg.PyroApps.AST_ext-module.html#extract_from_AST
+VisionEgg.PyroApps.AST_ext.name_sequence	VisionEgg.PyroApps.AST_ext-module.html#name_sequence
+VisionEgg.PyroApps.ColorCalGUI	VisionEgg.PyroApps.ColorCalGUI-module.html
+VisionEgg.PyroApps.ColorCalGUI.__date__	VisionEgg.PyroApps.ColorCalGUI-module.html#__date__
+VisionEgg.PyroApps.ColorCalGUI.__cvs__	VisionEgg.PyroApps.ColorCalGUI-module.html#__cvs__
+VisionEgg.PyroApps.ColorCalGUI.get_control_list	VisionEgg.PyroApps.ColorCalGUI-module.html#get_control_list
+VisionEgg.PyroApps.ColorCalServer	VisionEgg.PyroApps.ColorCalServer-module.html
+VisionEgg.PyroApps.ColorCalServer.get_meta_controller_stimkey	VisionEgg.PyroApps.ColorCalServer-module.html#get_meta_controller_stimkey
+VisionEgg.PyroApps.ColorCalServer.__date__	VisionEgg.PyroApps.ColorCalServer-module.html#__date__
+VisionEgg.PyroApps.ColorCalServer.make_stimuli	VisionEgg.PyroApps.ColorCalServer-module.html#make_stimuli
+VisionEgg.PyroApps.ColorCalServer.get_meta_controller_class	VisionEgg.PyroApps.ColorCalServer-module.html#get_meta_controller_class
+VisionEgg.PyroApps.ColorCalServer.__cvs__	VisionEgg.PyroApps.ColorCalServer-module.html#__cvs__
+VisionEgg.PyroApps.DropinGUI	VisionEgg.PyroApps.DropinGUI-module.html
+VisionEgg.PyroApps.DropinGUI.get_control_list	VisionEgg.PyroApps.DropinGUI-module.html#get_control_list
+VisionEgg.PyroApps.DropinServer	VisionEgg.PyroApps.DropinServer-module.html
+VisionEgg.PyroApps.DropinServer.get_meta_controller_stimkey	VisionEgg.PyroApps.DropinServer-module.html#get_meta_controller_stimkey
+VisionEgg.PyroApps.DropinServer.get_meta_controller_class	VisionEgg.PyroApps.DropinServer-module.html#get_meta_controller_class
+VisionEgg.PyroApps.DropinServer.make_stimuli	VisionEgg.PyroApps.DropinServer-module.html#make_stimuli
+VisionEgg.PyroApps.EPhysGUI	VisionEgg.PyroApps.EPhysGUI-module.html
+VisionEgg.PyroApps.EPhysGUI.get_server	VisionEgg.PyroApps.EPhysGUI-module.html#get_server
+VisionEgg.PyroApps.EPhysGUI.client_list	VisionEgg.PyroApps.EPhysGUI-module.html#client_list
+VisionEgg.PyroApps.EPhysGUI.__version__	VisionEgg.PyroApps.EPhysGUI-module.html#__version__
+VisionEgg.PyroApps.EPhysGUI.__cvs__	VisionEgg.PyroApps.EPhysGUI-module.html#__cvs__
+VisionEgg.PyroApps.EPhysGUI.__author__	VisionEgg.PyroApps.EPhysGUI-module.html#__author__
+VisionEgg.PyroApps.EPhysGUI.__date__	VisionEgg.PyroApps.EPhysGUI-module.html#__date__
+VisionEgg.PyroApps.EPhysGUIUtils	VisionEgg.PyroApps.EPhysGUIUtils-module.html
+VisionEgg.PyroApps.EPhysGUIUtils.__date__	VisionEgg.PyroApps.EPhysGUIUtils-module.html#__date__
+VisionEgg.PyroApps.EPhysGUIUtils.__author__	VisionEgg.PyroApps.EPhysGUIUtils-module.html#__author__
+VisionEgg.PyroApps.EPhysGUIUtils.__version__	VisionEgg.PyroApps.EPhysGUIUtils-module.html#__version__
+VisionEgg.PyroApps.EPhysGUIUtils.__cvs__	VisionEgg.PyroApps.EPhysGUIUtils-module.html#__cvs__
+VisionEgg.PyroApps.EPhysServer	VisionEgg.PyroApps.EPhysServer-module.html
+VisionEgg.PyroApps.EPhysServer.start_server	VisionEgg.PyroApps.EPhysServer-module.html#start_server
+VisionEgg.PyroApps.EPhysServer.server_modules	VisionEgg.PyroApps.EPhysServer-module.html#server_modules
+VisionEgg.PyroApps.EPhysServer.__author__	VisionEgg.PyroApps.EPhysServer-module.html#__author__
+VisionEgg.PyroApps.EPhysServer.__date__	VisionEgg.PyroApps.EPhysServer-module.html#__date__
+VisionEgg.PyroApps.EPhysServer.__version__	VisionEgg.PyroApps.EPhysServer-module.html#__version__
+VisionEgg.PyroApps.EPhysServer.__cvs__	VisionEgg.PyroApps.EPhysServer-module.html#__cvs__
+VisionEgg.PyroApps.FlatGratingGUI	VisionEgg.PyroApps.FlatGratingGUI-module.html
+VisionEgg.PyroApps.FlatGratingGUI.__date__	VisionEgg.PyroApps.FlatGratingGUI-module.html#__date__
+VisionEgg.PyroApps.FlatGratingGUI.__cvs__	VisionEgg.PyroApps.FlatGratingGUI-module.html#__cvs__
+VisionEgg.PyroApps.FlatGratingGUI.get_control_list	VisionEgg.PyroApps.FlatGratingGUI-module.html#get_control_list
+VisionEgg.PyroApps.FlatGratingServer	VisionEgg.PyroApps.FlatGratingServer-module.html
+VisionEgg.PyroApps.FlatGratingServer.get_meta_controller_stimkey	VisionEgg.PyroApps.FlatGratingServer-module.html#get_meta_controller_stimkey
+VisionEgg.PyroApps.FlatGratingServer.__date__	VisionEgg.PyroApps.FlatGratingServer-module.html#__date__
+VisionEgg.PyroApps.FlatGratingServer.get_meta_controller_class	VisionEgg.PyroApps.FlatGratingServer-module.html#get_meta_controller_class
+VisionEgg.PyroApps.FlatGratingServer.make_stimuli	VisionEgg.PyroApps.FlatGratingServer-module.html#make_stimuli
+VisionEgg.PyroApps.FlatGratingServer.__cvs__	VisionEgg.PyroApps.FlatGratingServer-module.html#__cvs__
+VisionEgg.PyroApps.GridGUI	VisionEgg.PyroApps.GridGUI-module.html
+VisionEgg.PyroApps.GridGUI.__author__	VisionEgg.PyroApps.GridGUI-module.html#__author__
+VisionEgg.PyroApps.GridGUI.__date__	VisionEgg.PyroApps.GridGUI-module.html#__date__
+VisionEgg.PyroApps.GridGUI.__version__	VisionEgg.PyroApps.GridGUI-module.html#__version__
+VisionEgg.PyroApps.GridGUI.__cvs__	VisionEgg.PyroApps.GridGUI-module.html#__cvs__
+VisionEgg.PyroApps.GridGUI.get_control_list	VisionEgg.PyroApps.GridGUI-module.html#get_control_list
+VisionEgg.PyroApps.GridServer	VisionEgg.PyroApps.GridServer-module.html
+VisionEgg.PyroApps.GridServer.get_meta_controller_stimkey	VisionEgg.PyroApps.GridServer-module.html#get_meta_controller_stimkey
+VisionEgg.PyroApps.GridServer.__author__	VisionEgg.PyroApps.GridServer-module.html#__author__
+VisionEgg.PyroApps.GridServer.__date__	VisionEgg.PyroApps.GridServer-module.html#__date__
+VisionEgg.PyroApps.GridServer.get_meta_controller_class	VisionEgg.PyroApps.GridServer-module.html#get_meta_controller_class
+VisionEgg.PyroApps.GridServer.make_stimuli	VisionEgg.PyroApps.GridServer-module.html#make_stimuli
+VisionEgg.PyroApps.GridServer.__version__	VisionEgg.PyroApps.GridServer-module.html#__version__
+VisionEgg.PyroApps.GridServer.__cvs__	VisionEgg.PyroApps.GridServer-module.html#__cvs__
+VisionEgg.PyroApps.MouseTargetGUI	VisionEgg.PyroApps.MouseTargetGUI-module.html
+VisionEgg.PyroApps.MouseTargetGUI.__date__	VisionEgg.PyroApps.MouseTargetGUI-module.html#__date__
+VisionEgg.PyroApps.MouseTargetGUI.__cvs__	VisionEgg.PyroApps.MouseTargetGUI-module.html#__cvs__
+VisionEgg.PyroApps.MouseTargetGUI.get_control_list	VisionEgg.PyroApps.MouseTargetGUI-module.html#get_control_list
+VisionEgg.PyroApps.MouseTargetServer	VisionEgg.PyroApps.MouseTargetServer-module.html
+VisionEgg.PyroApps.MouseTargetServer.get_meta_controller_stimkey	VisionEgg.PyroApps.MouseTargetServer-module.html#get_meta_controller_stimkey
+VisionEgg.PyroApps.MouseTargetServer.right	VisionEgg.PyroApps.MouseTargetServer-module.html#right
+VisionEgg.PyroApps.MouseTargetServer.get_target_size	VisionEgg.PyroApps.MouseTargetServer-module.html#get_target_size
+VisionEgg.PyroApps.MouseTargetServer.make_stimuli	VisionEgg.PyroApps.MouseTargetServer-module.html#make_stimuli
+VisionEgg.PyroApps.MouseTargetServer.down	VisionEgg.PyroApps.MouseTargetServer-module.html#down
+VisionEgg.PyroApps.MouseTargetServer.__date__	VisionEgg.PyroApps.MouseTargetServer-module.html#__date__
+VisionEgg.PyroApps.MouseTargetServer.mouse_position	VisionEgg.PyroApps.MouseTargetServer-module.html#mouse_position
+VisionEgg.PyroApps.MouseTargetServer.get_meta_controller_class	VisionEgg.PyroApps.MouseTargetServer-module.html#get_meta_controller_class
+VisionEgg.PyroApps.MouseTargetServer.__cvs__	VisionEgg.PyroApps.MouseTargetServer-module.html#__cvs__
+VisionEgg.PyroApps.MouseTargetServer.target_h	VisionEgg.PyroApps.MouseTargetServer-module.html#target_h
+VisionEgg.PyroApps.MouseTargetServer.keyup	VisionEgg.PyroApps.MouseTargetServer-module.html#keyup
+VisionEgg.PyroApps.MouseTargetServer.keydown	VisionEgg.PyroApps.MouseTargetServer-module.html#keydown
+VisionEgg.PyroApps.MouseTargetServer.mag	VisionEgg.PyroApps.MouseTargetServer-module.html#mag
+VisionEgg.PyroApps.MouseTargetServer.last_mouse_position	VisionEgg.PyroApps.MouseTargetServer-module.html#last_mouse_position
+VisionEgg.PyroApps.MouseTargetServer.target_w	VisionEgg.PyroApps.MouseTargetServer-module.html#target_w
+VisionEgg.PyroApps.MouseTargetServer.handle_event_callbacks	VisionEgg.PyroApps.MouseTargetServer-module.html#handle_event_callbacks
+VisionEgg.PyroApps.MouseTargetServer.cross_product	VisionEgg.PyroApps.MouseTargetServer-module.html#cross_product
+VisionEgg.PyroApps.MouseTargetServer.up	VisionEgg.PyroApps.MouseTargetServer-module.html#up
+VisionEgg.PyroApps.MouseTargetServer.left	VisionEgg.PyroApps.MouseTargetServer-module.html#left
+VisionEgg.PyroApps.ScreenPositionGUI	VisionEgg.PyroApps.ScreenPositionGUI-module.html
+VisionEgg.PyroApps.ScreenPositionGUI.__date__	VisionEgg.PyroApps.ScreenPositionGUI-module.html#__date__
+VisionEgg.PyroApps.ScreenPositionGUI.__version__	VisionEgg.PyroApps.ScreenPositionGUI-module.html#__version__
+VisionEgg.PyroApps.ScreenPositionGUI.__cvs__	VisionEgg.PyroApps.ScreenPositionGUI-module.html#__cvs__
+VisionEgg.PyroApps.ScreenPositionServer	VisionEgg.PyroApps.ScreenPositionServer-module.html
+VisionEgg.PyroApps.ScreenPositionServer.__date__	VisionEgg.PyroApps.ScreenPositionServer-module.html#__date__
+VisionEgg.PyroApps.ScreenPositionServer.__version__	VisionEgg.PyroApps.ScreenPositionServer-module.html#__version__
+VisionEgg.PyroApps.ScreenPositionServer.__cvs__	VisionEgg.PyroApps.ScreenPositionServer-module.html#__cvs__
+VisionEgg.PyroApps.SphereGratingGUI	VisionEgg.PyroApps.SphereGratingGUI-module.html
+VisionEgg.PyroApps.SphereGratingGUI.__date__	VisionEgg.PyroApps.SphereGratingGUI-module.html#__date__
+VisionEgg.PyroApps.SphereGratingGUI.__cvs__	VisionEgg.PyroApps.SphereGratingGUI-module.html#__cvs__
+VisionEgg.PyroApps.SphereGratingGUI.get_control_list	VisionEgg.PyroApps.SphereGratingGUI-module.html#get_control_list
+VisionEgg.PyroApps.SphereGratingServer	VisionEgg.PyroApps.SphereGratingServer-module.html
+VisionEgg.PyroApps.SphereGratingServer.get_meta_controller_stimkey	VisionEgg.PyroApps.SphereGratingServer-module.html#get_meta_controller_stimkey
+VisionEgg.PyroApps.SphereGratingServer.__date__	VisionEgg.PyroApps.SphereGratingServer-module.html#__date__
+VisionEgg.PyroApps.SphereGratingServer.get_meta_controller_class	VisionEgg.PyroApps.SphereGratingServer-module.html#get_meta_controller_class
+VisionEgg.PyroApps.SphereGratingServer.make_stimuli	VisionEgg.PyroApps.SphereGratingServer-module.html#make_stimuli
+VisionEgg.PyroApps.SphereGratingServer.__cvs__	VisionEgg.PyroApps.SphereGratingServer-module.html#__cvs__
+VisionEgg.PyroApps.SpinningDrumGUI	VisionEgg.PyroApps.SpinningDrumGUI-module.html
+VisionEgg.PyroApps.SpinningDrumGUI.__author__	VisionEgg.PyroApps.SpinningDrumGUI-module.html#__author__
+VisionEgg.PyroApps.SpinningDrumGUI.__date__	VisionEgg.PyroApps.SpinningDrumGUI-module.html#__date__
+VisionEgg.PyroApps.SpinningDrumGUI.__version__	VisionEgg.PyroApps.SpinningDrumGUI-module.html#__version__
+VisionEgg.PyroApps.SpinningDrumGUI.__cvs__	VisionEgg.PyroApps.SpinningDrumGUI-module.html#__cvs__
+VisionEgg.PyroApps.SpinningDrumGUI.get_control_list	VisionEgg.PyroApps.SpinningDrumGUI-module.html#get_control_list
+VisionEgg.PyroApps.SpinningDrumServer	VisionEgg.PyroApps.SpinningDrumServer-module.html
+VisionEgg.PyroApps.SpinningDrumServer.get_meta_controller_stimkey	VisionEgg.PyroApps.SpinningDrumServer-module.html#get_meta_controller_stimkey
+VisionEgg.PyroApps.SpinningDrumServer.__author__	VisionEgg.PyroApps.SpinningDrumServer-module.html#__author__
+VisionEgg.PyroApps.SpinningDrumServer.__date__	VisionEgg.PyroApps.SpinningDrumServer-module.html#__date__
+VisionEgg.PyroApps.SpinningDrumServer.get_meta_controller_class	VisionEgg.PyroApps.SpinningDrumServer-module.html#get_meta_controller_class
+VisionEgg.PyroApps.SpinningDrumServer.make_stimuli	VisionEgg.PyroApps.SpinningDrumServer-module.html#make_stimuli
+VisionEgg.PyroApps.SpinningDrumServer.__version__	VisionEgg.PyroApps.SpinningDrumServer-module.html#__version__
+VisionEgg.PyroApps.SpinningDrumServer.__cvs__	VisionEgg.PyroApps.SpinningDrumServer-module.html#__cvs__
+VisionEgg.PyroApps.TargetGUI	VisionEgg.PyroApps.TargetGUI-module.html
+VisionEgg.PyroApps.TargetGUI.get_control_list	VisionEgg.PyroApps.TargetGUI-module.html#get_control_list
+VisionEgg.PyroApps.TargetGUI.__date__	VisionEgg.PyroApps.TargetGUI-module.html#__date__
+VisionEgg.PyroApps.TargetGUI.__cvs__	VisionEgg.PyroApps.TargetGUI-module.html#__cvs__
+VisionEgg.PyroApps.TargetServer	VisionEgg.PyroApps.TargetServer-module.html
+VisionEgg.PyroApps.TargetServer.get_meta_controller_stimkey	VisionEgg.PyroApps.TargetServer-module.html#get_meta_controller_stimkey
+VisionEgg.PyroApps.TargetServer.__date__	VisionEgg.PyroApps.TargetServer-module.html#__date__
+VisionEgg.PyroApps.TargetServer.get_meta_controller_class	VisionEgg.PyroApps.TargetServer-module.html#get_meta_controller_class
+VisionEgg.PyroApps.TargetServer.make_stimuli	VisionEgg.PyroApps.TargetServer-module.html#make_stimuli
+VisionEgg.PyroApps.TargetServer.__cvs__	VisionEgg.PyroApps.TargetServer-module.html#__cvs__
+VisionEgg.PyroApps.VarTypes	VisionEgg.PyroApps.VarTypes-module.html
+VisionEgg.PyroApps.VarTypes.getType	VisionEgg.PyroApps.VarTypes-module.html#getType
+VisionEgg.PyroApps.VarTypes.getID	VisionEgg.PyroApps.VarTypes-module.html#getID
+VisionEgg.PyroClient	VisionEgg.PyroClient-module.html
+VisionEgg.PyroClient.__date__	VisionEgg.PyroClient-module.html#__date__
+VisionEgg.PyroClient.__cvs__	VisionEgg.PyroClient-module.html#__cvs__
+VisionEgg.PyroHelpers	VisionEgg.PyroHelpers-module.html
+VisionEgg.PyroHelpers.__date__	VisionEgg.PyroHelpers-module.html#__date__
+VisionEgg.PyroHelpers.__version__	VisionEgg.PyroHelpers-module.html#__version__
+VisionEgg.PyroHelpers.__cvs__	VisionEgg.PyroHelpers-module.html#__cvs__
+VisionEgg.QuickTime	VisionEgg.QuickTime-module.html
+VisionEgg.QuickTime.__version__	VisionEgg.QuickTime-module.html#__version__
+VisionEgg.QuickTime.new_movie_from_filename	VisionEgg.QuickTime-module.html#new_movie_from_filename
+VisionEgg.ResponseControl	VisionEgg.ResponseControl-module.html
+VisionEgg.ResponseControl.__version__	VisionEgg.ResponseControl-module.html#__version__
+VisionEgg.SphereMap	VisionEgg.SphereMap-module.html
+VisionEgg.SphereMap.__version__	VisionEgg.SphereMap-module.html#__version__
+VisionEgg.TCPController	VisionEgg.TCPController-module.html
+VisionEgg.TCPController.__cvs__	VisionEgg.TCPController-module.html#__cvs__
+VisionEgg.TCPController.__date__	VisionEgg.TCPController-module.html#__date__
+VisionEgg.TCPController.__version__	VisionEgg.TCPController-module.html#__version__
+VisionEgg.Text	VisionEgg.Text-module.html
+VisionEgg.Text._font_objects	VisionEgg.Text-module.html#_font_objects
+VisionEgg.Text.have_glut	VisionEgg.Text-module.html#have_glut
+VisionEgg.Textures	VisionEgg.Textures-module.html
+VisionEgg.Textures.array_types	VisionEgg.Textures-module.html#array_types
+VisionEgg.Textures.convert_to_numpy_if_array	VisionEgg.Textures-module.html#convert_to_numpy_if_array
+VisionEgg.Textures.next_power_of_2	VisionEgg.Textures-module.html#next_power_of_2
+VisionEgg.Textures.is_power_of_2	VisionEgg.Textures-module.html#is_power_of_2
+VisionEgg.Textures.shrink_filter	VisionEgg.Textures-module.html#shrink_filter
+VisionEgg.ThreeDeeMath	VisionEgg.ThreeDeeMath-module.html
+VisionEgg.ThreeDeeMath.make_homogeneous_coord_rows	VisionEgg.ThreeDeeMath-module.html#make_homogeneous_coord_rows
+VisionEgg.ThreeDeeMath.normalize_homogeneous_rows	VisionEgg.ThreeDeeMath-module.html#normalize_homogeneous_rows
+VisionEgg.WrappedText	VisionEgg.WrappedText-module.html
+VisionEgg.WrappedText.main	VisionEgg.WrappedText-module.html#main
+VisionEgg.darwin_getrefresh	VisionEgg.darwin_getrefresh-module.html
+VisionEgg.darwin_getrefresh._swig_getattr	VisionEgg.darwin_getrefresh-module.html#_swig_getattr
+VisionEgg.darwin_getrefresh._swig_setattr_nondynamic	VisionEgg.darwin_getrefresh-module.html#_swig_setattr_nondynamic
+VisionEgg.darwin_getrefresh.getrefresh	VisionEgg.darwin_getrefresh-module.html#getrefresh
+VisionEgg.darwin_getrefresh._swig_setattr	VisionEgg.darwin_getrefresh-module.html#_swig_setattr
+VisionEgg.darwin_getrefresh._newclass	VisionEgg.darwin_getrefresh-module.html#_newclass
+VisionEgg.gl_qt	VisionEgg.gl_qt-module.html
+VisionEgg.gl_qt._swig_getattr	VisionEgg.gl_qt-module.html#_swig_getattr
+VisionEgg.gl_qt.gl_qt_renderer_delete	VisionEgg.gl_qt-module.html#gl_qt_renderer_delete
+VisionEgg.gl_qt._swig_setattr_nondynamic	VisionEgg.gl_qt-module.html#_swig_setattr_nondynamic
+VisionEgg.gl_qt._swig_setattr	VisionEgg.gl_qt-module.html#_swig_setattr
+VisionEgg.gl_qt._newclass	VisionEgg.gl_qt-module.html#_newclass
+VisionEgg.gl_qt.gl_qt_renderer_update	VisionEgg.gl_qt-module.html#gl_qt_renderer_update
+VisionEgg.gl_qt.gl_qt_renderer_create	VisionEgg.gl_qt-module.html#gl_qt_renderer_create
+VisionEgg.posix_maxpriority	VisionEgg.posix_maxpriority-module.html
+VisionEgg.posix_maxpriority._swig_getattr	VisionEgg.posix_maxpriority-module.html#_swig_getattr
+VisionEgg.posix_maxpriority.stop_memory_paging	VisionEgg.posix_maxpriority-module.html#stop_memory_paging
+VisionEgg.posix_maxpriority._swig_setattr_nondynamic	VisionEgg.posix_maxpriority-module.html#_swig_setattr_nondynamic
+VisionEgg.posix_maxpriority.set_self_policy_priority	VisionEgg.posix_maxpriority-module.html#set_self_policy_priority
+VisionEgg.posix_maxpriority.SCHED_RR	VisionEgg.posix_maxpriority-module.html#SCHED_RR
+VisionEgg.posix_maxpriority.sched_get_priority_max	VisionEgg.posix_maxpriority-module.html#sched_get_priority_max
+VisionEgg.posix_maxpriority._swig_setattr	VisionEgg.posix_maxpriority-module.html#_swig_setattr
+VisionEgg.posix_maxpriority._newclass	VisionEgg.posix_maxpriority-module.html#_newclass
+VisionEgg.posix_maxpriority.SCHED_FIFO	VisionEgg.posix_maxpriority-module.html#SCHED_FIFO
+VisionEgg.qtlowlevel	VisionEgg.qtlowlevel-module.html
+VisionEgg.qtlowlevel.kQTPropertyClass_NewMovieProperty	VisionEgg.qtlowlevel-module.html#kQTPropertyClass_NewMovieProperty
+VisionEgg.qtlowlevel.paramErr	VisionEgg.qtlowlevel-module.html#paramErr
+VisionEgg.qtlowlevel.NewMovieFromProperties	VisionEgg.qtlowlevel-module.html#NewMovieFromProperties
+VisionEgg.qtlowlevel.SetMovieBox	VisionEgg.qtlowlevel-module.html#SetMovieBox
+VisionEgg.qtlowlevel.IsMovieDone	VisionEgg.qtlowlevel-module.html#IsMovieDone
+VisionEgg.qtlowlevel.Movie	VisionEgg.qtlowlevel-module.html#Movie
+VisionEgg.qtlowlevel.kQTMovieResourceLocatorPropertyID_LegacyResName	VisionEgg.qtlowlevel-module.html#kQTMovieResourceLocatorPropertyID_LegacyResName
+VisionEgg.qtlowlevel.kQTContextPropertyID_AudioContext	VisionEgg.qtlowlevel-module.html#kQTContextPropertyID_AudioContext
+VisionEgg.qtlowlevel.kQTMovieResourceLocatorPropertyID_Callback	VisionEgg.qtlowlevel-module.html#kQTMovieResourceLocatorPropertyID_Callback
+VisionEgg.qtlowlevel.kQTPropertyClass_DataLocation	VisionEgg.qtlowlevel-module.html#kQTPropertyClass_DataLocation
+VisionEgg.qtlowlevel.kQTMovieInstantiationPropertyID_DontUpdateForeBackPointers	VisionEgg.qtlowlevel-module.html#kQTMovieInstantiationPropertyID_DontUpdateForeBackPointers
+VisionEgg.qtlowlevel.NewMovieFromFile	VisionEgg.qtlowlevel-module.html#NewMovieFromFile
+VisionEgg.qtlowlevel.kQTDataLocationPropertyID_CFStringHFSPath	VisionEgg.qtlowlevel-module.html#kQTDataLocationPropertyID_CFStringHFSPath
+VisionEgg.qtlowlevel.kQTMovieInstantiationPropertyID_DontAutoUpdateClock	VisionEgg.qtlowlevel-module.html#kQTMovieInstantiationPropertyID_DontAutoUpdateClock
+VisionEgg.qtlowlevel.CFStringCreateWithCString	VisionEgg.qtlowlevel-module.html#CFStringCreateWithCString
+VisionEgg.qtlowlevel.OSType	VisionEgg.qtlowlevel-module.html#OSType
+VisionEgg.qtlowlevel.kQTMovieInstantiationPropertyID_IdleImportOK	VisionEgg.qtlowlevel-module.html#kQTMovieInstantiationPropertyID_IdleImportOK
+VisionEgg.qtlowlevel.OSErr	VisionEgg.qtlowlevel-module.html#OSErr
+VisionEgg.qtlowlevel.NativePathNameToFSSpec	VisionEgg.qtlowlevel-module.html#NativePathNameToFSSpec
+VisionEgg.qtlowlevel.CFIndex	VisionEgg.qtlowlevel-module.html#CFIndex
+VisionEgg.qtlowlevel.movieToolboxUninitialized	VisionEgg.qtlowlevel-module.html#movieToolboxUninitialized
+VisionEgg.qtlowlevel.kQTDataLocationPropertyID_CFStringNativePath	VisionEgg.qtlowlevel-module.html#kQTDataLocationPropertyID_CFStringNativePath
+VisionEgg.qtlowlevel.QTMLClient	VisionEgg.qtlowlevel-module.html#QTMLClient
+VisionEgg.qtlowlevel.kQTMovieInstantiationPropertyID_DontResolveDataRefs	VisionEgg.qtlowlevel-module.html#kQTMovieInstantiationPropertyID_DontResolveDataRefs
+VisionEgg.qtlowlevel.kQTMovieInstantiationPropertyID_DontAutoAlternates	VisionEgg.qtlowlevel-module.html#kQTMovieInstantiationPropertyID_DontAutoAlternates
+VisionEgg.qtlowlevel.kQTNewMoviePropertyID_Active	VisionEgg.qtlowlevel-module.html#kQTNewMoviePropertyID_Active
+VisionEgg.qtlowlevel.InitializeQTML	VisionEgg.qtlowlevel-module.html#InitializeQTML
+VisionEgg.qtlowlevel.kQTNewMoviePropertyID_DefaultDataRef	VisionEgg.qtlowlevel-module.html#kQTNewMoviePropertyID_DefaultDataRef
+VisionEgg.qtlowlevel.CFStringGetCString	VisionEgg.qtlowlevel-module.html#CFStringGetCString
+VisionEgg.qtlowlevel.kCFStringEncodingMacRoman	VisionEgg.qtlowlevel-module.html#kCFStringEncodingMacRoman
+VisionEgg.qtlowlevel.GetErrorString	VisionEgg.qtlowlevel-module.html#GetErrorString
+VisionEgg.qtlowlevel.kQTMovieInstantiationPropertyID_DontAskUnresolvedDataRefs	VisionEgg.qtlowlevel-module.html#kQTMovieInstantiationPropertyID_DontAskUnresolvedDataRefs
+VisionEgg.qtlowlevel.kQTPropertyClass_Context	VisionEgg.qtlowlevel-module.html#kQTPropertyClass_Context
+VisionEgg.qtlowlevel.ByteCount	VisionEgg.qtlowlevel-module.html#ByteCount
+VisionEgg.qtlowlevel.kQTPropertyClass_MovieResourceLocator	VisionEgg.qtlowlevel-module.html#kQTPropertyClass_MovieResourceLocator
+VisionEgg.qtlowlevel.kQTDataLocationPropertyID_DataFork	VisionEgg.qtlowlevel-module.html#kQTDataLocationPropertyID_DataFork
+VisionEgg.qtlowlevel.kQTDataLocationPropertyID_DataReference	VisionEgg.qtlowlevel-module.html#kQTDataLocationPropertyID_DataReference
+VisionEgg.qtlowlevel.kQTMovieResourceLocatorPropertyID_FileOffset	VisionEgg.qtlowlevel-module.html#kQTMovieResourceLocatorPropertyID_FileOffset
+VisionEgg.qtlowlevel.ItemCount	VisionEgg.qtlowlevel-module.html#ItemCount
+VisionEgg.qtlowlevel.kQTDataLocationPropertyID_CFStringPosixPath	VisionEgg.qtlowlevel-module.html#kQTDataLocationPropertyID_CFStringPosixPath
+VisionEgg.qtlowlevel.kQTDataLocationPropertyID_LegacyMovieResourceHandle	VisionEgg.qtlowlevel-module.html#kQTDataLocationPropertyID_LegacyMovieResourceHandle
+VisionEgg.qtlowlevel.CFStringGetCStringPtr	VisionEgg.qtlowlevel-module.html#CFStringGetCStringPtr
+VisionEgg.qtlowlevel.kQTDataLocationPropertyID_CFURL	VisionEgg.qtlowlevel-module.html#kQTDataLocationPropertyID_CFURL
+VisionEgg.qtlowlevel.kQTDataLocationPropertyID_Scrap	VisionEgg.qtlowlevel-module.html#kQTDataLocationPropertyID_Scrap
+VisionEgg.qtlowlevel.CheckOSStatus	VisionEgg.qtlowlevel-module.html#CheckOSStatus
+VisionEgg.qtlowlevel.FSSpec	VisionEgg.qtlowlevel-module.html#FSSpec
+VisionEgg.qtlowlevel.kQTContextPropertyID_VisualContext	VisionEgg.qtlowlevel-module.html#kQTContextPropertyID_VisualContext
+VisionEgg.qtlowlevel.CFStringCreateWithCharacters	VisionEgg.qtlowlevel-module.html#CFStringCreateWithCharacters
+VisionEgg.qtlowlevel.QTVisualContextRef	VisionEgg.qtlowlevel-module.html#QTVisualContextRef
+VisionEgg.qtlowlevel.kQTDataLocationPropertyID_QTDataHandler	VisionEgg.qtlowlevel-module.html#kQTDataLocationPropertyID_QTDataHandler
+VisionEgg.qtlowlevel.kQTDataLocationPropertyID_MovieUserProc	VisionEgg.qtlowlevel-module.html#kQTDataLocationPropertyID_MovieUserProc
+VisionEgg.qtlowlevel.OpenMovieFile	VisionEgg.qtlowlevel-module.html#OpenMovieFile
+VisionEgg.qtlowlevel.kCFAllocatorDefault	VisionEgg.qtlowlevel-module.html#kCFAllocatorDefault
+VisionEgg.qtlowlevel.QTGetCFConstant	VisionEgg.qtlowlevel-module.html#QTGetCFConstant
+VisionEgg.qtlowlevel.GetMovieBox	VisionEgg.qtlowlevel-module.html#GetMovieBox
+VisionEgg.qtlowlevel.EnterMovies	VisionEgg.qtlowlevel-module.html#EnterMovies
+VisionEgg.qtlowlevel.GoToBeginningOfMovie	VisionEgg.qtlowlevel-module.html#GoToBeginningOfMovie
+VisionEgg.qtlowlevel.noErr	VisionEgg.qtlowlevel-module.html#noErr
+VisionEgg.qtlowlevel.kQTPropertyClass_MovieInstantiation	VisionEgg.qtlowlevel-module.html#kQTPropertyClass_MovieInstantiation
+VisionEgg.qtlowlevel.StartMovie	VisionEgg.qtlowlevel-module.html#StartMovie
+VisionEgg.qtlowlevel.FOUR_CHAR_CODE	VisionEgg.qtlowlevel-module.html#FOUR_CHAR_CODE
+VisionEgg.qtlowlevel.CFAllocatorRef	VisionEgg.qtlowlevel-module.html#CFAllocatorRef
+VisionEgg.qtlowlevel.kQTMovieInstantiationPropertyID_AsyncOK	VisionEgg.qtlowlevel-module.html#kQTMovieInstantiationPropertyID_AsyncOK
+VisionEgg.qtlowlevel.kQTMovieResourceLocatorPropertyID_LegacyResID	VisionEgg.qtlowlevel-module.html#kQTMovieResourceLocatorPropertyID_LegacyResID
+VisionEgg.qtlowlevel.QTPropertyID	VisionEgg.qtlowlevel-module.html#QTPropertyID
+VisionEgg.qtlowlevel.kQTMovieInstantiationPropertyID_ResultDataLocationChanged	VisionEgg.qtlowlevel-module.html#kQTMovieInstantiationPropertyID_ResultDataLocationChanged
+VisionEgg.qtlowlevel.MoviesTask	VisionEgg.qtlowlevel-module.html#MoviesTask
+VisionEgg.qtlowlevel.CFStringEncoding	VisionEgg.qtlowlevel-module.html#CFStringEncoding
+VisionEgg.qtlowlevel.FourCharCode	VisionEgg.qtlowlevel-module.html#FourCharCode
+VisionEgg.qtlowlevel.OSStatus	VisionEgg.qtlowlevel-module.html#OSStatus
+VisionEgg.qtlowlevel.kQTNewMoviePropertyID_DontInteractWithUser	VisionEgg.qtlowlevel-module.html#kQTNewMoviePropertyID_DontInteractWithUser
+VisionEgg.qtlowlevel.CFStringRef	VisionEgg.qtlowlevel-module.html#CFStringRef
+VisionEgg.qtlowlevel.QTPropertyClass	VisionEgg.qtlowlevel-module.html#QTPropertyClass
+VisionEgg.qtlowlevel.QTPropertyValuePtr	VisionEgg.qtlowlevel-module.html#QTPropertyValuePtr
+VisionEgg.qtlowlevel.kQTDataLocationPropertyID_ResourceFork	VisionEgg.qtlowlevel-module.html#kQTDataLocationPropertyID_ResourceFork
+VisionEgg.qtlowlevel.kQTDataLocationPropertyID_CFStringWindowsPath	VisionEgg.qtlowlevel-module.html#kQTDataLocationPropertyID_CFStringWindowsPath
+VisionEgg.qtmovie	VisionEgg.qtmovie-module.html
+VisionEgg.qtmovie.new_movie_from_filename	VisionEgg.qtmovie-module.html#new_movie_from_filename
+VisionEgg.win32_getrefresh	VisionEgg.win32_getrefresh-module.html
+VisionEgg.win32_getrefresh._swig_getattr	VisionEgg.win32_getrefresh-module.html#_swig_getattr
+VisionEgg.win32_getrefresh._swig_setattr_nondynamic	VisionEgg.win32_getrefresh-module.html#_swig_setattr_nondynamic
+VisionEgg.win32_getrefresh.getrefresh	VisionEgg.win32_getrefresh-module.html#getrefresh
+VisionEgg.win32_getrefresh._swig_setattr	VisionEgg.win32_getrefresh-module.html#_swig_setattr
+VisionEgg.win32_getrefresh._newclass	VisionEgg.win32_getrefresh-module.html#_newclass
+VisionEgg.win32_maxpriority	VisionEgg.win32_maxpriority-module.html
+VisionEgg.win32_maxpriority._swig_getattr	VisionEgg.win32_maxpriority-module.html#_swig_getattr
+VisionEgg.win32_maxpriority.HIGH_PRIORITY_CLASS	VisionEgg.win32_maxpriority-module.html#HIGH_PRIORITY_CLASS
+VisionEgg.win32_maxpriority._swig_setattr_nondynamic	VisionEgg.win32_maxpriority-module.html#_swig_setattr_nondynamic
+VisionEgg.win32_maxpriority.THREAD_PRIORITY_BELOW_NORMAL	VisionEgg.win32_maxpriority-module.html#THREAD_PRIORITY_BELOW_NORMAL
+VisionEgg.win32_maxpriority.THREAD_PRIORITY_NORMAL	VisionEgg.win32_maxpriority-module.html#THREAD_PRIORITY_NORMAL
+VisionEgg.win32_maxpriority.set_self_process_priority_class	VisionEgg.win32_maxpriority-module.html#set_self_process_priority_class
+VisionEgg.win32_maxpriority.THREAD_PRIORITY_IDLE	VisionEgg.win32_maxpriority-module.html#THREAD_PRIORITY_IDLE
+VisionEgg.win32_maxpriority.THREAD_PRIORITY_TIME_CRITICAL	VisionEgg.win32_maxpriority-module.html#THREAD_PRIORITY_TIME_CRITICAL
+VisionEgg.win32_maxpriority.set_self_thread_priority	VisionEgg.win32_maxpriority-module.html#set_self_thread_priority
+VisionEgg.win32_maxpriority._swig_setattr	VisionEgg.win32_maxpriority-module.html#_swig_setattr
+VisionEgg.win32_maxpriority.THREAD_PRIORITY_HIGHEST	VisionEgg.win32_maxpriority-module.html#THREAD_PRIORITY_HIGHEST
+VisionEgg.win32_maxpriority.THREAD_PRIORITY_LOWEST	VisionEgg.win32_maxpriority-module.html#THREAD_PRIORITY_LOWEST
+VisionEgg.win32_maxpriority.THREAD_PRIORITY_ABOVE_NORMAL	VisionEgg.win32_maxpriority-module.html#THREAD_PRIORITY_ABOVE_NORMAL
+VisionEgg.win32_maxpriority._newclass	VisionEgg.win32_maxpriority-module.html#_newclass
+VisionEgg.win32_maxpriority.IDLE_PRIORITY_CLASS	VisionEgg.win32_maxpriority-module.html#IDLE_PRIORITY_CLASS
+VisionEgg.win32_maxpriority.REALTIME_PRIORITY_CLASS	VisionEgg.win32_maxpriority-module.html#REALTIME_PRIORITY_CLASS
+VisionEgg.win32_maxpriority.NORMAL_PRIORITY_CLASS	VisionEgg.win32_maxpriority-module.html#NORMAL_PRIORITY_CLASS
+VisionEgg.ClassWithParameters	VisionEgg.ClassWithParameters-class.html
+VisionEgg.ClassWithParameters.get_specified_type	VisionEgg.ClassWithParameters-class.html#get_specified_type
+VisionEgg.ClassWithParameters.verify_parameters	VisionEgg.ClassWithParameters-class.html#verify_parameters
+VisionEgg.ClassWithParameters.set	VisionEgg.ClassWithParameters-class.html#set
+VisionEgg.ClassWithParameters.is_constant_parameter	VisionEgg.ClassWithParameters-class.html#is_constant_parameter
+VisionEgg.ClassWithParameters.__setstate__	VisionEgg.ClassWithParameters-class.html#__setstate__
+VisionEgg.ClassWithParameters.__safe_for_unpickling__	VisionEgg.ClassWithParameters-class.html#__safe_for_unpickling__
+VisionEgg.ClassWithParameters.constant_parameters_and_defaults	VisionEgg.ClassWithParameters-class.html#constant_parameters_and_defaults
+VisionEgg.ClassWithParameters.__getstate__	VisionEgg.ClassWithParameters-class.html#__getstate__
+VisionEgg.ClassWithParameters.parameters_and_defaults	VisionEgg.ClassWithParameters-class.html#parameters_and_defaults
+VisionEgg.ClassWithParameters.__init__	VisionEgg.ClassWithParameters-class.html#__init__
+VisionEgg.Configuration.Config	VisionEgg.Configuration.Config-class.html
+VisionEgg.Configuration.Config.__init__	VisionEgg.Configuration.Config-class.html#__init__
+VisionEgg.Core.FixationSpot	VisionEgg.Core.FixationSpot-class.html
+VisionEgg.ClassWithParameters.get_specified_type	VisionEgg.ClassWithParameters-class.html#get_specified_type
+VisionEgg.Core.FixationSpot.draw	VisionEgg.Core.FixationSpot-class.html#draw
+VisionEgg.ClassWithParameters.verify_parameters	VisionEgg.ClassWithParameters-class.html#verify_parameters
+VisionEgg.ClassWithParameters.is_constant_parameter	VisionEgg.ClassWithParameters-class.html#is_constant_parameter
+VisionEgg.ClassWithParameters.__setstate__	VisionEgg.ClassWithParameters-class.html#__setstate__
+VisionEgg.ClassWithParameters.__getstate__	VisionEgg.ClassWithParameters-class.html#__getstate__
+VisionEgg.ClassWithParameters.set	VisionEgg.ClassWithParameters-class.html#set
+VisionEgg.ClassWithParameters.constant_parameters_and_defaults	VisionEgg.ClassWithParameters-class.html#constant_parameters_and_defaults
+VisionEgg.ClassWithParameters.__safe_for_unpickling__	VisionEgg.ClassWithParameters-class.html#__safe_for_unpickling__
+VisionEgg.Core.FixationSpot.parameters_and_defaults	VisionEgg.Core.FixationSpot-class.html#parameters_and_defaults
+VisionEgg.Core.FixationSpot.__init__	VisionEgg.Core.FixationSpot-class.html#__init__
+VisionEgg.Core.FrameTimer	VisionEgg.Core.FrameTimer-class.html
+VisionEgg.Core.FrameTimer.get_longest_frame_duration_sec	VisionEgg.Core.FrameTimer-class.html#get_longest_frame_duration_sec
+VisionEgg.Core.FrameTimer.get_all_frametimes	VisionEgg.Core.FrameTimer-class.html#get_all_frametimes
+VisionEgg.Core.FrameTimer.print_histogram	VisionEgg.Core.FrameTimer-class.html#print_histogram
+VisionEgg.Core.FrameTimer.get_average_ifi_sec	VisionEgg.Core.FrameTimer-class.html#get_average_ifi_sec
+VisionEgg.Core.FrameTimer.__init__	VisionEgg.Core.FrameTimer-class.html#__init__
+VisionEgg.Core.FrameTimer.log_histogram	VisionEgg.Core.FrameTimer-class.html#log_histogram
+VisionEgg.Core.FrameTimer.tick	VisionEgg.Core.FrameTimer-class.html#tick
+VisionEgg.Core.FrameTimer.get_running_average_ifi_sec	VisionEgg.Core.FrameTimer-class.html#get_running_average_ifi_sec
+VisionEgg.Core.ModelView	VisionEgg.Core.ModelView-class.html
+VisionEgg.Core.ProjectionBaseClass.apply_to_vertices	VisionEgg.Core.ProjectionBaseClass-class.html#apply_to_vertices
+VisionEgg.ClassWithParameters.constant_parameters_and_defaults	VisionEgg.ClassWithParameters-class.html#constant_parameters_and_defaults
+VisionEgg.Core.ProjectionBaseClass.eye_2_norm_device	VisionEgg.Core.ProjectionBaseClass-class.html#eye_2_norm_device
+VisionEgg.ClassWithParameters.__getstate__	VisionEgg.ClassWithParameters-class.html#__getstate__
+VisionEgg.ClassWithParameters.set	VisionEgg.ClassWithParameters-class.html#set
+VisionEgg.Core.ProjectionBaseClass.stateless_translate	VisionEgg.Core.ProjectionBaseClass-class.html#stateless_translate
+VisionEgg.Core.ModelView.__init__	VisionEgg.Core.ModelView-class.html#__init__
+VisionEgg.ClassWithParameters.verify_parameters	VisionEgg.ClassWithParameters-class.html#verify_parameters
+VisionEgg.ClassWithParameters.is_constant_parameter	VisionEgg.ClassWithParameters-class.html#is_constant_parameter
+VisionEgg.Core.ProjectionBaseClass.set_gl_modelview	VisionEgg.Core.ProjectionBaseClass-class.html#set_gl_modelview
+VisionEgg.Core.ProjectionBaseClass.translate	VisionEgg.Core.ProjectionBaseClass-class.html#translate
+VisionEgg.ClassWithParameters.get_specified_type	VisionEgg.ClassWithParameters-class.html#get_specified_type
+VisionEgg.Core.ProjectionBaseClass.stateless_scale	VisionEgg.Core.ProjectionBaseClass-class.html#stateless_scale
+VisionEgg.ClassWithParameters.__setstate__	VisionEgg.ClassWithParameters-class.html#__setstate__
+VisionEgg.Core.ProjectionBaseClass.apply_to_vertex	VisionEgg.Core.ProjectionBaseClass-class.html#apply_to_vertex
+VisionEgg.Core.ProjectionBaseClass.look_at	VisionEgg.Core.ProjectionBaseClass-class.html#look_at
+VisionEgg.Core.ProjectionBaseClass.clip_2_norm_device	VisionEgg.Core.ProjectionBaseClass-class.html#clip_2_norm_device
+VisionEgg.Core.ProjectionBaseClass.eye_2_clip	VisionEgg.Core.ProjectionBaseClass-class.html#eye_2_clip
+VisionEgg.Core.ProjectionBaseClass.rotate	VisionEgg.Core.ProjectionBaseClass-class.html#rotate
+VisionEgg.Core.ProjectionBaseClass.scale	VisionEgg.Core.ProjectionBaseClass-class.html#scale
+VisionEgg.Core.ProjectionBaseClass._get_matrix_type	VisionEgg.Core.ProjectionBaseClass-class.html#_get_matrix_type
+VisionEgg.Core.ProjectionBaseClass.apply_to_gl	VisionEgg.Core.ProjectionBaseClass-class.html#apply_to_gl
+VisionEgg.Core.ProjectionBaseClass.get_matrix	VisionEgg.Core.ProjectionBaseClass-class.html#get_matrix
+VisionEgg.Core.ProjectionBaseClass.set_gl_projection	VisionEgg.Core.ProjectionBaseClass-class.html#set_gl_projection
+VisionEgg.Core.ProjectionBaseClass.parameters_and_defaults	VisionEgg.Core.ProjectionBaseClass-class.html#parameters_and_defaults
+VisionEgg.Core.ProjectionBaseClass.stateless_rotate	VisionEgg.Core.ProjectionBaseClass-class.html#stateless_rotate
+VisionEgg.Core.ProjectionBaseClass.push_and_set_gl_projection	VisionEgg.Core.ProjectionBaseClass-class.html#push_and_set_gl_projection
+VisionEgg.ClassWithParameters.__safe_for_unpickling__	VisionEgg.ClassWithParameters-class.html#__safe_for_unpickling__
+VisionEgg.Core.OrthographicProjection	VisionEgg.Core.OrthographicProjection-class.html
+VisionEgg.Core.ProjectionBaseClass.apply_to_vertices	VisionEgg.Core.ProjectionBaseClass-class.html#apply_to_vertices
+VisionEgg.ClassWithParameters.constant_parameters_and_defaults	VisionEgg.ClassWithParameters-class.html#constant_parameters_and_defaults
+VisionEgg.Core.ProjectionBaseClass.eye_2_norm_device	VisionEgg.Core.ProjectionBaseClass-class.html#eye_2_norm_device
+VisionEgg.ClassWithParameters.__getstate__	VisionEgg.ClassWithParameters-class.html#__getstate__
+VisionEgg.ClassWithParameters.set	VisionEgg.ClassWithParameters-class.html#set
+VisionEgg.Core.ProjectionBaseClass.stateless_translate	VisionEgg.Core.ProjectionBaseClass-class.html#stateless_translate
+VisionEgg.Core.OrthographicProjection.__init__	VisionEgg.Core.OrthographicProjection-class.html#__init__
+VisionEgg.ClassWithParameters.verify_parameters	VisionEgg.ClassWithParameters-class.html#verify_parameters
+VisionEgg.ClassWithParameters.is_constant_parameter	VisionEgg.ClassWithParameters-class.html#is_constant_parameter
+VisionEgg.Core.ProjectionBaseClass.set_gl_modelview	VisionEgg.Core.ProjectionBaseClass-class.html#set_gl_modelview
+VisionEgg.Core.ProjectionBaseClass.translate	VisionEgg.Core.ProjectionBaseClass-class.html#translate
+VisionEgg.ClassWithParameters.get_specified_type	VisionEgg.ClassWithParameters-class.html#get_specified_type
+VisionEgg.Core.ProjectionBaseClass.stateless_scale	VisionEgg.Core.ProjectionBaseClass-class.html#stateless_scale
+VisionEgg.ClassWithParameters.__setstate__	VisionEgg.ClassWithParameters-class.html#__setstate__
+VisionEgg.Core.ProjectionBaseClass.apply_to_vertex	VisionEgg.Core.ProjectionBaseClass-class.html#apply_to_vertex
+VisionEgg.Core.ProjectionBaseClass.look_at	VisionEgg.Core.ProjectionBaseClass-class.html#look_at
+VisionEgg.Core.ProjectionBaseClass.clip_2_norm_device	VisionEgg.Core.ProjectionBaseClass-class.html#clip_2_norm_device
+VisionEgg.Core.ProjectionBaseClass.eye_2_clip	VisionEgg.Core.ProjectionBaseClass-class.html#eye_2_clip
+VisionEgg.Core.ProjectionBaseClass.rotate	VisionEgg.Core.ProjectionBaseClass-class.html#rotate
+VisionEgg.Core.ProjectionBaseClass.scale	VisionEgg.Core.ProjectionBaseClass-class.html#scale
+VisionEgg.Core.ProjectionBaseClass._get_matrix_type	VisionEgg.Core.ProjectionBaseClass-class.html#_get_matrix_type
+VisionEgg.Core.ProjectionBaseClass.apply_to_gl	VisionEgg.Core.ProjectionBaseClass-class.html#apply_to_gl
+VisionEgg.Core.ProjectionBaseClass.get_matrix	VisionEgg.Core.ProjectionBaseClass-class.html#get_matrix
+VisionEgg.Core.ProjectionBaseClass.set_gl_projection	VisionEgg.Core.ProjectionBaseClass-class.html#set_gl_projection
+VisionEgg.Core.ProjectionBaseClass.parameters_and_defaults	VisionEgg.Core.ProjectionBaseClass-class.html#parameters_and_defaults
+VisionEgg.Core.ProjectionBaseClass.stateless_rotate	VisionEgg.Core.ProjectionBaseClass-class.html#stateless_rotate
+VisionEgg.Core.ProjectionBaseClass.push_and_set_gl_projection	VisionEgg.Core.ProjectionBaseClass-class.html#push_and_set_gl_projection
+VisionEgg.ClassWithParameters.__safe_for_unpickling__	VisionEgg.ClassWithParameters-class.html#__safe_for_unpickling__
+VisionEgg.Core.OrthographicProjectionNoZClip	VisionEgg.Core.OrthographicProjectionNoZClip-class.html
+VisionEgg.Core.ProjectionBaseClass.apply_to_vertices	VisionEgg.Core.ProjectionBaseClass-class.html#apply_to_vertices
+VisionEgg.ClassWithParameters.constant_parameters_and_defaults	VisionEgg.ClassWithParameters-class.html#constant_parameters_and_defaults
+VisionEgg.Core.ProjectionBaseClass.eye_2_norm_device	VisionEgg.Core.ProjectionBaseClass-class.html#eye_2_norm_device
+VisionEgg.ClassWithParameters.__getstate__	VisionEgg.ClassWithParameters-class.html#__getstate__
+VisionEgg.ClassWithParameters.set	VisionEgg.ClassWithParameters-class.html#set
+VisionEgg.Core.ProjectionBaseClass.stateless_translate	VisionEgg.Core.ProjectionBaseClass-class.html#stateless_translate
+VisionEgg.Core.OrthographicProjectionNoZClip.__init__	VisionEgg.Core.OrthographicProjectionNoZClip-class.html#__init__
+VisionEgg.ClassWithParameters.verify_parameters	VisionEgg.ClassWithParameters-class.html#verify_parameters
+VisionEgg.ClassWithParameters.is_constant_parameter	VisionEgg.ClassWithParameters-class.html#is_constant_parameter
+VisionEgg.Core.ProjectionBaseClass.set_gl_modelview	VisionEgg.Core.ProjectionBaseClass-class.html#set_gl_modelview
+VisionEgg.Core.ProjectionBaseClass.translate	VisionEgg.Core.ProjectionBaseClass-class.html#translate
+VisionEgg.ClassWithParameters.get_specified_type	VisionEgg.ClassWithParameters-class.html#get_specified_type
+VisionEgg.Core.ProjectionBaseClass.stateless_scale	VisionEgg.Core.ProjectionBaseClass-class.html#stateless_scale
+VisionEgg.ClassWithParameters.__setstate__	VisionEgg.ClassWithParameters-class.html#__setstate__
+VisionEgg.Core.ProjectionBaseClass.apply_to_vertex	VisionEgg.Core.ProjectionBaseClass-class.html#apply_to_vertex
+VisionEgg.Core.ProjectionBaseClass.look_at	VisionEgg.Core.ProjectionBaseClass-class.html#look_at
+VisionEgg.Core.ProjectionBaseClass.clip_2_norm_device	VisionEgg.Core.ProjectionBaseClass-class.html#clip_2_norm_device
+VisionEgg.Core.ProjectionBaseClass.eye_2_clip	VisionEgg.Core.ProjectionBaseClass-class.html#eye_2_clip
+VisionEgg.Core.ProjectionBaseClass.rotate	VisionEgg.Core.ProjectionBaseClass-class.html#rotate
+VisionEgg.Core.ProjectionBaseClass.scale	VisionEgg.Core.ProjectionBaseClass-class.html#scale
+VisionEgg.Core.ProjectionBaseClass._get_matrix_type	VisionEgg.Core.ProjectionBaseClass-class.html#_get_matrix_type
+VisionEgg.Core.ProjectionBaseClass.apply_to_gl	VisionEgg.Core.ProjectionBaseClass-class.html#apply_to_gl
+VisionEgg.Core.ProjectionBaseClass.get_matrix	VisionEgg.Core.ProjectionBaseClass-class.html#get_matrix
+VisionEgg.Core.ProjectionBaseClass.set_gl_projection	VisionEgg.Core.ProjectionBaseClass-class.html#set_gl_projection
+VisionEgg.Core.ProjectionBaseClass.parameters_and_defaults	VisionEgg.Core.ProjectionBaseClass-class.html#parameters_and_defaults
+VisionEgg.Core.ProjectionBaseClass.stateless_rotate	VisionEgg.Core.ProjectionBaseClass-class.html#stateless_rotate
+VisionEgg.Core.ProjectionBaseClass.push_and_set_gl_projection	VisionEgg.Core.ProjectionBaseClass-class.html#push_and_set_gl_projection
+VisionEgg.ClassWithParameters.__safe_for_unpickling__	VisionEgg.ClassWithParameters-class.html#__safe_for_unpickling__
+VisionEgg.Core.PerspectiveProjection	VisionEgg.Core.PerspectiveProjection-class.html
+VisionEgg.Core.ProjectionBaseClass.apply_to_vertices	VisionEgg.Core.ProjectionBaseClass-class.html#apply_to_vertices
+VisionEgg.ClassWithParameters.constant_parameters_and_defaults	VisionEgg.ClassWithParameters-class.html#constant_parameters_and_defaults
+VisionEgg.Core.ProjectionBaseClass.eye_2_norm_device	VisionEgg.Core.ProjectionBaseClass-class.html#eye_2_norm_device
+VisionEgg.ClassWithParameters.__getstate__	VisionEgg.ClassWithParameters-class.html#__getstate__
+VisionEgg.ClassWithParameters.set	VisionEgg.ClassWithParameters-class.html#set
+VisionEgg.Core.ProjectionBaseClass.stateless_translate	VisionEgg.Core.ProjectionBaseClass-class.html#stateless_translate
+VisionEgg.Core.PerspectiveProjection.__init__	VisionEgg.Core.PerspectiveProjection-class.html#__init__
+VisionEgg.ClassWithParameters.verify_parameters	VisionEgg.ClassWithParameters-class.html#verify_parameters
+VisionEgg.ClassWithParameters.is_constant_parameter	VisionEgg.ClassWithParameters-class.html#is_constant_parameter
+VisionEgg.Core.ProjectionBaseClass.set_gl_modelview	VisionEgg.Core.ProjectionBaseClass-class.html#set_gl_modelview
+VisionEgg.Core.ProjectionBaseClass.translate	VisionEgg.Core.ProjectionBaseClass-class.html#translate
+VisionEgg.ClassWithParameters.get_specified_type	VisionEgg.ClassWithParameters-class.html#get_specified_type
+VisionEgg.Core.ProjectionBaseClass.stateless_scale	VisionEgg.Core.ProjectionBaseClass-class.html#stateless_scale
+VisionEgg.ClassWithParameters.__setstate__	VisionEgg.ClassWithParameters-class.html#__setstate__
+VisionEgg.Core.ProjectionBaseClass.apply_to_vertex	VisionEgg.Core.ProjectionBaseClass-class.html#apply_to_vertex
+VisionEgg.Core.ProjectionBaseClass.look_at	VisionEgg.Core.ProjectionBaseClass-class.html#look_at
+VisionEgg.Core.ProjectionBaseClass.clip_2_norm_device	VisionEgg.Core.ProjectionBaseClass-class.html#clip_2_norm_device
+VisionEgg.Core.ProjectionBaseClass.eye_2_clip	VisionEgg.Core.ProjectionBaseClass-class.html#eye_2_clip
+VisionEgg.Core.ProjectionBaseClass.rotate	VisionEgg.Core.ProjectionBaseClass-class.html#rotate
+VisionEgg.Core.ProjectionBaseClass.scale	VisionEgg.Core.ProjectionBaseClass-class.html#scale
+VisionEgg.Core.ProjectionBaseClass._get_matrix_type	VisionEgg.Core.ProjectionBaseClass-class.html#_get_matrix_type
+VisionEgg.Core.ProjectionBaseClass.apply_to_gl	VisionEgg.Core.ProjectionBaseClass-class.html#apply_to_gl
+VisionEgg.Core.ProjectionBaseClass.get_matrix	VisionEgg.Core.ProjectionBaseClass-class.html#get_matrix
+VisionEgg.Core.ProjectionBaseClass.set_gl_projection	VisionEgg.Core.ProjectionBaseClass-class.html#set_gl_projection
+VisionEgg.Core.ProjectionBaseClass.parameters_and_defaults	VisionEgg.Core.ProjectionBaseClass-class.html#parameters_and_defaults
+VisionEgg.Core.ProjectionBaseClass.stateless_rotate	VisionEgg.Core.ProjectionBaseClass-class.html#stateless_rotate
+VisionEgg.Core.ProjectionBaseClass.push_and_set_gl_projection	VisionEgg.Core.ProjectionBaseClass-class.html#push_and_set_gl_projection
+VisionEgg.ClassWithParameters.__safe_for_unpickling__	VisionEgg.ClassWithParameters-class.html#__safe_for_unpickling__
+VisionEgg.Core.Projection	VisionEgg.Core.Projection-class.html
+VisionEgg.Core.ProjectionBaseClass.apply_to_vertices	VisionEgg.Core.ProjectionBaseClass-class.html#apply_to_vertices
+VisionEgg.ClassWithParameters.constant_parameters_and_defaults	VisionEgg.ClassWithParameters-class.html#constant_parameters_and_defaults
+VisionEgg.Core.ProjectionBaseClass.eye_2_norm_device	VisionEgg.Core.ProjectionBaseClass-class.html#eye_2_norm_device
+VisionEgg.ClassWithParameters.__getstate__	VisionEgg.ClassWithParameters-class.html#__getstate__
+VisionEgg.ClassWithParameters.set	VisionEgg.ClassWithParameters-class.html#set
+VisionEgg.Core.ProjectionBaseClass.stateless_translate	VisionEgg.Core.ProjectionBaseClass-class.html#stateless_translate
+VisionEgg.Core.Projection.__init__	VisionEgg.Core.Projection-class.html#__init__
+VisionEgg.ClassWithParameters.verify_parameters	VisionEgg.ClassWithParameters-class.html#verify_parameters
+VisionEgg.ClassWithParameters.is_constant_parameter	VisionEgg.ClassWithParameters-class.html#is_constant_parameter
+VisionEgg.Core.ProjectionBaseClass.set_gl_modelview	VisionEgg.Core.ProjectionBaseClass-class.html#set_gl_modelview
+VisionEgg.Core.ProjectionBaseClass.translate	VisionEgg.Core.ProjectionBaseClass-class.html#translate
+VisionEgg.ClassWithParameters.get_specified_type	VisionEgg.ClassWithParameters-class.html#get_specified_type
+VisionEgg.Core.ProjectionBaseClass.stateless_scale	VisionEgg.Core.ProjectionBaseClass-class.html#stateless_scale
+VisionEgg.ClassWithParameters.__setstate__	VisionEgg.ClassWithParameters-class.html#__setstate__
+VisionEgg.Core.ProjectionBaseClass.apply_to_vertex	VisionEgg.Core.ProjectionBaseClass-class.html#apply_to_vertex
+VisionEgg.Core.ProjectionBaseClass.look_at	VisionEgg.Core.ProjectionBaseClass-class.html#look_at
+VisionEgg.Core.ProjectionBaseClass.clip_2_norm_device	VisionEgg.Core.ProjectionBaseClass-class.html#clip_2_norm_device
+VisionEgg.Core.ProjectionBaseClass.eye_2_clip	VisionEgg.Core.ProjectionBaseClass-class.html#eye_2_clip
+VisionEgg.Core.ProjectionBaseClass.rotate	VisionEgg.Core.ProjectionBaseClass-class.html#rotate
+VisionEgg.Core.ProjectionBaseClass.scale	VisionEgg.Core.ProjectionBaseClass-class.html#scale
+VisionEgg.Core.ProjectionBaseClass._get_matrix_type	VisionEgg.Core.ProjectionBaseClass-class.html#_get_matrix_type
+VisionEgg.Core.ProjectionBaseClass.apply_to_gl	VisionEgg.Core.ProjectionBaseClass-class.html#apply_to_gl
+VisionEgg.Core.ProjectionBaseClass.get_matrix	VisionEgg.Core.ProjectionBaseClass-class.html#get_matrix
+VisionEgg.Core.ProjectionBaseClass.set_gl_projection	VisionEgg.Core.ProjectionBaseClass-class.html#set_gl_projection
+VisionEgg.Core.ProjectionBaseClass.parameters_and_defaults	VisionEgg.Core.ProjectionBaseClass-class.html#parameters_and_defaults
+VisionEgg.Core.ProjectionBaseClass.stateless_rotate	VisionEgg.Core.ProjectionBaseClass-class.html#stateless_rotate
+VisionEgg.Core.ProjectionBaseClass.push_and_set_gl_projection	VisionEgg.Core.ProjectionBaseClass-class.html#push_and_set_gl_projection
+VisionEgg.ClassWithParameters.__safe_for_unpickling__	VisionEgg.ClassWithParameters-class.html#__safe_for_unpickling__
+VisionEgg.Core.ProjectionBaseClass	VisionEgg.Core.ProjectionBaseClass-class.html
+VisionEgg.Core.ProjectionBaseClass.apply_to_vertices	VisionEgg.Core.ProjectionBaseClass-class.html#apply_to_vertices
+VisionEgg.ClassWithParameters.constant_parameters_and_defaults	VisionEgg.ClassWithParameters-class.html#constant_parameters_and_defaults
+VisionEgg.Core.ProjectionBaseClass.eye_2_norm_device	VisionEgg.Core.ProjectionBaseClass-class.html#eye_2_norm_device
+VisionEgg.ClassWithParameters.__getstate__	VisionEgg.ClassWithParameters-class.html#__getstate__
+VisionEgg.ClassWithParameters.set	VisionEgg.ClassWithParameters-class.html#set
+VisionEgg.Core.ProjectionBaseClass.stateless_translate	VisionEgg.Core.ProjectionBaseClass-class.html#stateless_translate
+VisionEgg.Core.ProjectionBaseClass.__init__	VisionEgg.Core.ProjectionBaseClass-class.html#__init__
+VisionEgg.ClassWithParameters.verify_parameters	VisionEgg.ClassWithParameters-class.html#verify_parameters
+VisionEgg.ClassWithParameters.is_constant_parameter	VisionEgg.ClassWithParameters-class.html#is_constant_parameter
+VisionEgg.Core.ProjectionBaseClass.set_gl_modelview	VisionEgg.Core.ProjectionBaseClass-class.html#set_gl_modelview
+VisionEgg.Core.ProjectionBaseClass.translate	VisionEgg.Core.ProjectionBaseClass-class.html#translate
+VisionEgg.ClassWithParameters.get_specified_type	VisionEgg.ClassWithParameters-class.html#get_specified_type
+VisionEgg.Core.ProjectionBaseClass.stateless_scale	VisionEgg.Core.ProjectionBaseClass-class.html#stateless_scale
+VisionEgg.ClassWithParameters.__setstate__	VisionEgg.ClassWithParameters-class.html#__setstate__
+VisionEgg.Core.ProjectionBaseClass.apply_to_vertex	VisionEgg.Core.ProjectionBaseClass-class.html#apply_to_vertex
+VisionEgg.Core.ProjectionBaseClass.look_at	VisionEgg.Core.ProjectionBaseClass-class.html#look_at
+VisionEgg.Core.ProjectionBaseClass.clip_2_norm_device	VisionEgg.Core.ProjectionBaseClass-class.html#clip_2_norm_device
+VisionEgg.Core.ProjectionBaseClass.eye_2_clip	VisionEgg.Core.ProjectionBaseClass-class.html#eye_2_clip
+VisionEgg.Core.ProjectionBaseClass.rotate	VisionEgg.Core.ProjectionBaseClass-class.html#rotate
+VisionEgg.Core.ProjectionBaseClass.scale	VisionEgg.Core.ProjectionBaseClass-class.html#scale
+VisionEgg.Core.ProjectionBaseClass._get_matrix_type	VisionEgg.Core.ProjectionBaseClass-class.html#_get_matrix_type
+VisionEgg.Core.ProjectionBaseClass.apply_to_gl	VisionEgg.Core.ProjectionBaseClass-class.html#apply_to_gl
+VisionEgg.Core.ProjectionBaseClass.get_matrix	VisionEgg.Core.ProjectionBaseClass-class.html#get_matrix
+VisionEgg.Core.ProjectionBaseClass.set_gl_projection	VisionEgg.Core.ProjectionBaseClass-class.html#set_gl_projection
+VisionEgg.Core.ProjectionBaseClass.parameters_and_defaults	VisionEgg.Core.ProjectionBaseClass-class.html#parameters_and_defaults
+VisionEgg.Core.ProjectionBaseClass.stateless_rotate	VisionEgg.Core.ProjectionBaseClass-class.html#stateless_rotate
+VisionEgg.Core.ProjectionBaseClass.push_and_set_gl_projection	VisionEgg.Core.ProjectionBaseClass-class.html#push_and_set_gl_projection
+VisionEgg.ClassWithParameters.__safe_for_unpickling__	VisionEgg.ClassWithParameters-class.html#__safe_for_unpickling__
+VisionEgg.Core.Screen	VisionEgg.Core.Screen-class.html
+VisionEgg.ClassWithParameters.set	VisionEgg.ClassWithParameters-class.html#set
+VisionEgg.Core.Screen.set_size	VisionEgg.Core.Screen-class.html#set_size
+VisionEgg.Core.Screen.query_refresh_rate	VisionEgg.Core.Screen-class.html#query_refresh_rate
+VisionEgg.Core.Screen.close	VisionEgg.Core.Screen-class.html#close
+VisionEgg.Core.Screen.measure_refresh_rate	VisionEgg.Core.Screen-class.html#measure_refresh_rate
+VisionEgg.Core.Screen.__init__	VisionEgg.Core.Screen-class.html#__init__
+VisionEgg.Core.Screen.size	VisionEgg.Core.Screen-class.html#size
+VisionEgg.ClassWithParameters.verify_parameters	VisionEgg.ClassWithParameters-class.html#verify_parameters
+VisionEgg.ClassWithParameters.is_constant_parameter	VisionEgg.ClassWithParameters-class.html#is_constant_parameter
+VisionEgg.ClassWithParameters.__setstate__	VisionEgg.ClassWithParameters-class.html#__setstate__
+VisionEgg.Core.Screen.make_current	VisionEgg.Core.Screen-class.html#make_current
+VisionEgg.Core.Screen.get_size	VisionEgg.Core.Screen-class.html#get_size
+VisionEgg.Core.Screen.set_gamma_ramp	VisionEgg.Core.Screen-class.html#set_gamma_ramp
+VisionEgg.ClassWithParameters.get_specified_type	VisionEgg.ClassWithParameters-class.html#get_specified_type
+VisionEgg.Core.Screen._open_gamma_file	VisionEgg.Core.Screen-class.html#_open_gamma_file
+VisionEgg.Core.Screen.put_pixels	VisionEgg.Core.Screen-class.html#put_pixels
+VisionEgg.Core.Screen.__del__	VisionEgg.Core.Screen-class.html#__del__
+VisionEgg.Core.Screen.get_framebuffer_as_array	VisionEgg.Core.Screen-class.html#get_framebuffer_as_array
+VisionEgg.Core.Screen._create_inverted_gamma_ramp	VisionEgg.Core.Screen-class.html#_create_inverted_gamma_ramp
+VisionEgg.Core.Screen.get_framebuffer_as_image	VisionEgg.Core.Screen-class.html#get_framebuffer_as_image
+VisionEgg.Core.Screen.constant_parameters_and_defaults	VisionEgg.Core.Screen-class.html#constant_parameters_and_defaults
+VisionEgg.Core.Screen.create_default	VisionEgg.Core.Screen-class.html#create_default
+VisionEgg.Core.Screen.parameters_and_defaults	VisionEgg.Core.Screen-class.html#parameters_and_defaults
+VisionEgg.ClassWithParameters.__getstate__	VisionEgg.ClassWithParameters-class.html#__getstate__
+VisionEgg.Core.Screen.clear	VisionEgg.Core.Screen-class.html#clear
+VisionEgg.ClassWithParameters.__safe_for_unpickling__	VisionEgg.ClassWithParameters-class.html#__safe_for_unpickling__
+VisionEgg.Core.SimplePerspectiveProjection	VisionEgg.Core.SimplePerspectiveProjection-class.html
+VisionEgg.Core.ProjectionBaseClass.apply_to_vertices	VisionEgg.Core.ProjectionBaseClass-class.html#apply_to_vertices
+VisionEgg.ClassWithParameters.constant_parameters_and_defaults	VisionEgg.ClassWithParameters-class.html#constant_parameters_and_defaults
+VisionEgg.Core.ProjectionBaseClass.eye_2_norm_device	VisionEgg.Core.ProjectionBaseClass-class.html#eye_2_norm_device
+VisionEgg.ClassWithParameters.__getstate__	VisionEgg.ClassWithParameters-class.html#__getstate__
+VisionEgg.ClassWithParameters.set	VisionEgg.ClassWithParameters-class.html#set
+VisionEgg.Core.ProjectionBaseClass.stateless_translate	VisionEgg.Core.ProjectionBaseClass-class.html#stateless_translate
+VisionEgg.Core.SimplePerspectiveProjection.__init__	VisionEgg.Core.SimplePerspectiveProjection-class.html#__init__
+VisionEgg.Core.ProjectionBaseClass.scale	VisionEgg.Core.ProjectionBaseClass-class.html#scale
+VisionEgg.ClassWithParameters.is_constant_parameter	VisionEgg.ClassWithParameters-class.html#is_constant_parameter
+VisionEgg.Core.ProjectionBaseClass.set_gl_modelview	VisionEgg.Core.ProjectionBaseClass-class.html#set_gl_modelview
+VisionEgg.Core.ProjectionBaseClass.translate	VisionEgg.Core.ProjectionBaseClass-class.html#translate
+VisionEgg.ClassWithParameters.get_specified_type	VisionEgg.ClassWithParameters-class.html#get_specified_type
+VisionEgg.Core.ProjectionBaseClass.stateless_scale	VisionEgg.Core.ProjectionBaseClass-class.html#stateless_scale
+VisionEgg.ClassWithParameters.__setstate__	VisionEgg.ClassWithParameters-class.html#__setstate__
+VisionEgg.Core.ProjectionBaseClass.apply_to_vertex	VisionEgg.Core.ProjectionBaseClass-class.html#apply_to_vertex
+VisionEgg.Core.ProjectionBaseClass.look_at	VisionEgg.Core.ProjectionBaseClass-class.html#look_at
+VisionEgg.Core.ProjectionBaseClass.clip_2_norm_device	VisionEgg.Core.ProjectionBaseClass-class.html#clip_2_norm_device
+VisionEgg.Core.ProjectionBaseClass.eye_2_clip	VisionEgg.Core.ProjectionBaseClass-class.html#eye_2_clip
+VisionEgg.Core.ProjectionBaseClass.push_and_set_gl_projection	VisionEgg.Core.ProjectionBaseClass-class.html#push_and_set_gl_projection
+VisionEgg.Core.ProjectionBaseClass._get_matrix_type	VisionEgg.Core.ProjectionBaseClass-class.html#_get_matrix_type
+VisionEgg.Core.ProjectionBaseClass.apply_to_gl	VisionEgg.Core.ProjectionBaseClass-class.html#apply_to_gl
+VisionEgg.Core.ProjectionBaseClass.get_matrix	VisionEgg.Core.ProjectionBaseClass-class.html#get_matrix
+VisionEgg.Core.ProjectionBaseClass.set_gl_projection	VisionEgg.Core.ProjectionBaseClass-class.html#set_gl_projection
+VisionEgg.Core.ProjectionBaseClass.parameters_and_defaults	VisionEgg.Core.ProjectionBaseClass-class.html#parameters_and_defaults
+VisionEgg.Core.ProjectionBaseClass.stateless_rotate	VisionEgg.Core.ProjectionBaseClass-class.html#stateless_rotate
+VisionEgg.Core.SimplePerspectiveProjection._compute_matrix	VisionEgg.Core.SimplePerspectiveProjection-class.html#_compute_matrix
+VisionEgg.Core.ProjectionBaseClass.rotate	VisionEgg.Core.ProjectionBaseClass-class.html#rotate
+VisionEgg.ClassWithParameters.verify_parameters	VisionEgg.ClassWithParameters-class.html#verify_parameters
+VisionEgg.ClassWithParameters.__safe_for_unpickling__	VisionEgg.ClassWithParameters-class.html#__safe_for_unpickling__
+VisionEgg.Core.Stimulus	VisionEgg.Core.Stimulus-class.html
+VisionEgg.ClassWithParameters.get_specified_type	VisionEgg.ClassWithParameters-class.html#get_specified_type
+VisionEgg.Core.Stimulus.draw	VisionEgg.Core.Stimulus-class.html#draw
+VisionEgg.ClassWithParameters.verify_parameters	VisionEgg.ClassWithParameters-class.html#verify_parameters
+VisionEgg.ClassWithParameters.is_constant_parameter	VisionEgg.ClassWithParameters-class.html#is_constant_parameter
+VisionEgg.ClassWithParameters.__setstate__	VisionEgg.ClassWithParameters-class.html#__setstate__
+VisionEgg.ClassWithParameters.__getstate__	VisionEgg.ClassWithParameters-class.html#__getstate__
+VisionEgg.ClassWithParameters.set	VisionEgg.ClassWithParameters-class.html#set
+VisionEgg.ClassWithParameters.constant_parameters_and_defaults	VisionEgg.ClassWithParameters-class.html#constant_parameters_and_defaults
+VisionEgg.ClassWithParameters.__safe_for_unpickling__	VisionEgg.ClassWithParameters-class.html#__safe_for_unpickling__
+VisionEgg.ClassWithParameters.parameters_and_defaults	VisionEgg.ClassWithParameters-class.html#parameters_and_defaults
+VisionEgg.Core.Stimulus.__init__	VisionEgg.Core.Stimulus-class.html#__init__
+VisionEgg.Core.Viewport	VisionEgg.Core.Viewport-class.html
+VisionEgg.ClassWithParameters.set	VisionEgg.ClassWithParameters-class.html#set
+VisionEgg.Core.Viewport.norm_device_2_window	VisionEgg.Core.Viewport-class.html#norm_device_2_window
+VisionEgg.Core.Viewport.__init__	VisionEgg.Core.Viewport-class.html#__init__
+VisionEgg.ClassWithParameters.verify_parameters	VisionEgg.ClassWithParameters-class.html#verify_parameters
+VisionEgg.ClassWithParameters.is_constant_parameter	VisionEgg.ClassWithParameters-class.html#is_constant_parameter
+VisionEgg.Core.Viewport.make_current	VisionEgg.Core.Viewport-class.html#make_current
+VisionEgg.Core.Viewport.eye_2_window	VisionEgg.Core.Viewport-class.html#eye_2_window
+VisionEgg.ClassWithParameters.__getstate__	VisionEgg.ClassWithParameters-class.html#__getstate__
+VisionEgg.ClassWithParameters.get_specified_type	VisionEgg.ClassWithParameters-class.html#get_specified_type
+VisionEgg.Core.Viewport.draw	VisionEgg.Core.Viewport-class.html#draw
+VisionEgg.ClassWithParameters.__setstate__	VisionEgg.ClassWithParameters-class.html#__setstate__
+VisionEgg.ClassWithParameters.constant_parameters_and_defaults	VisionEgg.ClassWithParameters-class.html#constant_parameters_and_defaults
+VisionEgg.Core.Viewport.parameters_and_defaults	VisionEgg.Core.Viewport-class.html#parameters_and_defaults
+VisionEgg.Core.Viewport.clip_2_window	VisionEgg.Core.Viewport-class.html#clip_2_window
+VisionEgg.ClassWithParameters.__safe_for_unpickling__	VisionEgg.ClassWithParameters-class.html#__safe_for_unpickling__
+VisionEgg.Core.Viewport.make_new_pixel_coord_projection	VisionEgg.Core.Viewport-class.html#make_new_pixel_coord_projection
+VisionEgg.Daq.Analog	VisionEgg.Daq.Analog-class.html
+VisionEgg.ClassWithParameters.get_specified_type	VisionEgg.ClassWithParameters-class.html#get_specified_type
+VisionEgg.ClassWithParameters.verify_parameters	VisionEgg.ClassWithParameters-class.html#verify_parameters
+VisionEgg.ClassWithParameters.is_constant_parameter	VisionEgg.ClassWithParameters-class.html#is_constant_parameter
+VisionEgg.ClassWithParameters.__setstate__	VisionEgg.ClassWithParameters-class.html#__setstate__
+VisionEgg.ClassWithParameters.__getstate__	VisionEgg.ClassWithParameters-class.html#__getstate__
+VisionEgg.ClassWithParameters.set	VisionEgg.ClassWithParameters-class.html#set
+VisionEgg.Daq.Analog.constant_parameters_and_defaults	VisionEgg.Daq.Analog-class.html#constant_parameters_and_defaults
+VisionEgg.ClassWithParameters.__safe_for_unpickling__	VisionEgg.ClassWithParameters-class.html#__safe_for_unpickling__
+VisionEgg.ClassWithParameters.parameters_and_defaults	VisionEgg.ClassWithParameters-class.html#parameters_and_defaults
+VisionEgg.Daq.SignalType.__init__	VisionEgg.Daq.SignalType-class.html#__init__
+VisionEgg.Daq.Buffered	VisionEgg.Daq.Buffered-class.html
+VisionEgg.ClassWithParameters.get_specified_type	VisionEgg.ClassWithParameters-class.html#get_specified_type
+VisionEgg.ClassWithParameters.set	VisionEgg.ClassWithParameters-class.html#set
+VisionEgg.ClassWithParameters.is_constant_parameter	VisionEgg.ClassWithParameters-class.html#is_constant_parameter
+VisionEgg.ClassWithParameters.__setstate__	VisionEgg.ClassWithParameters-class.html#__setstate__
+VisionEgg.ClassWithParameters.__getstate__	VisionEgg.ClassWithParameters-class.html#__getstate__
+VisionEgg.ClassWithParameters.verify_parameters	VisionEgg.ClassWithParameters-class.html#verify_parameters
+VisionEgg.ClassWithParameters.constant_parameters_and_defaults	VisionEgg.ClassWithParameters-class.html#constant_parameters_and_defaults
+VisionEgg.ClassWithParameters.__safe_for_unpickling__	VisionEgg.ClassWithParameters-class.html#__safe_for_unpickling__
+VisionEgg.Daq.Buffered.parameters_and_defaults	VisionEgg.Daq.Buffered-class.html#parameters_and_defaults
+VisionEgg.Daq.DaqMode.__init__	VisionEgg.Daq.DaqMode-class.html#__init__
+VisionEgg.Daq.Channel	VisionEgg.Daq.Channel-class.html
+VisionEgg.Daq.Channel.arm_trigger	VisionEgg.Daq.Channel-class.html#arm_trigger
+VisionEgg.ClassWithParameters.get_specified_type	VisionEgg.ClassWithParameters-class.html#get_specified_type
+VisionEgg.ClassWithParameters.verify_parameters	VisionEgg.ClassWithParameters-class.html#verify_parameters
+VisionEgg.ClassWithParameters.is_constant_parameter	VisionEgg.ClassWithParameters-class.html#is_constant_parameter
+VisionEgg.ClassWithParameters.__setstate__	VisionEgg.ClassWithParameters-class.html#__setstate__
+VisionEgg.ClassWithParameters.__getstate__	VisionEgg.ClassWithParameters-class.html#__getstate__
+VisionEgg.ClassWithParameters.set	VisionEgg.ClassWithParameters-class.html#set
+VisionEgg.Daq.Channel.constant_parameters_and_defaults	VisionEgg.Daq.Channel-class.html#constant_parameters_and_defaults
+VisionEgg.ClassWithParameters.__safe_for_unpickling__	VisionEgg.ClassWithParameters-class.html#__safe_for_unpickling__
+VisionEgg.ClassWithParameters.parameters_and_defaults	VisionEgg.ClassWithParameters-class.html#parameters_and_defaults
+VisionEgg.Daq.Channel.__init__	VisionEgg.Daq.Channel-class.html#__init__
+VisionEgg.Daq.ChannelParameters	VisionEgg.Daq.ChannelParameters-class.html
+VisionEgg.ClassWithParameters.get_specified_type	VisionEgg.ClassWithParameters-class.html#get_specified_type
+VisionEgg.ClassWithParameters.verify_parameters	VisionEgg.ClassWithParameters-class.html#verify_parameters
+VisionEgg.ClassWithParameters.set	VisionEgg.ClassWithParameters-class.html#set
+VisionEgg.ClassWithParameters.is_constant_parameter	VisionEgg.ClassWithParameters-class.html#is_constant_parameter
+VisionEgg.ClassWithParameters.__setstate__	VisionEgg.ClassWithParameters-class.html#__setstate__
+VisionEgg.ClassWithParameters.__safe_for_unpickling__	VisionEgg.ClassWithParameters-class.html#__safe_for_unpickling__
+VisionEgg.ClassWithParameters.constant_parameters_and_defaults	VisionEgg.ClassWithParameters-class.html#constant_parameters_and_defaults
+VisionEgg.ClassWithParameters.__getstate__	VisionEgg.ClassWithParameters-class.html#__getstate__
+VisionEgg.ClassWithParameters.parameters_and_defaults	VisionEgg.ClassWithParameters-class.html#parameters_and_defaults
+VisionEgg.ClassWithParameters.__init__	VisionEgg.ClassWithParameters-class.html#__init__
+VisionEgg.Daq.DaqMode	VisionEgg.Daq.DaqMode-class.html
+VisionEgg.ClassWithParameters.get_specified_type	VisionEgg.ClassWithParameters-class.html#get_specified_type
+VisionEgg.ClassWithParameters.verify_parameters	VisionEgg.ClassWithParameters-class.html#verify_parameters
+VisionEgg.ClassWithParameters.is_constant_parameter	VisionEgg.ClassWithParameters-class.html#is_constant_parameter
+VisionEgg.ClassWithParameters.__setstate__	VisionEgg.ClassWithParameters-class.html#__setstate__
+VisionEgg.ClassWithParameters.__getstate__	VisionEgg.ClassWithParameters-class.html#__getstate__
+VisionEgg.ClassWithParameters.set	VisionEgg.ClassWithParameters-class.html#set
+VisionEgg.ClassWithParameters.constant_parameters_and_defaults	VisionEgg.ClassWithParameters-class.html#constant_parameters_and_defaults
+VisionEgg.ClassWithParameters.__safe_for_unpickling__	VisionEgg.ClassWithParameters-class.html#__safe_for_unpickling__
+VisionEgg.ClassWithParameters.parameters_and_defaults	VisionEgg.ClassWithParameters-class.html#parameters_and_defaults
+VisionEgg.Daq.DaqMode.__init__	VisionEgg.Daq.DaqMode-class.html#__init__
+VisionEgg.Daq.Device	VisionEgg.Daq.Device-class.html
+VisionEgg.Daq.Device.add_channel	VisionEgg.Daq.Device-class.html#add_channel
+VisionEgg.Daq.Device.__init__	VisionEgg.Daq.Device-class.html#__init__
+VisionEgg.Daq.Digital	VisionEgg.Daq.Digital-class.html
+VisionEgg.ClassWithParameters.get_specified_type	VisionEgg.ClassWithParameters-class.html#get_specified_type
+VisionEgg.ClassWithParameters.verify_parameters	VisionEgg.ClassWithParameters-class.html#verify_parameters
+VisionEgg.ClassWithParameters.is_constant_parameter	VisionEgg.ClassWithParameters-class.html#is_constant_parameter
+VisionEgg.ClassWithParameters.__setstate__	VisionEgg.ClassWithParameters-class.html#__setstate__
+VisionEgg.ClassWithParameters.__getstate__	VisionEgg.ClassWithParameters-class.html#__getstate__
+VisionEgg.ClassWithParameters.set	VisionEgg.ClassWithParameters-class.html#set
+VisionEgg.Daq.SignalType.constant_parameters_and_defaults	VisionEgg.Daq.SignalType-class.html#constant_parameters_and_defaults
+VisionEgg.ClassWithParameters.__safe_for_unpickling__	VisionEgg.ClassWithParameters-class.html#__safe_for_unpickling__
+VisionEgg.ClassWithParameters.parameters_and_defaults	VisionEgg.ClassWithParameters-class.html#parameters_and_defaults
+VisionEgg.Daq.SignalType.__init__	VisionEgg.Daq.SignalType-class.html#__init__
+VisionEgg.Daq.Functionality	VisionEgg.Daq.Functionality-class.html
+VisionEgg.ClassWithParameters.get_specified_type	VisionEgg.ClassWithParameters-class.html#get_specified_type
+VisionEgg.ClassWithParameters.verify_parameters	VisionEgg.ClassWithParameters-class.html#verify_parameters
+VisionEgg.ClassWithParameters.is_constant_parameter	VisionEgg.ClassWithParameters-class.html#is_constant_parameter
+VisionEgg.ClassWithParameters.__setstate__	VisionEgg.ClassWithParameters-class.html#__setstate__
+VisionEgg.ClassWithParameters.__getstate__	VisionEgg.ClassWithParameters-class.html#__getstate__
+VisionEgg.ClassWithParameters.set	VisionEgg.ClassWithParameters-class.html#set
+VisionEgg.ClassWithParameters.constant_parameters_and_defaults	VisionEgg.ClassWithParameters-class.html#constant_parameters_and_defaults
+VisionEgg.ClassWithParameters.__safe_for_unpickling__	VisionEgg.ClassWithParameters-class.html#__safe_for_unpickling__
+VisionEgg.ClassWithParameters.parameters_and_defaults	VisionEgg.ClassWithParameters-class.html#parameters_and_defaults
+VisionEgg.Daq.Functionality.__init__	VisionEgg.Daq.Functionality-class.html#__init__
+VisionEgg.Daq.Immediate	VisionEgg.Daq.Immediate-class.html
+VisionEgg.ClassWithParameters.get_specified_type	VisionEgg.ClassWithParameters-class.html#get_specified_type
+VisionEgg.ClassWithParameters.verify_parameters	VisionEgg.ClassWithParameters-class.html#verify_parameters
+VisionEgg.ClassWithParameters.is_constant_parameter	VisionEgg.ClassWithParameters-class.html#is_constant_parameter
+VisionEgg.ClassWithParameters.__setstate__	VisionEgg.ClassWithParameters-class.html#__setstate__
+VisionEgg.ClassWithParameters.__getstate__	VisionEgg.ClassWithParameters-class.html#__getstate__
+VisionEgg.ClassWithParameters.set	VisionEgg.ClassWithParameters-class.html#set
+VisionEgg.ClassWithParameters.constant_parameters_and_defaults	VisionEgg.ClassWithParameters-class.html#constant_parameters_and_defaults
+VisionEgg.ClassWithParameters.__safe_for_unpickling__	VisionEgg.ClassWithParameters-class.html#__safe_for_unpickling__
+VisionEgg.ClassWithParameters.parameters_and_defaults	VisionEgg.ClassWithParameters-class.html#parameters_and_defaults
+VisionEgg.Daq.DaqMode.__init__	VisionEgg.Daq.DaqMode-class.html#__init__
+VisionEgg.Daq.Input	VisionEgg.Daq.Input-class.html
+VisionEgg.ClassWithParameters.get_specified_type	VisionEgg.ClassWithParameters-class.html#get_specified_type
+VisionEgg.ClassWithParameters.verify_parameters	VisionEgg.ClassWithParameters-class.html#verify_parameters
+VisionEgg.ClassWithParameters.is_constant_parameter	VisionEgg.ClassWithParameters-class.html#is_constant_parameter
+VisionEgg.ClassWithParameters.__setstate__	VisionEgg.ClassWithParameters-class.html#__setstate__
+VisionEgg.Daq.Input.get_data	VisionEgg.Daq.Input-class.html#get_data
+VisionEgg.ClassWithParameters.__getstate__	VisionEgg.ClassWithParameters-class.html#__getstate__
+VisionEgg.ClassWithParameters.set	VisionEgg.ClassWithParameters-class.html#set
+VisionEgg.ClassWithParameters.constant_parameters_and_defaults	VisionEgg.ClassWithParameters-class.html#constant_parameters_and_defaults
+VisionEgg.ClassWithParameters.__safe_for_unpickling__	VisionEgg.ClassWithParameters-class.html#__safe_for_unpickling__
+VisionEgg.ClassWithParameters.parameters_and_defaults	VisionEgg.ClassWithParameters-class.html#parameters_and_defaults
+VisionEgg.Daq.Functionality.__init__	VisionEgg.Daq.Functionality-class.html#__init__
+VisionEgg.Daq.Output	VisionEgg.Daq.Output-class.html
+VisionEgg.ClassWithParameters.get_specified_type	VisionEgg.ClassWithParameters-class.html#get_specified_type
+VisionEgg.ClassWithParameters.verify_parameters	VisionEgg.ClassWithParameters-class.html#verify_parameters
+VisionEgg.ClassWithParameters.constant_parameters_and_defaults	VisionEgg.ClassWithParameters-class.html#constant_parameters_and_defaults
+VisionEgg.ClassWithParameters.is_constant_parameter	VisionEgg.ClassWithParameters-class.html#is_constant_parameter
+VisionEgg.ClassWithParameters.__setstate__	VisionEgg.ClassWithParameters-class.html#__setstate__
+VisionEgg.ClassWithParameters.__getstate__	VisionEgg.ClassWithParameters-class.html#__getstate__
+VisionEgg.ClassWithParameters.set	VisionEgg.ClassWithParameters-class.html#set
+VisionEgg.Daq.Output.put_data	VisionEgg.Daq.Output-class.html#put_data
+VisionEgg.ClassWithParameters.__safe_for_unpickling__	VisionEgg.ClassWithParameters-class.html#__safe_for_unpickling__
+VisionEgg.ClassWithParameters.parameters_and_defaults	VisionEgg.ClassWithParameters-class.html#parameters_and_defaults
+VisionEgg.Daq.Functionality.__init__	VisionEgg.Daq.Functionality-class.html#__init__
+VisionEgg.Daq.SignalType	VisionEgg.Daq.SignalType-class.html
+VisionEgg.ClassWithParameters.get_specified_type	VisionEgg.ClassWithParameters-class.html#get_specified_type
+VisionEgg.ClassWithParameters.verify_parameters	VisionEgg.ClassWithParameters-class.html#verify_parameters
+VisionEgg.ClassWithParameters.is_constant_parameter	VisionEgg.ClassWithParameters-class.html#is_constant_parameter
+VisionEgg.ClassWithParameters.__setstate__	VisionEgg.ClassWithParameters-class.html#__setstate__
+VisionEgg.ClassWithParameters.__getstate__	VisionEgg.ClassWithParameters-class.html#__getstate__
+VisionEgg.ClassWithParameters.set	VisionEgg.ClassWithParameters-class.html#set
+VisionEgg.Daq.SignalType.constant_parameters_and_defaults	VisionEgg.Daq.SignalType-class.html#constant_parameters_and_defaults
+VisionEgg.ClassWithParameters.__safe_for_unpickling__	VisionEgg.ClassWithParameters-class.html#__safe_for_unpickling__
+VisionEgg.ClassWithParameters.parameters_and_defaults	VisionEgg.ClassWithParameters-class.html#parameters_and_defaults
+VisionEgg.Daq.SignalType.__init__	VisionEgg.Daq.SignalType-class.html#__init__
+VisionEgg.Daq.Trigger	VisionEgg.Daq.Trigger-class.html
+VisionEgg.ClassWithParameters.get_specified_type	VisionEgg.ClassWithParameters-class.html#get_specified_type
+VisionEgg.ClassWithParameters.verify_parameters	VisionEgg.ClassWithParameters-class.html#verify_parameters
+VisionEgg.ClassWithParameters.set	VisionEgg.ClassWithParameters-class.html#set
+VisionEgg.ClassWithParameters.is_constant_parameter	VisionEgg.ClassWithParameters-class.html#is_constant_parameter
+VisionEgg.ClassWithParameters.__setstate__	VisionEgg.ClassWithParameters-class.html#__setstate__
+VisionEgg.ClassWithParameters.__safe_for_unpickling__	VisionEgg.ClassWithParameters-class.html#__safe_for_unpickling__
+VisionEgg.ClassWithParameters.constant_parameters_and_defaults	VisionEgg.ClassWithParameters-class.html#constant_parameters_and_defaults
+VisionEgg.ClassWithParameters.__getstate__	VisionEgg.ClassWithParameters-class.html#__getstate__
+VisionEgg.ClassWithParameters.parameters_and_defaults	VisionEgg.ClassWithParameters-class.html#parameters_and_defaults
+VisionEgg.ClassWithParameters.__init__	VisionEgg.ClassWithParameters-class.html#__init__
+VisionEgg.DaqKeyboard.KeyboardInput	VisionEgg.DaqKeyboard.KeyboardInput-class.html
+VisionEgg.DaqKeyboard.KeyboardInput.get_string_data	VisionEgg.DaqKeyboard.KeyboardInput-class.html#get_string_data
+VisionEgg.DaqKeyboard.KeyboardInput.get_data	VisionEgg.DaqKeyboard.KeyboardInput-class.html#get_data
+VisionEgg.DaqKeyboard.KeyboardInput.get_pygame_data	VisionEgg.DaqKeyboard.KeyboardInput-class.html#get_pygame_data
+VisionEgg.DaqKeyboard.KeyboardTriggerInController	VisionEgg.DaqKeyboard.KeyboardTriggerInController-class.html
+VisionEgg.FlowControl.Controller.set_eval_frequency	VisionEgg.FlowControl.Controller-class.html#set_eval_frequency
+VisionEgg.FlowControl.Controller.flag_dictionary	VisionEgg.FlowControl.Controller-class.html#flag_dictionary
+VisionEgg.FlowControl.Controller.TIME_INDEPENDENT	VisionEgg.FlowControl.Controller-class.html#TIME_INDEPENDENT
+VisionEgg.DaqKeyboard.KeyboardTriggerInController.between_go_eval	VisionEgg.DaqKeyboard.KeyboardTriggerInController-class.html#between_go_eval
+VisionEgg.FlowControl.Controller.FRAMES_SINCE_GO	VisionEgg.FlowControl.Controller-class.html#FRAMES_SINCE_GO
+VisionEgg.DaqKeyboard.KeyboardTriggerInController.__init__	VisionEgg.DaqKeyboard.KeyboardTriggerInController-class.html#__init__
+VisionEgg.FlowControl.Controller.NOT_BETWEEN_GO	VisionEgg.FlowControl.Controller-class.html#NOT_BETWEEN_GO
+VisionEgg.FlowControl.Controller.FRAMES_ABSOLUTE	VisionEgg.FlowControl.Controller-class.html#FRAMES_ABSOLUTE
+VisionEgg.FlowControl.Controller.NEVER	VisionEgg.FlowControl.Controller-class.html#NEVER
+VisionEgg.FlowControl.Controller.returns_type	VisionEgg.FlowControl.Controller-class.html#returns_type
+VisionEgg.FlowControl.Controller.evaluate_now	VisionEgg.FlowControl.Controller-class.html#evaluate_now
+VisionEgg.FlowControl.Controller._test_self	VisionEgg.FlowControl.Controller-class.html#_test_self
+VisionEgg.FlowControl.Controller.TRANSITIONS	VisionEgg.FlowControl.Controller-class.html#TRANSITIONS
+VisionEgg.FlowControl.Controller.TIME_SEC_SINCE_GO	VisionEgg.FlowControl.Controller-class.html#TIME_SEC_SINCE_GO
+VisionEgg.FlowControl.Controller.ONCE	VisionEgg.FlowControl.Controller-class.html#ONCE
+VisionEgg.FlowControl.Controller.EVERY_FRAME	VisionEgg.FlowControl.Controller-class.html#EVERY_FRAME
+VisionEgg.FlowControl.Controller.TIME_SEC_ABSOLUTE	VisionEgg.FlowControl.Controller-class.html#TIME_SEC_ABSOLUTE
+VisionEgg.DaqKeyboard.KeyboardTriggerInController.during_go_eval	VisionEgg.DaqKeyboard.KeyboardTriggerInController-class.html#during_go_eval
+VisionEgg.FlowControl.Controller.NOT_DURING_GO	VisionEgg.FlowControl.Controller-class.html#NOT_DURING_GO
+VisionEgg.DaqLPT.LPTChannel	VisionEgg.DaqLPT.LPTChannel-class.html
+VisionEgg.Daq.Channel.arm_trigger	VisionEgg.Daq.Channel-class.html#arm_trigger
+VisionEgg.ClassWithParameters.get_specified_type	VisionEgg.ClassWithParameters-class.html#get_specified_type
+VisionEgg.ClassWithParameters.verify_parameters	VisionEgg.ClassWithParameters-class.html#verify_parameters
+VisionEgg.ClassWithParameters.is_constant_parameter	VisionEgg.ClassWithParameters-class.html#is_constant_parameter
+VisionEgg.ClassWithParameters.__setstate__	VisionEgg.ClassWithParameters-class.html#__setstate__
+VisionEgg.ClassWithParameters.__getstate__	VisionEgg.ClassWithParameters-class.html#__getstate__
+VisionEgg.ClassWithParameters.set	VisionEgg.ClassWithParameters-class.html#set
+VisionEgg.Daq.Channel.constant_parameters_and_defaults	VisionEgg.Daq.Channel-class.html#constant_parameters_and_defaults
+VisionEgg.ClassWithParameters.__safe_for_unpickling__	VisionEgg.ClassWithParameters-class.html#__safe_for_unpickling__
+VisionEgg.ClassWithParameters.parameters_and_defaults	VisionEgg.ClassWithParameters-class.html#parameters_and_defaults
+VisionEgg.DaqLPT.LPTChannel.__init__	VisionEgg.DaqLPT.LPTChannel-class.html#__init__
+VisionEgg.DaqLPT.LPTDevice	VisionEgg.DaqLPT.LPTDevice-class.html
+VisionEgg.DaqLPT.LPTDevice.add_channel	VisionEgg.DaqLPT.LPTDevice-class.html#add_channel
+VisionEgg.DaqLPT.LPTDevice.__init__	VisionEgg.DaqLPT.LPTDevice-class.html#__init__
+VisionEgg.DaqLPT.LPTInput	VisionEgg.DaqLPT.LPTInput-class.html
+VisionEgg.ClassWithParameters.get_specified_type	VisionEgg.ClassWithParameters-class.html#get_specified_type
+VisionEgg.ClassWithParameters.verify_parameters	VisionEgg.ClassWithParameters-class.html#verify_parameters
+VisionEgg.ClassWithParameters.is_constant_parameter	VisionEgg.ClassWithParameters-class.html#is_constant_parameter
+VisionEgg.ClassWithParameters.__setstate__	VisionEgg.ClassWithParameters-class.html#__setstate__
+VisionEgg.DaqLPT.LPTInput.get_data	VisionEgg.DaqLPT.LPTInput-class.html#get_data
+VisionEgg.ClassWithParameters.__getstate__	VisionEgg.ClassWithParameters-class.html#__getstate__
+VisionEgg.ClassWithParameters.set	VisionEgg.ClassWithParameters-class.html#set
+VisionEgg.ClassWithParameters.constant_parameters_and_defaults	VisionEgg.ClassWithParameters-class.html#constant_parameters_and_defaults
+VisionEgg.ClassWithParameters.__safe_for_unpickling__	VisionEgg.ClassWithParameters-class.html#__safe_for_unpickling__
+VisionEgg.ClassWithParameters.parameters_and_defaults	VisionEgg.ClassWithParameters-class.html#parameters_and_defaults
+VisionEgg.Daq.Functionality.__init__	VisionEgg.Daq.Functionality-class.html#__init__
+VisionEgg.DaqLPT.LPTOutput	VisionEgg.DaqLPT.LPTOutput-class.html
+VisionEgg.ClassWithParameters.set	VisionEgg.ClassWithParameters-class.html#set
+VisionEgg.DaqLPT.LPTOutput.put_data	VisionEgg.DaqLPT.LPTOutput-class.html#put_data
+VisionEgg.Daq.Functionality.__init__	VisionEgg.Daq.Functionality-class.html#__init__
+VisionEgg.ClassWithParameters.verify_parameters	VisionEgg.ClassWithParameters-class.html#verify_parameters
+VisionEgg.ClassWithParameters.is_constant_parameter	VisionEgg.ClassWithParameters-class.html#is_constant_parameter
+VisionEgg.ClassWithParameters.__getstate__	VisionEgg.ClassWithParameters-class.html#__getstate__
+VisionEgg.ClassWithParameters.get_specified_type	VisionEgg.ClassWithParameters-class.html#get_specified_type
+VisionEgg.ClassWithParameters.__setstate__	VisionEgg.ClassWithParameters-class.html#__setstate__
+VisionEgg.DaqLPT.LPTOutput.__del__	VisionEgg.DaqLPT.LPTOutput-class.html#__del__
+VisionEgg.ClassWithParameters.constant_parameters_and_defaults	VisionEgg.ClassWithParameters-class.html#constant_parameters_and_defaults
+VisionEgg.ClassWithParameters.parameters_and_defaults	VisionEgg.ClassWithParameters-class.html#parameters_and_defaults
+VisionEgg.ClassWithParameters.__safe_for_unpickling__	VisionEgg.ClassWithParameters-class.html#__safe_for_unpickling__
+VisionEgg.DaqLPT.LPTTriggerInController	VisionEgg.DaqLPT.LPTTriggerInController-class.html
+VisionEgg.FlowControl.Controller.set_eval_frequency	VisionEgg.FlowControl.Controller-class.html#set_eval_frequency
+VisionEgg.FlowControl.Controller.flag_dictionary	VisionEgg.FlowControl.Controller-class.html#flag_dictionary
+VisionEgg.FlowControl.Controller.TIME_INDEPENDENT	VisionEgg.FlowControl.Controller-class.html#TIME_INDEPENDENT
+VisionEgg.DaqLPT.LPTTriggerInController.between_go_eval	VisionEgg.DaqLPT.LPTTriggerInController-class.html#between_go_eval
+VisionEgg.FlowControl.Controller.FRAMES_SINCE_GO	VisionEgg.FlowControl.Controller-class.html#FRAMES_SINCE_GO
+VisionEgg.DaqLPT.LPTTriggerInController.__init__	VisionEgg.DaqLPT.LPTTriggerInController-class.html#__init__
+VisionEgg.FlowControl.Controller.NOT_BETWEEN_GO	VisionEgg.FlowControl.Controller-class.html#NOT_BETWEEN_GO
+VisionEgg.FlowControl.Controller.FRAMES_ABSOLUTE	VisionEgg.FlowControl.Controller-class.html#FRAMES_ABSOLUTE
+VisionEgg.FlowControl.Controller.NEVER	VisionEgg.FlowControl.Controller-class.html#NEVER
+VisionEgg.FlowControl.Controller.returns_type	VisionEgg.FlowControl.Controller-class.html#returns_type
+VisionEgg.FlowControl.Controller.evaluate_now	VisionEgg.FlowControl.Controller-class.html#evaluate_now
+VisionEgg.FlowControl.Controller._test_self	VisionEgg.FlowControl.Controller-class.html#_test_self
+VisionEgg.FlowControl.Controller.TRANSITIONS	VisionEgg.FlowControl.Controller-class.html#TRANSITIONS
+VisionEgg.FlowControl.Controller.TIME_SEC_SINCE_GO	VisionEgg.FlowControl.Controller-class.html#TIME_SEC_SINCE_GO
+VisionEgg.FlowControl.Controller.ONCE	VisionEgg.FlowControl.Controller-class.html#ONCE
+VisionEgg.FlowControl.Controller.EVERY_FRAME	VisionEgg.FlowControl.Controller-class.html#EVERY_FRAME
+VisionEgg.FlowControl.Controller.TIME_SEC_ABSOLUTE	VisionEgg.FlowControl.Controller-class.html#TIME_SEC_ABSOLUTE
+VisionEgg.DaqLPT.LPTTriggerInController.during_go_eval	VisionEgg.DaqLPT.LPTTriggerInController-class.html#during_go_eval
+VisionEgg.FlowControl.Controller.NOT_DURING_GO	VisionEgg.FlowControl.Controller-class.html#NOT_DURING_GO
+VisionEgg.DaqLPT.LPTTriggerOutController	VisionEgg.DaqLPT.LPTTriggerOutController-class.html
+VisionEgg.FlowControl.Controller.set_eval_frequency	VisionEgg.FlowControl.Controller-class.html#set_eval_frequency
+VisionEgg.FlowControl.Controller.flag_dictionary	VisionEgg.FlowControl.Controller-class.html#flag_dictionary
+VisionEgg.FlowControl.Controller.TIME_INDEPENDENT	VisionEgg.FlowControl.Controller-class.html#TIME_INDEPENDENT
+VisionEgg.DaqLPT.LPTTriggerOutController.between_go_eval	VisionEgg.DaqLPT.LPTTriggerOutController-class.html#between_go_eval
+VisionEgg.FlowControl.Controller.FRAMES_SINCE_GO	VisionEgg.FlowControl.Controller-class.html#FRAMES_SINCE_GO
+VisionEgg.DaqLPT.LPTTriggerOutController.__init__	VisionEgg.DaqLPT.LPTTriggerOutController-class.html#__init__
+VisionEgg.FlowControl.Controller.NOT_BETWEEN_GO	VisionEgg.FlowControl.Controller-class.html#NOT_BETWEEN_GO
+VisionEgg.FlowControl.Controller.FRAMES_ABSOLUTE	VisionEgg.FlowControl.Controller-class.html#FRAMES_ABSOLUTE
+VisionEgg.FlowControl.Controller.NEVER	VisionEgg.FlowControl.Controller-class.html#NEVER
+VisionEgg.FlowControl.Controller.returns_type	VisionEgg.FlowControl.Controller-class.html#returns_type
+VisionEgg.FlowControl.Controller.evaluate_now	VisionEgg.FlowControl.Controller-class.html#evaluate_now
+VisionEgg.FlowControl.Controller._test_self	VisionEgg.FlowControl.Controller-class.html#_test_self
+VisionEgg.FlowControl.Controller.TRANSITIONS	VisionEgg.FlowControl.Controller-class.html#TRANSITIONS
+VisionEgg.FlowControl.Controller.TIME_SEC_SINCE_GO	VisionEgg.FlowControl.Controller-class.html#TIME_SEC_SINCE_GO
+VisionEgg.FlowControl.Controller.ONCE	VisionEgg.FlowControl.Controller-class.html#ONCE
+VisionEgg.FlowControl.Controller.EVERY_FRAME	VisionEgg.FlowControl.Controller-class.html#EVERY_FRAME
+VisionEgg.FlowControl.Controller.TIME_SEC_ABSOLUTE	VisionEgg.FlowControl.Controller-class.html#TIME_SEC_ABSOLUTE
+VisionEgg.DaqLPT.LPTTriggerOutController.during_go_eval	VisionEgg.DaqLPT.LPTTriggerOutController-class.html#during_go_eval
+VisionEgg.FlowControl.Controller.NOT_DURING_GO	VisionEgg.FlowControl.Controller-class.html#NOT_DURING_GO
+VisionEgg.Deprecated.Message	VisionEgg.Deprecated.Message-class.html
+VisionEgg.Deprecated.Message.INFO	VisionEgg.Deprecated.Message-class.html#INFO
+VisionEgg.Deprecated.Message.DEPRECATION	VisionEgg.Deprecated.Message-class.html#DEPRECATION
+VisionEgg.Deprecated.Message.handle	VisionEgg.Deprecated.Message-class.html#handle
+VisionEgg.Deprecated.Message.NAG	VisionEgg.Deprecated.Message-class.html#NAG
+VisionEgg.Deprecated.Message.format_string	VisionEgg.Deprecated.Message-class.html#format_string
+VisionEgg.Deprecated.Message.add	VisionEgg.Deprecated.Message-class.html#add
+VisionEgg.Deprecated.Message.WARNING	VisionEgg.Deprecated.Message-class.html#WARNING
+VisionEgg.Deprecated.Message.ERROR	VisionEgg.Deprecated.Message-class.html#ERROR
+VisionEgg.Deprecated.Message.FATAL	VisionEgg.Deprecated.Message-class.html#FATAL
+VisionEgg.Deprecated.Message.TRIVIAL	VisionEgg.Deprecated.Message-class.html#TRIVIAL
+VisionEgg.Deprecated.Message.__init__	VisionEgg.Deprecated.Message-class.html#__init__
+VisionEgg.Dots.DotArea2D	VisionEgg.Dots.DotArea2D-class.html
+VisionEgg.ClassWithParameters.get_specified_type	VisionEgg.ClassWithParameters-class.html#get_specified_type
+VisionEgg.Dots.DotArea2D.draw	VisionEgg.Dots.DotArea2D-class.html#draw
+VisionEgg.ClassWithParameters.verify_parameters	VisionEgg.ClassWithParameters-class.html#verify_parameters
+VisionEgg.ClassWithParameters.is_constant_parameter	VisionEgg.ClassWithParameters-class.html#is_constant_parameter
+VisionEgg.ClassWithParameters.__setstate__	VisionEgg.ClassWithParameters-class.html#__setstate__
+VisionEgg.ClassWithParameters.__getstate__	VisionEgg.ClassWithParameters-class.html#__getstate__
+VisionEgg.ClassWithParameters.set	VisionEgg.ClassWithParameters-class.html#set
+VisionEgg.Dots.DotArea2D.constant_parameters_and_defaults	VisionEgg.Dots.DotArea2D-class.html#constant_parameters_and_defaults
+VisionEgg.ClassWithParameters.__safe_for_unpickling__	VisionEgg.ClassWithParameters-class.html#__safe_for_unpickling__
+VisionEgg.Dots.DotArea2D.parameters_and_defaults	VisionEgg.Dots.DotArea2D-class.html#parameters_and_defaults
+VisionEgg.Dots.DotArea2D.__init__	VisionEgg.Dots.DotArea2D-class.html#__init__
+VisionEgg.FlowControl.ConstantController	VisionEgg.FlowControl.ConstantController-class.html
+VisionEgg.FlowControl.Controller.set_eval_frequency	VisionEgg.FlowControl.Controller-class.html#set_eval_frequency
+VisionEgg.FlowControl.Controller.flag_dictionary	VisionEgg.FlowControl.Controller-class.html#flag_dictionary
+VisionEgg.FlowControl.Controller.TIME_INDEPENDENT	VisionEgg.FlowControl.Controller-class.html#TIME_INDEPENDENT
+VisionEgg.FlowControl.ConstantController.between_go_eval	VisionEgg.FlowControl.ConstantController-class.html#between_go_eval
+VisionEgg.FlowControl.ConstantController.set_during_go_value	VisionEgg.FlowControl.ConstantController-class.html#set_during_go_value
+VisionEgg.FlowControl.Controller.FRAMES_SINCE_GO	VisionEgg.FlowControl.Controller-class.html#FRAMES_SINCE_GO
+VisionEgg.FlowControl.ConstantController.__init__	VisionEgg.FlowControl.ConstantController-class.html#__init__
+VisionEgg.FlowControl.Controller.NOT_BETWEEN_GO	VisionEgg.FlowControl.Controller-class.html#NOT_BETWEEN_GO
+VisionEgg.FlowControl.Controller.FRAMES_ABSOLUTE	VisionEgg.FlowControl.Controller-class.html#FRAMES_ABSOLUTE
+VisionEgg.FlowControl.Controller.NEVER	VisionEgg.FlowControl.Controller-class.html#NEVER
+VisionEgg.FlowControl.Controller.returns_type	VisionEgg.FlowControl.Controller-class.html#returns_type
+VisionEgg.FlowControl.Controller.evaluate_now	VisionEgg.FlowControl.Controller-class.html#evaluate_now
+VisionEgg.FlowControl.Controller._test_self	VisionEgg.FlowControl.Controller-class.html#_test_self
+VisionEgg.FlowControl.Controller.TRANSITIONS	VisionEgg.FlowControl.Controller-class.html#TRANSITIONS
+VisionEgg.FlowControl.Controller.TIME_SEC_SINCE_GO	VisionEgg.FlowControl.Controller-class.html#TIME_SEC_SINCE_GO
+VisionEgg.FlowControl.Controller.ONCE	VisionEgg.FlowControl.Controller-class.html#ONCE
+VisionEgg.FlowControl.Controller.EVERY_FRAME	VisionEgg.FlowControl.Controller-class.html#EVERY_FRAME
+VisionEgg.FlowControl.ConstantController.get_during_go_value	VisionEgg.FlowControl.ConstantController-class.html#get_during_go_value
+VisionEgg.FlowControl.Controller.TIME_SEC_ABSOLUTE	VisionEgg.FlowControl.Controller-class.html#TIME_SEC_ABSOLUTE
+VisionEgg.FlowControl.ConstantController.set_between_go_value	VisionEgg.FlowControl.ConstantController-class.html#set_between_go_value
+VisionEgg.FlowControl.ConstantController.get_between_go_value	VisionEgg.FlowControl.ConstantController-class.html#get_between_go_value
+VisionEgg.FlowControl.ConstantController.during_go_eval	VisionEgg.FlowControl.ConstantController-class.html#during_go_eval
+VisionEgg.FlowControl.Controller.NOT_DURING_GO	VisionEgg.FlowControl.Controller-class.html#NOT_DURING_GO
+VisionEgg.FlowControl.Controller	VisionEgg.FlowControl.Controller-class.html
+VisionEgg.FlowControl.Controller.set_eval_frequency	VisionEgg.FlowControl.Controller-class.html#set_eval_frequency
+VisionEgg.FlowControl.Controller.flag_dictionary	VisionEgg.FlowControl.Controller-class.html#flag_dictionary
+VisionEgg.FlowControl.Controller.TIME_INDEPENDENT	VisionEgg.FlowControl.Controller-class.html#TIME_INDEPENDENT
+VisionEgg.FlowControl.Controller.between_go_eval	VisionEgg.FlowControl.Controller-class.html#between_go_eval
+VisionEgg.FlowControl.Controller.FRAMES_SINCE_GO	VisionEgg.FlowControl.Controller-class.html#FRAMES_SINCE_GO
+VisionEgg.FlowControl.Controller.__init__	VisionEgg.FlowControl.Controller-class.html#__init__
+VisionEgg.FlowControl.Controller.NOT_BETWEEN_GO	VisionEgg.FlowControl.Controller-class.html#NOT_BETWEEN_GO
+VisionEgg.FlowControl.Controller.FRAMES_ABSOLUTE	VisionEgg.FlowControl.Controller-class.html#FRAMES_ABSOLUTE
+VisionEgg.FlowControl.Controller.NEVER	VisionEgg.FlowControl.Controller-class.html#NEVER
+VisionEgg.FlowControl.Controller.returns_type	VisionEgg.FlowControl.Controller-class.html#returns_type
+VisionEgg.FlowControl.Controller.evaluate_now	VisionEgg.FlowControl.Controller-class.html#evaluate_now
+VisionEgg.FlowControl.Controller._test_self	VisionEgg.FlowControl.Controller-class.html#_test_self
+VisionEgg.FlowControl.Controller.TRANSITIONS	VisionEgg.FlowControl.Controller-class.html#TRANSITIONS
+VisionEgg.FlowControl.Controller.TIME_SEC_SINCE_GO	VisionEgg.FlowControl.Controller-class.html#TIME_SEC_SINCE_GO
+VisionEgg.FlowControl.Controller.ONCE	VisionEgg.FlowControl.Controller-class.html#ONCE
+VisionEgg.FlowControl.Controller.EVERY_FRAME	VisionEgg.FlowControl.Controller-class.html#EVERY_FRAME
+VisionEgg.FlowControl.Controller.TIME_SEC_ABSOLUTE	VisionEgg.FlowControl.Controller-class.html#TIME_SEC_ABSOLUTE
+VisionEgg.FlowControl.Controller.during_go_eval	VisionEgg.FlowControl.Controller-class.html#during_go_eval
+VisionEgg.FlowControl.Controller.NOT_DURING_GO	VisionEgg.FlowControl.Controller-class.html#NOT_DURING_GO
+VisionEgg.FlowControl.EncapsulatedController	VisionEgg.FlowControl.EncapsulatedController-class.html
+VisionEgg.FlowControl.Controller.set_eval_frequency	VisionEgg.FlowControl.Controller-class.html#set_eval_frequency
+VisionEgg.FlowControl.Controller.flag_dictionary	VisionEgg.FlowControl.Controller-class.html#flag_dictionary
+VisionEgg.FlowControl.Controller.TIME_INDEPENDENT	VisionEgg.FlowControl.Controller-class.html#TIME_INDEPENDENT
+VisionEgg.FlowControl.EncapsulatedController.between_go_eval	VisionEgg.FlowControl.EncapsulatedController-class.html#between_go_eval
+VisionEgg.FlowControl.Controller.FRAMES_SINCE_GO	VisionEgg.FlowControl.Controller-class.html#FRAMES_SINCE_GO
+VisionEgg.FlowControl.EncapsulatedController.__init__	VisionEgg.FlowControl.EncapsulatedController-class.html#__init__
+VisionEgg.FlowControl.Controller.NOT_BETWEEN_GO	VisionEgg.FlowControl.Controller-class.html#NOT_BETWEEN_GO
+VisionEgg.FlowControl.Controller.FRAMES_ABSOLUTE	VisionEgg.FlowControl.Controller-class.html#FRAMES_ABSOLUTE
+VisionEgg.FlowControl.Controller.NEVER	VisionEgg.FlowControl.Controller-class.html#NEVER
+VisionEgg.FlowControl.EncapsulatedController.set_new_controller	VisionEgg.FlowControl.EncapsulatedController-class.html#set_new_controller
+VisionEgg.FlowControl.Controller.returns_type	VisionEgg.FlowControl.Controller-class.html#returns_type
+VisionEgg.FlowControl.Controller.evaluate_now	VisionEgg.FlowControl.Controller-class.html#evaluate_now
+VisionEgg.FlowControl.Controller._test_self	VisionEgg.FlowControl.Controller-class.html#_test_self
+VisionEgg.FlowControl.Controller.TRANSITIONS	VisionEgg.FlowControl.Controller-class.html#TRANSITIONS
+VisionEgg.FlowControl.Controller.TIME_SEC_ABSOLUTE	VisionEgg.FlowControl.Controller-class.html#TIME_SEC_ABSOLUTE
+VisionEgg.FlowControl.Controller.ONCE	VisionEgg.FlowControl.Controller-class.html#ONCE
+VisionEgg.FlowControl.Controller.EVERY_FRAME	VisionEgg.FlowControl.Controller-class.html#EVERY_FRAME
+VisionEgg.FlowControl.EncapsulatedController.__sync_mimic	VisionEgg.FlowControl.EncapsulatedController-class.html#__sync_mimic
+VisionEgg.FlowControl.Controller.TIME_SEC_SINCE_GO	VisionEgg.FlowControl.Controller-class.html#TIME_SEC_SINCE_GO
+VisionEgg.FlowControl.EncapsulatedController.during_go_eval	VisionEgg.FlowControl.EncapsulatedController-class.html#during_go_eval
+VisionEgg.FlowControl.Controller.NOT_DURING_GO	VisionEgg.FlowControl.Controller-class.html#NOT_DURING_GO
+VisionEgg.FlowControl.EvalStringController	VisionEgg.FlowControl.EvalStringController-class.html
+VisionEgg.FlowControl.Controller.set_eval_frequency	VisionEgg.FlowControl.Controller-class.html#set_eval_frequency
+VisionEgg.FlowControl.EvalStringController.set_between_go_eval_string	VisionEgg.FlowControl.EvalStringController-class.html#set_between_go_eval_string
+VisionEgg.FlowControl.Controller.flag_dictionary	VisionEgg.FlowControl.Controller-class.html#flag_dictionary
+VisionEgg.FlowControl.EvalStringController.get_between_go_eval_string	VisionEgg.FlowControl.EvalStringController-class.html#get_between_go_eval_string
+VisionEgg.FlowControl.Controller.TIME_INDEPENDENT	VisionEgg.FlowControl.Controller-class.html#TIME_INDEPENDENT
+VisionEgg.FlowControl.EvalStringController.between_go_eval	VisionEgg.FlowControl.EvalStringController-class.html#between_go_eval
+VisionEgg.FlowControl.Controller.FRAMES_SINCE_GO	VisionEgg.FlowControl.Controller-class.html#FRAMES_SINCE_GO
+VisionEgg.FlowControl.EvalStringController.__init__	VisionEgg.FlowControl.EvalStringController-class.html#__init__
+VisionEgg.FlowControl.Controller.NOT_BETWEEN_GO	VisionEgg.FlowControl.Controller-class.html#NOT_BETWEEN_GO
+VisionEgg.FlowControl.Controller.FRAMES_ABSOLUTE	VisionEgg.FlowControl.Controller-class.html#FRAMES_ABSOLUTE
+VisionEgg.FlowControl.Controller.NEVER	VisionEgg.FlowControl.Controller-class.html#NEVER
+VisionEgg.FlowControl.Controller.returns_type	VisionEgg.FlowControl.Controller-class.html#returns_type
+VisionEgg.FlowControl.Controller.evaluate_now	VisionEgg.FlowControl.Controller-class.html#evaluate_now
+VisionEgg.FlowControl.Controller._test_self	VisionEgg.FlowControl.Controller-class.html#_test_self
+VisionEgg.FlowControl.Controller.TRANSITIONS	VisionEgg.FlowControl.Controller-class.html#TRANSITIONS
+VisionEgg.FlowControl.Controller.TIME_SEC_ABSOLUTE	VisionEgg.FlowControl.Controller-class.html#TIME_SEC_ABSOLUTE
+VisionEgg.FlowControl.Controller.ONCE	VisionEgg.FlowControl.Controller-class.html#ONCE
+VisionEgg.FlowControl.Controller.EVERY_FRAME	VisionEgg.FlowControl.Controller-class.html#EVERY_FRAME
+VisionEgg.FlowControl.EvalStringController.get_during_go_eval_string	VisionEgg.FlowControl.EvalStringController-class.html#get_during_go_eval_string
+VisionEgg.FlowControl.Controller.TIME_SEC_SINCE_GO	VisionEgg.FlowControl.Controller-class.html#TIME_SEC_SINCE_GO
+VisionEgg.FlowControl.EvalStringController.set_during_go_eval_string	VisionEgg.FlowControl.EvalStringController-class.html#set_during_go_eval_string
+VisionEgg.FlowControl.EvalStringController.during_go_eval	VisionEgg.FlowControl.EvalStringController-class.html#during_go_eval
+VisionEgg.FlowControl.Controller.NOT_DURING_GO	VisionEgg.FlowControl.Controller-class.html#NOT_DURING_GO
+VisionEgg.FlowControl.ExecStringController	VisionEgg.FlowControl.ExecStringController-class.html
+VisionEgg.FlowControl.Controller.set_eval_frequency	VisionEgg.FlowControl.Controller-class.html#set_eval_frequency
+VisionEgg.FlowControl.ExecStringController.set_between_go_exec_string	VisionEgg.FlowControl.ExecStringController-class.html#set_between_go_exec_string
+VisionEgg.FlowControl.Controller.flag_dictionary	VisionEgg.FlowControl.Controller-class.html#flag_dictionary
+VisionEgg.FlowControl.Controller.TIME_INDEPENDENT	VisionEgg.FlowControl.Controller-class.html#TIME_INDEPENDENT
+VisionEgg.FlowControl.ExecStringController.between_go_eval	VisionEgg.FlowControl.ExecStringController-class.html#between_go_eval
+VisionEgg.FlowControl.ExecStringController.get_between_go_exec_string	VisionEgg.FlowControl.ExecStringController-class.html#get_between_go_exec_string
+VisionEgg.FlowControl.Controller.FRAMES_SINCE_GO	VisionEgg.FlowControl.Controller-class.html#FRAMES_SINCE_GO
+VisionEgg.FlowControl.ExecStringController.__init__	VisionEgg.FlowControl.ExecStringController-class.html#__init__
+VisionEgg.FlowControl.ExecStringController.get_during_go_exec_string	VisionEgg.FlowControl.ExecStringController-class.html#get_during_go_exec_string
+VisionEgg.FlowControl.Controller.NOT_BETWEEN_GO	VisionEgg.FlowControl.Controller-class.html#NOT_BETWEEN_GO
+VisionEgg.FlowControl.Controller.FRAMES_ABSOLUTE	VisionEgg.FlowControl.Controller-class.html#FRAMES_ABSOLUTE
+VisionEgg.FlowControl.Controller.NEVER	VisionEgg.FlowControl.Controller-class.html#NEVER
+VisionEgg.FlowControl.Controller.returns_type	VisionEgg.FlowControl.Controller-class.html#returns_type
+VisionEgg.FlowControl.Controller.evaluate_now	VisionEgg.FlowControl.Controller-class.html#evaluate_now
+VisionEgg.FlowControl.Controller._test_self	VisionEgg.FlowControl.Controller-class.html#_test_self
+VisionEgg.FlowControl.Controller.TRANSITIONS	VisionEgg.FlowControl.Controller-class.html#TRANSITIONS
+VisionEgg.FlowControl.Controller.TIME_SEC_SINCE_GO	VisionEgg.FlowControl.Controller-class.html#TIME_SEC_SINCE_GO
+VisionEgg.FlowControl.Controller.ONCE	VisionEgg.FlowControl.Controller-class.html#ONCE
+VisionEgg.FlowControl.Controller.EVERY_FRAME	VisionEgg.FlowControl.Controller-class.html#EVERY_FRAME
+VisionEgg.FlowControl.ExecStringController.set_during_go_exec_string	VisionEgg.FlowControl.ExecStringController-class.html#set_during_go_exec_string
+VisionEgg.FlowControl.Controller.TIME_SEC_ABSOLUTE	VisionEgg.FlowControl.Controller-class.html#TIME_SEC_ABSOLUTE
+VisionEgg.FlowControl.ExecStringController.during_go_eval	VisionEgg.FlowControl.ExecStringController-class.html#during_go_eval
+VisionEgg.FlowControl.Controller.NOT_DURING_GO	VisionEgg.FlowControl.Controller-class.html#NOT_DURING_GO
+VisionEgg.FlowControl.FunctionController	VisionEgg.FlowControl.FunctionController-class.html
+VisionEgg.FlowControl.Controller.set_eval_frequency	VisionEgg.FlowControl.Controller-class.html#set_eval_frequency
+VisionEgg.FlowControl.Controller.flag_dictionary	VisionEgg.FlowControl.Controller-class.html#flag_dictionary
+VisionEgg.FlowControl.Controller.TIME_INDEPENDENT	VisionEgg.FlowControl.Controller-class.html#TIME_INDEPENDENT
+VisionEgg.FlowControl.FunctionController.between_go_eval	VisionEgg.FlowControl.FunctionController-class.html#between_go_eval
+VisionEgg.FlowControl.Controller.FRAMES_SINCE_GO	VisionEgg.FlowControl.Controller-class.html#FRAMES_SINCE_GO
+VisionEgg.FlowControl.FunctionController.__init__	VisionEgg.FlowControl.FunctionController-class.html#__init__
+VisionEgg.FlowControl.Controller.NOT_BETWEEN_GO	VisionEgg.FlowControl.Controller-class.html#NOT_BETWEEN_GO
+VisionEgg.FlowControl.Controller.FRAMES_ABSOLUTE	VisionEgg.FlowControl.Controller-class.html#FRAMES_ABSOLUTE
+VisionEgg.FlowControl.Controller.NEVER	VisionEgg.FlowControl.Controller-class.html#NEVER
+VisionEgg.FlowControl.Controller.returns_type	VisionEgg.FlowControl.Controller-class.html#returns_type
+VisionEgg.FlowControl.Controller.evaluate_now	VisionEgg.FlowControl.Controller-class.html#evaluate_now
+VisionEgg.FlowControl.Controller._test_self	VisionEgg.FlowControl.Controller-class.html#_test_self
+VisionEgg.FlowControl.Controller.TRANSITIONS	VisionEgg.FlowControl.Controller-class.html#TRANSITIONS
+VisionEgg.FlowControl.Controller.TIME_SEC_ABSOLUTE	VisionEgg.FlowControl.Controller-class.html#TIME_SEC_ABSOLUTE
+VisionEgg.FlowControl.Controller.ONCE	VisionEgg.FlowControl.Controller-class.html#ONCE
+VisionEgg.FlowControl.Controller.EVERY_FRAME	VisionEgg.FlowControl.Controller-class.html#EVERY_FRAME
+VisionEgg.FlowControl.Controller.TIME_SEC_SINCE_GO	VisionEgg.FlowControl.Controller-class.html#TIME_SEC_SINCE_GO
+VisionEgg.FlowControl.FunctionController.during_go_eval	VisionEgg.FlowControl.FunctionController-class.html#during_go_eval
+VisionEgg.FlowControl.Controller.NOT_DURING_GO	VisionEgg.FlowControl.Controller-class.html#NOT_DURING_GO
+VisionEgg.FlowControl.Presentation	VisionEgg.FlowControl.Presentation-class.html
+VisionEgg.ClassWithParameters.set	VisionEgg.ClassWithParameters-class.html#set
+VisionEgg.FlowControl.Presentation.remove_controller	VisionEgg.FlowControl.Presentation-class.html#remove_controller
+VisionEgg.FlowControl.Presentation.go	VisionEgg.FlowControl.Presentation-class.html#go
+VisionEgg.FlowControl.Presentation.were_frames_dropped_in_last_go_loop	VisionEgg.FlowControl.Presentation-class.html#were_frames_dropped_in_last_go_loop
+VisionEgg.FlowControl.Presentation.run_forever	VisionEgg.FlowControl.Presentation-class.html#run_forever
+VisionEgg.FlowControl.Presentation.__init__	VisionEgg.FlowControl.Presentation-class.html#__init__
+VisionEgg.FlowControl.Presentation.add_controller	VisionEgg.FlowControl.Presentation-class.html#add_controller
+VisionEgg.ClassWithParameters.verify_parameters	VisionEgg.ClassWithParameters-class.html#verify_parameters
+VisionEgg.ClassWithParameters.is_constant_parameter	VisionEgg.ClassWithParameters-class.html#is_constant_parameter
+VisionEgg.FlowControl.Presentation.is_in_go_loop	VisionEgg.FlowControl.Presentation-class.html#is_in_go_loop
+VisionEgg.FlowControl.Presentation.__call_controllers	VisionEgg.FlowControl.Presentation-class.html#__call_controllers
+VisionEgg.ClassWithParameters.__getstate__	VisionEgg.ClassWithParameters-class.html#__getstate__
+VisionEgg.ClassWithParameters.get_specified_type	VisionEgg.ClassWithParameters-class.html#get_specified_type
+VisionEgg.FlowControl.Presentation.get_last_go_loop_start_time_absolute_sec	VisionEgg.FlowControl.Presentation-class.html#get_last_go_loop_start_time_absolute_sec
+VisionEgg.ClassWithParameters.__setstate__	VisionEgg.ClassWithParameters-class.html#__setstate__
+VisionEgg.ClassWithParameters.constant_parameters_and_defaults	VisionEgg.ClassWithParameters-class.html#constant_parameters_and_defaults
+VisionEgg.FlowControl.Presentation.between_presentations	VisionEgg.FlowControl.Presentation-class.html#between_presentations
+VisionEgg.FlowControl.Presentation.parameters_and_defaults	VisionEgg.FlowControl.Presentation-class.html#parameters_and_defaults
+VisionEgg.ClassWithParameters.__safe_for_unpickling__	VisionEgg.ClassWithParameters-class.html#__safe_for_unpickling__
+VisionEgg.FlowControl.Presentation.export_movie_go	VisionEgg.FlowControl.Presentation-class.html#export_movie_go
+VisionEgg.GLTrace.Wrapper	VisionEgg.GLTrace.Wrapper-class.html
+VisionEgg.GLTrace.Wrapper.run	VisionEgg.GLTrace.Wrapper-class.html#run
+VisionEgg.GLTrace.Wrapper.__init__	VisionEgg.GLTrace.Wrapper-class.html#__init__
+VisionEgg.GUI.AppWindow	VisionEgg.GUI.AppWindow-class.html
+VisionEgg.GUI.AppWindow.idle	VisionEgg.GUI.AppWindow-class.html#idle
+VisionEgg.GUI.AppWindow.__init__	VisionEgg.GUI.AppWindow-class.html#__init__
+VisionEgg.GUI.GetKeypressDialog	VisionEgg.GUI.GetKeypressDialog-class.html
+VisionEgg.GUI.ToplevelDialog.destroy	VisionEgg.GUI.ToplevelDialog-class.html#destroy
+VisionEgg.GUI.GetKeypressDialog.keypress	VisionEgg.GUI.GetKeypressDialog-class.html#keypress
+VisionEgg.GUI.GetKeypressDialog.__init__	VisionEgg.GUI.GetKeypressDialog-class.html#__init__
+VisionEgg.GUI.GraphicsConfigurationWindow	VisionEgg.GUI.GraphicsConfigurationWindow-class.html
+VisionEgg.GUI.GraphicsConfigurationWindow.format_string	VisionEgg.GUI.GraphicsConfigurationWindow-class.html#format_string
+VisionEgg.GUI.GraphicsConfigurationWindow.start	VisionEgg.GUI.GraphicsConfigurationWindow-class.html#start
+VisionEgg.GUI.GraphicsConfigurationWindow.darwin_maxpriority_tune	VisionEgg.GUI.GraphicsConfigurationWindow-class.html#darwin_maxpriority_tune
+VisionEgg.GUI.GraphicsConfigurationWindow._set_config_values	VisionEgg.GUI.GraphicsConfigurationWindow-class.html#_set_config_values
+VisionEgg.GUI.GraphicsConfigurationWindow.save	VisionEgg.GUI.GraphicsConfigurationWindow-class.html#save
+VisionEgg.GUI.GraphicsConfigurationWindow.set_gamma_file	VisionEgg.GUI.GraphicsConfigurationWindow-class.html#set_gamma_file
+VisionEgg.GUI.GraphicsConfigurationWindow.__init__	VisionEgg.GUI.GraphicsConfigurationWindow-class.html#__init__
+VisionEgg.GUI.InfoFrame	VisionEgg.GUI.InfoFrame-class.html
+VisionEgg.GUI.InfoFrame.update	VisionEgg.GUI.InfoFrame-class.html#update
+VisionEgg.GUI.InfoFrame.__init__	VisionEgg.GUI.InfoFrame-class.html#__init__
+VisionEgg.GUI.ProgressBar	VisionEgg.GUI.ProgressBar-class.html
+VisionEgg.GUI.ProgressBar.updateProgress	VisionEgg.GUI.ProgressBar-class.html#updateProgress
+VisionEgg.GUI.ProgressBar.update	VisionEgg.GUI.ProgressBar-class.html#update
+VisionEgg.GUI.ProgressBar.__init__	VisionEgg.GUI.ProgressBar-class.html#__init__
+VisionEgg.GUI.ToplevelDialog	VisionEgg.GUI.ToplevelDialog-class.html
+VisionEgg.GUI.ToplevelDialog.destroy	VisionEgg.GUI.ToplevelDialog-class.html#destroy
+VisionEgg.GUI.ToplevelDialog.__init__	VisionEgg.GUI.ToplevelDialog-class.html#__init__
+VisionEgg.Gratings.AlphaGratingCommon	VisionEgg.Gratings.AlphaGratingCommon-class.html
+VisionEgg.ClassWithParameters.set	VisionEgg.ClassWithParameters-class.html#set
+VisionEgg.Gratings.AlphaGratingCommon.calculate_bit_depth_dependencies	VisionEgg.Gratings.AlphaGratingCommon-class.html#calculate_bit_depth_dependencies
+VisionEgg.Core.Stimulus.__init__	VisionEgg.Core.Stimulus-class.html#__init__
+VisionEgg.ClassWithParameters.verify_parameters	VisionEgg.ClassWithParameters-class.html#verify_parameters
+VisionEgg.ClassWithParameters.is_constant_parameter	VisionEgg.ClassWithParameters-class.html#is_constant_parameter
+VisionEgg.ClassWithParameters.__getstate__	VisionEgg.ClassWithParameters-class.html#__getstate__
+VisionEgg.ClassWithParameters.get_specified_type	VisionEgg.ClassWithParameters-class.html#get_specified_type
+VisionEgg.Core.Stimulus.draw	VisionEgg.Core.Stimulus-class.html#draw
+VisionEgg.ClassWithParameters.__setstate__	VisionEgg.ClassWithParameters-class.html#__setstate__
+VisionEgg.ClassWithParameters.constant_parameters_and_defaults	VisionEgg.ClassWithParameters-class.html#constant_parameters_and_defaults
+VisionEgg.Gratings.AlphaGratingCommon.parameters_and_defaults	VisionEgg.Gratings.AlphaGratingCommon-class.html#parameters_and_defaults
+VisionEgg.ClassWithParameters.__safe_for_unpickling__	VisionEgg.ClassWithParameters-class.html#__safe_for_unpickling__
+VisionEgg.Gratings.LuminanceGratingCommon	VisionEgg.Gratings.LuminanceGratingCommon-class.html
+VisionEgg.ClassWithParameters.set	VisionEgg.ClassWithParameters-class.html#set
+VisionEgg.Gratings.LuminanceGratingCommon.calculate_bit_depth_dependencies	VisionEgg.Gratings.LuminanceGratingCommon-class.html#calculate_bit_depth_dependencies
+VisionEgg.Core.Stimulus.__init__	VisionEgg.Core.Stimulus-class.html#__init__
+VisionEgg.ClassWithParameters.verify_parameters	VisionEgg.ClassWithParameters-class.html#verify_parameters
+VisionEgg.ClassWithParameters.is_constant_parameter	VisionEgg.ClassWithParameters-class.html#is_constant_parameter
+VisionEgg.ClassWithParameters.__getstate__	VisionEgg.ClassWithParameters-class.html#__getstate__
+VisionEgg.ClassWithParameters.get_specified_type	VisionEgg.ClassWithParameters-class.html#get_specified_type
+VisionEgg.Core.Stimulus.draw	VisionEgg.Core.Stimulus-class.html#draw
+VisionEgg.ClassWithParameters.__setstate__	VisionEgg.ClassWithParameters-class.html#__setstate__
+VisionEgg.ClassWithParameters.constant_parameters_and_defaults	VisionEgg.ClassWithParameters-class.html#constant_parameters_and_defaults
+VisionEgg.Gratings.LuminanceGratingCommon.parameters_and_defaults	VisionEgg.Gratings.LuminanceGratingCommon-class.html#parameters_and_defaults
+VisionEgg.ClassWithParameters.__safe_for_unpickling__	VisionEgg.ClassWithParameters-class.html#__safe_for_unpickling__
+VisionEgg.Gratings.NumSamplesTooLargeError	VisionEgg.Gratings.NumSamplesTooLargeError-class.html
+VisionEgg.Gratings.SinGrating2D	VisionEgg.Gratings.SinGrating2D-class.html
+VisionEgg.ClassWithParameters.set	VisionEgg.ClassWithParameters-class.html#set
+VisionEgg.Gratings.LuminanceGratingCommon.calculate_bit_depth_dependencies	VisionEgg.Gratings.LuminanceGratingCommon-class.html#calculate_bit_depth_dependencies
+VisionEgg.Gratings.SinGrating2D.__init__	VisionEgg.Gratings.SinGrating2D-class.html#__init__
+VisionEgg.ClassWithParameters.verify_parameters	VisionEgg.ClassWithParameters-class.html#verify_parameters
+VisionEgg.ClassWithParameters.is_constant_parameter	VisionEgg.ClassWithParameters-class.html#is_constant_parameter
+VisionEgg.ClassWithParameters.__getstate__	VisionEgg.ClassWithParameters-class.html#__getstate__
+VisionEgg.ClassWithParameters.get_specified_type	VisionEgg.ClassWithParameters-class.html#get_specified_type
+VisionEgg.Gratings.SinGrating2D.draw	VisionEgg.Gratings.SinGrating2D-class.html#draw
+VisionEgg.ClassWithParameters.__setstate__	VisionEgg.ClassWithParameters-class.html#__setstate__
+VisionEgg.Gratings.SinGrating2D.__del__	VisionEgg.Gratings.SinGrating2D-class.html#__del__
+VisionEgg.ClassWithParameters.constant_parameters_and_defaults	VisionEgg.ClassWithParameters-class.html#constant_parameters_and_defaults
+VisionEgg.Gratings.SinGrating2D.parameters_and_defaults	VisionEgg.Gratings.SinGrating2D-class.html#parameters_and_defaults
+VisionEgg.ClassWithParameters.__safe_for_unpickling__	VisionEgg.ClassWithParameters-class.html#__safe_for_unpickling__
+VisionEgg.Gratings.SinGrating3D	VisionEgg.Gratings.SinGrating3D-class.html
+VisionEgg.ClassWithParameters.set	VisionEgg.ClassWithParameters-class.html#set
+VisionEgg.Gratings.LuminanceGratingCommon.calculate_bit_depth_dependencies	VisionEgg.Gratings.LuminanceGratingCommon-class.html#calculate_bit_depth_dependencies
+VisionEgg.Gratings.SinGrating3D.__init__	VisionEgg.Gratings.SinGrating3D-class.html#__init__
+VisionEgg.ClassWithParameters.verify_parameters	VisionEgg.ClassWithParameters-class.html#verify_parameters
+VisionEgg.ClassWithParameters.is_constant_parameter	VisionEgg.ClassWithParameters-class.html#is_constant_parameter
+VisionEgg.ClassWithParameters.__getstate__	VisionEgg.ClassWithParameters-class.html#__getstate__
+VisionEgg.ClassWithParameters.get_specified_type	VisionEgg.ClassWithParameters-class.html#get_specified_type
+VisionEgg.Gratings.SinGrating3D.draw	VisionEgg.Gratings.SinGrating3D-class.html#draw
+VisionEgg.ClassWithParameters.__setstate__	VisionEgg.ClassWithParameters-class.html#__setstate__
+VisionEgg.Gratings.SinGrating3D.__del__	VisionEgg.Gratings.SinGrating3D-class.html#__del__
+VisionEgg.ClassWithParameters.constant_parameters_and_defaults	VisionEgg.ClassWithParameters-class.html#constant_parameters_and_defaults
+VisionEgg.Gratings.SinGrating3D.parameters_and_defaults	VisionEgg.Gratings.SinGrating3D-class.html#parameters_and_defaults
+VisionEgg.ClassWithParameters.__safe_for_unpickling__	VisionEgg.ClassWithParameters-class.html#__safe_for_unpickling__
+VisionEgg.MoreStimuli.Arrow	VisionEgg.MoreStimuli.Arrow-class.html
+VisionEgg.ClassWithParameters.get_specified_type	VisionEgg.ClassWithParameters-class.html#get_specified_type
+VisionEgg.MoreStimuli.Arrow.draw	VisionEgg.MoreStimuli.Arrow-class.html#draw
+VisionEgg.ClassWithParameters.verify_parameters	VisionEgg.ClassWithParameters-class.html#verify_parameters
+VisionEgg.ClassWithParameters.is_constant_parameter	VisionEgg.ClassWithParameters-class.html#is_constant_parameter
+VisionEgg.ClassWithParameters.__setstate__	VisionEgg.ClassWithParameters-class.html#__setstate__
+VisionEgg.ClassWithParameters.__getstate__	VisionEgg.ClassWithParameters-class.html#__getstate__
+VisionEgg.ClassWithParameters.set	VisionEgg.ClassWithParameters-class.html#set
+VisionEgg.ClassWithParameters.constant_parameters_and_defaults	VisionEgg.ClassWithParameters-class.html#constant_parameters_and_defaults
+VisionEgg.ClassWithParameters.__safe_for_unpickling__	VisionEgg.ClassWithParameters-class.html#__safe_for_unpickling__
+VisionEgg.MoreStimuli.Arrow.parameters_and_defaults	VisionEgg.MoreStimuli.Arrow-class.html#parameters_and_defaults
+VisionEgg.MoreStimuli.Arrow.__init__	VisionEgg.MoreStimuli.Arrow-class.html#__init__
+VisionEgg.MoreStimuli.FilledCircle	VisionEgg.MoreStimuli.FilledCircle-class.html
+VisionEgg.ClassWithParameters.get_specified_type	VisionEgg.ClassWithParameters-class.html#get_specified_type
+VisionEgg.MoreStimuli.FilledCircle.draw	VisionEgg.MoreStimuli.FilledCircle-class.html#draw
+VisionEgg.ClassWithParameters.verify_parameters	VisionEgg.ClassWithParameters-class.html#verify_parameters
+VisionEgg.ClassWithParameters.is_constant_parameter	VisionEgg.ClassWithParameters-class.html#is_constant_parameter
+VisionEgg.ClassWithParameters.__setstate__	VisionEgg.ClassWithParameters-class.html#__setstate__
+VisionEgg.ClassWithParameters.__getstate__	VisionEgg.ClassWithParameters-class.html#__getstate__
+VisionEgg.ClassWithParameters.set	VisionEgg.ClassWithParameters-class.html#set
+VisionEgg.ClassWithParameters.constant_parameters_and_defaults	VisionEgg.ClassWithParameters-class.html#constant_parameters_and_defaults
+VisionEgg.ClassWithParameters.__safe_for_unpickling__	VisionEgg.ClassWithParameters-class.html#__safe_for_unpickling__
+VisionEgg.MoreStimuli.FilledCircle.parameters_and_defaults	VisionEgg.MoreStimuli.FilledCircle-class.html#parameters_and_defaults
+VisionEgg.MoreStimuli.FilledCircle.__init__	VisionEgg.MoreStimuli.FilledCircle-class.html#__init__
+VisionEgg.MoreStimuli.Rectangle3D	VisionEgg.MoreStimuli.Rectangle3D-class.html
+VisionEgg.ClassWithParameters.get_specified_type	VisionEgg.ClassWithParameters-class.html#get_specified_type
+VisionEgg.MoreStimuli.Rectangle3D.draw	VisionEgg.MoreStimuli.Rectangle3D-class.html#draw
+VisionEgg.ClassWithParameters.verify_parameters	VisionEgg.ClassWithParameters-class.html#verify_parameters
+VisionEgg.ClassWithParameters.is_constant_parameter	VisionEgg.ClassWithParameters-class.html#is_constant_parameter
+VisionEgg.ClassWithParameters.__setstate__	VisionEgg.ClassWithParameters-class.html#__setstate__
+VisionEgg.ClassWithParameters.__getstate__	VisionEgg.ClassWithParameters-class.html#__getstate__
+VisionEgg.ClassWithParameters.set	VisionEgg.ClassWithParameters-class.html#set
+VisionEgg.ClassWithParameters.constant_parameters_and_defaults	VisionEgg.ClassWithParameters-class.html#constant_parameters_and_defaults
+VisionEgg.ClassWithParameters.__safe_for_unpickling__	VisionEgg.ClassWithParameters-class.html#__safe_for_unpickling__
+VisionEgg.MoreStimuli.Rectangle3D.parameters_and_defaults	VisionEgg.MoreStimuli.Rectangle3D-class.html#parameters_and_defaults
+VisionEgg.MoreStimuli.Rectangle3D.__init__	VisionEgg.MoreStimuli.Rectangle3D-class.html#__init__
+VisionEgg.MoreStimuli.Target2D	VisionEgg.MoreStimuli.Target2D-class.html
+VisionEgg.ClassWithParameters.get_specified_type	VisionEgg.ClassWithParameters-class.html#get_specified_type
+VisionEgg.MoreStimuli.Target2D.draw	VisionEgg.MoreStimuli.Target2D-class.html#draw
+VisionEgg.ClassWithParameters.verify_parameters	VisionEgg.ClassWithParameters-class.html#verify_parameters
+VisionEgg.ClassWithParameters.is_constant_parameter	VisionEgg.ClassWithParameters-class.html#is_constant_parameter
+VisionEgg.ClassWithParameters.__setstate__	VisionEgg.ClassWithParameters-class.html#__setstate__
+VisionEgg.ClassWithParameters.__getstate__	VisionEgg.ClassWithParameters-class.html#__getstate__
+VisionEgg.ClassWithParameters.set	VisionEgg.ClassWithParameters-class.html#set
+VisionEgg.ClassWithParameters.constant_parameters_and_defaults	VisionEgg.ClassWithParameters-class.html#constant_parameters_and_defaults
+VisionEgg.ClassWithParameters.__safe_for_unpickling__	VisionEgg.ClassWithParameters-class.html#__safe_for_unpickling__
+VisionEgg.MoreStimuli.Target2D.parameters_and_defaults	VisionEgg.MoreStimuli.Target2D-class.html#parameters_and_defaults
+VisionEgg.MoreStimuli.Target2D.__init__	VisionEgg.MoreStimuli.Target2D-class.html#__init__
+VisionEgg.ParameterDefinition	VisionEgg.ParameterDefinition-class.html
+VisionEgg.ParameterDefinition.OPENGL_ENUM	VisionEgg.ParameterDefinition-class.html#OPENGL_ENUM
+VisionEgg.ParameterDefinition.DEPRECATED	VisionEgg.ParameterDefinition-class.html#DEPRECATED
+VisionEgg.ParameterTypes.AnyClass	VisionEgg.ParameterTypes.AnyClass-class.html
+VisionEgg.ParameterTypes.AnyClass.__metaclass__	VisionEgg.ParameterTypes.AnyClassMC-class.html
+VisionEgg.ParameterTypes.AnyClass.verify	VisionEgg.ParameterTypes.AnyClass-class.html#verify
+VisionEgg.ParameterTypes.AnyClassMC	VisionEgg.ParameterTypes.AnyClassMC-class.html
+VisionEgg.ParameterTypes.AnyClassMC.__str__	VisionEgg.ParameterTypes.AnyClassMC-class.html#__str__
+VisionEgg.ParameterTypes.AnyOf	VisionEgg.ParameterTypes.AnyOf-class.html
+VisionEgg.ParameterTypes.AnyOf.verify	VisionEgg.ParameterTypes.AnyOf-class.html#verify
+VisionEgg.ParameterTypes.AnyOf.__str__	VisionEgg.ParameterTypes.AnyOf-class.html#__str__
+VisionEgg.ParameterTypes.AnyOf.get_item_types	VisionEgg.ParameterTypes.AnyOf-class.html#get_item_types
+VisionEgg.ParameterTypes.AnyOf.__init__	VisionEgg.ParameterTypes.AnyOf-class.html#__init__
+VisionEgg.ParameterTypes.Boolean	VisionEgg.ParameterTypes.Boolean-class.html
+VisionEgg.ParameterTypes.Boolean.__metaclass__	VisionEgg.ParameterTypes.BooleanMC-class.html
+VisionEgg.ParameterTypes.Boolean.verify	VisionEgg.ParameterTypes.Boolean-class.html#verify
+VisionEgg.ParameterTypes.BooleanMC	VisionEgg.ParameterTypes.BooleanMC-class.html
+VisionEgg.ParameterTypes.BooleanMC.__str__	VisionEgg.ParameterTypes.BooleanMC-class.html#__str__
+VisionEgg.ParameterTypes.Callable	VisionEgg.ParameterTypes.Callable-class.html
+VisionEgg.ParameterTypes.Callable.__metaclass__	VisionEgg.ParameterTypes.CallableMC-class.html
+VisionEgg.ParameterTypes.Callable.verify	VisionEgg.ParameterTypes.Callable-class.html#verify
+VisionEgg.ParameterTypes.CallableMC	VisionEgg.ParameterTypes.CallableMC-class.html
+VisionEgg.ParameterTypes.CallableMC.__str__	VisionEgg.ParameterTypes.CallableMC-class.html#__str__
+VisionEgg.ParameterTypes.Instance	VisionEgg.ParameterTypes.Instance-class.html
+VisionEgg.ParameterTypes.Instance.verify	VisionEgg.ParameterTypes.Instance-class.html#verify
+VisionEgg.ParameterTypes.Instance.__str__	VisionEgg.ParameterTypes.Instance-class.html#__str__
+VisionEgg.ParameterTypes.Instance.__init__	VisionEgg.ParameterTypes.Instance-class.html#__init__
+VisionEgg.ParameterTypes.Integer	VisionEgg.ParameterTypes.Integer-class.html
+VisionEgg.ParameterTypes.Integer.__metaclass__	VisionEgg.ParameterTypes.IntegerMC-class.html
+VisionEgg.ParameterTypes.Integer.verify	VisionEgg.ParameterTypes.Integer-class.html#verify
+VisionEgg.ParameterTypes.IntegerMC	VisionEgg.ParameterTypes.IntegerMC-class.html
+VisionEgg.ParameterTypes.IntegerMC.__str__	VisionEgg.ParameterTypes.IntegerMC-class.html#__str__
+VisionEgg.ParameterTypes.NoneMC	VisionEgg.ParameterTypes.NoneMC-class.html
+VisionEgg.ParameterTypes.NoneMC.__str__	VisionEgg.ParameterTypes.NoneMC-class.html#__str__
+VisionEgg.ParameterTypes.NoneType	VisionEgg.ParameterTypes.NoneType-class.html
+VisionEgg.ParameterTypes.NoneType.__metaclass__	VisionEgg.ParameterTypes.NoneMC-class.html
+VisionEgg.ParameterTypes.NoneType.verify	VisionEgg.ParameterTypes.NoneType-class.html#verify
+VisionEgg.ParameterTypes.ParameterTypeDef	VisionEgg.ParameterTypes.ParameterTypeDef-class.html
+VisionEgg.ParameterTypes.ParameterTypeDef.verify	VisionEgg.ParameterTypes.ParameterTypeDef-class.html#verify
+VisionEgg.ParameterTypes.Real	VisionEgg.ParameterTypes.Real-class.html
+VisionEgg.ParameterTypes.Real.__metaclass__	VisionEgg.ParameterTypes.RealMC-class.html
+VisionEgg.ParameterTypes.Real.verify	VisionEgg.ParameterTypes.Real-class.html#verify
+VisionEgg.ParameterTypes.RealMC	VisionEgg.ParameterTypes.RealMC-class.html
+VisionEgg.ParameterTypes.RealMC.__str__	VisionEgg.ParameterTypes.RealMC-class.html#__str__
+VisionEgg.ParameterTypes.Sequence	VisionEgg.ParameterTypes.Sequence-class.html
+VisionEgg.ParameterTypes.Sequence.verify	VisionEgg.ParameterTypes.Sequence-class.html#verify
+VisionEgg.ParameterTypes.Sequence.__str__	VisionEgg.ParameterTypes.Sequence-class.html#__str__
+VisionEgg.ParameterTypes.Sequence.__init__	VisionEgg.ParameterTypes.Sequence-class.html#__init__
+VisionEgg.ParameterTypes.Sequence2	VisionEgg.ParameterTypes.Sequence2-class.html
+VisionEgg.ParameterTypes.Sequence2.verify	VisionEgg.ParameterTypes.Sequence2-class.html#verify
+VisionEgg.ParameterTypes.Sequence2.__str__	VisionEgg.ParameterTypes.Sequence2-class.html#__str__
+VisionEgg.ParameterTypes.Sequence.__init__	VisionEgg.ParameterTypes.Sequence-class.html#__init__
+VisionEgg.ParameterTypes.Sequence3	VisionEgg.ParameterTypes.Sequence3-class.html
+VisionEgg.ParameterTypes.Sequence3.verify	VisionEgg.ParameterTypes.Sequence3-class.html#verify
+VisionEgg.ParameterTypes.Sequence3.__str__	VisionEgg.ParameterTypes.Sequence3-class.html#__str__
+VisionEgg.ParameterTypes.Sequence.__init__	VisionEgg.ParameterTypes.Sequence-class.html#__init__
+VisionEgg.ParameterTypes.Sequence4	VisionEgg.ParameterTypes.Sequence4-class.html
+VisionEgg.ParameterTypes.Sequence4.verify	VisionEgg.ParameterTypes.Sequence4-class.html#verify
+VisionEgg.ParameterTypes.Sequence4.__str__	VisionEgg.ParameterTypes.Sequence4-class.html#__str__
+VisionEgg.ParameterTypes.Sequence.__init__	VisionEgg.ParameterTypes.Sequence-class.html#__init__
+VisionEgg.ParameterTypes.Sequence4x4	VisionEgg.ParameterTypes.Sequence4x4-class.html
+VisionEgg.ParameterTypes.Sequence4x4.verify	VisionEgg.ParameterTypes.Sequence4x4-class.html#verify
+VisionEgg.ParameterTypes.Sequence4x4.__str__	VisionEgg.ParameterTypes.Sequence4x4-class.html#__str__
+VisionEgg.ParameterTypes.Sequence.__init__	VisionEgg.ParameterTypes.Sequence-class.html#__init__
+VisionEgg.ParameterTypes.String	VisionEgg.ParameterTypes.String-class.html
+VisionEgg.ParameterTypes.String.__metaclass__	VisionEgg.ParameterTypes.StringMC-class.html
+VisionEgg.ParameterTypes.String.verify	VisionEgg.ParameterTypes.String-class.html#verify
+VisionEgg.ParameterTypes.StringMC	VisionEgg.ParameterTypes.StringMC-class.html
+VisionEgg.ParameterTypes.StringMC.__str__	VisionEgg.ParameterTypes.StringMC-class.html#__str__
+VisionEgg.ParameterTypes.SubClass	VisionEgg.ParameterTypes.SubClass-class.html
+VisionEgg.ParameterTypes.SubClass.verify	VisionEgg.ParameterTypes.SubClass-class.html#verify
+VisionEgg.ParameterTypes.SubClass.__str__	VisionEgg.ParameterTypes.SubClass-class.html#__str__
+VisionEgg.ParameterTypes.SubClass.__init__	VisionEgg.ParameterTypes.SubClass-class.html#__init__
+VisionEgg.ParameterTypes.Unicode	VisionEgg.ParameterTypes.Unicode-class.html
+VisionEgg.ParameterTypes.Unicode.__metaclass__	VisionEgg.ParameterTypes.UnicodeMC-class.html
+VisionEgg.ParameterTypes.Unicode.verify	VisionEgg.ParameterTypes.Unicode-class.html#verify
+VisionEgg.ParameterTypes.UnicodeMC	VisionEgg.ParameterTypes.UnicodeMC-class.html
+VisionEgg.ParameterTypes.UnicodeMC.__str__	VisionEgg.ParameterTypes.UnicodeMC-class.html#__str__
+VisionEgg.ParameterTypes.UnsignedInteger	VisionEgg.ParameterTypes.UnsignedInteger-class.html
+VisionEgg.ParameterTypes.UnsignedInteger.__metaclass__	VisionEgg.ParameterTypes.UnsignedIntegerMC-class.html
+VisionEgg.ParameterTypes.UnsignedInteger.verify	VisionEgg.ParameterTypes.UnsignedInteger-class.html#verify
+VisionEgg.ParameterTypes.UnsignedIntegerMC	VisionEgg.ParameterTypes.UnsignedIntegerMC-class.html
+VisionEgg.ParameterTypes.UnsignedIntegerMC.__str__	VisionEgg.ParameterTypes.UnsignedIntegerMC-class.html#__str__
+VisionEgg.Parameters	VisionEgg.Parameters-class.html
+VisionEgg.PyroApps.AST_ext.AST_Visitor	VisionEgg.PyroApps.AST_ext.AST_Visitor-class.html
+VisionEgg.PyroApps.AST_ext.AST_Visitor.traverse	VisionEgg.PyroApps.AST_ext.AST_Visitor-class.html#traverse
+VisionEgg.PyroApps.AST_ext.AST_Visitor.__init__	VisionEgg.PyroApps.AST_ext.AST_Visitor-class.html#__init__
+VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame	VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame-class.html
+Tkinter.Misc.getdouble	float-class.html
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.go	VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#go
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.make_callback_entry	VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#make_callback_entry
+VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.title	VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame-class.html#title
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.get_loopable_variable_names	VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#get_loopable_variable_names
+Tkinter.Misc.getint	int-class.html
+VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.get_shortname	VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame-class.html#get_shortname
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.standalone_connect	VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#standalone_connect
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.set_param_dict	VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#set_param_dict
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.set_loopable_variable	VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#set_loopable_variable
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.connect	VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#connect
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.get_parameters_as_m_strings	VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#get_parameters_as_m_strings
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.quit_server	VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#quit_server
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.get_parameters_as_py_strings	VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#get_parameters_as_py_strings
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.get_matlab_string	VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#get_matlab_string
+VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.send_values	VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame-class.html#send_values
+VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.update_tk_vars	VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame-class.html#update_tk_vars
+VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.__init__	VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame-class.html#__init__
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.set_parameters_dict	VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#set_parameters_dict
+VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame.get_duration_sec	VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame-class.html#get_duration_sec
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.get_parameters_dict	VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#get_parameters_dict
+VisionEgg.PyroApps.ColorCalGUI.ColorCalMetaParameters	VisionEgg.PyroApps.ColorCalGUI.ColorCalMetaParameters-class.html
+VisionEgg.PyroApps.ColorCalGUI.ColorCalMetaParameters.__init__	VisionEgg.PyroApps.ColorCalGUI.ColorCalMetaParameters-class.html#__init__
+VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController	VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController-class.html
+VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.go	VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController-class.html#go
+VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.set_parameters	VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController-class.html#set_parameters
+VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.__init__	VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController-class.html#__init__
+VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.get_parameters	VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController-class.html#get_parameters
+VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.update	VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController-class.html#update
+VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController.quit_server	VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController-class.html#quit_server
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame	VisionEgg.PyroApps.DropinGUI.DropinControlFrame-class.html
+Tkinter.Misc.getdouble	float-class.html
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.go	VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#go
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.make_callback_entry	VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#make_callback_entry
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.title	VisionEgg.PyroApps.DropinGUI.DropinControlFrame-class.html#title
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.get_loopable_variable_names	VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#get_loopable_variable_names
+Tkinter.Misc.getint	int-class.html
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.get_shortname	VisionEgg.PyroApps.DropinGUI.DropinControlFrame-class.html#get_shortname
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.standalone_connect	VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#standalone_connect
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.set_param_dict	VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#set_param_dict
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.set_loopable_variable	VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#set_loopable_variable
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.gen_var_widgets	VisionEgg.PyroApps.DropinGUI.DropinControlFrame-class.html#gen_var_widgets
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.connect	VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#connect
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.get_parameters_as_m_strings	VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#get_parameters_as_m_strings
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.quit_server	VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#quit_server
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.get_parameters_as_py_strings	VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#get_parameters_as_py_strings
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.get_matlab_string	VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#get_matlab_string
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.send_values	VisionEgg.PyroApps.DropinGUI.DropinControlFrame-class.html#send_values
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.update_tk_vars	VisionEgg.PyroApps.DropinGUI.DropinControlFrame-class.html#update_tk_vars
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.__init__	VisionEgg.PyroApps.DropinGUI.DropinControlFrame-class.html#__init__
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.set_parameters_dict	VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#set_parameters_dict
+VisionEgg.PyroApps.DropinGUI.DropinControlFrame.get_duration_sec	VisionEgg.PyroApps.DropinGUI.DropinControlFrame-class.html#get_duration_sec
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.get_parameters_dict	VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#get_parameters_dict
+VisionEgg.PyroApps.DropinGUI.DropinMetaParameters	VisionEgg.PyroApps.DropinGUI.DropinMetaParameters-class.html
+VisionEgg.PyroApps.DropinGUI.DropinMetaParameters.__init__	VisionEgg.PyroApps.DropinGUI.DropinMetaParameters-class.html#__init__
+VisionEgg.PyroApps.DropinServer.DropinMetaController	VisionEgg.PyroApps.DropinServer.DropinMetaController-class.html
+VisionEgg.PyroApps.DropinServer.DropinMetaController.go	VisionEgg.PyroApps.DropinServer.DropinMetaController-class.html#go
+VisionEgg.PyroApps.DropinServer.DropinMetaController.set_parameters	VisionEgg.PyroApps.DropinServer.DropinMetaController-class.html#set_parameters
+VisionEgg.PyroApps.DropinServer.DropinMetaController.__init__	VisionEgg.PyroApps.DropinServer.DropinMetaController-class.html#__init__
+VisionEgg.PyroApps.DropinServer.DropinMetaController.get_parameters	VisionEgg.PyroApps.DropinServer.DropinMetaController-class.html#get_parameters
+VisionEgg.PyroApps.DropinServer.DropinMetaController.update	VisionEgg.PyroApps.DropinServer.DropinMetaController-class.html#update
+VisionEgg.PyroApps.DropinServer.DropinMetaController.quit_server	VisionEgg.PyroApps.DropinServer.DropinMetaController-class.html#quit_server
+VisionEgg.PyroApps.EPhysGUI.AppWindow	VisionEgg.PyroApps.EPhysGUI.AppWindow-class.html
+Tkinter.Misc.getdouble	float-class.html
+VisionEgg.PyroApps.EPhysGUI.AppWindow.do_single_trial_post	VisionEgg.PyroApps.EPhysGUI.AppWindow-class.html#do_single_trial_post
+VisionEgg.PyroApps.EPhysGUI.AppWindow.change_stimulus	VisionEgg.PyroApps.EPhysGUI.AppWindow-class.html#change_stimulus
+VisionEgg.PyroApps.EPhysGUI.AppWindow.sleep_with_progress	VisionEgg.PyroApps.EPhysGUI.AppWindow-class.html#sleep_with_progress
+Tkinter.Misc.getint	int-class.html
+VisionEgg.PyroApps.EPhysGUI.AppWindow.set_autosave_dir	VisionEgg.PyroApps.EPhysGUI.AppWindow-class.html#set_autosave_dir
+VisionEgg.PyroApps.EPhysGUI.AppWindow.do_loops	VisionEgg.PyroApps.EPhysGUI.AppWindow-class.html#do_loops
+VisionEgg.PyroApps.EPhysGUI.AppWindow.update_stim_onset_cal	VisionEgg.PyroApps.EPhysGUI.AppWindow-class.html#update_stim_onset_cal
+VisionEgg.PyroApps.EPhysGUI.AppWindow.load_config	VisionEgg.PyroApps.EPhysGUI.AppWindow-class.html#load_config
+VisionEgg.PyroApps.EPhysGUI.AppWindow.load_demoscript	VisionEgg.PyroApps.EPhysGUI.AppWindow-class.html#load_demoscript
+VisionEgg.PyroApps.EPhysGUI.AppWindow.do_single_trial	VisionEgg.PyroApps.EPhysGUI.AppWindow-class.html#do_single_trial
+VisionEgg.PyroApps.EPhysGUI.AppWindow.do_single_trial_work	VisionEgg.PyroApps.EPhysGUI.AppWindow-class.html#do_single_trial_work
+VisionEgg.PyroApps.EPhysGUI.AppWindow.load_params	VisionEgg.PyroApps.EPhysGUI.AppWindow-class.html#load_params
+VisionEgg.PyroApps.EPhysGUI.AppWindow.quit	VisionEgg.PyroApps.EPhysGUI.AppWindow-class.html#quit
+VisionEgg.PyroApps.EPhysGUI.AppWindow.launch_gamma_panel	VisionEgg.PyroApps.EPhysGUI.AppWindow-class.html#launch_gamma_panel
+VisionEgg.PyroApps.EPhysGUI.AppWindow.launch_screen_pos	VisionEgg.PyroApps.EPhysGUI.AppWindow-class.html#launch_screen_pos
+VisionEgg.PyroApps.EPhysGUI.AppWindow.__del__	VisionEgg.PyroApps.EPhysGUI.AppWindow-class.html#__del__
+VisionEgg.PyroApps.EPhysGUI.AppWindow.switch_to_stimkey	VisionEgg.PyroApps.EPhysGUI.AppWindow-class.html#switch_to_stimkey
+VisionEgg.PyroApps.EPhysGUI.AppWindow.set_stim_onset_cal_position	VisionEgg.PyroApps.EPhysGUI.AppWindow-class.html#set_stim_onset_cal_position
+VisionEgg.PyroApps.EPhysGUI.AppWindow.save_config	VisionEgg.PyroApps.EPhysGUI.AppWindow-class.html#save_config
+VisionEgg.PyroApps.EPhysGUI.AppWindow.save_image_sequence	VisionEgg.PyroApps.EPhysGUI.AppWindow-class.html#save_image_sequence
+VisionEgg.PyroApps.EPhysGUI.AppWindow.__init__	VisionEgg.PyroApps.EPhysGUI.AppWindow-class.html#__init__
+VisionEgg.PyroApps.EPhysGUI.AppWindow.do_single_trial_pre	VisionEgg.PyroApps.EPhysGUI.AppWindow-class.html#do_single_trial_pre
+VisionEgg.PyroApps.EPhysGUI.AppWindow.destroy	VisionEgg.PyroApps.EPhysGUI.AppWindow-class.html#destroy
+VisionEgg.PyroApps.EPhysGUI.AppWindow.reset_autosave_basename	VisionEgg.PyroApps.EPhysGUI.AppWindow-class.html#reset_autosave_basename
+VisionEgg.PyroApps.EPhysGUI.AppWindow.launch_stim_onset_cal	VisionEgg.PyroApps.EPhysGUI.AppWindow-class.html#launch_stim_onset_cal
+VisionEgg.PyroApps.EPhysGUI.BarButton	VisionEgg.PyroApps.EPhysGUI.BarButton-class.html
+Tkinter.Misc.getdouble	float-class.html
+Tkinter.Misc.getint	int-class.html
+VisionEgg.PyroApps.EPhysGUI.BarButton.__init__	VisionEgg.PyroApps.EPhysGUI.BarButton-class.html#__init__
+VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase	VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase-class.html
+VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase.header	VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase-class.html#header
+VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase.get_str_30	VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase-class.html#get_str_30
+VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase.__init__	VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase-class.html#__init__
+VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase.get_contained	VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase-class.html#get_contained
+VisionEgg.PyroApps.EPhysGUI.GammaFrame	VisionEgg.PyroApps.EPhysGUI.GammaFrame-class.html
+Tkinter.Misc.getdouble	float-class.html
+VisionEgg.PyroApps.EPhysGUI.GammaFrame.set_from_file	VisionEgg.PyroApps.EPhysGUI.GammaFrame-class.html#set_from_file
+Tkinter.Misc.getint	int-class.html
+VisionEgg.PyroApps.EPhysGUI.GammaFrame.get_corrected_gamma_table	VisionEgg.PyroApps.EPhysGUI.GammaFrame-class.html#get_corrected_gamma_table
+VisionEgg.PyroApps.EPhysGUI.GammaFrame.linearize	VisionEgg.PyroApps.EPhysGUI.GammaFrame-class.html#linearize
+VisionEgg.PyroApps.EPhysGUI.GammaFrame.__init__	VisionEgg.PyroApps.EPhysGUI.GammaFrame-class.html#__init__
+VisionEgg.PyroApps.EPhysGUI.GammaFrame.set_monitor_default	VisionEgg.PyroApps.EPhysGUI.GammaFrame-class.html#set_monitor_default
+VisionEgg.PyroApps.EPhysGUI.ImageSequenceLauncher	VisionEgg.PyroApps.EPhysGUI.ImageSequenceLauncher-class.html
+Tkinter.Misc.getdouble	float-class.html
+Tkinter.Misc.getint	int-class.html
+VisionEgg.PyroApps.EPhysGUI.ImageSequenceLauncher.do_it	VisionEgg.PyroApps.EPhysGUI.ImageSequenceLauncher-class.html#do_it
+VisionEgg.PyroApps.EPhysGUI.ImageSequenceLauncher.__init__	VisionEgg.PyroApps.EPhysGUI.ImageSequenceLauncher-class.html#__init__
+VisionEgg.PyroApps.EPhysGUI.Loop	VisionEgg.PyroApps.EPhysGUI.Loop-class.html
+VisionEgg.ClassWithParameters.set	VisionEgg.ClassWithParameters-class.html#set
+VisionEgg.PyroApps.EPhysGUI.Loop.get_current	VisionEgg.PyroApps.EPhysGUI.Loop-class.html#get_current
+VisionEgg.PyroApps.EPhysGUI.Loop.__init__	VisionEgg.PyroApps.EPhysGUI.Loop-class.html#__init__
+VisionEgg.ClassWithParameters.verify_parameters	VisionEgg.ClassWithParameters-class.html#verify_parameters
+VisionEgg.ClassWithParameters.is_constant_parameter	VisionEgg.ClassWithParameters-class.html#is_constant_parameter
+VisionEgg.PyroApps.EPhysGUI.Loop.is_done	VisionEgg.PyroApps.EPhysGUI.Loop-class.html#is_done
+VisionEgg.ClassWithParameters.__getstate__	VisionEgg.ClassWithParameters-class.html#__getstate__
+VisionEgg.ClassWithParameters.get_specified_type	VisionEgg.ClassWithParameters-class.html#get_specified_type
+VisionEgg.ClassWithParameters.__setstate__	VisionEgg.ClassWithParameters-class.html#__setstate__
+VisionEgg.ClassWithParameters.constant_parameters_and_defaults	VisionEgg.ClassWithParameters-class.html#constant_parameters_and_defaults
+VisionEgg.PyroApps.EPhysGUI.Loop.parameters_and_defaults	VisionEgg.PyroApps.EPhysGUI.Loop-class.html#parameters_and_defaults
+VisionEgg.PyroApps.EPhysGUI.Loop.reset	VisionEgg.PyroApps.EPhysGUI.Loop-class.html#reset
+VisionEgg.PyroApps.EPhysGUI.Loop.advance	VisionEgg.PyroApps.EPhysGUI.Loop-class.html#advance
+VisionEgg.ClassWithParameters.__safe_for_unpickling__	VisionEgg.ClassWithParameters-class.html#__safe_for_unpickling__
+VisionEgg.PyroApps.EPhysGUI.LoopContainedObject	VisionEgg.PyroApps.EPhysGUI.LoopContainedObject-class.html
+VisionEgg.PyroApps.EPhysGUI.LoopContainedObject.contained_class	VisionEgg.PyroApps.EPhysGUI.Loop-class.html
+VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase.get_contained	VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase-class.html#get_contained
+VisionEgg.PyroApps.EPhysGUI.LoopContainedObject.get_str_30	VisionEgg.PyroApps.EPhysGUI.LoopContainedObject-class.html#get_str_30
+VisionEgg.PyroApps.EPhysGUI.LoopContainedObject.__init__	VisionEgg.PyroApps.EPhysGUI.LoopContainedObject-class.html#__init__
+VisionEgg.PyroApps.EPhysGUI.LoopContainedObject.header	VisionEgg.PyroApps.EPhysGUI.LoopContainedObject-class.html#header
+VisionEgg.PyroApps.EPhysGUI.LoopParamDialog	VisionEgg.PyroApps.EPhysGUI.LoopParamDialog-class.html
+Tkinter.Misc.getdouble	float-class.html
+Tkinter.Misc.getint	int-class.html
+VisionEgg.PyroApps.EPhysGUI.LoopParamDialog.body	VisionEgg.PyroApps.EPhysGUI.LoopParamDialog-class.html#body
+VisionEgg.PyroApps.EPhysGUI.LoopParamDialog.__init__	VisionEgg.PyroApps.EPhysGUI.LoopParamDialog-class.html#__init__
+VisionEgg.PyroApps.EPhysGUI.LoopParamDialog.destroy	VisionEgg.PyroApps.EPhysGUI.LoopParamDialog-class.html#destroy
+VisionEgg.PyroApps.EPhysGUI.LoopParamDialog.validate	VisionEgg.PyroApps.EPhysGUI.LoopParamDialog-class.html#validate
+VisionEgg.PyroApps.EPhysGUI.ScrollListFrame	VisionEgg.PyroApps.EPhysGUI.ScrollListFrame-class.html
+Tkinter.Misc.getdouble	float-class.html
+VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.make_loop_contained_object	VisionEgg.PyroApps.EPhysGUI.ScrollListFrame-class.html#make_loop_contained_object
+VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.get_list_uncontained	VisionEgg.PyroApps.EPhysGUI.ScrollListFrame-class.html#get_list_uncontained
+VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.list2D_coordinates	VisionEgg.PyroApps.EPhysGUI.ScrollListFrame-class.html#list2D_coordinates
+VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.edit_contained_object	VisionEgg.PyroApps.EPhysGUI.ScrollListFrame-class.html#edit_contained_object
+VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.remove_selected	VisionEgg.PyroApps.EPhysGUI.ScrollListFrame-class.html#remove_selected
+Tkinter.Misc.getint	int-class.html
+VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.make_merge	VisionEgg.PyroApps.EPhysGUI.ScrollListFrame-class.html#make_merge
+VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.add_new	VisionEgg.PyroApps.EPhysGUI.ScrollListFrame-class.html#add_new
+VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.move_selected_down	VisionEgg.PyroApps.EPhysGUI.ScrollListFrame-class.html#move_selected_down
+VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.get_selected	VisionEgg.PyroApps.EPhysGUI.ScrollListFrame-class.html#get_selected
+VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.map_to_listbox_index	VisionEgg.PyroApps.EPhysGUI.ScrollListFrame-class.html#map_to_listbox_index
+VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.move_selected_up	VisionEgg.PyroApps.EPhysGUI.ScrollListFrame-class.html#move_selected_up
+VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.update_now	VisionEgg.PyroApps.EPhysGUI.ScrollListFrame-class.html#update_now
+VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.__init__	VisionEgg.PyroApps.EPhysGUI.ScrollListFrame-class.html#__init__
+VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.edit_selected	VisionEgg.PyroApps.EPhysGUI.ScrollListFrame-class.html#edit_selected
+VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.delegate_hscroll	VisionEgg.PyroApps.EPhysGUI.ScrollListFrame-class.html#delegate_hscroll
+VisionEgg.PyroApps.EPhysGUI.ScrollListFrame.make_contained_object	VisionEgg.PyroApps.EPhysGUI.ScrollListFrame-class.html#make_contained_object
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame	VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html
+Tkinter.Misc.getdouble	float-class.html
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.go	VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#go
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.make_callback_entry	VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#make_callback_entry
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.get_loopable_variable_names	VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#get_loopable_variable_names
+Tkinter.Misc.getint	int-class.html
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.get_shortname	VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#get_shortname
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.standalone_connect	VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#standalone_connect
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.set_param_dict	VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#set_param_dict
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.set_loopable_variable	VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#set_loopable_variable
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.connect	VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#connect
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.get_parameters_as_m_strings	VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#get_parameters_as_m_strings
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.quit_server	VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#quit_server
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.get_parameters_as_py_strings	VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#get_parameters_as_py_strings
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.get_matlab_string	VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#get_matlab_string
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.send_values	VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#send_values
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.update_tk_vars	VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#update_tk_vars
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.__init__	VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#__init__
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.set_parameters_dict	VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#set_parameters_dict
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.get_duration_sec	VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#get_duration_sec
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.get_parameters_dict	VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#get_parameters_dict
+VisionEgg.PyroApps.EPhysServer.EPhysServer	VisionEgg.PyroApps.EPhysServer.EPhysServer-class.html
+VisionEgg.PyroApps.EPhysServer.EPhysServer.get_cwd	VisionEgg.PyroApps.EPhysServer.EPhysServer-class.html#get_cwd
+VisionEgg.PyroApps.EPhysServer.EPhysServer.get_next_stimulus_meta_controller	VisionEgg.PyroApps.EPhysServer.EPhysServer-class.html#get_next_stimulus_meta_controller
+VisionEgg.PyroApps.EPhysServer.EPhysServer.set_stim_onset_cal	VisionEgg.PyroApps.EPhysServer.EPhysServer-class.html#set_stim_onset_cal
+VisionEgg.PyroApps.EPhysServer.EPhysServer.save_image_sequence	VisionEgg.PyroApps.EPhysServer.EPhysServer-class.html#save_image_sequence
+VisionEgg.PyroApps.EPhysServer.EPhysServer.were_frames_dropped_in_last_go_loop	VisionEgg.PyroApps.EPhysServer.EPhysServer-class.html#were_frames_dropped_in_last_go_loop
+VisionEgg.PyroApps.EPhysServer.EPhysServer.__init__	VisionEgg.PyroApps.EPhysServer.EPhysServer-class.html#__init__
+VisionEgg.PyroApps.EPhysServer.EPhysServer.first_connection	VisionEgg.PyroApps.EPhysServer.EPhysServer-class.html#first_connection
+VisionEgg.PyroApps.EPhysServer.EPhysServer.get_stimkey	VisionEgg.PyroApps.EPhysServer.EPhysServer-class.html#get_stimkey
+VisionEgg.PyroApps.EPhysServer.EPhysServer.set_stim_onset_cal_location	VisionEgg.PyroApps.EPhysServer.EPhysServer-class.html#set_stim_onset_cal_location
+VisionEgg.PyroApps.EPhysServer.EPhysServer.is_in_go_loop	VisionEgg.PyroApps.EPhysServer.EPhysServer-class.html#is_in_go_loop
+VisionEgg.PyroApps.EPhysServer.EPhysServer.get_stim_onset_cal_location	VisionEgg.PyroApps.EPhysServer.EPhysServer-class.html#get_stim_onset_cal_location
+VisionEgg.PyroApps.EPhysServer.EPhysServer.set_quit_status	VisionEgg.PyroApps.EPhysServer.EPhysServer-class.html#set_quit_status
+VisionEgg.PyroApps.EPhysServer.EPhysServer.run_demoscript	VisionEgg.PyroApps.EPhysServer.EPhysServer-class.html#run_demoscript
+VisionEgg.PyroApps.EPhysServer.EPhysServer.set_next_stimkey	VisionEgg.PyroApps.EPhysServer.EPhysServer-class.html#set_next_stimkey
+VisionEgg.PyroApps.EPhysServer.EPhysServer.set_override_t_abs_sec	VisionEgg.PyroApps.EPhysServer.EPhysServer-class.html#set_override_t_abs_sec
+VisionEgg.PyroApps.EPhysServer.EPhysServer.get_last_go_loop_start_time_absolute_sec	VisionEgg.PyroApps.EPhysServer.EPhysServer-class.html#get_last_go_loop_start_time_absolute_sec
+VisionEgg.PyroApps.EPhysServer.EPhysServer.__del__	VisionEgg.PyroApps.EPhysServer.EPhysServer-class.html#__del__
+VisionEgg.PyroApps.EPhysServer.EPhysServer.get_quit_status	VisionEgg.PyroApps.EPhysServer.EPhysServer-class.html#get_quit_status
+VisionEgg.PyroApps.EPhysServer.EPhysServer.exec_AST	VisionEgg.PyroApps.EPhysServer.EPhysServer-class.html#exec_AST
+VisionEgg.PyroApps.EPhysServer.EPhysServer.build_AST	VisionEgg.PyroApps.EPhysServer.EPhysServer-class.html#build_AST
+VisionEgg.PyroApps.EPhysServer.EPhysServer.set_gamma_ramp	VisionEgg.PyroApps.EPhysServer.EPhysServer-class.html#set_gamma_ramp
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame	VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame-class.html
+Tkinter.Misc.getdouble	float-class.html
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.go	VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#go
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.make_callback_entry	VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#make_callback_entry
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.title	VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame-class.html#title
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.get_loopable_variable_names	VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#get_loopable_variable_names
+Tkinter.Misc.getint	int-class.html
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.get_shortname	VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame-class.html#get_shortname
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.standalone_connect	VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#standalone_connect
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.set_param_dict	VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#set_param_dict
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.connect	VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#connect
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.get_parameters_as_m_strings	VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#get_parameters_as_m_strings
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.quit_server	VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#quit_server
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.get_parameters_as_py_strings	VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#get_parameters_as_py_strings
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.get_matlab_string	VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#get_matlab_string
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.set_loopable_variable	VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#set_loopable_variable
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.send_values	VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame-class.html#send_values
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.update_tk_vars	VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame-class.html#update_tk_vars
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.__init__	VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame-class.html#__init__
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.set_parameters_dict	VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#set_parameters_dict
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame.get_duration_sec	VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame-class.html#get_duration_sec
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.get_parameters_dict	VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#get_parameters_dict
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingMetaParameters	VisionEgg.PyroApps.FlatGratingGUI.FlatGratingMetaParameters-class.html
+VisionEgg.PyroApps.FlatGratingGUI.FlatGratingMetaParameters.__init__	VisionEgg.PyroApps.FlatGratingGUI.FlatGratingMetaParameters-class.html#__init__
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController	VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController-class.html
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.go	VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController-class.html#go
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.set_parameters	VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController-class.html#set_parameters
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.__init__	VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController-class.html#__init__
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.on_function_between_go	VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController-class.html#on_function_between_go
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.on_function_during_go	VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController-class.html#on_function_during_go
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.get_parameters	VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController-class.html#get_parameters
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.__del__	VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController-class.html#__del__
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.update	VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController-class.html#update
+VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController.quit_server	VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController-class.html#quit_server
+VisionEgg.PyroApps.GridGUI.GridControlFrame	VisionEgg.PyroApps.GridGUI.GridControlFrame-class.html
+Tkinter.Misc.getdouble	float-class.html
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.go	VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#go
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.make_callback_entry	VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#make_callback_entry
+VisionEgg.PyroApps.GridGUI.GridControlFrame.title	VisionEgg.PyroApps.GridGUI.GridControlFrame-class.html#title
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.get_loopable_variable_names	VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#get_loopable_variable_names
+Tkinter.Misc.getint	int-class.html
+VisionEgg.PyroApps.GridGUI.GridControlFrame.get_shortname	VisionEgg.PyroApps.GridGUI.GridControlFrame-class.html#get_shortname
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.standalone_connect	VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#standalone_connect
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.set_param_dict	VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#set_param_dict
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.connect	VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#connect
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.get_parameters_as_m_strings	VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#get_parameters_as_m_strings
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.quit_server	VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#quit_server
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.get_parameters_as_py_strings	VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#get_parameters_as_py_strings
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.get_matlab_string	VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#get_matlab_string
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.set_loopable_variable	VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#set_loopable_variable
+VisionEgg.PyroApps.GridGUI.GridControlFrame.send_values	VisionEgg.PyroApps.GridGUI.GridControlFrame-class.html#send_values
+VisionEgg.PyroApps.GridGUI.GridControlFrame.update_tk_vars	VisionEgg.PyroApps.GridGUI.GridControlFrame-class.html#update_tk_vars
+VisionEgg.PyroApps.GridGUI.GridControlFrame.__init__	VisionEgg.PyroApps.GridGUI.GridControlFrame-class.html#__init__
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.set_parameters_dict	VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#set_parameters_dict
+VisionEgg.PyroApps.GridGUI.GridControlFrame.get_duration_sec	VisionEgg.PyroApps.GridGUI.GridControlFrame-class.html#get_duration_sec
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.get_parameters_dict	VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#get_parameters_dict
+VisionEgg.PyroApps.GridGUI.GridMetaParameters	VisionEgg.PyroApps.GridGUI.GridMetaParameters-class.html
+VisionEgg.PyroApps.GridGUI.GridMetaParameters.__init__	VisionEgg.PyroApps.GridGUI.GridMetaParameters-class.html#__init__
+VisionEgg.PyroApps.GridServer.GridMetaController	VisionEgg.PyroApps.GridServer.GridMetaController-class.html
+VisionEgg.PyroApps.GridServer.GridMetaController.go	VisionEgg.PyroApps.GridServer.GridMetaController-class.html#go
+VisionEgg.PyroApps.GridServer.GridMetaController.set_parameters	VisionEgg.PyroApps.GridServer.GridMetaController-class.html#set_parameters
+VisionEgg.PyroApps.GridServer.GridMetaController.__init__	VisionEgg.PyroApps.GridServer.GridMetaController-class.html#__init__
+VisionEgg.PyroApps.GridServer.GridMetaController.get_parameters	VisionEgg.PyroApps.GridServer.GridMetaController-class.html#get_parameters
+VisionEgg.PyroApps.GridServer.GridMetaController.update	VisionEgg.PyroApps.GridServer.GridMetaController-class.html#update
+VisionEgg.PyroApps.GridServer.GridMetaController.quit_server	VisionEgg.PyroApps.GridServer.GridMetaController-class.html#quit_server
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame	VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame-class.html
+Tkinter.Misc.getdouble	float-class.html
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.go	VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#go
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.make_callback_entry	VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#make_callback_entry
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.title	VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame-class.html#title
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.get_loopable_variable_names	VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#get_loopable_variable_names
+Tkinter.Misc.getint	int-class.html
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.get_shortname	VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame-class.html#get_shortname
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.standalone_connect	VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#standalone_connect
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.set_param_dict	VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#set_param_dict
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.connect	VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#connect
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.get_parameters_as_m_strings	VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#get_parameters_as_m_strings
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.quit_server	VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#quit_server
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.get_parameters_as_py_strings	VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#get_parameters_as_py_strings
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.get_matlab_string	VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#get_matlab_string
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.set_loopable_variable	VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#set_loopable_variable
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.send_values	VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame-class.html#send_values
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.update_tk_vars	VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame-class.html#update_tk_vars
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.__init__	VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame-class.html#__init__
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.set_parameters_dict	VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#set_parameters_dict
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame.get_duration_sec	VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame-class.html#get_duration_sec
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.get_parameters_dict	VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#get_parameters_dict
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetMetaParameters	VisionEgg.PyroApps.MouseTargetGUI.MouseTargetMetaParameters-class.html
+VisionEgg.PyroApps.MouseTargetGUI.MouseTargetMetaParameters.__init__	VisionEgg.PyroApps.MouseTargetGUI.MouseTargetMetaParameters-class.html#__init__
+VisionEgg.PyroApps.MouseTargetServer.MousePositionController	VisionEgg.PyroApps.MouseTargetServer.MousePositionController-class.html
+VisionEgg.FlowControl.Controller.set_eval_frequency	VisionEgg.FlowControl.Controller-class.html#set_eval_frequency
+VisionEgg.FlowControl.Controller.flag_dictionary	VisionEgg.FlowControl.Controller-class.html#flag_dictionary
+VisionEgg.FlowControl.Controller.TIME_INDEPENDENT	VisionEgg.FlowControl.Controller-class.html#TIME_INDEPENDENT
+VisionEgg.FlowControl.Controller.between_go_eval	VisionEgg.FlowControl.Controller-class.html#between_go_eval
+VisionEgg.FlowControl.Controller.FRAMES_SINCE_GO	VisionEgg.FlowControl.Controller-class.html#FRAMES_SINCE_GO
+VisionEgg.PyroApps.MouseTargetServer.MousePositionController.__init__	VisionEgg.PyroApps.MouseTargetServer.MousePositionController-class.html#__init__
+VisionEgg.FlowControl.Controller.NOT_BETWEEN_GO	VisionEgg.FlowControl.Controller-class.html#NOT_BETWEEN_GO
+VisionEgg.FlowControl.Controller.FRAMES_ABSOLUTE	VisionEgg.FlowControl.Controller-class.html#FRAMES_ABSOLUTE
+VisionEgg.FlowControl.Controller.NEVER	VisionEgg.FlowControl.Controller-class.html#NEVER
+VisionEgg.FlowControl.Controller.returns_type	VisionEgg.FlowControl.Controller-class.html#returns_type
+VisionEgg.FlowControl.Controller.evaluate_now	VisionEgg.FlowControl.Controller-class.html#evaluate_now
+VisionEgg.FlowControl.Controller._test_self	VisionEgg.FlowControl.Controller-class.html#_test_self
+VisionEgg.FlowControl.Controller.TRANSITIONS	VisionEgg.FlowControl.Controller-class.html#TRANSITIONS
+VisionEgg.FlowControl.Controller.TIME_SEC_ABSOLUTE	VisionEgg.FlowControl.Controller-class.html#TIME_SEC_ABSOLUTE
+VisionEgg.FlowControl.Controller.ONCE	VisionEgg.FlowControl.Controller-class.html#ONCE
+VisionEgg.FlowControl.Controller.EVERY_FRAME	VisionEgg.FlowControl.Controller-class.html#EVERY_FRAME
+VisionEgg.FlowControl.Controller.TIME_SEC_SINCE_GO	VisionEgg.FlowControl.Controller-class.html#TIME_SEC_SINCE_GO
+VisionEgg.PyroApps.MouseTargetServer.MousePositionController.during_go_eval	VisionEgg.PyroApps.MouseTargetServer.MousePositionController-class.html#during_go_eval
+VisionEgg.FlowControl.Controller.NOT_DURING_GO	VisionEgg.FlowControl.Controller-class.html#NOT_DURING_GO
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController	VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController-class.html
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.go	VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController-class.html#go
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.set_parameters	VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController-class.html#set_parameters
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.__init__	VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController-class.html#__init__
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.get_parameters	VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController-class.html#get_parameters
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.__del__	VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController-class.html#__del__
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.update	VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController-class.html#update
+VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController.quit_server	VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController-class.html#quit_server
+VisionEgg.PyroApps.MouseTargetServer.TargetOrientationController	VisionEgg.PyroApps.MouseTargetServer.TargetOrientationController-class.html
+VisionEgg.FlowControl.Controller.set_eval_frequency	VisionEgg.FlowControl.Controller-class.html#set_eval_frequency
+VisionEgg.FlowControl.Controller.flag_dictionary	VisionEgg.FlowControl.Controller-class.html#flag_dictionary
+VisionEgg.FlowControl.Controller.TIME_INDEPENDENT	VisionEgg.FlowControl.Controller-class.html#TIME_INDEPENDENT
+VisionEgg.FlowControl.Controller.between_go_eval	VisionEgg.FlowControl.Controller-class.html#between_go_eval
+VisionEgg.FlowControl.Controller.FRAMES_SINCE_GO	VisionEgg.FlowControl.Controller-class.html#FRAMES_SINCE_GO
+VisionEgg.PyroApps.MouseTargetServer.TargetOrientationController.__init__	VisionEgg.PyroApps.MouseTargetServer.TargetOrientationController-class.html#__init__
+VisionEgg.FlowControl.Controller.NOT_BETWEEN_GO	VisionEgg.FlowControl.Controller-class.html#NOT_BETWEEN_GO
+VisionEgg.FlowControl.Controller.FRAMES_ABSOLUTE	VisionEgg.FlowControl.Controller-class.html#FRAMES_ABSOLUTE
+VisionEgg.FlowControl.Controller.NEVER	VisionEgg.FlowControl.Controller-class.html#NEVER
+VisionEgg.FlowControl.Controller.returns_type	VisionEgg.FlowControl.Controller-class.html#returns_type
+VisionEgg.FlowControl.Controller.evaluate_now	VisionEgg.FlowControl.Controller-class.html#evaluate_now
+VisionEgg.FlowControl.Controller._test_self	VisionEgg.FlowControl.Controller-class.html#_test_self
+VisionEgg.FlowControl.Controller.TRANSITIONS	VisionEgg.FlowControl.Controller-class.html#TRANSITIONS
+VisionEgg.FlowControl.Controller.TIME_SEC_ABSOLUTE	VisionEgg.FlowControl.Controller-class.html#TIME_SEC_ABSOLUTE
+VisionEgg.FlowControl.Controller.ONCE	VisionEgg.FlowControl.Controller-class.html#ONCE
+VisionEgg.FlowControl.Controller.EVERY_FRAME	VisionEgg.FlowControl.Controller-class.html#EVERY_FRAME
+VisionEgg.FlowControl.Controller.TIME_SEC_SINCE_GO	VisionEgg.FlowControl.Controller-class.html#TIME_SEC_SINCE_GO
+VisionEgg.PyroApps.MouseTargetServer.TargetOrientationController.during_go_eval	VisionEgg.PyroApps.MouseTargetServer.TargetOrientationController-class.html#during_go_eval
+VisionEgg.FlowControl.Controller.NOT_DURING_GO	VisionEgg.FlowControl.Controller-class.html#NOT_DURING_GO
+VisionEgg.PyroApps.MouseTargetServer.TargetPositionController	VisionEgg.PyroApps.MouseTargetServer.TargetPositionController-class.html
+VisionEgg.FlowControl.Controller.set_eval_frequency	VisionEgg.FlowControl.Controller-class.html#set_eval_frequency
+VisionEgg.FlowControl.Controller.flag_dictionary	VisionEgg.FlowControl.Controller-class.html#flag_dictionary
+VisionEgg.FlowControl.Controller.TIME_INDEPENDENT	VisionEgg.FlowControl.Controller-class.html#TIME_INDEPENDENT
+VisionEgg.FlowControl.Controller.between_go_eval	VisionEgg.FlowControl.Controller-class.html#between_go_eval
+VisionEgg.FlowControl.Controller.FRAMES_SINCE_GO	VisionEgg.FlowControl.Controller-class.html#FRAMES_SINCE_GO
+VisionEgg.PyroApps.MouseTargetServer.TargetPositionController.__init__	VisionEgg.PyroApps.MouseTargetServer.TargetPositionController-class.html#__init__
+VisionEgg.FlowControl.Controller.NOT_BETWEEN_GO	VisionEgg.FlowControl.Controller-class.html#NOT_BETWEEN_GO
+VisionEgg.FlowControl.Controller.FRAMES_ABSOLUTE	VisionEgg.FlowControl.Controller-class.html#FRAMES_ABSOLUTE
+VisionEgg.FlowControl.Controller.NEVER	VisionEgg.FlowControl.Controller-class.html#NEVER
+VisionEgg.FlowControl.Controller.returns_type	VisionEgg.FlowControl.Controller-class.html#returns_type
+VisionEgg.FlowControl.Controller.evaluate_now	VisionEgg.FlowControl.Controller-class.html#evaluate_now
+VisionEgg.FlowControl.Controller._test_self	VisionEgg.FlowControl.Controller-class.html#_test_self
+VisionEgg.FlowControl.Controller.TRANSITIONS	VisionEgg.FlowControl.Controller-class.html#TRANSITIONS
+VisionEgg.FlowControl.Controller.TIME_SEC_ABSOLUTE	VisionEgg.FlowControl.Controller-class.html#TIME_SEC_ABSOLUTE
+VisionEgg.FlowControl.Controller.ONCE	VisionEgg.FlowControl.Controller-class.html#ONCE
+VisionEgg.FlowControl.Controller.EVERY_FRAME	VisionEgg.FlowControl.Controller-class.html#EVERY_FRAME
+VisionEgg.FlowControl.Controller.TIME_SEC_SINCE_GO	VisionEgg.FlowControl.Controller-class.html#TIME_SEC_SINCE_GO
+VisionEgg.PyroApps.MouseTargetServer.TargetPositionController.during_go_eval	VisionEgg.PyroApps.MouseTargetServer.TargetPositionController-class.html#during_go_eval
+VisionEgg.FlowControl.Controller.NOT_DURING_GO	VisionEgg.FlowControl.Controller-class.html#NOT_DURING_GO
+VisionEgg.PyroApps.ScreenPositionGUI.CallbackEntry	VisionEgg.PyroApps.ScreenPositionGUI.CallbackEntry-class.html
+Tkinter.Misc.getdouble	float-class.html
+Tkinter.Misc.getint	int-class.html
+VisionEgg.PyroApps.ScreenPositionGUI.CallbackEntry.__init__	VisionEgg.PyroApps.ScreenPositionGUI.CallbackEntry-class.html#__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame	VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html
+Tkinter.Misc.getdouble	float-class.html
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.up_az_increase	VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html#up_az_increase
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.get_loopable_variable_names	VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html#get_loopable_variable_names
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.save	VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html#save
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.get_xyz	VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html#get_xyz
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.el_decrease	VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html#el_decrease
+Tkinter.Misc.getint	int-class.html
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.get_shortname	VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html#get_shortname
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.frustum_left	VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html#frustum_left
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.set_param_dict	VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html#set_param_dict
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.frustum_wider	VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html#frustum_wider
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.connect	VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html#connect
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.get_param_dict	VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html#get_param_dict
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.get_parameters_as_strings	VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html#get_parameters_as_strings
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.up_el_decrease	VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html#up_el_decrease
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.quit_server	VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html#quit_server
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.az_decrease	VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html#az_decrease
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.load	VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html#load
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.frustum_taller	VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html#frustum_taller
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.el_increase	VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html#el_increase
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.get_type	VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html#get_type
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.set_loopable_variable	VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html#set_loopable_variable
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.az_increase	VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html#az_increase
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.frustum_narrower	VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html#frustum_narrower
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.send_values	VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html#send_values
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.up_az_decrease	VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html#up_az_decrease
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.frustum_up	VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html#frustum_up
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.frustum_shorter	VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html#frustum_shorter
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.__init__	VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html#__init__
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.get_az_el	VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html#get_az_el
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.frustum_down	VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html#frustum_down
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.up_el_increase	VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html#up_el_increase
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame.frustum_right	VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html#frustum_right
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionParameters	VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionParameters-class.html
+VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionParameters.__init__	VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionParameters-class.html#__init__
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController	VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController-class.html
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.go	VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController-class.html#go
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.set_parameters	VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController-class.html#set_parameters
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.__init__	VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController-class.html#__init__
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.get_parameters	VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController-class.html#get_parameters
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.update	VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController-class.html#update
+VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController.quit_server	VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController-class.html#quit_server
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame	VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame-class.html
+Tkinter.Misc.getdouble	float-class.html
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.go	VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#go
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.make_callback_entry	VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#make_callback_entry
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.title	VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame-class.html#title
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.get_loopable_variable_names	VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#get_loopable_variable_names
+Tkinter.Misc.getint	int-class.html
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.get_shortname	VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame-class.html#get_shortname
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.standalone_connect	VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#standalone_connect
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.set_param_dict	VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#set_param_dict
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.connect	VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#connect
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.get_parameters_as_m_strings	VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#get_parameters_as_m_strings
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.quit_server	VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#quit_server
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.get_parameters_as_py_strings	VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#get_parameters_as_py_strings
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.get_matlab_string	VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#get_matlab_string
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.set_loopable_variable	VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#set_loopable_variable
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.send_values	VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame-class.html#send_values
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.update_tk_vars	VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame-class.html#update_tk_vars
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.__init__	VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame-class.html#__init__
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.set_parameters_dict	VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#set_parameters_dict
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame.get_duration_sec	VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame-class.html#get_duration_sec
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.get_parameters_dict	VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#get_parameters_dict
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingMetaParameters	VisionEgg.PyroApps.SphereGratingGUI.SphereGratingMetaParameters-class.html
+VisionEgg.PyroApps.SphereGratingGUI.SphereGratingMetaParameters.__init__	VisionEgg.PyroApps.SphereGratingGUI.SphereGratingMetaParameters-class.html#__init__
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController	VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController-class.html
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.go	VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController-class.html#go
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.set_parameters	VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController-class.html#set_parameters
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.__init__	VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController-class.html#__init__
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.on_function_between_go	VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController-class.html#on_function_between_go
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.on_function_during_go	VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController-class.html#on_function_during_go
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.get_parameters	VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController-class.html#get_parameters
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.__del__	VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController-class.html#__del__
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.update	VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController-class.html#update
+VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController.quit_server	VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController-class.html#quit_server
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame	VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame-class.html
+Tkinter.Misc.getdouble	float-class.html
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.go	VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#go
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.make_callback_entry	VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#make_callback_entry
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.title	VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame-class.html#title
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.get_loopable_variable_names	VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#get_loopable_variable_names
+Tkinter.Misc.getint	int-class.html
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.get_shortname	VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame-class.html#get_shortname
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.standalone_connect	VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#standalone_connect
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.set_param_dict	VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#set_param_dict
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.connect	VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#connect
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.get_parameters_as_m_strings	VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#get_parameters_as_m_strings
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.quit_server	VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#quit_server
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.get_parameters_as_py_strings	VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#get_parameters_as_py_strings
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.get_matlab_string	VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#get_matlab_string
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.set_loopable_variable	VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#set_loopable_variable
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.send_values	VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame-class.html#send_values
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.update_tk_vars	VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame-class.html#update_tk_vars
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.__init__	VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame-class.html#__init__
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.set_parameters_dict	VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#set_parameters_dict
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame.get_duration_sec	VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame-class.html#get_duration_sec
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.get_parameters_dict	VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#get_parameters_dict
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumMetaParameters	VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumMetaParameters-class.html
+VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumMetaParameters.__init__	VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumMetaParameters-class.html#__init__
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController	VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController-class.html
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.angular_position_between_go	VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController-class.html#angular_position_between_go
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.go	VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController-class.html#go
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.set_parameters	VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController-class.html#set_parameters
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.__init__	VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController-class.html#__init__
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.on_function_between_go	VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController-class.html#on_function_between_go
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.on_function_during_go	VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController-class.html#on_function_during_go
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.get_parameters	VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController-class.html#get_parameters
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.__del__	VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController-class.html#__del__
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.update	VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController-class.html#update
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.quit_server	VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController-class.html#quit_server
+VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController.angular_position_during_go	VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController-class.html#angular_position_during_go
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame	VisionEgg.PyroApps.TargetGUI.TargetControlFrame-class.html
+Tkinter.Misc.getdouble	float-class.html
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.go	VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#go
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.make_callback_entry	VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#make_callback_entry
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.title	VisionEgg.PyroApps.TargetGUI.TargetControlFrame-class.html#title
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.get_loopable_variable_names	VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#get_loopable_variable_names
+Tkinter.Misc.getint	int-class.html
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.get_shortname	VisionEgg.PyroApps.TargetGUI.TargetControlFrame-class.html#get_shortname
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.standalone_connect	VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#standalone_connect
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.set_param_dict	VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#set_param_dict
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.connect	VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#connect
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.get_parameters_as_m_strings	VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#get_parameters_as_m_strings
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.quit_server	VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#quit_server
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.get_parameters_as_py_strings	VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#get_parameters_as_py_strings
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.get_matlab_string	VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#get_matlab_string
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.set_loopable_variable	VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#set_loopable_variable
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.send_values	VisionEgg.PyroApps.TargetGUI.TargetControlFrame-class.html#send_values
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.update_tk_vars	VisionEgg.PyroApps.TargetGUI.TargetControlFrame-class.html#update_tk_vars
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.__init__	VisionEgg.PyroApps.TargetGUI.TargetControlFrame-class.html#__init__
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.set_parameters_dict	VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#set_parameters_dict
+VisionEgg.PyroApps.TargetGUI.TargetControlFrame.get_duration_sec	VisionEgg.PyroApps.TargetGUI.TargetControlFrame-class.html#get_duration_sec
+VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame.get_parameters_dict	VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#get_parameters_dict
+VisionEgg.PyroApps.TargetGUI.TargetMetaParameters	VisionEgg.PyroApps.TargetGUI.TargetMetaParameters-class.html
+VisionEgg.PyroApps.TargetGUI.TargetMetaParameters.__init__	VisionEgg.PyroApps.TargetGUI.TargetMetaParameters-class.html#__init__
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController	VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController-class.html
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.go	VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController-class.html#go
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.set_parameters	VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController-class.html#set_parameters
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.__init__	VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController-class.html#__init__
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.on_function_between_go	VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController-class.html#on_function_between_go
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.on_function_during_go	VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController-class.html#on_function_during_go
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.get_parameters	VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController-class.html#get_parameters
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.__del__	VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController-class.html#__del__
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.update	VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController-class.html#update
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.quit_server	VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController-class.html#quit_server
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.center_between_go	VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController-class.html#center_between_go
+VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController.center_during_go	VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController-class.html#center_during_go
+VisionEgg.PyroClient.PyroClient	VisionEgg.PyroClient.PyroClient-class.html
+VisionEgg.PyroClient.PyroClient.__init__	VisionEgg.PyroClient.PyroClient-class.html#__init__
+VisionEgg.PyroClient.PyroClient.get	VisionEgg.PyroClient.PyroClient-class.html#get
+VisionEgg.PyroHelpers.PyroConstantController	VisionEgg.PyroHelpers.PyroConstantController-class.html
+VisionEgg.FlowControl.Controller.set_eval_frequency	VisionEgg.FlowControl.Controller-class.html#set_eval_frequency
+VisionEgg.FlowControl.Controller.flag_dictionary	VisionEgg.FlowControl.Controller-class.html#flag_dictionary
+VisionEgg.FlowControl.Controller.TIME_INDEPENDENT	VisionEgg.FlowControl.Controller-class.html#TIME_INDEPENDENT
+VisionEgg.FlowControl.ConstantController.between_go_eval	VisionEgg.FlowControl.ConstantController-class.html#between_go_eval
+VisionEgg.FlowControl.ConstantController.set_during_go_value	VisionEgg.FlowControl.ConstantController-class.html#set_during_go_value
+VisionEgg.FlowControl.Controller.FRAMES_SINCE_GO	VisionEgg.FlowControl.Controller-class.html#FRAMES_SINCE_GO
+VisionEgg.PyroHelpers.PyroConstantController.__init__	VisionEgg.PyroHelpers.PyroConstantController-class.html#__init__
+VisionEgg.FlowControl.Controller.NOT_BETWEEN_GO	VisionEgg.FlowControl.Controller-class.html#NOT_BETWEEN_GO
+VisionEgg.FlowControl.Controller.FRAMES_ABSOLUTE	VisionEgg.FlowControl.Controller-class.html#FRAMES_ABSOLUTE
+VisionEgg.FlowControl.Controller.NEVER	VisionEgg.FlowControl.Controller-class.html#NEVER
+VisionEgg.FlowControl.Controller.returns_type	VisionEgg.FlowControl.Controller-class.html#returns_type
+VisionEgg.FlowControl.Controller.evaluate_now	VisionEgg.FlowControl.Controller-class.html#evaluate_now
+VisionEgg.FlowControl.Controller._test_self	VisionEgg.FlowControl.Controller-class.html#_test_self
+VisionEgg.FlowControl.Controller.TRANSITIONS	VisionEgg.FlowControl.Controller-class.html#TRANSITIONS
+VisionEgg.FlowControl.Controller.TIME_SEC_SINCE_GO	VisionEgg.FlowControl.Controller-class.html#TIME_SEC_SINCE_GO
+VisionEgg.FlowControl.Controller.ONCE	VisionEgg.FlowControl.Controller-class.html#ONCE
+VisionEgg.FlowControl.Controller.EVERY_FRAME	VisionEgg.FlowControl.Controller-class.html#EVERY_FRAME
+VisionEgg.FlowControl.ConstantController.get_during_go_value	VisionEgg.FlowControl.ConstantController-class.html#get_during_go_value
+VisionEgg.FlowControl.Controller.TIME_SEC_ABSOLUTE	VisionEgg.FlowControl.Controller-class.html#TIME_SEC_ABSOLUTE
+VisionEgg.FlowControl.ConstantController.set_between_go_value	VisionEgg.FlowControl.ConstantController-class.html#set_between_go_value
+VisionEgg.FlowControl.ConstantController.get_between_go_value	VisionEgg.FlowControl.ConstantController-class.html#get_between_go_value
+VisionEgg.FlowControl.ConstantController.during_go_eval	VisionEgg.FlowControl.ConstantController-class.html#during_go_eval
+VisionEgg.FlowControl.Controller.NOT_DURING_GO	VisionEgg.FlowControl.Controller-class.html#NOT_DURING_GO
+VisionEgg.PyroHelpers.PyroEncapsulatedController	VisionEgg.PyroHelpers.PyroEncapsulatedController-class.html
+VisionEgg.FlowControl.Controller.set_eval_frequency	VisionEgg.FlowControl.Controller-class.html#set_eval_frequency
+VisionEgg.FlowControl.Controller.flag_dictionary	VisionEgg.FlowControl.Controller-class.html#flag_dictionary
+VisionEgg.FlowControl.Controller.TIME_INDEPENDENT	VisionEgg.FlowControl.Controller-class.html#TIME_INDEPENDENT
+VisionEgg.FlowControl.EncapsulatedController.between_go_eval	VisionEgg.FlowControl.EncapsulatedController-class.html#between_go_eval
+VisionEgg.FlowControl.Controller.FRAMES_SINCE_GO	VisionEgg.FlowControl.Controller-class.html#FRAMES_SINCE_GO
+VisionEgg.PyroHelpers.PyroEncapsulatedController.__init__	VisionEgg.PyroHelpers.PyroEncapsulatedController-class.html#__init__
+VisionEgg.FlowControl.Controller.NOT_BETWEEN_GO	VisionEgg.FlowControl.Controller-class.html#NOT_BETWEEN_GO
+VisionEgg.FlowControl.Controller.FRAMES_ABSOLUTE	VisionEgg.FlowControl.Controller-class.html#FRAMES_ABSOLUTE
+VisionEgg.FlowControl.Controller.NEVER	VisionEgg.FlowControl.Controller-class.html#NEVER
+VisionEgg.FlowControl.EncapsulatedController.set_new_controller	VisionEgg.FlowControl.EncapsulatedController-class.html#set_new_controller
+VisionEgg.FlowControl.Controller.returns_type	VisionEgg.FlowControl.Controller-class.html#returns_type
+VisionEgg.FlowControl.Controller.evaluate_now	VisionEgg.FlowControl.Controller-class.html#evaluate_now
+VisionEgg.FlowControl.Controller._test_self	VisionEgg.FlowControl.Controller-class.html#_test_self
+VisionEgg.FlowControl.Controller.TRANSITIONS	VisionEgg.FlowControl.Controller-class.html#TRANSITIONS
+VisionEgg.FlowControl.Controller.TIME_SEC_ABSOLUTE	VisionEgg.FlowControl.Controller-class.html#TIME_SEC_ABSOLUTE
+VisionEgg.FlowControl.Controller.ONCE	VisionEgg.FlowControl.Controller-class.html#ONCE
+VisionEgg.FlowControl.Controller.EVERY_FRAME	VisionEgg.FlowControl.Controller-class.html#EVERY_FRAME
+VisionEgg.FlowControl.Controller.TIME_SEC_SINCE_GO	VisionEgg.FlowControl.Controller-class.html#TIME_SEC_SINCE_GO
+VisionEgg.FlowControl.EncapsulatedController.during_go_eval	VisionEgg.FlowControl.EncapsulatedController-class.html#during_go_eval
+VisionEgg.FlowControl.Controller.NOT_DURING_GO	VisionEgg.FlowControl.Controller-class.html#NOT_DURING_GO
+VisionEgg.PyroHelpers.PyroEvalStringController	VisionEgg.PyroHelpers.PyroEvalStringController-class.html
+VisionEgg.FlowControl.Controller.set_eval_frequency	VisionEgg.FlowControl.Controller-class.html#set_eval_frequency
+VisionEgg.FlowControl.EvalStringController.set_between_go_eval_string	VisionEgg.FlowControl.EvalStringController-class.html#set_between_go_eval_string
+VisionEgg.FlowControl.Controller.flag_dictionary	VisionEgg.FlowControl.Controller-class.html#flag_dictionary
+VisionEgg.FlowControl.EvalStringController.get_between_go_eval_string	VisionEgg.FlowControl.EvalStringController-class.html#get_between_go_eval_string
+VisionEgg.FlowControl.Controller.TIME_INDEPENDENT	VisionEgg.FlowControl.Controller-class.html#TIME_INDEPENDENT
+VisionEgg.FlowControl.EvalStringController.between_go_eval	VisionEgg.FlowControl.EvalStringController-class.html#between_go_eval
+VisionEgg.FlowControl.Controller.FRAMES_SINCE_GO	VisionEgg.FlowControl.Controller-class.html#FRAMES_SINCE_GO
+VisionEgg.PyroHelpers.PyroEvalStringController.__init__	VisionEgg.PyroHelpers.PyroEvalStringController-class.html#__init__
+VisionEgg.FlowControl.Controller.NOT_BETWEEN_GO	VisionEgg.FlowControl.Controller-class.html#NOT_BETWEEN_GO
+VisionEgg.FlowControl.Controller.FRAMES_ABSOLUTE	VisionEgg.FlowControl.Controller-class.html#FRAMES_ABSOLUTE
+VisionEgg.FlowControl.Controller.NEVER	VisionEgg.FlowControl.Controller-class.html#NEVER
+VisionEgg.FlowControl.Controller.returns_type	VisionEgg.FlowControl.Controller-class.html#returns_type
+VisionEgg.FlowControl.Controller.evaluate_now	VisionEgg.FlowControl.Controller-class.html#evaluate_now
+VisionEgg.FlowControl.Controller._test_self	VisionEgg.FlowControl.Controller-class.html#_test_self
+VisionEgg.FlowControl.Controller.TRANSITIONS	VisionEgg.FlowControl.Controller-class.html#TRANSITIONS
+VisionEgg.FlowControl.Controller.TIME_SEC_ABSOLUTE	VisionEgg.FlowControl.Controller-class.html#TIME_SEC_ABSOLUTE
+VisionEgg.FlowControl.Controller.ONCE	VisionEgg.FlowControl.Controller-class.html#ONCE
+VisionEgg.FlowControl.Controller.EVERY_FRAME	VisionEgg.FlowControl.Controller-class.html#EVERY_FRAME
+VisionEgg.FlowControl.EvalStringController.get_during_go_eval_string	VisionEgg.FlowControl.EvalStringController-class.html#get_during_go_eval_string
+VisionEgg.FlowControl.Controller.TIME_SEC_SINCE_GO	VisionEgg.FlowControl.Controller-class.html#TIME_SEC_SINCE_GO
+VisionEgg.FlowControl.EvalStringController.set_during_go_eval_string	VisionEgg.FlowControl.EvalStringController-class.html#set_during_go_eval_string
+VisionEgg.FlowControl.EvalStringController.during_go_eval	VisionEgg.FlowControl.EvalStringController-class.html#during_go_eval
+VisionEgg.FlowControl.Controller.NOT_DURING_GO	VisionEgg.FlowControl.Controller-class.html#NOT_DURING_GO
+VisionEgg.PyroHelpers.PyroExecStringController	VisionEgg.PyroHelpers.PyroExecStringController-class.html
+VisionEgg.FlowControl.Controller.set_eval_frequency	VisionEgg.FlowControl.Controller-class.html#set_eval_frequency
+VisionEgg.FlowControl.ExecStringController.set_between_go_exec_string	VisionEgg.FlowControl.ExecStringController-class.html#set_between_go_exec_string
+VisionEgg.FlowControl.Controller.flag_dictionary	VisionEgg.FlowControl.Controller-class.html#flag_dictionary
+VisionEgg.FlowControl.Controller.TIME_INDEPENDENT	VisionEgg.FlowControl.Controller-class.html#TIME_INDEPENDENT
+VisionEgg.FlowControl.ExecStringController.between_go_eval	VisionEgg.FlowControl.ExecStringController-class.html#between_go_eval
+VisionEgg.FlowControl.ExecStringController.get_between_go_exec_string	VisionEgg.FlowControl.ExecStringController-class.html#get_between_go_exec_string
+VisionEgg.FlowControl.Controller.FRAMES_SINCE_GO	VisionEgg.FlowControl.Controller-class.html#FRAMES_SINCE_GO
+VisionEgg.PyroHelpers.PyroExecStringController.__init__	VisionEgg.PyroHelpers.PyroExecStringController-class.html#__init__
+VisionEgg.FlowControl.ExecStringController.get_during_go_exec_string	VisionEgg.FlowControl.ExecStringController-class.html#get_during_go_exec_string
+VisionEgg.FlowControl.Controller.NOT_BETWEEN_GO	VisionEgg.FlowControl.Controller-class.html#NOT_BETWEEN_GO
+VisionEgg.FlowControl.Controller.FRAMES_ABSOLUTE	VisionEgg.FlowControl.Controller-class.html#FRAMES_ABSOLUTE
+VisionEgg.FlowControl.Controller.NEVER	VisionEgg.FlowControl.Controller-class.html#NEVER
+VisionEgg.FlowControl.Controller.returns_type	VisionEgg.FlowControl.Controller-class.html#returns_type
+VisionEgg.FlowControl.Controller.evaluate_now	VisionEgg.FlowControl.Controller-class.html#evaluate_now
+VisionEgg.FlowControl.Controller._test_self	VisionEgg.FlowControl.Controller-class.html#_test_self
+VisionEgg.FlowControl.Controller.TRANSITIONS	VisionEgg.FlowControl.Controller-class.html#TRANSITIONS
+VisionEgg.FlowControl.Controller.TIME_SEC_SINCE_GO	VisionEgg.FlowControl.Controller-class.html#TIME_SEC_SINCE_GO
+VisionEgg.FlowControl.Controller.ONCE	VisionEgg.FlowControl.Controller-class.html#ONCE
+VisionEgg.FlowControl.Controller.EVERY_FRAME	VisionEgg.FlowControl.Controller-class.html#EVERY_FRAME
+VisionEgg.FlowControl.ExecStringController.set_during_go_exec_string	VisionEgg.FlowControl.ExecStringController-class.html#set_during_go_exec_string
+VisionEgg.FlowControl.Controller.TIME_SEC_ABSOLUTE	VisionEgg.FlowControl.Controller-class.html#TIME_SEC_ABSOLUTE
+VisionEgg.FlowControl.ExecStringController.during_go_eval	VisionEgg.FlowControl.ExecStringController-class.html#during_go_eval
+VisionEgg.FlowControl.Controller.NOT_DURING_GO	VisionEgg.FlowControl.Controller-class.html#NOT_DURING_GO
+VisionEgg.PyroHelpers.PyroListenController	VisionEgg.PyroHelpers.PyroListenController-class.html
+VisionEgg.FlowControl.Controller.set_eval_frequency	VisionEgg.FlowControl.Controller-class.html#set_eval_frequency
+VisionEgg.FlowControl.Controller.flag_dictionary	VisionEgg.FlowControl.Controller-class.html#flag_dictionary
+VisionEgg.FlowControl.Controller.TIME_INDEPENDENT	VisionEgg.FlowControl.Controller-class.html#TIME_INDEPENDENT
+VisionEgg.PyroHelpers.PyroListenController.between_go_eval	VisionEgg.PyroHelpers.PyroListenController-class.html#between_go_eval
+VisionEgg.FlowControl.Controller.FRAMES_SINCE_GO	VisionEgg.FlowControl.Controller-class.html#FRAMES_SINCE_GO
+VisionEgg.PyroHelpers.PyroListenController.__init__	VisionEgg.PyroHelpers.PyroListenController-class.html#__init__
+VisionEgg.FlowControl.Controller.NOT_BETWEEN_GO	VisionEgg.FlowControl.Controller-class.html#NOT_BETWEEN_GO
+VisionEgg.FlowControl.Controller.FRAMES_ABSOLUTE	VisionEgg.FlowControl.Controller-class.html#FRAMES_ABSOLUTE
+VisionEgg.FlowControl.Controller.NEVER	VisionEgg.FlowControl.Controller-class.html#NEVER
+VisionEgg.FlowControl.Controller.returns_type	VisionEgg.FlowControl.Controller-class.html#returns_type
+VisionEgg.FlowControl.Controller.evaluate_now	VisionEgg.FlowControl.Controller-class.html#evaluate_now
+VisionEgg.FlowControl.Controller._test_self	VisionEgg.FlowControl.Controller-class.html#_test_self
+VisionEgg.FlowControl.Controller.TRANSITIONS	VisionEgg.FlowControl.Controller-class.html#TRANSITIONS
+VisionEgg.FlowControl.Controller.TIME_SEC_ABSOLUTE	VisionEgg.FlowControl.Controller-class.html#TIME_SEC_ABSOLUTE
+VisionEgg.FlowControl.Controller.ONCE	VisionEgg.FlowControl.Controller-class.html#ONCE
+VisionEgg.FlowControl.Controller.EVERY_FRAME	VisionEgg.FlowControl.Controller-class.html#EVERY_FRAME
+VisionEgg.FlowControl.Controller.TIME_SEC_SINCE_GO	VisionEgg.FlowControl.Controller-class.html#TIME_SEC_SINCE_GO
+VisionEgg.PyroHelpers.PyroListenController.during_go_eval	VisionEgg.PyroHelpers.PyroListenController-class.html#during_go_eval
+VisionEgg.FlowControl.Controller.NOT_DURING_GO	VisionEgg.FlowControl.Controller-class.html#NOT_DURING_GO
+VisionEgg.PyroHelpers.PyroLocalDictController	VisionEgg.PyroHelpers.PyroLocalDictController-class.html
+VisionEgg.FlowControl.Controller.set_eval_frequency	VisionEgg.FlowControl.Controller-class.html#set_eval_frequency
+VisionEgg.FlowControl.Controller.flag_dictionary	VisionEgg.FlowControl.Controller-class.html#flag_dictionary
+VisionEgg.FlowControl.Controller.TIME_INDEPENDENT	VisionEgg.FlowControl.Controller-class.html#TIME_INDEPENDENT
+VisionEgg.FlowControl.EncapsulatedController.between_go_eval	VisionEgg.FlowControl.EncapsulatedController-class.html#between_go_eval
+VisionEgg.FlowControl.Controller.FRAMES_SINCE_GO	VisionEgg.FlowControl.Controller-class.html#FRAMES_SINCE_GO
+VisionEgg.PyroHelpers.PyroLocalDictController.__init__	VisionEgg.PyroHelpers.PyroLocalDictController-class.html#__init__
+VisionEgg.FlowControl.Controller.NOT_BETWEEN_GO	VisionEgg.FlowControl.Controller-class.html#NOT_BETWEEN_GO
+VisionEgg.PyroHelpers.PyroLocalDictController.add_controller	VisionEgg.PyroHelpers.PyroLocalDictController-class.html#add_controller
+VisionEgg.FlowControl.Controller.FRAMES_ABSOLUTE	VisionEgg.FlowControl.Controller-class.html#FRAMES_ABSOLUTE
+VisionEgg.FlowControl.Controller.NEVER	VisionEgg.FlowControl.Controller-class.html#NEVER
+VisionEgg.FlowControl.EncapsulatedController.set_new_controller	VisionEgg.FlowControl.EncapsulatedController-class.html#set_new_controller
+VisionEgg.PyroHelpers.PyroLocalDictController.use_controller	VisionEgg.PyroHelpers.PyroLocalDictController-class.html#use_controller
+VisionEgg.FlowControl.Controller.returns_type	VisionEgg.FlowControl.Controller-class.html#returns_type
+VisionEgg.FlowControl.Controller.evaluate_now	VisionEgg.FlowControl.Controller-class.html#evaluate_now
+VisionEgg.FlowControl.Controller._test_self	VisionEgg.FlowControl.Controller-class.html#_test_self
+VisionEgg.FlowControl.Controller.TRANSITIONS	VisionEgg.FlowControl.Controller-class.html#TRANSITIONS
+VisionEgg.FlowControl.Controller.TIME_SEC_ABSOLUTE	VisionEgg.FlowControl.Controller-class.html#TIME_SEC_ABSOLUTE
+VisionEgg.FlowControl.Controller.ONCE	VisionEgg.FlowControl.Controller-class.html#ONCE
+VisionEgg.FlowControl.Controller.EVERY_FRAME	VisionEgg.FlowControl.Controller-class.html#EVERY_FRAME
+VisionEgg.FlowControl.Controller.TIME_SEC_SINCE_GO	VisionEgg.FlowControl.Controller-class.html#TIME_SEC_SINCE_GO
+VisionEgg.FlowControl.EncapsulatedController.during_go_eval	VisionEgg.FlowControl.EncapsulatedController-class.html#during_go_eval
+VisionEgg.FlowControl.Controller.NOT_DURING_GO	VisionEgg.FlowControl.Controller-class.html#NOT_DURING_GO
+VisionEgg.PyroHelpers.PyroServer	VisionEgg.PyroHelpers.PyroServer-class.html
+VisionEgg.PyroHelpers.PyroServer.disconnect	VisionEgg.PyroHelpers.PyroServer-class.html#disconnect
+VisionEgg.PyroHelpers.PyroServer.create_listener_controller	VisionEgg.PyroHelpers.PyroServer-class.html#create_listener_controller
+VisionEgg.PyroHelpers.PyroServer.connect	VisionEgg.PyroHelpers.PyroServer-class.html#connect
+VisionEgg.PyroHelpers.PyroServer.handleRequests	VisionEgg.PyroHelpers.PyroServer-class.html#handleRequests
+VisionEgg.PyroHelpers.PyroServer.get_hostname_and_port	VisionEgg.PyroHelpers.PyroServer-class.html#get_hostname_and_port
+VisionEgg.PyroHelpers.PyroServer.__init__	VisionEgg.PyroHelpers.PyroServer-class.html#__init__
+VisionEgg.QuickTime.MovieTexture	VisionEgg.QuickTime.MovieTexture-class.html
+VisionEgg.QuickTime.MovieTexture.load	VisionEgg.QuickTime.MovieTexture-class.html#load
+VisionEgg.Textures.Texture.get_pixels_as_image	VisionEgg.Textures.Texture-class.html#get_pixels_as_image
+VisionEgg.QuickTime.MovieTexture.make_half_size	VisionEgg.QuickTime.MovieTexture-class.html#make_half_size
+VisionEgg.QuickTime.MovieTexture.unload	VisionEgg.QuickTime.MovieTexture-class.html#unload
+VisionEgg.QuickTime.MovieTexture.__del__	VisionEgg.QuickTime.MovieTexture-class.html#__del__
+VisionEgg.Textures.Texture.get_texture_object	VisionEgg.Textures.Texture-class.html#get_texture_object
+VisionEgg.QuickTime.MovieTexture.update	VisionEgg.QuickTime.MovieTexture-class.html#update
+VisionEgg.QuickTime.MovieTexture.get_texels_as_image	VisionEgg.QuickTime.MovieTexture-class.html#get_texels_as_image
+VisionEgg.QuickTime.MovieTexture.__init__	VisionEgg.QuickTime.MovieTexture-class.html#__init__
+VisionEgg.ResponseControl.KeyboardResponseController	VisionEgg.ResponseControl.KeyboardResponseController-class.html
+VisionEgg.FlowControl.Controller.set_eval_frequency	VisionEgg.FlowControl.Controller-class.html#set_eval_frequency
+VisionEgg.ResponseControl.ResponseController.get_time_first_responses_since_go	VisionEgg.ResponseControl.ResponseController-class.html#get_time_first_responses_since_go
+VisionEgg.ResponseControl.ResponseController.get_time_first_response_since_go	VisionEgg.ResponseControl.ResponseController-class.html#get_time_first_response_since_go
+VisionEgg.FlowControl.Controller.flag_dictionary	VisionEgg.FlowControl.Controller-class.html#flag_dictionary
+VisionEgg.ResponseControl.ResponseController.get_time_last_responses_since_go	VisionEgg.ResponseControl.ResponseController-class.html#get_time_last_responses_since_go
+VisionEgg.FlowControl.Controller.TIME_INDEPENDENT	VisionEgg.FlowControl.Controller-class.html#TIME_INDEPENDENT
+VisionEgg.ResponseControl.KeyboardResponseController.between_go_eval	VisionEgg.ResponseControl.KeyboardResponseController-class.html#between_go_eval
+VisionEgg.FlowControl.Controller.FRAMES_SINCE_GO	VisionEgg.FlowControl.Controller-class.html#FRAMES_SINCE_GO
+VisionEgg.ResponseControl.KeyboardResponseController.__init__	VisionEgg.ResponseControl.KeyboardResponseController-class.html#__init__
+VisionEgg.FlowControl.Controller.NOT_BETWEEN_GO	VisionEgg.FlowControl.Controller-class.html#NOT_BETWEEN_GO
+VisionEgg.ResponseControl.ResponseController.get_last_response_since_go	VisionEgg.ResponseControl.ResponseController-class.html#get_last_response_since_go
+VisionEgg.FlowControl.Controller.FRAMES_ABSOLUTE	VisionEgg.FlowControl.Controller-class.html#FRAMES_ABSOLUTE
+VisionEgg.ResponseControl.ResponseController.get_data	VisionEgg.ResponseControl.ResponseController-class.html#get_data
+VisionEgg.FlowControl.Controller.NEVER	VisionEgg.FlowControl.Controller-class.html#NEVER
+VisionEgg.FlowControl.Controller.returns_type	VisionEgg.FlowControl.Controller-class.html#returns_type
+VisionEgg.FlowControl.Controller.evaluate_now	VisionEgg.FlowControl.Controller-class.html#evaluate_now
+VisionEgg.ResponseControl.ResponseController.get_first_responses_since_go	VisionEgg.ResponseControl.ResponseController-class.html#get_first_responses_since_go
+VisionEgg.FlowControl.Controller.TRANSITIONS	VisionEgg.FlowControl.Controller-class.html#TRANSITIONS
+VisionEgg.FlowControl.Controller.TIME_SEC_ABSOLUTE	VisionEgg.FlowControl.Controller-class.html#TIME_SEC_ABSOLUTE
+VisionEgg.FlowControl.Controller.ONCE	VisionEgg.FlowControl.Controller-class.html#ONCE
+VisionEgg.FlowControl.Controller.EVERY_FRAME	VisionEgg.FlowControl.Controller-class.html#EVERY_FRAME
+VisionEgg.FlowControl.Controller.TIME_SEC_SINCE_GO	VisionEgg.FlowControl.Controller-class.html#TIME_SEC_SINCE_GO
+VisionEgg.ResponseControl.ResponseController.get_responses_since_go	VisionEgg.ResponseControl.ResponseController-class.html#get_responses_since_go
+VisionEgg.ResponseControl.ResponseController.get_last_responses_since_go	VisionEgg.ResponseControl.ResponseController-class.html#get_last_responses_since_go
+VisionEgg.ResponseControl.ResponseController.get_first_response_since_go	VisionEgg.ResponseControl.ResponseController-class.html#get_first_response_since_go
+VisionEgg.ResponseControl.ResponseController.get_time_responses_since_go	VisionEgg.ResponseControl.ResponseController-class.html#get_time_responses_since_go
+VisionEgg.FlowControl.Controller._test_self	VisionEgg.FlowControl.Controller-class.html#_test_self
+VisionEgg.ResponseControl.KeyboardResponseController.during_go_eval	VisionEgg.ResponseControl.KeyboardResponseController-class.html#during_go_eval
+VisionEgg.ResponseControl.ResponseController.get_time_last_response_since_go	VisionEgg.ResponseControl.ResponseController-class.html#get_time_last_response_since_go
+VisionEgg.FlowControl.Controller.NOT_DURING_GO	VisionEgg.FlowControl.Controller-class.html#NOT_DURING_GO
+VisionEgg.ResponseControl.ResponseController.get_responses	VisionEgg.ResponseControl.ResponseController-class.html#get_responses
+VisionEgg.ResponseControl.ResponseController._reset	VisionEgg.ResponseControl.ResponseController-class.html#_reset
+VisionEgg.ResponseControl.ResponseController	VisionEgg.ResponseControl.ResponseController-class.html
+VisionEgg.FlowControl.Controller.set_eval_frequency	VisionEgg.FlowControl.Controller-class.html#set_eval_frequency
+VisionEgg.ResponseControl.ResponseController.get_data	VisionEgg.ResponseControl.ResponseController-class.html#get_data
+VisionEgg.ResponseControl.ResponseController.get_time_first_response_since_go	VisionEgg.ResponseControl.ResponseController-class.html#get_time_first_response_since_go
+VisionEgg.FlowControl.Controller.flag_dictionary	VisionEgg.FlowControl.Controller-class.html#flag_dictionary
+VisionEgg.ResponseControl.ResponseController.get_time_last_responses_since_go	VisionEgg.ResponseControl.ResponseController-class.html#get_time_last_responses_since_go
+VisionEgg.FlowControl.Controller.TIME_INDEPENDENT	VisionEgg.FlowControl.Controller-class.html#TIME_INDEPENDENT
+VisionEgg.ResponseControl.ResponseController.between_go_eval	VisionEgg.ResponseControl.ResponseController-class.html#between_go_eval
+VisionEgg.FlowControl.Controller.FRAMES_SINCE_GO	VisionEgg.FlowControl.Controller-class.html#FRAMES_SINCE_GO
+VisionEgg.ResponseControl.ResponseController.__init__	VisionEgg.ResponseControl.ResponseController-class.html#__init__
+VisionEgg.FlowControl.Controller.NOT_BETWEEN_GO	VisionEgg.FlowControl.Controller-class.html#NOT_BETWEEN_GO
+VisionEgg.ResponseControl.ResponseController.get_last_response_since_go	VisionEgg.ResponseControl.ResponseController-class.html#get_last_response_since_go
+VisionEgg.FlowControl.Controller.FRAMES_ABSOLUTE	VisionEgg.FlowControl.Controller-class.html#FRAMES_ABSOLUTE
+VisionEgg.ResponseControl.ResponseController.get_time_first_responses_since_go	VisionEgg.ResponseControl.ResponseController-class.html#get_time_first_responses_since_go
+VisionEgg.FlowControl.Controller.NEVER	VisionEgg.FlowControl.Controller-class.html#NEVER
+VisionEgg.FlowControl.Controller.returns_type	VisionEgg.FlowControl.Controller-class.html#returns_type
+VisionEgg.FlowControl.Controller.evaluate_now	VisionEgg.FlowControl.Controller-class.html#evaluate_now
+VisionEgg.ResponseControl.ResponseController.get_first_responses_since_go	VisionEgg.ResponseControl.ResponseController-class.html#get_first_responses_since_go
+VisionEgg.FlowControl.Controller.TRANSITIONS	VisionEgg.FlowControl.Controller-class.html#TRANSITIONS
+VisionEgg.FlowControl.Controller.TIME_SEC_ABSOLUTE	VisionEgg.FlowControl.Controller-class.html#TIME_SEC_ABSOLUTE
+VisionEgg.FlowControl.Controller.ONCE	VisionEgg.FlowControl.Controller-class.html#ONCE
+VisionEgg.FlowControl.Controller.EVERY_FRAME	VisionEgg.FlowControl.Controller-class.html#EVERY_FRAME
+VisionEgg.FlowControl.Controller.TIME_SEC_SINCE_GO	VisionEgg.FlowControl.Controller-class.html#TIME_SEC_SINCE_GO
+VisionEgg.ResponseControl.ResponseController.get_responses_since_go	VisionEgg.ResponseControl.ResponseController-class.html#get_responses_since_go
+VisionEgg.ResponseControl.ResponseController.get_last_responses_since_go	VisionEgg.ResponseControl.ResponseController-class.html#get_last_responses_since_go
+VisionEgg.ResponseControl.ResponseController.get_first_response_since_go	VisionEgg.ResponseControl.ResponseController-class.html#get_first_response_since_go
+VisionEgg.ResponseControl.ResponseController.get_time_responses_since_go	VisionEgg.ResponseControl.ResponseController-class.html#get_time_responses_since_go
+VisionEgg.FlowControl.Controller._test_self	VisionEgg.FlowControl.Controller-class.html#_test_self
+VisionEgg.ResponseControl.ResponseController.during_go_eval	VisionEgg.ResponseControl.ResponseController-class.html#during_go_eval
+VisionEgg.ResponseControl.ResponseController._reset	VisionEgg.ResponseControl.ResponseController-class.html#_reset
+VisionEgg.FlowControl.Controller.NOT_DURING_GO	VisionEgg.FlowControl.Controller-class.html#NOT_DURING_GO
+VisionEgg.ResponseControl.ResponseController.get_responses	VisionEgg.ResponseControl.ResponseController-class.html#get_responses
+VisionEgg.ResponseControl.ResponseController.get_time_last_response_since_go	VisionEgg.ResponseControl.ResponseController-class.html#get_time_last_response_since_go
+VisionEgg.SphereMap.AzElGrid	VisionEgg.SphereMap.AzElGrid-class.html
+VisionEgg.ClassWithParameters.set	VisionEgg.ClassWithParameters-class.html#set
+VisionEgg.SphereMap.AzElGrid.__rebuild_display_lists	VisionEgg.SphereMap.AzElGrid-class.html#__rebuild_display_lists
+VisionEgg.SphereMap.AzElGrid.__init__	VisionEgg.SphereMap.AzElGrid-class.html#__init__
+VisionEgg.ClassWithParameters.verify_parameters	VisionEgg.ClassWithParameters-class.html#verify_parameters
+VisionEgg.ClassWithParameters.is_constant_parameter	VisionEgg.ClassWithParameters-class.html#is_constant_parameter
+VisionEgg.ClassWithParameters.__getstate__	VisionEgg.ClassWithParameters-class.html#__getstate__
+VisionEgg.ClassWithParameters.get_specified_type	VisionEgg.ClassWithParameters-class.html#get_specified_type
+VisionEgg.SphereMap.AzElGrid.draw	VisionEgg.SphereMap.AzElGrid-class.html#draw
+VisionEgg.ClassWithParameters.__setstate__	VisionEgg.ClassWithParameters-class.html#__setstate__
+VisionEgg.SphereMap.AzElGrid.constant_parameters_and_defaults	VisionEgg.SphereMap.AzElGrid-class.html#constant_parameters_and_defaults
+VisionEgg.SphereMap.AzElGrid.parameters_and_defaults	VisionEgg.SphereMap.AzElGrid-class.html#parameters_and_defaults
+VisionEgg.ClassWithParameters.__safe_for_unpickling__	VisionEgg.ClassWithParameters-class.html#__safe_for_unpickling__
+VisionEgg.SphereMap.SphereGrating	VisionEgg.SphereMap.SphereGrating-class.html
+VisionEgg.ClassWithParameters.set	VisionEgg.ClassWithParameters-class.html#set
+VisionEgg.Gratings.LuminanceGratingCommon.calculate_bit_depth_dependencies	VisionEgg.Gratings.LuminanceGratingCommon-class.html#calculate_bit_depth_dependencies
+VisionEgg.SphereMap.SphereGrating.__init__	VisionEgg.SphereMap.SphereGrating-class.html#__init__
+VisionEgg.ClassWithParameters.verify_parameters	VisionEgg.ClassWithParameters-class.html#verify_parameters
+VisionEgg.ClassWithParameters.is_constant_parameter	VisionEgg.ClassWithParameters-class.html#is_constant_parameter
+VisionEgg.ClassWithParameters.__getstate__	VisionEgg.ClassWithParameters-class.html#__getstate__
+VisionEgg.ClassWithParameters.get_specified_type	VisionEgg.ClassWithParameters-class.html#get_specified_type
+VisionEgg.SphereMap.SphereGrating.draw	VisionEgg.SphereMap.SphereGrating-class.html#draw
+VisionEgg.ClassWithParameters.__setstate__	VisionEgg.ClassWithParameters-class.html#__setstate__
+VisionEgg.SphereMap.SphereGrating.__rebuild_texture_object	VisionEgg.SphereMap.SphereGrating-class.html#__rebuild_texture_object
+VisionEgg.ClassWithParameters.constant_parameters_and_defaults	VisionEgg.ClassWithParameters-class.html#constant_parameters_and_defaults
+VisionEgg.SphereMap.SphereGrating.parameters_and_defaults	VisionEgg.SphereMap.SphereGrating-class.html#parameters_and_defaults
+VisionEgg.ClassWithParameters.__safe_for_unpickling__	VisionEgg.ClassWithParameters-class.html#__safe_for_unpickling__
+VisionEgg.SphereMap.SphereGrating.__rebuild_display_list	VisionEgg.SphereMap.SphereGrating-class.html#__rebuild_display_list
+VisionEgg.SphereMap.SphereMap	VisionEgg.SphereMap.SphereMap-class.html
+VisionEgg.ClassWithParameters.set	VisionEgg.ClassWithParameters-class.html#set
+VisionEgg.SphereMap.SphereMap.__init__	VisionEgg.SphereMap.SphereMap-class.html#__init__
+VisionEgg.Textures.TextureStimulusBaseClass._mipmap_modes	VisionEgg.Textures.TextureStimulusBaseClass-class.html#_mipmap_modes
+VisionEgg.ClassWithParameters.is_constant_parameter	VisionEgg.ClassWithParameters-class.html#is_constant_parameter
+VisionEgg.ClassWithParameters.__getstate__	VisionEgg.ClassWithParameters-class.html#__getstate__
+VisionEgg.ClassWithParameters.get_specified_type	VisionEgg.ClassWithParameters-class.html#get_specified_type
+VisionEgg.SphereMap.SphereMap.draw	VisionEgg.SphereMap.SphereMap-class.html#draw
+VisionEgg.ClassWithParameters.__setstate__	VisionEgg.ClassWithParameters-class.html#__setstate__
+VisionEgg.ClassWithParameters.verify_parameters	VisionEgg.ClassWithParameters-class.html#verify_parameters
+VisionEgg.Textures.TextureStimulusBaseClass.constant_parameters_and_defaults	VisionEgg.Textures.TextureStimulusBaseClass-class.html#constant_parameters_and_defaults
+VisionEgg.SphereMap.SphereMap.parameters_and_defaults	VisionEgg.SphereMap.SphereMap-class.html#parameters_and_defaults
+VisionEgg.ClassWithParameters.__safe_for_unpickling__	VisionEgg.ClassWithParameters-class.html#__safe_for_unpickling__
+VisionEgg.SphereMap.SphereMap.__rebuild_display_list	VisionEgg.SphereMap.SphereMap-class.html#__rebuild_display_list
+VisionEgg.Textures.TextureStimulusBaseClass._reload_texture	VisionEgg.Textures.TextureStimulusBaseClass-class.html#_reload_texture
+VisionEgg.SphereMap.SphereWindow	VisionEgg.SphereMap.SphereWindow-class.html
+VisionEgg.ClassWithParameters.set	VisionEgg.ClassWithParameters-class.html#set
+VisionEgg.Gratings.LuminanceGratingCommon.calculate_bit_depth_dependencies	VisionEgg.Gratings.LuminanceGratingCommon-class.html#calculate_bit_depth_dependencies
+VisionEgg.SphereMap.SphereWindow.__rebuild_display_lists	VisionEgg.SphereMap.SphereWindow-class.html#__rebuild_display_lists
+VisionEgg.SphereMap.SphereWindow.__init__	VisionEgg.SphereMap.SphereWindow-class.html#__init__
+VisionEgg.ClassWithParameters.verify_parameters	VisionEgg.ClassWithParameters-class.html#verify_parameters
+VisionEgg.ClassWithParameters.is_constant_parameter	VisionEgg.ClassWithParameters-class.html#is_constant_parameter
+VisionEgg.ClassWithParameters.__getstate__	VisionEgg.ClassWithParameters-class.html#__getstate__
+VisionEgg.ClassWithParameters.get_specified_type	VisionEgg.ClassWithParameters-class.html#get_specified_type
+VisionEgg.SphereMap.SphereWindow.draw	VisionEgg.SphereMap.SphereWindow-class.html#draw
+VisionEgg.ClassWithParameters.__setstate__	VisionEgg.ClassWithParameters-class.html#__setstate__
+VisionEgg.SphereMap.SphereWindow.__rebuild_texture_object	VisionEgg.SphereMap.SphereWindow-class.html#__rebuild_texture_object
+VisionEgg.ClassWithParameters.constant_parameters_and_defaults	VisionEgg.ClassWithParameters-class.html#constant_parameters_and_defaults
+VisionEgg.SphereMap.SphereWindow.parameters_and_defaults	VisionEgg.SphereMap.SphereWindow-class.html#parameters_and_defaults
+VisionEgg.ClassWithParameters.__safe_for_unpickling__	VisionEgg.ClassWithParameters-class.html#__safe_for_unpickling__
+VisionEgg.TCPController.SocketListenController	VisionEgg.TCPController.SocketListenController-class.html
+VisionEgg.FlowControl.Controller.set_eval_frequency	VisionEgg.FlowControl.Controller-class.html#set_eval_frequency
+VisionEgg.FlowControl.Controller.flag_dictionary	VisionEgg.FlowControl.Controller-class.html#flag_dictionary
+VisionEgg.TCPController.SocketListenController._re_exec_str	VisionEgg.TCPController.SocketListenController-class.html#_re_exec_str
+VisionEgg.TCPController.SocketListenController.__unprocessed_line	VisionEgg.TCPController.SocketListenController-class.html#__unprocessed_line
+VisionEgg.TCPController.SocketListenController.__do_assignment_command	VisionEgg.TCPController.SocketListenController-class.html#__do_assignment_command
+VisionEgg.TCPController.SocketListenController._parse_args_globals	VisionEgg.TCPController.SocketListenController-class.html#_parse_args_globals
+VisionEgg.FlowControl.Controller.TIME_INDEPENDENT	VisionEgg.FlowControl.Controller-class.html#TIME_INDEPENDENT
+VisionEgg.TCPController.SocketListenController.between_go_eval	VisionEgg.TCPController.SocketListenController-class.html#between_go_eval
+VisionEgg.TCPController.SocketListenController.send_raw_text	VisionEgg.TCPController.SocketListenController-class.html#send_raw_text
+VisionEgg.FlowControl.Controller.FRAMES_SINCE_GO	VisionEgg.FlowControl.Controller-class.html#FRAMES_SINCE_GO
+VisionEgg.TCPController.SocketListenController.__init__	VisionEgg.TCPController.SocketListenController-class.html#__init__
+VisionEgg.TCPController.SocketListenController._parse_args_locals	VisionEgg.TCPController.SocketListenController-class.html#_parse_args_locals
+VisionEgg.FlowControl.Controller.FRAMES_ABSOLUTE	VisionEgg.FlowControl.Controller-class.html#FRAMES_ABSOLUTE
+VisionEgg.FlowControl.Controller.NEVER	VisionEgg.FlowControl.Controller-class.html#NEVER
+VisionEgg.FlowControl.Controller.returns_type	VisionEgg.FlowControl.Controller-class.html#returns_type
+VisionEgg.FlowControl.Controller.evaluate_now	VisionEgg.FlowControl.Controller-class.html#evaluate_now
+VisionEgg.TCPController.SocketListenController._re_eval_str	VisionEgg.TCPController.SocketListenController-class.html#_re_eval_str
+VisionEgg.FlowControl.Controller._test_self	VisionEgg.FlowControl.Controller-class.html#_test_self
+VisionEgg.FlowControl.Controller.TRANSITIONS	VisionEgg.FlowControl.Controller-class.html#TRANSITIONS
+VisionEgg.TCPController.SocketListenController._re_x_finder	VisionEgg.TCPController.SocketListenController-class.html#_re_x_finder
+VisionEgg.FlowControl.Controller.TIME_SEC_SINCE_GO	VisionEgg.FlowControl.Controller-class.html#TIME_SEC_SINCE_GO
+VisionEgg.FlowControl.Controller.ONCE	VisionEgg.FlowControl.Controller-class.html#ONCE
+VisionEgg.FlowControl.Controller.EVERY_FRAME	VisionEgg.FlowControl.Controller-class.html#EVERY_FRAME
+VisionEgg.FlowControl.Controller.NOT_BETWEEN_GO	VisionEgg.FlowControl.Controller-class.html#NOT_BETWEEN_GO
+VisionEgg.TCPController.SocketListenController.create_tcp_controller	VisionEgg.TCPController.SocketListenController-class.html#create_tcp_controller
+VisionEgg.TCPController.SocketListenController.during_go_eval	VisionEgg.TCPController.SocketListenController-class.html#during_go_eval
+VisionEgg.TCPController.SocketListenController.__process_common_args	VisionEgg.TCPController.SocketListenController-class.html#__process_common_args
+VisionEgg.TCPController.SocketListenController._re_const	VisionEgg.TCPController.SocketListenController-class.html#_re_const
+VisionEgg.TCPController.SocketListenController.help_string	VisionEgg.TCPController.SocketListenController-class.html#help_string
+VisionEgg.FlowControl.Controller.TIME_SEC_ABSOLUTE	VisionEgg.FlowControl.Controller-class.html#TIME_SEC_ABSOLUTE
+VisionEgg.TCPController.SocketListenController.__check_socket	VisionEgg.TCPController.SocketListenController-class.html#__check_socket
+VisionEgg.TCPController.SocketListenController._re_line	VisionEgg.TCPController.SocketListenController-class.html#_re_line
+VisionEgg.TCPController.SocketListenController.__get_five_args	VisionEgg.TCPController.SocketListenController-class.html#__get_five_args
+VisionEgg.FlowControl.Controller.NOT_DURING_GO	VisionEgg.FlowControl.Controller-class.html#NOT_DURING_GO
+VisionEgg.TCPController.TCPController	VisionEgg.TCPController.TCPController-class.html
+VisionEgg.FlowControl.Controller.set_eval_frequency	VisionEgg.FlowControl.Controller-class.html#set_eval_frequency
+VisionEgg.TCPController.TCPController.__str__	VisionEgg.TCPController.TCPController-class.html#__str__
+VisionEgg.FlowControl.Controller.TIME_INDEPENDENT	VisionEgg.FlowControl.Controller-class.html#TIME_INDEPENDENT
+VisionEgg.FlowControl.EncapsulatedController.between_go_eval	VisionEgg.FlowControl.EncapsulatedController-class.html#between_go_eval
+VisionEgg.FlowControl.Controller.FRAMES_SINCE_GO	VisionEgg.FlowControl.Controller-class.html#FRAMES_SINCE_GO
+VisionEgg.TCPController.TCPController.__init__	VisionEgg.TCPController.TCPController-class.html#__init__
+VisionEgg.FlowControl.Controller.NOT_BETWEEN_GO	VisionEgg.FlowControl.Controller-class.html#NOT_BETWEEN_GO
+VisionEgg.FlowControl.Controller.FRAMES_ABSOLUTE	VisionEgg.FlowControl.Controller-class.html#FRAMES_ABSOLUTE
+VisionEgg.FlowControl.Controller.NEVER	VisionEgg.FlowControl.Controller-class.html#NEVER
+VisionEgg.FlowControl.EncapsulatedController.set_new_controller	VisionEgg.FlowControl.EncapsulatedController-class.html#set_new_controller
+VisionEgg.FlowControl.Controller.returns_type	VisionEgg.FlowControl.Controller-class.html#returns_type
+VisionEgg.FlowControl.Controller.evaluate_now	VisionEgg.FlowControl.Controller-class.html#evaluate_now
+VisionEgg.FlowControl.Controller._test_self	VisionEgg.FlowControl.Controller-class.html#_test_self
+VisionEgg.FlowControl.Controller.TRANSITIONS	VisionEgg.FlowControl.Controller-class.html#TRANSITIONS
+VisionEgg.FlowControl.Controller.TIME_SEC_ABSOLUTE	VisionEgg.FlowControl.Controller-class.html#TIME_SEC_ABSOLUTE
+VisionEgg.FlowControl.Controller.ONCE	VisionEgg.FlowControl.Controller-class.html#ONCE
+VisionEgg.FlowControl.Controller.EVERY_FRAME	VisionEgg.FlowControl.Controller-class.html#EVERY_FRAME
+VisionEgg.FlowControl.Controller.TIME_SEC_SINCE_GO	VisionEgg.FlowControl.Controller-class.html#TIME_SEC_SINCE_GO
+VisionEgg.FlowControl.Controller.flag_dictionary	VisionEgg.FlowControl.Controller-class.html#flag_dictionary
+VisionEgg.FlowControl.EncapsulatedController.during_go_eval	VisionEgg.FlowControl.EncapsulatedController-class.html#during_go_eval
+VisionEgg.FlowControl.Controller.NOT_DURING_GO	VisionEgg.FlowControl.Controller-class.html#NOT_DURING_GO
+VisionEgg.TCPController.TCPServer	VisionEgg.TCPController.TCPServer-class.html
+VisionEgg.TCPController.TCPServer.__init__	VisionEgg.TCPController.TCPServer-class.html#__init__
+VisionEgg.TCPController.TCPServer.create_listener_once_connected	VisionEgg.TCPController.TCPServer-class.html#create_listener_once_connected
+VisionEgg.Text.BitmapText	VisionEgg.Text.BitmapText-class.html
+VisionEgg.ClassWithParameters.get_specified_type	VisionEgg.ClassWithParameters-class.html#get_specified_type
+VisionEgg.Text.BitmapText.draw	VisionEgg.Text.BitmapText-class.html#draw
+VisionEgg.ClassWithParameters.verify_parameters	VisionEgg.ClassWithParameters-class.html#verify_parameters
+VisionEgg.ClassWithParameters.is_constant_parameter	VisionEgg.ClassWithParameters-class.html#is_constant_parameter
+VisionEgg.ClassWithParameters.__setstate__	VisionEgg.ClassWithParameters-class.html#__setstate__
+VisionEgg.ClassWithParameters.__getstate__	VisionEgg.ClassWithParameters-class.html#__getstate__
+VisionEgg.ClassWithParameters.set	VisionEgg.ClassWithParameters-class.html#set
+VisionEgg.ClassWithParameters.constant_parameters_and_defaults	VisionEgg.ClassWithParameters-class.html#constant_parameters_and_defaults
+VisionEgg.ClassWithParameters.__safe_for_unpickling__	VisionEgg.ClassWithParameters-class.html#__safe_for_unpickling__
+VisionEgg.Text.BitmapText.parameters_and_defaults	VisionEgg.Text.BitmapText-class.html#parameters_and_defaults
+VisionEgg.Text.BitmapText.__init__	VisionEgg.Text.BitmapText-class.html#__init__
+VisionEgg.Text.GlutTextBase	VisionEgg.Text.GlutTextBase-class.html
+VisionEgg.ClassWithParameters.get_specified_type	VisionEgg.ClassWithParameters-class.html#get_specified_type
+VisionEgg.Core.Stimulus.draw	VisionEgg.Core.Stimulus-class.html#draw
+VisionEgg.ClassWithParameters.verify_parameters	VisionEgg.ClassWithParameters-class.html#verify_parameters
+VisionEgg.ClassWithParameters.is_constant_parameter	VisionEgg.ClassWithParameters-class.html#is_constant_parameter
+VisionEgg.ClassWithParameters.__setstate__	VisionEgg.ClassWithParameters-class.html#__setstate__
+VisionEgg.ClassWithParameters.__getstate__	VisionEgg.ClassWithParameters-class.html#__getstate__
+VisionEgg.ClassWithParameters.set	VisionEgg.ClassWithParameters-class.html#set
+VisionEgg.ClassWithParameters.constant_parameters_and_defaults	VisionEgg.ClassWithParameters-class.html#constant_parameters_and_defaults
+VisionEgg.ClassWithParameters.__safe_for_unpickling__	VisionEgg.ClassWithParameters-class.html#__safe_for_unpickling__
+VisionEgg.Text.GlutTextBase.parameters_and_defaults	VisionEgg.Text.GlutTextBase-class.html#parameters_and_defaults
+VisionEgg.Text.GlutTextBase.__init__	VisionEgg.Text.GlutTextBase-class.html#__init__
+VisionEgg.Text.StrokeText	VisionEgg.Text.StrokeText-class.html
+VisionEgg.ClassWithParameters.get_specified_type	VisionEgg.ClassWithParameters-class.html#get_specified_type
+VisionEgg.Text.StrokeText.draw	VisionEgg.Text.StrokeText-class.html#draw
+VisionEgg.ClassWithParameters.verify_parameters	VisionEgg.ClassWithParameters-class.html#verify_parameters
+VisionEgg.ClassWithParameters.is_constant_parameter	VisionEgg.ClassWithParameters-class.html#is_constant_parameter
+VisionEgg.ClassWithParameters.__setstate__	VisionEgg.ClassWithParameters-class.html#__setstate__
+VisionEgg.ClassWithParameters.__getstate__	VisionEgg.ClassWithParameters-class.html#__getstate__
+VisionEgg.ClassWithParameters.set	VisionEgg.ClassWithParameters-class.html#set
+VisionEgg.ClassWithParameters.constant_parameters_and_defaults	VisionEgg.ClassWithParameters-class.html#constant_parameters_and_defaults
+VisionEgg.ClassWithParameters.__safe_for_unpickling__	VisionEgg.ClassWithParameters-class.html#__safe_for_unpickling__
+VisionEgg.Text.StrokeText.parameters_and_defaults	VisionEgg.Text.StrokeText-class.html#parameters_and_defaults
+VisionEgg.Text.StrokeText.__init__	VisionEgg.Text.StrokeText-class.html#__init__
+VisionEgg.Text.Text	VisionEgg.Text.Text-class.html
+VisionEgg.ClassWithParameters.set	VisionEgg.ClassWithParameters-class.html#set
+VisionEgg.Text.Text._render_text	VisionEgg.Text.Text-class.html#_render_text
+VisionEgg.Text.Text.__init__	VisionEgg.Text.Text-class.html#__init__
+VisionEgg.Textures.TextureStimulusBaseClass._mipmap_modes	VisionEgg.Textures.TextureStimulusBaseClass-class.html#_mipmap_modes
+VisionEgg.ClassWithParameters.is_constant_parameter	VisionEgg.ClassWithParameters-class.html#is_constant_parameter
+VisionEgg.ClassWithParameters.__getstate__	VisionEgg.ClassWithParameters-class.html#__getstate__
+VisionEgg.ClassWithParameters.get_specified_type	VisionEgg.ClassWithParameters-class.html#get_specified_type
+VisionEgg.Text.Text.draw	VisionEgg.Text.Text-class.html#draw
+VisionEgg.ClassWithParameters.__setstate__	VisionEgg.ClassWithParameters-class.html#__setstate__
+VisionEgg.ClassWithParameters.verify_parameters	VisionEgg.ClassWithParameters-class.html#verify_parameters
+VisionEgg.Text.Text.constant_parameters_and_defaults	VisionEgg.Text.Text-class.html#constant_parameters_and_defaults
+VisionEgg.Text.Text.parameters_and_defaults	VisionEgg.Text.Text-class.html#parameters_and_defaults
+VisionEgg.ClassWithParameters.__safe_for_unpickling__	VisionEgg.ClassWithParameters-class.html#__safe_for_unpickling__
+VisionEgg.Textures.TextureStimulusBaseClass._reload_texture	VisionEgg.Textures.TextureStimulusBaseClass-class.html#_reload_texture
+VisionEgg.Textures.FixationCross	VisionEgg.Textures.FixationCross-class.html
+VisionEgg.ClassWithParameters.get_specified_type	VisionEgg.ClassWithParameters-class.html#get_specified_type
+VisionEgg.Textures.FixationCross.draw	VisionEgg.Textures.FixationCross-class.html#draw
+VisionEgg.ClassWithParameters.verify_parameters	VisionEgg.ClassWithParameters-class.html#verify_parameters
+VisionEgg.ClassWithParameters.is_constant_parameter	VisionEgg.ClassWithParameters-class.html#is_constant_parameter
+VisionEgg.ClassWithParameters.__setstate__	VisionEgg.ClassWithParameters-class.html#__setstate__
+VisionEgg.ClassWithParameters.__getstate__	VisionEgg.ClassWithParameters-class.html#__getstate__
+VisionEgg.ClassWithParameters.set	VisionEgg.ClassWithParameters-class.html#set
+VisionEgg.Textures.FixationCross.constant_parameters_and_defaults	VisionEgg.Textures.FixationCross-class.html#constant_parameters_and_defaults
+VisionEgg.ClassWithParameters.__safe_for_unpickling__	VisionEgg.ClassWithParameters-class.html#__safe_for_unpickling__
+VisionEgg.Textures.FixationCross.parameters_and_defaults	VisionEgg.Textures.FixationCross-class.html#parameters_and_defaults
+VisionEgg.Textures.FixationCross.__init__	VisionEgg.Textures.FixationCross-class.html#__init__
+VisionEgg.Textures.Mask2D	VisionEgg.Textures.Mask2D-class.html
+VisionEgg.ClassWithParameters.set	VisionEgg.ClassWithParameters-class.html#set
+VisionEgg.Textures.Mask2D.__init__	VisionEgg.Textures.Mask2D-class.html#__init__
+VisionEgg.ClassWithParameters.verify_parameters	VisionEgg.ClassWithParameters-class.html#verify_parameters
+VisionEgg.ClassWithParameters.is_constant_parameter	VisionEgg.ClassWithParameters-class.html#is_constant_parameter
+VisionEgg.Textures.Mask2D.draw_masked_quad	VisionEgg.Textures.Mask2D-class.html#draw_masked_quad
+VisionEgg.Textures.Mask2D.draw_masked_quad_3d	VisionEgg.Textures.Mask2D-class.html#draw_masked_quad_3d
+VisionEgg.ClassWithParameters.__getstate__	VisionEgg.ClassWithParameters-class.html#__getstate__
+VisionEgg.ClassWithParameters.get_specified_type	VisionEgg.ClassWithParameters-class.html#get_specified_type
+VisionEgg.ClassWithParameters.__setstate__	VisionEgg.ClassWithParameters-class.html#__setstate__
+VisionEgg.Textures.Mask2D.constant_parameters_and_defaults	VisionEgg.Textures.Mask2D-class.html#constant_parameters_and_defaults
+VisionEgg.ClassWithParameters.parameters_and_defaults	VisionEgg.ClassWithParameters-class.html#parameters_and_defaults
+VisionEgg.ClassWithParameters.__safe_for_unpickling__	VisionEgg.ClassWithParameters-class.html#__safe_for_unpickling__
+VisionEgg.Textures.SpinningDrum	VisionEgg.Textures.SpinningDrum-class.html
+VisionEgg.ClassWithParameters.set	VisionEgg.ClassWithParameters-class.html#set
+VisionEgg.Textures.SpinningDrum.__init__	VisionEgg.Textures.SpinningDrum-class.html#__init__
+VisionEgg.Textures.TextureStimulusBaseClass._mipmap_modes	VisionEgg.Textures.TextureStimulusBaseClass-class.html#_mipmap_modes
+VisionEgg.ClassWithParameters.is_constant_parameter	VisionEgg.ClassWithParameters-class.html#is_constant_parameter
+VisionEgg.ClassWithParameters.__getstate__	VisionEgg.ClassWithParameters-class.html#__getstate__
+VisionEgg.ClassWithParameters.get_specified_type	VisionEgg.ClassWithParameters-class.html#get_specified_type
+VisionEgg.Textures.SpinningDrum.draw	VisionEgg.Textures.SpinningDrum-class.html#draw
+VisionEgg.ClassWithParameters.__setstate__	VisionEgg.ClassWithParameters-class.html#__setstate__
+VisionEgg.ClassWithParameters.verify_parameters	VisionEgg.ClassWithParameters-class.html#verify_parameters
+VisionEgg.Textures.TextureStimulusBaseClass.constant_parameters_and_defaults	VisionEgg.Textures.TextureStimulusBaseClass-class.html#constant_parameters_and_defaults
+VisionEgg.Textures.SpinningDrum.parameters_and_defaults	VisionEgg.Textures.SpinningDrum-class.html#parameters_and_defaults
+VisionEgg.Textures.SpinningDrum.rebuild_display_list	VisionEgg.Textures.SpinningDrum-class.html#rebuild_display_list
+VisionEgg.ClassWithParameters.__safe_for_unpickling__	VisionEgg.ClassWithParameters-class.html#__safe_for_unpickling__
+VisionEgg.Textures.TextureStimulusBaseClass._reload_texture	VisionEgg.Textures.TextureStimulusBaseClass-class.html#_reload_texture
+VisionEgg.Textures.Texture	VisionEgg.Textures.Texture-class.html
+VisionEgg.Textures.Texture.load	VisionEgg.Textures.Texture-class.html#load
+VisionEgg.Textures.Texture.get_pixels_as_image	VisionEgg.Textures.Texture-class.html#get_pixels_as_image
+VisionEgg.Textures.Texture.make_half_size	VisionEgg.Textures.Texture-class.html#make_half_size
+VisionEgg.Textures.Texture.unload	VisionEgg.Textures.Texture-class.html#unload
+VisionEgg.Textures.Texture.get_texture_object	VisionEgg.Textures.Texture-class.html#get_texture_object
+VisionEgg.Textures.Texture.update	VisionEgg.Textures.Texture-class.html#update
+VisionEgg.Textures.Texture.get_texels_as_image	VisionEgg.Textures.Texture-class.html#get_texels_as_image
+VisionEgg.Textures.Texture.__init__	VisionEgg.Textures.Texture-class.html#__init__
+VisionEgg.Textures.TextureFromFile	VisionEgg.Textures.TextureFromFile-class.html
+VisionEgg.Textures.Texture.load	VisionEgg.Textures.Texture-class.html#load
+VisionEgg.Textures.Texture.get_pixels_as_image	VisionEgg.Textures.Texture-class.html#get_pixels_as_image
+VisionEgg.Textures.Texture.make_half_size	VisionEgg.Textures.Texture-class.html#make_half_size
+VisionEgg.Textures.Texture.unload	VisionEgg.Textures.Texture-class.html#unload
+VisionEgg.Textures.Texture.get_texture_object	VisionEgg.Textures.Texture-class.html#get_texture_object
+VisionEgg.Textures.Texture.update	VisionEgg.Textures.Texture-class.html#update
+VisionEgg.Textures.Texture.get_texels_as_image	VisionEgg.Textures.Texture-class.html#get_texels_as_image
+VisionEgg.Textures.TextureFromFile.__init__	VisionEgg.Textures.TextureFromFile-class.html#__init__
+VisionEgg.Textures.TextureObject	VisionEgg.Textures.TextureObject-class.html
+VisionEgg.Textures.TextureObject.set_priority	VisionEgg.Textures.TextureObject-class.html#set_priority
+VisionEgg.Textures.TextureObject.set_mag_filter	VisionEgg.Textures.TextureObject-class.html#set_mag_filter
+VisionEgg.Textures.TextureObject.put_new_image_build_mipmaps	VisionEgg.Textures.TextureObject-class.html#put_new_image_build_mipmaps
+VisionEgg.Textures.TextureObject.__init__	VisionEgg.Textures.TextureObject-class.html#__init__
+VisionEgg.Textures.TextureObject.set_wrap_mode_s	VisionEgg.Textures.TextureObject-class.html#set_wrap_mode_s
+VisionEgg.Textures.TextureObject.set_wrap_mode_r	VisionEgg.Textures.TextureObject-class.html#set_wrap_mode_r
+VisionEgg.Textures.TextureObject.set_wrap_mode_t	VisionEgg.Textures.TextureObject-class.html#set_wrap_mode_t
+VisionEgg.Textures.TextureObject.set_min_filter	VisionEgg.Textures.TextureObject-class.html#set_min_filter
+VisionEgg.Textures.TextureObject.is_resident	VisionEgg.Textures.TextureObject-class.html#is_resident
+VisionEgg.Textures.TextureObject.__del__	VisionEgg.Textures.TextureObject-class.html#__del__
+VisionEgg.Textures.TextureObject.put_sub_image	VisionEgg.Textures.TextureObject-class.html#put_sub_image
+VisionEgg.Textures.TextureObject.put_new_framebuffer	VisionEgg.Textures.TextureObject-class.html#put_new_framebuffer
+VisionEgg.Textures.TextureObject.put_new_image	VisionEgg.Textures.TextureObject-class.html#put_new_image
+VisionEgg.Textures.TextureObject.set_border_color	VisionEgg.Textures.TextureObject-class.html#set_border_color
+VisionEgg.Textures.TextureObject._cube_map_side_names	VisionEgg.Textures.TextureObject-class.html#_cube_map_side_names
+VisionEgg.Textures.TextureStimulus	VisionEgg.Textures.TextureStimulus-class.html
+VisionEgg.ClassWithParameters.set	VisionEgg.ClassWithParameters-class.html#set
+VisionEgg.Textures.TextureStimulusBaseClass.__init__	VisionEgg.Textures.TextureStimulusBaseClass-class.html#__init__
+VisionEgg.Textures.TextureStimulusBaseClass._mipmap_modes	VisionEgg.Textures.TextureStimulusBaseClass-class.html#_mipmap_modes
+VisionEgg.ClassWithParameters.is_constant_parameter	VisionEgg.ClassWithParameters-class.html#is_constant_parameter
+VisionEgg.ClassWithParameters.__getstate__	VisionEgg.ClassWithParameters-class.html#__getstate__
+VisionEgg.ClassWithParameters.get_specified_type	VisionEgg.ClassWithParameters-class.html#get_specified_type
+VisionEgg.Textures.TextureStimulus.draw	VisionEgg.Textures.TextureStimulus-class.html#draw
+VisionEgg.ClassWithParameters.__setstate__	VisionEgg.ClassWithParameters-class.html#__setstate__
+VisionEgg.ClassWithParameters.verify_parameters	VisionEgg.ClassWithParameters-class.html#verify_parameters
+VisionEgg.Textures.TextureStimulusBaseClass.constant_parameters_and_defaults	VisionEgg.Textures.TextureStimulusBaseClass-class.html#constant_parameters_and_defaults
+VisionEgg.Textures.TextureStimulus.parameters_and_defaults	VisionEgg.Textures.TextureStimulus-class.html#parameters_and_defaults
+VisionEgg.ClassWithParameters.__safe_for_unpickling__	VisionEgg.ClassWithParameters-class.html#__safe_for_unpickling__
+VisionEgg.Textures.TextureStimulusBaseClass._reload_texture	VisionEgg.Textures.TextureStimulusBaseClass-class.html#_reload_texture
+VisionEgg.Textures.TextureStimulus3D	VisionEgg.Textures.TextureStimulus3D-class.html
+VisionEgg.ClassWithParameters.set	VisionEgg.ClassWithParameters-class.html#set
+VisionEgg.Textures.TextureStimulusBaseClass.__init__	VisionEgg.Textures.TextureStimulusBaseClass-class.html#__init__
+VisionEgg.Textures.TextureStimulusBaseClass._mipmap_modes	VisionEgg.Textures.TextureStimulusBaseClass-class.html#_mipmap_modes
+VisionEgg.ClassWithParameters.is_constant_parameter	VisionEgg.ClassWithParameters-class.html#is_constant_parameter
+VisionEgg.ClassWithParameters.__getstate__	VisionEgg.ClassWithParameters-class.html#__getstate__
+VisionEgg.ClassWithParameters.get_specified_type	VisionEgg.ClassWithParameters-class.html#get_specified_type
+VisionEgg.Textures.TextureStimulus3D.draw	VisionEgg.Textures.TextureStimulus3D-class.html#draw
+VisionEgg.ClassWithParameters.__setstate__	VisionEgg.ClassWithParameters-class.html#__setstate__
+VisionEgg.ClassWithParameters.verify_parameters	VisionEgg.ClassWithParameters-class.html#verify_parameters
+VisionEgg.Textures.TextureStimulusBaseClass.constant_parameters_and_defaults	VisionEgg.Textures.TextureStimulusBaseClass-class.html#constant_parameters_and_defaults
+VisionEgg.Textures.TextureStimulus3D.parameters_and_defaults	VisionEgg.Textures.TextureStimulus3D-class.html#parameters_and_defaults
+VisionEgg.ClassWithParameters.__safe_for_unpickling__	VisionEgg.ClassWithParameters-class.html#__safe_for_unpickling__
+VisionEgg.Textures.TextureStimulusBaseClass._reload_texture	VisionEgg.Textures.TextureStimulusBaseClass-class.html#_reload_texture
+VisionEgg.Textures.TextureStimulusBaseClass	VisionEgg.Textures.TextureStimulusBaseClass-class.html
+VisionEgg.ClassWithParameters.set	VisionEgg.ClassWithParameters-class.html#set
+VisionEgg.Textures.TextureStimulusBaseClass.__init__	VisionEgg.Textures.TextureStimulusBaseClass-class.html#__init__
+VisionEgg.Textures.TextureStimulusBaseClass._mipmap_modes	VisionEgg.Textures.TextureStimulusBaseClass-class.html#_mipmap_modes
+VisionEgg.ClassWithParameters.is_constant_parameter	VisionEgg.ClassWithParameters-class.html#is_constant_parameter
+VisionEgg.ClassWithParameters.__getstate__	VisionEgg.ClassWithParameters-class.html#__getstate__
+VisionEgg.ClassWithParameters.get_specified_type	VisionEgg.ClassWithParameters-class.html#get_specified_type
+VisionEgg.Core.Stimulus.draw	VisionEgg.Core.Stimulus-class.html#draw
+VisionEgg.ClassWithParameters.__setstate__	VisionEgg.ClassWithParameters-class.html#__setstate__
+VisionEgg.ClassWithParameters.verify_parameters	VisionEgg.ClassWithParameters-class.html#verify_parameters
+VisionEgg.Textures.TextureStimulusBaseClass.constant_parameters_and_defaults	VisionEgg.Textures.TextureStimulusBaseClass-class.html#constant_parameters_and_defaults
+VisionEgg.Textures.TextureStimulusBaseClass.parameters_and_defaults	VisionEgg.Textures.TextureStimulusBaseClass-class.html#parameters_and_defaults
+VisionEgg.ClassWithParameters.__safe_for_unpickling__	VisionEgg.ClassWithParameters-class.html#__safe_for_unpickling__
+VisionEgg.Textures.TextureStimulusBaseClass._reload_texture	VisionEgg.Textures.TextureStimulusBaseClass-class.html#_reload_texture
+VisionEgg.Textures.TextureTooLargeError	VisionEgg.Textures.TextureTooLargeError-class.html
+VisionEgg.ThreeDeeMath.TransformMatrix	VisionEgg.ThreeDeeMath.TransformMatrix-class.html
+VisionEgg.ThreeDeeMath.TransformMatrix.rotate	VisionEgg.ThreeDeeMath.TransformMatrix-class.html#rotate
+VisionEgg.ThreeDeeMath.TransformMatrix.transform_vertices	VisionEgg.ThreeDeeMath.TransformMatrix-class.html#transform_vertices
+VisionEgg.ThreeDeeMath.TransformMatrix.scale	VisionEgg.ThreeDeeMath.TransformMatrix-class.html#scale
+VisionEgg.ThreeDeeMath.TransformMatrix.__make_normalized_vert3	VisionEgg.ThreeDeeMath.TransformMatrix-class.html#__make_normalized_vert3
+VisionEgg.ThreeDeeMath.TransformMatrix.translate	VisionEgg.ThreeDeeMath.TransformMatrix-class.html#translate
+VisionEgg.ThreeDeeMath.TransformMatrix.get_matrix	VisionEgg.ThreeDeeMath.TransformMatrix-class.html#get_matrix
+VisionEgg.ThreeDeeMath.TransformMatrix.__init__	VisionEgg.ThreeDeeMath.TransformMatrix-class.html#__init__
+VisionEgg.WrappedText.WrappedText	VisionEgg.WrappedText.WrappedText-class.html
+VisionEgg.ClassWithParameters.set	VisionEgg.ClassWithParameters-class.html#set
+VisionEgg.WrappedText.WrappedText.__init__	VisionEgg.WrappedText.WrappedText-class.html#__init__
+VisionEgg.ClassWithParameters.verify_parameters	VisionEgg.ClassWithParameters-class.html#verify_parameters
+VisionEgg.ClassWithParameters.is_constant_parameter	VisionEgg.ClassWithParameters-class.html#is_constant_parameter
+VisionEgg.WrappedText.WrappedText._splitText	VisionEgg.WrappedText.WrappedText-class.html#_splitText
+VisionEgg.ClassWithParameters.__getstate__	VisionEgg.ClassWithParameters-class.html#__getstate__
+VisionEgg.ClassWithParameters.get_specified_type	VisionEgg.ClassWithParameters-class.html#get_specified_type
+VisionEgg.WrappedText.WrappedText.draw	VisionEgg.WrappedText.WrappedText-class.html#draw
+VisionEgg.ClassWithParameters.__setstate__	VisionEgg.ClassWithParameters-class.html#__setstate__
+VisionEgg.WrappedText.WrappedText.constant_parameters_and_defaults	VisionEgg.WrappedText.WrappedText-class.html#constant_parameters_and_defaults
+VisionEgg.WrappedText.WrappedText.parameters_and_defaults	VisionEgg.WrappedText.WrappedText-class.html#parameters_and_defaults
+VisionEgg.ClassWithParameters.__safe_for_unpickling__	VisionEgg.ClassWithParameters-class.html#__safe_for_unpickling__
+VisionEgg.qtlowlevel.QTNewMoviePropertyElement	VisionEgg.qtlowlevel.QTNewMoviePropertyElement-class.html
+VisionEgg.qtlowlevel.QTNewMoviePropertyElement._fields_	VisionEgg.qtlowlevel.QTNewMoviePropertyElement-class.html#_fields_
+VisionEgg.qtlowlevel.Rect	VisionEgg.qtlowlevel.Rect-class.html
+VisionEgg.qtlowlevel.Rect._fields_	VisionEgg.qtlowlevel.Rect-class.html#_fields_
+VisionEgg.qtlowlevel.qtlowlevelError	VisionEgg.qtlowlevel.qtlowlevelError-class.html
+VisionEgg.qtmovie.Movie	VisionEgg.qtmovie.Movie-class.html
+VisionEgg.qtmovie.Movie.GetMovieBox	VisionEgg.qtmovie.Movie-class.html#GetMovieBox
+VisionEgg.qtmovie.Movie.StartMovie	VisionEgg.qtmovie.Movie-class.html#StartMovie
+VisionEgg.qtmovie.Movie.SetMovieBox	VisionEgg.qtmovie.Movie-class.html#SetMovieBox
+VisionEgg.qtmovie.Movie.GoToBeginningOfMovie	VisionEgg.qtmovie.Movie-class.html#GoToBeginningOfMovie
+VisionEgg.qtmovie.Movie.MoviesTask	VisionEgg.qtmovie.Movie-class.html#MoviesTask
+VisionEgg.qtmovie.Movie.__init__	VisionEgg.qtmovie.Movie-class.html#__init__
+VisionEgg.qtmovie.Movie.IsMovieDone	VisionEgg.qtmovie.Movie-class.html#IsMovieDone
+VisionEgg.qtmovie.Rect	VisionEgg.qtmovie.Rect-class.html
+VisionEgg.qtmovie.Rect.__init__	VisionEgg.qtmovie.Rect-class.html#__init__
+float	float-class.html
+float.__int__	float-class.html#__int__
+float.__rtruediv__	float-class.html#__rtruediv__
+float.__str__	float-class.html#__str__
+float.__getattribute__	float-class.html#__getattribute__
+float.__radd__	float-class.html#__radd__
+float.__getformat__	float-class.html#__getformat__
+float.__truediv__	float-class.html#__truediv__
+float.__rsub__	float-class.html#__rsub__
+float.__rdiv__	float-class.html#__rdiv__
+float.__rmul__	float-class.html#__rmul__
+float.__lt__	float-class.html#__lt__
+float.__getnewargs__	float-class.html#__getnewargs__
+float.__rmod__	float-class.html#__rmod__
+float.__float__	float-class.html#__float__
+float.__rpow__	float-class.html#__rpow__
+float.__new__	float-class.html#__new__
+float.__abs__	float-class.html#__abs__
+float.__pos__	float-class.html#__pos__
+float.__sub__	float-class.html#__sub__
+float.__rfloordiv__	float-class.html#__rfloordiv__
+float.__neg__	float-class.html#__neg__
+float.__ne__	float-class.html#__ne__
+float.__rdivmod__	float-class.html#__rdivmod__
+float.__coerce__	float-class.html#__coerce__
+float.__divmod__	float-class.html#__divmod__
+float.__add__	float-class.html#__add__
+float.__gt__	float-class.html#__gt__
+float.__eq__	float-class.html#__eq__
+float.__repr__	float-class.html#__repr__
+float.__nonzero__	float-class.html#__nonzero__
+float.__mod__	float-class.html#__mod__
+float.__div__	float-class.html#__div__
+float.__le__	float-class.html#__le__
+float.__mul__	float-class.html#__mul__
+float.__floordiv__	float-class.html#__floordiv__
+float.__hash__	float-class.html#__hash__
+float.__setformat__	float-class.html#__setformat__
+float.__long__	float-class.html#__long__
+float.__ge__	float-class.html#__ge__
+float.__pow__	float-class.html#__pow__
+int	int-class.html
+int.__int__	int-class.html#__int__
+int.__ror__	int-class.html#__ror__
+int.__rtruediv__	int-class.html#__rtruediv__
+int.__add__	int-class.html#__add__
+int.__str__	int-class.html#__str__
+int.__getattribute__	int-class.html#__getattribute__
+int.__radd__	int-class.html#__radd__
+int.__and__	int-class.html#__and__
+int.__truediv__	int-class.html#__truediv__
+int.__rrshift__	int-class.html#__rrshift__
+int.__rsub__	int-class.html#__rsub__
+int.__rdiv__	int-class.html#__rdiv__
+int.__rmul__	int-class.html#__rmul__
+int.__rmod__	int-class.html#__rmod__
+int.__getnewargs__	int-class.html#__getnewargs__
+int.__float__	int-class.html#__float__
+int.__rpow__	int-class.html#__rpow__
+int.__rand__	int-class.html#__rand__
+int.__divmod__	int-class.html#__divmod__
+int.__new__	int-class.html#__new__
+int.__pos__	int-class.html#__pos__
+int.__cmp__	int-class.html#__cmp__
+int.__abs__	int-class.html#__abs__
+int.__rfloordiv__	int-class.html#__rfloordiv__
+int.__mul__	int-class.html#__mul__
+int.__rshift__	int-class.html#__rshift__
+int.__rdivmod__	int-class.html#__rdivmod__
+int.__invert__	int-class.html#__invert__
+int.__coerce__	int-class.html#__coerce__
+int.__pow__	int-class.html#__pow__
+int.__rlshift__	int-class.html#__rlshift__
+int.__lshift__	int-class.html#__lshift__
+int.__sub__	int-class.html#__sub__
+int.__hex__	int-class.html#__hex__
+int.__oct__	int-class.html#__oct__
+int.__rxor__	int-class.html#__rxor__
+int.__nonzero__	int-class.html#__nonzero__
+int.__mod__	int-class.html#__mod__
+int.__neg__	int-class.html#__neg__
+int.__xor__	int-class.html#__xor__
+int.__div__	int-class.html#__div__
+int.__repr__	int-class.html#__repr__
+int.__floordiv__	int-class.html#__floordiv__
+int.__hash__	int-class.html#__hash__
+int.__index__	int-class.html#__index__
+int.__long__	int-class.html#__long__
+int.__or__	int-class.html#__or__
diff --git a/doc/reference/html/class-tree.html b/doc/reference/html/class-tree.html
new file mode 100644
index 0000000..4ca0547
--- /dev/null
+++ b/doc/reference/html/class-tree.html
@@ -0,0 +1,265 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>Class Hierarchy</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th bgcolor="#70b0f0" class="navbar-select"
+          >   Trees   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%"> </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="class-tree.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<center><b>
+ [ <a href="module-tree.html">Module Hierarchy</a>
+ | <a href="class-tree.html">Class Hierarchy</a> ]
+</b></center><br />
+<h1 class="epydoc">Class Hierarchy</h1>
+<ul class="nomargin-top">
+    <li> <strong class="uidlink"><i>unreachable</i></strong>
+    </li>
+    <li> <strong class="uidlink"><i>unreachable</i></strong>
+    </li>
+    <li> <strong class="uidlink"><i>unreachable</i></strong>
+    </li>
+    <li> <strong class="uidlink"><i>unreachable</i></strong>
+    </li>
+    <li> <strong class="uidlink"><i>unreachable</i></strong>
+    </li>
+    <li> <strong class="uidlink">Pyro.core.ObjBase</strong>
+    </li>
+    <li> <strong class="uidlink">Tkinter.Grid</strong>:
+      <em class="summary">Geometry manager Grid.</em>
+    </li>
+    <li> <strong class="uidlink">Tkinter.Misc</strong>:
+      <em class="summary">Internal class.</em>
+    </li>
+    <li> <strong class="uidlink">Tkinter.Pack</strong>:
+      <em class="summary">Geometry manager Pack.</em>
+    </li>
+    <li> <strong class="uidlink">Tkinter.Place</strong>:
+      <em class="summary">Geometry manager Place.</em>
+    </li>
+    <li> <strong class="uidlink">Tkinter.Wm</strong>:
+      <em class="summary">Provides functions for the communication with the window manager.</em>
+    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.Configuration.Config-class.html">VisionEgg.Configuration.Config</a></strong>:
+      <em class="summary">Holds global Vision Egg configuration information.</em>
+    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.Core.FrameTimer-class.html">VisionEgg.Core.FrameTimer</a></strong>:
+      <em class="summary">Time inter frame intervals and compute frames per second.</em>
+    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.Daq.Device-class.html">VisionEgg.Daq.Device</a></strong>
+    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.DaqKeyboard.KeyboardInput-class.html">VisionEgg.DaqKeyboard.KeyboardInput</a></strong>
+    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.Deprecated.Message-class.html">VisionEgg.Deprecated.Message</a></strong>:
+      <em class="summary">DEPRECATED Handles message/warning/error printing, exception raising.</em>
+    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.GLTrace.Wrapper-class.html">VisionEgg.GLTrace.Wrapper</a></strong>
+    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.Parameters-class.html">VisionEgg.Parameters</a></strong>:
+      <em class="summary">Parameter container.</em>
+    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.PyroApps.AST_ext.AST_Visitor-class.html">VisionEgg.PyroApps.AST_ext.AST_Visitor</a></strong>
+    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.PyroApps.ColorCalGUI.ColorCalMetaParameters-class.html">VisionEgg.PyroApps.ColorCalGUI.ColorCalMetaParameters</a></strong>
+    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.PyroApps.DropinGUI.DropinMetaParameters-class.html">VisionEgg.PyroApps.DropinGUI.DropinMetaParameters</a></strong>
+    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase-class.html">VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase</a></strong>:
+      <em class="summary">Base class to encapsulate objects, provides useful methods when used in GUI</em>
+    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.PyroApps.FlatGratingGUI.FlatGratingMetaParameters-class.html">VisionEgg.PyroApps.FlatGratingGUI.FlatGratingMetaParameters</a></strong>
+    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.PyroApps.GridGUI.GridMetaParameters-class.html">VisionEgg.PyroApps.GridGUI.GridMetaParameters</a></strong>
+    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.PyroApps.MouseTargetGUI.MouseTargetMetaParameters-class.html">VisionEgg.PyroApps.MouseTargetGUI.MouseTargetMetaParameters</a></strong>
+    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionParameters-class.html">VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionParameters</a></strong>
+    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.PyroApps.SphereGratingGUI.SphereGratingMetaParameters-class.html">VisionEgg.PyroApps.SphereGratingGUI.SphereGratingMetaParameters</a></strong>
+    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumMetaParameters-class.html">VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumMetaParameters</a></strong>
+    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.PyroApps.TargetGUI.TargetMetaParameters-class.html">VisionEgg.PyroApps.TargetGUI.TargetMetaParameters</a></strong>
+    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.PyroClient.PyroClient-class.html">VisionEgg.PyroClient.PyroClient</a></strong>:
+      <em class="summary">Simplifies getting PyroControllers from a remote computer.</em>
+    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.PyroHelpers.PyroServer-class.html">VisionEgg.PyroHelpers.PyroServer</a></strong>:
+      <em class="summary">Set up a Pyro server for your PyroControllers and PyroGoClass.</em>
+    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.TCPController.TCPServer-class.html">VisionEgg.TCPController.TCPServer</a></strong>:
+      <em class="summary">TCP server creates SocketListenController upon connection.</em>
+    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.ThreeDeeMath.TransformMatrix-class.html">VisionEgg.ThreeDeeMath.TransformMatrix</a></strong>
+    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.qtmovie.Movie-class.html">VisionEgg.qtmovie.Movie</a></strong>:
+      <em class="summary">An encapsulated QuickTime Movie</em>
+    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.qtmovie.Rect-class.html">VisionEgg.qtmovie.Rect</a></strong>
+    </li>
+    <li> <strong class="uidlink">ctypes.Structure</strong>
+    </li>
+    <li> <strong class="uidlink">ctypes.Structure</strong>
+    </li>
+    <li> <strong class="uidlink">object</strong>:
+      <em class="summary">The most base type</em>
+    <ul>
+    <li> <strong class="uidlink">dict</strong>:
+      <em class="summary">dict() -> new empty dictionary.</em>
+    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.Textures.Texture-class.html">VisionEgg.Textures.Texture</a></strong>:
+      <em class="summary">A 2 dimensional texture.</em>
+    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.ParameterTypes.ParameterTypeDef-class.html">VisionEgg.ParameterTypes.ParameterTypeDef</a></strong>:
+      <em class="summary">Base class for all parameter type definitions</em>
+    </li>
+    <li> <strong class="uidlink"><a href="float-class.html">float</a></strong>:
+      <em class="summary">float(x) -> floating point number
+
+Convert a string or number to a floating point number, if possible.</em>
+    </li>
+    <li> <strong class="uidlink"><a href="int-class.html">int</a></strong>:
+      <em class="summary">int(x[, base]) -> integer
+
+Convert a string or number to an integer, if possible.</em>
+    <ul>
+    </ul>
+    </li>
+    <li> <strong class="uidlink">exceptions.BaseException</strong>:
+      <em class="summary">Common base class for all exceptions</em>
+    <ul>
+    <li> <strong class="uidlink">exceptions.Exception</strong>:
+      <em class="summary">Common base class for all non-exit exceptions.</em>
+    <ul>
+    <li> <strong class="uidlink">exceptions.StandardError</strong>:
+      <em class="summary">Base class for all standard Python exceptions that do not represent
+interpreter exiting.</em>
+    <ul>
+    <li> <strong class="uidlink">exceptions.RuntimeError</strong>:
+      <em class="summary">Unspecified run-time error.</em>
+    <ul>
+    <li> <strong class="uidlink"><a href="VisionEgg.Textures.TextureTooLargeError-class.html">VisionEgg.Textures.TextureTooLargeError</a></strong>
+    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.Gratings.NumSamplesTooLargeError-class.html">VisionEgg.Gratings.NumSamplesTooLargeError</a></strong>
+    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.qtlowlevel.qtlowlevelError-class.html">VisionEgg.qtlowlevel.qtlowlevelError</a></strong>
+    </li>
+    </ul>
+    </li>
+    </ul>
+    </li>
+    </ul>
+    </li>
+    </ul>
+    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.Textures.TextureObject-class.html">VisionEgg.Textures.TextureObject</a></strong>:
+      <em class="summary">Texture data in OpenGL.</em>
+    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.FlowControl.Controller-class.html">VisionEgg.FlowControl.Controller</a></strong>:
+      <em class="summary">Control parameters.</em>
+    </li>
+    <li> <strong class="uidlink">type</strong>:
+      <em class="summary">type(object) -> the object's type...</em>
+    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.ClassWithParameters-class.html">VisionEgg.ClassWithParameters</a></strong>:
+      <em class="summary">Base class for any class that uses parameters.</em>
+    </li>
+    </ul>
+    </li>
+</ul>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th bgcolor="#70b0f0" class="navbar-select"
+          >   Trees   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/crarr.png b/doc/reference/html/crarr.png
new file mode 100644
index 0000000..26b43c5
Binary files /dev/null and b/doc/reference/html/crarr.png differ
diff --git a/doc/reference/html/epydoc.css b/doc/reference/html/epydoc.css
new file mode 100644
index 0000000..01250e6
--- /dev/null
+++ b/doc/reference/html/epydoc.css
@@ -0,0 +1,312 @@
+
+
+/* Epydoc CSS Stylesheet
+ *
+ * This stylesheet can be used to customize the appearance of epydoc's
+ * HTML output.
+ *
+ */
+
+/* Default Colors & Styles
+ *   - Set the default foreground & background color with 'body'; and 
+ *     link colors with 'a:link' and 'a:visited'.
+ *   - Use bold for decision list terms.
+ *   - The heading styles defined here are used for headings *within*
+ *     docstring descriptions.  All headings used by epydoc itself use
+ *     either class='epydoc' or class='toc' (CSS styles for both
+ *     defined below).
+ */
+body                        { background: #ffffff; color: #000000; }
+a:link                      { color: #0000ff; }
+a:visited                   { color: #204080; }
+dt                          { font-weight: bold; }
+h1                          { font-size: +140%; font-style: italic;
+                              font-weight: bold; }
+h2                          { font-size: +125%; font-style: italic;
+                              font-weight: bold; }
+h3                          { font-size: +110%; font-style: italic;
+                              font-weight: normal; }
+code                        { font-size: 100%; }
+ 
+/* Page Header & Footer
+ *   - The standard page header consists of a navigation bar (with
+ *     pointers to standard pages such as 'home' and 'trees'); a
+ *     breadcrumbs list, which can be used to navigate to containing
+ *     classes or modules; options links, to show/hide private
+ *     variables and to show/hide frames; and a page title (using
+ *     <h1>).  The page title may be followed by a link to the
+ *     corresponding source code (using 'span.codelink').
+ *   - The footer consists of a navigation bar, a timestamp, and a
+ *     pointer to epydoc's homepage.
+ */ 
+h1.epydoc                   { margin: 0; font-size: +140%; font-weight: bold; }
+h2.epydoc                   { font-size: +130%; font-weight: bold; }
+h3.epydoc                   { font-size: +115%; font-weight: bold; }
+td h3.epydoc                { font-size: +115%; font-weight: bold;
+                              margin-bottom: 0; }
+table.navbar                { background: #a0c0ff; color: #000000;
+                              border: 2px groove #c0d0d0; }
+table.navbar table          { color: #000000; }
+th.navbar-select            { background: #70b0ff;
+                              color: #000000; } 
+table.navbar a              { text-decoration: none; }  
+table.navbar a:link         { color: #0000ff; }
+table.navbar a:visited      { color: #204080; }
+span.breadcrumbs            { font-size: 85%; font-weight: bold; }
+span.options                { font-size: 70%; }
+span.codelink               { font-size: 85%; }
+td.footer                   { font-size: 85%; }
+
+/* Table Headers
+ *   - Each summary table and details section begins with a 'header'
+ *     row.  This row contains a section title (marked by
+ *     'span.table-header') as well as a show/hide private link
+ *     (marked by 'span.options', defined above).
+ *   - Summary tables that contain user-defined groups mark those
+ *     groups using 'group header' rows.
+ */
+td.table-header             { background: #70b0ff; color: #000000;
+                              border: 1px solid #608090; }
+td.table-header table       { color: #000000; }
+td.table-header table a:link      { color: #0000ff; }
+td.table-header table a:visited   { color: #204080; }
+span.table-header           { font-size: 120%; font-weight: bold; }
+th.group-header             { background: #c0e0f8; color: #000000;
+                              text-align: left; font-style: italic; 
+                              font-size: 115%; 
+                              border: 1px solid #608090; }
+
+/* Summary Tables (functions, variables, etc)
+ *   - Each object is described by a single row of the table with
+ *     two cells.  The left cell gives the object's type, and is
+ *     marked with 'code.summary-type'.  The right cell gives the
+ *     object's name and a summary description.
+ *   - CSS styles for the table's header and group headers are
+ *     defined above, under 'Table Headers'
+ */
+table.summary               { border-collapse: collapse;
+                              background: #e8f0f8; color: #000000;
+                              border: 1px solid #608090;
+                              margin-bottom: 0.5em; }
+td.summary                  { border: 1px solid #608090; }
+code.summary-type           { font-size: 85%; }
+table.summary a:link        { color: #0000ff; }
+table.summary a:visited     { color: #204080; }
+
+
+/* Details Tables (functions, variables, etc)
+ *   - Each object is described in its own div.
+ *   - A single-row summary table w/ table-header is used as
+ *     a header for each details section (CSS style for table-header
+ *     is defined above, under 'Table Headers').
+ */
+table.details               { border-collapse: collapse;
+                              background: #e8f0f8; color: #000000;
+                              border: 1px solid #608090;
+                              margin: .2em 0 0 0; }
+table.details table         { color: #000000; }
+table.details a:link        { color: #0000ff; }
+table.details a:visited     { color: #204080; }
+
+/* Fields */
+dl.fields                   { margin-left: 2em; margin-top: 1em;
+                              margin-bottom: 1em; }
+dl.fields dd ul             { margin-left: 0em; padding-left: 0em; }
+div.fields                  { margin-left: 2em; }
+div.fields p                { margin-bottom: 0.5em; }
+
+/* Index tables (identifier index, term index, etc)
+ *   - link-index is used for indices containing lists of links
+ *     (namely, the identifier index & term index).
+ *   - index-where is used in link indices for the text indicating
+ *     the container/source for each link.
+ *   - metadata-index is used for indices containing metadata
+ *     extracted from fields (namely, the bug index & todo index).
+ */
+table.link-index            { border-collapse: collapse;
+                              background: #e8f0f8; color: #000000;
+                              border: 1px solid #608090; }
+td.link-index               { border-width: 0px; }
+table.link-index a:link     { color: #0000ff; }
+table.link-index a:visited  { color: #204080; }
+span.index-where            { font-size: 70%; }
+table.metadata-index        { border-collapse: collapse;
+                              background: #e8f0f8; color: #000000;
+                              border: 1px solid #608090; 
+                              margin: .2em 0 0 0; }
+td.metadata-index           { border-width: 1px; border-style: solid; }
+table.metadata-index a:link { color: #0000ff; }
+table.metadata-index a:visited  { color: #204080; }
+
+/* Function signatures
+ *   - sig* is used for the signature in the details section.
+ *   - .summary-sig* is used for the signature in the summary 
+ *     table, and when listing property accessor functions.
+ * */
+.sig-name                   { color: #006080; }
+.sig-arg                    { color: #008060; }
+.sig-default                { color: #602000; }
+.summary-sig                { font-family: monospace; }
+.summary-sig-name           { color: #006080; font-weight: bold; }
+table.summary a.summary-sig-name:link
+                            { color: #006080; font-weight: bold; }
+table.summary a.summary-sig-name:visited
+                            { color: #006080; font-weight: bold; }
+.summary-sig-arg            { color: #006040; }
+.summary-sig-default        { color: #501800; }
+
+/* To render variables, classes etc. like functions */
+table.summary .summary-name { color: #006080; font-weight: bold;
+                              font-family: monospace; }
+table.summary
+     a.summary-name:link    { color: #006080; font-weight: bold;
+                              font-family: monospace; }
+table.summary
+    a.summary-name:visited  { color: #006080; font-weight: bold;
+                              font-family: monospace; }
+
+/* Variable values
+ *   - In the 'variable details' sections, each varaible's value is
+ *     listed in a 'pre.variable' box.  The width of this box is
+ *     restricted to 80 chars; if the value's repr is longer than
+ *     this it will be wrapped, using a backslash marked with
+ *     class 'variable-linewrap'.  If the value's repr is longer
+ *     than 3 lines, the rest will be ellided; and an ellipsis
+ *     marker ('...' marked with 'variable-ellipsis') will be used.
+ *   - If the value is a string, its quote marks will be marked
+ *     with 'variable-quote'.
+ *   - If the variable is a regexp, it is syntax-highlighted using
+ *     the re* CSS classes.
+ */
+pre.variable                { padding: .5em; margin: 0;
+                              background: #dce4ec; color: #000000;
+                              border: 1px solid #708890; }
+.variable-linewrap          { color: #604000; font-weight: bold; }
+.variable-ellipsis          { color: #604000; font-weight: bold; }
+.variable-quote             { color: #604000; font-weight: bold; }
+.variable-group             { color: #008000; font-weight: bold; }
+.variable-op                { color: #604000; font-weight: bold; }
+.variable-string            { color: #006030; }
+.variable-unknown           { color: #a00000; font-weight: bold; }
+.re                         { color: #000000; }
+.re-char                    { color: #006030; }
+.re-op                      { color: #600000; }
+.re-group                   { color: #003060; }
+.re-ref                     { color: #404040; }
+
+/* Base tree
+ *   - Used by class pages to display the base class hierarchy.
+ */
+pre.base-tree               { font-size: 80%; margin: 0; }
+
+/* Frames-based table of contents headers
+ *   - Consists of two frames: one for selecting modules; and
+ *     the other listing the contents of the selected module.
+ *   - h1.toc is used for each frame's heading
+ *   - h2.toc is used for subheadings within each frame.
+ */
+h1.toc                      { text-align: center; font-size: 105%;
+                              margin: 0; font-weight: bold;
+                              padding: 0; }
+h2.toc                      { font-size: 100%; font-weight: bold; 
+                              margin: 0.5em 0 0 -0.3em; }
+
+/* Syntax Highlighting for Source Code
+ *   - doctest examples are displayed in a 'pre.py-doctest' block.
+ *     If the example is in a details table entry, then it will use
+ *     the colors specified by the 'table pre.py-doctest' line.
+ *   - Source code listings are displayed in a 'pre.py-src' block.
+ *     Each line is marked with 'span.py-line' (used to draw a line
+ *     down the left margin, separating the code from the line
+ *     numbers).  Line numbers are displayed with 'span.py-lineno'.
+ *     The expand/collapse block toggle button is displayed with
+ *     'a.py-toggle' (Note: the CSS style for 'a.py-toggle' should not
+ *     modify the font size of the text.)
+ *   - If a source code page is opened with an anchor, then the
+ *     corresponding code block will be highlighted.  The code
+ *     block's header is highlighted with 'py-highlight-hdr'; and
+ *     the code block's body is highlighted with 'py-highlight'.
+ *   - The remaining py-* classes are used to perform syntax
+ *     highlighting (py-string for string literals, py-name for names,
+ *     etc.)
+ */
+pre.py-doctest              { padding: .5em; margin: 1em;
+                              background: #e8f0f8; color: #000000;
+                              border: 1px solid #708890; }
+table pre.py-doctest        { background: #dce4ec;
+                              color: #000000; }
+pre.py-src                  { border: 2px solid #000000; 
+                              background: #f0f0f0; color: #000000; }
+.py-line                    { border-left: 2px solid #000000; 
+                              margin-left: .2em; padding-left: .4em; }
+.py-lineno                  { font-style: italic; font-size: 90%;
+                              padding-left: .5em; }
+a.py-toggle                 { text-decoration: none; }
+div.py-highlight-hdr        { border-top: 2px solid #000000;
+                              border-bottom: 2px solid #000000;
+                              background: #d8e8e8; }
+div.py-highlight            { border-bottom: 2px solid #000000;
+                              background: #d0e0e0; }
+.py-prompt                  { color: #005050; font-weight: bold;}
+.py-more                    { color: #005050; font-weight: bold;}
+.py-string                  { color: #006030; }
+.py-comment                 { color: #003060; }
+.py-keyword                 { color: #600000; }
+.py-output                  { color: #404040; }
+.py-name                    { color: #000050; }
+.py-name:link               { color: #000050 !important; }
+.py-name:visited            { color: #000050 !important; }
+.py-number                  { color: #005000; }
+.py-defname                 { color: #000060; font-weight: bold; }
+.py-def-name                { color: #000060; font-weight: bold; }
+.py-base-class              { color: #000060; }
+.py-param                   { color: #000060; }
+.py-docstring               { color: #006030; }
+.py-decorator               { color: #804020; }
+/* Use this if you don't want links to names underlined: */
+/*a.py-name                   { text-decoration: none; }*/
+
+/* Graphs & Diagrams
+ *   - These CSS styles are used for graphs & diagrams generated using
+ *     Graphviz dot.  'img.graph-without-title' is used for bare
+ *     diagrams (to remove the border created by making the image
+ *     clickable).
+ */
+img.graph-without-title     { border: none; }
+img.graph-with-title        { border: 1px solid #000000; }
+span.graph-title            { font-weight: bold; }
+span.graph-caption          { }
+
+/* General-purpose classes
+ *   - 'p.indent-wrapped-lines' defines a paragraph whose first line
+ *     is not indented, but whose subsequent lines are.
+ *   - The 'nomargin-top' class is used to remove the top margin (e.g.
+ *     from lists).  The 'nomargin' class is used to remove both the
+ *     top and bottom margin (but not the left or right margin --
+ *     for lists, that would cause the bullets to disappear.)
+ */
+p.indent-wrapped-lines      { padding: 0 0 0 7em; text-indent: -7em; 
+                              margin: 0; }
+.nomargin-top               { margin-top: 0; }
+.nomargin                   { margin-top: 0; margin-bottom: 0; }
+
+/* HTML Log */
+div.log-block               { padding: 0; margin: .5em 0 .5em 0;
+                              background: #e8f0f8; color: #000000;
+                              border: 1px solid #000000; }
+div.log-error               { padding: .1em .3em .1em .3em; margin: 4px;
+                              background: #ffb0b0; color: #000000;
+                              border: 1px solid #000000; }
+div.log-warning             { padding: .1em .3em .1em .3em; margin: 4px;
+                              background: #ffffb0; color: #000000;
+                              border: 1px solid #000000; }
+div.log-info               { padding: .1em .3em .1em .3em; margin: 4px;
+                              background: #b0ffb0; color: #000000;
+                              border: 1px solid #000000; }
+h2.log-hdr                  { background: #70b0ff; color: #000000;
+                              margin: 0; padding: 0em 0.5em 0em 0.5em;
+                              border-bottom: 1px solid #000000; font-size: 110%; }
+p.log                       { font-weight: bold; margin: .5em 0 .5em 0; }
+tr.opt-changed              { color: #000000; font-weight: bold; }
+tr.opt-default              { color: #606060; }
+pre.log                     { margin: 0; padding: 0; padding-left: 1em; }
diff --git a/doc/reference/html/epydoc.js b/doc/reference/html/epydoc.js
new file mode 100644
index 0000000..08ffb9f
--- /dev/null
+++ b/doc/reference/html/epydoc.js
@@ -0,0 +1,280 @@
+function toggle_private() {
+        // Search for any private/public links on this page.  Store
+        // their old text in "cmd," so we will know what action to
+        // take; and change their text to the opposite action.
+        var cmd = "?";
+        var elts = document.getElementsByTagName("a");
+        for(var i=0; i<elts.length; i++) {
+          if (elts[i].className == "privatelink") {
+            cmd = elts[i].innerHTML;
+            elts[i].innerHTML = ((cmd && cmd.substr(0,4)=="show")?
+                                    "hide private":"show private");
+          }
+        }
+        // Update all DIVs containing private objects.
+        var elts = document.getElementsByTagName("div");
+        for(var i=0; i<elts.length; i++) {
+          if (elts[i].className == "private") {
+            elts[i].style.display = ((cmd && cmd.substr(0,4)=="hide")?"none":"block");
+          }
+        }
+        // Update all table rowss containing private objects.  Note, we
+        // use "" instead of "block" becaue IE & firefox disagree on what
+        // this should be (block vs table-row), and "" just gives the
+        // default for both browsers.
+        var elts = document.getElementsByTagName("tr");
+        for(var i=0; i<elts.length; i++) {
+          if (elts[i].className == "private") {
+            elts[i].style.display = ((cmd && cmd.substr(0,4)=="hide")?"none":"");
+          }
+        }
+        // Update all list items containing private objects.
+        var elts = document.getElementsByTagName("li");
+        for(var i=0; i<elts.length; i++) {
+          if (elts[i].className == "private") {
+            elts[i].style.display = ((cmd && cmd.substr(0,4)=="hide")?
+                                        "none":"list-item");
+          }
+        }
+        // Update all list items containing private objects.
+        var elts = document.getElementsByTagName("ul");
+        for(var i=0; i<elts.length; i++) {
+          if (elts[i].className == "private") {
+            elts[i].style.display = ((cmd && cmd.substr(0,4)=="hide")?"none":"block");
+          }
+        }
+        // Set a cookie to remember the current option.
+        document.cookie = "EpydocPrivate="+cmd;
+      }
+function getCookie(name) {
+        var dc = document.cookie;
+        var prefix = name + "=";
+        var begin = dc.indexOf("; " + prefix);
+        if (begin == -1) {
+          begin = dc.indexOf(prefix);
+          if (begin != 0) return null;
+        } else
+        { begin += 2; }
+        var end = document.cookie.indexOf(";", begin);
+        if (end == -1)
+        { end = dc.length; }
+        return unescape(dc.substring(begin + prefix.length, end));
+      }
+function setFrame(url1, url2) {
+          parent.frames[1].location.href = url1;
+          parent.frames[2].location.href = url2;
+      }
+function checkCookie() {
+        var cmd=getCookie("EpydocPrivate");
+        if (cmd && cmd.substr(0,4)!="show" && location.href.indexOf("#_") < 0)
+            toggle_private();
+      }
+function toggleCallGraph(id) {
+        var elt = document.getElementById(id);
+        if (elt.style.display == "none")
+            elt.style.display = "block";
+        else
+            elt.style.display = "none";
+      }
+function expand(id) {
+  var elt = document.getElementById(id+"-expanded");
+  if (elt) elt.style.display = "block";
+  var elt = document.getElementById(id+"-expanded-linenums");
+  if (elt) elt.style.display = "block";
+  var elt = document.getElementById(id+"-collapsed");
+  if (elt) { elt.innerHTML = ""; elt.style.display = "none"; }
+  var elt = document.getElementById(id+"-collapsed-linenums");
+  if (elt) { elt.innerHTML = ""; elt.style.display = "none"; }
+  var elt = document.getElementById(id+"-toggle");
+  if (elt) { elt.innerHTML = "-"; }
+}
+
+function collapse(id) {
+  var elt = document.getElementById(id+"-expanded");
+  if (elt) elt.style.display = "none";
+  var elt = document.getElementById(id+"-expanded-linenums");
+  if (elt) elt.style.display = "none";
+  var elt = document.getElementById(id+"-collapsed-linenums");
+  if (elt) { elt.innerHTML = "<br/>"; elt.style.display="block"; }
+  var elt = document.getElementById(id+"-toggle");
+  if (elt) { elt.innerHTML = "+"; }
+  var elt = document.getElementById(id+"-collapsed");
+  if (elt) {
+    elt.style.display = "block";
+    
+    var indent = elt.getAttribute("indent");
+    var pad = elt.getAttribute("pad");
+    var s = "<tt class='py-lineno'>";
+    for (var i=0; i<pad.length; i++) { s += " " }
+    s += "</tt>";
+    s += "  <tt class='py-line'>";
+    for (var i=0; i<indent.length; i++) { s += " " }
+    s += "<a href='#' onclick='expand(\"" + id;
+    s += "\");return false'>...</a></tt><br />";
+    elt.innerHTML = s;
+  }
+}
+
+function toggle(id) {
+  elt = document.getElementById(id+"-toggle");
+  if (elt.innerHTML == "-")
+      collapse(id); 
+  else
+      expand(id);
+  return false;
+}
+
+function highlight(id) {
+  var elt = document.getElementById(id+"-def");
+  if (elt) elt.className = "py-highlight-hdr";
+  var elt = document.getElementById(id+"-expanded");
+  if (elt) elt.className = "py-highlight";
+  var elt = document.getElementById(id+"-collapsed");
+  if (elt) elt.className = "py-highlight";
+}
+
+function num_lines(s) {
+  var n = 1;
+  var pos = s.indexOf("\n");
+  while ( pos > 0) {
+    n += 1;
+    pos = s.indexOf("\n", pos+1);
+  }
+  return n;
+}
+
+// Collapse all blocks that mave more than `min_lines` lines.
+function collapse_all(min_lines) {
+  var elts = document.getElementsByTagName("div");
+  for (var i=0; i<elts.length; i++) {
+    var elt = elts[i];
+    var split = elt.id.indexOf("-");
+    if (split > 0)
+      if (elt.id.substring(split, elt.id.length) == "-expanded")
+        if (num_lines(elt.innerHTML) > min_lines)
+          collapse(elt.id.substring(0, split));
+  }
+}
+
+function expandto(href) {
+  var start = href.indexOf("#")+1;
+  if (start != 0 && start != href.length) {
+    if (href.substring(start, href.length) != "-") {
+      collapse_all(4);
+      pos = href.indexOf(".", start);
+      while (pos != -1) {
+        var id = href.substring(start, pos);
+        expand(id);
+        pos = href.indexOf(".", pos+1);
+      }
+      var id = href.substring(start, href.length);
+      expand(id);
+      highlight(id);
+    }
+  }
+}
+
+function kill_doclink(id) {
+  var parent = document.getElementById(id);
+  parent.removeChild(parent.childNodes.item(0));
+}
+function auto_kill_doclink(ev) {
+  if (!ev) var ev = window.event;
+  if (!this.contains(ev.toElement)) {
+    var parent = document.getElementById(this.parentID);
+    parent.removeChild(parent.childNodes.item(0));
+  }
+}
+
+function doclink(id, name, targets_id) {
+  var elt = document.getElementById(id);
+
+  // If we already opened the box, then destroy it.
+  // (This case should never occur, but leave it in just in case.)
+  if (elt.childNodes.length > 1) {
+    elt.removeChild(elt.childNodes.item(0));
+  }
+  else {
+    // The outer box: relative + inline positioning.
+    var box1 = document.createElement("div");
+    box1.style.position = "relative";
+    box1.style.display = "inline";
+    box1.style.top = 0;
+    box1.style.left = 0;
+  
+    // A shadow for fun
+    var shadow = document.createElement("div");
+    shadow.style.position = "absolute";
+    shadow.style.left = "-1.3em";
+    shadow.style.top = "-1.3em";
+    shadow.style.background = "#404040";
+    
+    // The inner box: absolute positioning.
+    var box2 = document.createElement("div");
+    box2.style.position = "relative";
+    box2.style.border = "1px solid #a0a0a0";
+    box2.style.left = "-.2em";
+    box2.style.top = "-.2em";
+    box2.style.background = "white";
+    box2.style.padding = ".3em .4em .3em .4em";
+    box2.style.fontStyle = "normal";
+    box2.onmouseout=auto_kill_doclink;
+    box2.parentID = id;
+
+    // Get the targets
+    var targets_elt = document.getElementById(targets_id);
+    var targets = targets_elt.getAttribute("targets");
+    var links = "";
+    target_list = targets.split(",");
+    for (var i=0; i<target_list.length; i++) {
+        var target = target_list[i].split("=");
+        links += "<li><a href='" + target[1] + 
+               "' style='text-decoration:none'>" +
+               target[0] + "</a></li>";
+    }
+  
+    // Put it all together.
+    elt.insertBefore(box1, elt.childNodes.item(0));
+    //box1.appendChild(box2);
+    box1.appendChild(shadow);
+    shadow.appendChild(box2);
+    box2.innerHTML =
+        "Which <b>"+name+"</b> do you want to see documentation for?" +
+        "<ul style='margin-bottom: 0;'>" +
+        links + 
+        "<li><a href='#' style='text-decoration:none' " +
+        "onclick='kill_doclink(\""+id+"\");return false;'>"+
+        "<i>None of the above</i></a></li></ul>";
+  }
+  return false;
+}
+
+function get_anchor() {
+          var href = location.href;
+          var start = href.indexOf("#")+1;
+          if ((start != 0) && (start != href.length))
+              return href.substring(start, href.length);
+      }
+function redirect_url(dottedName) {
+          // Scan through each element of the "pages" list, and check
+          // if "name" matches with any of them.
+          for (var i=0; i<pages.length; i++) {
+
+              // Each page has the form "<pagename>-m" or "<pagename>-c";
+              // extract the <pagename> portion & compare it to dottedName.
+              var pagename = pages[i].substring(0, pages[i].length-2);
+              if (pagename == dottedName.substring(0,pagename.length)) {
+
+                  // We've found a page that matches `dottedName`;
+                  // construct its URL, using leftover `dottedName`
+                  // content to form an anchor.
+                  var pagetype = pages[i].charAt(pages[i].length-1);
+                  var url = pagename + ((pagetype=="m")?"-module.html":
+                                                        "-class.html");
+                  if (dottedName.length > pagename.length)
+                      url += "#" + dottedName.substring(pagename.length+1,
+                                                        dottedName.length);
+                  return url;
+              }
+          }
+      }
diff --git a/doc/reference/html/float-class.html b/doc/reference/html/float-class.html
new file mode 100644
index 0000000..4cfae4b
--- /dev/null
+++ b/doc/reference/html/float-class.html
@@ -0,0 +1,1087 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>float</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        float ::
+        Class float
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="float-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class float</h1><br /><br />
+<pre class="base-tree">
+object --+
+         |
+        <strong class="uidshort">float</strong>
+</pre>
+
+<hr />
+<pre class="literalblock">
+float(x) -> floating point number
+
+Convert a string or number to a floating point number, if possible.
+
+</pre><br /><br />
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__abs__"></a><span class="summary-sig-name">__abs__</span>(<span class="summary-sig-arg">x</span>)</span><br />
+      abs(x)</td>
+          <td align="right" valign="top">
+            
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__add__"></a><span class="summary-sig-name">__add__</span>(<span class="summary-sig-arg">x</span>,
+        <span class="summary-sig-arg">y</span>)</span><br />
+      x+y</td>
+          <td align="right" valign="top">
+            
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__coerce__"></a><span class="summary-sig-name">__coerce__</span>(<span class="summary-sig-arg">x</span>,
+        <span class="summary-sig-arg">y</span>)</span><br />
+      coerce(x, y)</td>
+          <td align="right" valign="top">
+            
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__div__"></a><span class="summary-sig-name">__div__</span>(<span class="summary-sig-arg">x</span>,
+        <span class="summary-sig-arg">y</span>)</span><br />
+      x/y</td>
+          <td align="right" valign="top">
+            
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__divmod__"></a><span class="summary-sig-name">__divmod__</span>(<span class="summary-sig-arg">x</span>,
+        <span class="summary-sig-arg">y</span>)</span><br />
+      divmod(x, y)</td>
+          <td align="right" valign="top">
+            
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__eq__"></a><span class="summary-sig-name">__eq__</span>(<span class="summary-sig-arg">x</span>,
+        <span class="summary-sig-arg">y</span>)</span><br />
+      x==y</td>
+          <td align="right" valign="top">
+            
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__float__"></a><span class="summary-sig-name">__float__</span>(<span class="summary-sig-arg">x</span>)</span><br />
+      float(x)</td>
+          <td align="right" valign="top">
+            
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__floordiv__"></a><span class="summary-sig-name">__floordiv__</span>(<span class="summary-sig-arg">x</span>,
+        <span class="summary-sig-arg">y</span>)</span><br />
+      x//y</td>
+          <td align="right" valign="top">
+            
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__ge__"></a><span class="summary-sig-name">__ge__</span>(<span class="summary-sig-arg">x</span>,
+        <span class="summary-sig-arg">y</span>)</span><br />
+      x>=y</td>
+          <td align="right" valign="top">
+            
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="float-class.html#__getattribute__" class="summary-sig-name">__getattribute__</a>(<span class="summary-sig-arg">...</span>)</span><br />
+      x.__getattribute__('name') <==> x.name</td>
+          <td align="right" valign="top">
+            
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="float-class.html#__getformat__" class="summary-sig-name">__getformat__</a>(<span class="summary-sig-arg">float</span>,
+        <span class="summary-sig-arg">typestr</span>)</span><br />
+      You probably don't want to use this function.</td>
+          <td align="right" valign="top">
+            
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__getnewargs__"></a><span class="summary-sig-name">__getnewargs__</span>(<span class="summary-sig-arg">...</span>)</span></td>
+          <td align="right" valign="top">
+            
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__gt__"></a><span class="summary-sig-name">__gt__</span>(<span class="summary-sig-arg">x</span>,
+        <span class="summary-sig-arg">y</span>)</span><br />
+      x>y</td>
+          <td align="right" valign="top">
+            
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="float-class.html#__hash__" class="summary-sig-name">__hash__</a>(<span class="summary-sig-arg">x</span>)</span><br />
+      hash(x)</td>
+          <td align="right" valign="top">
+            
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__int__"></a><span class="summary-sig-name">__int__</span>(<span class="summary-sig-arg">x</span>)</span><br />
+      int(x)</td>
+          <td align="right" valign="top">
+            
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__le__"></a><span class="summary-sig-name">__le__</span>(<span class="summary-sig-arg">x</span>,
+        <span class="summary-sig-arg">y</span>)</span><br />
+      x<=y</td>
+          <td align="right" valign="top">
+            
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__long__"></a><span class="summary-sig-name">__long__</span>(<span class="summary-sig-arg">x</span>)</span><br />
+      long(x)</td>
+          <td align="right" valign="top">
+            
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__lt__"></a><span class="summary-sig-name">__lt__</span>(<span class="summary-sig-arg">x</span>,
+        <span class="summary-sig-arg">y</span>)</span><br />
+      x<y</td>
+          <td align="right" valign="top">
+            
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__mod__"></a><span class="summary-sig-name">__mod__</span>(<span class="summary-sig-arg">x</span>,
+        <span class="summary-sig-arg">y</span>)</span><br />
+      x%y</td>
+          <td align="right" valign="top">
+            
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__mul__"></a><span class="summary-sig-name">__mul__</span>(<span class="summary-sig-arg">x</span>,
+        <span class="summary-sig-arg">y</span>)</span><br />
+      x*y</td>
+          <td align="right" valign="top">
+            
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__ne__"></a><span class="summary-sig-name">__ne__</span>(<span class="summary-sig-arg">x</span>,
+        <span class="summary-sig-arg">y</span>)</span><br />
+      x!=y</td>
+          <td align="right" valign="top">
+            
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__neg__"></a><span class="summary-sig-name">__neg__</span>(<span class="summary-sig-arg">x</span>)</span><br />
+      -x</td>
+          <td align="right" valign="top">
+            
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="float-class.html#__new__" class="summary-sig-name">__new__</a>(<span class="summary-sig-arg">T</span>,
+        <span class="summary-sig-arg">S</span>,
+        <span class="summary-sig-arg">...</span>)</span></td>
+          <td align="right" valign="top">
+            
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__nonzero__"></a><span class="summary-sig-name">__nonzero__</span>(<span class="summary-sig-arg">x</span>)</span><br />
+      x != 0</td>
+          <td align="right" valign="top">
+            
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__pos__"></a><span class="summary-sig-name">__pos__</span>(<span class="summary-sig-arg">x</span>)</span><br />
+      +x</td>
+          <td align="right" valign="top">
+            
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__pow__"></a><span class="summary-sig-name">__pow__</span>(<span class="summary-sig-arg">x</span>,
+        <span class="summary-sig-arg">y</span>,
+        <span class="summary-sig-arg">z</span>=<span class="summary-sig-default">...</span>)</span><br />
+      pow(x, y[, z])</td>
+          <td align="right" valign="top">
+            
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__radd__"></a><span class="summary-sig-name">__radd__</span>(<span class="summary-sig-arg">x</span>,
+        <span class="summary-sig-arg">y</span>)</span><br />
+      y+x</td>
+          <td align="right" valign="top">
+            
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__rdiv__"></a><span class="summary-sig-name">__rdiv__</span>(<span class="summary-sig-arg">x</span>,
+        <span class="summary-sig-arg">y</span>)</span><br />
+      y/x</td>
+          <td align="right" valign="top">
+            
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__rdivmod__"></a><span class="summary-sig-name">__rdivmod__</span>(<span class="summary-sig-arg">x</span>,
+        <span class="summary-sig-arg">y</span>)</span><br />
+      divmod(y, x)</td>
+          <td align="right" valign="top">
+            
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="float-class.html#__repr__" class="summary-sig-name">__repr__</a>(<span class="summary-sig-arg">x</span>)</span><br />
+      repr(x)</td>
+          <td align="right" valign="top">
+            
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__rfloordiv__"></a><span class="summary-sig-name">__rfloordiv__</span>(<span class="summary-sig-arg">x</span>,
+        <span class="summary-sig-arg">y</span>)</span><br />
+      y//x</td>
+          <td align="right" valign="top">
+            
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__rmod__"></a><span class="summary-sig-name">__rmod__</span>(<span class="summary-sig-arg">x</span>,
+        <span class="summary-sig-arg">y</span>)</span><br />
+      y%x</td>
+          <td align="right" valign="top">
+            
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__rmul__"></a><span class="summary-sig-name">__rmul__</span>(<span class="summary-sig-arg">x</span>,
+        <span class="summary-sig-arg">y</span>)</span><br />
+      y*x</td>
+          <td align="right" valign="top">
+            
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__rpow__"></a><span class="summary-sig-name">__rpow__</span>(<span class="summary-sig-arg">y</span>,
+        <span class="summary-sig-arg">x</span>,
+        <span class="summary-sig-arg">z</span>=<span class="summary-sig-default">...</span>)</span><br />
+      pow(x, y[, z])</td>
+          <td align="right" valign="top">
+            
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__rsub__"></a><span class="summary-sig-name">__rsub__</span>(<span class="summary-sig-arg">x</span>,
+        <span class="summary-sig-arg">y</span>)</span><br />
+      y-x</td>
+          <td align="right" valign="top">
+            
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__rtruediv__"></a><span class="summary-sig-name">__rtruediv__</span>(<span class="summary-sig-arg">x</span>,
+        <span class="summary-sig-arg">y</span>)</span><br />
+      y/x</td>
+          <td align="right" valign="top">
+            
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="float-class.html#__setformat__" class="summary-sig-name">__setformat__</a>(<span class="summary-sig-arg">float</span>,
+        <span class="summary-sig-arg">typestr</span>,
+        <span class="summary-sig-arg">fmt</span>)</span><br />
+      You probably don't want to use this function.</td>
+          <td align="right" valign="top">
+            
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="float-class.html#__str__" class="summary-sig-name">__str__</a>(<span class="summary-sig-arg">x</span>)</span><br />
+      str(x)</td>
+          <td align="right" valign="top">
+            
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__sub__"></a><span class="summary-sig-name">__sub__</span>(<span class="summary-sig-arg">x</span>,
+        <span class="summary-sig-arg">y</span>)</span><br />
+      x-y</td>
+          <td align="right" valign="top">
+            
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__truediv__"></a><span class="summary-sig-name">__truediv__</span>(<span class="summary-sig-arg">x</span>,
+        <span class="summary-sig-arg">y</span>)</span><br />
+      x/y</td>
+          <td align="right" valign="top">
+            
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__delattr__</code>,
+      <code>__init__</code>,
+      <code>__reduce__</code>,
+      <code>__reduce_ex__</code>,
+      <code>__setattr__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Properties</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__class__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Method Details</span></td>
+</tr>
+</table>
+<a name="__getattribute__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__getattribute__</span>(<span class="sig-arg">...</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    > 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+x.__getattribute__('name') <==> x.name
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      object.__getattribute__
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="__getformat__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__getformat__</span>(<span class="sig-arg">float</span>,
+        <span class="sig-arg">typestr</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    > 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+You probably don't want to use this function.  It exists mainly to be
+used in Python's test suite.
+
+typestr must be 'double' or 'float'.  This function returns whichever of
+'unknown', 'IEEE, big-endian' or 'IEEE, little-endian' best describes the
+format of floating point numbers used by the C type named by typestr.
+
+</pre>
+  <dl class="fields">
+    <dt>Returns:</dt>
+        <dd><pre class="literalblock">
+string
+
+</pre></dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="__hash__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__hash__</span>(<span class="sig-arg">x</span>)</span>
+    <br /><em class="fname">(Hashing function)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    > 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+hash(x)
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      object.__hash__
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="__new__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__new__</span>(<span class="sig-arg">T</span>,
+        <span class="sig-arg">S</span>,
+        <span class="sig-arg">...</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    > 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+
+
+</pre>
+  <dl class="fields">
+    <dt>Returns:</dt>
+        <dd><pre class="literalblock">
+a new object with type S, a subtype of T
+
+</pre></dd>
+    <dt>Overrides:
+      object.__new__
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="__repr__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__repr__</span>(<span class="sig-arg">x</span>)</span>
+    <br /><em class="fname">(Representation operator)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    > 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+repr(x)
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      object.__repr__
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="__setformat__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__setformat__</span>(<span class="sig-arg">float</span>,
+        <span class="sig-arg">typestr</span>,
+        <span class="sig-arg">fmt</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    > 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+You probably don't want to use this function.  It exists mainly to be
+used in Python's test suite.
+
+typestr must be 'double' or 'float'.  fmt must be one of 'unknown',
+'IEEE, big-endian' or 'IEEE, little-endian', and in addition can only be
+one of the latter two if it appears to match the underlying C reality.
+
+Overrides the automatic determination of C-level floating point type.
+This affects how floats are converted to and from binary strings.
+
+</pre>
+  <dl class="fields">
+    <dt>Returns:</dt>
+        <dd><pre class="literalblock">
+None
+
+</pre></dd>
+  </dl>
+</td></tr></table>
+</div>
+<a name="__str__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__str__</span>(<span class="sig-arg">x</span>)</span>
+    <br /><em class="fname">(Informal representation operator)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    > 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+str(x)
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      object.__str__
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:47 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/frames.html b/doc/reference/html/frames.html
new file mode 100644
index 0000000..66fb581
--- /dev/null
+++ b/doc/reference/html/frames.html
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
+          "DTD/xhtml1-frameset.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title> Vision Egg </title>
+</head>
+<frameset cols="20%,80%">
+  <frameset rows="30%,70%">
+    <frame src="toc.html" name="moduleListFrame"
+           id="moduleListFrame" />
+    <frame src="toc-everything.html" name="moduleFrame"
+           id="moduleFrame" />
+  </frameset>
+  <frame src="VisionEgg-module.html" name="mainFrame" id="mainFrame" />
+</frameset>
+</html>
diff --git a/doc/reference/html/help.html b/doc/reference/html/help.html
new file mode 100644
index 0000000..de65a12
--- /dev/null
+++ b/doc/reference/html/help.html
@@ -0,0 +1,276 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>Help</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th bgcolor="#70b0f0" class="navbar-select"
+          >   Help   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%"> </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="help.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+
+<h1 class="epydoc"> API Documentation </h1>
+
+<p> This document contains the API (Application Programming Interface)
+documentation for Vision Egg.  Documentation for the Python
+objects defined by the project is divided into separate pages for each
+package, module, and class.  The API documentation also includes two
+pages containing information about the project as a whole: a trees
+page, and an index page.  </p>
+
+<h2> Object Documentation </h2>
+
+  <p>Each <strong>Package Documentation</strong> page contains: </p>
+  <ul>
+    <li> A description of the package. </li>
+    <li> A list of the modules and sub-packages contained by the
+    package.  </li>
+    <li> A summary of the classes defined by the package. </li>
+    <li> A summary of the functions defined by the package. </li>
+    <li> A summary of the variables defined by the package. </li>
+    <li> A detailed description of each function defined by the
+    package. </li>
+    <li> A detailed description of each variable defined by the
+    package. </li>
+  </ul>
+  
+  <p>Each <strong>Module Documentation</strong> page contains:</p>
+  <ul>
+    <li> A description of the module. </li>
+    <li> A summary of the classes defined by the module. </li>
+    <li> A summary of the functions defined by the module. </li>
+    <li> A summary of the variables defined by the module. </li>
+    <li> A detailed description of each function defined by the
+    module. </li>
+    <li> A detailed description of each variable defined by the
+    module. </li>
+  </ul>
+  
+  <p>Each <strong>Class Documentation</strong> page contains: </p>
+  <ul>
+    <li> A class inheritance diagram. </li>
+    <li> A list of known subclasses. </li>
+    <li> A description of the class. </li>
+    <li> A summary of the methods defined by the class. </li>
+    <li> A summary of the instance variables defined by the class. </li>
+    <li> A summary of the class (static) variables defined by the
+    class. </li> 
+    <li> A detailed description of each method defined by the
+    class. </li>
+    <li> A detailed description of each instance variable defined by the
+    class. </li> 
+    <li> A detailed description of each class (static) variable defined
+    by the class. </li> 
+  </ul>
+
+<h2> Project Documentation </h2>
+
+  <p> The <strong>Trees</strong> page contains the module and class hierarchies: </p>
+  <ul>
+    <li> The <em>module hierarchy</em> lists every package and module, with
+    modules grouped into packages.  At the top level, and within each
+    package, modules and sub-packages are listed alphabetically. </li>
+    <li> The <em>class hierarchy</em> lists every class, grouped by base
+    class.  If a class has more than one base class, then it will be
+    listed under each base class.  At the top level, and under each base
+    class, classes are listed alphabetically. </li>
+  </ul>
+  
+  <p> The <strong>Index</strong> page contains indices of terms and
+  identifiers: </p>
+  <ul>
+    <li> The <em>term index</em> lists every term indexed by any object's
+    documentation.  For each term, the index provides links to each
+    place where the term is indexed. </li>
+    <li> The <em>identifier index</em> lists the (short) name of every package,
+    module, class, method, function, variable, and parameter.  For each
+    identifier, the index provides a short description, and a link to
+    its documentation. </li>
+  </ul>
+
+<h2> The Table of Contents </h2>
+
+<p> The table of contents occupies the two frames on the left side of
+the window.  The upper-left frame displays the <em>project
+contents</em>, and the lower-left frame displays the <em>module
+contents</em>: </p>
+
+<table class="help summary" border="1" cellspacing="0" cellpadding="3">
+  <tr style="height: 30%">
+    <td align="center" style="font-size: small">
+       Project<br />Contents<hr />...</td>
+    <td align="center" style="font-size: small" rowspan="2" width="70%">
+      API<br />Documentation<br />Frame<br /><br /><br />
+    </td>
+  </tr>
+  <tr>
+    <td align="center" style="font-size: small">
+      Module<br />Contents<hr /> <br />...<br /> 
+    </td>
+  </tr>
+</table><br />
+
+<p> The <strong>project contents frame</strong> contains a list of all packages
+and modules that are defined by the project.  Clicking on an entry
+will display its contents in the module contents frame.  Clicking on a
+special entry, labeled "Everything," will display the contents of
+the entire project. </p>
+
+<p> The <strong>module contents frame</strong> contains a list of every
+submodule, class, type, exception, function, and variable defined by a
+module or package.  Clicking on an entry will display its
+documentation in the API documentation frame.  Clicking on the name of
+the module, at the top of the frame, will display the documentation
+for the module itself. </p>
+
+<p> The "<strong>frames</strong>" and "<strong>no frames</strong>" buttons below the top
+navigation bar can be used to control whether the table of contents is
+displayed or not. </p>
+
+<h2> The Navigation Bar </h2>
+
+<p> A navigation bar is located at the top and bottom of every page.
+It indicates what type of page you are currently viewing, and allows
+you to go to related pages.  The following table describes the labels
+on the navigation bar.  Note that not some labels (such as
+[Parent]) are not displayed on all pages. </p>
+
+<table class="summary" border="1" cellspacing="0" cellpadding="3" width="100%">
+<tr class="summary">
+  <th>Label</th>
+  <th>Highlighted when...</th>
+  <th>Links to...</th>
+</tr>
+  <tr><td valign="top"><strong>[Parent]</strong></td>
+      <td valign="top"><em>(never highlighted)</em></td>
+      <td valign="top"> the parent of the current package </td></tr>
+  <tr><td valign="top"><strong>[Package]</strong></td>
+      <td valign="top">viewing a package</td>
+      <td valign="top">the package containing the current object
+      </td></tr>
+  <tr><td valign="top"><strong>[Module]</strong></td>
+      <td valign="top">viewing a module</td>
+      <td valign="top">the module containing the current object
+      </td></tr> 
+  <tr><td valign="top"><strong>[Class]</strong></td>
+      <td valign="top">viewing a class </td>
+      <td valign="top">the class containing the current object</td></tr>
+  <tr><td valign="top"><strong>[Trees]</strong></td>
+      <td valign="top">viewing the trees page</td>
+      <td valign="top"> the trees page </td></tr>
+  <tr><td valign="top"><strong>[Index]</strong></td>
+      <td valign="top">viewing the index page</td>
+      <td valign="top"> the index page </td></tr>
+  <tr><td valign="top"><strong>[Help]</strong></td>
+      <td valign="top">viewing the help page</td>
+      <td valign="top"> the help page </td></tr>
+</table>
+
+<p> The "<strong>show private</strong>" and "<strong>hide private</strong>" buttons below
+the top navigation bar can be used to control whether documentation
+for private objects is displayed.  Private objects are usually defined
+as objects whose (short) names begin with a single underscore, but do
+not end with an underscore.  For example, "<code>_x</code>",
+"<code>__pprint</code>", and "<code>epydoc.epytext._tokenize</code>"
+are private objects; but "<code>re.sub</code>",
+"<code>__init__</code>", and "<code>type_</code>" are not.  However,
+if a module defines the "<code>__all__</code>" variable, then its
+contents are used to decide which objects are private. </p>
+
+<p> A timestamp below the bottom navigation bar indicates when each
+page was last updated. </p>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th bgcolor="#70b0f0" class="navbar-select"
+          >   Help   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/identifier-index.html b/doc/reference/html/identifier-index.html
new file mode 100644
index 0000000..fef51a3
--- /dev/null
+++ b/doc/reference/html/identifier-index.html
@@ -0,0 +1,3526 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>Identifier Index</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th bgcolor="#70b0f0" class="navbar-select"
+          >   Indices   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%"> </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="identifier-index.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<table border="0" width="100%">
+<tr valign="bottom"><td>
+<h1 class="epydoc">Identifier Index</h1>
+</td><td>
+[
+ <a href="#A">A</a>
+ <a href="#B">B</a>
+ <a href="#C">C</a>
+ <a href="#D">D</a>
+ <a href="#E">E</a>
+ <a href="#F">F</a>
+ <a href="#G">G</a>
+ <a href="#H">H</a>
+ <a href="#I">I</a>
+  J
+ <a href="#K">K</a>
+ <a href="#L">L</a>
+ <a href="#M">M</a>
+ <a href="#N">N</a>
+ <a href="#O">O</a>
+ <a href="#P">P</a>
+ <a href="#Q">Q</a>
+ <a href="#R">R</a>
+ <a href="#S">S</a>
+ <a href="#T">T</a>
+ <a href="#U">U</a>
+ <a href="#V">V</a>
+ <a href="#W">W</a>
+  X
+  Y
+  Z
+ <a href="#_">_</a>
+]
+</td></table>
+<table border="0" width="100%"><tr valign="top">
+<td valign="top" width="1%"><a name="A"><h2 class="epydoc">A</h2></a></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.Deprecated.Message-class.html#add">add()</a><br />
+<span class="index-where">(in <a href="VisionEgg.Deprecated.Message-class.html">Message</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController-class.html#angular_position_during_go">angular_position_during_go()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController-class.html">SpinningDrumExperimentMetaController</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.ParameterTypes-module.html#array_types">array_types</a><br />
+<span class="index-where">(in <a href="VisionEgg.ParameterTypes-module.html">VisionEgg.ParameterTypes</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.Daq.Device-class.html#add_channel">add_channel()</a><br />
+<span class="index-where">(in <a href="VisionEgg.Daq.Device-class.html">Device</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.ParameterTypes.AnyClass-class.html">AnyClass</a><br />
+<span class="index-where">(in <a href="VisionEgg.ParameterTypes-module.html">VisionEgg.ParameterTypes</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.Textures-module.html#array_types">array_types</a><br />
+<span class="index-where">(in <a href="VisionEgg.Textures-module.html">VisionEgg.Textures</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.DaqLPT.LPTDevice-class.html#add_channel">add_channel()</a><br />
+<span class="index-where">(in <a href="VisionEgg.DaqLPT.LPTDevice-class.html">LPTDevice</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.ParameterTypes.AnyClassMC-class.html">AnyClassMC</a><br />
+<span class="index-where">(in <a href="VisionEgg.ParameterTypes-module.html">VisionEgg.ParameterTypes</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.MoreStimuli.Arrow-class.html">Arrow</a><br />
+<span class="index-where">(in <a href="VisionEgg.MoreStimuli-module.html">VisionEgg.MoreStimuli</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.FlowControl.Presentation-class.html#add_controller">add_controller()</a><br />
+<span class="index-where">(in <a href="VisionEgg.FlowControl.Presentation-class.html">Presentation</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.ParameterTypes.AnyOf-class.html">AnyOf</a><br />
+<span class="index-where">(in <a href="VisionEgg.ParameterTypes-module.html">VisionEgg.ParameterTypes</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.ParameterTypes-module.html#assert_type">assert_type()</a><br />
+<span class="index-where">(in <a href="VisionEgg.ParameterTypes-module.html">VisionEgg.ParameterTypes</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroHelpers.PyroLocalDictController-class.html#add_controller">add_controller()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroHelpers.PyroLocalDictController-class.html">PyroLocalDictController</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.Core.ProjectionBaseClass-class.html#apply_to_gl">apply_to_gl()</a><br />
+<span class="index-where">(in <a href="VisionEgg.Core.ProjectionBaseClass-class.html">ProjectionBaseClass</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg-module.html#assert_type">assert_type()</a><br />
+<span class="index-where">(in <a href="VisionEgg-module.html">VisionEgg</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.Core-module.html#add_gl_assumption">add_gl_assumption()</a><br />
+<span class="index-where">(in <a href="VisionEgg.Core-module.html">VisionEgg.Core</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.Core.ProjectionBaseClass-class.html#apply_to_vertex">apply_to_vertex()</a><br />
+<span class="index-where">(in <a href="VisionEgg.Core.ProjectionBaseClass-class.html">ProjectionBaseClass</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.AST_ext-module.html">AST_ext</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps-module.html">VisionEgg.PyroApps</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.EPhysGUI.ScrollListFrame-class.html#add_new">add_new()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.EPhysGUI.ScrollListFrame-class.html">ScrollListFrame</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.Core.ProjectionBaseClass-class.html#apply_to_vertices">apply_to_vertices()</a><br />
+<span class="index-where">(in <a href="VisionEgg.Core.ProjectionBaseClass-class.html">ProjectionBaseClass</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.AST_ext.AST_Visitor-class.html">AST_Visitor</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.AST_ext-module.html">VisionEgg.PyroApps.AST_ext</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.EPhysGUI.Loop-class.html#advance">advance()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.EPhysGUI.Loop-class.html">Loop</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.GUI.AppWindow-class.html">AppWindow</a><br />
+<span class="index-where">(in <a href="VisionEgg.GUI-module.html">VisionEgg.GUI</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PlatformDependent-module.html#attempt_to_load_multitexturing">attempt_to_load_multitexturing()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PlatformDependent-module.html">VisionEgg.PlatformDependent</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.Gratings.AlphaGratingCommon-class.html">AlphaGratingCommon</a><br />
+<span class="index-where">(in <a href="VisionEgg.Gratings-module.html">VisionEgg.Gratings</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.EPhysGUI.AppWindow-class.html">AppWindow</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.EPhysGUI-module.html">VisionEgg.PyroApps.EPhysGUI</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html#az_decrease">az_decrease()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html">ScreenPositionControlFrame</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.Daq.Analog-class.html">Analog</a><br />
+<span class="index-where">(in <a href="VisionEgg.Daq-module.html">VisionEgg.Daq</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.GLTrace-module.html#arg_to_str">arg_to_str()</a><br />
+<span class="index-where">(in <a href="VisionEgg.GLTrace-module.html">VisionEgg.GLTrace</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html#az_increase">az_increase()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html">ScreenPositionControlFrame</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController-class.html#angular_position_between_go">angular_position_between_go()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController-class.html">SpinningDrumExperimentMetaController</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.Daq.Channel-class.html#arm_trigger">arm_trigger()</a><br />
+<span class="index-where">(in <a href="VisionEgg.Daq.Channel-class.html">Channel</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.SphereMap.AzElGrid-class.html">AzElGrid</a><br />
+<span class="index-where">(in <a href="VisionEgg.SphereMap-module.html">VisionEgg.SphereMap</a>)</font></td>
+</tr>
+</table>
+</td></tr>
+<td valign="top" width="1%"><a name="B"><h2 class="epydoc">B</h2></a></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.EPhysGUI.BarButton-class.html">BarButton</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.EPhysGUI-module.html">VisionEgg.PyroApps.EPhysGUI</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.FlowControl.ExecStringController-class.html#between_go_eval">between_go_eval()</a><br />
+<span class="index-where">(in <a href="VisionEgg.FlowControl.ExecStringController-class.html">ExecStringController</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.GLTrace-module.html#bitmask_names_by_value">bitmask_names_by_value</a><br />
+<span class="index-where">(in <a href="VisionEgg.GLTrace-module.html">VisionEgg.GLTrace</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.DaqKeyboard.KeyboardTriggerInController-class.html#between_go_eval">between_go_eval()</a><br />
+<span class="index-where">(in <a href="VisionEgg.DaqKeyboard.KeyboardTriggerInController-class.html">KeyboardTriggerInController</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.FlowControl.FunctionController-class.html#between_go_eval">between_go_eval()</a><br />
+<span class="index-where">(in <a href="VisionEgg.FlowControl.FunctionController-class.html">FunctionController</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.GLTrace-module.html#bitmasks_by_function">bitmasks_by_function</a><br />
+<span class="index-where">(in <a href="VisionEgg.GLTrace-module.html">VisionEgg.GLTrace</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.DaqLPT.LPTTriggerInController-class.html#between_go_eval">between_go_eval()</a><br />
+<span class="index-where">(in <a href="VisionEgg.DaqLPT.LPTTriggerInController-class.html">LPTTriggerInController</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroHelpers.PyroListenController-class.html#between_go_eval">between_go_eval()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroHelpers.PyroListenController-class.html">PyroListenController</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.EPhysGUI.LoopParamDialog-class.html#body">body()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.EPhysGUI.LoopParamDialog-class.html">LoopParamDialog</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.DaqLPT.LPTTriggerOutController-class.html#between_go_eval">between_go_eval()</a><br />
+<span class="index-where">(in <a href="VisionEgg.DaqLPT.LPTTriggerOutController-class.html">LPTTriggerOutController</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.ResponseControl.KeyboardResponseController-class.html#between_go_eval">between_go_eval()</a><br />
+<span class="index-where">(in <a href="VisionEgg.ResponseControl.KeyboardResponseController-class.html">KeyboardResponseController</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.ParameterTypes.Boolean-class.html">Boolean</a><br />
+<span class="index-where">(in <a href="VisionEgg.ParameterTypes-module.html">VisionEgg.ParameterTypes</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.FlowControl.ConstantController-class.html#between_go_eval">between_go_eval()</a><br />
+<span class="index-where">(in <a href="VisionEgg.FlowControl.ConstantController-class.html">ConstantController</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.ResponseControl.ResponseController-class.html#between_go_eval">between_go_eval()</a><br />
+<span class="index-where">(in <a href="VisionEgg.ResponseControl.ResponseController-class.html">ResponseController</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.ParameterTypes.BooleanMC-class.html">BooleanMC</a><br />
+<span class="index-where">(in <a href="VisionEgg.ParameterTypes-module.html">VisionEgg.ParameterTypes</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.FlowControl.Controller-class.html#between_go_eval">between_go_eval()</a><br />
+<span class="index-where">(in <a href="VisionEgg.FlowControl.Controller-class.html">Controller</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.TCPController.SocketListenController-class.html#between_go_eval">between_go_eval()</a><br />
+<span class="index-where">(in <a href="VisionEgg.TCPController.SocketListenController-class.html">SocketListenController</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.Daq.Buffered-class.html">Buffered</a><br />
+<span class="index-where">(in <a href="VisionEgg.Daq-module.html">VisionEgg.Daq</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.FlowControl.EncapsulatedController-class.html#between_go_eval">between_go_eval()</a><br />
+<span class="index-where">(in <a href="VisionEgg.FlowControl.EncapsulatedController-class.html">EncapsulatedController</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.FlowControl.Presentation-class.html#between_presentations">between_presentations()</a><br />
+<span class="index-where">(in <a href="VisionEgg.FlowControl.Presentation-class.html">Presentation</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.EPhysServer.EPhysServer-class.html#build_AST">build_AST()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.EPhysServer.EPhysServer-class.html">EPhysServer</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.FlowControl.EvalStringController-class.html#between_go_eval">between_go_eval()</a><br />
+<span class="index-where">(in <a href="VisionEgg.FlowControl.EvalStringController-class.html">EvalStringController</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.Text.BitmapText-class.html">BitmapText</a><br />
+<span class="index-where">(in <a href="VisionEgg.Text-module.html">VisionEgg.Text</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.qtlowlevel-module.html#ByteCount">ByteCount</a><br />
+<span class="index-where">(in <a href="VisionEgg.qtlowlevel-module.html">VisionEgg.qtlowlevel</a>)</font></td>
+</tr>
+</table>
+</td></tr>
+<td valign="top" width="1%"><a name="C"><h2 class="epydoc">C</h2></a></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.Gratings.AlphaGratingCommon-class.html#calculate_bit_depth_dependencies">calculate_bit_depth_dependencies()</a><br />
+<span class="index-where">(in <a href="VisionEgg.Gratings.AlphaGratingCommon-class.html">AlphaGratingCommon</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.Core.Screen-class.html#clear">clear()</a><br />
+<span class="index-where">(in <a href="VisionEgg.Core.Screen-class.html">Screen</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.Daq.SignalType-class.html#constant_parameters_and_defaults">constant_parameters_and_defaults</a><br />
+<span class="index-where">(in <a href="VisionEgg.Daq.SignalType-class.html">SignalType</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.Gratings.LuminanceGratingCommon-class.html#calculate_bit_depth_dependencies">calculate_bit_depth_dependencies()</a><br />
+<span class="index-where">(in <a href="VisionEgg.Gratings.LuminanceGratingCommon-class.html">LuminanceGratingCommon</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.EPhysGUI-module.html#client_list">client_list</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.EPhysGUI-module.html">VisionEgg.PyroApps.EPhysGUI</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.Dots.DotArea2D-class.html#constant_parameters_and_defaults">constant_parameters_and_defaults</a><br />
+<span class="index-where">(in <a href="VisionEgg.Dots.DotArea2D-class.html">DotArea2D</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.ParameterTypes.Callable-class.html">Callable</a><br />
+<span class="index-where">(in <a href="VisionEgg.ParameterTypes-module.html">VisionEgg.ParameterTypes</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.Core.ProjectionBaseClass-class.html#clip_2_norm_device">clip_2_norm_device()</a><br />
+<span class="index-where">(in <a href="VisionEgg.Core.ProjectionBaseClass-class.html">ProjectionBaseClass</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.SphereMap.AzElGrid-class.html#constant_parameters_and_defaults">constant_parameters_and_defaults</a><br />
+<span class="index-where">(in <a href="VisionEgg.SphereMap.AzElGrid-class.html">AzElGrid</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.ParameterTypes.CallableMC-class.html">CallableMC</a><br />
+<span class="index-where">(in <a href="VisionEgg.ParameterTypes-module.html">VisionEgg.ParameterTypes</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.Core.Viewport-class.html#clip_2_window">clip_2_window()</a><br />
+<span class="index-where">(in <a href="VisionEgg.Core.Viewport-class.html">Viewport</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.Text.Text-class.html#constant_parameters_and_defaults">constant_parameters_and_defaults</a><br />
+<span class="index-where">(in <a href="VisionEgg.Text.Text-class.html">Text</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.ScreenPositionGUI.CallbackEntry-class.html">CallbackEntry</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.ScreenPositionGUI-module.html">VisionEgg.PyroApps.ScreenPositionGUI</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.Core.Screen-class.html#close">close()</a><br />
+<span class="index-where">(in <a href="VisionEgg.Core.Screen-class.html">Screen</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.Textures.FixationCross-class.html#constant_parameters_and_defaults">constant_parameters_and_defaults</a><br />
+<span class="index-where">(in <a href="VisionEgg.Textures.FixationCross-class.html">FixationCross</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController-class.html#center_between_go">center_between_go()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController-class.html">TargetExperimentMetaController</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame-class.html">ColorCalControlFrame</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.ColorCalGUI-module.html">VisionEgg.PyroApps.ColorCalGUI</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.Textures.Mask2D-class.html#constant_parameters_and_defaults">constant_parameters_and_defaults</a><br />
+<span class="index-where">(in <a href="VisionEgg.Textures.Mask2D-class.html">Mask2D</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController-class.html#center_during_go">center_during_go()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController-class.html">TargetExperimentMetaController</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.ColorCalGUI-module.html">ColorCalGUI</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps-module.html">VisionEgg.PyroApps</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.Textures.TextureStimulusBaseClass-class.html#constant_parameters_and_defaults">constant_parameters_and_defaults</a><br />
+<span class="index-where">(in <a href="VisionEgg.Textures.TextureStimulusBaseClass-class.html">TextureStimulusBaseClass</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.qtlowlevel-module.html#CFAllocatorRef">CFAllocatorRef</a><br />
+<span class="index-where">(in <a href="VisionEgg.qtlowlevel-module.html">VisionEgg.qtlowlevel</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController-class.html">ColorCalMetaController</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.ColorCalServer-module.html">VisionEgg.PyroApps.ColorCalServer</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.WrappedText.WrappedText-class.html#constant_parameters_and_defaults">constant_parameters_and_defaults</a><br />
+<span class="index-where">(in <a href="VisionEgg.WrappedText.WrappedText-class.html">WrappedText</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.qtlowlevel-module.html#CFIndex">CFIndex</a><br />
+<span class="index-where">(in <a href="VisionEgg.qtlowlevel-module.html">VisionEgg.qtlowlevel</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.ColorCalGUI.ColorCalMetaParameters-class.html">ColorCalMetaParameters</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.ColorCalGUI-module.html">VisionEgg.PyroApps.ColorCalGUI</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.FlowControl.ConstantController-class.html">ConstantController</a><br />
+<span class="index-where">(in <a href="VisionEgg.FlowControl-module.html">VisionEgg.FlowControl</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.qtlowlevel-module.html#CFStringCreateWithCharacters">CFStringCreateWithCharacters</a><br />
+<span class="index-where">(in <a href="VisionEgg.qtlowlevel-module.html">VisionEgg.qtlowlevel</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.ColorCalServer-module.html">ColorCalServer</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps-module.html">VisionEgg.PyroApps</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase-class.html">ContainedObjectBase</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.EPhysGUI-module.html">VisionEgg.PyroApps.EPhysGUI</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.qtlowlevel-module.html#CFStringCreateWithCString">CFStringCreateWithCString</a><br />
+<span class="index-where">(in <a href="VisionEgg.qtlowlevel-module.html">VisionEgg.qtlowlevel</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.Configuration.Config-class.html">Config</a><br />
+<span class="index-where">(in <a href="VisionEgg.Configuration-module.html">VisionEgg.Configuration</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.FlowControl.Controller-class.html">Controller</a><br />
+<span class="index-where">(in <a href="VisionEgg.FlowControl-module.html">VisionEgg.FlowControl</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.qtlowlevel-module.html#CFStringEncoding">CFStringEncoding</a><br />
+<span class="index-where">(in <a href="VisionEgg.qtlowlevel-module.html">VisionEgg.qtlowlevel</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg-module.html#config">config</a><br />
+<span class="index-where">(in <a href="VisionEgg-module.html">VisionEgg</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.Textures-module.html#convert_to_numpy_if_array">convert_to_numpy_if_array()</a><br />
+<span class="index-where">(in <a href="VisionEgg.Textures-module.html">VisionEgg.Textures</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.qtlowlevel-module.html#CFStringGetCString">CFStringGetCString</a><br />
+<span class="index-where">(in <a href="VisionEgg.qtlowlevel-module.html">VisionEgg.qtlowlevel</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.Configuration-module.html">Configuration</a><br />
+<span class="index-where">(in <a href="VisionEgg-module.html">VisionEgg</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.Core-module.html">Core</a><br />
+<span class="index-where">(in <a href="VisionEgg-module.html">VisionEgg</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.qtlowlevel-module.html#CFStringGetCStringPtr">CFStringGetCStringPtr</a><br />
+<span class="index-where">(in <a href="VisionEgg.qtlowlevel-module.html">VisionEgg.qtlowlevel</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#connect">connect()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html">StimulusControlFrame</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.Core.Screen-class.html#create_default">create_default()</a><br />
+<span class="index-where">(in <a href="VisionEgg.Core.Screen-class.html">Screen</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.qtlowlevel-module.html#CFStringRef">CFStringRef</a><br />
+<span class="index-where">(in <a href="VisionEgg.qtlowlevel-module.html">VisionEgg.qtlowlevel</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html#connect">connect()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html">ScreenPositionControlFrame</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroHelpers.PyroServer-class.html#create_listener_controller">create_listener_controller()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroHelpers.PyroServer-class.html">PyroServer</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.EPhysGUI.AppWindow-class.html#change_stimulus">change_stimulus()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.EPhysGUI.AppWindow-class.html">AppWindow</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroHelpers.PyroServer-class.html#connect">connect()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroHelpers.PyroServer-class.html">PyroServer</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.TCPController.TCPServer-class.html#create_listener_once_connected">create_listener_once_connected()</a><br />
+<span class="index-where">(in <a href="VisionEgg.TCPController.TCPServer-class.html">TCPServer</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.Daq.Channel-class.html">Channel</a><br />
+<span class="index-where">(in <a href="VisionEgg.Daq-module.html">VisionEgg.Daq</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.ClassWithParameters-class.html#constant_parameters_and_defaults">constant_parameters_and_defaults</a><br />
+<span class="index-where">(in <a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.TCPController.SocketListenController-class.html#create_tcp_controller">create_tcp_controller()</a><br />
+<span class="index-where">(in <a href="VisionEgg.TCPController.SocketListenController-class.html">SocketListenController</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.Daq.ChannelParameters-class.html">ChannelParameters</a><br />
+<span class="index-where">(in <a href="VisionEgg.Daq-module.html">VisionEgg.Daq</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.Core.Screen-class.html#constant_parameters_and_defaults">constant_parameters_and_defaults</a><br />
+<span class="index-where">(in <a href="VisionEgg.Core.Screen-class.html">Screen</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.MouseTargetServer-module.html#cross_product">cross_product()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.MouseTargetServer-module.html">VisionEgg.PyroApps.MouseTargetServer</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.qtlowlevel-module.html#CheckOSStatus">CheckOSStatus()</a><br />
+<span class="index-where">(in <a href="VisionEgg.qtlowlevel-module.html">VisionEgg.qtlowlevel</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.Daq.Analog-class.html#constant_parameters_and_defaults">constant_parameters_and_defaults</a><br />
+<span class="index-where">(in <a href="VisionEgg.Daq.Analog-class.html">Analog</a>)</font></td>
+<td width="33%" class="link-index"> </td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a><br />
+<span class="index-where">(in <a href="VisionEgg-module.html">VisionEgg</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.Daq.Channel-class.html#constant_parameters_and_defaults">constant_parameters_and_defaults</a><br />
+<span class="index-where">(in <a href="VisionEgg.Daq.Channel-class.html">Channel</a>)</font></td>
+<td width="33%" class="link-index"> </td>
+</tr>
+</table>
+</td></tr>
+<td valign="top" width="1%"><a name="D"><h2 class="epydoc">D</h2></a></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.Daq-module.html">Daq</a><br />
+<span class="index-where">(in <a href="VisionEgg-module.html">VisionEgg</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.Dots-module.html">Dots</a><br />
+<span class="index-where">(in <a href="VisionEgg-module.html">VisionEgg</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.Dots-module.html#draw_dots">draw_dots()</a><br />
+<span class="index-where">(in <a href="VisionEgg.Dots-module.html">VisionEgg.Dots</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.DaqKeyboard-module.html">DaqKeyboard</a><br />
+<span class="index-where">(in <a href="VisionEgg-module.html">VisionEgg</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.MouseTargetServer-module.html#down">down</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.MouseTargetServer-module.html">VisionEgg.PyroApps.MouseTargetServer</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.Textures.Mask2D-class.html#draw_masked_quad">draw_masked_quad()</a><br />
+<span class="index-where">(in <a href="VisionEgg.Textures.Mask2D-class.html">Mask2D</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.DaqLPT-module.html">DaqLPT</a><br />
+<span class="index-where">(in <a href="VisionEgg-module.html">VisionEgg</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.Core.FixationSpot-class.html#draw">draw()</a><br />
+<span class="index-where">(in <a href="VisionEgg.Core.FixationSpot-class.html">FixationSpot</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.Textures.Mask2D-class.html#draw_masked_quad_3d">draw_masked_quad_3d()</a><br />
+<span class="index-where">(in <a href="VisionEgg.Textures.Mask2D-class.html">Mask2D</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.Daq.DaqMode-class.html">DaqMode</a><br />
+<span class="index-where">(in <a href="VisionEgg.Daq-module.html">VisionEgg.Daq</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.Core.Stimulus-class.html#draw">draw()</a><br />
+<span class="index-where">(in <a href="VisionEgg.Core.Stimulus-class.html">Stimulus</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.DropinGUI.DropinControlFrame-class.html">DropinControlFrame</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.DropinGUI-module.html">VisionEgg.PyroApps.DropinGUI</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.darwin_getrefresh-module.html">darwin_getrefresh</a><br />
+<span class="index-where">(in <a href="VisionEgg-module.html">VisionEgg</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.Core.Viewport-class.html#draw">draw()</a><br />
+<span class="index-where">(in <a href="VisionEgg.Core.Viewport-class.html">Viewport</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.DropinGUI-module.html">DropinGUI</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps-module.html">VisionEgg.PyroApps</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.GUI.GraphicsConfigurationWindow-class.html#darwin_maxpriority_tune">darwin_maxpriority_tune()</a><br />
+<span class="index-where">(in <a href="VisionEgg.GUI.GraphicsConfigurationWindow-class.html">GraphicsConfigurationWindow</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.Dots.DotArea2D-class.html#draw">draw()</a><br />
+<span class="index-where">(in <a href="VisionEgg.Dots.DotArea2D-class.html">DotArea2D</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.DropinServer.DropinMetaController-class.html">DropinMetaController</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.DropinServer-module.html">VisionEgg.PyroApps.DropinServer</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.Configuration-module.html#defaults">defaults</a><br />
+<span class="index-where">(in <a href="VisionEgg.Configuration-module.html">VisionEgg.Configuration</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.Gratings.SinGrating2D-class.html#draw">draw()</a><br />
+<span class="index-where">(in <a href="VisionEgg.Gratings.SinGrating2D-class.html">SinGrating2D</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.DropinGUI.DropinMetaParameters-class.html">DropinMetaParameters</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.DropinGUI-module.html">VisionEgg.PyroApps.DropinGUI</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.EPhysGUI.ScrollListFrame-class.html#delegate_hscroll">delegate_hscroll()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.EPhysGUI.ScrollListFrame-class.html">ScrollListFrame</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.Gratings.SinGrating3D-class.html#draw">draw()</a><br />
+<span class="index-where">(in <a href="VisionEgg.Gratings.SinGrating3D-class.html">SinGrating3D</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.DropinServer-module.html">DropinServer</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps-module.html">VisionEgg.PyroApps</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.Deprecated-module.html">Deprecated</a><br />
+<span class="index-where">(in <a href="VisionEgg-module.html">VisionEgg</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.MoreStimuli.Arrow-class.html#draw">draw()</a><br />
+<span class="index-where">(in <a href="VisionEgg.MoreStimuli.Arrow-class.html">Arrow</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.DaqKeyboard.KeyboardTriggerInController-class.html#during_go_eval">during_go_eval()</a><br />
+<span class="index-where">(in <a href="VisionEgg.DaqKeyboard.KeyboardTriggerInController-class.html">KeyboardTriggerInController</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.ParameterDefinition-class.html#DEPRECATED">DEPRECATED</a><br />
+<span class="index-where">(in <a href="VisionEgg.ParameterDefinition-class.html">ParameterDefinition</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.MoreStimuli.FilledCircle-class.html#draw">draw()</a><br />
+<span class="index-where">(in <a href="VisionEgg.MoreStimuli.FilledCircle-class.html">FilledCircle</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.DaqLPT.LPTTriggerInController-class.html#during_go_eval">during_go_eval()</a><br />
+<span class="index-where">(in <a href="VisionEgg.DaqLPT.LPTTriggerInController-class.html">LPTTriggerInController</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.Deprecated.Message-class.html#DEPRECATION">DEPRECATION</a><br />
+<span class="index-where">(in <a href="VisionEgg.Deprecated.Message-class.html">Message</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.MoreStimuli.Rectangle3D-class.html#draw">draw()</a><br />
+<span class="index-where">(in <a href="VisionEgg.MoreStimuli.Rectangle3D-class.html">Rectangle3D</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.DaqLPT.LPTTriggerOutController-class.html#during_go_eval">during_go_eval()</a><br />
+<span class="index-where">(in <a href="VisionEgg.DaqLPT.LPTTriggerOutController-class.html">LPTTriggerOutController</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.GUI.ToplevelDialog-class.html#destroy">destroy()</a><br />
+<span class="index-where">(in <a href="VisionEgg.GUI.ToplevelDialog-class.html">ToplevelDialog</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.MoreStimuli.Target2D-class.html#draw">draw()</a><br />
+<span class="index-where">(in <a href="VisionEgg.MoreStimuli.Target2D-class.html">Target2D</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.FlowControl.ConstantController-class.html#during_go_eval">during_go_eval()</a><br />
+<span class="index-where">(in <a href="VisionEgg.FlowControl.ConstantController-class.html">ConstantController</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.EPhysGUI.AppWindow-class.html#destroy">destroy()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.EPhysGUI.AppWindow-class.html">AppWindow</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.SphereMap.AzElGrid-class.html#draw">draw()</a><br />
+<span class="index-where">(in <a href="VisionEgg.SphereMap.AzElGrid-class.html">AzElGrid</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.FlowControl.Controller-class.html#during_go_eval">during_go_eval()</a><br />
+<span class="index-where">(in <a href="VisionEgg.FlowControl.Controller-class.html">Controller</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.EPhysGUI.LoopParamDialog-class.html#destroy">destroy()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.EPhysGUI.LoopParamDialog-class.html">LoopParamDialog</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.SphereMap.SphereGrating-class.html#draw">draw()</a><br />
+<span class="index-where">(in <a href="VisionEgg.SphereMap.SphereGrating-class.html">SphereGrating</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.FlowControl.EncapsulatedController-class.html#during_go_eval">during_go_eval()</a><br />
+<span class="index-where">(in <a href="VisionEgg.FlowControl.EncapsulatedController-class.html">EncapsulatedController</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.Daq.Device-class.html">Device</a><br />
+<span class="index-where">(in <a href="VisionEgg.Daq-module.html">VisionEgg.Daq</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.SphereMap.SphereMap-class.html#draw">draw()</a><br />
+<span class="index-where">(in <a href="VisionEgg.SphereMap.SphereMap-class.html">SphereMap</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.FlowControl.EvalStringController-class.html#during_go_eval">during_go_eval()</a><br />
+<span class="index-where">(in <a href="VisionEgg.FlowControl.EvalStringController-class.html">EvalStringController</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.Daq.Digital-class.html">Digital</a><br />
+<span class="index-where">(in <a href="VisionEgg.Daq-module.html">VisionEgg.Daq</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.SphereMap.SphereWindow-class.html#draw">draw()</a><br />
+<span class="index-where">(in <a href="VisionEgg.SphereMap.SphereWindow-class.html">SphereWindow</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.FlowControl.ExecStringController-class.html#during_go_eval">during_go_eval()</a><br />
+<span class="index-where">(in <a href="VisionEgg.FlowControl.ExecStringController-class.html">ExecStringController</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroHelpers.PyroServer-class.html#disconnect">disconnect()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroHelpers.PyroServer-class.html">PyroServer</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.Text.BitmapText-class.html#draw">draw()</a><br />
+<span class="index-where">(in <a href="VisionEgg.Text.BitmapText-class.html">BitmapText</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.FlowControl.FunctionController-class.html#during_go_eval">during_go_eval()</a><br />
+<span class="index-where">(in <a href="VisionEgg.FlowControl.FunctionController-class.html">FunctionController</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.EPhysGUI.ImageSequenceLauncher-class.html#do_it">do_it()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.EPhysGUI.ImageSequenceLauncher-class.html">ImageSequenceLauncher</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.Text.StrokeText-class.html#draw">draw()</a><br />
+<span class="index-where">(in <a href="VisionEgg.Text.StrokeText-class.html">StrokeText</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.MouseTargetServer.MousePositionController-class.html#during_go_eval">during_go_eval()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.MouseTargetServer.MousePositionController-class.html">MousePositionController</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.EPhysGUI.AppWindow-class.html#do_loops">do_loops()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.EPhysGUI.AppWindow-class.html">AppWindow</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.Text.Text-class.html#draw">draw()</a><br />
+<span class="index-where">(in <a href="VisionEgg.Text.Text-class.html">Text</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.MouseTargetServer.TargetOrientationController-class.html#during_go_eval">during_go_eval()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.MouseTargetServer.TargetOrientationController-class.html">TargetOrientationController</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.EPhysGUI.AppWindow-class.html#do_single_trial">do_single_trial()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.EPhysGUI.AppWindow-class.html">AppWindow</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.Textures.FixationCross-class.html#draw">draw()</a><br />
+<span class="index-where">(in <a href="VisionEgg.Textures.FixationCross-class.html">FixationCross</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.MouseTargetServer.TargetPositionController-class.html#during_go_eval">during_go_eval()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.MouseTargetServer.TargetPositionController-class.html">TargetPositionController</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.EPhysGUI.AppWindow-class.html#do_single_trial_post">do_single_trial_post()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.EPhysGUI.AppWindow-class.html">AppWindow</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.Textures.SpinningDrum-class.html#draw">draw()</a><br />
+<span class="index-where">(in <a href="VisionEgg.Textures.SpinningDrum-class.html">SpinningDrum</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroHelpers.PyroListenController-class.html#during_go_eval">during_go_eval()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroHelpers.PyroListenController-class.html">PyroListenController</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.EPhysGUI.AppWindow-class.html#do_single_trial_pre">do_single_trial_pre()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.EPhysGUI.AppWindow-class.html">AppWindow</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.Textures.TextureStimulus-class.html#draw">draw()</a><br />
+<span class="index-where">(in <a href="VisionEgg.Textures.TextureStimulus-class.html">TextureStimulus</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.ResponseControl.KeyboardResponseController-class.html#during_go_eval">during_go_eval()</a><br />
+<span class="index-where">(in <a href="VisionEgg.ResponseControl.KeyboardResponseController-class.html">KeyboardResponseController</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.EPhysGUI.AppWindow-class.html#do_single_trial_work">do_single_trial_work()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.EPhysGUI.AppWindow-class.html">AppWindow</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.Textures.TextureStimulus3D-class.html#draw">draw()</a><br />
+<span class="index-where">(in <a href="VisionEgg.Textures.TextureStimulus3D-class.html">TextureStimulus3D</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.ResponseControl.ResponseController-class.html#during_go_eval">during_go_eval()</a><br />
+<span class="index-where">(in <a href="VisionEgg.ResponseControl.ResponseController-class.html">ResponseController</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.Dots.DotArea2D-class.html">DotArea2D</a><br />
+<span class="index-where">(in <a href="VisionEgg.Dots-module.html">VisionEgg.Dots</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.WrappedText.WrappedText-class.html#draw">draw()</a><br />
+<span class="index-where">(in <a href="VisionEgg.WrappedText.WrappedText-class.html">WrappedText</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.TCPController.SocketListenController-class.html#during_go_eval">during_go_eval()</a><br />
+<span class="index-where">(in <a href="VisionEgg.TCPController.SocketListenController-class.html">SocketListenController</a>)</font></td>
+</tr>
+</table>
+</td></tr>
+<td valign="top" width="1%"><a name="E"><h2 class="epydoc">E</h2></a></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.EPhysGUI.ScrollListFrame-class.html#edit_contained_object">edit_contained_object()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.EPhysGUI.ScrollListFrame-class.html">ScrollListFrame</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.EPhysServer-module.html">EPhysServer</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps-module.html">VisionEgg.PyroApps</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.FlowControl.ExecStringController-class.html">ExecStringController</a><br />
+<span class="index-where">(in <a href="VisionEgg.FlowControl-module.html">VisionEgg.FlowControl</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.EPhysGUI.ScrollListFrame-class.html#edit_selected">edit_selected()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.EPhysGUI.ScrollListFrame-class.html">ScrollListFrame</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.EPhysServer.EPhysServer-class.html">EPhysServer</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.EPhysServer-module.html">VisionEgg.PyroApps.EPhysServer</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.FlowControl.Presentation-class.html#export_movie_go">export_movie_go()</a><br />
+<span class="index-where">(in <a href="VisionEgg.FlowControl.Presentation-class.html">Presentation</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html#el_decrease">el_decrease()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html">ScreenPositionControlFrame</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.Deprecated.Message-class.html#ERROR">ERROR</a><br />
+<span class="index-where">(in <a href="VisionEgg.Deprecated.Message-class.html">Message</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.Configuration-module.html#extra_darwin_defaults">extra_darwin_defaults</a><br />
+<span class="index-where">(in <a href="VisionEgg.Configuration-module.html">VisionEgg.Configuration</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html#el_increase">el_increase()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html">ScreenPositionControlFrame</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.FlowControl.EvalStringController-class.html">EvalStringController</a><br />
+<span class="index-where">(in <a href="VisionEgg.FlowControl-module.html">VisionEgg.FlowControl</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.AST_ext-module.html#extract_from_AST">extract_from_AST()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.AST_ext-module.html">VisionEgg.PyroApps.AST_ext</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.FlowControl.EncapsulatedController-class.html">EncapsulatedController</a><br />
+<span class="index-where">(in <a href="VisionEgg.FlowControl-module.html">VisionEgg.FlowControl</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.FlowControl.Controller-class.html#evaluate_now">evaluate_now()</a><br />
+<span class="index-where">(in <a href="VisionEgg.FlowControl.Controller-class.html">Controller</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.Core.ProjectionBaseClass-class.html#eye_2_clip">eye_2_clip()</a><br />
+<span class="index-where">(in <a href="VisionEgg.Core.ProjectionBaseClass-class.html">ProjectionBaseClass</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.qtlowlevel-module.html#EnterMovies">EnterMovies</a><br />
+<span class="index-where">(in <a href="VisionEgg.qtlowlevel-module.html">VisionEgg.qtlowlevel</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.FlowControl.Controller-class.html#EVERY_FRAME">EVERY_FRAME</a><br />
+<span class="index-where">(in <a href="VisionEgg.FlowControl.Controller-class.html">Controller</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.Core.ProjectionBaseClass-class.html#eye_2_norm_device">eye_2_norm_device()</a><br />
+<span class="index-where">(in <a href="VisionEgg.Core.ProjectionBaseClass-class.html">ProjectionBaseClass</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.EPhysGUI-module.html">EPhysGUI</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps-module.html">VisionEgg.PyroApps</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.FlowControl-module.html#EVERY_FRAME">EVERY_FRAME</a><br />
+<span class="index-where">(in <a href="VisionEgg.FlowControl-module.html">VisionEgg.FlowControl</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.Core.Viewport-class.html#eye_2_window">eye_2_window()</a><br />
+<span class="index-where">(in <a href="VisionEgg.Core.Viewport-class.html">Viewport</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.EPhysGUIUtils-module.html">EPhysGUIUtils</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps-module.html">VisionEgg.PyroApps</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.EPhysServer.EPhysServer-class.html#exec_AST">exec_AST()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.EPhysServer.EPhysServer-class.html">EPhysServer</a>)</font></td>
+<td width="33%" class="link-index"> </td>
+</tr>
+</table>
+</td></tr>
+<td valign="top" width="1%"><a name="F"><h2 class="epydoc">F</h2></a></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.Deprecated.Message-class.html#FATAL">FATAL</a><br />
+<span class="index-where">(in <a href="VisionEgg.Deprecated.Message-class.html">Message</a>)</font></td>
+<td width="33%" class="link-index"><a href="float-class.html">float</a></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html#frustum_down">frustum_down()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html">ScreenPositionControlFrame</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.MoreStimuli.FilledCircle-class.html">FilledCircle</a><br />
+<span class="index-where">(in <a href="VisionEgg.MoreStimuli-module.html">VisionEgg.MoreStimuli</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.FlowControl-module.html">FlowControl</a><br />
+<span class="index-where">(in <a href="VisionEgg-module.html">VisionEgg</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html#frustum_left">frustum_left()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html">ScreenPositionControlFrame</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.EPhysServer.EPhysServer-class.html#first_connection">first_connection()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.EPhysServer.EPhysServer-class.html">EPhysServer</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.Deprecated.Message-class.html#format_string">format_string()</a><br />
+<span class="index-where">(in <a href="VisionEgg.Deprecated.Message-class.html">Message</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html#frustum_narrower">frustum_narrower()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html">ScreenPositionControlFrame</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.Textures.FixationCross-class.html">FixationCross</a><br />
+<span class="index-where">(in <a href="VisionEgg.Textures-module.html">VisionEgg.Textures</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.GUI.GraphicsConfigurationWindow-class.html#format_string">format_string()</a><br />
+<span class="index-where">(in <a href="VisionEgg.GUI.GraphicsConfigurationWindow-class.html">GraphicsConfigurationWindow</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html#frustum_right">frustum_right()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html">ScreenPositionControlFrame</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.Core.FixationSpot-class.html">FixationSpot</a><br />
+<span class="index-where">(in <a href="VisionEgg.Core-module.html">VisionEgg.Core</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.qtlowlevel-module.html#FOUR_CHAR_CODE">FOUR_CHAR_CODE()</a><br />
+<span class="index-where">(in <a href="VisionEgg.qtlowlevel-module.html">VisionEgg.qtlowlevel</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html#frustum_shorter">frustum_shorter()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html">ScreenPositionControlFrame</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.FlowControl.Controller-class.html#flag_dictionary">flag_dictionary</a><br />
+<span class="index-where">(in <a href="VisionEgg.FlowControl.Controller-class.html">Controller</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.qtlowlevel-module.html#FourCharCode">FourCharCode</a><br />
+<span class="index-where">(in <a href="VisionEgg.qtlowlevel-module.html">VisionEgg.qtlowlevel</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html#frustum_taller">frustum_taller()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html">ScreenPositionControlFrame</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame-class.html">FlatGratingControlFrame</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.FlatGratingGUI-module.html">VisionEgg.PyroApps.FlatGratingGUI</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.FlowControl.Controller-class.html#FRAMES_ABSOLUTE">FRAMES_ABSOLUTE</a><br />
+<span class="index-where">(in <a href="VisionEgg.FlowControl.Controller-class.html">Controller</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html#frustum_up">frustum_up()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html">ScreenPositionControlFrame</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController-class.html">FlatGratingExperimentMetaController</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.FlatGratingServer-module.html">VisionEgg.PyroApps.FlatGratingServer</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.FlowControl-module.html#FRAMES_ABSOLUTE">FRAMES_ABSOLUTE</a><br />
+<span class="index-where">(in <a href="VisionEgg.FlowControl-module.html">VisionEgg.FlowControl</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html#frustum_wider">frustum_wider()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html">ScreenPositionControlFrame</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.FlatGratingGUI-module.html">FlatGratingGUI</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps-module.html">VisionEgg.PyroApps</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.FlowControl.Controller-class.html#FRAMES_SINCE_GO">FRAMES_SINCE_GO</a><br />
+<span class="index-where">(in <a href="VisionEgg.FlowControl.Controller-class.html">Controller</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.qtlowlevel-module.html#FSSpec">FSSpec</a><br />
+<span class="index-where">(in <a href="VisionEgg.qtlowlevel-module.html">VisionEgg.qtlowlevel</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.FlatGratingGUI.FlatGratingMetaParameters-class.html">FlatGratingMetaParameters</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.FlatGratingGUI-module.html">VisionEgg.PyroApps.FlatGratingGUI</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.FlowControl-module.html#FRAMES_SINCE_GO">FRAMES_SINCE_GO</a><br />
+<span class="index-where">(in <a href="VisionEgg.FlowControl-module.html">VisionEgg.FlowControl</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.Daq.Functionality-class.html">Functionality</a><br />
+<span class="index-where">(in <a href="VisionEgg.Daq-module.html">VisionEgg.Daq</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.FlatGratingServer-module.html">FlatGratingServer</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps-module.html">VisionEgg.PyroApps</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.Core.FrameTimer-class.html">FrameTimer</a><br />
+<span class="index-where">(in <a href="VisionEgg.Core-module.html">VisionEgg.Core</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.FlowControl.FunctionController-class.html">FunctionController</a><br />
+<span class="index-where">(in <a href="VisionEgg.FlowControl-module.html">VisionEgg.FlowControl</a>)</font></td>
+</tr>
+</table>
+</td></tr>
+<td valign="top" width="1%"><a name="G"><h2 class="epydoc">G</h2></a></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.EPhysGUI.GammaFrame-class.html">GammaFrame</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.EPhysGUI-module.html">VisionEgg.PyroApps.EPhysGUI</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.ColorCalServer-module.html#get_meta_controller_class">get_meta_controller_class()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.ColorCalServer-module.html">VisionEgg.PyroApps.ColorCalServer</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.DaqKeyboard.KeyboardInput-class.html#get_string_data">get_string_data()</a><br />
+<span class="index-where">(in <a href="VisionEgg.DaqKeyboard.KeyboardInput-class.html">KeyboardInput</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.AST_ext-module.html#gen_assign_val_subtree">gen_assign_val_subtree()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.AST_ext-module.html">VisionEgg.PyroApps.AST_ext</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.DropinServer-module.html#get_meta_controller_class">get_meta_controller_class()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.DropinServer-module.html">VisionEgg.PyroApps.DropinServer</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.MouseTargetServer-module.html#get_target_size">get_target_size()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.MouseTargetServer-module.html">VisionEgg.PyroApps.MouseTargetServer</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.DropinGUI.DropinControlFrame-class.html#gen_var_widgets">gen_var_widgets()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.DropinGUI.DropinControlFrame-class.html">DropinControlFrame</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.FlatGratingServer-module.html#get_meta_controller_class">get_meta_controller_class()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.FlatGratingServer-module.html">VisionEgg.PyroApps.FlatGratingServer</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.QuickTime.MovieTexture-class.html#get_texels_as_image">get_texels_as_image()</a><br />
+<span class="index-where">(in <a href="VisionEgg.QuickTime.MovieTexture-class.html">MovieTexture</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroClient.PyroClient-class.html#get">get()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroClient.PyroClient-class.html">PyroClient</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.GridServer-module.html#get_meta_controller_class">get_meta_controller_class()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.GridServer-module.html">VisionEgg.PyroApps.GridServer</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.Textures.Texture-class.html#get_texels_as_image">get_texels_as_image()</a><br />
+<span class="index-where">(in <a href="VisionEgg.Textures.Texture-class.html">Texture</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.ParameterTypes-module.html#get_all_classes_list">get_all_classes_list()</a><br />
+<span class="index-where">(in <a href="VisionEgg.ParameterTypes-module.html">VisionEgg.ParameterTypes</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.MouseTargetServer-module.html#get_meta_controller_class">get_meta_controller_class()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.MouseTargetServer-module.html">VisionEgg.PyroApps.MouseTargetServer</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.Textures.Texture-class.html#get_texture_object">get_texture_object()</a><br />
+<span class="index-where">(in <a href="VisionEgg.Textures.Texture-class.html">Texture</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.Core.FrameTimer-class.html#get_all_frametimes">get_all_frametimes()</a><br />
+<span class="index-where">(in <a href="VisionEgg.Core.FrameTimer-class.html">FrameTimer</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.SphereGratingServer-module.html#get_meta_controller_class">get_meta_controller_class()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.SphereGratingServer-module.html">VisionEgg.PyroApps.SphereGratingServer</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.ResponseControl.ResponseController-class.html#get_time_first_response_since_go">get_time_first_response_since_go()</a><br />
+<span class="index-where">(in <a href="VisionEgg.ResponseControl.ResponseController-class.html">ResponseController</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.Core.FrameTimer-class.html#get_average_ifi_sec">get_average_ifi_sec()</a><br />
+<span class="index-where">(in <a href="VisionEgg.Core.FrameTimer-class.html">FrameTimer</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.SpinningDrumServer-module.html#get_meta_controller_class">get_meta_controller_class()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.SpinningDrumServer-module.html">VisionEgg.PyroApps.SpinningDrumServer</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.ResponseControl.ResponseController-class.html#get_time_last_response_since_go">get_time_last_response_since_go()</a><br />
+<span class="index-where">(in <a href="VisionEgg.ResponseControl.ResponseController-class.html">ResponseController</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html#get_az_el">get_az_el()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html">ScreenPositionControlFrame</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.TargetServer-module.html#get_meta_controller_class">get_meta_controller_class()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.TargetServer-module.html">VisionEgg.PyroApps.TargetServer</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.ResponseControl.ResponseController-class.html#get_time_responses_since_go">get_time_responses_since_go()</a><br />
+<span class="index-where">(in <a href="VisionEgg.ResponseControl.ResponseController-class.html">ResponseController</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.FlowControl.EvalStringController-class.html#get_between_go_eval_string">get_between_go_eval_string()</a><br />
+<span class="index-where">(in <a href="VisionEgg.FlowControl.EvalStringController-class.html">EvalStringController</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.ColorCalServer-module.html#get_meta_controller_stimkey">get_meta_controller_stimkey()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.ColorCalServer-module.html">VisionEgg.PyroApps.ColorCalServer</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.ParameterTypes-module.html#get_type">get_type()</a><br />
+<span class="index-where">(in <a href="VisionEgg.ParameterTypes-module.html">VisionEgg.ParameterTypes</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.FlowControl.ExecStringController-class.html#get_between_go_exec_string">get_between_go_exec_string()</a><br />
+<span class="index-where">(in <a href="VisionEgg.FlowControl.ExecStringController-class.html">ExecStringController</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.DropinServer-module.html#get_meta_controller_stimkey">get_meta_controller_stimkey()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.DropinServer-module.html">VisionEgg.PyroApps.DropinServer</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html#get_type">get_type()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html">ScreenPositionControlFrame</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.FlowControl.ConstantController-class.html#get_between_go_value">get_between_go_value()</a><br />
+<span class="index-where">(in <a href="VisionEgg.FlowControl.ConstantController-class.html">ConstantController</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.FlatGratingServer-module.html#get_meta_controller_stimkey">get_meta_controller_stimkey()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.FlatGratingServer-module.html">VisionEgg.PyroApps.FlatGratingServer</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg-module.html#get_type">get_type()</a><br />
+<span class="index-where">(in <a href="VisionEgg-module.html">VisionEgg</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase-class.html#get_contained">get_contained()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase-class.html">ContainedObjectBase</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.GridServer-module.html#get_meta_controller_stimkey">get_meta_controller_stimkey()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.GridServer-module.html">VisionEgg.PyroApps.GridServer</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html#get_xyz">get_xyz()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html">ScreenPositionControlFrame</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.ColorCalGUI-module.html#get_control_list">get_control_list()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.ColorCalGUI-module.html">VisionEgg.PyroApps.ColorCalGUI</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.MouseTargetServer-module.html#get_meta_controller_stimkey">get_meta_controller_stimkey()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.MouseTargetServer-module.html">VisionEgg.PyroApps.MouseTargetServer</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.qtlowlevel-module.html#GetErrorString">GetErrorString()</a><br />
+<span class="index-where">(in <a href="VisionEgg.qtlowlevel-module.html">VisionEgg.qtlowlevel</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.DropinGUI-module.html#get_control_list">get_control_list()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.DropinGUI-module.html">VisionEgg.PyroApps.DropinGUI</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.SphereGratingServer-module.html#get_meta_controller_stimkey">get_meta_controller_stimkey()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.SphereGratingServer-module.html">VisionEgg.PyroApps.SphereGratingServer</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.VarTypes-module.html#getID">getID()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.VarTypes-module.html">VisionEgg.PyroApps.VarTypes</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.FlatGratingGUI-module.html#get_control_list">get_control_list()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.FlatGratingGUI-module.html">VisionEgg.PyroApps.FlatGratingGUI</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.SpinningDrumServer-module.html#get_meta_controller_stimkey">get_meta_controller_stimkey()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.SpinningDrumServer-module.html">VisionEgg.PyroApps.SpinningDrumServer</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.GUI.GetKeypressDialog-class.html">GetKeypressDialog</a><br />
+<span class="index-where">(in <a href="VisionEgg.GUI-module.html">VisionEgg.GUI</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.GridGUI-module.html#get_control_list">get_control_list()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.GridGUI-module.html">VisionEgg.PyroApps.GridGUI</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.TargetServer-module.html#get_meta_controller_stimkey">get_meta_controller_stimkey()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.TargetServer-module.html">VisionEgg.PyroApps.TargetServer</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.qtlowlevel-module.html#GetMovieBox">GetMovieBox</a><br />
+<span class="index-where">(in <a href="VisionEgg.qtlowlevel-module.html">VisionEgg.qtlowlevel</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.MouseTargetGUI-module.html#get_control_list">get_control_list()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.MouseTargetGUI-module.html">VisionEgg.PyroApps.MouseTargetGUI</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.EPhysServer.EPhysServer-class.html#get_next_stimulus_meta_controller">get_next_stimulus_meta_controller()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.EPhysServer.EPhysServer-class.html">EPhysServer</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.qtmovie.Movie-class.html#GetMovieBox">GetMovieBox()</a><br />
+<span class="index-where">(in <a href="VisionEgg.qtmovie.Movie-class.html">Movie</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.SphereGratingGUI-module.html#get_control_list">get_control_list()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.SphereGratingGUI-module.html">VisionEgg.PyroApps.SphereGratingGUI</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html#get_param_dict">get_param_dict()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html">ScreenPositionControlFrame</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.darwin_getrefresh-module.html#getrefresh">getrefresh</a><br />
+<span class="index-where">(in <a href="VisionEgg.darwin_getrefresh-module.html">VisionEgg.darwin_getrefresh</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.SpinningDrumGUI-module.html#get_control_list">get_control_list()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.SpinningDrumGUI-module.html">VisionEgg.PyroApps.SpinningDrumGUI</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController-class.html#get_parameters">get_parameters()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController-class.html">ColorCalMetaController</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.win32_getrefresh-module.html#getrefresh">getrefresh</a><br />
+<span class="index-where">(in <a href="VisionEgg.win32_getrefresh-module.html">VisionEgg.win32_getrefresh</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.TargetGUI-module.html#get_control_list">get_control_list()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.TargetGUI-module.html">VisionEgg.PyroApps.TargetGUI</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.DropinServer.DropinMetaController-class.html#get_parameters">get_parameters()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.DropinServer.DropinMetaController-class.html">DropinMetaController</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.VarTypes-module.html#getType">getType()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.VarTypes-module.html">VisionEgg.PyroApps.VarTypes</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.EPhysGUI.GammaFrame-class.html#get_corrected_gamma_table">get_corrected_gamma_table()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.EPhysGUI.GammaFrame-class.html">GammaFrame</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController-class.html#get_parameters">get_parameters()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController-class.html">FlatGratingExperimentMetaController</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.GL-module.html">GL</a><br />
+<span class="index-where">(in <a href="VisionEgg-module.html">VisionEgg</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.EPhysGUI.Loop-class.html#get_current">get_current()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.EPhysGUI.Loop-class.html">Loop</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.GridServer.GridMetaController-class.html#get_parameters">get_parameters()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.GridServer.GridMetaController-class.html">GridMetaController</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.Core-module.html#gl_assumptions">gl_assumptions</a><br />
+<span class="index-where">(in <a href="VisionEgg.Core-module.html">VisionEgg.Core</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.EPhysServer.EPhysServer-class.html#get_cwd">get_cwd()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.EPhysServer.EPhysServer-class.html">EPhysServer</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController-class.html#get_parameters">get_parameters()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController-class.html">MouseTargetExperimentMetaController</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.GLTrace-module.html#gl_constants">gl_constants</a><br />
+<span class="index-where">(in <a href="VisionEgg.GLTrace-module.html">VisionEgg.GLTrace</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.Daq.Input-class.html#get_data">get_data()</a><br />
+<span class="index-where">(in <a href="VisionEgg.Daq.Input-class.html">Input</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController-class.html#get_parameters">get_parameters()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController-class.html">ScreenPositionMetaController</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.gl_qt-module.html">gl_qt</a><br />
+<span class="index-where">(in <a href="VisionEgg-module.html">VisionEgg</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.DaqLPT.LPTInput-class.html#get_data">get_data()</a><br />
+<span class="index-where">(in <a href="VisionEgg.DaqLPT.LPTInput-class.html">LPTInput</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController-class.html#get_parameters">get_parameters()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController-class.html">SphereGratingExperimentMetaController</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.gl_qt-module.html#gl_qt_renderer_create">gl_qt_renderer_create</a><br />
+<span class="index-where">(in <a href="VisionEgg.gl_qt-module.html">VisionEgg.gl_qt</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.Core-module.html#get_default_screen">get_default_screen()</a><br />
+<span class="index-where">(in <a href="VisionEgg.Core-module.html">VisionEgg.Core</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController-class.html#get_parameters">get_parameters()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController-class.html">SpinningDrumExperimentMetaController</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.gl_qt-module.html#gl_qt_renderer_delete">gl_qt_renderer_delete</a><br />
+<span class="index-where">(in <a href="VisionEgg.gl_qt-module.html">VisionEgg.gl_qt</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame-class.html#get_duration_sec">get_duration_sec()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame-class.html">ColorCalControlFrame</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController-class.html#get_parameters">get_parameters()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController-class.html">TargetExperimentMetaController</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.gl_qt-module.html#gl_qt_renderer_update">gl_qt_renderer_update</a><br />
+<span class="index-where">(in <a href="VisionEgg.gl_qt-module.html">VisionEgg.gl_qt</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.DropinGUI.DropinControlFrame-class.html#get_duration_sec">get_duration_sec()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.DropinGUI.DropinControlFrame-class.html">DropinControlFrame</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#get_parameters_as_m_strings">get_parameters_as_m_strings()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html">StimulusControlFrame</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.GLTrace-module.html#gl_trace_attach">gl_trace_attach()</a><br />
+<span class="index-where">(in <a href="VisionEgg.GLTrace-module.html">VisionEgg.GLTrace</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#get_duration_sec">get_duration_sec()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html">StimulusControlFrame</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#get_parameters_as_py_strings">get_parameters_as_py_strings()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html">StimulusControlFrame</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.GL-module.html#GL_UNSIGNED_INT_8_8_8_8_REV">GL_UNSIGNED_INT_8_8_8_8_REV</a><br />
+<span class="index-where">(in <a href="VisionEgg.GL-module.html">VisionEgg.GL</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame-class.html#get_duration_sec">get_duration_sec()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame-class.html">FlatGratingControlFrame</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html#get_parameters_as_strings">get_parameters_as_strings()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html">ScreenPositionControlFrame</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.GL-module.html#glLoadMatrixf">glLoadMatrixf()</a><br />
+<span class="index-where">(in <a href="VisionEgg.GL-module.html">VisionEgg.GL</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.GridGUI.GridControlFrame-class.html#get_duration_sec">get_duration_sec()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.GridGUI.GridControlFrame-class.html">GridControlFrame</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#get_parameters_dict">get_parameters_dict()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html">StimulusControlFrame</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.GLTrace-module.html">GLTrace</a><br />
+<span class="index-where">(in <a href="VisionEgg-module.html">VisionEgg</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame-class.html#get_duration_sec">get_duration_sec()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame-class.html">MouseTargetControlFrame</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.Textures.Texture-class.html#get_pixels_as_image">get_pixels_as_image()</a><br />
+<span class="index-where">(in <a href="VisionEgg.Textures.Texture-class.html">Texture</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.Text.GlutTextBase-class.html">GlutTextBase</a><br />
+<span class="index-where">(in <a href="VisionEgg.Text-module.html">VisionEgg.Text</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame-class.html#get_duration_sec">get_duration_sec()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame-class.html">SphereGratingControlFrame</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.DaqKeyboard.KeyboardInput-class.html#get_pygame_data">get_pygame_data()</a><br />
+<span class="index-where">(in <a href="VisionEgg.DaqKeyboard.KeyboardInput-class.html">KeyboardInput</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.FlowControl.Presentation-class.html#go">go()</a><br />
+<span class="index-where">(in <a href="VisionEgg.FlowControl.Presentation-class.html">Presentation</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame-class.html#get_duration_sec">get_duration_sec()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame-class.html">SpinningDrumControlFrame</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.EPhysServer.EPhysServer-class.html#get_quit_status">get_quit_status()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.EPhysServer.EPhysServer-class.html">EPhysServer</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController-class.html#go">go()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController-class.html">ColorCalMetaController</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.TargetGUI.TargetControlFrame-class.html#get_duration_sec">get_duration_sec()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.TargetGUI.TargetControlFrame-class.html">TargetControlFrame</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.ResponseControl.ResponseController-class.html#get_responses">get_responses()</a><br />
+<span class="index-where">(in <a href="VisionEgg.ResponseControl.ResponseController-class.html">ResponseController</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.DropinServer.DropinMetaController-class.html#go">go()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.DropinServer.DropinMetaController-class.html">DropinMetaController</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.FlowControl.EvalStringController-class.html#get_during_go_eval_string">get_during_go_eval_string()</a><br />
+<span class="index-where">(in <a href="VisionEgg.FlowControl.EvalStringController-class.html">EvalStringController</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.ResponseControl.ResponseController-class.html#get_responses_since_go">get_responses_since_go()</a><br />
+<span class="index-where">(in <a href="VisionEgg.ResponseControl.ResponseController-class.html">ResponseController</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#go">go()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html">StimulusControlFrame</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.FlowControl.ExecStringController-class.html#get_during_go_exec_string">get_during_go_exec_string()</a><br />
+<span class="index-where">(in <a href="VisionEgg.FlowControl.ExecStringController-class.html">ExecStringController</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.Core.FrameTimer-class.html#get_running_average_ifi_sec">get_running_average_ifi_sec()</a><br />
+<span class="index-where">(in <a href="VisionEgg.Core.FrameTimer-class.html">FrameTimer</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController-class.html#go">go()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController-class.html">FlatGratingExperimentMetaController</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.FlowControl.ConstantController-class.html#get_during_go_value">get_during_go_value()</a><br />
+<span class="index-where">(in <a href="VisionEgg.FlowControl.ConstantController-class.html">ConstantController</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.EPhysGUI.ScrollListFrame-class.html#get_selected">get_selected()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.EPhysGUI.ScrollListFrame-class.html">ScrollListFrame</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.GridServer.GridMetaController-class.html#go">go()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.GridServer.GridMetaController-class.html">GridMetaController</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.ResponseControl.ResponseController-class.html#get_first_response_since_go">get_first_response_since_go()</a><br />
+<span class="index-where">(in <a href="VisionEgg.ResponseControl.ResponseController-class.html">ResponseController</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.EPhysGUI-module.html#get_server">get_server()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.EPhysGUI-module.html">VisionEgg.PyroApps.EPhysGUI</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController-class.html#go">go()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController-class.html">MouseTargetExperimentMetaController</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.ResponseControl.ResponseController-class.html#get_first_responses_since_go">get_first_responses_since_go()</a><br />
+<span class="index-where">(in <a href="VisionEgg.ResponseControl.ResponseController-class.html">ResponseController</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame-class.html#get_shortname">get_shortname()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame-class.html">ColorCalControlFrame</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController-class.html#go">go()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController-class.html">ScreenPositionMetaController</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.Core.Screen-class.html#get_framebuffer_as_array">get_framebuffer_as_array()</a><br />
+<span class="index-where">(in <a href="VisionEgg.Core.Screen-class.html">Screen</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.DropinGUI.DropinControlFrame-class.html#get_shortname">get_shortname()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.DropinGUI.DropinControlFrame-class.html">DropinControlFrame</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController-class.html#go">go()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController-class.html">SphereGratingExperimentMetaController</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.Core.Screen-class.html#get_framebuffer_as_image">get_framebuffer_as_image()</a><br />
+<span class="index-where">(in <a href="VisionEgg.Core.Screen-class.html">Screen</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#get_shortname">get_shortname()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html">StimulusControlFrame</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController-class.html#go">go()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController-class.html">SpinningDrumExperimentMetaController</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroHelpers.PyroServer-class.html#get_hostname_and_port">get_hostname_and_port()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroHelpers.PyroServer-class.html">PyroServer</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame-class.html#get_shortname">get_shortname()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame-class.html">FlatGratingControlFrame</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController-class.html#go">go()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController-class.html">TargetExperimentMetaController</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.ParameterTypes.AnyOf-class.html#get_item_types">get_item_types()</a><br />
+<span class="index-where">(in <a href="VisionEgg.ParameterTypes.AnyOf-class.html">AnyOf</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.GridGUI.GridControlFrame-class.html#get_shortname">get_shortname()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.GridGUI.GridControlFrame-class.html">GridControlFrame</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.qtlowlevel-module.html#GoToBeginningOfMovie">GoToBeginningOfMovie</a><br />
+<span class="index-where">(in <a href="VisionEgg.qtlowlevel-module.html">VisionEgg.qtlowlevel</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.FlowControl.Presentation-class.html#get_last_go_loop_start_time_absolute_sec">get_last_go_loop_start_time_absolute_sec()</a><br />
+<span class="index-where">(in <a href="VisionEgg.FlowControl.Presentation-class.html">Presentation</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame-class.html#get_shortname">get_shortname()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame-class.html">MouseTargetControlFrame</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.qtmovie.Movie-class.html#GoToBeginningOfMovie">GoToBeginningOfMovie()</a><br />
+<span class="index-where">(in <a href="VisionEgg.qtmovie.Movie-class.html">Movie</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.EPhysServer.EPhysServer-class.html#get_last_go_loop_start_time_absolute_sec">get_last_go_loop_start_time_absolute_sec()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.EPhysServer.EPhysServer-class.html">EPhysServer</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html#get_shortname">get_shortname()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html">ScreenPositionControlFrame</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.GUI.GraphicsConfigurationWindow-class.html">GraphicsConfigurationWindow</a><br />
+<span class="index-where">(in <a href="VisionEgg.GUI-module.html">VisionEgg.GUI</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.ResponseControl.ResponseController-class.html#get_last_response_since_go">get_last_response_since_go()</a><br />
+<span class="index-where">(in <a href="VisionEgg.ResponseControl.ResponseController-class.html">ResponseController</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame-class.html#get_shortname">get_shortname()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame-class.html">SphereGratingControlFrame</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.Gratings-module.html">Gratings</a><br />
+<span class="index-where">(in <a href="VisionEgg-module.html">VisionEgg</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.ResponseControl.ResponseController-class.html#get_last_responses_since_go">get_last_responses_since_go()</a><br />
+<span class="index-where">(in <a href="VisionEgg.ResponseControl.ResponseController-class.html">ResponseController</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame-class.html#get_shortname">get_shortname()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame-class.html">SpinningDrumControlFrame</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.GridGUI.GridControlFrame-class.html">GridControlFrame</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.GridGUI-module.html">VisionEgg.PyroApps.GridGUI</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.EPhysGUI.ScrollListFrame-class.html#get_list_uncontained">get_list_uncontained()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.EPhysGUI.ScrollListFrame-class.html">ScrollListFrame</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.TargetGUI.TargetControlFrame-class.html#get_shortname">get_shortname()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.TargetGUI.TargetControlFrame-class.html">TargetControlFrame</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.GridGUI-module.html">GridGUI</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps-module.html">VisionEgg.PyroApps</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.Core.FrameTimer-class.html#get_longest_frame_duration_sec">get_longest_frame_duration_sec()</a><br />
+<span class="index-where">(in <a href="VisionEgg.Core.FrameTimer-class.html">FrameTimer</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.Core.Screen-class.html#get_size">get_size()</a><br />
+<span class="index-where">(in <a href="VisionEgg.Core.Screen-class.html">Screen</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.GridServer.GridMetaController-class.html">GridMetaController</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.GridServer-module.html">VisionEgg.PyroApps.GridServer</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#get_loopable_variable_names">get_loopable_variable_names()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html">StimulusControlFrame</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.ClassWithParameters-class.html#get_specified_type">get_specified_type()</a><br />
+<span class="index-where">(in <a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.GridGUI.GridMetaParameters-class.html">GridMetaParameters</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.GridGUI-module.html">VisionEgg.PyroApps.GridGUI</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html#get_loopable_variable_names">get_loopable_variable_names()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html">ScreenPositionControlFrame</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.EPhysServer.EPhysServer-class.html#get_stim_onset_cal_location">get_stim_onset_cal_location()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.EPhysServer.EPhysServer-class.html">EPhysServer</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.GridServer-module.html">GridServer</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps-module.html">VisionEgg.PyroApps</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#get_matlab_string">get_matlab_string()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html">StimulusControlFrame</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.EPhysServer.EPhysServer-class.html#get_stimkey">get_stimkey()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.EPhysServer.EPhysServer-class.html">EPhysServer</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.GUI-module.html">GUI</a><br />
+<span class="index-where">(in <a href="VisionEgg-module.html">VisionEgg</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.Core.ProjectionBaseClass-class.html#get_matrix">get_matrix()</a><br />
+<span class="index-where">(in <a href="VisionEgg.Core.ProjectionBaseClass-class.html">ProjectionBaseClass</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase-class.html#get_str_30">get_str_30()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase-class.html">ContainedObjectBase</a>)</font></td>
+<td width="33%" class="link-index"> </td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.ThreeDeeMath.TransformMatrix-class.html#get_matrix">get_matrix()</a><br />
+<span class="index-where">(in <a href="VisionEgg.ThreeDeeMath.TransformMatrix-class.html">TransformMatrix</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.EPhysGUI.LoopContainedObject-class.html#get_str_30">get_str_30()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.EPhysGUI.LoopContainedObject-class.html">LoopContainedObject</a>)</font></td>
+<td width="33%" class="link-index"> </td>
+</tr>
+</table>
+</td></tr>
+<td valign="top" width="1%"><a name="H"><h2 class="epydoc">H</h2></a></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.Deprecated.Message-class.html#handle">handle()</a><br />
+<span class="index-where">(in <a href="VisionEgg.Deprecated.Message-class.html">Message</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.Text-module.html#have_glut">have_glut</a><br />
+<span class="index-where">(in <a href="VisionEgg.Text-module.html">VisionEgg.Text</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.TCPController.SocketListenController-class.html#help_string">help_string</a><br />
+<span class="index-where">(in <a href="VisionEgg.TCPController.SocketListenController-class.html">SocketListenController</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.MouseTargetServer-module.html#handle_event_callbacks">handle_event_callbacks</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.MouseTargetServer-module.html">VisionEgg.PyroApps.MouseTargetServer</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase-class.html#header">header</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase-class.html">ContainedObjectBase</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.win32_maxpriority-module.html#HIGH_PRIORITY_CLASS">HIGH_PRIORITY_CLASS</a><br />
+<span class="index-where">(in <a href="VisionEgg.win32_maxpriority-module.html">VisionEgg.win32_maxpriority</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroHelpers.PyroServer-class.html#handleRequests">handleRequests()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroHelpers.PyroServer-class.html">PyroServer</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.EPhysGUI.LoopContainedObject-class.html#header">header</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.EPhysGUI.LoopContainedObject-class.html">LoopContainedObject</a>)</font></td>
+<td width="33%" class="link-index"> </td>
+</tr>
+</table>
+</td></tr>
+<td valign="top" width="1%"><a name="I"><h2 class="epydoc">I</h2></a></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.GUI.AppWindow-class.html#idle">idle()</a><br />
+<span class="index-where">(in <a href="VisionEgg.GUI.AppWindow-class.html">AppWindow</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.Daq.Input-class.html">Input</a><br />
+<span class="index-where">(in <a href="VisionEgg.Daq-module.html">VisionEgg.Daq</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.EPhysServer.EPhysServer-class.html#is_in_go_loop">is_in_go_loop()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.EPhysServer.EPhysServer-class.html">EPhysServer</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.win32_maxpriority-module.html#IDLE_PRIORITY_CLASS">IDLE_PRIORITY_CLASS</a><br />
+<span class="index-where">(in <a href="VisionEgg.win32_maxpriority-module.html">VisionEgg.win32_maxpriority</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.ParameterTypes.Instance-class.html">Instance</a><br />
+<span class="index-where">(in <a href="VisionEgg.ParameterTypes-module.html">VisionEgg.ParameterTypes</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.ParameterTypes-module.html#is_parameter_type_def">is_parameter_type_def()</a><br />
+<span class="index-where">(in <a href="VisionEgg.ParameterTypes-module.html">VisionEgg.ParameterTypes</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.EPhysGUI.ImageSequenceLauncher-class.html">ImageSequenceLauncher</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.EPhysGUI-module.html">VisionEgg.PyroApps.EPhysGUI</a>)</font></td>
+<td width="33%" class="link-index"><a href="int-class.html">int</a></td>
+<td width="33%" class="link-index"><a href="VisionEgg.Textures-module.html#is_power_of_2">is_power_of_2()</a><br />
+<span class="index-where">(in <a href="VisionEgg.Textures-module.html">VisionEgg.Textures</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.Daq.Immediate-class.html">Immediate</a><br />
+<span class="index-where">(in <a href="VisionEgg.Daq-module.html">VisionEgg.Daq</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.ParameterTypes.Integer-class.html">Integer</a><br />
+<span class="index-where">(in <a href="VisionEgg.ParameterTypes-module.html">VisionEgg.ParameterTypes</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.Textures.TextureObject-class.html#is_resident">is_resident()</a><br />
+<span class="index-where">(in <a href="VisionEgg.Textures.TextureObject-class.html">TextureObject</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.Deprecated.Message-class.html#INFO">INFO</a><br />
+<span class="index-where">(in <a href="VisionEgg.Deprecated.Message-class.html">Message</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.ParameterTypes.IntegerMC-class.html">IntegerMC</a><br />
+<span class="index-where">(in <a href="VisionEgg.ParameterTypes-module.html">VisionEgg.ParameterTypes</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.qtlowlevel-module.html#IsMovieDone">IsMovieDone</a><br />
+<span class="index-where">(in <a href="VisionEgg.qtlowlevel-module.html">VisionEgg.qtlowlevel</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.GUI.InfoFrame-class.html">InfoFrame</a><br />
+<span class="index-where">(in <a href="VisionEgg.GUI-module.html">VisionEgg.GUI</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.ClassWithParameters-class.html#is_constant_parameter">is_constant_parameter()</a><br />
+<span class="index-where">(in <a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.qtmovie.Movie-class.html#IsMovieDone">IsMovieDone()</a><br />
+<span class="index-where">(in <a href="VisionEgg.qtmovie.Movie-class.html">Movie</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.Core-module.html#init_gl_extension">init_gl_extension()</a><br />
+<span class="index-where">(in <a href="VisionEgg.Core-module.html">VisionEgg.Core</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.EPhysGUI.Loop-class.html#is_done">is_done()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.EPhysGUI.Loop-class.html">Loop</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.qtlowlevel-module.html#ItemCount">ItemCount</a><br />
+<span class="index-where">(in <a href="VisionEgg.qtlowlevel-module.html">VisionEgg.qtlowlevel</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.qtlowlevel-module.html#InitializeQTML">InitializeQTML</a><br />
+<span class="index-where">(in <a href="VisionEgg.qtlowlevel-module.html">VisionEgg.qtlowlevel</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.FlowControl.Presentation-class.html#is_in_go_loop">is_in_go_loop()</a><br />
+<span class="index-where">(in <a href="VisionEgg.FlowControl.Presentation-class.html">Presentation</a>)</font></td>
+<td width="33%" class="link-index"> </td>
+</tr>
+</table>
+</td></tr>
+<td valign="top" width="1%"><a name="K"><h2 class="epydoc">K</h2></a></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.qtlowlevel-module.html#kCFAllocatorDefault">kCFAllocatorDefault</a><br />
+<span class="index-where">(in <a href="VisionEgg.qtlowlevel-module.html">VisionEgg.qtlowlevel</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.qtlowlevel-module.html#kQTDataLocationPropertyID_CFURL">kQTDataLocationPropertyID_CFURL</a><br />
+<span class="index-where">(in <a href="VisionEgg.qtlowlevel-module.html">VisionEgg.qtlowlevel</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.qtlowlevel-module.html#kQTMovieInstantiationPropertyID_IdleImportOK">kQTMovieInstantiationPropertyID_IdleImportOK</a><br />
+<span class="index-where">(in <a href="VisionEgg.qtlowlevel-module.html">VisionEgg.qtlowlevel</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.qtlowlevel-module.html#kCFStringEncodingMacRoman">kCFStringEncodingMacRoman</a><br />
+<span class="index-where">(in <a href="VisionEgg.qtlowlevel-module.html">VisionEgg.qtlowlevel</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.qtlowlevel-module.html#kQTDataLocationPropertyID_DataFork">kQTDataLocationPropertyID_DataFork</a><br />
+<span class="index-where">(in <a href="VisionEgg.qtlowlevel-module.html">VisionEgg.qtlowlevel</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.qtlowlevel-module.html#kQTMovieInstantiationPropertyID_ResultDataLocationChanged">kQTMovieInstantiationPropertyID_ResultDataLocationChanged</a><br />
+<span class="index-where">(in <a href="VisionEgg.qtlowlevel-module.html">VisionEgg.qtlowlevel</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.DaqKeyboard.KeyboardInput-class.html">KeyboardInput</a><br />
+<span class="index-where">(in <a href="VisionEgg.DaqKeyboard-module.html">VisionEgg.DaqKeyboard</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.qtlowlevel-module.html#kQTDataLocationPropertyID_DataReference">kQTDataLocationPropertyID_DataReference</a><br />
+<span class="index-where">(in <a href="VisionEgg.qtlowlevel-module.html">VisionEgg.qtlowlevel</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.qtlowlevel-module.html#kQTMovieResourceLocatorPropertyID_Callback">kQTMovieResourceLocatorPropertyID_Callback</a><br />
+<span class="index-where">(in <a href="VisionEgg.qtlowlevel-module.html">VisionEgg.qtlowlevel</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.ResponseControl.KeyboardResponseController-class.html">KeyboardResponseController</a><br />
+<span class="index-where">(in <a href="VisionEgg.ResponseControl-module.html">VisionEgg.ResponseControl</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.qtlowlevel-module.html#kQTDataLocationPropertyID_LegacyMovieResourceHandle">kQTDataLocationPropertyID_LegacyMovieResourceHandle</a><br />
+<span class="index-where">(in <a href="VisionEgg.qtlowlevel-module.html">VisionEgg.qtlowlevel</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.qtlowlevel-module.html#kQTMovieResourceLocatorPropertyID_FileOffset">kQTMovieResourceLocatorPropertyID_FileOffset</a><br />
+<span class="index-where">(in <a href="VisionEgg.qtlowlevel-module.html">VisionEgg.qtlowlevel</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.DaqKeyboard.KeyboardTriggerInController-class.html">KeyboardTriggerInController</a><br />
+<span class="index-where">(in <a href="VisionEgg.DaqKeyboard-module.html">VisionEgg.DaqKeyboard</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.qtlowlevel-module.html#kQTDataLocationPropertyID_MovieUserProc">kQTDataLocationPropertyID_MovieUserProc</a><br />
+<span class="index-where">(in <a href="VisionEgg.qtlowlevel-module.html">VisionEgg.qtlowlevel</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.qtlowlevel-module.html#kQTMovieResourceLocatorPropertyID_LegacyResID">kQTMovieResourceLocatorPropertyID_LegacyResID</a><br />
+<span class="index-where">(in <a href="VisionEgg.qtlowlevel-module.html">VisionEgg.qtlowlevel</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.MouseTargetServer-module.html#keydown">keydown()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.MouseTargetServer-module.html">VisionEgg.PyroApps.MouseTargetServer</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.qtlowlevel-module.html#kQTDataLocationPropertyID_QTDataHandler">kQTDataLocationPropertyID_QTDataHandler</a><br />
+<span class="index-where">(in <a href="VisionEgg.qtlowlevel-module.html">VisionEgg.qtlowlevel</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.qtlowlevel-module.html#kQTMovieResourceLocatorPropertyID_LegacyResName">kQTMovieResourceLocatorPropertyID_LegacyResName</a><br />
+<span class="index-where">(in <a href="VisionEgg.qtlowlevel-module.html">VisionEgg.qtlowlevel</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.GUI.GetKeypressDialog-class.html#keypress">keypress()</a><br />
+<span class="index-where">(in <a href="VisionEgg.GUI.GetKeypressDialog-class.html">GetKeypressDialog</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.qtlowlevel-module.html#kQTDataLocationPropertyID_ResourceFork">kQTDataLocationPropertyID_ResourceFork</a><br />
+<span class="index-where">(in <a href="VisionEgg.qtlowlevel-module.html">VisionEgg.qtlowlevel</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.qtlowlevel-module.html#kQTNewMoviePropertyID_Active">kQTNewMoviePropertyID_Active</a><br />
+<span class="index-where">(in <a href="VisionEgg.qtlowlevel-module.html">VisionEgg.qtlowlevel</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.MouseTargetServer-module.html#keyup">keyup()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.MouseTargetServer-module.html">VisionEgg.PyroApps.MouseTargetServer</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.qtlowlevel-module.html#kQTDataLocationPropertyID_Scrap">kQTDataLocationPropertyID_Scrap</a><br />
+<span class="index-where">(in <a href="VisionEgg.qtlowlevel-module.html">VisionEgg.qtlowlevel</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.qtlowlevel-module.html#kQTNewMoviePropertyID_DefaultDataRef">kQTNewMoviePropertyID_DefaultDataRef</a><br />
+<span class="index-where">(in <a href="VisionEgg.qtlowlevel-module.html">VisionEgg.qtlowlevel</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.qtlowlevel-module.html#kQTContextPropertyID_AudioContext">kQTContextPropertyID_AudioContext</a><br />
+<span class="index-where">(in <a href="VisionEgg.qtlowlevel-module.html">VisionEgg.qtlowlevel</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.qtlowlevel-module.html#kQTMovieInstantiationPropertyID_AsyncOK">kQTMovieInstantiationPropertyID_AsyncOK</a><br />
+<span class="index-where">(in <a href="VisionEgg.qtlowlevel-module.html">VisionEgg.qtlowlevel</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.qtlowlevel-module.html#kQTNewMoviePropertyID_DontInteractWithUser">kQTNewMoviePropertyID_DontInteractWithUser</a><br />
+<span class="index-where">(in <a href="VisionEgg.qtlowlevel-module.html">VisionEgg.qtlowlevel</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.qtlowlevel-module.html#kQTContextPropertyID_VisualContext">kQTContextPropertyID_VisualContext</a><br />
+<span class="index-where">(in <a href="VisionEgg.qtlowlevel-module.html">VisionEgg.qtlowlevel</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.qtlowlevel-module.html#kQTMovieInstantiationPropertyID_DontAskUnresolvedDataRefs">kQTMovieInstantiationPropertyID_DontAskUnresolvedDataRefs</a><br />
+<span class="index-where">(in <a href="VisionEgg.qtlowlevel-module.html">VisionEgg.qtlowlevel</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.qtlowlevel-module.html#kQTPropertyClass_Context">kQTPropertyClass_Context</a><br />
+<span class="index-where">(in <a href="VisionEgg.qtlowlevel-module.html">VisionEgg.qtlowlevel</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.qtlowlevel-module.html#kQTDataLocationPropertyID_CFStringHFSPath">kQTDataLocationPropertyID_CFStringHFSPath</a><br />
+<span class="index-where">(in <a href="VisionEgg.qtlowlevel-module.html">VisionEgg.qtlowlevel</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.qtlowlevel-module.html#kQTMovieInstantiationPropertyID_DontAutoAlternates">kQTMovieInstantiationPropertyID_DontAutoAlternates</a><br />
+<span class="index-where">(in <a href="VisionEgg.qtlowlevel-module.html">VisionEgg.qtlowlevel</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.qtlowlevel-module.html#kQTPropertyClass_DataLocation">kQTPropertyClass_DataLocation</a><br />
+<span class="index-where">(in <a href="VisionEgg.qtlowlevel-module.html">VisionEgg.qtlowlevel</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.qtlowlevel-module.html#kQTDataLocationPropertyID_CFStringNativePath">kQTDataLocationPropertyID_CFStringNativePath</a><br />
+<span class="index-where">(in <a href="VisionEgg.qtlowlevel-module.html">VisionEgg.qtlowlevel</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.qtlowlevel-module.html#kQTMovieInstantiationPropertyID_DontAutoUpdateClock">kQTMovieInstantiationPropertyID_DontAutoUpdateClock</a><br />
+<span class="index-where">(in <a href="VisionEgg.qtlowlevel-module.html">VisionEgg.qtlowlevel</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.qtlowlevel-module.html#kQTPropertyClass_MovieInstantiation">kQTPropertyClass_MovieInstantiation</a><br />
+<span class="index-where">(in <a href="VisionEgg.qtlowlevel-module.html">VisionEgg.qtlowlevel</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.qtlowlevel-module.html#kQTDataLocationPropertyID_CFStringPosixPath">kQTDataLocationPropertyID_CFStringPosixPath</a><br />
+<span class="index-where">(in <a href="VisionEgg.qtlowlevel-module.html">VisionEgg.qtlowlevel</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.qtlowlevel-module.html#kQTMovieInstantiationPropertyID_DontResolveDataRefs">kQTMovieInstantiationPropertyID_DontResolveDataRefs</a><br />
+<span class="index-where">(in <a href="VisionEgg.qtlowlevel-module.html">VisionEgg.qtlowlevel</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.qtlowlevel-module.html#kQTPropertyClass_MovieResourceLocator">kQTPropertyClass_MovieResourceLocator</a><br />
+<span class="index-where">(in <a href="VisionEgg.qtlowlevel-module.html">VisionEgg.qtlowlevel</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.qtlowlevel-module.html#kQTDataLocationPropertyID_CFStringWindowsPath">kQTDataLocationPropertyID_CFStringWindowsPath</a><br />
+<span class="index-where">(in <a href="VisionEgg.qtlowlevel-module.html">VisionEgg.qtlowlevel</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.qtlowlevel-module.html#kQTMovieInstantiationPropertyID_DontUpdateForeBackPointers">kQTMovieInstantiationPropertyID_DontUpdateForeBackPointers</a><br />
+<span class="index-where">(in <a href="VisionEgg.qtlowlevel-module.html">VisionEgg.qtlowlevel</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.qtlowlevel-module.html#kQTPropertyClass_NewMovieProperty">kQTPropertyClass_NewMovieProperty</a><br />
+<span class="index-where">(in <a href="VisionEgg.qtlowlevel-module.html">VisionEgg.qtlowlevel</a>)</font></td>
+</tr>
+</table>
+</td></tr>
+<td valign="top" width="1%"><a name="L"><h2 class="epydoc">L</h2></a></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.MouseTargetServer-module.html#last_mouse_position">last_mouse_position</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.MouseTargetServer-module.html">VisionEgg.PyroApps.MouseTargetServer</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.Textures.Texture-class.html#load">load()</a><br />
+<span class="index-where">(in <a href="VisionEgg.Textures.Texture-class.html">Texture</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.EPhysGUI.LoopParamDialog-class.html">LoopParamDialog</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.EPhysGUI-module.html">VisionEgg.PyroApps.EPhysGUI</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.EPhysGUI.AppWindow-class.html#launch_gamma_panel">launch_gamma_panel()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.EPhysGUI.AppWindow-class.html">AppWindow</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.EPhysGUI.AppWindow-class.html#load_config">load_config()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.EPhysGUI.AppWindow-class.html">AppWindow</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.DaqLPT.LPTChannel-class.html">LPTChannel</a><br />
+<span class="index-where">(in <a href="VisionEgg.DaqLPT-module.html">VisionEgg.DaqLPT</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.EPhysGUI.AppWindow-class.html#launch_screen_pos">launch_screen_pos()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.EPhysGUI.AppWindow-class.html">AppWindow</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.EPhysGUI.AppWindow-class.html#load_demoscript">load_demoscript()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.EPhysGUI.AppWindow-class.html">AppWindow</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.DaqLPT.LPTDevice-class.html">LPTDevice</a><br />
+<span class="index-where">(in <a href="VisionEgg.DaqLPT-module.html">VisionEgg.DaqLPT</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.EPhysGUI.AppWindow-class.html#launch_stim_onset_cal">launch_stim_onset_cal()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.EPhysGUI.AppWindow-class.html">AppWindow</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.EPhysGUI.AppWindow-class.html#load_params">load_params()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.EPhysGUI.AppWindow-class.html">AppWindow</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.DaqLPT.LPTInput-class.html">LPTInput</a><br />
+<span class="index-where">(in <a href="VisionEgg.DaqLPT-module.html">VisionEgg.DaqLPT</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.MouseTargetServer-module.html#left">left</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.MouseTargetServer-module.html">VisionEgg.PyroApps.MouseTargetServer</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg-module.html#log_formatter">log_formatter</a><br />
+<span class="index-where">(in <a href="VisionEgg-module.html">VisionEgg</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.DaqLPT.LPTOutput-class.html">LPTOutput</a><br />
+<span class="index-where">(in <a href="VisionEgg.DaqLPT-module.html">VisionEgg.DaqLPT</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.EPhysGUI.GammaFrame-class.html#linearize">linearize()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.EPhysGUI.GammaFrame-class.html">GammaFrame</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.Core.FrameTimer-class.html#log_histogram">log_histogram()</a><br />
+<span class="index-where">(in <a href="VisionEgg.Core.FrameTimer-class.html">FrameTimer</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.DaqLPT.LPTTriggerInController-class.html">LPTTriggerInController</a><br />
+<span class="index-where">(in <a href="VisionEgg.DaqLPT-module.html">VisionEgg.DaqLPT</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PlatformDependent-module.html#linux_but_unknown_drivers">linux_but_unknown_drivers()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PlatformDependent-module.html">VisionEgg.PlatformDependent</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg-module.html#logger">logger</a><br />
+<span class="index-where">(in <a href="VisionEgg-module.html">VisionEgg</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.DaqLPT.LPTTriggerOutController-class.html">LPTTriggerOutController</a><br />
+<span class="index-where">(in <a href="VisionEgg.DaqLPT-module.html">VisionEgg.DaqLPT</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.EPhysGUI.ScrollListFrame-class.html#list2D_coordinates">list2D_coordinates()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.EPhysGUI.ScrollListFrame-class.html">ScrollListFrame</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.Core.ProjectionBaseClass-class.html#look_at">look_at()</a><br />
+<span class="index-where">(in <a href="VisionEgg.Core.ProjectionBaseClass-class.html">ProjectionBaseClass</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.Gratings.LuminanceGratingCommon-class.html">LuminanceGratingCommon</a><br />
+<span class="index-where">(in <a href="VisionEgg.Gratings-module.html">VisionEgg.Gratings</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html#load">load()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html">ScreenPositionControlFrame</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.EPhysGUI.Loop-class.html">Loop</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.EPhysGUI-module.html">VisionEgg.PyroApps.EPhysGUI</a>)</font></td>
+<td width="33%" class="link-index"> </td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.QuickTime.MovieTexture-class.html#load">load()</a><br />
+<span class="index-where">(in <a href="VisionEgg.QuickTime.MovieTexture-class.html">MovieTexture</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.EPhysGUI.LoopContainedObject-class.html">LoopContainedObject</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.EPhysGUI-module.html">VisionEgg.PyroApps.EPhysGUI</a>)</font></td>
+<td width="33%" class="link-index"> </td>
+</tr>
+</table>
+</td></tr>
+<td valign="top" width="1%"><a name="M"><h2 class="epydoc">M</h2></a></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.MouseTargetServer-module.html#mag">mag()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.MouseTargetServer-module.html">VisionEgg.PyroApps.MouseTargetServer</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.GridServer-module.html#make_stimuli">make_stimuli()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.GridServer-module.html">VisionEgg.PyroApps.GridServer</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame-class.html">MouseTargetControlFrame</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.MouseTargetGUI-module.html">VisionEgg.PyroApps.MouseTargetGUI</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.WrappedText-module.html#main">main()</a><br />
+<span class="index-where">(in <a href="VisionEgg.WrappedText-module.html">VisionEgg.WrappedText</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.MouseTargetServer-module.html#make_stimuli">make_stimuli()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.MouseTargetServer-module.html">VisionEgg.PyroApps.MouseTargetServer</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController-class.html">MouseTargetExperimentMetaController</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.MouseTargetServer-module.html">VisionEgg.PyroApps.MouseTargetServer</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#make_callback_entry">make_callback_entry()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html">StimulusControlFrame</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.SphereGratingServer-module.html#make_stimuli">make_stimuli()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.SphereGratingServer-module.html">VisionEgg.PyroApps.SphereGratingServer</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.MouseTargetGUI-module.html">MouseTargetGUI</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps-module.html">VisionEgg.PyroApps</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.EPhysGUI.ScrollListFrame-class.html#make_contained_object">make_contained_object()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.EPhysGUI.ScrollListFrame-class.html">ScrollListFrame</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.SpinningDrumServer-module.html#make_stimuli">make_stimuli()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.SpinningDrumServer-module.html">VisionEgg.PyroApps.SpinningDrumServer</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.MouseTargetGUI.MouseTargetMetaParameters-class.html">MouseTargetMetaParameters</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.MouseTargetGUI-module.html">VisionEgg.PyroApps.MouseTargetGUI</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.Core.Screen-class.html#make_current">make_current()</a><br />
+<span class="index-where">(in <a href="VisionEgg.Core.Screen-class.html">Screen</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.TargetServer-module.html#make_stimuli">make_stimuli()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.TargetServer-module.html">VisionEgg.PyroApps.TargetServer</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.MouseTargetServer-module.html">MouseTargetServer</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps-module.html">VisionEgg.PyroApps</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.Core.Viewport-class.html#make_current">make_current()</a><br />
+<span class="index-where">(in <a href="VisionEgg.Core.Viewport-class.html">Viewport</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.EPhysGUI.ScrollListFrame-class.html#map_to_listbox_index">map_to_listbox_index()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.EPhysGUI.ScrollListFrame-class.html">ScrollListFrame</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.EPhysGUI.ScrollListFrame-class.html#move_selected_down">move_selected_down()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.EPhysGUI.ScrollListFrame-class.html">ScrollListFrame</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.QuickTime.MovieTexture-class.html#make_half_size">make_half_size()</a><br />
+<span class="index-where">(in <a href="VisionEgg.QuickTime.MovieTexture-class.html">MovieTexture</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.Textures.Mask2D-class.html">Mask2D</a><br />
+<span class="index-where">(in <a href="VisionEgg.Textures-module.html">VisionEgg.Textures</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.EPhysGUI.ScrollListFrame-class.html#move_selected_up">move_selected_up()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.EPhysGUI.ScrollListFrame-class.html">ScrollListFrame</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.Textures.Texture-class.html#make_half_size">make_half_size()</a><br />
+<span class="index-where">(in <a href="VisionEgg.Textures.Texture-class.html">Texture</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.Core.Screen-class.html#measure_refresh_rate">measure_refresh_rate()</a><br />
+<span class="index-where">(in <a href="VisionEgg.Core.Screen-class.html">Screen</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.qtlowlevel-module.html#Movie">Movie</a><br />
+<span class="index-where">(in <a href="VisionEgg.qtlowlevel-module.html">VisionEgg.qtlowlevel</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.ThreeDeeMath-module.html#make_homogeneous_coord_rows">make_homogeneous_coord_rows()</a><br />
+<span class="index-where">(in <a href="VisionEgg.ThreeDeeMath-module.html">VisionEgg.ThreeDeeMath</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.Core-module.html#message">message</a><br />
+<span class="index-where">(in <a href="VisionEgg.Core-module.html">VisionEgg.Core</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.qtmovie.Movie-class.html">Movie</a><br />
+<span class="index-where">(in <a href="VisionEgg.qtmovie-module.html">VisionEgg.qtmovie</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.EPhysGUI.ScrollListFrame-class.html#make_loop_contained_object">make_loop_contained_object()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.EPhysGUI.ScrollListFrame-class.html">ScrollListFrame</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.Deprecated.Message-class.html">Message</a><br />
+<span class="index-where">(in <a href="VisionEgg.Deprecated-module.html">VisionEgg.Deprecated</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.qtlowlevel-module.html#MoviesTask">MoviesTask</a><br />
+<span class="index-where">(in <a href="VisionEgg.qtlowlevel-module.html">VisionEgg.qtlowlevel</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.EPhysGUI.ScrollListFrame-class.html#make_merge">make_merge()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.EPhysGUI.ScrollListFrame-class.html">ScrollListFrame</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.Core.ModelView-class.html">ModelView</a><br />
+<span class="index-where">(in <a href="VisionEgg.Core-module.html">VisionEgg.Core</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.qtmovie.Movie-class.html#MoviesTask">MoviesTask()</a><br />
+<span class="index-where">(in <a href="VisionEgg.qtmovie.Movie-class.html">Movie</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.Core.Viewport-class.html#make_new_pixel_coord_projection">make_new_pixel_coord_projection()</a><br />
+<span class="index-where">(in <a href="VisionEgg.Core.Viewport-class.html">Viewport</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.AST_ext-module.html#modify_AST">modify_AST()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.AST_ext-module.html">VisionEgg.PyroApps.AST_ext</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.QuickTime.MovieTexture-class.html">MovieTexture</a><br />
+<span class="index-where">(in <a href="VisionEgg.QuickTime-module.html">VisionEgg.QuickTime</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.ColorCalServer-module.html#make_stimuli">make_stimuli()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.ColorCalServer-module.html">VisionEgg.PyroApps.ColorCalServer</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.MoreStimuli-module.html">MoreStimuli</a><br />
+<span class="index-where">(in <a href="VisionEgg-module.html">VisionEgg</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.qtlowlevel-module.html#movieToolboxUninitialized">movieToolboxUninitialized</a><br />
+<span class="index-where">(in <a href="VisionEgg.qtlowlevel-module.html">VisionEgg.qtlowlevel</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.DropinServer-module.html#make_stimuli">make_stimuli()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.DropinServer-module.html">VisionEgg.PyroApps.DropinServer</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.MouseTargetServer-module.html#mouse_position">mouse_position</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.MouseTargetServer-module.html">VisionEgg.PyroApps.MouseTargetServer</a>)</font></td>
+<td width="33%" class="link-index"> </td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.FlatGratingServer-module.html#make_stimuli">make_stimuli()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.FlatGratingServer-module.html">VisionEgg.PyroApps.FlatGratingServer</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.MouseTargetServer.MousePositionController-class.html">MousePositionController</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.MouseTargetServer-module.html">VisionEgg.PyroApps.MouseTargetServer</a>)</font></td>
+<td width="33%" class="link-index"> </td>
+</tr>
+</table>
+</td></tr>
+<td valign="top" width="1%"><a name="N"><h2 class="epydoc">N</h2></a></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.Deprecated.Message-class.html#NAG">NAG</a><br />
+<span class="index-where">(in <a href="VisionEgg.Deprecated.Message-class.html">Message</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.qtlowlevel-module.html#NewMovieFromProperties">NewMovieFromProperties</a><br />
+<span class="index-where">(in <a href="VisionEgg.qtlowlevel-module.html">VisionEgg.qtlowlevel</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.ThreeDeeMath-module.html#normalize_homogeneous_rows">normalize_homogeneous_rows()</a><br />
+<span class="index-where">(in <a href="VisionEgg.ThreeDeeMath-module.html">VisionEgg.ThreeDeeMath</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.AST_ext-module.html#name_sequence">name_sequence</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.AST_ext-module.html">VisionEgg.PyroApps.AST_ext</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.Textures-module.html#next_power_of_2">next_power_of_2()</a><br />
+<span class="index-where">(in <a href="VisionEgg.Textures-module.html">VisionEgg.Textures</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.FlowControl.Controller-class.html#NOT_BETWEEN_GO">NOT_BETWEEN_GO</a><br />
+<span class="index-where">(in <a href="VisionEgg.FlowControl.Controller-class.html">Controller</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.qtlowlevel-module.html#NativePathNameToFSSpec">NativePathNameToFSSpec</a><br />
+<span class="index-where">(in <a href="VisionEgg.qtlowlevel-module.html">VisionEgg.qtlowlevel</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.qtlowlevel-module.html#noErr">noErr</a><br />
+<span class="index-where">(in <a href="VisionEgg.qtlowlevel-module.html">VisionEgg.qtlowlevel</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.FlowControl-module.html#NOT_BETWEEN_GO">NOT_BETWEEN_GO</a><br />
+<span class="index-where">(in <a href="VisionEgg.FlowControl-module.html">VisionEgg.FlowControl</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.FlowControl.Controller-class.html#NEVER">NEVER</a><br />
+<span class="index-where">(in <a href="VisionEgg.FlowControl.Controller-class.html">Controller</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.ParameterTypes.NoneMC-class.html">NoneMC</a><br />
+<span class="index-where">(in <a href="VisionEgg.ParameterTypes-module.html">VisionEgg.ParameterTypes</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.FlowControl.Controller-class.html#NOT_DURING_GO">NOT_DURING_GO</a><br />
+<span class="index-where">(in <a href="VisionEgg.FlowControl.Controller-class.html">Controller</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.FlowControl-module.html#NEVER">NEVER</a><br />
+<span class="index-where">(in <a href="VisionEgg.FlowControl-module.html">VisionEgg.FlowControl</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.ParameterTypes.NoneType-class.html">NoneType</a><br />
+<span class="index-where">(in <a href="VisionEgg.ParameterTypes-module.html">VisionEgg.ParameterTypes</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.FlowControl-module.html#NOT_DURING_GO">NOT_DURING_GO</a><br />
+<span class="index-where">(in <a href="VisionEgg.FlowControl-module.html">VisionEgg.FlowControl</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.qtmovie-module.html#new_movie_from_filename">new_movie_from_filename()</a><br />
+<span class="index-where">(in <a href="VisionEgg.qtmovie-module.html">VisionEgg.qtmovie</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.Core.Viewport-class.html#norm_device_2_window">norm_device_2_window()</a><br />
+<span class="index-where">(in <a href="VisionEgg.Core.Viewport-class.html">Viewport</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.Gratings.NumSamplesTooLargeError-class.html">NumSamplesTooLargeError</a><br />
+<span class="index-where">(in <a href="VisionEgg.Gratings-module.html">VisionEgg.Gratings</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.qtlowlevel-module.html#NewMovieFromFile">NewMovieFromFile</a><br />
+<span class="index-where">(in <a href="VisionEgg.qtlowlevel-module.html">VisionEgg.qtlowlevel</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.win32_maxpriority-module.html#NORMAL_PRIORITY_CLASS">NORMAL_PRIORITY_CLASS</a><br />
+<span class="index-where">(in <a href="VisionEgg.win32_maxpriority-module.html">VisionEgg.win32_maxpriority</a>)</font></td>
+<td width="33%" class="link-index"> </td>
+</tr>
+</table>
+</td></tr>
+<td valign="top" width="1%"><a name="O"><h2 class="epydoc">O</h2></a></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController-class.html#on_function_between_go">on_function_between_go()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController-class.html">FlatGratingExperimentMetaController</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController-class.html#on_function_during_go">on_function_during_go()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController-class.html">SpinningDrumExperimentMetaController</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.Core.OrthographicProjection-class.html">OrthographicProjection</a><br />
+<span class="index-where">(in <a href="VisionEgg.Core-module.html">VisionEgg.Core</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController-class.html#on_function_between_go">on_function_between_go()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController-class.html">SphereGratingExperimentMetaController</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController-class.html#on_function_during_go">on_function_during_go()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController-class.html">TargetExperimentMetaController</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.Core.OrthographicProjectionNoZClip-class.html">OrthographicProjectionNoZClip</a><br />
+<span class="index-where">(in <a href="VisionEgg.Core-module.html">VisionEgg.Core</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController-class.html#on_function_between_go">on_function_between_go()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController-class.html">SpinningDrumExperimentMetaController</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.FlowControl.Controller-class.html#ONCE">ONCE</a><br />
+<span class="index-where">(in <a href="VisionEgg.FlowControl.Controller-class.html">Controller</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.qtlowlevel-module.html#OSErr">OSErr</a><br />
+<span class="index-where">(in <a href="VisionEgg.qtlowlevel-module.html">VisionEgg.qtlowlevel</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController-class.html#on_function_between_go">on_function_between_go()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController-class.html">TargetExperimentMetaController</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.FlowControl-module.html#ONCE">ONCE</a><br />
+<span class="index-where">(in <a href="VisionEgg.FlowControl-module.html">VisionEgg.FlowControl</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.qtlowlevel-module.html#OSStatus">OSStatus</a><br />
+<span class="index-where">(in <a href="VisionEgg.qtlowlevel-module.html">VisionEgg.qtlowlevel</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController-class.html#on_function_during_go">on_function_during_go()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController-class.html">FlatGratingExperimentMetaController</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.ParameterDefinition-class.html#OPENGL_ENUM">OPENGL_ENUM</a><br />
+<span class="index-where">(in <a href="VisionEgg.ParameterDefinition-class.html">ParameterDefinition</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.qtlowlevel-module.html#OSType">OSType</a><br />
+<span class="index-where">(in <a href="VisionEgg.qtlowlevel-module.html">VisionEgg.qtlowlevel</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController-class.html#on_function_during_go">on_function_during_go()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController-class.html">SphereGratingExperimentMetaController</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.qtlowlevel-module.html#OpenMovieFile">OpenMovieFile</a><br />
+<span class="index-where">(in <a href="VisionEgg.qtlowlevel-module.html">VisionEgg.qtlowlevel</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.Daq.Output-class.html">Output</a><br />
+<span class="index-where">(in <a href="VisionEgg.Daq-module.html">VisionEgg.Daq</a>)</font></td>
+</tr>
+</table>
+</td></tr>
+<td valign="top" width="1%"><a name="P"><h2 class="epydoc">P</h2></a></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.qtlowlevel-module.html#paramErr">paramErr</a><br />
+<span class="index-where">(in <a href="VisionEgg.qtlowlevel-module.html">VisionEgg.qtlowlevel</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.SphereMap.SphereMap-class.html#parameters_and_defaults">parameters_and_defaults</a><br />
+<span class="index-where">(in <a href="VisionEgg.SphereMap.SphereMap-class.html">SphereMap</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.Core.ProjectionBaseClass-class.html">ProjectionBaseClass</a><br />
+<span class="index-where">(in <a href="VisionEgg.Core-module.html">VisionEgg.Core</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.ParameterDefinition-class.html">ParameterDefinition</a><br />
+<span class="index-where">(in <a href="VisionEgg-module.html">VisionEgg</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.SphereMap.SphereWindow-class.html#parameters_and_defaults">parameters_and_defaults</a><br />
+<span class="index-where">(in <a href="VisionEgg.SphereMap.SphereWindow-class.html">SphereWindow</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.Core.ProjectionBaseClass-class.html#push_and_set_gl_projection">push_and_set_gl_projection()</a><br />
+<span class="index-where">(in <a href="VisionEgg.Core.ProjectionBaseClass-class.html">ProjectionBaseClass</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.Parameters-class.html">Parameters</a><br />
+<span class="index-where">(in <a href="VisionEgg-module.html">VisionEgg</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.Text.BitmapText-class.html#parameters_and_defaults">parameters_and_defaults</a><br />
+<span class="index-where">(in <a href="VisionEgg.Text.BitmapText-class.html">BitmapText</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.Daq.Output-class.html#put_data">put_data()</a><br />
+<span class="index-where">(in <a href="VisionEgg.Daq.Output-class.html">Output</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.ClassWithParameters-class.html#parameters_and_defaults">parameters_and_defaults</a><br />
+<span class="index-where">(in <a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.Text.GlutTextBase-class.html#parameters_and_defaults">parameters_and_defaults</a><br />
+<span class="index-where">(in <a href="VisionEgg.Text.GlutTextBase-class.html">GlutTextBase</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.DaqLPT.LPTOutput-class.html#put_data">put_data()</a><br />
+<span class="index-where">(in <a href="VisionEgg.DaqLPT.LPTOutput-class.html">LPTOutput</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.Core.FixationSpot-class.html#parameters_and_defaults">parameters_and_defaults</a><br />
+<span class="index-where">(in <a href="VisionEgg.Core.FixationSpot-class.html">FixationSpot</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.Text.StrokeText-class.html#parameters_and_defaults">parameters_and_defaults</a><br />
+<span class="index-where">(in <a href="VisionEgg.Text.StrokeText-class.html">StrokeText</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.Textures.TextureObject-class.html#put_new_framebuffer">put_new_framebuffer()</a><br />
+<span class="index-where">(in <a href="VisionEgg.Textures.TextureObject-class.html">TextureObject</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.Core.ProjectionBaseClass-class.html#parameters_and_defaults">parameters_and_defaults</a><br />
+<span class="index-where">(in <a href="VisionEgg.Core.ProjectionBaseClass-class.html">ProjectionBaseClass</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.Text.Text-class.html#parameters_and_defaults">parameters_and_defaults</a><br />
+<span class="index-where">(in <a href="VisionEgg.Text.Text-class.html">Text</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.Textures.TextureObject-class.html#put_new_image">put_new_image()</a><br />
+<span class="index-where">(in <a href="VisionEgg.Textures.TextureObject-class.html">TextureObject</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.Core.Screen-class.html#parameters_and_defaults">parameters_and_defaults</a><br />
+<span class="index-where">(in <a href="VisionEgg.Core.Screen-class.html">Screen</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.Textures.FixationCross-class.html#parameters_and_defaults">parameters_and_defaults</a><br />
+<span class="index-where">(in <a href="VisionEgg.Textures.FixationCross-class.html">FixationCross</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.Textures.TextureObject-class.html#put_new_image_build_mipmaps">put_new_image_build_mipmaps()</a><br />
+<span class="index-where">(in <a href="VisionEgg.Textures.TextureObject-class.html">TextureObject</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.Core.Viewport-class.html#parameters_and_defaults">parameters_and_defaults</a><br />
+<span class="index-where">(in <a href="VisionEgg.Core.Viewport-class.html">Viewport</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.Textures.SpinningDrum-class.html#parameters_and_defaults">parameters_and_defaults</a><br />
+<span class="index-where">(in <a href="VisionEgg.Textures.SpinningDrum-class.html">SpinningDrum</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.Core.Screen-class.html#put_pixels">put_pixels()</a><br />
+<span class="index-where">(in <a href="VisionEgg.Core.Screen-class.html">Screen</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.Daq.Buffered-class.html#parameters_and_defaults">parameters_and_defaults</a><br />
+<span class="index-where">(in <a href="VisionEgg.Daq.Buffered-class.html">Buffered</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.Textures.TextureStimulus-class.html#parameters_and_defaults">parameters_and_defaults</a><br />
+<span class="index-where">(in <a href="VisionEgg.Textures.TextureStimulus-class.html">TextureStimulus</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.Textures.TextureObject-class.html#put_sub_image">put_sub_image()</a><br />
+<span class="index-where">(in <a href="VisionEgg.Textures.TextureObject-class.html">TextureObject</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.Dots.DotArea2D-class.html#parameters_and_defaults">parameters_and_defaults</a><br />
+<span class="index-where">(in <a href="VisionEgg.Dots.DotArea2D-class.html">DotArea2D</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.Textures.TextureStimulus3D-class.html#parameters_and_defaults">parameters_and_defaults</a><br />
+<span class="index-where">(in <a href="VisionEgg.Textures.TextureStimulus3D-class.html">TextureStimulus3D</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps-module.html">PyroApps</a><br />
+<span class="index-where">(in <a href="VisionEgg-module.html">VisionEgg</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.FlowControl.Presentation-class.html#parameters_and_defaults">parameters_and_defaults</a><br />
+<span class="index-where">(in <a href="VisionEgg.FlowControl.Presentation-class.html">Presentation</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.Textures.TextureStimulusBaseClass-class.html#parameters_and_defaults">parameters_and_defaults</a><br />
+<span class="index-where">(in <a href="VisionEgg.Textures.TextureStimulusBaseClass-class.html">TextureStimulusBaseClass</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroClient-module.html">PyroClient</a><br />
+<span class="index-where">(in <a href="VisionEgg-module.html">VisionEgg</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.Gratings.AlphaGratingCommon-class.html#parameters_and_defaults">parameters_and_defaults</a><br />
+<span class="index-where">(in <a href="VisionEgg.Gratings.AlphaGratingCommon-class.html">AlphaGratingCommon</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.WrappedText.WrappedText-class.html#parameters_and_defaults">parameters_and_defaults</a><br />
+<span class="index-where">(in <a href="VisionEgg.WrappedText.WrappedText-class.html">WrappedText</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroClient.PyroClient-class.html">PyroClient</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroClient-module.html">VisionEgg.PyroClient</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.Gratings.LuminanceGratingCommon-class.html#parameters_and_defaults">parameters_and_defaults</a><br />
+<span class="index-where">(in <a href="VisionEgg.Gratings.LuminanceGratingCommon-class.html">LuminanceGratingCommon</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.ParameterTypes.ParameterTypeDef-class.html">ParameterTypeDef</a><br />
+<span class="index-where">(in <a href="VisionEgg.ParameterTypes-module.html">VisionEgg.ParameterTypes</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroHelpers.PyroConstantController-class.html">PyroConstantController</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroHelpers-module.html">VisionEgg.PyroHelpers</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.Gratings.SinGrating2D-class.html#parameters_and_defaults">parameters_and_defaults</a><br />
+<span class="index-where">(in <a href="VisionEgg.Gratings.SinGrating2D-class.html">SinGrating2D</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.ParameterTypes-module.html">ParameterTypes</a><br />
+<span class="index-where">(in <a href="VisionEgg-module.html">VisionEgg</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroHelpers.PyroEncapsulatedController-class.html">PyroEncapsulatedController</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroHelpers-module.html">VisionEgg.PyroHelpers</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.Gratings.SinGrating3D-class.html#parameters_and_defaults">parameters_and_defaults</a><br />
+<span class="index-where">(in <a href="VisionEgg.Gratings.SinGrating3D-class.html">SinGrating3D</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.Core.PerspectiveProjection-class.html">PerspectiveProjection</a><br />
+<span class="index-where">(in <a href="VisionEgg.Core-module.html">VisionEgg.Core</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroHelpers.PyroEvalStringController-class.html">PyroEvalStringController</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroHelpers-module.html">VisionEgg.PyroHelpers</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.MoreStimuli.Arrow-class.html#parameters_and_defaults">parameters_and_defaults</a><br />
+<span class="index-where">(in <a href="VisionEgg.MoreStimuli.Arrow-class.html">Arrow</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PlatformDependent-module.html">PlatformDependent</a><br />
+<span class="index-where">(in <a href="VisionEgg-module.html">VisionEgg</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroHelpers.PyroExecStringController-class.html">PyroExecStringController</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroHelpers-module.html">VisionEgg.PyroHelpers</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.MoreStimuli.FilledCircle-class.html#parameters_and_defaults">parameters_and_defaults</a><br />
+<span class="index-where">(in <a href="VisionEgg.MoreStimuli.FilledCircle-class.html">FilledCircle</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.posix_maxpriority-module.html">posix_maxpriority</a><br />
+<span class="index-where">(in <a href="VisionEgg-module.html">VisionEgg</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroHelpers-module.html">PyroHelpers</a><br />
+<span class="index-where">(in <a href="VisionEgg-module.html">VisionEgg</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.MoreStimuli.Rectangle3D-class.html#parameters_and_defaults">parameters_and_defaults</a><br />
+<span class="index-where">(in <a href="VisionEgg.MoreStimuli.Rectangle3D-class.html">Rectangle3D</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.Core-module.html#post_gl_init">post_gl_init()</a><br />
+<span class="index-where">(in <a href="VisionEgg.Core-module.html">VisionEgg.Core</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroHelpers.PyroListenController-class.html">PyroListenController</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroHelpers-module.html">VisionEgg.PyroHelpers</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.MoreStimuli.Target2D-class.html#parameters_and_defaults">parameters_and_defaults</a><br />
+<span class="index-where">(in <a href="VisionEgg.MoreStimuli.Target2D-class.html">Target2D</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.FlowControl.Presentation-class.html">Presentation</a><br />
+<span class="index-where">(in <a href="VisionEgg.FlowControl-module.html">VisionEgg.FlowControl</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroHelpers.PyroLocalDictController-class.html">PyroLocalDictController</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroHelpers-module.html">VisionEgg.PyroHelpers</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.EPhysGUI.Loop-class.html#parameters_and_defaults">parameters_and_defaults</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.EPhysGUI.Loop-class.html">Loop</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.Core.FrameTimer-class.html#print_histogram">print_histogram()</a><br />
+<span class="index-where">(in <a href="VisionEgg.Core.FrameTimer-class.html">FrameTimer</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroHelpers.PyroServer-class.html">PyroServer</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroHelpers-module.html">VisionEgg.PyroHelpers</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.SphereMap.AzElGrid-class.html#parameters_and_defaults">parameters_and_defaults</a><br />
+<span class="index-where">(in <a href="VisionEgg.SphereMap.AzElGrid-class.html">AzElGrid</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.GUI.ProgressBar-class.html">ProgressBar</a><br />
+<span class="index-where">(in <a href="VisionEgg.GUI-module.html">VisionEgg.GUI</a>)</font></td>
+<td width="33%" class="link-index"> </td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.SphereMap.SphereGrating-class.html#parameters_and_defaults">parameters_and_defaults</a><br />
+<span class="index-where">(in <a href="VisionEgg.SphereMap.SphereGrating-class.html">SphereGrating</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.Core.Projection-class.html">Projection</a><br />
+<span class="index-where">(in <a href="VisionEgg.Core-module.html">VisionEgg.Core</a>)</font></td>
+<td width="33%" class="link-index"> </td>
+</tr>
+</table>
+</td></tr>
+<td valign="top" width="1%"><a name="Q"><h2 class="epydoc">Q</h2></a></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.qtlowlevel-module.html#QTGetCFConstant">QTGetCFConstant</a><br />
+<span class="index-where">(in <a href="VisionEgg.qtlowlevel-module.html">VisionEgg.qtlowlevel</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.qtlowlevel-module.html#QTVisualContextRef">QTVisualContextRef</a><br />
+<span class="index-where">(in <a href="VisionEgg.qtlowlevel-module.html">VisionEgg.qtlowlevel</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.GridServer.GridMetaController-class.html#quit_server">quit_server()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.GridServer.GridMetaController-class.html">GridMetaController</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.qtlowlevel-module.html">qtlowlevel</a><br />
+<span class="index-where">(in <a href="VisionEgg-module.html">VisionEgg</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.Core.Screen-class.html#query_refresh_rate">query_refresh_rate()</a><br />
+<span class="index-where">(in <a href="VisionEgg.Core.Screen-class.html">Screen</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController-class.html#quit_server">quit_server()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController-class.html">MouseTargetExperimentMetaController</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.qtlowlevel.qtlowlevelError-class.html">qtlowlevelError</a><br />
+<span class="index-where">(in <a href="VisionEgg.qtlowlevel-module.html">VisionEgg.qtlowlevel</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PlatformDependent-module.html#query_refresh_rate">query_refresh_rate()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PlatformDependent-module.html">VisionEgg.PlatformDependent</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html#quit_server">quit_server()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html">ScreenPositionControlFrame</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.qtlowlevel-module.html#QTMLClient">QTMLClient</a><br />
+<span class="index-where">(in <a href="VisionEgg.qtlowlevel-module.html">VisionEgg.qtlowlevel</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.QuickTime-module.html">QuickTime</a><br />
+<span class="index-where">(in <a href="VisionEgg-module.html">VisionEgg</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController-class.html#quit_server">quit_server()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController-class.html">ScreenPositionMetaController</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.qtmovie-module.html">qtmovie</a><br />
+<span class="index-where">(in <a href="VisionEgg-module.html">VisionEgg</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.EPhysGUI.AppWindow-class.html#quit">quit()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.EPhysGUI.AppWindow-class.html">AppWindow</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController-class.html#quit_server">quit_server()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController-class.html">SphereGratingExperimentMetaController</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.qtlowlevel.QTNewMoviePropertyElement-class.html">QTNewMoviePropertyElement</a><br />
+<span class="index-where">(in <a href="VisionEgg.qtlowlevel-module.html">VisionEgg.qtlowlevel</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController-class.html#quit_server">quit_server()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController-class.html">ColorCalMetaController</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController-class.html#quit_server">quit_server()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController-class.html">SpinningDrumExperimentMetaController</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.qtlowlevel-module.html#QTPropertyClass">QTPropertyClass</a><br />
+<span class="index-where">(in <a href="VisionEgg.qtlowlevel-module.html">VisionEgg.qtlowlevel</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.DropinServer.DropinMetaController-class.html#quit_server">quit_server()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.DropinServer.DropinMetaController-class.html">DropinMetaController</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController-class.html#quit_server">quit_server()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController-class.html">TargetExperimentMetaController</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.qtlowlevel-module.html#QTPropertyID">QTPropertyID</a><br />
+<span class="index-where">(in <a href="VisionEgg.qtlowlevel-module.html">VisionEgg.qtlowlevel</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#quit_server">quit_server()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html">StimulusControlFrame</a>)</font></td>
+<td width="33%" class="link-index"> </td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.qtlowlevel-module.html#QTPropertyValuePtr">QTPropertyValuePtr</a><br />
+<span class="index-where">(in <a href="VisionEgg.qtlowlevel-module.html">VisionEgg.qtlowlevel</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController-class.html#quit_server">quit_server()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController-class.html">FlatGratingExperimentMetaController</a>)</font></td>
+<td width="33%" class="link-index"> </td>
+</tr>
+</table>
+</td></tr>
+<td valign="top" width="1%"><a name="R"><h2 class="epydoc">R</h2></a></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.GLTrace-module.html#raw_args_by_function">raw_args_by_function</a><br />
+<span class="index-where">(in <a href="VisionEgg.GLTrace-module.html">VisionEgg.GLTrace</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg-module.html#recursive_base_class_finder">recursive_base_class_finder()</a><br />
+<span class="index-where">(in <a href="VisionEgg-module.html">VisionEgg</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.FlowControl.Controller-class.html#returns_type">returns_type()</a><br />
+<span class="index-where">(in <a href="VisionEgg.FlowControl.Controller-class.html">Controller</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.ParameterTypes.Real-class.html">Real</a><br />
+<span class="index-where">(in <a href="VisionEgg.ParameterTypes-module.html">VisionEgg.ParameterTypes</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg-module.html#release_name">release_name</a><br />
+<span class="index-where">(in <a href="VisionEgg-module.html">VisionEgg</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.MouseTargetServer-module.html#right">right</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.MouseTargetServer-module.html">VisionEgg.PyroApps.MouseTargetServer</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.ParameterTypes.RealMC-class.html">RealMC</a><br />
+<span class="index-where">(in <a href="VisionEgg.ParameterTypes-module.html">VisionEgg.ParameterTypes</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.FlowControl.Presentation-class.html#remove_controller">remove_controller()</a><br />
+<span class="index-where">(in <a href="VisionEgg.FlowControl.Presentation-class.html">Presentation</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.Core.ProjectionBaseClass-class.html#rotate">rotate()</a><br />
+<span class="index-where">(in <a href="VisionEgg.Core.ProjectionBaseClass-class.html">ProjectionBaseClass</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.win32_maxpriority-module.html#REALTIME_PRIORITY_CLASS">REALTIME_PRIORITY_CLASS</a><br />
+<span class="index-where">(in <a href="VisionEgg.win32_maxpriority-module.html">VisionEgg.win32_maxpriority</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.EPhysGUI.ScrollListFrame-class.html#remove_selected">remove_selected()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.EPhysGUI.ScrollListFrame-class.html">ScrollListFrame</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.ThreeDeeMath.TransformMatrix-class.html#rotate">rotate()</a><br />
+<span class="index-where">(in <a href="VisionEgg.ThreeDeeMath.TransformMatrix-class.html">TransformMatrix</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.Textures.SpinningDrum-class.html#rebuild_display_list">rebuild_display_list()</a><br />
+<span class="index-where">(in <a href="VisionEgg.Textures.SpinningDrum-class.html">SpinningDrum</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.EPhysGUI.Loop-class.html#reset">reset()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.EPhysGUI.Loop-class.html">Loop</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.GLTrace.Wrapper-class.html#run">run()</a><br />
+<span class="index-where">(in <a href="VisionEgg.GLTrace.Wrapper-class.html">Wrapper</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.qtlowlevel.Rect-class.html">Rect</a><br />
+<span class="index-where">(in <a href="VisionEgg.qtlowlevel-module.html">VisionEgg.qtlowlevel</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.EPhysGUI.AppWindow-class.html#reset_autosave_basename">reset_autosave_basename()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.EPhysGUI.AppWindow-class.html">AppWindow</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.EPhysServer.EPhysServer-class.html#run_demoscript">run_demoscript()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.EPhysServer.EPhysServer-class.html">EPhysServer</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.qtmovie.Rect-class.html">Rect</a><br />
+<span class="index-where">(in <a href="VisionEgg.qtmovie-module.html">VisionEgg.qtmovie</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.ResponseControl-module.html">ResponseControl</a><br />
+<span class="index-where">(in <a href="VisionEgg-module.html">VisionEgg</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.FlowControl.Presentation-class.html#run_forever">run_forever()</a><br />
+<span class="index-where">(in <a href="VisionEgg.FlowControl.Presentation-class.html">Presentation</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.MoreStimuli.Rectangle3D-class.html">Rectangle3D</a><br />
+<span class="index-where">(in <a href="VisionEgg.MoreStimuli-module.html">VisionEgg.MoreStimuli</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.ResponseControl.ResponseController-class.html">ResponseController</a><br />
+<span class="index-where">(in <a href="VisionEgg.ResponseControl-module.html">VisionEgg.ResponseControl</a>)</font></td>
+<td width="33%" class="link-index"> </td>
+</tr>
+</table>
+</td></tr>
+<td valign="top" width="1%"><a name="S"><h2 class="epydoc">S</h2></a></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.GUI.GraphicsConfigurationWindow-class.html#save">save()</a><br />
+<span class="index-where">(in <a href="VisionEgg.GUI.GraphicsConfigurationWindow-class.html">GraphicsConfigurationWindow</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.EPhysGUI.GammaFrame-class.html#set_from_file">set_from_file()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.EPhysGUI.GammaFrame-class.html">GammaFrame</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.Daq.SignalType-class.html">SignalType</a><br />
+<span class="index-where">(in <a href="VisionEgg.Daq-module.html">VisionEgg.Daq</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html#save">save()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html">ScreenPositionControlFrame</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.GUI.GraphicsConfigurationWindow-class.html#set_gamma_file">set_gamma_file()</a><br />
+<span class="index-where">(in <a href="VisionEgg.GUI.GraphicsConfigurationWindow-class.html">GraphicsConfigurationWindow</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.Core.SimplePerspectiveProjection-class.html">SimplePerspectiveProjection</a><br />
+<span class="index-where">(in <a href="VisionEgg.Core-module.html">VisionEgg.Core</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.EPhysGUI.AppWindow-class.html#save_config">save_config()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.EPhysGUI.AppWindow-class.html">AppWindow</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.Core.Screen-class.html#set_gamma_ramp">set_gamma_ramp()</a><br />
+<span class="index-where">(in <a href="VisionEgg.Core.Screen-class.html">Screen</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.Gratings.SinGrating2D-class.html">SinGrating2D</a><br />
+<span class="index-where">(in <a href="VisionEgg.Gratings-module.html">VisionEgg.Gratings</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.EPhysGUI.AppWindow-class.html#save_image_sequence">save_image_sequence()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.EPhysGUI.AppWindow-class.html">AppWindow</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.EPhysServer.EPhysServer-class.html#set_gamma_ramp">set_gamma_ramp()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.EPhysServer.EPhysServer-class.html">EPhysServer</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.Gratings.SinGrating3D-class.html">SinGrating3D</a><br />
+<span class="index-where">(in <a href="VisionEgg.Gratings-module.html">VisionEgg.Gratings</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.EPhysServer.EPhysServer-class.html#save_image_sequence">save_image_sequence()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.EPhysServer.EPhysServer-class.html">EPhysServer</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.Core.ProjectionBaseClass-class.html#set_gl_modelview">set_gl_modelview()</a><br />
+<span class="index-where">(in <a href="VisionEgg.Core.ProjectionBaseClass-class.html">ProjectionBaseClass</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.Core.Screen-class.html#size">size</a><br />
+<span class="index-where">(in <a href="VisionEgg.Core.Screen-class.html">Screen</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.Configuration-module.html#save_settings">save_settings()</a><br />
+<span class="index-where">(in <a href="VisionEgg.Configuration-module.html">VisionEgg.Configuration</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.Core.ProjectionBaseClass-class.html#set_gl_projection">set_gl_projection()</a><br />
+<span class="index-where">(in <a href="VisionEgg.Core.ProjectionBaseClass-class.html">ProjectionBaseClass</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.EPhysGUI.AppWindow-class.html#sleep_with_progress">sleep_with_progress()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.EPhysGUI.AppWindow-class.html">AppWindow</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.Core.ProjectionBaseClass-class.html#scale">scale()</a><br />
+<span class="index-where">(in <a href="VisionEgg.Core.ProjectionBaseClass-class.html">ProjectionBaseClass</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#set_loopable_variable">set_loopable_variable()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html">StimulusControlFrame</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.TCPController.SocketListenController-class.html">SocketListenController</a><br />
+<span class="index-where">(in <a href="VisionEgg.TCPController-module.html">VisionEgg.TCPController</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.ThreeDeeMath.TransformMatrix-class.html#scale">scale()</a><br />
+<span class="index-where">(in <a href="VisionEgg.ThreeDeeMath.TransformMatrix-class.html">TransformMatrix</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html#set_loopable_variable">set_loopable_variable()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html">ScreenPositionControlFrame</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.SphereMap.SphereGrating-class.html">SphereGrating</a><br />
+<span class="index-where">(in <a href="VisionEgg.SphereMap-module.html">VisionEgg.SphereMap</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.posix_maxpriority-module.html#SCHED_FIFO">SCHED_FIFO</a><br />
+<span class="index-where">(in <a href="VisionEgg.posix_maxpriority-module.html">VisionEgg.posix_maxpriority</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.Textures.TextureObject-class.html#set_mag_filter">set_mag_filter()</a><br />
+<span class="index-where">(in <a href="VisionEgg.Textures.TextureObject-class.html">TextureObject</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame-class.html">SphereGratingControlFrame</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.SphereGratingGUI-module.html">VisionEgg.PyroApps.SphereGratingGUI</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.posix_maxpriority-module.html#sched_get_priority_max">sched_get_priority_max</a><br />
+<span class="index-where">(in <a href="VisionEgg.posix_maxpriority-module.html">VisionEgg.posix_maxpriority</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.Textures.TextureObject-class.html#set_min_filter">set_min_filter()</a><br />
+<span class="index-where">(in <a href="VisionEgg.Textures.TextureObject-class.html">TextureObject</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController-class.html">SphereGratingExperimentMetaController</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.SphereGratingServer-module.html">VisionEgg.PyroApps.SphereGratingServer</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.posix_maxpriority-module.html#SCHED_RR">SCHED_RR</a><br />
+<span class="index-where">(in <a href="VisionEgg.posix_maxpriority-module.html">VisionEgg.posix_maxpriority</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.EPhysGUI.GammaFrame-class.html#set_monitor_default">set_monitor_default()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.EPhysGUI.GammaFrame-class.html">GammaFrame</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.SphereGratingGUI-module.html">SphereGratingGUI</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps-module.html">VisionEgg.PyroApps</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.Core.Screen-class.html">Screen</a><br />
+<span class="index-where">(in <a href="VisionEgg.Core-module.html">VisionEgg.Core</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.FlowControl.EncapsulatedController-class.html#set_new_controller">set_new_controller()</a><br />
+<span class="index-where">(in <a href="VisionEgg.FlowControl.EncapsulatedController-class.html">EncapsulatedController</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.SphereGratingGUI.SphereGratingMetaParameters-class.html">SphereGratingMetaParameters</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.SphereGratingGUI-module.html">VisionEgg.PyroApps.SphereGratingGUI</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html">ScreenPositionControlFrame</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.ScreenPositionGUI-module.html">VisionEgg.PyroApps.ScreenPositionGUI</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.EPhysServer.EPhysServer-class.html#set_next_stimkey">set_next_stimkey()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.EPhysServer.EPhysServer-class.html">EPhysServer</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.SphereGratingServer-module.html">SphereGratingServer</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps-module.html">VisionEgg.PyroApps</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.ScreenPositionGUI-module.html">ScreenPositionGUI</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps-module.html">VisionEgg.PyroApps</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.EPhysServer.EPhysServer-class.html#set_override_t_abs_sec">set_override_t_abs_sec()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.EPhysServer.EPhysServer-class.html">EPhysServer</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.SphereMap-module.html">SphereMap</a><br />
+<span class="index-where">(in <a href="VisionEgg-module.html">VisionEgg</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController-class.html">ScreenPositionMetaController</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.ScreenPositionServer-module.html">VisionEgg.PyroApps.ScreenPositionServer</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#set_param_dict">set_param_dict()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html">StimulusControlFrame</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.SphereMap.SphereMap-class.html">SphereMap</a><br />
+<span class="index-where">(in <a href="VisionEgg.SphereMap-module.html">VisionEgg.SphereMap</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionParameters-class.html">ScreenPositionParameters</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.ScreenPositionGUI-module.html">VisionEgg.PyroApps.ScreenPositionGUI</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html#set_param_dict">set_param_dict()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html">ScreenPositionControlFrame</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.SphereMap.SphereWindow-class.html">SphereWindow</a><br />
+<span class="index-where">(in <a href="VisionEgg.SphereMap-module.html">VisionEgg.SphereMap</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.ScreenPositionServer-module.html">ScreenPositionServer</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps-module.html">VisionEgg.PyroApps</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController-class.html#set_parameters">set_parameters()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController-class.html">ColorCalMetaController</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.Textures.SpinningDrum-class.html">SpinningDrum</a><br />
+<span class="index-where">(in <a href="VisionEgg.Textures-module.html">VisionEgg.Textures</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.EPhysGUI.ScrollListFrame-class.html">ScrollListFrame</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.EPhysGUI-module.html">VisionEgg.PyroApps.EPhysGUI</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.DropinServer.DropinMetaController-class.html#set_parameters">set_parameters()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.DropinServer.DropinMetaController-class.html">DropinMetaController</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame-class.html">SpinningDrumControlFrame</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.SpinningDrumGUI-module.html">VisionEgg.PyroApps.SpinningDrumGUI</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.TCPController.SocketListenController-class.html#send_raw_text">send_raw_text()</a><br />
+<span class="index-where">(in <a href="VisionEgg.TCPController.SocketListenController-class.html">SocketListenController</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController-class.html#set_parameters">set_parameters()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController-class.html">FlatGratingExperimentMetaController</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController-class.html">SpinningDrumExperimentMetaController</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.SpinningDrumServer-module.html">VisionEgg.PyroApps.SpinningDrumServer</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame-class.html#send_values">send_values()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame-class.html">ColorCalControlFrame</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.GridServer.GridMetaController-class.html#set_parameters">set_parameters()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.GridServer.GridMetaController-class.html">GridMetaController</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.SpinningDrumGUI-module.html">SpinningDrumGUI</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps-module.html">VisionEgg.PyroApps</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.DropinGUI.DropinControlFrame-class.html#send_values">send_values()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.DropinGUI.DropinControlFrame-class.html">DropinControlFrame</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController-class.html#set_parameters">set_parameters()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController-class.html">MouseTargetExperimentMetaController</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumMetaParameters-class.html">SpinningDrumMetaParameters</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.SpinningDrumGUI-module.html">VisionEgg.PyroApps.SpinningDrumGUI</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#send_values">send_values()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html">StimulusControlFrame</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController-class.html#set_parameters">set_parameters()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController-class.html">ScreenPositionMetaController</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.SpinningDrumServer-module.html">SpinningDrumServer</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps-module.html">VisionEgg.PyroApps</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame-class.html#send_values">send_values()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame-class.html">FlatGratingControlFrame</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController-class.html#set_parameters">set_parameters()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController-class.html">SphereGratingExperimentMetaController</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#standalone_connect">standalone_connect()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html">StimulusControlFrame</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.GridGUI.GridControlFrame-class.html#send_values">send_values()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.GridGUI.GridControlFrame-class.html">GridControlFrame</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController-class.html#set_parameters">set_parameters()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController-class.html">SpinningDrumExperimentMetaController</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.GUI.GraphicsConfigurationWindow-class.html#start">start()</a><br />
+<span class="index-where">(in <a href="VisionEgg.GUI.GraphicsConfigurationWindow-class.html">GraphicsConfigurationWindow</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame-class.html#send_values">send_values()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame-class.html">MouseTargetControlFrame</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController-class.html#set_parameters">set_parameters()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController-class.html">TargetExperimentMetaController</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg-module.html#start_default_logging">start_default_logging()</a><br />
+<span class="index-where">(in <a href="VisionEgg-module.html">VisionEgg</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html#send_values">send_values()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html">ScreenPositionControlFrame</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#set_parameters_dict">set_parameters_dict()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html">StimulusControlFrame</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.EPhysServer-module.html#start_server">start_server()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.EPhysServer-module.html">VisionEgg.PyroApps.EPhysServer</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame-class.html#send_values">send_values()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame-class.html">SphereGratingControlFrame</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PlatformDependent-module.html#set_priority">set_priority()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PlatformDependent-module.html">VisionEgg.PlatformDependent</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.qtlowlevel-module.html#StartMovie">StartMovie</a><br />
+<span class="index-where">(in <a href="VisionEgg.qtlowlevel-module.html">VisionEgg.qtlowlevel</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame-class.html#send_values">send_values()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame-class.html">SpinningDrumControlFrame</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.Textures.TextureObject-class.html#set_priority">set_priority()</a><br />
+<span class="index-where">(in <a href="VisionEgg.Textures.TextureObject-class.html">TextureObject</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.qtmovie.Movie-class.html#StartMovie">StartMovie()</a><br />
+<span class="index-where">(in <a href="VisionEgg.qtmovie.Movie-class.html">Movie</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.TargetGUI.TargetControlFrame-class.html#send_values">send_values()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.TargetGUI.TargetControlFrame-class.html">TargetControlFrame</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.EPhysServer.EPhysServer-class.html#set_quit_status">set_quit_status()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.EPhysServer.EPhysServer-class.html">EPhysServer</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.Core.ProjectionBaseClass-class.html#stateless_rotate">stateless_rotate()</a><br />
+<span class="index-where">(in <a href="VisionEgg.Core.ProjectionBaseClass-class.html">ProjectionBaseClass</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.ParameterTypes.Sequence-class.html">Sequence</a><br />
+<span class="index-where">(in <a href="VisionEgg.ParameterTypes-module.html">VisionEgg.ParameterTypes</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.posix_maxpriority-module.html#set_self_policy_priority">set_self_policy_priority</a><br />
+<span class="index-where">(in <a href="VisionEgg.posix_maxpriority-module.html">VisionEgg.posix_maxpriority</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.Core.ProjectionBaseClass-class.html#stateless_scale">stateless_scale()</a><br />
+<span class="index-where">(in <a href="VisionEgg.Core.ProjectionBaseClass-class.html">ProjectionBaseClass</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.ParameterTypes.Sequence2-class.html">Sequence2</a><br />
+<span class="index-where">(in <a href="VisionEgg.ParameterTypes-module.html">VisionEgg.ParameterTypes</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.win32_maxpriority-module.html#set_self_process_priority_class">set_self_process_priority_class</a><br />
+<span class="index-where">(in <a href="VisionEgg.win32_maxpriority-module.html">VisionEgg.win32_maxpriority</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.Core.ProjectionBaseClass-class.html#stateless_translate">stateless_translate()</a><br />
+<span class="index-where">(in <a href="VisionEgg.Core.ProjectionBaseClass-class.html">ProjectionBaseClass</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.ParameterTypes.Sequence3-class.html">Sequence3</a><br />
+<span class="index-where">(in <a href="VisionEgg.ParameterTypes-module.html">VisionEgg.ParameterTypes</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.win32_maxpriority-module.html#set_self_thread_priority">set_self_thread_priority</a><br />
+<span class="index-where">(in <a href="VisionEgg.win32_maxpriority-module.html">VisionEgg.win32_maxpriority</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.Core.Stimulus-class.html">Stimulus</a><br />
+<span class="index-where">(in <a href="VisionEgg.Core-module.html">VisionEgg.Core</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.ParameterTypes.Sequence4-class.html">Sequence4</a><br />
+<span class="index-where">(in <a href="VisionEgg.ParameterTypes-module.html">VisionEgg.ParameterTypes</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.Core.Screen-class.html#set_size">set_size()</a><br />
+<span class="index-where">(in <a href="VisionEgg.Core.Screen-class.html">Screen</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html">StimulusControlFrame</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.EPhysGUIUtils-module.html">VisionEgg.PyroApps.EPhysGUIUtils</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.ParameterTypes.Sequence4x4-class.html">Sequence4x4</a><br />
+<span class="index-where">(in <a href="VisionEgg.ParameterTypes-module.html">VisionEgg.ParameterTypes</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.EPhysServer.EPhysServer-class.html#set_stim_onset_cal">set_stim_onset_cal()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.EPhysServer.EPhysServer-class.html">EPhysServer</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.posix_maxpriority-module.html#stop_memory_paging">stop_memory_paging</a><br />
+<span class="index-where">(in <a href="VisionEgg.posix_maxpriority-module.html">VisionEgg.posix_maxpriority</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.EPhysServer-module.html#server_modules">server_modules</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.EPhysServer-module.html">VisionEgg.PyroApps.EPhysServer</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.EPhysServer.EPhysServer-class.html#set_stim_onset_cal_location">set_stim_onset_cal_location()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.EPhysServer.EPhysServer-class.html">EPhysServer</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg-module.html#stop_watching_exceptions">stop_watching_exceptions()</a><br />
+<span class="index-where">(in <a href="VisionEgg-module.html">VisionEgg</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.ClassWithParameters-class.html#set">set()</a><br />
+<span class="index-where">(in <a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.EPhysGUI.AppWindow-class.html#set_stim_onset_cal_position">set_stim_onset_cal_position()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.EPhysGUI.AppWindow-class.html">AppWindow</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.ParameterTypes.String-class.html">String</a><br />
+<span class="index-where">(in <a href="VisionEgg.ParameterTypes-module.html">VisionEgg.ParameterTypes</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.EPhysGUI.AppWindow-class.html#set_autosave_dir">set_autosave_dir()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.EPhysGUI.AppWindow-class.html">AppWindow</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg-module.html#set_time_func_to_frame_locked">set_time_func_to_frame_locked()</a><br />
+<span class="index-where">(in <a href="VisionEgg-module.html">VisionEgg</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.ParameterTypes.StringMC-class.html">StringMC</a><br />
+<span class="index-where">(in <a href="VisionEgg.ParameterTypes-module.html">VisionEgg.ParameterTypes</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.FlowControl.EvalStringController-class.html#set_between_go_eval_string">set_between_go_eval_string()</a><br />
+<span class="index-where">(in <a href="VisionEgg.FlowControl.EvalStringController-class.html">EvalStringController</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg-module.html#set_time_func_to_true_time">set_time_func_to_true_time()</a><br />
+<span class="index-where">(in <a href="VisionEgg-module.html">VisionEgg</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.Text.StrokeText-class.html">StrokeText</a><br />
+<span class="index-where">(in <a href="VisionEgg.Text-module.html">VisionEgg.Text</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.FlowControl.ExecStringController-class.html#set_between_go_exec_string">set_between_go_exec_string()</a><br />
+<span class="index-where">(in <a href="VisionEgg.FlowControl.ExecStringController-class.html">ExecStringController</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.Textures.TextureObject-class.html#set_wrap_mode_r">set_wrap_mode_r()</a><br />
+<span class="index-where">(in <a href="VisionEgg.Textures.TextureObject-class.html">TextureObject</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.ParameterTypes.SubClass-class.html">SubClass</a><br />
+<span class="index-where">(in <a href="VisionEgg.ParameterTypes-module.html">VisionEgg.ParameterTypes</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.FlowControl.ConstantController-class.html#set_between_go_value">set_between_go_value()</a><br />
+<span class="index-where">(in <a href="VisionEgg.FlowControl.ConstantController-class.html">ConstantController</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.Textures.TextureObject-class.html#set_wrap_mode_s">set_wrap_mode_s()</a><br />
+<span class="index-where">(in <a href="VisionEgg.Textures.TextureObject-class.html">TextureObject</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.Core-module.html#sum">sum()</a><br />
+<span class="index-where">(in <a href="VisionEgg.Core-module.html">VisionEgg.Core</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.Textures.TextureObject-class.html#set_border_color">set_border_color()</a><br />
+<span class="index-where">(in <a href="VisionEgg.Textures.TextureObject-class.html">TextureObject</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.Textures.TextureObject-class.html#set_wrap_mode_t">set_wrap_mode_t()</a><br />
+<span class="index-where">(in <a href="VisionEgg.Textures.TextureObject-class.html">TextureObject</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.Core-module.html#swap_buffers">swap_buffers()</a><br />
+<span class="index-where">(in <a href="VisionEgg.Core-module.html">VisionEgg.Core</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.FlowControl.EvalStringController-class.html#set_during_go_eval_string">set_during_go_eval_string()</a><br />
+<span class="index-where">(in <a href="VisionEgg.FlowControl.EvalStringController-class.html">EvalStringController</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.qtlowlevel-module.html#SetMovieBox">SetMovieBox</a><br />
+<span class="index-where">(in <a href="VisionEgg.qtlowlevel-module.html">VisionEgg.qtlowlevel</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.EPhysGUI.AppWindow-class.html#switch_to_stimkey">switch_to_stimkey()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.EPhysGUI.AppWindow-class.html">AppWindow</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.FlowControl.ExecStringController-class.html#set_during_go_exec_string">set_during_go_exec_string()</a><br />
+<span class="index-where">(in <a href="VisionEgg.FlowControl.ExecStringController-class.html">ExecStringController</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.qtmovie.Movie-class.html#SetMovieBox">SetMovieBox()</a><br />
+<span class="index-where">(in <a href="VisionEgg.qtmovie.Movie-class.html">Movie</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PlatformDependent-module.html#sync_swap_with_vbl_post_gl_init">sync_swap_with_vbl_post_gl_init()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PlatformDependent-module.html">VisionEgg.PlatformDependent</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.FlowControl.ConstantController-class.html#set_during_go_value">set_during_go_value()</a><br />
+<span class="index-where">(in <a href="VisionEgg.FlowControl.ConstantController-class.html">ConstantController</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.GUI-module.html#showexception">showexception()</a><br />
+<span class="index-where">(in <a href="VisionEgg.GUI-module.html">VisionEgg.GUI</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PlatformDependent-module.html#sync_swap_with_vbl_pre_gl_init">sync_swap_with_vbl_pre_gl_init()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PlatformDependent-module.html">VisionEgg.PlatformDependent</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.FlowControl.Controller-class.html#set_eval_frequency">set_eval_frequency()</a><br />
+<span class="index-where">(in <a href="VisionEgg.FlowControl.Controller-class.html">Controller</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.Textures-module.html#shrink_filter">shrink_filter</a><br />
+<span class="index-where">(in <a href="VisionEgg.Textures-module.html">VisionEgg.Textures</a>)</font></td>
+<td width="33%" class="link-index"> </td>
+</tr>
+</table>
+</td></tr>
+<td valign="top" width="1%"><a name="T"><h2 class="epydoc">T</h2></a></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.MoreStimuli.Target2D-class.html">Target2D</a><br />
+<span class="index-where">(in <a href="VisionEgg.MoreStimuli-module.html">VisionEgg.MoreStimuli</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.Textures.TextureStimulusBaseClass-class.html">TextureStimulusBaseClass</a><br />
+<span class="index-where">(in <a href="VisionEgg.Textures-module.html">VisionEgg.Textures</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.DropinGUI.DropinControlFrame-class.html#title">title</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.DropinGUI.DropinControlFrame-class.html">DropinControlFrame</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.MouseTargetServer-module.html#target_h">target_h</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.MouseTargetServer-module.html">VisionEgg.PyroApps.MouseTargetServer</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.Textures.TextureTooLargeError-class.html">TextureTooLargeError</a><br />
+<span class="index-where">(in <a href="VisionEgg.Textures-module.html">VisionEgg.Textures</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame-class.html#title">title</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame-class.html">FlatGratingControlFrame</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.MouseTargetServer-module.html#target_w">target_w</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.MouseTargetServer-module.html">VisionEgg.PyroApps.MouseTargetServer</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.win32_maxpriority-module.html#THREAD_PRIORITY_ABOVE_NORMAL">THREAD_PRIORITY_ABOVE_NORMAL</a><br />
+<span class="index-where">(in <a href="VisionEgg.win32_maxpriority-module.html">VisionEgg.win32_maxpriority</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.GridGUI.GridControlFrame-class.html#title">title</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.GridGUI.GridControlFrame-class.html">GridControlFrame</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.TargetGUI.TargetControlFrame-class.html">TargetControlFrame</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.TargetGUI-module.html">VisionEgg.PyroApps.TargetGUI</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.win32_maxpriority-module.html#THREAD_PRIORITY_BELOW_NORMAL">THREAD_PRIORITY_BELOW_NORMAL</a><br />
+<span class="index-where">(in <a href="VisionEgg.win32_maxpriority-module.html">VisionEgg.win32_maxpriority</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame-class.html#title">title</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame-class.html">MouseTargetControlFrame</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController-class.html">TargetExperimentMetaController</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.TargetServer-module.html">VisionEgg.PyroApps.TargetServer</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.win32_maxpriority-module.html#THREAD_PRIORITY_HIGHEST">THREAD_PRIORITY_HIGHEST</a><br />
+<span class="index-where">(in <a href="VisionEgg.win32_maxpriority-module.html">VisionEgg.win32_maxpriority</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame-class.html#title">title</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame-class.html">SphereGratingControlFrame</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.TargetGUI-module.html">TargetGUI</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps-module.html">VisionEgg.PyroApps</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.win32_maxpriority-module.html#THREAD_PRIORITY_IDLE">THREAD_PRIORITY_IDLE</a><br />
+<span class="index-where">(in <a href="VisionEgg.win32_maxpriority-module.html">VisionEgg.win32_maxpriority</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame-class.html#title">title</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame-class.html">SpinningDrumControlFrame</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.TargetGUI.TargetMetaParameters-class.html">TargetMetaParameters</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.TargetGUI-module.html">VisionEgg.PyroApps.TargetGUI</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.win32_maxpriority-module.html#THREAD_PRIORITY_LOWEST">THREAD_PRIORITY_LOWEST</a><br />
+<span class="index-where">(in <a href="VisionEgg.win32_maxpriority-module.html">VisionEgg.win32_maxpriority</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.TargetGUI.TargetControlFrame-class.html#title">title</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.TargetGUI.TargetControlFrame-class.html">TargetControlFrame</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.MouseTargetServer.TargetOrientationController-class.html">TargetOrientationController</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.MouseTargetServer-module.html">VisionEgg.PyroApps.MouseTargetServer</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.win32_maxpriority-module.html#THREAD_PRIORITY_NORMAL">THREAD_PRIORITY_NORMAL</a><br />
+<span class="index-where">(in <a href="VisionEgg.win32_maxpriority-module.html">VisionEgg.win32_maxpriority</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.GUI-module.html#tkFileDialog">tkFileDialog</a><br />
+<span class="index-where">(in <a href="VisionEgg.GUI-module.html">VisionEgg.GUI</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.MouseTargetServer.TargetPositionController-class.html">TargetPositionController</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.MouseTargetServer-module.html">VisionEgg.PyroApps.MouseTargetServer</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.win32_maxpriority-module.html#THREAD_PRIORITY_TIME_CRITICAL">THREAD_PRIORITY_TIME_CRITICAL</a><br />
+<span class="index-where">(in <a href="VisionEgg.win32_maxpriority-module.html">VisionEgg.win32_maxpriority</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.GUI-module.html#Tkinter">Tkinter</a><br />
+<span class="index-where">(in <a href="VisionEgg.GUI-module.html">VisionEgg.GUI</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.TargetServer-module.html">TargetServer</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps-module.html">VisionEgg.PyroApps</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.ThreeDeeMath-module.html">ThreeDeeMath</a><br />
+<span class="index-where">(in <a href="VisionEgg-module.html">VisionEgg</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.GUI-module.html#tkMessageBox">tkMessageBox</a><br />
+<span class="index-where">(in <a href="VisionEgg.GUI-module.html">VisionEgg.GUI</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.TCPController-module.html">TCPController</a><br />
+<span class="index-where">(in <a href="VisionEgg-module.html">VisionEgg</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.Core.FrameTimer-class.html#tick">tick()</a><br />
+<span class="index-where">(in <a href="VisionEgg.Core.FrameTimer-class.html">FrameTimer</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.GUI.ToplevelDialog-class.html">ToplevelDialog</a><br />
+<span class="index-where">(in <a href="VisionEgg.GUI-module.html">VisionEgg.GUI</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.TCPController.TCPController-class.html">TCPController</a><br />
+<span class="index-where">(in <a href="VisionEgg.TCPController-module.html">VisionEgg.TCPController</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg-module.html#time_func">time_func</a><br />
+<span class="index-where">(in <a href="VisionEgg-module.html">VisionEgg</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.ThreeDeeMath.TransformMatrix-class.html#transform_vertices">transform_vertices()</a><br />
+<span class="index-where">(in <a href="VisionEgg.ThreeDeeMath.TransformMatrix-class.html">TransformMatrix</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.TCPController.TCPServer-class.html">TCPServer</a><br />
+<span class="index-where">(in <a href="VisionEgg.TCPController-module.html">VisionEgg.TCPController</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg-module.html#time_func_locked_to_frames">time_func_locked_to_frames()</a><br />
+<span class="index-where">(in <a href="VisionEgg-module.html">VisionEgg</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.ThreeDeeMath.TransformMatrix-class.html">TransformMatrix</a><br />
+<span class="index-where">(in <a href="VisionEgg.ThreeDeeMath-module.html">VisionEgg.ThreeDeeMath</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.Text-module.html">Text</a><br />
+<span class="index-where">(in <a href="VisionEgg-module.html">VisionEgg</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.FlowControl.Controller-class.html#TIME_INDEPENDENT">TIME_INDEPENDENT</a><br />
+<span class="index-where">(in <a href="VisionEgg.FlowControl.Controller-class.html">Controller</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.FlowControl.Controller-class.html#TRANSITIONS">TRANSITIONS</a><br />
+<span class="index-where">(in <a href="VisionEgg.FlowControl.Controller-class.html">Controller</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.Text.Text-class.html">Text</a><br />
+<span class="index-where">(in <a href="VisionEgg.Text-module.html">VisionEgg.Text</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.FlowControl-module.html#TIME_INDEPENDENT">TIME_INDEPENDENT</a><br />
+<span class="index-where">(in <a href="VisionEgg.FlowControl-module.html">VisionEgg.FlowControl</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.FlowControl-module.html#TRANSITIONS">TRANSITIONS</a><br />
+<span class="index-where">(in <a href="VisionEgg.FlowControl-module.html">VisionEgg.FlowControl</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.Textures.Texture-class.html">Texture</a><br />
+<span class="index-where">(in <a href="VisionEgg.Textures-module.html">VisionEgg.Textures</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.FlowControl.Controller-class.html#TIME_SEC_ABSOLUTE">TIME_SEC_ABSOLUTE</a><br />
+<span class="index-where">(in <a href="VisionEgg.FlowControl.Controller-class.html">Controller</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.Core.ProjectionBaseClass-class.html#translate">translate()</a><br />
+<span class="index-where">(in <a href="VisionEgg.Core.ProjectionBaseClass-class.html">ProjectionBaseClass</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.Textures.TextureFromFile-class.html">TextureFromFile</a><br />
+<span class="index-where">(in <a href="VisionEgg.Textures-module.html">VisionEgg.Textures</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.FlowControl-module.html#TIME_SEC_ABSOLUTE">TIME_SEC_ABSOLUTE</a><br />
+<span class="index-where">(in <a href="VisionEgg.FlowControl-module.html">VisionEgg.FlowControl</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.ThreeDeeMath.TransformMatrix-class.html#translate">translate()</a><br />
+<span class="index-where">(in <a href="VisionEgg.ThreeDeeMath.TransformMatrix-class.html">TransformMatrix</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.Textures.TextureObject-class.html">TextureObject</a><br />
+<span class="index-where">(in <a href="VisionEgg.Textures-module.html">VisionEgg.Textures</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.FlowControl.Controller-class.html#TIME_SEC_SINCE_GO">TIME_SEC_SINCE_GO</a><br />
+<span class="index-where">(in <a href="VisionEgg.FlowControl.Controller-class.html">Controller</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.AST_ext.AST_Visitor-class.html#traverse">traverse()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.AST_ext.AST_Visitor-class.html">AST_Visitor</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.Textures-module.html">Textures</a><br />
+<span class="index-where">(in <a href="VisionEgg-module.html">VisionEgg</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.FlowControl-module.html#TIME_SEC_SINCE_GO">TIME_SEC_SINCE_GO</a><br />
+<span class="index-where">(in <a href="VisionEgg.FlowControl-module.html">VisionEgg.FlowControl</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.Daq.Trigger-class.html">Trigger</a><br />
+<span class="index-where">(in <a href="VisionEgg.Daq-module.html">VisionEgg.Daq</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.Textures.TextureStimulus-class.html">TextureStimulus</a><br />
+<span class="index-where">(in <a href="VisionEgg.Textures-module.html">VisionEgg.Textures</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg-module.html#timing_func">timing_func()</a><br />
+<span class="index-where">(in <a href="VisionEgg-module.html">VisionEgg</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.Deprecated.Message-class.html#TRIVIAL">TRIVIAL</a><br />
+<span class="index-where">(in <a href="VisionEgg.Deprecated.Message-class.html">Message</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.Textures.TextureStimulus3D-class.html">TextureStimulus3D</a><br />
+<span class="index-where">(in <a href="VisionEgg.Textures-module.html">VisionEgg.Textures</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame-class.html#title">title</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame-class.html">ColorCalControlFrame</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg-module.html#true_time_func">true_time_func</a><br />
+<span class="index-where">(in <a href="VisionEgg-module.html">VisionEgg</a>)</font></td>
+</tr>
+</table>
+</td></tr>
+<td valign="top" width="1%"><a name="U"><h2 class="epydoc">U</h2></a></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.ParameterTypes.Unicode-class.html">Unicode</a><br />
+<span class="index-where">(in <a href="VisionEgg.ParameterTypes-module.html">VisionEgg.ParameterTypes</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController-class.html#update">update()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController-class.html">ColorCalMetaController</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame-class.html#update_tk_vars">update_tk_vars()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame-class.html">ColorCalControlFrame</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.ParameterTypes.UnicodeMC-class.html">UnicodeMC</a><br />
+<span class="index-where">(in <a href="VisionEgg.ParameterTypes-module.html">VisionEgg.ParameterTypes</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.DropinServer.DropinMetaController-class.html#update">update()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.DropinServer.DropinMetaController-class.html">DropinMetaController</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.DropinGUI.DropinControlFrame-class.html#update_tk_vars">update_tk_vars()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.DropinGUI.DropinControlFrame-class.html">DropinControlFrame</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.QuickTime.MovieTexture-class.html#unload">unload()</a><br />
+<span class="index-where">(in <a href="VisionEgg.QuickTime.MovieTexture-class.html">MovieTexture</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController-class.html#update">update()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController-class.html">FlatGratingExperimentMetaController</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#update_tk_vars">update_tk_vars()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html">StimulusControlFrame</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.Textures.Texture-class.html#unload">unload()</a><br />
+<span class="index-where">(in <a href="VisionEgg.Textures.Texture-class.html">Texture</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.GridServer.GridMetaController-class.html#update">update()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.GridServer.GridMetaController-class.html">GridMetaController</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame-class.html#update_tk_vars">update_tk_vars()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame-class.html">FlatGratingControlFrame</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.ParameterTypes.UnsignedInteger-class.html">UnsignedInteger</a><br />
+<span class="index-where">(in <a href="VisionEgg.ParameterTypes-module.html">VisionEgg.ParameterTypes</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController-class.html#update">update()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController-class.html">MouseTargetExperimentMetaController</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.GridGUI.GridControlFrame-class.html#update_tk_vars">update_tk_vars()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.GridGUI.GridControlFrame-class.html">GridControlFrame</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.ParameterTypes.UnsignedIntegerMC-class.html">UnsignedIntegerMC</a><br />
+<span class="index-where">(in <a href="VisionEgg.ParameterTypes-module.html">VisionEgg.ParameterTypes</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController-class.html#update">update()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController-class.html">ScreenPositionMetaController</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame-class.html#update_tk_vars">update_tk_vars()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame-class.html">MouseTargetControlFrame</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.MouseTargetServer-module.html#up">up</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.MouseTargetServer-module.html">VisionEgg.PyroApps.MouseTargetServer</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController-class.html#update">update()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController-class.html">SphereGratingExperimentMetaController</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame-class.html#update_tk_vars">update_tk_vars()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame-class.html">SphereGratingControlFrame</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html#up_az_decrease">up_az_decrease()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html">ScreenPositionControlFrame</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController-class.html#update">update()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController-class.html">SpinningDrumExperimentMetaController</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame-class.html#update_tk_vars">update_tk_vars()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame-class.html">SpinningDrumControlFrame</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html#up_az_increase">up_az_increase()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html">ScreenPositionControlFrame</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController-class.html#update">update()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController-class.html">TargetExperimentMetaController</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.TargetGUI.TargetControlFrame-class.html#update_tk_vars">update_tk_vars()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.TargetGUI.TargetControlFrame-class.html">TargetControlFrame</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html#up_el_decrease">up_el_decrease()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html">ScreenPositionControlFrame</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.QuickTime.MovieTexture-class.html#update">update()</a><br />
+<span class="index-where">(in <a href="VisionEgg.QuickTime.MovieTexture-class.html">MovieTexture</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.GUI.ProgressBar-class.html#updateProgress">updateProgress()</a><br />
+<span class="index-where">(in <a href="VisionEgg.GUI.ProgressBar-class.html">ProgressBar</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html#up_el_increase">up_el_increase()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html">ScreenPositionControlFrame</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.Textures.Texture-class.html#update">update()</a><br />
+<span class="index-where">(in <a href="VisionEgg.Textures.Texture-class.html">Texture</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroHelpers.PyroLocalDictController-class.html#use_controller">use_controller()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroHelpers.PyroLocalDictController-class.html">PyroLocalDictController</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.GUI.InfoFrame-class.html#update">update()</a><br />
+<span class="index-where">(in <a href="VisionEgg.GUI.InfoFrame-class.html">InfoFrame</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.EPhysGUI.ScrollListFrame-class.html#update_now">update_now()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.EPhysGUI.ScrollListFrame-class.html">ScrollListFrame</a>)</font></td>
+<td width="33%" class="link-index"> </td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.GUI.ProgressBar-class.html#update">update()</a><br />
+<span class="index-where">(in <a href="VisionEgg.GUI.ProgressBar-class.html">ProgressBar</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.EPhysGUI.AppWindow-class.html#update_stim_onset_cal">update_stim_onset_cal()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.EPhysGUI.AppWindow-class.html">AppWindow</a>)</font></td>
+<td width="33%" class="link-index"> </td>
+</tr>
+</table>
+</td></tr>
+<td valign="top" width="1%"><a name="V"><h2 class="epydoc">V</h2></a></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.EPhysGUI.LoopParamDialog-class.html#validate">validate()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.EPhysGUI.LoopParamDialog-class.html">LoopParamDialog</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.ParameterTypes.NoneType-class.html#verify">verify()</a><br />
+<span class="index-where">(in <a href="VisionEgg.ParameterTypes.NoneType-class.html">NoneType</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.ParameterTypes.String-class.html#verify">verify()</a><br />
+<span class="index-where">(in <a href="VisionEgg.ParameterTypes.String-class.html">String</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.VarTypes-module.html">VarTypes</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps-module.html">VisionEgg.PyroApps</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.ParameterTypes.ParameterTypeDef-class.html#verify">verify()</a><br />
+<span class="index-where">(in <a href="VisionEgg.ParameterTypes.ParameterTypeDef-class.html">ParameterTypeDef</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.ParameterTypes.SubClass-class.html#verify">verify()</a><br />
+<span class="index-where">(in <a href="VisionEgg.ParameterTypes.SubClass-class.html">SubClass</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.ParameterTypes.AnyClass-class.html#verify">verify()</a><br />
+<span class="index-where">(in <a href="VisionEgg.ParameterTypes.AnyClass-class.html">AnyClass</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.ParameterTypes.Real-class.html#verify">verify()</a><br />
+<span class="index-where">(in <a href="VisionEgg.ParameterTypes.Real-class.html">Real</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.ParameterTypes.Unicode-class.html#verify">verify()</a><br />
+<span class="index-where">(in <a href="VisionEgg.ParameterTypes.Unicode-class.html">Unicode</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.ParameterTypes.AnyOf-class.html#verify">verify()</a><br />
+<span class="index-where">(in <a href="VisionEgg.ParameterTypes.AnyOf-class.html">AnyOf</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.ParameterTypes.Sequence-class.html#verify">verify()</a><br />
+<span class="index-where">(in <a href="VisionEgg.ParameterTypes.Sequence-class.html">Sequence</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.ParameterTypes.UnsignedInteger-class.html#verify">verify()</a><br />
+<span class="index-where">(in <a href="VisionEgg.ParameterTypes.UnsignedInteger-class.html">UnsignedInteger</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.ParameterTypes.Boolean-class.html#verify">verify()</a><br />
+<span class="index-where">(in <a href="VisionEgg.ParameterTypes.Boolean-class.html">Boolean</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.ParameterTypes.Sequence2-class.html#verify">verify()</a><br />
+<span class="index-where">(in <a href="VisionEgg.ParameterTypes.Sequence2-class.html">Sequence2</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.ClassWithParameters-class.html#verify_parameters">verify_parameters()</a><br />
+<span class="index-where">(in <a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.ParameterTypes.Callable-class.html#verify">verify()</a><br />
+<span class="index-where">(in <a href="VisionEgg.ParameterTypes.Callable-class.html">Callable</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.ParameterTypes.Sequence3-class.html#verify">verify()</a><br />
+<span class="index-where">(in <a href="VisionEgg.ParameterTypes.Sequence3-class.html">Sequence3</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.Core.Viewport-class.html">Viewport</a><br />
+<span class="index-where">(in <a href="VisionEgg.Core-module.html">VisionEgg.Core</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.ParameterTypes.Instance-class.html#verify">verify()</a><br />
+<span class="index-where">(in <a href="VisionEgg.ParameterTypes.Instance-class.html">Instance</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.ParameterTypes.Sequence4-class.html#verify">verify()</a><br />
+<span class="index-where">(in <a href="VisionEgg.ParameterTypes.Sequence4-class.html">Sequence4</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg-module.html">VisionEgg</a></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.ParameterTypes.Integer-class.html#verify">verify()</a><br />
+<span class="index-where">(in <a href="VisionEgg.ParameterTypes.Integer-class.html">Integer</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.ParameterTypes.Sequence4x4-class.html#verify">verify()</a><br />
+<span class="index-where">(in <a href="VisionEgg.ParameterTypes.Sequence4x4-class.html">Sequence4x4</a>)</font></td>
+<td width="33%" class="link-index"> </td>
+</tr>
+</table>
+</td></tr>
+<td valign="top" width="1%"><a name="W"><h2 class="epydoc">W</h2></a></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.Deprecated.Message-class.html#WARNING">WARNING</a><br />
+<span class="index-where">(in <a href="VisionEgg.Deprecated.Message-class.html">Message</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.EPhysServer.EPhysServer-class.html#were_frames_dropped_in_last_go_loop">were_frames_dropped_in_last_go_loop()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.EPhysServer.EPhysServer-class.html">EPhysServer</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.WrappedText-module.html">WrappedText</a><br />
+<span class="index-where">(in <a href="VisionEgg-module.html">VisionEgg</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg-module.html#watch_exceptions">watch_exceptions()</a><br />
+<span class="index-where">(in <a href="VisionEgg-module.html">VisionEgg</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.win32_getrefresh-module.html">win32_getrefresh</a><br />
+<span class="index-where">(in <a href="VisionEgg-module.html">VisionEgg</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.WrappedText.WrappedText-class.html">WrappedText</a><br />
+<span class="index-where">(in <a href="VisionEgg.WrappedText-module.html">VisionEgg.WrappedText</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.FlowControl.Presentation-class.html#were_frames_dropped_in_last_go_loop">were_frames_dropped_in_last_go_loop()</a><br />
+<span class="index-where">(in <a href="VisionEgg.FlowControl.Presentation-class.html">Presentation</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.win32_maxpriority-module.html">win32_maxpriority</a><br />
+<span class="index-where">(in <a href="VisionEgg-module.html">VisionEgg</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.GLTrace.Wrapper-class.html">Wrapper</a><br />
+<span class="index-where">(in <a href="VisionEgg.GLTrace-module.html">VisionEgg.GLTrace</a>)</font></td>
+</tr>
+</table>
+</td></tr>
+<td valign="top" width="1%"><a name="_"><h2 class="epydoc">_</h2></a></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.EPhysGUI-module.html#__author__">__author__</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.EPhysGUI-module.html">VisionEgg.PyroApps.EPhysGUI</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.Daq.SignalType-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.Daq.SignalType-class.html">SignalType</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.QuickTime.MovieTexture-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.QuickTime.MovieTexture-class.html">MovieTexture</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.EPhysGUIUtils-module.html#__author__">__author__</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.EPhysGUIUtils-module.html">VisionEgg.PyroApps.EPhysGUIUtils</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.DaqKeyboard.KeyboardTriggerInController-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.DaqKeyboard.KeyboardTriggerInController-class.html">KeyboardTriggerInController</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.ResponseControl.KeyboardResponseController-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.ResponseControl.KeyboardResponseController-class.html">KeyboardResponseController</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.EPhysServer-module.html#__author__">__author__</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.EPhysServer-module.html">VisionEgg.PyroApps.EPhysServer</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.DaqLPT.LPTChannel-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.DaqLPT.LPTChannel-class.html">LPTChannel</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.ResponseControl.ResponseController-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.ResponseControl.ResponseController-class.html">ResponseController</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.GridGUI-module.html#__author__">__author__</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.GridGUI-module.html">VisionEgg.PyroApps.GridGUI</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.DaqLPT.LPTDevice-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.DaqLPT.LPTDevice-class.html">LPTDevice</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.SphereMap.AzElGrid-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.SphereMap.AzElGrid-class.html">AzElGrid</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.GridServer-module.html#__author__">__author__</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.GridServer-module.html">VisionEgg.PyroApps.GridServer</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.DaqLPT.LPTTriggerInController-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.DaqLPT.LPTTriggerInController-class.html">LPTTriggerInController</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.SphereMap.SphereGrating-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.SphereMap.SphereGrating-class.html">SphereGrating</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.SpinningDrumGUI-module.html#__author__">__author__</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.SpinningDrumGUI-module.html">VisionEgg.PyroApps.SpinningDrumGUI</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.DaqLPT.LPTTriggerOutController-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.DaqLPT.LPTTriggerOutController-class.html">LPTTriggerOutController</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.SphereMap.SphereMap-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.SphereMap.SphereMap-class.html">SphereMap</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.SpinningDrumServer-module.html#__author__">__author__</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.SpinningDrumServer-module.html">VisionEgg.PyroApps.SpinningDrumServer</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.Deprecated.Message-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.Deprecated.Message-class.html">Message</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.SphereMap.SphereWindow-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.SphereMap.SphereWindow-class.html">SphereWindow</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.ColorCalGUI-module.html#__cvs__">__cvs__</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.ColorCalGUI-module.html">VisionEgg.PyroApps.ColorCalGUI</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.Dots.DotArea2D-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.Dots.DotArea2D-class.html">DotArea2D</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.TCPController.SocketListenController-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.TCPController.SocketListenController-class.html">SocketListenController</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.ColorCalServer-module.html#__cvs__">__cvs__</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.ColorCalServer-module.html">VisionEgg.PyroApps.ColorCalServer</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.FlowControl.ConstantController-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.FlowControl.ConstantController-class.html">ConstantController</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.TCPController.TCPController-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.TCPController.TCPController-class.html">TCPController</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.EPhysGUI-module.html#__cvs__">__cvs__</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.EPhysGUI-module.html">VisionEgg.PyroApps.EPhysGUI</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.FlowControl.Controller-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.FlowControl.Controller-class.html">Controller</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.TCPController.TCPServer-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.TCPController.TCPServer-class.html">TCPServer</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.EPhysGUIUtils-module.html#__cvs__">__cvs__</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.EPhysGUIUtils-module.html">VisionEgg.PyroApps.EPhysGUIUtils</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.FlowControl.EncapsulatedController-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.FlowControl.EncapsulatedController-class.html">EncapsulatedController</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.Text.BitmapText-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.Text.BitmapText-class.html">BitmapText</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.EPhysServer-module.html#__cvs__">__cvs__</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.EPhysServer-module.html">VisionEgg.PyroApps.EPhysServer</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.FlowControl.EvalStringController-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.FlowControl.EvalStringController-class.html">EvalStringController</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.Text.GlutTextBase-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.Text.GlutTextBase-class.html">GlutTextBase</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.FlatGratingGUI-module.html#__cvs__">__cvs__</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.FlatGratingGUI-module.html">VisionEgg.PyroApps.FlatGratingGUI</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.FlowControl.ExecStringController-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.FlowControl.ExecStringController-class.html">ExecStringController</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.Text.StrokeText-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.Text.StrokeText-class.html">StrokeText</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.FlatGratingServer-module.html#__cvs__">__cvs__</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.FlatGratingServer-module.html">VisionEgg.PyroApps.FlatGratingServer</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.FlowControl.FunctionController-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.FlowControl.FunctionController-class.html">FunctionController</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.Text.Text-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.Text.Text-class.html">Text</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.GridGUI-module.html#__cvs__">__cvs__</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.GridGUI-module.html">VisionEgg.PyroApps.GridGUI</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.FlowControl.Presentation-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.FlowControl.Presentation-class.html">Presentation</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.Textures.FixationCross-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.Textures.FixationCross-class.html">FixationCross</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.GridServer-module.html#__cvs__">__cvs__</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.GridServer-module.html">VisionEgg.PyroApps.GridServer</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.GLTrace.Wrapper-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.GLTrace.Wrapper-class.html">Wrapper</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.Textures.Mask2D-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.Textures.Mask2D-class.html">Mask2D</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.MouseTargetGUI-module.html#__cvs__">__cvs__</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.MouseTargetGUI-module.html">VisionEgg.PyroApps.MouseTargetGUI</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.GUI.AppWindow-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.GUI.AppWindow-class.html">AppWindow</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.Textures.SpinningDrum-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.Textures.SpinningDrum-class.html">SpinningDrum</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.MouseTargetServer-module.html#__cvs__">__cvs__</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.MouseTargetServer-module.html">VisionEgg.PyroApps.MouseTargetServer</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.GUI.GetKeypressDialog-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.GUI.GetKeypressDialog-class.html">GetKeypressDialog</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.Textures.Texture-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.Textures.Texture-class.html">Texture</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.ScreenPositionGUI-module.html#__cvs__">__cvs__</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.ScreenPositionGUI-module.html">VisionEgg.PyroApps.ScreenPositionGUI</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.GUI.GraphicsConfigurationWindow-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.GUI.GraphicsConfigurationWindow-class.html">GraphicsConfigurationWindow</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.Textures.TextureFromFile-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.Textures.TextureFromFile-class.html">TextureFromFile</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.ScreenPositionServer-module.html#__cvs__">__cvs__</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.ScreenPositionServer-module.html">VisionEgg.PyroApps.ScreenPositionServer</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.GUI.InfoFrame-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.GUI.InfoFrame-class.html">InfoFrame</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.Textures.TextureObject-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.Textures.TextureObject-class.html">TextureObject</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.SphereGratingGUI-module.html#__cvs__">__cvs__</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.SphereGratingGUI-module.html">VisionEgg.PyroApps.SphereGratingGUI</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.GUI.ProgressBar-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.GUI.ProgressBar-class.html">ProgressBar</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.Textures.TextureStimulusBaseClass-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.Textures.TextureStimulusBaseClass-class.html">TextureStimulusBaseClass</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.SphereGratingServer-module.html#__cvs__">__cvs__</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.SphereGratingServer-module.html">VisionEgg.PyroApps.SphereGratingServer</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.GUI.ToplevelDialog-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.GUI.ToplevelDialog-class.html">ToplevelDialog</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.ThreeDeeMath.TransformMatrix-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.ThreeDeeMath.TransformMatrix-class.html">TransformMatrix</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.SpinningDrumGUI-module.html#__cvs__">__cvs__</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.SpinningDrumGUI-module.html">VisionEgg.PyroApps.SpinningDrumGUI</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.Gratings.SinGrating2D-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.Gratings.SinGrating2D-class.html">SinGrating2D</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.WrappedText.WrappedText-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.WrappedText.WrappedText-class.html">WrappedText</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.SpinningDrumServer-module.html#__cvs__">__cvs__</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.SpinningDrumServer-module.html">VisionEgg.PyroApps.SpinningDrumServer</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.Gratings.SinGrating3D-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.Gratings.SinGrating3D-class.html">SinGrating3D</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.qtmovie.Movie-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.qtmovie.Movie-class.html">Movie</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.TargetGUI-module.html#__cvs__">__cvs__</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.TargetGUI-module.html">VisionEgg.PyroApps.TargetGUI</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.MoreStimuli.Arrow-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.MoreStimuli.Arrow-class.html">Arrow</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.qtmovie.Rect-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.qtmovie.Rect-class.html">Rect</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.TargetServer-module.html#__cvs__">__cvs__</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.TargetServer-module.html">VisionEgg.PyroApps.TargetServer</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.MoreStimuli.FilledCircle-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.MoreStimuli.FilledCircle-class.html">FilledCircle</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.ClassWithParameters-class.html#__safe_for_unpickling__">__safe_for_unpickling__</a><br />
+<span class="index-where">(in <a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroClient-module.html#__cvs__">__cvs__</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroClient-module.html">VisionEgg.PyroClient</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.MoreStimuli.Rectangle3D-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.MoreStimuli.Rectangle3D-class.html">Rectangle3D</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.ClassWithParameters-class.html#__setstate__">__setstate__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroHelpers-module.html#__cvs__">__cvs__</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroHelpers-module.html">VisionEgg.PyroHelpers</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.MoreStimuli.Target2D-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.MoreStimuli.Target2D-class.html">Target2D</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.ParameterTypes.AnyClassMC-class.html#__str__">__str__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.ParameterTypes.AnyClassMC-class.html">AnyClassMC</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.TCPController-module.html#__cvs__">__cvs__</a><br />
+<span class="index-where">(in <a href="VisionEgg.TCPController-module.html">VisionEgg.TCPController</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.ParameterTypes.AnyOf-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.ParameterTypes.AnyOf-class.html">AnyOf</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.ParameterTypes.AnyOf-class.html#__str__">__str__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.ParameterTypes.AnyOf-class.html">AnyOf</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.ColorCalGUI-module.html#__date__">__date__</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.ColorCalGUI-module.html">VisionEgg.PyroApps.ColorCalGUI</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.ParameterTypes.Instance-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.ParameterTypes.Instance-class.html">Instance</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.ParameterTypes.BooleanMC-class.html#__str__">__str__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.ParameterTypes.BooleanMC-class.html">BooleanMC</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.ColorCalServer-module.html#__date__">__date__</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.ColorCalServer-module.html">VisionEgg.PyroApps.ColorCalServer</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.ParameterTypes.Sequence-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.ParameterTypes.Sequence-class.html">Sequence</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.ParameterTypes.CallableMC-class.html#__str__">__str__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.ParameterTypes.CallableMC-class.html">CallableMC</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.EPhysGUI-module.html#__date__">__date__</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.EPhysGUI-module.html">VisionEgg.PyroApps.EPhysGUI</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.ParameterTypes.SubClass-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.ParameterTypes.SubClass-class.html">SubClass</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.ParameterTypes.Instance-class.html#__str__">__str__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.ParameterTypes.Instance-class.html">Instance</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.EPhysGUIUtils-module.html#__date__">__date__</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.EPhysGUIUtils-module.html">VisionEgg.PyroApps.EPhysGUIUtils</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.AST_ext.AST_Visitor-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.AST_ext.AST_Visitor-class.html">AST_Visitor</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.ParameterTypes.IntegerMC-class.html#__str__">__str__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.ParameterTypes.IntegerMC-class.html">IntegerMC</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.EPhysServer-module.html#__date__">__date__</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.EPhysServer-module.html">VisionEgg.PyroApps.EPhysServer</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame-class.html">ColorCalControlFrame</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.ParameterTypes.NoneMC-class.html#__str__">__str__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.ParameterTypes.NoneMC-class.html">NoneMC</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.FlatGratingGUI-module.html#__date__">__date__</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.FlatGratingGUI-module.html">VisionEgg.PyroApps.FlatGratingGUI</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.ColorCalGUI.ColorCalMetaParameters-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.ColorCalGUI.ColorCalMetaParameters-class.html">ColorCalMetaParameters</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.ParameterTypes.RealMC-class.html#__str__">__str__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.ParameterTypes.RealMC-class.html">RealMC</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.FlatGratingServer-module.html#__date__">__date__</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.FlatGratingServer-module.html">VisionEgg.PyroApps.FlatGratingServer</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController-class.html">ColorCalMetaController</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.ParameterTypes.Sequence-class.html#__str__">__str__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.ParameterTypes.Sequence-class.html">Sequence</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.GridGUI-module.html#__date__">__date__</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.GridGUI-module.html">VisionEgg.PyroApps.GridGUI</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.DropinGUI.DropinControlFrame-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.DropinGUI.DropinControlFrame-class.html">DropinControlFrame</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.ParameterTypes.Sequence2-class.html#__str__">__str__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.ParameterTypes.Sequence2-class.html">Sequence2</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.GridServer-module.html#__date__">__date__</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.GridServer-module.html">VisionEgg.PyroApps.GridServer</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.DropinGUI.DropinMetaParameters-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.DropinGUI.DropinMetaParameters-class.html">DropinMetaParameters</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.ParameterTypes.Sequence3-class.html#__str__">__str__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.ParameterTypes.Sequence3-class.html">Sequence3</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.MouseTargetGUI-module.html#__date__">__date__</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.MouseTargetGUI-module.html">VisionEgg.PyroApps.MouseTargetGUI</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.DropinServer.DropinMetaController-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.DropinServer.DropinMetaController-class.html">DropinMetaController</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.ParameterTypes.Sequence4-class.html#__str__">__str__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.ParameterTypes.Sequence4-class.html">Sequence4</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.MouseTargetServer-module.html#__date__">__date__</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.MouseTargetServer-module.html">VisionEgg.PyroApps.MouseTargetServer</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.EPhysGUI.AppWindow-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.EPhysGUI.AppWindow-class.html">AppWindow</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.ParameterTypes.Sequence4x4-class.html#__str__">__str__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.ParameterTypes.Sequence4x4-class.html">Sequence4x4</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.ScreenPositionGUI-module.html#__date__">__date__</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.ScreenPositionGUI-module.html">VisionEgg.PyroApps.ScreenPositionGUI</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.EPhysGUI.BarButton-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.EPhysGUI.BarButton-class.html">BarButton</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.ParameterTypes.StringMC-class.html#__str__">__str__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.ParameterTypes.StringMC-class.html">StringMC</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.ScreenPositionServer-module.html#__date__">__date__</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.ScreenPositionServer-module.html">VisionEgg.PyroApps.ScreenPositionServer</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase-class.html">ContainedObjectBase</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.ParameterTypes.SubClass-class.html#__str__">__str__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.ParameterTypes.SubClass-class.html">SubClass</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.SphereGratingGUI-module.html#__date__">__date__</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.SphereGratingGUI-module.html">VisionEgg.PyroApps.SphereGratingGUI</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.EPhysGUI.GammaFrame-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.EPhysGUI.GammaFrame-class.html">GammaFrame</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.ParameterTypes.UnicodeMC-class.html#__str__">__str__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.ParameterTypes.UnicodeMC-class.html">UnicodeMC</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.SphereGratingServer-module.html#__date__">__date__</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.SphereGratingServer-module.html">VisionEgg.PyroApps.SphereGratingServer</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.EPhysGUI.ImageSequenceLauncher-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.EPhysGUI.ImageSequenceLauncher-class.html">ImageSequenceLauncher</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.ParameterTypes.UnsignedIntegerMC-class.html#__str__">__str__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.ParameterTypes.UnsignedIntegerMC-class.html">UnsignedIntegerMC</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.SpinningDrumGUI-module.html#__date__">__date__</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.SpinningDrumGUI-module.html">VisionEgg.PyroApps.SpinningDrumGUI</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.EPhysGUI.Loop-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.EPhysGUI.Loop-class.html">Loop</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.TCPController.TCPController-class.html#__str__">__str__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.TCPController.TCPController-class.html">TCPController</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.SpinningDrumServer-module.html#__date__">__date__</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.SpinningDrumServer-module.html">VisionEgg.PyroApps.SpinningDrumServer</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.EPhysGUI.LoopContainedObject-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.EPhysGUI.LoopContainedObject-class.html">LoopContainedObject</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.DaqKeyboard-module.html#__version__">__version__</a><br />
+<span class="index-where">(in <a href="VisionEgg.DaqKeyboard-module.html">VisionEgg.DaqKeyboard</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.TargetGUI-module.html#__date__">__date__</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.TargetGUI-module.html">VisionEgg.PyroApps.TargetGUI</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.EPhysGUI.LoopParamDialog-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.EPhysGUI.LoopParamDialog-class.html">LoopParamDialog</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.DaqLPT-module.html#__version__">__version__</a><br />
+<span class="index-where">(in <a href="VisionEgg.DaqLPT-module.html">VisionEgg.DaqLPT</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.TargetServer-module.html#__date__">__date__</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.TargetServer-module.html">VisionEgg.PyroApps.TargetServer</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.EPhysGUI.ScrollListFrame-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.EPhysGUI.ScrollListFrame-class.html">ScrollListFrame</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.GL-module.html#__version__">__version__</a><br />
+<span class="index-where">(in <a href="VisionEgg.GL-module.html">VisionEgg.GL</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroClient-module.html#__date__">__date__</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroClient-module.html">VisionEgg.PyroClient</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html">StimulusControlFrame</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.EPhysGUI-module.html#__version__">__version__</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.EPhysGUI-module.html">VisionEgg.PyroApps.EPhysGUI</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroHelpers-module.html#__date__">__date__</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroHelpers-module.html">VisionEgg.PyroHelpers</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.EPhysServer.EPhysServer-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.EPhysServer.EPhysServer-class.html">EPhysServer</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.EPhysGUIUtils-module.html#__version__">__version__</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.EPhysGUIUtils-module.html">VisionEgg.PyroApps.EPhysGUIUtils</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.TCPController-module.html#__date__">__date__</a><br />
+<span class="index-where">(in <a href="VisionEgg.TCPController-module.html">VisionEgg.TCPController</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame-class.html">FlatGratingControlFrame</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.EPhysServer-module.html#__version__">__version__</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.EPhysServer-module.html">VisionEgg.PyroApps.EPhysServer</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.Core.Screen-class.html#__del__">__del__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.Core.Screen-class.html">Screen</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.FlatGratingGUI.FlatGratingMetaParameters-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.FlatGratingGUI.FlatGratingMetaParameters-class.html">FlatGratingMetaParameters</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.GridGUI-module.html#__version__">__version__</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.GridGUI-module.html">VisionEgg.PyroApps.GridGUI</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.DaqLPT.LPTOutput-class.html#__del__">__del__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.DaqLPT.LPTOutput-class.html">LPTOutput</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController-class.html">FlatGratingExperimentMetaController</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.GridServer-module.html#__version__">__version__</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.GridServer-module.html">VisionEgg.PyroApps.GridServer</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.Gratings.SinGrating2D-class.html#__del__">__del__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.Gratings.SinGrating2D-class.html">SinGrating2D</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.GridGUI.GridControlFrame-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.GridGUI.GridControlFrame-class.html">GridControlFrame</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.ScreenPositionGUI-module.html#__version__">__version__</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.ScreenPositionGUI-module.html">VisionEgg.PyroApps.ScreenPositionGUI</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.Gratings.SinGrating3D-class.html#__del__">__del__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.Gratings.SinGrating3D-class.html">SinGrating3D</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.GridGUI.GridMetaParameters-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.GridGUI.GridMetaParameters-class.html">GridMetaParameters</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.ScreenPositionServer-module.html#__version__">__version__</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.ScreenPositionServer-module.html">VisionEgg.PyroApps.ScreenPositionServer</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.EPhysGUI.AppWindow-class.html#__del__">__del__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.EPhysGUI.AppWindow-class.html">AppWindow</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.GridServer.GridMetaController-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.GridServer.GridMetaController-class.html">GridMetaController</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.SpinningDrumGUI-module.html#__version__">__version__</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.SpinningDrumGUI-module.html">VisionEgg.PyroApps.SpinningDrumGUI</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.EPhysServer.EPhysServer-class.html#__del__">__del__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.EPhysServer.EPhysServer-class.html">EPhysServer</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame-class.html">MouseTargetControlFrame</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.SpinningDrumServer-module.html#__version__">__version__</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.SpinningDrumServer-module.html">VisionEgg.PyroApps.SpinningDrumServer</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController-class.html#__del__">__del__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController-class.html">FlatGratingExperimentMetaController</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.MouseTargetGUI.MouseTargetMetaParameters-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.MouseTargetGUI.MouseTargetMetaParameters-class.html">MouseTargetMetaParameters</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroHelpers-module.html#__version__">__version__</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroHelpers-module.html">VisionEgg.PyroHelpers</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController-class.html#__del__">__del__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController-class.html">MouseTargetExperimentMetaController</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.MouseTargetServer.MousePositionController-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.MouseTargetServer.MousePositionController-class.html">MousePositionController</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.QuickTime-module.html#__version__">__version__</a><br />
+<span class="index-where">(in <a href="VisionEgg.QuickTime-module.html">VisionEgg.QuickTime</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController-class.html#__del__">__del__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController-class.html">SphereGratingExperimentMetaController</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController-class.html">MouseTargetExperimentMetaController</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.ResponseControl-module.html#__version__">__version__</a><br />
+<span class="index-where">(in <a href="VisionEgg.ResponseControl-module.html">VisionEgg.ResponseControl</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController-class.html#__del__">__del__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController-class.html">SpinningDrumExperimentMetaController</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.MouseTargetServer.TargetOrientationController-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.MouseTargetServer.TargetOrientationController-class.html">TargetOrientationController</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.SphereMap-module.html#__version__">__version__</a><br />
+<span class="index-where">(in <a href="VisionEgg.SphereMap-module.html">VisionEgg.SphereMap</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController-class.html#__del__">__del__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController-class.html">TargetExperimentMetaController</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.MouseTargetServer.TargetPositionController-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.MouseTargetServer.TargetPositionController-class.html">TargetPositionController</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.TCPController-module.html#__version__">__version__</a><br />
+<span class="index-where">(in <a href="VisionEgg.TCPController-module.html">VisionEgg.TCPController</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.QuickTime.MovieTexture-class.html#__del__">__del__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.QuickTime.MovieTexture-class.html">MovieTexture</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.ScreenPositionGUI.CallbackEntry-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.ScreenPositionGUI.CallbackEntry-class.html">CallbackEntry</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.Textures.TextureObject-class.html#_cube_map_side_names">_cube_map_side_names</a><br />
+<span class="index-where">(in <a href="VisionEgg.Textures.TextureObject-class.html">TextureObject</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.Textures.TextureObject-class.html#__del__">__del__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.Textures.TextureObject-class.html">TextureObject</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html">ScreenPositionControlFrame</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg-module.html#_default_logging_started">_default_logging_started</a><br />
+<span class="index-where">(in <a href="VisionEgg-module.html">VisionEgg</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.ClassWithParameters-class.html#__getstate__">__getstate__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionParameters-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionParameters-class.html">ScreenPositionParameters</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.qtlowlevel.QTNewMoviePropertyElement-class.html#_fields_">_fields_</a><br />
+<span class="index-where">(in <a href="VisionEgg.qtlowlevel.QTNewMoviePropertyElement-class.html">QTNewMoviePropertyElement</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.ClassWithParameters-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.ClassWithParameters-class.html">ClassWithParameters</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController-class.html">ScreenPositionMetaController</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.qtlowlevel.Rect-class.html#_fields_">_fields_</a><br />
+<span class="index-where">(in <a href="VisionEgg.qtlowlevel.Rect-class.html">Rect</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.Configuration.Config-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.Configuration.Config-class.html">Config</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame-class.html">SphereGratingControlFrame</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.Text-module.html#_font_objects">_font_objects</a><br />
+<span class="index-where">(in <a href="VisionEgg.Text-module.html">VisionEgg.Text</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.Core.FixationSpot-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.Core.FixationSpot-class.html">FixationSpot</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.SphereGratingGUI.SphereGratingMetaParameters-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.SphereGratingGUI.SphereGratingMetaParameters-class.html">SphereGratingMetaParameters</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.Textures.TextureStimulusBaseClass-class.html#_mipmap_modes">_mipmap_modes</a><br />
+<span class="index-where">(in <a href="VisionEgg.Textures.TextureStimulusBaseClass-class.html">TextureStimulusBaseClass</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.Core.FrameTimer-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.Core.FrameTimer-class.html">FrameTimer</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController-class.html">SphereGratingExperimentMetaController</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.darwin_getrefresh-module.html#_newclass">_newclass</a><br />
+<span class="index-where">(in <a href="VisionEgg.darwin_getrefresh-module.html">VisionEgg.darwin_getrefresh</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.Core.ModelView-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.Core.ModelView-class.html">ModelView</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame-class.html">SpinningDrumControlFrame</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.gl_qt-module.html#_newclass">_newclass</a><br />
+<span class="index-where">(in <a href="VisionEgg.gl_qt-module.html">VisionEgg.gl_qt</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.Core.OrthographicProjection-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.Core.OrthographicProjection-class.html">OrthographicProjection</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumMetaParameters-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumMetaParameters-class.html">SpinningDrumMetaParameters</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.posix_maxpriority-module.html#_newclass">_newclass</a><br />
+<span class="index-where">(in <a href="VisionEgg.posix_maxpriority-module.html">VisionEgg.posix_maxpriority</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.Core.OrthographicProjectionNoZClip-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.Core.OrthographicProjectionNoZClip-class.html">OrthographicProjectionNoZClip</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController-class.html">SpinningDrumExperimentMetaController</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.win32_getrefresh-module.html#_newclass">_newclass</a><br />
+<span class="index-where">(in <a href="VisionEgg.win32_getrefresh-module.html">VisionEgg.win32_getrefresh</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.Core.PerspectiveProjection-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.Core.PerspectiveProjection-class.html">PerspectiveProjection</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.TargetGUI.TargetControlFrame-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.TargetGUI.TargetControlFrame-class.html">TargetControlFrame</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.win32_maxpriority-module.html#_newclass">_newclass</a><br />
+<span class="index-where">(in <a href="VisionEgg.win32_maxpriority-module.html">VisionEgg.win32_maxpriority</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.Core.Projection-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.Core.Projection-class.html">Projection</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.TargetGUI.TargetMetaParameters-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.TargetGUI.TargetMetaParameters-class.html">TargetMetaParameters</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.GL-module.html#_orig_glLoadMatrixf">_orig_glLoadMatrixf</a><br />
+<span class="index-where">(in <a href="VisionEgg.GL-module.html">VisionEgg.GL</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.Core.ProjectionBaseClass-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.Core.ProjectionBaseClass-class.html">ProjectionBaseClass</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController-class.html">TargetExperimentMetaController</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.TCPController.SocketListenController-class.html#_parse_args_globals">_parse_args_globals</a><br />
+<span class="index-where">(in <a href="VisionEgg.TCPController.SocketListenController-class.html">SocketListenController</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.Core.Screen-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.Core.Screen-class.html">Screen</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroClient.PyroClient-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroClient.PyroClient-class.html">PyroClient</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.TCPController.SocketListenController-class.html#_parse_args_locals">_parse_args_locals</a><br />
+<span class="index-where">(in <a href="VisionEgg.TCPController.SocketListenController-class.html">SocketListenController</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.Core.SimplePerspectiveProjection-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.Core.SimplePerspectiveProjection-class.html">SimplePerspectiveProjection</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroHelpers.PyroConstantController-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroHelpers.PyroConstantController-class.html">PyroConstantController</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.TCPController.SocketListenController-class.html#_re_const">_re_const</a><br />
+<span class="index-where">(in <a href="VisionEgg.TCPController.SocketListenController-class.html">SocketListenController</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.Core.Stimulus-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.Core.Stimulus-class.html">Stimulus</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroHelpers.PyroEncapsulatedController-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroHelpers.PyroEncapsulatedController-class.html">PyroEncapsulatedController</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.TCPController.SocketListenController-class.html#_re_eval_str">_re_eval_str</a><br />
+<span class="index-where">(in <a href="VisionEgg.TCPController.SocketListenController-class.html">SocketListenController</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.Core.Viewport-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.Core.Viewport-class.html">Viewport</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroHelpers.PyroEvalStringController-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroHelpers.PyroEvalStringController-class.html">PyroEvalStringController</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.TCPController.SocketListenController-class.html#_re_exec_str">_re_exec_str</a><br />
+<span class="index-where">(in <a href="VisionEgg.TCPController.SocketListenController-class.html">SocketListenController</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.Daq.Channel-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.Daq.Channel-class.html">Channel</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroHelpers.PyroExecStringController-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroHelpers.PyroExecStringController-class.html">PyroExecStringController</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.TCPController.SocketListenController-class.html#_re_line">_re_line</a><br />
+<span class="index-where">(in <a href="VisionEgg.TCPController.SocketListenController-class.html">SocketListenController</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.Daq.DaqMode-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.Daq.DaqMode-class.html">DaqMode</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroHelpers.PyroListenController-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroHelpers.PyroListenController-class.html">PyroListenController</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.TCPController.SocketListenController-class.html#_re_x_finder">_re_x_finder</a><br />
+<span class="index-where">(in <a href="VisionEgg.TCPController.SocketListenController-class.html">SocketListenController</a>)</font></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.Daq.Device-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.Daq.Device-class.html">Device</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroHelpers.PyroLocalDictController-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroHelpers.PyroLocalDictController-class.html">PyroLocalDictController</a>)</font></td>
+<td width="33%" class="link-index"> </td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="VisionEgg.Daq.Functionality-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.Daq.Functionality-class.html">Functionality</a>)</font></td>
+<td width="33%" class="link-index"><a href="VisionEgg.PyroHelpers.PyroServer-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="VisionEgg.PyroHelpers.PyroServer-class.html">PyroServer</a>)</font></td>
+<td width="33%" class="link-index"> </td>
+</tr>
+</table>
+</td></tr>
+</table>
+</br /><br /><!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th bgcolor="#70b0f0" class="navbar-select"
+          >   Indices   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/index.html b/doc/reference/html/index.html
new file mode 100644
index 0000000..66fb581
--- /dev/null
+++ b/doc/reference/html/index.html
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
+          "DTD/xhtml1-frameset.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title> Vision Egg </title>
+</head>
+<frameset cols="20%,80%">
+  <frameset rows="30%,70%">
+    <frame src="toc.html" name="moduleListFrame"
+           id="moduleListFrame" />
+    <frame src="toc-everything.html" name="moduleFrame"
+           id="moduleFrame" />
+  </frameset>
+  <frame src="VisionEgg-module.html" name="mainFrame" id="mainFrame" />
+</frameset>
+</html>
diff --git a/doc/reference/html/int-class.html b/doc/reference/html/int-class.html
new file mode 100644
index 0000000..94fd166
--- /dev/null
+++ b/doc/reference/html/int-class.html
@@ -0,0 +1,1148 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>int</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        int ::
+        Class int
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="int-class.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class int</h1><br /><br />
+<pre class="base-tree">
+object --+
+         |
+        <strong class="uidshort">int</strong>
+</pre>
+
+<dl><dt>Known Subclasses:</dt>
+<dd>
+    bool
+</dd></dl>
+
+<hr />
+<pre class="literalblock">
+int(x[, base]) -> integer
+
+Convert a string or number to an integer, if possible.  A floating point
+argument will be truncated towards zero (this does not include a string
+representation of a floating point number!)  When converting a string, use
+the optional base.  It is an error to supply a base when converting a
+non-string. If the argument is outside the integer range a long object
+will be returned instead.
+
+</pre><br /><br />
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Instance Methods</span></td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__abs__"></a><span class="summary-sig-name">__abs__</span>(<span class="summary-sig-arg">x</span>)</span><br />
+      abs(x)</td>
+          <td align="right" valign="top">
+            
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__add__"></a><span class="summary-sig-name">__add__</span>(<span class="summary-sig-arg">x</span>,
+        <span class="summary-sig-arg">y</span>)</span><br />
+      x+y</td>
+          <td align="right" valign="top">
+            
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__and__"></a><span class="summary-sig-name">__and__</span>(<span class="summary-sig-arg">x</span>,
+        <span class="summary-sig-arg">y</span>)</span><br />
+      x&y</td>
+          <td align="right" valign="top">
+            
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__cmp__"></a><span class="summary-sig-name">__cmp__</span>(<span class="summary-sig-arg">x</span>,
+        <span class="summary-sig-arg">y</span>)</span><br />
+      cmp(x,y)</td>
+          <td align="right" valign="top">
+            
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__coerce__"></a><span class="summary-sig-name">__coerce__</span>(<span class="summary-sig-arg">x</span>,
+        <span class="summary-sig-arg">y</span>)</span><br />
+      coerce(x, y)</td>
+          <td align="right" valign="top">
+            
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__div__"></a><span class="summary-sig-name">__div__</span>(<span class="summary-sig-arg">x</span>,
+        <span class="summary-sig-arg">y</span>)</span><br />
+      x/y</td>
+          <td align="right" valign="top">
+            
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__divmod__"></a><span class="summary-sig-name">__divmod__</span>(<span class="summary-sig-arg">x</span>,
+        <span class="summary-sig-arg">y</span>)</span><br />
+      divmod(x, y)</td>
+          <td align="right" valign="top">
+            
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__float__"></a><span class="summary-sig-name">__float__</span>(<span class="summary-sig-arg">x</span>)</span><br />
+      float(x)</td>
+          <td align="right" valign="top">
+            
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__floordiv__"></a><span class="summary-sig-name">__floordiv__</span>(<span class="summary-sig-arg">x</span>,
+        <span class="summary-sig-arg">y</span>)</span><br />
+      x//y</td>
+          <td align="right" valign="top">
+            
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="int-class.html#__getattribute__" class="summary-sig-name">__getattribute__</a>(<span class="summary-sig-arg">...</span>)</span><br />
+      x.__getattribute__('name') <==> x.name</td>
+          <td align="right" valign="top">
+            
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__getnewargs__"></a><span class="summary-sig-name">__getnewargs__</span>(<span class="summary-sig-arg">...</span>)</span></td>
+          <td align="right" valign="top">
+            
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="int-class.html#__hash__" class="summary-sig-name">__hash__</a>(<span class="summary-sig-arg">x</span>)</span><br />
+      hash(x)</td>
+          <td align="right" valign="top">
+            
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__hex__"></a><span class="summary-sig-name">__hex__</span>(<span class="summary-sig-arg">x</span>)</span><br />
+      hex(x)</td>
+          <td align="right" valign="top">
+            
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__index__"></a><span class="summary-sig-name">__index__</span>(<span class="summary-sig-arg">...</span>)</span><br />
+      x[y:z] <==> x[y.__index__():z.__index__()]</td>
+          <td align="right" valign="top">
+            
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__int__"></a><span class="summary-sig-name">__int__</span>(<span class="summary-sig-arg">x</span>)</span><br />
+      int(x)</td>
+          <td align="right" valign="top">
+            
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__invert__"></a><span class="summary-sig-name">__invert__</span>(<span class="summary-sig-arg">x</span>)</span><br />
+      ~x</td>
+          <td align="right" valign="top">
+            
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__long__"></a><span class="summary-sig-name">__long__</span>(<span class="summary-sig-arg">x</span>)</span><br />
+      long(x)</td>
+          <td align="right" valign="top">
+            
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__lshift__"></a><span class="summary-sig-name">__lshift__</span>(<span class="summary-sig-arg">x</span>,
+        <span class="summary-sig-arg">y</span>)</span><br />
+      x<<y</td>
+          <td align="right" valign="top">
+            
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__mod__"></a><span class="summary-sig-name">__mod__</span>(<span class="summary-sig-arg">x</span>,
+        <span class="summary-sig-arg">y</span>)</span><br />
+      x%y</td>
+          <td align="right" valign="top">
+            
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__mul__"></a><span class="summary-sig-name">__mul__</span>(<span class="summary-sig-arg">x</span>,
+        <span class="summary-sig-arg">y</span>)</span><br />
+      x*y</td>
+          <td align="right" valign="top">
+            
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__neg__"></a><span class="summary-sig-name">__neg__</span>(<span class="summary-sig-arg">x</span>)</span><br />
+      -x</td>
+          <td align="right" valign="top">
+            
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="int-class.html#__new__" class="summary-sig-name">__new__</a>(<span class="summary-sig-arg">T</span>,
+        <span class="summary-sig-arg">S</span>,
+        <span class="summary-sig-arg">...</span>)</span></td>
+          <td align="right" valign="top">
+            
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__nonzero__"></a><span class="summary-sig-name">__nonzero__</span>(<span class="summary-sig-arg">x</span>)</span><br />
+      x != 0</td>
+          <td align="right" valign="top">
+            
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__oct__"></a><span class="summary-sig-name">__oct__</span>(<span class="summary-sig-arg">x</span>)</span><br />
+      oct(x)</td>
+          <td align="right" valign="top">
+            
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__or__"></a><span class="summary-sig-name">__or__</span>(<span class="summary-sig-arg">x</span>,
+        <span class="summary-sig-arg">y</span>)</span><br />
+      x|y</td>
+          <td align="right" valign="top">
+            
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__pos__"></a><span class="summary-sig-name">__pos__</span>(<span class="summary-sig-arg">x</span>)</span><br />
+      +x</td>
+          <td align="right" valign="top">
+            
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__pow__"></a><span class="summary-sig-name">__pow__</span>(<span class="summary-sig-arg">x</span>,
+        <span class="summary-sig-arg">y</span>,
+        <span class="summary-sig-arg">z</span>=<span class="summary-sig-default">...</span>)</span><br />
+      pow(x, y[, z])</td>
+          <td align="right" valign="top">
+            
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__radd__"></a><span class="summary-sig-name">__radd__</span>(<span class="summary-sig-arg">x</span>,
+        <span class="summary-sig-arg">y</span>)</span><br />
+      y+x</td>
+          <td align="right" valign="top">
+            
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__rand__"></a><span class="summary-sig-name">__rand__</span>(<span class="summary-sig-arg">x</span>,
+        <span class="summary-sig-arg">y</span>)</span><br />
+      y&x</td>
+          <td align="right" valign="top">
+            
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__rdiv__"></a><span class="summary-sig-name">__rdiv__</span>(<span class="summary-sig-arg">x</span>,
+        <span class="summary-sig-arg">y</span>)</span><br />
+      y/x</td>
+          <td align="right" valign="top">
+            
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__rdivmod__"></a><span class="summary-sig-name">__rdivmod__</span>(<span class="summary-sig-arg">x</span>,
+        <span class="summary-sig-arg">y</span>)</span><br />
+      divmod(y, x)</td>
+          <td align="right" valign="top">
+            
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="int-class.html#__repr__" class="summary-sig-name">__repr__</a>(<span class="summary-sig-arg">x</span>)</span><br />
+      repr(x)</td>
+          <td align="right" valign="top">
+            
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__rfloordiv__"></a><span class="summary-sig-name">__rfloordiv__</span>(<span class="summary-sig-arg">x</span>,
+        <span class="summary-sig-arg">y</span>)</span><br />
+      y//x</td>
+          <td align="right" valign="top">
+            
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__rlshift__"></a><span class="summary-sig-name">__rlshift__</span>(<span class="summary-sig-arg">x</span>,
+        <span class="summary-sig-arg">y</span>)</span><br />
+      y<<x</td>
+          <td align="right" valign="top">
+            
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__rmod__"></a><span class="summary-sig-name">__rmod__</span>(<span class="summary-sig-arg">x</span>,
+        <span class="summary-sig-arg">y</span>)</span><br />
+      y%x</td>
+          <td align="right" valign="top">
+            
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__rmul__"></a><span class="summary-sig-name">__rmul__</span>(<span class="summary-sig-arg">x</span>,
+        <span class="summary-sig-arg">y</span>)</span><br />
+      y*x</td>
+          <td align="right" valign="top">
+            
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__ror__"></a><span class="summary-sig-name">__ror__</span>(<span class="summary-sig-arg">x</span>,
+        <span class="summary-sig-arg">y</span>)</span><br />
+      y|x</td>
+          <td align="right" valign="top">
+            
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__rpow__"></a><span class="summary-sig-name">__rpow__</span>(<span class="summary-sig-arg">y</span>,
+        <span class="summary-sig-arg">x</span>,
+        <span class="summary-sig-arg">z</span>=<span class="summary-sig-default">...</span>)</span><br />
+      pow(x, y[, z])</td>
+          <td align="right" valign="top">
+            
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__rrshift__"></a><span class="summary-sig-name">__rrshift__</span>(<span class="summary-sig-arg">x</span>,
+        <span class="summary-sig-arg">y</span>)</span><br />
+      y>>x</td>
+          <td align="right" valign="top">
+            
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__rshift__"></a><span class="summary-sig-name">__rshift__</span>(<span class="summary-sig-arg">x</span>,
+        <span class="summary-sig-arg">y</span>)</span><br />
+      x>>y</td>
+          <td align="right" valign="top">
+            
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__rsub__"></a><span class="summary-sig-name">__rsub__</span>(<span class="summary-sig-arg">x</span>,
+        <span class="summary-sig-arg">y</span>)</span><br />
+      y-x</td>
+          <td align="right" valign="top">
+            
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__rtruediv__"></a><span class="summary-sig-name">__rtruediv__</span>(<span class="summary-sig-arg">x</span>,
+        <span class="summary-sig-arg">y</span>)</span><br />
+      y/x</td>
+          <td align="right" valign="top">
+            
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__rxor__"></a><span class="summary-sig-name">__rxor__</span>(<span class="summary-sig-arg">x</span>,
+        <span class="summary-sig-arg">y</span>)</span><br />
+      y^x</td>
+          <td align="right" valign="top">
+            
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="int-class.html#__str__" class="summary-sig-name">__str__</a>(<span class="summary-sig-arg">x</span>)</span><br />
+      str(x)</td>
+          <td align="right" valign="top">
+            
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__sub__"></a><span class="summary-sig-name">__sub__</span>(<span class="summary-sig-arg">x</span>,
+        <span class="summary-sig-arg">y</span>)</span><br />
+      x-y</td>
+          <td align="right" valign="top">
+            
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__truediv__"></a><span class="summary-sig-name">__truediv__</span>(<span class="summary-sig-arg">x</span>,
+        <span class="summary-sig-arg">y</span>)</span><br />
+      x/y</td>
+          <td align="right" valign="top">
+            
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type"> </span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="__xor__"></a><span class="summary-sig-name">__xor__</span>(<span class="summary-sig-arg">x</span>,
+        <span class="summary-sig-arg">y</span>)</span><br />
+      x^y</td>
+          <td align="right" valign="top">
+            
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__delattr__</code>,
+      <code>__init__</code>,
+      <code>__reduce__</code>,
+      <code>__reduce_ex__</code>,
+      <code>__setattr__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Properties</span></td>
+</tr>
+  <tr>
+    <td colspan="2" class="summary">
+    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+      <code>__class__</code>
+      </p>
+    </td>
+  </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td align="left" colspan="2" class="table-header">
+    <span class="table-header">Method Details</span></td>
+</tr>
+</table>
+<a name="__getattribute__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__getattribute__</span>(<span class="sig-arg">...</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    > 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+x.__getattribute__('name') <==> x.name
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      object.__getattribute__
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="__hash__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__hash__</span>(<span class="sig-arg">x</span>)</span>
+    <br /><em class="fname">(Hashing function)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    > 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+hash(x)
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      object.__hash__
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="__new__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__new__</span>(<span class="sig-arg">T</span>,
+        <span class="sig-arg">S</span>,
+        <span class="sig-arg">...</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    > 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+
+
+</pre>
+  <dl class="fields">
+    <dt>Returns:</dt>
+        <dd><pre class="literalblock">
+a new object with type S, a subtype of T
+
+</pre></dd>
+    <dt>Overrides:
+      object.__new__
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="__repr__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__repr__</span>(<span class="sig-arg">x</span>)</span>
+    <br /><em class="fname">(Representation operator)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    > 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+repr(x)
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      object.__repr__
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<a name="__str__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">__str__</span>(<span class="sig-arg">x</span>)</span>
+    <br /><em class="fname">(Informal representation operator)</em>
+  </h3>
+  </td><td align="right" valign="top"
+    > 
+    </td>
+  </table>
+  
+  <pre class="literalblock">
+str(x)
+
+</pre>
+  <dl class="fields">
+    <dt>Overrides:
+      object.__str__
+    </dt>
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th>   <a
+        href="module-tree.html">Trees</a>   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:47 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/module-tree.html b/doc/reference/html/module-tree.html
new file mode 100644
index 0000000..ac50a03
--- /dev/null
+++ b/doc/reference/html/module-tree.html
@@ -0,0 +1,178 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>Module Hierarchy</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th bgcolor="#70b0f0" class="navbar-select"
+          >   Trees   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%"> </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >] | <a href="module-tree.html"
+            target="_top">no frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<center><b>
+ [ <a href="module-tree.html">Module Hierarchy</a>
+ | <a href="class-tree.html">Class Hierarchy</a> ]
+</b></center><br />
+<h1 class="epydoc">Module Hierarchy</h1>
+<ul class="nomargin-top">
+    <li> <strong class="uidlink"><a href="VisionEgg-module.html">VisionEgg</a></strong>: <em class="summary">The Vision Egg package.</em>
+    <ul>
+    <li> <strong class="uidlink"><a href="VisionEgg.Configuration-module.html">VisionEgg.Configuration</a></strong>: <em class="summary">Load config values from environment, config file, or defaults.</em>    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.Core-module.html">VisionEgg.Core</a></strong>: <em class="summary">Core Vision Egg functionality.</em>    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.Daq-module.html">VisionEgg.Daq</a></strong>: <em class="summary">Definition of data acquisition and triggering interfaces.</em>    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.DaqKeyboard-module.html">VisionEgg.DaqKeyboard</a></strong>: <em class="summary">Data acquisition and triggering over the keyboard.</em>    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.DaqLPT-module.html">VisionEgg.DaqLPT</a></strong>: <em class="summary">Data acquisition and triggering over the parallel port.</em>    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.Deprecated-module.html">VisionEgg.Deprecated</a></strong>: <em class="summary">Bits of code which will be removed in the future.</em>    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.Dots-module.html">VisionEgg.Dots</a></strong>: <em class="summary">Random dot stimuli.</em>    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.FlowControl-module.html">VisionEgg.FlowControl</a></strong>: <em class="summary">Flow control for the Vision Egg.</em>    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.GL-module.html">VisionEgg.GL</a></strong>: <em class="summary">Vision Egg GL module -- lump all OpenGL names in one namespace.</em>    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.GLTrace-module.html">VisionEgg.GLTrace</a></strong>: <em class="summary">Trace calls to OpenGL
+
+With this module, you can trace all calls made to OpenGL through PyOpenGL.</em>    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.GUI-module.html">VisionEgg.GUI</a></strong>: <em class="summary">Graphical user interface classes and functions.</em>    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.Gratings-module.html">VisionEgg.Gratings</a></strong>: <em class="summary">Grating stimuli.</em>    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.MoreStimuli-module.html">VisionEgg.MoreStimuli</a></strong>: <em class="summary">Assorted stimuli.</em>    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.ParameterTypes-module.html">VisionEgg.ParameterTypes</a></strong>: <em class="summary">Type checking for the Vision Egg.</em>    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.PlatformDependent-module.html">VisionEgg.PlatformDependent</a></strong>: <em class="summary">Implementations of functions which vary by platform.</em>    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.PyroApps-module.html">VisionEgg.PyroApps</a></strong>: <em class="summary">VisionEgg subpackage providing support for demo applications based on Pyro</em>
+    <ul>
+    <li> <strong class="uidlink"><a href="VisionEgg.PyroApps.AST_ext-module.html">VisionEgg.PyroApps.AST_ext</a></strong>    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.PyroApps.ColorCalGUI-module.html">VisionEgg.PyroApps.ColorCalGUI</a></strong>: <em class="summary">Handle luminance and color calibration stimulus (client-side)</em>    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.PyroApps.ColorCalServer-module.html">VisionEgg.PyroApps.ColorCalServer</a></strong>: <em class="summary">Handle luminance and color calibration stimulus (server-side)</em>    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.PyroApps.DropinGUI-module.html">VisionEgg.PyroApps.DropinGUI</a></strong>    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.PyroApps.DropinServer-module.html">VisionEgg.PyroApps.DropinServer</a></strong>    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.PyroApps.EPhysGUI-module.html">VisionEgg.PyroApps.EPhysGUI</a></strong>    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.PyroApps.EPhysGUIUtils-module.html">VisionEgg.PyroApps.EPhysGUIUtils</a></strong>    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.PyroApps.EPhysServer-module.html">VisionEgg.PyroApps.EPhysServer</a></strong>    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.PyroApps.FlatGratingGUI-module.html">VisionEgg.PyroApps.FlatGratingGUI</a></strong>: <em class="summary">Handle sinusoidal gratings (client-side)</em>    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.PyroApps.FlatGratingServer-module.html">VisionEgg.PyroApps.FlatGratingServer</a></strong>: <em class="summary">Handle sinusoidal gratings (server-side)</em>    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.PyroApps.GridGUI-module.html">VisionEgg.PyroApps.GridGUI</a></strong>    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.PyroApps.GridServer-module.html">VisionEgg.PyroApps.GridServer</a></strong>    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.PyroApps.MouseTargetGUI-module.html">VisionEgg.PyroApps.MouseTargetGUI</a></strong>: <em class="summary">Handle mouse controlled small target stimulus (client-side)</em>    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.PyroApps.MouseTargetServer-module.html">VisionEgg.PyroApps.MouseTargetServer</a></strong>: <em class="summary">Handle mouse-controlled small targets (server-side)</em>    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.PyroApps.ScreenPositionGUI-module.html">VisionEgg.PyroApps.ScreenPositionGUI</a></strong>: <em class="summary">Handle 3D perspective projection (client-side)</em>    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.PyroApps.ScreenPositionServer-module.html">VisionEgg.PyroApps.ScreenPositionServer</a></strong>: <em class="summary">Handle 3D perspective projection (server-side)</em>    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.PyroApps.SphereGratingGUI-module.html">VisionEgg.PyroApps.SphereGratingGUI</a></strong>: <em class="summary">Handle perspective-distorted sinusoidal gratings (client-side)</em>    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.PyroApps.SphereGratingServer-module.html">VisionEgg.PyroApps.SphereGratingServer</a></strong>: <em class="summary">Handle perspective-distorted sinusoidal gratings (server-side)</em>    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.PyroApps.SpinningDrumGUI-module.html">VisionEgg.PyroApps.SpinningDrumGUI</a></strong>    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.PyroApps.SpinningDrumServer-module.html">VisionEgg.PyroApps.SpinningDrumServer</a></strong>    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.PyroApps.TargetGUI-module.html">VisionEgg.PyroApps.TargetGUI</a></strong>: <em class="summary">Handle small target stimulus (client-side)</em>    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.PyroApps.TargetServer-module.html">VisionEgg.PyroApps.TargetServer</a></strong>: <em class="summary">Handle small targets gratings (server-side)</em>    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.PyroApps.VarTypes-module.html">VisionEgg.PyroApps.VarTypes</a></strong>    </li>
+    </ul>
+    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.PyroClient-module.html">VisionEgg.PyroClient</a></strong>: <em class="summary">Python Remote Objects support - Client side.</em>    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.PyroHelpers-module.html">VisionEgg.PyroHelpers</a></strong>: <em class="summary">Python Remote Objects support.</em>    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.QuickTime-module.html">VisionEgg.QuickTime</a></strong>: <em class="summary">QuickTime movies in the Vision Egg.</em>    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.ResponseControl-module.html">VisionEgg.ResponseControl</a></strong>: <em class="summary">Response control during a presentation is running.</em>    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.SphereMap-module.html">VisionEgg.SphereMap</a></strong>: <em class="summary">Stimuli on spheres, including texture maps.</em>    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.TCPController-module.html">VisionEgg.TCPController</a></strong>: <em class="summary">Allows control of parameter values over the network.</em>    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.Text-module.html">VisionEgg.Text</a></strong>: <em class="summary">Text stimuli.</em>    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.Textures-module.html">VisionEgg.Textures</a></strong>: <em class="summary">Texture (images mapped onto polygons) stimuli.</em>    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.ThreeDeeMath-module.html">VisionEgg.ThreeDeeMath</a></strong>: <em class="summary">Vertex and matrix operations - simulate OpenGL transforms.</em>    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.WrappedText-module.html">VisionEgg.WrappedText</a></strong>: <em class="summary">Module containing the Multi-line text stimulus class WrappedText, as well
+as a simple example of its use.</em>    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.darwin_getrefresh-module.html">VisionEgg.darwin_getrefresh</a></strong>    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.gl_qt-module.html">VisionEgg.gl_qt</a></strong>    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.posix_maxpriority-module.html">VisionEgg.posix_maxpriority</a></strong>    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.qtlowlevel-module.html">VisionEgg.qtlowlevel</a></strong>    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.qtmovie-module.html">VisionEgg.qtmovie</a></strong>: <em class="summary">high level QuickTime Movie wrapper</em>    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.win32_getrefresh-module.html">VisionEgg.win32_getrefresh</a></strong>    </li>
+    <li> <strong class="uidlink"><a href="VisionEgg.win32_maxpriority-module.html">VisionEgg.win32_maxpriority</a></strong>    </li>
+    </ul>
+    </li>
+</ul>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>   <a
+        href="VisionEgg-module.html">Home</a>   </th>
+
+  <!-- Tree link -->
+      <th bgcolor="#70b0f0" class="navbar-select"
+          >   Trees   </th>
+
+  <!-- Index link -->
+      <th>   <a
+        href="identifier-index.html">Indices</a>   </th>
+
+  <!-- Help link -->
+      <th>   <a
+        href="help.html">Help</a>   </th>
+
+  <!-- Project homepage -->
+      <th class="navbar" align="right" width="100%">
+        <table border="0" cellpadding="0" cellspacing="0">
+          <tr><th class="navbar" align="center"
+            ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th>
+          </tr></table></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0beta1 on Sat Jun  7 09:06:46 2008
+    </td>
+    <td align="right" class="footer">
+      <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/redirect.html b/doc/reference/html/redirect.html
new file mode 100644
index 0000000..7549ff2
--- /dev/null
+++ b/doc/reference/html/redirect.html
@@ -0,0 +1,38 @@
+<html><head><title>Epydoc Redirect Page</title>
+<meta http-equiv="cache-control" content="no-cache" />
+<meta http-equiv="expires" content="0" />
+<meta http-equiv="pragma" content="no-cache" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+<body>
+<script type="text/javascript">
+<!--
+var pages = ["VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController-c", "VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController-c", "VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController-c", "VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController-c", "VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController-c", "VisionEgg.PyroApps.MouseTargetServer.TargetOrientationController-c", "VisionEgg.PyroAp [...]
+var dottedName = get_anchor();
+if (dottedName) {
+    var target = redirect_url(dottedName);
+    if (target) window.location.replace(target);
+}
+// -->
+</script>
+
+<h3>Epydoc Auto-redirect page</h3>
+
+<p>When javascript is enabled, this page will redirect URLs of
+the form <tt>redirect.html#<i>dotted.name</i></tt> to the
+documentation for the object with the given fully-qualified
+dotted name.</p>
+<p><a id="message">   </a></p>
+
+<script type="text/javascript">
+<!--
+if (dottedName) {
+    var msg = document.getElementById("message");
+    msg.innerHTML = "No documentation found for <tt>"+
+                    dottedName+"</tt>";
+}
+// -->
+</script>
+
+</body>
+</html>
diff --git a/doc/reference/html/toc-VisionEgg-module.html b/doc/reference/html/toc-VisionEgg-module.html
new file mode 100644
index 0000000..d915796
--- /dev/null
+++ b/doc/reference/html/toc-VisionEgg-module.html
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VisionEgg</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="toc">Module VisionEgg</h1>
+<hr />
+  <h2 class="toc">Classes</h2>
+    <a target="mainFrame" href="VisionEgg.ClassWithParameters-class.html"
+     >ClassWithParameters</a><br />    <a target="mainFrame" href="VisionEgg.ParameterDefinition-class.html"
+     >ParameterDefinition</a><br />    <a target="mainFrame" href="VisionEgg.Parameters-class.html"
+     >Parameters</a><br />  <h2 class="toc">Functions</h2>
+    <a target="mainFrame" href="VisionEgg-module.html#assert_type"
+     >assert_type</a><br />    <a target="mainFrame" href="VisionEgg-module.html#get_type"
+     >get_type</a><br />    <a target="mainFrame" href="VisionEgg-module.html#recursive_base_class_finder"
+     >recursive_base_class_finder</a><br />    <a target="mainFrame" href="VisionEgg-module.html#set_time_func_to_frame_locked"
+     >set_time_func_to_frame_locked</a><br />    <a target="mainFrame" href="VisionEgg-module.html#set_time_func_to_true_time"
+     >set_time_func_to_true_time</a><br />    <a target="mainFrame" href="VisionEgg-module.html#start_default_logging"
+     >start_default_logging</a><br />    <a target="mainFrame" href="VisionEgg-module.html#stop_watching_exceptions"
+     >stop_watching_exceptions</a><br />    <a target="mainFrame" href="VisionEgg-module.html#time_func_locked_to_frames"
+     >time_func_locked_to_frames</a><br />    <a target="mainFrame" href="VisionEgg-module.html#timing_func"
+     >timing_func</a><br />    <a target="mainFrame" href="VisionEgg-module.html#watch_exceptions"
+     >watch_exceptions</a><br />  <h2 class="toc">Variables</h2>
+    <a target="mainFrame" href="VisionEgg-module.html#config"
+     >config</a><br />    <a target="mainFrame" href="VisionEgg-module.html#log_formatter"
+     >log_formatter</a><br />    <a target="mainFrame" href="VisionEgg-module.html#logger"
+     >logger</a><br />    <a target="mainFrame" href="VisionEgg-module.html#release_name"
+     >release_name</a><br />    <a target="mainFrame" href="VisionEgg-module.html#time_func"
+     >time_func</a><br />    <a target="mainFrame" href="VisionEgg-module.html#true_time_func"
+     >true_time_func</a><br /><hr />
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/toc-VisionEgg.Configuration-module.html b/doc/reference/html/toc-VisionEgg.Configuration-module.html
new file mode 100644
index 0000000..b0005af
--- /dev/null
+++ b/doc/reference/html/toc-VisionEgg.Configuration-module.html
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>Configuration</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="toc">Module Configuration</h1>
+<hr />
+  <h2 class="toc">Classes</h2>
+    <a target="mainFrame" href="VisionEgg.Configuration.Config-class.html"
+     >Config</a><br />  <h2 class="toc">Functions</h2>
+    <a target="mainFrame" href="VisionEgg.Configuration-module.html#save_settings"
+     >save_settings</a><br />  <h2 class="toc">Variables</h2>
+    <a target="mainFrame" href="VisionEgg.Configuration-module.html#defaults"
+     >defaults</a><br />    <a target="mainFrame" href="VisionEgg.Configuration-module.html#extra_darwin_defaults"
+     >extra_darwin_defaults</a><br /><hr />
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/toc-VisionEgg.Core-module.html b/doc/reference/html/toc-VisionEgg.Core-module.html
new file mode 100644
index 0000000..36feab9
--- /dev/null
+++ b/doc/reference/html/toc-VisionEgg.Core-module.html
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>Core</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="toc">Module Core</h1>
+<hr />
+  <h2 class="toc">Classes</h2>
+    <a target="mainFrame" href="VisionEgg.FlowControl.ConstantController-class.html"
+     >ConstantController</a><br />    <a target="mainFrame" href="VisionEgg.FlowControl.Controller-class.html"
+     >Controller</a><br />    <a target="mainFrame" href="VisionEgg.FlowControl.EncapsulatedController-class.html"
+     >EncapsulatedController</a><br />    <a target="mainFrame" href="VisionEgg.FlowControl.EvalStringController-class.html"
+     >EvalStringController</a><br />    <a target="mainFrame" href="VisionEgg.FlowControl.ExecStringController-class.html"
+     >ExecStringController</a><br />    <a target="mainFrame" href="VisionEgg.Core.FixationSpot-class.html"
+     >FixationSpot</a><br />    <a target="mainFrame" href="VisionEgg.Core.FrameTimer-class.html"
+     >FrameTimer</a><br />    <a target="mainFrame" href="VisionEgg.FlowControl.FunctionController-class.html"
+     >FunctionController</a><br />    <a target="mainFrame" href="VisionEgg.Deprecated.Message-class.html"
+     >Message</a><br />    <a target="mainFrame" href="VisionEgg.Core.ModelView-class.html"
+     >ModelView</a><br />    <a target="mainFrame" href="VisionEgg.Core.OrthographicProjection-class.html"
+     >OrthographicProjection</a><br />    <a target="mainFrame" href="VisionEgg.Core.OrthographicProjectionNoZClip-class.html"
+     >OrthographicProjectionNoZClip</a><br />    <a target="mainFrame" href="VisionEgg.Core.PerspectiveProjection-class.html"
+     >PerspectiveProjection</a><br />    <a target="mainFrame" href="VisionEgg.FlowControl.Presentation-class.html"
+     >Presentation</a><br />    <a target="mainFrame" href="VisionEgg.Core.Projection-class.html"
+     >Projection</a><br />    <a target="mainFrame" href="VisionEgg.Core.ProjectionBaseClass-class.html"
+     >ProjectionBaseClass</a><br />    <a target="mainFrame" href="VisionEgg.Core.Screen-class.html"
+     >Screen</a><br />    <a target="mainFrame" href="VisionEgg.Core.SimplePerspectiveProjection-class.html"
+     >SimplePerspectiveProjection</a><br />    <a target="mainFrame" href="VisionEgg.Core.Stimulus-class.html"
+     >Stimulus</a><br />    <a target="mainFrame" href="VisionEgg.Core.Viewport-class.html"
+     >Viewport</a><br />  <h2 class="toc">Functions</h2>
+    <a target="mainFrame" href="VisionEgg.Core-module.html#add_gl_assumption"
+     >add_gl_assumption</a><br />    <a target="mainFrame" href="VisionEgg.Core-module.html#get_default_screen"
+     >get_default_screen</a><br />    <a target="mainFrame" href="VisionEgg.Core-module.html#init_gl_extension"
+     >init_gl_extension</a><br />    <a target="mainFrame" href="VisionEgg.Core-module.html#post_gl_init"
+     >post_gl_init</a><br />    <a target="mainFrame" href="VisionEgg.Core-module.html#sum"
+     >sum</a><br />    <a target="mainFrame" href="VisionEgg.Core-module.html#swap_buffers"
+     >swap_buffers</a><br />  <h2 class="toc">Variables</h2>
+    <a target="mainFrame" href="VisionEgg.Core-module.html#gl_assumptions"
+     >gl_assumptions</a><br />    <a target="mainFrame" href="VisionEgg.Core-module.html#message"
+     >message</a><br /><hr />
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/toc-VisionEgg.Daq-module.html b/doc/reference/html/toc-VisionEgg.Daq-module.html
new file mode 100644
index 0000000..2cceb9f
--- /dev/null
+++ b/doc/reference/html/toc-VisionEgg.Daq-module.html
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>Daq</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="toc">Module Daq</h1>
+<hr />
+  <h2 class="toc">Classes</h2>
+    <a target="mainFrame" href="VisionEgg.Daq.Analog-class.html"
+     >Analog</a><br />    <a target="mainFrame" href="VisionEgg.Daq.Buffered-class.html"
+     >Buffered</a><br />    <a target="mainFrame" href="VisionEgg.Daq.Channel-class.html"
+     >Channel</a><br />    <a target="mainFrame" href="VisionEgg.Daq.ChannelParameters-class.html"
+     >ChannelParameters</a><br />    <a target="mainFrame" href="VisionEgg.Daq.DaqMode-class.html"
+     >DaqMode</a><br />    <a target="mainFrame" href="VisionEgg.Daq.Device-class.html"
+     >Device</a><br />    <a target="mainFrame" href="VisionEgg.Daq.Digital-class.html"
+     >Digital</a><br />    <a target="mainFrame" href="VisionEgg.Daq.Functionality-class.html"
+     >Functionality</a><br />    <a target="mainFrame" href="VisionEgg.Daq.Immediate-class.html"
+     >Immediate</a><br />    <a target="mainFrame" href="VisionEgg.Daq.Input-class.html"
+     >Input</a><br />    <a target="mainFrame" href="VisionEgg.Daq.Output-class.html"
+     >Output</a><br />    <a target="mainFrame" href="VisionEgg.Daq.SignalType-class.html"
+     >SignalType</a><br />    <a target="mainFrame" href="VisionEgg.Daq.Trigger-class.html"
+     >Trigger</a><br /><hr />
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/toc-VisionEgg.DaqKeyboard-module.html b/doc/reference/html/toc-VisionEgg.DaqKeyboard-module.html
new file mode 100644
index 0000000..57c3d57
--- /dev/null
+++ b/doc/reference/html/toc-VisionEgg.DaqKeyboard-module.html
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>DaqKeyboard</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="toc">Module DaqKeyboard</h1>
+<hr />
+  <h2 class="toc">Classes</h2>
+    <a target="mainFrame" href="VisionEgg.DaqKeyboard.KeyboardInput-class.html"
+     >KeyboardInput</a><br />    <a target="mainFrame" href="VisionEgg.DaqKeyboard.KeyboardTriggerInController-class.html"
+     >KeyboardTriggerInController</a><br />  <h2 class="toc">Variables</h2>
+    <a target="mainFrame" href="VisionEgg.DaqKeyboard-module.html#__version__"
+     >__version__</a><br /><hr />
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/toc-VisionEgg.DaqLPT-module.html b/doc/reference/html/toc-VisionEgg.DaqLPT-module.html
new file mode 100644
index 0000000..eea3009
--- /dev/null
+++ b/doc/reference/html/toc-VisionEgg.DaqLPT-module.html
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>DaqLPT</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="toc">Module DaqLPT</h1>
+<hr />
+  <h2 class="toc">Classes</h2>
+    <a target="mainFrame" href="VisionEgg.DaqLPT.LPTChannel-class.html"
+     >LPTChannel</a><br />    <a target="mainFrame" href="VisionEgg.DaqLPT.LPTDevice-class.html"
+     >LPTDevice</a><br />    <a target="mainFrame" href="VisionEgg.DaqLPT.LPTInput-class.html"
+     >LPTInput</a><br />    <a target="mainFrame" href="VisionEgg.DaqLPT.LPTOutput-class.html"
+     >LPTOutput</a><br />    <a target="mainFrame" href="VisionEgg.DaqLPT.LPTTriggerInController-class.html"
+     >LPTTriggerInController</a><br />    <a target="mainFrame" href="VisionEgg.DaqLPT.LPTTriggerOutController-class.html"
+     >LPTTriggerOutController</a><br />  <h2 class="toc">Variables</h2>
+    <a target="mainFrame" href="VisionEgg.DaqLPT-module.html#__version__"
+     >__version__</a><br /><hr />
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/toc-VisionEgg.Deprecated-module.html b/doc/reference/html/toc-VisionEgg.Deprecated-module.html
new file mode 100644
index 0000000..2adb199
--- /dev/null
+++ b/doc/reference/html/toc-VisionEgg.Deprecated-module.html
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>Deprecated</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="toc">Module Deprecated</h1>
+<hr />
+  <h2 class="toc">Classes</h2>
+    <a target="mainFrame" href="VisionEgg.Deprecated.Message-class.html"
+     >Message</a><br /><hr />
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/toc-VisionEgg.Dots-module.html b/doc/reference/html/toc-VisionEgg.Dots-module.html
new file mode 100644
index 0000000..e424099
--- /dev/null
+++ b/doc/reference/html/toc-VisionEgg.Dots-module.html
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>Dots</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="toc">Module Dots</h1>
+<hr />
+  <h2 class="toc">Classes</h2>
+    <a target="mainFrame" href="VisionEgg.Dots.DotArea2D-class.html"
+     >DotArea2D</a><br />  <h2 class="toc">Functions</h2>
+    <a target="mainFrame" href="VisionEgg.Dots-module.html#draw_dots"
+     >draw_dots</a><br /><hr />
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/toc-VisionEgg.FlowControl-module.html b/doc/reference/html/toc-VisionEgg.FlowControl-module.html
new file mode 100644
index 0000000..f6f2a33
--- /dev/null
+++ b/doc/reference/html/toc-VisionEgg.FlowControl-module.html
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>FlowControl</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="toc">Module FlowControl</h1>
+<hr />
+  <h2 class="toc">Classes</h2>
+    <a target="mainFrame" href="VisionEgg.FlowControl.ConstantController-class.html"
+     >ConstantController</a><br />    <a target="mainFrame" href="VisionEgg.FlowControl.Controller-class.html"
+     >Controller</a><br />    <a target="mainFrame" href="VisionEgg.FlowControl.EncapsulatedController-class.html"
+     >EncapsulatedController</a><br />    <a target="mainFrame" href="VisionEgg.FlowControl.EvalStringController-class.html"
+     >EvalStringController</a><br />    <a target="mainFrame" href="VisionEgg.FlowControl.ExecStringController-class.html"
+     >ExecStringController</a><br />    <a target="mainFrame" href="VisionEgg.FlowControl.FunctionController-class.html"
+     >FunctionController</a><br />    <a target="mainFrame" href="VisionEgg.FlowControl.Presentation-class.html"
+     >Presentation</a><br />  <h2 class="toc">Variables</h2>
+    <a target="mainFrame" href="VisionEgg.FlowControl-module.html#EVERY_FRAME"
+     >EVERY_FRAME</a><br />    <a target="mainFrame" href="VisionEgg.FlowControl-module.html#FRAMES_ABSOLUTE"
+     >FRAMES_ABSOLUTE</a><br />    <a target="mainFrame" href="VisionEgg.FlowControl-module.html#FRAMES_SINCE_GO"
+     >FRAMES_SINCE_GO</a><br />    <a target="mainFrame" href="VisionEgg.FlowControl-module.html#NEVER"
+     >NEVER</a><br />    <a target="mainFrame" href="VisionEgg.FlowControl-module.html#NOT_BETWEEN_GO"
+     >NOT_BETWEEN_GO</a><br />    <a target="mainFrame" href="VisionEgg.FlowControl-module.html#NOT_DURING_GO"
+     >NOT_DURING_GO</a><br />    <a target="mainFrame" href="VisionEgg.FlowControl-module.html#ONCE"
+     >ONCE</a><br />    <a target="mainFrame" href="VisionEgg.FlowControl-module.html#TIME_INDEPENDENT"
+     >TIME_INDEPENDENT</a><br />    <a target="mainFrame" href="VisionEgg.FlowControl-module.html#TIME_SEC_ABSOLUTE"
+     >TIME_SEC_ABSOLUTE</a><br />    <a target="mainFrame" href="VisionEgg.FlowControl-module.html#TIME_SEC_SINCE_GO"
+     >TIME_SEC_SINCE_GO</a><br />    <a target="mainFrame" href="VisionEgg.FlowControl-module.html#TRANSITIONS"
+     >TRANSITIONS</a><br /><hr />
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/toc-VisionEgg.GL-module.html b/doc/reference/html/toc-VisionEgg.GL-module.html
new file mode 100644
index 0000000..e2cbf8a
--- /dev/null
+++ b/doc/reference/html/toc-VisionEgg.GL-module.html
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>GL</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="toc">Module GL</h1>
+<hr />
+  <h2 class="toc">Functions</h2>
+    <a target="mainFrame" href="VisionEgg.GL-module.html#glLoadMatrixf"
+     >glLoadMatrixf</a><br />  <h2 class="toc">Variables</h2>
+    <a target="mainFrame" href="VisionEgg.GL-module.html#GL_UNSIGNED_INT_8_8_8_8_REV"
+     >GL_UNSIGNED_INT_8_8_8_8_REV</a><br />    <a target="mainFrame" href="VisionEgg.GL-module.html#__version__"
+     >__version__</a><br /><hr />
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/toc-VisionEgg.GLTrace-module.html b/doc/reference/html/toc-VisionEgg.GLTrace-module.html
new file mode 100644
index 0000000..38fa793
--- /dev/null
+++ b/doc/reference/html/toc-VisionEgg.GLTrace-module.html
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>GLTrace</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="toc">Module GLTrace</h1>
+<hr />
+  <h2 class="toc">Classes</h2>
+    <a target="mainFrame" href="VisionEgg.GLTrace.Wrapper-class.html"
+     >Wrapper</a><br />  <h2 class="toc">Functions</h2>
+    <a target="mainFrame" href="VisionEgg.GLTrace-module.html#arg_to_str"
+     >arg_to_str</a><br />    <a target="mainFrame" href="VisionEgg.GLTrace-module.html#gl_trace_attach"
+     >gl_trace_attach</a><br />  <h2 class="toc">Variables</h2>
+    <a target="mainFrame" href="VisionEgg.GLTrace-module.html#bitmask_names_by_value"
+     >bitmask_names_by_value</a><br />    <a target="mainFrame" href="VisionEgg.GLTrace-module.html#bitmasks_by_function"
+     >bitmasks_by_function</a><br />    <a target="mainFrame" href="VisionEgg.GLTrace-module.html#gl_constants"
+     >gl_constants</a><br />    <a target="mainFrame" href="VisionEgg.GLTrace-module.html#raw_args_by_function"
+     >raw_args_by_function</a><br /><hr />
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/toc-VisionEgg.GUI-module.html b/doc/reference/html/toc-VisionEgg.GUI-module.html
new file mode 100644
index 0000000..c64e8c4
--- /dev/null
+++ b/doc/reference/html/toc-VisionEgg.GUI-module.html
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>GUI</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="toc">Module GUI</h1>
+<hr />
+  <h2 class="toc">Classes</h2>
+    <a target="mainFrame" href="VisionEgg.GUI.AppWindow-class.html"
+     >AppWindow</a><br />    <a target="mainFrame" href="VisionEgg.GUI.GetKeypressDialog-class.html"
+     >GetKeypressDialog</a><br />    <a target="mainFrame" href="VisionEgg.GUI.GraphicsConfigurationWindow-class.html"
+     >GraphicsConfigurationWindow</a><br />    <a target="mainFrame" href="VisionEgg.GUI.InfoFrame-class.html"
+     >InfoFrame</a><br />    <a target="mainFrame" href="VisionEgg.GUI.ProgressBar-class.html"
+     >ProgressBar</a><br />    <a target="mainFrame" href="VisionEgg.GUI.ToplevelDialog-class.html"
+     >ToplevelDialog</a><br />  <h2 class="toc">Functions</h2>
+    <a target="mainFrame" href="VisionEgg.GUI-module.html#showexception"
+     >showexception</a><br />  <h2 class="toc">Variables</h2>
+    <a target="mainFrame" href="VisionEgg.GUI-module.html#Tkinter"
+     >Tkinter</a><br />    <a target="mainFrame" href="VisionEgg.GUI-module.html#tkFileDialog"
+     >tkFileDialog</a><br />    <a target="mainFrame" href="VisionEgg.GUI-module.html#tkMessageBox"
+     >tkMessageBox</a><br /><hr />
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/toc-VisionEgg.Gratings-module.html b/doc/reference/html/toc-VisionEgg.Gratings-module.html
new file mode 100644
index 0000000..f3d1fd2
--- /dev/null
+++ b/doc/reference/html/toc-VisionEgg.Gratings-module.html
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>Gratings</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="toc">Module Gratings</h1>
+<hr />
+  <h2 class="toc">Classes</h2>
+    <a target="mainFrame" href="VisionEgg.Gratings.AlphaGratingCommon-class.html"
+     >AlphaGratingCommon</a><br />    <a target="mainFrame" href="VisionEgg.Gratings.LuminanceGratingCommon-class.html"
+     >LuminanceGratingCommon</a><br />    <a target="mainFrame" href="VisionEgg.Gratings.NumSamplesTooLargeError-class.html"
+     >NumSamplesTooLargeError</a><br />    <a target="mainFrame" href="VisionEgg.Gratings.SinGrating2D-class.html"
+     >SinGrating2D</a><br />    <a target="mainFrame" href="VisionEgg.Gratings.SinGrating3D-class.html"
+     >SinGrating3D</a><br /><hr />
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/toc-VisionEgg.MoreStimuli-module.html b/doc/reference/html/toc-VisionEgg.MoreStimuli-module.html
new file mode 100644
index 0000000..0b25d85
--- /dev/null
+++ b/doc/reference/html/toc-VisionEgg.MoreStimuli-module.html
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>MoreStimuli</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="toc">Module MoreStimuli</h1>
+<hr />
+  <h2 class="toc">Classes</h2>
+    <a target="mainFrame" href="VisionEgg.MoreStimuli.Arrow-class.html"
+     >Arrow</a><br />    <a target="mainFrame" href="VisionEgg.MoreStimuli.FilledCircle-class.html"
+     >FilledCircle</a><br />    <a target="mainFrame" href="VisionEgg.MoreStimuli.Rectangle3D-class.html"
+     >Rectangle3D</a><br />    <a target="mainFrame" href="VisionEgg.MoreStimuli.Target2D-class.html"
+     >Target2D</a><br /><hr />
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/toc-VisionEgg.ParameterTypes-module.html b/doc/reference/html/toc-VisionEgg.ParameterTypes-module.html
new file mode 100644
index 0000000..338d9cd
--- /dev/null
+++ b/doc/reference/html/toc-VisionEgg.ParameterTypes-module.html
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>ParameterTypes</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="toc">Module ParameterTypes</h1>
+<hr />
+  <h2 class="toc">Classes</h2>
+    <a target="mainFrame" href="VisionEgg.ParameterTypes.AnyClass-class.html"
+     >AnyClass</a><br />    <a target="mainFrame" href="VisionEgg.ParameterTypes.AnyClassMC-class.html"
+     >AnyClassMC</a><br />    <a target="mainFrame" href="VisionEgg.ParameterTypes.AnyOf-class.html"
+     >AnyOf</a><br />    <a target="mainFrame" href="VisionEgg.ParameterTypes.Boolean-class.html"
+     >Boolean</a><br />    <a target="mainFrame" href="VisionEgg.ParameterTypes.BooleanMC-class.html"
+     >BooleanMC</a><br />    <a target="mainFrame" href="VisionEgg.ParameterTypes.Callable-class.html"
+     >Callable</a><br />    <a target="mainFrame" href="VisionEgg.ParameterTypes.CallableMC-class.html"
+     >CallableMC</a><br />    <a target="mainFrame" href="VisionEgg.ParameterTypes.Instance-class.html"
+     >Instance</a><br />    <a target="mainFrame" href="VisionEgg.ParameterTypes.Integer-class.html"
+     >Integer</a><br />    <a target="mainFrame" href="VisionEgg.ParameterTypes.IntegerMC-class.html"
+     >IntegerMC</a><br />    <a target="mainFrame" href="VisionEgg.ParameterTypes.NoneMC-class.html"
+     >NoneMC</a><br />    <a target="mainFrame" href="VisionEgg.ParameterTypes.NoneType-class.html"
+     >NoneType</a><br />    <a target="mainFrame" href="VisionEgg.ParameterTypes.ParameterTypeDef-class.html"
+     >ParameterTypeDef</a><br />    <a target="mainFrame" href="VisionEgg.ParameterTypes.Real-class.html"
+     >Real</a><br />    <a target="mainFrame" href="VisionEgg.ParameterTypes.RealMC-class.html"
+     >RealMC</a><br />    <a target="mainFrame" href="VisionEgg.ParameterTypes.Sequence-class.html"
+     >Sequence</a><br />    <a target="mainFrame" href="VisionEgg.ParameterTypes.Sequence2-class.html"
+     >Sequence2</a><br />    <a target="mainFrame" href="VisionEgg.ParameterTypes.Sequence3-class.html"
+     >Sequence3</a><br />    <a target="mainFrame" href="VisionEgg.ParameterTypes.Sequence4-class.html"
+     >Sequence4</a><br />    <a target="mainFrame" href="VisionEgg.ParameterTypes.Sequence4x4-class.html"
+     >Sequence4x4</a><br />    <a target="mainFrame" href="VisionEgg.ParameterTypes.String-class.html"
+     >String</a><br />    <a target="mainFrame" href="VisionEgg.ParameterTypes.StringMC-class.html"
+     >StringMC</a><br />    <a target="mainFrame" href="VisionEgg.ParameterTypes.SubClass-class.html"
+     >SubClass</a><br />    <a target="mainFrame" href="VisionEgg.ParameterTypes.Unicode-class.html"
+     >Unicode</a><br />    <a target="mainFrame" href="VisionEgg.ParameterTypes.UnicodeMC-class.html"
+     >UnicodeMC</a><br />    <a target="mainFrame" href="VisionEgg.ParameterTypes.UnsignedInteger-class.html"
+     >UnsignedInteger</a><br />    <a target="mainFrame" href="VisionEgg.ParameterTypes.UnsignedIntegerMC-class.html"
+     >UnsignedIntegerMC</a><br />  <h2 class="toc">Functions</h2>
+    <a target="mainFrame" href="VisionEgg.ParameterTypes-module.html#assert_type"
+     >assert_type</a><br />    <a target="mainFrame" href="VisionEgg.ParameterTypes-module.html#get_all_classes_list"
+     >get_all_classes_list</a><br />    <a target="mainFrame" href="VisionEgg.ParameterTypes-module.html#get_type"
+     >get_type</a><br />    <a target="mainFrame" href="VisionEgg.ParameterTypes-module.html#is_parameter_type_def"
+     >is_parameter_type_def</a><br />  <h2 class="toc">Variables</h2>
+    <a target="mainFrame" href="VisionEgg.ParameterTypes-module.html#array_types"
+     >array_types</a><br /><hr />
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/toc-VisionEgg.PlatformDependent-module.html b/doc/reference/html/toc-VisionEgg.PlatformDependent-module.html
new file mode 100644
index 0000000..1db75e6
--- /dev/null
+++ b/doc/reference/html/toc-VisionEgg.PlatformDependent-module.html
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>PlatformDependent</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="toc">Module PlatformDependent</h1>
+<hr />
+  <h2 class="toc">Functions</h2>
+    <a target="mainFrame" href="VisionEgg.PlatformDependent-module.html#attempt_to_load_multitexturing"
+     >attempt_to_load_multitexturing</a><br />    <a target="mainFrame" href="VisionEgg.PlatformDependent-module.html#linux_but_unknown_drivers"
+     >linux_but_unknown_drivers</a><br />    <a target="mainFrame" href="VisionEgg.PlatformDependent-module.html#query_refresh_rate"
+     >query_refresh_rate</a><br />    <a target="mainFrame" href="VisionEgg.PlatformDependent-module.html#set_priority"
+     >set_priority</a><br />    <a target="mainFrame" href="VisionEgg.PlatformDependent-module.html#sync_swap_with_vbl_post_gl_init"
+     >sync_swap_with_vbl_post_gl_init</a><br />    <a target="mainFrame" href="VisionEgg.PlatformDependent-module.html#sync_swap_with_vbl_pre_gl_init"
+     >sync_swap_with_vbl_pre_gl_init</a><br /><hr />
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/toc-VisionEgg.PyroApps-module.html b/doc/reference/html/toc-VisionEgg.PyroApps-module.html
new file mode 100644
index 0000000..6f40b08
--- /dev/null
+++ b/doc/reference/html/toc-VisionEgg.PyroApps-module.html
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>PyroApps</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="toc">Module PyroApps</h1>
+<hr />
+<hr />
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/toc-VisionEgg.PyroApps.AST_ext-module.html b/doc/reference/html/toc-VisionEgg.PyroApps.AST_ext-module.html
new file mode 100644
index 0000000..b8ccaed
--- /dev/null
+++ b/doc/reference/html/toc-VisionEgg.PyroApps.AST_ext-module.html
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>AST_ext</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="toc">Module AST_ext</h1>
+<hr />
+  <h2 class="toc">Classes</h2>
+    <a target="mainFrame" href="VisionEgg.PyroApps.AST_ext.AST_Visitor-class.html"
+     >AST_Visitor</a><br />  <h2 class="toc">Functions</h2>
+    <a target="mainFrame" href="VisionEgg.PyroApps.AST_ext-module.html#extract_from_AST"
+     >extract_from_AST</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.AST_ext-module.html#gen_assign_val_subtree"
+     >gen_assign_val_subtree</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.AST_ext-module.html#modify_AST"
+     >modify_AST</a><br />  <h2 class="toc">Variables</h2>
+    <a target="mainFrame" href="VisionEgg.PyroApps.AST_ext-module.html#name_sequence"
+     >name_sequence</a><br /><hr />
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/toc-VisionEgg.PyroApps.ColorCalGUI-module.html b/doc/reference/html/toc-VisionEgg.PyroApps.ColorCalGUI-module.html
new file mode 100644
index 0000000..ec0a74b
--- /dev/null
+++ b/doc/reference/html/toc-VisionEgg.PyroApps.ColorCalGUI-module.html
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>ColorCalGUI</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="toc">Module ColorCalGUI</h1>
+<hr />
+  <h2 class="toc">Classes</h2>
+    <a target="mainFrame" href="VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame-class.html"
+     >ColorCalControlFrame</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.ColorCalGUI.ColorCalMetaParameters-class.html"
+     >ColorCalMetaParameters</a><br />  <h2 class="toc">Functions</h2>
+    <a target="mainFrame" href="VisionEgg.PyroApps.ColorCalGUI-module.html#get_control_list"
+     >get_control_list</a><br />  <h2 class="toc">Variables</h2>
+    <a target="mainFrame" href="VisionEgg.PyroApps.ColorCalGUI-module.html#__cvs__"
+     >__cvs__</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.ColorCalGUI-module.html#__date__"
+     >__date__</a><br /><hr />
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/toc-VisionEgg.PyroApps.ColorCalServer-module.html b/doc/reference/html/toc-VisionEgg.PyroApps.ColorCalServer-module.html
new file mode 100644
index 0000000..d60ba2e
--- /dev/null
+++ b/doc/reference/html/toc-VisionEgg.PyroApps.ColorCalServer-module.html
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>ColorCalServer</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="toc">Module ColorCalServer</h1>
+<hr />
+  <h2 class="toc">Classes</h2>
+    <a target="mainFrame" href="VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController-class.html"
+     >ColorCalMetaController</a><br />  <h2 class="toc">Functions</h2>
+    <a target="mainFrame" href="VisionEgg.PyroApps.ColorCalServer-module.html#get_meta_controller_class"
+     >get_meta_controller_class</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.ColorCalServer-module.html#get_meta_controller_stimkey"
+     >get_meta_controller_stimkey</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.ColorCalServer-module.html#make_stimuli"
+     >make_stimuli</a><br />  <h2 class="toc">Variables</h2>
+    <a target="mainFrame" href="VisionEgg.PyroApps.ColorCalServer-module.html#__cvs__"
+     >__cvs__</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.ColorCalServer-module.html#__date__"
+     >__date__</a><br /><hr />
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/toc-VisionEgg.PyroApps.DropinGUI-module.html b/doc/reference/html/toc-VisionEgg.PyroApps.DropinGUI-module.html
new file mode 100644
index 0000000..6b2b248
--- /dev/null
+++ b/doc/reference/html/toc-VisionEgg.PyroApps.DropinGUI-module.html
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>DropinGUI</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="toc">Module DropinGUI</h1>
+<hr />
+  <h2 class="toc">Classes</h2>
+    <a target="mainFrame" href="VisionEgg.PyroApps.DropinGUI.DropinControlFrame-class.html"
+     >DropinControlFrame</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.DropinGUI.DropinMetaParameters-class.html"
+     >DropinMetaParameters</a><br />  <h2 class="toc">Functions</h2>
+    <a target="mainFrame" href="VisionEgg.PyroApps.DropinGUI-module.html#get_control_list"
+     >get_control_list</a><br /><hr />
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/toc-VisionEgg.PyroApps.DropinServer-module.html b/doc/reference/html/toc-VisionEgg.PyroApps.DropinServer-module.html
new file mode 100644
index 0000000..2ebc9d3
--- /dev/null
+++ b/doc/reference/html/toc-VisionEgg.PyroApps.DropinServer-module.html
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>DropinServer</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="toc">Module DropinServer</h1>
+<hr />
+  <h2 class="toc">Classes</h2>
+    <a target="mainFrame" href="VisionEgg.PyroApps.DropinServer.DropinMetaController-class.html"
+     >DropinMetaController</a><br />  <h2 class="toc">Functions</h2>
+    <a target="mainFrame" href="VisionEgg.PyroApps.DropinServer-module.html#get_meta_controller_class"
+     >get_meta_controller_class</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.DropinServer-module.html#get_meta_controller_stimkey"
+     >get_meta_controller_stimkey</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.DropinServer-module.html#make_stimuli"
+     >make_stimuli</a><br /><hr />
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/toc-VisionEgg.PyroApps.EPhysGUI-module.html b/doc/reference/html/toc-VisionEgg.PyroApps.EPhysGUI-module.html
new file mode 100644
index 0000000..1acae3d
--- /dev/null
+++ b/doc/reference/html/toc-VisionEgg.PyroApps.EPhysGUI-module.html
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>EPhysGUI</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="toc">Module EPhysGUI</h1>
+<hr />
+  <h2 class="toc">Classes</h2>
+    <a target="mainFrame" href="VisionEgg.PyroApps.EPhysGUI.AppWindow-class.html"
+     >AppWindow</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.EPhysGUI.BarButton-class.html"
+     >BarButton</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase-class.html"
+     >ContainedObjectBase</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.EPhysGUI.GammaFrame-class.html"
+     >GammaFrame</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.EPhysGUI.ImageSequenceLauncher-class.html"
+     >ImageSequenceLauncher</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.EPhysGUI.Loop-class.html"
+     >Loop</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.EPhysGUI.LoopContainedObject-class.html"
+     >LoopContainedObject</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.EPhysGUI.LoopParamDialog-class.html"
+     >LoopParamDialog</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.EPhysGUI.ScrollListFrame-class.html"
+     >ScrollListFrame</a><br />  <h2 class="toc">Functions</h2>
+    <a target="mainFrame" href="VisionEgg.PyroApps.EPhysGUI-module.html#get_server"
+     >get_server</a><br />  <h2 class="toc">Variables</h2>
+    <a target="mainFrame" href="VisionEgg.PyroApps.EPhysGUI-module.html#__author__"
+     >__author__</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.EPhysGUI-module.html#__cvs__"
+     >__cvs__</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.EPhysGUI-module.html#__date__"
+     >__date__</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.EPhysGUI-module.html#__version__"
+     >__version__</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.EPhysGUI-module.html#client_list"
+     >client_list</a><br /><hr />
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/toc-VisionEgg.PyroApps.EPhysGUIUtils-module.html b/doc/reference/html/toc-VisionEgg.PyroApps.EPhysGUIUtils-module.html
new file mode 100644
index 0000000..34bc913
--- /dev/null
+++ b/doc/reference/html/toc-VisionEgg.PyroApps.EPhysGUIUtils-module.html
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>EPhysGUIUtils</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="toc">Module EPhysGUIUtils</h1>
+<hr />
+  <h2 class="toc">Classes</h2>
+    <a target="mainFrame" href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html"
+     >StimulusControlFrame</a><br />  <h2 class="toc">Variables</h2>
+    <a target="mainFrame" href="VisionEgg.PyroApps.EPhysGUIUtils-module.html#__author__"
+     >__author__</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.EPhysGUIUtils-module.html#__cvs__"
+     >__cvs__</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.EPhysGUIUtils-module.html#__date__"
+     >__date__</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.EPhysGUIUtils-module.html#__version__"
+     >__version__</a><br /><hr />
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/toc-VisionEgg.PyroApps.EPhysServer-module.html b/doc/reference/html/toc-VisionEgg.PyroApps.EPhysServer-module.html
new file mode 100644
index 0000000..c0f25b6
--- /dev/null
+++ b/doc/reference/html/toc-VisionEgg.PyroApps.EPhysServer-module.html
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>EPhysServer</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="toc">Module EPhysServer</h1>
+<hr />
+  <h2 class="toc">Classes</h2>
+    <a target="mainFrame" href="VisionEgg.PyroApps.EPhysServer.EPhysServer-class.html"
+     >EPhysServer</a><br />  <h2 class="toc">Functions</h2>
+    <a target="mainFrame" href="VisionEgg.PyroApps.EPhysServer-module.html#start_server"
+     >start_server</a><br />  <h2 class="toc">Variables</h2>
+    <a target="mainFrame" href="VisionEgg.PyroApps.EPhysServer-module.html#__author__"
+     >__author__</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.EPhysServer-module.html#__cvs__"
+     >__cvs__</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.EPhysServer-module.html#__date__"
+     >__date__</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.EPhysServer-module.html#__version__"
+     >__version__</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.EPhysServer-module.html#server_modules"
+     >server_modules</a><br /><hr />
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/toc-VisionEgg.PyroApps.FlatGratingGUI-module.html b/doc/reference/html/toc-VisionEgg.PyroApps.FlatGratingGUI-module.html
new file mode 100644
index 0000000..f7a8934
--- /dev/null
+++ b/doc/reference/html/toc-VisionEgg.PyroApps.FlatGratingGUI-module.html
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>FlatGratingGUI</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="toc">Module FlatGratingGUI</h1>
+<hr />
+  <h2 class="toc">Classes</h2>
+    <a target="mainFrame" href="VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame-class.html"
+     >FlatGratingControlFrame</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.FlatGratingGUI.FlatGratingMetaParameters-class.html"
+     >FlatGratingMetaParameters</a><br />  <h2 class="toc">Functions</h2>
+    <a target="mainFrame" href="VisionEgg.PyroApps.FlatGratingGUI-module.html#get_control_list"
+     >get_control_list</a><br />  <h2 class="toc">Variables</h2>
+    <a target="mainFrame" href="VisionEgg.PyroApps.FlatGratingGUI-module.html#__cvs__"
+     >__cvs__</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.FlatGratingGUI-module.html#__date__"
+     >__date__</a><br /><hr />
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/toc-VisionEgg.PyroApps.FlatGratingServer-module.html b/doc/reference/html/toc-VisionEgg.PyroApps.FlatGratingServer-module.html
new file mode 100644
index 0000000..e70c599
--- /dev/null
+++ b/doc/reference/html/toc-VisionEgg.PyroApps.FlatGratingServer-module.html
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>FlatGratingServer</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="toc">Module FlatGratingServer</h1>
+<hr />
+  <h2 class="toc">Classes</h2>
+    <a target="mainFrame" href="VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController-class.html"
+     >FlatGratingExperimentMetaController</a><br />  <h2 class="toc">Functions</h2>
+    <a target="mainFrame" href="VisionEgg.PyroApps.FlatGratingServer-module.html#get_meta_controller_class"
+     >get_meta_controller_class</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.FlatGratingServer-module.html#get_meta_controller_stimkey"
+     >get_meta_controller_stimkey</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.FlatGratingServer-module.html#make_stimuli"
+     >make_stimuli</a><br />  <h2 class="toc">Variables</h2>
+    <a target="mainFrame" href="VisionEgg.PyroApps.FlatGratingServer-module.html#__cvs__"
+     >__cvs__</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.FlatGratingServer-module.html#__date__"
+     >__date__</a><br /><hr />
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/toc-VisionEgg.PyroApps.GridGUI-module.html b/doc/reference/html/toc-VisionEgg.PyroApps.GridGUI-module.html
new file mode 100644
index 0000000..e19b672
--- /dev/null
+++ b/doc/reference/html/toc-VisionEgg.PyroApps.GridGUI-module.html
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>GridGUI</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="toc">Module GridGUI</h1>
+<hr />
+  <h2 class="toc">Classes</h2>
+    <a target="mainFrame" href="VisionEgg.PyroApps.GridGUI.GridControlFrame-class.html"
+     >GridControlFrame</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.GridGUI.GridMetaParameters-class.html"
+     >GridMetaParameters</a><br />  <h2 class="toc">Functions</h2>
+    <a target="mainFrame" href="VisionEgg.PyroApps.GridGUI-module.html#get_control_list"
+     >get_control_list</a><br />  <h2 class="toc">Variables</h2>
+    <a target="mainFrame" href="VisionEgg.PyroApps.GridGUI-module.html#__author__"
+     >__author__</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.GridGUI-module.html#__cvs__"
+     >__cvs__</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.GridGUI-module.html#__date__"
+     >__date__</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.GridGUI-module.html#__version__"
+     >__version__</a><br /><hr />
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/toc-VisionEgg.PyroApps.GridServer-module.html b/doc/reference/html/toc-VisionEgg.PyroApps.GridServer-module.html
new file mode 100644
index 0000000..3bc8b49
--- /dev/null
+++ b/doc/reference/html/toc-VisionEgg.PyroApps.GridServer-module.html
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>GridServer</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="toc">Module GridServer</h1>
+<hr />
+  <h2 class="toc">Classes</h2>
+    <a target="mainFrame" href="VisionEgg.PyroApps.GridServer.GridMetaController-class.html"
+     >GridMetaController</a><br />  <h2 class="toc">Functions</h2>
+    <a target="mainFrame" href="VisionEgg.PyroApps.GridServer-module.html#get_meta_controller_class"
+     >get_meta_controller_class</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.GridServer-module.html#get_meta_controller_stimkey"
+     >get_meta_controller_stimkey</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.GridServer-module.html#make_stimuli"
+     >make_stimuli</a><br />  <h2 class="toc">Variables</h2>
+    <a target="mainFrame" href="VisionEgg.PyroApps.GridServer-module.html#__author__"
+     >__author__</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.GridServer-module.html#__cvs__"
+     >__cvs__</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.GridServer-module.html#__date__"
+     >__date__</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.GridServer-module.html#__version__"
+     >__version__</a><br /><hr />
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/toc-VisionEgg.PyroApps.MouseTargetGUI-module.html b/doc/reference/html/toc-VisionEgg.PyroApps.MouseTargetGUI-module.html
new file mode 100644
index 0000000..0b7dfef
--- /dev/null
+++ b/doc/reference/html/toc-VisionEgg.PyroApps.MouseTargetGUI-module.html
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>MouseTargetGUI</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="toc">Module MouseTargetGUI</h1>
+<hr />
+  <h2 class="toc">Classes</h2>
+    <a target="mainFrame" href="VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame-class.html"
+     >MouseTargetControlFrame</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.MouseTargetGUI.MouseTargetMetaParameters-class.html"
+     >MouseTargetMetaParameters</a><br />  <h2 class="toc">Functions</h2>
+    <a target="mainFrame" href="VisionEgg.PyroApps.MouseTargetGUI-module.html#get_control_list"
+     >get_control_list</a><br />  <h2 class="toc">Variables</h2>
+    <a target="mainFrame" href="VisionEgg.PyroApps.MouseTargetGUI-module.html#__cvs__"
+     >__cvs__</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.MouseTargetGUI-module.html#__date__"
+     >__date__</a><br /><hr />
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/toc-VisionEgg.PyroApps.MouseTargetServer-module.html b/doc/reference/html/toc-VisionEgg.PyroApps.MouseTargetServer-module.html
new file mode 100644
index 0000000..086a9fc
--- /dev/null
+++ b/doc/reference/html/toc-VisionEgg.PyroApps.MouseTargetServer-module.html
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>MouseTargetServer</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="toc">Module MouseTargetServer</h1>
+<hr />
+  <h2 class="toc">Classes</h2>
+    <a target="mainFrame" href="VisionEgg.PyroApps.MouseTargetServer.MousePositionController-class.html"
+     >MousePositionController</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController-class.html"
+     >MouseTargetExperimentMetaController</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.MouseTargetServer.TargetOrientationController-class.html"
+     >TargetOrientationController</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.MouseTargetServer.TargetPositionController-class.html"
+     >TargetPositionController</a><br />  <h2 class="toc">Functions</h2>
+    <a target="mainFrame" href="VisionEgg.PyroApps.MouseTargetServer-module.html#cross_product"
+     >cross_product</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.MouseTargetServer-module.html#get_meta_controller_class"
+     >get_meta_controller_class</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.MouseTargetServer-module.html#get_meta_controller_stimkey"
+     >get_meta_controller_stimkey</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.MouseTargetServer-module.html#get_target_size"
+     >get_target_size</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.MouseTargetServer-module.html#keydown"
+     >keydown</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.MouseTargetServer-module.html#keyup"
+     >keyup</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.MouseTargetServer-module.html#mag"
+     >mag</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.MouseTargetServer-module.html#make_stimuli"
+     >make_stimuli</a><br />  <h2 class="toc">Variables</h2>
+    <a target="mainFrame" href="VisionEgg.PyroApps.MouseTargetServer-module.html#__cvs__"
+     >__cvs__</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.MouseTargetServer-module.html#__date__"
+     >__date__</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.MouseTargetServer-module.html#down"
+     >down</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.MouseTargetServer-module.html#handle_event_callbacks"
+     >handle_event_callbacks</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.MouseTargetServer-module.html#last_mouse_position"
+     >last_mouse_position</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.MouseTargetServer-module.html#left"
+     >left</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.MouseTargetServer-module.html#mouse_position"
+     >mouse_position</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.MouseTargetServer-module.html#right"
+     >right</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.MouseTargetServer-module.html#target_h"
+     >target_h</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.MouseTargetServer-module.html#target_w"
+     >target_w</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.MouseTargetServer-module.html#up"
+     >up</a><br /><hr />
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/toc-VisionEgg.PyroApps.ScreenPositionGUI-module.html b/doc/reference/html/toc-VisionEgg.PyroApps.ScreenPositionGUI-module.html
new file mode 100644
index 0000000..ef80a6b
--- /dev/null
+++ b/doc/reference/html/toc-VisionEgg.PyroApps.ScreenPositionGUI-module.html
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>ScreenPositionGUI</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="toc">Module ScreenPositionGUI</h1>
+<hr />
+  <h2 class="toc">Classes</h2>
+    <a target="mainFrame" href="VisionEgg.PyroApps.ScreenPositionGUI.CallbackEntry-class.html"
+     >CallbackEntry</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html"
+     >ScreenPositionControlFrame</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionParameters-class.html"
+     >ScreenPositionParameters</a><br />  <h2 class="toc">Variables</h2>
+    <a target="mainFrame" href="VisionEgg.PyroApps.ScreenPositionGUI-module.html#__cvs__"
+     >__cvs__</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.ScreenPositionGUI-module.html#__date__"
+     >__date__</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.ScreenPositionGUI-module.html#__version__"
+     >__version__</a><br /><hr />
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/toc-VisionEgg.PyroApps.ScreenPositionServer-module.html b/doc/reference/html/toc-VisionEgg.PyroApps.ScreenPositionServer-module.html
new file mode 100644
index 0000000..e9f9b38
--- /dev/null
+++ b/doc/reference/html/toc-VisionEgg.PyroApps.ScreenPositionServer-module.html
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>ScreenPositionServer</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="toc">Module ScreenPositionServer</h1>
+<hr />
+  <h2 class="toc">Classes</h2>
+    <a target="mainFrame" href="VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController-class.html"
+     >ScreenPositionMetaController</a><br />  <h2 class="toc">Variables</h2>
+    <a target="mainFrame" href="VisionEgg.PyroApps.ScreenPositionServer-module.html#__cvs__"
+     >__cvs__</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.ScreenPositionServer-module.html#__date__"
+     >__date__</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.ScreenPositionServer-module.html#__version__"
+     >__version__</a><br /><hr />
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/toc-VisionEgg.PyroApps.SphereGratingGUI-module.html b/doc/reference/html/toc-VisionEgg.PyroApps.SphereGratingGUI-module.html
new file mode 100644
index 0000000..d7b3e23
--- /dev/null
+++ b/doc/reference/html/toc-VisionEgg.PyroApps.SphereGratingGUI-module.html
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>SphereGratingGUI</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="toc">Module SphereGratingGUI</h1>
+<hr />
+  <h2 class="toc">Classes</h2>
+    <a target="mainFrame" href="VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame-class.html"
+     >SphereGratingControlFrame</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.SphereGratingGUI.SphereGratingMetaParameters-class.html"
+     >SphereGratingMetaParameters</a><br />  <h2 class="toc">Functions</h2>
+    <a target="mainFrame" href="VisionEgg.PyroApps.SphereGratingGUI-module.html#get_control_list"
+     >get_control_list</a><br />  <h2 class="toc">Variables</h2>
+    <a target="mainFrame" href="VisionEgg.PyroApps.SphereGratingGUI-module.html#__cvs__"
+     >__cvs__</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.SphereGratingGUI-module.html#__date__"
+     >__date__</a><br /><hr />
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/toc-VisionEgg.PyroApps.SphereGratingServer-module.html b/doc/reference/html/toc-VisionEgg.PyroApps.SphereGratingServer-module.html
new file mode 100644
index 0000000..f89d5c9
--- /dev/null
+++ b/doc/reference/html/toc-VisionEgg.PyroApps.SphereGratingServer-module.html
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>SphereGratingServer</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="toc">Module SphereGratingServer</h1>
+<hr />
+  <h2 class="toc">Classes</h2>
+    <a target="mainFrame" href="VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController-class.html"
+     >SphereGratingExperimentMetaController</a><br />  <h2 class="toc">Functions</h2>
+    <a target="mainFrame" href="VisionEgg.PyroApps.SphereGratingServer-module.html#get_meta_controller_class"
+     >get_meta_controller_class</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.SphereGratingServer-module.html#get_meta_controller_stimkey"
+     >get_meta_controller_stimkey</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.SphereGratingServer-module.html#make_stimuli"
+     >make_stimuli</a><br />  <h2 class="toc">Variables</h2>
+    <a target="mainFrame" href="VisionEgg.PyroApps.SphereGratingServer-module.html#__cvs__"
+     >__cvs__</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.SphereGratingServer-module.html#__date__"
+     >__date__</a><br /><hr />
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/toc-VisionEgg.PyroApps.SpinningDrumGUI-module.html b/doc/reference/html/toc-VisionEgg.PyroApps.SpinningDrumGUI-module.html
new file mode 100644
index 0000000..80be29e
--- /dev/null
+++ b/doc/reference/html/toc-VisionEgg.PyroApps.SpinningDrumGUI-module.html
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>SpinningDrumGUI</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="toc">Module SpinningDrumGUI</h1>
+<hr />
+  <h2 class="toc">Classes</h2>
+    <a target="mainFrame" href="VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame-class.html"
+     >SpinningDrumControlFrame</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumMetaParameters-class.html"
+     >SpinningDrumMetaParameters</a><br />  <h2 class="toc">Functions</h2>
+    <a target="mainFrame" href="VisionEgg.PyroApps.SpinningDrumGUI-module.html#get_control_list"
+     >get_control_list</a><br />  <h2 class="toc">Variables</h2>
+    <a target="mainFrame" href="VisionEgg.PyroApps.SpinningDrumGUI-module.html#__author__"
+     >__author__</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.SpinningDrumGUI-module.html#__cvs__"
+     >__cvs__</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.SpinningDrumGUI-module.html#__date__"
+     >__date__</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.SpinningDrumGUI-module.html#__version__"
+     >__version__</a><br /><hr />
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/toc-VisionEgg.PyroApps.SpinningDrumServer-module.html b/doc/reference/html/toc-VisionEgg.PyroApps.SpinningDrumServer-module.html
new file mode 100644
index 0000000..e33477b
--- /dev/null
+++ b/doc/reference/html/toc-VisionEgg.PyroApps.SpinningDrumServer-module.html
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>SpinningDrumServer</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="toc">Module SpinningDrumServer</h1>
+<hr />
+  <h2 class="toc">Classes</h2>
+    <a target="mainFrame" href="VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController-class.html"
+     >SpinningDrumExperimentMetaController</a><br />  <h2 class="toc">Functions</h2>
+    <a target="mainFrame" href="VisionEgg.PyroApps.SpinningDrumServer-module.html#get_meta_controller_class"
+     >get_meta_controller_class</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.SpinningDrumServer-module.html#get_meta_controller_stimkey"
+     >get_meta_controller_stimkey</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.SpinningDrumServer-module.html#make_stimuli"
+     >make_stimuli</a><br />  <h2 class="toc">Variables</h2>
+    <a target="mainFrame" href="VisionEgg.PyroApps.SpinningDrumServer-module.html#__author__"
+     >__author__</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.SpinningDrumServer-module.html#__cvs__"
+     >__cvs__</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.SpinningDrumServer-module.html#__date__"
+     >__date__</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.SpinningDrumServer-module.html#__version__"
+     >__version__</a><br /><hr />
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/toc-VisionEgg.PyroApps.TargetGUI-module.html b/doc/reference/html/toc-VisionEgg.PyroApps.TargetGUI-module.html
new file mode 100644
index 0000000..85e2fdf
--- /dev/null
+++ b/doc/reference/html/toc-VisionEgg.PyroApps.TargetGUI-module.html
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>TargetGUI</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="toc">Module TargetGUI</h1>
+<hr />
+  <h2 class="toc">Classes</h2>
+    <a target="mainFrame" href="VisionEgg.PyroApps.TargetGUI.TargetControlFrame-class.html"
+     >TargetControlFrame</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.TargetGUI.TargetMetaParameters-class.html"
+     >TargetMetaParameters</a><br />  <h2 class="toc">Functions</h2>
+    <a target="mainFrame" href="VisionEgg.PyroApps.TargetGUI-module.html#get_control_list"
+     >get_control_list</a><br />  <h2 class="toc">Variables</h2>
+    <a target="mainFrame" href="VisionEgg.PyroApps.TargetGUI-module.html#__cvs__"
+     >__cvs__</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.TargetGUI-module.html#__date__"
+     >__date__</a><br /><hr />
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/toc-VisionEgg.PyroApps.TargetServer-module.html b/doc/reference/html/toc-VisionEgg.PyroApps.TargetServer-module.html
new file mode 100644
index 0000000..543aa29
--- /dev/null
+++ b/doc/reference/html/toc-VisionEgg.PyroApps.TargetServer-module.html
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>TargetServer</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="toc">Module TargetServer</h1>
+<hr />
+  <h2 class="toc">Classes</h2>
+    <a target="mainFrame" href="VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController-class.html"
+     >TargetExperimentMetaController</a><br />  <h2 class="toc">Functions</h2>
+    <a target="mainFrame" href="VisionEgg.PyroApps.TargetServer-module.html#get_meta_controller_class"
+     >get_meta_controller_class</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.TargetServer-module.html#get_meta_controller_stimkey"
+     >get_meta_controller_stimkey</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.TargetServer-module.html#make_stimuli"
+     >make_stimuli</a><br />  <h2 class="toc">Variables</h2>
+    <a target="mainFrame" href="VisionEgg.PyroApps.TargetServer-module.html#__cvs__"
+     >__cvs__</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.TargetServer-module.html#__date__"
+     >__date__</a><br /><hr />
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/toc-VisionEgg.PyroApps.VarTypes-module.html b/doc/reference/html/toc-VisionEgg.PyroApps.VarTypes-module.html
new file mode 100644
index 0000000..135dcec
--- /dev/null
+++ b/doc/reference/html/toc-VisionEgg.PyroApps.VarTypes-module.html
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>VarTypes</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="toc">Module VarTypes</h1>
+<hr />
+  <h2 class="toc">Functions</h2>
+    <a target="mainFrame" href="VisionEgg.PyroApps.VarTypes-module.html#getID"
+     >getID</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.VarTypes-module.html#getType"
+     >getType</a><br /><hr />
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/toc-VisionEgg.PyroClient-module.html b/doc/reference/html/toc-VisionEgg.PyroClient-module.html
new file mode 100644
index 0000000..8533e54
--- /dev/null
+++ b/doc/reference/html/toc-VisionEgg.PyroClient-module.html
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>PyroClient</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="toc">Module PyroClient</h1>
+<hr />
+  <h2 class="toc">Classes</h2>
+    <a target="mainFrame" href="VisionEgg.PyroClient.PyroClient-class.html"
+     >PyroClient</a><br />  <h2 class="toc">Variables</h2>
+    <a target="mainFrame" href="VisionEgg.PyroClient-module.html#__cvs__"
+     >__cvs__</a><br />    <a target="mainFrame" href="VisionEgg.PyroClient-module.html#__date__"
+     >__date__</a><br /><hr />
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/toc-VisionEgg.PyroHelpers-module.html b/doc/reference/html/toc-VisionEgg.PyroHelpers-module.html
new file mode 100644
index 0000000..4324169
--- /dev/null
+++ b/doc/reference/html/toc-VisionEgg.PyroHelpers-module.html
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>PyroHelpers</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="toc">Module PyroHelpers</h1>
+<hr />
+  <h2 class="toc">Classes</h2>
+    <a target="mainFrame" href="VisionEgg.PyroHelpers.PyroConstantController-class.html"
+     >PyroConstantController</a><br />    <a target="mainFrame" href="VisionEgg.PyroHelpers.PyroEncapsulatedController-class.html"
+     >PyroEncapsulatedController</a><br />    <a target="mainFrame" href="VisionEgg.PyroHelpers.PyroEvalStringController-class.html"
+     >PyroEvalStringController</a><br />    <a target="mainFrame" href="VisionEgg.PyroHelpers.PyroExecStringController-class.html"
+     >PyroExecStringController</a><br />    <a target="mainFrame" href="VisionEgg.PyroHelpers.PyroListenController-class.html"
+     >PyroListenController</a><br />    <a target="mainFrame" href="VisionEgg.PyroHelpers.PyroLocalDictController-class.html"
+     >PyroLocalDictController</a><br />    <a target="mainFrame" href="VisionEgg.PyroHelpers.PyroServer-class.html"
+     >PyroServer</a><br />  <h2 class="toc">Variables</h2>
+    <a target="mainFrame" href="VisionEgg.PyroHelpers-module.html#__cvs__"
+     >__cvs__</a><br />    <a target="mainFrame" href="VisionEgg.PyroHelpers-module.html#__date__"
+     >__date__</a><br />    <a target="mainFrame" href="VisionEgg.PyroHelpers-module.html#__version__"
+     >__version__</a><br /><hr />
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/toc-VisionEgg.QuickTime-module.html b/doc/reference/html/toc-VisionEgg.QuickTime-module.html
new file mode 100644
index 0000000..9254e00
--- /dev/null
+++ b/doc/reference/html/toc-VisionEgg.QuickTime-module.html
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>QuickTime</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="toc">Module QuickTime</h1>
+<hr />
+  <h2 class="toc">Classes</h2>
+    <a target="mainFrame" href="VisionEgg.QuickTime.MovieTexture-class.html"
+     >MovieTexture</a><br />  <h2 class="toc">Functions</h2>
+    <a target="mainFrame" href="VisionEgg.QuickTime-module.html#new_movie_from_filename"
+     >new_movie_from_filename</a><br />  <h2 class="toc">Variables</h2>
+    <a target="mainFrame" href="VisionEgg.QuickTime-module.html#__version__"
+     >__version__</a><br /><hr />
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/toc-VisionEgg.ResponseControl-module.html b/doc/reference/html/toc-VisionEgg.ResponseControl-module.html
new file mode 100644
index 0000000..c69da4b
--- /dev/null
+++ b/doc/reference/html/toc-VisionEgg.ResponseControl-module.html
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>ResponseControl</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="toc">Module ResponseControl</h1>
+<hr />
+  <h2 class="toc">Classes</h2>
+    <a target="mainFrame" href="VisionEgg.ResponseControl.KeyboardResponseController-class.html"
+     >KeyboardResponseController</a><br />    <a target="mainFrame" href="VisionEgg.ResponseControl.ResponseController-class.html"
+     >ResponseController</a><br />  <h2 class="toc">Variables</h2>
+    <a target="mainFrame" href="VisionEgg.ResponseControl-module.html#__version__"
+     >__version__</a><br /><hr />
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/toc-VisionEgg.SphereMap-module.html b/doc/reference/html/toc-VisionEgg.SphereMap-module.html
new file mode 100644
index 0000000..dd08160
--- /dev/null
+++ b/doc/reference/html/toc-VisionEgg.SphereMap-module.html
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>SphereMap</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="toc">Module SphereMap</h1>
+<hr />
+  <h2 class="toc">Classes</h2>
+    <a target="mainFrame" href="VisionEgg.SphereMap.AzElGrid-class.html"
+     >AzElGrid</a><br />    <a target="mainFrame" href="VisionEgg.SphereMap.SphereGrating-class.html"
+     >SphereGrating</a><br />    <a target="mainFrame" href="VisionEgg.SphereMap.SphereMap-class.html"
+     >SphereMap</a><br />    <a target="mainFrame" href="VisionEgg.SphereMap.SphereWindow-class.html"
+     >SphereWindow</a><br />  <h2 class="toc">Variables</h2>
+    <a target="mainFrame" href="VisionEgg.SphereMap-module.html#__version__"
+     >__version__</a><br /><hr />
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/toc-VisionEgg.TCPController-module.html b/doc/reference/html/toc-VisionEgg.TCPController-module.html
new file mode 100644
index 0000000..ff3d3bf
--- /dev/null
+++ b/doc/reference/html/toc-VisionEgg.TCPController-module.html
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>TCPController</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="toc">Module TCPController</h1>
+<hr />
+  <h2 class="toc">Classes</h2>
+    <a target="mainFrame" href="VisionEgg.TCPController.SocketListenController-class.html"
+     >SocketListenController</a><br />    <a target="mainFrame" href="VisionEgg.TCPController.TCPController-class.html"
+     >TCPController</a><br />    <a target="mainFrame" href="VisionEgg.TCPController.TCPServer-class.html"
+     >TCPServer</a><br />  <h2 class="toc">Variables</h2>
+    <a target="mainFrame" href="VisionEgg.TCPController-module.html#__cvs__"
+     >__cvs__</a><br />    <a target="mainFrame" href="VisionEgg.TCPController-module.html#__date__"
+     >__date__</a><br />    <a target="mainFrame" href="VisionEgg.TCPController-module.html#__version__"
+     >__version__</a><br /><hr />
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/toc-VisionEgg.Text-module.html b/doc/reference/html/toc-VisionEgg.Text-module.html
new file mode 100644
index 0000000..6840f2d
--- /dev/null
+++ b/doc/reference/html/toc-VisionEgg.Text-module.html
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>Text</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="toc">Module Text</h1>
+<hr />
+  <h2 class="toc">Classes</h2>
+    <a target="mainFrame" href="VisionEgg.Text.BitmapText-class.html"
+     >BitmapText</a><br />    <a target="mainFrame" href="VisionEgg.Text.GlutTextBase-class.html"
+     >GlutTextBase</a><br />    <a target="mainFrame" href="VisionEgg.Text.StrokeText-class.html"
+     >StrokeText</a><br />    <a target="mainFrame" href="VisionEgg.Text.Text-class.html"
+     >Text</a><br />  <h2 class="toc">Variables</h2>
+    <a target="mainFrame" href="VisionEgg.Text-module.html#have_glut"
+     >have_glut</a><br /><hr />
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/toc-VisionEgg.Textures-module.html b/doc/reference/html/toc-VisionEgg.Textures-module.html
new file mode 100644
index 0000000..b55ba1a
--- /dev/null
+++ b/doc/reference/html/toc-VisionEgg.Textures-module.html
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>Textures</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="toc">Module Textures</h1>
+<hr />
+  <h2 class="toc">Classes</h2>
+    <a target="mainFrame" href="VisionEgg.Textures.FixationCross-class.html"
+     >FixationCross</a><br />    <a target="mainFrame" href="VisionEgg.Textures.Mask2D-class.html"
+     >Mask2D</a><br />    <a target="mainFrame" href="VisionEgg.Textures.SpinningDrum-class.html"
+     >SpinningDrum</a><br />    <a target="mainFrame" href="VisionEgg.Textures.Texture-class.html"
+     >Texture</a><br />    <a target="mainFrame" href="VisionEgg.Textures.TextureFromFile-class.html"
+     >TextureFromFile</a><br />    <a target="mainFrame" href="VisionEgg.Textures.TextureObject-class.html"
+     >TextureObject</a><br />    <a target="mainFrame" href="VisionEgg.Textures.TextureStimulus-class.html"
+     >TextureStimulus</a><br />    <a target="mainFrame" href="VisionEgg.Textures.TextureStimulus3D-class.html"
+     >TextureStimulus3D</a><br />    <a target="mainFrame" href="VisionEgg.Textures.TextureStimulusBaseClass-class.html"
+     >TextureStimulusBaseClass</a><br />    <a target="mainFrame" href="VisionEgg.Textures.TextureTooLargeError-class.html"
+     >TextureTooLargeError</a><br />  <h2 class="toc">Functions</h2>
+    <a target="mainFrame" href="VisionEgg.Textures-module.html#convert_to_numpy_if_array"
+     >convert_to_numpy_if_array</a><br />    <a target="mainFrame" href="VisionEgg.Textures-module.html#is_power_of_2"
+     >is_power_of_2</a><br />    <a target="mainFrame" href="VisionEgg.Textures-module.html#next_power_of_2"
+     >next_power_of_2</a><br />  <h2 class="toc">Variables</h2>
+    <a target="mainFrame" href="VisionEgg.Textures-module.html#array_types"
+     >array_types</a><br />    <a target="mainFrame" href="VisionEgg.Textures-module.html#shrink_filter"
+     >shrink_filter</a><br /><hr />
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/toc-VisionEgg.ThreeDeeMath-module.html b/doc/reference/html/toc-VisionEgg.ThreeDeeMath-module.html
new file mode 100644
index 0000000..022710b
--- /dev/null
+++ b/doc/reference/html/toc-VisionEgg.ThreeDeeMath-module.html
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>ThreeDeeMath</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="toc">Module ThreeDeeMath</h1>
+<hr />
+  <h2 class="toc">Classes</h2>
+    <a target="mainFrame" href="VisionEgg.ThreeDeeMath.TransformMatrix-class.html"
+     >TransformMatrix</a><br />  <h2 class="toc">Functions</h2>
+    <a target="mainFrame" href="VisionEgg.ThreeDeeMath-module.html#make_homogeneous_coord_rows"
+     >make_homogeneous_coord_rows</a><br />    <a target="mainFrame" href="VisionEgg.ThreeDeeMath-module.html#normalize_homogeneous_rows"
+     >normalize_homogeneous_rows</a><br /><hr />
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/toc-VisionEgg.WrappedText-module.html b/doc/reference/html/toc-VisionEgg.WrappedText-module.html
new file mode 100644
index 0000000..2e0ba3d
--- /dev/null
+++ b/doc/reference/html/toc-VisionEgg.WrappedText-module.html
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>WrappedText</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="toc">Module WrappedText</h1>
+<hr />
+  <h2 class="toc">Classes</h2>
+    <a target="mainFrame" href="VisionEgg.WrappedText.WrappedText-class.html"
+     >WrappedText</a><br />  <h2 class="toc">Functions</h2>
+    <a target="mainFrame" href="VisionEgg.WrappedText-module.html#main"
+     >main</a><br /><hr />
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/toc-VisionEgg.darwin_getrefresh-module.html b/doc/reference/html/toc-VisionEgg.darwin_getrefresh-module.html
new file mode 100644
index 0000000..55b051c
--- /dev/null
+++ b/doc/reference/html/toc-VisionEgg.darwin_getrefresh-module.html
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>darwin_getrefresh</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="toc">Module darwin_getrefresh</h1>
+<hr />
+  <h2 class="toc">Variables</h2>
+    <a target="mainFrame" href="VisionEgg.darwin_getrefresh-module.html#getrefresh"
+     >getrefresh</a><br /><hr />
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/toc-VisionEgg.gl_qt-module.html b/doc/reference/html/toc-VisionEgg.gl_qt-module.html
new file mode 100644
index 0000000..20deaf5
--- /dev/null
+++ b/doc/reference/html/toc-VisionEgg.gl_qt-module.html
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>gl_qt</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="toc">Module gl_qt</h1>
+<hr />
+  <h2 class="toc">Variables</h2>
+    <a target="mainFrame" href="VisionEgg.gl_qt-module.html#gl_qt_renderer_create"
+     >gl_qt_renderer_create</a><br />    <a target="mainFrame" href="VisionEgg.gl_qt-module.html#gl_qt_renderer_delete"
+     >gl_qt_renderer_delete</a><br />    <a target="mainFrame" href="VisionEgg.gl_qt-module.html#gl_qt_renderer_update"
+     >gl_qt_renderer_update</a><br /><hr />
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/toc-VisionEgg.posix_maxpriority-module.html b/doc/reference/html/toc-VisionEgg.posix_maxpriority-module.html
new file mode 100644
index 0000000..e188610
--- /dev/null
+++ b/doc/reference/html/toc-VisionEgg.posix_maxpriority-module.html
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>posix_maxpriority</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="toc">Module posix_maxpriority</h1>
+<hr />
+  <h2 class="toc">Variables</h2>
+    <a target="mainFrame" href="VisionEgg.posix_maxpriority-module.html#SCHED_FIFO"
+     >SCHED_FIFO</a><br />    <a target="mainFrame" href="VisionEgg.posix_maxpriority-module.html#SCHED_RR"
+     >SCHED_RR</a><br />    <a target="mainFrame" href="VisionEgg.posix_maxpriority-module.html#sched_get_priority_max"
+     >sched_get_priority_max</a><br />    <a target="mainFrame" href="VisionEgg.posix_maxpriority-module.html#set_self_policy_priority"
+     >set_self_policy_priority</a><br />    <a target="mainFrame" href="VisionEgg.posix_maxpriority-module.html#stop_memory_paging"
+     >stop_memory_paging</a><br /><hr />
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/toc-VisionEgg.qtlowlevel-module.html b/doc/reference/html/toc-VisionEgg.qtlowlevel-module.html
new file mode 100644
index 0000000..2f971f5
--- /dev/null
+++ b/doc/reference/html/toc-VisionEgg.qtlowlevel-module.html
@@ -0,0 +1,110 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>qtlowlevel</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="toc">Module qtlowlevel</h1>
+<hr />
+  <h2 class="toc">Classes</h2>
+    <a target="mainFrame" href="VisionEgg.qtlowlevel.QTNewMoviePropertyElement-class.html"
+     >QTNewMoviePropertyElement</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel.Rect-class.html"
+     >Rect</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel.qtlowlevelError-class.html"
+     >qtlowlevelError</a><br />  <h2 class="toc">Functions</h2>
+    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#CheckOSStatus"
+     >CheckOSStatus</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#FOUR_CHAR_CODE"
+     >FOUR_CHAR_CODE</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#GetErrorString"
+     >GetErrorString</a><br />  <h2 class="toc">Variables</h2>
+    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#ByteCount"
+     >ByteCount</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#CFAllocatorRef"
+     >CFAllocatorRef</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#CFIndex"
+     >CFIndex</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#CFStringCreateWithCString"
+     >CFStringCreateWithCString</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#CFStringCreateWithCharacters"
+     >CFStringCreateWithCharacters</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#CFStringEncoding"
+     >CFStringEncoding</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#CFStringGetCString"
+     >CFStringGetCString</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#CFStringGetCStringPtr"
+     >CFStringGetCStringPtr</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#CFStringRef"
+     >CFStringRef</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#EnterMovies"
+     >EnterMovies</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#FSSpec"
+     >FSSpec</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#FourCharCode"
+     >FourCharCode</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#GetMovieBox"
+     >GetMovieBox</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#GoToBeginningOfMovie"
+     >GoToBeginningOfMovie</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#InitializeQTML"
+     >InitializeQTML</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#IsMovieDone"
+     >IsMovieDone</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#ItemCount"
+     >ItemCount</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#Movie"
+     >Movie</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#MoviesTask"
+     >MoviesTask</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#NativePathNameToFSSpec"
+     >NativePathNameToFSSpec</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#NewMovieFromFile"
+     >NewMovieFromFile</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#NewMovieFromProperties"
+     >NewMovieFromProperties</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#OSErr"
+     >OSErr</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#OSStatus"
+     >OSStatus</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#OSType"
+     >OSType</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#OpenMovieFile"
+     >OpenMovieFile</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#QTGetCFConstant"
+     >QTGetCFConstant</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#QTMLClient"
+     >QTMLClient</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#QTPropertyClass"
+     >QTPropertyClass</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#QTPropertyID"
+     >QTPropertyID</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#QTPropertyValuePtr"
+     >QTPropertyValuePtr</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#QTVisualContextRef"
+     >QTVisualContextRef</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#SetMovieBox"
+     >SetMovieBox</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#StartMovie"
+     >StartMovie</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#kCFAllocatorDefault"
+     >kCFAllocatorDefault</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#kCFStringEncodingMacRoman"
+     >kCFStringEncodingMacRoman</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#kQTContextPropertyID_AudioContext"
+     >kQTContextPropertyID_AudioContext</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#kQTContextPropertyID_VisualContext"
+     >kQTContextPropertyID_VisualContext</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#kQTDataLocationPropertyID_CFStringHFSPath"
+     >kQTDataLocationPropertyID_CFStringHFSPath</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#kQTDataLocationPropertyID_CFStringNativePath"
+     >kQTDataLocationPropertyID_CFStringNativePath</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#kQTDataLocationPropertyID_CFStringPosixPath"
+     >kQTDataLocationPropertyID_CFStringPosixPath</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#kQTDataLocationPropertyID_CFStringWindowsPath"
+     >kQTDataLocationPropertyID_CFStringWindowsPath</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#kQTDataLocationPropertyID_CFURL"
+     >kQTDataLocationPropertyID_CFURL</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#kQTDataLocationPropertyID_DataFork"
+     >kQTDataLocationPropertyID_DataFork</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#kQTDataLocationPropertyID_DataReference"
+     >kQTDataLocationPropertyID_DataReference</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#kQTDataLocationPropertyID_LegacyMovieResourceHandle"
+     >kQTDataLocationPropertyID_LegacyMovieResourceHandle</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#kQTDataLocationPropertyID_MovieUserProc"
+     >kQTDataLocationPropertyID_MovieUserProc</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#kQTDataLocationPropertyID_QTDataHandler"
+     >kQTDataLocationPropertyID_QTDataHandler</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#kQTDataLocationPropertyID_ResourceFork"
+     >kQTDataLocationPropertyID_ResourceFork</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#kQTDataLocationPropertyID_Scrap"
+     >kQTDataLocationPropertyID_Scrap</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#kQTMovieInstantiationPropertyID_AsyncOK"
+     >kQTMovieInstantiationPropertyID_AsyncOK</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#kQTMovieInstantiationPropertyID_DontAskUnresolvedDataRefs"
+     >kQTMovieInstantiationPropertyID_DontAskUnresolvedDataRefs</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#kQTMovieInstantiationPropertyID_DontAutoAlternates"
+     >kQTMovieInstantiationPropertyID_DontAutoAlternates</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#kQTMovieInstantiationPropertyID_DontAutoUpdateClock"
+     >kQTMovieInstantiationPropertyID_DontAutoUpdateClock</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#kQTMovieInstantiationPropertyID_DontResolveDataRefs"
+     >kQTMovieInstantiationPropertyID_DontResolveDataRefs</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#kQTMovieInstantiationPropertyID_DontUpdateForeBackPointers"
+     >kQTMovieInstantiationPropertyID_DontUpdateForeBackPointers</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#kQTMovieInstantiationPropertyID_IdleImportOK"
+     >kQTMovieInstantiationPropertyID_IdleImportOK</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#kQTMovieInstantiationPropertyID_ResultDataLocationChanged"
+     >kQTMovieInstantiationPropertyID_ResultDataLocationChanged</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#kQTMovieResourceLocatorPropertyID_Callback"
+     >kQTMovieResourceLocatorPropertyID_Callback</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#kQTMovieResourceLocatorPropertyID_FileOffset"
+     >kQTMovieResourceLocatorPropertyID_FileOffset</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#kQTMovieResourceLocatorPropertyID_LegacyResID"
+     >kQTMovieResourceLocatorPropertyID_LegacyResID</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#kQTMovieResourceLocatorPropertyID_LegacyResName"
+     >kQTMovieResourceLocatorPropertyID_LegacyResName</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#kQTNewMoviePropertyID_Active"
+     >kQTNewMoviePropertyID_Active</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#kQTNewMoviePropertyID_DefaultDataRef"
+     >kQTNewMoviePropertyID_DefaultDataRef</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#kQTNewMoviePropertyID_DontInteractWithUser"
+     >kQTNewMoviePropertyID_DontInteractWithUser</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#kQTPropertyClass_Context"
+     >kQTPropertyClass_Context</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#kQTPropertyClass_DataLocation"
+     >kQTPropertyClass_DataLocation</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#kQTPropertyClass_MovieInstantiation"
+     >kQTPropertyClass_MovieInstantiation</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#kQTPropertyClass_MovieResourceLocator"
+     >kQTPropertyClass_MovieResourceLocator</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#kQTPropertyClass_NewMovieProperty"
+     >kQTPropertyClass_NewMovieProperty</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#movieToolboxUninitialized"
+     >movieToolboxUninitialized</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#noErr"
+     >noErr</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#paramErr"
+     >paramErr</a><br /><hr />
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/toc-VisionEgg.qtmovie-module.html b/doc/reference/html/toc-VisionEgg.qtmovie-module.html
new file mode 100644
index 0000000..5111c9c
--- /dev/null
+++ b/doc/reference/html/toc-VisionEgg.qtmovie-module.html
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>qtmovie</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="toc">Module qtmovie</h1>
+<hr />
+  <h2 class="toc">Classes</h2>
+    <a target="mainFrame" href="VisionEgg.qtmovie.Movie-class.html"
+     >Movie</a><br />    <a target="mainFrame" href="VisionEgg.qtmovie.Rect-class.html"
+     >Rect</a><br />  <h2 class="toc">Functions</h2>
+    <a target="mainFrame" href="VisionEgg.qtmovie-module.html#new_movie_from_filename"
+     >new_movie_from_filename</a><br /><hr />
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/toc-VisionEgg.win32_getrefresh-module.html b/doc/reference/html/toc-VisionEgg.win32_getrefresh-module.html
new file mode 100644
index 0000000..f3af9a9
--- /dev/null
+++ b/doc/reference/html/toc-VisionEgg.win32_getrefresh-module.html
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>win32_getrefresh</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="toc">Module win32_getrefresh</h1>
+<hr />
+  <h2 class="toc">Variables</h2>
+    <a target="mainFrame" href="VisionEgg.win32_getrefresh-module.html#getrefresh"
+     >getrefresh</a><br /><hr />
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/toc-VisionEgg.win32_maxpriority-module.html b/doc/reference/html/toc-VisionEgg.win32_maxpriority-module.html
new file mode 100644
index 0000000..b1258f3
--- /dev/null
+++ b/doc/reference/html/toc-VisionEgg.win32_maxpriority-module.html
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>win32_maxpriority</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="toc">Module win32_maxpriority</h1>
+<hr />
+  <h2 class="toc">Variables</h2>
+    <a target="mainFrame" href="VisionEgg.win32_maxpriority-module.html#HIGH_PRIORITY_CLASS"
+     >HIGH_PRIORITY_CLASS</a><br />    <a target="mainFrame" href="VisionEgg.win32_maxpriority-module.html#IDLE_PRIORITY_CLASS"
+     >IDLE_PRIORITY_CLASS</a><br />    <a target="mainFrame" href="VisionEgg.win32_maxpriority-module.html#NORMAL_PRIORITY_CLASS"
+     >NORMAL_PRIORITY_CLASS</a><br />    <a target="mainFrame" href="VisionEgg.win32_maxpriority-module.html#REALTIME_PRIORITY_CLASS"
+     >REALTIME_PRIORITY_CLASS</a><br />    <a target="mainFrame" href="VisionEgg.win32_maxpriority-module.html#THREAD_PRIORITY_ABOVE_NORMAL"
+     >THREAD_PRIORITY_ABOVE_NORMAL</a><br />    <a target="mainFrame" href="VisionEgg.win32_maxpriority-module.html#THREAD_PRIORITY_BELOW_NORMAL"
+     >THREAD_PRIORITY_BELOW_NORMAL</a><br />    <a target="mainFrame" href="VisionEgg.win32_maxpriority-module.html#THREAD_PRIORITY_HIGHEST"
+     >THREAD_PRIORITY_HIGHEST</a><br />    <a target="mainFrame" href="VisionEgg.win32_maxpriority-module.html#THREAD_PRIORITY_IDLE"
+     >THREAD_PRIORITY_IDLE</a><br />    <a target="mainFrame" href="VisionEgg.win32_maxpriority-module.html#THREAD_PRIORITY_LOWEST"
+     >THREAD_PRIORITY_LOWEST</a><br />    <a target="mainFrame" href="VisionEgg.win32_maxpriority-module.html#THREAD_PRIORITY_NORMAL"
+     >THREAD_PRIORITY_NORMAL</a><br />    <a target="mainFrame" href="VisionEgg.win32_maxpriority-module.html#THREAD_PRIORITY_TIME_CRITICAL"
+     >THREAD_PRIORITY_TIME_CRITICAL</a><br />    <a target="mainFrame" href="VisionEgg.win32_maxpriority-module.html#set_self_process_priority_class"
+     >set_self_process_priority_class</a><br />    <a target="mainFrame" href="VisionEgg.win32_maxpriority-module.html#set_self_thread_priority"
+     >set_self_thread_priority</a><br /><hr />
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/toc-everything.html b/doc/reference/html/toc-everything.html
new file mode 100644
index 0000000..d5be22a
--- /dev/null
+++ b/doc/reference/html/toc-everything.html
@@ -0,0 +1,499 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>Everything</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="toc">Everything</h1>
+<hr />
+  <h2 class="toc">All Classes</h2>
+    <a target="mainFrame" href="VisionEgg.ClassWithParameters-class.html"
+     >VisionEgg.ClassWithParameters</a><br />    <a target="mainFrame" href="VisionEgg.Configuration.Config-class.html"
+     >VisionEgg.Configuration.Config</a><br />    <a target="mainFrame" href="VisionEgg.Core.FixationSpot-class.html"
+     >VisionEgg.Core.FixationSpot</a><br />    <a target="mainFrame" href="VisionEgg.Core.FrameTimer-class.html"
+     >VisionEgg.Core.FrameTimer</a><br />    <a target="mainFrame" href="VisionEgg.Core.ModelView-class.html"
+     >VisionEgg.Core.ModelView</a><br />    <a target="mainFrame" href="VisionEgg.Core.OrthographicProjection-class.html"
+     >VisionEgg.Core.OrthographicProjection</a><br />    <a target="mainFrame" href="VisionEgg.Core.OrthographicProjectionNoZClip-class.html"
+     >VisionEgg.Core.OrthographicProjectionNoZClip</a><br />    <a target="mainFrame" href="VisionEgg.Core.PerspectiveProjection-class.html"
+     >VisionEgg.Core.PerspectiveProjection</a><br />    <a target="mainFrame" href="VisionEgg.Core.Projection-class.html"
+     >VisionEgg.Core.Projection</a><br />    <a target="mainFrame" href="VisionEgg.Core.ProjectionBaseClass-class.html"
+     >VisionEgg.Core.ProjectionBaseClass</a><br />    <a target="mainFrame" href="VisionEgg.Core.Screen-class.html"
+     >VisionEgg.Core.Screen</a><br />    <a target="mainFrame" href="VisionEgg.Core.SimplePerspectiveProjection-class.html"
+     >VisionEgg.Core.SimplePerspectiveProjection</a><br />    <a target="mainFrame" href="VisionEgg.Core.Stimulus-class.html"
+     >VisionEgg.Core.Stimulus</a><br />    <a target="mainFrame" href="VisionEgg.Core.Viewport-class.html"
+     >VisionEgg.Core.Viewport</a><br />    <a target="mainFrame" href="VisionEgg.Daq.Analog-class.html"
+     >VisionEgg.Daq.Analog</a><br />    <a target="mainFrame" href="VisionEgg.Daq.Buffered-class.html"
+     >VisionEgg.Daq.Buffered</a><br />    <a target="mainFrame" href="VisionEgg.Daq.Channel-class.html"
+     >VisionEgg.Daq.Channel</a><br />    <a target="mainFrame" href="VisionEgg.Daq.ChannelParameters-class.html"
+     >VisionEgg.Daq.ChannelParameters</a><br />    <a target="mainFrame" href="VisionEgg.Daq.DaqMode-class.html"
+     >VisionEgg.Daq.DaqMode</a><br />    <a target="mainFrame" href="VisionEgg.Daq.Device-class.html"
+     >VisionEgg.Daq.Device</a><br />    <a target="mainFrame" href="VisionEgg.Daq.Digital-class.html"
+     >VisionEgg.Daq.Digital</a><br />    <a target="mainFrame" href="VisionEgg.Daq.Functionality-class.html"
+     >VisionEgg.Daq.Functionality</a><br />    <a target="mainFrame" href="VisionEgg.Daq.Immediate-class.html"
+     >VisionEgg.Daq.Immediate</a><br />    <a target="mainFrame" href="VisionEgg.Daq.Input-class.html"
+     >VisionEgg.Daq.Input</a><br />    <a target="mainFrame" href="VisionEgg.Daq.Output-class.html"
+     >VisionEgg.Daq.Output</a><br />    <a target="mainFrame" href="VisionEgg.Daq.SignalType-class.html"
+     >VisionEgg.Daq.SignalType</a><br />    <a target="mainFrame" href="VisionEgg.Daq.Trigger-class.html"
+     >VisionEgg.Daq.Trigger</a><br />    <a target="mainFrame" href="VisionEgg.DaqKeyboard.KeyboardInput-class.html"
+     >VisionEgg.DaqKeyboard.KeyboardInput</a><br />    <a target="mainFrame" href="VisionEgg.DaqKeyboard.KeyboardTriggerInController-class.html"
+     >VisionEgg.DaqKeyboard.KeyboardTriggerInController</a><br />    <a target="mainFrame" href="VisionEgg.DaqLPT.LPTChannel-class.html"
+     >VisionEgg.DaqLPT.LPTChannel</a><br />    <a target="mainFrame" href="VisionEgg.DaqLPT.LPTDevice-class.html"
+     >VisionEgg.DaqLPT.LPTDevice</a><br />    <a target="mainFrame" href="VisionEgg.DaqLPT.LPTInput-class.html"
+     >VisionEgg.DaqLPT.LPTInput</a><br />    <a target="mainFrame" href="VisionEgg.DaqLPT.LPTOutput-class.html"
+     >VisionEgg.DaqLPT.LPTOutput</a><br />    <a target="mainFrame" href="VisionEgg.DaqLPT.LPTTriggerInController-class.html"
+     >VisionEgg.DaqLPT.LPTTriggerInController</a><br />    <a target="mainFrame" href="VisionEgg.DaqLPT.LPTTriggerOutController-class.html"
+     >VisionEgg.DaqLPT.LPTTriggerOutController</a><br />    <a target="mainFrame" href="VisionEgg.Deprecated.Message-class.html"
+     >VisionEgg.Deprecated.Message</a><br />    <a target="mainFrame" href="VisionEgg.Dots.DotArea2D-class.html"
+     >VisionEgg.Dots.DotArea2D</a><br />    <a target="mainFrame" href="VisionEgg.FlowControl.ConstantController-class.html"
+     >VisionEgg.FlowControl.ConstantController</a><br />    <a target="mainFrame" href="VisionEgg.FlowControl.Controller-class.html"
+     >VisionEgg.FlowControl.Controller</a><br />    <a target="mainFrame" href="VisionEgg.FlowControl.EncapsulatedController-class.html"
+     >VisionEgg.FlowControl.EncapsulatedController</a><br />    <a target="mainFrame" href="VisionEgg.FlowControl.EvalStringController-class.html"
+     >VisionEgg.FlowControl.EvalStringController</a><br />    <a target="mainFrame" href="VisionEgg.FlowControl.ExecStringController-class.html"
+     >VisionEgg.FlowControl.ExecStringController</a><br />    <a target="mainFrame" href="VisionEgg.FlowControl.FunctionController-class.html"
+     >VisionEgg.FlowControl.FunctionController</a><br />    <a target="mainFrame" href="VisionEgg.FlowControl.Presentation-class.html"
+     >VisionEgg.FlowControl.Presentation</a><br />    <a target="mainFrame" href="VisionEgg.GLTrace.Wrapper-class.html"
+     >VisionEgg.GLTrace.Wrapper</a><br />    <a target="mainFrame" href="VisionEgg.GUI.AppWindow-class.html"
+     >VisionEgg.GUI.AppWindow</a><br />    <a target="mainFrame" href="VisionEgg.GUI.GetKeypressDialog-class.html"
+     >VisionEgg.GUI.GetKeypressDialog</a><br />    <a target="mainFrame" href="VisionEgg.GUI.GraphicsConfigurationWindow-class.html"
+     >VisionEgg.GUI.GraphicsConfigurationWindow</a><br />    <a target="mainFrame" href="VisionEgg.GUI.InfoFrame-class.html"
+     >VisionEgg.GUI.InfoFrame</a><br />    <a target="mainFrame" href="VisionEgg.GUI.ProgressBar-class.html"
+     >VisionEgg.GUI.ProgressBar</a><br />    <a target="mainFrame" href="VisionEgg.GUI.ToplevelDialog-class.html"
+     >VisionEgg.GUI.ToplevelDialog</a><br />    <a target="mainFrame" href="VisionEgg.Gratings.AlphaGratingCommon-class.html"
+     >VisionEgg.Gratings.AlphaGratingCommon</a><br />    <a target="mainFrame" href="VisionEgg.Gratings.LuminanceGratingCommon-class.html"
+     >VisionEgg.Gratings.LuminanceGratingCommon</a><br />    <a target="mainFrame" href="VisionEgg.Gratings.NumSamplesTooLargeError-class.html"
+     >VisionEgg.Gratings.NumSamplesTooLargeError</a><br />    <a target="mainFrame" href="VisionEgg.Gratings.SinGrating2D-class.html"
+     >VisionEgg.Gratings.SinGrating2D</a><br />    <a target="mainFrame" href="VisionEgg.Gratings.SinGrating3D-class.html"
+     >VisionEgg.Gratings.SinGrating3D</a><br />    <a target="mainFrame" href="VisionEgg.MoreStimuli.Arrow-class.html"
+     >VisionEgg.MoreStimuli.Arrow</a><br />    <a target="mainFrame" href="VisionEgg.MoreStimuli.FilledCircle-class.html"
+     >VisionEgg.MoreStimuli.FilledCircle</a><br />    <a target="mainFrame" href="VisionEgg.MoreStimuli.Rectangle3D-class.html"
+     >VisionEgg.MoreStimuli.Rectangle3D</a><br />    <a target="mainFrame" href="VisionEgg.MoreStimuli.Target2D-class.html"
+     >VisionEgg.MoreStimuli.Target2D</a><br />    <a target="mainFrame" href="VisionEgg.ParameterDefinition-class.html"
+     >VisionEgg.ParameterDefinition</a><br />    <a target="mainFrame" href="VisionEgg.ParameterTypes.AnyClass-class.html"
+     >VisionEgg.ParameterTypes.AnyClass</a><br />    <a target="mainFrame" href="VisionEgg.ParameterTypes.AnyClassMC-class.html"
+     >VisionEgg.ParameterTypes.AnyClassMC</a><br />    <a target="mainFrame" href="VisionEgg.ParameterTypes.AnyOf-class.html"
+     >VisionEgg.ParameterTypes.AnyOf</a><br />    <a target="mainFrame" href="VisionEgg.ParameterTypes.Boolean-class.html"
+     >VisionEgg.ParameterTypes.Boolean</a><br />    <a target="mainFrame" href="VisionEgg.ParameterTypes.BooleanMC-class.html"
+     >VisionEgg.ParameterTypes.BooleanMC</a><br />    <a target="mainFrame" href="VisionEgg.ParameterTypes.Callable-class.html"
+     >VisionEgg.ParameterTypes.Callable</a><br />    <a target="mainFrame" href="VisionEgg.ParameterTypes.CallableMC-class.html"
+     >VisionEgg.ParameterTypes.CallableMC</a><br />    <a target="mainFrame" href="VisionEgg.ParameterTypes.Instance-class.html"
+     >VisionEgg.ParameterTypes.Instance</a><br />    <a target="mainFrame" href="VisionEgg.ParameterTypes.Integer-class.html"
+     >VisionEgg.ParameterTypes.Integer</a><br />    <a target="mainFrame" href="VisionEgg.ParameterTypes.IntegerMC-class.html"
+     >VisionEgg.ParameterTypes.IntegerMC</a><br />    <a target="mainFrame" href="VisionEgg.ParameterTypes.NoneMC-class.html"
+     >VisionEgg.ParameterTypes.NoneMC</a><br />    <a target="mainFrame" href="VisionEgg.ParameterTypes.NoneType-class.html"
+     >VisionEgg.ParameterTypes.NoneType</a><br />    <a target="mainFrame" href="VisionEgg.ParameterTypes.ParameterTypeDef-class.html"
+     >VisionEgg.ParameterTypes.ParameterTypeDef</a><br />    <a target="mainFrame" href="VisionEgg.ParameterTypes.Real-class.html"
+     >VisionEgg.ParameterTypes.Real</a><br />    <a target="mainFrame" href="VisionEgg.ParameterTypes.RealMC-class.html"
+     >VisionEgg.ParameterTypes.RealMC</a><br />    <a target="mainFrame" href="VisionEgg.ParameterTypes.Sequence-class.html"
+     >VisionEgg.ParameterTypes.Sequence</a><br />    <a target="mainFrame" href="VisionEgg.ParameterTypes.Sequence2-class.html"
+     >VisionEgg.ParameterTypes.Sequence2</a><br />    <a target="mainFrame" href="VisionEgg.ParameterTypes.Sequence3-class.html"
+     >VisionEgg.ParameterTypes.Sequence3</a><br />    <a target="mainFrame" href="VisionEgg.ParameterTypes.Sequence4-class.html"
+     >VisionEgg.ParameterTypes.Sequence4</a><br />    <a target="mainFrame" href="VisionEgg.ParameterTypes.Sequence4x4-class.html"
+     >VisionEgg.ParameterTypes.Sequence4x4</a><br />    <a target="mainFrame" href="VisionEgg.ParameterTypes.String-class.html"
+     >VisionEgg.ParameterTypes.String</a><br />    <a target="mainFrame" href="VisionEgg.ParameterTypes.StringMC-class.html"
+     >VisionEgg.ParameterTypes.StringMC</a><br />    <a target="mainFrame" href="VisionEgg.ParameterTypes.SubClass-class.html"
+     >VisionEgg.ParameterTypes.SubClass</a><br />    <a target="mainFrame" href="VisionEgg.ParameterTypes.Unicode-class.html"
+     >VisionEgg.ParameterTypes.Unicode</a><br />    <a target="mainFrame" href="VisionEgg.ParameterTypes.UnicodeMC-class.html"
+     >VisionEgg.ParameterTypes.UnicodeMC</a><br />    <a target="mainFrame" href="VisionEgg.ParameterTypes.UnsignedInteger-class.html"
+     >VisionEgg.ParameterTypes.UnsignedInteger</a><br />    <a target="mainFrame" href="VisionEgg.ParameterTypes.UnsignedIntegerMC-class.html"
+     >VisionEgg.ParameterTypes.UnsignedIntegerMC</a><br />    <a target="mainFrame" href="VisionEgg.Parameters-class.html"
+     >VisionEgg.Parameters</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.AST_ext.AST_Visitor-class.html"
+     >VisionEgg.PyroApps.AST_ext.AST_Visitor</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame-class.html"
+     >VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.ColorCalGUI.ColorCalMetaParameters-class.html"
+     >VisionEgg.PyroApps.ColorCalGUI.ColorCalMetaParameters</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController-class.html"
+     >VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.DropinGUI.DropinControlFrame-class.html"
+     >VisionEgg.PyroApps.DropinGUI.DropinControlFrame</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.DropinGUI.DropinMetaParameters-class.html"
+     >VisionEgg.PyroApps.DropinGUI.DropinMetaParameters</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.DropinServer.DropinMetaController-class.html"
+     >VisionEgg.PyroApps.DropinServer.DropinMetaController</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.EPhysGUI.AppWindow-class.html"
+     >VisionEgg.PyroApps.EPhysGUI.AppWindow</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.EPhysGUI.BarButton-class.html"
+     >VisionEgg.PyroApps.EPhysGUI.BarButton</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase-class.html"
+     >VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.EPhysGUI.GammaFrame-class.html"
+     >VisionEgg.PyroApps.EPhysGUI.GammaFrame</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.EPhysGUI.ImageSequenceLauncher-class.html"
+     >VisionEgg.PyroApps.EPhysGUI.ImageSequenceLauncher</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.EPhysGUI.Loop-class.html"
+     >VisionEgg.PyroApps.EPhysGUI.Loop</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.EPhysGUI.LoopContainedObject-class.html"
+     >VisionEgg.PyroApps.EPhysGUI.LoopContainedObject</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.EPhysGUI.LoopParamDialog-class.html"
+     >VisionEgg.PyroApps.EPhysGUI.LoopParamDialog</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.EPhysGUI.ScrollListFrame-class.html"
+     >VisionEgg.PyroApps.EPhysGUI.ScrollListFrame</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html"
+     >VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.EPhysServer.EPhysServer-class.html"
+     >VisionEgg.PyroApps.EPhysServer.EPhysServer</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame-class.html"
+     >VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.FlatGratingGUI.FlatGratingMetaParameters-class.html"
+     >VisionEgg.PyroApps.FlatGratingGUI.FlatGratingMetaParameters</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController-class.html"
+     >VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.GridGUI.GridControlFrame-class.html"
+     >VisionEgg.PyroApps.GridGUI.GridControlFrame</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.GridGUI.GridMetaParameters-class.html"
+     >VisionEgg.PyroApps.GridGUI.GridMetaParameters</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.GridServer.GridMetaController-class.html"
+     >VisionEgg.PyroApps.GridServer.GridMetaController</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame-class.html"
+     >VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.MouseTargetGUI.MouseTargetMetaParameters-class.html"
+     >VisionEgg.PyroApps.MouseTargetGUI.MouseTargetMetaParameters</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.MouseTargetServer.MousePositionController-class.html"
+     >VisionEgg.PyroApps.MouseTargetServer.MousePositionController</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController-class.html"
+     >VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.MouseTargetServer.TargetOrientationController-class.html"
+     >VisionEgg.PyroApps.MouseTargetServer.TargetOrientationController</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.MouseTargetServer.TargetPositionController-class.html"
+     >VisionEgg.PyroApps.MouseTargetServer.TargetPositionController</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.ScreenPositionGUI.CallbackEntry-class.html"
+     >VisionEgg.PyroApps.ScreenPositionGUI.CallbackEntry</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html"
+     >VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionParameters-class.html"
+     >VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionParameters</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController-class.html"
+     >VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame-class.html"
+     >VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.SphereGratingGUI.SphereGratingMetaParameters-class.html"
+     >VisionEgg.PyroApps.SphereGratingGUI.SphereGratingMetaParameters</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController-class.html"
+     >VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame-class.html"
+     >VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumMetaParameters-class.html"
+     >VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumMetaParameters</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController-class.html"
+     >VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.TargetGUI.TargetControlFrame-class.html"
+     >VisionEgg.PyroApps.TargetGUI.TargetControlFrame</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.TargetGUI.TargetMetaParameters-class.html"
+     >VisionEgg.PyroApps.TargetGUI.TargetMetaParameters</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController-class.html"
+     >VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController</a><br />    <a target="mainFrame" href="VisionEgg.PyroClient.PyroClient-class.html"
+     >VisionEgg.PyroClient.PyroClient</a><br />    <a target="mainFrame" href="VisionEgg.PyroHelpers.PyroConstantController-class.html"
+     >VisionEgg.PyroHelpers.PyroConstantController</a><br />    <a target="mainFrame" href="VisionEgg.PyroHelpers.PyroEncapsulatedController-class.html"
+     >VisionEgg.PyroHelpers.PyroEncapsulatedController</a><br />    <a target="mainFrame" href="VisionEgg.PyroHelpers.PyroEvalStringController-class.html"
+     >VisionEgg.PyroHelpers.PyroEvalStringController</a><br />    <a target="mainFrame" href="VisionEgg.PyroHelpers.PyroExecStringController-class.html"
+     >VisionEgg.PyroHelpers.PyroExecStringController</a><br />    <a target="mainFrame" href="VisionEgg.PyroHelpers.PyroListenController-class.html"
+     >VisionEgg.PyroHelpers.PyroListenController</a><br />    <a target="mainFrame" href="VisionEgg.PyroHelpers.PyroLocalDictController-class.html"
+     >VisionEgg.PyroHelpers.PyroLocalDictController</a><br />    <a target="mainFrame" href="VisionEgg.PyroHelpers.PyroServer-class.html"
+     >VisionEgg.PyroHelpers.PyroServer</a><br />    <a target="mainFrame" href="VisionEgg.QuickTime.MovieTexture-class.html"
+     >VisionEgg.QuickTime.MovieTexture</a><br />    <a target="mainFrame" href="VisionEgg.ResponseControl.KeyboardResponseController-class.html"
+     >VisionEgg.ResponseControl.KeyboardResponseController</a><br />    <a target="mainFrame" href="VisionEgg.ResponseControl.ResponseController-class.html"
+     >VisionEgg.ResponseControl.ResponseController</a><br />    <a target="mainFrame" href="VisionEgg.SphereMap.AzElGrid-class.html"
+     >VisionEgg.SphereMap.AzElGrid</a><br />    <a target="mainFrame" href="VisionEgg.SphereMap.SphereGrating-class.html"
+     >VisionEgg.SphereMap.SphereGrating</a><br />    <a target="mainFrame" href="VisionEgg.SphereMap.SphereMap-class.html"
+     >VisionEgg.SphereMap.SphereMap</a><br />    <a target="mainFrame" href="VisionEgg.SphereMap.SphereWindow-class.html"
+     >VisionEgg.SphereMap.SphereWindow</a><br />    <a target="mainFrame" href="VisionEgg.TCPController.SocketListenController-class.html"
+     >VisionEgg.TCPController.SocketListenController</a><br />    <a target="mainFrame" href="VisionEgg.TCPController.TCPController-class.html"
+     >VisionEgg.TCPController.TCPController</a><br />    <a target="mainFrame" href="VisionEgg.TCPController.TCPServer-class.html"
+     >VisionEgg.TCPController.TCPServer</a><br />    <a target="mainFrame" href="VisionEgg.Text.BitmapText-class.html"
+     >VisionEgg.Text.BitmapText</a><br />    <a target="mainFrame" href="VisionEgg.Text.GlutTextBase-class.html"
+     >VisionEgg.Text.GlutTextBase</a><br />    <a target="mainFrame" href="VisionEgg.Text.StrokeText-class.html"
+     >VisionEgg.Text.StrokeText</a><br />    <a target="mainFrame" href="VisionEgg.Text.Text-class.html"
+     >VisionEgg.Text.Text</a><br />    <a target="mainFrame" href="VisionEgg.Textures.FixationCross-class.html"
+     >VisionEgg.Textures.FixationCross</a><br />    <a target="mainFrame" href="VisionEgg.Textures.Mask2D-class.html"
+     >VisionEgg.Textures.Mask2D</a><br />    <a target="mainFrame" href="VisionEgg.Textures.SpinningDrum-class.html"
+     >VisionEgg.Textures.SpinningDrum</a><br />    <a target="mainFrame" href="VisionEgg.Textures.Texture-class.html"
+     >VisionEgg.Textures.Texture</a><br />    <a target="mainFrame" href="VisionEgg.Textures.TextureFromFile-class.html"
+     >VisionEgg.Textures.TextureFromFile</a><br />    <a target="mainFrame" href="VisionEgg.Textures.TextureObject-class.html"
+     >VisionEgg.Textures.TextureObject</a><br />    <a target="mainFrame" href="VisionEgg.Textures.TextureStimulus-class.html"
+     >VisionEgg.Textures.TextureStimulus</a><br />    <a target="mainFrame" href="VisionEgg.Textures.TextureStimulus3D-class.html"
+     >VisionEgg.Textures.TextureStimulus3D</a><br />    <a target="mainFrame" href="VisionEgg.Textures.TextureStimulusBaseClass-class.html"
+     >VisionEgg.Textures.TextureStimulusBaseClass</a><br />    <a target="mainFrame" href="VisionEgg.Textures.TextureTooLargeError-class.html"
+     >VisionEgg.Textures.TextureTooLargeError</a><br />    <a target="mainFrame" href="VisionEgg.ThreeDeeMath.TransformMatrix-class.html"
+     >VisionEgg.ThreeDeeMath.TransformMatrix</a><br />    <a target="mainFrame" href="VisionEgg.WrappedText.WrappedText-class.html"
+     >VisionEgg.WrappedText.WrappedText</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel.QTNewMoviePropertyElement-class.html"
+     >VisionEgg.qtlowlevel.QTNewMoviePropertyElement</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel.Rect-class.html"
+     >VisionEgg.qtlowlevel.Rect</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel.qtlowlevelError-class.html"
+     >VisionEgg.qtlowlevel.qtlowlevelError</a><br />    <a target="mainFrame" href="VisionEgg.qtmovie.Movie-class.html"
+     >VisionEgg.qtmovie.Movie</a><br />    <a target="mainFrame" href="VisionEgg.qtmovie.Rect-class.html"
+     >VisionEgg.qtmovie.Rect</a><br />    <a target="mainFrame" href="float-class.html"
+     >float</a><br />    <a target="mainFrame" href="int-class.html"
+     >int</a><br />  <h2 class="toc">All Functions</h2>
+    <a target="mainFrame" href="VisionEgg.Configuration-module.html#save_settings"
+     >VisionEgg.Configuration.save_settings</a><br />    <a target="mainFrame" href="VisionEgg.Core-module.html#add_gl_assumption"
+     >VisionEgg.Core.add_gl_assumption</a><br />    <a target="mainFrame" href="VisionEgg.Core-module.html#get_default_screen"
+     >VisionEgg.Core.get_default_screen</a><br />    <a target="mainFrame" href="VisionEgg.Core-module.html#init_gl_extension"
+     >VisionEgg.Core.init_gl_extension</a><br />    <a target="mainFrame" href="VisionEgg.Core-module.html#post_gl_init"
+     >VisionEgg.Core.post_gl_init</a><br />    <a target="mainFrame" href="VisionEgg.Core-module.html#sum"
+     >VisionEgg.Core.sum</a><br />    <a target="mainFrame" href="VisionEgg.Core-module.html#swap_buffers"
+     >VisionEgg.Core.swap_buffers</a><br />    <a target="mainFrame" href="VisionEgg.Dots-module.html#draw_dots"
+     >VisionEgg.Dots.draw_dots</a><br />    <a target="mainFrame" href="VisionEgg.GL-module.html#glLoadMatrixf"
+     >VisionEgg.GL.glLoadMatrixf</a><br />    <a target="mainFrame" href="VisionEgg.GLTrace-module.html#arg_to_str"
+     >VisionEgg.GLTrace.arg_to_str</a><br />    <a target="mainFrame" href="VisionEgg.GLTrace-module.html#gl_trace_attach"
+     >VisionEgg.GLTrace.gl_trace_attach</a><br />    <a target="mainFrame" href="VisionEgg.GUI-module.html#showexception"
+     >VisionEgg.GUI.showexception</a><br />    <a target="mainFrame" href="VisionEgg.ParameterTypes-module.html#assert_type"
+     >VisionEgg.ParameterTypes.assert_type</a><br />    <a target="mainFrame" href="VisionEgg.ParameterTypes-module.html#get_all_classes_list"
+     >VisionEgg.ParameterTypes.get_all_classes_list</a><br />    <a target="mainFrame" href="VisionEgg.ParameterTypes-module.html#get_type"
+     >VisionEgg.ParameterTypes.get_type</a><br />    <a target="mainFrame" href="VisionEgg.ParameterTypes-module.html#is_parameter_type_def"
+     >VisionEgg.ParameterTypes.is_parameter_type_def</a><br />    <a target="mainFrame" href="VisionEgg.PlatformDependent-module.html#attempt_to_load_multitexturing"
+     >VisionEgg.PlatformDependent.attempt_to_load_multitexturing</a><br />    <a target="mainFrame" href="VisionEgg.PlatformDependent-module.html#linux_but_unknown_drivers"
+     >VisionEgg.PlatformDependent.linux_but_unknown_drivers</a><br />    <a target="mainFrame" href="VisionEgg.PlatformDependent-module.html#query_refresh_rate"
+     >VisionEgg.PlatformDependent.query_refresh_rate</a><br />    <a target="mainFrame" href="VisionEgg.PlatformDependent-module.html#set_priority"
+     >VisionEgg.PlatformDependent.set_priority</a><br />    <a target="mainFrame" href="VisionEgg.PlatformDependent-module.html#sync_swap_with_vbl_post_gl_init"
+     >VisionEgg.PlatformDependent.sync_swap_with_vbl_post_gl_init</a><br />    <a target="mainFrame" href="VisionEgg.PlatformDependent-module.html#sync_swap_with_vbl_pre_gl_init"
+     >VisionEgg.PlatformDependent.sync_swap_with_vbl_pre_gl_init</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.AST_ext-module.html#extract_from_AST"
+     >VisionEgg.PyroApps.AST_ext.extract_from_AST</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.AST_ext-module.html#gen_assign_val_subtree"
+     >VisionEgg.PyroApps.AST_ext.gen_assign_val_subtree</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.AST_ext-module.html#modify_AST"
+     >VisionEgg.PyroApps.AST_ext.modify_AST</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.ColorCalGUI-module.html#get_control_list"
+     >VisionEgg.PyroApps.ColorCalGUI.get_control_list</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.ColorCalServer-module.html#get_meta_controller_class"
+     >VisionEgg.PyroApps.ColorCalServer.get_meta_controller_class</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.ColorCalServer-module.html#get_meta_controller_stimkey"
+     >VisionEgg.PyroApps.ColorCalServer.get_meta_controller_stimkey</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.ColorCalServer-module.html#make_stimuli"
+     >VisionEgg.PyroApps.ColorCalServer.make_stimuli</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.DropinGUI-module.html#get_control_list"
+     >VisionEgg.PyroApps.DropinGUI.get_control_list</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.DropinServer-module.html#get_meta_controller_class"
+     >VisionEgg.PyroApps.DropinServer.get_meta_controller_class</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.DropinServer-module.html#get_meta_controller_stimkey"
+     >VisionEgg.PyroApps.DropinServer.get_meta_controller_stimkey</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.DropinServer-module.html#make_stimuli"
+     >VisionEgg.PyroApps.DropinServer.make_stimuli</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.EPhysGUI-module.html#get_server"
+     >VisionEgg.PyroApps.EPhysGUI.get_server</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.EPhysServer-module.html#start_server"
+     >VisionEgg.PyroApps.EPhysServer.start_server</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.FlatGratingGUI-module.html#get_control_list"
+     >VisionEgg.PyroApps.FlatGratingGUI.get_control_list</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.FlatGratingServer-module.html#get_meta_controller_class"
+     >VisionEgg.PyroApps.FlatGratingServer.get_meta_controller_class</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.FlatGratingServer-module.html#get_meta_controller_stimkey"
+     >VisionEgg.PyroApps.FlatGratingServer.get_meta_controller_stimkey</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.FlatGratingServer-module.html#make_stimuli"
+     >VisionEgg.PyroApps.FlatGratingServer.make_stimuli</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.GridGUI-module.html#get_control_list"
+     >VisionEgg.PyroApps.GridGUI.get_control_list</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.GridServer-module.html#get_meta_controller_class"
+     >VisionEgg.PyroApps.GridServer.get_meta_controller_class</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.GridServer-module.html#get_meta_controller_stimkey"
+     >VisionEgg.PyroApps.GridServer.get_meta_controller_stimkey</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.GridServer-module.html#make_stimuli"
+     >VisionEgg.PyroApps.GridServer.make_stimuli</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.MouseTargetGUI-module.html#get_control_list"
+     >VisionEgg.PyroApps.MouseTargetGUI.get_control_list</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.MouseTargetServer-module.html#cross_product"
+     >VisionEgg.PyroApps.MouseTargetServer.cross_product</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.MouseTargetServer-module.html#get_meta_controller_class"
+     >VisionEgg.PyroApps.MouseTargetServer.get_meta_controller_class</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.MouseTargetServer-module.html#get_meta_controller_stimkey"
+     >VisionEgg.PyroApps.MouseTargetServer.get_meta_controller_stimkey</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.MouseTargetServer-module.html#get_target_size"
+     >VisionEgg.PyroApps.MouseTargetServer.get_target_size</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.MouseTargetServer-module.html#keydown"
+     >VisionEgg.PyroApps.MouseTargetServer.keydown</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.MouseTargetServer-module.html#keyup"
+     >VisionEgg.PyroApps.MouseTargetServer.keyup</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.MouseTargetServer-module.html#mag"
+     >VisionEgg.PyroApps.MouseTargetServer.mag</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.MouseTargetServer-module.html#make_stimuli"
+     >VisionEgg.PyroApps.MouseTargetServer.make_stimuli</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.SphereGratingGUI-module.html#get_control_list"
+     >VisionEgg.PyroApps.SphereGratingGUI.get_control_list</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.SphereGratingServer-module.html#get_meta_controller_class"
+     >VisionEgg.PyroApps.SphereGratingServer.get_meta_controller_class</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.SphereGratingServer-module.html#get_meta_controller_stimkey"
+     >VisionEgg.PyroApps.SphereGratingServer.get_meta_controller_stimkey</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.SphereGratingServer-module.html#make_stimuli"
+     >VisionEgg.PyroApps.SphereGratingServer.make_stimuli</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.SpinningDrumGUI-module.html#get_control_list"
+     >VisionEgg.PyroApps.SpinningDrumGUI.get_control_list</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.SpinningDrumServer-module.html#get_meta_controller_class"
+     >VisionEgg.PyroApps.SpinningDrumServer.get_meta_controller_class</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.SpinningDrumServer-module.html#get_meta_controller_stimkey"
+     >VisionEgg.PyroApps.SpinningDrumServer.get_meta_controller_stimkey</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.SpinningDrumServer-module.html#make_stimuli"
+     >VisionEgg.PyroApps.SpinningDrumServer.make_stimuli</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.TargetGUI-module.html#get_control_list"
+     >VisionEgg.PyroApps.TargetGUI.get_control_list</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.TargetServer-module.html#get_meta_controller_class"
+     >VisionEgg.PyroApps.TargetServer.get_meta_controller_class</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.TargetServer-module.html#get_meta_controller_stimkey"
+     >VisionEgg.PyroApps.TargetServer.get_meta_controller_stimkey</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.TargetServer-module.html#make_stimuli"
+     >VisionEgg.PyroApps.TargetServer.make_stimuli</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.VarTypes-module.html#getID"
+     >VisionEgg.PyroApps.VarTypes.getID</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.VarTypes-module.html#getType"
+     >VisionEgg.PyroApps.VarTypes.getType</a><br />    <a target="mainFrame" href="VisionEgg.Textures-module.html#convert_to_numpy_if_array"
+     >VisionEgg.Textures.convert_to_numpy_if_array</a><br />    <a target="mainFrame" href="VisionEgg.Textures-module.html#is_power_of_2"
+     >VisionEgg.Textures.is_power_of_2</a><br />    <a target="mainFrame" href="VisionEgg.Textures-module.html#next_power_of_2"
+     >VisionEgg.Textures.next_power_of_2</a><br />    <a target="mainFrame" href="VisionEgg.ThreeDeeMath-module.html#make_homogeneous_coord_rows"
+     >VisionEgg.ThreeDeeMath.make_homogeneous_coord_rows</a><br />    <a target="mainFrame" href="VisionEgg.ThreeDeeMath-module.html#normalize_homogeneous_rows"
+     >VisionEgg.ThreeDeeMath.normalize_homogeneous_rows</a><br />    <a target="mainFrame" href="VisionEgg.WrappedText-module.html#main"
+     >VisionEgg.WrappedText.main</a><br />    <a target="mainFrame" href="VisionEgg-module.html#assert_type"
+     >VisionEgg.assert_type</a><br />    <a target="mainFrame" href="VisionEgg-module.html#get_type"
+     >VisionEgg.get_type</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#CheckOSStatus"
+     >VisionEgg.qtlowlevel.CheckOSStatus</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#FOUR_CHAR_CODE"
+     >VisionEgg.qtlowlevel.FOUR_CHAR_CODE</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#GetErrorString"
+     >VisionEgg.qtlowlevel.GetErrorString</a><br />    <a target="mainFrame" href="VisionEgg.qtmovie-module.html#new_movie_from_filename"
+     >VisionEgg.qtmovie.new_movie_from_filename</a><br />    <a target="mainFrame" href="VisionEgg-module.html#recursive_base_class_finder"
+     >VisionEgg.recursive_base_class_finder</a><br />    <a target="mainFrame" href="VisionEgg-module.html#set_time_func_to_frame_locked"
+     >VisionEgg.set_time_func_to_frame_locked</a><br />    <a target="mainFrame" href="VisionEgg-module.html#set_time_func_to_true_time"
+     >VisionEgg.set_time_func_to_true_time</a><br />    <a target="mainFrame" href="VisionEgg-module.html#start_default_logging"
+     >VisionEgg.start_default_logging</a><br />    <a target="mainFrame" href="VisionEgg-module.html#stop_watching_exceptions"
+     >VisionEgg.stop_watching_exceptions</a><br />    <a target="mainFrame" href="VisionEgg-module.html#time_func_locked_to_frames"
+     >VisionEgg.time_func_locked_to_frames</a><br />    <a target="mainFrame" href="VisionEgg-module.html#timing_func"
+     >VisionEgg.timing_func</a><br />    <a target="mainFrame" href="VisionEgg-module.html#watch_exceptions"
+     >VisionEgg.watch_exceptions</a><br />  <h2 class="toc">All Variables</h2>
+    <a target="mainFrame" href="VisionEgg.Configuration-module.html#defaults"
+     >VisionEgg.Configuration.defaults</a><br />    <a target="mainFrame" href="VisionEgg.Configuration-module.html#extra_darwin_defaults"
+     >VisionEgg.Configuration.extra_darwin_defaults</a><br />    <a target="mainFrame" href="VisionEgg.Core-module.html#gl_assumptions"
+     >VisionEgg.Core.gl_assumptions</a><br />    <a target="mainFrame" href="VisionEgg.Core-module.html#message"
+     >VisionEgg.Core.message</a><br />    <a target="mainFrame" href="VisionEgg.DaqKeyboard-module.html#__version__"
+     >VisionEgg.DaqKeyboard.__version__</a><br />    <a target="mainFrame" href="VisionEgg.DaqLPT-module.html#__version__"
+     >VisionEgg.DaqLPT.__version__</a><br />    <a target="mainFrame" href="VisionEgg.FlowControl-module.html#EVERY_FRAME"
+     >VisionEgg.FlowControl.EVERY_FRAME</a><br />    <a target="mainFrame" href="VisionEgg.FlowControl-module.html#FRAMES_ABSOLUTE"
+     >VisionEgg.FlowControl.FRAMES_ABSOLUTE</a><br />    <a target="mainFrame" href="VisionEgg.FlowControl-module.html#FRAMES_SINCE_GO"
+     >VisionEgg.FlowControl.FRAMES_SINCE_GO</a><br />    <a target="mainFrame" href="VisionEgg.FlowControl-module.html#NEVER"
+     >VisionEgg.FlowControl.NEVER</a><br />    <a target="mainFrame" href="VisionEgg.FlowControl-module.html#NOT_BETWEEN_GO"
+     >VisionEgg.FlowControl.NOT_BETWEEN_GO</a><br />    <a target="mainFrame" href="VisionEgg.FlowControl-module.html#NOT_DURING_GO"
+     >VisionEgg.FlowControl.NOT_DURING_GO</a><br />    <a target="mainFrame" href="VisionEgg.FlowControl-module.html#ONCE"
+     >VisionEgg.FlowControl.ONCE</a><br />    <a target="mainFrame" href="VisionEgg.FlowControl-module.html#TIME_INDEPENDENT"
+     >VisionEgg.FlowControl.TIME_INDEPENDENT</a><br />    <a target="mainFrame" href="VisionEgg.FlowControl-module.html#TIME_SEC_ABSOLUTE"
+     >VisionEgg.FlowControl.TIME_SEC_ABSOLUTE</a><br />    <a target="mainFrame" href="VisionEgg.FlowControl-module.html#TIME_SEC_SINCE_GO"
+     >VisionEgg.FlowControl.TIME_SEC_SINCE_GO</a><br />    <a target="mainFrame" href="VisionEgg.FlowControl-module.html#TRANSITIONS"
+     >VisionEgg.FlowControl.TRANSITIONS</a><br />    <a target="mainFrame" href="VisionEgg.GL-module.html#GL_UNSIGNED_INT_8_8_8_8_REV"
+     >VisionEgg.GL.GL_UNSIGNED_INT_8_8_8_8_REV</a><br />    <a target="mainFrame" href="VisionEgg.GL-module.html#__version__"
+     >VisionEgg.GL.__version__</a><br />    <a target="mainFrame" href="VisionEgg.GLTrace-module.html#bitmask_names_by_value"
+     >VisionEgg.GLTrace.bitmask_names_by_value</a><br />    <a target="mainFrame" href="VisionEgg.GLTrace-module.html#bitmasks_by_function"
+     >VisionEgg.GLTrace.bitmasks_by_function</a><br />    <a target="mainFrame" href="VisionEgg.GLTrace-module.html#gl_constants"
+     >VisionEgg.GLTrace.gl_constants</a><br />    <a target="mainFrame" href="VisionEgg.GLTrace-module.html#raw_args_by_function"
+     >VisionEgg.GLTrace.raw_args_by_function</a><br />    <a target="mainFrame" href="VisionEgg.GUI-module.html#Tkinter"
+     >VisionEgg.GUI.Tkinter</a><br />    <a target="mainFrame" href="VisionEgg.GUI-module.html#tkFileDialog"
+     >VisionEgg.GUI.tkFileDialog</a><br />    <a target="mainFrame" href="VisionEgg.GUI-module.html#tkMessageBox"
+     >VisionEgg.GUI.tkMessageBox</a><br />    <a target="mainFrame" href="VisionEgg.ParameterTypes-module.html#array_types"
+     >VisionEgg.ParameterTypes.array_types</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.AST_ext-module.html#name_sequence"
+     >VisionEgg.PyroApps.AST_ext.name_sequence</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.ColorCalGUI-module.html#__cvs__"
+     >VisionEgg.PyroApps.ColorCalGUI.__cvs__</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.ColorCalGUI-module.html#__date__"
+     >VisionEgg.PyroApps.ColorCalGUI.__date__</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.ColorCalServer-module.html#__cvs__"
+     >VisionEgg.PyroApps.ColorCalServer.__cvs__</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.ColorCalServer-module.html#__date__"
+     >VisionEgg.PyroApps.ColorCalServer.__date__</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.EPhysGUI-module.html#__author__"
+     >VisionEgg.PyroApps.EPhysGUI.__author__</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.EPhysGUI-module.html#__cvs__"
+     >VisionEgg.PyroApps.EPhysGUI.__cvs__</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.EPhysGUI-module.html#__date__"
+     >VisionEgg.PyroApps.EPhysGUI.__date__</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.EPhysGUI-module.html#__version__"
+     >VisionEgg.PyroApps.EPhysGUI.__version__</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.EPhysGUI-module.html#client_list"
+     >VisionEgg.PyroApps.EPhysGUI.client_list</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.EPhysGUIUtils-module.html#__author__"
+     >VisionEgg.PyroApps.EPhysGUIUtils.__author__</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.EPhysGUIUtils-module.html#__cvs__"
+     >VisionEgg.PyroApps.EPhysGUIUtils.__cvs__</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.EPhysGUIUtils-module.html#__date__"
+     >VisionEgg.PyroApps.EPhysGUIUtils.__date__</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.EPhysGUIUtils-module.html#__version__"
+     >VisionEgg.PyroApps.EPhysGUIUtils.__version__</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.EPhysServer-module.html#__author__"
+     >VisionEgg.PyroApps.EPhysServer.__author__</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.EPhysServer-module.html#__cvs__"
+     >VisionEgg.PyroApps.EPhysServer.__cvs__</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.EPhysServer-module.html#__date__"
+     >VisionEgg.PyroApps.EPhysServer.__date__</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.EPhysServer-module.html#__version__"
+     >VisionEgg.PyroApps.EPhysServer.__version__</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.EPhysServer-module.html#server_modules"
+     >VisionEgg.PyroApps.EPhysServer.server_modules</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.FlatGratingGUI-module.html#__cvs__"
+     >VisionEgg.PyroApps.FlatGratingGUI.__cvs__</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.FlatGratingGUI-module.html#__date__"
+     >VisionEgg.PyroApps.FlatGratingGUI.__date__</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.FlatGratingServer-module.html#__cvs__"
+     >VisionEgg.PyroApps.FlatGratingServer.__cvs__</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.FlatGratingServer-module.html#__date__"
+     >VisionEgg.PyroApps.FlatGratingServer.__date__</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.GridGUI-module.html#__author__"
+     >VisionEgg.PyroApps.GridGUI.__author__</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.GridGUI-module.html#__cvs__"
+     >VisionEgg.PyroApps.GridGUI.__cvs__</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.GridGUI-module.html#__date__"
+     >VisionEgg.PyroApps.GridGUI.__date__</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.GridGUI-module.html#__version__"
+     >VisionEgg.PyroApps.GridGUI.__version__</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.GridServer-module.html#__author__"
+     >VisionEgg.PyroApps.GridServer.__author__</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.GridServer-module.html#__cvs__"
+     >VisionEgg.PyroApps.GridServer.__cvs__</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.GridServer-module.html#__date__"
+     >VisionEgg.PyroApps.GridServer.__date__</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.GridServer-module.html#__version__"
+     >VisionEgg.PyroApps.GridServer.__version__</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.MouseTargetGUI-module.html#__cvs__"
+     >VisionEgg.PyroApps.MouseTargetGUI.__cvs__</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.MouseTargetGUI-module.html#__date__"
+     >VisionEgg.PyroApps.MouseTargetGUI.__date__</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.MouseTargetServer-module.html#__cvs__"
+     >VisionEgg.PyroApps.MouseTargetServer.__cvs__</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.MouseTargetServer-module.html#__date__"
+     >VisionEgg.PyroApps.MouseTargetServer.__date__</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.MouseTargetServer-module.html#down"
+     >VisionEgg.PyroApps.MouseTargetServer.down</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.MouseTargetServer-module.html#handle_event_callbacks"
+     >VisionEgg.PyroApps.MouseTargetServer.handle_event_callbacks</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.MouseTargetServer-module.html#last_mouse_position"
+     >VisionEgg.PyroApps.MouseTargetServer.last_mouse_position</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.MouseTargetServer-module.html#left"
+     >VisionEgg.PyroApps.MouseTargetServer.left</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.MouseTargetServer-module.html#mouse_position"
+     >VisionEgg.PyroApps.MouseTargetServer.mouse_position</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.MouseTargetServer-module.html#right"
+     >VisionEgg.PyroApps.MouseTargetServer.right</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.MouseTargetServer-module.html#target_h"
+     >VisionEgg.PyroApps.MouseTargetServer.target_h</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.MouseTargetServer-module.html#target_w"
+     >VisionEgg.PyroApps.MouseTargetServer.target_w</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.MouseTargetServer-module.html#up"
+     >VisionEgg.PyroApps.MouseTargetServer.up</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.ScreenPositionGUI-module.html#__cvs__"
+     >VisionEgg.PyroApps.ScreenPositionGUI.__cvs__</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.ScreenPositionGUI-module.html#__date__"
+     >VisionEgg.PyroApps.ScreenPositionGUI.__date__</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.ScreenPositionGUI-module.html#__version__"
+     >VisionEgg.PyroApps.ScreenPositionGUI.__version__</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.ScreenPositionServer-module.html#__cvs__"
+     >VisionEgg.PyroApps.ScreenPositionServer.__cvs__</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.ScreenPositionServer-module.html#__date__"
+     >VisionEgg.PyroApps.ScreenPositionServer.__date__</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.ScreenPositionServer-module.html#__version__"
+     >VisionEgg.PyroApps.ScreenPositionServer.__version__</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.SphereGratingGUI-module.html#__cvs__"
+     >VisionEgg.PyroApps.SphereGratingGUI.__cvs__</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.SphereGratingGUI-module.html#__date__"
+     >VisionEgg.PyroApps.SphereGratingGUI.__date__</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.SphereGratingServer-module.html#__cvs__"
+     >VisionEgg.PyroApps.SphereGratingServer.__cvs__</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.SphereGratingServer-module.html#__date__"
+     >VisionEgg.PyroApps.SphereGratingServer.__date__</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.SpinningDrumGUI-module.html#__author__"
+     >VisionEgg.PyroApps.SpinningDrumGUI.__author__</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.SpinningDrumGUI-module.html#__cvs__"
+     >VisionEgg.PyroApps.SpinningDrumGUI.__cvs__</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.SpinningDrumGUI-module.html#__date__"
+     >VisionEgg.PyroApps.SpinningDrumGUI.__date__</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.SpinningDrumGUI-module.html#__version__"
+     >VisionEgg.PyroApps.SpinningDrumGUI.__version__</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.SpinningDrumServer-module.html#__author__"
+     >VisionEgg.PyroApps.SpinningDrumServer.__author__</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.SpinningDrumServer-module.html#__cvs__"
+     >VisionEgg.PyroApps.SpinningDrumServer.__cvs__</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.SpinningDrumServer-module.html#__date__"
+     >VisionEgg.PyroApps.SpinningDrumServer.__date__</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.SpinningDrumServer-module.html#__version__"
+     >VisionEgg.PyroApps.SpinningDrumServer.__version__</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.TargetGUI-module.html#__cvs__"
+     >VisionEgg.PyroApps.TargetGUI.__cvs__</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.TargetGUI-module.html#__date__"
+     >VisionEgg.PyroApps.TargetGUI.__date__</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.TargetServer-module.html#__cvs__"
+     >VisionEgg.PyroApps.TargetServer.__cvs__</a><br />    <a target="mainFrame" href="VisionEgg.PyroApps.TargetServer-module.html#__date__"
+     >VisionEgg.PyroApps.TargetServer.__date__</a><br />    <a target="mainFrame" href="VisionEgg.PyroClient-module.html#__cvs__"
+     >VisionEgg.PyroClient.__cvs__</a><br />    <a target="mainFrame" href="VisionEgg.PyroClient-module.html#__date__"
+     >VisionEgg.PyroClient.__date__</a><br />    <a target="mainFrame" href="VisionEgg.PyroHelpers-module.html#__cvs__"
+     >VisionEgg.PyroHelpers.__cvs__</a><br />    <a target="mainFrame" href="VisionEgg.PyroHelpers-module.html#__date__"
+     >VisionEgg.PyroHelpers.__date__</a><br />    <a target="mainFrame" href="VisionEgg.PyroHelpers-module.html#__version__"
+     >VisionEgg.PyroHelpers.__version__</a><br />    <a target="mainFrame" href="VisionEgg.QuickTime-module.html#__version__"
+     >VisionEgg.QuickTime.__version__</a><br />    <a target="mainFrame" href="VisionEgg.ResponseControl-module.html#__version__"
+     >VisionEgg.ResponseControl.__version__</a><br />    <a target="mainFrame" href="VisionEgg.SphereMap-module.html#__version__"
+     >VisionEgg.SphereMap.__version__</a><br />    <a target="mainFrame" href="VisionEgg.TCPController-module.html#__cvs__"
+     >VisionEgg.TCPController.__cvs__</a><br />    <a target="mainFrame" href="VisionEgg.TCPController-module.html#__date__"
+     >VisionEgg.TCPController.__date__</a><br />    <a target="mainFrame" href="VisionEgg.TCPController-module.html#__version__"
+     >VisionEgg.TCPController.__version__</a><br />    <a target="mainFrame" href="VisionEgg.Text-module.html#have_glut"
+     >VisionEgg.Text.have_glut</a><br />    <a target="mainFrame" href="VisionEgg.Textures-module.html#array_types"
+     >VisionEgg.Textures.array_types</a><br />    <a target="mainFrame" href="VisionEgg.Textures-module.html#shrink_filter"
+     >VisionEgg.Textures.shrink_filter</a><br />    <a target="mainFrame" href="VisionEgg-module.html#config"
+     >VisionEgg.config</a><br />    <a target="mainFrame" href="VisionEgg.darwin_getrefresh-module.html#getrefresh"
+     >VisionEgg.darwin_getrefresh.getrefresh</a><br />    <a target="mainFrame" href="VisionEgg.gl_qt-module.html#gl_qt_renderer_create"
+     >VisionEgg.gl_qt.gl_qt_renderer_create</a><br />    <a target="mainFrame" href="VisionEgg.gl_qt-module.html#gl_qt_renderer_delete"
+     >VisionEgg.gl_qt.gl_qt_renderer_delete</a><br />    <a target="mainFrame" href="VisionEgg.gl_qt-module.html#gl_qt_renderer_update"
+     >VisionEgg.gl_qt.gl_qt_renderer_update</a><br />    <a target="mainFrame" href="VisionEgg-module.html#log_formatter"
+     >VisionEgg.log_formatter</a><br />    <a target="mainFrame" href="VisionEgg-module.html#logger"
+     >VisionEgg.logger</a><br />    <a target="mainFrame" href="VisionEgg.posix_maxpriority-module.html#SCHED_FIFO"
+     >VisionEgg.posix_maxpriority.SCHED_FIFO</a><br />    <a target="mainFrame" href="VisionEgg.posix_maxpriority-module.html#SCHED_RR"
+     >VisionEgg.posix_maxpriority.SCHED_RR</a><br />    <a target="mainFrame" href="VisionEgg.posix_maxpriority-module.html#sched_get_priority_max"
+     >VisionEgg.posix_maxpriority.sched_get_priority_max</a><br />    <a target="mainFrame" href="VisionEgg.posix_maxpriority-module.html#set_self_policy_priority"
+     >VisionEgg.posix_maxpriority.set_self_policy_priority</a><br />    <a target="mainFrame" href="VisionEgg.posix_maxpriority-module.html#stop_memory_paging"
+     >VisionEgg.posix_maxpriority.stop_memory_paging</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#ByteCount"
+     >VisionEgg.qtlowlevel.ByteCount</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#CFAllocatorRef"
+     >VisionEgg.qtlowlevel.CFAllocatorRef</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#CFIndex"
+     >VisionEgg.qtlowlevel.CFIndex</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#CFStringCreateWithCString"
+     >VisionEgg.qtlowlevel.CFStringCreateWithCString</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#CFStringCreateWithCharacters"
+     >VisionEgg.qtlowlevel.CFStringCreateWithCharacters</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#CFStringEncoding"
+     >VisionEgg.qtlowlevel.CFStringEncoding</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#CFStringGetCString"
+     >VisionEgg.qtlowlevel.CFStringGetCString</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#CFStringGetCStringPtr"
+     >VisionEgg.qtlowlevel.CFStringGetCStringPtr</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#CFStringRef"
+     >VisionEgg.qtlowlevel.CFStringRef</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#EnterMovies"
+     >VisionEgg.qtlowlevel.EnterMovies</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#FSSpec"
+     >VisionEgg.qtlowlevel.FSSpec</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#FourCharCode"
+     >VisionEgg.qtlowlevel.FourCharCode</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#GetMovieBox"
+     >VisionEgg.qtlowlevel.GetMovieBox</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#GoToBeginningOfMovie"
+     >VisionEgg.qtlowlevel.GoToBeginningOfMovie</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#InitializeQTML"
+     >VisionEgg.qtlowlevel.InitializeQTML</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#IsMovieDone"
+     >VisionEgg.qtlowlevel.IsMovieDone</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#ItemCount"
+     >VisionEgg.qtlowlevel.ItemCount</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#Movie"
+     >VisionEgg.qtlowlevel.Movie</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#MoviesTask"
+     >VisionEgg.qtlowlevel.MoviesTask</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#NativePathNameToFSSpec"
+     >VisionEgg.qtlowlevel.NativePathNameToFSSpec</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#NewMovieFromFile"
+     >VisionEgg.qtlowlevel.NewMovieFromFile</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#NewMovieFromProperties"
+     >VisionEgg.qtlowlevel.NewMovieFromProperties</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#OSErr"
+     >VisionEgg.qtlowlevel.OSErr</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#OSStatus"
+     >VisionEgg.qtlowlevel.OSStatus</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#OSType"
+     >VisionEgg.qtlowlevel.OSType</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#OpenMovieFile"
+     >VisionEgg.qtlowlevel.OpenMovieFile</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#QTGetCFConstant"
+     >VisionEgg.qtlowlevel.QTGetCFConstant</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#QTMLClient"
+     >VisionEgg.qtlowlevel.QTMLClient</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#QTPropertyClass"
+     >VisionEgg.qtlowlevel.QTPropertyClass</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#QTPropertyID"
+     >VisionEgg.qtlowlevel.QTPropertyID</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#QTPropertyValuePtr"
+     >VisionEgg.qtlowlevel.QTPropertyValuePtr</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#QTVisualContextRef"
+     >VisionEgg.qtlowlevel.QTVisualContextRef</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#SetMovieBox"
+     >VisionEgg.qtlowlevel.SetMovieBox</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#StartMovie"
+     >VisionEgg.qtlowlevel.StartMovie</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#kCFAllocatorDefault"
+     >VisionEgg.qtlowlevel.kCFAllocatorDefault</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#kCFStringEncodingMacRoman"
+     >VisionEgg.qtlowlevel.kCFStringEncodingMacRoman</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#kQTContextPropertyID_AudioContext"
+     >VisionEgg.qtlowlevel.kQTContextPropertyID_AudioContext</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#kQTContextPropertyID_VisualContext"
+     >VisionEgg.qtlowlevel.kQTContextPropertyID_VisualContext</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#kQTDataLocationPropertyID_CFStringHFSPath"
+     >VisionEgg.qtlowlevel.kQTDataLocationPropertyID_CFStringHFSPath</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#kQTDataLocationPropertyID_CFStringNativePath"
+     >VisionEgg.qtlowlevel.kQTDataLocationPropertyID_CFStringNativePath</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#kQTDataLocationPropertyID_CFStringPosixPath"
+     >VisionEgg.qtlowlevel.kQTDataLocationPropertyID_CFStringPosixPath</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#kQTDataLocationPropertyID_CFStringWindowsPath"
+     >VisionEgg.qtlowlevel.kQTDataLocationPropertyID_CFStringWindowsPath</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#kQTDataLocationPropertyID_CFURL"
+     >VisionEgg.qtlowlevel.kQTDataLocationPropertyID_CFURL</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#kQTDataLocationPropertyID_DataFork"
+     >VisionEgg.qtlowlevel.kQTDataLocationPropertyID_DataFork</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#kQTDataLocationPropertyID_DataReference"
+     >VisionEgg.qtlowlevel.kQTDataLocationPropertyID_DataReference</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#kQTDataLocationPropertyID_LegacyMovieResourceHandle"
+     >VisionEgg.qtlowlevel.kQTDataLocationPropertyID_LegacyMovieResourceHandle</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#kQTDataLocationPropertyID_MovieUserProc"
+     >VisionEgg.qtlowlevel.kQTDataLocationPropertyID_MovieUserProc</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#kQTDataLocationPropertyID_QTDataHandler"
+     >VisionEgg.qtlowlevel.kQTDataLocationPropertyID_QTDataHandler</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#kQTDataLocationPropertyID_ResourceFork"
+     >VisionEgg.qtlowlevel.kQTDataLocationPropertyID_ResourceFork</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#kQTDataLocationPropertyID_Scrap"
+     >VisionEgg.qtlowlevel.kQTDataLocationPropertyID_Scrap</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#kQTMovieInstantiationPropertyID_AsyncOK"
+     >VisionEgg.qtlowlevel.kQTMovieInstantiationPropertyID_AsyncOK</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#kQTMovieInstantiationPropertyID_DontAskUnresolvedDataRefs"
+     >VisionEgg.qtlowlevel.kQTMovieInstantiationPropertyID_DontAskUnresolvedDataRefs</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#kQTMovieInstantiationPropertyID_DontAutoAlternates"
+     >VisionEgg.qtlowlevel.kQTMovieInstantiationPropertyID_DontAutoAlternates</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#kQTMovieInstantiationPropertyID_DontAutoUpdateClock"
+     >VisionEgg.qtlowlevel.kQTMovieInstantiationPropertyID_DontAutoUpdateClock</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#kQTMovieInstantiationPropertyID_DontResolveDataRefs"
+     >VisionEgg.qtlowlevel.kQTMovieInstantiationPropertyID_DontResolveDataRefs</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#kQTMovieInstantiationPropertyID_DontUpdateForeBackPointers"
+     >VisionEgg.qtlowlevel.kQTMovieInstantiationPropertyID_DontUpdateForeBackPointers</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#kQTMovieInstantiationPropertyID_IdleImportOK"
+     >VisionEgg.qtlowlevel.kQTMovieInstantiationPropertyID_IdleImportOK</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#kQTMovieInstantiationPropertyID_ResultDataLocationChanged"
+     >VisionEgg.qtlowlevel.kQTMovieInstantiationPropertyID_ResultDataLocationChanged</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#kQTMovieResourceLocatorPropertyID_Callback"
+     >VisionEgg.qtlowlevel.kQTMovieResourceLocatorPropertyID_Callback</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#kQTMovieResourceLocatorPropertyID_FileOffset"
+     >VisionEgg.qtlowlevel.kQTMovieResourceLocatorPropertyID_FileOffset</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#kQTMovieResourceLocatorPropertyID_LegacyResID"
+     >VisionEgg.qtlowlevel.kQTMovieResourceLocatorPropertyID_LegacyResID</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#kQTMovieResourceLocatorPropertyID_LegacyResName"
+     >VisionEgg.qtlowlevel.kQTMovieResourceLocatorPropertyID_LegacyResName</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#kQTNewMoviePropertyID_Active"
+     >VisionEgg.qtlowlevel.kQTNewMoviePropertyID_Active</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#kQTNewMoviePropertyID_DefaultDataRef"
+     >VisionEgg.qtlowlevel.kQTNewMoviePropertyID_DefaultDataRef</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#kQTNewMoviePropertyID_DontInteractWithUser"
+     >VisionEgg.qtlowlevel.kQTNewMoviePropertyID_DontInteractWithUser</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#kQTPropertyClass_Context"
+     >VisionEgg.qtlowlevel.kQTPropertyClass_Context</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#kQTPropertyClass_DataLocation"
+     >VisionEgg.qtlowlevel.kQTPropertyClass_DataLocation</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#kQTPropertyClass_MovieInstantiation"
+     >VisionEgg.qtlowlevel.kQTPropertyClass_MovieInstantiation</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#kQTPropertyClass_MovieResourceLocator"
+     >VisionEgg.qtlowlevel.kQTPropertyClass_MovieResourceLocator</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#kQTPropertyClass_NewMovieProperty"
+     >VisionEgg.qtlowlevel.kQTPropertyClass_NewMovieProperty</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#movieToolboxUninitialized"
+     >VisionEgg.qtlowlevel.movieToolboxUninitialized</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#noErr"
+     >VisionEgg.qtlowlevel.noErr</a><br />    <a target="mainFrame" href="VisionEgg.qtlowlevel-module.html#paramErr"
+     >VisionEgg.qtlowlevel.paramErr</a><br />    <a target="mainFrame" href="VisionEgg-module.html#release_name"
+     >VisionEgg.release_name</a><br />    <a target="mainFrame" href="VisionEgg-module.html#time_func"
+     >VisionEgg.time_func</a><br />    <a target="mainFrame" href="VisionEgg-module.html#true_time_func"
+     >VisionEgg.true_time_func</a><br />    <a target="mainFrame" href="VisionEgg.win32_getrefresh-module.html#getrefresh"
+     >VisionEgg.win32_getrefresh.getrefresh</a><br />    <a target="mainFrame" href="VisionEgg.win32_maxpriority-module.html#HIGH_PRIORITY_CLASS"
+     >VisionEgg.win32_maxpriority.HIGH_PRIORITY_CLASS</a><br />    <a target="mainFrame" href="VisionEgg.win32_maxpriority-module.html#IDLE_PRIORITY_CLASS"
+     >VisionEgg.win32_maxpriority.IDLE_PRIORITY_CLASS</a><br />    <a target="mainFrame" href="VisionEgg.win32_maxpriority-module.html#NORMAL_PRIORITY_CLASS"
+     >VisionEgg.win32_maxpriority.NORMAL_PRIORITY_CLASS</a><br />    <a target="mainFrame" href="VisionEgg.win32_maxpriority-module.html#REALTIME_PRIORITY_CLASS"
+     >VisionEgg.win32_maxpriority.REALTIME_PRIORITY_CLASS</a><br />    <a target="mainFrame" href="VisionEgg.win32_maxpriority-module.html#THREAD_PRIORITY_ABOVE_NORMAL"
+     >VisionEgg.win32_maxpriority.THREAD_PRIORITY_ABOVE_NORMAL</a><br />    <a target="mainFrame" href="VisionEgg.win32_maxpriority-module.html#THREAD_PRIORITY_BELOW_NORMAL"
+     >VisionEgg.win32_maxpriority.THREAD_PRIORITY_BELOW_NORMAL</a><br />    <a target="mainFrame" href="VisionEgg.win32_maxpriority-module.html#THREAD_PRIORITY_HIGHEST"
+     >VisionEgg.win32_maxpriority.THREAD_PRIORITY_HIGHEST</a><br />    <a target="mainFrame" href="VisionEgg.win32_maxpriority-module.html#THREAD_PRIORITY_IDLE"
+     >VisionEgg.win32_maxpriority.THREAD_PRIORITY_IDLE</a><br />    <a target="mainFrame" href="VisionEgg.win32_maxpriority-module.html#THREAD_PRIORITY_LOWEST"
+     >VisionEgg.win32_maxpriority.THREAD_PRIORITY_LOWEST</a><br />    <a target="mainFrame" href="VisionEgg.win32_maxpriority-module.html#THREAD_PRIORITY_NORMAL"
+     >VisionEgg.win32_maxpriority.THREAD_PRIORITY_NORMAL</a><br />    <a target="mainFrame" href="VisionEgg.win32_maxpriority-module.html#THREAD_PRIORITY_TIME_CRITICAL"
+     >VisionEgg.win32_maxpriority.THREAD_PRIORITY_TIME_CRITICAL</a><br />    <a target="mainFrame" href="VisionEgg.win32_maxpriority-module.html#set_self_process_priority_class"
+     >VisionEgg.win32_maxpriority.set_self_process_priority_class</a><br />    <a target="mainFrame" href="VisionEgg.win32_maxpriority-module.html#set_self_thread_priority"
+     >VisionEgg.win32_maxpriority.set_self_thread_priority</a><br /><hr />
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/html/toc.html b/doc/reference/html/toc.html
new file mode 100644
index 0000000..ddba0cc
--- /dev/null
+++ b/doc/reference/html/toc.html
@@ -0,0 +1,88 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>Table of Contents</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="toc">Table of Contents</h1>
+<hr />
+  <a target="moduleFrame" href="toc-everything.html">Everything</a>
+  <br />
+  <h2 class="toc">Modules</h2>
+    <a target="moduleFrame" href="toc-VisionEgg-module.html"
+     onclick="setFrame('toc-VisionEgg-module.html','VisionEgg-module.html');"     >VisionEgg</a><br />    <a target="moduleFrame" href="toc-VisionEgg.Configuration-module.html"
+     onclick="setFrame('toc-VisionEgg.Configuration-module.html','VisionEgg.Configuration-module.html');"     >VisionEgg.Configuration</a><br />    <a target="moduleFrame" href="toc-VisionEgg.Core-module.html"
+     onclick="setFrame('toc-VisionEgg.Core-module.html','VisionEgg.Core-module.html');"     >VisionEgg.Core</a><br />    <a target="moduleFrame" href="toc-VisionEgg.Daq-module.html"
+     onclick="setFrame('toc-VisionEgg.Daq-module.html','VisionEgg.Daq-module.html');"     >VisionEgg.Daq</a><br />    <a target="moduleFrame" href="toc-VisionEgg.DaqKeyboard-module.html"
+     onclick="setFrame('toc-VisionEgg.DaqKeyboard-module.html','VisionEgg.DaqKeyboard-module.html');"     >VisionEgg.DaqKeyboard</a><br />    <a target="moduleFrame" href="toc-VisionEgg.DaqLPT-module.html"
+     onclick="setFrame('toc-VisionEgg.DaqLPT-module.html','VisionEgg.DaqLPT-module.html');"     >VisionEgg.DaqLPT</a><br />    <a target="moduleFrame" href="toc-VisionEgg.Deprecated-module.html"
+     onclick="setFrame('toc-VisionEgg.Deprecated-module.html','VisionEgg.Deprecated-module.html');"     >VisionEgg.Deprecated</a><br />    <a target="moduleFrame" href="toc-VisionEgg.Dots-module.html"
+     onclick="setFrame('toc-VisionEgg.Dots-module.html','VisionEgg.Dots-module.html');"     >VisionEgg.Dots</a><br />    <a target="moduleFrame" href="toc-VisionEgg.FlowControl-module.html"
+     onclick="setFrame('toc-VisionEgg.FlowControl-module.html','VisionEgg.FlowControl-module.html');"     >VisionEgg.FlowControl</a><br />    <a target="moduleFrame" href="toc-VisionEgg.GL-module.html"
+     onclick="setFrame('toc-VisionEgg.GL-module.html','VisionEgg.GL-module.html');"     >VisionEgg.GL</a><br />    <a target="moduleFrame" href="toc-VisionEgg.GLTrace-module.html"
+     onclick="setFrame('toc-VisionEgg.GLTrace-module.html','VisionEgg.GLTrace-module.html');"     >VisionEgg.GLTrace</a><br />    <a target="moduleFrame" href="toc-VisionEgg.GUI-module.html"
+     onclick="setFrame('toc-VisionEgg.GUI-module.html','VisionEgg.GUI-module.html');"     >VisionEgg.GUI</a><br />    <a target="moduleFrame" href="toc-VisionEgg.Gratings-module.html"
+     onclick="setFrame('toc-VisionEgg.Gratings-module.html','VisionEgg.Gratings-module.html');"     >VisionEgg.Gratings</a><br />    <a target="moduleFrame" href="toc-VisionEgg.MoreStimuli-module.html"
+     onclick="setFrame('toc-VisionEgg.MoreStimuli-module.html','VisionEgg.MoreStimuli-module.html');"     >VisionEgg.MoreStimuli</a><br />    <a target="moduleFrame" href="toc-VisionEgg.ParameterTypes-module.html"
+     onclick="setFrame('toc-VisionEgg.ParameterTypes-module.html','VisionEgg.ParameterTypes-module.html');"     >VisionEgg.ParameterTypes</a><br />    <a target="moduleFrame" href="toc-VisionEgg.PlatformDependent-module.html"
+     onclick="setFrame('toc-VisionEgg.PlatformDependent-module.html','VisionEgg.PlatformDependent-module.html');"     >VisionEgg.PlatformDependent</a><br />    <a target="moduleFrame" href="toc-VisionEgg.PyroApps-module.html"
+     onclick="setFrame('toc-VisionEgg.PyroApps-module.html','VisionEgg.PyroApps-module.html');"     >VisionEgg.PyroApps</a><br />    <a target="moduleFrame" href="toc-VisionEgg.PyroApps.AST_ext-module.html"
+     onclick="setFrame('toc-VisionEgg.PyroApps.AST_ext-module.html','VisionEgg.PyroApps.AST_ext-module.html');"     >VisionEgg.PyroApps.AST_ext</a><br />    <a target="moduleFrame" href="toc-VisionEgg.PyroApps.ColorCalGUI-module.html"
+     onclick="setFrame('toc-VisionEgg.PyroApps.ColorCalGUI-module.html','VisionEgg.PyroApps.ColorCalGUI-module.html');"     >VisionEgg.PyroApps.ColorCalGUI</a><br />    <a target="moduleFrame" href="toc-VisionEgg.PyroApps.ColorCalServer-module.html"
+     onclick="setFrame('toc-VisionEgg.PyroApps.ColorCalServer-module.html','VisionEgg.PyroApps.ColorCalServer-module.html');"     >VisionEgg.PyroApps.ColorCalServer</a><br />    <a target="moduleFrame" href="toc-VisionEgg.PyroApps.DropinGUI-module.html"
+     onclick="setFrame('toc-VisionEgg.PyroApps.DropinGUI-module.html','VisionEgg.PyroApps.DropinGUI-module.html');"     >VisionEgg.PyroApps.DropinGUI</a><br />    <a target="moduleFrame" href="toc-VisionEgg.PyroApps.DropinServer-module.html"
+     onclick="setFrame('toc-VisionEgg.PyroApps.DropinServer-module.html','VisionEgg.PyroApps.DropinServer-module.html');"     >VisionEgg.PyroApps.DropinServer</a><br />    <a target="moduleFrame" href="toc-VisionEgg.PyroApps.EPhysGUI-module.html"
+     onclick="setFrame('toc-VisionEgg.PyroApps.EPhysGUI-module.html','VisionEgg.PyroApps.EPhysGUI-module.html');"     >VisionEgg.PyroApps.EPhysGUI</a><br />    <a target="moduleFrame" href="toc-VisionEgg.PyroApps.EPhysGUIUtils-module.html"
+     onclick="setFrame('toc-VisionEgg.PyroApps.EPhysGUIUtils-module.html','VisionEgg.PyroApps.EPhysGUIUtils-module.html');"     >VisionEgg.PyroApps.EPhysGUIUtils</a><br />    <a target="moduleFrame" href="toc-VisionEgg.PyroApps.EPhysServer-module.html"
+     onclick="setFrame('toc-VisionEgg.PyroApps.EPhysServer-module.html','VisionEgg.PyroApps.EPhysServer-module.html');"     >VisionEgg.PyroApps.EPhysServer</a><br />    <a target="moduleFrame" href="toc-VisionEgg.PyroApps.FlatGratingGUI-module.html"
+     onclick="setFrame('toc-VisionEgg.PyroApps.FlatGratingGUI-module.html','VisionEgg.PyroApps.FlatGratingGUI-module.html');"     >VisionEgg.PyroApps.FlatGratingGUI</a><br />    <a target="moduleFrame" href="toc-VisionEgg.PyroApps.FlatGratingServer-module.html"
+     onclick="setFrame('toc-VisionEgg.PyroApps.FlatGratingServer-module.html','VisionEgg.PyroApps.FlatGratingServer-module.html');"     >VisionEgg.PyroApps.FlatGratingServer</a><br />    <a target="moduleFrame" href="toc-VisionEgg.PyroApps.GridGUI-module.html"
+     onclick="setFrame('toc-VisionEgg.PyroApps.GridGUI-module.html','VisionEgg.PyroApps.GridGUI-module.html');"     >VisionEgg.PyroApps.GridGUI</a><br />    <a target="moduleFrame" href="toc-VisionEgg.PyroApps.GridServer-module.html"
+     onclick="setFrame('toc-VisionEgg.PyroApps.GridServer-module.html','VisionEgg.PyroApps.GridServer-module.html');"     >VisionEgg.PyroApps.GridServer</a><br />    <a target="moduleFrame" href="toc-VisionEgg.PyroApps.MouseTargetGUI-module.html"
+     onclick="setFrame('toc-VisionEgg.PyroApps.MouseTargetGUI-module.html','VisionEgg.PyroApps.MouseTargetGUI-module.html');"     >VisionEgg.PyroApps.MouseTargetGUI</a><br />    <a target="moduleFrame" href="toc-VisionEgg.PyroApps.MouseTargetServer-module.html"
+     onclick="setFrame('toc-VisionEgg.PyroApps.MouseTargetServer-module.html','VisionEgg.PyroApps.MouseTargetServer-module.html');"     >VisionEgg.PyroApps.MouseTargetServer</a><br />    <a target="moduleFrame" href="toc-VisionEgg.PyroApps.ScreenPositionGUI-module.html"
+     onclick="setFrame('toc-VisionEgg.PyroApps.ScreenPositionGUI-module.html','VisionEgg.PyroApps.ScreenPositionGUI-module.html');"     >VisionEgg.PyroApps.ScreenPositionGUI</a><br />    <a target="moduleFrame" href="toc-VisionEgg.PyroApps.ScreenPositionServer-module.html"
+     onclick="setFrame('toc-VisionEgg.PyroApps.ScreenPositionServer-module.html','VisionEgg.PyroApps.ScreenPositionServer-module.html');"     >VisionEgg.PyroApps.ScreenPositionServer</a><br />    <a target="moduleFrame" href="toc-VisionEgg.PyroApps.SphereGratingGUI-module.html"
+     onclick="setFrame('toc-VisionEgg.PyroApps.SphereGratingGUI-module.html','VisionEgg.PyroApps.SphereGratingGUI-module.html');"     >VisionEgg.PyroApps.SphereGratingGUI</a><br />    <a target="moduleFrame" href="toc-VisionEgg.PyroApps.SphereGratingServer-module.html"
+     onclick="setFrame('toc-VisionEgg.PyroApps.SphereGratingServer-module.html','VisionEgg.PyroApps.SphereGratingServer-module.html');"     >VisionEgg.PyroApps.SphereGratingServer</a><br />    <a target="moduleFrame" href="toc-VisionEgg.PyroApps.SpinningDrumGUI-module.html"
+     onclick="setFrame('toc-VisionEgg.PyroApps.SpinningDrumGUI-module.html','VisionEgg.PyroApps.SpinningDrumGUI-module.html');"     >VisionEgg.PyroApps.SpinningDrumGUI</a><br />    <a target="moduleFrame" href="toc-VisionEgg.PyroApps.SpinningDrumServer-module.html"
+     onclick="setFrame('toc-VisionEgg.PyroApps.SpinningDrumServer-module.html','VisionEgg.PyroApps.SpinningDrumServer-module.html');"     >VisionEgg.PyroApps.SpinningDrumServer</a><br />    <a target="moduleFrame" href="toc-VisionEgg.PyroApps.TargetGUI-module.html"
+     onclick="setFrame('toc-VisionEgg.PyroApps.TargetGUI-module.html','VisionEgg.PyroApps.TargetGUI-module.html');"     >VisionEgg.PyroApps.TargetGUI</a><br />    <a target="moduleFrame" href="toc-VisionEgg.PyroApps.TargetServer-module.html"
+     onclick="setFrame('toc-VisionEgg.PyroApps.TargetServer-module.html','VisionEgg.PyroApps.TargetServer-module.html');"     >VisionEgg.PyroApps.TargetServer</a><br />    <a target="moduleFrame" href="toc-VisionEgg.PyroApps.VarTypes-module.html"
+     onclick="setFrame('toc-VisionEgg.PyroApps.VarTypes-module.html','VisionEgg.PyroApps.VarTypes-module.html');"     >VisionEgg.PyroApps.VarTypes</a><br />    <a target="moduleFrame" href="toc-VisionEgg.PyroClient-module.html"
+     onclick="setFrame('toc-VisionEgg.PyroClient-module.html','VisionEgg.PyroClient-module.html');"     >VisionEgg.PyroClient</a><br />    <a target="moduleFrame" href="toc-VisionEgg.PyroHelpers-module.html"
+     onclick="setFrame('toc-VisionEgg.PyroHelpers-module.html','VisionEgg.PyroHelpers-module.html');"     >VisionEgg.PyroHelpers</a><br />    <a target="moduleFrame" href="toc-VisionEgg.QuickTime-module.html"
+     onclick="setFrame('toc-VisionEgg.QuickTime-module.html','VisionEgg.QuickTime-module.html');"     >VisionEgg.QuickTime</a><br />    <a target="moduleFrame" href="toc-VisionEgg.ResponseControl-module.html"
+     onclick="setFrame('toc-VisionEgg.ResponseControl-module.html','VisionEgg.ResponseControl-module.html');"     >VisionEgg.ResponseControl</a><br />    <a target="moduleFrame" href="toc-VisionEgg.SphereMap-module.html"
+     onclick="setFrame('toc-VisionEgg.SphereMap-module.html','VisionEgg.SphereMap-module.html');"     >VisionEgg.SphereMap</a><br />    <a target="moduleFrame" href="toc-VisionEgg.TCPController-module.html"
+     onclick="setFrame('toc-VisionEgg.TCPController-module.html','VisionEgg.TCPController-module.html');"     >VisionEgg.TCPController</a><br />    <a target="moduleFrame" href="toc-VisionEgg.Text-module.html"
+     onclick="setFrame('toc-VisionEgg.Text-module.html','VisionEgg.Text-module.html');"     >VisionEgg.Text</a><br />    <a target="moduleFrame" href="toc-VisionEgg.Textures-module.html"
+     onclick="setFrame('toc-VisionEgg.Textures-module.html','VisionEgg.Textures-module.html');"     >VisionEgg.Textures</a><br />    <a target="moduleFrame" href="toc-VisionEgg.ThreeDeeMath-module.html"
+     onclick="setFrame('toc-VisionEgg.ThreeDeeMath-module.html','VisionEgg.ThreeDeeMath-module.html');"     >VisionEgg.ThreeDeeMath</a><br />    <a target="moduleFrame" href="toc-VisionEgg.WrappedText-module.html"
+     onclick="setFrame('toc-VisionEgg.WrappedText-module.html','VisionEgg.WrappedText-module.html');"     >VisionEgg.WrappedText</a><br />    <a target="moduleFrame" href="toc-VisionEgg.darwin_getrefresh-module.html"
+     onclick="setFrame('toc-VisionEgg.darwin_getrefresh-module.html','VisionEgg.darwin_getrefresh-module.html');"     >VisionEgg.darwin_getrefresh</a><br />    <a target="moduleFrame" href="toc-VisionEgg.gl_qt-module.html"
+     onclick="setFrame('toc-VisionEgg.gl_qt-module.html','VisionEgg.gl_qt-module.html');"     >VisionEgg.gl_qt</a><br />    <a target="moduleFrame" href="toc-VisionEgg.posix_maxpriority-module.html"
+     onclick="setFrame('toc-VisionEgg.posix_maxpriority-module.html','VisionEgg.posix_maxpriority-module.html');"     >VisionEgg.posix_maxpriority</a><br />    <a target="moduleFrame" href="toc-VisionEgg.qtlowlevel-module.html"
+     onclick="setFrame('toc-VisionEgg.qtlowlevel-module.html','VisionEgg.qtlowlevel-module.html');"     >VisionEgg.qtlowlevel</a><br />    <a target="moduleFrame" href="toc-VisionEgg.qtmovie-module.html"
+     onclick="setFrame('toc-VisionEgg.qtmovie-module.html','VisionEgg.qtmovie-module.html');"     >VisionEgg.qtmovie</a><br />    <a target="moduleFrame" href="toc-VisionEgg.win32_getrefresh-module.html"
+     onclick="setFrame('toc-VisionEgg.win32_getrefresh-module.html','VisionEgg.win32_getrefresh-module.html');"     >VisionEgg.win32_getrefresh</a><br />    <a target="moduleFrame" href="toc-VisionEgg.win32_maxpriority-module.html"
+     onclick="setFrame('toc-VisionEgg.win32_maxpriority-module.html','VisionEgg.win32_maxpriority-module.html');"     >VisionEgg.win32_maxpriority</a><br /><hr />
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie()
+  // -->
+</script>
+  
+</body>
+</html>
diff --git a/doc/reference/make_epy.sh b/doc/reference/make_epy.sh
new file mode 100755
index 0000000..bf62cd8
--- /dev/null
+++ b/doc/reference/make_epy.sh
@@ -0,0 +1,59 @@
+#!/bin/sh
+if test ! -n "$PYTHON"; then
+  echo "Specify which python with the PYTHON environment variable"
+  exit 1
+fi
+
+$PYTHON epydoc --name "Vision Egg" --url "http://www.visionegg.org" --no-private \
+--docformat plaintext --parse-only \
+VisionEgg \
+VisionEgg.Configuration \
+VisionEgg.Core \
+VisionEgg.Daq \
+VisionEgg.DaqLPT \
+VisionEgg.Deprecated \
+VisionEgg.Dots \
+VisionEgg.FlowControl \
+VisionEgg.GUI \
+VisionEgg.Gratings \
+VisionEgg.MoreStimuli \
+VisionEgg.ParameterTypes \
+VisionEgg.PlatformDependent \
+VisionEgg.PyroClient \
+VisionEgg.PyroHelpers \
+VisionEgg.QuickTime \
+VisionEgg.SphereMap \
+VisionEgg.TCPController \
+VisionEgg.Text \
+VisionEgg.Textures \
+VisionEgg.ThreeDeeMath \
+VisionEgg.darwin_getrefresh \
+VisionEgg.darwin_maxpriority \
+VisionEgg.gl_qt \
+VisionEgg.posix_maxpriority \
+VisionEgg.win32_getrefresh \
+VisionEgg.win32_maxpriority
+
+#VisionEgg.GL \
+#VisionEgg.GLTrace \
+
+#VisionEgg.PyroApps \
+#VisionEgg.PyroApps.ColorCalGUI \
+#VisionEgg.PyroApps.ColorCalServer \
+#VisionEgg.PyroApps.EPhysGUI \
+#VisionEgg.PyroApps.EPhysGUIUtils \
+#$PYTHON pydoc.py -w VisionEgg.PyroApps.EPhysServer
+#$PYTHON pydoc.py -w VisionEgg.PyroApps.FlatGratingGUI
+#$PYTHON pydoc.py -w VisionEgg.PyroApps.FlatGratingServer
+#$PYTHON pydoc.py -w VisionEgg.PyroApps.GridGUI
+#$PYTHON pydoc.py -w VisionEgg.PyroApps.GridServer
+#$PYTHON pydoc.py -w VisionEgg.PyroApps.MouseTargetGUI
+#$PYTHON pydoc.py -w VisionEgg.PyroApps.MouseTargetServer
+#$PYTHON pydoc.py -w VisionEgg.PyroApps.ScreenPositionGUI
+#$PYTHON pydoc.py -w VisionEgg.PyroApps.ScreenPositionServer
+#$PYTHON pydoc.py -w VisionEgg.PyroApps.SphereGratingGUI
+#$PYTHON pydoc.py -w VisionEgg.PyroApps.SphereGratingServer
+#$PYTHON pydoc.py -w VisionEgg.PyroApps.SpinningDrumGUI
+#$PYTHON pydoc.py -w VisionEgg.PyroApps.SpinningDrumServer
+#$PYTHON pydoc.py -w VisionEgg.PyroApps.TargetGUI
+#$PYTHON pydoc.py -w VisionEgg.PyroApps.TargetServer
diff --git a/doc/visionegg.pdf b/doc/visionegg.pdf
new file mode 100644
index 0000000..1cd2921
Binary files /dev/null and b/doc/visionegg.pdf differ
diff --git a/doc/visionegg.tex b/doc/visionegg.tex
new file mode 100644
index 0000000..ae95273
--- /dev/null
+++ b/doc/visionegg.tex
@@ -0,0 +1,325 @@
+\documentclass{manual}
+
+\title{The Vision Egg Programmer's Manual}
+
+\author{Andrew Straw}
+
+\date{\today}			% update before release!
+\release{1.2.1}			% software release, not documentation
+\setreleaseinfo{}		% empty for final release
+\setshortversion{1.2.1}		% major.minor only for software
+
+\makeindex                      % tell \index to actually write the
+                                % .idx file
+\makemodindex                   % ... and the module index as well.
+
+\begin{document}
+
+\maketitle
+
+\ifhtml
+\chapter*{Front Matter\label{front}}
+\fi
+
+Copyright \copyright{} 2001-2008 Andrew Straw
+All rights reserved.
+
+\begin{abstract}
+
+\noindent
+The Vision Egg was designed to perform two primary tasks.  The first
+task is the drawing of computer graphics using OpenGL.  The optional
+second task is to handle the flow control of your program to
+coordinate events on your computer in a precisely timed way.
+
+These are challenging tasks, and the Vision Egg does much of the work
+for you. However, to make full use of the Vision Egg, you should
+understand the basics.  This is an overview of the main components of
+the VisionEgg itself.
+
+Note before starting: The Vision Egg is fundamentally object oriented
+in nature, and this document assumes you are familiar with terms such
+as ''class'' and ''instance''.  If you are not, please find some
+information on the topic of object oriented programming.  As you write
+scipts, you will also need to consult the Python, Numeric, pygame, or
+other documentation.
+\end{abstract}
+
+\tableofcontents
+
+\chapter{Coordinating events \label{coordinating events}}
+
+There are several ways to organize the sequence of your experiments
+using the Vision Egg.  You can write your own custom flow control and
+event handling, using the Vision Egg solely for drawing graphics.
+This is often useful in psychophysics experiments where interaction
+with a subject is interleaved with presentation of stimuli.
+
+Alternatively, you can make use of the classes in
+\module{VisionEgg.FlowControl}.  For example, \class{Presentation} is a class
+that maintains an association between the parameters of stimuli and
+their control functions, calls these functions, and initiates drawing
+of the stimuli.  There are several ways to use the
+\class{Presentation} class described below.  This mode of operation is
+useful for electrophysiology experiments.
+
+\section{Custom flow control and event handling}
+
+By writing your own custom flow control code, you have much more
+flexibility in designing experiments, but also less of the work
+involved has been done for you.  Perhaps the best place to start is
+simply to look at some examples.  See the demonstration scripts
+dots_simple_loop.py, mouseTarget_user_loop.py, and multi_stim.py.
+Each of these programs has its own main loop which performs the same
+role as the \class{Presentation} class's \method{go} and
+\method{run_forever} methods, which are described further in this chapter.
+
+\section{Using the Presentation class: Running a single trial}
+
+Most of the Vision Egg demonstration scripts run a single trial and
+then quit. From a programming perspective, this is the easiest way to
+get started. The timing and control of events within a single trial is
+performed by a ``go loop'', which is entered by calling the
+\method{go()} method of the \class{Presentation} class.
+
+A cycle of the go loop consists of updating any relevant stimulus
+parameters, clearing the framebuffer, and calling the stimuli to draw
+themselves.  The buffers are swapped and the cycle begins again,
+usually after waiting for the vertical blanking interval (see the
+section in this manual on double buffering).  When waiting for the
+vertical blanking interval (``sync swap buffers'') is enabled, cycles
+through the ``go loop'' never occur faster than the frame rate.  If
+the go loop is burdened with lots of calculations or if the operating
+system takes the CPU away from the Vision Egg, the cycle through the
+go loop is not completed before the video card begins drawing the next
+frame and therefore a frame is skipped.
+
+A go loop can run indefinitly or have its duration limited to a
+duration measured in seconds or in number of frames drawn.  (Measuring
+duration based on frames drawn is only meaningful when buffer swapping
+is synchronized with the vertical blanking interval and frame skipping
+would be particularly undesirable in this case.)
+
+\section{Using the Presentation class: Continuous operation}
+
+Often, the visual stimulus needs to continue running between trials.
+At a minimum this could be used to keep the display constant and to
+prevent the Vision Egg from quitting, but could also be used to
+maintain a moving pattern on the display between trials.  In addition,
+it may be necessary to trigger a go loop with a minimum of latency
+after the receipt of some signal, such as a digital input on the
+parallel port.
+
+To use the Vision Egg in this manner, the \method{run_forever()}
+method of \class{Presentation} is called, which begins a loop that
+performs the same tasks as a go loop with the exception that functions
+controlling stimulus parameters are informed that it is a ``between go
+loops'' state.  At any point this \method{run_forever} loop can create
+a go loop, which returns control back to the \method{run_forever} loop
+when done.  Alternatively, if the controlling functions for stimulus
+parameters operate between go loops, the entire experiment could be
+run without entering a go loop.  (This could also be acheived by
+starting a go loop with a duration parameter set to ``forever''.)
+
+\chapter{Hierarchy of graphical objects \label{hierarchy}}
+
+Currently, the Vision Egg supports only a single screen (window).
+However, it is designed to run simultaneously in multiple screens, so
+once this capability is available (perhaps in pyglet), the following
+priciples will continue to apply.
+
+Each screen contains a list of least one ``viewport''. A viewport is
+defined to occupy a rectangular region of the screen and define how
+and where objects are drawn. The default viewport created with each
+screen fills the entire screen. In the Vision Egg \class{Viewport}
+class, the screen position and size are specified in addition to the
+projection.  The projection, specified by the \class{Projection}
+class, transforms 3D ``eye coordinates'' into ``clip coordinates''
+according to, for example, an orthographic or perspective projection.
+(Eye coordinates are the 3D coordinates of objects referenced from the
+observers eye in arbitrary units.  Clip coordinates are used to
+compute the final position of the 3D object on the 2D screen.)  The
+default \class{Projection} created with a \class{Viewport} is an
+orthographic projection that maps eye coordinates in a one to one
+manner to pixel coordinates, allowing specification of object position
+in absolute pixels. For more information, consult section 2.11,
+``Coordinate Transformations'' of the OpenGL Specification.
+
+Multiple instances of the \class{Viewport} class may occupy the same
+region of the screen.  This could be used, for example, to overlay
+objects with different projections such as in the targetBackground
+demo.  The order of the list of viewports is important, with the first
+in the list being drawn first and later viewports are drawn on top of
+earlier viewports.
+
+An instance of the \class{Viewport} class keeps an ordered list of the
+objects it draws.  Objects to be drawn on top of other objects should
+be drawn last and therefore placed last in the list.
+
+The objects a viewport drawns are all instances of the
+\class{Stimulus} class. The name ``Stimulus'' is perhaps a slightly
+inaccurate because instances of this class only define how to draw a
+set of graphics primitives. So for example, there are
+\class{SinGrating2D} and \class{TextureStimulus} subclasses of the
+\class{Stimulus} class.
+
+The Vision Egg draws objects in a hierarchical manner.  First, the
+screen(s) calls each of its viewports in turn.  Each viewport calls
+each of its stimuli in turn.  In this way, the occlusion of objects
+can be controlled by drawing order without employing more advanced
+concepts such as depth testing (which is also possible).
+
+\chapter{Controlling stimulus parameters in realtime \label{controllers}}
+
+When using the \class{Presentation} class, you have a powerful method
+of updating parameters in realtime available to you.  ``Controllers''
+are instances of the class \class{Controller}.  A controller is called
+at pre-defined intervals and updates the value of some stimulus
+parameter.  For example, in the ``target'' demo script, the ``center''
+parameter of a \class{Target2D} stimulus is updated on every frame by
+a function which computes position based upon the current time.  You
+can also control parameters without using controllers by simply
+changing the values as your program executes.
+
+Instances of \class{Controller} are called by instances of the
+\class{Presentation} class.  After creating an instance of
+\class{Controller}, it must be ``registered'' by calling the
+\method{add_controller} method of \class{Presentation}, during which
+the stimulus parameter under control is specified.  The
+\class{Presentation} takes care of calling the controller from this
+point. Specifically, the \method{during_go_eval()} is called during a
+\method{go()} loop, and \method{between_go_eval()} is called by
+\method{between_presentations()} (during \method{run_forever()}, for
+example.)  These ``eval'' methods return a value which becomes the
+new value of the parameter being controller.
+
+The frequency with which \method{during_go_eval()} and
+\method{between_go_eval()} are evaluated is determined by the
+\var{eval_frequency} attribute of the controller.  The default
+\var{eval_frequency} is every frame.
+
+The \var{temporal_variables} attribute of the controller specifies
+what temporal variables the ``eval'' methods have available to base
+calculations on.  The default value is TIME_SEC_SINCE_GO, so when
+\method{during_go_eval()} is called, the instance will have an
+attribute \var{time_sec_since_go} set to the time since the onset of
+the \method{go()} loop.
+
+For more information, see the documentation for the \class{Controller}
+and \class{Presentation} classes in the \module{VisionEgg.Core}
+module.
+
+\chapter{Other general information \label{other info}}
+
+\section{Double buffering}
+
+The Vision Egg operates in double buffered mode.  This means that the
+contents of the ``front'' framebuffer are read by the video card to
+produce the on-screen display.  Meanwhile, clearing and drawing
+operations always occur on the back framebuffer, which becomes the
+front buffer on a buffer swap (also called flip).  This way, an
+incomplete frame is never drawn to the screen.  However, if the
+buffers are swapped while the display is only part-way through the
+front buffer, the top and bottom parts of the display will contain
+frames drawn at different times and thus lead to a tearing artifact.
+For this reason the default behavior of the Vision Egg is to
+synchronize buffer swapping with the vertical blanking period,
+ensuring that tearing does not happen.  (Synchronizing buffer swapping
+is not available for some video drivers on the linux platform, and may
+frequently be overriden in the Displays control panel in Windows.)
+
+\section{File layout}
+
+Several directories are created in a Vision Egg installation.  The
+files used when a Python script imports any Vision Egg module are in
+the standard Python ``site-packages'' directory.  Next, the Vision Egg
+system directory contains data files such as sample images used by the
+demo scripts and a site-wide configuration file.  A user-specific
+configuration file is looked for is the VisionEgg home directory.  On
+your system, you can determine the exact location of these directories
+by running the ``check-config.py'' script, which is distributed with
+the Vision Egg.  If you have installed the Vision Egg from source, you
+will also have the source directory.
+
+\section{Priority control}
+
+The Vision Egg can take advantage of operating system dependent
+methods of setting the priority of an application.  The performance
+and features vary from platform to platform.  The options available
+from OS specific system calls are available in the Vision Egg.  Before
+trying something new, do not attempt to increase your script's
+priority, because this may result in locking up the computer.
+
+\section{The log file: Warnings and errors}
+
+The Vision Egg uses the standard Python logging package to log
+information including warnings and errors to two locations by default:
+the standard error stream (as standard for Python scripts) and to a
+file called ``VisionEgg.log'' in the current directory.  The standard
+error stream is typically printed on the console, which may only be
+visible when running your script from the command line.  If your
+script (or modules it imports) raise a
+\exception{SyntaxError}, the Vision Egg will be unable to start and
+therefore unable to copy the exception traceback to the log file, and
+viewing the standard error is the only way to see what went wrong.
+Therefore, if your log file does not display an error but your script
+is not executing, run it from the command line.  Also, on Mac OS X,
+the standard error output is only visible through the Console.app
+available in ``/Applications/Utilities''.
+
+You can increase the verbosity of the output by doing something like
+``VisionEgg.logger.setLevel( VisionEgg.logging.DEBUG )'' in your
+script.
+
+\section{Configuration options}
+
+A number of options that control behavior of the Vision Egg are
+available.  These options are first determined when the
+\module{VisionEgg.Configuration} module is loaded (by the base module
+\module{VisionEgg}, for example).  This module first loads variables
+from the ``VisionEgg.cfg'' file and then checks for environment
+variables that override these values.
+
+The values set by \module{VisionEgg.Configuration} may be overriden at
+any time by re-assigning the appropriate variable.  For example:
+
+\begin{verbatim}
+import VisionEgg
+
+# Turn off GUI window when calling create_default_screen()
+VisionEgg.config.VISIONEGG_GUI_INIT = 0
+\end{verbatim}
+
+\section{For more information}
+
+A significant amount of documentation is contained within the source
+code as ''docstrings'' --- special comments within the code.  These
+docstrings are often the best source of information for a particular
+class or function. In particular, the fundamentally important classes
+in the \module{VisionEgg.Core} module are well documented.  You can
+either browse the source code itself, look at the library reference
+compiled from the source, or use a utility such as PyDoc to compile
+your own reference from the source.
+
+The Vision Egg mailing list is another source of valuble information.
+Sign up and browse the archives through the Vision Egg website.
+
+For installation instructions, the Vision Egg website provides the
+most up-to-date, platform-specific information.
+
+To create your own stimuli you need to know OpenGL.  To learn more
+about OpenGL, you may want to begin with ``The Red Book'' (The OpenGL
+Programming Guide, The Official Guide to Learning).  The OpenGL
+specification is also useful (available online).
+
+% %begin{latexonly}
+% \renewcommand{\indexname}{Module Index}
+% %end{latexonly}
+% \input{modvisionegg.ind}              % Module Index
+
+% %begin{latexonly}
+% \renewcommand{\indexname}{Index}
+% %end{latexonly}
+% \input{visionegg.ind}                 % Index
+
+\end{document}
diff --git a/doc/visionegg/about.html b/doc/visionegg/about.html
new file mode 100644
index 0000000..05f483d
--- /dev/null
+++ b/doc/visionegg/about.html
@@ -0,0 +1,112 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+<head>
+<link rel="STYLESHEET" href="visionegg.css" type='text/css' />
+<link rel='start' href='http://www.visionegg.org/' title='Vision Egg website' />
+<link rel="first" href="visionegg.html" title='The Vision Egg Programmer's Manual' />
+<link rel='contents' href='contents.html' title="Contents" />
+<link rel='last' href='about.html' title='About this document...' />
+<link rel='help' href='about.html' title='About this document...' />
+<link rel="prev" href="node6.html" />
+<link rel="parent" href="visionegg.html" />
+<meta name='aesop' content='information' />
+<title>About this document ...</title>
+</head>
+<body>
+<DIV CLASS="navigation">
+<div id='top-navigation-panel' xml:id='top-navigation-panel'>
+<table align="center" width="100%" cellpadding="0" cellspacing="2">
+<tr>
+<td class='online-navigation'><a rel="prev" title="4. Other general information"
+  href="node6.html"><img src='../images/previous.png'
+border='0' height='32'  alt='Previous Page' width='32' /></A></td>
+<td class='online-navigation'><a rel="parent" title="The Vision Egg Programmer's"
+  href="visionegg.html"><img src='../images/up.png'
+border='0' height='32'  alt='Up One Level' width='32' /></A></td>
+<td class='online-navigation'><img src='../images/next.png'
+  border='0' height='32'  alt='Next Page' width='32' /></td>
+<td align="center" width="100%">The Vision Egg Programmer's Manual</td>
+<td class='online-navigation'><a rel="contents" title="Table of Contents"
+  href="contents.html"><img src='../images/contents.png'
+border='0' height='32'  alt='Contents' width='32' /></A></td>
+<td class='online-navigation'><img src='../images/blank.png'
+  border='0' height='32'  alt='' width='32' /></td>
+<td class='online-navigation'><img src='../images/blank.png'
+  border='0' height='32'  alt='' width='32' /></td>
+</tr></table>
+<div class='online-navigation'>
+<b class="navlabel">Previous:</b>
+<a class="sectref" rel="prev" href="node6.html">4. Other general information</A>
+<b class="navlabel">Up:</b>
+<a class="sectref" rel="parent" href="visionegg.html">The Vision Egg Programmer's</A>
+</div>
+<hr /></div>
+</DIV>
+<!--End of Navigation Panel-->
+
+<H1><A NAME="SECTION007000000000000000000">
+About this document ...</A>
+</H1>
+ <strong>The Vision Egg Programmer's Manual</strong>,
+June 7, 2008, Release 1.1
+<p> This document was generated using the <a
+    href="http://saftsack.fs.uni-bayreuth.de/~latex2ht/">
+    <strong>LaTeX</strong>2<tt>HTML</tt></a> translator.
+</p>
+
+<p> <a
+    href="http://saftsack.fs.uni-bayreuth.de/~latex2ht/">
+    <strong>LaTeX</strong>2<tt>HTML</tt></a> is Copyright ©
+  1993, 1994, 1995, 1996, 1997, <a
+    href="http://cbl.leeds.ac.uk/nikos/personal.html">Nikos
+    Drakos</a>, Computer Based Learning Unit, University of
+  Leeds, and Copyright © 1997, 1998, <a
+    href="http://www.maths.mq.edu.au/~ross/">Ross
+    Moore</a>, Mathematics Department, Macquarie University,
+  Sydney.
+</p>
+
+<p> The application of <a
+    href="http://saftsack.fs.uni-bayreuth.de/~latex2ht/">
+    <strong>LaTeX</strong>2<tt>HTML</tt></a> to the Python
+  documentation has been heavily tailored by Fred L. Drake,
+  Jr.  Original navigation icons were contributed by Christopher
+  Petrilli.
+</p>
+
+<DIV CLASS="navigation">
+<div class='online-navigation'>
+<p></p><hr />
+<table align="center" width="100%" cellpadding="0" cellspacing="2">
+<tr>
+<td class='online-navigation'><a rel="prev" title="4. Other general information"
+  href="node6.html"><img src='../images/previous.png'
+border='0' height='32'  alt='Previous Page' width='32' /></A></td>
+<td class='online-navigation'><a rel="parent" title="The Vision Egg Programmer's"
+  href="visionegg.html"><img src='../images/up.png'
+border='0' height='32'  alt='Up One Level' width='32' /></A></td>
+<td class='online-navigation'><img src='../images/next.png'
+  border='0' height='32'  alt='Next Page' width='32' /></td>
+<td align="center" width="100%">The Vision Egg Programmer's Manual</td>
+<td class='online-navigation'><a rel="contents" title="Table of Contents"
+  href="contents.html"><img src='../images/contents.png'
+border='0' height='32'  alt='Contents' width='32' /></A></td>
+<td class='online-navigation'><img src='../images/blank.png'
+  border='0' height='32'  alt='' width='32' /></td>
+<td class='online-navigation'><img src='../images/blank.png'
+  border='0' height='32'  alt='' width='32' /></td>
+</tr></table>
+<div class='online-navigation'>
+<b class="navlabel">Previous:</b>
+<a class="sectref" rel="prev" href="node6.html">4. Other general information</A>
+<b class="navlabel">Up:</b>
+<a class="sectref" rel="parent" href="visionegg.html">The Vision Egg Programmer's</A>
+</div>
+</div>
+<hr />
+<span class="release-info">Release 1.1, documentation updated on June 7, 2008.</span>
+</DIV>
+<!--End of Navigation Panel-->
+
+</BODY>
+</HTML>
diff --git a/doc/visionegg/contents.html b/doc/visionegg/contents.html
new file mode 100644
index 0000000..627e29c
--- /dev/null
+++ b/doc/visionegg/contents.html
@@ -0,0 +1,113 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+<head>
+<link rel="STYLESHEET" href="visionegg.css" type='text/css' />
+<link rel='start' href='http://www.visionegg.org/' title='Vision Egg website' />
+<link rel="first" href="visionegg.html" title='The Vision Egg Programmer's Manual' />
+<link rel='contents' href='contents.html' title="Contents" />
+<link rel='last' href='about.html' title='About this document...' />
+<link rel='help' href='about.html' title='About this document...' />
+<link rel="next" href="node3.html" />
+<link rel="prev" href="front.html" />
+<link rel="parent" href="visionegg.html" />
+<link rel="next" href="node3.html" />
+<meta name='aesop' content='information' />
+<title>Contents</title>
+</head>
+<body>
+<DIV CLASS="navigation">
+<div id='top-navigation-panel' xml:id='top-navigation-panel'>
+<table align="center" width="100%" cellpadding="0" cellspacing="2">
+<tr>
+<td class='online-navigation'><a rel="prev" title="Front Matter"
+  href="front.html"><img src='../images/previous.png'
+border='0' height='32'  alt='Previous Page' width='32' /></A></td>
+<td class='online-navigation'><a rel="parent" title="The Vision Egg Programmer's"
+  href="visionegg.html"><img src='../images/up.png'
+border='0' height='32'  alt='Up One Level' width='32' /></A></td>
+<td class='online-navigation'><a rel="next" title="1. Coordinating events"
+  href="node3.html"><img src='../images/next.png'
+border='0' height='32'  alt='Next Page' width='32' /></A></td>
+<td align="center" width="100%">The Vision Egg Programmer's Manual</td>
+<td class='online-navigation'><img src='../images/blank.png'
+  border='0' height='32'  alt='' width='32' /></td>
+<td class='online-navigation'><img src='../images/blank.png'
+  border='0' height='32'  alt='' width='32' /></td>
+<td class='online-navigation'><img src='../images/blank.png'
+  border='0' height='32'  alt='' width='32' /></td>
+</tr></table>
+<div class='online-navigation'>
+<b class="navlabel">Previous:</b>
+<a class="sectref" rel="prev" href="front.html">Front Matter</A>
+<b class="navlabel">Up:</b>
+<a class="sectref" rel="parent" href="visionegg.html">The Vision Egg Programmer's</A>
+<b class="navlabel">Next:</b>
+<a class="sectref" rel="next" href="node3.html">1. Coordinating events</A>
+</div>
+<hr /></div>
+</DIV>
+<!--End of Navigation Panel-->
+<BR><h2><A NAME="SECTION002000000000000000000">
+Contents</A>
+</h2>
+<!--Table of Contents-->
+
+<UL CLASS="TofC">
+<LI><A href="node3.html">1. Coordinating events</a>
+<UL>
+<LI><A href="node3.html#SECTION003100000000000000000">1.1 Custom flow control and event handling</a>
+<LI><A href="node3.html#SECTION003200000000000000000">1.2 Using the Presentation class: Running a single trial</a>
+<LI><A href="node3.html#SECTION003300000000000000000">1.3 Using the Presentation class: Continuous operation</a>
+</ul>
+<LI><A href="hierarchy.html">2. Hierarchy of graphical objects</a>
+<LI><A href="controllers.html">3. Controlling stimulus parameters in realtime</a>
+<LI><A href="node6.html">4. Other general information</a>
+<UL>
+<LI><A href="node6.html#SECTION006100000000000000000">4.1 Double buffering</a>
+<LI><A href="node6.html#SECTION006200000000000000000">4.2 File layout</a>
+<LI><A href="node6.html#SECTION006300000000000000000">4.3 Priority control</a>
+<LI><A href="node6.html#SECTION006400000000000000000">4.4 The log file: Warnings and errors</a>
+<LI><A href="node6.html#SECTION006500000000000000000">4.5 Configuration options</a>
+<LI><A href="node6.html#SECTION006600000000000000000">4.6 For more information</a>
+</ul></ul>
+<!--End of Table of Contents-->
+<P>
+
+<DIV CLASS="navigation">
+<div class='online-navigation'>
+<p></p><hr />
+<table align="center" width="100%" cellpadding="0" cellspacing="2">
+<tr>
+<td class='online-navigation'><a rel="prev" title="Front Matter"
+  href="front.html"><img src='../images/previous.png'
+border='0' height='32'  alt='Previous Page' width='32' /></A></td>
+<td class='online-navigation'><a rel="parent" title="The Vision Egg Programmer's"
+  href="visionegg.html"><img src='../images/up.png'
+border='0' height='32'  alt='Up One Level' width='32' /></A></td>
+<td class='online-navigation'><a rel="next" title="1. Coordinating events"
+  href="node3.html"><img src='../images/next.png'
+border='0' height='32'  alt='Next Page' width='32' /></A></td>
+<td align="center" width="100%">The Vision Egg Programmer's Manual</td>
+<td class='online-navigation'><img src='../images/blank.png'
+  border='0' height='32'  alt='' width='32' /></td>
+<td class='online-navigation'><img src='../images/blank.png'
+  border='0' height='32'  alt='' width='32' /></td>
+<td class='online-navigation'><img src='../images/blank.png'
+  border='0' height='32'  alt='' width='32' /></td>
+</tr></table>
+<div class='online-navigation'>
+<b class="navlabel">Previous:</b>
+<a class="sectref" rel="prev" href="front.html">Front Matter</A>
+<b class="navlabel">Up:</b>
+<a class="sectref" rel="parent" href="visionegg.html">The Vision Egg Programmer's</A>
+<b class="navlabel">Next:</b>
+<a class="sectref" rel="next" href="node3.html">1. Coordinating events</A>
+</div>
+</div>
+<hr />
+<span class="release-info">Release 1.1, documentation updated on June 7, 2008.</span>
+</DIV>
+<!--End of Navigation Panel-->
+
+</BODY>
+</HTML>
diff --git a/doc/visionegg/controllers.html b/doc/visionegg/controllers.html
new file mode 100644
index 0000000..2caf362
--- /dev/null
+++ b/doc/visionegg/controllers.html
@@ -0,0 +1,140 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+<head>
+<link rel="STYLESHEET" href="visionegg.css" type='text/css' />
+<link rel='start' href='http://www.visionegg.org/' title='Vision Egg website' />
+<link rel="first" href="visionegg.html" title='The Vision Egg Programmer's Manual' />
+<link rel='contents' href='contents.html' title="Contents" />
+<link rel='last' href='about.html' title='About this document...' />
+<link rel='help' href='about.html' title='About this document...' />
+<link rel="next" href="node6.html" />
+<link rel="prev" href="hierarchy.html" />
+<link rel="parent" href="visionegg.html" />
+<link rel="next" href="node6.html" />
+<meta name='aesop' content='information' />
+<title>3. Controlling stimulus parameters in realtime </title>
+</head>
+<body>
+<DIV CLASS="navigation">
+<div id='top-navigation-panel' xml:id='top-navigation-panel'>
+<table align="center" width="100%" cellpadding="0" cellspacing="2">
+<tr>
+<td class='online-navigation'><a rel="prev" title="2. Hierarchy of graphical"
+  href="hierarchy.html"><img src='../images/previous.png'
+border='0' height='32'  alt='Previous Page' width='32' /></A></td>
+<td class='online-navigation'><a rel="parent" title="The Vision Egg Programmer's"
+  href="visionegg.html"><img src='../images/up.png'
+border='0' height='32'  alt='Up One Level' width='32' /></A></td>
+<td class='online-navigation'><a rel="next" title="4. Other general information"
+  href="node6.html"><img src='../images/next.png'
+border='0' height='32'  alt='Next Page' width='32' /></A></td>
+<td align="center" width="100%">The Vision Egg Programmer's Manual</td>
+<td class='online-navigation'><a rel="contents" title="Table of Contents"
+  href="contents.html"><img src='../images/contents.png'
+border='0' height='32'  alt='Contents' width='32' /></A></td>
+<td class='online-navigation'><img src='../images/blank.png'
+  border='0' height='32'  alt='' width='32' /></td>
+<td class='online-navigation'><img src='../images/blank.png'
+  border='0' height='32'  alt='' width='32' /></td>
+</tr></table>
+<div class='online-navigation'>
+<b class="navlabel">Previous:</b>
+<a class="sectref" rel="prev" href="hierarchy.html">2. Hierarchy of graphical</A>
+<b class="navlabel">Up:</b>
+<a class="sectref" rel="parent" href="visionegg.html">The Vision Egg Programmer's</A>
+<b class="navlabel">Next:</b>
+<a class="sectref" rel="next" href="node6.html">4. Other general information</A>
+</div>
+<hr /></div>
+</DIV>
+<!--End of Navigation Panel-->
+
+<H1><A NAME="SECTION005000000000000000000"></A><A NAME="controllers"></A>
+<BR>
+3. Controlling stimulus parameters in realtime 
+</H1>
+
+<P>
+When using the <tt class="class">Presentation</tt> class, you have a powerful method
+of updating parameters in realtime available to you.  ``Controllers''
+are instances of the class <tt class="class">Controller</tt>.  A controller is called
+at pre-defined intervals and updates the value of some stimulus
+parameter.  For example, in the ``target'' demo script, the ``center''
+parameter of a <tt class="class">Target2D</tt> stimulus is updated on every frame by
+a function which computes position based upon the current time.  You
+can also control parameters without using controllers by simply
+changing the values as your program executes.
+
+<P>
+Instances of <tt class="class">Controller</tt> are called by instances of the
+<tt class="class">Presentation</tt> class.  After creating an instance of
+<tt class="class">Controller</tt>, it must be ``registered'' by calling the
+<tt class="method">add_controller</tt> method of <tt class="class">Presentation</tt>, during which
+the stimulus parameter under control is specified.  The
+<tt class="class">Presentation</tt> takes care of calling the controller from this
+point. Specifically, the <tt class="method">during_go_eval()</tt> is called during a
+<tt class="method">go()</tt> loop, and <tt class="method">between_go_eval()</tt> is called by
+<tt class="method">between_presentations()</tt> (during <tt class="method">run_forever()</tt>, for
+example.)  These ``eval'' methods return a value which becomes the
+new value of the parameter being controller.
+
+<P>
+The frequency with which <tt class="method">during_go_eval()</tt> and
+<tt class="method">between_go_eval()</tt> are evaluated is determined by the
+<var>eval_frequency</var> attribute of the controller.  The default
+<var>eval_frequency</var> is every frame.
+
+<P>
+The <var>temporal_variables</var> attribute of the controller specifies
+what temporal variables the ``eval'' methods have available to base
+calculations on.  The default value is TIME_SEC_SINCE_GO, so when
+<tt class="method">during_go_eval()</tt> is called, the instance will have an
+attribute <var>time_sec_since_go</var> set to the time since the onset of
+the <tt class="method">go()</tt> loop.
+
+<P>
+For more information, see the documentation for the <tt class="class">Controller</tt>
+and <tt class="class">Presentation</tt> classes in the <tt class="module">VisionEgg.Core</tt>
+module.
+
+<P>
+
+<DIV CLASS="navigation">
+<div class='online-navigation'>
+<p></p><hr />
+<table align="center" width="100%" cellpadding="0" cellspacing="2">
+<tr>
+<td class='online-navigation'><a rel="prev" title="2. Hierarchy of graphical"
+  href="hierarchy.html"><img src='../images/previous.png'
+border='0' height='32'  alt='Previous Page' width='32' /></A></td>
+<td class='online-navigation'><a rel="parent" title="The Vision Egg Programmer's"
+  href="visionegg.html"><img src='../images/up.png'
+border='0' height='32'  alt='Up One Level' width='32' /></A></td>
+<td class='online-navigation'><a rel="next" title="4. Other general information"
+  href="node6.html"><img src='../images/next.png'
+border='0' height='32'  alt='Next Page' width='32' /></A></td>
+<td align="center" width="100%">The Vision Egg Programmer's Manual</td>
+<td class='online-navigation'><a rel="contents" title="Table of Contents"
+  href="contents.html"><img src='../images/contents.png'
+border='0' height='32'  alt='Contents' width='32' /></A></td>
+<td class='online-navigation'><img src='../images/blank.png'
+  border='0' height='32'  alt='' width='32' /></td>
+<td class='online-navigation'><img src='../images/blank.png'
+  border='0' height='32'  alt='' width='32' /></td>
+</tr></table>
+<div class='online-navigation'>
+<b class="navlabel">Previous:</b>
+<a class="sectref" rel="prev" href="hierarchy.html">2. Hierarchy of graphical</A>
+<b class="navlabel">Up:</b>
+<a class="sectref" rel="parent" href="visionegg.html">The Vision Egg Programmer's</A>
+<b class="navlabel">Next:</b>
+<a class="sectref" rel="next" href="node6.html">4. Other general information</A>
+</div>
+</div>
+<hr />
+<span class="release-info">Release 1.1, documentation updated on June 7, 2008.</span>
+</DIV>
+<!--End of Navigation Panel-->
+
+</BODY>
+</HTML>
diff --git a/doc/visionegg/front.html b/doc/visionegg/front.html
new file mode 100644
index 0000000..9dfcc44
--- /dev/null
+++ b/doc/visionegg/front.html
@@ -0,0 +1,128 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+<head>
+<link rel="STYLESHEET" href="visionegg.css" type='text/css' />
+<link rel='start' href='http://www.visionegg.org/' title='Vision Egg website' />
+<link rel="first" href="visionegg.html" title='The Vision Egg Programmer's Manual' />
+<link rel='contents' href='contents.html' title="Contents" />
+<link rel='last' href='about.html' title='About this document...' />
+<link rel='help' href='about.html' title='About this document...' />
+<link rel="next" href="contents.html" />
+<link rel="prev" href="visionegg.html" />
+<link rel="parent" href="visionegg.html" />
+<link rel="next" href="contents.html" />
+<meta name='aesop' content='information' />
+<title>Front Matter</title>
+</head>
+<body>
+<DIV CLASS="navigation">
+<div id='top-navigation-panel' xml:id='top-navigation-panel'>
+<table align="center" width="100%" cellpadding="0" cellspacing="2">
+<tr>
+<td class='online-navigation'><a rel="prev" title="The Vision Egg Programmer's"
+  href="visionegg.html"><img src='../images/previous.png'
+border='0' height='32'  alt='Previous Page' width='32' /></A></td>
+<td class='online-navigation'><a rel="parent" title="The Vision Egg Programmer's"
+  href="visionegg.html"><img src='../images/up.png'
+border='0' height='32'  alt='Up One Level' width='32' /></A></td>
+<td class='online-navigation'><a rel="next" title="Contents"
+  href="contents.html"><img src='../images/next.png'
+border='0' height='32'  alt='Next Page' width='32' /></A></td>
+<td align="center" width="100%">The Vision Egg Programmer's Manual</td>
+<td class='online-navigation'><a rel="contents" title="Table of Contents"
+  href="contents.html"><img src='../images/contents.png'
+border='0' height='32'  alt='Contents' width='32' /></A></td>
+<td class='online-navigation'><img src='../images/blank.png'
+  border='0' height='32'  alt='' width='32' /></td>
+<td class='online-navigation'><img src='../images/blank.png'
+  border='0' height='32'  alt='' width='32' /></td>
+</tr></table>
+<div class='online-navigation'>
+<b class="navlabel">Previous:</b>
+<a class="sectref" rel="prev" href="visionegg.html">The Vision Egg Programmer's</A>
+<b class="navlabel">Up:</b>
+<a class="sectref" rel="parent" href="visionegg.html">The Vision Egg Programmer's</A>
+<b class="navlabel">Next:</b>
+<a class="sectref" rel="next" href="contents.html">Contents</A>
+</div>
+<hr /></div>
+</DIV>
+<!--End of Navigation Panel-->
+
+<H1><A NAME="SECTION001000000000000000000"></A><A NAME="front"></A>
+<BR>
+Front Matter
+</H1>
+
+<P>
+Copyright © 2001-2008 Andrew Straw
+All rights reserved.
+
+<P>
+
+<H3>Abstract:</H3>
+<DIV CLASS="ABSTRACT">
+
+<P>
+The Vision Egg was designed to perform two primary tasks.  The first
+task is the drawing of computer graphics using OpenGL.  The optional
+second task is to handle the flow control of your program to
+coordinate events on your computer in a precisely timed way.
+
+<P>
+These are challenging tasks, and the Vision Egg does much of the work
+for you. However, to make full use of the Vision Egg, you should
+understand the basics.  This is an overview of the main components of
+the VisionEgg itself.
+
+<P>
+Note before starting: The Vision Egg is fundamentally object oriented
+in nature, and this document assumes you are familiar with terms such
+as ''class'' and ''instance''.  If you are not, please find some
+information on the topic of object oriented programming.  As you write
+scipts, you will also need to consult the Python, Numeric, pygame, or
+other documentation.
+</DIV>
+<P>
+
+<P>
+
+<DIV CLASS="navigation">
+<div class='online-navigation'>
+<p></p><hr />
+<table align="center" width="100%" cellpadding="0" cellspacing="2">
+<tr>
+<td class='online-navigation'><a rel="prev" title="The Vision Egg Programmer's"
+  href="visionegg.html"><img src='../images/previous.png'
+border='0' height='32'  alt='Previous Page' width='32' /></A></td>
+<td class='online-navigation'><a rel="parent" title="The Vision Egg Programmer's"
+  href="visionegg.html"><img src='../images/up.png'
+border='0' height='32'  alt='Up One Level' width='32' /></A></td>
+<td class='online-navigation'><a rel="next" title="Contents"
+  href="contents.html"><img src='../images/next.png'
+border='0' height='32'  alt='Next Page' width='32' /></A></td>
+<td align="center" width="100%">The Vision Egg Programmer's Manual</td>
+<td class='online-navigation'><a rel="contents" title="Table of Contents"
+  href="contents.html"><img src='../images/contents.png'
+border='0' height='32'  alt='Contents' width='32' /></A></td>
+<td class='online-navigation'><img src='../images/blank.png'
+  border='0' height='32'  alt='' width='32' /></td>
+<td class='online-navigation'><img src='../images/blank.png'
+  border='0' height='32'  alt='' width='32' /></td>
+</tr></table>
+<div class='online-navigation'>
+<b class="navlabel">Previous:</b>
+<a class="sectref" rel="prev" href="visionegg.html">The Vision Egg Programmer's</A>
+<b class="navlabel">Up:</b>
+<a class="sectref" rel="parent" href="visionegg.html">The Vision Egg Programmer's</A>
+<b class="navlabel">Next:</b>
+<a class="sectref" rel="next" href="contents.html">Contents</A>
+</div>
+</div>
+<hr />
+<span class="release-info">Release 1.1, documentation updated on June 7, 2008.</span>
+</DIV>
+<!--End of Navigation Panel-->
+
+</BODY>
+</HTML>
diff --git a/doc/visionegg/hierarchy.html b/doc/visionegg/hierarchy.html
new file mode 100644
index 0000000..09f171f
--- /dev/null
+++ b/doc/visionegg/hierarchy.html
@@ -0,0 +1,149 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+<head>
+<link rel="STYLESHEET" href="visionegg.css" type='text/css' />
+<link rel='start' href='http://www.visionegg.org/' title='Vision Egg website' />
+<link rel="first" href="visionegg.html" title='The Vision Egg Programmer's Manual' />
+<link rel='contents' href='contents.html' title="Contents" />
+<link rel='last' href='about.html' title='About this document...' />
+<link rel='help' href='about.html' title='About this document...' />
+<link rel="next" href="controllers.html" />
+<link rel="prev" href="node3.html" />
+<link rel="parent" href="visionegg.html" />
+<link rel="next" href="controllers.html" />
+<meta name='aesop' content='information' />
+<title>2. Hierarchy of graphical objects </title>
+</head>
+<body>
+<DIV CLASS="navigation">
+<div id='top-navigation-panel' xml:id='top-navigation-panel'>
+<table align="center" width="100%" cellpadding="0" cellspacing="2">
+<tr>
+<td class='online-navigation'><a rel="prev" title="1. Coordinating events"
+  href="node3.html"><img src='../images/previous.png'
+border='0' height='32'  alt='Previous Page' width='32' /></A></td>
+<td class='online-navigation'><a rel="parent" title="The Vision Egg Programmer's"
+  href="visionegg.html"><img src='../images/up.png'
+border='0' height='32'  alt='Up One Level' width='32' /></A></td>
+<td class='online-navigation'><a rel="next" title="3. Controlling stimulus parameters"
+  href="controllers.html"><img src='../images/next.png'
+border='0' height='32'  alt='Next Page' width='32' /></A></td>
+<td align="center" width="100%">The Vision Egg Programmer's Manual</td>
+<td class='online-navigation'><a rel="contents" title="Table of Contents"
+  href="contents.html"><img src='../images/contents.png'
+border='0' height='32'  alt='Contents' width='32' /></A></td>
+<td class='online-navigation'><img src='../images/blank.png'
+  border='0' height='32'  alt='' width='32' /></td>
+<td class='online-navigation'><img src='../images/blank.png'
+  border='0' height='32'  alt='' width='32' /></td>
+</tr></table>
+<div class='online-navigation'>
+<b class="navlabel">Previous:</b>
+<a class="sectref" rel="prev" href="node3.html">1. Coordinating events</A>
+<b class="navlabel">Up:</b>
+<a class="sectref" rel="parent" href="visionegg.html">The Vision Egg Programmer's</A>
+<b class="navlabel">Next:</b>
+<a class="sectref" rel="next" href="controllers.html">3. Controlling stimulus parameters</A>
+</div>
+<hr /></div>
+</DIV>
+<!--End of Navigation Panel-->
+
+<H1><A NAME="SECTION004000000000000000000"></A><A NAME="hierarchy"></A>
+<BR>
+2. Hierarchy of graphical objects 
+</H1>
+
+<P>
+Currently, the Vision Egg supports only a single screen (window).
+However, it is designed to run simultaneously in multiple screens, so
+once this capability is available (perhaps in pyglet), the following
+priciples will continue to apply.
+
+<P>
+Each screen contains a list of least one ``viewport''. A viewport is
+defined to occupy a rectangular region of the screen and define how
+and where objects are drawn. The default viewport created with each
+screen fills the entire screen. In the Vision Egg <tt class="class">Viewport</tt>
+class, the screen position and size are specified in addition to the
+projection.  The projection, specified by the <tt class="class">Projection</tt>
+class, transforms 3D ``eye coordinates'' into ``clip coordinates''
+according to, for example, an orthographic or perspective projection.
+(Eye coordinates are the 3D coordinates of objects referenced from the
+observers eye in arbitrary units.  Clip coordinates are used to
+compute the final position of the 3D object on the 2D screen.)  The
+default <tt class="class">Projection</tt> created with a <tt class="class">Viewport</tt> is an
+orthographic projection that maps eye coordinates in a one to one
+manner to pixel coordinates, allowing specification of object position
+in absolute pixels. For more information, consult section 2.11,
+``Coordinate Transformations'' of the OpenGL Specification.
+
+<P>
+Multiple instances of the <tt class="class">Viewport</tt> class may occupy the same
+region of the screen.  This could be used, for example, to overlay
+objects with different projections such as in the targetBackground
+demo.  The order of the list of viewports is important, with the first
+in the list being drawn first and later viewports are drawn on top of
+earlier viewports.
+
+<P>
+An instance of the <tt class="class">Viewport</tt> class keeps an ordered list of the
+objects it draws.  Objects to be drawn on top of other objects should
+be drawn last and therefore placed last in the list.
+
+<P>
+The objects a viewport drawns are all instances of the
+<tt class="class">Stimulus</tt> class. The name ``Stimulus'' is perhaps a slightly
+inaccurate because instances of this class only define how to draw a
+set of graphics primitives. So for example, there are
+<tt class="class">SinGrating2D</tt> and <tt class="class">TextureStimulus</tt> subclasses of the
+<tt class="class">Stimulus</tt> class.
+
+<P>
+The Vision Egg draws objects in a hierarchical manner.  First, the
+screen(s) calls each of its viewports in turn.  Each viewport calls
+each of its stimuli in turn.  In this way, the occlusion of objects
+can be controlled by drawing order without employing more advanced
+concepts such as depth testing (which is also possible).
+
+<P>
+
+<DIV CLASS="navigation">
+<div class='online-navigation'>
+<p></p><hr />
+<table align="center" width="100%" cellpadding="0" cellspacing="2">
+<tr>
+<td class='online-navigation'><a rel="prev" title="1. Coordinating events"
+  href="node3.html"><img src='../images/previous.png'
+border='0' height='32'  alt='Previous Page' width='32' /></A></td>
+<td class='online-navigation'><a rel="parent" title="The Vision Egg Programmer's"
+  href="visionegg.html"><img src='../images/up.png'
+border='0' height='32'  alt='Up One Level' width='32' /></A></td>
+<td class='online-navigation'><a rel="next" title="3. Controlling stimulus parameters"
+  href="controllers.html"><img src='../images/next.png'
+border='0' height='32'  alt='Next Page' width='32' /></A></td>
+<td align="center" width="100%">The Vision Egg Programmer's Manual</td>
+<td class='online-navigation'><a rel="contents" title="Table of Contents"
+  href="contents.html"><img src='../images/contents.png'
+border='0' height='32'  alt='Contents' width='32' /></A></td>
+<td class='online-navigation'><img src='../images/blank.png'
+  border='0' height='32'  alt='' width='32' /></td>
+<td class='online-navigation'><img src='../images/blank.png'
+  border='0' height='32'  alt='' width='32' /></td>
+</tr></table>
+<div class='online-navigation'>
+<b class="navlabel">Previous:</b>
+<a class="sectref" rel="prev" href="node3.html">1. Coordinating events</A>
+<b class="navlabel">Up:</b>
+<a class="sectref" rel="parent" href="visionegg.html">The Vision Egg Programmer's</A>
+<b class="navlabel">Next:</b>
+<a class="sectref" rel="next" href="controllers.html">3. Controlling stimulus parameters</A>
+</div>
+</div>
+<hr />
+<span class="release-info">Release 1.1, documentation updated on June 7, 2008.</span>
+</DIV>
+<!--End of Navigation Panel-->
+
+</BODY>
+</HTML>
diff --git a/doc/visionegg/index.html b/doc/visionegg/index.html
new file mode 100644
index 0000000..22c67e3
--- /dev/null
+++ b/doc/visionegg/index.html
@@ -0,0 +1,126 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+<head>
+<link rel="STYLESHEET" href="visionegg.css" type='text/css' />
+<link rel='start' href='http://www.visionegg.org/' title='Vision Egg website' />
+<link rel="first" href="visionegg.html" title='The Vision Egg Programmer's Manual' />
+<link rel='contents' href='contents.html' title="Contents" />
+<link rel='last' href='about.html' title='About this document...' />
+<link rel='help' href='about.html' title='About this document...' />
+<link rel="next" href="front.html" />
+<meta name='aesop' content='information' />
+<title>The Vision Egg Programmer's Manual</title>
+</head>
+<body>
+<DIV CLASS="navigation">
+<div id='top-navigation-panel' xml:id='top-navigation-panel'>
+<table align="center" width="100%" cellpadding="0" cellspacing="2">
+<tr>
+<td class='online-navigation'><img src='../images/previous.png'
+  border='0' height='32'  alt='Previous Page' width='32' /></td>
+<td class='online-navigation'><a rel="parent" title="Vision Egg website"
+  href="http://www.visionegg.org/"><img src='../images/up.png'
+border='0' height='32'  alt='Up One Level' width='32' /></A></td>
+<td class='online-navigation'><a rel="next" title="Front Matter"
+  href="front.html"><img src='../images/next.png'
+border='0' height='32'  alt='Next Page' width='32' /></A></td>
+<td align="center" width="100%">The Vision Egg Programmer's Manual</td>
+<td class='online-navigation'><a rel="contents" title="Table of Contents"
+  href="contents.html"><img src='../images/contents.png'
+border='0' height='32'  alt='Contents' width='32' /></A></td>
+<td class='online-navigation'><img src='../images/blank.png'
+  border='0' height='32'  alt='' width='32' /></td>
+<td class='online-navigation'><img src='../images/blank.png'
+  border='0' height='32'  alt='' width='32' /></td>
+</tr></table>
+<div class='online-navigation'>
+<b class="navlabel">Up:</b>
+<a class="sectref" rel="parent" href="http://www.visionegg.org/">Vision Egg website</A>
+<b class="navlabel">Next:</b>
+<a class="sectref" rel="next" href="front.html">Front Matter</A>
+</div>
+<hr /></div>
+</DIV>
+<!--End of Navigation Panel-->
+<P>
+
+<link rel='up' href='http://www.visionegg.org/' title='Vision Egg website' />
+<div class="titlepage">
+<div class='center'>
+<h1>The Vision Egg Programmer's Manual</h1>
+<p><b><font size="+2">Andrew Straw</font></b></p>
+<p><strong>Release 1.1</strong><br />
+<strong>June 7, 2008</strong></p>
+<p></p>
+</div>
+</div>
+
+<P>
+
+<p><br /></p><hr class='online-navigation' />
+
+<div class='online-navigation'>
+<!--Table of Child-Links-->
+<A NAME="CHILD_LINKS"></a>
+
+<UL CLASS="ChildLinks">
+<LI><A href="front.html">Front Matter</a>
+<LI><A href="contents.html">Contents</a>
+<LI><A href="node3.html">1. Coordinating events</a>
+<UL>
+<LI><A href="node3.html#SECTION003100000000000000000">1.1 Custom flow control and event handling</a>
+<LI><A href="node3.html#SECTION003200000000000000000">1.2 Using the Presentation class: Running a single trial</a>
+<LI><A href="node3.html#SECTION003300000000000000000">1.3 Using the Presentation class: Continuous operation</a>
+</ul>
+<LI><A href="hierarchy.html">2. Hierarchy of graphical objects</a>
+<LI><A href="controllers.html">3. Controlling stimulus parameters in realtime</a>
+<LI><A href="node6.html">4. Other general information</a>
+<UL>
+<LI><A href="node6.html#SECTION006100000000000000000">4.1 Double buffering</a>
+<LI><A href="node6.html#SECTION006200000000000000000">4.2 File layout</a>
+<LI><A href="node6.html#SECTION006300000000000000000">4.3 Priority control</a>
+<LI><A href="node6.html#SECTION006400000000000000000">4.4 The log file: Warnings and errors</a>
+<LI><A href="node6.html#SECTION006500000000000000000">4.5 Configuration options</a>
+<LI><A href="node6.html#SECTION006600000000000000000">4.6 For more information</a>
+</ul>
+<LI><A href="about.html">About this document ...</a>
+</ul>
+<!--End of Table of Child-Links-->
+</div>
+
+<DIV CLASS="navigation">
+<div class='online-navigation'>
+<p></p><hr />
+<table align="center" width="100%" cellpadding="0" cellspacing="2">
+<tr>
+<td class='online-navigation'><img src='../images/previous.png'
+  border='0' height='32'  alt='Previous Page' width='32' /></td>
+<td class='online-navigation'><a rel="parent" title="Vision Egg website"
+  href="http://www.visionegg.org/"><img src='../images/up.png'
+border='0' height='32'  alt='Up One Level' width='32' /></A></td>
+<td class='online-navigation'><a rel="next" title="Front Matter"
+  href="front.html"><img src='../images/next.png'
+border='0' height='32'  alt='Next Page' width='32' /></A></td>
+<td align="center" width="100%">The Vision Egg Programmer's Manual</td>
+<td class='online-navigation'><a rel="contents" title="Table of Contents"
+  href="contents.html"><img src='../images/contents.png'
+border='0' height='32'  alt='Contents' width='32' /></A></td>
+<td class='online-navigation'><img src='../images/blank.png'
+  border='0' height='32'  alt='' width='32' /></td>
+<td class='online-navigation'><img src='../images/blank.png'
+  border='0' height='32'  alt='' width='32' /></td>
+</tr></table>
+<div class='online-navigation'>
+<b class="navlabel">Up:</b>
+<a class="sectref" rel="parent" href="http://www.visionegg.org/">Vision Egg website</A>
+<b class="navlabel">Next:</b>
+<a class="sectref" rel="next" href="front.html">Front Matter</A>
+</div>
+</div>
+<hr />
+<span class="release-info">Release 1.1, documentation updated on June 7, 2008.</span>
+</DIV>
+<!--End of Navigation Panel-->
+
+</BODY>
+</HTML>
diff --git a/doc/visionegg/node3.html b/doc/visionegg/node3.html
new file mode 100644
index 0000000..e64cbb7
--- /dev/null
+++ b/doc/visionegg/node3.html
@@ -0,0 +1,201 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+<head>
+<link rel="STYLESHEET" href="visionegg.css" type='text/css' />
+<link rel='start' href='http://www.visionegg.org/' title='Vision Egg website' />
+<link rel="first" href="visionegg.html" title='The Vision Egg Programmer's Manual' />
+<link rel='contents' href='contents.html' title="Contents" />
+<link rel='last' href='about.html' title='About this document...' />
+<link rel='help' href='about.html' title='About this document...' />
+<link rel="next" href="hierarchy.html" />
+<link rel="prev" href="contents.html" />
+<link rel="parent" href="visionegg.html" />
+<link rel="next" href="hierarchy.html" />
+<meta name='aesop' content='information' />
+<title>1. Coordinating events </title>
+</head>
+<body>
+<DIV CLASS="navigation">
+<div id='top-navigation-panel' xml:id='top-navigation-panel'>
+<table align="center" width="100%" cellpadding="0" cellspacing="2">
+<tr>
+<td class='online-navigation'><a rel="prev" title="Contents"
+  href="contents.html"><img src='../images/previous.png'
+border='0' height='32'  alt='Previous Page' width='32' /></A></td>
+<td class='online-navigation'><a rel="parent" title="The Vision Egg Programmer's"
+  href="visionegg.html"><img src='../images/up.png'
+border='0' height='32'  alt='Up One Level' width='32' /></A></td>
+<td class='online-navigation'><a rel="next" title="2. Hierarchy of graphical"
+  href="hierarchy.html"><img src='../images/next.png'
+border='0' height='32'  alt='Next Page' width='32' /></A></td>
+<td align="center" width="100%">The Vision Egg Programmer's Manual</td>
+<td class='online-navigation'><a rel="contents" title="Table of Contents"
+  href="contents.html"><img src='../images/contents.png'
+border='0' height='32'  alt='Contents' width='32' /></A></td>
+<td class='online-navigation'><img src='../images/blank.png'
+  border='0' height='32'  alt='' width='32' /></td>
+<td class='online-navigation'><img src='../images/blank.png'
+  border='0' height='32'  alt='' width='32' /></td>
+</tr></table>
+<div class='online-navigation'>
+<b class="navlabel">Previous:</b>
+<a class="sectref" rel="prev" href="contents.html">Contents</A>
+<b class="navlabel">Up:</b>
+<a class="sectref" rel="parent" href="visionegg.html">The Vision Egg Programmer's</A>
+<b class="navlabel">Next:</b>
+<a class="sectref" rel="next" href="hierarchy.html">2. Hierarchy of graphical</A>
+</div>
+<hr /></div>
+</DIV>
+<!--End of Navigation Panel-->
+<div class='online-navigation'>
+<!--Table of Child-Links-->
+<A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></a>
+
+<UL CLASS="ChildLinks">
+<LI><A href="node3.html#SECTION003100000000000000000">1.1 Custom flow control and event handling</a>
+<LI><A href="node3.html#SECTION003200000000000000000">1.2 Using the Presentation class: Running a single trial</a>
+<LI><A href="node3.html#SECTION003300000000000000000">1.3 Using the Presentation class: Continuous operation</a>
+</ul>
+<!--End of Table of Child-Links-->
+</div>
+<HR>
+
+<H1><A NAME="SECTION003000000000000000000"></A><A NAME="coordinating_events"></A>
+<BR>
+1. Coordinating events 
+</H1>
+
+<P>
+There are several ways to organize the sequence of your experiments
+using the Vision Egg.  You can write your own custom flow control and
+event handling, using the Vision Egg solely for drawing graphics.
+This is often useful in psychophysics experiments where interaction
+with a subject is interleaved with presentation of stimuli.
+
+<P>
+Alternatively, you can make use of the classes in
+<tt class="module">VisionEgg.FlowControl</tt>.  For example, <tt class="class">Presentation</tt> is a class
+that maintains an association between the parameters of stimuli and
+their control functions, calls these functions, and initiates drawing
+of the stimuli.  There are several ways to use the
+<tt class="class">Presentation</tt> class described below.  This mode of operation is
+useful for electrophysiology experiments.
+
+<P>
+
+<H1><A NAME="SECTION003100000000000000000">
+1.1 Custom flow control and event handling</A>
+</H1>
+
+<P>
+By writing your own custom flow control code, you have much more
+flexibility in designing experiments, but also less of the work
+involved has been done for you.  Perhaps the best place to start is
+simply to look at some examples.  See the demonstration scripts
+dots_simple_loop.py, mouseTarget_user_loop.py, and multi_stim.py.
+Each of these programs has its own main loop which performs the same
+role as the <tt class="class">Presentation</tt> class's <tt class="method">go</tt> and
+<tt class="method">run_forever</tt> methods, which are described further in this chapter.
+
+<P>
+
+<H1><A NAME="SECTION003200000000000000000">
+1.2 Using the Presentation class: Running a single trial</A>
+</H1>
+
+<P>
+Most of the Vision Egg demonstration scripts run a single trial and
+then quit. From a programming perspective, this is the easiest way to
+get started. The timing and control of events within a single trial is
+performed by a ``go loop'', which is entered by calling the
+<tt class="method">go()</tt> method of the <tt class="class">Presentation</tt> class.
+
+<P>
+A cycle of the go loop consists of updating any relevant stimulus
+parameters, clearing the framebuffer, and calling the stimuli to draw
+themselves.  The buffers are swapped and the cycle begins again,
+usually after waiting for the vertical blanking interval (see the
+section in this manual on double buffering).  When waiting for the
+vertical blanking interval (``sync swap buffers'') is enabled, cycles
+through the ``go loop'' never occur faster than the frame rate.  If
+the go loop is burdened with lots of calculations or if the operating
+system takes the CPU away from the Vision Egg, the cycle through the
+go loop is not completed before the video card begins drawing the next
+frame and therefore a frame is skipped.
+
+<P>
+A go loop can run indefinitly or have its duration limited to a
+duration measured in seconds or in number of frames drawn.  (Measuring
+duration based on frames drawn is only meaningful when buffer swapping
+is synchronized with the vertical blanking interval and frame skipping
+would be particularly undesirable in this case.)
+
+<P>
+
+<H1><A NAME="SECTION003300000000000000000">
+1.3 Using the Presentation class: Continuous operation</A>
+</H1>
+
+<P>
+Often, the visual stimulus needs to continue running between trials.
+At a minimum this could be used to keep the display constant and to
+prevent the Vision Egg from quitting, but could also be used to
+maintain a moving pattern on the display between trials.  In addition,
+it may be necessary to trigger a go loop with a minimum of latency
+after the receipt of some signal, such as a digital input on the
+parallel port.
+
+<P>
+To use the Vision Egg in this manner, the <tt class="method">run_forever()</tt>
+method of <tt class="class">Presentation</tt> is called, which begins a loop that
+performs the same tasks as a go loop with the exception that functions
+controlling stimulus parameters are informed that it is a ``between go
+loops'' state.  At any point this <tt class="method">run_forever</tt> loop can create
+a go loop, which returns control back to the <tt class="method">run_forever</tt> loop
+when done.  Alternatively, if the controlling functions for stimulus
+parameters operate between go loops, the entire experiment could be
+run without entering a go loop.  (This could also be acheived by
+starting a go loop with a duration parameter set to ``forever''.)
+
+<P>
+
+<DIV CLASS="navigation">
+<div class='online-navigation'>
+<p></p><hr />
+<table align="center" width="100%" cellpadding="0" cellspacing="2">
+<tr>
+<td class='online-navigation'><a rel="prev" title="Contents"
+  href="contents.html"><img src='../images/previous.png'
+border='0' height='32'  alt='Previous Page' width='32' /></A></td>
+<td class='online-navigation'><a rel="parent" title="The Vision Egg Programmer's"
+  href="visionegg.html"><img src='../images/up.png'
+border='0' height='32'  alt='Up One Level' width='32' /></A></td>
+<td class='online-navigation'><a rel="next" title="2. Hierarchy of graphical"
+  href="hierarchy.html"><img src='../images/next.png'
+border='0' height='32'  alt='Next Page' width='32' /></A></td>
+<td align="center" width="100%">The Vision Egg Programmer's Manual</td>
+<td class='online-navigation'><a rel="contents" title="Table of Contents"
+  href="contents.html"><img src='../images/contents.png'
+border='0' height='32'  alt='Contents' width='32' /></A></td>
+<td class='online-navigation'><img src='../images/blank.png'
+  border='0' height='32'  alt='' width='32' /></td>
+<td class='online-navigation'><img src='../images/blank.png'
+  border='0' height='32'  alt='' width='32' /></td>
+</tr></table>
+<div class='online-navigation'>
+<b class="navlabel">Previous:</b>
+<a class="sectref" rel="prev" href="contents.html">Contents</A>
+<b class="navlabel">Up:</b>
+<a class="sectref" rel="parent" href="visionegg.html">The Vision Egg Programmer's</A>
+<b class="navlabel">Next:</b>
+<a class="sectref" rel="next" href="hierarchy.html">2. Hierarchy of graphical</A>
+</div>
+</div>
+<hr />
+<span class="release-info">Release 1.1, documentation updated on June 7, 2008.</span>
+</DIV>
+<!--End of Navigation Panel-->
+
+</BODY>
+</HTML>
diff --git a/doc/visionegg/node6.html b/doc/visionegg/node6.html
new file mode 100644
index 0000000..e60bcbc
--- /dev/null
+++ b/doc/visionegg/node6.html
@@ -0,0 +1,249 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+<head>
+<link rel="STYLESHEET" href="visionegg.css" type='text/css' />
+<link rel='start' href='http://www.visionegg.org/' title='Vision Egg website' />
+<link rel="first" href="visionegg.html" title='The Vision Egg Programmer's Manual' />
+<link rel='contents' href='contents.html' title="Contents" />
+<link rel='last' href='about.html' title='About this document...' />
+<link rel='help' href='about.html' title='About this document...' />
+<link rel="next" href="about.html" />
+<link rel="prev" href="controllers.html" />
+<link rel="parent" href="visionegg.html" />
+<link rel="next" href="about.html" />
+<meta name='aesop' content='information' />
+<title>4. Other general information </title>
+</head>
+<body>
+<DIV CLASS="navigation">
+<div id='top-navigation-panel' xml:id='top-navigation-panel'>
+<table align="center" width="100%" cellpadding="0" cellspacing="2">
+<tr>
+<td class='online-navigation'><a rel="prev" title="3. Controlling stimulus parameters"
+  href="controllers.html"><img src='../images/previous.png'
+border='0' height='32'  alt='Previous Page' width='32' /></A></td>
+<td class='online-navigation'><a rel="parent" title="The Vision Egg Programmer's"
+  href="visionegg.html"><img src='../images/up.png'
+border='0' height='32'  alt='Up One Level' width='32' /></A></td>
+<td class='online-navigation'><a rel="next" title="About this document ..."
+  href="about.html"><img src='../images/next.png'
+border='0' height='32'  alt='Next Page' width='32' /></A></td>
+<td align="center" width="100%">The Vision Egg Programmer's Manual</td>
+<td class='online-navigation'><a rel="contents" title="Table of Contents"
+  href="contents.html"><img src='../images/contents.png'
+border='0' height='32'  alt='Contents' width='32' /></A></td>
+<td class='online-navigation'><img src='../images/blank.png'
+  border='0' height='32'  alt='' width='32' /></td>
+<td class='online-navigation'><img src='../images/blank.png'
+  border='0' height='32'  alt='' width='32' /></td>
+</tr></table>
+<div class='online-navigation'>
+<b class="navlabel">Previous:</b>
+<a class="sectref" rel="prev" href="controllers.html">3. Controlling stimulus parameters</A>
+<b class="navlabel">Up:</b>
+<a class="sectref" rel="parent" href="visionegg.html">The Vision Egg Programmer's</A>
+<b class="navlabel">Next:</b>
+<a class="sectref" rel="next" href="about.html">About this document ...</A>
+</div>
+<hr /></div>
+</DIV>
+<!--End of Navigation Panel-->
+<div class='online-navigation'>
+<!--Table of Child-Links-->
+<A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></a>
+
+<UL CLASS="ChildLinks">
+<LI><A href="node6.html#SECTION006100000000000000000">4.1 Double buffering</a>
+<LI><A href="node6.html#SECTION006200000000000000000">4.2 File layout</a>
+<LI><A href="node6.html#SECTION006300000000000000000">4.3 Priority control</a>
+<LI><A href="node6.html#SECTION006400000000000000000">4.4 The log file: Warnings and errors</a>
+<LI><A href="node6.html#SECTION006500000000000000000">4.5 Configuration options</a>
+<LI><A href="node6.html#SECTION006600000000000000000">4.6 For more information</a>
+</ul>
+<!--End of Table of Child-Links-->
+</div>
+<HR>
+
+<H1><A NAME="SECTION006000000000000000000"></A><A NAME="other_info"></A>
+<BR>
+4. Other general information 
+</H1>
+
+<P>
+
+<H1><A NAME="SECTION006100000000000000000">
+4.1 Double buffering</A>
+</H1>
+
+<P>
+The Vision Egg operates in double buffered mode.  This means that the
+contents of the ``front'' framebuffer are read by the video card to
+produce the on-screen display.  Meanwhile, clearing and drawing
+operations always occur on the back framebuffer, which becomes the
+front buffer on a buffer swap (also called flip).  This way, an
+incomplete frame is never drawn to the screen.  However, if the
+buffers are swapped while the display is only part-way through the
+front buffer, the top and bottom parts of the display will contain
+frames drawn at different times and thus lead to a tearing artifact.
+For this reason the default behavior of the Vision Egg is to
+synchronize buffer swapping with the vertical blanking period,
+ensuring that tearing does not happen.  (Synchronizing buffer swapping
+is not available for some video drivers on the linux platform, and may
+frequently be overriden in the Displays control panel in Windows.)
+
+<P>
+
+<H1><A NAME="SECTION006200000000000000000">
+4.2 File layout</A>
+</H1>
+
+<P>
+Several directories are created in a Vision Egg installation.  The
+files used when a Python script imports any Vision Egg module are in
+the standard Python ``site-packages'' directory.  Next, the Vision Egg
+system directory contains data files such as sample images used by the
+demo scripts and a site-wide configuration file.  A user-specific
+configuration file is looked for is the VisionEgg home directory.  On
+your system, you can determine the exact location of these directories
+by running the ``check-config.py'' script, which is distributed with
+the Vision Egg.  If you have installed the Vision Egg from source, you
+will also have the source directory.
+
+<P>
+
+<H1><A NAME="SECTION006300000000000000000">
+4.3 Priority control</A>
+</H1>
+
+<P>
+The Vision Egg can take advantage of operating system dependent
+methods of setting the priority of an application.  The performance
+and features vary from platform to platform.  The options available
+from OS specific system calls are available in the Vision Egg.  Before
+trying something new, do not attempt to increase your script's
+priority, because this may result in locking up the computer.
+
+<P>
+
+<H1><A NAME="SECTION006400000000000000000">
+4.4 The log file: Warnings and errors</A>
+</H1>
+
+<P>
+The Vision Egg uses the standard Python logging package to log
+information including warnings and errors to two locations by default:
+the standard error stream (as standard for Python scripts) and to a
+file called ``VisionEgg.log'' in the current directory.  The standard
+error stream is typically printed on the console, which may only be
+visible when running your script from the command line.  If your
+script (or modules it imports) raise a
+<tt class="exception">SyntaxError</tt>, the Vision Egg will be unable to start and
+therefore unable to copy the exception traceback to the log file, and
+viewing the standard error is the only way to see what went wrong.
+Therefore, if your log file does not display an error but your script
+is not executing, run it from the command line.  Also, on Mac OS X,
+the standard error output is only visible through the Console.app
+available in ``/Applications/Utilities''.
+
+<P>
+You can increase the verbosity of the output by doing something like
+``VisionEgg.logger.setLevel( VisionEgg.logging.DEBUG )'' in your
+script.
+
+<P>
+
+<H1><A NAME="SECTION006500000000000000000">
+4.5 Configuration options</A>
+</H1>
+
+<P>
+A number of options that control behavior of the Vision Egg are
+available.  These options are first determined when the
+<tt class="module">VisionEgg.Configuration</tt> module is loaded (by the base module
+<tt class="module">VisionEgg</tt>, for example).  This module first loads variables
+from the ``VisionEgg.cfg'' file and then checks for environment
+variables that override these values.
+
+<P>
+The values set by <tt class="module">VisionEgg.Configuration</tt> may be overriden at
+any time by re-assigning the appropriate variable.  For example:
+
+<P>
+<div class="verbatim"><pre>
+import VisionEgg
+
+# Turn off GUI window when calling create_default_screen()
+VisionEgg.config.VISIONEGG_GUI_INIT = 0
+</pre></div>
+
+<P>
+
+<H1><A NAME="SECTION006600000000000000000">
+4.6 For more information</A>
+</H1>
+
+<P>
+A significant amount of documentation is contained within the source
+code as ''docstrings'' -- special comments within the code.  These
+docstrings are often the best source of information for a particular
+class or function. In particular, the fundamentally important classes
+in the <tt class="module">VisionEgg.Core</tt> module are well documented.  You can
+either browse the source code itself, look at the library reference
+compiled from the source, or use a utility such as PyDoc to compile
+your own reference from the source.
+
+<P>
+The Vision Egg mailing list is another source of valuble information.
+Sign up and browse the archives through the Vision Egg website.
+
+<P>
+For installation instructions, the Vision Egg website provides the
+most up-to-date, platform-specific information.
+
+<P>
+To create your own stimuli you need to know OpenGL.  To learn more
+about OpenGL, you may want to begin with ``The Red Book'' (The OpenGL
+Programming Guide, The Official Guide to Learning).  The OpenGL
+specification is also useful (available online).
+
+<P>
+
+<DIV CLASS="navigation">
+<div class='online-navigation'>
+<p></p><hr />
+<table align="center" width="100%" cellpadding="0" cellspacing="2">
+<tr>
+<td class='online-navigation'><a rel="prev" title="3. Controlling stimulus parameters"
+  href="controllers.html"><img src='../images/previous.png'
+border='0' height='32'  alt='Previous Page' width='32' /></A></td>
+<td class='online-navigation'><a rel="parent" title="The Vision Egg Programmer's"
+  href="visionegg.html"><img src='../images/up.png'
+border='0' height='32'  alt='Up One Level' width='32' /></A></td>
+<td class='online-navigation'><a rel="next" title="About this document ..."
+  href="about.html"><img src='../images/next.png'
+border='0' height='32'  alt='Next Page' width='32' /></A></td>
+<td align="center" width="100%">The Vision Egg Programmer's Manual</td>
+<td class='online-navigation'><a rel="contents" title="Table of Contents"
+  href="contents.html"><img src='../images/contents.png'
+border='0' height='32'  alt='Contents' width='32' /></A></td>
+<td class='online-navigation'><img src='../images/blank.png'
+  border='0' height='32'  alt='' width='32' /></td>
+<td class='online-navigation'><img src='../images/blank.png'
+  border='0' height='32'  alt='' width='32' /></td>
+</tr></table>
+<div class='online-navigation'>
+<b class="navlabel">Previous:</b>
+<a class="sectref" rel="prev" href="controllers.html">3. Controlling stimulus parameters</A>
+<b class="navlabel">Up:</b>
+<a class="sectref" rel="parent" href="visionegg.html">The Vision Egg Programmer's</A>
+<b class="navlabel">Next:</b>
+<a class="sectref" rel="next" href="about.html">About this document ...</A>
+</div>
+</div>
+<hr />
+<span class="release-info">Release 1.1, documentation updated on June 7, 2008.</span>
+</DIV>
+<!--End of Navigation Panel-->
+
+</BODY>
+</HTML>
diff --git a/doc/visionegg/visionegg.css b/doc/visionegg/visionegg.css
new file mode 100644
index 0000000..06a613c
--- /dev/null
+++ b/doc/visionegg/visionegg.css
@@ -0,0 +1,243 @@
+/*
+ * The first part of this is the standard CSS generated by LaTeX2HTML,
+ * with the "empty" declarations removed.
+ */
+
+/* Century Schoolbook font is very similar to Computer Modern Math: cmmi */
+.math                   { font-family: "Century Schoolbook", serif; }
+.math i                 { font-family: "Century Schoolbook", serif;
+                          font-weight: bold }
+.boldmath               { font-family: "Century Schoolbook", serif;
+                          font-weight: bold }
+
+/*
+ * Implement both fixed-size and relative sizes.
+ *
+ * I think these can be safely removed, as it doesn't appear that
+ * LaTeX2HTML ever generates these, even though these are carried
+ * over from the LaTeX2HTML stylesheet.
+ */
+small.xtiny             { font-size : xx-small; }
+small.tiny              { font-size : x-small; }
+small.scriptsize        { font-size : smaller; }
+small.footnotesize      { font-size : small; }
+big.xlarge              { font-size : large; }
+big.xxlarge             { font-size : x-large; }
+big.huge                { font-size : larger; }
+big.xhuge               { font-size : xx-large; }
+
+/*
+ * Document-specific styles come next;
+ * these are added for the Python documentation.
+ *
+ * Note that the size specifications for the H* elements are because
+ * Netscape on Solaris otherwise doesn't get it right; they all end up
+ * the normal text size.
+ */
+
+body                    { color: #000000;
+                          background-color: #ffffff; }
+
+a:link:active           { color: #ff0000; }
+a:link:hover            { background-color: #bbeeff; }
+a:visited:hover         { background-color: #bbeeff; }
+a:visited               { color: #551a8b; }
+a:link                  { color: #0000bb; }
+
+h1, h2, h3, h4, h5, h6  { font-family: avantgarde, sans-serif;
+                          font-weight: bold; }
+h1                      { font-size: 180%; }
+h2                      { font-size: 150%; }
+h3, h4                  { font-size: 120%; }
+
+/* These are section titles used in navigation links, so make sure we
+ * match the section header font here, even it not the weight.
+ */
+.sectref                { font-family: avantgarde, sans-serif; }
+/* And the label before the titles in navigation: */
+.navlabel               { font-size: 85%; }
+
+
+/* LaTeX2HTML insists on inserting <br> elements into headers which
+ * are marked with \label.  This little bit of CSS magic ensures that
+ * these elements don't cause spurious whitespace to be added.
+ */
+h1>br, h2>br, h3>br,
+h4>br, h5>br, h6>br     { display: none; }
+
+code, tt                { font-family: "lucida typewriter", lucidatypewriter,
+                                       monospace; }
+var                     { font-family: times, serif;
+                          font-style: italic;
+                          font-weight: normal; }
+
+.Unix                   { font-variant: small-caps; }
+
+.typelabel              { font-family: lucida, sans-serif; }
+
+.navigation td          { background-color: #99ccff;
+                          font-weight: bold;
+                          font-family: avantgarde, sans-serif;
+                          font-size: 110%; }
+
+div.warning             { background-color: #fffaf0;
+                          border: thin solid black;
+                          padding: 1em;
+                          margin-left: 2em;
+                          margin-right: 2em; }
+
+div.warning .label      { font-family: sans-serif;
+                          font-size: 110%;
+                          margin-right: 0.5em; }
+
+div.note                { background-color: #fffaf0;
+                          border: thin solid black;
+                          padding: 1em;
+                          margin-left: 2em;
+                          margin-right: 2em; }
+
+div.note .label         { margin-right: 0.5em;
+                          font-family: sans-serif; }
+
+address                 { font-size: 80%; }
+.release-info           { font-style: italic;
+                          font-size: 80%; }
+
+.titlegraphic           { vertical-align: top; }
+
+.verbatim pre           { color: #00008b;
+                          font-family: "lucida typewriter", lucidatypewriter,
+                                       monospace;
+                          font-size: 90%; }
+.verbatim               { margin-left: 2em; }
+.verbatim .footer       { padding: 0.05in;
+                          font-size: 85%;
+                          background-color: #99ccff;
+                          margin-right: 0.5in; }
+
+.grammar                { background-color: #99ccff;
+                          margin-right: 0.5in;
+                          padding: 0.05in; }
+.grammar-footer         { padding: 0.05in;
+                          font-size: 85%; }
+.grammartoken           { font-family: "lucida typewriter", lucidatypewriter,
+                                       monospace; }
+
+.productions                  { background-color: #bbeeff; }
+.productions a:active         { color: #ff0000; }
+.productions a:link:hover     { background-color: #99ccff; }
+.productions a:visited:hover  { background-color: #99ccff; }
+.productions a:visited        { color: #551a8b; }
+.productions a:link           { color: #0000bb; }
+.productions table            { vertical-align: baseline;
+                                empty-cells: show; }
+.productions > table td,
+.productions > table th       { padding: 2px; }
+.productions > table td:first-child,
+.productions > table td:last-child {
+                                font-family: "lucida typewriter",
+                                             lucidatypewriter,
+                                             monospace;
+                                }
+/* same as the second selector above, but expressed differently for Opera */
+.productions > table td:first-child + td + td {
+                                font-family: "lucida typewriter",
+                                             lucidatypewriter,
+                                             monospace;
+                                vertical-align: baseline;
+                                }
+.productions > table td:first-child + td {
+                                padding-left: 1em;
+                                padding-right: 1em;
+                                }
+.productions > table tr       { vertical-align: baseline; }
+
+.email                  { font-family: avantgarde, sans-serif; }
+.mailheader             { font-family: avantgarde, sans-serif; }
+.mimetype               { font-family: avantgarde, sans-serif; }
+.newsgroup              { font-family: avantgarde, sans-serif; }
+.url                    { font-family: avantgarde, sans-serif; }
+.file                   { font-family: avantgarde, sans-serif; }
+.guilabel               { font-family: avantgarde, sans-serif; }
+
+.realtable              { border-collapse: collapse;
+                          border-color: black;
+                          border-style: solid;
+                          border-width: 0px 0px 2px 0px;
+                          empty-cells: show;
+                          margin-left: auto;
+                          margin-right: auto;
+                          padding-left: 0.4em;
+                          padding-right: 0.4em;
+                          }
+.realtable tbody        { vertical-align: baseline; }
+.realtable tfoot        { display: table-footer-group; }
+.realtable thead        { background-color: #99ccff;
+                          border-width: 0px 0px 2px 1px;
+                          display: table-header-group;
+                          font-family: avantgarde, sans-serif;
+                          font-weight: bold;
+                          vertical-align: baseline;
+                          }
+.realtable thead :first-child {
+                          border-width: 0px 0px 2px 0px;
+                          }
+.realtable thead th     { border-width: 0px 0px 2px 1px }
+.realtable td,
+.realtable th           { border-color: black;
+                          border-style: solid;
+                          border-width: 0px 0px 1px 1px;
+                          padding-left: 0.4em;
+                          padding-right: 0.4em;
+                          }
+.realtable td:first-child,
+.realtable th:first-child {
+                          border-left-width: 0px;
+                          vertical-align: baseline;
+                          }
+.center                 { text-align: center; }
+.left                   { text-align: left; }
+.right                  { text-align: right; }
+
+.refcount-info          { font-style: italic; }
+.refcount-info .value   { font-weight: bold;
+                          color: #006600; }
+
+/*
+ * Some decoration for the "See also:" blocks, in part inspired by some of
+ * the styling on Lars Marius Garshol's XSA pages.
+ * (The blue in the navigation bars is #99CCFF.)
+ */
+.seealso                { background-color: #fffaf0;
+                          border: thin solid black;
+                          padding: 0pt 1em 4pt 1em; }
+
+.seealso > .heading     { font-size: 110%;
+                          font-weight: bold; }
+
+/*
+ * Class 'availability' is used for module availability statements at
+ * the top of modules.
+ */
+.availability .platform { font-weight: bold; }
+
+
+/*
+ * Additional styles for the distutils package.
+ */
+.du-command             { font-family: monospace; }
+.du-option              { font-family: avantgarde, sans-serif; }
+.du-filevar             { font-family: avantgarde, sans-serif;
+                          font-style: italic; }
+.du-xxx:before          { content: "** ";
+                          font-weight: bold; }
+.du-xxx:after           { content: " **";
+                          font-weight: bold; }
+
+
+/*
+ * Some specialization for printed output.
+ */
+ at media print {
+  .online-navigation    { display: none; }
+  }
diff --git a/doc/visionegg/visionegg.html b/doc/visionegg/visionegg.html
new file mode 100644
index 0000000..22c67e3
--- /dev/null
+++ b/doc/visionegg/visionegg.html
@@ -0,0 +1,126 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+<head>
+<link rel="STYLESHEET" href="visionegg.css" type='text/css' />
+<link rel='start' href='http://www.visionegg.org/' title='Vision Egg website' />
+<link rel="first" href="visionegg.html" title='The Vision Egg Programmer's Manual' />
+<link rel='contents' href='contents.html' title="Contents" />
+<link rel='last' href='about.html' title='About this document...' />
+<link rel='help' href='about.html' title='About this document...' />
+<link rel="next" href="front.html" />
+<meta name='aesop' content='information' />
+<title>The Vision Egg Programmer's Manual</title>
+</head>
+<body>
+<DIV CLASS="navigation">
+<div id='top-navigation-panel' xml:id='top-navigation-panel'>
+<table align="center" width="100%" cellpadding="0" cellspacing="2">
+<tr>
+<td class='online-navigation'><img src='../images/previous.png'
+  border='0' height='32'  alt='Previous Page' width='32' /></td>
+<td class='online-navigation'><a rel="parent" title="Vision Egg website"
+  href="http://www.visionegg.org/"><img src='../images/up.png'
+border='0' height='32'  alt='Up One Level' width='32' /></A></td>
+<td class='online-navigation'><a rel="next" title="Front Matter"
+  href="front.html"><img src='../images/next.png'
+border='0' height='32'  alt='Next Page' width='32' /></A></td>
+<td align="center" width="100%">The Vision Egg Programmer's Manual</td>
+<td class='online-navigation'><a rel="contents" title="Table of Contents"
+  href="contents.html"><img src='../images/contents.png'
+border='0' height='32'  alt='Contents' width='32' /></A></td>
+<td class='online-navigation'><img src='../images/blank.png'
+  border='0' height='32'  alt='' width='32' /></td>
+<td class='online-navigation'><img src='../images/blank.png'
+  border='0' height='32'  alt='' width='32' /></td>
+</tr></table>
+<div class='online-navigation'>
+<b class="navlabel">Up:</b>
+<a class="sectref" rel="parent" href="http://www.visionegg.org/">Vision Egg website</A>
+<b class="navlabel">Next:</b>
+<a class="sectref" rel="next" href="front.html">Front Matter</A>
+</div>
+<hr /></div>
+</DIV>
+<!--End of Navigation Panel-->
+<P>
+
+<link rel='up' href='http://www.visionegg.org/' title='Vision Egg website' />
+<div class="titlepage">
+<div class='center'>
+<h1>The Vision Egg Programmer's Manual</h1>
+<p><b><font size="+2">Andrew Straw</font></b></p>
+<p><strong>Release 1.1</strong><br />
+<strong>June 7, 2008</strong></p>
+<p></p>
+</div>
+</div>
+
+<P>
+
+<p><br /></p><hr class='online-navigation' />
+
+<div class='online-navigation'>
+<!--Table of Child-Links-->
+<A NAME="CHILD_LINKS"></a>
+
+<UL CLASS="ChildLinks">
+<LI><A href="front.html">Front Matter</a>
+<LI><A href="contents.html">Contents</a>
+<LI><A href="node3.html">1. Coordinating events</a>
+<UL>
+<LI><A href="node3.html#SECTION003100000000000000000">1.1 Custom flow control and event handling</a>
+<LI><A href="node3.html#SECTION003200000000000000000">1.2 Using the Presentation class: Running a single trial</a>
+<LI><A href="node3.html#SECTION003300000000000000000">1.3 Using the Presentation class: Continuous operation</a>
+</ul>
+<LI><A href="hierarchy.html">2. Hierarchy of graphical objects</a>
+<LI><A href="controllers.html">3. Controlling stimulus parameters in realtime</a>
+<LI><A href="node6.html">4. Other general information</a>
+<UL>
+<LI><A href="node6.html#SECTION006100000000000000000">4.1 Double buffering</a>
+<LI><A href="node6.html#SECTION006200000000000000000">4.2 File layout</a>
+<LI><A href="node6.html#SECTION006300000000000000000">4.3 Priority control</a>
+<LI><A href="node6.html#SECTION006400000000000000000">4.4 The log file: Warnings and errors</a>
+<LI><A href="node6.html#SECTION006500000000000000000">4.5 Configuration options</a>
+<LI><A href="node6.html#SECTION006600000000000000000">4.6 For more information</a>
+</ul>
+<LI><A href="about.html">About this document ...</a>
+</ul>
+<!--End of Table of Child-Links-->
+</div>
+
+<DIV CLASS="navigation">
+<div class='online-navigation'>
+<p></p><hr />
+<table align="center" width="100%" cellpadding="0" cellspacing="2">
+<tr>
+<td class='online-navigation'><img src='../images/previous.png'
+  border='0' height='32'  alt='Previous Page' width='32' /></td>
+<td class='online-navigation'><a rel="parent" title="Vision Egg website"
+  href="http://www.visionegg.org/"><img src='../images/up.png'
+border='0' height='32'  alt='Up One Level' width='32' /></A></td>
+<td class='online-navigation'><a rel="next" title="Front Matter"
+  href="front.html"><img src='../images/next.png'
+border='0' height='32'  alt='Next Page' width='32' /></A></td>
+<td align="center" width="100%">The Vision Egg Programmer's Manual</td>
+<td class='online-navigation'><a rel="contents" title="Table of Contents"
+  href="contents.html"><img src='../images/contents.png'
+border='0' height='32'  alt='Contents' width='32' /></A></td>
+<td class='online-navigation'><img src='../images/blank.png'
+  border='0' height='32'  alt='' width='32' /></td>
+<td class='online-navigation'><img src='../images/blank.png'
+  border='0' height='32'  alt='' width='32' /></td>
+</tr></table>
+<div class='online-navigation'>
+<b class="navlabel">Up:</b>
+<a class="sectref" rel="parent" href="http://www.visionegg.org/">Vision Egg website</A>
+<b class="navlabel">Next:</b>
+<a class="sectref" rel="next" href="front.html">Front Matter</A>
+</div>
+</div>
+<hr />
+<span class="release-info">Release 1.1, documentation updated on June 7, 2008.</span>
+</DIV>
+<!--End of Navigation Panel-->
+
+</BODY>
+</HTML>
diff --git a/makepimp.py b/makepimp.py
new file mode 100755
index 0000000..bac0ebe
--- /dev/null
+++ b/makepimp.py
@@ -0,0 +1,74 @@
+#!/usr/bin/env python
+import imp
+import os
+import sys
+import distutils.util
+import tarfile
+import gzip
+import md5
+from plistlib import Plist
+
+debug = True
+
+HTTPBASE = 'http://osdn.dl.sourceforge.net/sourceforge/visionegg/'
+UPLOADCMD = 'echo "upload %s" when you want'
+PLISTDIR = "."
+
+plat = distutils.util.get_platform()
+
+def runsetup(commands, setup='setup.py'):
+    cmd = '%s %s %s' % (sys.executable, setup, commands)
+    return os.popen(cmd)
+    
+def main(httpbase=HTTPBASE, upload=True):
+    plist = Plist.fromFile(os.path.join(PLISTDIR, plat+'.plist'))
+
+    print 'Querying package information'
+    spl = runsetup('--name --version --url --description').read().split('\n')[:-1]
+    name, version, url = spl[:3]
+    description = '\n'.join(spl[3:])
+
+    print 'Building dumb distribution for %s-%s' % (name, version)
+    runsetup('bdist_dumb').read()
+
+    hash = md5.md5()
+    fn = '%s-%s.%s.tar.gz' % (name, version, plat)
+    print 'Calculating MD5 hash for', fn
+    f = file(os.path.join('dist', fn), 'rb')
+    while 1:
+        s = f.read(1024)
+        if not s:
+            break
+        hash.update(s)
+    f.close()
+    hash = hash.hexdigest()
+
+    if upload:
+        print 'Uploading', fn 
+        os.system(UPLOADCMD % os.path.join('dist', fn))
+
+    for pkg in plist.Packages:
+        if pkg.Name == name and pkg.Flavor == 'binary':
+            print 'Existing package metadata found'
+            break
+    else:
+        print 'Creating new package metadata'
+        pkg = {
+            'Flavor':'binary',
+            'Install-test':'\nimport %s\n\t\t\t' % (name,),
+            'Prerequisites':[],
+        }
+        plist.Packages.append(pkg)
+    pkg['Name'] = name
+    pkg['Version'] = version
+    pkg['MD5Sum'] = hash
+    pkg['Download-URL'] = httpbase + fn
+    if url:
+        pkg['Home-page'] = url
+    if description and not pkg.get('Description', None):
+        pkg['Description'] = '\n%s\n\t\t\t' % (description,)
+    print 'Writing out new plist'
+    plist.write(os.path.join(PLISTDIR, plat+'.plist'))
+
+if __name__=='__main__':
+    main()
diff --git a/pyz_support.py b/pyz_support.py
new file mode 100644
index 0000000..d81cc1a
--- /dev/null
+++ b/pyz_support.py
@@ -0,0 +1,9 @@
+# This allows .pyz files to be loaded
+# (Used in McMillan Installer applications.)
+
+import os
+import sys
+
+home = os.path.dirname(sys.executable)
+os.chdir(home)
+sys.path.append('common.pyz')
diff --git a/setup.cfg b/setup.cfg
new file mode 100644
index 0000000..861a9f5
--- /dev/null
+++ b/setup.cfg
@@ -0,0 +1,5 @@
+[egg_info]
+tag_build = 
+tag_date = 0
+tag_svn_revision = 0
+
diff --git a/setup.py b/setup.py
new file mode 100755
index 0000000..f4ab687
--- /dev/null
+++ b/setup.py
@@ -0,0 +1,309 @@
+#!/usr/bin/env python
+"""Setup script for the Vision Egg distribution.
+"""
+# Copyright (C) 2001-2003 Andrew Straw
+# Copyright (C) 2004-2008 California Institute of Technology
+# Distributed under the terms of the GNU Lesser General Public License
+# (LGPL).
+
+name             = "visionegg"
+version          = "1.2.1" # setuptools will add ".dev", keep in sync
+                           # with VisionEgg/__init__.py and doc/visionegg.tex.
+author           = "Andrew Straw"
+author_email     = "astraw at users.sourceforge.net"
+home_page        = "http://www.visionegg.org/"
+license          = "LGPL" # Lesser GNU Public License
+description      = "2D/3D visual stimulus generation"
+
+long_description = \
+"""The Vision Egg is a programming library (with demo applications)
+that uses standard, inexpensive computer graphics cards to produce
+visual stimuli for vision research experiments.
+
+For more information, visit the website at www.visionegg.org
+
+Any feedback, questions, or comments, should go to the mailing list at
+visionegg at freelists.org
+
+The Vision Egg is Copyright (c) by its authors and is distributed
+under the GNU Lesser General Public License (LGPL).  This software
+comes with absolutely no warranties, either expressed or implied.
+
+"""
+
+classifiers = [
+    'Development Status :: 5 - Production/Stable',
+    'Environment :: Win32 (MS Windows)',
+    'Environment :: X11 Applications',
+    'Environment :: MacOS X',
+    'Environment :: Other Environment',
+    'Intended Audience :: Developers',
+    'Intended Audience :: Science/Research',
+    'License :: OSI Approved :: GNU Library or Lesser General Public License (LGPL)',
+    'Natural Language :: English',
+    'Operating System :: Microsoft :: Windows',
+    'Operating System :: MacOS :: MacOS X',
+    'Operating System :: POSIX :: Linux',
+    'Operating System :: POSIX :: IRIX',
+    'Programming Language :: Python',
+    'Programming Language :: C',
+    'Topic :: Multimedia :: Graphics',
+    'Topic :: Multimedia :: Graphics :: 3D Rendering',
+    'Topic :: Multimedia :: Graphics :: Presentation',
+    'Topic :: Multimedia :: Video :: Display',
+    'Topic :: Scientific/Engineering',
+    'Topic :: Scientific/Engineering :: Human Machine Interfaces',
+    'Topic :: Scientific/Engineering :: Medical Science Apps.',
+    'Topic :: Scientific/Engineering :: Visualization',
+    'Topic :: Software Development :: Libraries',
+    ]
+
+from setuptools import setup, Extension
+from setuptools.command.build_ext import build_ext
+
+from distutils.errors import CCompilerError
+import distutils.command.sdist
+from distutils import dir_util
+import sys, os.path, glob, traceback
+import numpy
+
+packages         = [ 'VisionEgg',
+                     'VisionEgg.PyroApps',
+                     ]
+ext_package      = 'VisionEgg'
+ext_modules      = []  # filled in later
+
+# Fill out ext_modules
+skip_c_compilation = 0
+if not skip_c_compilation:
+    if sys.platform == 'darwin':
+        gl_extra_link_args = ['-framework','OpenGL']
+    else:
+        gl_extra_link_args = []
+
+    if sys.platform == 'win32':
+        gl_libraries = ['opengl32']#,'glu32']
+    elif sys.platform.startswith('linux'):
+        gl_libraries = ['GL']
+    else:
+        gl_libraries = []
+
+    if sys.platform == 'win32':
+        qt_include_dirs = [r'C:\Program Files\QuickTime SDK\CIncludes']
+        qt_library_dirs = [r'C:\Program Files\QuickTime SDK\Libraries']
+        qt_libraries = ['qtmlClient']
+        if 1:
+            # from http://lab.msdn.microsoft.com/express/visualc/usingpsdk/default.aspx
+            winlibs = "kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib"
+            winliblist = [fname[:-4] for fname in winlibs.split()]
+            qt_libraries = qt_libraries+winliblist
+        qt_extra_link_args = []
+    elif sys.platform == 'darwin':
+        qt_include_dirs = []
+        qt_library_dirs = []
+        qt_libraries = []
+        qt_extra_link_args = ['-framework','QuickTime',
+                              '-framework','Carbon',
+                              ]
+    else:
+        qt_include_dirs = []
+        qt_library_dirs = []
+        qt_libraries = []
+        qt_extra_link_args = []
+
+    if sys.platform == 'darwin':
+        darwin_maxpriority_sources = ['VisionEgg/darwin_maxpriority.pyx']
+        ext_modules.append(Extension(name='darwin_maxpriority',
+                                     sources=darwin_maxpriority_sources))
+        # VBL synchronization stuff
+        ext_modules.append(Extension(name='_darwin_sync_swap',
+                                     sources=['VisionEgg/_darwin_sync_swap.m'],
+                                     extra_link_args=['-framework','OpenGL']))
+        # getfresh
+        ext_modules.append(Extension(name='_darwin_getrefresh',
+                                     sources=['VisionEgg/darwin_getrefresh.m',
+                                              'VisionEgg/darwin_getrefresh_wrap.c'],
+                                     extra_link_args=['-framework','Cocoa']))
+
+
+
+    elif sys.platform == 'win32':
+        ext_modules.append(Extension(name='_win32_maxpriority',
+                                     sources=[os.path.join('VisionEgg','win32_maxpriority.c'),
+                                              os.path.join('VisionEgg','win32_maxpriority_wrap.c')]))
+        ext_modules.append(Extension(name='_win32_getrefresh',
+                                     sources=[os.path.join('VisionEgg','win32_getrefresh.c'),
+                                              os.path.join('VisionEgg','win32_getrefresh_wrap.c')],
+                                     libraries=['User32'],
+                                     ))
+        vretrace_source = 'win32_vretrace.pyx'
+        ext_modules.append(Extension(name='win32_vretrace',
+                                     sources=[os.path.join('VisionEgg',vretrace_source),
+                                              os.path.join('VisionEgg','win32_load_driver.c')],
+                                     libraries=['User32'],
+                                     ))
+
+    elif sys.platform.startswith('linux') or sys.platform.startswith('irix'):
+        ext_modules.append(Extension(name='_posix_maxpriority',
+                                     sources=['VisionEgg/posix_maxpriority.c',
+                                              'VisionEgg/posix_maxpriority_wrap.c']))
+        if sys.platform.startswith('linux'):
+            ext_modules.append(Extension(name='_raw_lpt_linux',sources=['VisionEgg/_raw_lpt_linux.c']))
+        else: # sys.platform.startswith('irix')
+            ext_modules.append(Extension(name='_raw_plp_irix',sources=['VisionEgg/_raw_plp_irix.c']))
+
+    if sys.platform == 'darwin' or sys.platform== 'win32':
+        # QuickTime support
+        ext_modules.append(Extension(name='_gl_qt',
+                                     sources=['VisionEgg/gl_qt.c',
+                                              'VisionEgg/gl_qt_wrap.c',
+                                              'VisionEgg/movieconvert.c',
+                                              ],
+                                     include_dirs=qt_include_dirs,
+                                     library_dirs=qt_library_dirs,
+                                     libraries=qt_libraries+gl_libraries,
+                                     extra_link_args=(qt_extra_link_args+
+                                                      gl_extra_link_args),
+                                     ))
+
+    # _vegl
+    ext_modules.append(Extension(name='_vegl',
+                                 sources=['VisionEgg/_vegl.pyx',],
+                                 libraries=gl_libraries,
+                                 extra_link_args=gl_extra_link_args
+                                 ))
+
+    # C extensions for drawing GL stuff
+    include_prefix = os.path.join( sys.prefix, 'include', 'python%s'%sys.version[:3] )
+    numpy_include_dir = numpy.get_include()
+    ext_modules.append(Extension(name='_draw_in_c',
+                                 sources=['VisionEgg/_draw_in_c.c'],
+                                 include_dirs=[numpy_include_dir],
+                                 libraries=gl_libraries,
+                                 extra_link_args=gl_extra_link_args
+                                 ))
+
+if 0:
+    data_files = []
+    data_base_dir = 'VisionEgg' # This becomes VISIONEGG_SYSTEM_DIR
+    data_dir = os.path.join(data_base_dir,'data')
+    test_dir = os.path.join(data_base_dir,'test')
+    data_files.append( (data_dir,[os.path.join('data','water.mov')]) )
+    data_files.append( (data_dir,[os.path.join('data','panorama.jpg')]) )
+    data_files.append( (data_dir,[os.path.join('data','spiral.png')]) )
+    data_files.append( (data_dir,[os.path.join('data','az_el.png')]) )
+    data_files.append( (data_dir,[os.path.join('data','visionegg.bmp')]) )
+    data_files.append( (data_dir,[os.path.join('data','visionegg.tif')]) )
+    for filename in os.listdir('test'):
+        if filename.endswith('.py'):
+            data_files.append( (test_dir,[os.path.join('test',filename)]) )
+    data_files.append( (data_base_dir,['check-config.py','VisionEgg.cfg','README.txt','LICENSE.txt']) )
+else:
+    opj = os.path.join
+    package_data = {'VisionEgg':[opj('data','water.mov'),
+                                 opj('data','panorama.jpg'),
+                                 opj('data','spiral.png'),
+                                 opj('data','az_el.png'),
+                                 opj('data','visionegg.bmp'),
+                                 opj('data','visionegg.tif'),
+                                 'VisionEgg.cfg',
+                                 ]}
+
+global extension_build_failed
+extension_build_failed = 0
+
+class sdist_demo( distutils.command.sdist.sdist ):
+    description = 'build demos and documentation'
+
+    def get_file_list (self):
+        distutils.command.sdist.sdist.get_file_list(self)
+        new_files = []
+        for orig_file in self.filelist.files:
+            if orig_file.startswith('demo') or orig_file.startswith('doc') or orig_file.startswith('test'):
+                new_files.append(orig_file)
+            elif orig_file in ['check-config.py',
+                               #'VisionEgg.cfg', # location changed.. XXX FIXME
+                               'CHANGELOG.txt',
+                               'README-DEMOS.txt',
+                               'LICENSE.txt',
+                               ]:
+                new_files.append(orig_file)
+        self.filelist.files = new_files
+
+    def make_distribution (self):
+        # call sdist make_distribution after changing our name
+        base_fullname = self.distribution.get_fullname()
+        fullname = base_fullname + "-demo"
+        def get_fullname():
+            return fullname
+        self.distribution.get_fullname = get_fullname # override this method
+        distutils.command.sdist.sdist.make_distribution(self) # call super
+
+class ve_build_ext( build_ext ):
+    # This class allows C extension building to fail.
+    # No extension is essential to the Vision Egg.
+    def build_extension(self, ext):
+        try:
+            build_ext.build_extension(self, ext)
+        except CCompilerError, x:
+            print ('*'*70+'\n')*3
+
+            print """WARNING: The %s extension module to the Vision
+            Egg could not be compiled.  The Vision Egg should run, but
+            the features present in that file will not be
+            available.
+
+            Above is the ouput showing how the compilation
+            failed."""%ext.name
+
+            if sys.platform == 'win32':
+                print
+
+                print """I see you are using Windows.  The default
+                compiler for this platform is the Microsoft Visual
+                Studio C compiler.  However, a free alternative
+                compiler called mingw can be used instead."""
+
+            print
+            print ('*'*70+'\n')*3
+            global extension_build_failed
+            if not extension_build_failed:
+                extension_build_failed = 1
+
+def main():
+    # make sure older versions of distutils work
+    extras_kws = {}
+    if (hasattr(distutils.core, 'setup_keywords') and
+        'classifiers' in distutils.core.setup_keywords):
+        extras_kws['classifiers'] = classifiers
+
+    # Call setup - normal distutils behavior
+    setup(
+        name=name,
+        version=version,
+        description=description,
+        author=author,
+        author_email=author_email,
+        url=home_page,
+        license=license,
+        packages=packages,
+        ext_package=ext_package,
+        ext_modules=ext_modules,
+        package_data=package_data,
+        long_description=long_description,
+        cmdclass={'build_ext':ve_build_ext,
+                  'sdist_demo':sdist_demo,
+                  },
+        **extras_kws
+        )
+
+    if extension_build_failed:
+        print ('*'*70+'\n')*3
+
+        print """WARNING: Building of some extensions failed.  Please
+        see the messages above for details.\n"""
+
+        print ('*'*70+'\n')*3
+
+if __name__ == "__main__":
+    main()
diff --git a/swig_src/darwin_getrefresh.i b/swig_src/darwin_getrefresh.i
new file mode 100644
index 0000000..541f4b7
--- /dev/null
+++ b/swig_src/darwin_getrefresh.i
@@ -0,0 +1,20 @@
+%module darwin_getrefresh
+%{
+PyObject *PyErr_DarwinGetRefreshError;
+%}
+
+%init %{
+  /* New exception */
+  PyErr_DarwinGetRefreshError = PyErr_NewException( "VisionEgg.DarwinGetRefreshError", NULL, NULL ); // New reference
+  Py_INCREF(PyErr_DarwinGetRefreshError);
+%}
+
+%exception {
+  $action
+  if (darwin_getrefresh_err_occurred()) {
+    PyErr_SetString(PyErr_DarwinGetRefreshError, (const char *)darwin_getrefresh_err_message());
+    return NULL;
+  }
+}
+
+double getrefresh( void );
diff --git a/swig_src/darwin_getrefresh.m b/swig_src/darwin_getrefresh.m
new file mode 100644
index 0000000..1c984aa
--- /dev/null
+++ b/swig_src/darwin_getrefresh.m
@@ -0,0 +1,53 @@
+#include <stdlib.h>
+#import <Cocoa/Cocoa.h>
+
+int darwin_getrefresh_error = 0;
+const char * darwin_getrefresh_error_str= NULL;
+
+int darwin_getrefresh_err_occurred( void ) {
+  return darwin_getrefresh_error;
+}
+const char * darwin_getrefresh_err_message( void ) {
+  return darwin_getrefresh_error_str;
+}
+void darwin_getrefresh_set_error(const char * errmsg) {
+  darwin_getrefresh_error = 1;
+  darwin_getrefresh_error_str = errmsg;
+}
+
+double getrefresh( void ) {            
+  // This is based on SDL12 http://www.libsdl.org/ 
+
+  CFDictionaryRef mode = NULL;
+  CFNumberRef refreshRateCFNumber = NULL;
+  double refreshRate;
+            
+  mode = CGDisplayCurrentMode(kCGDirectMainDisplay);
+  if ( NULL == mode ) {
+    darwin_getrefresh_set_error("Cannot get display mode");
+    goto ERROR;
+  }
+  refreshRateCFNumber = CFDictionaryGetValue (mode, kCGDisplayRefreshRate);
+  if ( NULL == refreshRateCFNumber ) {
+    darwin_getrefresh_set_error("Mode has no refresh rate");
+    goto ERROR;
+  }
+  if ( 0 == CFNumberGetValue (refreshRateCFNumber, kCFNumberDoubleType, &refreshRate) ) {
+    // From CGDirectDisplay.h: (Mac OS X 10.2.6, Dec 2002 Developer Tools:
+    //
+    // Some display systems may not conventional video vertical and
+    // horizontal sweep in painting.  These displays report a
+    // kCGDisplayRefreshRate of 0 in the CFDictionaryRef returned by
+    // CGDisplayCurrentMode().  On such displays, this function
+    // returns at once.
+    darwin_getrefresh_set_error("Error getting refresh rate - no conventional video sweep?");
+    goto ERROR;
+  }
+  if ( 0 == refreshRate ) {
+    darwin_getrefresh_set_error("Error getting refresh rate - no conventional video sweep?");
+    goto ERROR;
+  }
+  return refreshRate;
+ ERROR:
+  return 0;
+}
diff --git a/swig_src/gl_qt.c b/swig_src/gl_qt.c
new file mode 100644
index 0000000..e6a98df
--- /dev/null
+++ b/swig_src/gl_qt.c
@@ -0,0 +1,248 @@
+/*
+ * Copyright (c) 2003, 2006 Andrew Straw.  Distributed under the terms
+ * of the GNU Lesser General Public License (LGPL).
+ *
+ * Author: Andrew Straw <astraw at users.sourceforge.net>
+ *
+ */
+
+#include "Python.h"
+
+#if defined(MS_WINDOWS)
+#  include <windows.h>
+#endif
+
+#include <stdlib.h>
+#include <stdio.h>
+
+#if defined(__APPLE__)
+#  include <OpenGL/gl.h>
+#  include <QuickTime/Movies.h>
+#  include <Carbon/Carbon.h>
+#else
+#  include <GL/gl.h>
+#  include <Movies.h>
+#endif
+
+#include "gl_qt.h"
+
+int gl_qt_error = 0;
+const char * gl_qt_error_str= NULL;
+static char mac_err_str[256];
+
+const char * MAC_OSERR_TO_STR ( int OSErr ) {
+  // XXX could make this lookup the error using mac Estr resources
+  snprintf(mac_err_str,256,"Mac OS error %d",OSErr);
+  return mac_err_str;
+}
+int gl_qt_err_occurred( void ) {
+  return gl_qt_error;
+}
+const char * gl_qt_err_message( void ) {
+  return gl_qt_error_str;
+}
+void gl_qt_set_error(const char * errmsg) {
+  gl_qt_error = 1;
+  gl_qt_error_str = errmsg;
+}
+
+gl_qt_renderer* gl_qt_renderer_create( Movie theMovie, short tex_shape, float tex_scale ) {
+  gl_qt_renderer * render_info = NULL;
+
+  short gMovieWidth, gMovieHeight;
+  int wOffScreenDepth;
+
+  long sizeTexture;
+
+  // Movie
+  Rect gMovieRect = {0, 0, 0, 0};
+  Rect rectNewMovie;
+  MatrixRecord 	movieMatrix;
+
+  /// XXX todo: should check tex_shape is power of 2
+  render_info = malloc(sizeof(gl_qt_renderer));
+  if (render_info == NULL) {
+    gl_qt_set_error("memory allocation failure (render_info)");
+    return NULL;
+  }
+
+  render_info->gl_texel_data = NULL;
+  render_info->qt_pixel_data = NULL;
+  render_info->offscreen_gworld = NULL;
+
+  render_info->my_movie = theMovie;
+
+  GetMovieBox(render_info->my_movie, &gMovieRect);
+
+  gMovieRect.bottom = gMovieRect.bottom-gMovieRect.top;
+  gMovieRect.top = 0;
+  gMovieRect.right = gMovieRect.right-gMovieRect.left;
+  gMovieRect.left = 0;
+
+  SetMovieBox(render_info->my_movie, &gMovieRect);
+
+  gMovieWidth = (short) (gMovieRect.right - gMovieRect.left);
+  gMovieHeight = (short) (gMovieRect.bottom - gMovieRect.top);
+
+  render_info->tex_shape=tex_shape; // on both sides (square)
+  wOffScreenDepth=32; // if packed pixel implemented, this could be reduced
+  
+  // allocate RGB 888 texture buffer
+  sizeTexture = 3 * tex_shape * tex_shape; // size of texture in bytes
+
+  render_info->gl_texel_data = (GLubyte *)malloc(sizeTexture);
+  if (render_info->gl_texel_data == NULL) {
+    gl_qt_set_error("memory allocation failure (render_info->gl_texel_data)");
+    goto fail;
+  }
+
+  if (tex_scale == 0.0) { // auto-scale
+    if (gMovieWidth > gMovieHeight) {
+      tex_scale = (float)tex_shape / (float) gMovieWidth;
+    }
+    else {
+      tex_scale = (float)tex_shape / (float) gMovieHeight;
+    }
+  }
+
+  render_info->tex_width = (short) ((float)gMovieWidth * tex_scale);	
+  render_info->tex_height = (short) ((float)gMovieHeight * tex_scale);
+
+  if ((render_info->tex_width > tex_shape) || (render_info->tex_height > tex_shape)) {
+    gl_qt_set_error("movie too big for assigned texture shape");
+    goto fail;
+  }
+
+  SetIdentityMatrix (&movieMatrix);
+  ScaleMatrix(&movieMatrix, 
+	      X2Fix(tex_scale),  // XXX where is X2Fix defined?
+	      X2Fix(tex_scale), 
+	      X2Fix(0.0), 
+	      X2Fix(0.0));
+  SetMovieMatrix(render_info->my_movie, &movieMatrix);
+
+  rectNewMovie.top = 0;
+  rectNewMovie.left = 0;
+  rectNewMovie.bottom = render_info->tex_height;
+  rectNewMovie.right = render_info->tex_width;
+  
+  render_info->row_stride = render_info->tex_width * wOffScreenDepth / 8;
+  render_info->qt_pixel_data = (unsigned char *) malloc(render_info->row_stride * render_info->tex_height);
+  if (render_info->qt_pixel_data == NULL) {
+    gl_qt_set_error("memory allocation failure (render_info->qt_pixel_data)");
+    goto fail;
+  }
+  memset(render_info->qt_pixel_data, 0, render_info->row_stride * render_info->tex_height);
+
+  QTNewGWorldFromPtr (&(render_info->offscreen_gworld), k32ARGBPixelFormat, 
+		      &rectNewMovie, NULL, NULL, 0, 
+		      render_info->qt_pixel_data, render_info->row_stride);
+  if (render_info->offscreen_gworld == NULL) {
+    gl_qt_set_error("error allocating offscreen GWorld");
+    goto fail;
+  }
+
+  SetMovieGWorld(render_info->my_movie, (CGrafPtr)render_info->offscreen_gworld, NULL);
+  render_info->offscreen_pixmap = GetGWorldPixMap(render_info->offscreen_gworld);
+  if (!render_info->offscreen_pixmap) {
+    gl_qt_set_error("Could not GetGWorldPixMap");
+    goto fail;
+  }
+
+  if (!LockPixels(render_info->offscreen_pixmap)) {
+    gl_qt_set_error("Could not LockPixels");
+    goto fail;
+  }
+
+  render_info->qt_pixel_data = (unsigned char *) GetPixBaseAddr(render_info->offscreen_pixmap);
+  //render_info->row_stride = (unsigned long) GetPixRowBytes(render_info->offscreen_pixmap);
+
+  return render_info;
+
+ fail:
+  if (render_info->gl_texel_data != NULL) {
+    free(render_info->gl_texel_data);
+  }
+  if (render_info->qt_pixel_data != NULL) {
+    free(render_info->qt_pixel_data);
+  }
+ 
+  if (render_info->offscreen_gworld != NULL) {
+    DisposeGWorld(render_info->offscreen_gworld);
+  }
+
+  if (render_info != NULL) {
+    free(render_info);
+  }
+  return NULL;
+}
+
+void gl_qt_renderer_delete( gl_qt_renderer * render_info ) {
+  int free_warning = 0;
+
+  if (render_info->offscreen_gworld != NULL) DisposeGWorld(render_info->offscreen_gworld);
+  else free_warning = 1;
+
+  if (render_info->gl_texel_data != NULL) free(render_info->gl_texel_data);
+  else free_warning = 1;
+
+  if (render_info->qt_pixel_data != NULL) free(render_info->qt_pixel_data);
+  else free_warning = 1;
+
+  if (render_info != NULL) free(render_info);
+  else free_warning = 1;
+  
+  if (free_warning) {
+    gl_qt_set_error("gl_qt_renderer_delete() called, but something was already deleted!");
+  }
+}
+
+void gl_qt_renderer_update(gl_qt_renderer * render_info) {
+
+  // Despite the swizzeling, this is faster (on my PowerBook G4 ATI
+  // Rage 128 OS X 10.2.6, anyway) than sending the data as GL_ABGR
+  // direct to OpenGL.
+
+  // Also, this way we can flip the image 'right side up' (according
+  // to OpenGL) for free.
+
+  // Step 1 - 'swizzle' data (convert ABGR to RGB)
+  register int i,j;
+  register unsigned char * pos;
+  register unsigned char * pTextile;
+  register int row;
+
+  GLenum error;
+  const char *this_msg;
+
+  row = render_info->tex_height;
+  for (j = 0; j < render_info->tex_height; j++)
+    {
+      row--;
+      pTextile = render_info->gl_texel_data + row*render_info->tex_width*3;
+      //      pTextile = render_info->gl_texel_data + row*render_info->tex_shape*3;
+      for (i = 0; i < render_info->tex_width; i++)
+	{
+	  pos = (unsigned char *)(render_info->qt_pixel_data + (j * render_info->row_stride) + (i * 4));
+	  *(pTextile++) = *(pos + 1);
+	  *(pTextile++) = *(pos + 2);
+	  *(pTextile++) = *(pos + 3);
+	}
+    }
+  // Step 2 - send to OpenGL active 2D texture object
+  glTexSubImage2D(GL_TEXTURE_2D, 
+		  0, 
+		  0, 
+		  0, 
+		  render_info->tex_width, 
+		  render_info->tex_height, 
+		  GL_RGB, 
+		  GL_UNSIGNED_BYTE, 
+		  render_info->gl_texel_data);
+  error = glGetError();
+  if (GL_NO_ERROR != error) {
+    //this_msg = gluErrorString(error);
+    this_msg = "unknown error";
+    gl_qt_set_error(this_msg);
+  }
+}
diff --git a/swig_src/gl_qt.h b/swig_src/gl_qt.h
new file mode 100644
index 0000000..125af09
--- /dev/null
+++ b/swig_src/gl_qt.h
@@ -0,0 +1,39 @@
+#ifndef _QUICKTIME_C_H_
+#define _QUICKTIME_C_H_
+
+#if defined(__APPLE__)
+#  include <OpenGL/gl.h>
+#  include <QuickTime/Movies.h>
+#else
+#  include <GL/gl.h>
+#  include <Movies.h>
+#endif
+
+typedef struct {
+  Movie my_movie;
+
+  // OpenGL info
+  GLubyte * gl_texel_data;
+  short tex_shape;
+  short tex_height;
+  short tex_width;
+
+  // QuickTime offscreen info
+  unsigned char * qt_pixel_data;
+  unsigned long row_stride;
+  GWorldPtr offscreen_gworld;
+  PixMapHandle offscreen_pixmap;
+} gl_qt_renderer;
+
+/* Error checking */
+
+int gl_qt_err_occurred(void);
+const char * gl_qt_err_message(void);
+
+/* Standard functions */
+
+gl_qt_renderer* gl_qt_renderer_create( Movie theMovie, short tex_shape, float tex_scale ); // tex_scale = 0.0 is auto
+void gl_qt_renderer_delete( gl_qt_renderer *);
+void gl_qt_renderer_update( gl_qt_renderer *);
+
+#endif
diff --git a/swig_src/gl_qt.i b/swig_src/gl_qt.i
new file mode 100644
index 0000000..504bdef
--- /dev/null
+++ b/swig_src/gl_qt.i
@@ -0,0 +1,35 @@
+%module gl_qt
+%{
+
+#if defined(MS_WINDOWS)
+#  include <windows.h>
+#endif
+
+#include "gl_qt.h"
+#include "movieconvert.h"
+
+PyObject *PyErr_GL_QTError; /* Errors generated by OpenGL/QuickTime code */
+%}
+
+%init %{
+  /* New exception for GL_QT code */
+  PyErr_GL_QTError = PyErr_NewException( "VisionEgg.QuickTime.GL_QTError", NULL, NULL ); // New reference
+  Py_INCREF(PyErr_GL_QTError);
+%}
+
+%exception {
+  $action
+  if (gl_qt_err_occurred()) {
+    PyErr_SetString(PyErr_GL_QTError, gl_qt_err_message());
+    return NULL;
+  }
+}
+
+%typemap(in) Movie theMovie {
+  MovieObj_Convert($input,&$1);
+};
+
+gl_qt_renderer* gl_qt_renderer_create( Movie theMovie, short tex_shape, float tex_scale ); // tex_scale = 0.0 is auto
+void gl_qt_renderer_delete( gl_qt_renderer *);
+void gl_qt_renderer_update( gl_qt_renderer *);
+
diff --git a/swig_src/make.py b/swig_src/make.py
new file mode 100755
index 0000000..1b4fa33
--- /dev/null
+++ b/swig_src/make.py
@@ -0,0 +1,76 @@
+#!/usr/bin/env python
+import os, shutil, sys, stat
+
+# This works on swig == 1.3.17 (And not on swig == 1.3.13).
+# Check for swig version if possible
+try:
+    import commands
+except:
+    print "Unable to check for proper SWIG version because the commands module did not load."
+
+swig_command = "swig"
+
+if len(sys.argv) > 1:
+    swig_command = sys.argv[1]
+
+if 'commands' in globals().keys():
+    status, output = commands.getstatusoutput(swig_command + " -version")
+    if status != 0:
+        print "WARNING: Error checking SWIG version"
+    else:
+        swig_version = output.split('\n')[1]
+        if swig_version.find('SWIG Version 1.3.17') != 0:
+            if swig_version.find('SWIG Version 1.3.24') != 0:
+                raise RuntimeError( "Wrong SWIG version: %s" % (swig_version,) )
+else:
+    print "WARNING: Error checking SWIG version"
+        
+swig_src_dir = os.path.split(sys.argv[0])[0]
+if swig_src_dir: # the above returns '' if we're in it on Python2.1
+    os.chdir(swig_src_dir)
+
+interfaces = ["darwin_getrefresh",
+              "gl_qt",
+              "posix_maxpriority",
+              "win32_getrefresh",
+              "win32_maxpriority",
+              ]
+product_suffixes = ["_wrap.c",
+                    ".py"]
+other_source_suffixes = [".m",
+                         ".c",
+                         ".h"]
+for i in interfaces:
+    interface_filename = i+".i"
+    products = map(i.__add__,product_suffixes)
+    other_sources = map(i.__add__,other_source_suffixes)
+    mod_time = os.stat(interface_filename)[stat.ST_MTIME]
+    must_rebuild = False
+    found_any = False
+    for product in products:
+        if os.path.exists(product):
+            found_any = True
+            if os.stat(product)[stat.ST_MTIME] < mod_time:
+                must_rebuild = True
+    if not found_any: must_rebuild = True
+    if must_rebuild:
+        sys_string = "%s -python %s"%(swig_command,interface_filename)
+        print sys_string
+        if 'commands' in globals().keys():
+            status, output = commands.getstatusoutput(sys_string)
+            if status != 0:
+                print "ERROR:", output
+                raise RuntimeError("SWIG error")
+        else:
+            print "WARNING: Cannot verify success of operation"
+            os.system(sys_string)
+    else:
+        pass
+    copy_files = products + other_sources
+    for filename in copy_files:
+        if not os.path.exists(filename):
+            continue
+        new_filename =  "../VisionEgg/"+filename
+        if not os.path.exists(new_filename) or os.stat(new_filename)[stat.ST_MTIME] < os.stat(filename)[stat.ST_MTIME]:
+            shutil.copy2(filename,new_filename) # copy2 preserves attributes
+            print "copied %s to ../VisionEgg/"%filename
diff --git a/swig_src/posix_maxpriority.c b/swig_src/posix_maxpriority.c
new file mode 100644
index 0000000..298e27d
--- /dev/null
+++ b/swig_src/posix_maxpriority.c
@@ -0,0 +1,23 @@
+#include <sys/mman.h>
+#include <sched.h>
+#include <errno.h>
+
+int set_self_policy_priority( int policy, int priority );
+int stop_memory_paging( void );
+
+int set_self_policy_priority( int policy, int priority ) {
+  struct sched_param params;
+
+  params.sched_priority = priority;
+  return sched_setscheduler(0,policy,&params);
+}
+
+int stop_memory_paging( void ) {
+
+#if defined(MCL_CURRENT) && defined(MCL_FUTURE)
+  return mlockall( MCL_CURRENT | MCL_FUTURE );
+#else
+  return 0;
+#endif
+
+}
diff --git a/swig_src/posix_maxpriority.i b/swig_src/posix_maxpriority.i
new file mode 100644
index 0000000..638dbce
--- /dev/null
+++ b/swig_src/posix_maxpriority.i
@@ -0,0 +1,29 @@
+%module posix_maxpriority
+%{
+#include <sys/mman.h>
+#include <sched.h>
+#include <errno.h>
+%}
+
+/* policies */
+%constant int SCHED_RR    = SCHED_RR;
+%constant int SCHED_FIFO  = SCHED_FIFO;
+
+/* define errno handler */
+%exception {
+  errno = 0;
+  $action
+  if (errno) {
+    PyErr_SetFromErrno(PyExc_OSError);
+    goto fail; // this line supported on swig 1.3.17
+  }
+}
+
+/* in posix_maxpriority.c */
+extern int set_self_policy_priority( int policy, int priority );
+extern int stop_memory_paging();
+
+/* in system libraries */
+extern int sched_get_priority_max( int policy );
+
+%exception;
diff --git a/swig_src/win32_getrefresh.c b/swig_src/win32_getrefresh.c
new file mode 100644
index 0000000..c32fceb
--- /dev/null
+++ b/swig_src/win32_getrefresh.c
@@ -0,0 +1,12 @@
+#include <WINDOWS.H>
+
+double getrefresh() {
+  DEVMODE DevMode;
+
+  DevMode.dmDriverExtra = 0;
+  if (EnumDisplaySettings(NULL,ENUM_CURRENT_SETTINGS,&DevMode)) {
+    return (double)DevMode.dmDisplayFrequency;
+  } else {
+    return 0;
+  }
+}
diff --git a/swig_src/win32_getrefresh.i b/swig_src/win32_getrefresh.i
new file mode 100644
index 0000000..a6f9a18
--- /dev/null
+++ b/swig_src/win32_getrefresh.i
@@ -0,0 +1,3 @@
+%module win32_getrefresh
+
+extern double getrefresh();
diff --git a/swig_src/win32_maxpriority.c b/swig_src/win32_maxpriority.c
new file mode 100644
index 0000000..35d6fa9
--- /dev/null
+++ b/swig_src/win32_maxpriority.c
@@ -0,0 +1,10 @@
+#include <WINDOWS.H> // winbase.h is all we really want, but it doesn't include all the headers it needs
+#include <WINBASE.H>
+
+unsigned short set_self_process_priority_class( int priority_class ) {
+  return (unsigned short)SetPriorityClass( GetCurrentProcess(), priority_class );
+}
+
+unsigned short set_self_thread_priority( int priority ) {
+  return (unsigned short)SetThreadPriority( GetCurrentThread(), priority );
+}
diff --git a/swig_src/win32_maxpriority.i b/swig_src/win32_maxpriority.i
new file mode 100644
index 0000000..958bbe3
--- /dev/null
+++ b/swig_src/win32_maxpriority.i
@@ -0,0 +1,90 @@
+%module win32_maxpriority
+%{
+#include <WINDOWS.H> // winbase.h is all we really want, but it doesn't include all the headers it needs
+#include <WINBASE.H>
+%}
+
+/* Priority classes */
+%constant int IDLE_PRIORITY_CLASS         = IDLE_PRIORITY_CLASS;
+%constant int NORMAL_PRIORITY_CLASS       = NORMAL_PRIORITY_CLASS;
+%constant int HIGH_PRIORITY_CLASS         = HIGH_PRIORITY_CLASS;
+%constant int REALTIME_PRIORITY_CLASS     = REALTIME_PRIORITY_CLASS;
+
+/* Thread priorities */
+%constant int THREAD_PRIORITY_IDLE          = THREAD_PRIORITY_IDLE;
+%constant int THREAD_PRIORITY_LOWEST        = THREAD_PRIORITY_LOWEST;
+%constant int THREAD_PRIORITY_BELOW_NORMAL  = THREAD_PRIORITY_BELOW_NORMAL;
+%constant int THREAD_PRIORITY_NORMAL        = THREAD_PRIORITY_NORMAL;
+%constant int THREAD_PRIORITY_ABOVE_NORMAL  = THREAD_PRIORITY_ABOVE_NORMAL;
+%constant int THREAD_PRIORITY_HIGHEST       = THREAD_PRIORITY_HIGHEST;
+%constant int THREAD_PRIORITY_TIME_CRITICAL = THREAD_PRIORITY_TIME_CRITICAL;
+
+/*
+
+The actual priority "base priority" is determined according to this
+table.
+
+B 	Process Priority Class	Thread Priority Level
+1	IDLE_PRIORITY_CLASS	THREAD_PRIORITY_IDLE
+1	BELOW_NORMAL_PRIORITY_CLASS	THREAD_PRIORITY_IDLE
+1	NORMAL_PRIORITY_CLASS	THREAD_PRIORITY_IDLE
+1	ABOVE_NORMAL_PRIORITY_CLASS	THREAD_PRIORITY_IDLE
+1	HIGH_PRIORITY_CLASS	THREAD_PRIORITY_IDLE
+2	IDLE_PRIORITY_CLASS	THREAD_PRIORITY_LOWEST
+3	IDLE_PRIORITY_CLASS	THREAD_PRIORITY_BELOW_NORMAL
+4	IDLE_PRIORITY_CLASS	THREAD_PRIORITY_NORMAL
+4	BELOW_NORMAL_PRIORITY_CLASS	THREAD_PRIORITY_LOWEST
+5	IDLE_PRIORITY_CLASS	THREAD_PRIORITY_ABOVE_NORMAL
+5	BELOW_NORMAL_PRIORITY_CLASS	THREAD_PRIORITY_BELOW_NORMAL
+5	Background NORMAL_PRIORITY_CLASS	THREAD_PRIORITY_LOWEST
+6	IDLE_PRIORITY_CLASS	THREAD_PRIORITY_HIGHEST
+6	BELOW_NORMAL_PRIORITY_CLASS	THREAD_PRIORITY_NORMAL
+6	Background NORMAL_PRIORITY_CLASS	THREAD_PRIORITY_BELOW_NORMAL
+7	BELOW_NORMAL_PRIORITY_CLASS	THREAD_PRIORITY_ABOVE_NORMAL
+7	Background NORMAL_PRIORITY_CLASS	THREAD_PRIORITY_NORMAL
+7	Foreground NORMAL_PRIORITY_CLASS	THREAD_PRIORITY_LOWEST
+8	BELOW_NORMAL_PRIORITY_CLASS	THREAD_PRIORITY_HIGHEST
+8	NORMAL_PRIORITY_CLASS	THREAD_PRIORITY_ABOVE_NORMAL
+8	Foreground NORMAL_PRIORITY_CLASS	THREAD_PRIORITY_BELOW_NORMAL
+8	ABOVE_NORMAL_PRIORITY_CLASS	THREAD_PRIORITY_LOWEST
+9	NORMAL_PRIORITY_CLASS	THREAD_PRIORITY_HIGHEST
+9	Foreground NORMAL_PRIORITY_CLASS	THREAD_PRIORITY_NORMAL
+9	ABOVE_NORMAL_PRIORITY_CLASS	THREAD_PRIORITY_BELOW_NORMAL
+10	Foreground NORMAL_PRIORITY_CLASS	THREAD_PRIORITY_ABOVE_NORMAL
+10	ABOVE_NORMAL_PRIORITY_CLASS	THREAD_PRIORITY_NORMAL
+11	Foreground NORMAL_PRIORITY_CLASS	THREAD_PRIORITY_HIGHEST
+11	ABOVE_NORMAL_PRIORITY_CLASS	THREAD_PRIORITY_ABOVE_NORMAL
+11	HIGH_PRIORITY_CLASS	THREAD_PRIORITY_LOWEST
+12	ABOVE_NORMAL_PRIORITY_CLASS	THREAD_PRIORITY_HIGHEST
+12	HIGH_PRIORITY_CLASS	THREAD_PRIORITY_BELOW_NORMAL
+13	HIGH_PRIORITY_CLASS	THREAD_PRIORITY_NORMAL
+14	HIGH_PRIORITY_CLASS	THREAD_PRIORITY_ABOVE_NORMAL
+15	HIGH_PRIORITY_CLASS	THREAD_PRIORITY_HIGHEST
+15	HIGH_PRIORITY_CLASS	THREAD_PRIORITY_TIME_CRITICAL
+15	IDLE_PRIORITY_CLASS	THREAD_PRIORITY_TIME_CRITICAL
+15	BELOW_NORMAL_PRIORITY_CLASS	THREAD_PRIORITY_TIME_CRITICAL
+15	NORMAL_PRIORITY_CLASS	THREAD_PRIORITY_TIME_CRITICAL
+15	ABOVE_NORMAL_PRIORITY_CLASS	THREAD_PRIORITY_TIME_CRITICAL
+16	REALTIME_PRIORITY_CLASS	THREAD_PRIORITY_IDLE
+17	REALTIME_PRIORITY_CLASS	-7
+18	REALTIME_PRIORITY_CLASS	-6
+19	REALTIME_PRIORITY_CLASS	-5
+20	REALTIME_PRIORITY_CLASS	-4
+21	REALTIME_PRIORITY_CLASS	-3
+22	REALTIME_PRIORITY_CLASS	THREAD_PRIORITY_LOWEST
+23	REALTIME_PRIORITY_CLASS	THREAD_PRIORITY_BELOW_NORMAL
+24	REALTIME_PRIORITY_CLASS	THREAD_PRIORITY_NORMAL
+25	REALTIME_PRIORITY_CLASS	THREAD_PRIORITY_ABOVE_NORMAL
+26	REALTIME_PRIORITY_CLASS	THREAD_PRIORITY_HIGHEST
+27	REALTIME_PRIORITY_CLASS	3
+28	REALTIME_PRIORITY_CLASS	4
+29	REALTIME_PRIORITY_CLASS	5
+30	REALTIME_PRIORITY_CLASS	6
+31	REALTIME_PRIORITY_CLASS	THREAD_PRIORITY_TIME_CRITICAL
+
+*/
+
+/* in win32_maxpriority.c */
+// Should raise exception (after calling Win32 GetLastError) if these return zero
+extern unsigned short set_self_process_priority_class( int priority_class );
+extern unsigned short set_self_thread_priority( int priority );
diff --git a/test/conform.py b/test/conform.py
new file mode 100644
index 0000000..5587fd2
--- /dev/null
+++ b/test/conform.py
@@ -0,0 +1,649 @@
+#!/usr/bin/env python
+
+import unittest
+import VisionEgg
+import VisionEgg.Core
+import VisionEgg.FlowControl
+import OpenGL.GL as gl
+
+# for some specific test cases:
+import VisionEgg.ParameterTypes
+import VisionEgg.Dots
+import VisionEgg.Gratings
+import VisionEgg.MoreStimuli
+import VisionEgg.SphereMap
+import VisionEgg.Textures
+import Numeric
+import Image
+import ImageDraw
+import os
+import time
+
+# Use Python's bool constants if available, make aliases if not
+try:
+    True
+except NameError:
+    True = 1==1
+    False = 1==0
+
+# Define "sum" if it's not available as Python function
+try:
+    sum
+except NameError:
+    import operator
+    def sum( values ):
+        return reduce(operator.add, values )
+
+# start logging to file
+try:
+    import logging
+    import logging.handlers
+except ImportError:
+    import VisionEgg.py_logging as logging
+
+log_fname = 'conform.log'
+log_handler_logfile = logging.FileHandler( log_fname )
+print "saving log file to",log_fname
+log_handler_logfile.setFormatter( VisionEgg.log_formatter )
+VisionEgg.logger.addHandler( log_handler_logfile )
+ 
+  
+    
+class VETestCase(unittest.TestCase):
+    def setUp(self):
+        kw_params = {'size'          : (512,512),
+                     'fullscreen'    : False,
+                     'preferred_bpp' : 32,
+                     'maxpriority'   : False,
+                     'hide_mouse'    : False,
+                     'frameless'     : False,
+                     'bgcolor'       : (0.0, 0.0, 1.0),
+                     'sync_swap'     : True,
+                     }
+        try:
+            self.screen = VisionEgg.Core.Screen( **kw_params )
+        except Exception, x:
+            try:
+                kw_params['preferred_bpp'] = 24
+                self.screen = VisionEgg.Core.Screen( **kw_params )
+            except Exception, x:
+                kw_params['preferred_bpp'] = 0
+                self.screen = VisionEgg.Core.Screen( **kw_params )
+        self.screen.clear()
+        VisionEgg.Core.swap_buffers()
+        self.ortho_viewport = VisionEgg.Core.Viewport( screen = self.screen )
+        
+    def tearDown(self):
+        VisionEgg.Core.swap_buffers() # just for a brief flash...
+        del self.screen
+
+    def pickle_test(self, pickleable):
+        import pickle
+        a = pickleable
+        a_pickle = pickle.dumps(a)
+        a_test = pickle.loads(a_pickle)
+        for attr_name in dir(a):
+            if hasattr(a,attr_name):
+                attr_orig = getattr(a,attr_name)
+                attr_test = getattr(a_test,attr_name)
+                self.failUnless(type(attr_orig) == type(attr_test))
+                if hasattr(attr_orig,'__dict__'):
+                    for k in attr_orig.__dict__.keys():
+                        self.failUnless(type(attr_orig.__dict__[k]) == type(attr_test.__dict__[k]))
+
+    def test_feedback_mode(self):
+        l = 250
+        r = 300
+        b = 200
+        t = 350
+        
+        stimulus = VisionEgg.MoreStimuli.Target2D(
+            position=(l,b),
+            anchor='lowerleft',
+            size=(r-l,t-b),
+            )
+        
+        self.ortho_viewport.parameters.stimuli = [ stimulus ]
+
+        gl.glFeedbackBuffer(1000,gl.GL_3D)
+        
+        gl.glRenderMode( gl.GL_FEEDBACK )
+        self.ortho_viewport.draw()
+        feedback_buffer = gl.glRenderMode( gl.GL_RENDER )
+
+        sent_verts = [(l,b,0),
+                      (r,b,0),
+                      (r,t,0),
+                      (l,t,0)]
+        recv_verts = feedback_buffer[0][1]
+
+        self.failUnless( len(sent_verts) == len(recv_verts),
+                         'feedback received wrong number of verts')
+
+        for s,r in zip(sent_verts,recv_verts):
+            s=Numeric.asarray(s)
+            r=Numeric.asarray(r)
+            diff = abs(s-r)
+            err = sum(diff)
+            self.failUnless( err < 1e-10,
+                             'verts changed')
+            
+    def test_ve3d_simple(self):
+        import VisionEgg.ThreeDeeMath as ve3d
+
+        l = 250
+        r = 300
+        b = 200
+        t = 350
+        
+        sent_verts = [(l,b,0),
+                      (r,b,0),
+                      (r,t,0),
+                      (l,t,0)]
+
+        recv_verts = self.ortho_viewport.eye_2_window(sent_verts)
+        for s,r in zip(sent_verts,recv_verts):
+            s=Numeric.asarray(s[:2]) # only testing 2D
+            r=Numeric.asarray(r[:2]) # only testing 2D
+            diff = abs(s-r)
+            err = sum(diff)
+            self.failUnless( err < 1e-10,
+                             'verts changed')
+            
+    def test_ve3d_transforms1(self):
+        import VisionEgg.ThreeDeeMath as ve3d
+        
+        gl.glMatrixMode(gl.GL_PROJECTION)
+
+        # identity
+        M = ve3d.TransformMatrix()
+        ve3d_m = M.matrix
+
+        gl.glLoadIdentity()
+        gl_m = gl.glGetFloatv(gl.GL_PROJECTION_MATRIX)
+                                                
+        self.failUnless( Numeric.allclose(ve3d_m, gl_m),
+                         'identity matrix different')
+
+        # translate
+        args=(10,20,30)
+        M = ve3d.TransformMatrix()
+        M.translate(*args)
+        ve3d_m = M.matrix
+
+        gl.glLoadIdentity()
+        gl.glTranslatef(*args)
+        gl_m = gl.glGetFloatv(gl.GL_PROJECTION_MATRIX)
+                                                
+        self.failUnless( Numeric.allclose(ve3d_m, gl_m),
+                         'translation matrix different')
+        
+        # rotate
+        args=(-22.5,10,20,-30)
+        M = ve3d.TransformMatrix()
+        M.rotate(*args)
+        ve3d_m = M.matrix
+
+        gl.glLoadIdentity()
+        gl.glRotatef(*args)
+        gl_m = gl.glGetFloatv(gl.GL_PROJECTION_MATRIX)
+                                                
+        self.failUnless( Numeric.allclose(ve3d_m, gl_m),
+                         'rotation matrix different')
+
+        # scale
+        args=(1,10.5,123.2)
+        M = ve3d.TransformMatrix()
+        M.scale(*args)
+        ve3d_m = M.matrix
+
+        gl.glLoadIdentity()
+        gl.glScalef(*args)
+        gl_m = gl.glGetFloatv(gl.GL_PROJECTION_MATRIX)
+                                                
+        self.failUnless( Numeric.allclose(ve3d_m, gl_m),
+                         'scale matrix different')        
+        
+    def test_ve3d_transforms2(self):
+        import VisionEgg.ThreeDeeMath as ve3d
+        
+        translate1 = (1,2,3)
+        rotate = (45, 2, 5, 10)
+        scale = (.1, 2.0, 4.0)
+        translate2 = (-10,25,300)
+
+        gl.glMatrixMode(gl.GL_PROJECTION)
+        gl.glLoadIdentity()
+        gl.glTranslatef(*translate1)
+        gl.glRotatef(*rotate)
+        gl.glScalef(*scale)
+        gl.glTranslatef(*translate2)
+        gl_m = gl.glGetFloatv(gl.GL_PROJECTION_MATRIX)
+
+        M = ve3d.TransformMatrix()
+        M.translate(*translate1)
+        M.rotate(*rotate)
+        M.scale(*scale)
+        M.translate(*translate2)
+        ve3d_m = M.matrix
+
+        diff = abs(gl_m-ve3d_m)
+        err = sum(diff)
+        self.failUnless( err < 1e-10,
+                         'matrices different')
+        
+    def test_ve3d_mixed_transforms(self):
+        import VisionEgg.ThreeDeeMath as ve3d
+
+        l = 250
+        r = 300
+        b = 200
+        t = 350
+        
+        stimulus = VisionEgg.MoreStimuli.Target2D(
+            position=(l,b),
+            anchor='lowerleft',
+            size=(r-l,t-b),
+            )
+
+        # M mimics the projection matrix (modelview matrix is effectively identity)
+        M = self.ortho_viewport.parameters.projection.get_matrix().copy()
+        M = ve3d.TransformMatrix(M)
+        M.translate(10,20,0)
+        self.ortho_viewport.parameters.projection.translate(10,20,0)
+        
+        self.ortho_viewport.parameters.stimuli = [ stimulus ]
+
+        gl.glFeedbackBuffer(1000,gl.GL_3D)
+        
+        gl.glRenderMode( gl.GL_FEEDBACK )
+        self.ortho_viewport.draw()
+        feedback_buffer = gl.glRenderMode( gl.GL_RENDER )
+
+        sent_verts = [(l,b,0),
+                      (r,b,0),
+                      (r,t,0),
+                      (l,t,0)]
+        gl_recv_verts = feedback_buffer[0][1]
+
+        clip_coords = M.transform_vertices( sent_verts )
+        norm_device = ve3d.normalize_homogeneous_rows(clip_coords)
+        ve3d_recv_verts = self.ortho_viewport.norm_device_2_window(norm_device)
+
+        # check x and y coords
+        for g,v in zip(gl_recv_verts,ve3d_recv_verts):
+            g=Numeric.asarray(g[:2])
+            v=Numeric.asarray(v[:2])
+            diff = abs(g-v)
+            err = sum(diff)
+            self.failUnless( err < 1e-10,
+                             'VisionEgg.ThreeDeeMath calculated window position wrong')
+        
+        # check z coord
+        for g,v in zip(gl_recv_verts,ve3d_recv_verts):
+            err = abs(g[2]-v[2])
+            self.failUnless( err < 1e-10,
+                             'VisionEgg.ThreeDeeMath calculated window depth wrong')
+        
+    def test_ClassWithParameters_pickle_ability(self):
+        self.pickle_test( VisionEgg.ClassWithParameters() )
+            
+    def test_parameter_types_simple(self):
+        ve_types = VisionEgg.ParameterTypes
+        b = ve_types.Boolean
+        ui = ve_types.UnsignedInteger
+        i = ve_types.Integer
+        r = ve_types.Real
+        ve_types.assert_type(b,ui)
+        ve_types.assert_type(b,i)
+        ve_types.assert_type(b,r)
+        ve_types.assert_type(ui,i)
+        ve_types.assert_type(ui,r)
+        ve_types.assert_type(i,r)
+
+    def test_parameter_types_sequence(self):
+        ve_types = VisionEgg.ParameterTypes
+        sr = ve_types.Sequence( ve_types.Real )
+        s4r = ve_types.Sequence4( ve_types.Real )
+        s3r = ve_types.Sequence3( ve_types.Real )
+        s2r = ve_types.Sequence2( ve_types.Real )
+        ve_types.assert_type(s4r,sr)
+        ve_types.assert_type(s3r,sr)
+        ve_types.assert_type(s2r,sr)
+        s4i = ve_types.Sequence4( ve_types.Integer )
+        s3i = ve_types.Sequence3( ve_types.Integer )
+        s2i = ve_types.Sequence2( ve_types.Integer )
+        ve_types.assert_type(s4i,sr)
+        ve_types.assert_type(s3i,sr)
+        ve_types.assert_type(s2i,sr)
+        
+    def test_parameter_types_instance(self):
+        ve_types = VisionEgg.ParameterTypes
+        istim = ve_types.Instance( VisionEgg.Core.Stimulus )
+        itext = ve_types.Instance( VisionEgg.Text.Text )
+        ve_types.assert_type(itext,istim)
+        
+        class A: # classic classes
+            pass
+        class B(A):
+            pass
+        ia = ve_types.Instance( A )
+        ib = ve_types.Instance( B )
+        ve_types.assert_type(ib, ia)
+        
+        class An(object): # new style classes
+            pass
+        class Bn(An):
+            pass
+        ian = ve_types.Instance( An )
+        ibn = ve_types.Instance( Bn )
+        ve_types.assert_type(ibn, ian)
+
+    def test_presentation_go(self):
+        p = VisionEgg.FlowControl.Presentation(go_duration=(5,'frames'))
+        p.go()
+
+    def test_presentation_go_twice(self):
+        p = VisionEgg.FlowControl.Presentation(go_duration=(5,'frames'))
+        p.go()
+        p.go() # check to make sure it works a second time
+
+    def test_presentation_go_duration(self):
+        p = VisionEgg.FlowControl.Presentation(go_duration=(1,'frames'))
+        p.go()
+        p.parameters.go_duration = (2,'frames')
+        p.go()
+        p.parameters.go_duration = (3,'frames')
+        p.go()
+        p.parameters.go_duration = (0,'frames')
+        p.go()
+        p.parameters.go_duration = (0.05,'seconds')
+        p.go()
+
+    def test_presentation_go_not(self):
+        p = VisionEgg.FlowControl.Presentation(go_duration=(0,'frames'))
+        p.go() # make sure it works with 0 duration
+
+    def test_presentation_frame_drop_test(self):
+        p = VisionEgg.FlowControl.Presentation(go_duration=(0,'frames'))
+        p.go() # make sure it works with 0 duration
+        p.were_frames_dropped_in_last_go_loop()
+        self.failUnless(not p.were_frames_dropped_in_last_go_loop(),'frame drop test false positive')
+
+        orig_framerate_setting = VisionEgg.config.VISIONEGG_MONITOR_REFRESH_HZ
+        fake_hz = 200.0
+        VisionEgg.config.VISIONEGG_MONITOR_REFRESH_HZ = fake_hz
+        skip_frame = VisionEgg.FlowControl.FunctionController(
+            during_go_func = lambda t: time.sleep(2.0/fake_hz))
+        p.add_controller(None,None,skip_frame)
+        p.parameters.go_duration = 3,'frames'
+        orig_threshold = p.parameters.warn_longest_frame_threshold
+        p.parameters.warn_longest_frame_threshold = 1.1
+        p.go()
+        p.remove_controller(None,None,skip_frame)
+        
+        VisionEgg.config.VISIONEGG_MONITOR_REFRESH_HZ = orig_framerate_setting
+        p.parameters.warn_longest_frame_threshold = orig_threshold
+        self.failUnless(p.were_frames_dropped_in_last_go_loop(),'missed simulated dropped frame')
+
+    def test_core_screen_query_refresh_rate(self):
+        fps = self.screen.query_refresh_rate()
+
+    def test_core_screen_measure_refresh_rate(self):
+        fps = self.screen.measure_refresh_rate()
+
+    def test_core_refresh_rates_match(self):
+        fps1 = self.screen.query_refresh_rate()
+        # measure frame rate over a longish period for accuracy
+        fps2 = self.screen.measure_refresh_rate(average_over_seconds=1.0)
+        percent_diff = abs(fps1-fps2)/max(fps1,fps2)*100.0
+        self.failUnless(percent_diff < 5.0,'measured (%.1f fps) and queried (%.1f fps) frame rates different (swap buffers may not be synced to vsync)'%(fps2,fps1))
+
+    def test_core_fixation_spot(self):
+        stimulus = VisionEgg.Core.FixationSpot()
+        self.ortho_viewport.parameters.stimuli = [ stimulus ]
+        self.ortho_viewport.draw()
+
+    def test_dots_dotarea2d(self):
+        stimulus = VisionEgg.Dots.DotArea2D()
+        self.ortho_viewport.parameters.stimuli = [ stimulus ]
+        self.ortho_viewport.draw()
+
+    def test_gratings_singrating2d(self):
+        stimulus = VisionEgg.Gratings.SinGrating2D()
+        self.ortho_viewport.parameters.stimuli = [ stimulus ]
+        self.ortho_viewport.draw()
+
+    def test_gratings_singrating2d_2colors(self):
+        stimulus = VisionEgg.Gratings.SinGrating2D(color1=(1,0,0),
+                                                  color2=(0,0,1))
+        self.ortho_viewport.parameters.stimuli = [ stimulus ]
+        self.ortho_viewport.draw()
+
+    def test_gratings_singrating2d_mask(self):
+        mask = VisionEgg.Textures.Mask2D()
+        stimulus = VisionEgg.Gratings.SinGrating2D(mask=mask)
+        self.ortho_viewport.parameters.stimuli = [ stimulus ]
+        self.ortho_viewport.draw()
+
+    def test_spheremap_azelgrid(self):
+        stimulus = VisionEgg.SphereMap.AzElGrid(my_viewport=self.ortho_viewport)
+        self.ortho_viewport.parameters.stimuli = [ stimulus ]
+        self.ortho_viewport.draw()
+
+    def test_spheremap_spheremap(self):
+        filename = os.path.join(VisionEgg.config.VISIONEGG_SYSTEM_DIR,"data","az_el.png")
+        texture = VisionEgg.Textures.Texture(filename)
+        stimulus = VisionEgg.SphereMap.SphereMap(texture=texture,
+                                                 shrink_texture_ok=True)
+        self.ortho_viewport.parameters.stimuli = [ stimulus ] 
+        self.ortho_viewport.draw()
+
+    def test_spheremap_spherewindow(self):
+        stimulus = VisionEgg.SphereMap.SphereWindow()
+        self.ortho_viewport.parameters.stimuli = [ stimulus ] 
+        self.ortho_viewport.draw()
+
+    def test_texture_pil(self):
+        width, height = self.screen.size
+        orig = Image.new("RGB",(width,height),(255,0,0))
+        orig_draw = ImageDraw.Draw(orig)
+        # white cross        
+        orig_draw.line( (0,0,width,height), fill=(255,255,255) )
+        orig_draw.line( (0,height,width,0),  fill=(255,255,255) )
+        # blue vertical line
+        orig_draw.line( (10,0,10,height),  fill=(0,0,255) )
+        texture = VisionEgg.Textures.Texture(orig)
+        result = texture.get_texels_as_image()
+        self.failUnless(result.tostring()==orig.tostring(),'exact texture reproduction with PIL textures failed')
+
+    def test_texture_stimulus_3d(self):
+        stimulus = VisionEgg.Textures.TextureStimulus3D()
+        self.ortho_viewport.parameters.stimuli = [ stimulus ]
+        self.ortho_viewport.draw()
+
+    def test_textures_spinning_drum(self):
+        stimulus1 = VisionEgg.Textures.SpinningDrum()
+        stimulus2 = VisionEgg.Textures.SpinningDrum()
+        self.ortho_viewport.parameters.stimuli = [ stimulus1, stimulus2 ]
+        self.ortho_viewport.draw()
+
+    def test_textures_spinning_drum_flat(self):
+        stimulus = VisionEgg.Textures.SpinningDrum(flat=1,
+                                                   anchor='center',
+                                                   )
+        self.ortho_viewport.parameters.stimuli = [ stimulus ]
+        self.ortho_viewport.draw()
+
+    def test_textures_fixation_cross(self):
+        stimulus = VisionEgg.Textures.FixationCross()
+        self.ortho_viewport.parameters.stimuli = [ stimulus ]
+        self.ortho_viewport.draw()
+
+    def test_texture_stimulus_pil_rgb(self):
+        width, height = self.screen.size
+        orig = Image.new("RGB",(width,height),(0,255,0))
+        orig_draw = ImageDraw.Draw(orig)
+        # white cross
+        orig_draw.line( (0,0,width,height), fill=(255,255,255) )
+        orig_draw.line( (0,height,width,0),  fill=(255,255,255) )
+        # blue vertical line
+        orig_draw.line( (10,0,10,height),  fill=(0,0,255) )
+        texture_stimulus = VisionEgg.Textures.TextureStimulus(
+            texture = VisionEgg.Textures.Texture(orig),
+            internal_format = gl.GL_RGB,
+            position = (0,0),
+            anchor = 'lowerleft',
+            texture_min_filter = gl.GL_NEAREST, # XXX shouldn't have to do this!
+            texture_mag_filter = gl.GL_NEAREST, # XXX shouldn't have to do this!
+            )
+
+        self.ortho_viewport.parameters.stimuli = [ texture_stimulus ]
+        self.ortho_viewport.draw()
+        result = self.screen.get_framebuffer_as_image(format=gl.GL_RGB)
+        self.failUnless(result.tostring()==orig.tostring(),'exact texture stimulus reproduction with PIL RGB textures failed')
+
+    def test_texture_stimulus_pil_rgba(self):
+        width, height = self.screen.size
+        
+        # Note: all alpha should be 255 (=OpenGL 1.0) for this test to
+        # work because otherwise the test image gets blended with
+        # whatever OpenGL has in the background
+        
+        orig = Image.new("RGBA",(width,height),(0,255,0,255)) # green, full alpha background
+        orig_draw = ImageDraw.Draw(orig)
+        # white cross
+        orig_draw.line( (0,0,width,height), fill=(255,255,255,255) )
+        orig_draw.line( (0,height,width,0),  fill=(255,255,255,255) )
+        # blue vertical line
+        orig_draw.line( (10,0,10,height),  fill=(0,0,255,255) )
+        # this breaks test (alpha != 255)
+        # orig_draw.line( (20,0,20,height),  fill=(0,0,255,127) ) 
+        # orig_draw.line( (30,0,30,height),  fill=(255,0,0,127) ) 
+        texture_stimulus = VisionEgg.Textures.TextureStimulus(
+            texture = VisionEgg.Textures.Texture(orig),
+            internal_format = gl.GL_RGBA,
+            position = (0,0),
+            anchor = 'lowerleft',
+            texture_min_filter = gl.GL_NEAREST, # XXX shouldn't have to do this!
+            texture_mag_filter = gl.GL_NEAREST, # XXX shouldn't have to do this!
+            )
+
+        self.ortho_viewport.parameters.stimuli = [ texture_stimulus ]
+        self.ortho_viewport.draw()
+        result = self.screen.get_framebuffer_as_image(format=gl.GL_RGBA)
+        self.failUnless(result.tostring()==orig.tostring(),'exact texture stimulus reproduction with PIL RGBA textures failed')
+
+    def test_texture_stimulus_numpy_rgb(self):
+        width, height = self.screen.size
+
+        orig = Numeric.zeros((height,width,3),Numeric.UnsignedInt8)
+        # sprinkle a few test pixels
+        orig[ 4, 4, :]=255
+        orig[ 6, 6, 0]=255
+        orig[ 8, 8, 1]=127
+        # more text pixels as border
+        orig[ :, 0,:]=255
+        orig[ :,-1,:]=255
+        orig[ 0, :,:]=255
+        orig[-1, :,:]=255
+        texture_stimulus = VisionEgg.Textures.TextureStimulus(
+            texture = VisionEgg.Textures.Texture(orig),
+            internal_format = gl.GL_RGB,
+            position = (0,0),
+            anchor = 'lowerleft',
+            mipmaps_enabled = False, # not (yet?) supported for Numeric arrays
+            )
+
+        self.ortho_viewport.parameters.stimuli = [ texture_stimulus ]
+        self.ortho_viewport.draw()
+        result = self.screen.get_framebuffer_as_array(format=gl.GL_RGB)
+        orig_test = orig.astype(Numeric.Int) # allow signed addition
+        result_test = result.astype(Numeric.Int) # allow signed addition
+        abs_diff = sum(abs(Numeric.ravel(orig_test) - Numeric.ravel(result_test)))
+        self.failUnless(abs_diff == 0,'exact texture reproduction with Numeric RGB textures failed')
+        
+    def test_texture_stimulus_numpy_rgba(self):
+        width, height = self.screen.size
+
+        orig = Numeric.zeros((height,width,4),Numeric.UnsignedInt8)
+        
+        # Note: all alpha should be 255 (=OpenGL 1.0) for this test to
+        # work because otherwise the test image gets blended with
+        # whatever OpenGL has in the background
+        
+        # set alpha all on
+        orig[ :, :, 3]=255
+        # sprinkle a few test pixels
+        orig[ 4, 4, :]=255
+        orig[ 6, 6, 0]=255
+        orig[ 8, 8, 1]=127
+        # alpha breaks the test:
+        #orig[ 2, 2, 3]=0
+        #orig[ 9, 9, 0]=255
+        #orig[ 9, 9, 3]=127
+        # more text pixels as border
+        orig[ :, 0,:]=255
+        orig[ :,-1,:]=255
+        orig[ 0, :,:]=255
+        orig[-1, :,:]=255
+        texture_stimulus = VisionEgg.Textures.TextureStimulus(
+            texture = VisionEgg.Textures.Texture(orig),
+            internal_format = gl.GL_RGBA,
+            position = (0,0),
+            anchor = 'lowerleft',
+            mipmaps_enabled = False, # not (yet?) supported for Numeric arrays
+            )
+
+        self.ortho_viewport.parameters.stimuli = [ texture_stimulus ]
+        self.ortho_viewport.draw()
+        result = self.screen.get_framebuffer_as_array(format=gl.GL_RGBA)
+
+        orig_test = orig.astype(Numeric.Int) # allow signed addition
+        result_test = result.astype(Numeric.Int) # allow signed addition
+
+        abs_diff = sum(abs(Numeric.ravel(orig_test) - Numeric.ravel(result_test)))
+        
+        self.failUnless(abs_diff == 0,'exact texture reproduction with Numeric RGBA textures failed')
+        
+def suite():
+    ve_test_suite = unittest.TestSuite()
+    ve_test_suite.addTest( VETestCase("test_feedback_mode") )
+    ve_test_suite.addTest( VETestCase("test_ve3d_simple") )
+    ve_test_suite.addTest( VETestCase("test_ve3d_transforms1") )
+    ve_test_suite.addTest( VETestCase("test_ve3d_transforms2") )
+    ve_test_suite.addTest( VETestCase("test_ve3d_mixed_transforms") )
+    ve_test_suite.addTest( VETestCase("test_ClassWithParameters_pickle_ability") )
+    ve_test_suite.addTest( VETestCase("test_parameter_types_simple") )
+    ve_test_suite.addTest( VETestCase("test_parameter_types_sequence") )
+    ve_test_suite.addTest( VETestCase("test_parameter_types_instance") )
+    ve_test_suite.addTest( VETestCase("test_presentation_go") )
+    ve_test_suite.addTest( VETestCase("test_presentation_go_twice") )
+    ve_test_suite.addTest( VETestCase("test_presentation_go_duration") )
+    ve_test_suite.addTest( VETestCase("test_presentation_go_not") )
+    ve_test_suite.addTest( VETestCase("test_presentation_frame_drop_test") )
+    ve_test_suite.addTest( VETestCase("test_core_refresh_rates_match") )
+    ve_test_suite.addTest( VETestCase("test_core_screen_query_refresh_rate") )
+    ve_test_suite.addTest( VETestCase("test_core_screen_measure_refresh_rate") )
+    ve_test_suite.addTest( VETestCase("test_core_fixation_spot") )
+    ve_test_suite.addTest( VETestCase("test_dots_dotarea2d") )
+    ve_test_suite.addTest( VETestCase("test_gratings_singrating2d") )
+    ve_test_suite.addTest( VETestCase("test_gratings_singrating2d_mask") )
+    ve_test_suite.addTest( VETestCase("test_gratings_singrating2d_2colors") )
+    ve_test_suite.addTest( VETestCase("test_spheremap_azelgrid") )
+    ve_test_suite.addTest( VETestCase("test_spheremap_spheremap") )
+    ve_test_suite.addTest( VETestCase("test_spheremap_spherewindow") )
+    ve_test_suite.addTest( VETestCase("test_texture_pil") )
+    ve_test_suite.addTest( VETestCase("test_texture_stimulus_3d") )
+    ve_test_suite.addTest( VETestCase("test_textures_spinning_drum") )
+    ve_test_suite.addTest( VETestCase("test_textures_spinning_drum_flat") )
+    ve_test_suite.addTest( VETestCase("test_textures_fixation_cross") )
+    ve_test_suite.addTest( VETestCase("test_texture_stimulus_numpy_rgb") )
+    ve_test_suite.addTest( VETestCase("test_texture_stimulus_numpy_rgba") )
+    ve_test_suite.addTest( VETestCase("test_texture_stimulus_pil_rgb") )
+    ve_test_suite.addTest( VETestCase("test_texture_stimulus_pil_rgba") )
+    
+    return ve_test_suite
+
+runner = unittest.TextTestRunner()
+runner.run(suite())
diff --git a/test/display_dc_restoration.py b/test/display_dc_restoration.py
new file mode 100755
index 0000000..a3b11ca
--- /dev/null
+++ b/test/display_dc_restoration.py
@@ -0,0 +1,135 @@
+#!/usr/bin/env python
+"""Test for incomplete DC restoration."""
+
+description = \
+"""From Brainard, Pelli, Robson (2002):
+
+    There are at least six causes for the failure of pixel independence.
+
+    ...
+
+    [See display_voltage_regulation.py for test 3.]
+
+    4. Incomplete DC restoration. Unfortunately, the video amplifier
+    in most CRT monitors is not DC coupled.  Instead it is AC coupled
+    most of the time, and momentarily DC couple to make zero volts
+    produce black at the end of the vertical blanking interval. (DC,
+    "direct current,") refers to zero temporal frequency; AC,
+    "alternating current," refers to all high frequencies.) This is
+    called "DC restoration," which is slightly cheaper to design and
+    build than a fully DC coupled video circuit. If the AC time
+    constant were much longer than a frame, the DC restoration would
+    be equivalent to DC coupling, but, in practice, the AC time
+    constant is typically short relative to the duration of a frame,
+    so that the same video voltage will produce different screen
+    luminances depending on the average voltage since the last
+    blanking interval. As for failure 3, this effect is negligible at
+    the top of the screen and maximal at the bottom. However, this
+    effect can be distinguished from failure 3 by using silent
+    substitution. To test, say, the green primary, use a green test
+    spot, and switch the background (the rest of the screen) back and
+    forth between green and blue. The green and blue backgrounds are
+    indistinguishable to the high-voltage power supply (it serves all
+    three guns) but are distinct to the video amplifiers (one per
+    gun).
+
+
+Brainard, D.H., Pelli, D.G., & Robson, T. (2002). Display
+  Characterization. In: J. Hornak (Ed.) Encyclopedia of Imaging Science
+  and Technology (pp. 172-188): Wiley.
+"""
+
+import VisionEgg
+from VisionEgg.Core import *
+from VisionEgg.MoreStimuli import *
+import pygame
+import pygame.locals
+
+# Use Python's bool constants if available, make aliases if not
+try:
+    True
+except NameError:
+    True = 1==1
+    False = 1==0
+
+bpps = [32, 24, 16, 0]
+sizes = [ (640,480), (800,600), (1024,768), (1280,1024) ]
+for bpp in bpps:
+    success = False
+    for size in sizes:
+        print 'trying to initialize fullscreen %d x %d, %d bpp'%(
+            size[0], size[1], bpp)
+        try:
+            screen = VisionEgg.Core.Screen( size          = size,
+                                            fullscreen    = True,
+                                            preferred_bpp = bpp,
+                                            maxpriority   = False,
+                                            hide_mouse    = True,
+                                            sync_swap     = True,
+                                            )
+            success = True
+        except:
+            pass
+        if success:
+            break # we don't need to try other resolutions
+    if success:
+        break
+
+if not success:
+    raise RuntimeError('ERROR: could not initialize fullscreen mode.')
+    
+if not screen.constant_parameters.sync_swap:
+    raise RuntimeError('This test requires sync_swap to work')
+
+screen.set(bgcolor = (0.0,0.0,0.0)) # black (RGB)
+
+bar = Target2D( size     = (screen.size[0]/10, screen.size[1]),
+                position = (screen.size[0]/2, screen.size[1]/2),
+                anchor   = 'center',
+                )
+
+viewport = Viewport( screen  = screen,
+                     stimuli = [bar],
+                     )
+
+current_channel = 'green'
+
+quit_now = False
+toggle = False # flip bit
+while not quit_now:
+    toggle = not toggle
+    for event in pygame.event.get():
+        if event.type == pygame.locals.QUIT:
+            quit_now = True
+        elif event.type == pygame.locals.KEYDOWN:
+            if event.key == pygame.locals.K_ESCAPE:
+                quit_now = True
+            elif event.type == pygame.locals.KEYDOWN:
+                if event.key == pygame.locals.K_r:
+                    current_channel = 'red'
+                elif event.key == pygame.locals.K_g:
+                    current_channel = 'green'
+                elif event.key == pygame.locals.K_b:
+                    current_channel = 'blue'
+
+    if current_channel == 'red':
+        bar.parameters.color = (1.0,0.0,0.0)
+        if toggle:
+            screen.parameters.bgcolor = (0.0,1.0,0.0)
+        else:
+            screen.parameters.bgcolor = bar.parameters.color
+    elif current_channel == 'green':
+        bar.parameters.color = (0.0,1.0,0.0)
+        if toggle:
+            screen.parameters.bgcolor = (0.0,0.0,1.0)
+        else:
+            screen.parameters.bgcolor = bar.parameters.color
+    elif current_channel == 'blue':
+        bar.parameters.color = (0.0,0.0,1.0)
+        if toggle:
+            screen.parameters.bgcolor = (1.0,0.0,0.0)
+        else:
+            screen.parameters.bgcolor = bar.parameters.color
+    screen.clear()
+    viewport.draw()
+    swap_buffers()
diff --git a/test/display_voltage_regulation.py b/test/display_voltage_regulation.py
new file mode 100644
index 0000000..202c394
--- /dev/null
+++ b/test/display_voltage_regulation.py
@@ -0,0 +1,104 @@
+#!/usr/bin/env python
+"""Test for poor high-voltage regulation."""
+
+description = \
+"""From Brainard, Pelli, Robson (2002):
+
+    There are at least six causes for the failure of pixel independence.
+
+    ...
+
+    3. Poor high-voltage regulation. The electron beam current is
+    accelerated by a high voltage (15 to 50 kV) power supply, and on
+    cheaper monitors, the voltage may slowly drop when the average
+    beam current is high. This has the effect of making the intensity
+    of each pixel dependent on the average intensity of all the pixels
+    that preceded it. (The high-voltage supply will generally
+    recuperate between frames.)  You can test for such long-distance
+    effects by displaying a steady white bar in the center of your
+    display surrounded by a uniform field of variable
+    luminance. Changing the surround from white to black ideally would
+    have no effect on the luminance of the bar.  To try this
+    informally without a photometer, create a cardboard shield with a
+    hole smaller than the bar to occlude a flickering surround, and
+    observe whether the bar is steady.  This effect depends on
+    position. The effect is negligible at the top of the screen and
+    maximal at the bottom. A single high-voltage supply generally
+    provides the current for all three channels (R, G, and B), so that
+    the effect on a particular test spot is independent of the channel
+    used for background modulation.  When the high voltage is very
+    poorly regulated, the whole screen image expands as the image is
+    made brighter, because as the increased current pulls the high
+    voltage down, the electrons take longer to reach the screen and
+    deflect more.
+
+    [See display_dc_restoration.py for test 4.]
+
+Brainard, D.H., Pelli, D.G., & Robson, T. (2002). Display
+  Characterization. In: J. Hornak (Ed.) Encyclopedia of Imaging Science
+  and Technology (pp. 172-188): Wiley.
+"""
+
+import VisionEgg
+from VisionEgg.Core import *
+from VisionEgg.MoreStimuli import *
+import pygame
+from pygame.locals import *
+
+# Use Python's bool constants if available, make aliases if not
+try:
+    True
+except NameError:
+    True = 1==1
+    False = 1==0
+   
+bpps = [32, 24, 16, 0]
+sizes = [ (640,480), (800,600), (1024,768), (1280,1024) ]
+for bpp in bpps:
+    success = False
+    for size in sizes:
+        print 'trying to initialize fullscreen %d x %d, %d bpp'%(
+            size[0], size[1], bpp)
+        try:
+            screen = VisionEgg.Core.Screen( size          = size,
+                                            fullscreen    = True,
+                                            preferred_bpp = bpp,
+                                            maxpriority   = False,
+                                            hide_mouse    = True,
+                                            sync_swap     = True,
+                                            )
+            success = True
+        except:
+            pass
+        if success:
+            break # we don't need to try other resolutions
+    if success:
+        break
+
+if not success:
+    raise RuntimeError('ERROR: could not initialize fullscreen mode.')
+
+if not screen.constant_parameters.sync_swap:
+    raise RuntimeError('This test requires sync_swap to work')
+
+screen.set(bgcolor = (0.0,0.0,0.0)) # black (RGB)
+
+bar = Target2D( size     = (screen.size[0]/10, screen.size[1]),
+                position = (screen.size[0]/2, screen.size[1]/2),
+                anchor   = 'center',
+                )
+
+viewport = Viewport( screen  = screen,
+                     stimuli = [bar],
+                     )
+
+black = True
+while not pygame.event.peek((QUIT,KEYDOWN,MOUSEBUTTONDOWN)):
+    black = not black
+    if black:
+        screen.parameters.bgcolor = (0.0,0.0,0.0) # black (RGB)
+    else:
+        screen.parameters.bgcolor = (1.0,1.0,1.0) # white (RGB)
+    screen.clear()
+    viewport.draw()
+    swap_buffers()
diff --git a/test/font_torture.py b/test/font_torture.py
new file mode 100644
index 0000000..c9c53e3
--- /dev/null
+++ b/test/font_torture.py
@@ -0,0 +1,35 @@
+# test suggested by Mason Smith on VE mailing list
+import VisionEgg
+from VisionEgg.Core import *
+from VisionEgg.Text import *
+import pygame
+import pygame.locals
+
+bpps = [32, 24, 16, 0]
+sizes = [ (640,480), (800,600), (1024,768), (1280,1024) ]
+for bpp in bpps:
+    success = False
+    for size in sizes:
+        print 'trying to initialize window %d x %d, %d bpp'%(
+            size[0], size[1], bpp)
+        try:
+            screen = VisionEgg.Core.Screen( size          = size,
+                                            fullscreen    = False,
+                                            preferred_bpp = bpp,
+                                            maxpriority   = False,
+                                            hide_mouse    = True,
+                                            sync_swap     = True,
+                                            )
+            success = True
+        except:
+            pass
+        if success:
+            break # we don't need to try other resolutions
+    if success:
+        break
+
+stims = []
+for i in range(2000):
+    print i
+    t = Text()
+    stims.append( t )
diff --git a/test/opengl_info.py b/test/opengl_info.py
new file mode 100755
index 0000000..0b71f53
--- /dev/null
+++ b/test/opengl_info.py
@@ -0,0 +1,172 @@
+#!/usr/bin/env python
+#
+# This is the python source code for a utility which checks
+# lots of things about the current OpenGL system.
+#
+# It is part of the Vision Egg package, but does not require
+# the Vision Egg to be installed.
+#
+# Copyright (c) 2001-2003 Andrew Straw.  Distributed under the terms
+# of the GNU General Public License (GPL).
+
+__cvs__ = '$Revision$'.split()[1]
+__date__ = ' '.join('$Date$'.split()[1:3])
+__author__ = 'Andrew Straw <astraw at users.sourceforge.net>'
+
+import time, sys, string
+import pygame
+from pygame.locals import *
+from OpenGL.GL import * # PyOpenGL packages
+from Numeric import *
+
+def capitalize_word(word):
+    result = word
+    if word[0] in string.lowercase:
+        result = string.upper(word[0]) + word[1:]
+    return result
+
+ARB_exts = ['matrix_palette','multisample','multitexture','point_parameters',
+        'texture_border_clamp','texture_compression','texture_cube_map',
+        'texture_env_add','texture_env_combine','texture_env_crossbar',
+        'texture_env_dot3','transpose_matrix','vertex_blend']
+
+EXT_exts = ['abgr','bgra','blend_color','blend_minmax','blend_subtract',
+            'clip_volume_hint','compiled_vertex_array','draw_range_elements',
+            'fog_coord','multi_draw_arrays','packed_pixels',
+            'paletted_texture','point_parameters','rescale_normal',
+            'secondary_color','separate_specular_color','shared_texture_palette',
+            'stencil_wrap','texture_compression_s3tc','texture3D','texture_cube_map',
+            'texture_edge_clamp','texture_env_add','texture_env_combine',
+            'texture_env_dot3','texture_filter_anisotropic','texture_lod_bias',
+            'texture_object','vertex_array','vertex_weighting']
+
+if sys.platform == 'win32':
+    time_func = time.clock
+else:
+    time_func = time.time
+
+### Setup graphics
+
+width = 640
+height = 480
+
+size = (width,height)
+
+if sys.platform == "darwin": # bug in Mac OS X version of pygame
+    pygame.init()
+pygame.display.init()
+pygame.display.set_caption("OpenGL Test")
+
+try_bpps = [0,32,24] # bits per pixel (32 = 8 bits red, 8 green, 8 blue, 8 alpha)
+flags = OPENGL | DOUBLEBUF
+found_mode = 0
+for bpp in try_bpps:
+    modeList = pygame.display.list_modes( bpp, flags )
+    if modeList == -1: # equal to -1 if any resolution will work
+        found_mode = 1
+    else:
+        if len(modeList) == 0: # any resolution is OK
+            found_mode = 1
+        else:
+            if size in modeList:
+                found_mode = 1
+            else:
+                size = modeList[0]
+                print "WARNING: Using %dx%d video mode instead of requested size."%(size[0],size[1])
+    if found_mode:
+        break
+if found_mode == 0:
+    print "WARNING: Could not find acceptable video mode! Trying anyway..."
+
+print "Initializing graphics at %d x %d ( %d bpp )."%(size[0],size[1],bpp)
+pygame.display.set_mode((width,height), flags, bpp )
+
+print
+
+### Get OpenGL info
+
+print "OpenGL information returned from OpenGL drivers:"
+
+print " GL_VENDOR =",glGetString(GL_VENDOR)
+print " GL_RENDERER =",glGetString(GL_RENDERER)
+print " GL_VERSION = ",glGetString(GL_VERSION)
+print " GL_EXTENSIONS ="
+for extension in string.split(glGetString(GL_EXTENSIONS)):
+    print "                ",extension
+
+print
+
+### Get WGL info if this is win32
+
+if sys.platform == 'win32':
+    from OpenGL.WGL.EXT.extensions_string import *
+    if wglInitExtensionsStringEXT(): # Returns 1 if it's working
+        print " WGL_EXTENSIONS ="
+        for extension in string.split(wglGetExtensionsStringEXT()):
+            print "                 ",extension
+
+print            
+
+### Buffer information
+
+print "Buffer information"
+print " GL_AUX_BUFFERS =",glGetIntegerv( GL_AUX_BUFFERS )
+print " GL_RGBA_MODE =",glGetBooleanv( GL_RGBA_MODE )
+print " GL_DOUBLEBUFFER = ",glGetBooleanv( GL_DOUBLEBUFFER )
+print " GL_STEREO = ",glGetBooleanv( GL_STEREO )
+
+print " GL_RED_BITS =",glGetIntegerv( GL_RED_BITS )
+print " GL_GREEN_BITS =",glGetIntegerv( GL_GREEN_BITS )
+print " GL_BLUE_BITS =",glGetIntegerv( GL_BLUE_BITS )
+print " GL_ALPHA_BITS =",glGetIntegerv( GL_ALPHA_BITS )
+
+print " GL_ACCUM_RED_BITS =",glGetIntegerv( GL_ACCUM_RED_BITS )
+print " GL_ACCUM_GREEN_BITS =",glGetIntegerv( GL_ACCUM_GREEN_BITS )
+print " GL_ACCUM_BLUE_BITS =",glGetIntegerv( GL_ACCUM_BLUE_BITS )
+print " GL_ACCUM_ALPHA_BITS =",glGetIntegerv( GL_ACCUM_ALPHA_BITS )
+
+print
+
+### Test OpenGL extensions
+
+print "Testing PyOpenGL extension support"
+
+for ext in ARB_exts:
+    print " GL_ARB_%s:"%ext,
+    module_name = "OpenGL.GL.ARB.%s"%ext
+    try:
+        mod = __import__(module_name,globals(),locals(),[])
+        components = string.split(module_name, '.') # make mod refer to deepest module
+        for comp in components[1:]:
+            mod = getattr(mod, comp)
+        init_name = "glInit%sARB"%string.join(map(capitalize_word,string.split(ext,'_')),'')
+        init_func = getattr(mod,init_name)
+        if init_func():
+            print "OK"
+        else:
+            print "Failed"
+    except Exception, x:
+        print "Failed (exception raised):",x
+        
+for ext in EXT_exts:
+    print " GL_EXT_%s:"%ext,
+    module_name = "OpenGL.GL.EXT.%s"%ext
+    try:
+        mod = __import__(module_name,globals(),locals(),[])
+        components = string.split(module_name, '.') # make mod refer to deepest module
+        for comp in components[1:]:
+            mod = getattr(mod, comp)
+        init_name = "glInit%sEXT"%string.join(map(capitalize_word,string.split(ext,'_')),'')
+        init_func = getattr(mod,init_name)
+        if init_func():
+            print "OK"
+        else:
+            print "Failed"
+    except Exception, x:
+        print "Failed (exception raised):",x
+        
+print
+
+print "Texture information"
+max_dim = glGetIntegerv(GL_MAX_TEXTURE_SIZE)
+print " GL_MAX_TEXTURE_SIZE is", max_dim            
diff --git a/test/reopen_screen.py b/test/reopen_screen.py
new file mode 100644
index 0000000..fb7c1b5
--- /dev/null
+++ b/test/reopen_screen.py
@@ -0,0 +1,52 @@
+#!/usr/bin/env python
+
+# Test for bug reported by Jeremy Hill in which re-opening the screen
+# would cause a segfault.
+
+import VisionEgg
+VisionEgg.start_default_logging(); VisionEgg.watch_exceptions()
+
+from VisionEgg.Core import Screen, Viewport, swap_buffers
+import pygame
+from pygame.locals import QUIT,KEYDOWN,MOUSEBUTTONDOWN
+from VisionEgg.Text import Text
+from VisionEgg.Dots import DotArea2D
+
+def run():
+    screen = Screen()
+    screen.parameters.bgcolor = (0.0,0.0,0.0) # black (RGB)
+
+    dots = DotArea2D( position                = ( screen.size[0]/2.0, screen.size[1]/2.0 ),
+                      size                    = ( 300.0 , 300.0 ),
+                      signal_fraction         = 0.1,
+                      signal_direction_deg    = 180.0,
+                      velocity_pixels_per_sec = 10.0,
+                      dot_lifespan_sec        = 5.0,
+                      dot_size                = 3.0,
+                      num_dots                = 100)
+
+    text = Text( text = "Vision Egg dot_simple_loop demo.",
+                 position = (screen.size[0]/2,2),
+                 anchor = 'bottom',
+                 color = (1.0,1.0,1.0))
+
+    viewport = Viewport( screen=screen, stimuli=[dots,text] )
+
+    # The main loop below is an alternative to using the
+    # VisionEgg.FlowControl.Presentation class.
+
+    quit_now = 0
+    while not quit_now:
+        for event in pygame.event.get():
+            if event.type in (QUIT,KEYDOWN,MOUSEBUTTONDOWN):
+                quit_now = 1
+        screen.clear()
+        viewport.draw()
+        swap_buffers()
+    screen.close()
+
+print "run 1"
+run()
+print "run 2"
+run()
+print "done"
diff --git a/test/unittests.py b/test/unittests.py
new file mode 100644
index 0000000..abcdcae
--- /dev/null
+++ b/test/unittests.py
@@ -0,0 +1,10 @@
+# run with nose
+import VisionEgg
+from VisionEgg.Text import Text
+
+def test_dav_obscure_bug():
+    # Test a bug reported by Dav Clark. Ported from
+    # http://www.freelists.org/archives/visionegg/08-2008/msg00000.html
+    s = VisionEgg.Core.Screen()
+    t = Text()
+    t.set(text='test')
diff --git a/update_docstrings.py b/update_docstrings.py
new file mode 100755
index 0000000..d8acbcf
--- /dev/null
+++ b/update_docstrings.py
@@ -0,0 +1,256 @@
+#!/usr/bin/env python
+import os
+import sys
+import md5
+import re
+
+import VisionEgg
+import VisionEgg.Core
+import VisionEgg.Daq
+import VisionEgg.DaqKeyboard
+import VisionEgg.Dots
+import VisionEgg.FlowControl
+import VisionEgg.Gratings
+import VisionEgg.MoreStimuli
+import VisionEgg.ResponseControl
+import VisionEgg.SphereMap
+import VisionEgg.Text
+import VisionEgg.Textures
+
+mods = [VisionEgg,
+        VisionEgg.Core,
+        VisionEgg.Daq,
+        VisionEgg.DaqKeyboard,
+        VisionEgg.Dots,
+        VisionEgg.FlowControl,
+        VisionEgg.Gratings,
+        VisionEgg.MoreStimuli,
+        VisionEgg.ResponseControl,
+        VisionEgg.SphereMap,
+        VisionEgg.Text,
+        VisionEgg.Textures,
+        ]
+
+mod_name_to_file = {}
+file_buffers = {}
+file_hashes = {}
+
+for mod in mods:
+    orig_file = mod.__file__
+    if orig_file.endswith('pyc'):
+        orig_file = orig_file[:-1]
+    cur_file = os.path.join('VisionEgg',os.path.split(orig_file)[1])
+    mod_name_to_file[mod.__name__] = cur_file
+
+def get_str(xx,const=0):
+    class_by_key = {}
+
+    done_parameters_and_defaults = []
+    classes = VisionEgg.recursive_base_class_finder( xx )
+    # Fill self.parameters with parameter names and set to default values
+    for klass in classes:
+        if klass == object:
+            continue # base class of new style classes - ignore
+        if const:
+            pd = klass.constant_parameters_and_defaults
+        else:
+            pd = klass.parameters_and_defaults
+        if pd not in done_parameters_and_defaults:
+            for parameter_name in pd.keys():
+                class_by_key[parameter_name] = klass
+            done_parameters_and_defaults.append(pd)
+    ks = class_by_key.keys()
+    ks.sort()
+
+    if len(ks):
+        out_strs = []
+        if not const:
+            out_strs.append('Parameters\n')
+            out_strs.append('==========\n')
+        else:
+            out_strs.append('Constant Parameters\n')
+            out_strs.append('===================\n')
+        # pass 1:
+        max_len = 0
+        for param_name in ks:
+            max_len = max(max_len, len(param_name))
+
+        for param_name in ks:
+            klass = class_by_key[param_name]
+            if const:
+                p = klass.constant_parameters_and_defaults
+            else:
+                p = klass.parameters_and_defaults
+            if len(p[param_name]) > 3:
+                if p[param_name][3] == VisionEgg.ParameterDefinition.DEPRECATED:
+                    continue
+            type_str = param_name
+            default = p[param_name][0]
+            ve_type = p[param_name][1]
+
+            if len(p[param_name]) > 2:
+                description = p[param_name][2] + ' '
+            else:
+                description = ''
+
+            out_strs.append( '%s -- %s(%s)\n'%(param_name.ljust(max_len), description, str(ve_type)) )
+            if xx != klass:
+                if klass.__module__ != xx.__module__:
+                    mod_name = '%s.'%klass.__module__
+                else:
+                    mod_name = ''
+                out_strs.append( ' '*(max_len+4)+'Inherited from %s%s\n'%(mod_name,klass.__name__,))
+
+            tmp = str(default).split('\n')
+            if default is None:
+                tmp = ['(determined at runtime)']
+            if len(p[param_name]) > 3:
+                if p[param_name][3] == VisionEgg.ParameterDefinition.OPENGL_ENUM:
+                    if default is None:
+                        gl_name = '(GL enum determined at runtime)'
+                    else:
+                        gl_name = str(default)
+                    tmp = [gl_name]
+            out_strs.append( ' '*(max_len+4)+'Default: '+tmp[0]+'\n')
+            if len(tmp) > 1:
+                for i in range(1,len(tmp)):
+                    out_strs.append( ' '*(max_len+13)+tmp[i]+'\n')
+        return out_strs
+
+xl = []
+for mod in mods:
+    orig_file = mod.__file__
+    if orig_file.endswith('pyc'):
+        orig_file = orig_file[:-1]
+    orig_fd = file(orig_file,"r")
+    orig_hash = md5.new()
+    orig_hash.update( orig_fd.read() )
+
+    fname = mod_name_to_file[ mod.__name__ ]
+    cur_fd = file(fname,"r")
+    cur_hash = md5.new()
+    cur_hash.update( cur_fd.read() )
+
+    digest = cur_hash.digest()
+    if orig_hash.digest() != digest:
+        raise RuntimeError('%s is different in VisionEgg and site-packages'%fname)
+    for x in mod.__dict__.keys():
+        xx = getattr(mod,x)
+        xl.append(xx)
+
+    file_hashes[fname] = digest
+
+for xx in xl:
+    found=0
+    if type(xx) == type(VisionEgg.ClassWithParameters):
+        if issubclass(xx,VisionEgg.ClassWithParameters):
+            if not xx.__module__ in mod_name_to_file.keys():
+                print xx,'not in modules -- skipping'
+                continue
+            fname = mod_name_to_file[xx.__module__]
+            if file_buffers.has_key(fname):
+                buf = file_buffers[fname]
+            else:
+                fd = file(fname,'r')
+                buf = fd.readlines()
+                fd.close()
+                del fd
+            search_str = re.compile( r'^class %s\W'%xx.__name__ )
+            print 'searching for %s in %s'%(xx.__name__,fname)
+            for line_no, line in enumerate(buf):
+                if search_str.match(line):
+                    #print xx.__name__,fname,line_no+1,line
+                    found=1
+                    break
+            if not found:
+                if xx.__name__ in ['StrokeText','GlutTextBase','BitmapText']:
+                    print 'skipping %s - not found, probably because no glut'%xx.__name__
+                    continue
+                raise RuntimeError("didn't find source for %s"%xx.__name__)
+            doc_find = re.compile(r'"""')
+            doc_start = line_no+1
+            if not doc_find.search(buf[doc_start]):
+                print xx.__name__,fname,doc_start,": not doc string"
+                continue
+            doc_one_liner_find = re.compile(r'""".*"""')
+            if doc_one_liner_find.search(buf[doc_start]):
+                doc_stop = doc_start
+                del_doc_stop = doc_stop+1
+
+                doc_lines = buf[doc_start:del_doc_stop]
+                del buf[doc_start:del_doc_stop]
+            else:
+                doc_stop = doc_start+1
+                doc_found = 0
+                while not doc_found:
+                    if doc_find.search(buf[doc_stop]):
+                        doc_found=1
+                    doc_stop += 1
+                    del_doc_stop = doc_stop
+
+                doc_lines = buf[doc_start:del_doc_stop-1]
+                del buf[doc_start:del_doc_stop]
+
+            trimmed_doc_lines = []
+            for doc_line in doc_lines:
+                doc_line = doc_line.replace('"""','')
+                if doc_line.startswith('    '):
+                    trimmed_doc_lines.append(doc_line[4:])
+                else:
+                    trimmed_doc_lines.append(doc_line)
+            doc_lines = trimmed_doc_lines
+
+            # trim old parameter definitions from docstring
+            idx = len(doc_lines)-1
+            while idx >= 0:
+                if doc_lines[idx] == 'Constant Parameters\n':
+                    doc_lines = doc_lines[:idx]
+                    break
+                idx -= 1
+            idx = len(doc_lines)-1
+            while idx >= 0:
+                if doc_lines[idx] == 'Parameters\n':
+                    doc_lines = doc_lines[:idx]
+                    break
+                idx -= 1
+
+            # insert new parameter defintion
+##            params_lines = get_str(xx.parameters_and_defaults,const=0)
+##            const_lines = get_str(xx.constant_parameters_and_defaults,const=1)
+            params_lines = get_str(xx,const=0)
+            const_lines = get_str(xx,const=1)
+            new_lines = doc_lines#['"""'+''.join(doc_lines)]
+            new_lines[0] = '"""'+new_lines[0]
+            if params_lines is not None:
+                if new_lines[-1].strip() != '':
+                    new_lines.append('\n')
+                new_lines.extend(params_lines)
+            if const_lines is not None:
+                if new_lines[-1].strip() != '':
+                    new_lines.append('\n')
+                new_lines.extend(const_lines)
+            new_lines.append('"""\n')
+
+            final_new_lines = []
+            for new_line in new_lines:
+                tmp = new_line.strip()
+                if tmp == '':
+                    final_new_lines.append('\n')
+                else:
+                    final_new_lines.append( '    '+new_line )
+            new_lines = final_new_lines
+
+            buf[line_no+1:line_no+1] = new_lines # insert new docstring
+
+            file_buffers[fname] = buf # reassign new buffer
+
+for fname, buf in file_buffers.iteritems():
+    buf = ''.join(buf)
+    new_hash = md5.new()
+    new_hash.update(buf)
+    if new_hash.digest() != file_hashes[fname]:
+        print 'saving',fname
+        fd = file(fname,'w')
+        fd.write(buf)
+        fd.close()
+        print 'done'
diff --git a/upload_to_pypi.sh b/upload_to_pypi.sh
new file mode 100755
index 0000000..22cf029
--- /dev/null
+++ b/upload_to_pypi.sh
@@ -0,0 +1 @@
+python setup.py register sdist --formats gztar,zip upload --sign
diff --git a/vc7.bat b/vc7.bat
new file mode 100755
index 0000000..91cfcce
--- /dev/null
+++ b/vc7.bat
@@ -0,0 +1,11 @@
+rem Modified from http://www.vrplumber.com/programming/mstoolkit/
+
+rem vc7.bat, copied to the command path for the machine
+ at echo off
+
+Set PATH=C:\Program Files\Microsoft Visual C++ Toolkit 2003\bin;C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Bin;%PATH%
+Set INCLUDE=C:\Program Files\Microsoft Visual C++ Toolkit 2003\include;C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\include;%INCLUDE%
+Set LIB=C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\lib;C:\Program Files\Microsoft Visual C++ Toolkit 2003\lib;C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Lib;%LIB%
+
+echo Visit http://msdn.microsoft.com/visualc/using/documentation/default.aspx for
+echo complete compiler documentation.
\ No newline at end of file
diff --git a/visionegg.egg-info/PKG-INFO b/visionegg.egg-info/PKG-INFO
new file mode 100644
index 0000000..5edf297
--- /dev/null
+++ b/visionegg.egg-info/PKG-INFO
@@ -0,0 +1,47 @@
+Metadata-Version: 1.0
+Name: visionegg
+Version: 1.2.1
+Summary: 2D/3D visual stimulus generation
+Home-page: http://www.visionegg.org/
+Author: Andrew Straw
+Author-email: astraw at users.sourceforge.net
+License: LGPL
+Description: The Vision Egg is a programming library (with demo applications)
+        that uses standard, inexpensive computer graphics cards to produce
+        visual stimuli for vision research experiments.
+        
+        For more information, visit the website at www.visionegg.org
+        
+        Any feedback, questions, or comments, should go to the mailing list at
+        visionegg at freelists.org
+        
+        The Vision Egg is Copyright (c) by its authors and is distributed
+        under the GNU Lesser General Public License (LGPL).  This software
+        comes with absolutely no warranties, either expressed or implied.
+        
+        
+Platform: UNKNOWN
+Classifier: Development Status :: 5 - Production/Stable
+Classifier: Environment :: Win32 (MS Windows)
+Classifier: Environment :: X11 Applications
+Classifier: Environment :: MacOS X
+Classifier: Environment :: Other Environment
+Classifier: Intended Audience :: Developers
+Classifier: Intended Audience :: Science/Research
+Classifier: License :: OSI Approved :: GNU Library or Lesser General Public License (LGPL)
+Classifier: Natural Language :: English
+Classifier: Operating System :: Microsoft :: Windows
+Classifier: Operating System :: MacOS :: MacOS X
+Classifier: Operating System :: POSIX :: Linux
+Classifier: Operating System :: POSIX :: IRIX
+Classifier: Programming Language :: Python
+Classifier: Programming Language :: C
+Classifier: Topic :: Multimedia :: Graphics
+Classifier: Topic :: Multimedia :: Graphics :: 3D Rendering
+Classifier: Topic :: Multimedia :: Graphics :: Presentation
+Classifier: Topic :: Multimedia :: Video :: Display
+Classifier: Topic :: Scientific/Engineering
+Classifier: Topic :: Scientific/Engineering :: Human Machine Interfaces
+Classifier: Topic :: Scientific/Engineering :: Medical Science Apps.
+Classifier: Topic :: Scientific/Engineering :: Visualization
+Classifier: Topic :: Software Development :: Libraries
diff --git a/visionegg.egg-info/SOURCES.txt b/visionegg.egg-info/SOURCES.txt
new file mode 100644
index 0000000..661283b
--- /dev/null
+++ b/visionegg.egg-info/SOURCES.txt
@@ -0,0 +1,576 @@
+.gitignore
+CHANGELOG.txt
+LICENSE.txt
+MANIFEST.in
+README-BINARY-DEMOS.txt
+README-DEMOS.txt
+README.txt
+bootstrap.py
+build-demo-dir.py
+build-win-exe-demos.py
+buildout.cfg
+check-config.py
+makepimp.py
+pyz_support.py
+setup.py
+update_docstrings.py
+upload_to_pypi.sh
+vc7.bat
+VisionEgg/Configuration.py
+VisionEgg/Core.py
+VisionEgg/Daq.py
+VisionEgg/DaqKeyboard.py
+VisionEgg/DaqLPT.py
+VisionEgg/Deprecated.py
+VisionEgg/Dots.py
+VisionEgg/FlowControl.py
+VisionEgg/GL.py
+VisionEgg/GLTrace.py
+VisionEgg/GUI.py
+VisionEgg/Gratings.py
+VisionEgg/MoreStimuli.py
+VisionEgg/ParameterTypes.py
+VisionEgg/PlatformDependent.py
+VisionEgg/PyroClient.py
+VisionEgg/PyroHelpers.py
+VisionEgg/QuickTime.py
+VisionEgg/ResponseControl.py
+VisionEgg/SphereMap.py
+VisionEgg/TCPController.py
+VisionEgg/Text.py
+VisionEgg/Textures.py
+VisionEgg/ThreeDeeMath.py
+VisionEgg/VisionEgg.cfg
+VisionEgg/WrappedText.py
+VisionEgg/__init__.py
+VisionEgg/_darwin_sync_swap.m
+VisionEgg/_draw_in_c.c
+VisionEgg/_lib3ds.c
+VisionEgg/_raw_lpt_linux.c
+VisionEgg/_raw_plp_irix.c
+VisionEgg/_vegl.c
+VisionEgg/_vegl.pyx
+VisionEgg/darwin_getrefresh.m
+VisionEgg/darwin_getrefresh.py
+VisionEgg/darwin_getrefresh_wrap.c
+VisionEgg/darwin_maxpriority.c
+VisionEgg/darwin_maxpriority.pyx
+VisionEgg/darwinsys.pxd
+VisionEgg/darwinsys_compat.h
+VisionEgg/gl_qt.c
+VisionEgg/gl_qt.h
+VisionEgg/gl_qt.py
+VisionEgg/gl_qt_wrap.c
+VisionEgg/movieconvert.c
+VisionEgg/movieconvert.h
+VisionEgg/posix_maxpriority.c
+VisionEgg/posix_maxpriority.py
+VisionEgg/posix_maxpriority_wrap.c
+VisionEgg/qtlowlevel.py
+VisionEgg/qtmovie.py
+VisionEgg/test_Core.py
+VisionEgg/vegl.h
+VisionEgg/win32_getrefresh.c
+VisionEgg/win32_getrefresh.py
+VisionEgg/win32_getrefresh_wrap.c
+VisionEgg/win32_load_driver.c
+VisionEgg/win32_load_driver.h
+VisionEgg/win32_maxpriority.c
+VisionEgg/win32_maxpriority.py
+VisionEgg/win32_maxpriority_wrap.c
+VisionEgg/win32_vretrace.c
+VisionEgg/win32_vretrace.pyx
+VisionEgg/win32_vretrace_orig.h
+VisionEgg/PyroApps/AST_ext.py
+VisionEgg/PyroApps/ColorCalGUI.py
+VisionEgg/PyroApps/ColorCalServer.py
+VisionEgg/PyroApps/DropinGUI.py
+VisionEgg/PyroApps/DropinServer.py
+VisionEgg/PyroApps/EPhysGUI.py
+VisionEgg/PyroApps/EPhysGUIUtils.py
+VisionEgg/PyroApps/EPhysServer.py
+VisionEgg/PyroApps/FlatGratingGUI.py
+VisionEgg/PyroApps/FlatGratingServer.py
+VisionEgg/PyroApps/GridGUI.py
+VisionEgg/PyroApps/GridServer.py
+VisionEgg/PyroApps/MouseTargetGUI.py
+VisionEgg/PyroApps/MouseTargetServer.py
+VisionEgg/PyroApps/ScreenPositionGUI.py
+VisionEgg/PyroApps/ScreenPositionServer.py
+VisionEgg/PyroApps/SphereGratingGUI.py
+VisionEgg/PyroApps/SphereGratingServer.py
+VisionEgg/PyroApps/SpinningDrumGUI.py
+VisionEgg/PyroApps/SpinningDrumServer.py
+VisionEgg/PyroApps/TargetGUI.py
+VisionEgg/PyroApps/TargetServer.py
+VisionEgg/PyroApps/VarTypes.py
+VisionEgg/PyroApps/__init__.py
+VisionEgg/data/VisionEggTitle.xcf
+VisionEgg/data/az_el.png
+VisionEgg/data/monitor.xcf
+VisionEgg/data/panorama.jpg
+VisionEgg/data/spiral.png
+VisionEgg/data/visionegg.bmp
+VisionEgg/data/visionegg.tif
+VisionEgg/data/water.mov
+demo/README.txt
+demo/alpha_texture.py
+demo/az_el_grid.py
+demo/color_grating.py
+demo/convert3d_to_2d.py
+demo/demo_arrow.py
+demo/demo_fixationpoint.py
+demo/demo_keyboardresponse.py
+demo/demo_keyboardtrigger.py
+demo/displayText.py
+demo/displayUnicode.py
+demo/dots.py
+demo/dots_pyro_client.py
+demo/dots_pyro_server.py
+demo/dots_simple_loop.py
+demo/ephys_gui.pyw
+demo/ephys_server.py
+demo/flames_pygame.py
+demo/flames_visionegg.py
+demo/framecount.py
+demo/gabor.py
+demo/gamma.py
+demo/grating.py
+demo/gratings_multi.py
+demo/image_sequence_fast.py
+demo/image_sequence_slow.py
+demo/makeMovie.py
+demo/makeMovie2.py
+demo/mouseTarget.py
+demo/mouseTarget_user_loop.py
+demo/mouse_gabor_2d.py
+demo/mouse_gabor_perspective.py
+demo/movingPOV.py
+demo/mpeg.py
+demo/multi_stim.py
+demo/plaid.py
+demo/project_linear_grating_on_cylinder.py
+demo/put_pixels.py
+demo/pygame_texture.py
+demo/quicktime.py
+demo/sphereMap.py
+demo/spiral.py
+demo/target.py
+demo/targetBackground.py
+demo/targetBackground2D.py
+demo/texture.py
+demo/texture3D.py
+demo/texture3D_alpha.py
+demo/textureDrum.py
+demo/texture_as_numpy_array.py
+demo/visual_jitter.py
+demo/wrapped_text.py
+demo/GUI/drumDemoGUI.py
+demo/Pyro/gratingPyroGUI.py
+demo/Pyro/gratingPyroServer.py
+demo/Pyro/metaPyroGUI.py
+demo/Pyro/metaPyroServer.py
+demo/Pyro/simpleClient.py
+demo/Pyro/simpleServer.py
+demo/daq/simple_lpt_out.py
+demo/daq/trigger_in.py
+demo/daq/trigger_out.py
+demo/tcp/gratingGUI.py
+demo/tcp/gratingTCP.py
+doc/BUILD.sh
+doc/BUILD.txt
+doc/index.html
+doc/visionegg.pdf
+doc/visionegg.tex
+doc/reference/epydoc
+doc/reference/make_epy.sh
+doc/reference/html/VisionEgg-module.html
+doc/reference/html/VisionEgg-pysrc.html
+doc/reference/html/VisionEgg.ClassWithParameters-class.html
+doc/reference/html/VisionEgg.Configuration-module.html
+doc/reference/html/VisionEgg.Configuration-pysrc.html
+doc/reference/html/VisionEgg.Configuration.Config-class.html
+doc/reference/html/VisionEgg.Core-module.html
+doc/reference/html/VisionEgg.Core-pysrc.html
+doc/reference/html/VisionEgg.Core.FixationSpot-class.html
+doc/reference/html/VisionEgg.Core.FrameTimer-class.html
+doc/reference/html/VisionEgg.Core.ModelView-class.html
+doc/reference/html/VisionEgg.Core.OrthographicProjection-class.html
+doc/reference/html/VisionEgg.Core.OrthographicProjectionNoZClip-class.html
+doc/reference/html/VisionEgg.Core.PerspectiveProjection-class.html
+doc/reference/html/VisionEgg.Core.Projection-class.html
+doc/reference/html/VisionEgg.Core.ProjectionBaseClass-class.html
+doc/reference/html/VisionEgg.Core.Screen-class.html
+doc/reference/html/VisionEgg.Core.SimplePerspectiveProjection-class.html
+doc/reference/html/VisionEgg.Core.Stimulus-class.html
+doc/reference/html/VisionEgg.Core.Viewport-class.html
+doc/reference/html/VisionEgg.Daq-module.html
+doc/reference/html/VisionEgg.Daq-pysrc.html
+doc/reference/html/VisionEgg.Daq.Analog-class.html
+doc/reference/html/VisionEgg.Daq.Buffered-class.html
+doc/reference/html/VisionEgg.Daq.Channel-class.html
+doc/reference/html/VisionEgg.Daq.ChannelParameters-class.html
+doc/reference/html/VisionEgg.Daq.DaqMode-class.html
+doc/reference/html/VisionEgg.Daq.Device-class.html
+doc/reference/html/VisionEgg.Daq.Digital-class.html
+doc/reference/html/VisionEgg.Daq.Functionality-class.html
+doc/reference/html/VisionEgg.Daq.Immediate-class.html
+doc/reference/html/VisionEgg.Daq.Input-class.html
+doc/reference/html/VisionEgg.Daq.Output-class.html
+doc/reference/html/VisionEgg.Daq.SignalType-class.html
+doc/reference/html/VisionEgg.Daq.Trigger-class.html
+doc/reference/html/VisionEgg.DaqKeyboard-module.html
+doc/reference/html/VisionEgg.DaqKeyboard-pysrc.html
+doc/reference/html/VisionEgg.DaqKeyboard.KeyboardInput-class.html
+doc/reference/html/VisionEgg.DaqKeyboard.KeyboardTriggerInController-class.html
+doc/reference/html/VisionEgg.DaqLPT-module.html
+doc/reference/html/VisionEgg.DaqLPT-pysrc.html
+doc/reference/html/VisionEgg.DaqLPT.LPTChannel-class.html
+doc/reference/html/VisionEgg.DaqLPT.LPTDevice-class.html
+doc/reference/html/VisionEgg.DaqLPT.LPTInput-class.html
+doc/reference/html/VisionEgg.DaqLPT.LPTOutput-class.html
+doc/reference/html/VisionEgg.DaqLPT.LPTTriggerInController-class.html
+doc/reference/html/VisionEgg.DaqLPT.LPTTriggerOutController-class.html
+doc/reference/html/VisionEgg.Deprecated-module.html
+doc/reference/html/VisionEgg.Deprecated-pysrc.html
+doc/reference/html/VisionEgg.Deprecated.Message-class.html
+doc/reference/html/VisionEgg.Dots-module.html
+doc/reference/html/VisionEgg.Dots-pysrc.html
+doc/reference/html/VisionEgg.Dots.DotArea2D-class.html
+doc/reference/html/VisionEgg.FlowControl-module.html
+doc/reference/html/VisionEgg.FlowControl-pysrc.html
+doc/reference/html/VisionEgg.FlowControl.ConstantController-class.html
+doc/reference/html/VisionEgg.FlowControl.Controller-class.html
+doc/reference/html/VisionEgg.FlowControl.EncapsulatedController-class.html
+doc/reference/html/VisionEgg.FlowControl.EvalStringController-class.html
+doc/reference/html/VisionEgg.FlowControl.ExecStringController-class.html
+doc/reference/html/VisionEgg.FlowControl.FunctionController-class.html
+doc/reference/html/VisionEgg.FlowControl.Presentation-class.html
+doc/reference/html/VisionEgg.GL-module.html
+doc/reference/html/VisionEgg.GL-pysrc.html
+doc/reference/html/VisionEgg.GLTrace-module.html
+doc/reference/html/VisionEgg.GLTrace-pysrc.html
+doc/reference/html/VisionEgg.GLTrace.Wrapper-class.html
+doc/reference/html/VisionEgg.GUI-module.html
+doc/reference/html/VisionEgg.GUI-pysrc.html
+doc/reference/html/VisionEgg.GUI.AppWindow-class.html
+doc/reference/html/VisionEgg.GUI.GetKeypressDialog-class.html
+doc/reference/html/VisionEgg.GUI.GraphicsConfigurationWindow-class.html
+doc/reference/html/VisionEgg.GUI.InfoFrame-class.html
+doc/reference/html/VisionEgg.GUI.ProgressBar-class.html
+doc/reference/html/VisionEgg.GUI.ToplevelDialog-class.html
+doc/reference/html/VisionEgg.Gratings-module.html
+doc/reference/html/VisionEgg.Gratings-pysrc.html
+doc/reference/html/VisionEgg.Gratings.AlphaGratingCommon-class.html
+doc/reference/html/VisionEgg.Gratings.LuminanceGratingCommon-class.html
+doc/reference/html/VisionEgg.Gratings.NumSamplesTooLargeError-class.html
+doc/reference/html/VisionEgg.Gratings.SinGrating2D-class.html
+doc/reference/html/VisionEgg.Gratings.SinGrating3D-class.html
+doc/reference/html/VisionEgg.MoreStimuli-module.html
+doc/reference/html/VisionEgg.MoreStimuli-pysrc.html
+doc/reference/html/VisionEgg.MoreStimuli.Arrow-class.html
+doc/reference/html/VisionEgg.MoreStimuli.FilledCircle-class.html
+doc/reference/html/VisionEgg.MoreStimuli.Rectangle3D-class.html
+doc/reference/html/VisionEgg.MoreStimuli.Target2D-class.html
+doc/reference/html/VisionEgg.ParameterDefinition-class.html
+doc/reference/html/VisionEgg.ParameterTypes-module.html
+doc/reference/html/VisionEgg.ParameterTypes-pysrc.html
+doc/reference/html/VisionEgg.ParameterTypes.AnyClass-class.html
+doc/reference/html/VisionEgg.ParameterTypes.AnyClassMC-class.html
+doc/reference/html/VisionEgg.ParameterTypes.AnyOf-class.html
+doc/reference/html/VisionEgg.ParameterTypes.Boolean-class.html
+doc/reference/html/VisionEgg.ParameterTypes.BooleanMC-class.html
+doc/reference/html/VisionEgg.ParameterTypes.Callable-class.html
+doc/reference/html/VisionEgg.ParameterTypes.CallableMC-class.html
+doc/reference/html/VisionEgg.ParameterTypes.Instance-class.html
+doc/reference/html/VisionEgg.ParameterTypes.Integer-class.html
+doc/reference/html/VisionEgg.ParameterTypes.IntegerMC-class.html
+doc/reference/html/VisionEgg.ParameterTypes.NoneMC-class.html
+doc/reference/html/VisionEgg.ParameterTypes.NoneType-class.html
+doc/reference/html/VisionEgg.ParameterTypes.ParameterTypeDef-class.html
+doc/reference/html/VisionEgg.ParameterTypes.Real-class.html
+doc/reference/html/VisionEgg.ParameterTypes.RealMC-class.html
+doc/reference/html/VisionEgg.ParameterTypes.Sequence-class.html
+doc/reference/html/VisionEgg.ParameterTypes.Sequence2-class.html
+doc/reference/html/VisionEgg.ParameterTypes.Sequence3-class.html
+doc/reference/html/VisionEgg.ParameterTypes.Sequence4-class.html
+doc/reference/html/VisionEgg.ParameterTypes.Sequence4x4-class.html
+doc/reference/html/VisionEgg.ParameterTypes.String-class.html
+doc/reference/html/VisionEgg.ParameterTypes.StringMC-class.html
+doc/reference/html/VisionEgg.ParameterTypes.SubClass-class.html
+doc/reference/html/VisionEgg.ParameterTypes.Unicode-class.html
+doc/reference/html/VisionEgg.ParameterTypes.UnicodeMC-class.html
+doc/reference/html/VisionEgg.ParameterTypes.UnsignedInteger-class.html
+doc/reference/html/VisionEgg.ParameterTypes.UnsignedIntegerMC-class.html
+doc/reference/html/VisionEgg.Parameters-class.html
+doc/reference/html/VisionEgg.PlatformDependent-module.html
+doc/reference/html/VisionEgg.PlatformDependent-pysrc.html
+doc/reference/html/VisionEgg.PyroApps-module.html
+doc/reference/html/VisionEgg.PyroApps-pysrc.html
+doc/reference/html/VisionEgg.PyroApps.AST_ext-module.html
+doc/reference/html/VisionEgg.PyroApps.AST_ext-pysrc.html
+doc/reference/html/VisionEgg.PyroApps.AST_ext.AST_Visitor-class.html
+doc/reference/html/VisionEgg.PyroApps.ColorCalGUI-module.html
+doc/reference/html/VisionEgg.PyroApps.ColorCalGUI-pysrc.html
+doc/reference/html/VisionEgg.PyroApps.ColorCalGUI.ColorCalControlFrame-class.html
+doc/reference/html/VisionEgg.PyroApps.ColorCalGUI.ColorCalMetaParameters-class.html
+doc/reference/html/VisionEgg.PyroApps.ColorCalServer-module.html
+doc/reference/html/VisionEgg.PyroApps.ColorCalServer-pysrc.html
+doc/reference/html/VisionEgg.PyroApps.ColorCalServer.ColorCalMetaController-class.html
+doc/reference/html/VisionEgg.PyroApps.DropinGUI-module.html
+doc/reference/html/VisionEgg.PyroApps.DropinGUI-pysrc.html
+doc/reference/html/VisionEgg.PyroApps.DropinGUI.DropinControlFrame-class.html
+doc/reference/html/VisionEgg.PyroApps.DropinGUI.DropinMetaParameters-class.html
+doc/reference/html/VisionEgg.PyroApps.DropinServer-module.html
+doc/reference/html/VisionEgg.PyroApps.DropinServer-pysrc.html
+doc/reference/html/VisionEgg.PyroApps.DropinServer.DropinMetaController-class.html
+doc/reference/html/VisionEgg.PyroApps.EPhysGUI-module.html
+doc/reference/html/VisionEgg.PyroApps.EPhysGUI-pysrc.html
+doc/reference/html/VisionEgg.PyroApps.EPhysGUI.AppWindow-class.html
+doc/reference/html/VisionEgg.PyroApps.EPhysGUI.BarButton-class.html
+doc/reference/html/VisionEgg.PyroApps.EPhysGUI.ContainedObjectBase-class.html
+doc/reference/html/VisionEgg.PyroApps.EPhysGUI.GammaFrame-class.html
+doc/reference/html/VisionEgg.PyroApps.EPhysGUI.ImageSequenceLauncher-class.html
+doc/reference/html/VisionEgg.PyroApps.EPhysGUI.Loop-class.html
+doc/reference/html/VisionEgg.PyroApps.EPhysGUI.LoopContainedObject-class.html
+doc/reference/html/VisionEgg.PyroApps.EPhysGUI.LoopParamDialog-class.html
+doc/reference/html/VisionEgg.PyroApps.EPhysGUI.ScrollListFrame-class.html
+doc/reference/html/VisionEgg.PyroApps.EPhysGUIUtils-module.html
+doc/reference/html/VisionEgg.PyroApps.EPhysGUIUtils-pysrc.html
+doc/reference/html/VisionEgg.PyroApps.EPhysGUIUtils.StimulusControlFrame-class.html
+doc/reference/html/VisionEgg.PyroApps.EPhysServer-module.html
+doc/reference/html/VisionEgg.PyroApps.EPhysServer-pysrc.html
+doc/reference/html/VisionEgg.PyroApps.EPhysServer.EPhysServer-class.html
+doc/reference/html/VisionEgg.PyroApps.FlatGratingGUI-module.html
+doc/reference/html/VisionEgg.PyroApps.FlatGratingGUI-pysrc.html
+doc/reference/html/VisionEgg.PyroApps.FlatGratingGUI.FlatGratingControlFrame-class.html
+doc/reference/html/VisionEgg.PyroApps.FlatGratingGUI.FlatGratingMetaParameters-class.html
+doc/reference/html/VisionEgg.PyroApps.FlatGratingServer-module.html
+doc/reference/html/VisionEgg.PyroApps.FlatGratingServer-pysrc.html
+doc/reference/html/VisionEgg.PyroApps.FlatGratingServer.FlatGratingExperimentMetaController-class.html
+doc/reference/html/VisionEgg.PyroApps.GridGUI-module.html
+doc/reference/html/VisionEgg.PyroApps.GridGUI-pysrc.html
+doc/reference/html/VisionEgg.PyroApps.GridGUI.GridControlFrame-class.html
+doc/reference/html/VisionEgg.PyroApps.GridGUI.GridMetaParameters-class.html
+doc/reference/html/VisionEgg.PyroApps.GridServer-module.html
+doc/reference/html/VisionEgg.PyroApps.GridServer-pysrc.html
+doc/reference/html/VisionEgg.PyroApps.GridServer.GridMetaController-class.html
+doc/reference/html/VisionEgg.PyroApps.MouseTargetGUI-module.html
+doc/reference/html/VisionEgg.PyroApps.MouseTargetGUI-pysrc.html
+doc/reference/html/VisionEgg.PyroApps.MouseTargetGUI.MouseTargetControlFrame-class.html
+doc/reference/html/VisionEgg.PyroApps.MouseTargetGUI.MouseTargetMetaParameters-class.html
+doc/reference/html/VisionEgg.PyroApps.MouseTargetServer-module.html
+doc/reference/html/VisionEgg.PyroApps.MouseTargetServer-pysrc.html
+doc/reference/html/VisionEgg.PyroApps.MouseTargetServer.MousePositionController-class.html
+doc/reference/html/VisionEgg.PyroApps.MouseTargetServer.MouseTargetExperimentMetaController-class.html
+doc/reference/html/VisionEgg.PyroApps.MouseTargetServer.TargetOrientationController-class.html
+doc/reference/html/VisionEgg.PyroApps.MouseTargetServer.TargetPositionController-class.html
+doc/reference/html/VisionEgg.PyroApps.ScreenPositionGUI-module.html
+doc/reference/html/VisionEgg.PyroApps.ScreenPositionGUI-pysrc.html
+doc/reference/html/VisionEgg.PyroApps.ScreenPositionGUI.CallbackEntry-class.html
+doc/reference/html/VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionControlFrame-class.html
+doc/reference/html/VisionEgg.PyroApps.ScreenPositionGUI.ScreenPositionParameters-class.html
+doc/reference/html/VisionEgg.PyroApps.ScreenPositionServer-module.html
+doc/reference/html/VisionEgg.PyroApps.ScreenPositionServer-pysrc.html
+doc/reference/html/VisionEgg.PyroApps.ScreenPositionServer.ScreenPositionMetaController-class.html
+doc/reference/html/VisionEgg.PyroApps.SphereGratingGUI-module.html
+doc/reference/html/VisionEgg.PyroApps.SphereGratingGUI-pysrc.html
+doc/reference/html/VisionEgg.PyroApps.SphereGratingGUI.SphereGratingControlFrame-class.html
+doc/reference/html/VisionEgg.PyroApps.SphereGratingGUI.SphereGratingMetaParameters-class.html
+doc/reference/html/VisionEgg.PyroApps.SphereGratingServer-module.html
+doc/reference/html/VisionEgg.PyroApps.SphereGratingServer-pysrc.html
+doc/reference/html/VisionEgg.PyroApps.SphereGratingServer.SphereGratingExperimentMetaController-class.html
+doc/reference/html/VisionEgg.PyroApps.SpinningDrumGUI-module.html
+doc/reference/html/VisionEgg.PyroApps.SpinningDrumGUI-pysrc.html
+doc/reference/html/VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumControlFrame-class.html
+doc/reference/html/VisionEgg.PyroApps.SpinningDrumGUI.SpinningDrumMetaParameters-class.html
+doc/reference/html/VisionEgg.PyroApps.SpinningDrumServer-module.html
+doc/reference/html/VisionEgg.PyroApps.SpinningDrumServer-pysrc.html
+doc/reference/html/VisionEgg.PyroApps.SpinningDrumServer.SpinningDrumExperimentMetaController-class.html
+doc/reference/html/VisionEgg.PyroApps.TargetGUI-module.html
+doc/reference/html/VisionEgg.PyroApps.TargetGUI-pysrc.html
+doc/reference/html/VisionEgg.PyroApps.TargetGUI.TargetControlFrame-class.html
+doc/reference/html/VisionEgg.PyroApps.TargetGUI.TargetMetaParameters-class.html
+doc/reference/html/VisionEgg.PyroApps.TargetServer-module.html
+doc/reference/html/VisionEgg.PyroApps.TargetServer-pysrc.html
+doc/reference/html/VisionEgg.PyroApps.TargetServer.TargetExperimentMetaController-class.html
+doc/reference/html/VisionEgg.PyroApps.VarTypes-module.html
+doc/reference/html/VisionEgg.PyroApps.VarTypes-pysrc.html
+doc/reference/html/VisionEgg.PyroClient-module.html
+doc/reference/html/VisionEgg.PyroClient-pysrc.html
+doc/reference/html/VisionEgg.PyroClient.PyroClient-class.html
+doc/reference/html/VisionEgg.PyroHelpers-module.html
+doc/reference/html/VisionEgg.PyroHelpers-pysrc.html
+doc/reference/html/VisionEgg.PyroHelpers.PyroConstantController-class.html
+doc/reference/html/VisionEgg.PyroHelpers.PyroEncapsulatedController-class.html
+doc/reference/html/VisionEgg.PyroHelpers.PyroEvalStringController-class.html
+doc/reference/html/VisionEgg.PyroHelpers.PyroExecStringController-class.html
+doc/reference/html/VisionEgg.PyroHelpers.PyroListenController-class.html
+doc/reference/html/VisionEgg.PyroHelpers.PyroLocalDictController-class.html
+doc/reference/html/VisionEgg.PyroHelpers.PyroServer-class.html
+doc/reference/html/VisionEgg.QuickTime-module.html
+doc/reference/html/VisionEgg.QuickTime-pysrc.html
+doc/reference/html/VisionEgg.QuickTime.MovieTexture-class.html
+doc/reference/html/VisionEgg.ResponseControl-module.html
+doc/reference/html/VisionEgg.ResponseControl-pysrc.html
+doc/reference/html/VisionEgg.ResponseControl.KeyboardResponseController-class.html
+doc/reference/html/VisionEgg.ResponseControl.ResponseController-class.html
+doc/reference/html/VisionEgg.SphereMap-module.html
+doc/reference/html/VisionEgg.SphereMap-pysrc.html
+doc/reference/html/VisionEgg.SphereMap.AzElGrid-class.html
+doc/reference/html/VisionEgg.SphereMap.SphereGrating-class.html
+doc/reference/html/VisionEgg.SphereMap.SphereMap-class.html
+doc/reference/html/VisionEgg.SphereMap.SphereWindow-class.html
+doc/reference/html/VisionEgg.TCPController-module.html
+doc/reference/html/VisionEgg.TCPController-pysrc.html
+doc/reference/html/VisionEgg.TCPController.SocketListenController-class.html
+doc/reference/html/VisionEgg.TCPController.TCPController-class.html
+doc/reference/html/VisionEgg.TCPController.TCPServer-class.html
+doc/reference/html/VisionEgg.Text-module.html
+doc/reference/html/VisionEgg.Text-pysrc.html
+doc/reference/html/VisionEgg.Text.BitmapText-class.html
+doc/reference/html/VisionEgg.Text.GlutTextBase-class.html
+doc/reference/html/VisionEgg.Text.StrokeText-class.html
+doc/reference/html/VisionEgg.Text.Text-class.html
+doc/reference/html/VisionEgg.Textures-module.html
+doc/reference/html/VisionEgg.Textures-pysrc.html
+doc/reference/html/VisionEgg.Textures.FixationCross-class.html
+doc/reference/html/VisionEgg.Textures.Mask2D-class.html
+doc/reference/html/VisionEgg.Textures.SpinningDrum-class.html
+doc/reference/html/VisionEgg.Textures.Texture-class.html
+doc/reference/html/VisionEgg.Textures.TextureFromFile-class.html
+doc/reference/html/VisionEgg.Textures.TextureObject-class.html
+doc/reference/html/VisionEgg.Textures.TextureStimulus-class.html
+doc/reference/html/VisionEgg.Textures.TextureStimulus3D-class.html
+doc/reference/html/VisionEgg.Textures.TextureStimulusBaseClass-class.html
+doc/reference/html/VisionEgg.Textures.TextureTooLargeError-class.html
+doc/reference/html/VisionEgg.ThreeDeeMath-module.html
+doc/reference/html/VisionEgg.ThreeDeeMath-pysrc.html
+doc/reference/html/VisionEgg.ThreeDeeMath.TransformMatrix-class.html
+doc/reference/html/VisionEgg.WrappedText-module.html
+doc/reference/html/VisionEgg.WrappedText-pysrc.html
+doc/reference/html/VisionEgg.WrappedText.WrappedText-class.html
+doc/reference/html/VisionEgg.darwin_getrefresh-module.html
+doc/reference/html/VisionEgg.darwin_getrefresh-pysrc.html
+doc/reference/html/VisionEgg.gl_qt-module.html
+doc/reference/html/VisionEgg.gl_qt-pysrc.html
+doc/reference/html/VisionEgg.posix_maxpriority-module.html
+doc/reference/html/VisionEgg.posix_maxpriority-pysrc.html
+doc/reference/html/VisionEgg.qtlowlevel-module.html
+doc/reference/html/VisionEgg.qtlowlevel-pysrc.html
+doc/reference/html/VisionEgg.qtlowlevel.QTNewMoviePropertyElement-class.html
+doc/reference/html/VisionEgg.qtlowlevel.Rect-class.html
+doc/reference/html/VisionEgg.qtlowlevel.qtlowlevelError-class.html
+doc/reference/html/VisionEgg.qtmovie-module.html
+doc/reference/html/VisionEgg.qtmovie-pysrc.html
+doc/reference/html/VisionEgg.qtmovie.Movie-class.html
+doc/reference/html/VisionEgg.qtmovie.Rect-class.html
+doc/reference/html/VisionEgg.win32_getrefresh-module.html
+doc/reference/html/VisionEgg.win32_getrefresh-pysrc.html
+doc/reference/html/VisionEgg.win32_maxpriority-module.html
+doc/reference/html/VisionEgg.win32_maxpriority-pysrc.html
+doc/reference/html/api-objects.txt
+doc/reference/html/class-tree.html
+doc/reference/html/crarr.png
+doc/reference/html/epydoc.css
+doc/reference/html/epydoc.js
+doc/reference/html/float-class.html
+doc/reference/html/frames.html
+doc/reference/html/help.html
+doc/reference/html/identifier-index.html
+doc/reference/html/index.html
+doc/reference/html/int-class.html
+doc/reference/html/module-tree.html
+doc/reference/html/redirect.html
+doc/reference/html/toc-VisionEgg-module.html
+doc/reference/html/toc-VisionEgg.Configuration-module.html
+doc/reference/html/toc-VisionEgg.Core-module.html
+doc/reference/html/toc-VisionEgg.Daq-module.html
+doc/reference/html/toc-VisionEgg.DaqKeyboard-module.html
+doc/reference/html/toc-VisionEgg.DaqLPT-module.html
+doc/reference/html/toc-VisionEgg.Deprecated-module.html
+doc/reference/html/toc-VisionEgg.Dots-module.html
+doc/reference/html/toc-VisionEgg.FlowControl-module.html
+doc/reference/html/toc-VisionEgg.GL-module.html
+doc/reference/html/toc-VisionEgg.GLTrace-module.html
+doc/reference/html/toc-VisionEgg.GUI-module.html
+doc/reference/html/toc-VisionEgg.Gratings-module.html
+doc/reference/html/toc-VisionEgg.MoreStimuli-module.html
+doc/reference/html/toc-VisionEgg.ParameterTypes-module.html
+doc/reference/html/toc-VisionEgg.PlatformDependent-module.html
+doc/reference/html/toc-VisionEgg.PyroApps-module.html
+doc/reference/html/toc-VisionEgg.PyroApps.AST_ext-module.html
+doc/reference/html/toc-VisionEgg.PyroApps.ColorCalGUI-module.html
+doc/reference/html/toc-VisionEgg.PyroApps.ColorCalServer-module.html
+doc/reference/html/toc-VisionEgg.PyroApps.DropinGUI-module.html
+doc/reference/html/toc-VisionEgg.PyroApps.DropinServer-module.html
+doc/reference/html/toc-VisionEgg.PyroApps.EPhysGUI-module.html
+doc/reference/html/toc-VisionEgg.PyroApps.EPhysGUIUtils-module.html
+doc/reference/html/toc-VisionEgg.PyroApps.EPhysServer-module.html
+doc/reference/html/toc-VisionEgg.PyroApps.FlatGratingGUI-module.html
+doc/reference/html/toc-VisionEgg.PyroApps.FlatGratingServer-module.html
+doc/reference/html/toc-VisionEgg.PyroApps.GridGUI-module.html
+doc/reference/html/toc-VisionEgg.PyroApps.GridServer-module.html
+doc/reference/html/toc-VisionEgg.PyroApps.MouseTargetGUI-module.html
+doc/reference/html/toc-VisionEgg.PyroApps.MouseTargetServer-module.html
+doc/reference/html/toc-VisionEgg.PyroApps.ScreenPositionGUI-module.html
+doc/reference/html/toc-VisionEgg.PyroApps.ScreenPositionServer-module.html
+doc/reference/html/toc-VisionEgg.PyroApps.SphereGratingGUI-module.html
+doc/reference/html/toc-VisionEgg.PyroApps.SphereGratingServer-module.html
+doc/reference/html/toc-VisionEgg.PyroApps.SpinningDrumGUI-module.html
+doc/reference/html/toc-VisionEgg.PyroApps.SpinningDrumServer-module.html
+doc/reference/html/toc-VisionEgg.PyroApps.TargetGUI-module.html
+doc/reference/html/toc-VisionEgg.PyroApps.TargetServer-module.html
+doc/reference/html/toc-VisionEgg.PyroApps.VarTypes-module.html
+doc/reference/html/toc-VisionEgg.PyroClient-module.html
+doc/reference/html/toc-VisionEgg.PyroHelpers-module.html
+doc/reference/html/toc-VisionEgg.QuickTime-module.html
+doc/reference/html/toc-VisionEgg.ResponseControl-module.html
+doc/reference/html/toc-VisionEgg.SphereMap-module.html
+doc/reference/html/toc-VisionEgg.TCPController-module.html
+doc/reference/html/toc-VisionEgg.Text-module.html
+doc/reference/html/toc-VisionEgg.Textures-module.html
+doc/reference/html/toc-VisionEgg.ThreeDeeMath-module.html
+doc/reference/html/toc-VisionEgg.WrappedText-module.html
+doc/reference/html/toc-VisionEgg.darwin_getrefresh-module.html
+doc/reference/html/toc-VisionEgg.gl_qt-module.html
+doc/reference/html/toc-VisionEgg.posix_maxpriority-module.html
+doc/reference/html/toc-VisionEgg.qtlowlevel-module.html
+doc/reference/html/toc-VisionEgg.qtmovie-module.html
+doc/reference/html/toc-VisionEgg.win32_getrefresh-module.html
+doc/reference/html/toc-VisionEgg.win32_maxpriority-module.html
+doc/reference/html/toc-everything.html
+doc/reference/html/toc.html
+doc/visionegg/about.html
+doc/visionegg/contents.html
+doc/visionegg/controllers.html
+doc/visionegg/front.html
+doc/visionegg/hierarchy.html
+doc/visionegg/index.html
+doc/visionegg/node3.html
+doc/visionegg/node6.html
+doc/visionegg/visionegg.css
+doc/visionegg/visionegg.html
+swig_src/darwin_getrefresh.i
+swig_src/darwin_getrefresh.m
+swig_src/gl_qt.c
+swig_src/gl_qt.h
+swig_src/gl_qt.i
+swig_src/make.py
+swig_src/posix_maxpriority.c
+swig_src/posix_maxpriority.i
+swig_src/win32_getrefresh.c
+swig_src/win32_getrefresh.i
+swig_src/win32_maxpriority.c
+swig_src/win32_maxpriority.i
+test/conform.py
+test/display_dc_restoration.py
+test/display_voltage_regulation.py
+test/font_torture.py
+test/opengl_info.py
+test/reopen_screen.py
+test/unittests.py
+visionegg.egg-info/PKG-INFO
+visionegg.egg-info/SOURCES.txt
+visionegg.egg-info/dependency_links.txt
+visionegg.egg-info/top_level.txt
\ No newline at end of file
diff --git a/visionegg.egg-info/dependency_links.txt b/visionegg.egg-info/dependency_links.txt
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/visionegg.egg-info/dependency_links.txt
@@ -0,0 +1 @@
+
diff --git a/visionegg.egg-info/top_level.txt b/visionegg.egg-info/top_level.txt
new file mode 100644
index 0000000..a73d68a
--- /dev/null
+++ b/visionegg.egg-info/top_level.txt
@@ -0,0 +1,7 @@
+_vegl
+darwin_maxpriority
+VisionEgg
+_darwin_getrefresh
+_darwin_sync_swap
+_gl_qt
+_draw_in_c

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-med/visionegg.git



More information about the debian-med-commit mailing list